qlogicagent 2.12.9 → 2.12.10

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 CHANGED
@@ -687,7 +687,7 @@ Auto-learned multi-step workflow using: ${e.tools.join(", ")}.
687
687
  `,"utf8")}function PX(t){return typeof t!="number"||!Number.isFinite(t)?50:Math.max(0,Math.min(200,Math.trunc(t)))}function AX(t){if(!t||typeof t!="object")return null;let e=t;if(typeof e.eventTurnId!="string"||!e.eventTurnId.trim()||typeof e.skillName!="string"||!e.skillName.trim()||e.decision!=="published"&&e.decision!=="blocked"&&e.decision!=="skipped"||typeof e.reason!="string"||!e.reason.trim()||typeof e.createdAt!="string"||Number.isNaN(Date.parse(e.createdAt)))return null;let r={eventTurnId:e.eventTurnId,skillName:e.skillName,decision:e.decision,reason:e.reason,createdAt:e.createdAt};return typeof e.resourceId=="string"&&e.resourceId.trim()&&(r.resourceId=e.resourceId),r}function IX(t){if(!t||typeof t!="object")return!1;let e=t;return e.type==="skill.create"&&typeof e.suggestedName=="string"&&typeof e.description=="string"&&Array.isArray(e.tools)&&e.tools.every(r=>typeof r=="string")}var sD="communityConsent",aD="Community hub is unavailable; consent was not changed.",uD="Community participation consent is required before publishing shared skills.",_X="Community participation consent is required before sending registry signals.",CX="Community participation consent is required before sending community telemetry.",pD="explicitInstallConsent=true is required before resolving a community install.",EX=new Set(["installed","success","fail","neutral","kept","uninstalled","endorse","error"]),MX=new Set(["community.journey.view","community.share.generated","community.sandbox.violation","community.desensitization.hit"]),DX=3,$X=1800;async function mD(t){try{let e=Fo(this),r=await e.read(),n=Ct(this);if(!n){Ue(this,t,{ok:!0,remoteAvailable:!1,consent:r});return}try{let o=await n.getConsent();await e.write(o),Ue(this,t,{ok:!0,remoteAvailable:!0,consent:o})}catch(o){Ue(this,t,{ok:!0,remoteAvailable:!1,consent:r,error:o instanceof Error?o.message:"Community hub is unavailable."})}}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function gD(t){let e=NX(t.params);if(!e){W(this,t,"enabled (boolean) is required.",b.INVALID_PARAMS);return}try{let r=Fo(this),n=Ct(this);if(!n){if(e.enabled){W(this,t,aD);return}let o=Sr(e,!1);await r.write(o),Ue(this,t,{ok:!0,remoteAvailable:!1,consent:o,warning:"Community hub is unavailable; local sharing gates are off."});return}try{let o=await n.setConsent(e);await r.write(o),Ue(this,t,{ok:!0,remoteAvailable:!0,consent:o})}catch(o){if(!e.enabled){let i=Sr(e,!1);await r.write(i),Ue(this,t,{ok:!0,remoteAvailable:!1,consent:i,warning:o instanceof Error?o.message:"Community hub is unavailable."});return}W(this,t,aD)}}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function fD(t){try{let e=Ct(this);if(!e){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resources:await e.listSharedResources()})}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function hD(t){let e=LX(t.params);if(!e){W(this,t,"Required: intent (string) and optional topK integer 1..3.",b.INVALID_PARAMS);return}try{let r=Ct(this);if(!r){W(this,t,"Community hub is unavailable.");return}let o={ok:!0,matches:await r.matchRegistry(e)};if(JSON.stringify(o).length>$X){W(this,t,"Community registry discovery response exceeded the O(1) size contract.");return}Ue(this,t,o)}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function yD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}if(e.explicitInstallConsent!==!0){W(this,t,pD,b.INVALID_PARAMS);return}let n=typeof e.version=="string"&&e.version.trim()?e.version.trim():void 0,o=e.explicitHighRiskConsent===!0;try{let i=Ct(this);if(!i){W(this,t,"Community hub is unavailable.");return}let s=await i.resolveInstall(r,n);if(_D(s)&&!o){CD(this,t,s);return}Ue(this,t,{ok:!0,install:s})}catch(i){W(this,t,i instanceof Error?i.message:String(i))}}async function vD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}if(e.explicitInstallConsent!==!0){W(this,t,pD,b.INVALID_PARAMS);return}let n=typeof e.version=="string"&&e.version.trim()?e.version.trim():void 0,o=e.explicitHighRiskConsent===!0;try{let i=Ct(this);if(!i){W(this,t,"Community hub is unavailable.");return}let s=await i.resolveInstall(r,n);if(_D(s)&&!o){CD(this,t,s);return}let a=await YM(s),c,l=await Fo(this).read();if(!cD(a)&&FS(l))try{await i.recordSignal({resourceId:s.id,event:"installed",metadata:{version:s.version,source:"community-install"}})}catch(u){c=u instanceof Error?u.message:String(u)}Ue(this,t,{ok:!0,...cD(a)?{preview:a}:{installed:a},...c?{signalWarning:c}:{}})}catch(i){W(this,t,i instanceof Error?i.message:String(i))}}function cD(t){return!!t&&typeof t=="object"&&(t.kind==="mcp"&&t.mode==="preview"||t.kind==="executable")}async function bD(t){let e=OX(t.params);if(!e){W(this,t,"Required: id, title, summary, manifest.",b.INVALID_PARAMS);return}try{let n=await Fo(this).read();if(!ID(n)){W(this,t,uD);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.publishSkill(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function kD(t){let e=jX(t.params);if(!e){W(this,t,"Required: id, name, summary, persona.",b.INVALID_PARAMS);return}try{let n=await Fo(this).read();if(!ID(n)){W(this,t,uD);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await xM(o,e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function SD(t){let e=UX(t.params);if(!e){W(this,t,"Required: resourceId and valid event.",b.INVALID_PARAMS);return}try{let n=await Fo(this).read();if(!FS(n)){W(this,t,_X);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.recordSignal(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function wD(t){let e=FX(t.params);if(!e){W(this,t,"Required: valid community telemetry event.",b.INVALID_PARAMS);return}try{let n=await Fo(this).read();if(!FS(n)){W(this,t,CX);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.recordTelemetry(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function xD(t){let e=t.params??{},r=typeof e.limit=="number"?e.limit:void 0;try{Ue(this,t,{ok:!0,entries:iD({limit:r})})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}async function RD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}let n=typeof e.reason=="string"?e.reason:void 0;try{let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resource:await o.withdrawSharedResource(r,n)})}catch(o){W(this,t,o instanceof Error?o.message:String(o))}}async function TD(t){let e=t.params??{},r=typeof e.reason=="string"?e.reason:void 0;try{let n=Ct(this);if(!n){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resources:await n.withdrawSharedResources(r)})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}async function PD(t){try{let e=Ct(this);if(!e){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,notices:await e.listNotices(HX(t.params))})}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function AD(t){let e=t.params??{},r=typeof e.noticeId=="number"?e.noticeId:Number(e.noticeId);if(!Number.isSafeInteger(r)||r<1){W(this,t,"noticeId (positive integer) is required.",b.INVALID_PARAMS);return}try{let n=Ct(this);if(!n){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,notice:await n.markNoticeRead(r)})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}function NX(t){if(!t||typeof t.enabled!="boolean")return null;let e={enabled:t.enabled};return typeof t.methodSharingEnabled=="boolean"&&(e.methodSharingEnabled=t.methodSharingEnabled),typeof t.signalsEnabled=="boolean"&&(e.signalsEnabled=t.signalsEnabled),typeof t.encounterEnabled=="boolean"&&(e.encounterEnabled=t.encounterEnabled),e}function OX(t){if(!t)return null;let e=typeof t.id=="string"?t.id.trim():"",r=typeof t.title=="string"?t.title.trim():"",n=typeof t.summary=="string"?t.summary.trim():"",o=HS(t.manifest)?t.manifest:null;if(!e||!r||!n||!o)return null;let i=t.visibility==="private"?"private":"public",s=Array.isArray(t.tags)?t.tags.filter(c=>typeof c=="string"):[],a={id:e,title:r,summary:n,visibility:i,tags:s,manifest:o};return typeof t.version=="string"&&(a.version=t.version.trim()),typeof t.packageGzipBase64=="string"&&(a.packageGzipBase64=t.packageGzipBase64.trim()),a}function jX(t){if(!t)return null;let e=typeof t.id=="string"?t.id.trim():"",r=typeof t.name=="string"?t.name.trim():"",n=typeof t.summary=="string"?t.summary.trim():"",o=typeof t.persona=="string"?t.persona.trim():"";return!e||!r||!n||!o?null:{id:e,name:r,summary:n,persona:o,visibility:t.visibility==="private"?"private":"public",tags:Array.isArray(t.tags)?t.tags.filter(i=>typeof i=="string"):[],traits:Array.isArray(t.traits)?t.traits.filter(i=>typeof i=="string"):[],assets:Array.isArray(t.assets)?t.assets.filter(HS).map(i=>({kind:typeof i.kind=="string"?i.kind:"",path:typeof i.path=="string"?i.path:""})).filter(i=>i.kind&&i.path):[]}}function LX(t){if(!t)return null;let e=typeof t.intent=="string"?t.intent.trim():"";if(!e)return null;let r=t.topK===void 0?void 0:Number(t.topK);return r!==void 0&&(!Number.isSafeInteger(r)||r<1||r>DX)?null:{intent:e,...r===void 0?{}:{topK:r},...typeof t.preferOfficial=="boolean"?{preferOfficial:t.preferOfficial}:{}}}function UX(t){if(!t)return null;let e=typeof t.resourceId=="string"?t.resourceId.trim():"",r=typeof t.event=="string"&&EX.has(t.event)?t.event:null;if(!e||!r)return null;let n={resourceId:e,event:r};return typeof t.attribution=="string"&&t.attribution.trim()&&(n.attribution=t.attribution.trim()),HS(t.metadata)&&(n.metadata=t.metadata),n}function FX(t){if(!t)return null;let e=typeof t.event=="string"&&MX.has(t.event)?t.event:null;if(!e)return null;let r={event:e},n=ru(e,t.metadata);return n&&(r.metadata=n),r}function HX(t){return{includeRead:t?.includeRead===!0}}function ID(t){return t.enabled&&t.methodSharingEnabled&&t.remoteSynced}function FS(t){return t.enabled&&t.signalsEnabled&&t.remoteSynced}function _D(t){return zX(t.effectiveRiskTier)}function zX(t){return t==="R2"||t==="R3"}function CD(t,e,r){W(t,e,`Explicit high-risk consent is required before exposing ${r.effectiveRiskTier} community install resolution.`,b.INTERNAL_ERROR,{resourceRiskTier:r.resourceRiskTier,effectiveRiskTier:r.effectiveRiskTier,requiresExplicitHighRiskConsent:!0})}function HS(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Ct(t){return t.resolveCommunityConsentClient?t.resolveCommunityConsentClient():zr()}function Fo(t){return t.resolveCommunityConsentStore?.()??BX()}function BX(){let t=ut();return{async read(){let e=await lD(t);return Sr(e[sD],!1)},async write(e){let r=await lD(t);r[sD]=e,await es.mkdir(dD.dirname(t),{recursive:!0}),await es.writeFile(t,JSON.stringify(r,null,2),"utf-8")}}}async function lD(t){try{return JSON.parse(await es.readFile(t,"utf-8"))}catch{return{}}}function Ue(t,e,r){e.id!==void 0&&t.sendResponse(e.id,r)}function W(t,e,r,n=b.INTERNAL_ERROR,o){e.id!==void 0&&t.sendResponse(e.id,void 0,{code:n,message:r,...o===void 0?{}:{data:o}})}se();$e();Ge();import*as Ko from"node:fs";import*as rj from"node:path";import*as Yn from"node:fs";import*as ED from"node:path";var zS=class{teamBudget={tokensUsed:0,budgetTokens:cg};isTeamBudgetExceeded(){return this.teamBudget.budgetTokens>0&&this.teamBudget.tokensUsed>=this.teamBudget.budgetTokens}recordForkTokens(e){return this.teamBudget.tokensUsed+=e,this.teamBudget.tokensUsed}teamBudgetExceededError(){return`Team budget exceeded (${this.teamBudget.tokensUsed} / ${this.teamBudget.budgetTokens} tokens). No more sub-agents allowed.`}dream={idleMinutes:30,enabled:!1,lastDreamAt:0,cooldownMs:14400*1e3,maxDurationMs:300*1e3};resetAccumulators(){this.teamBudget.tokensUsed=0}},wr=new zS;Ge();function BS(t){try{let e=JSON.parse(Yn.readFileSync(t,"utf-8"));return e.tunables&&typeof e.tunables=="object"?e.tunables:{}}catch{return{}}}function wu(t,e){let r=fr();if(!(t in r))return`Unknown tunable key: "${t}". Valid keys: ${Object.keys(r).join(", ")}`;let n=typeof r[t];return e==null||typeof e!==n?`Invalid value for "${t}": expected ${n}, got ${typeof e}`:null}function MD(t,e){if(typeof e!="string")return e;let r=fr();if(!(t in r))return e;let n=typeof r[t];if(n==="number"){let o=Number(e);if(!Number.isNaN(o)&&e.trim()!=="")return o}else if(n==="boolean"){if(e==="true")return!0;if(e==="false")return!1}return e}async function xu(t,e,r){let n={};try{n=JSON.parse(await Yn.promises.readFile(t,"utf-8"))}catch{}(!n.tunables||typeof n.tunables!="object")&&(n.tunables={}),n.tunables[e]=r,await Yn.promises.mkdir(ED.dirname(t),{recursive:!0}),await Yn.promises.writeFile(t,JSON.stringify(n,null,2),"utf-8"),$D(e,r)}async function DD(t,e){let r={};try{r=JSON.parse(await Yn.promises.readFile(t,"utf-8"))}catch{return}r.tunables&&typeof r.tunables=="object"&&(delete r.tunables[e],await Yn.promises.writeFile(t,JSON.stringify(r,null,2),"utf-8"));let n=fr();e in n&&$D(e,n[e])}function $D(t,e){t==="teamBudgetTokens"&&typeof e=="number"&&(wr.teamBudget.budgetTokens=e)}var qX="task",WX=["create","update","delete","list","get","output","cancel"],GX=/^[abdtrwm][a-z0-9]{8}$/;var KX={type:"object",properties:{action:{type:"string",enum:[...WX],description:"create \u2014 add a new checklist task (auto-assigns numeric id). update \u2014 modify a checklist task by id (partial, supports dependency wiring). delete \u2014 remove a checklist task by id (cascades block refs). list \u2014 read the checklist plus active background tasks. get \u2014 get a single checklist task by id. output \u2014 read a background task's status and output (requires taskId). cancel \u2014 stop a running background task (requires taskId)."},id:{type:"number",description:"[update|delete|get] Checklist task id to operate on."},taskId:{type:"string",description:"[output|cancel] Background task id (returned by agent background=true / exec background=true)."},title:{type:"string",description:"[create|update] Task title (3-7 words, imperative form)."},description:{type:"string",description:"[create|update] Detailed task description."},status:{type:"string",enum:["not-started","in-progress","completed"],description:"[create|update] Task status. create defaults to not-started."},owner:{type:"string",description:"[create|update] Executor label. Set this to a background task id (from agent background=true) to link the checklist item to its executor \u2014 list then shows the executor's live state."},addBlocks:{type:"array",items:{type:"number"},description:"[update] Task IDs that this task should block (they depend on this task)."},addBlockedBy:{type:"array",items:{type:"number"},description:"[update] Task IDs that should block this task (this task depends on them)."}},required:["action"]};function $a(t){let e=new Set(t.filter(r=>r.status==="completed").map(r=>r.id));return{total:t.length,completed:t.filter(r=>r.status==="completed").length,inProgress:t.filter(r=>r.status==="in-progress").length,notStarted:t.filter(r=>r.status==="not-started").length,blocked:t.filter(r=>r.status!=="completed"&&r.blockedBy?.some(n=>!e.has(n))).length}}function ND(t,e,r){let n=[],o=0,i=t??{},s=i.verificationNudge!==!1,a=()=>r?.getRuntime()??null;function c(){let v=n.reduce((k,R)=>Math.max(k,R.id),0);return o=Math.max(o,v)+1,o}function l(v){return{content:[{type:"text",text:`Error: ${v}`}],details:{type:"task",error:v}}}function u(v){let k=$a(n),R=new Set(n.filter(F=>F.status==="completed").map(F=>F.id)),I=n.map(F=>{let q=F.blockedBy?.filter(ie=>!R.has(ie));return{...F,...q?.length?{blockedBy:q}:{blockedBy:void 0}}}),A=[];if(A.push(`Task list updated. ${k.total} tasks: ${k.completed} completed, ${k.inProgress} in-progress, ${k.notStarted} not-started.`),k.blocked>0&&A.push(`${k.blocked} blocked.`),v?.created){let F=v.created;A.push(`Created task #${F.id}: "${F.title}"`)}if(v?.updated){let F=v.updated;A.push(`Updated task #${F.id}: "${F.title}"`)}v?.deleted!=null&&A.push(`Deleted task #${v.deleted}`);let $=a();if(I.length>0){A.push("");for(let F of I){let q=F.status==="completed"?"\u2713":F.status==="in-progress"?"\u2192":"\u25CB",ie=F.blockedBy?.length?` [blocked by #${F.blockedBy.join(", #")}]`:"",ne=F.owner?` (${F.owner})`:"";if(F.owner&&$&&GX.test(F.owner)){let we=$.getTask(F.owner);we&&(ne=` (${F.owner}: ${we.lifecycle})`)}A.push(` ${q} #${F.id}: ${F.title} (${F.status})${ne}${ie}`)}}let P=($?.listTasks()??[]).filter(F=>F.lifecycle==="running"||F.lifecycle==="pending");if(P.length>0){A.push(""),A.push(`Background tasks (${P.length} active):`);for(let F of P){let q=Math.round((Date.now()-F.startedAt)/1e3);A.push(` \u2699 ${F.taskId} [${F.type}] ${F.label} (${F.lifecycle}, ${q}s)`)}}let U=n.filter(F=>F.status!=="not-started"?!1:!F.blockedBy?.filter(ie=>!R.has(ie))?.length),_e=v?.updated?.status==="completed";(v?.created||_e)&&U.length>=2&&(A.push(""),A.push(`NOTE: ${U.length} tasks (#${U.map(F=>F.id).join(", #")}) are unblocked and not started. If they are independent, launch them in parallel with agent(background=true) \u2014 one call per task in a single message \u2014 and set each task's owner to the returned task id.`));let re=!1;if(s&&v?.updated&&v.updated.status==="completed"){let q=n.every(we=>we.status==="completed"),ie=n.length,ne=n.some(we=>/verif/i.test(we.title));q&&ie>=3&&!ne&&(re=!0,A.push(""),A.push("NOTE: You just closed out "+ie+' tasks and none of them was a verification step. Before writing your final summary, spawn the verification agent (agent tool with agent="verify"). You cannot self-assign PARTIAL by listing caveats in your summary \u2014 only the verifier issues a verdict.'))}return{content:[{type:"text",text:A.join(`
688
688
  `)}],details:{type:"task",...k,...v,taskList:I,agentId:i.agentId,...re&&{verificationNudgeNeeded:!0}}}}function p(v,k,R){let I=n.find(A=>A.id===v);if(I){if(k?.length){I.blocks=[...new Set([...I.blocks??[],...k])];for(let A of k){let $=n.find(B=>B.id===A);$&&($.blockedBy=[...new Set([...$.blockedBy??[],v])])}}if(R?.length){I.blockedBy=[...new Set([...I.blockedBy??[],...R])];for(let A of R){let $=n.find(B=>B.id===A);$&&($.blocks=[...new Set([...$.blocks??[],v])])}}}}function m(v){for(let k of n)k.blocks&&(k.blocks=k.blocks.filter(R=>R!==v)),k.blockedBy&&(k.blockedBy=k.blockedBy.filter(R=>R!==v))}function g(v){if(!v.title)return l("title is required for create action.");let k={id:c(),title:v.title,status:v.status??"not-started",...v.description!=null&&{description:v.description},...v.owner!=null&&{owner:v.owner}};return n.push(k),p(k.id,void 0,v.addBlockedBy),e?.onTaskCreated?.(k),u({created:{id:k.id,title:k.title}})}function f(v){if(v.id==null)return l("id is required for update action.");let k=n.find(R=>R.id===v.id);if(!k)return l(`Task #${v.id} not found.`);if(v.status==="in-progress"){let R=new Set(n.filter(A=>A.status==="completed").map(A=>A.id)),I=k.blockedBy?.filter(A=>!R.has(A));if(I?.length)return l(`Cannot set #${v.id} to in-progress: blocked by unresolved task(s) #${I.join(", #")}.`)}if(v.title!=null&&(k.title=v.title),v.description!=null&&(k.description=v.description),v.owner!=null&&(k.owner=v.owner),v.status!=null){let R=k.status;k.status=v.status,R!=="completed"&&v.status==="completed"&&e?.onTaskCompleted?.(k)}return p(k.id,v.addBlocks,v.addBlockedBy),u({updated:{id:k.id,title:k.title,status:k.status}})}function h(v){if(v.id==null)return l("id is required for delete action.");let k=n.findIndex(R=>R.id===v.id);return k===-1?l(`Task #${v.id} not found.`):(o=Math.max(o,v.id),n.splice(k,1),m(v.id),u({deleted:v.id}))}async function y(v){if(!v.taskId)return l("taskId is required for output action.");let k=a();if(!k)return l("No background task registry available in this host.");let R=await k.readOutput(v.taskId);if(!R)return l(`Background task ${v.taskId} not found.`);let{task:I,output:A,running:$}=R,B=Math.round(((I.endedAt??Date.now())-I.startedAt)/1e3);return{content:[{type:"text",text:[`Task ${I.taskId} [${I.type}] ${I.label}`,`Status: ${I.lifecycle}${$?` (running for ${B}s)`:` (${B}s)`}`,I.error?`Error: ${I.error}`:"","",A||($?"(no output yet)":"(no output)")].filter((U,_e)=>U!==""||_e===3).join(`
689
689
  `)}],details:{type:"task",action:"output",taskId:I.taskId,lifecycle:I.lifecycle,running:$}}}function S(v){if(!v.taskId)return l("taskId is required for cancel action.");let k=a();if(!k)return l("No background task registry available in this host.");if(!k.cancelTask(v.taskId)){let I=k.getTask(v.taskId);return l(I?`Background task ${v.taskId} is already ${I.lifecycle}.`:`Background task ${v.taskId} not found.`)}return{content:[{type:"text",text:`Background task ${v.taskId} cancelled.`}],details:{type:"task",action:"cancel",taskId:v.taskId}}}function w(v){if(v.id==null)return l("id is required for get action.");let k=n.find($=>$.id===v.id);if(!k)return l(`Task #${v.id} not found.`);let R=new Set(n.filter($=>$.status==="completed").map($=>$.id)),I=k.blockedBy?.filter($=>!R.has($));return{content:[{type:"text",text:[`Task #${k.id}: ${k.title}`,`Status: ${k.status}`,k.description?`Description: ${k.description}`:"",k.owner?`Owner: ${k.owner}`:"",I?.length?`Blocked by: #${I.join(", #")}`:"",k.blocks?.length?`Blocks: #${k.blocks.join(", #")}`:""].filter(Boolean).join(`
