qlogicagent 2.19.2 → 2.19.4
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/cli.js +1 -1
- package/dist/index.js +2 -2
- package/dist/protocol.js +1 -1
- package/dist/types/protocol/wire/gateway-rpc.d.ts +27 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -157,7 +157,7 @@ ${t?`<result>${t}</result>`:""}
|
|
|
157
157
|
... [truncated ${o} chars] ...
|
|
158
158
|
${e.slice(-r)}`}var kl=class{constructor(t,n){this.store=t;this.getCurrentSessionId=n}store;getCurrentSessionId;controllers=new Map;bashHandles=new Map;externalControls=new Map;deadlineTimers=new Map;lastProgressAt=new Map;idleReclaimMs=new Map;settledListeners=new Set;onTaskSettled(t){return this.settledListeners.add(t),()=>this.settledListeners.delete(t)}fireSettled(t){let n=this.store.getTask(t);if(n)for(let r of this.settledListeners)try{r(n)}catch{}}startAgentTask(t){let n={taskId:Gr("local_agent"),type:"local_agent",label:t.label,permissionRole:"worker",isolation:"shared",lifecycle:"running",depth:t.depth,maxTurns:t.maxTurns,tokenBudget:0,startedAt:Date.now(),parentTaskId:t.parentTaskId,launchSessionId:t.launchSessionId??this.getCurrentSessionId?.(),agentName:t.agentName,systemPrompt:"",allowedTools:[]};this.store.registerTask(n);let r=new AbortController;return this.controllers.set(n.taskId,r),this.armIdleReclaim(n.taskId,t.idleMs??lB),t.run(r.signal,n.taskId).then(o=>{this.settle(n.taskId,{lifecycle:o.ok?"completed":"failed",output:o.output?rf(o.output):void 0,error:o.error})}).catch(o=>{this.settle(n.taskId,{lifecycle:"failed",error:o instanceof Error?o.message:String(o)})}).finally(()=>{this.controllers.delete(n.taskId)}),n}registerBashTask(t){let n={taskId:t.handle.taskOutput.taskId,type:"local_bash",label:t.label??t.command.slice(0,80),permissionRole:"worker",isolation:"shared",lifecycle:"running",depth:0,maxTurns:1,tokenBudget:0,startedAt:Date.now(),launchSessionId:this.getCurrentSessionId?.(),command:t.command,cwd:t.cwd,pid:t.pid,outputPath:t.handle.taskOutput.path};return this.store.registerTask(n),this.bashHandles.set(n.taskId,t.handle),t.handle.result.then(r=>{let o=this.store.getTask(n.taskId);if(!o||yt(o.lifecycle))return;let s=[r.stdout,r.stderr?`[stderr]
|
|
159
159
|
${r.stderr}`:""].filter(Boolean).join(`
|
|
160
|
-
`);this.store.updateTask(n.taskId,i=>({...i,lifecycle:r.code===0?"completed":"failed",exitCode:r.code,output:rf(s),error:r.code===0?void 0:`exit code ${r.code}`,endedAt:Date.now()})),this.fireSettled(n.taskId)}).catch(r=>{this.settle(n.taskId,{lifecycle:"failed",error:r instanceof Error?r.message:String(r)})}).finally(()=>{this.bashHandles.delete(n.taskId)}),n}registerExternalTask(t,n){this.store.registerTask(t),this.externalControls.set(t.taskId,n)}settleExternalTask(t,n,r){this.externalControls.delete(t);let o=this.store.getTask(t);!o||yt(o.lifecycle)||(this.store.updateTask(t,s=>({...s,lifecycle:n,...r!=null?{output:r}:{},endedAt:Date.now()})),this.fireSettled(t))}settle(t,n){this.clearDeadline(t);let r=this.store.getTask(t);!r||yt(r.lifecycle)||(this.store.updateTask(t,o=>({...o,...n,endedAt:Date.now()})),this.fireSettled(t))}getTask(t){return this.store.getTask(t)}listTasks(){return this.store.getAllTasks()}async readOutput(t){let n=this.store.getTask(t);if(!n)return null;let r=!yt(n.lifecycle);if(r&&n.type==="local_bash"&&n.outputPath){let o="";try{o=await iB(n.outputPath,"utf-8")}catch{o=""}return{task:n,output:rf(No(o)),running:r}}if(r){let o=this.externalControls.get(t);if(o?.readStatus)return{task:n,output:o.readStatus(),running:r}}return{task:n,output:n.output??"",running:r}}teardownExecutors(t){let n=this.bashHandles.get(t);if(n){try{n.kill()}catch{}this.bashHandles.delete(t)}let r=this.controllers.get(t);r&&(r.abort("cancelled"),this.controllers.delete(t));let o=this.externalControls.get(t);if(o){try{o.cancel()}catch{}this.externalControls.delete(t)}}armIdleReclaim(t,n){!Number.isFinite(n)||n<=0||(this.idleReclaimMs.set(t,n),this.lastProgressAt.set(t,Date.now()),this.scheduleIdleCheck(t))}markProgress(t){this.lastProgressAt.has(t)&&this.lastProgressAt.set(t,Date.now())}scheduleIdleCheck(t){let n=this.idleReclaimMs.get(t);if(n===void 0)return;let r=this.lastProgressAt.get(t)??Date.now(),o=Math.max(0,n-(Date.now()-r)),s=setTimeout(()=>this.onIdleCheck(t),o||n);s.unref?.(),this.deadlineTimers.set(t,s)}onIdleCheck(t){let n=this.idleReclaimMs.get(t);if(n===void 0)return;Date.now()-(this.lastProgressAt.get(t)??0)>=n?this.enforceIdleTimeout(t,n):this.scheduleIdleCheck(t)}clearDeadline(t){let n=this.deadlineTimers.get(t);n&&(clearTimeout(n),this.deadlineTimers.delete(t)),this.lastProgressAt.delete(t),this.idleReclaimMs.delete(t)}enforceIdleTimeout(t,n){this.clearDeadline(t);let r=this.store.getTask(t);!r||yt(r.lifecycle)||(this.teardownExecutors(t),this.store.updateTask(t,o=>({...o,lifecycle:"timeout",error:o.error??`background task reclaimed after ${Math.round(n/1e3)}s with no progress (no output or tool activity)`,endedAt:Date.now()})),this.fireSettled(t))}cancelTask(t){let n=this.store.getTask(t);return!n||yt(n.lifecycle)?!1:(this.clearDeadline(t),this.teardownExecutors(t),this.store.updateTask(t,r=>({...r,lifecycle:"cancelled",endedAt:Date.now()})),!0)}cancelTasksForSession(t){if(!t)return[];let n=[];for(let r of this.store.getAllTasks())r.launchSessionId===t&&!yt(r.lifecycle)&&this.cancelTask(r.taskId)&&n.push(r.taskId);return n}cancelAllRunning(){let t=[];for(let n of this.store.getAllTasks())yt(n.lifecycle)||this.cancelTask(n.taskId)&&t.push(n.taskId);return t}};Oe();function wl(){return De()?.type==="group"}var of=new Set;function Oo(e){return of.add(e),()=>{of.delete(e)}}async function Uv(){await Promise.all(Array.from(of).map(e=>e()))}Se();import{randomUUID as nS}from"node:crypto";Mt();import{createHash as Gne}from"node:crypto";import{randomUUID as Kne}from"node:crypto";import*as Lo from"node:fs";import*as Sl from"node:path";function vl(e){return Sl.join(Ut(e),"feedback","events")}function Hv(e,t){return Sl.join(vl(e),`${encodeURIComponent(t)}.json`)}async function sf(e,t){try{return JSON.parse(await Lo.promises.readFile(Hv(e,t),"utf8"))}catch{return null}}async function af(e){e.projectId&&(await Lo.promises.mkdir(vl(e.projectId),{recursive:!0}),await Lo.promises.writeFile(Hv(e.projectId,e.turnId),JSON.stringify(e,null,2),"utf8"))}async function Bv(e){let t;try{t=(await Lo.promises.readdir(vl(e),{withFileTypes:!0})).filter(r=>r.isFile()&&r.name.endsWith(".json")).map(r=>r.name)}catch{return[]}let n=[];for(let r of t)try{n.push(JSON.parse(await Lo.promises.readFile(Sl.join(vl(e),r),"utf8")))}catch{continue}return n}async function qv(e){return(await Bv(e)).filter(t=>t.upload?.eligible!==!1&&!t.upload?.uploadBatchId)}async function Wv(e,t,n){let r=await sf(e,t);r&&(r.upload={eligible:r.upload?.eligible??!0,uploadBatchId:n},await af(r))}async function lf(e,t,n,r){let o=await sf(e,t);o&&(o.upload={eligible:o.upload?.eligible??!0,uploadBatchId:n,uploadedAt:new Date().toISOString(),redactionVersion:r},await af(o))}async function Gv(e){return(await Bv(e)).filter(t=>t.state==="active")}async function zv(e,t,n){let r=await sf(e,t);r&&(r.distill={proposedAt:new Date().toISOString(),clusterKey:n.clusterKey,idempotencyKey:n.idempotencyKey},await af(r))}import{createHash as cB}from"node:crypto";var Gn="feedback-redaction-v1",dB=500;function cf(e){return cB("sha256").update(e,"utf8").digest("hex")}var uB=[[/sk-[A-Za-z0-9_-]{8,}/g,"[redacted-key]"],[/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,"[redacted-email]"],[/(?:[A-Za-z]:\\|\/)(?:Users|home|root|var|opt|etc|tmp)[\\/][^\s'"`)]+/gi,"[redacted-path]"]];function pB(e){let t=(e??"").slice(0,dB);for(let[n,r]of uB)t=t.replace(n,r);return t}function Kv(e,t=Gn){return{feedbackId:e.feedbackId,rating:e.rating,reason:e.reason,state:e.state,messageHash:e.messageHash,sessionIdHash:cf(e.sessionId),projectIdHash:e.projectId?cf(e.projectId):void 0,turnIdHash:cf(e.turnId),messagePreview:pB(e.messagePreview),model:e.model,provider:e.provider,agentMode:e.agentMode,sourceChannel:e.sourceChannel,usage:e.usage,toolSummary:e.toolSummary,fileContext:e.fileContext?{changedFileCount:e.fileContext.changedFileCount,hasTurnFileChanges:e.fileContext.hasTurnFileChanges,diffOpenState:e.fileContext.diffOpenState}:void 0,browserContext:e.browserContext?{hadToastError:e.browserContext.hadToastError,visiblePanel:e.browserContext.visiblePanel}:void 0,telemetryStatus:e.telemetryStatus,redactionVersion:t,createdAt:e.createdAt}}function Vv(e,t){let n={rollupId:t.rollupId,periodStart:t.periodStart,periodEnd:t.periodEnd,total:0,upCount:0,downCount:0,byReason:{},byModel:{},byAgentMode:{},telemetryStatusCounts:{complete:0,partial:0,missing:0},redactionVersion:t.redactionVersion??Gn,createdAt:new Date().toISOString()};for(let r of e){n.total+=1,r.rating==="up"?n.upCount+=1:n.downCount+=1,r.rating==="down"&&r.reason&&(n.byReason[r.reason]=(n.byReason[r.reason]??0)+1);let o=r.model??"unknown",s=n.byModel[o]??={up:0,down:0};s[r.rating]+=1;let i=r.agentMode??"unknown",a=n.byAgentMode[i]??={up:0,down:0};a[r.rating]+=1,n.telemetryStatusCounts[r.telemetryStatus]+=1}return n}Mt();import{randomUUID as mB}from"node:crypto";import*as Tl from"node:fs";import*as Rl from"node:path";var fB=6,gB=6e4,hB=30*6e4;function Yv(e){return Rl.join(Ut(e),"feedback","outbox.json")}async function Pl(e){try{let t=JSON.parse(await Tl.promises.readFile(Yv(e),"utf8"));return Array.isArray(t)?t:[]}catch{return[]}}async function df(e,t){let n=Yv(e);await Tl.promises.mkdir(Rl.dirname(n),{recursive:!0}),await Tl.promises.writeFile(n,JSON.stringify(t,null,2),"utf8")}function yB(e){return Math.min(gB*2**Math.max(0,e-1),hB)}async function Xv(e,t,n=new Date){let r=await Pl(e),o=r.find(a=>a.idempotencyKey===t.idempotencyKey);if(o)return o;let s=n.toISOString(),i={entryId:mB(),idempotencyKey:t.idempotencyKey,op:t.op,payload:t.payload,attempts:0,createdAt:s,nextAttemptAt:s};return r.push(i),await df(e,r),i}async function Jv(e,t=new Date){return(await Pl(e)).filter(r=>r.attempts<fB&&Date.parse(r.nextAttemptAt)<=t.getTime())}async function Qv(e,t){let n=await Pl(e),r=n.filter(o=>o.entryId!==t);r.length!==n.length&&await df(e,r)}async function Zv(e,t,n,r=new Date){let o=await Pl(e),s=o.find(i=>i.entryId===t);s&&(s.attempts+=1,s.lastError=n,s.nextAttemptAt=new Date(r.getTime()+yB(s.attempts)).toISOString(),await df(e,o))}function bB(){return"2.19.2"}function kB(){let e=process.env.QLOGIC_LLMROUTER_BASE_URL?.trim();if(e)return`${e.replace(/\/+$/,"")}/client/feedback`}function wB(e,t=300){if(!e)return!0;let n=e.split(".");if(n.length<2)return!1;try{let r=JSON.parse(Buffer.from(n[1],"base64url").toString("utf8"));return r.exp?r.exp<=Math.floor(Date.now()/1e3)+t:!1}catch{return!1}}async function eS(e,t){let n=process.env.QLOGIC_LLMROUTER_REFRESH_TOKEN?.trim();if(!n)return!1;let r=await fetch(`${e.replace(/\/+$/,"")}/auth/refresh`,{method:"POST",headers:{authorization:`Bearer ${n}`},signal:t});if(!r.ok)return!1;let o=await r.json().catch(()=>({})),s=o.data?.access_token?.trim();if(!s)return!1;process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN=s;let i=o.data?.refresh_token?.trim();return i&&(process.env.QLOGIC_LLMROUTER_REFRESH_TOKEN=i),!0}async function uf(e,t){let n=kB();if(!n)return{ok:!1,error:"QLOGIC_LLMROUTER_BASE_URL not configured"};if(e.events.length===0)return{ok:!0,accepted:0};let r=process.env.QLOGIC_LLMROUTER_BASE_URL.trim().replace(/\/+$/,""),o=t??AbortSignal.timeout(3e4),s=!1;wB(process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN?.trim())&&(s=await eS(r,o));let i=`${n.replace(/\/+$/,"")}/uploadBatch`;try{let a=await tS(i,e,o);if(a.status===401&&!s&&(s=await eS(r,o),s&&(a=await tS(i,e,o))),!a.ok){let c=await a.text().catch(()=>"");return{ok:!1,status:a.status,error:`HTTP ${a.status}${c?`: ${c.slice(0,200)}`:""}`}}return{ok:!0,accepted:(await a.json().catch(()=>({}))).accepted??e.events.length,status:a.status,refreshedToken:s}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function tS(e,t,n){let r=process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN?.trim(),o={"content-type":"application/json",accept:"application/json"};return r&&(o.authorization=`Bearer ${r}`),fetch(e,{method:"POST",headers:o,signal:n,body:JSON.stringify({batchId:t.batchId,events:t.events,rollups:t.rollups,redactionVersion:t.redactionVersion,clientBuild:t.clientBuild,runtimeVersion:t.runtimeVersion,qlogicagentVersion:t.qlogicagentVersion??bB(),uploadTarget:"llmrouter"})})}function vB(e){let t=e.map(r=>r.createdAt).sort(),n=new Date().toISOString();return{periodStart:t[0]??n,periodEnd:t[t.length-1]??n}}async function SB(e,t){let n=0;for(let r of await Jv(e,t)){let o=r.payload,s=await uf({batchId:o.batchId,events:o.events,rollups:o.rollups??[],redactionVersion:o.redactionVersion??Gn});if(s.ok){for(let i of o.turnIds??[])await lf(e,i,o.batchId,o.redactionVersion??Gn);await Qv(e,r.entryId),n+=1}else await Zv(e,r.entryId,s.error??"upload failed",t)}return n}async function rS(e,t=new Date){let n=await SB(e,t),r=await qv(e);if(r.length===0)return{uploaded:0,queued:0,retried:n};let o=nS(),s=r.map(p=>Kv(p)),i=r.map(p=>p.turnId),{periodStart:a,periodEnd:l}=vB(r),c=Vv(r,{rollupId:nS(),periodStart:a,periodEnd:l});if((await uf({batchId:o,events:s,rollups:[c],redactionVersion:Gn})).ok){for(let p of i)await lf(e,p,o,Gn);return{uploaded:r.length,queued:0,retried:n}}for(let p of i)await Wv(e,p,o);return await Xv(e,{idempotencyKey:o,op:"uploadBatch",payload:{batchId:o,events:s,rollups:[c],turnIds:i,redactionVersion:Gn}},t),{uploaded:0,queued:r.length,retried:n}}import{createHash as TB}from"node:crypto";var RB=2;function PB(e){return e.rating==="down"?`dislike:${e.reason??"other"}`:"like"}var xB={"dislike:missed_requirement":"\u7528\u6237\u91CD\u89C6\u56DE\u7B54\u5B8C\u6574\u8986\u76D6\u5176\u9700\u6C42,\u4E0D\u8981\u9057\u6F0F\u660E\u786E\u63D0\u51FA\u7684\u8981\u6C42\u3002","dislike:incomplete":"\u7528\u6237\u91CD\u89C6\u4EA4\u4ED8\u7684\u5B8C\u6574\u6027,\u4E0D\u8981\u534A\u9014\u800C\u5E9F\u6216\u7559\u4E0B\u672A\u5B8C\u6210\u7684\u90E8\u5206\u3002","dislike:broken_file_link_or_panel":"\u7528\u6237\u91CD\u89C6\u6587\u4EF6\u94FE\u63A5\u3001\u53F3\u4FA7\u9762\u677F\u7B49\u4EA7\u7269\u771F\u5B9E\u53EF\u70B9\u51FB\u3001\u53EF\u6253\u5F00,\u4EA4\u4ED8\u524D\u5E94\u81EA\u884C\u9A8C\u8BC1\u3002","dislike:code_or_test_failed":"\u7528\u6237\u91CD\u89C6\u4EE3\u7801\u4E0E\u6D4B\u8BD5\u771F\u5B9E\u901A\u8FC7,\u4EA4\u4ED8\u524D\u5E94\u5B9E\u9645\u8FD0\u884C\u9A8C\u8BC1,\u800C\u975E\u4EC5\u58F0\u79F0\u5B8C\u6210\u3002","dislike:factually_wrong":"\u7528\u6237\u91CD\u89C6\u4E8B\u5B9E\u51C6\u786E\u6027,\u4E0D\u786E\u5B9A\u65F6\u5E94\u6838\u5B9E\u6765\u6E90\u800C\u975E\u81C6\u6D4B\u3002","dislike:too_verbose":"\u7528\u6237\u504F\u597D\u7B80\u6D01\u7684\u56DE\u7B54:\u76F4\u63A5\u7ED9\u7ED3\u8BBA\u548C\u5173\u952E\u8981\u70B9,\u907F\u514D\u5197\u957F\u94FA\u9648\u3002","dislike:too_short":"\u7528\u6237\u504F\u597D\u66F4\u5B8C\u6574\u3001\u6709\u4F9D\u636E\u7684\u56DE\u7B54,\u4E0D\u8981\u8FC7\u4E8E\u7B80\u7565\u3002","dislike:wrong_style":"\u7528\u6237\u5BF9\u56DE\u7B54\u98CE\u683C\u6709\u660E\u786E\u504F\u597D,\u5E94\u8D34\u5408\u5176\u671F\u671B\u7684\u8868\u8FBE\u98CE\u683C\u3002","dislike:other":"\u7528\u6237\u5BF9\u8FD9\u7C7B\u56DE\u7B54\u8868\u8FBE\u8FC7\u4E0D\u6EE1,\u9700\u7ED3\u5408\u4E0A\u4E0B\u6587\u6CE8\u610F\u6539\u8FDB\u3002",like:"\u7528\u6237\u8BA4\u53EF\u8FD9\u7C7B\u56DE\u7B54\u7684\u65B9\u5F0F\u4E0E\u8D28\u91CF,\u53EF\u7EE7\u7EED\u4FDD\u6301\u3002"};function AB(e){return xB[e]??"\u7528\u6237\u5BF9\u8FD9\u7C7B\u56DE\u7B54\u6709\u660E\u786E\u504F\u597D,\u5E94\u636E\u5176\u53CD\u9988\u8C03\u6574\u3002"}function IB(e,t){let n=.45+.12*Math.min(e,4)+(t?.08:0);return Math.max(.3,Math.min(.85,Number(n.toFixed(4))))}function CB(e){return Math.max(.3,Math.min(.9,Number((.4+.1*e).toFixed(4))))}function EB(e,t){return TB("sha256").update(`${e}
|
|
160
|
+
`);this.store.updateTask(n.taskId,i=>({...i,lifecycle:r.code===0?"completed":"failed",exitCode:r.code,output:rf(s),error:r.code===0?void 0:`exit code ${r.code}`,endedAt:Date.now()})),this.fireSettled(n.taskId)}).catch(r=>{this.settle(n.taskId,{lifecycle:"failed",error:r instanceof Error?r.message:String(r)})}).finally(()=>{this.bashHandles.delete(n.taskId)}),n}registerExternalTask(t,n){this.store.registerTask(t),this.externalControls.set(t.taskId,n)}settleExternalTask(t,n,r){this.externalControls.delete(t);let o=this.store.getTask(t);!o||yt(o.lifecycle)||(this.store.updateTask(t,s=>({...s,lifecycle:n,...r!=null?{output:r}:{},endedAt:Date.now()})),this.fireSettled(t))}settle(t,n){this.clearDeadline(t);let r=this.store.getTask(t);!r||yt(r.lifecycle)||(this.store.updateTask(t,o=>({...o,...n,endedAt:Date.now()})),this.fireSettled(t))}getTask(t){return this.store.getTask(t)}listTasks(){return this.store.getAllTasks()}async readOutput(t){let n=this.store.getTask(t);if(!n)return null;let r=!yt(n.lifecycle);if(r&&n.type==="local_bash"&&n.outputPath){let o="";try{o=await iB(n.outputPath,"utf-8")}catch{o=""}return{task:n,output:rf(No(o)),running:r}}if(r){let o=this.externalControls.get(t);if(o?.readStatus)return{task:n,output:o.readStatus(),running:r}}return{task:n,output:n.output??"",running:r}}teardownExecutors(t){let n=this.bashHandles.get(t);if(n){try{n.kill()}catch{}this.bashHandles.delete(t)}let r=this.controllers.get(t);r&&(r.abort("cancelled"),this.controllers.delete(t));let o=this.externalControls.get(t);if(o){try{o.cancel()}catch{}this.externalControls.delete(t)}}armIdleReclaim(t,n){!Number.isFinite(n)||n<=0||(this.idleReclaimMs.set(t,n),this.lastProgressAt.set(t,Date.now()),this.scheduleIdleCheck(t))}markProgress(t){this.lastProgressAt.has(t)&&this.lastProgressAt.set(t,Date.now())}scheduleIdleCheck(t){let n=this.idleReclaimMs.get(t);if(n===void 0)return;let r=this.lastProgressAt.get(t)??Date.now(),o=Math.max(0,n-(Date.now()-r)),s=setTimeout(()=>this.onIdleCheck(t),o||n);s.unref?.(),this.deadlineTimers.set(t,s)}onIdleCheck(t){let n=this.idleReclaimMs.get(t);if(n===void 0)return;Date.now()-(this.lastProgressAt.get(t)??0)>=n?this.enforceIdleTimeout(t,n):this.scheduleIdleCheck(t)}clearDeadline(t){let n=this.deadlineTimers.get(t);n&&(clearTimeout(n),this.deadlineTimers.delete(t)),this.lastProgressAt.delete(t),this.idleReclaimMs.delete(t)}enforceIdleTimeout(t,n){this.clearDeadline(t);let r=this.store.getTask(t);!r||yt(r.lifecycle)||(this.teardownExecutors(t),this.store.updateTask(t,o=>({...o,lifecycle:"timeout",error:o.error??`background task reclaimed after ${Math.round(n/1e3)}s with no progress (no output or tool activity)`,endedAt:Date.now()})),this.fireSettled(t))}cancelTask(t){let n=this.store.getTask(t);return!n||yt(n.lifecycle)?!1:(this.clearDeadline(t),this.teardownExecutors(t),this.store.updateTask(t,r=>({...r,lifecycle:"cancelled",endedAt:Date.now()})),!0)}cancelTasksForSession(t){if(!t)return[];let n=[];for(let r of this.store.getAllTasks())r.launchSessionId===t&&!yt(r.lifecycle)&&this.cancelTask(r.taskId)&&n.push(r.taskId);return n}cancelAllRunning(){let t=[];for(let n of this.store.getAllTasks())yt(n.lifecycle)||this.cancelTask(n.taskId)&&t.push(n.taskId);return t}};Oe();function wl(){return De()?.type==="group"}var of=new Set;function Oo(e){return of.add(e),()=>{of.delete(e)}}async function Uv(){await Promise.all(Array.from(of).map(e=>e()))}Se();import{randomUUID as nS}from"node:crypto";Mt();import{createHash as Gne}from"node:crypto";import{randomUUID as Kne}from"node:crypto";import*as Lo from"node:fs";import*as Sl from"node:path";function vl(e){return Sl.join(Ut(e),"feedback","events")}function Hv(e,t){return Sl.join(vl(e),`${encodeURIComponent(t)}.json`)}async function sf(e,t){try{return JSON.parse(await Lo.promises.readFile(Hv(e,t),"utf8"))}catch{return null}}async function af(e){e.projectId&&(await Lo.promises.mkdir(vl(e.projectId),{recursive:!0}),await Lo.promises.writeFile(Hv(e.projectId,e.turnId),JSON.stringify(e,null,2),"utf8"))}async function Bv(e){let t;try{t=(await Lo.promises.readdir(vl(e),{withFileTypes:!0})).filter(r=>r.isFile()&&r.name.endsWith(".json")).map(r=>r.name)}catch{return[]}let n=[];for(let r of t)try{n.push(JSON.parse(await Lo.promises.readFile(Sl.join(vl(e),r),"utf8")))}catch{continue}return n}async function qv(e){return(await Bv(e)).filter(t=>t.upload?.eligible!==!1&&!t.upload?.uploadBatchId)}async function Wv(e,t,n){let r=await sf(e,t);r&&(r.upload={eligible:r.upload?.eligible??!0,uploadBatchId:n},await af(r))}async function lf(e,t,n,r){let o=await sf(e,t);o&&(o.upload={eligible:o.upload?.eligible??!0,uploadBatchId:n,uploadedAt:new Date().toISOString(),redactionVersion:r},await af(o))}async function Gv(e){return(await Bv(e)).filter(t=>t.state==="active")}async function zv(e,t,n){let r=await sf(e,t);r&&(r.distill={proposedAt:new Date().toISOString(),clusterKey:n.clusterKey,idempotencyKey:n.idempotencyKey},await af(r))}import{createHash as cB}from"node:crypto";var Gn="feedback-redaction-v1",dB=500;function cf(e){return cB("sha256").update(e,"utf8").digest("hex")}var uB=[[/sk-[A-Za-z0-9_-]{8,}/g,"[redacted-key]"],[/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,"[redacted-email]"],[/(?:[A-Za-z]:\\|\/)(?:Users|home|root|var|opt|etc|tmp)[\\/][^\s'"`)]+/gi,"[redacted-path]"]];function pB(e){let t=(e??"").slice(0,dB);for(let[n,r]of uB)t=t.replace(n,r);return t}function Kv(e,t=Gn){return{feedbackId:e.feedbackId,rating:e.rating,reason:e.reason,state:e.state,messageHash:e.messageHash,sessionIdHash:cf(e.sessionId),projectIdHash:e.projectId?cf(e.projectId):void 0,turnIdHash:cf(e.turnId),messagePreview:pB(e.messagePreview),model:e.model,provider:e.provider,agentMode:e.agentMode,sourceChannel:e.sourceChannel,usage:e.usage,toolSummary:e.toolSummary,fileContext:e.fileContext?{changedFileCount:e.fileContext.changedFileCount,hasTurnFileChanges:e.fileContext.hasTurnFileChanges,diffOpenState:e.fileContext.diffOpenState}:void 0,browserContext:e.browserContext?{hadToastError:e.browserContext.hadToastError,visiblePanel:e.browserContext.visiblePanel}:void 0,telemetryStatus:e.telemetryStatus,redactionVersion:t,createdAt:e.createdAt}}function Vv(e,t){let n={rollupId:t.rollupId,periodStart:t.periodStart,periodEnd:t.periodEnd,total:0,upCount:0,downCount:0,byReason:{},byModel:{},byAgentMode:{},telemetryStatusCounts:{complete:0,partial:0,missing:0},redactionVersion:t.redactionVersion??Gn,createdAt:new Date().toISOString()};for(let r of e){n.total+=1,r.rating==="up"?n.upCount+=1:n.downCount+=1,r.rating==="down"&&r.reason&&(n.byReason[r.reason]=(n.byReason[r.reason]??0)+1);let o=r.model??"unknown",s=n.byModel[o]??={up:0,down:0};s[r.rating]+=1;let i=r.agentMode??"unknown",a=n.byAgentMode[i]??={up:0,down:0};a[r.rating]+=1,n.telemetryStatusCounts[r.telemetryStatus]+=1}return n}Mt();import{randomUUID as mB}from"node:crypto";import*as Tl from"node:fs";import*as Rl from"node:path";var fB=6,gB=6e4,hB=30*6e4;function Yv(e){return Rl.join(Ut(e),"feedback","outbox.json")}async function Pl(e){try{let t=JSON.parse(await Tl.promises.readFile(Yv(e),"utf8"));return Array.isArray(t)?t:[]}catch{return[]}}async function df(e,t){let n=Yv(e);await Tl.promises.mkdir(Rl.dirname(n),{recursive:!0}),await Tl.promises.writeFile(n,JSON.stringify(t,null,2),"utf8")}function yB(e){return Math.min(gB*2**Math.max(0,e-1),hB)}async function Xv(e,t,n=new Date){let r=await Pl(e),o=r.find(a=>a.idempotencyKey===t.idempotencyKey);if(o)return o;let s=n.toISOString(),i={entryId:mB(),idempotencyKey:t.idempotencyKey,op:t.op,payload:t.payload,attempts:0,createdAt:s,nextAttemptAt:s};return r.push(i),await df(e,r),i}async function Jv(e,t=new Date){return(await Pl(e)).filter(r=>r.attempts<fB&&Date.parse(r.nextAttemptAt)<=t.getTime())}async function Qv(e,t){let n=await Pl(e),r=n.filter(o=>o.entryId!==t);r.length!==n.length&&await df(e,r)}async function Zv(e,t,n,r=new Date){let o=await Pl(e),s=o.find(i=>i.entryId===t);s&&(s.attempts+=1,s.lastError=n,s.nextAttemptAt=new Date(r.getTime()+yB(s.attempts)).toISOString(),await df(e,o))}function bB(){return"2.19.4"}function kB(){let e=process.env.QLOGIC_LLMROUTER_BASE_URL?.trim();if(e)return`${e.replace(/\/+$/,"")}/client/feedback`}function wB(e,t=300){if(!e)return!0;let n=e.split(".");if(n.length<2)return!1;try{let r=JSON.parse(Buffer.from(n[1],"base64url").toString("utf8"));return r.exp?r.exp<=Math.floor(Date.now()/1e3)+t:!1}catch{return!1}}async function eS(e,t){let n=process.env.QLOGIC_LLMROUTER_REFRESH_TOKEN?.trim();if(!n)return!1;let r=await fetch(`${e.replace(/\/+$/,"")}/auth/refresh`,{method:"POST",headers:{authorization:`Bearer ${n}`},signal:t});if(!r.ok)return!1;let o=await r.json().catch(()=>({})),s=o.data?.access_token?.trim();if(!s)return!1;process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN=s;let i=o.data?.refresh_token?.trim();return i&&(process.env.QLOGIC_LLMROUTER_REFRESH_TOKEN=i),!0}async function uf(e,t){let n=kB();if(!n)return{ok:!1,error:"QLOGIC_LLMROUTER_BASE_URL not configured"};if(e.events.length===0)return{ok:!0,accepted:0};let r=process.env.QLOGIC_LLMROUTER_BASE_URL.trim().replace(/\/+$/,""),o=t??AbortSignal.timeout(3e4),s=!1;wB(process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN?.trim())&&(s=await eS(r,o));let i=`${n.replace(/\/+$/,"")}/uploadBatch`;try{let a=await tS(i,e,o);if(a.status===401&&!s&&(s=await eS(r,o),s&&(a=await tS(i,e,o))),!a.ok){let c=await a.text().catch(()=>"");return{ok:!1,status:a.status,error:`HTTP ${a.status}${c?`: ${c.slice(0,200)}`:""}`}}return{ok:!0,accepted:(await a.json().catch(()=>({}))).accepted??e.events.length,status:a.status,refreshedToken:s}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function tS(e,t,n){let r=process.env.QLOGIC_LLMROUTER_ACCESS_TOKEN?.trim(),o={"content-type":"application/json",accept:"application/json"};return r&&(o.authorization=`Bearer ${r}`),fetch(e,{method:"POST",headers:o,signal:n,body:JSON.stringify({batchId:t.batchId,events:t.events,rollups:t.rollups,redactionVersion:t.redactionVersion,clientBuild:t.clientBuild,runtimeVersion:t.runtimeVersion,qlogicagentVersion:t.qlogicagentVersion??bB(),uploadTarget:"llmrouter"})})}function vB(e){let t=e.map(r=>r.createdAt).sort(),n=new Date().toISOString();return{periodStart:t[0]??n,periodEnd:t[t.length-1]??n}}async function SB(e,t){let n=0;for(let r of await Jv(e,t)){let o=r.payload,s=await uf({batchId:o.batchId,events:o.events,rollups:o.rollups??[],redactionVersion:o.redactionVersion??Gn});if(s.ok){for(let i of o.turnIds??[])await lf(e,i,o.batchId,o.redactionVersion??Gn);await Qv(e,r.entryId),n+=1}else await Zv(e,r.entryId,s.error??"upload failed",t)}return n}async function rS(e,t=new Date){let n=await SB(e,t),r=await qv(e);if(r.length===0)return{uploaded:0,queued:0,retried:n};let o=nS(),s=r.map(p=>Kv(p)),i=r.map(p=>p.turnId),{periodStart:a,periodEnd:l}=vB(r),c=Vv(r,{rollupId:nS(),periodStart:a,periodEnd:l});if((await uf({batchId:o,events:s,rollups:[c],redactionVersion:Gn})).ok){for(let p of i)await lf(e,p,o,Gn);return{uploaded:r.length,queued:0,retried:n}}for(let p of i)await Wv(e,p,o);return await Xv(e,{idempotencyKey:o,op:"uploadBatch",payload:{batchId:o,events:s,rollups:[c],turnIds:i,redactionVersion:Gn}},t),{uploaded:0,queued:r.length,retried:n}}import{createHash as TB}from"node:crypto";var RB=2;function PB(e){return e.rating==="down"?`dislike:${e.reason??"other"}`:"like"}var xB={"dislike:missed_requirement":"\u7528\u6237\u91CD\u89C6\u56DE\u7B54\u5B8C\u6574\u8986\u76D6\u5176\u9700\u6C42,\u4E0D\u8981\u9057\u6F0F\u660E\u786E\u63D0\u51FA\u7684\u8981\u6C42\u3002","dislike:incomplete":"\u7528\u6237\u91CD\u89C6\u4EA4\u4ED8\u7684\u5B8C\u6574\u6027,\u4E0D\u8981\u534A\u9014\u800C\u5E9F\u6216\u7559\u4E0B\u672A\u5B8C\u6210\u7684\u90E8\u5206\u3002","dislike:broken_file_link_or_panel":"\u7528\u6237\u91CD\u89C6\u6587\u4EF6\u94FE\u63A5\u3001\u53F3\u4FA7\u9762\u677F\u7B49\u4EA7\u7269\u771F\u5B9E\u53EF\u70B9\u51FB\u3001\u53EF\u6253\u5F00,\u4EA4\u4ED8\u524D\u5E94\u81EA\u884C\u9A8C\u8BC1\u3002","dislike:code_or_test_failed":"\u7528\u6237\u91CD\u89C6\u4EE3\u7801\u4E0E\u6D4B\u8BD5\u771F\u5B9E\u901A\u8FC7,\u4EA4\u4ED8\u524D\u5E94\u5B9E\u9645\u8FD0\u884C\u9A8C\u8BC1,\u800C\u975E\u4EC5\u58F0\u79F0\u5B8C\u6210\u3002","dislike:factually_wrong":"\u7528\u6237\u91CD\u89C6\u4E8B\u5B9E\u51C6\u786E\u6027,\u4E0D\u786E\u5B9A\u65F6\u5E94\u6838\u5B9E\u6765\u6E90\u800C\u975E\u81C6\u6D4B\u3002","dislike:too_verbose":"\u7528\u6237\u504F\u597D\u7B80\u6D01\u7684\u56DE\u7B54:\u76F4\u63A5\u7ED9\u7ED3\u8BBA\u548C\u5173\u952E\u8981\u70B9,\u907F\u514D\u5197\u957F\u94FA\u9648\u3002","dislike:too_short":"\u7528\u6237\u504F\u597D\u66F4\u5B8C\u6574\u3001\u6709\u4F9D\u636E\u7684\u56DE\u7B54,\u4E0D\u8981\u8FC7\u4E8E\u7B80\u7565\u3002","dislike:wrong_style":"\u7528\u6237\u5BF9\u56DE\u7B54\u98CE\u683C\u6709\u660E\u786E\u504F\u597D,\u5E94\u8D34\u5408\u5176\u671F\u671B\u7684\u8868\u8FBE\u98CE\u683C\u3002","dislike:other":"\u7528\u6237\u5BF9\u8FD9\u7C7B\u56DE\u7B54\u8868\u8FBE\u8FC7\u4E0D\u6EE1,\u9700\u7ED3\u5408\u4E0A\u4E0B\u6587\u6CE8\u610F\u6539\u8FDB\u3002",like:"\u7528\u6237\u8BA4\u53EF\u8FD9\u7C7B\u56DE\u7B54\u7684\u65B9\u5F0F\u4E0E\u8D28\u91CF,\u53EF\u7EE7\u7EED\u4FDD\u6301\u3002"};function AB(e){return xB[e]??"\u7528\u6237\u5BF9\u8FD9\u7C7B\u56DE\u7B54\u6709\u660E\u786E\u504F\u597D,\u5E94\u636E\u5176\u53CD\u9988\u8C03\u6574\u3002"}function IB(e,t){let n=.45+.12*Math.min(e,4)+(t?.08:0);return Math.max(.3,Math.min(.85,Number(n.toFixed(4))))}function CB(e){return Math.max(.3,Math.min(.9,Number((.4+.1*e).toFixed(4))))}function EB(e,t){return TB("sha256").update(`${e}
|
|
161
161
|
${t.join(",")}`).digest("hex").slice(0,32)}function oS(e){let t=new Map;for(let r of e){if(r.state!=="active")continue;let o=PB(r),s=t.get(o);s?s.push(r):t.set(o,[r])}let n=[];for(let[r,o]of t){if(o.length<RB)continue;let s=o.map(l=>l.feedbackId).sort(),i=[...new Set(o.map(l=>l.turnId))].sort(),a=new Set(o.map(l=>l.sessionId)).size>=2;n.push({clusterKey:r,text:AB(r),category:"feedback_preference",importance:CB(o.length),confidence:IB(o.length,a),evidence:{kind:"feedback",refs:[...s,...i.map(l=>`turn:${l}`)],idempotencyKey:EB(r,s)},stats:{evidence:o.length,crossSession:a,feedbackIds:s,turnIds:i}})}return n.sort((r,o)=>r.clusterKey.localeCompare(o.clusterKey)),n}var sS=()=>{};function iS(e){sS=e}function xl(){return sS()}async function aS(e,t,n){if(!t.proposeExtracted)return{candidates:0,proposed:0};let r=xl(),o=r?await r.listDistillableFeedback(e):await Gv(e);if(o.length===0)return{candidates:0,proposed:0};let s=oS(o),i=0;for(let a of s)try{let l=await t.proposeExtracted([{text:a.text,category:a.category,importance:a.importance,confidence:a.confidence,evidence:a.evidence}],n,{source:"feedback"});i+=l?.proposalsAdded??0;for(let c of a.stats.turnIds){let d={clusterKey:a.clusterKey,idempotencyKey:a.evidence.idempotencyKey};r?await r.markFeedbackDistilled(e,c,d):await zv(e,c,d)}}catch(l){console.error(`[feedback:distill] candidate skipped (cluster ${a.clusterKey}): ${l instanceof Error?l.message:String(l)}`)}return{candidates:s.length,proposed:i}}bt();Ml();pf();var hq="\u65E0\u6CD5\u8FDE\u63A5 llmrouter \u6A21\u578B\u76EE\u5F55",Kr="llmrouter";var zS=6e4,wf=new Map,kf=new Map,Tn=class extends Error{constructor(t=hq){super(t),this.name="LlmrouterCatalogUnavailableError"}},Dl=class extends Error{status;constructor(t,n="llmrouter inference key rejected (not active)"){super(n),this.name="LlmrouterAuthError",this.status=t}};function Sf(e=Kn()){let t=e.get("QLOGIC_LLMROUTER_BASE_URL")?.trim().replace(/\/+$/,"");if(!t)throw new Tn;return t}function KS(e=Kn()){let t={accept:"application/json"},n=e.get("QLOGIC_LLMROUTER_ACCESS_TOKEN")?.trim();return n&&(t.authorization=`Bearer ${n}`),t}async function VS(e,t){let n=Sf(t),r=KS(t),o=`${n}
|
|
162
162
|
${e}
|
|
163
163
|
${r.authorization??""}`,s=wf.get(o);if(s&&Date.now()<s.expiresAt)return s.value;let i=kf.get(o);if(i)return await i;let a=XS(n,e,r).then(l=>(wf.set(o,{value:l,expiresAt:Date.now()+zS}),l)).finally(()=>{kf.delete(o)});return kf.set(o,a),a}async function YS(e,t){let n=Sf(t),r=KS(t),o=`${n}
|
|
@@ -298,7 +298,7 @@ ${Of(n)}`)}catch(i){return console.error(`[context-compression] LLM summarizatio
|
|
|
298
298
|
|
|
299
299
|
${Of(n)}`}}}function Of(e){let t=[],n=e.filter(s=>s.role==="user"),r=n.slice(0,20).map(s=>{let i=typeof s.content=="string"?s.content:JSON.stringify(s.content??"");return`- [user]: ${i.slice(0,300)}${i.length>300?"...":""}`});t.push(`## User Requests (${n.length} messages)`),t.push(...r);let o=e.filter(s=>s.role==="assistant");if(o.length>0){let s=o.slice(0,10).map(i=>{let a=typeof i.content=="string"?i.content:JSON.stringify(i.content??"");return`- [assistant]: ${a.slice(0,150)}${a.length>150?"...":""}`});t.push("",`## Assistant Responses (${o.length} total)`),t.push(...s)}return t.join(`
|
|
300
300
|
`)}function q1(){return Lu(new Pr($f),new On(20,Yr),new yo(Yr))}function zT(e,t){let n=$u(new Pr($f),new On(20,Yr),new Rs({protectedHeadExchanges:1,protectedTailMessages:8,summarize:e,estimateTokens:Yr}),new yo(Yr));return new Ps({inner:n,estimateTokens:Yr,onCacheInvalidated:t?.onCacheInvalidated})}var jf=null;function XT(e,t){let n=t?.budget??xa({modelContextWindow:KT(t?.model)}),o=(t?.pipeline??q1()).compress(e,n);if(o.droppedCount>0){let s=Xr(e),i=Xr(o.messages);VT.record({timestamp:Date.now(),strategy:o.strategy,tokensBefore:s,tokensAfter:i,droppedCount:o.droppedCount,latencyMs:o.metrics?.latencyMs??0,usedLlm:!1,cacheInvalidated:o.metrics?.cacheInvalidated??!1,tier:Cs(s,n)})}return o.droppedCount>0&&jf?.(o.droppedCount,Xr(o.messages)),o}async function W1(e,t,n){let r=n??xa({modelContextWindow:KT(t.model)}),o=Xr(e),s=Cs(o,r),i;switch(s){case"none":i={messages:e,droppedCount:0,strategy:"none"};break;case"trim-only":i=new Pr($f).compress(e,r);break;case"sliding-window":{i=await zT(t.summarize).compressAsync(e,r);break}case"llm-summarize":{let a=t.pipeline??zT(t.summarize);i=Is(a)?await a.compressAsync(e,r):a.compress(e,r);break}}return i.droppedCount>0&&(i={...i,messages:await Fu(i.messages,e,{maxFiles:5,maxTokenBudget:5e4,readFile:async a=>{try{return await F1(a,"utf-8")}catch{return null}}})}),G1(e,i,r),i}function G1(e,t,n){if(t.droppedCount>0||t.metrics?.usedLlm){let r=t.metrics?.tokensBefore||Xr(e),o=t.metrics?.tokensAfter||Xr(t.messages);VT.record({timestamp:Date.now(),strategy:t.strategy,tokensBefore:r,tokensAfter:o,droppedCount:t.droppedCount,latencyMs:t.metrics?.latencyMs??0,usedLlm:t.metrics?.usedLlm??!1,cacheInvalidated:t.metrics?.cacheInvalidated??!1,tier:Cs(r,n)})}if(t.droppedCount>0){let r=t.metrics?.tokensAfter||Xr(t.messages);jf?.(t.droppedCount,r)}}function z1(e,t){let n=B1(e,t),r={id:"builtin-compressor",label:"4-Layer Compression Funnel (built-in)",async compressAsync(o,s,i){return W1(o,{budget:s,model:i?.model,sessionId:i?.sessionId,summarize:n},s)}};Lf.register(r),Lf.activate(r.id),e.info(`[context-compression] registered context engine: ${r.id}`)}function JT(e,t,n){z1(t,n),e.register({point:"context.before_compact",priority:50,label:"context-compression-bridge",handler:(r,o)=>{let s=o.messageCount;return s&&s>0&&t.debug(`[context-compression] before_compact: ${s} messages entering compression`),{action:"continue"}}}),jf=(r,o)=>{t.debug(`[context-compression] after_compact: removed ${r}, ${o} tokens remaining`),e.invoke("context.after_compact",{sessionId:"",turnId:"",removedCount:r,tokenCount:o}).catch(()=>{})}}function QT(e,t,n){let r=n-t;return`[Budget] ${Math.round(e)}% used (${t.toLocaleString()} / ${n.toLocaleString()} tokens). ${r.toLocaleString()} tokens remaining. `+(e>=90?"Wrap up your current taskyou are near the token limit.":"Continue workingdo not summarize prematurely.")}function Xn(e){return e?.riskLevel?e.riskLevel:e?.isDangerous?"system":e?.isReadOnly?"read":e?.isEgress?"external_egress":"write"}function K1(e,t){if(!t)return!1;for(let n of t)try{if(new RegExp(n,"i").test(e))return!0}catch(r){console.error(`[tool-eligibility] invalid dangerousPatterns regex ${JSON.stringify(n)} ignored: ${String(r instanceof Error?r.message:r)}`)}return!1}function V1(e,t){let n=Xn(e.meta);return n==="write"&&K1(e.function.name,t.dangerousPatterns)?"system":n}function Y1(e){return`risk_${e}`}function X1(e,t){let n=e.function.name,r=V1(e,t),o=[];return t.blockedToolNames?.includes(n)?(o.push("policy_blocked"),{decision:"deny",riskLevel:r,reasonCodes:o}):(o.push(Y1(r)),e.meta?.requiresApproval||r==="system"||r==="external_egress"?(e.meta?.requiresApproval&&o.unshift("requires_approval"),{decision:"ask",riskLevel:r,reasonCodes:o}):{decision:"allow",riskLevel:r,reasonCodes:o})}function J1(e){switch(e){case"allow":return"eligible";case"ask":return"approval-required";case"deny":return"blocked-by-policy"}}function ZT(e,t={}){let n=new Map,r=[],o=[],s=[];for(let i of e){let a=i.function.name,{decision:l,riskLevel:c,reasonCodes:d}=X1(i,t),u=J1(l),p={toolName:a,status:u,decision:l,riskLevel:c,approvalRequired:l==="ask",reasonCodes:d};if(n.set(a,p),l==="deny"){o.push(p);continue}r.push(i),l==="ask"&&s.push(p)}return{eligibleTools:r,blockedTools:o,approvalRequiredTools:s,eligibilityByName:n}}function Fl(){return{detectRecallCategories:Zw,resolveModelForPurpose:e=>te().resolveModelForPurpose(e),toolLoop:{createContentReplacementState:OT,enforceToolResultBudget:HT,getActiveContextCompressionEngine:()=>YT().getActive()??null,compressMessages:XT,getBudgetContinuationMessage:QT,createStreamingToolExecutor:e=>new jl(e),resolveToolEligibility:(e,t)=>ZT(e,t)}}}var Rn=({transport:e,apiKey:t,toolInvoker:n,log:r,hooks:o,maxRounds:s})=>new Nr({llmTransport:e,apiKey:t,toolInvoker:n,log:r,hooks:o,maxRounds:s,runtimePorts:Fl()});async function Fo(e){let t=e.params??{},n=t.turnId??eR(),r=t.sessionId,o=t.config,s=xe(),i=o?.memoryRoot||this.resolveMemoryRoot?.()||Ff.join(s,"memory"),a=o?.transcriptDir||this.resolveTranscriptDir?.()||Ff.join(s,"agent-logs"),l=o?.dreamSessionIds??[];e.id!==void 0&&this.sendResponse(e.id,{accepted:!0,turnId:n});let c=new AbortController;this.activeTurn=c,this.log(`dream ${n} starting (session: ${r}, sessions reviewing: ${l.length})`),this.sendNotification("system.activity",{category:"dream",level:"info",title:"\u68A6\u5883\u6574\u7406\u542F\u52A8",detail:`\u6B63\u5728\u56DE\u987E ${l.length} \u4E2A\u4F1A\u8BDD\u7684\u8BB0\u5FC6...`});let d={provider:o?.provider,model:o?.model,apiKey:o?.apiKey,baseUrl:o?.baseUrl,maxRounds:o?.maxRounds,temperature:o?.temperature,contextWindowTokens:o?.contextWindowTokens,maxOutputTokens:o?.maxOutputTokens,modelMaxOutputTokens:o?.modelMaxOutputTokens,reasoning:o?.reasoning,promptCacheKey:o?.promptCacheKey,promptCacheRetention:o?.promptCacheRetention,serviceTier:o?.serviceTier,openaiBuiltinTools:o?.openaiBuiltinTools,maxToolCalls:o?.maxToolCalls,parallelToolCalls:o?.parallelToolCalls,textVerbosity:o?.textVerbosity};{let p=d.provider??"",m=d.model??"";if(p&&m){let f=te().getModelInfo(p,m);f?.streamRequired&&(d.streamRequired=!0),!d.contextWindowTokens&&f?.contextWindow&&(d.contextWindowTokens=f.contextWindow)}}if(!this.resolveAgent(d)||!this.currentTransport){this.sendNotification("turn.start",{turnId:n}),this.sendNotification("turn.error",{turnId:n,error:{message:"No LLM provider configured for dream.",code:"NO_PROVIDER"}});return}this.sendNotification("turn.start",{turnId:n});try{let p={context:{memoryRoot:i,transcriptDir:a,currentSessionId:r,listSessionsSince:async()=>l,currentSessionTurnCount:o?.currentSessionTurnCount??0},triggerConfig:{force:o?.force!==!1},transport:this.currentTransport,toolInvoker:{invoke:async(f,g,h,T)=>{if(g.startsWith("$"))return{result:h};let v=this.toolCatalog.findTool(g);if(!v||typeof v.execute!="function")return{result:"",error:`Unknown tool: ${g}`};let w=`tc_${eR().slice(0,8)}`;try{let k=JSON.parse(h),x=await v.execute(w,k,T);return{result:x.content.map(N=>N.text??"").join(`
|
|
301
|
-
`),error:x.details?.error}}catch(k){return{result:"",error:k instanceof Error?k.message:String(k)}}}},createAgentRunner:Rn,tools:this.toolCatalog.getToolManifest(),taskStore:this.taskStore,apiKey:this.currentApiKey,model:d.model??this.currentModel,log:{info:f=>this.log(f),warn:f=>this.log(`[warn] ${f}`),error:f=>this.log(`[error] ${f}`),debug:f=>{this.verbose&&this.log(`[debug] ${f}`)}},hooks:this.currentHooks??void 0,parentSignal:c.signal,memoryProvider:this.memoryProvider??void 0,memoryUserId:this.memoryUserId||void 0},m=await CT(p);if(m.ok){if(this.memoryProvider&&this.memoryUserId){try{let f=await MT({adapter:this.memoryProvider,userId:this.memoryUserId,memoryRoot:i,log:{info:g=>this.log(g),debug:g=>{this.verbose&&this.log(g)}}});f.ran&&(this.sendNotification("memory.decay.completed",{decayed:f.decayed,archived:f.archived,durationMs:f.durationMs}),this.sendNotification("system.activity",{category:"decay",level:"info",title:"\u8BB0\u5FC6\u8870\u51CF\u5B8C\u6210",detail:`\u8870\u51CF ${f.decayed} \u6761\uFF0C\u5F52\u6863 ${f.archived} \u6761 (${f.durationMs}ms)`}))}catch(f){console.error(`[decay] post-dream decay error: ${f instanceof Error?f.message:String(f)}`)}try{let f=this.memoryProvider;if(typeof f.resolveConflicts=="function"){let g=await f.resolveConflicts(this.memoryUserId);(g.conflictsResolved>0||g.claimsPromoted>0)&&(this.log(`[dream] resolved ${g.conflictsResolved} conflicts, promoted ${g.claimsPromoted} pending claims`),this.sendNotification("system.activity",{category:"consolidation",level:"info",title:"\u8BB0\u5FC6\u51B2\u7A81\u6574\u7406",detail:`\u89E3\u51B3 ${g.conflictsResolved} \u5904\u51B2\u7A81\uFF0C\u786E\u8BA4 ${g.claimsPromoted} \u6761\u5F85\u5B9A\u8BB0\u5FC6`}))}}catch(f){console.error(`[consolidation] post-dream conflict resolution error: ${f instanceof Error?f.message:String(f)}`)}try{let f=this.memoryProvider;if(typeof f.consumePendingProposals=="function"){let g=await f.consumePendingProposals(this.memoryUserId);(g.committed>0||g.expiredIds.length>0)&&this.log(`[dream] proposal consumer: committed=${g.committed} merged=${g.merged} expired=${g.expiredIds.length} pending=${g.pendingLeft}`)}}catch(f){console.error(`[consolidation] post-dream proposal consume error: ${f instanceof Error?f.message:String(f)}`)}}this.sendNotification("system.activity",{category:"dream",level:"success",title:"\u68A6\u5883\u6574\u7406\u5B8C\u6210",detail:`\u56DE\u987E ${m.sessionsReviewed} \u4E2A\u4F1A\u8BDD\uFF0C\u6574\u7406 ${m.filesTouched.length} \u4E2A\u8BB0\u5FC6\u6587\u4EF6\uFF0C\u8017\u65F6 ${m.durationMs}ms`}),this.sendNotification("memory.updated",{source:"dream",target:"consolidation",files:m.filesTouched}),this.sendNotification("turn.end",{turnId:n,content:`Dream consolidation completed. ${m.sessionsReviewed} sessions reviewed, ${m.filesTouched.length} files touched. Duration: ${m.durationMs}ms.`,usage:{inputTokens:0,outputTokens:0}})}else this.sendNotification("system.activity",{category:"dream",level:"error",title:"\u68A6\u5883\u6574\u7406\u5931\u8D25",detail:m.error??"\u672A\u77E5\u9519\u8BEF"}),this.sendNotification("turn.error",{turnId:n,error:{message:m.error??"Dream consolidation failed",code:"DREAM_FAILED"}});this.log(`dream ${n} completed`)}catch(p){if(c.signal.aborted)this.sendNotification("system.activity",{category:"dream",level:"warn",title:"\u68A6\u5883\u6574\u7406\u88AB\u4E2D\u65AD"}),this.sendNotification("turn.error",{turnId:n,error:{message:"Dream aborted",code:"ABORTED"}});else{let m=p instanceof Error?p.message:String(p);this.sendNotification("system.activity",{category:"dream",level:"error",title:"\u68A6\u5883\u6574\u7406\u5F02\u5E38",detail:m}),this.sendNotification("turn.error",{turnId:n,error:{message:m,code:"INTERNAL_ERROR"}})}}finally{this.activeTurn===c&&(this.activeTurn=null)}}Ml();function Q1(e){let t=tW(e.fetchFn??fetch,e.clientVersion),n=e.token.trim();return{async resolveInstall(r,o){let s=encodeURIComponent(r.trim());if(!s)throw new Error("resourceId is required.");let i=o?.trim(),a=i?`?version=${encodeURIComponent(i)}`:"",l=await Hf(t,Uf(e.baseUrl,`/api/v15/registry/resources/${s}/install${a}`),n,"GET"),c=rR(l);if(!c)throw new Error("Community hub returned an invalid install resolution.");return c},async listResourceVersions(r){let o=encodeURIComponent(r.trim());if(!o)throw new Error("resourceId is required.");let s=await Hf(t,Uf(e.baseUrl,`/api/v15/registry/resources/${o}/versions`),n,"GET");return(Ul(s)&&Array.isArray(s.versions)?s.versions:[]).map(rW).filter(a=>!!a)},async resolveRuntime(r,o){let s=encodeURIComponent(r.trim());if(!s)throw new Error("runtime id is required.");let i=encodeURIComponent(o.trim());if(!i)throw new Error("platform is required.");let a=await Hf(t,Uf(e.baseUrl,`/api/v15/runtime/${s}/resolve?platform=${i}`),n,"GET"),l=oW(a);if(!l)throw new Error("Community hub returned an invalid runtime resolution.");return l}}}function nR(e=Kn()){let t=e.get("QLOGIC_LLMROUTER_ACCESS_TOKEN")?.trim();if(!t)return null;let n=Z1(e);return Q1({baseUrl:eW(e),token:t,clientVersion:n})}function Z1(e){let t=e.get("QLOGIC_AGENT_VERSION")?.trim();return t||"2.19.
|
|
301
|
+
`),error:x.details?.error}}catch(k){return{result:"",error:k instanceof Error?k.message:String(k)}}}},createAgentRunner:Rn,tools:this.toolCatalog.getToolManifest(),taskStore:this.taskStore,apiKey:this.currentApiKey,model:d.model??this.currentModel,log:{info:f=>this.log(f),warn:f=>this.log(`[warn] ${f}`),error:f=>this.log(`[error] ${f}`),debug:f=>{this.verbose&&this.log(`[debug] ${f}`)}},hooks:this.currentHooks??void 0,parentSignal:c.signal,memoryProvider:this.memoryProvider??void 0,memoryUserId:this.memoryUserId||void 0},m=await CT(p);if(m.ok){if(this.memoryProvider&&this.memoryUserId){try{let f=await MT({adapter:this.memoryProvider,userId:this.memoryUserId,memoryRoot:i,log:{info:g=>this.log(g),debug:g=>{this.verbose&&this.log(g)}}});f.ran&&(this.sendNotification("memory.decay.completed",{decayed:f.decayed,archived:f.archived,durationMs:f.durationMs}),this.sendNotification("system.activity",{category:"decay",level:"info",title:"\u8BB0\u5FC6\u8870\u51CF\u5B8C\u6210",detail:`\u8870\u51CF ${f.decayed} \u6761\uFF0C\u5F52\u6863 ${f.archived} \u6761 (${f.durationMs}ms)`}))}catch(f){console.error(`[decay] post-dream decay error: ${f instanceof Error?f.message:String(f)}`)}try{let f=this.memoryProvider;if(typeof f.resolveConflicts=="function"){let g=await f.resolveConflicts(this.memoryUserId);(g.conflictsResolved>0||g.claimsPromoted>0)&&(this.log(`[dream] resolved ${g.conflictsResolved} conflicts, promoted ${g.claimsPromoted} pending claims`),this.sendNotification("system.activity",{category:"consolidation",level:"info",title:"\u8BB0\u5FC6\u51B2\u7A81\u6574\u7406",detail:`\u89E3\u51B3 ${g.conflictsResolved} \u5904\u51B2\u7A81\uFF0C\u786E\u8BA4 ${g.claimsPromoted} \u6761\u5F85\u5B9A\u8BB0\u5FC6`}))}}catch(f){console.error(`[consolidation] post-dream conflict resolution error: ${f instanceof Error?f.message:String(f)}`)}try{let f=this.memoryProvider;if(typeof f.consumePendingProposals=="function"){let g=await f.consumePendingProposals(this.memoryUserId);(g.committed>0||g.expiredIds.length>0)&&this.log(`[dream] proposal consumer: committed=${g.committed} merged=${g.merged} expired=${g.expiredIds.length} pending=${g.pendingLeft}`)}}catch(f){console.error(`[consolidation] post-dream proposal consume error: ${f instanceof Error?f.message:String(f)}`)}}this.sendNotification("system.activity",{category:"dream",level:"success",title:"\u68A6\u5883\u6574\u7406\u5B8C\u6210",detail:`\u56DE\u987E ${m.sessionsReviewed} \u4E2A\u4F1A\u8BDD\uFF0C\u6574\u7406 ${m.filesTouched.length} \u4E2A\u8BB0\u5FC6\u6587\u4EF6\uFF0C\u8017\u65F6 ${m.durationMs}ms`}),this.sendNotification("memory.updated",{source:"dream",target:"consolidation",files:m.filesTouched}),this.sendNotification("turn.end",{turnId:n,content:`Dream consolidation completed. ${m.sessionsReviewed} sessions reviewed, ${m.filesTouched.length} files touched. Duration: ${m.durationMs}ms.`,usage:{inputTokens:0,outputTokens:0}})}else this.sendNotification("system.activity",{category:"dream",level:"error",title:"\u68A6\u5883\u6574\u7406\u5931\u8D25",detail:m.error??"\u672A\u77E5\u9519\u8BEF"}),this.sendNotification("turn.error",{turnId:n,error:{message:m.error??"Dream consolidation failed",code:"DREAM_FAILED"}});this.log(`dream ${n} completed`)}catch(p){if(c.signal.aborted)this.sendNotification("system.activity",{category:"dream",level:"warn",title:"\u68A6\u5883\u6574\u7406\u88AB\u4E2D\u65AD"}),this.sendNotification("turn.error",{turnId:n,error:{message:"Dream aborted",code:"ABORTED"}});else{let m=p instanceof Error?p.message:String(p);this.sendNotification("system.activity",{category:"dream",level:"error",title:"\u68A6\u5883\u6574\u7406\u5F02\u5E38",detail:m}),this.sendNotification("turn.error",{turnId:n,error:{message:m,code:"INTERNAL_ERROR"}})}}finally{this.activeTurn===c&&(this.activeTurn=null)}}Ml();function Q1(e){let t=tW(e.fetchFn??fetch,e.clientVersion),n=e.token.trim();return{async resolveInstall(r,o){let s=encodeURIComponent(r.trim());if(!s)throw new Error("resourceId is required.");let i=o?.trim(),a=i?`?version=${encodeURIComponent(i)}`:"",l=await Hf(t,Uf(e.baseUrl,`/api/v15/registry/resources/${s}/install${a}`),n,"GET"),c=rR(l);if(!c)throw new Error("Community hub returned an invalid install resolution.");return c},async listResourceVersions(r){let o=encodeURIComponent(r.trim());if(!o)throw new Error("resourceId is required.");let s=await Hf(t,Uf(e.baseUrl,`/api/v15/registry/resources/${o}/versions`),n,"GET");return(Ul(s)&&Array.isArray(s.versions)?s.versions:[]).map(rW).filter(a=>!!a)},async resolveRuntime(r,o){let s=encodeURIComponent(r.trim());if(!s)throw new Error("runtime id is required.");let i=encodeURIComponent(o.trim());if(!i)throw new Error("platform is required.");let a=await Hf(t,Uf(e.baseUrl,`/api/v15/runtime/${s}/resolve?platform=${i}`),n,"GET"),l=oW(a);if(!l)throw new Error("Community hub returned an invalid runtime resolution.");return l}}}function nR(e=Kn()){let t=e.get("QLOGIC_LLMROUTER_ACCESS_TOKEN")?.trim();if(!t)return null;let n=Z1(e);return Q1({baseUrl:eW(e),token:t,clientVersion:n})}function Z1(e){let t=e.get("QLOGIC_AGENT_VERSION")?.trim();return t||"2.19.4"}function eW(e){return e.get("QLOGIC_HUB_BASE_URL")?.trim()||e.get("XIAOZHICLAW_HUB_URL")?.trim()||"https://xiaozhi.qlogicagent.com"}function Uf(e,t){let n=e.trim().replace(/\/+$/,"");return n.endsWith("/v1")&&(n=n.slice(0,-3)),n.endsWith("/api")&&(n=n.slice(0,-4)),`${n}${t}`}function tW(e,t){let n=t?.trim();return n?(r,o)=>e(r,{...o,headers:{...o?.headers,"x-client-version":n}}):e}async function Hf(e,t,n,r,o){let s,i=o!==void 0;try{s=await e(t,{method:r,headers:{accept:"application/json",authorization:`Bearer ${n}`,...i?{"content-type":"application/json"}:{}},...i?{body:JSON.stringify(o)}:{},signal:AbortSignal.timeout(1e4)})}catch{throw new Error("Community hub is unavailable.")}if(!s.ok)throw new Error(`Community hub rejected registry request: ${s.status}${await nW(s)}`);return s.json().catch(()=>null)}async function nW(e){try{let t=(await e.text()).trim();return t?` ${t.slice(0,500)}`:""}catch{return""}}function Ul(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function rW(e){return!Ul(e)||typeof e.version!="string"||!e.version?null:{version:e.version,createdAt:typeof e.createdAt=="string"?e.createdAt:"",sizeBytes:typeof e.sizeBytes=="number"?e.sizeBytes:0,yanked:e.yanked===!0}}function oW(e){if(!Ul(e))return null;let t=typeof e.id=="string"?e.id:"",n=typeof e.version=="string"?e.version:"",r=typeof e.downloadUrl=="string"?e.downloadUrl:"",o=typeof e.checksum=="string"?e.checksum:"",s=typeof e.sizeBytes=="number"?e.sizeBytes:0;return!t||!n||!r||!/^[a-f0-9]{64}$/.test(o)||!Number.isSafeInteger(s)||s<=0?null:{id:t,version:n,downloadUrl:r,checksum:o,sizeBytes:s}}var sW=new Set(["R0","R1","R2","R3"]),iW=new Set(["official","community"]),aW=new Set(["quarantine","trial","trusted"]),lW=new Set(["pending","approved","rejected"]);function tR(e){return typeof e=="string"&&sW.has(e)?e:null}function cW(e){return typeof e=="string"&&iW.has(e)?e:null}function dW(e){return typeof e=="string"&&aW.has(e)?e:null}function uW(e){return typeof e=="string"&&lW.has(e)?e:null}function rR(e){if(!Ul(e))return null;let t=cW(e.sourceTier),n=dW(e.trustStage),r=uW(e.reviewStatus),o=tR(e.resourceRiskTier),s=tR(e.effectiveRiskTier);if(typeof e.id!="string"||typeof e.type!="string"||typeof e.kind!="string"||!t||!n||!r||!o||!s||typeof e.version!="string"||typeof e.checksum!="string"||typeof e.sizeBytes!="number"||typeof e.downloadUrl!="string")return null;let i=Array.isArray(e.requires)?e.requires:null,a=Array.isArray(e.dependencies)?e.dependencies:null;if(!i||!a||i.some(c=>typeof c!="string"))return null;let l=a.map(rR);return l.some(c=>!c)?null:{id:e.id,type:e.type,kind:e.kind,sourceTier:t,trustStage:n,reviewStatus:r,resourceRiskTier:o,effectiveRiskTier:s,requires:i,dependencies:l,version:e.version,checksum:e.checksum,sizeBytes:e.sizeBytes,downloadUrl:e.downloadUrl,manifest:e.manifest,minClientVersion:typeof e.minClientVersion=="string"&&e.minClientVersion.trim()?e.minClientVersion.trim():void 0,signature:typeof e.signature=="string"&&e.signature.trim()?e.signature:null,signingKeyId:typeof e.signingKeyId=="string"&&e.signingKeyId.trim()?e.signingKeyId:null}}var Bf={enabled:!0},pW=new Set(["R2","R3"]);function oR(e,t=Bf){return pW.has(e.effectiveRiskTier)?{mode:"high-risk-ask",requiresInstallConsent:!0,requiresHighRiskConsent:!0,reason:`effectiveRiskTier=${e.effectiveRiskTier} \u9AD8\u5371,\u5FC5\u987B\u9AD8\u5371\u95EE\u4EBA`}:t.enabled?e.effectiveRiskTier==="R0"?{mode:"silent",requiresInstallConsent:!1,requiresHighRiskConsent:!1,reason:"R0 \u4F4E\u98CE\u9669 inert,\u81EA\u6CBB\u9759\u9ED8\u83B7\u53D6"}:{mode:"ask",requiresInstallConsent:!0,requiresHighRiskConsent:!1,reason:"R1 \u4F4E\u98CE\u9669\u4F46\u975E\u96F6,\u95EE\u4EBA\u4E00\u6B21"}:{mode:"ask",requiresInstallConsent:!0,requiresHighRiskConsent:!1,reason:"\u81EA\u6CBB\u9884\u7B97\u5173\u95ED,\u56DE\u9000\u663E\u5F0F\u540C\u610F"}}import{createPublicKey as mW,verify as fW}from"node:crypto";function gW(e){return`id=${e.id}
|
|
302
302
|
version=${e.version}
|
|
303
303
|
checksum=${e.checksum}
|
|
304
304
|
sizeBytes=${e.sizeBytes}`}function hW(e){return e.includes("\\n")?e.replace(/\\n/g,`
|
package/dist/protocol.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var G=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"];var Y="1.0.0",l={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},z={REQUEST:"tool.approval.request"};function _(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function x(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function X(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||_(t)||x(t)?t:null}import{randomUUID as $}from"node:crypto";var J=["settings.list","settings.get","settings.validate","provider.list","tools.list","todos.list","tasks.list","session.list","session.get","session.resolve","session.loadNativeTranscript","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],Q=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Z=["memory.","pet.","usage."],ee=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function A(e){return Q.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:J.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function v(e){return ee.has(e)||A(e).mutability==="read"?!1:Z.some(t=>e.startsWith(t))}function te(e,t={}){let n=t.now??Date.now(),r=A(e),o=t.timeoutMs??r.defaultTimeoutMs;return{requestId:t.requestId??$(),createdAt:n,deadlineAt:n+o,channel:t.channel??r.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function M(e,t=Date.now()){let n=e.meta;if(!n||typeof n!="object")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof n.requestId!="string"||n.requestId.length===0)return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(n.channel!=="query"&&n.channel!=="task")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof n.createdAt!="number"||!Number.isFinite(n.createdAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof n.deadlineAt!="number"||!Number.isFinite(n.deadlineAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(n.deadlineAt<=t)return{ok:!1,error:{code:l.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let r=A(e.method).channel;return n.channel!==r?{ok:!1,error:{code:l.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${r}, got ${n.channel}.`}}:v(e.method)&&(typeof n.idempotencyKey!="string"||n.idempotencyKey.length===0)?{ok:!1,error:{code:l.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:n}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,n){let r=M({method:t,meta:n},this.now());if(!r.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:r.error};if(n.idempotencyKey){let o=this.idempotency.get(n.idempotencyKey);if(o)return this.counters.dedupedRequests+=1,o.error?{status:"deduped",error:o.error}:{status:"deduped",result:o.result}}return this.active.set(n.requestId,{method:t,meta:n,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,n="cancelled"){let r=this.active.get(t);return!r||r.cancelled?!1:(r.cancelled=!0,r.cancelReason=n,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,n,r){let o=this.active.get(t);return o?(this.active.delete(t),o.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):o.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,o.meta.idempotencyKey&&this.idempotency.set(o.meta.idempotencyKey,{result:n,error:r,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var ne=["agent.health","agent.metrics","agent.cancel","provider.catalog","provider.list","provider.get","provider.install","provider.update","provider.uninstall","provider.enable","provider.disable","provider.diagnose","provider.auth.status","provider.auth.methods","provider.auth.start","provider.auth.attach","provider.auth.input","provider.auth.resize","provider.auth.cancel","provider.auth.logout","provider.models.list","provider.nativeSessions.list","provider.nativeSessions.load","provider.nativeSessions.resume","delegation.cancel","delegation.reset","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.loadNativeTranscript","session.adoptNative","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.detach","project.delete","project.rename","project.archive","project.unarchive","project.update","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.move","files.copy","files.delete","files.search","files.undoOperation","files.gitStatus","turnBaseline.getSummary","turnBaseline.getFileDiff","turnBaseline.listRecent","turnBaseline.getFileBaseline","workingMaterials.get","workingMaterials.replace","workingMaterials.upsert","workingMaterials.remove","workingMaterials.reorder","skills.list","memory.list-files","memory.atlas","memory.activity","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var I=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.file_changes","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.media_usage","turn.media_capability_check","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.progress","turn.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","session.recovery_pending","memory.updated","skills.updated","turn.memory_recall","turn.memory_written","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested","workflow.approvalTimedOut"],b=["solo.progress","solo.specProgress","solo.agentDelta","solo.agentActivity","solo.agentUsage","solo.evaluation","product.taskStarted","product.taskOutput","product.members","product.agentActivity","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.budgetWarning","product.checkpointed","product.completed","product.dagTopology","plan.interrupted","product.planReady","product.planningDelta","product.leaderMessage","product.planFailed","product.planningAsk","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated","goal.round_message","mention.delegate_started","mention.delegate_activity","mention.delegate_settled"],re=[...I,...b],w=re;import{createHash as kt}from"node:crypto";import{resolve as Ct}from"node:path";var m={request:"x/delegate",update:"x/delegate.update",respond:"x/delegate.respond",cancel:"x/delegate.cancel"},ie=["search","addText","embedText","ingestExtracted","proposeExtracted","consumePendingProposals","feedback","findRelatedEvents","synthesizeTimeline","getActivitySummary","getAllProfiles","setProfile","getAtlas","setMemoryArchived","triggerDecay","resolveConflicts"],oe=["initialize","getIndex","addToIndex","replaceInIndex","removeFromIndex","createFile","writeFile","readFile","deleteFile","listFiles","searchLocal"],se=["getSkillSnapshot","readSkillFile","recordSkillInvocation","commitSkillMutation","applyCuratorPlan","prepareSkillInstall","finalizeSkillInstall"],ae=["loadForResume","appendTranscript","updateTitle","saveState","saveTaskSummary","groupSplit"],de=["commitTurnTelemetry","listDistillableFeedback","markFeedbackDistilled","runUploadSweep"],pe=["getSnapshot","create","switch","update"],Lt=1024*1024,ce=["list","get","diagnose"],le=["navigate","snapshot","click","type","screenshot","console","network"];var ue=["open","recordEvent","checkpoint","get","list","delete","getCheckpoint","listCheckpoints","restoreCheckpoint"],ge=["isActive","getSoul","awardXp","journeyCatchUp"],me=["getTunables","updateTunable","clearTunable","appendDirectoryAllowRule"];var jt=new Set(ie),Ut=new Set(oe),Kt=new Set(me),Ft=new Set(se),Vt=new Set(ae),Wt=new Set(de),qt=new Set(pe),Bt=new Set(ue),Gt=new Set(ge),Yt=new Set(ce),zt=new Set(le);var fe=1,ye={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_CLOSE:"session/close",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_LOAD:"session/load",SESSION_CANCEL:"session/cancel",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},Ae={ABORT:"x/abort",DREAM:"x/dream",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_REPLAY:"x/product.replay",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",SOLO_SPEC_CHAT:"x/solo.specChat",SOLO_SPEC_JUDGE:"x/solo.specJudge",WORKFLOW_CHAT:"x/workflow.chat",WORKFLOW_MATCH_INTENT:"x/workflow.matchIntent",PRODUCT_SUBSCRIBE:"x/product.subscribe",GOAL_START:"x/goal.start",GOAL_STATUS:"x/goal.status",GOAL_PAUSE:"x/goal.pause",GOAL_RESUME:"x/goal.resume",GOAL_UPDATE_GOAL:"x/goal.updateGoal",GOAL_STOP:"x/goal.stop",GOAL_MESSAGE:"x/goal.message",GOAL_SUBSCRIBE:"x/goal.subscribe",GOAL_EVENTS:"x/goal.events",DELEGATE:m.request,DELEGATE_UPDATE:m.update,DELEGATE_RESPOND:m.respond,DELEGATE_CANCEL:m.cancel},O={USER_MESSAGE_CHUNK:"user_message_chunk",AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update",CURRENT_MODE_UPDATE:"current_mode_update"},Se={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function D(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function H(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function Re(e){let t;try{t=JSON.parse(e)}catch{return null}return H(t)||N(t)||D(t)?t:null}function Ie(e){return Object.values(O).includes(e)}function be(e){return e.startsWith("x_")}var P=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function E(e){return e?e.map(t=>({...t})):void 0}function Pe(e){return e?[...e]:void 0}function L(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,n)=>t.localeCompare(n))}function f(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:E(e.workspaceSummaries)}:{}}}function Ee(e){let{previous:t,update:n}=e;return!(n.syncMode==="diff"&&t&&(!n.baseSnapshotVersion||t.snapshotVersion===n.baseSnapshotVersion))||!t?f(n):{...f(t),snapshotVersion:n.snapshotVersion,updatedAt:n.updatedAt,...n.gatewayVersion!==void 0?{gatewayVersion:n.gatewayVersion}:{},...n.syncMode?{syncMode:n.syncMode}:{},...n.baseSnapshotVersion?{baseSnapshotVersion:n.baseSnapshotVersion}:{},...n.changedSections?{changedSections:[...n.changedSections]}:{},...n.toolNamespaces?{toolNamespaces:[...n.toolNamespaces]}:{},...n.workspaceIds?{workspaceIds:[...n.workspaceIds]}:{},...n.installedCapabilities?{installedCapabilities:[...n.installedCapabilities]}:{},...n.enabledCapabilities?{enabledCapabilities:[...n.enabledCapabilities]}:{},...n.features?{features:[...n.features]}:{},...n.approvalMode?{approvalMode:n.approvalMode}:{},...n.toolManifests?{toolManifests:g(n.toolManifests)}:{},...n.skillManifests?{skillManifests:g(n.skillManifests)}:{},...n.pluginManifests?{pluginManifests:g(n.pluginManifests)}:{},...n.mcpManifests?{mcpManifests:g(n.mcpManifests)}:{},...n.approvalPolicy?{approvalPolicy:{...n.approvalPolicy}}:{},...n.workspaceSummaries?{workspaceSummaries:E(n.workspaceSummaries)}:{}}}function he(e){return L(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function Te(e){return L(e.map(t=>t.id))}function ke(e){let{previous:t,current:n}=e;if(!t)return{...f(n),syncMode:"full"};if(t.snapshotVersion===n.snapshotVersion)return null;let r=P.filter(s=>JSON.stringify(t[s])!==JSON.stringify(n[s]));if(r.length===P.length)return{...f(n),syncMode:"full"};let o={snapshotVersion:n.snapshotVersion,updatedAt:n.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:r,toolNamespaces:[...n.toolNamespaces],workspaceIds:[...n.workspaceIds]},p=o;for(let s of r){let i=n[s];if(i!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":p[s]=Pe(i);break;case"approvalPolicy":p[s]={...i};break;case"workspaceSummaries":p[s]=E(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[s]=g(i);break;default:p[s]=i;break}}return o}var _e=["web_search","web_fetch","deep_research","browser_execution"],Ce=["web-intelligence","browser-execution"],xe=["discovery","read-url","multi-source-research","interactive-browser"],ve=["stateless","render-backend","interactive-session"],Me=["stateless","stateless-single-step","stateful-session-required"],we=["required","conditional","none"],Oe=["browser-read","browser-authenticated-read","browser-state-changing"];var Ne=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],De=["web_search","web_fetch","deep_research","blocked"],He=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Le=["none","same-capability-once","degrade-only"];var je=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ue=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],Ke=["observe-only","parent-write","deny"];var Fe=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},y={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function U(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function Ve(e){return{...e,assetIds:[...e.assetIds]}}function K(){return{[y.desktopDockerBridge]:{id:y.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[y.desktopEmbeddedWin32X64]:{id:y.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function F(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function We(e,t){let n=V(e,t);return n?n.assetIds.map(r=>F(e,r)).filter(r=>!!r):[]}function qe(e,t){return e.assets[t.id]=U(t),W(e)}function h(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function W(e){let t=h(e.assets[a.gatewayImage]),n=h(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:n}}function j(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function Be(e){let t=e&&typeof e=="object"?e:{},n={},r=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,d]of Object.entries(r)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.artifacts)||(n[i]=U(u))}if(!n[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=j(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});i&&(n[i.id]=i)}if(!n[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let i=j(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});i&&(n[i.id]=i)}let p={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,d]of Object.entries(s)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.assetIds)||(p[i]=Ve(u))}return W({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:n,profiles:p})}var Ge=["pending","captured","failed","restored"],Ye=["file","directory","missing"],ze=["metadata-only","workspace-copy","shadow-git"];var Xe=["api-key","oauth","token","aws-sdk"],$e=["rate_limit","auth","server_error","timeout","network","unknown"],Je=["requiresOpenAiAnthropicToolPayload"];function Qe(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var q="openai-codex";function S(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=S(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ze=B,et={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},tt={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[q]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function T(e,t){let n=(e??"").toLowerCase();return!!n&&t.some(r=>n.includes(r))}function c(e){let t=S(e??"");return{...et,...tt[t]}}function nt(e){return c(e).preserveAnthropicThinkingSignatures}function rt(e){let t=c(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function it(e){return c(e).anthropicToolSchemaMode==="openai-functions"}function ot(e){return c(e).anthropicToolChoiceMode==="openai-string-modes"}function st(e){return c(e).openAiCompatTurnValidation}function at(e){return c(e).providerFamily==="openai"}function dt(e){return c(e).providerFamily==="anthropic"}function pt(e){return T(e.modelId,c(e.provider).dropThinkingBlockModelHints)}function ct(e){let t=c(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function lt(e,t){let n=c(e),r=n.transcriptToolCallIdMode;if(r==="strict9")return r;if(T(t,n.transcriptToolCallIdModelHints))return"strict9"}var k={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function ut(){return[...new Set(Object.values(k).flat())]}function gt(e){let t=S(e.provider),n=e.env??process.env,r=new Set(e.appliedEnvKeys??[]),o=i=>{let d=n[i]?.trim();if(!d)return null;let u=r.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:d,source:u}},p=e.resolveSpecialApiKey?.(t,n,r);if(p)return p;let s=k[t];if(!s||s.length===0)return null;for(let i of s){let d=o(i);if(d)return d}return null}export{Ae as ACP_EXTENDED_METHODS,Se as ACP_EXTENDED_SESSION_UPDATE_TYPES,ye as ACP_METHODS,fe as ACP_PROTOCOL_VERSION,O as ACP_SESSION_UPDATE_TYPES,z as AGENT_RPC_APPROVAL_METHODS,l as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,b as AGENT_TEAM_WS_EVENT_NAMES,I as AGENT_WS_EVENT_NAMES,w as ALL_AGENT_WS_EVENT_NAMES,P as CAPABILITY_MANIFEST_DIFF_SECTIONS,ne as GATEWAY_RPC_METHODS,R as GatewayRpcContract,je as MEMORY_OBSERVATION_HOOK_VALUES,Ue as MEMORY_OBSERVATION_SOURCE_VALUES,Ke as MEMORY_WRITE_ACCESS_VALUES,ze as MUTATION_CHECKPOINT_BACKEND_VALUES,Ye as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ge as MUTATION_CHECKPOINT_PHASE_VALUES,G as PETDEX_ANIMATION_IDS,Xe as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Je as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,k as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,q as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,$e as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Fe as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,Ne as WEB_ACTION_SCOPE_VALUES,we as WEB_APPROVAL_DEFAULT_VALUES,Ce as WEB_CAPABILITY_FAMILY_VALUES,_e as WEB_CAPABILITY_ID_VALUES,De as WEB_DEGRADATION_TARGET_VALUES,He as WEB_ESCALATION_REASON_VALUES,ve as WEB_EXECUTION_MODE_VALUES,Oe as WEB_POLICY_RISK_CLASS_VALUES,Le as WEB_RETRY_POLICY_VALUES,Me as WEB_STATEFULNESS_VALUES,xe as WEB_TASK_MODE_VALUES,te as buildAgentRpcMeta,A as classifyGatewayRpcMethod,f as cloneCapabilityManifestSnapshot,ke as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,he as deriveCapabilityToolNamespaces,Te as deriveCapabilityWorkspaceIds,h as getManifestShortcutEntry,F as getRuntimeResourceAsset,V as getRuntimeResourceProfile,We as getRuntimeResourceProfileAssets,D as isAcpJsonRpcNotification,N as isAcpJsonRpcRequest,H as isAcpJsonRpcResponse,x as isAgentRpcNotification,_ as isAgentRpcRequest,C as isAgentRpcResponse,dt as isAnthropicProviderRuntimeFamily,be as isExtendedSessionUpdateType,at as isOpenAiProviderRuntimeFamily,Ie as isStandardSessionUpdateType,ut as listProviderRuntimeEnvApiKeyNames,Ee as mergeCapabilityManifestSnapshot,S as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Be as normalizeRuntimeResourceManifest,Re as parseAcpMessage,X as parseAgentRpcMessage,nt as preservesProviderRuntimeAnthropicThinkingSignatures,Qe as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,v as requiresIdempotencyKey,rt as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,c as resolveProviderRuntimeCapabilities,gt as resolveProviderRuntimeEnvApiKey,Ze as resolveProviderRuntimeKeyFamily,lt as resolveProviderRuntimeTranscriptToolCallIdMode,pt as shouldDropThinkingBlocksForProviderRuntimeModel,ct as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,st as supportsOpenAiCompatTurnValidationForProviderRuntime,qe as upsertRuntimeResourceAsset,it as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,ot as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
1
|
+
var G=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"];var Y="1.0.0",l={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},z={REQUEST:"tool.approval.request"};function _(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function x(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function X(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||_(t)||x(t)?t:null}import{randomUUID as $}from"node:crypto";var J=["settings.list","settings.get","settings.validate","provider.list","tools.list","todos.list","tasks.list","session.list","session.get","session.resolve","session.loadNativeTranscript","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],Q=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Z=["memory.","pet.","usage."],ee=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function A(e){return Q.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:J.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function v(e){return ee.has(e)||A(e).mutability==="read"?!1:Z.some(t=>e.startsWith(t))}function te(e,t={}){let r=t.now??Date.now(),n=A(e),o=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??$(),createdAt:r,deadlineAt:r+o,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function M(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:l.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=A(e.method).channel;return r.channel!==n?{ok:!1,error:{code:l.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:v(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:l.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let n=M({method:t,meta:r},this.now());if(!n.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:n.error};if(r.idempotencyKey){let o=this.idempotency.get(r.idempotencyKey);if(o)return this.counters.dedupedRequests+=1,o.error?{status:"deduped",error:o.error}:{status:"deduped",result:o.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let n=this.active.get(t);return!n||n.cancelled?!1:(n.cancelled=!0,n.cancelReason=r,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,r,n){let o=this.active.get(t);return o?(this.active.delete(t),o.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):o.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,o.meta.idempotencyKey&&this.idempotency.set(o.meta.idempotencyKey,{result:r,error:n,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var re=["agent.health","agent.metrics","agent.cancel","provider.catalog","provider.list","provider.get","provider.install","provider.install.cancel","provider.update","provider.uninstall","provider.enable","provider.disable","provider.diagnose","provider.auth.status","provider.auth.setPreference","provider.auth.methods","provider.auth.start","provider.auth.attach","provider.auth.input","provider.auth.resize","provider.auth.cancel","provider.auth.logout","provider.models.list","provider.nativeSessions.list","provider.nativeSessions.load","provider.nativeSessions.resume","delegation.cancel","delegation.reset","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.loadNativeTranscript","session.adoptNative","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.detach","project.delete","project.rename","project.archive","project.unarchive","project.update","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.move","files.copy","files.delete","files.search","files.undoOperation","files.gitStatus","turnBaseline.getSummary","turnBaseline.getFileDiff","turnBaseline.listRecent","turnBaseline.getFileBaseline","workingMaterials.get","workingMaterials.replace","workingMaterials.upsert","workingMaterials.remove","workingMaterials.reorder","skills.list","memory.list-files","memory.atlas","memory.activity","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var I=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.file_changes","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.media_usage","turn.media_capability_check","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.progress","turn.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","session.recovery_pending","memory.updated","skills.updated","turn.memory_recall","turn.memory_written","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested","workflow.approvalTimedOut"],b=["solo.progress","solo.specProgress","solo.agentDelta","solo.agentActivity","solo.agentUsage","solo.evaluation","product.taskStarted","product.taskOutput","product.members","product.agentActivity","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.budgetWarning","product.checkpointed","product.completed","product.dagTopology","plan.interrupted","product.planReady","product.planningDelta","product.leaderMessage","product.planFailed","product.planningAsk","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated","goal.round_message","mention.delegate_started","mention.delegate_activity","mention.delegate_settled"],ne=[...I,...b],w=ne;import{createHash as kt}from"node:crypto";import{resolve as Ct}from"node:path";var m={request:"x/delegate",update:"x/delegate.update",respond:"x/delegate.respond",cancel:"x/delegate.cancel"},ie=["search","addText","embedText","ingestExtracted","proposeExtracted","consumePendingProposals","feedback","findRelatedEvents","synthesizeTimeline","getActivitySummary","getAllProfiles","setProfile","getAtlas","setMemoryArchived","triggerDecay","resolveConflicts"],oe=["initialize","getIndex","addToIndex","replaceInIndex","removeFromIndex","createFile","writeFile","readFile","deleteFile","listFiles","searchLocal"],se=["getSkillSnapshot","readSkillFile","recordSkillInvocation","commitSkillMutation","applyCuratorPlan","prepareSkillInstall","finalizeSkillInstall"],ae=["loadForResume","appendTranscript","updateTitle","saveState","saveTaskSummary","groupSplit"],de=["commitTurnTelemetry","listDistillableFeedback","markFeedbackDistilled","runUploadSweep"],pe=["getSnapshot","create","switch","update"],Lt=1024*1024,ce=["list","get","diagnose"],le=["navigate","snapshot","click","type","screenshot","console","network"];var ue=["open","recordEvent","checkpoint","get","list","delete","getCheckpoint","listCheckpoints","restoreCheckpoint"],ge=["isActive","getSoul","awardXp","journeyCatchUp"],me=["getTunables","updateTunable","clearTunable","appendDirectoryAllowRule"];var jt=new Set(ie),Ut=new Set(oe),Kt=new Set(me),Ft=new Set(se),Vt=new Set(ae),Wt=new Set(de),qt=new Set(pe),Bt=new Set(ue),Gt=new Set(ge),Yt=new Set(ce),zt=new Set(le);var fe=1,ye={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_CLOSE:"session/close",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_LOAD:"session/load",SESSION_CANCEL:"session/cancel",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},Ae={ABORT:"x/abort",DREAM:"x/dream",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_REPLAY:"x/product.replay",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",SOLO_SPEC_CHAT:"x/solo.specChat",SOLO_SPEC_JUDGE:"x/solo.specJudge",WORKFLOW_CHAT:"x/workflow.chat",WORKFLOW_MATCH_INTENT:"x/workflow.matchIntent",PRODUCT_SUBSCRIBE:"x/product.subscribe",GOAL_START:"x/goal.start",GOAL_STATUS:"x/goal.status",GOAL_PAUSE:"x/goal.pause",GOAL_RESUME:"x/goal.resume",GOAL_UPDATE_GOAL:"x/goal.updateGoal",GOAL_STOP:"x/goal.stop",GOAL_MESSAGE:"x/goal.message",GOAL_SUBSCRIBE:"x/goal.subscribe",GOAL_EVENTS:"x/goal.events",DELEGATE:m.request,DELEGATE_UPDATE:m.update,DELEGATE_RESPOND:m.respond,DELEGATE_CANCEL:m.cancel},O={USER_MESSAGE_CHUNK:"user_message_chunk",AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update",CURRENT_MODE_UPDATE:"current_mode_update"},Se={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function D(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function H(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function Re(e){let t;try{t=JSON.parse(e)}catch{return null}return H(t)||N(t)||D(t)?t:null}function Ie(e){return Object.values(O).includes(e)}function be(e){return e.startsWith("x_")}var P=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function E(e){return e?e.map(t=>({...t})):void 0}function Pe(e){return e?[...e]:void 0}function L(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function f(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:E(e.workspaceSummaries)}:{}}}function Ee(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?f(r):{...f(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:E(r.workspaceSummaries)}:{}}}function he(e){return L(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function Te(e){return L(e.map(t=>t.id))}function ke(e){let{previous:t,current:r}=e;if(!t)return{...f(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=P.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===P.length)return{...f(r),syncMode:"full"};let o={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},p=o;for(let s of n){let i=r[s];if(i!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":p[s]=Pe(i);break;case"approvalPolicy":p[s]={...i};break;case"workspaceSummaries":p[s]=E(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[s]=g(i);break;default:p[s]=i;break}}return o}var _e=["web_search","web_fetch","deep_research","browser_execution"],Ce=["web-intelligence","browser-execution"],xe=["discovery","read-url","multi-source-research","interactive-browser"],ve=["stateless","render-backend","interactive-session"],Me=["stateless","stateless-single-step","stateful-session-required"],we=["required","conditional","none"],Oe=["browser-read","browser-authenticated-read","browser-state-changing"];var Ne=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],De=["web_search","web_fetch","deep_research","blocked"],He=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Le=["none","same-capability-once","degrade-only"];var je=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ue=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],Ke=["observe-only","parent-write","deny"];var Fe=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},y={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function U(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function Ve(e){return{...e,assetIds:[...e.assetIds]}}function K(){return{[y.desktopDockerBridge]:{id:y.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[y.desktopEmbeddedWin32X64]:{id:y.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function F(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function We(e,t){let r=V(e,t);return r?r.assetIds.map(n=>F(e,n)).filter(n=>!!n):[]}function qe(e,t){return e.assets[t.id]=U(t),W(e)}function h(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function W(e){let t=h(e.assets[a.gatewayImage]),r=h(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function j(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function Be(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,d]of Object.entries(n)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.artifacts)||(r[i]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=j(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});i&&(r[i.id]=i)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let i=j(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});i&&(r[i.id]=i)}let p={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,d]of Object.entries(s)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.assetIds)||(p[i]=Ve(u))}return W({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:p})}var Ge=["pending","captured","failed","restored"],Ye=["file","directory","missing"],ze=["metadata-only","workspace-copy","shadow-git"];var Xe=["api-key","oauth","token","aws-sdk"],$e=["rate_limit","auth","server_error","timeout","network","unknown"],Je=["requiresOpenAiAnthropicToolPayload"];function Qe(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var q="openai-codex";function S(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=S(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ze=B,et={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},tt={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[q]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function T(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(n=>r.includes(n))}function c(e){let t=S(e??"");return{...et,...tt[t]}}function rt(e){return c(e).preserveAnthropicThinkingSignatures}function nt(e){let t=c(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function it(e){return c(e).anthropicToolSchemaMode==="openai-functions"}function ot(e){return c(e).anthropicToolChoiceMode==="openai-string-modes"}function st(e){return c(e).openAiCompatTurnValidation}function at(e){return c(e).providerFamily==="openai"}function dt(e){return c(e).providerFamily==="anthropic"}function pt(e){return T(e.modelId,c(e.provider).dropThinkingBlockModelHints)}function ct(e){let t=c(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function lt(e,t){let r=c(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(T(t,r.transcriptToolCallIdModelHints))return"strict9"}var k={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function ut(){return[...new Set(Object.values(k).flat())]}function gt(e){let t=S(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),o=i=>{let d=r[i]?.trim();if(!d)return null;let u=n.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:d,source:u}},p=e.resolveSpecialApiKey?.(t,r,n);if(p)return p;let s=k[t];if(!s||s.length===0)return null;for(let i of s){let d=o(i);if(d)return d}return null}export{Ae as ACP_EXTENDED_METHODS,Se as ACP_EXTENDED_SESSION_UPDATE_TYPES,ye as ACP_METHODS,fe as ACP_PROTOCOL_VERSION,O as ACP_SESSION_UPDATE_TYPES,z as AGENT_RPC_APPROVAL_METHODS,l as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,b as AGENT_TEAM_WS_EVENT_NAMES,I as AGENT_WS_EVENT_NAMES,w as ALL_AGENT_WS_EVENT_NAMES,P as CAPABILITY_MANIFEST_DIFF_SECTIONS,re as GATEWAY_RPC_METHODS,R as GatewayRpcContract,je as MEMORY_OBSERVATION_HOOK_VALUES,Ue as MEMORY_OBSERVATION_SOURCE_VALUES,Ke as MEMORY_WRITE_ACCESS_VALUES,ze as MUTATION_CHECKPOINT_BACKEND_VALUES,Ye as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ge as MUTATION_CHECKPOINT_PHASE_VALUES,G as PETDEX_ANIMATION_IDS,Xe as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Je as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,k as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,q as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,$e as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Fe as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,Ne as WEB_ACTION_SCOPE_VALUES,we as WEB_APPROVAL_DEFAULT_VALUES,Ce as WEB_CAPABILITY_FAMILY_VALUES,_e as WEB_CAPABILITY_ID_VALUES,De as WEB_DEGRADATION_TARGET_VALUES,He as WEB_ESCALATION_REASON_VALUES,ve as WEB_EXECUTION_MODE_VALUES,Oe as WEB_POLICY_RISK_CLASS_VALUES,Le as WEB_RETRY_POLICY_VALUES,Me as WEB_STATEFULNESS_VALUES,xe as WEB_TASK_MODE_VALUES,te as buildAgentRpcMeta,A as classifyGatewayRpcMethod,f as cloneCapabilityManifestSnapshot,ke as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,he as deriveCapabilityToolNamespaces,Te as deriveCapabilityWorkspaceIds,h as getManifestShortcutEntry,F as getRuntimeResourceAsset,V as getRuntimeResourceProfile,We as getRuntimeResourceProfileAssets,D as isAcpJsonRpcNotification,N as isAcpJsonRpcRequest,H as isAcpJsonRpcResponse,x as isAgentRpcNotification,_ as isAgentRpcRequest,C as isAgentRpcResponse,dt as isAnthropicProviderRuntimeFamily,be as isExtendedSessionUpdateType,at as isOpenAiProviderRuntimeFamily,Ie as isStandardSessionUpdateType,ut as listProviderRuntimeEnvApiKeyNames,Ee as mergeCapabilityManifestSnapshot,S as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Be as normalizeRuntimeResourceManifest,Re as parseAcpMessage,X as parseAgentRpcMessage,rt as preservesProviderRuntimeAnthropicThinkingSignatures,Qe as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,v as requiresIdempotencyKey,nt as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,c as resolveProviderRuntimeCapabilities,gt as resolveProviderRuntimeEnvApiKey,Ze as resolveProviderRuntimeKeyFamily,lt as resolveProviderRuntimeTranscriptToolCallIdMode,pt as shouldDropThinkingBlocksForProviderRuntimeModel,ct as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,st as supportsOpenAiCompatTurnValidationForProviderRuntime,qe as upsertRuntimeResourceAsset,it as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,ot as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import type { NativeSessionRef, NativeTranscript } from "../../host-contract/index.js";
|
|
14
14
|
export type ProjectType = "default" | "personal" | "group" | "solo" | "product" | "automation";
|
|
15
15
|
export type ProjectStatus = "active" | "detached" | "archived";
|
|
16
|
-
export type ProviderHostMethod = "provider.catalog" | "provider.list" | "provider.get" | "provider.install" | "provider.update" | "provider.uninstall" | "provider.enable" | "provider.disable" | "provider.diagnose" | "provider.auth.status" | "provider.auth.methods" | "provider.auth.start" | "provider.auth.attach" | "provider.auth.input" | "provider.auth.resize" | "provider.auth.cancel" | "provider.auth.logout" | "provider.models.list" | "provider.nativeSessions.list" | "provider.nativeSessions.load" | "provider.nativeSessions.resume";
|
|
16
|
+
export type ProviderHostMethod = "provider.catalog" | "provider.list" | "provider.get" | "provider.install" | "provider.install.cancel" | "provider.update" | "provider.uninstall" | "provider.enable" | "provider.disable" | "provider.diagnose" | "provider.auth.status" | "provider.auth.setPreference" | "provider.auth.methods" | "provider.auth.start" | "provider.auth.attach" | "provider.auth.input" | "provider.auth.resize" | "provider.auth.cancel" | "provider.auth.logout" | "provider.models.list" | "provider.nativeSessions.list" | "provider.nativeSessions.load" | "provider.nativeSessions.resume";
|
|
17
17
|
export type AgentProviderState = "installed" | "auth_required" | "ready" | "disabled" | "incompatible" | "unresponsive" | "failed";
|
|
18
18
|
export interface AgentProviderDiagnosticWire {
|
|
19
19
|
providerId: string;
|
|
@@ -239,8 +239,18 @@ export interface GatewayRpcMethodMap {
|
|
|
239
239
|
mirror: "official" | "china";
|
|
240
240
|
};
|
|
241
241
|
result: {
|
|
242
|
-
|
|
243
|
-
|
|
242
|
+
ok: true;
|
|
243
|
+
providerId: string;
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
"provider.install.cancel": {
|
|
247
|
+
params: {
|
|
248
|
+
providerId: string;
|
|
249
|
+
};
|
|
250
|
+
result: {
|
|
251
|
+
ok: true;
|
|
252
|
+
providerId: string;
|
|
253
|
+
cancelled: boolean;
|
|
244
254
|
};
|
|
245
255
|
};
|
|
246
256
|
"provider.update": {
|
|
@@ -249,8 +259,8 @@ export interface GatewayRpcMethodMap {
|
|
|
249
259
|
mirror: "official" | "china";
|
|
250
260
|
};
|
|
251
261
|
result: {
|
|
252
|
-
|
|
253
|
-
|
|
262
|
+
ok: true;
|
|
263
|
+
providerId: string;
|
|
254
264
|
};
|
|
255
265
|
};
|
|
256
266
|
"provider.uninstall": {
|
|
@@ -259,6 +269,7 @@ export interface GatewayRpcMethodMap {
|
|
|
259
269
|
};
|
|
260
270
|
result: {
|
|
261
271
|
ok: true;
|
|
272
|
+
providerId: string;
|
|
262
273
|
nativeDataPreserved: true;
|
|
263
274
|
};
|
|
264
275
|
};
|
|
@@ -294,6 +305,17 @@ export interface GatewayRpcMethodMap {
|
|
|
294
305
|
state: AgentProviderState;
|
|
295
306
|
};
|
|
296
307
|
};
|
|
308
|
+
"provider.auth.setPreference": {
|
|
309
|
+
params: {
|
|
310
|
+
providerId: string;
|
|
311
|
+
preference: "account" | "userKey" | "managed";
|
|
312
|
+
};
|
|
313
|
+
result: {
|
|
314
|
+
ok: true;
|
|
315
|
+
providerId: string;
|
|
316
|
+
preference: "account" | "userKey" | "managed";
|
|
317
|
+
};
|
|
318
|
+
};
|
|
297
319
|
"provider.auth.methods": {
|
|
298
320
|
params: {
|
|
299
321
|
providerId: string;
|