690
- `)}],details:{type:"task",action:"get",task:k}}}return{name:qX,label:"Task",description:"Plan and track multi-step work, and monitor background tasks. Checklist actions (numeric id): create, update, delete, list, get \u2014 an in-session plan with dependency tracking (blocks/blockedBy); tasks cannot start until blockers complete. Background actions (string taskId): output (read status + output of a background agent/command), cancel (stop it). Background task ids come from agent(background=true) or exec(background=true); `list` also shows active background tasks. Use frequently during complex work to plan steps, fan out background agents, and show progress.",parameters:KX,searchHint:"manage session task checklist progress tracking dependencies planning background output cancel poll",maxResultSizeChars:1e5,execute:async(v,k)=>{let R=k.action;switch(R){case"create":return g(k);case"update":return f(k);case"delete":return h(k);case"list":return u();case"get":return w(k);case"output":return y(k);case"cancel":return S(k);default:return l(`Unknown action: ${R}. Valid: create, update, delete, list, get, output, cancel.`)}}}}var Ru=[{name:"agent",label:"Agent",category:"orchestration",sessionScoped:!0},{name:"team",label:"Team",category:"orchestration",sessionScoped:!0},{name:"checkpoint",label:"Checkpoint",category:"developer",sessionScoped:!0},{name:"config",label:"Config",category:"system",sessionScoped:!0},{name:"cron",label:"Cron",category:"automation",sessionScoped:!0},{name:"monitor",label:"Monitor",category:"automation",sessionScoped:!0},{name:"memory",label:"Memory",category:"memory",sessionScoped:!0},{name:"skill",label:"Skill",category:"system",sessionScoped:!0},{name:"lsp",label:"LSP",category:"developer",sessionScoped:!0,deferred:!0}];var VX=[{id:"default",label:"\u9ED8\u8BA4",summary:"\u5DE5\u4F5C\u533A",description:"\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF1B\u8DE8\u533A/\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"auto",label:"\u81EA\u52A8",summary:"\u5E38\u89C4",description:"\u5E38\u89C4\u64CD\u4F5C\u81EA\u52A8\uFF1B\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"full_access",label:"\u5B8C\u5168\u8BBF\u95EE",summary:"\u5168\u653E\u884C",description:"\u672C\u8F6E\u5168\u90E8\u81EA\u52A8\uFF0C\u4E0D\u518D\u786E\u8BA4\u3002"}],ZX=["cross_workspace","high_risk_delete","high_risk_egress","destructive"];function Na(t){return t==="cross_workspace"?[{optionId:"allow",name:"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"allow_dir",name:"\u672C\u4F1A\u8BDD\u5141\u8BB8\u6B64\u76EE\u5F55",kind:"allow_always",scope:"directory"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]:[{optionId:"allow",name:t==="high_risk_delete"?"\u4ECD\u8981\u5220\u9664":t==="high_risk_egress"?"\u4ECD\u8981\u53D1\u9001":"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]}function OD(){let t=Object.fromEntries(ZX.map(e=>[e,Na(e)]));return{modes:VX,promptOptions:t}}import*as gx from"node:fs";import*as qO from"node:os";import*as fx from"node:path";import{execFileSync as ere}from"node:child_process";import{mkdir as JX,readFile as XX,writeFile as YX,unlink as QX}from"node:fs/promises";import{join as jD}from"node:path";import{tmpdir as eY}from"node:os";var tY=8*1024*1024,rY=5*1024*1024*1024;var qS;function Ho(){if(!qS){let t=Math.random().toString(36).slice(2,10);qS=jD(eY(),"qla-tasks",t)}return qS}function LD(t){return jD(Ho(),`${t}.output`)}var Qn=class{taskId;path;stdoutToFile;#e="";#r="";#o=0;#i=0;#t;#s;#n=0;#a=!1;constructor(e,r,n=!1,o=tY){this.taskId=e,this.path=LD(e),this.stdoutToFile=n,this.#t=o,this.#s=r}writeStdout(e){this.#e+=e,this.#i+=e.length,this.#o+=nY(e),this.#d()}writeStderr(e){this.#r+=e}async getStdout(){if(this.stdoutToFile)try{let e=await XX(this.path,"utf-8");return this.#n=Buffer.byteLength(e),e}catch{return""}return this.#e}getStderr(){return this.#r}get outputFileSize(){return this.#n}get outputFileRedundant(){return this.#n<=this.#t}#d(){this.#e.length>this.#t&&this.spillToDisk()}spillToDisk(){this.#e.length!==0&&JX(Ho(),{recursive:!0}).then(()=>YX(this.path,this.#e).catch(()=>{}))}async deleteOutputFile(){try{await QX(this.path)}catch{}}clear(){this.#a||(this.#a=!0,this.#e="",this.#r="",this.#s=null,this.deleteOutputFile())}};function nY(t){let e=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)===10&&e++;return e}import{existsSync as oY}from"node:fs";import{fileURLToPath as iY}from"node:url";import{dirname as sY,join as aY}from"node:path";function UD(t={}){let e=t.exists??oY,r="env"in t?t.env:process.env.QLOGICAGENT_LANDLOCK_HELPER;if(r)return e(r)?r:null;let n;try{n=sY(iY(import.meta.url))}catch{n=process.cwd()}let o=aY(n,"native","landlock-exec");return e(o)?o:null}function zo(){if(process.platform!=="win32")return!1;let t=process.env.QLOGICAGENT_USE_POWERSHELL;return t==="1"||t==="true"}function WS(){return zo()?"powershell":"bash"}function GS(){return Math.floor(Math.random()*65536).toString(16).padStart(4,"0")}import{tmpdir as cY}from"node:os";import{join as lY,posix as KS}from"node:path";function dY(t){return t.replace(/(\d?)>nul\b/gi,(e,r)=>`${r||""}>/dev/null`)}function uY(t){return!(/(?:^|[;&|])\s*<\s/.test(t)||/<<[-]?\s*['"]?[A-Za-z_]/.test(t))}function pY(t,e){return`$'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n")}'${e?" < /dev/null":""}`}function FD(t){return process.platform!=="win32"?t:t.replace(/^([A-Za-z]):/,(e,r)=>`/${r.toLowerCase()}`).replace(/\\/g,"/")}function Tu(t,e){let r=e?.snapshotFilePath;return{type:"bash",shellPath:t,detached:!0,async buildExecCommand(n,o){let i=process.platform==="win32",s=cY(),a=i?FD(s):s,c=o.useSandbox&&o.sandboxTmpDir?KS.join(o.sandboxTmpDir,`cwd-${o.id}`):KS.join(a,`qla-${o.id}-cwd`),l=o.useSandbox&&o.sandboxTmpDir?KS.join(o.sandboxTmpDir,`cwd-${o.id}`):lY(s,`qla-${o.id}-cwd`),u=dY(n),p=uY(u),m=pY(u,p),g=[];if(r){let h=i?FD(r):r;g.push(`source '${h}' 2>/dev/null || true`)}return e?.sessionEnvScript&&g.push(e.sessionEnvScript),g.push(`eval ${m}`),g.push(`pwd -P >| '${c}'`),{commandString:g.join(" && "),cwdFilePath:l}},getSpawnArgs(n){return["-c",...!!r?[]:["-l"],n]},async getEnvironmentOverrides(n){return{GIT_EDITOR:"true",QLOGICAGENT:"1"}}}}import{tmpdir as mY}from"node:os";import{join as gY,posix as fY}from"node:path";function HD(t){return Buffer.from(t,"utf16le").toString("base64")}function hY(t){return["-NoProfile","-NonInteractive","-Command",t]}function VS(t){return{type:"powershell",shellPath:t,detached:!1,async buildExecCommand(e,r){let n=r.useSandbox&&r.sandboxTmpDir?fY.join(r.sandboxTmpDir,`qla-pwd-ps-${r.id}`):gY(mY(),`qla-pwd-ps-${r.id}`),i=["","$_ec = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } elseif ($?) { 0 } else { 1 }",`(Get-Location).Path | Out-File -FilePath '${n.replace(/'/g,"''")}' -Encoding utf8 -NoNewline`,"exit $_ec"].join(`
690
+ `)}],details:{type:"task",action:"get",task:k}}}return{name:qX,label:"Task",description:"Plan and track multi-step work, and monitor background tasks. Checklist actions (numeric id): create, update, delete, list, get \u2014 an in-session plan with dependency tracking (blocks/blockedBy); tasks cannot start until blockers complete. Background actions (string taskId): output (read status + output of a background agent/command), cancel (stop it). Background task ids come from agent(background=true) or exec(background=true); `list` also shows active background tasks. Use frequently during complex work to plan steps, fan out background agents, and show progress.",parameters:KX,searchHint:"manage session task checklist progress tracking dependencies planning background output cancel poll",maxResultSizeChars:1e5,execute:async(v,k)=>{let R=k.action;switch(R){case"create":return g(k);case"update":return f(k);case"delete":return h(k);case"list":return u();case"get":return w(k);case"output":return y(k);case"cancel":return S(k);default:return l(`Unknown action: ${R}. Valid: create, update, delete, list, get, output, cancel.`)}}}}var Ru=[{name:"agent",label:"Agent",description:"Run a scoped sub-agent for delegated investigation, coding, research, or verification.",category:"orchestration",sessionScoped:!0},{name:"team",label:"Team",description:"Create, inspect, or message a coordinated team of session-scoped agents.",category:"orchestration",sessionScoped:!0},{name:"checkpoint",label:"Checkpoint",description:"Create, inspect, or restore workspace checkpoints during a session.",category:"developer",sessionScoped:!0},{name:"config",label:"Config",description:"Read or update session tunables such as model, provider, permissions, and tool settings.",category:"system",sessionScoped:!0},{name:"cron",label:"Cron",description:"Manage scheduled workflow-style tasks that can wake the agent later.",category:"automation",sessionScoped:!0},{name:"monitor",label:"Monitor",description:"Start, stop, or list file and event monitors that notify the session.",category:"automation",sessionScoped:!0},{name:"memory",label:"Memory",description:"Read, write, search, and maintain local project memory for the current session.",category:"memory",sessionScoped:!0},{name:"skill",label:"Skill",description:"Inspect, create, activate, deactivate, or promote reusable local skills.",category:"system",sessionScoped:!0},{name:"lsp",label:"LSP",description:"Query language-server code intelligence such as definitions, references, symbols, and diagnostics.",category:"developer",sessionScoped:!0,deferred:!0}];var VX=[{id:"default",label:"\u9ED8\u8BA4",summary:"\u5DE5\u4F5C\u533A",description:"\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF1B\u8DE8\u533A/\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"auto",label:"\u81EA\u52A8",summary:"\u5E38\u89C4",description:"\u5E38\u89C4\u64CD\u4F5C\u81EA\u52A8\uFF1B\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"full_access",label:"\u5B8C\u5168\u8BBF\u95EE",summary:"\u5168\u653E\u884C",description:"\u672C\u8F6E\u5168\u90E8\u81EA\u52A8\uFF0C\u4E0D\u518D\u786E\u8BA4\u3002"}],ZX=["cross_workspace","high_risk_delete","high_risk_egress","destructive"];function Na(t){return t==="cross_workspace"?[{optionId:"allow",name:"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"allow_dir",name:"\u672C\u4F1A\u8BDD\u5141\u8BB8\u6B64\u76EE\u5F55",kind:"allow_always",scope:"directory"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]:[{optionId:"allow",name:t==="high_risk_delete"?"\u4ECD\u8981\u5220\u9664":t==="high_risk_egress"?"\u4ECD\u8981\u53D1\u9001":"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]}function OD(){let t=Object.fromEntries(ZX.map(e=>[e,Na(e)]));return{modes:VX,promptOptions:t}}import*as gx from"node:fs";import*as qO from"node:os";import*as fx from"node:path";import{execFileSync as ere}from"node:child_process";import{mkdir as JX,readFile as XX,writeFile as YX,unlink as QX}from"node:fs/promises";import{join as jD}from"node:path";import{tmpdir as eY}from"node:os";var tY=8*1024*1024,rY=5*1024*1024*1024;var qS;function Ho(){if(!qS){let t=Math.random().toString(36).slice(2,10);qS=jD(eY(),"qla-tasks",t)}return qS}function LD(t){return jD(Ho(),`${t}.output`)}var Qn=class{taskId;path;stdoutToFile;#e="";#r="";#o=0;#i=0;#t;#s;#n=0;#a=!1;constructor(e,r,n=!1,o=tY){this.taskId=e,this.path=LD(e),this.stdoutToFile=n,this.#t=o,this.#s=r}writeStdout(e){this.#e+=e,this.#i+=e.length,this.#o+=nY(e),this.#d()}writeStderr(e){this.#r+=e}async getStdout(){if(this.stdoutToFile)try{let e=await XX(this.path,"utf-8");return this.#n=Buffer.byteLength(e),e}catch{return""}return this.#e}getStderr(){return this.#r}get outputFileSize(){return this.#n}get outputFileRedundant(){return this.#n<=this.#t}#d(){this.#e.length>this.#t&&this.spillToDisk()}spillToDisk(){this.#e.length!==0&&JX(Ho(),{recursive:!0}).then(()=>YX(this.path,this.#e).catch(()=>{}))}async deleteOutputFile(){try{await QX(this.path)}catch{}}clear(){this.#a||(this.#a=!0,this.#e="",this.#r="",this.#s=null,this.deleteOutputFile())}};function nY(t){let e=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)===10&&e++;return e}import{existsSync as oY}from"node:fs";import{fileURLToPath as iY}from"node:url";import{dirname as sY,join as aY}from"node:path";function UD(t={}){let e=t.exists??oY,r="env"in t?t.env:process.env.QLOGICAGENT_LANDLOCK_HELPER;if(r)return e(r)?r:null;let n;try{n=sY(iY(import.meta.url))}catch{n=process.cwd()}let o=aY(n,"native","landlock-exec");return e(o)?o:null}function zo(){if(process.platform!=="win32")return!1;let t=process.env.QLOGICAGENT_USE_POWERSHELL;return t==="1"||t==="true"}function WS(){return zo()?"powershell":"bash"}function GS(){return Math.floor(Math.random()*65536).toString(16).padStart(4,"0")}import{tmpdir as cY}from"node:os";import{join as lY,posix as KS}from"node:path";function dY(t){return t.replace(/(\d?)>nul\b/gi,(e,r)=>`${r||""}>/dev/null`)}function uY(t){return!(/(?:^|[;&|])\s*<\s/.test(t)||/<<[-]?\s*['"]?[A-Za-z_]/.test(t))}function pY(t,e){return`$'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n")}'${e?" < /dev/null":""}`}function FD(t){return process.platform!=="win32"?t:t.replace(/^([A-Za-z]):/,(e,r)=>`/${r.toLowerCase()}`).replace(/\\/g,"/")}function Tu(t,e){let r=e?.snapshotFilePath;return{type:"bash",shellPath:t,detached:!0,async buildExecCommand(n,o){let i=process.platform==="win32",s=cY(),a=i?FD(s):s,c=o.useSandbox&&o.sandboxTmpDir?KS.join(o.sandboxTmpDir,`cwd-${o.id}`):KS.join(a,`qla-${o.id}-cwd`),l=o.useSandbox&&o.sandboxTmpDir?KS.join(o.sandboxTmpDir,`cwd-${o.id}`):lY(s,`qla-${o.id}-cwd`),u=dY(n),p=uY(u),m=pY(u,p),g=[];if(r){let h=i?FD(r):r;g.push(`source '${h}' 2>/dev/null || true`)}return e?.sessionEnvScript&&g.push(e.sessionEnvScript),g.push(`eval ${m}`),g.push(`pwd -P >| '${c}'`),{commandString:g.join(" && "),cwdFilePath:l}},getSpawnArgs(n){return["-c",...!!r?[]:["-l"],n]},async getEnvironmentOverrides(n){return{GIT_EDITOR:"true",QLOGICAGENT:"1"}}}}import{tmpdir as mY}from"node:os";import{join as gY,posix as fY}from"node:path";function HD(t){return Buffer.from(t,"utf16le").toString("base64")}function hY(t){return["-NoProfile","-NonInteractive","-Command",t]}function VS(t){return{type:"powershell",shellPath:t,detached:!1,async buildExecCommand(e,r){let n=r.useSandbox&&r.sandboxTmpDir?fY.join(r.sandboxTmpDir,`qla-pwd-ps-${r.id}`):gY(mY(),`qla-pwd-ps-${r.id}`),i=["","$_ec = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } elseif ($?) { 0 } else { 1 }",`(Get-Location).Path | Out-File -FilePath '${n.replace(/'/g,"''")}' -Encoding utf8 -NoNewline`,"exit $_ec"].join(`
691
691
  ; `),s=e+i;return{commandString:r.useSandbox?[`'${t.replace(/'/g,"'\\''")}'`,"-NoProfile","-NonInteractive","-EncodedCommand",HD(s)].join(" "):s,cwdFilePath:n}},getSpawnArgs(e){return hY(e)},async getEnvironmentOverrides(e){return{QLOGICAGENT:"1"}}}}var zD=new Set(["find","grep","rg","ag","ack","locate","which","whereis"]),BD=new Set(["cat","head","tail","less","more","wc","stat","file","strings","jq","awk","cut","sort","uniq","tr"]),qD=new Set(["ls","tree","du"]);var WD=new Set(["mv","cp","rm","mkdir","rmdir","chmod","chown","chgrp","touch","ln","cd","export","unset","wait"]);function yY(t){let r=t.replace(/\\\n/g," ").trim().split(/[|;&]/).shift()?.trim()??"";if(!r)return null;let n=r.split(/\s+/),o=0;for(;o<n.length&&/^[A-Za-z_]\w*=/.test(n[o]);)o++;let i=/^(?:timeout|time|nice|nohup|stdbuf|command|builtin|exec)$/;for(;o<n.length;){let c=n[o];if(i.test(c)){for(o++;o<n.length&&/^[-+]/.test(n[o]);)o++;o<n.length&&/^\d+(?:\.\d+)?[smhd]?$/.test(n[o])&&o++;continue}break}if(o>=n.length)return null;let s=n[o],a=s.lastIndexOf("/");return a>=0?s.slice(a+1):s}function GD(t){return/(?:^|[;&|])\s*(?:cd|pushd|popd)\b/.test(t)}function ZS(t){let e=yY(t),r=e!==null&&zD.has(e),n=e!==null&&BD.has(e),o=e!==null&&qD.has(e),i=e!==null&&WD.has(e),s=/(?:[^2]>|^>|\|>)/.test(t),a=GD(t),c=(r||n||o)&&!s&&!a;return{firstCommand:e,isSearch:r,isRead:n,isList:o,isSilent:i,isConcurrencySafe:c,isReadOnly:c}}function JS(t){return/(?:^|[;&|])\s*sleep\s+\d/i.test(t)?"sleep command blocks execution \u2014 use run_in_background: true":/\bwhile\s+(?:true|:|\[\s*1\s*\])\b/.test(t)?"infinite loop \u2014 use run_in_background: true or monitor tool":null}var vY=[{pattern:/\bgit\s+reset\s+--hard\b/,warning:"Note: may discard uncommitted changes"},{pattern:/\bgit\s+push\b[^;&|\n]*[ \t](--force|--force-with-lease|-f)\b/,warning:"Note: may overwrite remote history"},{pattern:/\bgit\s+clean\b(?![^;&|\n]*(?:-[a-zA-Z]*n|--dry-run))[^;&|\n]*-[a-zA-Z]*f/,warning:"Note: may permanently delete untracked files"},{pattern:/\bgit\s+checkout\s+(--\s+)?\.[ \t]*($|[;&|\n])/,warning:"Note: may discard all working tree changes"},{pattern:/\bgit\s+restore\s+(--\s+)?\.[ \t]*($|[;&|\n])/,warning:"Note: may discard all working tree changes"},{pattern:/\bgit\s+stash[ \t]+(drop|clear)\b/,warning:"Note: may permanently remove stashed changes"},{pattern:/\bgit\s+branch\s+(-D[ \t]|--delete\s+--force|--force\s+--delete)\b/,warning:"Note: may force-delete a branch"},{pattern:/\bgit\s+(commit|push|merge)\b[^;&|\n]*--no-verify\b/,warning:"Note: may skip safety hooks"},{pattern:/\bgit\s+commit\b[^;&|\n]*--amend\b/,warning:"Note: may rewrite the last commit"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*[rR][a-zA-Z]*f|(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*f[a-zA-Z]*[rR]/,warning:"Note: may recursively force-remove files"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*[rR]/,warning:"Note: may recursively remove files"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*f/,warning:"Note: may force-remove files"},{pattern:/\b(DROP|TRUNCATE)\s+(TABLE|DATABASE|SCHEMA)\b/i,warning:"Note: may drop or truncate database objects"},{pattern:/\bDELETE\s+FROM\s+\w+[ \t]*(;|"|'|\n|$)/i,warning:"Note: may delete all rows from a database table"},{pattern:/\bkubectl\s+delete\b/,warning:"Note: may delete Kubernetes resources"},{pattern:/\bterraform\s+destroy\b/,warning:"Note: may destroy Terraform infrastructure"}],bY=[{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Recurse\b[^|;&\n}]*-Force\b/i,warning:"Note: may recursively force-remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Force\b[^|;&\n}]*-Recurse\b/i,warning:"Note: may recursively force-remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Recurse\b/i,warning:"Note: may recursively remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Force\b/i,warning:"Note: may force-remove files"},{pattern:/\bClear-Content\b[^|;&\n]*\*/i,warning:"Note: may clear content of multiple files"},{pattern:/\bFormat-Volume\b/i,warning:"Note: may format a disk volume"},{pattern:/\bClear-Disk\b/i,warning:"Note: may clear a disk"},{pattern:/\bgit\s+reset\s+--hard\b/i,warning:"Note: may discard uncommitted changes"},{pattern:/\bgit\s+push\b[^|;&\n]*\s+(--force|--force-with-lease|-f)\b/i,warning:"Note: may overwrite remote history"},{pattern:/\bgit\s+clean\b(?![^|;&\n]*(?:-[a-zA-Z]*n|--dry-run))[^|;&\n]*-[a-zA-Z]*f/i,warning:"Note: may permanently delete untracked files"},{pattern:/\bgit\s+stash\s+(drop|clear)\b/i,warning:"Note: may permanently remove stashed changes"},{pattern:/\b(DROP|TRUNCATE)\s+(TABLE|DATABASE|SCHEMA)\b/i,warning:"Note: may drop or truncate database objects"},{pattern:/\bStop-Computer\b/i,warning:"Note: will shut down the computer"},{pattern:/\bRestart-Computer\b/i,warning:"Note: will restart the computer"},{pattern:/\bClear-RecycleBin\b/i,warning:"Note: permanently deletes recycled files"}];function Oa(t){for(let{pattern:e,warning:r}of vY)if(e.test(t))return r;return null}function ja(t){for(let{pattern:e,warning:r}of bY)if(e.test(t))return r;return null}var kY=t=>({isError:t!==0,message:t!==0?`Command failed with exit code ${t}`:void 0}),SY=new Map([["grep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["rg",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["egrep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["fgrep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["ag",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["find",t=>({isError:t>=2,message:t===1?"Some directories were inaccessible":void 0})],["diff",t=>({isError:t>=2,message:t===1?"Files differ":void 0})],["test",t=>({isError:t>=2,message:t===1?"Condition is false":void 0})],["[",t=>({isError:t>=2,message:t===1?"Condition is false":void 0})],["cmp",t=>({isError:t>=2,message:t===1?"Files differ":void 0})]]);function wY(t){let e=t.trim(),r=e.split(/\s*\|\s*/);return(r[r.length-1]??e).trim().split(/\s+/)[0]??""}function XS(t,e,r,n){let o=wY(t);return(SY.get(o)??kY)(e,r,n)}var YS=137,KD=143,xY=5e3,QS=5*1024*1024*1024,Pu=class{#e;#r;#o;#i=!1;constructor(e,r,n){this.#e=e,this.#r=r,this.#o=n,e.setEncoding("utf-8"),e.on("data",this.#t)}#t=e=>{let r=typeof e=="string"?e:e.toString();this.#o?this.#r.writeStderr(r):this.#r.writeStdout(r)};cleanup(){this.#i||(this.#i=!0,this.#e.removeListener("data",this.#t),this.#e=null,this.#r=null)}},ew=class t{#e="running";#r;#o;#i;#t;#s=null;#n=null;#a=!1;#d;#c;#u;#g;#v;#p=null;#m=null;#l=null;taskOutput;result;onTimeout;constructor(e,r,n,o,i=!1,s=QS){this.#t=e,this.#c=r,this.#g=n,this.#v=i,this.#d=s,this.taskOutput=o,this.#i=e.stderr?new Pu(e.stderr,o,!0):null,this.#o=e.stdout?new Pu(e.stdout,o,!1):null,i&&(this.onTimeout=a=>{this.#u=a}),this.result=this.#T()}get status(){return this.#e}static#k(e){e.#v&&e.#u?e.#u(e.background.bind(e)):e.#y(KD)}#S(){this.#c.reason!=="interrupt"&&this.kill()}#w(e,r){let n=e??(r==="SIGTERM"?144:1);this.#f(n)}#x(){this.#f(1)}#f(e){this.#m&&(this.#m(e),this.#m=null)}#h(){this.#b(),this.#s&&(clearTimeout(this.#s),this.#s=null),this.#l&&(this.#c.removeEventListener("abort",this.#l),this.#l=null)}#b(){this.#n&&(clearInterval(this.#n),this.#n=null)}#R(){this.#n=setInterval(()=>{import("node:fs/promises").then(({stat:e})=>e(this.taskOutput.path).then(r=>{r.size>this.#d&&this.#e==="backgrounded"&&this.#n!==null&&(this.#a=!0,this.#b(),this.#y(YS))},()=>{}))},xY),this.#n.unref?.()}#T(){this.#l=this.#S.bind(this),this.#c.addEventListener("abort",this.#l,{once:!0}),this.#t.once("exit",this.#w.bind(this)),this.#t.once("error",this.#x.bind(this)),this.#s=setTimeout(t.#k,this.#g,this);let e=new Promise(r=>{this.#m=r});return new Promise(r=>{this.#p=r,e.then(this.#P.bind(this))})}async#P(e){this.#h(),(this.#e==="running"||this.#e==="backgrounded")&&(this.#e="completed");let r=await this.taskOutput.getStdout(),n={code:e,stdout:r,stderr:this.taskOutput.getStderr(),interrupted:e===YS,backgroundTaskId:this.#r};this.taskOutput.stdoutToFile&&!this.#r&&(this.taskOutput.outputFileRedundant?this.taskOutput.deleteOutputFile():(n.outputFilePath=this.taskOutput.path,n.outputFileSize=this.taskOutput.outputFileSize)),this.#a?n.stderr=`Background command killed: output file exceeded ${QS} bytes. ${n.stderr}`:e===KD&&(n.stderr=`Command timed out after ${this.#g}ms. ${n.stderr}`),this.#p&&(this.#p(n),this.#p=null)}#y(e){this.#e="killed";let r=this.#t.pid;if(r)try{if(process.platform==="win32")import("node:child_process").then(({execSync:n})=>{try{n(`taskkill /PID ${r} /T /F`,{stdio:"ignore"})}catch{}});else try{process.kill(-r,"SIGKILL")}catch{try{process.kill(r,"SIGKILL")}catch{}}}catch{try{this.#t.kill("SIGKILL")}catch{}}this.#f(e??YS)}kill(){this.#y()}background(e){return this.#e==="running"?(this.#r=e,this.#e="backgrounded",this.#h(),this.taskOutput.stdoutToFile?this.#R():this.taskOutput.spillToDisk(),!0):!1}cleanup(){this.#o?.cleanup(),this.#i?.cleanup(),this.taskOutput.clear(),this.#h(),this.#t=null,this.#c=null,this.#u=void 0}};function tw(t,e,r,n,o=!1,i=QS){return new ew(t,e,r,n,o,i)}function Au(t,e){let r=new Qn(sn("local_bash"),null);return{status:"killed",result:Promise.resolve({code:e?.code??145,stdout:"",stderr:e?.stderr??"Command aborted before execution",interrupted:!0,backgroundTaskId:t}),taskOutput:r,background:()=>!1,kill:()=>{},cleanup:()=>{}}}function rw(t){let e=new Qn(sn("local_bash"),null);return{status:"completed",result:Promise.resolve({code:1,stdout:"",stderr:t,interrupted:!1,preSpawnError:t}),taskOutput:e,background:()=>!1,kill:()=>{},cleanup:()=>{}}}var RY=new Set(["API_KEY","ANTHROPIC_API_KEY","OPENAI_API_KEY","DEEPSEEK_API_KEY","DOUBAO_API_KEY","MINIMAX_API_KEY","GLM_API_KEY","KIMI_API_KEY","QWEN_API_KEY","MOONSHOT_API_KEY","ZHIPU_API_KEY","BAICHUAN_API_KEY","VOLCENGINE_API_KEY","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","AZURE_CLIENT_SECRET","AZURE_CLIENT_ID","AZURE_TENANT_ID","ACTIONS_ID_TOKEN_REQUEST_TOKEN","ACTIONS_RUNTIME_TOKEN","GITHUB_TOKEN","GH_TOKEN","GITLAB_TOKEN","CI_JOB_TOKEN","DATABASE_URL","REDIS_URL","REDIS_PASSWORD"]),TY=["_SECRET","_TOKEN","_PASSWORD","_CREDENTIAL","_API_KEY","SECRET_","TOKEN_","PASSWORD_","CREDENTIAL_","_AUTH_","PRIVATE_KEY"];function nw(){let t={...process.env};for(let e of Object.keys(t))PY(e)&&delete t[e];return t}function PY(t){if(RY.has(t))return!0;let e=t.toUpperCase();for(let r of TY)if(e.includes(r))return!0;return!1}import{spawn as CY}from"node:child_process";import{constants as _u,readFileSync as EY,unlinkSync as MY}from"node:fs";import{mkdir as XD,open as DY,realpath as YD}from"node:fs/promises";import{isAbsolute as $Y,resolve as NY}from"node:path";function AY(t){return`"${t.replaceAll('"','\\"')}"`}function VD(t,e){let r=t.map(n=>` (subpath ${AY(n)})`).join(`
692
692
  `);return["(version 1)","(deny default)","(allow process-fork)","(allow process-exec*)","(allow signal (target self))","(allow sysctl-read)","(allow mach-lookup)","(allow file-read*)",'(allow file-write-data (literal "/dev/null") (literal "/dev/dtracehelper"))','(allow file-write* (subpath "/dev/tty"))','(allow file-write* (subpath "/private/tmp") (subpath "/private/var/tmp"))',t.length?`(allow file-write*
693
693
  ${r})`:"",e==="deny"?"(deny network*)":"(allow network*)",""].filter(Boolean).join(`
@@ -854,7 +854,7 @@ ${u}`}function ste(t){if(!t)return"none";switch(t.type){case"manual":return"manu
854
854
  `)}],details:{type:"file_upload",fileId:n.fileId,url:n.url,filename:n.filename,bytes:n.bytes,provider:n.provider}}}}}var Gte="file_query",Kte={type:"object",properties:{file_id:{type:"string",description:"Query a specific file by ID. If omitted, lists recent uploaded files."},limit:{type:"number",description:"Max number of files to list when file_id is omitted. Default: 10, max: 100."}},required:[]};function $O(t){return{name:Gte,label:"File Query",searchHint:"query list uploaded file material status \u7D20\u6750 \u67E5\u8BE2 \u5DF2\u4E0A\u4F20",description:"Query or list uploaded files from the provider's Files API. Use file_id to get info on a specific file, or omit to list recent uploads. Returns file ID, name, size, status, and URL (if available).",parameters:Kte,execute:async(e,r)=>{if(r.file_id){let s=await t.queryFile({fileId:r.file_id}),a=[`File: ${s.filename}`,`ID: ${s.id}`,`Size: ${ux(s.bytes)}`,`Status: ${s.status}`];return s.url&&a.push(`URL: ${s.url}`),s.createdAt&&a.push(`Created: ${s.createdAt}`),{content:[{type:"text",text:a.join(`
855
855
  `)}],details:{type:"file_query",fileId:s.id}}}let n=Math.min(Math.max(r.limit??10,1),100),o=await t.listFiles({limit:n});if(o.length===0)return{content:[{type:"text",text:"No uploaded files found."}],details:{type:"file_query",count:0}};let i=[`Found ${o.length} file(s):
856
856
  `];for(let s of o)i.push(`- ${s.filename} | ID: ${s.id} | ${ux(s.bytes)} | ${s.status}${s.url?` | ${s.url}`:""}`);return{content:[{type:"text",text:i.join(`
857
- `)}],details:{type:"file_query",count:o.length}}}}}var Vte="file_delete",Zte={type:"object",properties:{file_id:{type:"string",description:"ID of the uploaded file to delete."}},required:["file_id"]};function NO(t){return{name:Vte,label:"File Delete",isDelete:!0,searchHint:"delete remove uploaded file material \u7D20\u6750 \u5220\u9664 \u6E05\u7406\u4E0A\u4F20",description:"Delete a previously uploaded file from the provider's Files API. Use the file ID returned by file_upload or file_query.",parameters:Zte,execute:async(e,r)=>(await t.deleteFile({fileId:r.file_id}),{content:[{type:"text",text:`Deleted file ${r.file_id}`}],details:{type:"file_delete",fileId:r.file_id}})}}function ux(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}import*as gs from"node:fs";import*as Sp from"node:path";function Jte(t){return"user_data"}function Xte(t={}){let e=t.createGeminiFileApi??a0,r=t.isVolcengineFileTransport??s0,n=a=>{if(a.mediaClient)for(let[,c]of Object.entries(a.mediaProviders)){if(!c)continue;let l=a.mediaClient.getTransport(c.provider),u=ro(a.mediaApiKeys,c.provider);if(r(l)&&u)return{id:c.provider,type:"volcengine"}}if(a.mediaApiKeys.google)return{id:"google",type:"gemini"}},o=a=>{let c=n(a);if(!c)throw new Error("No file API provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).");return c},i=(a,c)=>{let l=a.mediaClient?.getTransport(c);if(!r(l))throw new Error(`File API only supported via Volcengine or Google provider. Current: ${c}`);return l},s=(a,c)=>{let l=ro(a.mediaApiKeys,c);if(!l)throw new Error(`No API key for file API provider: ${c}`);return l};return{resolveProvider:n,uploadFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let f=e(),h=a.mediaApiKeys.google,y=await f.uploadFile(c.buffer,h,{mimeType:c.mimeType,displayName:c.filename}),S=y.state==="PROCESSING"?await f.waitForProcessing(y.name,h):y;return{fileId:S.name,url:S.uri,filename:c.filename,bytes:c.bytes,provider:"google"}}let u=i(a,l.id),p=s(a,l.id),m=await u.uploadFile(new Blob([c.buffer]),p,{purpose:Jte(c.purpose),filename:c.filename}),g=m.url??m.fileId??m.id;try{let f=await u.getFile(m.id,p);typeof f.url=="string"&&f.url&&(g=f.url)}catch{}return{fileId:m.id,url:g,filename:c.filename,bytes:c.bytes,provider:l.id}},queryFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let m=await e().getFile(c,a.mediaApiKeys.google);return OO(m)}let p=await i(a,l.id).getFile(c,s(a,l.id));return jO(p,c)},listFiles:async(a,c)=>{let l=o(a);return l.type==="gemini"?(await e().listFiles(a.mediaApiKeys.google,{pageSize:c})).files.map(OO):((await i(a,l.id).listFiles(s(a,l.id),{limit:c})).data??[]).map(m=>jO(m))},deleteFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){await e().deleteFile(c,a.mediaApiKeys.google);return}await i(a,l.id).deleteFile(c,s(a,l.id))}}}var px=Xte();function OO(t){return{id:t.name,filename:t.displayName??"",bytes:Number(t.sizeBytes??0),status:t.state?.toLowerCase()??"unknown",createdAt:t.createTime,url:t.uri}}function jO(t,e=""){return{id:String(t.id??e),filename:String(t.filename??""),bytes:Number(t.bytes??0),status:String(t.status??"unknown"),createdAt:t.created_at?String(t.created_at):void 0,url:t.url?String(t.url):void 0}}function LO(t){let e=t.maxUploadBytes??104857600,r=t.mediaFileApiService??px;return{isAvailable:()=>UO(t.getContext(),r),uploadFile:async n=>{kp(t.getContext(),r,"upload");let o=t.resolvePath(n.filePath);if(!gs.existsSync(o))throw new Error(`File not found: ${o}`);let i=gs.statSync(o);if(i.size>e)throw new Error(`File too large (${(i.size/1024/1024).toFixed(1)} MB). Max: ${(e/1024/1024).toFixed(0)} MB.`);let s=await gs.promises.readFile(o),a=Sp.basename(o),c=Sp.extname(o).toLowerCase();return r.uploadFile(t.getContext(),{buffer:Buffer.from(s),filename:a,bytes:i.size,mimeType:Yte[c]??"application/octet-stream",purpose:n.purpose??"media_reference"})},queryFile:async n=>(kp(t.getContext(),r,"query"),r.queryFile(t.getContext(),n.fileId)),listFiles:async n=>(kp(t.getContext(),r,"list"),r.listFiles(t.getContext(),n.limit??10)),deleteFile:async n=>{kp(t.getContext(),r,"delete"),await r.deleteFile(t.getContext(),n.fileId)}}}function UO(t,e=px){return!!e.resolveProvider(t)}function kp(t,e,r){if(!UO(t,e))throw new Error(`No file ${r} provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).`)}var Yte={".pdf":"application/pdf",".txt":"text/plain",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".ts":"text/plain",".json":"application/json",".xml":"application/xml",".csv":"text/csv",".md":"text/markdown",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".svg":"image/svg+xml",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};var zO={id:"local-media-tools",kind:"media",register:Qte};function Qte(t){let e=t.tools;e.push({...r$({generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,n:n.n,quality:n.quality,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("image")}),e.push({...A$({resolveOutputDir:n=>{let o=n?.trim()?FO(t,n):HO.join(t.activeProjectRoot(),".qlogicagent","petdex-assets"),i=Zt(o);if(i)throw new Error(i);return o},generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,referenceImages:n.referenceImages?.map(i=>i.imageUrl),n:n.n,quality:n.quality});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isEnabled:()=>Yu("image","img2img")}),e.push({...n$({textToSpeech:async n=>{let o=await Et({mediaType:"tts",model:"",prompt:"",text:n.text,channel:n.channel,voice:n.voice,speed:n.speed});return{audioPath:"",provider:o.model,mediaUrls:o.mediaUrls}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("tts")}),e.push({...o$({generateVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,imageUrl:n.imageUrl,referenceVideos:n.referenceVideos,referenceAudios:n.referenceAudios,generateAudio:n.generateAudio,aspectRatio:n.aspectRatio,duration:n.duration,resolution:n.resolution,fps:n.fps,seed:n.seed,cameraFixed:n.cameraFixed,returnLastFrame:n.returnLastFrame,draft:n.draft,serviceTier:n.serviceTier,callbackUrl:n.callbackUrl,safetyIdentifier:n.safetyIdentifier,executionExpiresAfterSeconds:n.executionExpiresAfterSeconds,videoTools:n.videoTools});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,lastFrameUrl:o.lastFrameUrl,taskId:o.taskId}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("video")}),e.push({...i$({generateMusic:async n=>{let o=await Et({mediaType:"music",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,lyrics:n.lyrics,duration:n.duration,isInstrumental:n.isInstrumental,audioUrl:n.audioUrl,audioFormat:n.audioFormat});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}},generateLyrics:m0}),isConcurrencySafe:!0,isEnabled:()=>Mt("music")}),e.push({...PO({editVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,operation:"edit",sourceVideos:n.sourceVideos,referenceImages:n.referenceImages,duration:n.duration,aspectRatio:n.aspectRatio,resolution:n.resolution});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Xu("video","edit")}),e.push({...AO({mergeVideos:async n=>{let o=[`merge ${n.clips.length} clips`];n.transition&&o.push(`transition: ${n.transition}${n.transitionDuration?` (${n.transitionDuration}s)`:""}`),n.subtitles&&o.push(`burn-in subtitles: ${n.subtitles}`),n.bgm&&o.push(`background music: ${n.bgm}${n.bgmVolume!==void 0?` at volume ${n.bgmVolume}`:""}`);let i=await Et({mediaType:"video",model:"",prompt:o.join("; "),operation:"merge",sourceVideos:n.clips.map(s=>s.video),resolution:n.outputResolution,fps:n.outputFps});return{localPath:"",servePath:i.mediaUrls[0]??"",durationSec:(i.durationMs??0)/1e3,clipCount:n.clips.length,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","merge")}),e.push({...IO({upscaleVideo:async n=>{let o=["upscale"];n.sharpness&&o.push(`sharpness: ${n.sharpness}`);let i=await Et({mediaType:"video",model:"",prompt:o.join(", "),operation:"upscale",sourceVideos:[n.video],resolution:n.targetResolution??"1080p"});return{localPath:"",servePath:i.mediaUrls[0]??"",resolution:n.targetResolution??"1080p",durationSec:(i.durationMs??0)/1e3,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","upscale")}),e.push({..._O({generate3D:async n=>{let o=await Et({mediaType:"3d",model:"",prompt:n.prompt,imageUrl:n.imageUrl,outputFormat:n.outputFormat,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,metadata:o.metadata}}}),isConcurrencySafe:!0,shouldDefer:!0,isEnabled:()=>Mt("3d")}),e.push({...CO({speechToText:async n=>{let o=await Et({mediaType:"stt",model:"",prompt:"",audioUrl:n.audioUrl,metadata:n.language?{language:n.language}:void 0});return{transcription:o.metadata?.transcription??"",model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("stt")}),e.push({...EO({cloneVoice:async n=>{let o=await Et({mediaType:"voice_clone",model:"",prompt:"",text:n.text,audioUrl:n.sampleAudioUrl,speed:n.speed});return{mediaUrls:o.mediaUrls,model:o.model,voiceId:o.metadata?.voiceId,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("voice_clone")}),e.push({...MO({cancelTask:g0}),shouldDefer:!0,isEnabled:()=>Mt("video")||Mt("3d")});let r=LO({getContext:Ju,resolvePath:n=>FO(t,n)});e.push({...DO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...$O(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...NO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()})}function FO(t,e){return Wa(e,t.getCwd())}var WO=null;function GO(t){WO=t}function tre(){if(process.platform!=="darwin")return!1;try{return ere("which",["sandbox-exec"],{stdio:"ignore"}),!0}catch{return!1}}function rre(){let t=WO?.();if(!t)return;let e=qO.tmpdir();return{mode:t.mode,workdir:t.workdir,allowedDirs:t.communityTurn?[]:t.allowedDirs,bookkeepingDirs:[Ho(),e],tmpDir:fx.join(e,"qla-sandbox"),helperPath:UD(),sandboxExecAvailable:tre(),netPolicy:t.communityTurn?"deny":"allow"}}var KO=null,VO;function ZO(t){VO=t}var JO=null;function XO(t){JO=t}function YO(t){KO=t}function QO(t){Eu(t)}function mx(){return ye()?.workspaceDir??Br()}var BO=!1;function nre(){if(!BO)if(BO=!0,zo()){let t=process.env.QLOGICAGENT_POWERSHELL_PATH??"powershell.exe";La(VS(t))}else if(process.platform==="win32"){let t=ore();La(Tu(t))}else{let t=process.env.SHELL?.endsWith("bash")?process.env.SHELL:"/bin/bash";La(Tu(t))}}function ore(){let t=process.env.QLOGICAGENT_BASH_PATH;if(t&&gx.existsSync(t))return t;let e=["C:\\Program Files\\Git\\bin\\bash.exe","C:\\Program Files (x86)\\Git\\bin\\bash.exe"],r=process.env.ProgramFiles?fx.join(process.env.ProgramFiles,"Git","bin","bash.exe"):null;r&&!e.includes(r)&&e.unshift(r);for(let n of e)if(gx.existsSync(n))return n;return"bash"}var ire={task:"orchestration",ask_user:"orchestration",exec:"developer",read:"filesystem",write:"filesystem",edit:"filesystem",patch:"filesystem",search:"search",web_fetch:"web",web_search:"web",web_answer:"web",web_research:"web",instructions:"filesystem",worktree:"developer",notebook_edit:"developer",workflow:"automation",sleep:"automation",tool_search:"search",[Ua]:"media",[vw]:"media",tts:"media",[Fa]:"media",[Ha]:"media",video_edit:"media",video_merge:"media",video_upscale:"media",three_d_generate:"media",stt:"media",voice_clone:"media",media_cancel:"media",file_upload:"filesystem",file_query:"filesystem",file_delete:"filesystem"};function sre(t){for(let e of t)e.category??=ire[e.name]??"other",e.displayName??={key:`capability.tool.${e.name}.name`,fallback:e.label},e.displayDescription??={key:`capability.tool.${e.name}.description`,fallback:""}}function ej(t){let e=t?.toolCatalog??Bo(),r=()=>e.getToolNames(),n=s=>e.findTool(s),o=s=>e.activateTool(s);nre(),t?.workdir&&Eu(t.workdir);let i=[];return AN.register({tools:i,taskToolHooks:VO,backgroundTaskRuntime:JO,askUserCallback:KO,onExecProgress:t?.onExecProgress,getCwd:Br,activeProjectRoot:mx,resolveSandboxConfig:rre,pathService:t?.pathService,log:t?.log,listToolNames:r,findRegisteredTool:n,activateRegisteredTool:o}),X0.register({tools:i,resolveClientForPurpose:t?.resolveClientForPurpose}),TO.register({tools:i,activeProjectRoot:mx}),zO.register({tools:i,getCwd:Br,activeProjectRoot:mx}),sre(i),e.setTools(i),t?.log?.info(`[tool-bootstrap] Registered ${i.length} local tools (${i.filter(s=>s.isEnabled?.()!==!1).length} enabled): ${r().join(", ")}`),i}function Wr(t){return O$(t)}function tj(t){return{getAllBaseTools:e=>ej({...e,toolCatalog:e?.toolCatalog??t}),setWorkdir:QO}}var are=new Set(Ru.map(t=>t.name)),cre=new Map(Ru.map(t=>[t.name,t])),lre=new Set(["permissionMode","permissionRules","defaultBehavior"]);function nj(t){let e=t.params;this.syncToolListMediaConfig?.();let r=this.toolCatalog??Wr(),o=(e?.includeUnavailable?r.getToolNames().flatMap(s=>{let a=r.findTool(s);return a?[{type:"function",function:{name:a.name,description:a.description,parameters:a.parameters}}]:[]}):r.getToolManifest(e?.includeDeferred??!1)).map(s=>{let a=r.findTool(s.function.name),c=cre.get(s.function.name)?.category??a?.category??"other";return{id:s.function.name,name:s.function.name,category:c,displayName:a?.displayName??{key:`capability.tool.${s.function.name}.name`,fallback:a?.label??s.function.name},displayDescription:a?.displayDescription??{key:`capability.tool.${s.function.name}.description`,fallback:""},fallbackName:a?.label??s.function.name,fallbackDescription:"",description:s.function.description??"",parameters:s.function.parameters,deferred:!!a?.shouldDefer,enabled:a?.isEnabled?.()!==!1,sessionScoped:are.has(s.function.name)||s.function.name.startsWith("mcp__"),source:"builtin"}}),i=new Set(o.map(s=>s.name));for(let s of Ru)i.has(s.name)||o.push({id:s.name,name:s.name,category:s.category,displayName:{key:`capability.tool.${s.name}.name`,fallback:s.label},displayDescription:{key:`capability.tool.${s.name}.description`,fallback:""},fallbackName:s.label,fallbackDescription:"",description:"",parameters:{type:"object",properties:{}},deferred:s.deferred??!1,enabled:!0,sessionScoped:!0,source:"builtin"});if(e?.category){let s=o.filter(a=>a.category===e.category);t.id!==void 0&&this.sendResponse(t.id,{tools:s,total:s.length})}else t.id!==void 0&&this.sendResponse(t.id,{tools:o,total:o.length})}function oj(t){let e=z().listProviderDefs(),r=new Map;for(let o of e){let i=o.group??o.id;r.has(i)||r.set(i,[]);let s=!!z().resolveProviderApiKey(o.id);r.get(i).push({id:o.id,name:o.name,transport:o.transport,baseUrl:o.baseUrl,defaultModel:o.defaultModel,modelCount:o.models?.length??0,available:s})}let n=[...r.entries()].map(([o,i])=>({group:o,variants:i}));t.id!==void 0&&this.sendResponse(t.id,{providers:n})}function ij(t){try{let r=z().exportConfig(),n=ut(),o={};try{o=JSON.parse(Ko.readFileSync(n,"utf-8"))}catch{}t.id!==void 0&&this.sendResponse(t.id,{config:{...dre(o),providers:pre(r.providers),models:r.models,bindings:r.bindings,permissions:cj(o.permissions)},paths:{userSettings:ut(),agentHome:ae()},permissionModel:OD()})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}function dre(t){let e={};for(let[r,n]of Object.entries(t)){if(yx.has(r)||lre.has(r))continue;let o=hx(r,n);o!==void 0&&(e[r]=o)}return e}function hx(t,e){if(ure(t))return typeof e=="string"?sj(e):"[REDACTED]";if(Array.isArray(e))return e.map(r=>hx(t,r));if(e&&typeof e=="object"){let r={};for(let[n,o]of Object.entries(e)){if(yx.has(n))continue;let i=hx(n,o);i!==void 0&&(r[n]=i)}return r}return e}function ure(t){return/(?:apiKey|key|token|secret|credential|authorization|password)/i.test(t)}function pre(t){return t.map(e=>({providerId:e.providerId,baseUrl:e.baseUrl,strategy:e.strategy,keys:e.keys.map(r=>{let n={id:r.id,maskedKey:sj(r.key),weight:r.weight,enabled:r.enabled};return r.label&&(n.label=r.label),n}),...e.rateLimit?{rateLimit:e.rateLimit}:{}}))}function sj(t){return t.length<=8?"****":`${t.slice(0,3)}***${t.slice(-4)}`}var yx=new Set(["providers","models","bindings","provider","model","apiKey","baseUrl","providerKeys"]);async function aj(t){let e=t.params;if(!e?.updates||typeof e.updates!="object"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"updates (object) is required."});return}let r=[],n={};for(let[o,i]of Object.entries(e.updates))yx.has(o)?r.push({key:o,reason:"Use settings.* RPC methods for model/key management"}):n[o]=o==="permissions"?cj(i):i;if(r.length>0&&Object.keys(n).length===0){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:`Rejected keys: ${r.map(o=>o.key).join(", ")}. Use settings.* RPC for model management.`});return}try{let o=ut(),i={};try{let s=await Ko.promises.readFile(o,"utf-8");i=JSON.parse(s)}catch{}Object.assign(i,n),await Ko.promises.mkdir(rj.dirname(o),{recursive:!0}),await Ko.promises.writeFile(o,JSON.stringify(i,null,2),"utf-8"),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,applied:Object.keys(n),rejected:r})}catch(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:o instanceof Error?o.message:String(o)})}}function cj(t){if(!t||typeof t!="object")return;let e=t.mode;if(e==="default"||e==="auto"||e==="full_access")return{mode:e}}function lj(t){try{let e=fr(),r=ut(),n={};try{let o=Ko.readFileSync(r,"utf-8"),i=JSON.parse(o);i.tunables&&typeof i.tunables=="object"&&(n=i.tunables)}catch{}t.id!==void 0&&this.sendResponse(t.id,{defaults:e,overrides:n})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function dj(t){let e=t.params,r=e?.key,n=e?.value;if(!r||typeof r!="string"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"Missing required param: key (string)"});return}let o=wu(r,n);if(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:o});return}try{await xu(ut(),r,n),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,key:r,value:n})}catch(i){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:i instanceof Error?i.message:String(i)})}}async function uj(t){let e=(this.toolCatalog??Wr()).findTool("task");if(!e||typeof e.execute!="function"){t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:$a([])});return}try{let o=(await e.execute("rpc-todos-list",{action:"list"},void 0)).details?.taskList??[];t.id!==void 0&&this.sendResponse(t.id,{items:o,summary:$a(o)})}catch{t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:$a([])})}}function pj(t){let r=t.params?.lifecycle??"all",n=this.taskStore.getAllTasks(),o=r==="all"?n:n.filter(i=>i.lifecycle===r);t.id!==void 0&&this.sendResponse(t.id,{tasks:o.map(i=>({taskId:i.taskId,type:i.type,lifecycle:i.lifecycle,label:i.label}))})}function mj(t){let e=t.params;if(!e?.taskId){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"taskId is required."});return}let n=this.taskStore.getAllTasks().find(i=>i.taskId===e.taskId);if(!n){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} not found.`});return}if(n.lifecycle!=="running"&&n.lifecycle!=="pending"){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} is already ${n.lifecycle}.`});return}let o=this.backgroundTasks.cancelTask(e.taskId);t.id!==void 0&&this.sendResponse(t.id,o?{ok:!0,message:`Task ${e.taskId} cancelled.`}:{ok:!1,message:`Task ${e.taskId} could not be cancelled.`})}var gj=["initialize","thread.create","thread.list","session.resume","session.getInfo","session.getMessages","memory.list","memory.read","memory.write","memory.search","memory.delete","memory.dream","tools.list","media.listModels","config.get","config.update","community.getConsent","community.setConsent","community.matchRegistry","community.listShared","community.withdrawShared","community.withdrawAllShared","community.listNotices","community.markNoticeRead","community.listPublishAudit","community.resolveInstall","community.installResource","community.publishSkill","community.publishPet","community.recordSignal","community.recordTelemetry","todos.list","tasks.list","tasks.cancel","agent.ping","agents.scan","agents.list","agents.config","agents.setConfig","agents.getConfig","agents.removeConfig","agents.setGateway","solo.start","solo.status","solo.cancel","solo.select","solo.list","solo.delete","solo.message","solo.evaluate","product.plan","product.confirm","product.message","product.create","product.resume","product.pause","product.checkpoint","product.status","product.list","product.delete","product.cancel","product.rollback","project.create","project.list","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","session.switchProject","session.getState","session.create","session.list","session.get","session.update","session.delete","session.archive","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","settings.listProviders","settings.addKey","settings.removeKey","settings.getKey","settings.toggleKey","settings.listModels","settings.setActiveModel","settings.getActiveModel","settings.getOverview","settings.refreshModels","settings.validateKey"];function fj(t){let e=t.params,r=e?.protocolVersion??"unknown",n=e?.host?.name??e?.hostName??"unknown",o=e?.host?.version??e?.hostVersion??"?",i=r.split(".")[0],s=vo.split(".")[0];if(i!==s){this.log(`[initialize] protocol mismatch: host=${r} agent=${vo}`),t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.PROTOCOL_MISMATCH,message:`Protocol version mismatch: host=${r}, agent=${vo}`});return}this.log(`[initialize] host=${n} v${o}`),t.id!==void 0&&this.sendResponse(t.id,{protocolVersion:vo,agent:{name:"qlogicagent",version:"0.1.0"},capabilities:{tools:this.toolCatalog.getToolManifest().map(a=>a.function.name),streaming:!0,threads:!0,notifications:["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.plan_update","turn.suggestions","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.media_result","turn.todos_updated","task.updated","turn.exec_progress","turn.artifact","tool.approval.request","turn.skill_instruction","turn.ask_user","memory.updated","session.info","permission.rule_updated","team.updated","turn.usage_update","pong"],methods:[...gj]}}),this.ensureDefaultProject()}function hj(t){t.id!==void 0&&this.sendResponse(t.id,{status:"ok"}),this.sendNotification("pong",{})}function yj(t){t.id!==void 0&&this.sendResponse(t.id,{ok:!0,status:this.running?"healthy":"stopping",uptimeMs:Date.now()-this.startedAt,protocolVersion:vo,version:this.packageVersion})}function vj(t){t.id!==void 0&&this.sendResponse(t.id,{rpc:this.rpcContract.metrics()})}function bj(t){let e=t.params,r=e?.requestId,n=typeof r=="string"?this.rpcContract.cancel(r,e?.reason??"host-cancelled"):!1;n&&this.activeTurn&&this.activeTurn.abort(),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,cancelled:n})}import*as Se from"node:fs";import*as vt from"node:path";se();Ge();import Dt from"node:fs";import Xa from"node:path";var kj=mg,Sj=gg,wp=class{dir;constructor(e){this.dir=mo(e)}list(){if(!Dt.existsSync(this.dir))return[];let e=[];for(let r of Dt.readdirSync(this.dir)){if(!r.endsWith(".md"))continue;let n=Xa.join(this.dir,r);try{let o=Dt.statSync(n);if(!o.isFile())continue;let i=Dt.readFileSync(n,"utf8");e.push({filename:r,content:i,sizeBytes:o.size})}catch{}}return e}read(e){if(!this.isValidFilename(e))return null;let r=Xa.join(this.dir,e);if(!Dt.existsSync(r))return null;try{let n=Dt.readFileSync(r,"utf8"),o=Dt.statSync(r);return{filename:e,content:n,sizeBytes:o.size}}catch{return null}}write(e,r){if(!this.isValidFilename(e))throw new Error("Invalid filename: must end with .md and contain no path separators");let n=Buffer.byteLength(r,"utf8");if(n>kj)throw new Error(`File too large: ${n} bytes exceeds ${kj} limit`);if(this.getDirSize(e)+n>Sj)throw new Error(`Total instructions size would exceed ${Sj} byte limit`);Dt.mkdirSync(this.dir,{recursive:!0});let i=Xa.join(this.dir,e);return Dt.writeFileSync(i,r,"utf8"),{filename:e,content:r,sizeBytes:n}}remove(e){if(!this.isValidFilename(e))return!1;let r=Xa.join(this.dir,e);return Dt.existsSync(r)?(Dt.unlinkSync(r),!0):!1}loadAll(){let e=this.list();return e.length===0?"":`<project-instructions>
857
+ `)}],details:{type:"file_query",count:o.length}}}}}var Vte="file_delete",Zte={type:"object",properties:{file_id:{type:"string",description:"ID of the uploaded file to delete."}},required:["file_id"]};function NO(t){return{name:Vte,label:"File Delete",isDelete:!0,searchHint:"delete remove uploaded file material \u7D20\u6750 \u5220\u9664 \u6E05\u7406\u4E0A\u4F20",description:"Delete a previously uploaded file from the provider's Files API. Use the file ID returned by file_upload or file_query.",parameters:Zte,execute:async(e,r)=>(await t.deleteFile({fileId:r.file_id}),{content:[{type:"text",text:`Deleted file ${r.file_id}`}],details:{type:"file_delete",fileId:r.file_id}})}}function ux(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}import*as gs from"node:fs";import*as Sp from"node:path";function Jte(t){return"user_data"}function Xte(t={}){let e=t.createGeminiFileApi??a0,r=t.isVolcengineFileTransport??s0,n=a=>{if(a.mediaClient)for(let[,c]of Object.entries(a.mediaProviders)){if(!c)continue;let l=a.mediaClient.getTransport(c.provider),u=ro(a.mediaApiKeys,c.provider);if(r(l)&&u)return{id:c.provider,type:"volcengine"}}if(a.mediaApiKeys.google)return{id:"google",type:"gemini"}},o=a=>{let c=n(a);if(!c)throw new Error("No file API provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).");return c},i=(a,c)=>{let l=a.mediaClient?.getTransport(c);if(!r(l))throw new Error(`File API only supported via Volcengine or Google provider. Current: ${c}`);return l},s=(a,c)=>{let l=ro(a.mediaApiKeys,c);if(!l)throw new Error(`No API key for file API provider: ${c}`);return l};return{resolveProvider:n,uploadFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let f=e(),h=a.mediaApiKeys.google,y=await f.uploadFile(c.buffer,h,{mimeType:c.mimeType,displayName:c.filename}),S=y.state==="PROCESSING"?await f.waitForProcessing(y.name,h):y;return{fileId:S.name,url:S.uri,filename:c.filename,bytes:c.bytes,provider:"google"}}let u=i(a,l.id),p=s(a,l.id),m=await u.uploadFile(new Blob([c.buffer]),p,{purpose:Jte(c.purpose),filename:c.filename}),g=m.url??m.fileId??m.id;try{let f=await u.getFile(m.id,p);typeof f.url=="string"&&f.url&&(g=f.url)}catch{}return{fileId:m.id,url:g,filename:c.filename,bytes:c.bytes,provider:l.id}},queryFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let m=await e().getFile(c,a.mediaApiKeys.google);return OO(m)}let p=await i(a,l.id).getFile(c,s(a,l.id));return jO(p,c)},listFiles:async(a,c)=>{let l=o(a);return l.type==="gemini"?(await e().listFiles(a.mediaApiKeys.google,{pageSize:c})).files.map(OO):((await i(a,l.id).listFiles(s(a,l.id),{limit:c})).data??[]).map(m=>jO(m))},deleteFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){await e().deleteFile(c,a.mediaApiKeys.google);return}await i(a,l.id).deleteFile(c,s(a,l.id))}}}var px=Xte();function OO(t){return{id:t.name,filename:t.displayName??"",bytes:Number(t.sizeBytes??0),status:t.state?.toLowerCase()??"unknown",createdAt:t.createTime,url:t.uri}}function jO(t,e=""){return{id:String(t.id??e),filename:String(t.filename??""),bytes:Number(t.bytes??0),status:String(t.status??"unknown"),createdAt:t.created_at?String(t.created_at):void 0,url:t.url?String(t.url):void 0}}function LO(t){let e=t.maxUploadBytes??104857600,r=t.mediaFileApiService??px;return{isAvailable:()=>UO(t.getContext(),r),uploadFile:async n=>{kp(t.getContext(),r,"upload");let o=t.resolvePath(n.filePath);if(!gs.existsSync(o))throw new Error(`File not found: ${o}`);let i=gs.statSync(o);if(i.size>e)throw new Error(`File too large (${(i.size/1024/1024).toFixed(1)} MB). Max: ${(e/1024/1024).toFixed(0)} MB.`);let s=await gs.promises.readFile(o),a=Sp.basename(o),c=Sp.extname(o).toLowerCase();return r.uploadFile(t.getContext(),{buffer:Buffer.from(s),filename:a,bytes:i.size,mimeType:Yte[c]??"application/octet-stream",purpose:n.purpose??"media_reference"})},queryFile:async n=>(kp(t.getContext(),r,"query"),r.queryFile(t.getContext(),n.fileId)),listFiles:async n=>(kp(t.getContext(),r,"list"),r.listFiles(t.getContext(),n.limit??10)),deleteFile:async n=>{kp(t.getContext(),r,"delete"),await r.deleteFile(t.getContext(),n.fileId)}}}function UO(t,e=px){return!!e.resolveProvider(t)}function kp(t,e,r){if(!UO(t,e))throw new Error(`No file ${r} provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).`)}var Yte={".pdf":"application/pdf",".txt":"text/plain",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".ts":"text/plain",".json":"application/json",".xml":"application/xml",".csv":"text/csv",".md":"text/markdown",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".svg":"image/svg+xml",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};var zO={id:"local-media-tools",kind:"media",register:Qte};function Qte(t){let e=t.tools;e.push({...r$({generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,n:n.n,quality:n.quality,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("image")}),e.push({...A$({resolveOutputDir:n=>{let o=n?.trim()?FO(t,n):HO.join(t.activeProjectRoot(),".qlogicagent","petdex-assets"),i=Zt(o);if(i)throw new Error(i);return o},generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,referenceImages:n.referenceImages?.map(i=>i.imageUrl),n:n.n,quality:n.quality});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isEnabled:()=>Yu("image","img2img")}),e.push({...n$({textToSpeech:async n=>{let o=await Et({mediaType:"tts",model:"",prompt:"",text:n.text,channel:n.channel,voice:n.voice,speed:n.speed});return{audioPath:"",provider:o.model,mediaUrls:o.mediaUrls}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("tts")}),e.push({...o$({generateVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,imageUrl:n.imageUrl,referenceVideos:n.referenceVideos,referenceAudios:n.referenceAudios,generateAudio:n.generateAudio,aspectRatio:n.aspectRatio,duration:n.duration,resolution:n.resolution,fps:n.fps,seed:n.seed,cameraFixed:n.cameraFixed,returnLastFrame:n.returnLastFrame,draft:n.draft,serviceTier:n.serviceTier,callbackUrl:n.callbackUrl,safetyIdentifier:n.safetyIdentifier,executionExpiresAfterSeconds:n.executionExpiresAfterSeconds,videoTools:n.videoTools});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,lastFrameUrl:o.lastFrameUrl,taskId:o.taskId}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("video")}),e.push({...i$({generateMusic:async n=>{let o=await Et({mediaType:"music",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,lyrics:n.lyrics,duration:n.duration,isInstrumental:n.isInstrumental,audioUrl:n.audioUrl,audioFormat:n.audioFormat});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}},generateLyrics:m0}),isConcurrencySafe:!0,isEnabled:()=>Mt("music")}),e.push({...PO({editVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,operation:"edit",sourceVideos:n.sourceVideos,referenceImages:n.referenceImages,duration:n.duration,aspectRatio:n.aspectRatio,resolution:n.resolution});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Xu("video","edit")}),e.push({...AO({mergeVideos:async n=>{let o=[`merge ${n.clips.length} clips`];n.transition&&o.push(`transition: ${n.transition}${n.transitionDuration?` (${n.transitionDuration}s)`:""}`),n.subtitles&&o.push(`burn-in subtitles: ${n.subtitles}`),n.bgm&&o.push(`background music: ${n.bgm}${n.bgmVolume!==void 0?` at volume ${n.bgmVolume}`:""}`);let i=await Et({mediaType:"video",model:"",prompt:o.join("; "),operation:"merge",sourceVideos:n.clips.map(s=>s.video),resolution:n.outputResolution,fps:n.outputFps});return{localPath:"",servePath:i.mediaUrls[0]??"",durationSec:(i.durationMs??0)/1e3,clipCount:n.clips.length,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","merge")}),e.push({...IO({upscaleVideo:async n=>{let o=["upscale"];n.sharpness&&o.push(`sharpness: ${n.sharpness}`);let i=await Et({mediaType:"video",model:"",prompt:o.join(", "),operation:"upscale",sourceVideos:[n.video],resolution:n.targetResolution??"1080p"});return{localPath:"",servePath:i.mediaUrls[0]??"",resolution:n.targetResolution??"1080p",durationSec:(i.durationMs??0)/1e3,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","upscale")}),e.push({..._O({generate3D:async n=>{let o=await Et({mediaType:"3d",model:"",prompt:n.prompt,imageUrl:n.imageUrl,outputFormat:n.outputFormat,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,metadata:o.metadata}}}),isConcurrencySafe:!0,shouldDefer:!0,isEnabled:()=>Mt("3d")}),e.push({...CO({speechToText:async n=>{let o=await Et({mediaType:"stt",model:"",prompt:"",audioUrl:n.audioUrl,metadata:n.language?{language:n.language}:void 0});return{transcription:o.metadata?.transcription??"",model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("stt")}),e.push({...EO({cloneVoice:async n=>{let o=await Et({mediaType:"voice_clone",model:"",prompt:"",text:n.text,audioUrl:n.sampleAudioUrl,speed:n.speed});return{mediaUrls:o.mediaUrls,model:o.model,voiceId:o.metadata?.voiceId,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("voice_clone")}),e.push({...MO({cancelTask:g0}),shouldDefer:!0,isEnabled:()=>Mt("video")||Mt("3d")});let r=LO({getContext:Ju,resolvePath:n=>FO(t,n)});e.push({...DO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...$O(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...NO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()})}function FO(t,e){return Wa(e,t.getCwd())}var WO=null;function GO(t){WO=t}function tre(){if(process.platform!=="darwin")return!1;try{return ere("which",["sandbox-exec"],{stdio:"ignore"}),!0}catch{return!1}}function rre(){let t=WO?.();if(!t)return;let e=qO.tmpdir();return{mode:t.mode,workdir:t.workdir,allowedDirs:t.communityTurn?[]:t.allowedDirs,bookkeepingDirs:[Ho(),e],tmpDir:fx.join(e,"qla-sandbox"),helperPath:UD(),sandboxExecAvailable:tre(),netPolicy:t.communityTurn?"deny":"allow"}}var KO=null,VO;function ZO(t){VO=t}var JO=null;function XO(t){JO=t}function YO(t){KO=t}function QO(t){Eu(t)}function mx(){return ye()?.workspaceDir??Br()}var BO=!1;function nre(){if(!BO)if(BO=!0,zo()){let t=process.env.QLOGICAGENT_POWERSHELL_PATH??"powershell.exe";La(VS(t))}else if(process.platform==="win32"){let t=ore();La(Tu(t))}else{let t=process.env.SHELL?.endsWith("bash")?process.env.SHELL:"/bin/bash";La(Tu(t))}}function ore(){let t=process.env.QLOGICAGENT_BASH_PATH;if(t&&gx.existsSync(t))return t;let e=["C:\\Program Files\\Git\\bin\\bash.exe","C:\\Program Files (x86)\\Git\\bin\\bash.exe"],r=process.env.ProgramFiles?fx.join(process.env.ProgramFiles,"Git","bin","bash.exe"):null;r&&!e.includes(r)&&e.unshift(r);for(let n of e)if(gx.existsSync(n))return n;return"bash"}var ire={task:"orchestration",ask_user:"orchestration",exec:"developer",read:"filesystem",write:"filesystem",edit:"filesystem",patch:"filesystem",search:"search",web_fetch:"web",web_search:"web",web_answer:"web",web_research:"web",instructions:"filesystem",worktree:"developer",notebook_edit:"developer",workflow:"automation",sleep:"automation",tool_search:"search",[Ua]:"media",[vw]:"media",tts:"media",[Fa]:"media",[Ha]:"media",video_edit:"media",video_merge:"media",video_upscale:"media",three_d_generate:"media",stt:"media",voice_clone:"media",media_cancel:"media",file_upload:"filesystem",file_query:"filesystem",file_delete:"filesystem"};function sre(t){for(let e of t)e.category??=ire[e.name]??"other",e.displayName??={key:`capability.tool.${e.name}.name`,fallback:e.label},e.displayDescription??={key:`capability.tool.${e.name}.description`,fallback:""}}function ej(t){let e=t?.toolCatalog??Bo(),r=()=>e.getToolNames(),n=s=>e.findTool(s),o=s=>e.activateTool(s);nre(),t?.workdir&&Eu(t.workdir);let i=[];return AN.register({tools:i,taskToolHooks:VO,backgroundTaskRuntime:JO,askUserCallback:KO,onExecProgress:t?.onExecProgress,getCwd:Br,activeProjectRoot:mx,resolveSandboxConfig:rre,pathService:t?.pathService,log:t?.log,listToolNames:r,findRegisteredTool:n,activateRegisteredTool:o}),X0.register({tools:i,resolveClientForPurpose:t?.resolveClientForPurpose}),TO.register({tools:i,activeProjectRoot:mx}),zO.register({tools:i,getCwd:Br,activeProjectRoot:mx}),sre(i),e.setTools(i),t?.log?.info(`[tool-bootstrap] Registered ${i.length} local tools (${i.filter(s=>s.isEnabled?.()!==!1).length} enabled): ${r().join(", ")}`),i}function Wr(t){return O$(t)}function tj(t){return{getAllBaseTools:e=>ej({...e,toolCatalog:e?.toolCatalog??t}),setWorkdir:QO}}var are=new Set(Ru.map(t=>t.name)),cre=new Map(Ru.map(t=>[t.name,t])),lre=new Set(["permissionMode","permissionRules","defaultBehavior"]);function nj(t){let e=t.params;this.syncToolListMediaConfig?.();let r=this.toolCatalog??Wr(),o=(e?.includeUnavailable?r.getToolNames().flatMap(s=>{let a=r.findTool(s);return a?[{type:"function",function:{name:a.name,description:a.description,parameters:a.parameters}}]:[]}):r.getToolManifest(e?.includeDeferred??!1)).map(s=>{let a=r.findTool(s.function.name),c=cre.get(s.function.name)?.category??a?.category??"other";return{id:s.function.name,name:s.function.name,category:c,displayName:a?.displayName??{key:`capability.tool.${s.function.name}.name`,fallback:a?.label??s.function.name},displayDescription:a?.displayDescription??{key:`capability.tool.${s.function.name}.description`,fallback:""},fallbackName:a?.label??s.function.name,fallbackDescription:"",description:s.function.description??"",parameters:s.function.parameters,deferred:!!a?.shouldDefer,enabled:a?.isEnabled?.()!==!1,sessionScoped:are.has(s.function.name)||s.function.name.startsWith("mcp__"),source:"builtin"}}),i=new Set(o.map(s=>s.name));for(let s of Ru)i.has(s.name)||o.push({id:s.name,name:s.name,category:s.category,displayName:{key:`capability.tool.${s.name}.name`,fallback:s.label},displayDescription:{key:`capability.tool.${s.name}.description`,fallback:s.description},fallbackName:s.label,fallbackDescription:s.description,description:s.description,parameters:{type:"object",properties:{}},deferred:s.deferred??!1,enabled:!0,sessionScoped:!0,source:"builtin"});if(e?.category){let s=o.filter(a=>a.category===e.category);t.id!==void 0&&this.sendResponse(t.id,{tools:s,total:s.length})}else t.id!==void 0&&this.sendResponse(t.id,{tools:o,total:o.length})}function oj(t){let e=z().listProviderDefs(),r=new Map;for(let o of e){let i=o.group??o.id;r.has(i)||r.set(i,[]);let s=!!z().resolveProviderApiKey(o.id);r.get(i).push({id:o.id,name:o.name,transport:o.transport,baseUrl:o.baseUrl,defaultModel:o.defaultModel,modelCount:o.models?.length??0,available:s})}let n=[...r.entries()].map(([o,i])=>({group:o,variants:i}));t.id!==void 0&&this.sendResponse(t.id,{providers:n})}function ij(t){try{let r=z().exportConfig(),n=ut(),o={};try{o=JSON.parse(Ko.readFileSync(n,"utf-8"))}catch{}t.id!==void 0&&this.sendResponse(t.id,{config:{...dre(o),providers:pre(r.providers),models:r.models,bindings:r.bindings,permissions:cj(o.permissions)},paths:{userSettings:ut(),agentHome:ae()},permissionModel:OD()})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}function dre(t){let e={};for(let[r,n]of Object.entries(t)){if(yx.has(r)||lre.has(r))continue;let o=hx(r,n);o!==void 0&&(e[r]=o)}return e}function hx(t,e){if(ure(t))return typeof e=="string"?sj(e):"[REDACTED]";if(Array.isArray(e))return e.map(r=>hx(t,r));if(e&&typeof e=="object"){let r={};for(let[n,o]of Object.entries(e)){if(yx.has(n))continue;let i=hx(n,o);i!==void 0&&(r[n]=i)}return r}return e}function ure(t){return/(?:apiKey|key|token|secret|credential|authorization|password)/i.test(t)}function pre(t){return t.map(e=>({providerId:e.providerId,baseUrl:e.baseUrl,strategy:e.strategy,keys:e.keys.map(r=>{let n={id:r.id,maskedKey:sj(r.key),weight:r.weight,enabled:r.enabled};return r.label&&(n.label=r.label),n}),...e.rateLimit?{rateLimit:e.rateLimit}:{}}))}function sj(t){return t.length<=8?"****":`${t.slice(0,3)}***${t.slice(-4)}`}var yx=new Set(["providers","models","bindings","provider","model","apiKey","baseUrl","providerKeys"]);async function aj(t){let e=t.params;if(!e?.updates||typeof e.updates!="object"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"updates (object) is required."});return}let r=[],n={};for(let[o,i]of Object.entries(e.updates))yx.has(o)?r.push({key:o,reason:"Use settings.* RPC methods for model/key management"}):n[o]=o==="permissions"?cj(i):i;if(r.length>0&&Object.keys(n).length===0){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:`Rejected keys: ${r.map(o=>o.key).join(", ")}. Use settings.* RPC for model management.`});return}try{let o=ut(),i={};try{let s=await Ko.promises.readFile(o,"utf-8");i=JSON.parse(s)}catch{}Object.assign(i,n),await Ko.promises.mkdir(rj.dirname(o),{recursive:!0}),await Ko.promises.writeFile(o,JSON.stringify(i,null,2),"utf-8"),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,applied:Object.keys(n),rejected:r})}catch(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:o instanceof Error?o.message:String(o)})}}function cj(t){if(!t||typeof t!="object")return;let e=t.mode;if(e==="default"||e==="auto"||e==="full_access")return{mode:e}}function lj(t){try{let e=fr(),r=ut(),n={};try{let o=Ko.readFileSync(r,"utf-8"),i=JSON.parse(o);i.tunables&&typeof i.tunables=="object"&&(n=i.tunables)}catch{}t.id!==void 0&&this.sendResponse(t.id,{defaults:e,overrides:n})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function dj(t){let e=t.params,r=e?.key,n=e?.value;if(!r||typeof r!="string"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"Missing required param: key (string)"});return}let o=wu(r,n);if(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:o});return}try{await xu(ut(),r,n),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,key:r,value:n})}catch(i){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:i instanceof Error?i.message:String(i)})}}async function uj(t){let e=(this.toolCatalog??Wr()).findTool("task");if(!e||typeof e.execute!="function"){t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:$a([])});return}try{let o=(await e.execute("rpc-todos-list",{action:"list"},void 0)).details?.taskList??[];t.id!==void 0&&this.sendResponse(t.id,{items:o,summary:$a(o)})}catch{t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:$a([])})}}function pj(t){let r=t.params?.lifecycle??"all",n=this.taskStore.getAllTasks(),o=r==="all"?n:n.filter(i=>i.lifecycle===r);t.id!==void 0&&this.sendResponse(t.id,{tasks:o.map(i=>({taskId:i.taskId,type:i.type,lifecycle:i.lifecycle,label:i.label}))})}function mj(t){let e=t.params;if(!e?.taskId){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"taskId is required."});return}let n=this.taskStore.getAllTasks().find(i=>i.taskId===e.taskId);if(!n){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} not found.`});return}if(n.lifecycle!=="running"&&n.lifecycle!=="pending"){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} is already ${n.lifecycle}.`});return}let o=this.backgroundTasks.cancelTask(e.taskId);t.id!==void 0&&this.sendResponse(t.id,o?{ok:!0,message:`Task ${e.taskId} cancelled.`}:{ok:!1,message:`Task ${e.taskId} could not be cancelled.`})}var gj=["initialize","thread.create","thread.list","session.resume","session.getInfo","session.getMessages","memory.list","memory.read","memory.write","memory.search","memory.delete","memory.dream","tools.list","media.listModels","config.get","config.update","community.getConsent","community.setConsent","community.matchRegistry","community.listShared","community.withdrawShared","community.withdrawAllShared","community.listNotices","community.markNoticeRead","community.listPublishAudit","community.resolveInstall","community.installResource","community.publishSkill","community.publishPet","community.recordSignal","community.recordTelemetry","todos.list","tasks.list","tasks.cancel","agent.ping","agents.scan","agents.list","agents.config","agents.setConfig","agents.getConfig","agents.removeConfig","agents.setGateway","solo.start","solo.status","solo.cancel","solo.select","solo.list","solo.delete","solo.message","solo.evaluate","product.plan","product.confirm","product.message","product.create","product.resume","product.pause","product.checkpoint","product.status","product.list","product.delete","product.cancel","product.rollback","project.create","project.list","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","session.switchProject","session.getState","session.create","session.list","session.get","session.update","session.delete","session.archive","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","settings.listProviders","settings.addKey","settings.removeKey","settings.getKey","settings.toggleKey","settings.listModels","settings.setActiveModel","settings.getActiveModel","settings.getOverview","settings.refreshModels","settings.validateKey"];function fj(t){let e=t.params,r=e?.protocolVersion??"unknown",n=e?.host?.name??e?.hostName??"unknown",o=e?.host?.version??e?.hostVersion??"?",i=r.split(".")[0],s=vo.split(".")[0];if(i!==s){this.log(`[initialize] protocol mismatch: host=${r} agent=${vo}`),t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.PROTOCOL_MISMATCH,message:`Protocol version mismatch: host=${r}, agent=${vo}`});return}this.log(`[initialize] host=${n} v${o}`),t.id!==void 0&&this.sendResponse(t.id,{protocolVersion:vo,agent:{name:"qlogicagent",version:"0.1.0"},capabilities:{tools:this.toolCatalog.getToolManifest().map(a=>a.function.name),streaming:!0,threads:!0,notifications:["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.plan_update","turn.suggestions","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.media_result","turn.todos_updated","task.updated","turn.exec_progress","turn.artifact","tool.approval.request","turn.skill_instruction","turn.ask_user","memory.updated","session.info","permission.rule_updated","team.updated","turn.usage_update","pong"],methods:[...gj]}}),this.ensureDefaultProject()}function hj(t){t.id!==void 0&&this.sendResponse(t.id,{status:"ok"}),this.sendNotification("pong",{})}function yj(t){t.id!==void 0&&this.sendResponse(t.id,{ok:!0,status:this.running?"healthy":"stopping",uptimeMs:Date.now()-this.startedAt,protocolVersion:vo,version:this.packageVersion})}function vj(t){t.id!==void 0&&this.sendResponse(t.id,{rpc:this.rpcContract.metrics()})}function bj(t){let e=t.params,r=e?.requestId,n=typeof r=="string"?this.rpcContract.cancel(r,e?.reason??"host-cancelled"):!1;n&&this.activeTurn&&this.activeTurn.abort(),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,cancelled:n})}import*as Se from"node:fs";import*as vt from"node:path";se();Ge();import Dt from"node:fs";import Xa from"node:path";var kj=mg,Sj=gg,wp=class{dir;constructor(e){this.dir=mo(e)}list(){if(!Dt.existsSync(this.dir))return[];let e=[];for(let r of Dt.readdirSync(this.dir)){if(!r.endsWith(".md"))continue;let n=Xa.join(this.dir,r);try{let o=Dt.statSync(n);if(!o.isFile())continue;let i=Dt.readFileSync(n,"utf8");e.push({filename:r,content:i,sizeBytes:o.size})}catch{}}return e}read(e){if(!this.isValidFilename(e))return null;let r=Xa.join(this.dir,e);if(!Dt.existsSync(r))return null;try{let n=Dt.readFileSync(r,"utf8"),o=Dt.statSync(r);return{filename:e,content:n,sizeBytes:o.size}}catch{return null}}write(e,r){if(!this.isValidFilename(e))throw new Error("Invalid filename: must end with .md and contain no path separators");let n=Buffer.byteLength(r,"utf8");if(n>kj)throw new Error(`File too large: ${n} bytes exceeds ${kj} limit`);if(this.getDirSize(e)+n>Sj)throw new Error(`Total instructions size would exceed ${Sj} byte limit`);Dt.mkdirSync(this.dir,{recursive:!0});let i=Xa.join(this.dir,e);return Dt.writeFileSync(i,r,"utf8"),{filename:e,content:r,sizeBytes:n}}remove(e){if(!this.isValidFilename(e))return!1;let r=Xa.join(this.dir,e);return Dt.existsSync(r)?(Dt.unlinkSync(r),!0):!1}loadAll(){let e=this.list();return e.length===0?"":`<project-instructions>
858
858
  ${e.map(n=>`<!-- file: ${n.filename}>
859
859
  ${n.content}`).join(`
860
860
 
package/dist/index.js CHANGED
@@ -686,7 +686,7 @@ Auto-learned multi-step workflow using: ${e.tools.join(", ")}.
686
686
  `,"utf8")}function fX(t){return typeof t!="number"||!Number.isFinite(t)?50:Math.max(0,Math.min(200,Math.trunc(t)))}function hX(t){if(!t||typeof t!="object")return null;let e=t;if(typeof e.eventTurnId!="string"||!e.eventTurnId.trim()||typeof e.skillName!="string"||!e.skillName.trim()||e.decision!=="published"&&e.decision!=="blocked"&&e.decision!=="skipped"||typeof e.reason!="string"||!e.reason.trim()||typeof e.createdAt!="string"||Number.isNaN(Date.parse(e.createdAt)))return null;let r={eventTurnId:e.eventTurnId,skillName:e.skillName,decision:e.decision,reason:e.reason,createdAt:e.createdAt};return typeof e.resourceId=="string"&&e.resourceId.trim()&&(r.resourceId=e.resourceId),r}function yX(t){if(!t||typeof t!="object")return!1;let e=t;return e.type==="skill.create"&&typeof e.suggestedName=="string"&&typeof e.description=="string"&&Array.isArray(e.tools)&&e.tools.every(r=>typeof r=="string")}var rD="communityConsent",nD="Community hub is unavailable; consent was not changed.",aD="Community participation consent is required before publishing shared skills.",vX="Community participation consent is required before sending registry signals.",bX="Community participation consent is required before sending community telemetry.",cD="explicitInstallConsent=true is required before resolving a community install.",kX=new Set(["installed","success","fail","neutral","kept","uninstalled","endorse","error"]),SX=new Set(["community.journey.view","community.share.generated","community.sandbox.violation","community.desensitization.hit"]),wX=3,xX=1800;async function lD(t){try{let e=Uo(this),r=await e.read(),n=Ct(this);if(!n){Ue(this,t,{ok:!0,remoteAvailable:!1,consent:r});return}try{let o=await n.getConsent();await e.write(o),Ue(this,t,{ok:!0,remoteAvailable:!0,consent:o})}catch(o){Ue(this,t,{ok:!0,remoteAvailable:!1,consent:r,error:o instanceof Error?o.message:"Community hub is unavailable."})}}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function dD(t){let e=RX(t.params);if(!e){W(this,t,"enabled (boolean) is required.",b.INVALID_PARAMS);return}try{let r=Uo(this),n=Ct(this);if(!n){if(e.enabled){W(this,t,nD);return}let o=kr(e,!1);await r.write(o),Ue(this,t,{ok:!0,remoteAvailable:!1,consent:o,warning:"Community hub is unavailable; local sharing gates are off."});return}try{let o=await n.setConsent(e);await r.write(o),Ue(this,t,{ok:!0,remoteAvailable:!0,consent:o})}catch(o){if(!e.enabled){let i=kr(e,!1);await r.write(i),Ue(this,t,{ok:!0,remoteAvailable:!1,consent:i,warning:o instanceof Error?o.message:"Community hub is unavailable."});return}W(this,t,nD)}}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function uD(t){try{let e=Ct(this);if(!e){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resources:await e.listSharedResources()})}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function pD(t){let e=AX(t.params);if(!e){W(this,t,"Required: intent (string) and optional topK integer 1..3.",b.INVALID_PARAMS);return}try{let r=Ct(this);if(!r){W(this,t,"Community hub is unavailable.");return}let o={ok:!0,matches:await r.matchRegistry(e)};if(JSON.stringify(o).length>xX){W(this,t,"Community registry discovery response exceeded the O(1) size contract.");return}Ue(this,t,o)}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function mD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}if(e.explicitInstallConsent!==!0){W(this,t,cD,b.INVALID_PARAMS);return}let n=typeof e.version=="string"&&e.version.trim()?e.version.trim():void 0,o=e.explicitHighRiskConsent===!0;try{let i=Ct(this);if(!i){W(this,t,"Community hub is unavailable.");return}let s=await i.resolveInstall(r,n);if(TD(s)&&!o){PD(this,t,s);return}Ue(this,t,{ok:!0,install:s})}catch(i){W(this,t,i instanceof Error?i.message:String(i))}}async function gD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}if(e.explicitInstallConsent!==!0){W(this,t,cD,b.INVALID_PARAMS);return}let n=typeof e.version=="string"&&e.version.trim()?e.version.trim():void 0,o=e.explicitHighRiskConsent===!0;try{let i=Ct(this);if(!i){W(this,t,"Community hub is unavailable.");return}let s=await i.resolveInstall(r,n);if(TD(s)&&!o){PD(this,t,s);return}let a=await VM(s),c,l=await Uo(this).read();if(!oD(a)&&LS(l))try{await i.recordSignal({resourceId:s.id,event:"installed",metadata:{version:s.version,source:"community-install"}})}catch(u){c=u instanceof Error?u.message:String(u)}Ue(this,t,{ok:!0,...oD(a)?{preview:a}:{installed:a},...c?{signalWarning:c}:{}})}catch(i){W(this,t,i instanceof Error?i.message:String(i))}}function oD(t){return!!t&&typeof t=="object"&&(t.kind==="mcp"&&t.mode==="preview"||t.kind==="executable")}async function fD(t){let e=TX(t.params);if(!e){W(this,t,"Required: id, title, summary, manifest.",b.INVALID_PARAMS);return}try{let n=await Uo(this).read();if(!RD(n)){W(this,t,aD);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.publishSkill(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function hD(t){let e=PX(t.params);if(!e){W(this,t,"Required: id, name, summary, persona.",b.INVALID_PARAMS);return}try{let n=await Uo(this).read();if(!RD(n)){W(this,t,aD);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await bM(o,e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function yD(t){let e=IX(t.params);if(!e){W(this,t,"Required: resourceId and valid event.",b.INVALID_PARAMS);return}try{let n=await Uo(this).read();if(!LS(n)){W(this,t,vX);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.recordSignal(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function vD(t){let e=_X(t.params);if(!e){W(this,t,"Required: valid community telemetry event.",b.INVALID_PARAMS);return}try{let n=await Uo(this).read();if(!LS(n)){W(this,t,bX);return}let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,...await o.recordTelemetry(e)})}catch(r){W(this,t,r instanceof Error?r.message:String(r))}}async function bD(t){let e=t.params??{},r=typeof e.limit=="number"?e.limit:void 0;try{Ue(this,t,{ok:!0,entries:tD({limit:r})})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}async function kD(t){let e=t.params??{},r=typeof e.resourceId=="string"?e.resourceId.trim():"";if(!r){W(this,t,"resourceId (string) is required.",b.INVALID_PARAMS);return}let n=typeof e.reason=="string"?e.reason:void 0;try{let o=Ct(this);if(!o){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resource:await o.withdrawSharedResource(r,n)})}catch(o){W(this,t,o instanceof Error?o.message:String(o))}}async function SD(t){let e=t.params??{},r=typeof e.reason=="string"?e.reason:void 0;try{let n=Ct(this);if(!n){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,resources:await n.withdrawSharedResources(r)})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}async function wD(t){try{let e=Ct(this);if(!e){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,notices:await e.listNotices(CX(t.params))})}catch(e){W(this,t,e instanceof Error?e.message:String(e))}}async function xD(t){let e=t.params??{},r=typeof e.noticeId=="number"?e.noticeId:Number(e.noticeId);if(!Number.isSafeInteger(r)||r<1){W(this,t,"noticeId (positive integer) is required.",b.INVALID_PARAMS);return}try{let n=Ct(this);if(!n){W(this,t,"Community hub is unavailable.");return}Ue(this,t,{ok:!0,notice:await n.markNoticeRead(r)})}catch(n){W(this,t,n instanceof Error?n.message:String(n))}}function RX(t){if(!t||typeof t.enabled!="boolean")return null;let e={enabled:t.enabled};return typeof t.methodSharingEnabled=="boolean"&&(e.methodSharingEnabled=t.methodSharingEnabled),typeof t.signalsEnabled=="boolean"&&(e.signalsEnabled=t.signalsEnabled),typeof t.encounterEnabled=="boolean"&&(e.encounterEnabled=t.encounterEnabled),e}function TX(t){if(!t)return null;let e=typeof t.id=="string"?t.id.trim():"",r=typeof t.title=="string"?t.title.trim():"",n=typeof t.summary=="string"?t.summary.trim():"",o=US(t.manifest)?t.manifest:null;if(!e||!r||!n||!o)return null;let i=t.visibility==="private"?"private":"public",s=Array.isArray(t.tags)?t.tags.filter(c=>typeof c=="string"):[],a={id:e,title:r,summary:n,visibility:i,tags:s,manifest:o};return typeof t.version=="string"&&(a.version=t.version.trim()),typeof t.packageGzipBase64=="string"&&(a.packageGzipBase64=t.packageGzipBase64.trim()),a}function PX(t){if(!t)return null;let e=typeof t.id=="string"?t.id.trim():"",r=typeof t.name=="string"?t.name.trim():"",n=typeof t.summary=="string"?t.summary.trim():"",o=typeof t.persona=="string"?t.persona.trim():"";return!e||!r||!n||!o?null:{id:e,name:r,summary:n,persona:o,visibility:t.visibility==="private"?"private":"public",tags:Array.isArray(t.tags)?t.tags.filter(i=>typeof i=="string"):[],traits:Array.isArray(t.traits)?t.traits.filter(i=>typeof i=="string"):[],assets:Array.isArray(t.assets)?t.assets.filter(US).map(i=>({kind:typeof i.kind=="string"?i.kind:"",path:typeof i.path=="string"?i.path:""})).filter(i=>i.kind&&i.path):[]}}function AX(t){if(!t)return null;let e=typeof t.intent=="string"?t.intent.trim():"";if(!e)return null;let r=t.topK===void 0?void 0:Number(t.topK);return r!==void 0&&(!Number.isSafeInteger(r)||r<1||r>wX)?null:{intent:e,...r===void 0?{}:{topK:r},...typeof t.preferOfficial=="boolean"?{preferOfficial:t.preferOfficial}:{}}}function IX(t){if(!t)return null;let e=typeof t.resourceId=="string"?t.resourceId.trim():"",r=typeof t.event=="string"&&kX.has(t.event)?t.event:null;if(!e||!r)return null;let n={resourceId:e,event:r};return typeof t.attribution=="string"&&t.attribution.trim()&&(n.attribution=t.attribution.trim()),US(t.metadata)&&(n.metadata=t.metadata),n}function _X(t){if(!t)return null;let e=typeof t.event=="string"&&SX.has(t.event)?t.event:null;if(!e)return null;let r={event:e},n=ru(e,t.metadata);return n&&(r.metadata=n),r}function CX(t){return{includeRead:t?.includeRead===!0}}function RD(t){return t.enabled&&t.methodSharingEnabled&&t.remoteSynced}function LS(t){return t.enabled&&t.signalsEnabled&&t.remoteSynced}function TD(t){return EX(t.effectiveRiskTier)}function EX(t){return t==="R2"||t==="R3"}function PD(t,e,r){W(t,e,`Explicit high-risk consent is required before exposing ${r.effectiveRiskTier} community install resolution.`,b.INTERNAL_ERROR,{resourceRiskTier:r.resourceRiskTier,effectiveRiskTier:r.effectiveRiskTier,requiresExplicitHighRiskConsent:!0})}function US(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Ct(t){return t.resolveCommunityConsentClient?t.resolveCommunityConsentClient():Hr()}function Uo(t){return t.resolveCommunityConsentStore?.()??MX()}function MX(){let t=ut();return{async read(){let e=await iD(t);return kr(e[rD],!1)},async write(e){let r=await iD(t);r[rD]=e,await Xi.mkdir(sD.dirname(t),{recursive:!0}),await Xi.writeFile(t,JSON.stringify(r,null,2),"utf-8")}}}async function iD(t){try{return JSON.parse(await Xi.readFile(t,"utf-8"))}catch{return{}}}function Ue(t,e,r){e.id!==void 0&&t.sendResponse(e.id,r)}function W(t,e,r,n=b.INTERNAL_ERROR,o){e.id!==void 0&&t.sendResponse(e.id,void 0,{code:n,message:r,...o===void 0?{}:{data:o}})}se();$e();Ge();import*as Go from"node:fs";import*as YO from"node:path";import*as Xn from"node:fs";import*as AD from"node:path";var FS=class{teamBudget={tokensUsed:0,budgetTokens:gg};isTeamBudgetExceeded(){return this.teamBudget.budgetTokens>0&&this.teamBudget.tokensUsed>=this.teamBudget.budgetTokens}recordForkTokens(e){return this.teamBudget.tokensUsed+=e,this.teamBudget.tokensUsed}teamBudgetExceededError(){return`Team budget exceeded (${this.teamBudget.tokensUsed} / ${this.teamBudget.budgetTokens} tokens). No more sub-agents allowed.`}dream={idleMinutes:30,enabled:!1,lastDreamAt:0,cooldownMs:14400*1e3,maxDurationMs:300*1e3};resetAccumulators(){this.teamBudget.tokensUsed=0}},Sr=new FS;Ge();function HS(t){try{let e=JSON.parse(Xn.readFileSync(t,"utf-8"));return e.tunables&&typeof e.tunables=="object"?e.tunables:{}}catch{return{}}}function wu(t,e){let r=gr();if(!(t in r))return`Unknown tunable key: "${t}". Valid keys: ${Object.keys(r).join(", ")}`;let n=typeof r[t];return e==null||typeof e!==n?`Invalid value for "${t}": expected ${n}, got ${typeof e}`:null}function ID(t,e){if(typeof e!="string")return e;let r=gr();if(!(t in r))return e;let n=typeof r[t];if(n==="number"){let o=Number(e);if(!Number.isNaN(o)&&e.trim()!=="")return o}else if(n==="boolean"){if(e==="true")return!0;if(e==="false")return!1}return e}async function xu(t,e,r){let n={};try{n=JSON.parse(await Xn.promises.readFile(t,"utf-8"))}catch{}(!n.tunables||typeof n.tunables!="object")&&(n.tunables={}),n.tunables[e]=r,await Xn.promises.mkdir(AD.dirname(t),{recursive:!0}),await Xn.promises.writeFile(t,JSON.stringify(n,null,2),"utf-8"),CD(e,r)}async function _D(t,e){let r={};try{r=JSON.parse(await Xn.promises.readFile(t,"utf-8"))}catch{return}r.tunables&&typeof r.tunables=="object"&&(delete r.tunables[e],await Xn.promises.writeFile(t,JSON.stringify(r,null,2),"utf-8"));let n=gr();e in n&&CD(e,n[e])}function CD(t,e){t==="teamBudgetTokens"&&typeof e=="number"&&(Sr.teamBudget.budgetTokens=e)}var DX="task",$X=["create","update","delete","list","get","output","cancel"],NX=/^[abdtrwm][a-z0-9]{8}$/;var OX={type:"object",properties:{action:{type:"string",enum:[...$X],description:"create \u2014 add a new checklist task (auto-assigns numeric id). update \u2014 modify a checklist task by id (partial, supports dependency wiring). delete \u2014 remove a checklist task by id (cascades block refs). list \u2014 read the checklist plus active background tasks. get \u2014 get a single checklist task by id. output \u2014 read a background task's status and output (requires taskId). cancel \u2014 stop a running background task (requires taskId)."},id:{type:"number",description:"[update|delete|get] Checklist task id to operate on."},taskId:{type:"string",description:"[output|cancel] Background task id (returned by agent background=true / exec background=true)."},title:{type:"string",description:"[create|update] Task title (3-7 words, imperative form)."},description:{type:"string",description:"[create|update] Detailed task description."},status:{type:"string",enum:["not-started","in-progress","completed"],description:"[create|update] Task status. create defaults to not-started."},owner:{type:"string",description:"[create|update] Executor label. Set this to a background task id (from agent background=true) to link the checklist item to its executor \u2014 list then shows the executor's live state."},addBlocks:{type:"array",items:{type:"number"},description:"[update] Task IDs that this task should block (they depend on this task)."},addBlockedBy:{type:"array",items:{type:"number"},description:"[update] Task IDs that should block this task (this task depends on them)."}},required:["action"]};function Ea(t){let e=new Set(t.filter(r=>r.status==="completed").map(r=>r.id));return{total:t.length,completed:t.filter(r=>r.status==="completed").length,inProgress:t.filter(r=>r.status==="in-progress").length,notStarted:t.filter(r=>r.status==="not-started").length,blocked:t.filter(r=>r.status!=="completed"&&r.blockedBy?.some(n=>!e.has(n))).length}}function ED(t,e,r){let n=[],o=0,i=t??{},s=i.verificationNudge!==!1,a=()=>r?.getRuntime()??null;function c(){let v=n.reduce((k,R)=>Math.max(k,R.id),0);return o=Math.max(o,v)+1,o}function l(v){return{content:[{type:"text",text:`Error: ${v}`}],details:{type:"task",error:v}}}function u(v){let k=Ea(n),R=new Set(n.filter(F=>F.status==="completed").map(F=>F.id)),I=n.map(F=>{let q=F.blockedBy?.filter(ie=>!R.has(ie));return{...F,...q?.length?{blockedBy:q}:{blockedBy:void 0}}}),A=[];if(A.push(`Task list updated. ${k.total} tasks: ${k.completed} completed, ${k.inProgress} in-progress, ${k.notStarted} not-started.`),k.blocked>0&&A.push(`${k.blocked} blocked.`),v?.created){let F=v.created;A.push(`Created task #${F.id}: "${F.title}"`)}if(v?.updated){let F=v.updated;A.push(`Updated task #${F.id}: "${F.title}"`)}v?.deleted!=null&&A.push(`Deleted task #${v.deleted}`);let $=a();if(I.length>0){A.push("");for(let F of I){let q=F.status==="completed"?"\u2713":F.status==="in-progress"?"\u2192":"\u25CB",ie=F.blockedBy?.length?` [blocked by #${F.blockedBy.join(", #")}]`:"",ne=F.owner?` (${F.owner})`:"";if(F.owner&&$&&NX.test(F.owner)){let we=$.getTask(F.owner);we&&(ne=` (${F.owner}: ${we.lifecycle})`)}A.push(` ${q} #${F.id}: ${F.title} (${F.status})${ne}${ie}`)}}let P=($?.listTasks()??[]).filter(F=>F.lifecycle==="running"||F.lifecycle==="pending");if(P.length>0){A.push(""),A.push(`Background tasks (${P.length} active):`);for(let F of P){let q=Math.round((Date.now()-F.startedAt)/1e3);A.push(` \u2699 ${F.taskId} [${F.type}] ${F.label} (${F.lifecycle}, ${q}s)`)}}let U=n.filter(F=>F.status!=="not-started"?!1:!F.blockedBy?.filter(ie=>!R.has(ie))?.length),_e=v?.updated?.status==="completed";(v?.created||_e)&&U.length>=2&&(A.push(""),A.push(`NOTE: ${U.length} tasks (#${U.map(F=>F.id).join(", #")}) are unblocked and not started. If they are independent, launch them in parallel with agent(background=true) \u2014 one call per task in a single message \u2014 and set each task's owner to the returned task id.`));let re=!1;if(s&&v?.updated&&v.updated.status==="completed"){let q=n.every(we=>we.status==="completed"),ie=n.length,ne=n.some(we=>/verif/i.test(we.title));q&&ie>=3&&!ne&&(re=!0,A.push(""),A.push("NOTE: You just closed out "+ie+' tasks and none of them was a verification step. Before writing your final summary, spawn the verification agent (agent tool with agent="verify"). You cannot self-assign PARTIAL by listing caveats in your summary \u2014 only the verifier issues a verdict.'))}return{content:[{type:"text",text:A.join(`
687
687
  `)}],details:{type:"task",...k,...v,taskList:I,agentId:i.agentId,...re&&{verificationNudgeNeeded:!0}}}}function p(v,k,R){let I=n.find(A=>A.id===v);if(I){if(k?.length){I.blocks=[...new Set([...I.blocks??[],...k])];for(let A of k){let $=n.find(B=>B.id===A);$&&($.blockedBy=[...new Set([...$.blockedBy??[],v])])}}if(R?.length){I.blockedBy=[...new Set([...I.blockedBy??[],...R])];for(let A of R){let $=n.find(B=>B.id===A);$&&($.blocks=[...new Set([...$.blocks??[],v])])}}}}function m(v){for(let k of n)k.blocks&&(k.blocks=k.blocks.filter(R=>R!==v)),k.blockedBy&&(k.blockedBy=k.blockedBy.filter(R=>R!==v))}function g(v){if(!v.title)return l("title is required for create action.");let k={id:c(),title:v.title,status:v.status??"not-started",...v.description!=null&&{description:v.description},...v.owner!=null&&{owner:v.owner}};return n.push(k),p(k.id,void 0,v.addBlockedBy),e?.onTaskCreated?.(k),u({created:{id:k.id,title:k.title}})}function f(v){if(v.id==null)return l("id is required for update action.");let k=n.find(R=>R.id===v.id);if(!k)return l(`Task #${v.id} not found.`);if(v.status==="in-progress"){let R=new Set(n.filter(A=>A.status==="completed").map(A=>A.id)),I=k.blockedBy?.filter(A=>!R.has(A));if(I?.length)return l(`Cannot set #${v.id} to in-progress: blocked by unresolved task(s) #${I.join(", #")}.`)}if(v.title!=null&&(k.title=v.title),v.description!=null&&(k.description=v.description),v.owner!=null&&(k.owner=v.owner),v.status!=null){let R=k.status;k.status=v.status,R!=="completed"&&v.status==="completed"&&e?.onTaskCompleted?.(k)}return p(k.id,v.addBlocks,v.addBlockedBy),u({updated:{id:k.id,title:k.title,status:k.status}})}function h(v){if(v.id==null)return l("id is required for delete action.");let k=n.findIndex(R=>R.id===v.id);return k===-1?l(`Task #${v.id} not found.`):(o=Math.max(o,v.id),n.splice(k,1),m(v.id),u({deleted:v.id}))}async function y(v){if(!v.taskId)return l("taskId is required for output action.");let k=a();if(!k)return l("No background task registry available in this host.");let R=await k.readOutput(v.taskId);if(!R)return l(`Background task ${v.taskId} not found.`);let{task:I,output:A,running:$}=R,B=Math.round(((I.endedAt??Date.now())-I.startedAt)/1e3);return{content:[{type:"text",text:[`Task ${I.taskId} [${I.type}] ${I.label}`,`Status: ${I.lifecycle}${$?` (running for ${B}s)`:` (${B}s)`}`,I.error?`Error: ${I.error}`:"","",A||($?"(no output yet)":"(no output)")].filter((U,_e)=>U!==""||_e===3).join(`
688
688
  `)}],details:{type:"task",action:"output",taskId:I.taskId,lifecycle:I.lifecycle,running:$}}}function S(v){if(!v.taskId)return l("taskId is required for cancel action.");let k=a();if(!k)return l("No background task registry available in this host.");if(!k.cancelTask(v.taskId)){let I=k.getTask(v.taskId);return l(I?`Background task ${v.taskId} is already ${I.lifecycle}.`:`Background task ${v.taskId} not found.`)}return{content:[{type:"text",text:`Background task ${v.taskId} cancelled.`}],details:{type:"task",action:"cancel",taskId:v.taskId}}}function w(v){if(v.id==null)return l("id is required for get action.");let k=n.find($=>$.id===v.id);if(!k)return l(`Task #${v.id} not found.`);let R=new Set(n.filter($=>$.status==="completed").map($=>$.id)),I=k.blockedBy?.filter($=>!R.has($));return{content:[{type:"text",text:[`Task #${k.id}: ${k.title}`,`Status: ${k.status}`,k.description?`Description: ${k.description}`:"",k.owner?`Owner: ${k.owner}`:"",I?.length?`Blocked by: #${I.join(", #")}`:"",k.blocks?.length?`Blocks: #${k.blocks.join(", #")}`:""].filter(Boolean).join(`
689
- `)}],details:{type:"task",action:"get",task:k}}}return{name:DX,label:"Task",description:"Plan and track multi-step work, and monitor background tasks. Checklist actions (numeric id): create, update, delete, list, get \u2014 an in-session plan with dependency tracking (blocks/blockedBy); tasks cannot start until blockers complete. Background actions (string taskId): output (read status + output of a background agent/command), cancel (stop it). Background task ids come from agent(background=true) or exec(background=true); `list` also shows active background tasks. Use frequently during complex work to plan steps, fan out background agents, and show progress.",parameters:OX,searchHint:"manage session task checklist progress tracking dependencies planning background output cancel poll",maxResultSizeChars:1e5,execute:async(v,k)=>{let R=k.action;switch(R){case"create":return g(k);case"update":return f(k);case"delete":return h(k);case"list":return u();case"get":return w(k);case"output":return y(k);case"cancel":return S(k);default:return l(`Unknown action: ${R}. Valid: create, update, delete, list, get, output, cancel.`)}}}}var Ru=[{name:"agent",label:"Agent",category:"orchestration",sessionScoped:!0},{name:"team",label:"Team",category:"orchestration",sessionScoped:!0},{name:"checkpoint",label:"Checkpoint",category:"developer",sessionScoped:!0},{name:"config",label:"Config",category:"system",sessionScoped:!0},{name:"cron",label:"Cron",category:"automation",sessionScoped:!0},{name:"monitor",label:"Monitor",category:"automation",sessionScoped:!0},{name:"memory",label:"Memory",category:"memory",sessionScoped:!0},{name:"skill",label:"Skill",category:"system",sessionScoped:!0},{name:"lsp",label:"LSP",category:"developer",sessionScoped:!0,deferred:!0}];var jX=[{id:"default",label:"\u9ED8\u8BA4",summary:"\u5DE5\u4F5C\u533A",description:"\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF1B\u8DE8\u533A/\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"auto",label:"\u81EA\u52A8",summary:"\u5E38\u89C4",description:"\u5E38\u89C4\u64CD\u4F5C\u81EA\u52A8\uFF1B\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"full_access",label:"\u5B8C\u5168\u8BBF\u95EE",summary:"\u5168\u653E\u884C",description:"\u672C\u8F6E\u5168\u90E8\u81EA\u52A8\uFF0C\u4E0D\u518D\u786E\u8BA4\u3002"}],LX=["cross_workspace","high_risk_delete","high_risk_egress","destructive"];function Ma(t){return t==="cross_workspace"?[{optionId:"allow",name:"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"allow_dir",name:"\u672C\u4F1A\u8BDD\u5141\u8BB8\u6B64\u76EE\u5F55",kind:"allow_always",scope:"directory"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]:[{optionId:"allow",name:t==="high_risk_delete"?"\u4ECD\u8981\u5220\u9664":t==="high_risk_egress"?"\u4ECD\u8981\u53D1\u9001":"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]}function MD(){let t=Object.fromEntries(LX.map(e=>[e,Ma(e)]));return{modes:jX,promptOptions:t}}import*as px from"node:fs";import*as FO from"node:os";import*as mx from"node:path";import{execFileSync as Bte}from"node:child_process";import{mkdir as UX,readFile as FX,writeFile as HX,unlink as zX}from"node:fs/promises";import{join as DD}from"node:path";import{tmpdir as BX}from"node:os";var qX=8*1024*1024,WX=5*1024*1024*1024;var zS;function Fo(){if(!zS){let t=Math.random().toString(36).slice(2,10);zS=DD(BX(),"qla-tasks",t)}return zS}function $D(t){return DD(Fo(),`${t}.output`)}var Yn=class{taskId;path;stdoutToFile;#e="";#r="";#o=0;#i=0;#t;#s;#n=0;#a=!1;constructor(e,r,n=!1,o=qX){this.taskId=e,this.path=$D(e),this.stdoutToFile=n,this.#t=o,this.#s=r}writeStdout(e){this.#e+=e,this.#i+=e.length,this.#o+=GX(e),this.#d()}writeStderr(e){this.#r+=e}async getStdout(){if(this.stdoutToFile)try{let e=await FX(this.path,"utf-8");return this.#n=Buffer.byteLength(e),e}catch{return""}return this.#e}getStderr(){return this.#r}get outputFileSize(){return this.#n}get outputFileRedundant(){return this.#n<=this.#t}#d(){this.#e.length>this.#t&&this.spillToDisk()}spillToDisk(){this.#e.length!==0&&UX(Fo(),{recursive:!0}).then(()=>HX(this.path,this.#e).catch(()=>{}))}async deleteOutputFile(){try{await zX(this.path)}catch{}}clear(){this.#a||(this.#a=!0,this.#e="",this.#r="",this.#s=null,this.deleteOutputFile())}};function GX(t){let e=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)===10&&e++;return e}import{existsSync as KX}from"node:fs";import{fileURLToPath as VX}from"node:url";import{dirname as ZX,join as JX}from"node:path";function ND(t={}){let e=t.exists??KX,r="env"in t?t.env:process.env.QLOGICAGENT_LANDLOCK_HELPER;if(r)return e(r)?r:null;let n;try{n=ZX(VX(import.meta.url))}catch{n=process.cwd()}let o=JX(n,"native","landlock-exec");return e(o)?o:null}function Ho(){if(process.platform!=="win32")return!1;let t=process.env.QLOGICAGENT_USE_POWERSHELL;return t==="1"||t==="true"}function BS(){return Ho()?"powershell":"bash"}function qS(){return Math.floor(Math.random()*65536).toString(16).padStart(4,"0")}import{tmpdir as XX}from"node:os";import{join as YX,posix as WS}from"node:path";function QX(t){return t.replace(/(\d?)>nul\b/gi,(e,r)=>`${r||""}>/dev/null`)}function eY(t){return!(/(?:^|[;&|])\s*<\s/.test(t)||/<<[-]?\s*['"]?[A-Za-z_]/.test(t))}function tY(t,e){return`$'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n")}'${e?" < /dev/null":""}`}function OD(t){return process.platform!=="win32"?t:t.replace(/^([A-Za-z]):/,(e,r)=>`/${r.toLowerCase()}`).replace(/\\/g,"/")}function Tu(t,e){let r=e?.snapshotFilePath;return{type:"bash",shellPath:t,detached:!0,async buildExecCommand(n,o){let i=process.platform==="win32",s=XX(),a=i?OD(s):s,c=o.useSandbox&&o.sandboxTmpDir?WS.join(o.sandboxTmpDir,`cwd-${o.id}`):WS.join(a,`qla-${o.id}-cwd`),l=o.useSandbox&&o.sandboxTmpDir?WS.join(o.sandboxTmpDir,`cwd-${o.id}`):YX(s,`qla-${o.id}-cwd`),u=QX(n),p=eY(u),m=tY(u,p),g=[];if(r){let h=i?OD(r):r;g.push(`source '${h}' 2>/dev/null || true`)}return e?.sessionEnvScript&&g.push(e.sessionEnvScript),g.push(`eval ${m}`),g.push(`pwd -P >| '${c}'`),{commandString:g.join(" && "),cwdFilePath:l}},getSpawnArgs(n){return["-c",...!!r?[]:["-l"],n]},async getEnvironmentOverrides(n){return{GIT_EDITOR:"true",QLOGICAGENT:"1"}}}}import{tmpdir as rY}from"node:os";import{join as nY,posix as oY}from"node:path";function jD(t){return Buffer.from(t,"utf16le").toString("base64")}function iY(t){return["-NoProfile","-NonInteractive","-Command",t]}function GS(t){return{type:"powershell",shellPath:t,detached:!1,async buildExecCommand(e,r){let n=r.useSandbox&&r.sandboxTmpDir?oY.join(r.sandboxTmpDir,`qla-pwd-ps-${r.id}`):nY(rY(),`qla-pwd-ps-${r.id}`),i=["","$_ec = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } elseif ($?) { 0 } else { 1 }",`(Get-Location).Path | Out-File -FilePath '${n.replace(/'/g,"''")}' -Encoding utf8 -NoNewline`,"exit $_ec"].join(`
689
+ `)}],details:{type:"task",action:"get",task:k}}}return{name:DX,label:"Task",description:"Plan and track multi-step work, and monitor background tasks. Checklist actions (numeric id): create, update, delete, list, get \u2014 an in-session plan with dependency tracking (blocks/blockedBy); tasks cannot start until blockers complete. Background actions (string taskId): output (read status + output of a background agent/command), cancel (stop it). Background task ids come from agent(background=true) or exec(background=true); `list` also shows active background tasks. Use frequently during complex work to plan steps, fan out background agents, and show progress.",parameters:OX,searchHint:"manage session task checklist progress tracking dependencies planning background output cancel poll",maxResultSizeChars:1e5,execute:async(v,k)=>{let R=k.action;switch(R){case"create":return g(k);case"update":return f(k);case"delete":return h(k);case"list":return u();case"get":return w(k);case"output":return y(k);case"cancel":return S(k);default:return l(`Unknown action: ${R}. Valid: create, update, delete, list, get, output, cancel.`)}}}}var Ru=[{name:"agent",label:"Agent",description:"Run a scoped sub-agent for delegated investigation, coding, research, or verification.",category:"orchestration",sessionScoped:!0},{name:"team",label:"Team",description:"Create, inspect, or message a coordinated team of session-scoped agents.",category:"orchestration",sessionScoped:!0},{name:"checkpoint",label:"Checkpoint",description:"Create, inspect, or restore workspace checkpoints during a session.",category:"developer",sessionScoped:!0},{name:"config",label:"Config",description:"Read or update session tunables such as model, provider, permissions, and tool settings.",category:"system",sessionScoped:!0},{name:"cron",label:"Cron",description:"Manage scheduled workflow-style tasks that can wake the agent later.",category:"automation",sessionScoped:!0},{name:"monitor",label:"Monitor",description:"Start, stop, or list file and event monitors that notify the session.",category:"automation",sessionScoped:!0},{name:"memory",label:"Memory",description:"Read, write, search, and maintain local project memory for the current session.",category:"memory",sessionScoped:!0},{name:"skill",label:"Skill",description:"Inspect, create, activate, deactivate, or promote reusable local skills.",category:"system",sessionScoped:!0},{name:"lsp",label:"LSP",description:"Query language-server code intelligence such as definitions, references, symbols, and diagnostics.",category:"developer",sessionScoped:!0,deferred:!0}];var jX=[{id:"default",label:"\u9ED8\u8BA4",summary:"\u5DE5\u4F5C\u533A",description:"\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF1B\u8DE8\u533A/\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"auto",label:"\u81EA\u52A8",summary:"\u5E38\u89C4",description:"\u5E38\u89C4\u64CD\u4F5C\u81EA\u52A8\uFF1B\u9AD8\u5371\u786E\u8BA4\u3002"},{id:"full_access",label:"\u5B8C\u5168\u8BBF\u95EE",summary:"\u5168\u653E\u884C",description:"\u672C\u8F6E\u5168\u90E8\u81EA\u52A8\uFF0C\u4E0D\u518D\u786E\u8BA4\u3002"}],LX=["cross_workspace","high_risk_delete","high_risk_egress","destructive"];function Ma(t){return t==="cross_workspace"?[{optionId:"allow",name:"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"allow_dir",name:"\u672C\u4F1A\u8BDD\u5141\u8BB8\u6B64\u76EE\u5F55",kind:"allow_always",scope:"directory"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]:[{optionId:"allow",name:t==="high_risk_delete"?"\u4ECD\u8981\u5220\u9664":t==="high_risk_egress"?"\u4ECD\u8981\u53D1\u9001":"\u5141\u8BB8\u4E00\u6B21",kind:"allow_once",scope:"once"},{optionId:"deny",name:"\u62D2\u7EDD",kind:"reject_once"}]}function MD(){let t=Object.fromEntries(LX.map(e=>[e,Ma(e)]));return{modes:jX,promptOptions:t}}import*as px from"node:fs";import*as FO from"node:os";import*as mx from"node:path";import{execFileSync as Bte}from"node:child_process";import{mkdir as UX,readFile as FX,writeFile as HX,unlink as zX}from"node:fs/promises";import{join as DD}from"node:path";import{tmpdir as BX}from"node:os";var qX=8*1024*1024,WX=5*1024*1024*1024;var zS;function Fo(){if(!zS){let t=Math.random().toString(36).slice(2,10);zS=DD(BX(),"qla-tasks",t)}return zS}function $D(t){return DD(Fo(),`${t}.output`)}var Yn=class{taskId;path;stdoutToFile;#e="";#r="";#o=0;#i=0;#t;#s;#n=0;#a=!1;constructor(e,r,n=!1,o=qX){this.taskId=e,this.path=$D(e),this.stdoutToFile=n,this.#t=o,this.#s=r}writeStdout(e){this.#e+=e,this.#i+=e.length,this.#o+=GX(e),this.#d()}writeStderr(e){this.#r+=e}async getStdout(){if(this.stdoutToFile)try{let e=await FX(this.path,"utf-8");return this.#n=Buffer.byteLength(e),e}catch{return""}return this.#e}getStderr(){return this.#r}get outputFileSize(){return this.#n}get outputFileRedundant(){return this.#n<=this.#t}#d(){this.#e.length>this.#t&&this.spillToDisk()}spillToDisk(){this.#e.length!==0&&UX(Fo(),{recursive:!0}).then(()=>HX(this.path,this.#e).catch(()=>{}))}async deleteOutputFile(){try{await zX(this.path)}catch{}}clear(){this.#a||(this.#a=!0,this.#e="",this.#r="",this.#s=null,this.deleteOutputFile())}};function GX(t){let e=0;for(let r=0;r<t.length;r++)t.charCodeAt(r)===10&&e++;return e}import{existsSync as KX}from"node:fs";import{fileURLToPath as VX}from"node:url";import{dirname as ZX,join as JX}from"node:path";function ND(t={}){let e=t.exists??KX,r="env"in t?t.env:process.env.QLOGICAGENT_LANDLOCK_HELPER;if(r)return e(r)?r:null;let n;try{n=ZX(VX(import.meta.url))}catch{n=process.cwd()}let o=JX(n,"native","landlock-exec");return e(o)?o:null}function Ho(){if(process.platform!=="win32")return!1;let t=process.env.QLOGICAGENT_USE_POWERSHELL;return t==="1"||t==="true"}function BS(){return Ho()?"powershell":"bash"}function qS(){return Math.floor(Math.random()*65536).toString(16).padStart(4,"0")}import{tmpdir as XX}from"node:os";import{join as YX,posix as WS}from"node:path";function QX(t){return t.replace(/(\d?)>nul\b/gi,(e,r)=>`${r||""}>/dev/null`)}function eY(t){return!(/(?:^|[;&|])\s*<\s/.test(t)||/<<[-]?\s*['"]?[A-Za-z_]/.test(t))}function tY(t,e){return`$'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n")}'${e?" < /dev/null":""}`}function OD(t){return process.platform!=="win32"?t:t.replace(/^([A-Za-z]):/,(e,r)=>`/${r.toLowerCase()}`).replace(/\\/g,"/")}function Tu(t,e){let r=e?.snapshotFilePath;return{type:"bash",shellPath:t,detached:!0,async buildExecCommand(n,o){let i=process.platform==="win32",s=XX(),a=i?OD(s):s,c=o.useSandbox&&o.sandboxTmpDir?WS.join(o.sandboxTmpDir,`cwd-${o.id}`):WS.join(a,`qla-${o.id}-cwd`),l=o.useSandbox&&o.sandboxTmpDir?WS.join(o.sandboxTmpDir,`cwd-${o.id}`):YX(s,`qla-${o.id}-cwd`),u=QX(n),p=eY(u),m=tY(u,p),g=[];if(r){let h=i?OD(r):r;g.push(`source '${h}' 2>/dev/null || true`)}return e?.sessionEnvScript&&g.push(e.sessionEnvScript),g.push(`eval ${m}`),g.push(`pwd -P >| '${c}'`),{commandString:g.join(" && "),cwdFilePath:l}},getSpawnArgs(n){return["-c",...!!r?[]:["-l"],n]},async getEnvironmentOverrides(n){return{GIT_EDITOR:"true",QLOGICAGENT:"1"}}}}import{tmpdir as rY}from"node:os";import{join as nY,posix as oY}from"node:path";function jD(t){return Buffer.from(t,"utf16le").toString("base64")}function iY(t){return["-NoProfile","-NonInteractive","-Command",t]}function GS(t){return{type:"powershell",shellPath:t,detached:!1,async buildExecCommand(e,r){let n=r.useSandbox&&r.sandboxTmpDir?oY.join(r.sandboxTmpDir,`qla-pwd-ps-${r.id}`):nY(rY(),`qla-pwd-ps-${r.id}`),i=["","$_ec = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } elseif ($?) { 0 } else { 1 }",`(Get-Location).Path | Out-File -FilePath '${n.replace(/'/g,"''")}' -Encoding utf8 -NoNewline`,"exit $_ec"].join(`
690
690
  ; `),s=e+i;return{commandString:r.useSandbox?[`'${t.replace(/'/g,"'\\''")}'`,"-NoProfile","-NonInteractive","-EncodedCommand",jD(s)].join(" "):s,cwdFilePath:n}},getSpawnArgs(e){return iY(e)},async getEnvironmentOverrides(e){return{QLOGICAGENT:"1"}}}}var LD=new Set(["find","grep","rg","ag","ack","locate","which","whereis"]),UD=new Set(["cat","head","tail","less","more","wc","stat","file","strings","jq","awk","cut","sort","uniq","tr"]),FD=new Set(["ls","tree","du"]);var HD=new Set(["mv","cp","rm","mkdir","rmdir","chmod","chown","chgrp","touch","ln","cd","export","unset","wait"]);function sY(t){let r=t.replace(/\\\n/g," ").trim().split(/[|;&]/).shift()?.trim()??"";if(!r)return null;let n=r.split(/\s+/),o=0;for(;o<n.length&&/^[A-Za-z_]\w*=/.test(n[o]);)o++;let i=/^(?:timeout|time|nice|nohup|stdbuf|command|builtin|exec)$/;for(;o<n.length;){let c=n[o];if(i.test(c)){for(o++;o<n.length&&/^[-+]/.test(n[o]);)o++;o<n.length&&/^\d+(?:\.\d+)?[smhd]?$/.test(n[o])&&o++;continue}break}if(o>=n.length)return null;let s=n[o],a=s.lastIndexOf("/");return a>=0?s.slice(a+1):s}function zD(t){return/(?:^|[;&|])\s*(?:cd|pushd|popd)\b/.test(t)}function KS(t){let e=sY(t),r=e!==null&&LD.has(e),n=e!==null&&UD.has(e),o=e!==null&&FD.has(e),i=e!==null&&HD.has(e),s=/(?:[^2]>|^>|\|>)/.test(t),a=zD(t),c=(r||n||o)&&!s&&!a;return{firstCommand:e,isSearch:r,isRead:n,isList:o,isSilent:i,isConcurrencySafe:c,isReadOnly:c}}function VS(t){return/(?:^|[;&|])\s*sleep\s+\d/i.test(t)?"sleep command blocks execution \u2014 use run_in_background: true":/\bwhile\s+(?:true|:|\[\s*1\s*\])\b/.test(t)?"infinite loop \u2014 use run_in_background: true or monitor tool":null}var aY=[{pattern:/\bgit\s+reset\s+--hard\b/,warning:"Note: may discard uncommitted changes"},{pattern:/\bgit\s+push\b[^;&|\n]*[ \t](--force|--force-with-lease|-f)\b/,warning:"Note: may overwrite remote history"},{pattern:/\bgit\s+clean\b(?![^;&|\n]*(?:-[a-zA-Z]*n|--dry-run))[^;&|\n]*-[a-zA-Z]*f/,warning:"Note: may permanently delete untracked files"},{pattern:/\bgit\s+checkout\s+(--\s+)?\.[ \t]*($|[;&|\n])/,warning:"Note: may discard all working tree changes"},{pattern:/\bgit\s+restore\s+(--\s+)?\.[ \t]*($|[;&|\n])/,warning:"Note: may discard all working tree changes"},{pattern:/\bgit\s+stash[ \t]+(drop|clear)\b/,warning:"Note: may permanently remove stashed changes"},{pattern:/\bgit\s+branch\s+(-D[ \t]|--delete\s+--force|--force\s+--delete)\b/,warning:"Note: may force-delete a branch"},{pattern:/\bgit\s+(commit|push|merge)\b[^;&|\n]*--no-verify\b/,warning:"Note: may skip safety hooks"},{pattern:/\bgit\s+commit\b[^;&|\n]*--amend\b/,warning:"Note: may rewrite the last commit"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*[rR][a-zA-Z]*f|(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*f[a-zA-Z]*[rR]/,warning:"Note: may recursively force-remove files"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*[rR]/,warning:"Note: may recursively remove files"},{pattern:/(^|[;&|\n]\s*)rm\s+-[a-zA-Z]*f/,warning:"Note: may force-remove files"},{pattern:/\b(DROP|TRUNCATE)\s+(TABLE|DATABASE|SCHEMA)\b/i,warning:"Note: may drop or truncate database objects"},{pattern:/\bDELETE\s+FROM\s+\w+[ \t]*(;|"|'|\n|$)/i,warning:"Note: may delete all rows from a database table"},{pattern:/\bkubectl\s+delete\b/,warning:"Note: may delete Kubernetes resources"},{pattern:/\bterraform\s+destroy\b/,warning:"Note: may destroy Terraform infrastructure"}],cY=[{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Recurse\b[^|;&\n}]*-Force\b/i,warning:"Note: may recursively force-remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Force\b[^|;&\n}]*-Recurse\b/i,warning:"Note: may recursively force-remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Recurse\b/i,warning:"Note: may recursively remove files"},{pattern:/(?:^|[|;&\n({])\s*(Remove-Item|rm|del|rd|rmdir|ri)\b[^|;&\n}]*-Force\b/i,warning:"Note: may force-remove files"},{pattern:/\bClear-Content\b[^|;&\n]*\*/i,warning:"Note: may clear content of multiple files"},{pattern:/\bFormat-Volume\b/i,warning:"Note: may format a disk volume"},{pattern:/\bClear-Disk\b/i,warning:"Note: may clear a disk"},{pattern:/\bgit\s+reset\s+--hard\b/i,warning:"Note: may discard uncommitted changes"},{pattern:/\bgit\s+push\b[^|;&\n]*\s+(--force|--force-with-lease|-f)\b/i,warning:"Note: may overwrite remote history"},{pattern:/\bgit\s+clean\b(?![^|;&\n]*(?:-[a-zA-Z]*n|--dry-run))[^|;&\n]*-[a-zA-Z]*f/i,warning:"Note: may permanently delete untracked files"},{pattern:/\bgit\s+stash\s+(drop|clear)\b/i,warning:"Note: may permanently remove stashed changes"},{pattern:/\b(DROP|TRUNCATE)\s+(TABLE|DATABASE|SCHEMA)\b/i,warning:"Note: may drop or truncate database objects"},{pattern:/\bStop-Computer\b/i,warning:"Note: will shut down the computer"},{pattern:/\bRestart-Computer\b/i,warning:"Note: will restart the computer"},{pattern:/\bClear-RecycleBin\b/i,warning:"Note: permanently deletes recycled files"}];function Da(t){for(let{pattern:e,warning:r}of aY)if(e.test(t))return r;return null}function $a(t){for(let{pattern:e,warning:r}of cY)if(e.test(t))return r;return null}var lY=t=>({isError:t!==0,message:t!==0?`Command failed with exit code ${t}`:void 0}),dY=new Map([["grep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["rg",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["egrep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["fgrep",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["ag",t=>({isError:t>=2,message:t===1?"No matches found":void 0})],["find",t=>({isError:t>=2,message:t===1?"Some directories were inaccessible":void 0})],["diff",t=>({isError:t>=2,message:t===1?"Files differ":void 0})],["test",t=>({isError:t>=2,message:t===1?"Condition is false":void 0})],["[",t=>({isError:t>=2,message:t===1?"Condition is false":void 0})],["cmp",t=>({isError:t>=2,message:t===1?"Files differ":void 0})]]);function uY(t){let e=t.trim(),r=e.split(/\s*\|\s*/);return(r[r.length-1]??e).trim().split(/\s+/)[0]??""}function ZS(t,e,r,n){let o=uY(t);return(dY.get(o)??lY)(e,r,n)}var JS=137,BD=143,pY=5e3,XS=5*1024*1024*1024,Pu=class{#e;#r;#o;#i=!1;constructor(e,r,n){this.#e=e,this.#r=r,this.#o=n,e.setEncoding("utf-8"),e.on("data",this.#t)}#t=e=>{let r=typeof e=="string"?e:e.toString();this.#o?this.#r.writeStderr(r):this.#r.writeStdout(r)};cleanup(){this.#i||(this.#i=!0,this.#e.removeListener("data",this.#t),this.#e=null,this.#r=null)}},YS=class t{#e="running";#r;#o;#i;#t;#s=null;#n=null;#a=!1;#d;#c;#u;#g;#v;#p=null;#m=null;#l=null;taskOutput;result;onTimeout;constructor(e,r,n,o,i=!1,s=XS){this.#t=e,this.#c=r,this.#g=n,this.#v=i,this.#d=s,this.taskOutput=o,this.#i=e.stderr?new Pu(e.stderr,o,!0):null,this.#o=e.stdout?new Pu(e.stdout,o,!1):null,i&&(this.onTimeout=a=>{this.#u=a}),this.result=this.#T()}get status(){return this.#e}static#k(e){e.#v&&e.#u?e.#u(e.background.bind(e)):e.#y(BD)}#S(){this.#c.reason!=="interrupt"&&this.kill()}#w(e,r){let n=e??(r==="SIGTERM"?144:1);this.#f(n)}#x(){this.#f(1)}#f(e){this.#m&&(this.#m(e),this.#m=null)}#h(){this.#b(),this.#s&&(clearTimeout(this.#s),this.#s=null),this.#l&&(this.#c.removeEventListener("abort",this.#l),this.#l=null)}#b(){this.#n&&(clearInterval(this.#n),this.#n=null)}#R(){this.#n=setInterval(()=>{import("node:fs/promises").then(({stat:e})=>e(this.taskOutput.path).then(r=>{r.size>this.#d&&this.#e==="backgrounded"&&this.#n!==null&&(this.#a=!0,this.#b(),this.#y(JS))},()=>{}))},pY),this.#n.unref?.()}#T(){this.#l=this.#S.bind(this),this.#c.addEventListener("abort",this.#l,{once:!0}),this.#t.once("exit",this.#w.bind(this)),this.#t.once("error",this.#x.bind(this)),this.#s=setTimeout(t.#k,this.#g,this);let e=new Promise(r=>{this.#m=r});return new Promise(r=>{this.#p=r,e.then(this.#P.bind(this))})}async#P(e){this.#h(),(this.#e==="running"||this.#e==="backgrounded")&&(this.#e="completed");let r=await this.taskOutput.getStdout(),n={code:e,stdout:r,stderr:this.taskOutput.getStderr(),interrupted:e===JS,backgroundTaskId:this.#r};this.taskOutput.stdoutToFile&&!this.#r&&(this.taskOutput.outputFileRedundant?this.taskOutput.deleteOutputFile():(n.outputFilePath=this.taskOutput.path,n.outputFileSize=this.taskOutput.outputFileSize)),this.#a?n.stderr=`Background command killed: output file exceeded ${XS} bytes. ${n.stderr}`:e===BD&&(n.stderr=`Command timed out after ${this.#g}ms. ${n.stderr}`),this.#p&&(this.#p(n),this.#p=null)}#y(e){this.#e="killed";let r=this.#t.pid;if(r)try{if(process.platform==="win32")import("node:child_process").then(({execSync:n})=>{try{n(`taskkill /PID ${r} /T /F`,{stdio:"ignore"})}catch{}});else try{process.kill(-r,"SIGKILL")}catch{try{process.kill(r,"SIGKILL")}catch{}}}catch{try{this.#t.kill("SIGKILL")}catch{}}this.#f(e??JS)}kill(){this.#y()}background(e){return this.#e==="running"?(this.#r=e,this.#e="backgrounded",this.#h(),this.taskOutput.stdoutToFile?this.#R():this.taskOutput.spillToDisk(),!0):!1}cleanup(){this.#o?.cleanup(),this.#i?.cleanup(),this.taskOutput.clear(),this.#h(),this.#t=null,this.#c=null,this.#u=void 0}};function QS(t,e,r,n,o=!1,i=XS){return new YS(t,e,r,n,o,i)}function Au(t,e){let r=new Yn(sn("local_bash"),null);return{status:"killed",result:Promise.resolve({code:e?.code??145,stdout:"",stderr:e?.stderr??"Command aborted before execution",interrupted:!0,backgroundTaskId:t}),taskOutput:r,background:()=>!1,kill:()=>{},cleanup:()=>{}}}function ew(t){let e=new Yn(sn("local_bash"),null);return{status:"completed",result:Promise.resolve({code:1,stdout:"",stderr:t,interrupted:!1,preSpawnError:t}),taskOutput:e,background:()=>!1,kill:()=>{},cleanup:()=>{}}}var mY=new Set(["API_KEY","ANTHROPIC_API_KEY","OPENAI_API_KEY","DEEPSEEK_API_KEY","DOUBAO_API_KEY","MINIMAX_API_KEY","GLM_API_KEY","KIMI_API_KEY","QWEN_API_KEY","MOONSHOT_API_KEY","ZHIPU_API_KEY","BAICHUAN_API_KEY","VOLCENGINE_API_KEY","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","GOOGLE_APPLICATION_CREDENTIALS","AZURE_CLIENT_SECRET","AZURE_CLIENT_ID","AZURE_TENANT_ID","ACTIONS_ID_TOKEN_REQUEST_TOKEN","ACTIONS_RUNTIME_TOKEN","GITHUB_TOKEN","GH_TOKEN","GITLAB_TOKEN","CI_JOB_TOKEN","DATABASE_URL","REDIS_URL","REDIS_PASSWORD"]),gY=["_SECRET","_TOKEN","_PASSWORD","_CREDENTIAL","_API_KEY","SECRET_","TOKEN_","PASSWORD_","CREDENTIAL_","_AUTH_","PRIVATE_KEY"];function tw(){let t={...process.env};for(let e of Object.keys(t))fY(e)&&delete t[e];return t}function fY(t){if(mY.has(t))return!0;let e=t.toUpperCase();for(let r of gY)if(e.includes(r))return!0;return!1}import{spawn as bY}from"node:child_process";import{constants as _u,readFileSync as kY,unlinkSync as SY}from"node:fs";import{mkdir as KD,open as wY,realpath as VD}from"node:fs/promises";import{isAbsolute as xY,resolve as RY}from"node:path";function hY(t){return`"${t.replaceAll('"','\\"')}"`}function qD(t,e){let r=t.map(n=>` (subpath ${hY(n)})`).join(`
691
691
  `);return["(version 1)","(deny default)","(allow process-fork)","(allow process-exec*)","(allow signal (target self))","(allow sysctl-read)","(allow mach-lookup)","(allow file-read*)",'(allow file-write-data (literal "/dev/null") (literal "/dev/dtracehelper"))','(allow file-write* (subpath "/dev/tty"))','(allow file-write* (subpath "/private/tmp") (subpath "/private/var/tmp"))',t.length?`(allow file-write*
692
692
  ${r})`:"",e==="deny"?"(deny network*)":"(allow network*)",""].filter(Boolean).join(`
@@ -853,7 +853,7 @@ ${u}`}function Zee(t){if(!t)return"none";switch(t.type){case"manual":return"manu
853
853
  `)}],details:{type:"file_upload",fileId:n.fileId,url:n.url,filename:n.filename,bytes:n.bytes,provider:n.provider}}}}}var Nte="file_query",Ote={type:"object",properties:{file_id:{type:"string",description:"Query a specific file by ID. If omitted, lists recent uploaded files."},limit:{type:"number",description:"Max number of files to list when file_id is omitted. Default: 10, max: 100."}},required:[]};function CO(t){return{name:Nte,label:"File Query",searchHint:"query list uploaded file material status \u7D20\u6750 \u67E5\u8BE2 \u5DF2\u4E0A\u4F20",description:"Query or list uploaded files from the provider's Files API. Use file_id to get info on a specific file, or omit to list recent uploads. Returns file ID, name, size, status, and URL (if available).",parameters:Ote,execute:async(e,r)=>{if(r.file_id){let s=await t.queryFile({fileId:r.file_id}),a=[`File: ${s.filename}`,`ID: ${s.id}`,`Size: ${lx(s.bytes)}`,`Status: ${s.status}`];return s.url&&a.push(`URL: ${s.url}`),s.createdAt&&a.push(`Created: ${s.createdAt}`),{content:[{type:"text",text:a.join(`
854
854
  `)}],details:{type:"file_query",fileId:s.id}}}let n=Math.min(Math.max(r.limit??10,1),100),o=await t.listFiles({limit:n});if(o.length===0)return{content:[{type:"text",text:"No uploaded files found."}],details:{type:"file_query",count:0}};let i=[`Found ${o.length} file(s):
855
855
  `];for(let s of o)i.push(`- ${s.filename} | ID: ${s.id} | ${lx(s.bytes)} | ${s.status}${s.url?` | ${s.url}`:""}`);return{content:[{type:"text",text:i.join(`
856
- `)}],details:{type:"file_query",count:o.length}}}}}var jte="file_delete",Lte={type:"object",properties:{file_id:{type:"string",description:"ID of the uploaded file to delete."}},required:["file_id"]};function EO(t){return{name:jte,label:"File Delete",isDelete:!0,searchHint:"delete remove uploaded file material \u7D20\u6750 \u5220\u9664 \u6E05\u7406\u4E0A\u4F20",description:"Delete a previously uploaded file from the provider's Files API. Use the file ID returned by file_upload or file_query.",parameters:Lte,execute:async(e,r)=>(await t.deleteFile({fileId:r.file_id}),{content:[{type:"text",text:`Deleted file ${r.file_id}`}],details:{type:"file_delete",fileId:r.file_id}})}}function lx(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}import*as us from"node:fs";import*as Sp from"node:path";function Ute(t){return"user_data"}function Fte(t={}){let e=t.createGeminiFileApi??n0,r=t.isVolcengineFileTransport??r0,n=a=>{if(a.mediaClient)for(let[,c]of Object.entries(a.mediaProviders)){if(!c)continue;let l=a.mediaClient.getTransport(c.provider),u=to(a.mediaApiKeys,c.provider);if(r(l)&&u)return{id:c.provider,type:"volcengine"}}if(a.mediaApiKeys.google)return{id:"google",type:"gemini"}},o=a=>{let c=n(a);if(!c)throw new Error("No file API provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).");return c},i=(a,c)=>{let l=a.mediaClient?.getTransport(c);if(!r(l))throw new Error(`File API only supported via Volcengine or Google provider. Current: ${c}`);return l},s=(a,c)=>{let l=to(a.mediaApiKeys,c);if(!l)throw new Error(`No API key for file API provider: ${c}`);return l};return{resolveProvider:n,uploadFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let f=e(),h=a.mediaApiKeys.google,y=await f.uploadFile(c.buffer,h,{mimeType:c.mimeType,displayName:c.filename}),S=y.state==="PROCESSING"?await f.waitForProcessing(y.name,h):y;return{fileId:S.name,url:S.uri,filename:c.filename,bytes:c.bytes,provider:"google"}}let u=i(a,l.id),p=s(a,l.id),m=await u.uploadFile(new Blob([c.buffer]),p,{purpose:Ute(c.purpose),filename:c.filename}),g=m.url??m.fileId??m.id;try{let f=await u.getFile(m.id,p);typeof f.url=="string"&&f.url&&(g=f.url)}catch{}return{fileId:m.id,url:g,filename:c.filename,bytes:c.bytes,provider:l.id}},queryFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let m=await e().getFile(c,a.mediaApiKeys.google);return MO(m)}let p=await i(a,l.id).getFile(c,s(a,l.id));return DO(p,c)},listFiles:async(a,c)=>{let l=o(a);return l.type==="gemini"?(await e().listFiles(a.mediaApiKeys.google,{pageSize:c})).files.map(MO):((await i(a,l.id).listFiles(s(a,l.id),{limit:c})).data??[]).map(m=>DO(m))},deleteFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){await e().deleteFile(c,a.mediaApiKeys.google);return}await i(a,l.id).deleteFile(c,s(a,l.id))}}}var dx=Fte();function MO(t){return{id:t.name,filename:t.displayName??"",bytes:Number(t.sizeBytes??0),status:t.state?.toLowerCase()??"unknown",createdAt:t.createTime,url:t.uri}}function DO(t,e=""){return{id:String(t.id??e),filename:String(t.filename??""),bytes:Number(t.bytes??0),status:String(t.status??"unknown"),createdAt:t.created_at?String(t.created_at):void 0,url:t.url?String(t.url):void 0}}function $O(t){let e=t.maxUploadBytes??104857600,r=t.mediaFileApiService??dx;return{isAvailable:()=>NO(t.getContext(),r),uploadFile:async n=>{kp(t.getContext(),r,"upload");let o=t.resolvePath(n.filePath);if(!us.existsSync(o))throw new Error(`File not found: ${o}`);let i=us.statSync(o);if(i.size>e)throw new Error(`File too large (${(i.size/1024/1024).toFixed(1)} MB). Max: ${(e/1024/1024).toFixed(0)} MB.`);let s=await us.promises.readFile(o),a=Sp.basename(o),c=Sp.extname(o).toLowerCase();return r.uploadFile(t.getContext(),{buffer:Buffer.from(s),filename:a,bytes:i.size,mimeType:Hte[c]??"application/octet-stream",purpose:n.purpose??"media_reference"})},queryFile:async n=>(kp(t.getContext(),r,"query"),r.queryFile(t.getContext(),n.fileId)),listFiles:async n=>(kp(t.getContext(),r,"list"),r.listFiles(t.getContext(),n.limit??10)),deleteFile:async n=>{kp(t.getContext(),r,"delete"),await r.deleteFile(t.getContext(),n.fileId)}}}function NO(t,e=dx){return!!e.resolveProvider(t)}function kp(t,e,r){if(!NO(t,e))throw new Error(`No file ${r} provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).`)}var Hte={".pdf":"application/pdf",".txt":"text/plain",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".ts":"text/plain",".json":"application/json",".xml":"application/xml",".csv":"text/csv",".md":"text/markdown",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".svg":"image/svg+xml",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};var LO={id:"local-media-tools",kind:"media",register:zte};function zte(t){let e=t.tools;e.push({...YD({generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,n:n.n,quality:n.quality,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("image")}),e.push({...x$({resolveOutputDir:n=>{let o=n?.trim()?OO(t,n):jO.join(t.activeProjectRoot(),".qlogicagent","petdex-assets"),i=Zt(o);if(i)throw new Error(i);return o},generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,referenceImages:n.referenceImages?.map(i=>i.imageUrl),n:n.n,quality:n.quality});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isEnabled:()=>Yu("image","img2img")}),e.push({...QD({textToSpeech:async n=>{let o=await Et({mediaType:"tts",model:"",prompt:"",text:n.text,channel:n.channel,voice:n.voice,speed:n.speed});return{audioPath:"",provider:o.model,mediaUrls:o.mediaUrls}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("tts")}),e.push({...e$({generateVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,imageUrl:n.imageUrl,referenceVideos:n.referenceVideos,referenceAudios:n.referenceAudios,generateAudio:n.generateAudio,aspectRatio:n.aspectRatio,duration:n.duration,resolution:n.resolution,fps:n.fps,seed:n.seed,cameraFixed:n.cameraFixed,returnLastFrame:n.returnLastFrame,draft:n.draft,serviceTier:n.serviceTier,callbackUrl:n.callbackUrl,safetyIdentifier:n.safetyIdentifier,executionExpiresAfterSeconds:n.executionExpiresAfterSeconds,videoTools:n.videoTools});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,lastFrameUrl:o.lastFrameUrl,taskId:o.taskId}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("video")}),e.push({...t$({generateMusic:async n=>{let o=await Et({mediaType:"music",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,lyrics:n.lyrics,duration:n.duration,isInstrumental:n.isInstrumental,audioUrl:n.audioUrl,audioFormat:n.audioFormat});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}},generateLyrics:l0}),isConcurrencySafe:!0,isEnabled:()=>Mt("music")}),e.push({...wO({editVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,operation:"edit",sourceVideos:n.sourceVideos,referenceImages:n.referenceImages,duration:n.duration,aspectRatio:n.aspectRatio,resolution:n.resolution});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Xu("video","edit")}),e.push({...xO({mergeVideos:async n=>{let o=[`merge ${n.clips.length} clips`];n.transition&&o.push(`transition: ${n.transition}${n.transitionDuration?` (${n.transitionDuration}s)`:""}`),n.subtitles&&o.push(`burn-in subtitles: ${n.subtitles}`),n.bgm&&o.push(`background music: ${n.bgm}${n.bgmVolume!==void 0?` at volume ${n.bgmVolume}`:""}`);let i=await Et({mediaType:"video",model:"",prompt:o.join("; "),operation:"merge",sourceVideos:n.clips.map(s=>s.video),resolution:n.outputResolution,fps:n.outputFps});return{localPath:"",servePath:i.mediaUrls[0]??"",durationSec:(i.durationMs??0)/1e3,clipCount:n.clips.length,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","merge")}),e.push({...RO({upscaleVideo:async n=>{let o=["upscale"];n.sharpness&&o.push(`sharpness: ${n.sharpness}`);let i=await Et({mediaType:"video",model:"",prompt:o.join(", "),operation:"upscale",sourceVideos:[n.video],resolution:n.targetResolution??"1080p"});return{localPath:"",servePath:i.mediaUrls[0]??"",resolution:n.targetResolution??"1080p",durationSec:(i.durationMs??0)/1e3,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","upscale")}),e.push({...TO({generate3D:async n=>{let o=await Et({mediaType:"3d",model:"",prompt:n.prompt,imageUrl:n.imageUrl,outputFormat:n.outputFormat,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,metadata:o.metadata}}}),isConcurrencySafe:!0,shouldDefer:!0,isEnabled:()=>Mt("3d")}),e.push({...PO({speechToText:async n=>{let o=await Et({mediaType:"stt",model:"",prompt:"",audioUrl:n.audioUrl,metadata:n.language?{language:n.language}:void 0});return{transcription:o.metadata?.transcription??"",model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("stt")}),e.push({...AO({cloneVoice:async n=>{let o=await Et({mediaType:"voice_clone",model:"",prompt:"",text:n.text,audioUrl:n.sampleAudioUrl,speed:n.speed});return{mediaUrls:o.mediaUrls,model:o.model,voiceId:o.metadata?.voiceId,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("voice_clone")}),e.push({...IO({cancelTask:d0}),shouldDefer:!0,isEnabled:()=>Mt("video")||Mt("3d")});let r=$O({getContext:Ju,resolvePath:n=>OO(t,n)});e.push({..._O(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...CO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...EO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()})}function OO(t,e){return za(e,t.getCwd())}var HO=null;function zO(t){HO=t}function qte(){if(process.platform!=="darwin")return!1;try{return Bte("which",["sandbox-exec"],{stdio:"ignore"}),!0}catch{return!1}}function Wte(){let t=HO?.();if(!t)return;let e=FO.tmpdir();return{mode:t.mode,workdir:t.workdir,allowedDirs:t.communityTurn?[]:t.allowedDirs,bookkeepingDirs:[Fo(),e],tmpDir:mx.join(e,"qla-sandbox"),helperPath:ND(),sandboxExecAvailable:qte(),netPolicy:t.communityTurn?"deny":"allow"}}var BO=null,qO;function WO(t){qO=t}var GO=null;function KO(t){GO=t}function VO(t){BO=t}function ZO(t){Eu(t)}function ux(){return ye()?.workspaceDir??zr()}var UO=!1;function Gte(){if(!UO)if(UO=!0,Ho()){let t=process.env.QLOGICAGENT_POWERSHELL_PATH??"powershell.exe";Na(GS(t))}else if(process.platform==="win32"){let t=Kte();Na(Tu(t))}else{let t=process.env.SHELL?.endsWith("bash")?process.env.SHELL:"/bin/bash";Na(Tu(t))}}function Kte(){let t=process.env.QLOGICAGENT_BASH_PATH;if(t&&px.existsSync(t))return t;let e=["C:\\Program Files\\Git\\bin\\bash.exe","C:\\Program Files (x86)\\Git\\bin\\bash.exe"],r=process.env.ProgramFiles?mx.join(process.env.ProgramFiles,"Git","bin","bash.exe"):null;r&&!e.includes(r)&&e.unshift(r);for(let n of e)if(px.existsSync(n))return n;return"bash"}var Vte={task:"orchestration",ask_user:"orchestration",exec:"developer",read:"filesystem",write:"filesystem",edit:"filesystem",patch:"filesystem",search:"search",web_fetch:"web",web_search:"web",web_answer:"web",web_research:"web",instructions:"filesystem",worktree:"developer",notebook_edit:"developer",workflow:"automation",sleep:"automation",tool_search:"search",[Oa]:"media",[hw]:"media",tts:"media",[ja]:"media",[La]:"media",video_edit:"media",video_merge:"media",video_upscale:"media",three_d_generate:"media",stt:"media",voice_clone:"media",media_cancel:"media",file_upload:"filesystem",file_query:"filesystem",file_delete:"filesystem"};function Zte(t){for(let e of t)e.category??=Vte[e.name]??"other",e.displayName??={key:`capability.tool.${e.name}.name`,fallback:e.label},e.displayDescription??={key:`capability.tool.${e.name}.description`,fallback:""}}function JO(t){let e=t?.toolCatalog??zo(),r=()=>e.getToolNames(),n=s=>e.findTool(s),o=s=>e.activateTool(s);Gte(),t?.workdir&&Eu(t.workdir);let i=[];return xN.register({tools:i,taskToolHooks:qO,backgroundTaskRuntime:GO,askUserCallback:BO,onExecProgress:t?.onExecProgress,getCwd:zr,activeProjectRoot:ux,resolveSandboxConfig:Wte,pathService:t?.pathService,log:t?.log,listToolNames:r,findRegisteredTool:n,activateRegisteredTool:o}),K0.register({tools:i,resolveClientForPurpose:t?.resolveClientForPurpose}),SO.register({tools:i,activeProjectRoot:ux}),LO.register({tools:i,getCwd:zr,activeProjectRoot:ux}),Zte(i),e.setTools(i),t?.log?.info(`[tool-bootstrap] Registered ${i.length} local tools (${i.filter(s=>s.isEnabled?.()!==!1).length} enabled): ${r().join(", ")}`),i}function qr(t){return M$(t)}function XO(t){return{getAllBaseTools:e=>JO({...e,toolCatalog:e?.toolCatalog??t}),setWorkdir:ZO}}var Jte=new Set(Ru.map(t=>t.name)),Xte=new Map(Ru.map(t=>[t.name,t])),Yte=new Set(["permissionMode","permissionRules","defaultBehavior"]);function QO(t){let e=t.params;this.syncToolListMediaConfig?.();let r=this.toolCatalog??qr(),o=(e?.includeUnavailable?r.getToolNames().flatMap(s=>{let a=r.findTool(s);return a?[{type:"function",function:{name:a.name,description:a.description,parameters:a.parameters}}]:[]}):r.getToolManifest(e?.includeDeferred??!1)).map(s=>{let a=r.findTool(s.function.name),c=Xte.get(s.function.name)?.category??a?.category??"other";return{id:s.function.name,name:s.function.name,category:c,displayName:a?.displayName??{key:`capability.tool.${s.function.name}.name`,fallback:a?.label??s.function.name},displayDescription:a?.displayDescription??{key:`capability.tool.${s.function.name}.description`,fallback:""},fallbackName:a?.label??s.function.name,fallbackDescription:"",description:s.function.description??"",parameters:s.function.parameters,deferred:!!a?.shouldDefer,enabled:a?.isEnabled?.()!==!1,sessionScoped:Jte.has(s.function.name)||s.function.name.startsWith("mcp__"),source:"builtin"}}),i=new Set(o.map(s=>s.name));for(let s of Ru)i.has(s.name)||o.push({id:s.name,name:s.name,category:s.category,displayName:{key:`capability.tool.${s.name}.name`,fallback:s.label},displayDescription:{key:`capability.tool.${s.name}.description`,fallback:""},fallbackName:s.label,fallbackDescription:"",description:"",parameters:{type:"object",properties:{}},deferred:s.deferred??!1,enabled:!0,sessionScoped:!0,source:"builtin"});if(e?.category){let s=o.filter(a=>a.category===e.category);t.id!==void 0&&this.sendResponse(t.id,{tools:s,total:s.length})}else t.id!==void 0&&this.sendResponse(t.id,{tools:o,total:o.length})}function ej(t){let e=z().listProviderDefs(),r=new Map;for(let o of e){let i=o.group??o.id;r.has(i)||r.set(i,[]);let s=!!z().resolveProviderApiKey(o.id);r.get(i).push({id:o.id,name:o.name,transport:o.transport,baseUrl:o.baseUrl,defaultModel:o.defaultModel,modelCount:o.models?.length??0,available:s})}let n=[...r.entries()].map(([o,i])=>({group:o,variants:i}));t.id!==void 0&&this.sendResponse(t.id,{providers:n})}function tj(t){try{let r=z().exportConfig(),n=ut(),o={};try{o=JSON.parse(Go.readFileSync(n,"utf-8"))}catch{}t.id!==void 0&&this.sendResponse(t.id,{config:{...Qte(o),providers:tre(r.providers),models:r.models,bindings:r.bindings,permissions:oj(o.permissions)},paths:{userSettings:ut(),agentHome:ae()},permissionModel:MD()})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}function Qte(t){let e={};for(let[r,n]of Object.entries(t)){if(fx.has(r)||Yte.has(r))continue;let o=gx(r,n);o!==void 0&&(e[r]=o)}return e}function gx(t,e){if(ere(t))return typeof e=="string"?rj(e):"[REDACTED]";if(Array.isArray(e))return e.map(r=>gx(t,r));if(e&&typeof e=="object"){let r={};for(let[n,o]of Object.entries(e)){if(fx.has(n))continue;let i=gx(n,o);i!==void 0&&(r[n]=i)}return r}return e}function ere(t){return/(?:apiKey|key|token|secret|credential|authorization|password)/i.test(t)}function tre(t){return t.map(e=>({providerId:e.providerId,baseUrl:e.baseUrl,strategy:e.strategy,keys:e.keys.map(r=>{let n={id:r.id,maskedKey:rj(r.key),weight:r.weight,enabled:r.enabled};return r.label&&(n.label=r.label),n}),...e.rateLimit?{rateLimit:e.rateLimit}:{}}))}function rj(t){return t.length<=8?"****":`${t.slice(0,3)}***${t.slice(-4)}`}var fx=new Set(["providers","models","bindings","provider","model","apiKey","baseUrl","providerKeys"]);async function nj(t){let e=t.params;if(!e?.updates||typeof e.updates!="object"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"updates (object) is required."});return}let r=[],n={};for(let[o,i]of Object.entries(e.updates))fx.has(o)?r.push({key:o,reason:"Use settings.* RPC methods for model/key management"}):n[o]=o==="permissions"?oj(i):i;if(r.length>0&&Object.keys(n).length===0){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:`Rejected keys: ${r.map(o=>o.key).join(", ")}. Use settings.* RPC for model management.`});return}try{let o=ut(),i={};try{let s=await Go.promises.readFile(o,"utf-8");i=JSON.parse(s)}catch{}Object.assign(i,n),await Go.promises.mkdir(YO.dirname(o),{recursive:!0}),await Go.promises.writeFile(o,JSON.stringify(i,null,2),"utf-8"),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,applied:Object.keys(n),rejected:r})}catch(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:o instanceof Error?o.message:String(o)})}}function oj(t){if(!t||typeof t!="object")return;let e=t.mode;if(e==="default"||e==="auto"||e==="full_access")return{mode:e}}function ij(t){try{let e=gr(),r=ut(),n={};try{let o=Go.readFileSync(r,"utf-8"),i=JSON.parse(o);i.tunables&&typeof i.tunables=="object"&&(n=i.tunables)}catch{}t.id!==void 0&&this.sendResponse(t.id,{defaults:e,overrides:n})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function sj(t){let e=t.params,r=e?.key,n=e?.value;if(!r||typeof r!="string"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"Missing required param: key (string)"});return}let o=wu(r,n);if(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:o});return}try{await xu(ut(),r,n),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,key:r,value:n})}catch(i){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:i instanceof Error?i.message:String(i)})}}async function aj(t){let e=(this.toolCatalog??qr()).findTool("task");if(!e||typeof e.execute!="function"){t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:Ea([])});return}try{let o=(await e.execute("rpc-todos-list",{action:"list"},void 0)).details?.taskList??[];t.id!==void 0&&this.sendResponse(t.id,{items:o,summary:Ea(o)})}catch{t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:Ea([])})}}function cj(t){let r=t.params?.lifecycle??"all",n=this.taskStore.getAllTasks(),o=r==="all"?n:n.filter(i=>i.lifecycle===r);t.id!==void 0&&this.sendResponse(t.id,{tasks:o.map(i=>({taskId:i.taskId,type:i.type,lifecycle:i.lifecycle,label:i.label}))})}function lj(t){let e=t.params;if(!e?.taskId){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"taskId is required."});return}let n=this.taskStore.getAllTasks().find(i=>i.taskId===e.taskId);if(!n){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} not found.`});return}if(n.lifecycle!=="running"&&n.lifecycle!=="pending"){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} is already ${n.lifecycle}.`});return}let o=this.backgroundTasks.cancelTask(e.taskId);t.id!==void 0&&this.sendResponse(t.id,o?{ok:!0,message:`Task ${e.taskId} cancelled.`}:{ok:!1,message:`Task ${e.taskId} could not be cancelled.`})}var dj=["initialize","thread.create","thread.list","session.resume","session.getInfo","session.getMessages","memory.list","memory.read","memory.write","memory.search","memory.delete","memory.dream","tools.list","media.listModels","config.get","config.update","community.getConsent","community.setConsent","community.matchRegistry","community.listShared","community.withdrawShared","community.withdrawAllShared","community.listNotices","community.markNoticeRead","community.listPublishAudit","community.resolveInstall","community.installResource","community.publishSkill","community.publishPet","community.recordSignal","community.recordTelemetry","todos.list","tasks.list","tasks.cancel","agent.ping","agents.scan","agents.list","agents.config","agents.setConfig","agents.getConfig","agents.removeConfig","agents.setGateway","solo.start","solo.status","solo.cancel","solo.select","solo.list","solo.delete","solo.message","solo.evaluate","product.plan","product.confirm","product.message","product.create","product.resume","product.pause","product.checkpoint","product.status","product.list","product.delete","product.cancel","product.rollback","project.create","project.list","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","session.switchProject","session.getState","session.create","session.list","session.get","session.update","session.delete","session.archive","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","settings.listProviders","settings.addKey","settings.removeKey","settings.getKey","settings.toggleKey","settings.listModels","settings.setActiveModel","settings.getActiveModel","settings.getOverview","settings.refreshModels","settings.validateKey"];function uj(t){let e=t.params,r=e?.protocolVersion??"unknown",n=e?.host?.name??e?.hostName??"unknown",o=e?.host?.version??e?.hostVersion??"?",i=r.split(".")[0],s=wo.split(".")[0];if(i!==s){this.log(`[initialize] protocol mismatch: host=${r} agent=${wo}`),t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.PROTOCOL_MISMATCH,message:`Protocol version mismatch: host=${r}, agent=${wo}`});return}this.log(`[initialize] host=${n} v${o}`),t.id!==void 0&&this.sendResponse(t.id,{protocolVersion:wo,agent:{name:"qlogicagent",version:"0.1.0"},capabilities:{tools:this.toolCatalog.getToolManifest().map(a=>a.function.name),streaming:!0,threads:!0,notifications:["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.plan_update","turn.suggestions","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.media_result","turn.todos_updated","task.updated","turn.exec_progress","turn.artifact","tool.approval.request","turn.skill_instruction","turn.ask_user","memory.updated","session.info","permission.rule_updated","team.updated","turn.usage_update","pong"],methods:[...dj]}}),this.ensureDefaultProject()}function pj(t){t.id!==void 0&&this.sendResponse(t.id,{status:"ok"}),this.sendNotification("pong",{})}function mj(t){t.id!==void 0&&this.sendResponse(t.id,{ok:!0,status:this.running?"healthy":"stopping",uptimeMs:Date.now()-this.startedAt,protocolVersion:wo,version:this.packageVersion})}function gj(t){t.id!==void 0&&this.sendResponse(t.id,{rpc:this.rpcContract.metrics()})}function fj(t){let e=t.params,r=e?.requestId,n=typeof r=="string"?this.rpcContract.cancel(r,e?.reason??"host-cancelled"):!1;n&&this.activeTurn&&this.activeTurn.abort(),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,cancelled:n})}import*as Se from"node:fs";import*as vt from"node:path";se();Ge();import Dt from"node:fs";import Va from"node:path";var hj=bg,yj=kg,wp=class{dir;constructor(e){this.dir=yo(e)}list(){if(!Dt.existsSync(this.dir))return[];let e=[];for(let r of Dt.readdirSync(this.dir)){if(!r.endsWith(".md"))continue;let n=Va.join(this.dir,r);try{let o=Dt.statSync(n);if(!o.isFile())continue;let i=Dt.readFileSync(n,"utf8");e.push({filename:r,content:i,sizeBytes:o.size})}catch{}}return e}read(e){if(!this.isValidFilename(e))return null;let r=Va.join(this.dir,e);if(!Dt.existsSync(r))return null;try{let n=Dt.readFileSync(r,"utf8"),o=Dt.statSync(r);return{filename:e,content:n,sizeBytes:o.size}}catch{return null}}write(e,r){if(!this.isValidFilename(e))throw new Error("Invalid filename: must end with .md and contain no path separators");let n=Buffer.byteLength(r,"utf8");if(n>hj)throw new Error(`File too large: ${n} bytes exceeds ${hj} limit`);if(this.getDirSize(e)+n>yj)throw new Error(`Total instructions size would exceed ${yj} byte limit`);Dt.mkdirSync(this.dir,{recursive:!0});let i=Va.join(this.dir,e);return Dt.writeFileSync(i,r,"utf8"),{filename:e,content:r,sizeBytes:n}}remove(e){if(!this.isValidFilename(e))return!1;let r=Va.join(this.dir,e);return Dt.existsSync(r)?(Dt.unlinkSync(r),!0):!1}loadAll(){let e=this.list();return e.length===0?"":`<project-instructions>
856
+ `)}],details:{type:"file_query",count:o.length}}}}}var jte="file_delete",Lte={type:"object",properties:{file_id:{type:"string",description:"ID of the uploaded file to delete."}},required:["file_id"]};function EO(t){return{name:jte,label:"File Delete",isDelete:!0,searchHint:"delete remove uploaded file material \u7D20\u6750 \u5220\u9664 \u6E05\u7406\u4E0A\u4F20",description:"Delete a previously uploaded file from the provider's Files API. Use the file ID returned by file_upload or file_query.",parameters:Lte,execute:async(e,r)=>(await t.deleteFile({fileId:r.file_id}),{content:[{type:"text",text:`Deleted file ${r.file_id}`}],details:{type:"file_delete",fileId:r.file_id}})}}function lx(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}import*as us from"node:fs";import*as Sp from"node:path";function Ute(t){return"user_data"}function Fte(t={}){let e=t.createGeminiFileApi??n0,r=t.isVolcengineFileTransport??r0,n=a=>{if(a.mediaClient)for(let[,c]of Object.entries(a.mediaProviders)){if(!c)continue;let l=a.mediaClient.getTransport(c.provider),u=to(a.mediaApiKeys,c.provider);if(r(l)&&u)return{id:c.provider,type:"volcengine"}}if(a.mediaApiKeys.google)return{id:"google",type:"gemini"}},o=a=>{let c=n(a);if(!c)throw new Error("No file API provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).");return c},i=(a,c)=>{let l=a.mediaClient?.getTransport(c);if(!r(l))throw new Error(`File API only supported via Volcengine or Google provider. Current: ${c}`);return l},s=(a,c)=>{let l=to(a.mediaApiKeys,c);if(!l)throw new Error(`No API key for file API provider: ${c}`);return l};return{resolveProvider:n,uploadFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let f=e(),h=a.mediaApiKeys.google,y=await f.uploadFile(c.buffer,h,{mimeType:c.mimeType,displayName:c.filename}),S=y.state==="PROCESSING"?await f.waitForProcessing(y.name,h):y;return{fileId:S.name,url:S.uri,filename:c.filename,bytes:c.bytes,provider:"google"}}let u=i(a,l.id),p=s(a,l.id),m=await u.uploadFile(new Blob([c.buffer]),p,{purpose:Ute(c.purpose),filename:c.filename}),g=m.url??m.fileId??m.id;try{let f=await u.getFile(m.id,p);typeof f.url=="string"&&f.url&&(g=f.url)}catch{}return{fileId:m.id,url:g,filename:c.filename,bytes:c.bytes,provider:l.id}},queryFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){let m=await e().getFile(c,a.mediaApiKeys.google);return MO(m)}let p=await i(a,l.id).getFile(c,s(a,l.id));return DO(p,c)},listFiles:async(a,c)=>{let l=o(a);return l.type==="gemini"?(await e().listFiles(a.mediaApiKeys.google,{pageSize:c})).files.map(MO):((await i(a,l.id).listFiles(s(a,l.id),{limit:c})).data??[]).map(m=>DO(m))},deleteFile:async(a,c)=>{let l=o(a);if(l.type==="gemini"){await e().deleteFile(c,a.mediaApiKeys.google);return}await i(a,l.id).deleteFile(c,s(a,l.id))}}}var dx=Fte();function MO(t){return{id:t.name,filename:t.displayName??"",bytes:Number(t.sizeBytes??0),status:t.state?.toLowerCase()??"unknown",createdAt:t.createTime,url:t.uri}}function DO(t,e=""){return{id:String(t.id??e),filename:String(t.filename??""),bytes:Number(t.bytes??0),status:String(t.status??"unknown"),createdAt:t.created_at?String(t.created_at):void 0,url:t.url?String(t.url):void 0}}function $O(t){let e=t.maxUploadBytes??104857600,r=t.mediaFileApiService??dx;return{isAvailable:()=>NO(t.getContext(),r),uploadFile:async n=>{kp(t.getContext(),r,"upload");let o=t.resolvePath(n.filePath);if(!us.existsSync(o))throw new Error(`File not found: ${o}`);let i=us.statSync(o);if(i.size>e)throw new Error(`File too large (${(i.size/1024/1024).toFixed(1)} MB). Max: ${(e/1024/1024).toFixed(0)} MB.`);let s=await us.promises.readFile(o),a=Sp.basename(o),c=Sp.extname(o).toLowerCase();return r.uploadFile(t.getContext(),{buffer:Buffer.from(s),filename:a,bytes:i.size,mimeType:Hte[c]??"application/octet-stream",purpose:n.purpose??"media_reference"})},queryFile:async n=>(kp(t.getContext(),r,"query"),r.queryFile(t.getContext(),n.fileId)),listFiles:async n=>(kp(t.getContext(),r,"list"),r.listFiles(t.getContext(),n.limit??10)),deleteFile:async n=>{kp(t.getContext(),r,"delete"),await r.deleteFile(t.getContext(),n.fileId)}}}function NO(t,e=dx){return!!e.resolveProvider(t)}function kp(t,e,r){if(!NO(t,e))throw new Error(`No file ${r} provider available. Configure a media provider with Files API support (e.g. Volcengine, Google).`)}var Hte={".pdf":"application/pdf",".txt":"text/plain",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"text/javascript",".ts":"text/plain",".json":"application/json",".xml":"application/xml",".csv":"text/csv",".md":"text/markdown",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".svg":"image/svg+xml",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};var LO={id:"local-media-tools",kind:"media",register:zte};function zte(t){let e=t.tools;e.push({...YD({generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,n:n.n,quality:n.quality,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("image")}),e.push({...x$({resolveOutputDir:n=>{let o=n?.trim()?OO(t,n):jO.join(t.activeProjectRoot(),".qlogicagent","petdex-assets"),i=Zt(o);if(i)throw new Error(i);return o},generateImage:async n=>{let o=await Et({mediaType:"image",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,size:n.size,imageUrl:n.imageUrl,referenceImages:n.referenceImages?.map(i=>i.imageUrl),n:n.n,quality:n.quality});return{mediaUrls:o.mediaUrls,model:o.model,size:o.size,durationMs:o.durationMs}}}),isEnabled:()=>Yu("image","img2img")}),e.push({...QD({textToSpeech:async n=>{let o=await Et({mediaType:"tts",model:"",prompt:"",text:n.text,channel:n.channel,voice:n.voice,speed:n.speed});return{audioPath:"",provider:o.model,mediaUrls:o.mediaUrls}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("tts")}),e.push({...e$({generateVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,imageUrl:n.imageUrl,referenceVideos:n.referenceVideos,referenceAudios:n.referenceAudios,generateAudio:n.generateAudio,aspectRatio:n.aspectRatio,duration:n.duration,resolution:n.resolution,fps:n.fps,seed:n.seed,cameraFixed:n.cameraFixed,returnLastFrame:n.returnLastFrame,draft:n.draft,serviceTier:n.serviceTier,callbackUrl:n.callbackUrl,safetyIdentifier:n.safetyIdentifier,executionExpiresAfterSeconds:n.executionExpiresAfterSeconds,videoTools:n.videoTools});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,lastFrameUrl:o.lastFrameUrl,taskId:o.taskId}}}),isConcurrencySafe:!0,isEnabled:()=>Mt("video")}),e.push({...t$({generateMusic:async n=>{let o=await Et({mediaType:"music",model:"",prompt:n.prompt,purpose:n.purpose,style:n.style,lyrics:n.lyrics,duration:n.duration,isInstrumental:n.isInstrumental,audioUrl:n.audioUrl,audioFormat:n.audioFormat});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}},generateLyrics:l0}),isConcurrencySafe:!0,isEnabled:()=>Mt("music")}),e.push({...wO({editVideo:async n=>{let o=await Et({mediaType:"video",model:"",prompt:n.prompt,operation:"edit",sourceVideos:n.sourceVideos,referenceImages:n.referenceImages,duration:n.duration,aspectRatio:n.aspectRatio,resolution:n.resolution});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Xu("video","edit")}),e.push({...xO({mergeVideos:async n=>{let o=[`merge ${n.clips.length} clips`];n.transition&&o.push(`transition: ${n.transition}${n.transitionDuration?` (${n.transitionDuration}s)`:""}`),n.subtitles&&o.push(`burn-in subtitles: ${n.subtitles}`),n.bgm&&o.push(`background music: ${n.bgm}${n.bgmVolume!==void 0?` at volume ${n.bgmVolume}`:""}`);let i=await Et({mediaType:"video",model:"",prompt:o.join("; "),operation:"merge",sourceVideos:n.clips.map(s=>s.video),resolution:n.outputResolution,fps:n.outputFps});return{localPath:"",servePath:i.mediaUrls[0]??"",durationSec:(i.durationMs??0)/1e3,clipCount:n.clips.length,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","merge")}),e.push({...RO({upscaleVideo:async n=>{let o=["upscale"];n.sharpness&&o.push(`sharpness: ${n.sharpness}`);let i=await Et({mediaType:"video",model:"",prompt:o.join(", "),operation:"upscale",sourceVideos:[n.video],resolution:n.targetResolution??"1080p"});return{localPath:"",servePath:i.mediaUrls[0]??"",resolution:n.targetResolution??"1080p",durationSec:(i.durationMs??0)/1e3,mediaUrls:i.mediaUrls}}}),shouldDefer:!0,isEnabled:()=>Xu("video","upscale")}),e.push({...TO({generate3D:async n=>{let o=await Et({mediaType:"3d",model:"",prompt:n.prompt,imageUrl:n.imageUrl,outputFormat:n.outputFormat,seed:n.seed});return{mediaUrls:o.mediaUrls,model:o.model,durationMs:o.durationMs,metadata:o.metadata}}}),isConcurrencySafe:!0,shouldDefer:!0,isEnabled:()=>Mt("3d")}),e.push({...PO({speechToText:async n=>{let o=await Et({mediaType:"stt",model:"",prompt:"",audioUrl:n.audioUrl,metadata:n.language?{language:n.language}:void 0});return{transcription:o.metadata?.transcription??"",model:o.model,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("stt")}),e.push({...AO({cloneVoice:async n=>{let o=await Et({mediaType:"voice_clone",model:"",prompt:"",text:n.text,audioUrl:n.sampleAudioUrl,speed:n.speed});return{mediaUrls:o.mediaUrls,model:o.model,voiceId:o.metadata?.voiceId,durationMs:o.durationMs}}}),shouldDefer:!0,isEnabled:()=>Mt("voice_clone")}),e.push({...IO({cancelTask:d0}),shouldDefer:!0,isEnabled:()=>Mt("video")||Mt("3d")});let r=$O({getContext:Ju,resolvePath:n=>OO(t,n)});e.push({..._O(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...CO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()}),e.push({...EO(r),shouldDefer:!0,isEnabled:()=>r.isAvailable()})}function OO(t,e){return za(e,t.getCwd())}var HO=null;function zO(t){HO=t}function qte(){if(process.platform!=="darwin")return!1;try{return Bte("which",["sandbox-exec"],{stdio:"ignore"}),!0}catch{return!1}}function Wte(){let t=HO?.();if(!t)return;let e=FO.tmpdir();return{mode:t.mode,workdir:t.workdir,allowedDirs:t.communityTurn?[]:t.allowedDirs,bookkeepingDirs:[Fo(),e],tmpDir:mx.join(e,"qla-sandbox"),helperPath:ND(),sandboxExecAvailable:qte(),netPolicy:t.communityTurn?"deny":"allow"}}var BO=null,qO;function WO(t){qO=t}var GO=null;function KO(t){GO=t}function VO(t){BO=t}function ZO(t){Eu(t)}function ux(){return ye()?.workspaceDir??zr()}var UO=!1;function Gte(){if(!UO)if(UO=!0,Ho()){let t=process.env.QLOGICAGENT_POWERSHELL_PATH??"powershell.exe";Na(GS(t))}else if(process.platform==="win32"){let t=Kte();Na(Tu(t))}else{let t=process.env.SHELL?.endsWith("bash")?process.env.SHELL:"/bin/bash";Na(Tu(t))}}function Kte(){let t=process.env.QLOGICAGENT_BASH_PATH;if(t&&px.existsSync(t))return t;let e=["C:\\Program Files\\Git\\bin\\bash.exe","C:\\Program Files (x86)\\Git\\bin\\bash.exe"],r=process.env.ProgramFiles?mx.join(process.env.ProgramFiles,"Git","bin","bash.exe"):null;r&&!e.includes(r)&&e.unshift(r);for(let n of e)if(px.existsSync(n))return n;return"bash"}var Vte={task:"orchestration",ask_user:"orchestration",exec:"developer",read:"filesystem",write:"filesystem",edit:"filesystem",patch:"filesystem",search:"search",web_fetch:"web",web_search:"web",web_answer:"web",web_research:"web",instructions:"filesystem",worktree:"developer",notebook_edit:"developer",workflow:"automation",sleep:"automation",tool_search:"search",[Oa]:"media",[hw]:"media",tts:"media",[ja]:"media",[La]:"media",video_edit:"media",video_merge:"media",video_upscale:"media",three_d_generate:"media",stt:"media",voice_clone:"media",media_cancel:"media",file_upload:"filesystem",file_query:"filesystem",file_delete:"filesystem"};function Zte(t){for(let e of t)e.category??=Vte[e.name]??"other",e.displayName??={key:`capability.tool.${e.name}.name`,fallback:e.label},e.displayDescription??={key:`capability.tool.${e.name}.description`,fallback:""}}function JO(t){let e=t?.toolCatalog??zo(),r=()=>e.getToolNames(),n=s=>e.findTool(s),o=s=>e.activateTool(s);Gte(),t?.workdir&&Eu(t.workdir);let i=[];return xN.register({tools:i,taskToolHooks:qO,backgroundTaskRuntime:GO,askUserCallback:BO,onExecProgress:t?.onExecProgress,getCwd:zr,activeProjectRoot:ux,resolveSandboxConfig:Wte,pathService:t?.pathService,log:t?.log,listToolNames:r,findRegisteredTool:n,activateRegisteredTool:o}),K0.register({tools:i,resolveClientForPurpose:t?.resolveClientForPurpose}),SO.register({tools:i,activeProjectRoot:ux}),LO.register({tools:i,getCwd:zr,activeProjectRoot:ux}),Zte(i),e.setTools(i),t?.log?.info(`[tool-bootstrap] Registered ${i.length} local tools (${i.filter(s=>s.isEnabled?.()!==!1).length} enabled): ${r().join(", ")}`),i}function qr(t){return M$(t)}function XO(t){return{getAllBaseTools:e=>JO({...e,toolCatalog:e?.toolCatalog??t}),setWorkdir:ZO}}var Jte=new Set(Ru.map(t=>t.name)),Xte=new Map(Ru.map(t=>[t.name,t])),Yte=new Set(["permissionMode","permissionRules","defaultBehavior"]);function QO(t){let e=t.params;this.syncToolListMediaConfig?.();let r=this.toolCatalog??qr(),o=(e?.includeUnavailable?r.getToolNames().flatMap(s=>{let a=r.findTool(s);return a?[{type:"function",function:{name:a.name,description:a.description,parameters:a.parameters}}]:[]}):r.getToolManifest(e?.includeDeferred??!1)).map(s=>{let a=r.findTool(s.function.name),c=Xte.get(s.function.name)?.category??a?.category??"other";return{id:s.function.name,name:s.function.name,category:c,displayName:a?.displayName??{key:`capability.tool.${s.function.name}.name`,fallback:a?.label??s.function.name},displayDescription:a?.displayDescription??{key:`capability.tool.${s.function.name}.description`,fallback:""},fallbackName:a?.label??s.function.name,fallbackDescription:"",description:s.function.description??"",parameters:s.function.parameters,deferred:!!a?.shouldDefer,enabled:a?.isEnabled?.()!==!1,sessionScoped:Jte.has(s.function.name)||s.function.name.startsWith("mcp__"),source:"builtin"}}),i=new Set(o.map(s=>s.name));for(let s of Ru)i.has(s.name)||o.push({id:s.name,name:s.name,category:s.category,displayName:{key:`capability.tool.${s.name}.name`,fallback:s.label},displayDescription:{key:`capability.tool.${s.name}.description`,fallback:s.description},fallbackName:s.label,fallbackDescription:s.description,description:s.description,parameters:{type:"object",properties:{}},deferred:s.deferred??!1,enabled:!0,sessionScoped:!0,source:"builtin"});if(e?.category){let s=o.filter(a=>a.category===e.category);t.id!==void 0&&this.sendResponse(t.id,{tools:s,total:s.length})}else t.id!==void 0&&this.sendResponse(t.id,{tools:o,total:o.length})}function ej(t){let e=z().listProviderDefs(),r=new Map;for(let o of e){let i=o.group??o.id;r.has(i)||r.set(i,[]);let s=!!z().resolveProviderApiKey(o.id);r.get(i).push({id:o.id,name:o.name,transport:o.transport,baseUrl:o.baseUrl,defaultModel:o.defaultModel,modelCount:o.models?.length??0,available:s})}let n=[...r.entries()].map(([o,i])=>({group:o,variants:i}));t.id!==void 0&&this.sendResponse(t.id,{providers:n})}function tj(t){try{let r=z().exportConfig(),n=ut(),o={};try{o=JSON.parse(Go.readFileSync(n,"utf-8"))}catch{}t.id!==void 0&&this.sendResponse(t.id,{config:{...Qte(o),providers:tre(r.providers),models:r.models,bindings:r.bindings,permissions:oj(o.permissions)},paths:{userSettings:ut(),agentHome:ae()},permissionModel:MD()})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}function Qte(t){let e={};for(let[r,n]of Object.entries(t)){if(fx.has(r)||Yte.has(r))continue;let o=gx(r,n);o!==void 0&&(e[r]=o)}return e}function gx(t,e){if(ere(t))return typeof e=="string"?rj(e):"[REDACTED]";if(Array.isArray(e))return e.map(r=>gx(t,r));if(e&&typeof e=="object"){let r={};for(let[n,o]of Object.entries(e)){if(fx.has(n))continue;let i=gx(n,o);i!==void 0&&(r[n]=i)}return r}return e}function ere(t){return/(?:apiKey|key|token|secret|credential|authorization|password)/i.test(t)}function tre(t){return t.map(e=>({providerId:e.providerId,baseUrl:e.baseUrl,strategy:e.strategy,keys:e.keys.map(r=>{let n={id:r.id,maskedKey:rj(r.key),weight:r.weight,enabled:r.enabled};return r.label&&(n.label=r.label),n}),...e.rateLimit?{rateLimit:e.rateLimit}:{}}))}function rj(t){return t.length<=8?"****":`${t.slice(0,3)}***${t.slice(-4)}`}var fx=new Set(["providers","models","bindings","provider","model","apiKey","baseUrl","providerKeys"]);async function nj(t){let e=t.params;if(!e?.updates||typeof e.updates!="object"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"updates (object) is required."});return}let r=[],n={};for(let[o,i]of Object.entries(e.updates))fx.has(o)?r.push({key:o,reason:"Use settings.* RPC methods for model/key management"}):n[o]=o==="permissions"?oj(i):i;if(r.length>0&&Object.keys(n).length===0){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:`Rejected keys: ${r.map(o=>o.key).join(", ")}. Use settings.* RPC for model management.`});return}try{let o=ut(),i={};try{let s=await Go.promises.readFile(o,"utf-8");i=JSON.parse(s)}catch{}Object.assign(i,n),await Go.promises.mkdir(YO.dirname(o),{recursive:!0}),await Go.promises.writeFile(o,JSON.stringify(i,null,2),"utf-8"),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,applied:Object.keys(n),rejected:r})}catch(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:o instanceof Error?o.message:String(o)})}}function oj(t){if(!t||typeof t!="object")return;let e=t.mode;if(e==="default"||e==="auto"||e==="full_access")return{mode:e}}function ij(t){try{let e=gr(),r=ut(),n={};try{let o=Go.readFileSync(r,"utf-8"),i=JSON.parse(o);i.tunables&&typeof i.tunables=="object"&&(n=i.tunables)}catch{}t.id!==void 0&&this.sendResponse(t.id,{defaults:e,overrides:n})}catch(e){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:e instanceof Error?e.message:String(e)})}}async function sj(t){let e=t.params,r=e?.key,n=e?.value;if(!r||typeof r!="string"){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"Missing required param: key (string)"});return}let o=wu(r,n);if(o){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:o});return}try{await xu(ut(),r,n),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,key:r,value:n})}catch(i){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INTERNAL_ERROR,message:i instanceof Error?i.message:String(i)})}}async function aj(t){let e=(this.toolCatalog??qr()).findTool("task");if(!e||typeof e.execute!="function"){t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:Ea([])});return}try{let o=(await e.execute("rpc-todos-list",{action:"list"},void 0)).details?.taskList??[];t.id!==void 0&&this.sendResponse(t.id,{items:o,summary:Ea(o)})}catch{t.id!==void 0&&this.sendResponse(t.id,{items:[],summary:Ea([])})}}function cj(t){let r=t.params?.lifecycle??"all",n=this.taskStore.getAllTasks(),o=r==="all"?n:n.filter(i=>i.lifecycle===r);t.id!==void 0&&this.sendResponse(t.id,{tasks:o.map(i=>({taskId:i.taskId,type:i.type,lifecycle:i.lifecycle,label:i.label}))})}function lj(t){let e=t.params;if(!e?.taskId){t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.INVALID_PARAMS,message:"taskId is required."});return}let n=this.taskStore.getAllTasks().find(i=>i.taskId===e.taskId);if(!n){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} not found.`});return}if(n.lifecycle!=="running"&&n.lifecycle!=="pending"){t.id!==void 0&&this.sendResponse(t.id,{ok:!1,message:`Task ${e.taskId} is already ${n.lifecycle}.`});return}let o=this.backgroundTasks.cancelTask(e.taskId);t.id!==void 0&&this.sendResponse(t.id,o?{ok:!0,message:`Task ${e.taskId} cancelled.`}:{ok:!1,message:`Task ${e.taskId} could not be cancelled.`})}var dj=["initialize","thread.create","thread.list","session.resume","session.getInfo","session.getMessages","memory.list","memory.read","memory.write","memory.search","memory.delete","memory.dream","tools.list","media.listModels","config.get","config.update","community.getConsent","community.setConsent","community.matchRegistry","community.listShared","community.withdrawShared","community.withdrawAllShared","community.listNotices","community.markNoticeRead","community.listPublishAudit","community.resolveInstall","community.installResource","community.publishSkill","community.publishPet","community.recordSignal","community.recordTelemetry","todos.list","tasks.list","tasks.cancel","agent.ping","agents.scan","agents.list","agents.config","agents.setConfig","agents.getConfig","agents.removeConfig","agents.setGateway","solo.start","solo.status","solo.cancel","solo.select","solo.list","solo.delete","solo.message","solo.evaluate","product.plan","product.confirm","product.message","product.create","product.resume","product.pause","product.checkpoint","product.status","product.list","product.delete","product.cancel","product.rollback","project.create","project.list","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","session.switchProject","session.getState","session.create","session.list","session.get","session.update","session.delete","session.archive","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","settings.listProviders","settings.addKey","settings.removeKey","settings.getKey","settings.toggleKey","settings.listModels","settings.setActiveModel","settings.getActiveModel","settings.getOverview","settings.refreshModels","settings.validateKey"];function uj(t){let e=t.params,r=e?.protocolVersion??"unknown",n=e?.host?.name??e?.hostName??"unknown",o=e?.host?.version??e?.hostVersion??"?",i=r.split(".")[0],s=wo.split(".")[0];if(i!==s){this.log(`[initialize] protocol mismatch: host=${r} agent=${wo}`),t.id!==void 0&&this.sendResponse(t.id,void 0,{code:b.PROTOCOL_MISMATCH,message:`Protocol version mismatch: host=${r}, agent=${wo}`});return}this.log(`[initialize] host=${n} v${o}`),t.id!==void 0&&this.sendResponse(t.id,{protocolVersion:wo,agent:{name:"qlogicagent",version:"0.1.0"},capabilities:{tools:this.toolCatalog.getToolManifest().map(a=>a.function.name),streaming:!0,threads:!0,notifications:["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.plan_update","turn.suggestions","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.media_result","turn.todos_updated","task.updated","turn.exec_progress","turn.artifact","tool.approval.request","turn.skill_instruction","turn.ask_user","memory.updated","session.info","permission.rule_updated","team.updated","turn.usage_update","pong"],methods:[...dj]}}),this.ensureDefaultProject()}function pj(t){t.id!==void 0&&this.sendResponse(t.id,{status:"ok"}),this.sendNotification("pong",{})}function mj(t){t.id!==void 0&&this.sendResponse(t.id,{ok:!0,status:this.running?"healthy":"stopping",uptimeMs:Date.now()-this.startedAt,protocolVersion:wo,version:this.packageVersion})}function gj(t){t.id!==void 0&&this.sendResponse(t.id,{rpc:this.rpcContract.metrics()})}function fj(t){let e=t.params,r=e?.requestId,n=typeof r=="string"?this.rpcContract.cancel(r,e?.reason??"host-cancelled"):!1;n&&this.activeTurn&&this.activeTurn.abort(),t.id!==void 0&&this.sendResponse(t.id,{ok:!0,cancelled:n})}import*as Se from"node:fs";import*as vt from"node:path";se();Ge();import Dt from"node:fs";import Va from"node:path";var hj=bg,yj=kg,wp=class{dir;constructor(e){this.dir=yo(e)}list(){if(!Dt.existsSync(this.dir))return[];let e=[];for(let r of Dt.readdirSync(this.dir)){if(!r.endsWith(".md"))continue;let n=Va.join(this.dir,r);try{let o=Dt.statSync(n);if(!o.isFile())continue;let i=Dt.readFileSync(n,"utf8");e.push({filename:r,content:i,sizeBytes:o.size})}catch{}}return e}read(e){if(!this.isValidFilename(e))return null;let r=Va.join(this.dir,e);if(!Dt.existsSync(r))return null;try{let n=Dt.readFileSync(r,"utf8"),o=Dt.statSync(r);return{filename:e,content:n,sizeBytes:o.size}}catch{return null}}write(e,r){if(!this.isValidFilename(e))throw new Error("Invalid filename: must end with .md and contain no path separators");let n=Buffer.byteLength(r,"utf8");if(n>hj)throw new Error(`File too large: ${n} bytes exceeds ${hj} limit`);if(this.getDirSize(e)+n>yj)throw new Error(`Total instructions size would exceed ${yj} byte limit`);Dt.mkdirSync(this.dir,{recursive:!0});let i=Va.join(this.dir,e);return Dt.writeFileSync(i,r,"utf8"),{filename:e,content:r,sizeBytes:n}}remove(e){if(!this.isValidFilename(e))return!1;let r=Va.join(this.dir,e);return Dt.existsSync(r)?(Dt.unlinkSync(r),!0):!1}loadAll(){let e=this.list();return e.length===0?"":`<project-instructions>
857
857
  ${e.map(n=>`<!-- file: ${n.filename}>
858
858
  ${n.content}`).join(`
859
859
 
@@ -2,6 +2,7 @@ import type { CapabilityCategory } from "../../skills/portable-tool.js";
2
2
  export interface SessionToolManifestEntry {
3
3
  name: string;
4
4
  label: string;
5
+ description: string;
5
6
  category: CapabilityCategory;
6
7
  /** Registered per-session by the runtime bootstrap, not in the static catalog. */
7
8
  sessionScoped: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qlogicagent",
3
- "version": "2.12.9",
3
+ "version": "2.12.10",
4
4
  "description": "XiaozhiClaw Agent CLI — subprocess architecture (JSON-RPC over stdio)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",