@robota-sdk/agent-framework 3.0.0-beta.69 → 3.0.0-beta.70

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.
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@robota-sdk/agent-core`),l=require(`@robota-sdk/agent-executor`),u=require(`@robota-sdk/agent-tools`),d=require(`zod`),f=require(`@robota-sdk/agent-session`),p=require(`node:crypto`),m=require(`node:fs`),h=require(`node:fs/promises`),g=require(`node:path`);g=s(g,1);let _=require(`node:os`),v=require(`fs`),y=require(`path`),ee=require(`node:url`);const te=1e3;var ne=class{manager;now;idFactory;unsubscribeManager;listeners=new Set;groups=new Map;sequence=0;constructor(e){this.manager=e.manager,this.now=e.now??(()=>new Date().toISOString()),this.idFactory=e.idFactory??(()=>this.nextGroupId()),this.sequence=e.initialGroups?.length??0;for(let t of e.initialGroups??[])this.restoreGroup(t);this.unsubscribeManager=this.manager.subscribe(e=>this.handleTaskEvent(e))}createGroup(e){let t=this.now(),n={id:this.idFactory(e),parentSessionId:e.parentSessionId,waitPolicy:e.waitPolicy,taskIds:[...e.taskIds],status:`running`,createdAt:t,updatedAt:t,results:[],...e.label?{label:e.label}:{}},r=this.createRecord(n);return this.groups.set(n.id,r),this.captureExistingTerminalTasks(r),this.emit({type:`background_job_group_created`,group:x(r.state)}),this.evaluateCompletion(r),x(r.state)}listGroups(){return[...this.groups.values()].map(e=>x(e.state))}getGroup(e){let t=this.groups.get(e);return t?x(t.state):void 0}waitGroup(e){let t=this.groups.get(e);return t?t.completion:Promise.reject(Error(`Unknown background job group: ${e}`))}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}dispose(){this.unsubscribeManager(),this.listeners.clear()}nextGroupId(){return this.sequence+=1,`group_${this.sequence}`}restoreGroup(e){let t=this.createRecord(x(e));this.groups.set(e.id,t),e.status===`completed`&&t.resolve(x(e))}createRecord(e){let t=()=>{};return{state:e,completion:new Promise(e=>{t=e}),resolve:t}}captureExistingTerminalTasks(e){for(let t of e.state.taskIds){let n=this.manager.get(t);n&&(0,l.isTerminalBackgroundTaskStatus)(n.status)&&this.captureTask(e,n)}}handleTaskEvent(e){let t=re(e);if(t)for(let e of this.groups.values())e.state.taskIds.includes(t.id)&&this.captureTask(e,t)&&(e.state.status===`running`?this.evaluateCompletion(e):this.emit({type:`background_job_group_updated`,group:x(e.state)}))}captureTask(e,t){return e.state.results.some(e=>e.taskId===t.id)?!1:(e.state.results=[...e.state.results,ae(t)],e.state.updatedAt=this.now(),!0)}evaluateCompletion(e){if(e.state.status===`completed`)return;if(!ie(e.state)){this.emit({type:`background_job_group_updated`,group:x(e.state)});return}let t=this.now();e.state.status=`completed`,e.state.completedAt=t,e.state.updatedAt=t;let n=x(e.state);e.resolve(n),this.emit({type:`background_job_group_completed`,group:n})}emit(e){for(let t of this.listeners)t(e)}};function re(e){if(e.type===`background_task_completed`||e.type===`background_task_failed`||e.type===`background_task_cancelled`)return e.task}function ie(e){return e.waitPolicy===`manual`?!1:e.waitPolicy===`wait_any`?e.results.length>0:e.taskIds.every(t=>e.results.some(e=>e.taskId===t))}function ae(e){return{taskId:e.id,label:e.label,status:e.status,...e.result?.output?{summary:oe(e.result.output)}:{},...e.transcriptPath||e.logPath?{outputRef:e.transcriptPath??e.logPath}:{},...e.error?{error:{...e.error}}:{},...e.startedAt?{startedAt:e.startedAt}:{},...e.completedAt?{completedAt:e.completedAt}:{}}}function oe(e){let t=e.trim();return t.length<=te?t:`${t.slice(0,te)}...`}function se(e){let t=b(e,`completed`),n=b(e,`failed`),r=b(e,`cancelled`);return{groupId:e.id,status:e.status,total:e.taskIds.length,completed:t,failed:n,cancelled:r,pending:Math.max(e.taskIds.length-e.results.length,0),lines:e.results.map(e=>ce(e))}}function b(e,t){return e.results.filter(e=>e.status===t).length}function ce(e){let t=le(e),n=e.outputRef&&e.summary?` (output: ${e.outputRef})`:``;return`[${e.status}] ${e.label} ${e.taskId}: ${t}${n}`}function le(e){let t=(e.error?.message??e.summary??``).replace(/\s+/g,` `).trim();return t.length>0?t:`(no summary)`}function x(e){return{...e,taskIds:[...e.taskIds],results:e.results.map(e=>({...e,...e.error?{error:{...e.error}}:{}}))}}const S={kind:`executionOriginKind`,sessionId:`executionOriginSessionId`,turnId:`executionOriginTurnId`,commandName:`executionOriginCommandName`,toolCallId:`executionOriginToolCallId`,skillId:`executionOriginSkillId`,label:`executionOriginLabel`};function C(e){return[`main`,e].join(`:`)}function w(e){return[`task`,e].join(`:`)}function ue(e){return[`group`,e].join(`:`)}function de(e){let[t,n]=e.split(`:`,2);if(n){if(t===`main`)return{kind:`main_thread`,sourceId:n};if(t===`task`)return{kind:`background_task`,sourceId:n};if(t===`group`)return{kind:`background_group`,sourceId:n}}}function T(e){return{[S.kind]:e.kind,[S.sessionId]:e.sessionId,...e.turnId?{[S.turnId]:e.turnId}:{},...e.commandName?{[S.commandName]:e.commandName}:{},...e.toolCallId?{[S.toolCallId]:e.toolCallId}:{},...e.skillId?{[S.skillId]:e.skillId}:{},...e.label?{[S.label]:e.label}:{}}}function fe(e){let t=_e(e.groups),n=[pe(e.mainThread),...De(e.groups).map(e=>he(e)),...Ee(e.tasks).map(e=>me(e,t.get(e.id)))].filter(t=>Te(t,e.filter));return{sessionId:e.sessionId,selectedEntryId:e.selectedEntryId??n.find(e=>e.kind===`main_thread`)?.id??C(e.sessionId),updatedAt:n[0]?.updatedAt??e.mainThread.updatedAt,entries:n}}function pe(e){return{id:C(e.sessionId),sourceId:e.sessionId,kind:`main_thread`,origin:{kind:`user_prompt`,sessionId:e.sessionId},status:e.isExecuting?`active`:`idle`,title:`Main thread`,subtitle:e.hasPendingPrompt?`prompt queued`:`${e.historyLength} history entries`,preview:E(e.preview),unread:!1,attention:`none`,visibility:`default`,updatedAt:e.updatedAt,controls:[`select`]}}function me(e,t){return{id:w(e.id),sourceId:e.id,kind:`background_task`,parentId:e.parentTaskId?w(e.parentTaskId):C(e.parentSessionId),...t?{groupId:ue(t)}:{},origin:ge(e.metadata,{kind:`system`,sessionId:e.parentSessionId}),taskKind:e.kind,status:e.status,title:e.label,subtitle:ye(e),preview:xe(e),currentAction:e.currentAction,unread:e.unread,attention:Se(e),visibility:Ce(e),updatedAt:e.lastActivityAt??e.updatedAt,controls:ve(e)}}function he(e){let t=E(e.results.map(e=>e.summary??e.error?.message).join(` `));return{id:ue(e.id),sourceId:e.id,kind:`background_group`,parentId:C(e.parentSessionId),origin:{kind:`system`,sessionId:e.parentSessionId,label:e.label},status:e.status,title:e.label??e.id,subtitle:`${e.results.length}/${e.taskIds.length} tasks`,preview:t,unread:!1,attention:we(e),visibility:e.status===`completed`?`collapsed`:`default`,updatedAt:e.updatedAt,controls:e.status===`running`?[`select`,`wait`]:[`select`]}}function ge(e,t){let n=Oe(e?.[S.kind]),r=D(e?.[S.sessionId]);return{kind:n??t.kind,sessionId:r??t.sessionId,turnId:D(e?.[S.turnId])??t.turnId,commandName:D(e?.[S.commandName])??t.commandName,toolCallId:D(e?.[S.toolCallId])??t.toolCallId,skillId:D(e?.[S.skillId])??t.skillId,label:D(e?.[S.label])??t.label}}function _e(e){return new Map(e.flatMap(e=>e.taskIds.map(t=>[t,e.id])))}function ve(e){let t=[`select`];return(0,l.isTerminalBackgroundTaskStatus)(e.status)?t.push(`close`):t.push(`cancel`),e.kind===`agent`&&e.status===`running`&&t.push(`send`),(e.logPath||e.transcriptPath)&&t.push(`read_log`),t}function ye(e){return e.kind===`agent`?e.agentType??e.cwd:e.status===`sleeping`&&e.nextFireAt!==void 0?`next: ${be(e.nextFireAt)}`:e.cwd}function be(e){let t=new Date(e),n=new Date,r=t.getTime()-n.getTime();if(r<=0)return`now`;let i=Math.round(r/1e3);if(i<60)return`${i}s`;let a=Math.round(i/60);return a<60?`${a}m`:`${Math.round(a/60)}h`}function xe(e){return e.status===`failed`?E(e.error?.message):e.status===`completed`?E(e.result?.output):E(e.promptPreview??e.commandPreview)}function Se(e){return e.status===`failed`?`failed`:e.status===`waiting_permission`?`permission`:e.unread?`unread`:e.status===`completed`?`completed`:`none`}function Ce(e){return e.status===`completed`&&!e.unread&&!e.error&&(e.result?.exitCode??0)===0&&!e.result?.signalCode&&!e.worktreePath&&!e.branchName?`collapsed`:`default`}function we(e){return e.results.some(e=>e.status===`failed`)?`failed`:e.status===`completed`?`completed`:`none`}function Te(e,t){return t?!(t.includeMainThread===!1&&e.kind===`main_thread`||t.kinds&&!t.kinds.includes(e.kind)||t.visibility&&!t.visibility.includes(e.visibility)):!0}function Ee(e){return[...e].sort((e,t)=>(t.lastActivityAt??t.updatedAt).localeCompare(e.lastActivityAt??e.updatedAt))}function De(e){return[...e].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function E(e){let t=e?.trim().replace(/\s+/g,` `);if(t)return t.length>120?`${t.slice(0,120)}...`:t}function D(e){return typeof e==`string`?e:void 0}function Oe(e){if(e===`user_prompt`||e===`slash_command`||e===`model_command`||e===`tool_call`||e===`skill`||e===`transport`||e===`system`)return e}function ke(e){let t=Ae(e.cursor?.offset),n=e.history.slice(t,t+80),r=n.map(e=>({id:e.id,kind:e.category===`chat`?`message`:`progress`,text:je(e),timestamp:e.timestamp.toISOString(),sourceId:e.type}));return{entryId:e.entryId,...e.cursor?{cursor:e.cursor}:{},...t+n.length<e.history.length?{nextCursor:{offset:t+n.length}}:{},records:r}}function O(e){let t=e.cursor?.offset??0,n=e.lines.map((n,r)=>({id:`${e.entryId}:${t}:${r}`,kind:e.kind??`process_output`,text:n}));return{entryId:e.entryId,...e.cursor?{cursor:e.cursor}:{},...e.nextCursor?{nextCursor:e.nextCursor}:{},records:n}}function Ae(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0}function je(e){return typeof e.data==`string`?e.data:e.type}function Me(e){return{spawnAgent:t=>e.manager.spawn(Ne(e,t)),spawnProcess:t=>e.manager.spawn(Pe(e,t)),createGroup:t=>e.groupOrchestrator.createGroup({parentSessionId:e.sessionId,waitPolicy:t.waitPolicy,taskIds:[...t.taskIds],label:t.label})}}function Ne(e,t){return{kind:`agent`,label:t.label,mode:t.mode??`background`,parentSessionId:e.sessionId,parentTaskId:t.parentTaskId,depth:t.depth??1,cwd:t.cwd??e.cwd,agentType:t.agentType,prompt:t.prompt,model:t.model,isolation:t.isolation,allowedTools:t.allowedTools?[...t.allowedTools]:void 0,disallowedTools:t.disallowedTools?[...t.disallowedTools]:void 0,permissionPolicy:t.permissionPolicy??`inherit-allowlist`,timeoutMs:t.timeoutMs,idleTimeoutMs:t.idleTimeoutMs,maxRuntimeMs:t.maxRuntimeMs,outputLimitBytes:t.outputLimitBytes,maxTextDeltas:t.maxTextDeltas,repetitionWindow:t.repetitionWindow,repetitionThreshold:t.repetitionThreshold,metadata:T(e.origin)}}function Pe(e,t){return{kind:`process`,label:t.label??t.command,mode:t.mode??`background`,parentSessionId:e.sessionId,parentTaskId:t.parentTaskId,depth:t.depth??0,cwd:t.cwd??e.cwd,command:t.command,shell:t.shell,env:t.env,stdin:t.stdin,timeoutMs:t.timeoutMs,idleTimeoutMs:t.idleTimeoutMs,maxRuntimeMs:t.maxRuntimeMs,outputLimitBytes:t.outputLimitBytes,metadata:T(e.origin)}}const Fe=new WeakMap;function Ie(e,t){Fe.set(e,t)}function Le(e){return Fe.get(e)}function Re(e){let t=e.jobs.filter(e=>e.success),n=e.jobs.map(e=>e.agentId).filter(e=>typeof e==`string`&&e.length>0),r=e.jobs.filter(e=>!e.success).length;return JSON.stringify({success:e.jobs.every(e=>e.success),mode:`batch`,output:t.map(e=>e.output??``).filter(Boolean).join(`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@robota-sdk/agent-core`),l=require(`@robota-sdk/agent-executor`),u=require(`@robota-sdk/agent-tools`),d=require(`zod`),f=require(`@robota-sdk/agent-session`),p=require(`node:crypto`),m=require(`node:fs`),h=require(`node:fs/promises`),g=require(`node:path`);g=s(g,1);let _=require(`node:os`),v=require(`fs`),y=require(`path`),ee=require(`node:url`);const te=1e3;var ne=class{manager;now;idFactory;unsubscribeManager;listeners=new Set;groups=new Map;sequence=0;constructor(e){this.manager=e.manager,this.now=e.now??(()=>new Date().toISOString()),this.idFactory=e.idFactory??(()=>this.nextGroupId()),this.sequence=e.initialGroups?.length??0;for(let t of e.initialGroups??[])this.restoreGroup(t);this.unsubscribeManager=this.manager.subscribe(e=>this.handleTaskEvent(e))}createGroup(e){let t=this.now(),n={id:this.idFactory(e),parentSessionId:e.parentSessionId,waitPolicy:e.waitPolicy,taskIds:[...e.taskIds],status:`running`,createdAt:t,updatedAt:t,results:[],...e.label?{label:e.label}:{}},r=this.createRecord(n);return this.groups.set(n.id,r),this.captureExistingTerminalTasks(r),this.emit({type:`background_job_group_created`,group:x(r.state)}),this.evaluateCompletion(r),x(r.state)}listGroups(){return[...this.groups.values()].map(e=>x(e.state))}getGroup(e){let t=this.groups.get(e);return t?x(t.state):void 0}waitGroup(e){let t=this.groups.get(e);return t?t.completion:Promise.reject(Error(`Unknown background job group: ${e}`))}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}dispose(){this.unsubscribeManager(),this.listeners.clear()}nextGroupId(){return this.sequence+=1,`group_${this.sequence}`}restoreGroup(e){let t=this.createRecord(x(e));this.groups.set(e.id,t),e.status===`completed`&&t.resolve(x(e))}createRecord(e){let t=()=>{};return{state:e,completion:new Promise(e=>{t=e}),resolve:t}}captureExistingTerminalTasks(e){for(let t of e.state.taskIds){let n=this.manager.get(t);n&&(0,l.isTerminalBackgroundTaskStatus)(n.status)&&this.captureTask(e,n)}}handleTaskEvent(e){let t=re(e);if(t)for(let e of this.groups.values())e.state.taskIds.includes(t.id)&&this.captureTask(e,t)&&(e.state.status===`running`?this.evaluateCompletion(e):this.emit({type:`background_job_group_updated`,group:x(e.state)}))}captureTask(e,t){return e.state.results.some(e=>e.taskId===t.id)?!1:(e.state.results=[...e.state.results,ae(t)],e.state.updatedAt=this.now(),!0)}evaluateCompletion(e){if(e.state.status===`completed`)return;if(!ie(e.state)){this.emit({type:`background_job_group_updated`,group:x(e.state)});return}let t=this.now();e.state.status=`completed`,e.state.completedAt=t,e.state.updatedAt=t;let n=x(e.state);e.resolve(n),this.emit({type:`background_job_group_completed`,group:n})}emit(e){for(let t of this.listeners)t(e)}};function re(e){if(e.type===`background_task_completed`||e.type===`background_task_failed`||e.type===`background_task_cancelled`)return e.task}function ie(e){return e.waitPolicy===`manual`?!1:e.waitPolicy===`wait_any`?e.results.length>0:e.taskIds.every(t=>e.results.some(e=>e.taskId===t))}function ae(e){return{taskId:e.id,label:e.label,status:e.status,...e.result?.output?{summary:oe(e.result.output)}:{},...e.transcriptPath||e.logPath?{outputRef:e.transcriptPath??e.logPath}:{},...e.error?{error:{...e.error}}:{},...e.startedAt?{startedAt:e.startedAt}:{},...e.completedAt?{completedAt:e.completedAt}:{}}}function oe(e){let t=e.trim();return t.length<=te?t:`${t.slice(0,te)}...`}function se(e){let t=b(e,`completed`),n=b(e,`failed`),r=b(e,`cancelled`);return{groupId:e.id,status:e.status,total:e.taskIds.length,completed:t,failed:n,cancelled:r,pending:Math.max(e.taskIds.length-e.results.length,0),lines:e.results.map(e=>ce(e))}}function b(e,t){return e.results.filter(e=>e.status===t).length}function ce(e){let t=le(e),n=e.outputRef&&e.summary?` (output: ${e.outputRef})`:``;return`[${e.status}] ${e.label} ${e.taskId}: ${t}${n}`}function le(e){let t=(e.error?.message??e.summary??``).replace(/\s+/g,` `).trim();return t.length>0?t:`(no summary)`}function x(e){return{...e,taskIds:[...e.taskIds],results:e.results.map(e=>({...e,...e.error?{error:{...e.error}}:{}}))}}const S={kind:`executionOriginKind`,sessionId:`executionOriginSessionId`,turnId:`executionOriginTurnId`,commandName:`executionOriginCommandName`,toolCallId:`executionOriginToolCallId`,skillId:`executionOriginSkillId`,label:`executionOriginLabel`};function C(e){return[`main`,e].join(`:`)}function w(e){return[`task`,e].join(`:`)}function T(e){return[`group`,e].join(`:`)}function ue(e){let[t,n]=e.split(`:`,2);if(n){if(t===`main`)return{kind:`main_thread`,sourceId:n};if(t===`task`)return{kind:`background_task`,sourceId:n};if(t===`group`)return{kind:`background_group`,sourceId:n}}}function E(e){return{[S.kind]:e.kind,[S.sessionId]:e.sessionId,...e.turnId?{[S.turnId]:e.turnId}:{},...e.commandName?{[S.commandName]:e.commandName}:{},...e.toolCallId?{[S.toolCallId]:e.toolCallId}:{},...e.skillId?{[S.skillId]:e.skillId}:{},...e.label?{[S.label]:e.label}:{}}}function de(e){let t=ge(e.groups),n=[fe(e.mainThread),...Ee(e.groups).map(e=>me(e)),...Te(e.tasks).map(e=>pe(e,t.get(e.id)))].filter(t=>we(t,e.filter));return{sessionId:e.sessionId,selectedEntryId:e.selectedEntryId??n.find(e=>e.kind===`main_thread`)?.id??C(e.sessionId),updatedAt:n[0]?.updatedAt??e.mainThread.updatedAt,entries:n}}function fe(e){return{id:C(e.sessionId),sourceId:e.sessionId,kind:`main_thread`,origin:{kind:`user_prompt`,sessionId:e.sessionId},status:e.isExecuting?`active`:`idle`,title:`Main thread`,subtitle:e.hasPendingPrompt?`prompt queued`:`${e.historyLength} history entries`,preview:D(e.preview),unread:!1,attention:`none`,visibility:`default`,updatedAt:e.updatedAt,controls:[`select`]}}function pe(e,t){return{id:w(e.id),sourceId:e.id,kind:`background_task`,parentId:e.parentTaskId?w(e.parentTaskId):C(e.parentSessionId),...t?{groupId:T(t)}:{},origin:he(e.metadata,{kind:`system`,sessionId:e.parentSessionId}),taskKind:e.kind,status:e.status,title:e.label,subtitle:ve(e),preview:be(e),currentAction:e.currentAction,unread:e.unread,attention:xe(e),visibility:Se(e),updatedAt:e.lastActivityAt??e.updatedAt,controls:_e(e)}}function me(e){let t=D(e.results.map(e=>e.summary??e.error?.message).join(` `));return{id:T(e.id),sourceId:e.id,kind:`background_group`,parentId:C(e.parentSessionId),origin:{kind:`system`,sessionId:e.parentSessionId,label:e.label},status:e.status,title:e.label??e.id,subtitle:`${e.results.length}/${e.taskIds.length} tasks`,preview:t,unread:!1,attention:Ce(e),visibility:e.status===`completed`?`collapsed`:`default`,updatedAt:e.updatedAt,controls:e.status===`running`?[`select`,`wait`]:[`select`]}}function he(e,t){let n=De(e?.[S.kind]),r=O(e?.[S.sessionId]);return{kind:n??t.kind,sessionId:r??t.sessionId,turnId:O(e?.[S.turnId])??t.turnId,commandName:O(e?.[S.commandName])??t.commandName,toolCallId:O(e?.[S.toolCallId])??t.toolCallId,skillId:O(e?.[S.skillId])??t.skillId,label:O(e?.[S.label])??t.label}}function ge(e){return new Map(e.flatMap(e=>e.taskIds.map(t=>[t,e.id])))}function _e(e){let t=[`select`];return(0,l.isTerminalBackgroundTaskStatus)(e.status)?t.push(`close`):t.push(`cancel`),e.kind===`agent`&&e.status===`running`&&t.push(`send`),(e.logPath||e.transcriptPath)&&t.push(`read_log`),t}function ve(e){return e.kind===`agent`?e.agentType??e.cwd:e.status===`sleeping`&&e.nextFireAt!==void 0?`next: ${ye(e.nextFireAt)}`:e.cwd}function ye(e){let t=new Date(e),n=new Date,r=t.getTime()-n.getTime();if(r<=0)return`now`;let i=Math.round(r/1e3);if(i<60)return`${i}s`;let a=Math.round(i/60);return a<60?`${a}m`:`${Math.round(a/60)}h`}function be(e){return e.status===`failed`?D(e.error?.message):e.status===`completed`?D(e.result?.output):D(e.promptPreview??e.commandPreview)}function xe(e){return e.status===`failed`?`failed`:e.status===`waiting_permission`?`permission`:e.unread?`unread`:e.status===`completed`?`completed`:`none`}function Se(e){return e.status===`completed`&&!e.unread&&!e.error&&(e.result?.exitCode??0)===0&&!e.result?.signalCode&&!e.worktreePath&&!e.branchName?`collapsed`:`default`}function Ce(e){return e.results.some(e=>e.status===`failed`)?`failed`:e.status===`completed`?`completed`:`none`}function we(e,t){return t?!(t.includeMainThread===!1&&e.kind===`main_thread`||t.kinds&&!t.kinds.includes(e.kind)||t.visibility&&!t.visibility.includes(e.visibility)):!0}function Te(e){return[...e].sort((e,t)=>(t.lastActivityAt??t.updatedAt).localeCompare(e.lastActivityAt??e.updatedAt))}function Ee(e){return[...e].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function D(e){let t=e?.trim().replace(/\s+/g,` `);if(t)return t.length>120?`${t.slice(0,120)}...`:t}function O(e){return typeof e==`string`?e:void 0}function De(e){if(e===`user_prompt`||e===`slash_command`||e===`model_command`||e===`tool_call`||e===`skill`||e===`transport`||e===`system`)return e}function Oe(e){let t=Ae(e.cursor?.offset),n=e.history.slice(t,t+80),r=n.map(e=>({id:e.id,kind:e.category===`chat`?`message`:`progress`,text:je(e),timestamp:e.timestamp.toISOString(),sourceId:e.type}));return{entryId:e.entryId,...e.cursor?{cursor:e.cursor}:{},...t+n.length<e.history.length?{nextCursor:{offset:t+n.length}}:{},records:r}}function ke(e){let t=e.cursor?.offset??0,n=e.lines.map((n,r)=>({id:`${e.entryId}:${t}:${r}`,kind:e.kind??`process_output`,text:n}));return{entryId:e.entryId,...e.cursor?{cursor:e.cursor}:{},...e.nextCursor?{nextCursor:e.nextCursor}:{},records:n}}function Ae(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0}function je(e){return typeof e.data==`string`?e.data:e.type}function Me(e){return{spawnAgent:t=>e.manager.spawn(Ne(e,t)),spawnProcess:t=>e.manager.spawn(Pe(e,t)),createGroup:t=>e.groupOrchestrator.createGroup({parentSessionId:e.sessionId,waitPolicy:t.waitPolicy,taskIds:[...t.taskIds],label:t.label})}}function Ne(e,t){return{kind:`agent`,label:t.label,mode:t.mode??`background`,parentSessionId:e.sessionId,parentTaskId:t.parentTaskId,depth:t.depth??1,cwd:t.cwd??e.cwd,agentType:t.agentType,prompt:t.prompt,model:t.model,isolation:t.isolation,allowedTools:t.allowedTools?[...t.allowedTools]:void 0,disallowedTools:t.disallowedTools?[...t.disallowedTools]:void 0,permissionPolicy:t.permissionPolicy??`inherit-allowlist`,timeoutMs:t.timeoutMs,idleTimeoutMs:t.idleTimeoutMs,maxRuntimeMs:t.maxRuntimeMs,outputLimitBytes:t.outputLimitBytes,maxTextDeltas:t.maxTextDeltas,repetitionWindow:t.repetitionWindow,repetitionThreshold:t.repetitionThreshold,metadata:E(e.origin)}}function Pe(e,t){return{kind:`process`,label:t.label??t.command,mode:t.mode??`background`,parentSessionId:e.sessionId,parentTaskId:t.parentTaskId,depth:t.depth??0,cwd:t.cwd??e.cwd,command:t.command,shell:t.shell,env:t.env,stdin:t.stdin,timeoutMs:t.timeoutMs,idleTimeoutMs:t.idleTimeoutMs,maxRuntimeMs:t.maxRuntimeMs,outputLimitBytes:t.outputLimitBytes,metadata:E(e.origin)}}const Fe=new WeakMap;function Ie(e,t){Fe.set(e,t)}function Le(e){return Fe.get(e)}function Re(e){let t=e.jobs.filter(e=>e.success),n=e.jobs.map(e=>e.agentId).filter(e=>typeof e==`string`&&e.length>0),r=e.jobs.filter(e=>!e.success).length;return JSON.stringify({success:e.jobs.every(e=>e.success),mode:`batch`,output:t.map(e=>e.output??``).filter(Boolean).join(`
2
2
 
3
3
  `),groupId:e.groupId,requestedJobCount:e.requestedJobCount,startedJobCount:n.length,failedJobCount:r,agentIds:n,jobs:e.jobs,provenance:{source:`agent-tool-batch`,groupId:e.groupId,requestedJobCount:e.requestedJobCount,startedJobCount:n.length,failedJobCount:r}})}function ze(){return`agent_group_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}function Be(e,t){let n=e?.trim();return n&&n.length>0?n:t}function Ve(e,t,n){let r=e.subagent_type??`general-purpose`,i=n.resolveAgentDefinition(r,n.deps.customAgentRegistry);return{index:t,job:e,agentType:r,agentDef:i,label:Be(e.label,i?.name??r)}}function He(e){return e.agentDef!==void 0}function Ue(e,t){return{index:e.index,success:!1,groupId:t,label:e.label,subagent_type:e.agentType,prompt:e.job.prompt,error:`Unknown agent type: ${e.agentType}`}}async function We(e,t){try{let n=await t.manager.spawn(t.createSpawnRequest(e.job,e.agentType,e.agentDef,t.deps,e.label,t.toolCallId));return{...e,agentId:n.id}}catch(t){let n=t instanceof Error?t.message:String(t);return{...e,spawnError:n}}}function Ge(e,t){return{index:e.index,success:!1,groupId:t,label:e.label,subagent_type:e.agentType,prompt:e.job.prompt,error:`Sub-agent error: ${e.spawnError??`missing agent id`}`}}function Ke(e,t,n){return{index:e.index,success:!0,groupId:t,label:e.label,agentId:n.jobId,subagent_type:e.agentType,prompt:e.job.prompt,output:n.output,metadata:n.metadata}}function qe(e,t,n){return{index:e.index,success:!1,groupId:t,label:e.label,agentId:e.agentId,subagent_type:e.agentType,prompt:e.job.prompt,error:`Sub-agent error: ${n}`}}async function Je(e,t,n){if(e.agentId===void 0)return Ge(e,t);try{let r=await n.wait(e.agentId);return Ke({...e,agentId:e.agentId},t,r)}catch(n){let r=n instanceof Error?n.message:String(n);return qe({...e,agentId:e.agentId},t,r)}}async function Ye(e){let t=ze(),n=e.jobs.map((t,n)=>Ve(t,n,e)),r=n.filter(e=>!He(e)).map(e=>Ue(e,t)),i=await Promise.all(n.filter(He).map(t=>We(t,e))),a=await Promise.all(i.map(n=>Je(n,t,e.manager))),o=[...r,...a].sort((e,t)=>e.index-t.index);return Re({groupId:t,requestedJobCount:e.jobs.length,jobs:o})}function Xe(e){return JSON.stringify({success:!1,mode:`single`,requestedJobCount:1,startedJobCount:0,failedJobCount:1,output:``,error:`Unknown agent type: ${e}`,provenance:{source:`agent-tool-single`,requestedJobCount:1,startedJobCount:0,failedJobCount:1}})}function Ze(e){let t=e.metadata?.worktreePath,n=e.metadata?.branchName,r=e.metadata?.worktreeStatus,i=e.metadata?.worktreeNextAction;return JSON.stringify({success:!0,mode:`single`,requestedJobCount:1,startedJobCount:1,failedJobCount:0,output:e.output,agentId:e.jobId,agentIds:[e.jobId],provenance:{source:`agent-tool-single`,requestedJobCount:1,startedJobCount:1,failedJobCount:0},metadata:e.metadata,...typeof t==`string`?{worktreePath:t}:{},...typeof n==`string`?{branchName:n}:{},...typeof r==`string`?{worktreeStatus:r}:{},...typeof i==`string`?{worktreeNextAction:i}:{}})}function Qe(e,t){let n=t===void 0?0:1;return JSON.stringify({success:!1,mode:`single`,requestedJobCount:1,startedJobCount:n,failedJobCount:1,output:``,error:`Sub-agent error: ${e}`,agentId:t,...t===void 0?{}:{agentIds:[t]},provenance:{source:`agent-tool-single`,requestedJobCount:1,startedJobCount:n,failedJobCount:1}})}const $e=[{name:`general-purpose`,description:`General-purpose task execution agent with full tool access.`,systemPrompt:`You are a general-purpose task execution agent. You have access to all tools available in the parent session and can perform any task delegated to you.
4
4
 
@@ -33,70 +33,70 @@ Your role is to:
33
33
  - Produce a structured implementation plan with clear steps, file lists, and ordering.
34
34
  - Consider edge cases, error handling, and test coverage requirements.
35
35
 
36
- Output your plan in a structured format with numbered steps. For each step, specify which files are involved and what changes are needed. Flag any decisions that require human judgment or clarification.`,disallowedTools:[`Write`,`Edit`]}];function k(e){return $e.find(t=>t.name===e)}function et(){return`When you complete the task, respond with a concise report covering what was done and any key findings — the caller will relay this to the user, so it only needs the essentials.
36
+ Output your plan in a structured format with numbered steps. For each step, specify which files are involved and what changes are needed. Flag any decisions that require human judgment or clarification.`,disallowedTools:[`Write`,`Edit`]}];function et(e){return $e.find(t=>t.name===e)}function tt(){return`When you complete the task, respond with a concise report covering what was done and any key findings — the caller will relay this to the user, so it only needs the essentials.
37
37
 
38
38
  In your final response, share file paths (always absolute, never relative) that are relevant to the task. Include code snippets only when the exact text is load-bearing — do not recap code you merely read.
39
39
 
40
- Do not use emojis.`}function tt(){return`You are a worker subagent executing a specific task. Do NOT spawn sub-agents; execute directly. Keep your report under 500 words. Use this structure:
40
+ Do not use emojis.`}function nt(){return`You are a worker subagent executing a specific task. Do NOT spawn sub-agents; execute directly. Keep your report under 500 words. Use this structure:
41
41
  - Scope: What was requested
42
42
  - Result: What was done
43
43
  - Key files: Relevant file paths (absolute)
44
44
  - Files changed: List of modifications
45
- - Issues: Any problems encountered`}function nt(e){let t=[e.agentBody];e.claudeMd&&t.push(e.claudeMd),e.agentsMd&&t.push(e.agentsMd);let n=e.isForkWorker?tt():et();return t.push(n),t.join(`
45
+ - Issues: Any problems encountered`}function rt(e){let t=[e.agentBody];e.claudeMd&&t.push(e.claudeMd),e.agentsMd&&t.push(e.agentsMd);let n=e.isForkWorker?nt():tt();return t.push(n),t.join(`
46
46
 
47
- `)}const rt=`robota_command_`,it=/^[A-Za-z0-9_-]{1,64}$/;function at(e){return e}function A(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function ot(e){let t=A(e);if(!t)throw Error(`Model command descriptor name must not be empty.`);let n=t.replace(/[^A-Za-z0-9_-]/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``);if(!n)throw Error(`Model command descriptor name cannot be projected safely: ${e}`);let r=`${rt}${n}`;if(it.test(r))return r;let i=(0,p.createHash)(`sha256`).update(t).digest(`hex`).slice(0,8),a=`${rt}${n.slice(0,40).replace(/[_-]+$/g,``)||`command`}_${i}`;if(!it.test(a))throw Error(`Projected model command tool name is not provider-safe: ${a}`);return a}function st(e){let t=new Set,n=new Map,r=new Map,i=[];for(let a of e){let e=A(a.name);if(!e)throw Error(`Model command descriptor name must not be empty.`);if(t.has(e))throw Error(`Duplicate model command descriptor: ${e}`);t.add(e);let o=ot(e),s=n.get(o);if(s!==void 0)throw Error(`Model command projection collision: ${s} and ${e} both map to ${o}`);n.set(o,e),r.set(e,o),i.push({commandName:e,toolName:o,description:ft(e,a),descriptor:a,requiresPermission:a.requiresPermission!==!1})}return{commandTools:i,toolNameToCommandName:n,commandNameToToolName:r}}function ct(e){return`${e.toolName} — ${e.descriptor.description}`}function lt(e,t){return JSON.stringify(t?{success:t.success,command:e,message:t.message,data:t.data}:{success:!1,command:e,error:`Unknown command: ${e}`})}function ut(e){return st(e.commandDescriptors).commandTools.map(t=>{let n=dt(t.descriptor);return(0,u.createZodFunctionTool)(t.toolName,t.description,at(n),async r=>{let i=n.parse(r);return e.isModelInvocable(t.commandName)?lt(t.commandName,await e.execute(t.commandName,i.args??``)):JSON.stringify({success:!1,command:t.commandName,error:`Command is not model-invocable: ${t.commandName}`})})})}function dt(e){let t=e.argumentHint?`Arguments for the command. Expected grammar: ${e.argumentHint}`:`Arguments for the command as a single string.`;return d.z.object({args:d.z.string().optional().describe(t)})}function ft(e,t){let n=[t.description.trim(),`Robota command id: ${e}.`];return t.argumentHint&&n.push(`Argument grammar: ${t.argumentHint}`),n.filter(e=>e.length>0).join(`
47
+ `)}const it=`robota_command_`,at=/^[A-Za-z0-9_-]{1,64}$/;function ot(e){return e}function k(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function st(e){let t=k(e);if(!t)throw Error(`Model command descriptor name must not be empty.`);let n=t.replace(/[^A-Za-z0-9_-]/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``);if(!n)throw Error(`Model command descriptor name cannot be projected safely: ${e}`);let r=`${it}${n}`;if(at.test(r))return r;let i=(0,p.createHash)(`sha256`).update(t).digest(`hex`).slice(0,8),a=`${it}${n.slice(0,40).replace(/[_-]+$/g,``)||`command`}_${i}`;if(!at.test(a))throw Error(`Projected model command tool name is not provider-safe: ${a}`);return a}function ct(e){let t=new Set,n=new Map,r=new Map,i=[];for(let a of e){let e=k(a.name);if(!e)throw Error(`Model command descriptor name must not be empty.`);if(t.has(e))throw Error(`Duplicate model command descriptor: ${e}`);t.add(e);let o=st(e),s=n.get(o);if(s!==void 0)throw Error(`Model command projection collision: ${s} and ${e} both map to ${o}`);n.set(o,e),r.set(e,o),i.push({commandName:e,toolName:o,description:pt(e,a),descriptor:a,requiresPermission:a.requiresPermission!==!1})}return{commandTools:i,toolNameToCommandName:n,commandNameToToolName:r}}function lt(e){return`${e.toolName} — ${e.descriptor.description}`}function ut(e,t){return JSON.stringify(t?{success:t.success,command:e,message:t.message,data:t.data}:{success:!1,command:e,error:`Unknown command: ${e}`})}function dt(e){return ct(e.commandDescriptors).commandTools.map(t=>{let n=ft(t.descriptor);return(0,u.createZodFunctionTool)(t.toolName,t.description,ot(n),async r=>{let i=n.parse(r);return e.isModelInvocable(t.commandName)?ut(t.commandName,await e.execute(t.commandName,i.args??``)):JSON.stringify({success:!1,command:t.commandName,error:`Command is not model-invocable: ${t.commandName}`})})})}function ft(e){let t=e.argumentHint?`Arguments for the command. Expected grammar: ${e.argumentHint}`:`Arguments for the command as a single string.`;return d.z.object({args:d.z.string().optional().describe(t)})}function pt(e,t){let n=[t.description.trim(),`Robota command id: ${e}.`];return t.argumentHint&&n.push(`Argument grammar: ${t.argumentHint}`),n.filter(e=>e.length>0).join(`
48
48
 
49
- `)}const pt={sonnet:`claude-sonnet-4-6`,haiku:`claude-haiku-4-5`,opus:`claude-opus-4-6`},mt=ot(`agent`);function ht(e,t){return pt[e]??e}function gt(e,t){let n=[...e];if(t.disallowedTools){let e=new Set(t.disallowedTools);n=n.filter(t=>!e.has(t.getName()))}if(t.tools){let e=new Set(t.tools);n=n.filter(t=>e.has(t.getName()))}return n=n.filter(e=>e.getName()!==`Agent`&&e.getName()!==mt),n}function _t(e){let{agentDefinition:t,parentConfig:n,parentContext:r,parentTools:i,terminal:a}=e,o=gt(i,t),s=t.model?ht(t.model,n.provider.model):n.provider.model,c=nt({agentBody:t.systemPrompt,claudeMd:r.claudeMd,agentsMd:r.agentsMd,isForkWorker:e.isForkWorker??!1}),l=e.provider;return new f.Session({tools:o,provider:l,systemMessage:c,terminal:a,...e.sessionId===void 0?{}:{sessionId:e.sessionId},...e.sessionLogger===void 0?{}:{sessionLogger:e.sessionLogger},model:s,maxTurns:t.maxTurns,permissions:n.permissions,permissionMode:e.permissionMode,defaultTrustLevel:n.defaultTrustLevel,permissionHandler:e.permissionHandler,hooks:e.hooks,hookTypeExecutors:e.hookTypeExecutors,onTextDelta:e.onTextDelta,onToolExecution:e.onToolExecution})}function vt(e,t){let n=t?.(e)??k(e);if(!n)throw Error(`Unknown agent type: ${e}`);return n}function yt(e,t){return{...e,...t.request.model?{model:t.request.model}:{},...t.request.allowedTools?{tools:t.request.allowedTools}:{},...t.request.disallowedTools?{disallowedTools:t.request.disallowedTools}:{}}}function bt(e){if(!e)return;let t=Object.values(e)[0];if(t!==void 0)return typeof t==`object`?JSON.stringify(t):String(t)}function xt(e){if(e.request.isolation===`worktree`)throw Error(`Worktree isolation requires a runtime shell subagent runner`)}function St(e,t){if(t.type===`start`){e.emit?.({type:`background_task_tool_start`,toolName:t.toolName,firstArg:bt(t.toolArgs)});return}e.emit?.({type:`background_task_tool_end`,toolName:t.toolName,success:t.success??!0})}function Ct(e){return{start(t){xt(t);let n=_t({agentDefinition:yt(vt(t.request.type,e.customAgentRegistry),t),parentConfig:e.config,parentContext:e.context,parentTools:e.tools,provider:e.provider,terminal:e.terminal,permissionMode:e.permissionMode,permissionHandler:e.permissionHandler,hooks:e.hooks,hookTypeExecutors:e.hookTypeExecutors,onTextDelta:n=>{t.emit?.({type:`background_task_text_delta`,delta:n}),e.onTextDelta?.(n)},onToolExecution:n=>{St(t,n),e.onToolExecution?.(n)}});return{jobId:t.jobId,result:n.run(t.request.prompt).then(e=>({jobId:t.jobId,output:e})),cancel:()=>(n.abort(),Promise.resolve())}}}}const wt=[`Creates delegated subagent jobs in isolated contexts.`,`Without jobs, one tool call creates one subagent job from prompt.`,`For explicit multi-agent or parallel-agent requests, use one Agent tool call with jobs containing one entry per requested role and a stable label for each role.`,`When the user explicitly asks to create, run, spawn, delegate to, or use agents/subagents, start the requested subagent job immediately.`,`Do not ask a follow-up question unless execution is impossible or unsafe.`,`Subagent jobs run as background tasks by default.`,`The tool waits for a terminal result and returns completed, failed, or timed-out outcome data with structured requested/started job counts.`,`After the tool returns, base user-facing claims on returned mode and counts; do not say parallel or multiple jobs started unless the result proves those jobs started.`,`Execution is represented by a real tool call and runtime background task event.`].join(` `);function Tt(e){return e}const Et=d.z.object({prompt:d.z.string().optional().describe(`The task for a single subagent to perform. Required when jobs is omitted.`),subagent_type:d.z.string().optional().describe(`Agent type: "general-purpose", "Explore", "Plan", or a custom agent name`),model:d.z.string().optional().describe(`Optional model override`),isolation:d.z.enum([`none`,`worktree`]).optional().describe(`Optional runtime isolation mode. "worktree" runs in a Git worktree.`),jobs:d.z.array(d.z.object({label:d.z.string().optional().describe(`Stable role label for this batch job`),prompt:d.z.string().describe(`The task for this subagent to perform`),subagent_type:d.z.string().optional().describe(`Agent type for this job`),model:d.z.string().optional().describe(`Optional model override for this job`),isolation:d.z.enum([`none`,`worktree`]).optional().describe(`Isolation for this job`)}).passthrough()).optional().describe(`Batch of subagent jobs to start in one Agent tool call`)}).passthrough(),Dt=new WeakMap;function Ot(e,t){Dt.set(e,t)}function j(e){return Dt.get(e)}function kt(e,t){if(t){let n=t(e);if(n)return n}let n=k(e);if(n)return n}function At(e){return e.subagentManager??new l.SubagentManager({runner:Ct(e)})}function jt(e,t,n,r,i=n.name,a){return{type:t,label:i,parentSessionId:r.parentSessionId??`unknown-session`,mode:`background`,depth:r.subagentDepth??1,cwd:r.cwd??process.cwd(),prompt:e.prompt,model:e.model,isolation:e.isolation,metadata:T({kind:`tool_call`,sessionId:r.parentSessionId??`unknown-session`,label:i,...a?{toolCallId:a}:{}})}}async function Mt(e,t,n,r){if(typeof e.prompt!=`string`||e.prompt.length===0)return Qe(`prompt is required when jobs is omitted`);let i={...e,prompt:e.prompt},a=e.subagent_type??`general-purpose`,o=kt(a,t.customAgentRegistry);if(!o)return Xe(a);let s;try{let e=await n.spawn(jt(i,a,o,t,void 0,r));return s=e.id,Ze(await n.wait(e.id))}catch(e){return Qe(e instanceof Error?e.message:String(e),s)}}function Nt(e){let t=At(e);return(0,u.createZodFunctionTool)(`Agent`,wt,Tt(Et),async(n,r)=>{let i=n,a=r?.executionId;return Array.isArray(i.jobs)&&i.jobs.length>0?Ye({jobs:i.jobs,deps:e,manager:t,resolveAgentDefinition:kt,createSpawnRequest:jt,toolCallId:a}):Mt({prompt:i.prompt,...i.subagent_type===void 0?{}:{subagent_type:i.subagent_type},...i.model===void 0?{}:{model:i.model},...i.isolation===void 0?{}:{isolation:i.isolation}},e,t,a)})}var Pt=class{getManager;onChanged;emitTaskEvent;emitGroupEvent;persistSession;backgroundTasks=[];backgroundTaskEvents=[];backgroundJobGroups=[];backgroundJobGroupEvents=[];backgroundTaskUnsubscribe=null;backgroundJobUnsubscribe=null;backgroundJobOrchestrator=null;constructor(e,t,n,r,i){this.getManager=e,this.onChanged=t,this.emitTaskEvent=n,this.emitGroupEvent=r,this.persistSession=i}subscribe(e){if(this.backgroundTaskUnsubscribe)return;let t=Le(e)??j(e)?.backgroundTaskManager;t&&(this.backgroundTaskUnsubscribe=t.subscribe(e=>{this.recordTaskEvent(e),this.emitTaskEvent(e)}))}dispose(){this.backgroundTaskUnsubscribe?.(),this.backgroundTaskUnsubscribe=null,this.backgroundJobUnsubscribe?.(),this.backgroundJobUnsubscribe=null,this.backgroundJobOrchestrator?.dispose(),this.backgroundJobOrchestrator=null}restoreState(e){this.backgroundTasks=e.tasks,this.backgroundTaskEvents=e.taskEvents,this.backgroundJobGroups=e.groups,this.backgroundJobGroupEvents=e.groupEvents}getState(){return{tasks:this.getTaskSnapshots(),taskEvents:this.backgroundTaskEvents,groups:this.getGroupSnapshots(),groupEvents:this.backgroundJobGroupEvents}}getManagerOrThrow(){let e=this.getManager();if(!e)throw Error(`Background task manager is not available for this session.`);return e}getOrchestratorOrThrow(e){if(this.backgroundJobOrchestrator)return this.backgroundJobOrchestrator;let t=this.getManagerOrThrow();return this.backgroundJobOrchestrator=new ne({manager:t,initialGroups:this.backgroundJobGroups}),this.subscribeGroupEvents(e),this.backgroundJobOrchestrator}async cancelTask(e,t){await this.getManagerOrThrow().cancel(e,t)}async closeTask(e){await this.getManagerOrThrow().close(e)}async sendTask(e,t){await this.getManagerOrThrow().send(e,t)}async readTaskLog(e,t){return this.getManagerOrThrow().readLog(e,t)}listTasks(e){return this.getManagerOrThrow().list(e)}getTask(e){return this.getManagerOrThrow().get(e)}createGroup(e,t){return this.getOrchestratorOrThrow(t).createGroup({...e,parentSessionId:t})}listGroups(e){return this.getOrchestratorOrThrow(e).listGroups()}getGroup(e,t){return this.getOrchestratorOrThrow(t).getGroup(e)}async waitGroup(e,t){return this.getOrchestratorOrThrow(t).waitGroup(e)}async readTaskDetail(e,t,n){let r=this.getManagerOrThrow().get(t);if(!r)throw Error(`Unknown background task: ${t}`);if(r.logPath||r.transcriptPath){let i=await this.getManagerOrThrow().readLog(t,n);return O({entryId:e,lines:i.lines,cursor:i.cursor,nextCursor:i.nextCursor,kind:r.kind===`process`?`process_output`:`progress`})}let i=r.status===`failed`?`error`:r.status===`completed`?`result`:`progress`;return O({entryId:e,lines:[r.error?.message??r.result?.output??r.currentAction??r.promptPreview??r.commandPreview??r.status],cursor:n,kind:i})}readGroupDetail(e,t,n){let r=this.getOrchestratorOrThrow(n).getGroup(t);if(!r)throw Error(`Unknown background job group: ${t}`);return O({entryId:e,lines:se(r).lines,kind:`group_summary`})}getTaskSnapshots(){try{return this.getManagerOrThrow().list()}catch{return this.backgroundTasks}}getGroupSnapshots(){try{return this.backgroundJobOrchestrator?.listGroups()??this.backgroundJobGroups}catch{return this.backgroundJobGroups}}subscribeGroupEvents(e){this.backgroundJobUnsubscribe||!this.backgroundJobOrchestrator||(this.backgroundJobUnsubscribe=this.backgroundJobOrchestrator.subscribe(t=>{this.recordGroupEvent(t,e),this.emitGroupEvent(t)}))}recordTaskEvent(e){this.backgroundTasks=this.getTaskSnapshots(),this.backgroundTaskEvents.push(e),this.persistSession(),this.onChanged(`background_task`,Ft(e))}recordGroupEvent(e,t){this.backgroundJobGroups=this.getGroupSnapshots(),this.backgroundJobGroupEvents.push(e),this.persistSession(),this.onChanged(`background_group`,ue(e.group.id))}};function Ft(e){if(`task`in e)return w(e.task.id);if(`taskId`in e)return w(e.taskId)}function It(e){let t=j(e);if(!t)throw Error(`Agent runtime dependencies are not available for this session.`);if(!t.backgroundTaskManager)throw Error(`Background task manager is not available for this session.`);return t}function M(e){let t=It(e);if(!t.subagentManager)throw Error(`Subagent manager is not available for this session.`);return t.subagentManager}function Lt(e,t){let n=t.customAgentRegistry?.(e);if(!n)throw Error(`Unknown agent type: ${e}`);return n}function Rt(e){return(j(e)?.agentDefinitions??[]).map(e=>({name:e.name,description:e.description}))}async function zt(e,t,n,r){let i=It(e),a=Lt(t.agentType,i),o=e.getSessionId();return M(e).spawn({type:t.agentType,label:t.label,parentSessionId:o,mode:t.mode,depth:(i.subagentDepth??0)+1,cwd:i.cwd??n??process.cwd(),prompt:t.prompt,model:t.model??a.model,isolation:t.isolation,allowedTools:a.tools,disallowedTools:a.disallowedTools,metadata:T({kind:r===`model`?`model_command`:`slash_command`,sessionId:o,commandName:`agent`,label:t.label})})}async function Bt(e,t){return M(e).wait(t)}async function Vt(e,t,n){await M(e).send(t,n)}async function Ht(e,t,n){await M(e).cancel(t,n)}async function Ut(e,t){await M(e).close(t)}function Wt(e){return M(e).list()}function Gt(e,t={}){let{sessionId:n,execCtrl:r,histTracker:i,bgTracker:a}=e,o=i.getHistory();return fe({sessionId:n,mainThread:{sessionId:n,isExecuting:r.executing,hasPendingPrompt:r.pendingPrompt!==null,historyLength:o.length,updatedAt:o.at(-1)?.timestamp.toISOString()??new Date(0).toISOString(),preview:r.streamingText.trim().length>0?r.streamingText:o.at(-1)?.type},tasks:a.getTaskSnapshots(),groups:a.getGroupSnapshots(),selectedEntryId:t.selectedEntryId,filter:t.filter})}async function Kt(e,t,n,r,i){let a=de(e);if(!a)throw Error(`Unknown execution workspace entry: ${e}`);return a.kind===`main_thread`?ke({entryId:e,history:t(),cursor:i}):a.kind===`background_group`?n.readGroupDetail(e,a.sourceId,r):n.readTaskDetail(e,a.sourceId,i)}function qt(e,t,n,r){return Me({manager:e.getManagerOrThrow(),groupOrchestrator:e.getOrchestratorOrThrow(t),sessionId:t,cwd:n,origin:{...r,sessionId:r.sessionId||t}})}var Jt=class{isExecuting(){return this.execCtrl.executing}getPendingPrompt(){return this.execCtrl.pendingPrompt}getStreamingText(){return this.execCtrl.streamingText}getActiveTools(){return this.execCtrl.activeTools}cancelQueue(){this.execCtrl.clearPendingQueue()}async executeCommand(e,t){return await this.ensureInitialized(),this.execCtrl.executing?{success:!1,message:`Another prompt or command is already running. Wait for it to finish.`}:this.skillRouter.executeCommand(e,t)}async executeModelCommand(e,t){return await this.ensureInitialized(),this.skillRouter.executeModelCommand(e,t)}getCommandInvocationSource(){return this.skillRouter.getCommandInvocationSource()}async executeSkillCommandByName(e,t,n){return await this.ensureInitialized(),this.skillRouter.executeSkillCommandByName(e,t,n)}listCommands(){return this.skillRouter.listCommands()}listSkills(){return this.skillRouter.listSkills()}listModelInvocableCommands(){return this.skillRouter.listModelInvocableCommands()}getCommandHostAdapters(){return this.skillRouter.getCommandHostAdapters()}getSkillActivationEvents(){return this.histTracker.getSkillActivationEvents()}getContextState(){return this.getSessionOrThrow().getContextState()}async compactContext(e){await this.getSessionOrThrow().compact(e)}getFullHistory(){return this.histTracker.getHistory()}getMessages(){return this.histTracker.getHistory().filter(e=>e.category===`chat`).map(e=>e.data)}listEditCheckpoints(){return this.histTracker.listEditCheckpoints()}inspectEditCheckpoint(e){return this.histTracker.inspectEditCheckpoint(e)}async restoreEditCheckpoint(e){return await this.ensureInitialized(),this.histTracker.restoreEditCheckpoint(e)}async rollbackEditCheckpoint(e){return await this.ensureInitialized(),this.histTracker.rollbackEditCheckpoint(e)}getUsedMemoryReferences(){return this.histTracker.getUsedMemoryReferences()}recordMemoryEvent(e){this.histTracker.recordMemoryEvent(e)}listContextReferences(){return this.histTracker.listContextReferences()}async addContextReference(e){return this.histTracker.addContextReference(e)}removeContextReference(e){return this.histTracker.removeContextReference(e)}clearContextReferences(){return this.histTracker.clearContextReferences()}listBackgroundTasks(e){return this.bgTracker.listTasks(e)}getBackgroundTask(e){return this.bgTracker.getTask(e)}async cancelBackgroundTask(e,t){await this.ensureInitialized(),await this.bgTracker.cancelTask(e,t)}async closeBackgroundTask(e){await this.ensureInitialized(),await this.bgTracker.closeTask(e)}async sendBackgroundTask(e,t){await this.ensureInitialized(),await this.bgTracker.sendTask(e,t)}async readBackgroundTaskLog(e,t){return await this.ensureInitialized(),this.bgTracker.readTaskLog(e,t)}createBackgroundJobGroup(e){return this.bgTracker.createGroup(e,this.getSessionOrThrow().getSessionId())}listBackgroundJobGroups(){return this.bgTracker.listGroups(this.getSessionOrThrow().getSessionId())}getBackgroundJobGroup(e){return this.bgTracker.getGroup(e,this.getSessionOrThrow().getSessionId())}async waitBackgroundJobGroup(e){return await this.ensureInitialized(),this.bgTracker.waitGroup(e,this.getSessionOrThrow().getSessionId())}getExecutionWorkspaceSnapshot(e={}){return Gt({sessionId:this.getSessionOrThrow().getSessionId(),execCtrl:this.execCtrl,histTracker:this.histTracker,bgTracker:this.bgTracker},e)}listExecutionWorkspaceEntries(e){return[...this.getExecutionWorkspaceSnapshot({filter:e}).entries]}getExecutionWorkspaceEntry(e){return this.getExecutionWorkspaceSnapshot().entries.find(t=>t.id===e)}async readExecutionWorkspaceDetail(e,t){return await this.ensureInitialized(),Kt(e,()=>this.histTracker.getHistory(),this.bgTracker,this.getSessionOrThrow().getSessionId(),t)}createExecutionWorkspaceTaskSpawner(e){return qt(this.bgTracker,this.getSessionOrThrow().getSessionId(),this.getCwd(),e)}listAgentDefinitions(){return Rt(this.getSessionOrThrow())}listAgentJobs(){return Wt(this.getSessionOrThrow())}async spawnAgentJob(e){return await this.ensureInitialized(),zt(this.getSessionOrThrow(),e,this.getCwd(),this.skillRouter.getCommandInvocationSource())}async waitAgentJob(e){return await this.ensureInitialized(),Bt(this.getSessionOrThrow(),e)}async sendAgentJob(e,t){await this.ensureInitialized(),await Vt(this.getSessionOrThrow(),e,t)}async cancelAgentJob(e,t){await this.ensureInitialized(),await Ht(this.getSessionOrThrow(),e,t)}async closeAgentJob(e){await this.ensureInitialized(),await Ut(this.getSessionOrThrow(),e)}},N=class{existsSync(e){return(0,m.existsSync)(e)}readFileSync(e,t){return(0,m.readFileSync)(e,t)}writeFileSync(e,t,n){(0,m.writeFileSync)(e,t,n??`utf8`)}mkdirSync(e,t){(0,m.mkdirSync)(e,t)}readdirSync(e,t){return t?.withFileTypes?(0,m.readdirSync)(e,{withFileTypes:!0}):(0,m.readdirSync)(e)}statSync(e){return(0,m.statSync)(e)}rmSync(e,t){(0,m.rmSync)(e,t)}cpSync(e,t,n){(0,m.cpSync)(e,t,n)}renameSync(e,t){(0,m.renameSync)(e,t)}get constants(){return m.constants}},P=class{async access(e,t){await(0,h.access)(e,t)}async copyFile(e,t,n){await(0,h.copyFile)(e,t,n)}async mkdir(e,t){await(0,h.mkdir)(e,t)}async readFile(e,t){return(0,h.readFile)(e,t)}async readdir(e,t){return t?.withFileTypes?await(0,h.readdir)(e,{withFileTypes:!0}):(0,h.readdir)(e)}async realpath(e){return(0,h.realpath)(e)}async rename(e,t){await(0,h.rename)(e,t)}async rm(e,t){await(0,h.rm)(e,t)}async stat(e){return(0,h.stat)(e)}async writeFile(e,t,n){await(0,h.writeFile)(e,t,n??`utf8`)}};function Yt(e){return(0,p.createHash)(`sha256`).update(e,`utf-8`).digest(`hex`)}function Xt(e,t=new N){let n=t.readFileSync(e,`utf-8`);return{filePath:e,content:n,contentHash:Yt(n)}}async function Zt(e,t=new N){let n=[],r=[];for(let i of e){if(!t.existsSync(i.filePath)){r.push(i);continue}Yt(t.readFileSync(i.filePath,`utf-8`))===i.contentHash?r.push(i):n.push(i)}return{stale:n,fresh:r}}async function Qt(e,t=new N){let{stale:n}=await Zt(e,t),r=new Set(n.map(e=>e.filePath)),i=[];return{updated:e.map(e=>{if(!r.has(e.filePath))return e;let n=t.readFileSync(e.filePath,`utf-8`);return i.push(e.filePath),{filePath:e.filePath,content:n,contentHash:Yt(n)}}),refreshed:i}}async function $t(e,t,n,r,i,a){if(!n)return;let o=[...e,...t];if(o.length===0)return;let s=e.length,{updated:c,refreshed:l}=await Qt(o);if(l.length===0)return;let u=c.slice(0,s),d=c.slice(s);r(u,d);let f=n(u.map(e=>e.content).join(`
49
+ `)}const mt={sonnet:`claude-sonnet-4-6`,haiku:`claude-haiku-4-5`,opus:`claude-opus-4-6`},ht=st(`agent`);function gt(e,t){return mt[e]??e}function _t(e,t){let n=[...e];if(t.disallowedTools){let e=new Set(t.disallowedTools);n=n.filter(t=>!e.has(t.getName()))}if(t.tools){let e=new Set(t.tools);n=n.filter(t=>e.has(t.getName()))}return n=n.filter(e=>e.getName()!==`Agent`&&e.getName()!==ht),n}function vt(e){let{agentDefinition:t,parentConfig:n,parentContext:r,parentTools:i,terminal:a}=e,o=_t(i,t),s=t.model?gt(t.model,n.provider.model):n.provider.model,c=rt({agentBody:t.systemPrompt,claudeMd:r.claudeMd,agentsMd:r.agentsMd,isForkWorker:e.isForkWorker??!1}),l=e.provider;return new f.Session({tools:o,provider:l,systemMessage:c,terminal:a,...e.sessionId===void 0?{}:{sessionId:e.sessionId},...e.sessionLogger===void 0?{}:{sessionLogger:e.sessionLogger},model:s,maxTurns:t.maxTurns,permissions:n.permissions,permissionMode:e.permissionMode,defaultTrustLevel:n.defaultTrustLevel,permissionHandler:e.permissionHandler,hooks:e.hooks,hookTypeExecutors:e.hookTypeExecutors,onTextDelta:e.onTextDelta,onToolExecution:e.onToolExecution})}function yt(e,t){let n=t?.(e)??et(e);if(!n)throw Error(`Unknown agent type: ${e}`);return n}function bt(e,t){return{...e,...t.request.model?{model:t.request.model}:{},...t.request.allowedTools?{tools:t.request.allowedTools}:{},...t.request.disallowedTools?{disallowedTools:t.request.disallowedTools}:{}}}function xt(e){if(!e)return;let t=Object.values(e)[0];if(t!==void 0)return typeof t==`object`?JSON.stringify(t):String(t)}function St(e){if(e.request.isolation===`worktree`)throw Error(`Worktree isolation requires a runtime shell subagent runner`)}function Ct(e,t){if(t.type===`start`){e.emit?.({type:`background_task_tool_start`,toolName:t.toolName,firstArg:xt(t.toolArgs)});return}e.emit?.({type:`background_task_tool_end`,toolName:t.toolName,success:t.success??!0})}function wt(e){return{start(t){St(t);let n=vt({agentDefinition:bt(yt(t.request.type,e.customAgentRegistry),t),parentConfig:e.config,parentContext:e.context,parentTools:e.tools,provider:e.provider,terminal:e.terminal,permissionMode:e.permissionMode,permissionHandler:e.permissionHandler,hooks:e.hooks,hookTypeExecutors:e.hookTypeExecutors,onTextDelta:n=>{t.emit?.({type:`background_task_text_delta`,delta:n}),e.onTextDelta?.(n)},onToolExecution:n=>{Ct(t,n),e.onToolExecution?.(n)}});return{jobId:t.jobId,result:n.run(t.request.prompt).then(e=>({jobId:t.jobId,output:e})),cancel:()=>(n.abort(),Promise.resolve())}}}}const Tt=[`Creates delegated subagent jobs in isolated contexts.`,`Without jobs, one tool call creates one subagent job from prompt.`,`For explicit multi-agent or parallel-agent requests, use one Agent tool call with jobs containing one entry per requested role and a stable label for each role.`,`When the user explicitly asks to create, run, spawn, delegate to, or use agents/subagents, start the requested subagent job immediately.`,`Do not ask a follow-up question unless execution is impossible or unsafe.`,`Subagent jobs run as background tasks by default.`,`The tool waits for a terminal result and returns completed, failed, or timed-out outcome data with structured requested/started job counts.`,`After the tool returns, base user-facing claims on returned mode and counts; do not say parallel or multiple jobs started unless the result proves those jobs started.`,`Execution is represented by a real tool call and runtime background task event.`].join(` `);function Et(e){return e}const Dt=d.z.object({prompt:d.z.string().optional().describe(`The task for a single subagent to perform. Required when jobs is omitted.`),subagent_type:d.z.string().optional().describe(`Agent type: "general-purpose", "Explore", "Plan", or a custom agent name`),model:d.z.string().optional().describe(`Optional model override`),isolation:d.z.enum([`none`,`worktree`]).optional().describe(`Optional runtime isolation mode. "worktree" runs in a Git worktree.`),jobs:d.z.array(d.z.object({label:d.z.string().optional().describe(`Stable role label for this batch job`),prompt:d.z.string().describe(`The task for this subagent to perform`),subagent_type:d.z.string().optional().describe(`Agent type for this job`),model:d.z.string().optional().describe(`Optional model override for this job`),isolation:d.z.enum([`none`,`worktree`]).optional().describe(`Isolation for this job`)}).passthrough()).optional().describe(`Batch of subagent jobs to start in one Agent tool call`)}).passthrough(),Ot=new WeakMap;function kt(e,t){Ot.set(e,t)}function A(e){return Ot.get(e)}function At(e,t){if(t){let n=t(e);if(n)return n}let n=et(e);if(n)return n}function jt(e){return e.subagentManager??new l.SubagentManager({runner:wt(e)})}function Mt(e,t,n,r,i=n.name,a){return{type:t,label:i,parentSessionId:r.parentSessionId??`unknown-session`,mode:`background`,depth:r.subagentDepth??1,cwd:r.cwd??process.cwd(),prompt:e.prompt,model:e.model,isolation:e.isolation,metadata:E({kind:`tool_call`,sessionId:r.parentSessionId??`unknown-session`,label:i,...a?{toolCallId:a}:{}})}}async function Nt(e,t,n,r){if(typeof e.prompt!=`string`||e.prompt.length===0)return Qe(`prompt is required when jobs is omitted`);let i={...e,prompt:e.prompt},a=e.subagent_type??`general-purpose`,o=At(a,t.customAgentRegistry);if(!o)return Xe(a);let s;try{let e=await n.spawn(Mt(i,a,o,t,void 0,r));return s=e.id,Ze(await n.wait(e.id))}catch(e){return Qe(e instanceof Error?e.message:String(e),s)}}function Pt(e){let t=jt(e);return(0,u.createZodFunctionTool)(`Agent`,Tt,Et(Dt),async(n,r)=>{let i=n,a=r?.executionId;return Array.isArray(i.jobs)&&i.jobs.length>0?Ye({jobs:i.jobs,deps:e,manager:t,resolveAgentDefinition:At,createSpawnRequest:Mt,toolCallId:a}):Nt({prompt:i.prompt,...i.subagent_type===void 0?{}:{subagent_type:i.subagent_type},...i.model===void 0?{}:{model:i.model},...i.isolation===void 0?{}:{isolation:i.isolation}},e,t,a)})}var Ft=class{getManager;onChanged;emitTaskEvent;emitGroupEvent;persistSession;backgroundTasks=[];backgroundTaskEvents=[];backgroundJobGroups=[];backgroundJobGroupEvents=[];backgroundTaskUnsubscribe=null;backgroundJobUnsubscribe=null;backgroundJobOrchestrator=null;constructor(e,t,n,r,i){this.getManager=e,this.onChanged=t,this.emitTaskEvent=n,this.emitGroupEvent=r,this.persistSession=i}subscribe(e){if(this.backgroundTaskUnsubscribe)return;let t=Le(e)??A(e)?.backgroundTaskManager;t&&(this.backgroundTaskUnsubscribe=t.subscribe(e=>{this.recordTaskEvent(e),this.emitTaskEvent(e)}))}dispose(){this.backgroundTaskUnsubscribe?.(),this.backgroundTaskUnsubscribe=null,this.backgroundJobUnsubscribe?.(),this.backgroundJobUnsubscribe=null,this.backgroundJobOrchestrator?.dispose(),this.backgroundJobOrchestrator=null}restoreState(e){this.backgroundTasks=e.tasks,this.backgroundTaskEvents=e.taskEvents,this.backgroundJobGroups=e.groups,this.backgroundJobGroupEvents=e.groupEvents}getState(){return{tasks:this.getTaskSnapshots(),taskEvents:this.backgroundTaskEvents,groups:this.getGroupSnapshots(),groupEvents:this.backgroundJobGroupEvents}}getManagerOrThrow(){let e=this.getManager();if(!e)throw Error(`Background task manager is not available for this session.`);return e}getOrchestratorOrThrow(e){if(this.backgroundJobOrchestrator)return this.backgroundJobOrchestrator;let t=this.getManagerOrThrow();return this.backgroundJobOrchestrator=new ne({manager:t,initialGroups:this.backgroundJobGroups}),this.subscribeGroupEvents(e),this.backgroundJobOrchestrator}async cancelTask(e,t){await this.getManagerOrThrow().cancel(e,t)}async closeTask(e){await this.getManagerOrThrow().close(e)}async sendTask(e,t){await this.getManagerOrThrow().send(e,t)}async readTaskLog(e,t){return this.getManagerOrThrow().readLog(e,t)}listTasks(e){return this.getManagerOrThrow().list(e)}getTask(e){return this.getManagerOrThrow().get(e)}createGroup(e,t){return this.getOrchestratorOrThrow(t).createGroup({...e,parentSessionId:t})}listGroups(e){return this.getOrchestratorOrThrow(e).listGroups()}getGroup(e,t){return this.getOrchestratorOrThrow(t).getGroup(e)}async waitGroup(e,t){return this.getOrchestratorOrThrow(t).waitGroup(e)}async readTaskDetail(e,t,n){let r=this.getManagerOrThrow().get(t);if(!r)throw Error(`Unknown background task: ${t}`);if(r.logPath||r.transcriptPath){let i=await this.getManagerOrThrow().readLog(t,n);return ke({entryId:e,lines:i.lines,cursor:i.cursor,nextCursor:i.nextCursor,kind:r.kind===`process`?`process_output`:`progress`})}let i=r.status===`failed`?`error`:r.status===`completed`?`result`:`progress`;return ke({entryId:e,lines:[r.error?.message??r.result?.output??r.currentAction??r.promptPreview??r.commandPreview??r.status],cursor:n,kind:i})}readGroupDetail(e,t,n){let r=this.getOrchestratorOrThrow(n).getGroup(t);if(!r)throw Error(`Unknown background job group: ${t}`);return ke({entryId:e,lines:se(r).lines,kind:`group_summary`})}getTaskSnapshots(){try{return this.getManagerOrThrow().list()}catch{return this.backgroundTasks}}getGroupSnapshots(){try{return this.backgroundJobOrchestrator?.listGroups()??this.backgroundJobGroups}catch{return this.backgroundJobGroups}}subscribeGroupEvents(e){this.backgroundJobUnsubscribe||!this.backgroundJobOrchestrator||(this.backgroundJobUnsubscribe=this.backgroundJobOrchestrator.subscribe(t=>{this.recordGroupEvent(t,e),this.emitGroupEvent(t)}))}recordTaskEvent(e){this.backgroundTasks=this.getTaskSnapshots(),this.backgroundTaskEvents.push(e),this.persistSession(),this.onChanged(`background_task`,It(e))}recordGroupEvent(e,t){this.backgroundJobGroups=this.getGroupSnapshots(),this.backgroundJobGroupEvents.push(e),this.persistSession(),this.onChanged(`background_group`,T(e.group.id))}};function It(e){if(`task`in e)return w(e.task.id);if(`taskId`in e)return w(e.taskId)}function Lt(e){let t=A(e);if(!t)throw Error(`Agent runtime dependencies are not available for this session.`);if(!t.backgroundTaskManager)throw Error(`Background task manager is not available for this session.`);return t}function j(e){let t=Lt(e);if(!t.subagentManager)throw Error(`Subagent manager is not available for this session.`);return t.subagentManager}function Rt(e,t){let n=t.customAgentRegistry?.(e);if(!n)throw Error(`Unknown agent type: ${e}`);return n}function zt(e){return(A(e)?.agentDefinitions??[]).map(e=>({name:e.name,description:e.description}))}async function Bt(e,t,n,r){let i=Lt(e),a=Rt(t.agentType,i),o=e.getSessionId();return j(e).spawn({type:t.agentType,label:t.label,parentSessionId:o,mode:t.mode,depth:(i.subagentDepth??0)+1,cwd:i.cwd??n??process.cwd(),prompt:t.prompt,model:t.model??a.model,isolation:t.isolation,allowedTools:a.tools,disallowedTools:a.disallowedTools,metadata:E({kind:r===`model`?`model_command`:`slash_command`,sessionId:o,commandName:`agent`,label:t.label})})}async function Vt(e,t){return j(e).wait(t)}async function Ht(e,t,n){await j(e).send(t,n)}async function Ut(e,t,n){await j(e).cancel(t,n)}async function Wt(e,t){await j(e).close(t)}function Gt(e){return j(e).list()}function Kt(e,t={}){let{sessionId:n,execCtrl:r,histTracker:i,bgTracker:a}=e,o=i.getHistory();return de({sessionId:n,mainThread:{sessionId:n,isExecuting:r.executing,hasPendingPrompt:r.pendingPrompt!==null,historyLength:o.length,updatedAt:o.at(-1)?.timestamp.toISOString()??new Date(0).toISOString(),preview:r.streamingText.trim().length>0?r.streamingText:o.at(-1)?.type},tasks:a.getTaskSnapshots(),groups:a.getGroupSnapshots(),selectedEntryId:t.selectedEntryId,filter:t.filter})}async function qt(e,t,n,r,i){let a=ue(e);if(!a)throw Error(`Unknown execution workspace entry: ${e}`);return a.kind===`main_thread`?Oe({entryId:e,history:t(),cursor:i}):a.kind===`background_group`?n.readGroupDetail(e,a.sourceId,r):n.readTaskDetail(e,a.sourceId,i)}function Jt(e,t,n,r){return Me({manager:e.getManagerOrThrow(),groupOrchestrator:e.getOrchestratorOrThrow(t),sessionId:t,cwd:n,origin:{...r,sessionId:r.sessionId||t}})}var Yt=class{isExecuting(){return this.execCtrl.executing}getPendingPrompt(){return this.execCtrl.pendingPrompt}getStreamingText(){return this.execCtrl.streamingText}getActiveTools(){return this.execCtrl.activeTools}cancelQueue(){this.execCtrl.clearPendingQueue()}async executeCommand(e,t){return await this.ensureInitialized(),this.execCtrl.executing?{success:!1,message:`Another prompt or command is already running. Wait for it to finish.`}:this.skillRouter.executeCommand(e,t)}async executeModelCommand(e,t){return await this.ensureInitialized(),this.skillRouter.executeModelCommand(e,t)}getCommandInvocationSource(){return this.skillRouter.getCommandInvocationSource()}async executeSkillCommandByName(e,t,n){return await this.ensureInitialized(),this.skillRouter.executeSkillCommandByName(e,t,n)}listCommands(){return this.skillRouter.listCommands()}listSkills(){return this.skillRouter.listSkills()}listModelInvocableCommands(){return this.skillRouter.listModelInvocableCommands()}getCommandHostAdapters(){return this.skillRouter.getCommandHostAdapters()}getSkillActivationEvents(){return this.histTracker.getSkillActivationEvents()}getContextState(){return this.getSessionOrThrow().getContextState()}async compactContext(e){await this.getSessionOrThrow().compact(e)}getFullHistory(){return this.histTracker.getHistory()}getMessages(){return this.histTracker.getHistory().filter(e=>e.category===`chat`).map(e=>e.data)}listEditCheckpoints(){return this.histTracker.listEditCheckpoints()}inspectEditCheckpoint(e){return this.histTracker.inspectEditCheckpoint(e)}async restoreEditCheckpoint(e){return await this.ensureInitialized(),this.histTracker.restoreEditCheckpoint(e)}async rollbackEditCheckpoint(e){return await this.ensureInitialized(),this.histTracker.rollbackEditCheckpoint(e)}getUsedMemoryReferences(){return this.histTracker.getUsedMemoryReferences()}recordMemoryEvent(e){this.histTracker.recordMemoryEvent(e)}listContextReferences(){return this.histTracker.listContextReferences()}async addContextReference(e){return this.histTracker.addContextReference(e)}removeContextReference(e){return this.histTracker.removeContextReference(e)}clearContextReferences(){return this.histTracker.clearContextReferences()}listBackgroundTasks(e){return this.bgTracker.listTasks(e)}getBackgroundTask(e){return this.bgTracker.getTask(e)}async cancelBackgroundTask(e,t){await this.ensureInitialized(),await this.bgTracker.cancelTask(e,t)}async closeBackgroundTask(e){await this.ensureInitialized(),await this.bgTracker.closeTask(e)}async sendBackgroundTask(e,t){await this.ensureInitialized(),await this.bgTracker.sendTask(e,t)}async readBackgroundTaskLog(e,t){return await this.ensureInitialized(),this.bgTracker.readTaskLog(e,t)}createBackgroundJobGroup(e){return this.bgTracker.createGroup(e,this.getSessionOrThrow().getSessionId())}listBackgroundJobGroups(){return this.bgTracker.listGroups(this.getSessionOrThrow().getSessionId())}getBackgroundJobGroup(e){return this.bgTracker.getGroup(e,this.getSessionOrThrow().getSessionId())}async waitBackgroundJobGroup(e){return await this.ensureInitialized(),this.bgTracker.waitGroup(e,this.getSessionOrThrow().getSessionId())}getExecutionWorkspaceSnapshot(e={}){return Kt({sessionId:this.getSessionOrThrow().getSessionId(),execCtrl:this.execCtrl,histTracker:this.histTracker,bgTracker:this.bgTracker},e)}listExecutionWorkspaceEntries(e){return[...this.getExecutionWorkspaceSnapshot({filter:e}).entries]}getExecutionWorkspaceEntry(e){return this.getExecutionWorkspaceSnapshot().entries.find(t=>t.id===e)}async readExecutionWorkspaceDetail(e,t){return await this.ensureInitialized(),qt(e,()=>this.histTracker.getHistory(),this.bgTracker,this.getSessionOrThrow().getSessionId(),t)}createExecutionWorkspaceTaskSpawner(e){return Jt(this.bgTracker,this.getSessionOrThrow().getSessionId(),this.getCwd(),e)}listAgentDefinitions(){return zt(this.getSessionOrThrow())}listAgentJobs(){return Gt(this.getSessionOrThrow())}async spawnAgentJob(e){return await this.ensureInitialized(),Bt(this.getSessionOrThrow(),e,this.getCwd(),this.skillRouter.getCommandInvocationSource())}async waitAgentJob(e){return await this.ensureInitialized(),Vt(this.getSessionOrThrow(),e)}async sendAgentJob(e,t){await this.ensureInitialized(),await Ht(this.getSessionOrThrow(),e,t)}async cancelAgentJob(e,t){await this.ensureInitialized(),await Ut(this.getSessionOrThrow(),e,t)}async closeAgentJob(e){await this.ensureInitialized(),await Wt(this.getSessionOrThrow(),e)}},M=class{existsSync(e){return(0,m.existsSync)(e)}readFileSync(e,t){return(0,m.readFileSync)(e,t)}writeFileSync(e,t,n){(0,m.writeFileSync)(e,t,n??`utf8`)}mkdirSync(e,t){(0,m.mkdirSync)(e,t)}readdirSync(e,t){return t?.withFileTypes?(0,m.readdirSync)(e,{withFileTypes:!0}):(0,m.readdirSync)(e)}statSync(e){return(0,m.statSync)(e)}rmSync(e,t){(0,m.rmSync)(e,t)}cpSync(e,t,n){(0,m.cpSync)(e,t,n)}renameSync(e,t){(0,m.renameSync)(e,t)}get constants(){return m.constants}},N=class{async access(e,t){await(0,h.access)(e,t)}async copyFile(e,t,n){await(0,h.copyFile)(e,t,n)}async mkdir(e,t){await(0,h.mkdir)(e,t)}async readFile(e,t){return(0,h.readFile)(e,t)}async readdir(e,t){return t?.withFileTypes?await(0,h.readdir)(e,{withFileTypes:!0}):(0,h.readdir)(e)}async realpath(e){return(0,h.realpath)(e)}async rename(e,t){await(0,h.rename)(e,t)}async rm(e,t){await(0,h.rm)(e,t)}async stat(e){return(0,h.stat)(e)}async writeFile(e,t,n){await(0,h.writeFile)(e,t,n??`utf8`)}};function Xt(e){return(0,p.createHash)(`sha256`).update(e,`utf-8`).digest(`hex`)}function Zt(e,t=new M){let n=t.readFileSync(e,`utf-8`);return{filePath:e,content:n,contentHash:Xt(n)}}async function Qt(e,t=new M){let n=[],r=[];for(let i of e){if(!t.existsSync(i.filePath)){r.push(i);continue}Xt(t.readFileSync(i.filePath,`utf-8`))===i.contentHash?r.push(i):n.push(i)}return{stale:n,fresh:r}}async function $t(e,t=new M){let{stale:n}=await Qt(e,t),r=new Set(n.map(e=>e.filePath)),i=[];return{updated:e.map(e=>{if(!r.has(e.filePath))return e;let n=t.readFileSync(e.filePath,`utf-8`);return i.push(e.filePath),{filePath:e.filePath,content:n,contentHash:Xt(n)}}),refreshed:i}}async function en(e,t,n,r,i,a){if(!n)return;let o=[...e,...t];if(o.length===0)return;let s=e.length,{updated:c,refreshed:l}=await $t(o);if(l.length===0)return;let u=c.slice(0,s),d=c.slice(s);r(u,d);let f=n(u.map(e=>e.content).join(`
50
50
 
51
51
  `),d.map(e=>e.content).join(`
52
52
 
53
- `));i().updateSystemMessage(f);for(let e of l)a(`context_file_refreshed`,{filePath:e})}function en(e,t,n,r=new Date().toISOString()){return{id:`${t}:${e.relativePath}`,sourcePath:e.sourcePath,relativePath:e.relativePath,originalReference:e.originalReference,loadType:t,status:n,byteLength:e.byteLength,loadedAt:r,lastUsedAt:r}}function tn(e,t,n){let r=e.find(e=>e.sourcePath===t.sourcePath),i=e.filter(e=>e.sourcePath!==t.sourcePath),a=r?sn(r,t):t;return cn([...i,a],n)}function nn(e,t){let n=dn(t),r=e.find(e=>fn(e,n));return r?{references:e.filter(e=>e.sourcePath!==r.sourcePath),result:{removed:r}}:{references:[...e],result:{}}}function rn(e){return{removed:[...e]}}function an(e){return e.filter(e=>e.status===`active`)}function on(e){return e.filter(e=>e.loadType!==`system`).map(e=>({originalReference:e.originalReference,sourcePath:e.sourcePath,relativePath:e.relativePath,reason:e.loadType,depth:0,byteLength:e.byteLength}))}function sn(e,t){return t.status===`active`?{...t,loadedAt:e.loadedAt}:{...e,byteLength:t.byteLength,originalReference:t.originalReference,lastUsedAt:t.lastUsedAt}}function cn(e,t){let n=t?.maxActiveReferences??8,r=t?.maxActiveBytes??262144,i=t?.maxObservedReferences??32,a=[],o=[...e];for(;ln(o)>n||un(o)>r;){let e=o.find(e=>e.status===`active`);if(!e)break;a.push(e),o=o.filter(t=>t.sourcePath!==e.sourcePath)}let s=o.filter(e=>e.status===`observed`);if(s.length>i){let e=s.slice(0,s.length-i);a.push(...e),o=o.filter(t=>t.status!==`observed`||!e.some(e=>e.sourcePath===t.sourcePath))}return{references:o,evicted:a}}function ln(e){return e.filter(e=>e.status===`active`).length}function un(e){return e.reduce((e,t)=>e+(t.status===`active`?t.byteLength:0),0)}function dn(e){return e.startsWith(`@`)?e.slice(1):e}function fn(e,t){return e.relativePath===t||e.sourcePath===t||e.originalReference===t||e.originalReference===`@${t}`}function pn(e,t){return t.length===0?e:[e,`<robota_file_references>`,...t.map(e=>{let t=e.content.replaceAll(`</file>`,`<\\/file>`);return[`<file path="${_n(e.relativePath)}" bytes="${e.byteLength}" reason="${e.reason}">`,t,`</file>`].join(`
53
+ `));i().updateSystemMessage(f);for(let e of l)a(`context_file_refreshed`,{filePath:e})}function tn(e,t,n,r=new Date().toISOString()){return{id:`${t}:${e.relativePath}`,sourcePath:e.sourcePath,relativePath:e.relativePath,originalReference:e.originalReference,loadType:t,status:n,byteLength:e.byteLength,loadedAt:r,lastUsedAt:r}}function nn(e,t,n){let r=e.find(e=>e.sourcePath===t.sourcePath),i=e.filter(e=>e.sourcePath!==t.sourcePath),a=r?cn(r,t):t;return ln([...i,a],n)}function rn(e,t){let n=fn(t),r=e.find(e=>pn(e,n));return r?{references:e.filter(e=>e.sourcePath!==r.sourcePath),result:{removed:r}}:{references:[...e],result:{}}}function an(e){return{removed:[...e]}}function on(e){return e.filter(e=>e.status===`active`)}function sn(e){return e.filter(e=>e.loadType!==`system`).map(e=>({originalReference:e.originalReference,sourcePath:e.sourcePath,relativePath:e.relativePath,reason:e.loadType,depth:0,byteLength:e.byteLength}))}function cn(e,t){return t.status===`active`?{...t,loadedAt:e.loadedAt}:{...e,byteLength:t.byteLength,originalReference:t.originalReference,lastUsedAt:t.lastUsedAt}}function ln(e,t){let n=t?.maxActiveReferences??8,r=t?.maxActiveBytes??262144,i=t?.maxObservedReferences??32,a=[],o=[...e];for(;un(o)>n||dn(o)>r;){let e=o.find(e=>e.status===`active`);if(!e)break;a.push(e),o=o.filter(t=>t.sourcePath!==e.sourcePath)}let s=o.filter(e=>e.status===`observed`);if(s.length>i){let e=s.slice(0,s.length-i);a.push(...e),o=o.filter(t=>t.status!==`observed`||!e.some(e=>e.sourcePath===t.sourcePath))}return{references:o,evicted:a}}function un(e){return e.filter(e=>e.status===`active`).length}function dn(e){return e.reduce((e,t)=>e+(t.status===`active`?t.byteLength:0),0)}function fn(e){return e.startsWith(`@`)?e.slice(1):e}function pn(e,t){return e.relativePath===t||e.sourcePath===t||e.originalReference===t||e.originalReference===`@${t}`}function mn(e,t){return t.length===0?e:[e,`<robota_file_references>`,...t.map(e=>{let t=e.content.replaceAll(`</file>`,`<\\/file>`);return[`<file path="${vn(e.relativePath)}" bytes="${e.byteLength}" reason="${e.reason}">`,t,`</file>`].join(`
54
54
  `)}),`</robota_file_references>`].join(`
55
55
 
56
- `)}function mn(e){return e.some(e=>e.severity===`error`)}function hn(e){return e.length===0?``:[`File reference error:`,...e.map(e=>`- ${e.reference}: ${e.message}`)].join(`
57
- `)}function F(e){return e.map(({content:e,...t})=>t)}function gn(e){let t=F(e);return{id:`prompt_file_reference_${(0,p.randomUUID)()}`,timestamp:new Date,category:`event`,type:`prompt-file-reference`,data:{message:vn(t),references:t}}}function _n(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function vn(e){return`Loaded file references: ${e.map(e=>`${e.relativePath} (${e.byteLength} B)`).join(`, `)}`}const yn=/(^|[\s([{])@([^\s)\]}>,;"'`]+)/g;function bn(e){let t=[];for(let n of e.matchAll(yn)){let e=xn(n[2]??``);Sn(e)&&t.push({original:`@${e}`,path:e,index:n.index??0})}return t}function xn(e){let t=e.length;for(;t>0&&/[.,:;!?]/.test(e[t-1]??``);)--t;return e.slice(0,t)}function Sn(e){return e.length===0||e.includes(`://`)?!1:e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`.`)||e.includes(`.`)}function Cn(e,t){return e.startsWith(`~/`)?(0,g.resolve)((0,_.homedir)(),e.slice(2)):(0,g.isAbsolute)(e)?(0,g.resolve)(e):(0,g.resolve)(t,e)}function wn(e,t){let n=(0,g.relative)(t,e);return n===``||!n.startsWith(`..`)&&!(0,g.isAbsolute)(n)}function Tn(e,t){return(0,g.relative)(e,t).split(g.sep).join(`/`)}const En=1024;64*En,256*En;async function Dn(e,t){let n=await kn(t);for(let t of bn(e))await Nn(t,0,[],n);return An(n)}async function On(e,t){let n=await kn(t);for(let t of e)await Nn({original:`@${t}`,path:t,index:0},0,[],n);return An(n)}async function kn(e){let t=e.fsAsync??new P;return{rootPath:await Mn(e.cwd,t),limits:jn(e.limits),reason:e.reason??`prompt-reference`,references:[],diagnostics:[],loadedPaths:new Set,totalBytes:0,fsAsync:t}}function An(e){return{references:e.references,diagnostics:e.diagnostics}}function jn(e){return{maxDepth:e?.maxDepth??2,maxReferences:e?.maxReferences??8,maxFileBytes:e?.maxFileBytes??65536,maxTotalBytes:e?.maxTotalBytes??262144}}async function Mn(e,t){try{return await t.realpath(e)}catch{return(0,g.resolve)(e)}}async function Nn(e,t,n,r){if(!Pn(e,t,r))return;let i=await Fn(e,r);if(i===void 0||!In(e,i,n,r))return;let a=await Ln(e,i,r);if(a===void 0)return;let o=await Rn(e,i,r);o!==void 0&&(r.loadedPaths.add(i),r.totalBytes+=a.byteLength,r.references.push(zn(e,a,t,o,r)),await Bn(o,t,[...n,i],r))}function Pn(e,t,n){return n.references.length>=n.limits.maxReferences?(I(n,`too-many-references`,e,`Too many file references.`),!1):t>n.limits.maxDepth?(I(n,`max-depth`,e,`File reference nesting is too deep.`),!1):!0}async function Fn(e,t){let n=Cn(e.path,t.rootPath);if(!wn(n,t.rootPath)){I(t,`outside-root`,e,`Referenced path is outside the workspace.`);return}try{let r=await t.fsAsync.realpath(n);if(wn(r,t.rootPath))return r;I(t,`outside-root`,e,`Referenced path resolves outside the workspace.`)}catch{I(t,`not-found`,e,`Referenced file was not found.`)}}function In(e,t,n,r){return n.includes(t)?(I(r,`circular-reference`,e,`Circular file reference detected.`),!1):!r.loadedPaths.has(t)}async function Ln(e,t,n){try{let r=await n.fsAsync.stat(t);if(r.isDirectory()){I(n,`directory-not-supported`,e,`Directory references are not supported.`);return}if(r.size>n.limits.maxFileBytes){I(n,`file-too-large`,e,`Referenced file exceeds the per-file size limit.`);return}if(n.totalBytes+r.size>n.limits.maxTotalBytes){I(n,`total-too-large`,e,`Referenced files exceed the total size limit.`);return}return{sourcePath:t,byteLength:r.size}}catch{I(n,`unreadable`,e,`Referenced file could not be inspected.`);return}}async function Rn(e,t,n){try{return await n.fsAsync.readFile(t,`utf8`)}catch{I(n,`unreadable`,e,`Referenced file could not be read.`);return}}function zn(e,t,n,r,i){return{originalReference:e.original,sourcePath:t.sourcePath,relativePath:Tn(i.rootPath,t.sourcePath),reason:i.reason,depth:n,byteLength:t.byteLength,content:r}}async function Bn(e,t,n,r){for(let i of bn(e))await Nn(i,t+1,n,r)}function I(e,t,n,r){e.diagnostics.push({code:t,severity:`error`,reference:n.original,message:r,path:n.path})}function Vn(e){return e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&(e.message.includes(`aborted`)||e.message.includes(`abort`))}function Hn(e,t){let n=[];for(let r=t;r<e.length;r++){let t=e[r];if(t?.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)n.push({name:e.function.name,args:e.function.arguments})}return n}function Un(e,t,n,r,i,a){let o=Hn(t,r),s=Jn(t,r,i);return{response:e,history:n,toolSummaries:o,contextState:i,...s&&{usage:s},...a&&a.length>0?{promptFileReferences:[...a]}:{}}}function Wn(e,t,n,r){let i=Hn(e,n),a=[];for(let t=n;t<e.length;t++){let n=e[t];n?.role===`assistant`&&n.content&&a.push(n.content)}let o=Jn(e,n,r);return{response:a.join(`
56
+ `)}function hn(e){return e.some(e=>e.severity===`error`)}function gn(e){return e.length===0?``:[`File reference error:`,...e.map(e=>`- ${e.reference}: ${e.message}`)].join(`
57
+ `)}function P(e){return e.map(({content:e,...t})=>t)}function _n(e){let t=P(e);return{id:`prompt_file_reference_${(0,p.randomUUID)()}`,timestamp:new Date,category:`event`,type:`prompt-file-reference`,data:{message:yn(t),references:t}}}function vn(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`)}function yn(e){return`Loaded file references: ${e.map(e=>`${e.relativePath} (${e.byteLength} B)`).join(`, `)}`}const bn=/(^|[\s([{])@([^\s)\]}>,;"'`]+)/g;function xn(e){let t=[];for(let n of e.matchAll(bn)){let e=Sn(n[2]??``);Cn(e)&&t.push({original:`@${e}`,path:e,index:n.index??0})}return t}function Sn(e){let t=e.length;for(;t>0&&/[.,:;!?]/.test(e[t-1]??``);)--t;return e.slice(0,t)}function Cn(e){return e.length===0||e.includes(`://`)?!1:e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`.`)||e.includes(`.`)}function wn(e,t){return e.startsWith(`~/`)?(0,g.resolve)((0,_.homedir)(),e.slice(2)):(0,g.isAbsolute)(e)?(0,g.resolve)(e):(0,g.resolve)(t,e)}function Tn(e,t){let n=(0,g.relative)(t,e);return n===``||!n.startsWith(`..`)&&!(0,g.isAbsolute)(n)}function En(e,t){return(0,g.relative)(e,t).split(g.sep).join(`/`)}const Dn=1024;64*Dn,256*Dn;async function On(e,t){let n=await An(t);for(let t of xn(e))await Pn(t,0,[],n);return jn(n)}async function kn(e,t){let n=await An(t);for(let t of e)await Pn({original:`@${t}`,path:t,index:0},0,[],n);return jn(n)}async function An(e){let t=e.fsAsync??new N;return{rootPath:await Nn(e.cwd,t),limits:Mn(e.limits),reason:e.reason??`prompt-reference`,references:[],diagnostics:[],loadedPaths:new Set,totalBytes:0,fsAsync:t}}function jn(e){return{references:e.references,diagnostics:e.diagnostics}}function Mn(e){return{maxDepth:e?.maxDepth??2,maxReferences:e?.maxReferences??8,maxFileBytes:e?.maxFileBytes??65536,maxTotalBytes:e?.maxTotalBytes??262144}}async function Nn(e,t){try{return await t.realpath(e)}catch{return(0,g.resolve)(e)}}async function Pn(e,t,n,r){if(!Fn(e,t,r))return;let i=await In(e,r);if(i===void 0||!Ln(e,i,n,r))return;let a=await Rn(e,i,r);if(a===void 0)return;let o=await zn(e,i,r);o!==void 0&&(r.loadedPaths.add(i),r.totalBytes+=a.byteLength,r.references.push(Bn(e,a,t,o,r)),await Vn(o,t,[...n,i],r))}function Fn(e,t,n){return n.references.length>=n.limits.maxReferences?(F(n,`too-many-references`,e,`Too many file references.`),!1):t>n.limits.maxDepth?(F(n,`max-depth`,e,`File reference nesting is too deep.`),!1):!0}async function In(e,t){let n=wn(e.path,t.rootPath);if(!Tn(n,t.rootPath)){F(t,`outside-root`,e,`Referenced path is outside the workspace.`);return}try{let r=await t.fsAsync.realpath(n);if(Tn(r,t.rootPath))return r;F(t,`outside-root`,e,`Referenced path resolves outside the workspace.`)}catch{F(t,`not-found`,e,`Referenced file was not found.`)}}function Ln(e,t,n,r){return n.includes(t)?(F(r,`circular-reference`,e,`Circular file reference detected.`),!1):!r.loadedPaths.has(t)}async function Rn(e,t,n){try{let r=await n.fsAsync.stat(t);if(r.isDirectory()){F(n,`directory-not-supported`,e,`Directory references are not supported.`);return}if(r.size>n.limits.maxFileBytes){F(n,`file-too-large`,e,`Referenced file exceeds the per-file size limit.`);return}if(n.totalBytes+r.size>n.limits.maxTotalBytes){F(n,`total-too-large`,e,`Referenced files exceed the total size limit.`);return}return{sourcePath:t,byteLength:r.size}}catch{F(n,`unreadable`,e,`Referenced file could not be inspected.`);return}}async function zn(e,t,n){try{return await n.fsAsync.readFile(t,`utf8`)}catch{F(n,`unreadable`,e,`Referenced file could not be read.`);return}}function Bn(e,t,n,r,i){return{originalReference:e.original,sourcePath:t.sourcePath,relativePath:En(i.rootPath,t.sourcePath),reason:i.reason,depth:n,byteLength:t.byteLength,content:r}}async function Vn(e,t,n,r){for(let i of xn(e))await Pn(i,t+1,n,r)}function F(e,t,n,r){e.diagnostics.push({code:t,severity:`error`,reference:n.original,message:r,path:n.path})}function Hn(e){return e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&(e.message.includes(`aborted`)||e.message.includes(`abort`))}function Un(e,t){let n=[];for(let r=t;r<e.length;r++){let t=e[r];if(t?.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)n.push({name:e.function.name,args:e.function.arguments})}return n}function Wn(e,t,n,r,i,a){let o=Un(t,r),s=Yn(t,r,i);return{response:e,history:n,toolSummaries:o,contextState:i,...s&&{usage:s},...a&&a.length>0?{promptFileReferences:[...a]}:{}}}function Gn(e,t,n,r){let i=Un(e,n),a=[];for(let t=n;t<e.length;t++){let n=e[t];n?.role===`assistant`&&n.content&&a.push(n.content)}let o=Yn(e,n,r);return{response:a.join(`
58
58
 
59
- `),history:t,toolSummaries:i,contextState:r,...o&&{usage:o}}}function Gn(e){return{id:`usage_${(0,p.randomUUID)()}`,timestamp:new Date,category:`event`,type:`usage-summary`,data:e}}async function Kn(e,t,n,r=[]){let i=await On(an(r).map(e=>e.sourcePath),{cwd:t,reason:`manual`}),a=await Dn(e,{cwd:t}),o=[...i.diagnostics,...a.diagnostics];if(mn(o))throw Error(hn(o));let s=pn(e,qn([...i.references,...a.references])),c=n??(s===e?void 0:e),l=F(i.references),u=F(a.references),d=a.references.length>0?gn(a.references):void 0;return{modelInput:s,...c===void 0?{}:{hookInput:c},activeContextReferenceRecords:l,promptFileReferenceRecords:u,...d===void 0?{}:{promptFileReferenceEntry:d}}}function qn(e){return[...new Map(e.map(e=>[e.sourcePath,e])).values()]}function Jn(e,t,n){let r=e.slice(t),i=0,a=0,o=!1;for(let e of r){if(e.role!==`assistant`)continue;let t=(0,c.collectAssistantUsageMetadata)(e);t&&(o=!0,i+=t.inputTokens,a+=t.outputTokens)}if(o)return{kind:`exact`,scope:`turn`,promptTokens:i,completionTokens:a,totalTokens:i+a,contextUsedTokens:n.usedTokens,contextMaxTokens:n.maxTokens,contextUsedPercentage:n.usedPercentage,costStatus:`unknown`}}const Yn={write:()=>{},writeLine:()=>{},writeMarkdown:()=>{},writeError:()=>{},prompt:()=>Promise.resolve(``),select:()=>Promise.resolve(0),spinner:()=>({stop:()=>{},update:()=>{}})};function Xn(e){if(!e)return``;let t=Object.values(e)[0],n=typeof t==`string`?t:JSON.stringify(t??``);return n.length>80?n.slice(0,47)+`...`+n.slice(-30):n}function Zn(e,t,n){let r=e?.[t]??e?.[n];return typeof r==`string`?r:null}function Qn(e){if(!e)return 1;try{let t=JSON.parse(e);return typeof t.startLine==`number`&&Number.isFinite(t.startLine)?t.startLine:1}catch{return 1}}function $n(e){if(e.toolName!==`Edit`)return{};let t=Zn(e.toolArgs,`file_path`,`filePath`),n=Zn(e.toolArgs,`old_string`,`oldString`),r=Zn(e.toolArgs,`new_string`,`newString`);return!t||n===null||r===null||n===r?{}:{diffFile:t,diffLines:tr(n,r,Qn(e.toolResultData),t)}}function er(e,t,n){return[...e.split(`
59
+ `),history:t,toolSummaries:i,contextState:r,...o&&{usage:o}}}function Kn(e){return{id:`usage_${(0,p.randomUUID)()}`,timestamp:new Date,category:`event`,type:`usage-summary`,data:e}}async function qn(e,t,n,r=[]){let i=await kn(on(r).map(e=>e.sourcePath),{cwd:t,reason:`manual`}),a=await On(e,{cwd:t}),o=[...i.diagnostics,...a.diagnostics];if(hn(o))throw Error(gn(o));let s=mn(e,Jn([...i.references,...a.references])),c=n??(s===e?void 0:e),l=P(i.references),u=P(a.references),d=a.references.length>0?_n(a.references):void 0;return{modelInput:s,...c===void 0?{}:{hookInput:c},activeContextReferenceRecords:l,promptFileReferenceRecords:u,...d===void 0?{}:{promptFileReferenceEntry:d}}}function Jn(e){return[...new Map(e.map(e=>[e.sourcePath,e])).values()]}function Yn(e,t,n){let r=e.slice(t),i=0,a=0,o=!1;for(let e of r){if(e.role!==`assistant`)continue;let t=(0,c.collectAssistantUsageMetadata)(e);t&&(o=!0,i+=t.inputTokens,a+=t.outputTokens)}if(o)return{kind:`exact`,scope:`turn`,promptTokens:i,completionTokens:a,totalTokens:i+a,contextUsedTokens:n.usedTokens,contextMaxTokens:n.maxTokens,contextUsedPercentage:n.usedPercentage,costStatus:`unknown`}}const Xn={write:()=>{},writeLine:()=>{},writeMarkdown:()=>{},writeError:()=>{},prompt:()=>Promise.resolve(``),select:()=>Promise.resolve(0),spinner:()=>({stop:()=>{},update:()=>{}})};function Zn(e){if(!e)return``;let t=Object.values(e)[0],n=typeof t==`string`?t:JSON.stringify(t??``);return n.length>80?n.slice(0,47)+`...`+n.slice(-30):n}function Qn(e,t,n){let r=e?.[t]??e?.[n];return typeof r==`string`?r:null}function $n(e){if(!e)return 1;try{let t=JSON.parse(e);return typeof t.startLine==`number`&&Number.isFinite(t.startLine)?t.startLine:1}catch{return 1}}function er(e){if(e.toolName!==`Edit`)return{};let t=Qn(e.toolArgs,`file_path`,`filePath`),n=Qn(e.toolArgs,`old_string`,`oldString`),r=Qn(e.toolArgs,`new_string`,`newString`);return!t||n===null||r===null||n===r?{}:{diffFile:t,diffLines:nr(n,r,$n(e.toolResultData),t)}}function tr(e,t,n){return[...e.split(`
60
60
  `).map((e,t)=>({type:`remove`,text:e,lineNumber:n+t})),...t.split(`
61
- `).map((e,t)=>({type:`add`,text:e,lineNumber:n+t}))]}function tr(e,t,n,r,i=new N){let a=er(e,t,n),o;try{o=i.readFileSync(r,`utf8`).split(`
61
+ `).map((e,t)=>({type:`add`,text:e,lineNumber:n+t}))]}function nr(e,t,n,r,i=new M){let a=tr(e,t,n),o;try{o=i.readFileSync(r,`utf8`).split(`
62
62
  `)}catch{return a}let s=[],c=Math.max(0,n-1-3);for(let e=c;e<n-1;e++)e<o.length&&s.push({type:`context`,text:o[e],lineNumber:e+1});let l=[],u=n-1+t.split(`
63
63
  `).length;for(let e=u;e<u+3;e++)e<o.length&&l.push({type:`context`,text:o[e],lineNumber:e+1});let d=s[0]?.lineNumber??a[0]?.lineNumber??l[0]?.lineNumber??n,f=e.split(`
64
64
  `).length,p=t.split(`
65
- `).length;return[{type:`hunk`,text:`@@ -${d},${s.length+f+l.length} +${d},${s.length+p+l.length} @@`,lineNumber:d},...s,...a,...l]}function L(e){if(e.activeTools.length===0)return;let t=e.activeTools.map(e=>`${e.isRunning?`⟳`:e.result===`success`?`✓`:e.result===`error`?`✗`:`⊘`} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`).join(`
66
- `);e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-summary`,data:{tools:e.activeTools.map(e=>({toolName:e.toolName,firstArg:e.firstArg,isRunning:e.isRunning,result:e.result,diffFile:e.diffFile,diffLines:e.diffLines,toolResultData:e.toolResultData})),summary:t}})}function nr(e){let t=e.filter(e=>!e.isRunning);if(t.length<=50)return e;let n=t.length-50,r=0;return e.filter(e=>!e.isRunning&&r<n?(r++,!1):!0)}function rr(e,t){let n=Xn(t.toolArgs),r={toolName:t.toolName,firstArg:n,isRunning:!0,...t.executionId?{executionId:t.executionId}:{}};return e.activeTools.push(r),e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-start`,data:{toolName:t.toolName,firstArg:n,isRunning:!0}}),r}function ir(e,t){let n=t.denied?`denied`:t.success===!1?`error`:`success`,r=e.activeTools.findIndex(e=>e.toolName===t.toolName&&e.isRunning);if(r===-1)return null;let i={...e.activeTools[r],...$n(t),isRunning:!1,result:n,toolResultData:t.toolResultData};return e.activeTools[r]=i,e.activeTools=nr(e.activeTools),e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-end`,data:{toolName:i.toolName,firstArg:i.firstArg,isRunning:!1,result:n,toolResultData:t.toolResultData}}),i}const ar=[{pattern:/\b401\b|invalid.*api.?key|authentication.*fail|unauthorized/i,message:"Invalid API key. Run `/provider` to reconfigure, or check your settings file (~/.robota/settings.json)."},{pattern:/\b403\b|permission.*denied|forbidden/i,message:"Access denied. Your API key may lack permission for this model. Check your provider plan or run `/provider` to switch accounts."},{pattern:/\b429\b|rate.?limit|too many requests|quota.*exceeded/i,message:"Rate limit reached. Wait a moment and try again. Consider switching to a different model with `/model`."},{pattern:/\b500\b|internal server error/i,message:`The AI provider returned an internal error. This is usually temporary — try again.`},{pattern:/\b503\b|service.*unavailable|overloaded/i,message:`The AI provider is temporarily unavailable or overloaded. Try again in a few seconds.`},{pattern:/\b502\b|bad gateway/i,message:`The AI provider gateway is unreachable. Check your network or try again shortly.`},{pattern:/\btimeout\b|timed.?out|ETIMEDOUT/i,message:`The request timed out. Check your internet connection, or try a shorter prompt to reduce response time.`},{pattern:/ENOTFOUND|ECONNREFUSED|ECONNRESET|network.*error|fetch.*fail/i,message:`Network connection failed. Check your internet connection and verify your provider URL in settings.`}];function or(e){if(e instanceof c.AuthenticationError)return"Invalid API key. Run `/provider` to reconfigure, or check your settings file (~/.robota/settings.json).";if(e instanceof c.RateLimitError)return`Rate limit reached${e.retryAfter?` (retry after ${e.retryAfter}s)`:``}. Wait a moment and try again. Consider switching to a different model with \`/model\`.`;if(e instanceof c.NetworkError)return`Network connection failed. Check your internet connection and verify your provider URL in settings.`;if(e instanceof c.ProviderError&&e.originalError)return or(e.originalError);let t=e.message;for(let{pattern:e,message:n}of ar)if(e.test(t))return n;return t}async function sr(e,t,n,r){let i=r.getHistory();i.push((0,c.messageToHistoryEntry)((0,c.createUserMessage)(t??e))),r.onWorkspaceUpdated();let a=r.getSession().getHistory().length;r.resetUsedMemoryReferences();try{let o=await Kn(e,r.getCwd(),n,r.getContextReferences());o.promptFileReferenceEntry&&i.push(o.promptFileReferenceEntry),r.recordContextReferenceUsage(o.activeContextReferenceRecords),r.recordPromptContextReferences(o.promptFileReferenceRecords),await r.beginEditCheckpointTurn(t??e);let s=await r.getSession().run(o.modelInput,o.hookInput);r.flushStreaming(),L({activeTools:r.getActiveTools(),history:i}),r.clearStreaming();let l=Un(s||`(empty response)`,r.getSession().getHistory(),i,a,r.getSession().getContextState(),o.promptFileReferenceRecords);i.push((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(l.response))),l.usage&&i.push(Gn(l.usage)),r.onComplete(l),r.onContextUpdate()}catch(e){if(r.flushStreaming(),Vn(e)){let e=Wn(r.getSession().getHistory(),i,a,r.getSession().getContextState());L({activeTools:r.getActiveTools(),history:i}),r.clearStreaming(),e.response&&i.push((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(e.response))),e.usage&&i.push(Gn(e.usage)),i.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Interrupted by user.`))),r.onInterrupted(e)}else{L({activeTools:r.getActiveTools(),history:i}),r.clearStreaming();let t=e instanceof Error?e:Error(String(e)),n=or(t);i.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Error: ${n}`))),r.onError(t)}}}var cr=class{histTracker;skillRouter;callbacks;executing=!1;streamingText=``;flushTimer=null;activeTools=[];pendingPrompt=null;pendingDisplayInput;pendingRawInput;shuttingDown=!1;constructor(e,t,n){this.histTracker=e,this.skillRouter=t,this.callbacks=n}clearPendingQueue(){this.pendingPrompt=null,this.pendingDisplayInput=void 0,this.pendingRawInput=void 0}clearStreaming(){this.streamingText=``,this.activeTools=[],this.flushTimer&&=(clearTimeout(this.flushTimer),null)}flushStreaming(){this.flushTimer&&=(clearTimeout(this.flushTimer),null)}handleTextDelta(e){this.streamingText+=e,this.callbacks.emit(`text_delta`,e),this.flushTimer||=setTimeout(()=>{this.flushTimer=null},16)}handleCompactEvent(e){e.trigger===`auto`&&this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Auto compacted context: ${Math.round(e.before.usedPercentage)}% -> ${Math.round(e.after.usedPercentage)}%`))),this.callbacks.emit(`compact`,e),this.callbacks.emit(`context_update`,e.after)}handleToolExecution(e){let t={activeTools:this.activeTools,history:this.histTracker.getHistory()};if(e.type===`start`){let n=rr(t,e);this.activeTools=t.activeTools,this.callbacks.emit(`tool_start`,n)}else{let n=ir(t,e);this.activeTools=t.activeTools,n&&this.callbacks.emit(`tool_end`,n)}}emitExecutionWorkspaceUpdated(e,t){this.callbacks.getSession()&&this.callbacks.emit(`execution_workspace_event`,{type:`execution_workspace_updated`,cause:e,...t?{entryId:t}:{},snapshot:this.callbacks.getExecutionWorkspaceSnapshot()})}drainPendingQueue(e){if(!this.shuttingDown&&this.pendingPrompt){let t=this.pendingPrompt,n=this.pendingDisplayInput,r=this.pendingRawInput;this.clearPendingQueue(),setTimeout(()=>void e(t,n,r),0)}}async executePrompt(e,t,n,r,i,a,o,s){await $t(r,i,a,o,()=>this.callbacks.getSessionOrThrow(),(e,t)=>this.callbacks.emit(e,t)),this.executing=!0,this.clearStreaming(),this.callbacks.emit(`user_message`,t??e),this.callbacks.emit(`thinking`,!0);try{await sr(e,t,n,{getSession:()=>this.callbacks.getSessionOrThrow(),getCwd:()=>this.callbacks.getCwd(),getHistory:()=>this.histTracker.getHistory(),getContextReferences:()=>this.histTracker.listInjectionContextReferences(),getActiveTools:()=>this.activeTools,resetUsedMemoryReferences:()=>this.histTracker.resetUsedMemoryReferences(),recordContextReferenceUsage:e=>this.histTracker.recordContextReferenceUsage(e),recordPromptContextReferences:e=>this.histTracker.recordPromptContextReferences(e),beginEditCheckpointTurn:e=>this.histTracker.beginEditCheckpointTurn(e),flushStreaming:()=>this.flushStreaming(),clearStreaming:()=>this.clearStreaming(),onWorkspaceUpdated:()=>this.emitExecutionWorkspaceUpdated(`main_thread`),onComplete:e=>{this.callbacks.emit(`complete`,e)},onInterrupted:e=>{this.callbacks.emit(`interrupted`,e)},onError:e=>{this.callbacks.emit(`error`,e)},onContextUpdate:()=>{this.callbacks.emit(`context_update`,this.callbacks.getContextState())}})}finally{try{await this.histTracker.finalizeEditCheckpointTurn()}catch(e){this.callbacks.emit(`error`,e instanceof Error?e:Error(String(e)))}this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(s)}}async executeForkSkillCommand(e,t,n,r,i,a){if(this.executing)throw Error(`Cannot execute fork skill while another prompt is running.`);this.executing=!0,this.clearStreaming(),this.callbacks.emit(`thinking`,!0),this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createUserMessage)(n??`/${e.name}`))),this.emitExecutionWorkspaceUpdated(`main_thread`);try{let n=await this.skillRouter.executeSkillWithActivation(e,t,i,r);return await this.applyForkSkillResult(n.result??`(empty response)`),n}catch(e){let t=e instanceof Error?e:Error(String(e));return this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Error: ${or(t)}`))),this.callbacks.emit(`error`,t),{mode:`fork`,result:``}}finally{this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(a)}}async executeForegroundCommand(e,t){this.executing=!0,this.clearStreaming(),this.callbacks.emit(`thinking`,!0),this.emitExecutionWorkspaceUpdated(`main_thread`);try{let t=await e();return this.callbacks.emit(`context_update`,this.callbacks.getContextState()),t}catch(e){return{success:!1,message:`Error: ${e instanceof Error?e.message:String(e)}`}}finally{this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(t)}}async applyForkSkillResult(e){this.flushStreaming(),L({activeTools:this.activeTools,history:this.histTracker.getHistory()}),this.clearStreaming();let t={response:e,history:this.histTracker.getHistory(),toolSummaries:[],contextState:this.callbacks.getContextState()};this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(e))),this.callbacks.emit(`complete`,t),this.callbacks.emit(`context_update`,this.callbacks.getContextState())}};function lr(e,t,n){let r=j(n)?.customAgentRegistry?.(e)??k(e);if(!r)throw Error(`Unknown agent type: ${e}`);return t.allowedTools?{...r,tools:t.allowedTools}:r}async function ur(e,t,n){let r=j(n);if(!r)throw Error(`Fork execution is not available. Agent runtime deps may not be initialized.`);return _t({agentDefinition:lr(t.agent??`general-purpose`,t,n),parentConfig:r.config,parentContext:r.context,parentTools:r.tools,provider:r.provider,terminal:r.terminal,isForkWorker:!0,permissionMode:r.permissionMode,permissionHandler:r.permissionHandler,hooks:r.hooks,hookTypeExecutors:r.hookTypeExecutors,onTextDelta:r.onTextDelta,onToolExecution:r.onToolExecution}).run(e)}async function dr(e,t,n){let r=await On([t],{cwd:n,reason:`manual`});if(mn(r.diagnostics))return{references:[...e],result:{evicted:[],diagnostics:[hn(r.diagnostics)]}};let i=r.references[0];if(!i)return{references:[...e],result:{evicted:[],diagnostics:[`No context reference was resolved.`]}};let a=en(F([i])[0],`manual`,`active`),o=tn(e,a);return{references:o.references,result:{reference:a,evicted:o.evicted,diagnostics:[]}}}function fr(e,t,n){if(t.length===0)return[...e];let r=new Date().toISOString(),i=[...e];for(let e of t){let t=en(e,n.loadType,n.status,r);i=tn(i,t).references}return i}function pr(e,t){let n=new Date().toISOString();return e.map(e=>{let r=(0,g.relative)(t,e.filePath);return{id:`system:${r}`,sourcePath:e.filePath,relativePath:r,originalReference:r,loadType:`system`,status:`active`,byteLength:Buffer.byteLength(e.content,`utf-8`),loadedAt:n,lastUsedAt:n}})}function R(e){let t=(0,g.join)(e,`.robota`);return{settings:(0,g.join)(t,`settings.json`),settingsLocal:(0,g.join)(t,`settings.local.json`),logs:(0,g.join)(t,`logs`),sessions:(0,g.join)(t,`sessions`),memory:(0,g.join)(t,`memory`),checkpoints:(0,g.join)(t,`checkpoints`)}}function mr(){let e=(0,g.join)((0,_.homedir)(),`.robota`);return{settings:(0,g.join)(e,`settings.json`),sessions:(0,g.join)(e,`sessions`),onboarded:(0,g.join)(e,`onboarded`)}}function hr(e){let t=e.fs??new N,n=e.manifests.filter(t=>t.sequence>e.target.sequence),r=e.manifests.filter(t=>t.sequence>=e.target.sequence);return{target:gr(e.target),capturedFiles:e.target.files.map(n=>{let r=n.snapshotFile?(0,g.join)(e.checkpointDir(e.sessionId,e.target.id),n.snapshotFile):void 0,i=r?vr(r,t):void 0;return{originalPath:n.originalPath,relativePath:(0,g.relative)(e.cwd,n.originalPath),existed:n.existed,restoreAction:n.existed?`restore-preimage`:`delete-created-file`,snapshotAvailable:n.existed?i!==void 0:!1,...i?{snapshotSizeBytes:i.size}:{}}}),restoreToCheckpoint:_r(n),rollbackThroughCheckpoint:_r(r)}}function gr(e){return{id:e.id,sessionId:e.sessionId,sequence:e.sequence,prompt:e.prompt,createdAt:e.createdAt,fileCount:e.fileCount}}function _r(e){return{checkpointIds:e.map(e=>e.id),fileCount:e.reduce((e,t)=>e+t.fileCount,0)}}function vr(e,t){try{return t.statSync(e)}catch{return}}const yr=`manifest.json`,br=`files`;var z=class{fs;fsAsync;cwd;rootDir;now;activeTurn=null;constructor(e,t=new N,n=new P){this.fs=t,this.fsAsync=n,this.cwd=(0,g.resolve)(e.cwd),this.rootDir=R(this.cwd).checkpoints,this.now=e.now??(()=>new Date)}async beginTurn(e){this.activeTurn&&await this.finalizeTurn();let t=this.nextSequence(e.sessionId),n=`turn-${String(t).padStart(4,`0`)}`,r=(0,g.join)(this.sessionDir(e.sessionId),n);await this.fsAsync.mkdir((0,g.join)(r,br),{recursive:!0});let i={version:1,id:n,sessionId:e.sessionId,sequence:t,prompt:e.prompt,createdAt:this.now().toISOString(),fileCount:0,files:[]};return this.activeTurn={manifest:i,dir:r,capturedPaths:new Set},B(i)}async captureFile(e){if(!this.activeTurn)return;let t=(0,g.resolve)(this.cwd,e);if(this.activeTurn.capturedPaths.has(t)||Sr(this.rootDir,t))return;let n=await this.createFileRecord(t,this.activeTurn);this.activeTurn.manifest.files.push(n),this.activeTurn.manifest.fileCount=this.activeTurn.manifest.files.length,this.activeTurn.capturedPaths.add(t)}async finalizeTurn(){if(!this.activeTurn)return;let e=this.activeTurn;return this.activeTurn=null,await this.writeManifest(e.dir,e.manifest),B(e.manifest)}list(e){return this.loadManifests(e).map(B)}inspect(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);return hr({cwd:this.cwd,sessionId:e,target:r,manifests:n,checkpointDir:(e,t)=>this.checkpointDir(e,t)})}async restoreToCheckpoint(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);let i=n.filter(e=>e.sequence>r.sequence).sort((e,t)=>t.sequence-e.sequence),a=0;for(let t of i)for(let n of t.files)await this.restoreFile(e,t.id,n),a+=1;for(let t of i)await this.fsAsync.rm(this.checkpointDir(e,t.id),{recursive:!0,force:!0});return{target:B(r),restoredCheckpointCount:i.length,restoredFileCount:a,removedCheckpointCount:i.length}}async rollbackThroughCheckpoint(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);let i=n.filter(e=>e.sequence>=r.sequence).sort((e,t)=>t.sequence-e.sequence),a=0;for(let t of i)for(let n of t.files)await this.restoreFile(e,t.id,n),a+=1;for(let t of i)await this.fsAsync.rm(this.checkpointDir(e,t.id),{recursive:!0,force:!0});return{target:B(r),restoredCheckpointCount:i.length,restoredFileCount:a,removedCheckpointCount:i.length}}async createFileRecord(e,t){if(!await Cr(this.fsAsync,this.fs,e))return{originalPath:e,existed:!1};let n=(0,g.join)(br,`${String(t.manifest.files.length+1).padStart(6,`0`)}.content`);return await this.fsAsync.copyFile(e,(0,g.join)(t.dir,n)),{originalPath:e,existed:!0,snapshotFile:n}}async restoreFile(e,t,n){if(!n.existed){await this.fsAsync.rm(n.originalPath,{force:!0});return}if(!n.snapshotFile)throw Error(`Checkpoint file record is missing a snapshot: ${n.originalPath}`);await this.fsAsync.mkdir((0,g.dirname)(n.originalPath),{recursive:!0}),await this.fsAsync.copyFile((0,g.join)(this.checkpointDir(e,t),n.snapshotFile),n.originalPath)}loadManifests(e){let t=this.sessionDir(e);return wr(this.fs,t).map(e=>(0,g.join)(t,e,yr)).map(e=>Tr(this.fs,e)).filter(e=>e!==void 0).sort((e,t)=>e.sequence-t.sequence)}nextSequence(e){return(this.list(e).at(-1)?.sequence??0)+1}async writeManifest(e,t){await this.fsAsync.mkdir(e,{recursive:!0});let n=(0,g.join)(e,yr),r=`${n}.tmp`;await this.fsAsync.writeFile(r,JSON.stringify(t,null,2),`utf8`),await this.fsAsync.rename(r,n)}sessionDir(e){return(0,g.join)(this.rootDir,xr(e))}checkpointDir(e,t){return(0,g.join)(this.sessionDir(e),xr(t))}};function B(e){return{id:e.id,sessionId:e.sessionId,sequence:e.sequence,prompt:e.prompt,createdAt:e.createdAt,fileCount:e.fileCount}}function xr(e){return e.replace(/[^a-zA-Z0-9._-]/g,`_`)}function Sr(e,t){let n=(0,g.relative)(e,t);return n.length===0||!n.startsWith(`..`)&&!n.startsWith(`/`)}async function Cr(e,t,n){try{return await e.access(n,t.constants.F_OK),!0}catch{return!1}}function wr(e,t){try{return e.readdirSync(t)}catch{return[]}}function Tr(e,t){try{let n=e.readFileSync(t,`utf8`);return JSON.parse(n)}catch{return}}function Er(e){return e.source===`plugin`?`plugin`:`skill`}function Dr(e){return e.context===`fork`?`fork`:`inject`}function Or(e){return{type:`skill-activation`,skillName:e.skill.name,source:Er(e.skill),invocation:e.invocation,mode:Dr(e.skill),status:e.status,timestamp:new Date().toISOString(),...e.qualifiedName===void 0?{}:{qualifiedName:e.qualifiedName},...e.error===void 0?{}:{error:e.error}}}function kr(e){let t=e.source===`plugin`?`plugin skill`:`skill`;return e.status===`failed`?`Skill failed: ${e.skillName}${e.error?` (${e.error})`:``}`:e.status===`completed`?`Skill completed: ${e.skillName}`:`Invoking ${t}: ${e.skillName}`}var Ar=class{cwd;getSessionId;getExecuting;persistSession;emitSkillActivation;history=[];editCheckpointStore=null;memoryEvents=[];usedMemoryReferences=[];contextReferences=[];systemContextReferences=[];skillActivationEvents=[];constructor(e,t,n,r,i,a=null){this.cwd=e,this.getSessionId=t,this.getExecuting=n,this.persistSession=r,this.emitSkillActivation=i,this.editCheckpointStore=a}restoreState(e){this.history=e.history,this.memoryEvents=e.memoryEvents,this.usedMemoryReferences=e.usedMemoryReferences,this.contextReferences=e.contextReferences,this.skillActivationEvents=e.skillActivationEvents}getState(){return{history:this.history,memoryEvents:this.memoryEvents,usedMemoryReferences:this.usedMemoryReferences,contextReferences:this.contextReferences,skillActivationEvents:this.skillActivationEvents}}append(e){this.history.push(e)}getHistory(){return this.history}clearHistory(){this.history=[],this.memoryEvents=[],this.usedMemoryReferences=[]}resetUsedMemoryReferences(){this.usedMemoryReferences=[]}recordContextReferenceUsage(e){this.contextReferences=fr(this.contextReferences,e,{loadType:`manual`,status:`active`}),this.persistSession()}recordPromptContextReferences(e){this.contextReferences=fr(this.contextReferences,e,{loadType:`prompt-reference`,status:`observed`}),this.persistSession()}listEditCheckpoints(){let e=this.getSessionId();return this.getCheckpointStore().list(e)}inspectEditCheckpoint(e){let t=this.getSessionId();return this.getCheckpointStore().inspect(t,e)}async restoreEditCheckpoint(e){if(this.getExecuting())throw Error(`Cannot restore edit checkpoint while a prompt is running.`);let t=await this.getCheckpointStore().restoreToCheckpoint(this.getSessionId(),e);return this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Restored edit checkpoint: ${e}`))),this.persistSession(),t}async rollbackEditCheckpoint(e){if(this.getExecuting())throw Error(`Cannot rollback edit checkpoint while a prompt is running.`);let t=await this.getCheckpointStore().rollbackThroughCheckpoint(this.getSessionId(),e);return this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Rolled back edit checkpoint: ${e}`))),this.persistSession(),t}async beginEditCheckpointTurn(e){this.editCheckpointStore&&await this.editCheckpointStore.beginTurn({sessionId:this.getSessionId(),prompt:e})}async finalizeEditCheckpointTurn(){if(this.editCheckpointStore)try{await this.editCheckpointStore.finalizeTurn()}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Checkpoint error: ${t.message}`))),t}}setEditCheckpointStore(e){this.editCheckpointStore=e}getUsedMemoryReferences(){return[...this.usedMemoryReferences]}recordMemoryEvent(e){this.memoryEvents.push(e),this.persistSession()}recordSystemContextFiles(e){this.systemContextReferences=pr(e,this.cwd)}listContextReferences(){return[...this.systemContextReferences,...this.contextReferences]}listInjectionContextReferences(){return[...this.contextReferences]}async addContextReference(e){let{references:t,result:n}=await dr(this.contextReferences,e,this.cwd);return this.contextReferences=t,this.persistSession(),n}removeContextReference(e){let t=nn(this.contextReferences,e);return this.contextReferences=t.references,this.persistSession(),t.result}clearContextReferences(){let e=rn(this.contextReferences);return this.contextReferences=[],this.persistSession(),e}getSkillActivationEvents(){return[...this.skillActivationEvents]}recordSkillActivationEvent(e,t){this.skillActivationEvents.push(e),t&&this.history.push({id:(0,p.randomUUID)(),timestamp:new Date(e.timestamp),category:`event`,type:`skill-activation`,data:{...e,message:kr(e)}}),this.emitSkillActivation(e),this.persistSession()}getCheckpointStore(){return this.editCheckpointStore||=new z({cwd:this.cwd}),this.editCheckpointStore}};function jr(e){if((0,v.existsSync)(e))try{return JSON.parse((0,v.readFileSync)(e,`utf-8`))}catch{return}}function Mr(e){if((0,v.existsSync)((0,y.join)(e,`pnpm-workspace.yaml`))||(0,v.existsSync)((0,y.join)(e,`pnpm-lock.yaml`)))return`pnpm`;if((0,v.existsSync)((0,y.join)(e,`yarn.lock`)))return`yarn`;if((0,v.existsSync)((0,y.join)(e,`bun.lockb`)))return`bun`;if((0,v.existsSync)((0,y.join)(e,`package-lock.json`)))return`npm`}async function Nr(e){let t=(0,y.join)(e,`package.json`),n=(0,y.join)(e,`tsconfig.json`),r=(0,y.join)(e,`pyproject.toml`),i=(0,y.join)(e,`Cargo.toml`),a=(0,y.join)(e,`go.mod`);if((0,v.existsSync)(t)){let r=jr(t),i=(0,v.existsSync)(n)?`typescript`:`javascript`,a=Mr(e);return{type:`node`,name:r?.name,packageManager:a,language:i}}return(0,v.existsSync)(r)||(0,v.existsSync)((0,y.join)(e,`setup.py`))?{type:`python`,language:`python`}:(0,v.existsSync)(i)?{type:`rust`,language:`rust`}:(0,v.existsSync)(a)?{type:`go`,language:`go`}:{type:`unknown`,language:`unknown`}}function Pr(e,t){let n=t.content,r=typeof n==`string`?n:n==null?``:JSON.stringify(n);t.role===`tool`?e.injectMessage(`tool`,r,{toolCallId:t.toolCallId,...t.name===void 0?{}:{name:t.name}}):e.injectMessage(t.role,r)}function Fr(e,t,n,r){let i=e.load(t);if(!i)return{history:[],sessionName:void 0,pendingRestoreMessages:null,backgroundTasks:[],backgroundTaskEvents:[],backgroundJobGroups:[],backgroundJobGroupEvents:[],skillActivationEvents:[],memoryEvents:[],usedMemoryReferences:[],contextReferences:[],sandboxSnapshotId:void 0};let a=i.history??[],o=i.backgroundTasks??[],s=i.backgroundTaskEvents??[],c=i.backgroundJobGroups??[],l=i.backgroundJobGroupEvents??[],u=i.skillActivationEvents??[],d=i.memoryEvents??[],f=i.usedMemoryReferences??[],p=i.contextReferences??[],m=i.sandboxSnapshotId,{backgroundTasks:h,backgroundTaskEvents:g}=Ir(o,s),_=i.name,v=null;if(!n&&i.messages)if(r)for(let e of i.messages)Pr(r,e);else v=i.messages;return{history:a,sessionName:_,pendingRestoreMessages:v,backgroundTasks:h,backgroundTaskEvents:g,backgroundJobGroups:c,backgroundJobGroupEvents:l,skillActivationEvents:u,memoryEvents:d,usedMemoryReferences:f,contextReferences:p,sandboxSnapshotId:m}}function Ir(e,t){let n=new Date().toISOString(),r=[];return{backgroundTasks:e.map(e=>{if(Lr(e.status))return e;let t={...e,status:`failed`,timeoutReason:`stale_worker`,error:{category:`timeout`,message:`Restored background task is stale; worker cannot be reattached`,recoverable:!0},unread:!0,completedAt:n,updatedAt:n};return r.push({type:`background_task_failed`,task:t}),t}),backgroundTaskEvents:[...t,...r]}}function Lr(e){return e===`completed`||e===`failed`||e===`cancelled`}function Rr(e){if(e.type===`background_task_started`&&e.task.kind===`agent`)return`SubagentStart`;if((e.type===`background_task_completed`||e.type===`background_task_failed`||e.type===`background_task_cancelled`)&&e.task.kind===`agent`)return`SubagentStop`}function zr(e,t,n,r){let i=Rr(e);!i||!(`task`in e)||(0,c.runHooks)(n,i,{session_id:e.task.parentSessionId,cwd:t,hook_event_name:i,agent_id:e.task.id,agent_type:e.task.agentType??e.task.label,...e.task.transcriptPath?{agent_transcript_path:e.task.transcriptPath,transcript_path:e.task.transcriptPath}:{},...e.task.error?.message||e.task.timeoutReason?{reason:e.task.error?.message??e.task.timeoutReason}:{},...i===`SubagentStop`?{stop_hook_active:!1,...e.task.result?.output?{last_assistant_message:e.task.result.output}:{}}:{},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e.task.parentSessionId,ROBOTA_AGENT_ID:e.task.id,ROBOTA_AGENT_TYPE:e.task.agentType??e.task.label}},r).catch(()=>void 0)}const Br=[`Bash — execute shell commands`,`Read — read file contents with line numbers`,`Write — write content to a file`,`Edit — replace a string in a file`,`Glob — find files matching a pattern`,`Grep — search file contents with regex`,`WebFetch — fetch URL content as text`,`WebSearch — search the internet through the configured local tool`];function Vr(e={}){return[(0,u.createBashTool)(e),(0,u.createReadTool)(e),(0,u.createWriteTool)(e),(0,u.createEditTool)(e),u.globTool,u.grepTool,u.webFetchTool,u.webSearchTool]}const Hr=new Set([`tools`,`disallowedTools`]),Ur=new Set([`maxTurns`]);function Wr(e){let t=e.includes(`,`)?/\s*,\s*/:/\s+/;return e.split(t).map(e=>e.trim()).filter(e=>e.length>0)}function Gr(e){let t=e.split(`
67
- `);if(t[0]?.trim()!==`---`)return{frontmatter:null,body:e};let n=-1;for(let e=1;e<t.length;e++)if(t[e]?.trim()===`---`){n=e;break}if(n===-1)return{frontmatter:null,body:e};let r={};for(let e=1;e<n;e++){let n=t[e].match(/^([a-zA-Z][a-zA-Z0-9]*(?:[A-Z][a-z]*)*):\s*(.+)/);if(!n)continue;let i=n[1],a=n[2].trim();Hr.has(i)?r[i]=Wr(a):Ur.has(i)?r[i]=parseInt(a,10):r[i]=a}let i=t.slice(n+1).join(`
68
- `).trim();return{frontmatter:Object.keys(r).length>0?r:null,body:i}}function V(e,t){if(!t.existsSync(e))return[];let n=[],r;try{r=t.readdirSync(e,{withFileTypes:!0})}catch{return[]}for(let i of r){if(!i.isFile()||!i.name.endsWith(`.md`))continue;let r=(0,g.join)(e,i.name),{frontmatter:a,body:o}=Gr(t.readFileSync(r,`utf-8`)),s=(0,g.basename)(i.name,`.md`),c={name:a?.name??s,description:a?.description??``,systemPrompt:o};a?.model!==void 0&&(c.model=a.model),a?.maxTurns!==void 0&&(c.maxTurns=a.maxTurns),a?.tools!==void 0&&(c.tools=a.tools),a?.disallowedTools!==void 0&&(c.disallowedTools=a.disallowedTools),n.push(c)}return n}var Kr=class{cwd;home;fs;constructor(e,t,n=new N){this.cwd=e,this.home=t??(0,_.homedir)(),this.fs=n}loadAll(){let e=[V((0,g.join)(this.cwd,`.robota`,`agents`),this.fs),V((0,g.join)(this.cwd,`.agents`,`agents`),this.fs),V((0,g.join)(this.cwd,`.claude`,`agents`),this.fs),V((0,g.join)(this.home,`.robota`,`agents`),this.fs),V((0,g.join)(this.home,`.claude`,`agents`),this.fs)],t=new Set,n=[];for(let r of e)for(let e of r)t.has(e.name)||(t.add(e.name),n.push(e));let r=[...n];for(let e of $e)t.has(e.name)||r.push(e);return r}getAgent(e){return this.loadAll().find(t=>t.name===e)}};function qr(e){let t=e.content.trim();return e.title?[`## ${e.title}`,t].join(`
69
- `):t}function Jr(e){return[...e].filter(e=>e.content.trim().length>0).sort((e,t)=>e.priority-t.priority||e.id.localeCompare(t.id)).map(e=>qr(e)).join(`
70
-
71
- `)}const Yr={safe:`safe`,moderate:`moderate`,full:`full`};function H(e,t,n,r,i){return{id:e,title:t,priority:n,content:r,source:i}}function Xr(e){if(e)return H(`runtime-cwd`,`Working Directory`,30,`\`${e}\``,`runtime`)}function Zr(e){let t=[];return e.name!==void 0&&t.push(`- **Name:** ${e.name}`),e.type!==`unknown`&&t.push(`- **Type:** ${e.type}`),e.language!==`unknown`&&t.push(`- **Language:** ${e.language}`),e.packageManager!==void 0&&t.push(`- **Package manager:** ${e.packageManager}`),H(`runtime-project`,`Current Project`,40,t.join(`
72
- `),`runtime`)}function Qr(e){return H(`permission-mode`,`Permission Mode`,50,`- **Trust level:** ${Yr[e]}`,`permissions`)}function $r(e){if(!(e===void 0||e.trim().length===0))return H(`runtime-response-language`,`Response Language`,45,e,`runtime`)}function ei(e){if(e.trim().length!==0)return H(`project-agents-md`,`Agent Instructions`,10,e,`project-instructions`)}function ti(e){if(e.trim().length!==0)return H(`project-claude-md`,`Project Notes`,20,e,`project-instructions`)}function ni(e){if(!(e===void 0||e.trim().length===0))return H(`project-memory`,`Project Memory`,25,e,`project-instructions`)}function ri(e){if(!(e===void 0||e.trim().length===0))return H(`active-task-context`,`Active Task Context`,27,e,`project-instructions`)}function ii(e){if(e.length!==0)return H(`tool-descriptions`,`Available Tools`,60,e.map(e=>`- ${e}`).join(`
73
- `),`tool`)}function ai(e){let t=e.argumentHint?` ${e.argumentHint}`:``;return`- ${e.name}${t}: ${e.description}`}function oi(e,t,n,r,i){let a=i.filter(t=>t.modelInvocable&&t.kind===e).map(ai);if(a.length!==0)return H(`capability-${e}`,t,n,a.join(`
74
- `),r)}function si(e){let t=[],n=oi(`builtin-command`,`Built-in Commands`,70,`command`,e),r=oi(`skill`,`Skills`,80,`skill`,e),i=oi(`agent`,`Agents`,90,`agent`,e),a=oi(`tool`,`Tools`,100,`tool`,e);return n&&t.push(n),r&&t.push(r),i&&t.push(i),a&&t.push(a),t}function U(e,t){t!==void 0&&e.push(t)}function ci(e){return e.map(e=>({name:e.name,kind:`skill`,description:e.description,userInvocable:!0,modelInvocable:e.disableModelInvocation!==!0}))}function li(e){return e.map(e=>({name:e.name,kind:`agent`,description:e.description,userInvocable:!1,modelInvocable:!0,safety:`background-agent`}))}function ui(e){return[...e.commandDescriptors??[],...e.skills?ci(e.skills):[],...e.agents?li(e.agents):[]]}function di(e){let t=[];return U(t,ei(e.agentsMd)),U(t,ti(e.claudeMd)),U(t,ni(e.memoryMd)),U(t,ri(e.taskContext)),U(t,Xr(e.cwd)),t.push(Zr(e.projectInfo)),U(t,$r(e.language)),t.push(Qr(e.trustLevel)),U(t,ii(e.toolDescriptions)),t.push(...si(ui(e))),Jr(t)}function fi(e){return e}const pi=d.z.object({command:d.z.string().describe(`The shell command to start in the background`),timeout:d.z.number().optional().describe(`Optional timeout in milliseconds. Default is 120000.`),workingDirectory:d.z.string().optional().describe(`Working directory for the command. Defaults to the current project directory.`),stdin:d.z.string().optional().describe(`Optional stdin to write after the process starts.`),outputLimitBytes:d.z.number().optional().describe(`Maximum captured output bytes kept in the task result.`)});function mi(e,t,n){return JSON.stringify({success:!0,background:!0,output:``,taskId:e,status:t,command:n})}function hi(e){return JSON.stringify({success:!1,background:!0,output:``,error:`Background process error: ${e}`})}async function gi(e,t){try{let n=await t.backgroundTaskManager.spawn({kind:`process`,label:e.command,mode:`background`,parentSessionId:t.parentSessionId??`unknown-session`,depth:0,cwd:e.workingDirectory??t.cwd??process.cwd(),command:e.command,stdin:e.stdin,timeoutMs:e.timeout??12e4,outputLimitBytes:e.outputLimitBytes,metadata:t.metadata});return mi(n.id,n.status,e.command)}catch(e){return hi(e instanceof Error?e.message:String(e))}}function _i(e){return(0,u.createZodFunctionTool)(`BackgroundProcess`,`Start a shell command as a managed background task. Use this for long-running commands that should not block the current conversation. Use /background list, /background read <taskId>, /background cancel <taskId>, or /background close <taskId> to inspect or control it.`,fi(pi),async t=>gi(t,e))}function vi(e,t,n,r,i,a){let o,s=[],c;if(e.enableAgentRuntime){let u=new Kr(n);s=u.loadAll(),o={config:e.config,context:e.context,tools:i,terminal:e.terminal,provider:r,cwd:n,parentSessionId:t,permissionMode:e.permissionMode,permissionHandler:e.permissionHandler,hooks:e.config.hooks,hookTypeExecutors:a.length>0?a:void 0,onTextDelta:e.onTextDelta,onToolExecution:e.onToolExecution,customAgentRegistry:e=>u.getAgent(e),agentDefinitions:s};let d=new l.SubagentManager({runner:(e.subagentRunnerFactory??Ct)(o),backgroundTaskRunners:e.backgroundTaskRunners});o.subagentManager=d,c=d.getBackgroundTaskManager(),o.backgroundTaskManager=c}else c=new l.BackgroundTaskManager({runners:e.backgroundTaskRunners??[]});let u=e.sessionLogger;return u&&c.subscribe(e=>Si(u,t,e)),c.subscribe(t=>zr(t,n,e.config.hooks,a.length>0?a:void 0)),{agentToolDeps:o,agentDefinitions:s,backgroundTaskManager:c}}function yi(e,t,n,r,i){if(!e.backgroundTaskRunners?.some(e=>e.kind===`process`))return{backgroundProcessToolDeps:void 0};let a={backgroundTaskManager:t,cwd:r,parentSessionId:n,metadata:T({kind:`tool_call`,sessionId:n,label:`BackgroundProcess`})};return i.push(_i(a)),{backgroundProcessToolDeps:a}}function bi(e,t,n,r,i,a,o){let s=e.systemPromptBuilder??di,c=[...Br,...r?r.commandTools.map(ct):[]],l=e.toolDescriptions??(i?[...c,`BackgroundProcess — start long-running shell commands as managed background tasks`]:c),u={agentsMd:e.context.agentsMd,claudeMd:e.context.claudeMd,memoryMd:e.context.memoryMd,taskContext:e.context.taskContext,toolDescriptions:l,trustLevel:e.config.defaultTrustLevel,projectInfo:e.projectInfo??{type:`unknown`,language:`unknown`},cwd:t,language:e.config.language,skills:a.map(e=>({name:e.name,description:e.description,disableModelInvocation:e.disableModelInvocation})),...o.length>0?{agents:o.map(e=>({name:e.name,description:e.description}))}:{},commandDescriptors:e.commandDescriptors??[]},d=s(u);return{finalSystemMessage:e.appendSystemPrompt?`${d}\n\n${e.appendSystemPrompt}`:d,rebuildSystemMessage:(t,n)=>{let r=s({...u,agentsMd:t,claudeMd:n});return e.appendSystemPrompt?`${r}\n\n${e.appendSystemPrompt}`:r}}}function xi(e,t,n,r){t&&(t.parentSessionId=e.getSessionId()),n&&(n.parentSessionId=e.getSessionId()),Ie(e,r),t&&Ot(e,t)}function Si(e,t,n){let r={};if(n.type===`background_task_created`){r.taskId=n.task.id;let e=n.task.metadata?.executionOriginToolCallId;typeof e==`string`&&(r.originToolCallId=e)}e.log(t,`background_task_event`,{backgroundEventType:n.type,backgroundEvent:n,...r})}const Ci=new Set([`Write`,`Edit`]);function wi(e,t){return e.map(e=>Ci.has(e.getName())?new Ti(e,t):e)}var Ti=class{delegate;recorder;schema;constructor(e,t){this.delegate=e,this.recorder=t,this.schema=e.schema}setEventService(e){this.delegate.setEventService(e)}async execute(e,t){let n=Ei(e);return n&&await this.recorder.captureFile(n),this.delegate.execute(e,t)}validate(e){return this.delegate.validate(e)}validateParameters(e){return this.delegate.validateParameters(e)}getDescription(){return this.delegate.getDescription()}getName(){return this.delegate.getName()}};function Ei(e){if(!e||typeof e!=`object`)return;let t=e.filePath;return typeof t==`string`&&t.length>0?t:void 0}const Di=new Set([`disable-model-invocation`,`user-invocable`]),Oi=new Set([`allowed-tools`]);function ki(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function Ai(e){let t=e.includes(`,`)?/\s*,\s*/:/\s+/;return e.split(t).map(e=>e.trim()).filter(e=>e.length>0)}function ji(e){let t=e.split(`
75
- `);if(t[0]?.trim()!==`---`)return null;let n={};for(let e=1;e<t.length;e++){let r=t[e];if(r.trim()===`---`)break;let i=r.match(/^([a-z][a-z0-9-]*):\s*(.+)/);if(!i)continue;let a=i[1],o=i[2].trim(),s=ki(a);Di.has(a)?n[s]=o===`true`:Oi.has(a)?n[s]=Ai(o):n[s]=o}return Object.keys(n).length>0?n:null}function Mi(e,t,n){let r={name:e?.name??n,description:e?.description??`Skill: ${n}`,source:`skill`,skillContent:t};return e?.argumentHint!==void 0&&(r.argumentHint=e.argumentHint),e?.disableModelInvocation!==void 0&&(r.disableModelInvocation=e.disableModelInvocation),e?.userInvocable!==void 0&&(r.userInvocable=e.userInvocable),e?.allowedTools!==void 0&&(r.allowedTools=e.allowedTools),e?.model!==void 0&&(r.model=e.model),e?.effort!==void 0&&(r.effort=e.effort),e?.context!==void 0&&(r.context=e.context),e?.agent!==void 0&&(r.agent=e.agent),r}function Ni(e,t){if(!t.existsSync(e))return[];let n=[],r=t.readdirSync(e,{withFileTypes:!0});for(let i of r){if(!i.isDirectory())continue;let r=(0,g.join)(e,i.name,`SKILL.md`);if(!t.existsSync(r))continue;let a=t.readFileSync(r,`utf-8`),o=ji(a);n.push(Mi(o,a,i.name))}return n}function Pi(e,t){if(!t.existsSync(e))return[];let n=[],r=t.readdirSync(e,{withFileTypes:!0});for(let i of r){if(!i.isFile()||!i.name.endsWith(`.md`))continue;let r=(0,g.join)(e,i.name),a=t.readFileSync(r,`utf-8`),o=ji(a),s=(0,g.basename)(i.name,`.md`);n.push(Mi(o,a,s))}return n}var Fi=class{name=`skill`;cwd;home;fs;cachedCommands=null;constructor(e,t,n=new N){this.cwd=e,this.home=t??(0,_.homedir)(),this.fs=n}getCommands(){if(this.cachedCommands)return this.cachedCommands;let e=[Ni((0,g.join)(this.cwd,`.claude`,`skills`),this.fs),Pi((0,g.join)(this.cwd,`.claude`,`commands`),this.fs),Ni((0,g.join)(this.home,`.robota`,`skills`),this.fs),Ni((0,g.join)(this.cwd,`.agents`,`skills`),this.fs)],t=new Set,n=[];for(let r of e)for(let e of r)t.has(e.name)||(t.add(e.name),n.push(e));return this.cachedCommands=n,this.cachedCommands}getModelInvocableSkills(){return this.getCommands().filter(e=>e.disableModelInvocation!==!0)}getUserInvocableSkills(){return this.getCommands().filter(e=>e.userInvocable!==!1)}};function Ii(){return(0,g.join)(process.env.HOME??process.env.USERPROFILE??`/`,`.robota`,`settings.json`)}function Li(e,t){return t===void 0||t===`user`?Ii():(0,g.join)(e,`.robota`,`settings.local.json`)}function W(e){if(!(0,m.existsSync)(e))return{};let t=(0,m.readFileSync)(e,`utf8`);try{return JSON.parse(t)}catch{return process.stderr.write(`Warning: corrupt settings file at ${e}, resetting to defaults\n`),{}}}function G(e,t){(0,m.mkdirSync)((0,g.dirname)(e),{recursive:!0}),(0,m.writeFileSync)(e,JSON.stringify(t,null,2)+`
76
- `,`utf8`)}function Ri(e,t){let n=W(e),r=n.currentProvider,i=n.providers;if(typeof r==`string`&&zi(i)){let e=i;e[r]={...zi(e[r])?e[r]:{},model:t},n.providers=e}else n.provider={...zi(n.provider)?n.provider:{},model:t};G(e,n)}function zi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Bi(e){return(0,m.existsSync)(e)?((0,m.unlinkSync)(e),!0):!1}function Vi(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/.exec(e);return t?t[1].trim():e.trim()}var Hi=class{type=`agent`;sessionFactory;constructor(e){this.sessionFactory=e.sessionFactory}async execute(e,t){let n=e,r=n.maxTurns??50,i=n.timeout??60;try{let e=this.sessionFactory({maxTurns:r,timeout:i}),n=`Hook input:\n${JSON.stringify(t)}\n\nRespond with JSON: { "ok": boolean, "reason"?: string }`,a=await e.run(n),o=Vi(a),s;try{s=JSON.parse(o)}catch{return{exitCode:1,stdout:``,stderr:`Failed to parse agent response as JSON: ${a}`}}return s.ok?{exitCode:0,stdout:JSON.stringify(s),stderr:``}:{exitCode:2,stdout:``,stderr:s.reason??`Blocked by agent hook`}}catch(e){return{exitCode:1,stdout:``,stderr:e instanceof Error?e.message:String(e)}}}};function Ui(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/.exec(e);return t?t[1].trim():e.trim()}var Wi=class{type=`prompt`;providerFactory;defaultModel;constructor(e){this.providerFactory=e.providerFactory,this.defaultModel=e.defaultModel}async execute(e,t){let n=e,r=n.model??this.defaultModel;try{let e=this.providerFactory(r),i=`${n.prompt}\n\nContext:\n${JSON.stringify(t)}\n\nRespond with JSON: { "ok": boolean, "reason"?: string }`,a=await e.complete(i),o=Ui(a),s;try{s=JSON.parse(o)}catch{return{exitCode:1,stdout:``,stderr:`Failed to parse AI response as JSON: ${a}`}}return s.ok?{exitCode:0,stdout:JSON.stringify(s),stderr:``}:{exitCode:2,stdout:``,stderr:s.reason??`Blocked by prompt hook`}}catch(e){return{exitCode:1,stdout:``,stderr:e instanceof Error?e.message:String(e)}}}};const Gi=new Set([`Write`,`Edit`]),Ki=new Set([`Bash`,`BackgroundProcess`]),qi=new Set([`Read`,`Glob`,`Grep`,`WebFetch`,`WebSearch`]);function Ji(e){let t=e.toolName;return qi.has(t)?{toolName:t,reversible:!0,sideEffect:`none`,rollbackLayer:`none`,status:`read-only`,message:`${t} does not mutate the local workspace.`}:Gi.has(t)?e.context.isolation===`worktree`||e.context.isolation===`provider-sandbox`?Zi(t,`file-mutation`,e.context):e.context.checkpointAvailable?{toolName:t,reversible:!0,sideEffect:`file-mutation`,rollbackLayer:`edit-checkpoint`,status:`reversible`,message:`${t} is reversible through the active edit checkpoint.`}:{toolName:t,reversible:!1,sideEffect:`file-mutation`,rollbackLayer:`none`,status:`requires-checkpoint`,message:`${t} requires an edit checkpoint before file mutation.`}:Ki.has(t)?Zi(t,`shell-process`,e.context):t===`Agent`?Qi(e.toolArgs,e.context):{toolName:t,reversible:!1,sideEffect:`unknown`,rollbackLayer:`none`,status:`unknown`,message:`${t} has no reversible execution contract.`}}function Yi(e,t){let n={checkpointAvailable:t.checkpointAvailable,isolation:t.isolation??`none`},r=t.enforceUntrackedSideEffects??!0;return e.map(e=>new Xi(e,{safetyContext:n,enforceUntrackedSideEffects:r}))}var Xi=class{delegate;options;schema;constructor(e,t){this.delegate=e,this.options=t,this.schema=e.schema}setEventService(e){this.delegate.setEventService(e)}async execute(e,t){let n=Ji({toolName:this.getName(),toolArgs:na(e),context:this.options.safetyContext});return!n.reversible&&this.options.enforceUntrackedSideEffects?ra(n):this.delegate.execute(e,t)}validate(e){return this.delegate.validate(e)}validateParameters(e){return this.delegate.validateParameters(e)}getDescription(){return this.delegate.getDescription()}getName(){return this.delegate.getName()}};function Zi(e,t,n){return n.isolation===`worktree`?{toolName:e,reversible:!0,sideEffect:t,rollbackLayer:`worktree`,status:`reversible`,message:`${e} side effects are contained in an isolated Git worktree.`}:n.isolation===`provider-sandbox`?{toolName:e,reversible:!0,sideEffect:t,rollbackLayer:`provider-sandbox`,status:`reversible`,message:`${e} side effects are contained in a provider sandbox snapshot.`}:{toolName:e,reversible:!1,sideEffect:t,rollbackLayer:`none`,status:`requires-isolation`,message:`${e} can create host shell side effects that edit checkpoints cannot restore; use worktree or provider sandbox isolation.`}}function Qi(e,t){return t.isolation===`worktree`||t.isolation===`provider-sandbox`?Zi(`Agent`,`subagent`,t):$i(e)?{toolName:`Agent`,reversible:!0,sideEffect:`subagent`,rollbackLayer:`worktree`,status:`reversible`,message:`Agent jobs request worktree isolation, so shell side effects stay outside the parent workspace.`}:{toolName:`Agent`,reversible:!1,sideEffect:`subagent`,rollbackLayer:`none`,status:`requires-isolation`,message:`Agent jobs must request worktree isolation to be reversible in local-first mode.`}}function $i(e){if(!e)return!1;let t=e.jobs;return Array.isArray(t)?t.length>0&&t.every(e=>ta(e)?ea(e)===`worktree`:!1):ea(e)===`worktree`}function ea(e){let t=e.isolation;return typeof t==`string`?t:void 0}function ta(e){return e!==void 0&&typeof e==`object`&&!Array.isArray(e)}function na(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function ra(e){return{success:!0,data:{success:!1,output:``,error:e.message,reversibleSafety:{toolName:e.toolName,sideEffect:e.sideEffect,rollbackLayer:e.rollbackLayer,status:e.status}},metadata:{reversibleSafetyStatus:e.status,rollbackLayer:e.rollbackLayer}}}function ia(e){return(e??[]).filter(e=>e.modelInvocable&&e.kind===`builtin-command`)}function aa(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function oa(e,t){return e.some(e=>aa(e.name)===t)}function sa(e){if(!e.provider)throw Error(`provider is required. SDK is provider-neutral — consumer must create and pass a provider instance.`);let t=e.provider,n=e.cwd??process.cwd(),r=e.sessionId??ca(),i=new Fi(n),a=ia(e.commandDescriptors),o=a.length>0&&e.modelCommandExecutor!==void 0&&e.isModelCommandInvocable!==void 0,s=o?st(a):void 0,c=oa(a,`skills`)?i.getModelInvocableSkills():[],l=Vr({sandboxClient:e.sandboxClient,cwd:n}),u=e.editCheckpointRecorder!==void 0&&e.sandboxClient===void 0,d=[...u&&e.editCheckpointRecorder?wi(l,e.editCheckpointRecorder):l,...e.additionalTools??[]],p=e.reversibleExecution?{...e.reversibleExecution,isolation:e.reversibleExecution.isolation??(e.sandboxClient?`provider-sandbox`:void 0)}:void 0,m=p?Yi(d,{...p,checkpointAvailable:u}):d;o&&e.modelCommandExecutor!==void 0&&e.isModelCommandInvocable!==void 0&&m.push(...ut({execute:e.modelCommandExecutor,isModelInvocable:e.isModelCommandInvocable,commandDescriptors:a}));let h=[];e.providerFactory&&h.push(new Wi({providerFactory:e.providerFactory,defaultModel:e.config.provider.model})),e.sessionFactory&&h.push(new Hi({sessionFactory:e.sessionFactory})),e.additionalHookExecutors&&h.push(...e.additionalHookExecutors);let{agentToolDeps:_,agentDefinitions:v,backgroundTaskManager:y}=vi(e,r,n,t,m,h),{backgroundProcessToolDeps:ee}=yi(e,y,r,n,m),{finalSystemMessage:te,rebuildSystemMessage:ne}=bi(e,n,a,s,ee,c,v),re=[`Read(.agents/**)`,`Read(.claude/**)`,`Read(.robota/**)`,`Glob(.agents/**)`,`Glob(.claude/**)`,`Glob(.robota/**)`],ie=s?s.commandTools.filter(e=>!e.requiresPermission).map(e=>e.toolName):[],ae=(e.allowedTools??[]).map(e=>`${e}(*)`),oe=(e.deniedTools??[]).map(e=>`${e}(*)`),se={allow:[...re,...ie,...e.config.permissions.allow??[],...ae],deny:[...e.config.permissions.deny??[],...oe]},b=(0,g.join)(n,`.robota`,`settings.local.json`);function ce(e){let t=`${e}(*)`,n=W(b),r=Array.isArray(n.permissions)?[]:n.permissions?.allow??[];r.includes(t)||G(b,{...n,permissions:{...n.permissions??{},allow:[...r,t]}})}let le=new f.Session({tools:m,provider:t,systemMessage:te,terminal:e.terminal,permissions:se,hooks:e.config.hooks,permissionMode:e.permissionMode,defaultTrustLevel:e.config.defaultTrustLevel,model:e.model??e.config.provider.model,providerTimeout:e.config.provider.timeout??12e4,maxTurns:e.maxTurns,sessionStore:e.sessionStore,sessionId:r,permissionHandler:e.permissionHandler,onProjectAllowTool:ce,onTextDelta:e.onTextDelta,onContextUpdate:e.onContextUpdate,onToolExecution:e.onToolExecution,promptForApproval:e.promptForApproval,onCompact:e.onCompact,onCompactEvent:e.onCompactEvent,compactInstructions:e.compactInstructions??e.context.compactInstructions,autoCompactThreshold:e.autoCompactThreshold??e.config.autoCompactThreshold,sessionLogger:e.sessionLogger,hookTypeExecutors:h.length>0?h:void 0,agentName:e.agentName,...e.responseFormat?{responseFormat:e.responseFormat}:{}});return xi(le,_,ee,y),{session:le,rebuildSystemMessage:ne}}function ca(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function la(e,t,n,r=new N){let i=(0,g.join)(n,e,`subagents`);return r.mkdirSync(i,{recursive:!0}),new f.FileSessionLogger(i)}function ua(e,t){return(0,g.join)(t,e,`subagents`)}const K=d.z.lazy(()=>d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.null(),d.z.undefined(),d.z.date(),d.z.array(K),d.z.record(K)])),da=d.z.object({name:d.z.string().optional(),model:d.z.string().optional(),apiKey:d.z.string().optional(),baseURL:d.z.string().optional(),timeout:d.z.number().optional(),options:d.z.record(K).optional()}),fa=d.z.object({type:d.z.string().optional(),model:d.z.string().optional(),apiKey:d.z.string().optional(),baseURL:d.z.string().optional(),timeout:d.z.number().optional(),options:d.z.record(K).optional()}),pa=d.z.object({allow:d.z.array(d.z.string()).optional(),deny:d.z.array(d.z.string()).optional()}),ma=d.z.record(d.z.string()).optional(),ha=d.z.object({type:d.z.literal(`command`),command:d.z.string(),timeout:d.z.number().optional()}),ga=d.z.object({type:d.z.literal(`http`),url:d.z.string(),headers:d.z.record(d.z.string()).optional(),timeout:d.z.number().optional()}),_a=d.z.object({type:d.z.literal(`prompt`),prompt:d.z.string(),model:d.z.string().optional()}),va=d.z.object({type:d.z.literal(`agent`),agent:d.z.string(),maxTurns:d.z.number().optional(),timeout:d.z.number().optional()}),ya=d.z.discriminatedUnion(`type`,[ha,ga,_a,va]),q=d.z.object({matcher:d.z.string(),hooks:d.z.array(ya)}),ba=d.z.object({PreToolUse:d.z.array(q).optional(),PostToolUse:d.z.array(q).optional(),SessionStart:d.z.array(q).optional(),SessionEnd:d.z.array(q).optional(),Stop:d.z.array(q).optional(),StopFailure:d.z.array(q).optional(),PreCompact:d.z.array(q).optional(),PostCompact:d.z.array(q).optional(),UserPromptSubmit:d.z.array(q).optional(),SubagentStart:d.z.array(q).optional(),SubagentStop:d.z.array(q).optional(),WorktreeCreate:d.z.array(q).optional(),WorktreeRemove:d.z.array(q).optional()}).optional(),xa=d.z.record(d.z.boolean()).optional(),Sa=d.z.object({source:d.z.object({type:d.z.enum([`github`,`git`,`local`,`url`]),repo:d.z.string().optional(),url:d.z.string().optional(),path:d.z.string().optional(),ref:d.z.string().optional()})}),Ca=d.z.record(Sa).optional().catch(void 0),wa=d.z.union([d.z.number().gt(0).lte(1),d.z.literal(!1)]).optional(),Ta=d.z.object({enabled:d.z.boolean().optional(),options:d.z.record(K).optional()}),Ea=d.z.object({defaultTrustLevel:d.z.enum([`safe`,`moderate`,`full`]).optional(),language:d.z.string().optional(),currentProvider:d.z.string().optional(),providers:d.z.record(fa).optional(),provider:da.optional(),permissions:pa.optional(),env:ma,hooks:ba,enabledPlugins:xa,extraKnownMarketplaces:Ca,autoCompactThreshold:wa,transports:d.z.record(Ta).optional()});function Da(){return process.env.HOME??process.env.USERPROFILE??`/`}const J={defaultTrustLevel:`moderate`,provider:{name:`anthropic`,model:`claude-opus-4-5`,apiKey:void 0},permissions:{allow:[],deny:[]},env:{}};function Oa(e){if(!(0,v.existsSync)(e))return;let t=(0,v.readFileSync)(e,`utf-8`).trim();if(t.length!==0)try{return JSON.parse(t)}catch{return}}function ka(e){if(e.startsWith(`$ENV:`)){let t=e.slice(5);return process.env[t]??e}return e}function Aa(e){let t=e.provider?.apiKey===void 0?e.provider:ja(e.provider);if(e.providers!==void 0){let n=Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,ja(t)]));return{...e,provider:t,providers:n}}return{...e,provider:t}}function ja(e){return{...e,...e.apiKey!==void 0&&{apiKey:ka(e.apiKey)}}}function Ma(e){return e.reduce((e,t)=>({...e,...t,provider:e.provider!==void 0||t.provider!==void 0?{...e.provider,...t.provider}:void 0,permissions:e.permissions!==void 0||t.permissions!==void 0?{allow:t.permissions?.allow??e.permissions?.allow,deny:t.permissions?.deny??e.permissions?.deny}:void 0,env:{...e.env??{},...t.env??{}},providers:e.providers!==void 0||t.providers!==void 0?Na(e.providers,t.providers):void 0,enabledPlugins:e.enabledPlugins!==void 0||t.enabledPlugins!==void 0?{...e.enabledPlugins??{},...t.enabledPlugins??{}}:void 0,extraKnownMarketplaces:t.extraKnownMarketplaces??e.extraKnownMarketplaces,autoCompactThreshold:t.autoCompactThreshold??e.autoCompactThreshold}),{})}function Na(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]={...n[e],...r};return n}function Pa(e){if(e.currentProvider!==void 0)return Fa(e);if(e.provider!==void 0)throw Error(`Legacy flat "provider" settings are not supported. Migrate to "currentProvider" + "providers" format.`);return{...J.provider}}function Fa(e){let t=e.currentProvider;if(t===void 0)throw Error(`currentProvider is required`);let n=e.providers?.[t];if(n===void 0)throw Error(`currentProvider "${t}" was not found in providers`);if(n.type===void 0)throw Error(`Provider profile "${t}" is missing type`);return{name:n.type,model:n.model??J.provider.model,apiKey:n.apiKey??J.provider.apiKey,...n.baseURL!==void 0&&{baseURL:n.baseURL},...n.timeout!==void 0&&{timeout:n.timeout},...n.options!==void 0&&{options:n.options}}}function Ia(e){return{defaultTrustLevel:e.defaultTrustLevel??J.defaultTrustLevel,language:e.language,currentProvider:e.currentProvider,provider:Pa(e),permissions:{allow:e.permissions?.allow??J.permissions.allow,deny:e.permissions?.deny??J.permissions.deny},env:e.env??J.env,hooks:e.hooks??void 0,enabledPlugins:e.enabledPlugins??void 0,extraKnownMarketplaces:e.extraKnownMarketplaces??void 0,autoCompactThreshold:e.autoCompactThreshold}}function La(e){let t=Da();return[(0,y.join)(t,`.robota`,`settings.json`),(0,y.join)(t,`.claude`,`settings.json`),(0,y.join)(e,`.robota`,`settings.json`),(0,y.join)(e,`.robota`,`settings.local.json`),(0,y.join)(e,`.claude`,`settings.json`),(0,y.join)(e,`.claude`,`settings.local.json`)]}async function Ra(e){let t=La(e),n=[];for(let e of t){let t=Oa(e);t!==void 0&&n.push({raw:t,path:e})}return Ia(Ma(n.map(({raw:e,path:t})=>{let n=Ea.safeParse(e);if(!n.success)throw Error(`Invalid settings in ${t}: ${n.error.message}`);return Aa(n.data)})))}const za=(0,g.join)(`.agents`,`tasks`),Ba={"in-progress":1,todo:2,blocked:3,unknown:4,completed:5};function Va(e){let t=e?.trim().toLowerCase();return t===`todo`||t===`in-progress`||t===`blocked`||t===`completed`?t:`unknown`}function Ha(e,t){return e.split(/\r?\n/).find(e=>/^#\s+/.test(e))?.replace(/^#\s+/,``).trim()||(0,g.basename)(t,`.md`)}function Ua(e,t){return RegExp(`^- \\*\\*${t}\\*\\*:\\s*(.+)$`,`im`).exec(e)?.[1]?.trim()}function Wa(e,t){let n=e.split(/\r?\n/),r=RegExp(`^(#{2,6})\\s+${t}\\b`,`i`),i=n.findIndex(e=>r.test(e));if(i<0)return;let a=[];for(let e of n.slice(i+1)){if(/^##\s+/.test(e))break;a.push(e)}let o=a.join(`
77
- `).trim();return o.length>0?o:void 0}function Ga(e){return e.split(/\r?\n/).map(e=>/^- \[ \]\s+(.+)$/.exec(e)?.[1]?.trim()).filter(e=>e!==void 0&&e.length>0)}function Ka(e,t){return t&&e.branch===t?0:Ba[e.status]}function qa(e){let t=[`### ${e.title}`,`- **Path:** \`${e.relativePath}\``];return t.push(`- **Status:** ${e.status}`),e.branch&&t.push(`- **Branch:** ${e.branch}`),e.scope&&t.push(`- **Scope:** ${e.scope}`),e.objective&&t.push(`- **Objective:** ${e.objective}`),e.openItems.length>0&&(t.push(`- **Open items:**`),t.push(...e.openItems.map(e=>` - ${e}`))),t.join(`
78
- `)}function Ja(e){return e.toISOString().slice(0,10)}function Ya(e,t){let n=e.split(/\r?\n/),r=`- **Status**: ${t}`,i=n.findIndex(e=>/^- \*\*Status\*\*:\s*/.test(e));return i>=0?(n[i]=r,n.join(`
65
+ `).length;return[{type:`hunk`,text:`@@ -${d},${s.length+f+l.length} +${d},${s.length+p+l.length} @@`,lineNumber:d},...s,...a,...l]}function I(e){if(e.activeTools.length===0)return;let t=e.activeTools.map(e=>`${e.isRunning?`⟳`:e.result===`success`?`✓`:e.result===`error`?`✗`:`⊘`} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`).join(`
66
+ `);e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-summary`,data:{tools:e.activeTools.map(e=>({toolName:e.toolName,firstArg:e.firstArg,isRunning:e.isRunning,result:e.result,diffFile:e.diffFile,diffLines:e.diffLines,toolResultData:e.toolResultData})),summary:t}})}function rr(e){let t=e.filter(e=>!e.isRunning);if(t.length<=50)return e;let n=t.length-50,r=0;return e.filter(e=>!e.isRunning&&r<n?(r++,!1):!0)}function ir(e,t){let n=Zn(t.toolArgs),r={toolName:t.toolName,firstArg:n,isRunning:!0,...t.executionId?{executionId:t.executionId}:{}};return e.activeTools.push(r),e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-start`,data:{toolName:t.toolName,firstArg:n,isRunning:!0}}),r}function ar(e,t){let n=t.denied?`denied`:t.success===!1?`error`:`success`,r=e.activeTools.findIndex(e=>e.toolName===t.toolName&&e.isRunning);if(r===-1)return null;let i={...e.activeTools[r],...er(t),isRunning:!1,result:n,toolResultData:t.toolResultData};return e.activeTools[r]=i,e.activeTools=rr(e.activeTools),e.history.push({id:(0,p.randomUUID)(),timestamp:new Date,category:`event`,type:`tool-end`,data:{toolName:i.toolName,firstArg:i.firstArg,isRunning:!1,result:n,toolResultData:t.toolResultData}}),i}const or=[{pattern:/\b401\b|invalid.*api.?key|authentication.*fail|unauthorized/i,message:"Invalid API key. Run `/provider` to reconfigure, or check your settings file (~/.robota/settings.json)."},{pattern:/\b403\b|permission.*denied|forbidden/i,message:"Access denied. Your API key may lack permission for this model. Check your provider plan or run `/provider` to switch accounts."},{pattern:/\b429\b|rate.?limit|too many requests|quota.*exceeded/i,message:"Rate limit reached. Wait a moment and try again. Consider switching to a different model with `/model`."},{pattern:/\b500\b|internal server error/i,message:`The AI provider returned an internal error. This is usually temporary — try again.`},{pattern:/\b503\b|service.*unavailable|overloaded/i,message:`The AI provider is temporarily unavailable or overloaded. Try again in a few seconds.`},{pattern:/\b502\b|bad gateway/i,message:`The AI provider gateway is unreachable. Check your network or try again shortly.`},{pattern:/\btimeout\b|timed.?out|ETIMEDOUT/i,message:`The request timed out. Check your internet connection, or try a shorter prompt to reduce response time.`},{pattern:/ENOTFOUND|ECONNREFUSED|ECONNRESET|network.*error|fetch.*fail/i,message:`Network connection failed. Check your internet connection and verify your provider URL in settings.`}];function sr(e){if(e instanceof c.AuthenticationError)return"Invalid API key. Run `/provider` to reconfigure, or check your settings file (~/.robota/settings.json).";if(e instanceof c.RateLimitError)return`Rate limit reached${e.retryAfter?` (retry after ${e.retryAfter}s)`:``}. Wait a moment and try again. Consider switching to a different model with \`/model\`.`;if(e instanceof c.NetworkError)return`Network connection failed. Check your internet connection and verify your provider URL in settings.`;if(e instanceof c.ProviderError&&e.originalError)return sr(e.originalError);let t=e.message;for(let{pattern:e,message:n}of or)if(e.test(t))return n;return t}async function cr(e,t,n,r){let i=r.getHistory();i.push((0,c.messageToHistoryEntry)((0,c.createUserMessage)(t??e))),r.onWorkspaceUpdated();let a=r.getSession().getHistory().length;r.resetUsedMemoryReferences();try{let o=await qn(e,r.getCwd(),n,r.getContextReferences());o.promptFileReferenceEntry&&i.push(o.promptFileReferenceEntry),r.recordContextReferenceUsage(o.activeContextReferenceRecords),r.recordPromptContextReferences(o.promptFileReferenceRecords),await r.beginEditCheckpointTurn(t??e);let s=await r.getSession().run(o.modelInput,o.hookInput);r.flushStreaming(),I({activeTools:r.getActiveTools(),history:i}),r.clearStreaming();let l=Wn(s||`(empty response)`,r.getSession().getHistory(),i,a,r.getSession().getContextState(),o.promptFileReferenceRecords);i.push((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(l.response))),l.usage&&i.push(Kn(l.usage)),r.onComplete(l),r.onContextUpdate()}catch(e){if(r.flushStreaming(),Hn(e)){let e=Gn(r.getSession().getHistory(),i,a,r.getSession().getContextState());I({activeTools:r.getActiveTools(),history:i}),r.clearStreaming(),e.response&&i.push((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(e.response))),e.usage&&i.push(Kn(e.usage)),i.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Interrupted by user.`))),r.onInterrupted(e)}else{I({activeTools:r.getActiveTools(),history:i}),r.clearStreaming();let t=e instanceof Error?e:Error(String(e)),n=sr(t);i.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Error: ${n}`))),r.onError(t)}}}var lr=class{histTracker;skillRouter;callbacks;executing=!1;streamingText=``;flushTimer=null;activeTools=[];pendingPrompt=null;pendingDisplayInput;pendingRawInput;shuttingDown=!1;constructor(e,t,n){this.histTracker=e,this.skillRouter=t,this.callbacks=n}clearPendingQueue(){this.pendingPrompt=null,this.pendingDisplayInput=void 0,this.pendingRawInput=void 0}clearStreaming(){this.streamingText=``,this.activeTools=[],this.flushTimer&&=(clearTimeout(this.flushTimer),null)}flushStreaming(){this.flushTimer&&=(clearTimeout(this.flushTimer),null)}handleTextDelta(e){this.streamingText+=e,this.callbacks.emit(`text_delta`,e),this.flushTimer||=setTimeout(()=>{this.flushTimer=null},16)}handleCompactEvent(e){e.trigger===`auto`&&this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Auto compacted context: ${Math.round(e.before.usedPercentage)}% -> ${Math.round(e.after.usedPercentage)}%`))),this.callbacks.emit(`compact`,e),this.callbacks.emit(`context_update`,e.after)}handleToolExecution(e){let t={activeTools:this.activeTools,history:this.histTracker.getHistory()};if(e.type===`start`){let n=ir(t,e);this.activeTools=t.activeTools,this.callbacks.emit(`tool_start`,n)}else{let n=ar(t,e);this.activeTools=t.activeTools,n&&this.callbacks.emit(`tool_end`,n)}}emitExecutionWorkspaceUpdated(e,t){this.callbacks.getSession()&&this.callbacks.emit(`execution_workspace_event`,{type:`execution_workspace_updated`,cause:e,...t?{entryId:t}:{},snapshot:this.callbacks.getExecutionWorkspaceSnapshot()})}drainPendingQueue(e){if(!this.shuttingDown&&this.pendingPrompt){let t=this.pendingPrompt,n=this.pendingDisplayInput,r=this.pendingRawInput;this.clearPendingQueue(),setTimeout(()=>void e(t,n,r),0)}}async executePrompt(e,t,n,r,i,a,o,s){await en(r,i,a,o,()=>this.callbacks.getSessionOrThrow(),(e,t)=>this.callbacks.emit(e,t)),this.executing=!0,this.clearStreaming(),this.callbacks.emit(`user_message`,t??e),this.callbacks.emit(`thinking`,!0);try{await cr(e,t,n,{getSession:()=>this.callbacks.getSessionOrThrow(),getCwd:()=>this.callbacks.getCwd(),getHistory:()=>this.histTracker.getHistory(),getContextReferences:()=>this.histTracker.listInjectionContextReferences(),getActiveTools:()=>this.activeTools,resetUsedMemoryReferences:()=>this.histTracker.resetUsedMemoryReferences(),recordContextReferenceUsage:e=>this.histTracker.recordContextReferenceUsage(e),recordPromptContextReferences:e=>this.histTracker.recordPromptContextReferences(e),beginEditCheckpointTurn:e=>this.histTracker.beginEditCheckpointTurn(e),flushStreaming:()=>this.flushStreaming(),clearStreaming:()=>this.clearStreaming(),onWorkspaceUpdated:()=>this.emitExecutionWorkspaceUpdated(`main_thread`),onComplete:e=>{this.callbacks.emit(`complete`,e)},onInterrupted:e=>{this.callbacks.emit(`interrupted`,e)},onError:e=>{this.callbacks.emit(`error`,e)},onContextUpdate:()=>{this.callbacks.emit(`context_update`,this.callbacks.getContextState())}})}finally{try{await this.histTracker.finalizeEditCheckpointTurn()}catch(e){this.callbacks.emit(`error`,e instanceof Error?e:Error(String(e)))}this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(s)}}async executeForkSkillCommand(e,t,n,r,i,a){if(this.executing)throw Error(`Cannot execute fork skill while another prompt is running.`);this.executing=!0,this.clearStreaming(),this.callbacks.emit(`thinking`,!0),this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createUserMessage)(n??`/${e.name}`))),this.emitExecutionWorkspaceUpdated(`main_thread`);try{let n=await this.skillRouter.executeSkillWithActivation(e,t,i,r);return await this.applyForkSkillResult(n.result??`(empty response)`),n}catch(e){let t=e instanceof Error?e:Error(String(e));return this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Error: ${sr(t)}`))),this.callbacks.emit(`error`,t),{mode:`fork`,result:``}}finally{this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(a)}}async executeForegroundCommand(e,t){this.executing=!0,this.clearStreaming(),this.callbacks.emit(`thinking`,!0),this.emitExecutionWorkspaceUpdated(`main_thread`);try{let t=await e();return this.callbacks.emit(`context_update`,this.callbacks.getContextState()),t}catch(e){return{success:!1,message:`Error: ${e instanceof Error?e.message:String(e)}`}}finally{this.executing=!1,this.callbacks.emit(`thinking`,!1),this.emitExecutionWorkspaceUpdated(`main_thread`),this.callbacks.persistSession(),this.drainPendingQueue(t)}}async applyForkSkillResult(e){this.flushStreaming(),I({activeTools:this.activeTools,history:this.histTracker.getHistory()}),this.clearStreaming();let t={response:e,history:this.histTracker.getHistory(),toolSummaries:[],contextState:this.callbacks.getContextState()};this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createAssistantMessage)(e))),this.callbacks.emit(`complete`,t),this.callbacks.emit(`context_update`,this.callbacks.getContextState())}};function ur(e,t,n){let r=A(n)?.customAgentRegistry?.(e)??et(e);if(!r)throw Error(`Unknown agent type: ${e}`);return t.allowedTools?{...r,tools:t.allowedTools}:r}async function dr(e,t,n){let r=A(n);if(!r)throw Error(`Fork execution is not available. Agent runtime deps may not be initialized.`);return vt({agentDefinition:ur(t.agent??`general-purpose`,t,n),parentConfig:r.config,parentContext:r.context,parentTools:r.tools,provider:r.provider,terminal:r.terminal,isForkWorker:!0,permissionMode:r.permissionMode,permissionHandler:r.permissionHandler,hooks:r.hooks,hookTypeExecutors:r.hookTypeExecutors,onTextDelta:r.onTextDelta,onToolExecution:r.onToolExecution}).run(e)}async function fr(e,t,n){let r=await kn([t],{cwd:n,reason:`manual`});if(hn(r.diagnostics))return{references:[...e],result:{evicted:[],diagnostics:[gn(r.diagnostics)]}};let i=r.references[0];if(!i)return{references:[...e],result:{evicted:[],diagnostics:[`No context reference was resolved.`]}};let a=tn(P([i])[0],`manual`,`active`),o=nn(e,a);return{references:o.references,result:{reference:a,evicted:o.evicted,diagnostics:[]}}}function pr(e,t,n){if(t.length===0)return[...e];let r=new Date().toISOString(),i=[...e];for(let e of t){let t=tn(e,n.loadType,n.status,r);i=nn(i,t).references}return i}function mr(e,t){let n=new Date().toISOString();return e.map(e=>{let r=(0,g.relative)(t,e.filePath);return{id:`system:${r}`,sourcePath:e.filePath,relativePath:r,originalReference:r,loadType:`system`,status:`active`,byteLength:Buffer.byteLength(e.content,`utf-8`),loadedAt:n,lastUsedAt:n}})}function L(e){let t=(0,g.join)(e,`.robota`);return{settings:(0,g.join)(t,`settings.json`),settingsLocal:(0,g.join)(t,`settings.local.json`),logs:(0,g.join)(t,`logs`),sessions:(0,g.join)(t,`sessions`),memory:(0,g.join)(t,`memory`),checkpoints:(0,g.join)(t,`checkpoints`)}}function hr(){let e=(0,g.join)((0,_.homedir)(),`.robota`);return{settings:(0,g.join)(e,`settings.json`),sessions:(0,g.join)(e,`sessions`),onboarded:(0,g.join)(e,`onboarded`)}}function gr(e){let t=e.fs??new M,n=e.manifests.filter(t=>t.sequence>e.target.sequence),r=e.manifests.filter(t=>t.sequence>=e.target.sequence);return{target:_r(e.target),capturedFiles:e.target.files.map(n=>{let r=n.snapshotFile?(0,g.join)(e.checkpointDir(e.sessionId,e.target.id),n.snapshotFile):void 0,i=r?yr(r,t):void 0;return{originalPath:n.originalPath,relativePath:(0,g.relative)(e.cwd,n.originalPath),existed:n.existed,restoreAction:n.existed?`restore-preimage`:`delete-created-file`,snapshotAvailable:n.existed?i!==void 0:!1,...i?{snapshotSizeBytes:i.size}:{}}}),restoreToCheckpoint:vr(n),rollbackThroughCheckpoint:vr(r)}}function _r(e){return{id:e.id,sessionId:e.sessionId,sequence:e.sequence,prompt:e.prompt,createdAt:e.createdAt,fileCount:e.fileCount}}function vr(e){return{checkpointIds:e.map(e=>e.id),fileCount:e.reduce((e,t)=>e+t.fileCount,0)}}function yr(e,t){try{return t.statSync(e)}catch{return}}const br=`manifest.json`,xr=`files`;var R=class{fs;fsAsync;cwd;rootDir;now;activeTurn=null;constructor(e,t=new M,n=new N){this.fs=t,this.fsAsync=n,this.cwd=(0,g.resolve)(e.cwd),this.rootDir=L(this.cwd).checkpoints,this.now=e.now??(()=>new Date)}async beginTurn(e){this.activeTurn&&await this.finalizeTurn();let t=this.nextSequence(e.sessionId),n=`turn-${String(t).padStart(4,`0`)}`,r=(0,g.join)(this.sessionDir(e.sessionId),n);await this.fsAsync.mkdir((0,g.join)(r,xr),{recursive:!0});let i={version:1,id:n,sessionId:e.sessionId,sequence:t,prompt:e.prompt,createdAt:this.now().toISOString(),fileCount:0,files:[]};return this.activeTurn={manifest:i,dir:r,capturedPaths:new Set},z(i)}async captureFile(e){if(!this.activeTurn)return;let t=(0,g.resolve)(this.cwd,e);if(this.activeTurn.capturedPaths.has(t)||Cr(this.rootDir,t))return;let n=await this.createFileRecord(t,this.activeTurn);this.activeTurn.manifest.files.push(n),this.activeTurn.manifest.fileCount=this.activeTurn.manifest.files.length,this.activeTurn.capturedPaths.add(t)}async finalizeTurn(){if(!this.activeTurn)return;let e=this.activeTurn;return this.activeTurn=null,await this.writeManifest(e.dir,e.manifest),z(e.manifest)}list(e){return this.loadManifests(e).map(z)}inspect(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);return gr({cwd:this.cwd,sessionId:e,target:r,manifests:n,checkpointDir:(e,t)=>this.checkpointDir(e,t)})}async restoreToCheckpoint(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);let i=n.filter(e=>e.sequence>r.sequence).sort((e,t)=>t.sequence-e.sequence),a=0;for(let t of i)for(let n of t.files)await this.restoreFile(e,t.id,n),a+=1;for(let t of i)await this.fsAsync.rm(this.checkpointDir(e,t.id),{recursive:!0,force:!0});return{target:z(r),restoredCheckpointCount:i.length,restoredFileCount:a,removedCheckpointCount:i.length}}async rollbackThroughCheckpoint(e,t){let n=this.loadManifests(e),r=n.find(e=>e.id===t);if(!r)throw Error(`Unknown edit checkpoint: ${t}`);let i=n.filter(e=>e.sequence>=r.sequence).sort((e,t)=>t.sequence-e.sequence),a=0;for(let t of i)for(let n of t.files)await this.restoreFile(e,t.id,n),a+=1;for(let t of i)await this.fsAsync.rm(this.checkpointDir(e,t.id),{recursive:!0,force:!0});return{target:z(r),restoredCheckpointCount:i.length,restoredFileCount:a,removedCheckpointCount:i.length}}async createFileRecord(e,t){if(!await wr(this.fsAsync,this.fs,e))return{originalPath:e,existed:!1};let n=(0,g.join)(xr,`${String(t.manifest.files.length+1).padStart(6,`0`)}.content`);return await this.fsAsync.copyFile(e,(0,g.join)(t.dir,n)),{originalPath:e,existed:!0,snapshotFile:n}}async restoreFile(e,t,n){if(!n.existed){await this.fsAsync.rm(n.originalPath,{force:!0});return}if(!n.snapshotFile)throw Error(`Checkpoint file record is missing a snapshot: ${n.originalPath}`);await this.fsAsync.mkdir((0,g.dirname)(n.originalPath),{recursive:!0}),await this.fsAsync.copyFile((0,g.join)(this.checkpointDir(e,t),n.snapshotFile),n.originalPath)}loadManifests(e){let t=this.sessionDir(e);return Tr(this.fs,t).map(e=>(0,g.join)(t,e,br)).map(e=>Er(this.fs,e)).filter(e=>e!==void 0).sort((e,t)=>e.sequence-t.sequence)}nextSequence(e){return(this.list(e).at(-1)?.sequence??0)+1}async writeManifest(e,t){await this.fsAsync.mkdir(e,{recursive:!0});let n=(0,g.join)(e,br),r=`${n}.tmp`;await this.fsAsync.writeFile(r,JSON.stringify(t,null,2),`utf8`),await this.fsAsync.rename(r,n)}sessionDir(e){return(0,g.join)(this.rootDir,Sr(e))}checkpointDir(e,t){return(0,g.join)(this.sessionDir(e),Sr(t))}};function z(e){return{id:e.id,sessionId:e.sessionId,sequence:e.sequence,prompt:e.prompt,createdAt:e.createdAt,fileCount:e.fileCount}}function Sr(e){return e.replace(/[^a-zA-Z0-9._-]/g,`_`)}function Cr(e,t){let n=(0,g.relative)(e,t);return n.length===0||!n.startsWith(`..`)&&!n.startsWith(`/`)}async function wr(e,t,n){try{return await e.access(n,t.constants.F_OK),!0}catch{return!1}}function Tr(e,t){try{return e.readdirSync(t)}catch{return[]}}function Er(e,t){try{let n=e.readFileSync(t,`utf8`);return JSON.parse(n)}catch{return}}function Dr(e){return e.source===`plugin`?`plugin`:`skill`}function Or(e){return e.context===`fork`?`fork`:`inject`}function kr(e){return{type:`skill-activation`,skillName:e.skill.name,source:Dr(e.skill),invocation:e.invocation,mode:Or(e.skill),status:e.status,timestamp:new Date().toISOString(),...e.qualifiedName===void 0?{}:{qualifiedName:e.qualifiedName},...e.error===void 0?{}:{error:e.error}}}function Ar(e){let t=e.source===`plugin`?`plugin skill`:`skill`;return e.status===`failed`?`Skill failed: ${e.skillName}${e.error?` (${e.error})`:``}`:e.status===`completed`?`Skill completed: ${e.skillName}`:`Invoking ${t}: ${e.skillName}`}var jr=class{cwd;getSessionId;getExecuting;persistSession;emitSkillActivation;history=[];editCheckpointStore=null;memoryEvents=[];usedMemoryReferences=[];contextReferences=[];systemContextReferences=[];skillActivationEvents=[];constructor(e,t,n,r,i,a=null){this.cwd=e,this.getSessionId=t,this.getExecuting=n,this.persistSession=r,this.emitSkillActivation=i,this.editCheckpointStore=a}restoreState(e){this.history=e.history,this.memoryEvents=e.memoryEvents,this.usedMemoryReferences=e.usedMemoryReferences,this.contextReferences=e.contextReferences,this.skillActivationEvents=e.skillActivationEvents}getState(){return{history:this.history,memoryEvents:this.memoryEvents,usedMemoryReferences:this.usedMemoryReferences,contextReferences:this.contextReferences,skillActivationEvents:this.skillActivationEvents}}append(e){this.history.push(e)}getHistory(){return this.history}clearHistory(){this.history=[],this.memoryEvents=[],this.usedMemoryReferences=[]}resetUsedMemoryReferences(){this.usedMemoryReferences=[]}recordContextReferenceUsage(e){this.contextReferences=pr(this.contextReferences,e,{loadType:`manual`,status:`active`}),this.persistSession()}recordPromptContextReferences(e){this.contextReferences=pr(this.contextReferences,e,{loadType:`prompt-reference`,status:`observed`}),this.persistSession()}listEditCheckpoints(){let e=this.getSessionId();return this.getCheckpointStore().list(e)}inspectEditCheckpoint(e){let t=this.getSessionId();return this.getCheckpointStore().inspect(t,e)}async restoreEditCheckpoint(e){if(this.getExecuting())throw Error(`Cannot restore edit checkpoint while a prompt is running.`);let t=await this.getCheckpointStore().restoreToCheckpoint(this.getSessionId(),e);return this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Restored edit checkpoint: ${e}`))),this.persistSession(),t}async rollbackEditCheckpoint(e){if(this.getExecuting())throw Error(`Cannot rollback edit checkpoint while a prompt is running.`);let t=await this.getCheckpointStore().rollbackThroughCheckpoint(this.getSessionId(),e);return this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Rolled back edit checkpoint: ${e}`))),this.persistSession(),t}async beginEditCheckpointTurn(e){this.editCheckpointStore&&await this.editCheckpointStore.beginTurn({sessionId:this.getSessionId(),prompt:e})}async finalizeEditCheckpointTurn(){if(this.editCheckpointStore)try{await this.editCheckpointStore.finalizeTurn()}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.history.push((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Checkpoint error: ${t.message}`))),t}}setEditCheckpointStore(e){this.editCheckpointStore=e}getUsedMemoryReferences(){return[...this.usedMemoryReferences]}recordMemoryEvent(e){this.memoryEvents.push(e),this.persistSession()}recordSystemContextFiles(e){this.systemContextReferences=mr(e,this.cwd)}listContextReferences(){return[...this.systemContextReferences,...this.contextReferences]}listInjectionContextReferences(){return[...this.contextReferences]}async addContextReference(e){let{references:t,result:n}=await fr(this.contextReferences,e,this.cwd);return this.contextReferences=t,this.persistSession(),n}removeContextReference(e){let t=rn(this.contextReferences,e);return this.contextReferences=t.references,this.persistSession(),t.result}clearContextReferences(){let e=an(this.contextReferences);return this.contextReferences=[],this.persistSession(),e}getSkillActivationEvents(){return[...this.skillActivationEvents]}recordSkillActivationEvent(e,t){this.skillActivationEvents.push(e),t&&this.history.push({id:(0,p.randomUUID)(),timestamp:new Date(e.timestamp),category:`event`,type:`skill-activation`,data:{...e,message:Ar(e)}}),this.emitSkillActivation(e),this.persistSession()}getCheckpointStore(){return this.editCheckpointStore||=new R({cwd:this.cwd}),this.editCheckpointStore}};function Mr(e){if((0,v.existsSync)(e))try{return JSON.parse((0,v.readFileSync)(e,`utf-8`))}catch{return}}function Nr(e){if((0,v.existsSync)((0,y.join)(e,`pnpm-workspace.yaml`))||(0,v.existsSync)((0,y.join)(e,`pnpm-lock.yaml`)))return`pnpm`;if((0,v.existsSync)((0,y.join)(e,`yarn.lock`)))return`yarn`;if((0,v.existsSync)((0,y.join)(e,`bun.lockb`)))return`bun`;if((0,v.existsSync)((0,y.join)(e,`package-lock.json`)))return`npm`}async function Pr(e){let t=(0,y.join)(e,`package.json`),n=(0,y.join)(e,`tsconfig.json`),r=(0,y.join)(e,`pyproject.toml`),i=(0,y.join)(e,`Cargo.toml`),a=(0,y.join)(e,`go.mod`);if((0,v.existsSync)(t)){let r=Mr(t),i=(0,v.existsSync)(n)?`typescript`:`javascript`,a=Nr(e);return{type:`node`,name:r?.name,packageManager:a,language:i}}return(0,v.existsSync)(r)||(0,v.existsSync)((0,y.join)(e,`setup.py`))?{type:`python`,language:`python`}:(0,v.existsSync)(i)?{type:`rust`,language:`rust`}:(0,v.existsSync)(a)?{type:`go`,language:`go`}:{type:`unknown`,language:`unknown`}}function Fr(e,t){let n=t.content,r=typeof n==`string`?n:n==null?``:JSON.stringify(n);t.role===`tool`?e.injectMessage(`tool`,r,{toolCallId:t.toolCallId,...t.name===void 0?{}:{name:t.name}}):e.injectMessage(t.role,r)}function Ir(e,t,n,r){let i=e.load(t);if(!i)return{history:[],sessionName:void 0,pendingRestoreMessages:null,backgroundTasks:[],backgroundTaskEvents:[],backgroundJobGroups:[],backgroundJobGroupEvents:[],skillActivationEvents:[],memoryEvents:[],usedMemoryReferences:[],contextReferences:[],sandboxSnapshotId:void 0};let a=i.history??[],o=i.backgroundTasks??[],s=i.backgroundTaskEvents??[],c=i.backgroundJobGroups??[],l=i.backgroundJobGroupEvents??[],u=i.skillActivationEvents??[],d=i.memoryEvents??[],f=i.usedMemoryReferences??[],p=i.contextReferences??[],m=i.sandboxSnapshotId,{backgroundTasks:h,backgroundTaskEvents:g}=Lr(o,s),_=i.name,v=null;if(!n&&i.messages)if(r)for(let e of i.messages)Fr(r,e);else v=i.messages;return{history:a,sessionName:_,pendingRestoreMessages:v,backgroundTasks:h,backgroundTaskEvents:g,backgroundJobGroups:c,backgroundJobGroupEvents:l,skillActivationEvents:u,memoryEvents:d,usedMemoryReferences:f,contextReferences:p,sandboxSnapshotId:m}}function Lr(e,t){let n=new Date().toISOString(),r=[];return{backgroundTasks:e.map(e=>{if(Rr(e.status))return e;let t={...e,status:`failed`,timeoutReason:`stale_worker`,error:{category:`timeout`,message:`Restored background task is stale; worker cannot be reattached`,recoverable:!0},unread:!0,completedAt:n,updatedAt:n};return r.push({type:`background_task_failed`,task:t}),t}),backgroundTaskEvents:[...t,...r]}}function Rr(e){return e===`completed`||e===`failed`||e===`cancelled`}function zr(e){if(e.type===`background_task_started`&&e.task.kind===`agent`)return`SubagentStart`;if((e.type===`background_task_completed`||e.type===`background_task_failed`||e.type===`background_task_cancelled`)&&e.task.kind===`agent`)return`SubagentStop`}function Br(e,t,n,r){let i=zr(e);!i||!(`task`in e)||(0,c.runHooks)(n,i,{session_id:e.task.parentSessionId,cwd:t,hook_event_name:i,agent_id:e.task.id,agent_type:e.task.agentType??e.task.label,...e.task.transcriptPath?{agent_transcript_path:e.task.transcriptPath,transcript_path:e.task.transcriptPath}:{},...e.task.error?.message||e.task.timeoutReason?{reason:e.task.error?.message??e.task.timeoutReason}:{},...i===`SubagentStop`?{stop_hook_active:!1,...e.task.result?.output?{last_assistant_message:e.task.result.output}:{}}:{},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e.task.parentSessionId,ROBOTA_AGENT_ID:e.task.id,ROBOTA_AGENT_TYPE:e.task.agentType??e.task.label}},r).catch(()=>void 0)}const Vr=[`Bash — execute shell commands`,`Read — read file contents with line numbers`,`Write — write content to a file`,`Edit — replace a string in a file`,`Glob — find files matching a pattern`,`Grep — search file contents with regex`,`WebFetch — fetch URL content as text`,`WebSearch — search the internet through the configured local tool`];function Hr(e={}){return[(0,u.createBashTool)(e),(0,u.createReadTool)(e),(0,u.createWriteTool)(e),(0,u.createEditTool)(e),u.globTool,u.grepTool,u.webFetchTool,u.webSearchTool]}const Ur=new Set([`tools`,`disallowedTools`]),Wr=new Set([`maxTurns`]);function Gr(e){let t=e.includes(`,`)?/\s*,\s*/:/\s+/;return e.split(t).map(e=>e.trim()).filter(e=>e.length>0)}function Kr(e){let t=e.split(`
67
+ `);if(t[0]?.trim()!==`---`)return{frontmatter:null,body:e};let n=-1;for(let e=1;e<t.length;e++)if(t[e]?.trim()===`---`){n=e;break}if(n===-1)return{frontmatter:null,body:e};let r={};for(let e=1;e<n;e++){let n=t[e].match(/^([a-zA-Z][a-zA-Z0-9]*(?:[A-Z][a-z]*)*):\s*(.+)/);if(!n)continue;let i=n[1],a=n[2].trim();Ur.has(i)?r[i]=Gr(a):Wr.has(i)?r[i]=parseInt(a,10):r[i]=a}let i=t.slice(n+1).join(`
68
+ `).trim();return{frontmatter:Object.keys(r).length>0?r:null,body:i}}function B(e,t){if(!t.existsSync(e))return[];let n=[],r;try{r=t.readdirSync(e,{withFileTypes:!0})}catch{return[]}for(let i of r){if(!i.isFile()||!i.name.endsWith(`.md`))continue;let r=(0,g.join)(e,i.name),{frontmatter:a,body:o}=Kr(t.readFileSync(r,`utf-8`)),s=(0,g.basename)(i.name,`.md`),c={name:a?.name??s,description:a?.description??``,systemPrompt:o};a?.model!==void 0&&(c.model=a.model),a?.maxTurns!==void 0&&(c.maxTurns=a.maxTurns),a?.tools!==void 0&&(c.tools=a.tools),a?.disallowedTools!==void 0&&(c.disallowedTools=a.disallowedTools),n.push(c)}return n}var qr=class{cwd;home;fs;constructor(e,t,n=new M){this.cwd=e,this.home=t??(0,_.homedir)(),this.fs=n}loadAll(){let e=[B((0,g.join)(this.cwd,`.robota`,`agents`),this.fs),B((0,g.join)(this.cwd,`.agents`,`agents`),this.fs),B((0,g.join)(this.cwd,`.claude`,`agents`),this.fs),B((0,g.join)(this.home,`.robota`,`agents`),this.fs),B((0,g.join)(this.home,`.claude`,`agents`),this.fs)],t=new Set,n=[];for(let r of e)for(let e of r)t.has(e.name)||(t.add(e.name),n.push(e));let r=[...n];for(let e of $e)t.has(e.name)||r.push(e);return r}getAgent(e){return this.loadAll().find(t=>t.name===e)}};function Jr(e){let t=e.content.trim();return e.title?[`## ${e.title}`,t].join(`
69
+ `):t}function Yr(e){return[...e].filter(e=>e.content.trim().length>0).sort((e,t)=>e.priority-t.priority||e.id.localeCompare(t.id)).map(e=>Jr(e)).join(`
70
+
71
+ `)}const Xr={safe:`safe`,moderate:`moderate`,full:`full`};function V(e,t,n,r,i){return{id:e,title:t,priority:n,content:r,source:i}}function Zr(e){if(e)return V(`runtime-cwd`,`Working Directory`,30,`\`${e}\``,`runtime`)}function Qr(e){let t=[];return e.name!==void 0&&t.push(`- **Name:** ${e.name}`),e.type!==`unknown`&&t.push(`- **Type:** ${e.type}`),e.language!==`unknown`&&t.push(`- **Language:** ${e.language}`),e.packageManager!==void 0&&t.push(`- **Package manager:** ${e.packageManager}`),V(`runtime-project`,`Current Project`,40,t.join(`
72
+ `),`runtime`)}function $r(e){return V(`permission-mode`,`Permission Mode`,50,`- **Trust level:** ${Xr[e]}`,`permissions`)}function ei(e){if(!(e===void 0||e.trim().length===0))return V(`runtime-response-language`,`Response Language`,45,e,`runtime`)}function ti(e){if(e.trim().length!==0)return V(`project-agents-md`,`Agent Instructions`,10,e,`project-instructions`)}function ni(e){if(e.trim().length!==0)return V(`project-claude-md`,`Project Notes`,20,e,`project-instructions`)}function ri(e){if(!(e===void 0||e.trim().length===0))return V(`project-memory`,`Project Memory`,25,e,`project-instructions`)}function ii(e){if(!(e===void 0||e.trim().length===0))return V(`active-task-context`,`Active Task Context`,27,e,`project-instructions`)}function ai(e){if(e.length!==0)return V(`tool-descriptions`,`Available Tools`,60,e.map(e=>`- ${e}`).join(`
73
+ `),`tool`)}function oi(e){let t=e.argumentHint?` ${e.argumentHint}`:``;return`- ${e.name}${t}: ${e.description}`}function H(e,t,n,r,i){let a=i.filter(t=>t.modelInvocable&&t.kind===e).map(oi);if(a.length!==0)return V(`capability-${e}`,t,n,a.join(`
74
+ `),r)}function si(e){let t=[],n=H(`builtin-command`,`Built-in Commands`,70,`command`,e),r=H(`skill`,`Skills`,80,`skill`,e),i=H(`agent`,`Agents`,90,`agent`,e),a=H(`tool`,`Tools`,100,`tool`,e);return n&&t.push(n),r&&t.push(r),i&&t.push(i),a&&t.push(a),t}function U(e,t){t!==void 0&&e.push(t)}function ci(e){return e.map(e=>({name:e.name,kind:`skill`,description:e.description,userInvocable:!0,modelInvocable:e.disableModelInvocation!==!0}))}function li(e){return e.map(e=>({name:e.name,kind:`agent`,description:e.description,userInvocable:!1,modelInvocable:!0,safety:`background-agent`}))}function ui(e){return[...e.commandDescriptors??[],...e.skills?ci(e.skills):[],...e.agents?li(e.agents):[]]}function di(e){let t=[];return U(t,ti(e.agentsMd)),U(t,ni(e.claudeMd)),U(t,ri(e.memoryMd)),U(t,ii(e.taskContext)),U(t,Zr(e.cwd)),t.push(Qr(e.projectInfo)),U(t,ei(e.language)),t.push($r(e.trustLevel)),U(t,ai(e.toolDescriptions)),t.push(...si(ui(e))),Yr(t)}function fi(e){return e}const pi=d.z.object({command:d.z.string().describe(`The shell command to start in the background`),timeout:d.z.number().optional().describe(`Optional timeout in milliseconds. Default is 120000.`),workingDirectory:d.z.string().optional().describe(`Working directory for the command. Defaults to the current project directory.`),stdin:d.z.string().optional().describe(`Optional stdin to write after the process starts.`),outputLimitBytes:d.z.number().optional().describe(`Maximum captured output bytes kept in the task result.`)});function mi(e,t,n){return JSON.stringify({success:!0,background:!0,output:``,taskId:e,status:t,command:n})}function hi(e){return JSON.stringify({success:!1,background:!0,output:``,error:`Background process error: ${e}`})}async function gi(e,t){try{let n=await t.backgroundTaskManager.spawn({kind:`process`,label:e.command,mode:`background`,parentSessionId:t.parentSessionId??`unknown-session`,depth:0,cwd:e.workingDirectory??t.cwd??process.cwd(),command:e.command,stdin:e.stdin,timeoutMs:e.timeout??12e4,outputLimitBytes:e.outputLimitBytes,metadata:t.metadata});return mi(n.id,n.status,e.command)}catch(e){return hi(e instanceof Error?e.message:String(e))}}function _i(e){return(0,u.createZodFunctionTool)(`BackgroundProcess`,`Start a shell command as a managed background task. Use this for long-running commands that should not block the current conversation. Use /background list, /background read <taskId>, /background cancel <taskId>, or /background close <taskId> to inspect or control it.`,fi(pi),async t=>gi(t,e))}function vi(e,t,n,r,i,a){let o,s=[],c;if(e.enableAgentRuntime){let u=new qr(n);s=u.loadAll(),o={config:e.config,context:e.context,tools:i,terminal:e.terminal,provider:r,cwd:n,parentSessionId:t,permissionMode:e.permissionMode,permissionHandler:e.permissionHandler,hooks:e.config.hooks,hookTypeExecutors:a.length>0?a:void 0,onTextDelta:e.onTextDelta,onToolExecution:e.onToolExecution,customAgentRegistry:e=>u.getAgent(e),agentDefinitions:s};let d=new l.SubagentManager({runner:(e.subagentRunnerFactory??wt)(o),backgroundTaskRunners:e.backgroundTaskRunners});o.subagentManager=d,c=d.getBackgroundTaskManager(),o.backgroundTaskManager=c}else c=new l.BackgroundTaskManager({runners:e.backgroundTaskRunners??[]});let u=e.sessionLogger;return u&&c.subscribe(e=>Si(u,t,e)),c.subscribe(t=>Br(t,n,e.config.hooks,a.length>0?a:void 0)),{agentToolDeps:o,agentDefinitions:s,backgroundTaskManager:c}}function yi(e,t,n,r,i){if(!e.backgroundTaskRunners?.some(e=>e.kind===`process`))return{backgroundProcessToolDeps:void 0};let a={backgroundTaskManager:t,cwd:r,parentSessionId:n,metadata:E({kind:`tool_call`,sessionId:n,label:`BackgroundProcess`})};return i.push(_i(a)),{backgroundProcessToolDeps:a}}function bi(e,t,n,r,i,a,o){let s=e.systemPromptBuilder??di,c=[...Vr,...r?r.commandTools.map(lt):[]],l=e.toolDescriptions??(i?[...c,`BackgroundProcess — start long-running shell commands as managed background tasks`]:c),u={agentsMd:e.context.agentsMd,claudeMd:e.context.claudeMd,memoryMd:e.context.memoryMd,taskContext:e.context.taskContext,toolDescriptions:l,trustLevel:e.config.defaultTrustLevel,projectInfo:e.projectInfo??{type:`unknown`,language:`unknown`},cwd:t,language:e.config.language,skills:a.map(e=>({name:e.name,description:e.description,disableModelInvocation:e.disableModelInvocation})),...o.length>0?{agents:o.map(e=>({name:e.name,description:e.description}))}:{},commandDescriptors:e.commandDescriptors??[]},d=s(u);return{finalSystemMessage:e.appendSystemPrompt?`${d}\n\n${e.appendSystemPrompt}`:d,rebuildSystemMessage:(t,n)=>{let r=s({...u,agentsMd:t,claudeMd:n});return e.appendSystemPrompt?`${r}\n\n${e.appendSystemPrompt}`:r}}}function xi(e,t,n,r){t&&(t.parentSessionId=e.getSessionId()),n&&(n.parentSessionId=e.getSessionId()),Ie(e,r),t&&kt(e,t)}function Si(e,t,n){let r={};if(n.type===`background_task_created`){r.taskId=n.task.id;let e=n.task.metadata?.executionOriginToolCallId;typeof e==`string`&&(r.originToolCallId=e)}e.log(t,`background_task_event`,{backgroundEventType:n.type,backgroundEvent:n,...r})}const Ci=new Set([`Write`,`Edit`]);function wi(e,t){return e.map(e=>Ci.has(e.getName())?new Ti(e,t):e)}var Ti=class{delegate;recorder;schema;constructor(e,t){this.delegate=e,this.recorder=t,this.schema=e.schema}setEventService(e){this.delegate.setEventService(e)}async execute(e,t){let n=Ei(e);return n&&await this.recorder.captureFile(n),this.delegate.execute(e,t)}validate(e){return this.delegate.validate(e)}validateParameters(e){return this.delegate.validateParameters(e)}getDescription(){return this.delegate.getDescription()}getName(){return this.delegate.getName()}};function Ei(e){if(!e||typeof e!=`object`)return;let t=e.filePath;return typeof t==`string`&&t.length>0?t:void 0}const Di=new Set([`disable-model-invocation`,`user-invocable`]),Oi=new Set([`allowed-tools`]);function ki(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function Ai(e){let t=e.includes(`,`)?/\s*,\s*/:/\s+/;return e.split(t).map(e=>e.trim()).filter(e=>e.length>0)}function ji(e){let t=e.split(`
75
+ `);if(t[0]?.trim()!==`---`)return null;let n={};for(let e=1;e<t.length;e++){let r=t[e];if(r.trim()===`---`)break;let i=r.match(/^([a-z][a-z0-9-]*):\s*(.+)/);if(!i)continue;let a=i[1],o=i[2].trim(),s=ki(a);Di.has(a)?n[s]=o===`true`:Oi.has(a)?n[s]=Ai(o):n[s]=o}return Object.keys(n).length>0?n:null}function Mi(e,t,n){let r={name:e?.name??n,description:e?.description??`Skill: ${n}`,source:`skill`,skillContent:t};return e?.argumentHint!==void 0&&(r.argumentHint=e.argumentHint),e?.disableModelInvocation!==void 0&&(r.disableModelInvocation=e.disableModelInvocation),e?.userInvocable!==void 0&&(r.userInvocable=e.userInvocable),e?.allowedTools!==void 0&&(r.allowedTools=e.allowedTools),e?.model!==void 0&&(r.model=e.model),e?.effort!==void 0&&(r.effort=e.effort),e?.context!==void 0&&(r.context=e.context),e?.agent!==void 0&&(r.agent=e.agent),r}function Ni(e,t){if(!t.existsSync(e))return[];let n=[],r=t.readdirSync(e,{withFileTypes:!0});for(let i of r){if(!i.isDirectory())continue;let r=(0,g.join)(e,i.name,`SKILL.md`);if(!t.existsSync(r))continue;let a=t.readFileSync(r,`utf-8`),o=ji(a);n.push(Mi(o,a,i.name))}return n}function Pi(e,t){if(!t.existsSync(e))return[];let n=[],r=t.readdirSync(e,{withFileTypes:!0});for(let i of r){if(!i.isFile()||!i.name.endsWith(`.md`))continue;let r=(0,g.join)(e,i.name),a=t.readFileSync(r,`utf-8`),o=ji(a),s=(0,g.basename)(i.name,`.md`);n.push(Mi(o,a,s))}return n}var Fi=class{name=`skill`;cwd;home;fs;cachedCommands=null;constructor(e,t,n=new M){this.cwd=e,this.home=t??(0,_.homedir)(),this.fs=n}getCommands(){if(this.cachedCommands)return this.cachedCommands;let e=[Ni((0,g.join)(this.cwd,`.claude`,`skills`),this.fs),Pi((0,g.join)(this.cwd,`.claude`,`commands`),this.fs),Ni((0,g.join)(this.home,`.robota`,`skills`),this.fs),Ni((0,g.join)(this.cwd,`.agents`,`skills`),this.fs)],t=new Set,n=[];for(let r of e)for(let e of r)t.has(e.name)||(t.add(e.name),n.push(e));return this.cachedCommands=n,this.cachedCommands}getModelInvocableSkills(){return this.getCommands().filter(e=>e.disableModelInvocation!==!0)}getUserInvocableSkills(){return this.getCommands().filter(e=>e.userInvocable!==!1)}};function W(){return(0,g.join)(process.env.HOME??process.env.USERPROFILE??`/`,`.robota`,`settings.json`)}function Ii(e,t){return t===void 0||t===`user`?W():(0,g.join)(e,`.robota`,`settings.local.json`)}function G(e){if(!(0,m.existsSync)(e))return{};let t=(0,m.readFileSync)(e,`utf8`);try{return JSON.parse(t)}catch{return process.stderr.write(`Warning: corrupt settings file at ${e}, resetting to defaults\n`),{}}}function K(e,t){(0,m.mkdirSync)((0,g.dirname)(e),{recursive:!0}),(0,m.writeFileSync)(e,JSON.stringify(t,null,2)+`
76
+ `,`utf8`)}function Li(e,t){let n=G(e),r=n.currentProvider,i=n.providers;if(typeof r==`string`&&Ri(i)){let e=i;e[r]={...Ri(e[r])?e[r]:{},model:t},n.providers=e}else n.provider={...Ri(n.provider)?n.provider:{},model:t};K(e,n)}function Ri(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function zi(e){return(0,m.existsSync)(e)?((0,m.unlinkSync)(e),!0):!1}function Bi(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/.exec(e);return t?t[1].trim():e.trim()}var Vi=class{type=`agent`;sessionFactory;constructor(e){this.sessionFactory=e.sessionFactory}async execute(e,t){let n=e,r=n.maxTurns??50,i=n.timeout??60;try{let e=this.sessionFactory({maxTurns:r,timeout:i}),n=`Hook input:\n${JSON.stringify(t)}\n\nRespond with JSON: { "ok": boolean, "reason"?: string }`,a=await e.run(n),o=Bi(a),s;try{s=JSON.parse(o)}catch{return{exitCode:1,stdout:``,stderr:`Failed to parse agent response as JSON: ${a}`}}return s.ok?{exitCode:0,stdout:JSON.stringify(s),stderr:``}:{exitCode:2,stdout:``,stderr:s.reason??`Blocked by agent hook`}}catch(e){return{exitCode:1,stdout:``,stderr:e instanceof Error?e.message:String(e)}}}};function Hi(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/.exec(e);return t?t[1].trim():e.trim()}var Ui=class{type=`prompt`;providerFactory;defaultModel;constructor(e){this.providerFactory=e.providerFactory,this.defaultModel=e.defaultModel}async execute(e,t){let n=e,r=n.model??this.defaultModel;try{let e=this.providerFactory(r),i=`${n.prompt}\n\nContext:\n${JSON.stringify(t)}\n\nRespond with JSON: { "ok": boolean, "reason"?: string }`,a=await e.complete(i),o=Hi(a),s;try{s=JSON.parse(o)}catch{return{exitCode:1,stdout:``,stderr:`Failed to parse AI response as JSON: ${a}`}}return s.ok?{exitCode:0,stdout:JSON.stringify(s),stderr:``}:{exitCode:2,stdout:``,stderr:s.reason??`Blocked by prompt hook`}}catch(e){return{exitCode:1,stdout:``,stderr:e instanceof Error?e.message:String(e)}}}};const Wi=new Set([`Write`,`Edit`]),Gi=new Set([`Bash`,`BackgroundProcess`]),Ki=new Set([`Read`,`Glob`,`Grep`,`WebFetch`,`WebSearch`]);function qi(e){let t=e.toolName;return Ki.has(t)?{toolName:t,reversible:!0,sideEffect:`none`,rollbackLayer:`none`,status:`read-only`,message:`${t} does not mutate the local workspace.`}:Wi.has(t)?e.context.isolation===`worktree`||e.context.isolation===`provider-sandbox`?Xi(t,`file-mutation`,e.context):e.context.checkpointAvailable?{toolName:t,reversible:!0,sideEffect:`file-mutation`,rollbackLayer:`edit-checkpoint`,status:`reversible`,message:`${t} is reversible through the active edit checkpoint.`}:{toolName:t,reversible:!1,sideEffect:`file-mutation`,rollbackLayer:`none`,status:`requires-checkpoint`,message:`${t} requires an edit checkpoint before file mutation.`}:Gi.has(t)?Xi(t,`shell-process`,e.context):t===`Agent`?Zi(e.toolArgs,e.context):{toolName:t,reversible:!1,sideEffect:`unknown`,rollbackLayer:`none`,status:`unknown`,message:`${t} has no reversible execution contract.`}}function Ji(e,t){let n={checkpointAvailable:t.checkpointAvailable,isolation:t.isolation??`none`},r=t.enforceUntrackedSideEffects??!0;return e.map(e=>new Yi(e,{safetyContext:n,enforceUntrackedSideEffects:r}))}var Yi=class{delegate;options;schema;constructor(e,t){this.delegate=e,this.options=t,this.schema=e.schema}setEventService(e){this.delegate.setEventService(e)}async execute(e,t){let n=qi({toolName:this.getName(),toolArgs:ta(e),context:this.options.safetyContext});return!n.reversible&&this.options.enforceUntrackedSideEffects?na(n):this.delegate.execute(e,t)}validate(e){return this.delegate.validate(e)}validateParameters(e){return this.delegate.validateParameters(e)}getDescription(){return this.delegate.getDescription()}getName(){return this.delegate.getName()}};function Xi(e,t,n){return n.isolation===`worktree`?{toolName:e,reversible:!0,sideEffect:t,rollbackLayer:`worktree`,status:`reversible`,message:`${e} side effects are contained in an isolated Git worktree.`}:n.isolation===`provider-sandbox`?{toolName:e,reversible:!0,sideEffect:t,rollbackLayer:`provider-sandbox`,status:`reversible`,message:`${e} side effects are contained in a provider sandbox snapshot.`}:{toolName:e,reversible:!1,sideEffect:t,rollbackLayer:`none`,status:`requires-isolation`,message:`${e} can create host shell side effects that edit checkpoints cannot restore; use worktree or provider sandbox isolation.`}}function Zi(e,t){return t.isolation===`worktree`||t.isolation===`provider-sandbox`?Xi(`Agent`,`subagent`,t):Qi(e)?{toolName:`Agent`,reversible:!0,sideEffect:`subagent`,rollbackLayer:`worktree`,status:`reversible`,message:`Agent jobs request worktree isolation, so shell side effects stay outside the parent workspace.`}:{toolName:`Agent`,reversible:!1,sideEffect:`subagent`,rollbackLayer:`none`,status:`requires-isolation`,message:`Agent jobs must request worktree isolation to be reversible in local-first mode.`}}function Qi(e){if(!e)return!1;let t=e.jobs;return Array.isArray(t)?t.length>0&&t.every(e=>ea(e)?$i(e)===`worktree`:!1):$i(e)===`worktree`}function $i(e){let t=e.isolation;return typeof t==`string`?t:void 0}function ea(e){return e!==void 0&&typeof e==`object`&&!Array.isArray(e)}function ta(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function na(e){return{success:!0,data:{success:!1,output:``,error:e.message,reversibleSafety:{toolName:e.toolName,sideEffect:e.sideEffect,rollbackLayer:e.rollbackLayer,status:e.status}},metadata:{reversibleSafetyStatus:e.status,rollbackLayer:e.rollbackLayer}}}function ra(e){return(e??[]).filter(e=>e.modelInvocable&&e.kind===`builtin-command`)}function ia(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function aa(e,t){return e.some(e=>ia(e.name)===t)}function oa(e){if(!e.provider)throw Error(`provider is required. SDK is provider-neutral — consumer must create and pass a provider instance.`);let t=e.provider,n=e.cwd??process.cwd(),r=e.sessionId??sa(),i=new Fi(n),a=ra(e.commandDescriptors),o=a.length>0&&e.modelCommandExecutor!==void 0&&e.isModelCommandInvocable!==void 0,s=o?ct(a):void 0,c=aa(a,`skills`)?i.getModelInvocableSkills():[],l=Hr({sandboxClient:e.sandboxClient,cwd:n}),u=e.editCheckpointRecorder!==void 0&&e.sandboxClient===void 0,d=[...u&&e.editCheckpointRecorder?wi(l,e.editCheckpointRecorder):l,...e.additionalTools??[]],p=e.reversibleExecution?{...e.reversibleExecution,isolation:e.reversibleExecution.isolation??(e.sandboxClient?`provider-sandbox`:void 0)}:void 0,m=p?Ji(d,{...p,checkpointAvailable:u}):d;o&&e.modelCommandExecutor!==void 0&&e.isModelCommandInvocable!==void 0&&m.push(...dt({execute:e.modelCommandExecutor,isModelInvocable:e.isModelCommandInvocable,commandDescriptors:a}));let h=[];e.providerFactory&&h.push(new Ui({providerFactory:e.providerFactory,defaultModel:e.config.provider.model})),e.sessionFactory&&h.push(new Vi({sessionFactory:e.sessionFactory})),e.additionalHookExecutors&&h.push(...e.additionalHookExecutors);let{agentToolDeps:_,agentDefinitions:v,backgroundTaskManager:y}=vi(e,r,n,t,m,h),{backgroundProcessToolDeps:ee}=yi(e,y,r,n,m),{finalSystemMessage:te,rebuildSystemMessage:ne}=bi(e,n,a,s,ee,c,v),re=[`Read(.agents/**)`,`Read(.claude/**)`,`Read(.robota/**)`,`Glob(.agents/**)`,`Glob(.claude/**)`,`Glob(.robota/**)`],ie=s?s.commandTools.filter(e=>!e.requiresPermission).map(e=>e.toolName):[],ae=(e.allowedTools??[]).map(e=>`${e}(*)`),oe=(e.deniedTools??[]).map(e=>`${e}(*)`),se={allow:[...re,...ie,...e.config.permissions.allow??[],...ae],deny:[...e.config.permissions.deny??[],...oe]},b=(0,g.join)(n,`.robota`,`settings.local.json`);function ce(e){let t=`${e}(*)`,n=G(b),r=Array.isArray(n.permissions)?[]:n.permissions?.allow??[];r.includes(t)||K(b,{...n,permissions:{...n.permissions??{},allow:[...r,t]}})}let le=new f.Session({tools:m,provider:t,systemMessage:te,terminal:e.terminal,permissions:se,hooks:e.config.hooks,permissionMode:e.permissionMode,defaultTrustLevel:e.config.defaultTrustLevel,model:e.model??e.config.provider.model,providerTimeout:e.config.provider.timeout??12e4,maxTurns:e.maxTurns,sessionStore:e.sessionStore,sessionId:r,permissionHandler:e.permissionHandler,onProjectAllowTool:ce,onTextDelta:e.onTextDelta,onContextUpdate:e.onContextUpdate,onToolExecution:e.onToolExecution,promptForApproval:e.promptForApproval,onCompact:e.onCompact,onCompactEvent:e.onCompactEvent,compactInstructions:e.compactInstructions??e.context.compactInstructions,autoCompactThreshold:e.autoCompactThreshold??e.config.autoCompactThreshold,sessionLogger:e.sessionLogger,hookTypeExecutors:h.length>0?h:void 0,agentName:e.agentName,...e.responseFormat?{responseFormat:e.responseFormat}:{}});return xi(le,_,ee,y),{session:le,rebuildSystemMessage:ne}}function sa(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function ca(e,t,n,r=new M){let i=(0,g.join)(n,e,`subagents`);return r.mkdirSync(i,{recursive:!0}),new f.FileSessionLogger(i)}function la(e,t){return(0,g.join)(t,e,`subagents`)}const q=d.z.lazy(()=>d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.null(),d.z.undefined(),d.z.date(),d.z.array(q),d.z.record(q)])),ua=d.z.object({name:d.z.string().optional(),model:d.z.string().optional(),apiKey:d.z.string().optional(),baseURL:d.z.string().optional(),timeout:d.z.number().optional(),options:d.z.record(q).optional()}),da=d.z.object({type:d.z.string().optional(),model:d.z.string().optional(),apiKey:d.z.string().optional(),baseURL:d.z.string().optional(),timeout:d.z.number().optional(),options:d.z.record(q).optional()}),fa=d.z.object({allow:d.z.array(d.z.string()).optional(),deny:d.z.array(d.z.string()).optional()}),pa=d.z.record(d.z.string()).optional(),ma=d.z.object({type:d.z.literal(`command`),command:d.z.string(),timeout:d.z.number().optional()}),ha=d.z.object({type:d.z.literal(`http`),url:d.z.string(),headers:d.z.record(d.z.string()).optional(),timeout:d.z.number().optional()}),ga=d.z.object({type:d.z.literal(`prompt`),prompt:d.z.string(),model:d.z.string().optional()}),_a=d.z.object({type:d.z.literal(`agent`),agent:d.z.string(),maxTurns:d.z.number().optional(),timeout:d.z.number().optional()}),va=d.z.discriminatedUnion(`type`,[ma,ha,ga,_a]),J=d.z.object({matcher:d.z.string(),hooks:d.z.array(va)}),ya=d.z.object({PreToolUse:d.z.array(J).optional(),PostToolUse:d.z.array(J).optional(),SessionStart:d.z.array(J).optional(),SessionEnd:d.z.array(J).optional(),Stop:d.z.array(J).optional(),StopFailure:d.z.array(J).optional(),PreCompact:d.z.array(J).optional(),PostCompact:d.z.array(J).optional(),UserPromptSubmit:d.z.array(J).optional(),SubagentStart:d.z.array(J).optional(),SubagentStop:d.z.array(J).optional(),WorktreeCreate:d.z.array(J).optional(),WorktreeRemove:d.z.array(J).optional()}).optional(),ba=d.z.record(d.z.boolean()).optional(),xa=d.z.object({source:d.z.object({type:d.z.enum([`github`,`git`,`local`,`url`]),repo:d.z.string().optional(),url:d.z.string().optional(),path:d.z.string().optional(),ref:d.z.string().optional()})}),Sa=d.z.record(xa).optional().catch(void 0),Ca=d.z.union([d.z.number().gt(0).lte(1),d.z.literal(!1)]).optional(),wa=d.z.object({enabled:d.z.boolean().optional(),options:d.z.record(q).optional()}),Ta=d.z.object({defaultTrustLevel:d.z.enum([`safe`,`moderate`,`full`]).optional(),language:d.z.string().optional(),currentProvider:d.z.string().optional(),providers:d.z.record(da).optional(),provider:ua.optional(),permissions:fa.optional(),env:pa,hooks:ya,enabledPlugins:ba,extraKnownMarketplaces:Sa,autoCompactThreshold:Ca,transports:d.z.record(wa).optional()});function Ea(){return process.env.HOME??process.env.USERPROFILE??`/`}const Y={defaultTrustLevel:`moderate`,provider:{name:`anthropic`,model:`claude-opus-4-5`,apiKey:void 0},permissions:{allow:[],deny:[]},env:{}};function Da(e){if(!(0,v.existsSync)(e))return;let t=(0,v.readFileSync)(e,`utf-8`).trim();if(t.length!==0)try{return JSON.parse(t)}catch{return}}function Oa(e){if(e.startsWith(`$ENV:`)){let t=e.slice(5);return process.env[t]??e}return e}function ka(e){let t=e.provider?.apiKey===void 0?e.provider:Aa(e.provider);if(e.providers!==void 0){let n=Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,Aa(t)]));return{...e,provider:t,providers:n}}return{...e,provider:t}}function Aa(e){return{...e,...e.apiKey!==void 0&&{apiKey:Oa(e.apiKey)}}}function ja(e){return e.reduce((e,t)=>({...e,...t,provider:e.provider!==void 0||t.provider!==void 0?{...e.provider,...t.provider}:void 0,permissions:e.permissions!==void 0||t.permissions!==void 0?{allow:t.permissions?.allow??e.permissions?.allow,deny:t.permissions?.deny??e.permissions?.deny}:void 0,env:{...e.env??{},...t.env??{}},providers:e.providers!==void 0||t.providers!==void 0?Ma(e.providers,t.providers):void 0,enabledPlugins:e.enabledPlugins!==void 0||t.enabledPlugins!==void 0?{...e.enabledPlugins??{},...t.enabledPlugins??{}}:void 0,extraKnownMarketplaces:t.extraKnownMarketplaces??e.extraKnownMarketplaces,autoCompactThreshold:t.autoCompactThreshold??e.autoCompactThreshold}),{})}function Ma(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]={...n[e],...r};return n}function Na(e){if(e.currentProvider!==void 0)return Pa(e);if(e.provider!==void 0)throw Error(`Legacy flat "provider" settings are not supported. Migrate to "currentProvider" + "providers" format.`);return{...Y.provider}}function Pa(e){let t=e.currentProvider;if(t===void 0)throw Error(`currentProvider is required`);let n=e.providers?.[t];if(n===void 0)throw Error(`currentProvider "${t}" was not found in providers`);if(n.type===void 0)throw Error(`Provider profile "${t}" is missing type`);return{name:n.type,model:n.model??Y.provider.model,apiKey:n.apiKey??Y.provider.apiKey,...n.baseURL!==void 0&&{baseURL:n.baseURL},...n.timeout!==void 0&&{timeout:n.timeout},...n.options!==void 0&&{options:n.options}}}function Fa(e){return{defaultTrustLevel:e.defaultTrustLevel??Y.defaultTrustLevel,language:e.language,currentProvider:e.currentProvider,provider:Na(e),permissions:{allow:e.permissions?.allow??Y.permissions.allow,deny:e.permissions?.deny??Y.permissions.deny},env:e.env??Y.env,hooks:e.hooks??void 0,enabledPlugins:e.enabledPlugins??void 0,extraKnownMarketplaces:e.extraKnownMarketplaces??void 0,autoCompactThreshold:e.autoCompactThreshold}}function Ia(e){let t=Ea();return[(0,y.join)(t,`.robota`,`settings.json`),(0,y.join)(t,`.claude`,`settings.json`),(0,y.join)(e,`.robota`,`settings.json`),(0,y.join)(e,`.robota`,`settings.local.json`),(0,y.join)(e,`.claude`,`settings.json`),(0,y.join)(e,`.claude`,`settings.local.json`)]}async function La(e){let t=Ia(e),n=[];for(let e of t){let t=Da(e);t!==void 0&&n.push({raw:t,path:e})}return Fa(ja(n.map(({raw:e,path:t})=>{let n=Ta.safeParse(e);if(!n.success)throw Error(`Invalid settings in ${t}: ${n.error.message}`);return ka(n.data)})))}const Ra=(0,g.join)(`.agents`,`tasks`),za={"in-progress":1,todo:2,blocked:3,unknown:4,completed:5};function Ba(e){let t=e?.trim().toLowerCase();return t===`todo`||t===`in-progress`||t===`blocked`||t===`completed`?t:`unknown`}function Va(e,t){return e.split(/\r?\n/).find(e=>/^#\s+/.test(e))?.replace(/^#\s+/,``).trim()||(0,g.basename)(t,`.md`)}function Ha(e,t){return RegExp(`^- \\*\\*${t}\\*\\*:\\s*(.+)$`,`im`).exec(e)?.[1]?.trim()}function Ua(e,t){let n=e.split(/\r?\n/),r=RegExp(`^(#{2,6})\\s+${t}\\b`,`i`),i=n.findIndex(e=>r.test(e));if(i<0)return;let a=[];for(let e of n.slice(i+1)){if(/^##\s+/.test(e))break;a.push(e)}let o=a.join(`
77
+ `).trim();return o.length>0?o:void 0}function Wa(e){return e.split(/\r?\n/).map(e=>/^- \[ \]\s+(.+)$/.exec(e)?.[1]?.trim()).filter(e=>e!==void 0&&e.length>0)}function Ga(e,t){return t&&e.branch===t?0:za[e.status]}function Ka(e){let t=[`### ${e.title}`,`- **Path:** \`${e.relativePath}\``];return t.push(`- **Status:** ${e.status}`),e.branch&&t.push(`- **Branch:** ${e.branch}`),e.scope&&t.push(`- **Scope:** ${e.scope}`),e.objective&&t.push(`- **Objective:** ${e.objective}`),e.openItems.length>0&&(t.push(`- **Open items:**`),t.push(...e.openItems.map(e=>` - ${e}`))),t.join(`
78
+ `)}function qa(e){return e.toISOString().slice(0,10)}function Ja(e,t){let n=e.split(/\r?\n/),r=`- **Status**: ${t}`,i=n.findIndex(e=>/^- \*\*Status\*\*:\s*/.test(e));return i>=0?(n[i]=r,n.join(`
79
79
  `)):(n.length>0&&/^#\s+/.test(n[0])?n.splice(1,0,``,r):n.unshift(r,``),n.join(`
80
- `))}function Xa(e,t,n){let r=[`### ${Ja(t)}`,`- ${n.trim()}`],i=e.replace(/\s+$/u,``).split(/\r?\n/),a=i.findIndex(e=>/^## Progress\s*$/.test(e));if(a<0)return[...i,``,`## Progress`,``,...r,``].join(`
80
+ `))}function Ya(e,t,n){let r=[`### ${qa(t)}`,`- ${n.trim()}`],i=e.replace(/\s+$/u,``).split(/\r?\n/),a=i.findIndex(e=>/^## Progress\s*$/.test(e));if(a<0)return[...i,``,`## Progress`,``,...r,``].join(`
81
81
  `);let o=i.findIndex((e,t)=>t>a&&/^##\s+/.test(e));return o<0?[...i,``,...r,``].join(`
82
82
  `):(i.splice(o,0,``,...r,``),i.join(`
83
- `))}function Za(e,t){let n=(0,g.resolve)(e),r=!1;for(;!r;){let e=(0,g.join)(n,`.git`);if(t.existsSync(e)){if(t.statSync(e).isDirectory())return e;let r=t.readFileSync(e,`utf8`).trim().match(/^gitdir:\s*(.+)$/)?.[1];if(r)return(0,g.isAbsolute)(r)?r:(0,g.resolve)(n,r)}let i=(0,g.dirname)(n);r=i===n,n=i}}function Qa(e,t=new N){let n=Za(e,t);if(!n)return;let r=(0,g.join)(n,`HEAD`);if(t.existsSync(r))return(t.readFileSync(r,`utf8`).trim().match(/^ref:\s+refs\/heads\/(.+)$/)?.[1])?.trim()}function $a(e,t=new N){let n=(0,g.join)(e,za);return t.existsSync(n)?t.readdirSync(n,{withFileTypes:!0}).filter(e=>e.isFile()).map(e=>e.name).filter(e=>e!==`README.md`&&e.endsWith(`.md`)).sort((e,t)=>e.localeCompare(t)).map(e=>(0,g.join)(n,e)):[]}function eo(e,t,n=new N){let r=n.readFileSync(e,`utf8`);return{path:e,relativePath:(0,g.relative)(t,e),title:Ha(r,e),status:Va(Ua(r,`Status`)),branch:Ua(r,`Branch`),scope:Ua(r,`Scope`),objective:Wa(r,`Objective`),openItems:Ga(r)}}function to(e,t={}){let n=t.maxTasks??3;return[...e].filter(e=>e.status!==`completed`).sort((e,n)=>Ka(e,t.currentBranch)-Ka(n,t.currentBranch)||e.relativePath.localeCompare(n.relativePath)).slice(0,n)}function no(e){return e.map(qa).join(`
83
+ `))}function Xa(e,t){let n=(0,g.resolve)(e),r=!1;for(;!r;){let e=(0,g.join)(n,`.git`);if(t.existsSync(e)){if(t.statSync(e).isDirectory())return e;let r=t.readFileSync(e,`utf8`).trim().match(/^gitdir:\s*(.+)$/)?.[1];if(r)return(0,g.isAbsolute)(r)?r:(0,g.resolve)(n,r)}let i=(0,g.dirname)(n);r=i===n,n=i}}function Za(e,t=new M){let n=Xa(e,t);if(!n)return;let r=(0,g.join)(n,`HEAD`);if(t.existsSync(r))return(t.readFileSync(r,`utf8`).trim().match(/^ref:\s+refs\/heads\/(.+)$/)?.[1])?.trim()}function Qa(e,t=new M){let n=(0,g.join)(e,Ra);return t.existsSync(n)?t.readdirSync(n,{withFileTypes:!0}).filter(e=>e.isFile()).map(e=>e.name).filter(e=>e!==`README.md`&&e.endsWith(`.md`)).sort((e,t)=>e.localeCompare(t)).map(e=>(0,g.join)(n,e)):[]}function $a(e,t,n=new M){let r=n.readFileSync(e,`utf8`);return{path:e,relativePath:(0,g.relative)(t,e),title:Va(r,e),status:Ba(Ha(r,`Status`)),branch:Ha(r,`Branch`),scope:Ha(r,`Scope`),objective:Ua(r,`Objective`),openItems:Wa(r)}}function eo(e,t={}){let n=t.maxTasks??3;return[...e].filter(e=>e.status!==`completed`).sort((e,n)=>Ga(e,t.currentBranch)-Ga(n,t.currentBranch)||e.relativePath.localeCompare(n.relativePath)).slice(0,n)}function to(e){return e.map(Ka).join(`
84
84
 
85
- `)}function ro(e,t={},n=new N){let r=t.currentBranch??Qa(e,n);return no(to($a(e,n).map(t=>eo(t,e,n)),{...t,currentBranch:r}))}function io(e,t,n={},r=new N){let i=Ya(r.readFileSync(e,`utf8`),t),a=n.progressMessage?Xa(i,n.now??new Date,n.progressMessage):i;r.writeFileSync(e,a,`utf8`)}const ao=25600,oo=[`user`,`feedback`,`project`,`reference`];function so(e){return oo.includes(e)}function co(e){return(0,y.join)(e,`.robota`,`memory`)}function lo(e,t){let n=Buffer.from(e,`utf8`);return n.byteLength<=t?e:n.subarray(0,t).toString(`utf8`)}function uo(e,t){let n=e.split(/\r?\n/);return{content:n.slice(0,t).join(`
86
- `).trimEnd(),truncated:n.length>t}}function fo(e){return e.trim().toLowerCase().replace(/[^a-z0-9가-힣_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,80)||`general`}function po(e,t,n){let r=e.toISOString().slice(0,10),i=t.text.trim().replace(/\s+/g,` `);return`[${r}] (${t.type}/${n}) ${i}`}function mo(e){return e.trim().replace(/\s+/g,` `)}var ho=class{cwd;now;constructor(e,t=()=>new Date){this.cwd=e,this.now=t}getIndexPath(){return(0,y.join)(co(this.cwd),`MEMORY.md`)}getTopicsPath(){return(0,y.join)(co(this.cwd),`topics`)}loadStartupMemory(){let e=this.getIndexPath();if(!(0,v.existsSync)(e))return{content:``,path:e,lineCount:0,truncated:!1};let t=(0,v.readFileSync)(e,`utf8`),n=lo(t,ao),r=Buffer.byteLength(t,`utf8`)>ao,i=uo(n,200);return{content:i.content,path:e,lineCount:i.content.length===0?0:i.content.split(/\r?\n/).length,truncated:r||i.truncated}}list(){let e=this.getTopicsPath(),t=(0,v.existsSync)(e)?(0,v.readdirSync)(e,{withFileTypes:!0}).filter(e=>e.isFile()&&e.name.endsWith(`.md`)).map(t=>({name:(0,y.basename)(t.name,`.md`),path:(0,y.join)(e,t.name)})).sort((e,t)=>e.name.localeCompare(t.name)):[];return{indexPath:this.getIndexPath(),topicsPath:e,topics:t}}readTopic(e){let t=fo(e),n=(0,y.join)(this.getTopicsPath(),`${t}.md`);return(0,v.existsSync)(n)?(0,v.readFileSync)(n,`utf8`).trimEnd():``}append(e){let t=fo(e.topic),n=co(this.cwd),r=this.getTopicsPath();(0,v.mkdirSync)(r,{recursive:!0});let i=this.getIndexPath(),a=(0,y.join)(r,`${t}.md`),o=po(this.now(),e,t),s=(0,v.existsSync)(a)?``:`# ${t}\n\n`,c=mo(e.text);return(0,v.existsSync)(a)&&(0,v.readFileSync)(a,`utf8`).includes(`) ${c}`)?{indexPath:i,topicPath:a,topic:t,deduplicated:!0}:((0,v.existsSync)(i)||((0,v.mkdirSync)(n,{recursive:!0}),(0,v.writeFileSync)(i,`# Project Memory
85
+ `)}function no(e,t={},n=new M){let r=t.currentBranch??Za(e,n);return to(eo(Qa(e,n).map(t=>$a(t,e,n)),{...t,currentBranch:r}))}function ro(e,t,n={},r=new M){let i=Ja(r.readFileSync(e,`utf8`),t),a=n.progressMessage?Ya(i,n.now??new Date,n.progressMessage):i;r.writeFileSync(e,a,`utf8`)}const io=25600,ao=[`user`,`feedback`,`project`,`reference`];function oo(e){return ao.includes(e)}function so(e){return(0,y.join)(e,`.robota`,`memory`)}function co(e,t){let n=Buffer.from(e,`utf8`);return n.byteLength<=t?e:n.subarray(0,t).toString(`utf8`)}function lo(e,t){let n=e.split(/\r?\n/);return{content:n.slice(0,t).join(`
86
+ `).trimEnd(),truncated:n.length>t}}function uo(e){return e.trim().toLowerCase().replace(/[^a-z0-9가-힣_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,80)||`general`}function fo(e,t,n){let r=e.toISOString().slice(0,10),i=t.text.trim().replace(/\s+/g,` `);return`[${r}] (${t.type}/${n}) ${i}`}function po(e){return e.trim().replace(/\s+/g,` `)}var mo=class{cwd;now;constructor(e,t=()=>new Date){this.cwd=e,this.now=t}getIndexPath(){return(0,y.join)(so(this.cwd),`MEMORY.md`)}getTopicsPath(){return(0,y.join)(so(this.cwd),`topics`)}loadStartupMemory(){let e=this.getIndexPath();if(!(0,v.existsSync)(e))return{content:``,path:e,lineCount:0,truncated:!1};let t=(0,v.readFileSync)(e,`utf8`),n=co(t,io),r=Buffer.byteLength(t,`utf8`)>io,i=lo(n,200);return{content:i.content,path:e,lineCount:i.content.length===0?0:i.content.split(/\r?\n/).length,truncated:r||i.truncated}}list(){let e=this.getTopicsPath(),t=(0,v.existsSync)(e)?(0,v.readdirSync)(e,{withFileTypes:!0}).filter(e=>e.isFile()&&e.name.endsWith(`.md`)).map(t=>({name:(0,y.basename)(t.name,`.md`),path:(0,y.join)(e,t.name)})).sort((e,t)=>e.name.localeCompare(t.name)):[];return{indexPath:this.getIndexPath(),topicsPath:e,topics:t}}readTopic(e){let t=uo(e),n=(0,y.join)(this.getTopicsPath(),`${t}.md`);return(0,v.existsSync)(n)?(0,v.readFileSync)(n,`utf8`).trimEnd():``}append(e){let t=uo(e.topic),n=so(this.cwd),r=this.getTopicsPath();(0,v.mkdirSync)(r,{recursive:!0});let i=this.getIndexPath(),a=(0,y.join)(r,`${t}.md`),o=fo(this.now(),e,t),s=(0,v.existsSync)(a)?``:`# ${t}\n\n`,c=po(e.text);return(0,v.existsSync)(a)&&(0,v.readFileSync)(a,`utf8`).includes(`) ${c}`)?{indexPath:i,topicPath:a,topic:t,deduplicated:!0}:((0,v.existsSync)(i)||((0,v.mkdirSync)(n,{recursive:!0}),(0,v.writeFileSync)(i,`# Project Memory
87
87
 
88
- `,`utf8`)),(0,v.appendFileSync)(i,`- ${o}\n`,`utf8`),(0,v.appendFileSync)(a,`${s}- ${o}\n`,`utf8`),{indexPath:i,topicPath:a,topic:t,deduplicated:!1})}};function go(e,t){let n=[],r=(0,y.resolve)(e),i=!1;for(;!i;){let e=(0,y.join)(r,t);(0,v.existsSync)(e)&&n.push(e);let a=(0,y.dirname)(r);i=a===r,i||(r=a)}return n.reverse()}function _o(e){let t=e.split(`
88
+ `,`utf8`)),(0,v.appendFileSync)(i,`- ${o}\n`,`utf8`),(0,v.appendFileSync)(a,`${s}- ${o}\n`,`utf8`),{indexPath:i,topicPath:a,topic:t,deduplicated:!1})}};function ho(e,t){let n=[],r=(0,y.resolve)(e),i=!1;for(;!i;){let e=(0,y.join)(r,t);(0,v.existsSync)(e)&&n.push(e);let a=(0,y.dirname)(r);i=a===r,i||(r=a)}return n.reverse()}function go(e){let t=e.split(`
89
89
  `),n=!1,r=0,i=[];for(let e of t){let t=/^(#{1,6})\s+/.exec(e);if(t){if(n&&t[1].length<=r)break;if(/compact\s+instructions/i.test(e)){n=!0,r=t[1].length;continue}}n&&i.push(e)}return i.join(`
90
- `).trim()||void 0}async function vo(e){let t=go(e,`AGENTS.md`),n=go(e,`CLAUDE.md`),r=t.map(e=>Xt(e)),i=n.map(e=>Xt(e)),a=r.map(e=>e.content).join(`
90
+ `).trim()||void 0}async function _o(e){let t=ho(e,`AGENTS.md`),n=ho(e,`CLAUDE.md`),r=t.map(e=>Zt(e)),i=n.map(e=>Zt(e)),a=r.map(e=>e.content).join(`
91
91
 
92
92
  `),o=i.map(e=>e.content).join(`
93
93
 
94
- `),s=_o(o),c=new ho(e).loadStartupMemory().content||void 0,l=ro(e);return{agentsMd:a,claudeMd:o,memoryMd:c,taskContext:l.trim().length>0?l:void 0,compactInstructions:s,agentsFileEntries:r,claudeFileEntries:i}}var yo=class{settingsPath;fs;constructor(e,t=new N){this.settingsPath=e,this.fs=t}readAll(){if(!this.fs.existsSync(this.settingsPath))return{};try{let e=this.fs.readFileSync(this.settingsPath,`utf-8`),t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch{return{}}}writeAll(e){let t=(0,g.dirname)(this.settingsPath);this.fs.existsSync(t)||this.fs.mkdirSync(t,{recursive:!0}),this.fs.writeFileSync(this.settingsPath,JSON.stringify(e,null,2),`utf-8`)}getEnabledPlugins(){let e=this.readAll().enabledPlugins;return typeof e==`object`&&e?e:{}}setPluginEnabled(e,t){let n=this.readAll(),r=this.getEnabledPluginsFrom(n);r[e]=t,n.enabledPlugins=r,this.writeAll(n)}removePluginEntry(e){let t=this.readAll(),n=this.getEnabledPluginsFrom(t);delete n[e],t.enabledPlugins=n,this.writeAll(t)}getMarketplaceSources(){let e=this.readAll().extraKnownMarketplaces;return typeof e==`object`&&e?e:{}}setMarketplaceSource(e,t){let n=this.readAll(),r=this.getMarketplaceSourcesFrom(n);r[e]={source:t},n.extraKnownMarketplaces=r,this.writeAll(n)}removeMarketplaceSource(e){let t=this.readAll(),n=this.getMarketplaceSourcesFrom(t);delete n[e],t.extraKnownMarketplaces=n,this.writeAll(t)}getEnabledPluginsFrom(e){let t=e.enabledPlugins;return typeof t==`object`&&t?t:{}}getMarketplaceSourcesFrom(e){let t=e.extraKnownMarketplaces;return typeof t==`object`&&t?t:{}}};function bo(e){let t=e.trimStart();if(!t.startsWith(`---`))return{metadata:{},content:e};let n=t.indexOf(`---`,3);if(n===-1)return{metadata:{},content:e};let r=t.slice(3,n).trim(),i=t.slice(n+3).trimStart(),a={};for(let e of r.split(`
95
- `)){let t=e.indexOf(`:`);if(t===-1)continue;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();typeof r==`string`&&r.startsWith(`[`)&&r.endsWith(`]`)&&(r=r.slice(1,-1).split(`,`).map(e=>e.trim()).filter(e=>e.length>0)),n&&(a[n]=r)}return{metadata:a,content:i}}function xo(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.name!=`string`||typeof t.version!=`string`||typeof t.description!=`string`)return null;let n=typeof t.features==`object`&&t.features!==null?t.features:{};return{name:t.name,version:t.version,description:t.description,features:{commands:n.commands===!0?!0:void 0,agents:n.agents===!0?!0:void 0,skills:n.skills===!0?!0:void 0,hooks:n.hooks===!0?!0:void 0,mcp:n.mcp===!0?!0:void 0}}}function So(e,t=new N){if(!t.existsSync(e))return[];try{return t.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name).sort()}catch{return[]}}var Co=class{pluginsDir;enabledPlugins;fs;constructor(e,t,n=new N){this.pluginsDir=e,this.enabledPlugins=t??{},this.fs=n}loadPluginsSync(){return this.discoverAndLoad()}async loadAll(){return this.discoverAndLoad()}discoverAndLoad(){let e=(0,g.join)(this.pluginsDir,`cache`);if(!this.fs.existsSync(e))return[];let t=[],n=So(e,this.fs);for(let r of n){let n=(0,g.join)(e,r),i=So(n,this.fs);for(let e of i){let i=(0,g.join)(n,e),a=So(i,this.fs);if(a.length===0)continue;let o=a[a.length-1],s=(0,g.join)(i,o),c=(0,g.join)(s,`.claude-plugin`,`plugin.json`);if(!this.fs.existsSync(c))continue;let l=this.readManifest(c);if(!l)continue;let u=`${l.name}@${r}`;if(this.isDisabled(u,l.name))continue;let d=this.loadPlugin(s,l);t.push(d)}}return t}readManifest(e){let t=this.fs.readFileSync(e,`utf-8`);return xo(JSON.parse(t))}isDisabled(e,t){return e in this.enabledPlugins?this.enabledPlugins[e]===!1:t in this.enabledPlugins?this.enabledPlugins[t]===!1:!1}loadPlugin(e,t){return{manifest:t,skills:this.loadSkills(e,t.name),commands:this.loadCommands(e,t.name),hooks:this.loadHooks(e),mcpConfig:this.loadMcpConfig(e),agents:this.loadAgents(e),pluginDir:e}}loadSkills(e,t){let n=(0,g.join)(e,`skills`);if(!this.fs.existsSync(n))return[];let r=this.fs.readdirSync(n,{withFileTypes:!0}),i=[];for(let e of r){if(!e.isDirectory())continue;let t=(0,g.join)(n,e.name,`SKILL.md`);if(!this.fs.existsSync(t))continue;let{metadata:r,content:a}=bo(this.fs.readFileSync(t,`utf-8`)),o=typeof r.description==`string`?r.description:``,s={name:e.name,description:o,skillContent:a,...r};i.push(s)}return i}loadCommands(e,t){let n=(0,g.join)(e,`commands`);if(!this.fs.existsSync(n))return[];let r=this.fs.readdirSync(n,{withFileTypes:!0}),i=[];for(let e of r){if(!e.isFile()||!e.name.endsWith(`.md`))continue;let{metadata:r,content:a}=bo(this.fs.readFileSync((0,g.join)(n,e.name),`utf-8`)),o=typeof r.name==`string`?r.name:e.name.replace(/\.md$/,``),s=typeof r.description==`string`?r.description:``;i.push({...r,name:`${t}:${o}`,description:s,skillContent:a})}return i}loadHooks(e){let t=(0,g.join)(e,`hooks`,`hooks.json`);if(!this.fs.existsSync(t))return{};let n=this.fs.readFileSync(t,`utf-8`),r=JSON.parse(n);return typeof r==`object`&&r?r:{}}loadMcpConfig(e){let t=(0,g.join)(e,`.mcp.json`);if(!this.fs.existsSync(t))return;let n=this.fs.readFileSync(t,`utf-8`);return JSON.parse(n)}loadAgents(e){let t=(0,g.join)(e,`agents`);return this.fs.existsSync(t)?this.fs.readdirSync(t,{withFileTypes:!0}).filter(e=>e.isDirectory()||e.name.endsWith(`.md`)).map(e=>e.name.replace(/\.md$/,``)):[]}},wo=class{pluginsDir;cacheDir;registryPath;settingsStore;marketplaceClient;exec;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.cacheDir=(0,g.join)(this.pluginsDir,`cache`),this.registryPath=(0,g.join)(this.pluginsDir,`installed_plugins.json`),this.settingsStore=e.settingsStore,this.marketplaceClient=e.marketplaceClient,this.exec=e.exec,this.fs=e.fs??new N}async install(e,t){let n=this.marketplaceClient.fetchManifest(t).plugins.find(t=>t.name===e);if(!n)throw Error(`Plugin "${e}" not found in marketplace "${t}"`);let r=this.resolveVersion(n,t),i=(0,g.join)(this.cacheDir,t,e,r);if(this.fs.existsSync(i))throw Error(`Plugin "${e}" version "${r}" is already installed from "${t}"`);this.resolveAndInstall(n.source,t,e,i);let a=`${e}@${t}`,o=this.readRegistry();o[a]={pluginName:e,marketplace:t,version:r,installPath:i,installedAt:new Date().toISOString()},this.writeRegistry(o)}async uninstall(e){let t=this.readRegistry(),n=t[e];if(!n)throw Error(`Plugin "${e}" is not installed`);this.fs.existsSync(n.installPath)&&this.fs.rmSync(n.installPath,{recursive:!0,force:!0}),delete t[e],this.writeRegistry(t),this.settingsStore.removePluginEntry(e)}async enable(e){this.settingsStore.setPluginEnabled(e,!0)}async disable(e){this.settingsStore.setPluginEnabled(e,!1)}getInstalledPlugins(){return this.readRegistry()}getPluginsByMarketplace(e){let t=this.readRegistry();return Object.values(t).filter(t=>t.marketplace===e)}resolveVersion(e,t){let n=e;return typeof n.version==`string`&&n.version?n.version:this.marketplaceClient.getMarketplaceSha(t)}normalizeSource(e){if(typeof e==`string`)return e;let t=e;return!t.type&&typeof t.source==`string`?{...t,type:t.source}:e}resolveAndInstall(e,t,n,r){this.fs.mkdirSync(r,{recursive:!0});let i=this.normalizeSource(e);try{if(typeof i==`string`){let e=(0,g.join)(this.marketplaceClient.getMarketplaceDir(t),i);if(!this.fs.existsSync(e))throw Error(`Plugin source path "${i}" not found in marketplace "${t}"`);this.fs.cpSync(e,r,{recursive:!0})}else if(i.type===`github`){let e=`https://github.com/${i.repo}.git`;this.cloneToDir(e,r,n)}else if(i.type===`url`&&typeof i.url==`string`&&i.url.endsWith(`.git`))this.cloneToDir(i.url,r,n);else if(i.type===`url`)throw Error(`URL source "${i.url}" is not a git repository (must end with .git)`);else throw Error(`Unknown source type: ${JSON.stringify(i)}`)}catch(e){throw this.fs.existsSync(r)&&this.fs.rmSync(r,{recursive:!0,force:!0}),e}}cloneToDir(e,t,n){this.fs.rmSync(t,{recursive:!0,force:!0});let r=`git clone --depth 1 ${e} ${t}`;try{this.exec(r,{timeout:6e4,stdio:`pipe`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to clone plugin "${n}": ${t}`)}}readRegistry(){if(!this.fs.existsSync(this.registryPath))return{};try{let e=this.fs.readFileSync(this.registryPath,`utf-8`),t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch{return{}}}writeRegistry(e){let t=(0,g.dirname)(this.registryPath);this.fs.existsSync(t)||this.fs.mkdirSync(t,{recursive:!0}),this.fs.writeFileSync(this.registryPath,JSON.stringify(e,null,2),`utf-8`)}};function Y(e,t=new N){if(!t.existsSync(e))return{};try{let n=t.readFileSync(e,`utf-8`),r=JSON.parse(n);return typeof r==`object`&&r?r:{}}catch{return{}}}function To(e,t,n=new N){let r=(0,g.dirname)(e);n.existsSync(r)||n.mkdirSync(r,{recursive:!0}),n.writeFileSync(e,JSON.stringify(t,null,2),`utf-8`)}function Eo(e,t,n=new N){let r=(0,g.join)(e,`installed_plugins.json`);if(!n.existsSync(r))return;let i;try{let e=n.readFileSync(r,`utf-8`),t=JSON.parse(e);if(typeof t!=`object`||!t)return;i=t}catch{return}let a=!1;for(let[e,r]of Object.entries(i))r.marketplace===t&&(r.installPath&&n.existsSync(r.installPath)&&n.rmSync(r.installPath,{recursive:!0,force:!0}),delete i[e],a=!0);if(a){let e=(0,g.dirname)(r);n.existsSync(e)||n.mkdirSync(e,{recursive:!0}),n.writeFileSync(r,JSON.stringify(i,null,2),`utf-8`)}}const Do=6e4;var Oo=class{pluginsDir;exec;marketplacesDir;registryPath;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.exec=e.exec,this.marketplacesDir=(0,g.join)(this.pluginsDir,`marketplaces`),this.registryPath=(0,g.join)(this.pluginsDir,`known_marketplaces.json`),this.fs=e.fs??new N}addMarketplace(e){let t=`temp-`+Date.now().toString(36),n=(0,g.join)(this.marketplacesDir,t);if(this.fs.mkdirSync(this.marketplacesDir,{recursive:!0}),e.type===`local`){if(!this.fs.existsSync(e.path))throw Error(`Local marketplace path does not exist: ${e.path}`);this.fs.cpSync(e.path,n,{recursive:!0})}else{let t=`git clone --depth 1 ${this.resolveCloneUrl(e)} ${n}`;try{this.exec(t,{timeout:Do,stdio:`pipe`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to clone marketplace: ${t}`)}}let r=(0,g.join)(n,`.claude-plugin`,`marketplace.json`);if(!this.fs.existsSync(r))throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(e.type===`local`?`Local directory does not contain .claude-plugin/marketplace.json`:`Cloned repository does not contain .claude-plugin/marketplace.json`);let i=this.readManifestFromPath(r).name;if(!i)throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(`Marketplace manifest does not contain a "name" field`);let a=Y(this.registryPath,this.fs);if(a[i])throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(`Marketplace "${i}" already exists`);let o=(0,g.join)(this.marketplacesDir,i);return this.fs.renameSync(n,o),a[i]={source:e,installLocation:o,lastUpdated:new Date().toISOString()},To(this.registryPath,a,this.fs),i}removeMarketplace(e){let t=Y(this.registryPath,this.fs),n=t[e];if(!n)throw Error(`Marketplace "${e}" not found`);Eo(this.pluginsDir,e,this.fs),this.fs.existsSync(n.installLocation)&&this.fs.rmSync(n.installLocation,{recursive:!0,force:!0}),delete t[e],To(this.registryPath,t,this.fs)}updateMarketplace(e){let t=Y(this.registryPath,this.fs),n=t[e];if(!n)throw Error(`Marketplace "${e}" not found`);if(!this.fs.existsSync(n.installLocation))throw Error(`Marketplace directory for "${e}" does not exist`);if(n.source.type===`local`){let e=n.source;if(!this.fs.existsSync(e.path))throw Error(`Local marketplace path does not exist: ${e.path}`);this.fs.rmSync(n.installLocation,{recursive:!0,force:!0}),this.fs.cpSync(e.path,n.installLocation,{recursive:!0})}else{let t=`git -C ${n.installLocation} pull`;try{this.exec(t,{timeout:Do,stdio:`pipe`})}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Failed to update marketplace "${e}": ${n}`)}}n.lastUpdated=new Date().toISOString(),To(this.registryPath,t,this.fs)}listMarketplaces(){let e=Y(this.registryPath,this.fs);return Object.entries(e).map(([e,t])=>({name:e,source:t.source,lastUpdated:t.lastUpdated}))}fetchManifest(e){let t=Y(this.registryPath,this.fs)[e];if(!t)throw Error(`Marketplace "${e}" not found`);let n=(0,g.join)(t.installLocation,`.claude-plugin`,`marketplace.json`);if(!this.fs.existsSync(n))throw Error(`Marketplace "${e}" does not contain .claude-plugin/marketplace.json`);return this.readManifestFromPath(n)}getMarketplaceDir(e){let t=Y(this.registryPath,this.fs)[e];if(!t)throw Error(`Marketplace "${e}" not found`);return t.installLocation}getMarketplaceSha(e){let t=this.getMarketplaceDir(e);try{return this.exec(`git -C ${t} rev-parse HEAD`,{timeout:Do,stdio:`pipe`}).toString().trim().slice(0,12)}catch{return`unknown`}}listAvailablePlugins(){let e=[],t=this.listMarketplaces();for(let{name:n}of t)try{let t=this.fetchManifest(n);for(let r of t.plugins)e.push({...r,marketplace:n})}catch{}return e}resolveCloneUrl(e){switch(e.type){case`github`:return`https://github.com/${e.repo}.git`;case`git`:return e.url;case`local`:throw Error(`Local source type does not use git cloning`);case`url`:throw Error(`URL marketplace source is not yet supported`)}}readManifestFromPath(e){let t=this.fs.readFileSync(e,`utf-8`),n=JSON.parse(t);if(typeof n!=`object`||!n)throw Error(`Invalid marketplace manifest: not an object`);if(typeof n.name!=`string`)throw Error(`Invalid marketplace manifest: missing "name" field`);return n}};function ko(e){let t=(0,g.join)((0,g.dirname)((0,g.dirname)(e.pluginDir)),`data`,e.manifest.name);return{CLAUDE_PLUGIN_ROOT:e.pluginDir,CLAUDE_PLUGIN_PATH:e.pluginDir,CLAUDE_PLUGIN_DATA:t}}function Ao(e,t){return Array.isArray(e.hooks)?{...e,hooks:e.hooks.map(e=>typeof e.command==`string`?{...e,command:e.command.replace(/\$\{CLAUDE_PLUGIN_ROOT\}/g,t)}:e)}:e}function jo(e){let t={};for(let n of e){let e=n.hooks;if(!e)continue;let r=ko(n),i=e.hooks??e;for(let[e,a]of Object.entries(i)){if(!Array.isArray(a))continue;t[e]||(t[e]=[]);let i=a.map(e=>{let t=Ao(e,n.pluginDir);return t.env=r,t});t[e].push(...i)}}return t}function Mo(e,t){if(Object.keys(t).length===0)return e;let n={};for(let[e,r]of Object.entries(t))n[e]=[...r];if(e)for(let[t,r]of Object.entries(e))Array.isArray(r)&&(n[t]||(n[t]=[]),n[t].push(...r));return n}async function No(e){let t=e.cwd,[n,r,i]=await Promise.all([e.config?Promise.resolve(e.config):Ra(t),e.bare?Promise.resolve({agentsMd:``,claudeMd:``,agentsFileEntries:[],claudeFileEntries:[]}):vo(t),e.bare?Promise.resolve({type:`unknown`,language:`unknown`}):Nr(t)]),a=e.language?{...n,language:e.language}:n,o=new Co((0,g.join)((0,_.homedir)(),`.robota`,`plugins`));if(!e.bare)try{let e=o.loadPluginsSync();if(e.length>0){let t=jo(e);a={...a,hooks:Mo(a.hooks,t)}}}catch{}let s=R(t);await Fo(e)||await Po(e,t);let c=e.resumeSessionId&&!e.forkSession?e.resumeSessionId:void 0,{session:l,rebuildSystemMessage:u}=sa({config:a,cwd:t,context:r,projectInfo:i,permissionMode:e.permissionMode,maxTurns:e.maxTurns,terminal:Yn,sessionLogger:new f.FileSessionLogger(s.logs),permissionHandler:e.permissionHandler,provider:e.provider,onTextDelta:e.onTextDelta,onContextUpdate:e.onContextUpdate,onCompactEvent:e.onCompactEvent,onToolExecution:e.onToolExecution,sessionId:c,allowedTools:e.allowedTools,deniedTools:e.deniedTools,model:e.model,appendSystemPrompt:e.appendSystemPrompt,...e.systemPrompt?{systemPromptBuilder:()=>e.systemPrompt}:{},backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,...e.commandModules?.some(e=>e.sessionRequirements?.includes(`agent-runtime`))?{enableAgentRuntime:!0}:{},...e.commandModules||e.commandDescriptors?{commandDescriptors:[...e.commandDescriptors??[],...e.commandModules?.flatMap(e=>e.commandDescriptors??[])??[]]}:{},modelCommandExecutor:e.modelCommandExecutor,isModelCommandInvocable:e.isModelCommandInvocable,editCheckpointRecorder:e.editCheckpointRecorder,reversibleExecution:e.reversibleExecution,sandboxClient:e.sandboxClient,agentName:e.agentName,...e.additionalTools?{additionalTools:e.additionalTools}:{},...e.responseFormat?{responseFormat:e.responseFormat}:{}});return{session:l,agentsFileEntries:r.agentsFileEntries??[],claudeFileEntries:r.claudeFileEntries??[],rebuildSystemMessage:u}}async function Po(e,t){if(e.workspaceManifest){if(!e.sandboxClient)throw Error(`workspaceManifest requires sandboxClient.`);await(0,u.applyWorkspaceManifest)(e.sandboxClient,e.workspaceManifest,{hostRoot:t,...e.sandboxWorkspaceRoot?{targetRoot:e.sandboxWorkspaceRoot}:{}})}}async function Fo(e){if(!e.sandboxSnapshotId)return!1;if(!e.sandboxClient?.restore)throw Error(`sandboxSnapshotId requires sandboxClient with restore().`);return await e.sandboxClient.restore(e.sandboxSnapshotId),!0}async function Io(e,t){let n=e.config??await Ra(e.cwd),r=n.autoCompactThreshold===void 0?`default`:`settings`,i=new z({cwd:e.cwd});t.setEditCheckpointStore(i);let a=await No({cwd:e.cwd,provider:e.provider,config:n,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:e.permissionHandler,resumeSessionId:t.resumeSessionId,forkSession:e.forkSession,onTextDelta:t.onTextDelta,onContextUpdate:t.onContextUpdate,onCompactEvent:t.onCompactEvent,onToolExecution:t.onToolExecution,bare:e.bare,allowedTools:e.allowedTools,deniedTools:e.deniedTools,model:e.model,appendSystemPrompt:e.appendSystemPrompt,...e.systemPrompt?{systemPrompt:e.systemPrompt}:{},language:e.language,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,...e.commandModules?{commandModules:e.commandModules}:{},editCheckpointRecorder:i,...e.reversibleExecution?{reversibleExecution:e.reversibleExecution}:{},...e.sandboxClient?{sandboxClient:e.sandboxClient}:{},...e.workspaceManifest?{workspaceManifest:e.workspaceManifest}:{},...e.sandboxWorkspaceRoot?{sandboxWorkspaceRoot:e.sandboxWorkspaceRoot}:{},...t.sandboxSnapshotId?{sandboxSnapshotId:t.sandboxSnapshotId}:{},...e.agentName?{agentName:e.agentName}:{},...e.additionalTools?{additionalTools:e.additionalTools}:{},...e.responseFormat?{responseFormat:e.responseFormat}:{},commandDescriptors:t.commandDescriptors,...t.commandDescriptors.length>0?{modelCommandExecutor:t.executeModelCommand,isModelCommandInvocable:t.isModelCommandInvocable}:{}});if(t.pendingRestoreMessages)for(let e of t.pendingRestoreMessages)Pr(a.session,e);return{session:a.session,agentsFileEntries:a.agentsFileEntries,claudeFileEntries:a.claudeFileEntries,rebuildSystemMessage:a.rebuildSystemMessage,autoCompactThresholdSource:r}}function Lo(e,t,n,r,i,a,o,s,c,l){try{let u=t.getSessionId(),d=e.load(u),f=l?.snapshotId??d?.sandboxSnapshotId;e.save(Ro({session:t,sessionId:u,sessionName:n??d?.name,cwd:r,history:i,createdAt:d?.createdAt,backgroundState:a,memoryState:o,skillActivationState:s,contextReferenceState:c,...f===void 0?{}:{sandboxSnapshotId:f}}))}catch{}}function Ro(e){return{id:e.sessionId,...e.sessionName===void 0?{}:{name:e.sessionName},cwd:e.cwd,createdAt:e.createdAt??new Date().toISOString(),updatedAt:new Date().toISOString(),messages:e.session.getHistory(),history:e.history,systemPrompt:e.session.getSystemMessage(),toolSchemas:e.session.getToolSchemas(),...e.sandboxSnapshotId===void 0?{}:{sandboxSnapshotId:e.sandboxSnapshotId},...zo(e.backgroundState),...Bo(e.memoryState),...Vo(e.skillActivationState),...Ho(e.contextReferenceState)}}function zo(e){return e?{backgroundTasks:[...e.tasks],backgroundTaskEvents:[...e.events],backgroundJobGroups:[...e.groups??[]],backgroundJobGroupEvents:[...e.groupEvents??[]]}:{}}function Bo(e){return e?{memoryEvents:[...e.events],usedMemoryReferences:[...e.usedReferences]}:{}}function Vo(e){return e?{skillActivationEvents:[...e.events]}:{}}function Ho(e){return e?{contextReferences:[...e.references]}:{}}function Uo(e){return e.source===`skill`||e.source===`plugin`&&e.skillContent?`skill`:`builtin-command`}function Wo(e){let t=e.source===`skill`||e.source===`plugin`&&!!e.skillContent;return{name:e.name,kind:Uo(e),description:e.description,userInvocable:e.userInvocable!==!1,modelInvocable:e.modelInvocable===!0||t&&e.disableModelInvocation!==!0,...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.safety?{safety:e.safety}:{}}}var Go=class{sources=[];addSource(e){this.sources.push(e)}replaceSource(e,t){this.sources=this.sources.filter(t=>t.name!==e),t!==void 0&&this.sources.push(t)}addModule(e){for(let t of e.commandSources??[])this.addSource(t)}getCommands(e){let t=[];for(let e of this.sources)t.push(...e.getCommands());if(!e)return t;let n=e.toLowerCase();return t.filter(e=>e.name.toLowerCase().startsWith(n))}resolveQualifiedName(e){let t=this.getCommands().filter(t=>t.source===`plugin`&&t.name.includes(`:`)&&t.name.endsWith(`:${e}`));return t.length===1?t[0].name:null}getSubcommands(e){let t=e.toLowerCase();for(let e of this.sources)for(let n of e.getCommands())if(n.name.toLowerCase()===t&&n.subcommands)return n.subcommands;return[]}getCapabilityDescriptors(){return this.getCommands().map(e=>Wo(e))}},Ko=class{commands;constructor(e){this.commands=new Map;for(let t of e??qo())this.commands.set(t.name,t)}register(e){this.commands.set(e.name,e)}async execute(e,t,n){let r=this.getCommand(e);return r?await this.executeCommand(r,t,n):null}getCommand(e){return this.commands.get(e)}resolveRequiresPermission(e){return e.requiresPermission===void 0?e.safety!==`read-only`:e.requiresPermission}async executeCommand(e,t,n){return await e.execute(t,n)}listCommands(){return[...this.commands.values()]}listModelInvocableCommands(){return this.listCommands().filter(e=>e.modelInvocable===!0).map(e=>({name:e.name,kind:`builtin-command`,description:e.description,userInvocable:e.userInvocable!==!1,modelInvocable:!0,...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.safety?{safety:e.safety}:{},requiresPermission:this.resolveRequiresPermission(e)}))}isModelInvocable(e){return this.commands.get(e)?.modelInvocable===!0}async executeModelInvocable(e,t,n){return this.isModelInvocable(e)?this.execute(e,t,n):null}hasCommand(e){return this.commands.has(e)}};function qo(){return[]}function Jo(e){return{name:e.name,description:e.description,source:`builtin`,...e.subcommands?{subcommands:[...e.subcommands]}:{},...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.modelInvocable===void 0?{}:{modelInvocable:e.modelInvocable},...e.userInvocable===void 0?{}:{userInvocable:e.userInvocable},...e.safety?{safety:e.safety}:{}}}var Yo=class{name=`builtin`;commands;constructor(e=qo()){this.commands=e.map(Jo)}getCommands(){return this.commands}};function Xo(){let e=qo();return{name:`sdk-builtin`,commandSources:[new Yo(e)],systemCommands:e}}function Zo(e,t,n){return{...e,providers:{...e.providers??{},[t]:n}}}function Qo(e,t){if(!e.providers?.[t])throw Error(`Provider profile "${t}" was not found`);return{...e,currentProvider:t}}function $o(e,t,n={}){if(!e.providers?.[t])throw Error(`Provider profile "${t}" was not found`);let r={...e.providers};if(delete r[t],n.replacementCurrentProvider!==void 0&&r[n.replacementCurrentProvider]===void 0)throw Error(`Provider profile "${n.replacementCurrentProvider}" was not found`);let i={...e,providers:r};if(e.currentProvider!==t)return i;if(n.replacementCurrentProvider!==void 0)return{...i,currentProvider:n.replacementCurrentProvider};let a={...i};return delete a.currentProvider,a}function es(e,t,n={}){if(!t.type)throw Error(`Provider profile "${e}" is missing type`);if(!t.model)throw Error(`Provider profile "${e}" is missing model`);let r=(0,c.findProviderDefinition)(n.providerDefinitions??[],t.type),i=(0,c.getProviderCredentialRequirement)(r);if(i!==void 0&&!as(t,r?.defaults,i))throw Error(`Provider profile "${e}" is missing ${ss(i)}`)}function ts(e,t={}){let n=ns(e,t);return es(e.profile,n,t),{...e.setCurrent&&{currentProvider:e.profile},providers:{[e.profile]:n}}}function ns(e,t={}){let n=is(e.type,t.providerDefinitions??[]);e.apiKey!==void 0&&e.apiKeyEnv===void 0&&console.warn(`API key stored as plain text in settings. Use --api-key-env for better security.`);let r=e.apiKeyEnv===void 0?e.apiKey??n.apiKey:(0,c.formatEnvReference)(e.apiKeyEnv),i=e.baseURL??n.baseURL;return{type:e.type,model:e.model??n.model,...cs(r)&&{apiKey:r},...i!==void 0&&{baseURL:i},...e.timeout!==void 0&&{timeout:e.timeout}}}function rs(e,t){let[n,r]=Object.entries(t.providers)[0]??[];if(!n||!r)return e;let i=Zo(e,n,r);return t.currentProvider?Qo(i,t.currentProvider):i}function is(e,t){return(0,c.findProviderDefinition)(t,e)?.defaults??{}}function as(e,t,n){return n.anyOf.some(n=>(0,c.hasUsableSecretReference)(os(n,e,t)))}function os(e,t,n){return t[e]??n?.[e]}function ss(e){return e.anyOf.join(` or `)}function cs(e){return e!==void 0&&e.length>0}async function ls(e,t,n,r){let i=n??e;if(!i)return{message:`No provider profile selected.`,success:!1};let a=t?.[i];if(!a)return{message:`Provider profile "${i}" was not found.`,success:!1};try{es(i,a,{providerDefinitions:r.providerDefinitions})}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}let o=await((a.type?(0,c.findProviderDefinition)(r.providerDefinitions,a.type):void 0)?.probeProfile??us)(a);return{message:o.ok?`Provider "${i}" test passed: ${o.message}`:`Provider "${i}" test failed: ${o.message}; manual configuration can continue.`,success:!0,data:{providerTest:{profile:i}}}}async function us(e){return{ok:!0,message:`Profile fields are valid; no endpoint probe configured.`}}function ds(e,t=[]){return fs(e,t)?`valid`:`incomplete`}function fs(e,t){if(typeof e.currentProvider==`string`){let n=e.providers?.[e.currentProvider];return ps(n?.type,n,t)}return!!(e.provider&&ps(e.provider.name,e.provider,t))}function ps(e,t,n){if(!t)return!1;if(!e)return(0,c.hasUsableSecretReference)(t.apiKey);let r=(0,c.findProviderDefinition)(n,e);if(r===void 0)return!1;let i=(0,c.getProviderCredentialRequirement)(r);return i===void 0?!0:ms(t,r,i)}function ms(e,t,n){return n.anyOf.some(n=>(0,c.hasUsableSecretReference)(hs(n,e,t)))}function hs(e,t,n){return t[e]??n.defaults?.[e]}function gs(e,t=[]){if(!(0,m.existsSync)(e))return`missing`;try{let n=(0,m.readFileSync)(e,`utf8`).trim();return n.length===0?`incomplete`:ds(JSON.parse(n),t)}catch{return`corrupt`}}function _s(e,t=new N){return e.reduce((e,n)=>{let r=vs(n,t);return r===void 0?e:ys(e,r)},{})}function vs(e,t){if(t.existsSync(e))try{let n=t.readFileSync(e,`utf8`);return JSON.parse(n)}catch{return}}function ys(e,t){return{...e,...t,provider:e.provider!==void 0||t.provider!==void 0?{...e.provider,...t.provider}:void 0,providers:e.providers!==void 0||t.providers!==void 0?bs(e.providers,t.providers):void 0}}function bs(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]={...n[e],...r};return n}function xs(e,t,n){let r=t??e.currentProvider;if(r!==void 0){let t=e.providers?.[r];if(t===void 0)throw Error(`Provider profile "${r}" was not found in providers`);if(!t.type)throw Error(`Provider profile "${r}" is missing type`);return(0,l.normalizeProviderConfig)({name:t.type,model:t.model,apiKey:t.apiKey,baseURL:t.baseURL,timeout:t.timeout,options:t.options},n)}let i=e.provider;if(i?.name)return(0,l.normalizeProviderConfig)({name:i.name,model:i.model,apiKey:i.apiKey,baseURL:i.baseURL,timeout:i.timeout,options:i.options},n)}function Ss(){return process.env.HOME??process.env.USERPROFILE??`/`}function Cs(e){let t=Ss();return[(0,g.join)(t,`.robota`,`settings.json`),(0,g.join)(t,`.claude`,`settings.json`),(0,g.join)(e,`.robota`,`settings.json`),(0,g.join)(e,`.robota`,`settings.local.json`),(0,g.join)(e,`.claude`,`settings.json`),(0,g.join)(e,`.claude`,`settings.local.json`)]}function ws(e,t={}){let n=t.settingsPaths??Cs(e),r=As(n)??n[0];if(r===void 0)throw Error(`No settings path available for provider update`);return r}function X(e){return W(e)}function Ts(e,t,n={}){let r=rs(X(e),ts(t,n));return G(e,r),r}function Es(e,t,n={}){let r=X(e),i=r.providers?.[t]!==void 0,a=n.knownProviders?.[t]!==void 0,o=i||a?{...r,currentProvider:t}:Qo(r,t);return G(e,o),o}function Ds(e,t,n={}){let r=n.settingsPaths??Cs(e),i=_s(r),a=n.providerOverride??i.currentProvider;if(typeof a!=`string`)throw Error(`Cannot update model: no active provider profile. Set "currentProvider" in settings.`);return Os(r,a,t)}function Os(e,t,n){let r=ks(e,t)??e[0];if(r===void 0)throw Error(`No settings path available for model update`);let i=X(r),a=i.providers??{},o=a[t]??{},s={...i,providers:{...a,[t]:{...o,model:n}}};return G(r,s),{settingsPath:r,settings:s,profileName:t}}function ks(e,t){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r!==void 0&&X(r).providers?.[t]!==void 0)return r}}function As(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&X(n).currentProvider!==void 0)return n}}function js(e){return _s(Cs(e))}function Ms(e,t={}){let n=xs(js(e),t.providerOverride,t.providerDefinitions??[]);if(n!==void 0)return n;throw Error("No provider configuration found. Run `robota` to set up.")}function Ns(e,t,n={}){let r=n.providerDefinitions??[],i=Ms(e,{...n,providerDefinitions:r}),a=t??i.model;return(0,l.createProviderFromConfig)({...i,model:a},r)}var Ps=class{name=`plugin`;plugins;constructor(e){this.plugins=e}getCommands(){let e=[];for(let t of this.plugins){for(let n of t.skills){let r=n.name.includes(`@`)?n.name.split(`@`)[0]:n.name;e.push({name:r,description:`(${t.manifest.name}) ${n.description}`,source:`plugin`,skillContent:n.skillContent,pluginDir:t.pluginDir})}for(let n of t.commands)e.push({name:n.name,description:n.description,source:`plugin`,skillContent:n.skillContent,pluginDir:t.pluginDir})}return e}};const Fs=f.AUTO_COMPACT_THRESHOLD,Is=`autoCompactThreshold`;function Ls(e){return e.getContextState()}function Rs(e){return e.getAutoCompactThreshold()}function zs(e){return e.getAutoCompactThresholdSource?.()??`session`}function Bs(e,t,n){if(e.setAutoCompactThreshold){e.setAutoCompactThreshold(t,n);return}let r=e.getSession();if(!r.setAutoCompactThreshold)throw Error(`Command host does not support changing auto-compact threshold.`);r.setAutoCompactThreshold(t)}function Vs(e,t){let n=Js(e);return n?(n.write({...n.read(),[Is]:t}),!0):!1}function Hs(e){let t=Js(e);if(!t)return!1;let n={...t.read()};return delete n[Is],t.write(n),!0}async function Us(e,t){let n=Ls(e),r=e.getSession().getMessageCount();return await e.compactContext(t),{before:n,after:Ls(e),beforeMessageCount:r,afterMessageCount:e.getSession().getMessageCount()}}function Ws(e){return e.listContextReferences?.()??[]}async function Gs(e,t){return e.addContextReference?e.addContextReference(t):{evicted:[],diagnostics:[`Command host does not support context reference additions.`]}}function Ks(e,t){return e.removeContextReference?.(t)??{}}function qs(e){return e.clearContextReferences?.()??{removed:[]}}function Js(e){return e.getCommandHostAdapters?.().settings}function Ys(e,t={}){let n=Xs(e.type)??`provider`,r=new Set(t.existingProfileNames??[]);if(!r.has(n))return n;let i=2;for(;r.has(`${n}-${i}`);)i+=1;return`${n}-${i}`}function Xs(e){let t=e?.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return t!==void 0&&t.length>0?t:void 0}function Zs(e){return e.listCommands?.()??[]}function Qs(e){return[`Available commands:`,...Zs(e).flatMap(e=>{let t=e.displayName??e.name,n=`/${e.name}`,r=` ${(e.displayName?`${t} (${n})`:n).padEnd(32)} — ${e.description}`;return e.example?[r,` Example: ${e.example}`]:[r]})].join(`
96
- `)}function $s(){return[{name:`list`,description:`List background tasks`,source:`background`},{name:`read`,description:`Read a background task log page`,source:`background`},{name:`cancel`,description:`Cancel a running background task`,source:`background`},{name:`close`,description:`Dismiss a terminal background task`,source:`background`}]}function ec(e){let t=e.promptPreview??e.commandPreview??``,n=e.unread?` unread`:``,r=e.currentAction?` (${e.currentAction})`:``,i=e.timeoutReason?` timeout=${e.timeoutReason}`:``,a=e.lastActivityAt?` lastActivityAt=${e.lastActivityAt}`:``,o=rc(e),s=t?` — ${t}`:``;return`${e.id} [${e.status}${n}${i}${a}${o}] ${e.kind}:${e.label}${r}${s}`}function tc(e){return e.length===0?`No background tasks.`:[`Background tasks:`,...e.map(e=>` ${ec(e)}`)].join(`
97
- `)}function nc(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isNaN(t)?void 0:{offset:t}}function rc(e){let t=[];return e.worktreePath&&t.push(`worktree=${e.worktreePath}`),e.branchName&&t.push(`branch=${e.branchName}`),e.worktreeStatus&&t.push(`worktreeStatus="${ic(e.worktreeStatus)}"`),e.worktreeNextAction&&t.push(`next="${ic(e.worktreeNextAction)}"`),t.length===0?``:` ${t.join(` `)}`}function ic(e){let t=e.trim().replace(/\s+/g,` `);return t.length>160?`${t.slice(0,160)}...`:t}function ac(e,t){return e.listBackgroundTasks(t)}function oc(e,t,n){return e.readBackgroundTaskLog(t,n)}function sc(e,t,n){return e.cancelBackgroundTask(t,n)}function cc(e,t){return e.closeBackgroundTask(t)}const lc=[{code:`ko`,description:`Korean`},{code:`en`,description:`English`},{code:`ja`,description:`Japanese`},{code:`zh`,description:`Chinese`}];function uc(e=`language`){return lc.map(t=>({name:t.code,description:t.description,source:e}))}function dc(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function fc(e=`language`){return`Usage: ${e} <code> (e.g., ko, en, ja, zh)`}const pc=[`plan`,`default`,`acceptEdits`,`bypassPermissions`];function mc(e=`mode`){return[{name:`plan`,description:`Plan only, no execution`,source:e},{name:`default`,description:`Ask before risky actions`,source:e},{name:`acceptEdits`,description:`Auto-approve file edits`,source:e},{name:`bypassPermissions`,description:`Skip all permission checks`,source:e}]}function hc(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function gc(e){return pc.includes(e)}function _c(){return`Invalid mode. Valid: ${pc.join(` | `)}`}function vc(e){let t=e.getCommandHostAdapters?.().permissionMode;if(t!==void 0)return t;let n=e.getSession();return{getPermissionMode:()=>n.getPermissionMode(),setPermissionMode:e=>n.setPermissionMode(e),listSessionAllowedTools:()=>n.getSessionAllowedTools()}}function yc(e){return vc(e).getPermissionMode()}function bc(e,t){vc(e).setPermissionMode(t)}function xc(e){return vc(e).listSessionAllowedTools()}function Sc(e){return{mode:yc(e),sessionAllowed:xc(e)}}function Cc(e){let t=[`Permission mode: ${e.mode}`];return e.sessionAllowed.length>0?t.push(`Session-approved tools: ${e.sessionAllowed.join(`, `)}`):t.push(`No session-approved tools.`),t.join(`
98
- `)}const wc={enabled:!0,gitBranch:!0};function Tc(e=`statusline`){return[{name:`on`,description:`Show the status line`,source:e},{name:`off`,description:`Hide the status line`,source:e},{name:`reset`,description:`Restore default status-line fields`,source:e},{name:`git`,description:`Show or hide git branch field`,source:e}]}function Ec(e){return(e.enabled===void 0||typeof e.enabled==`boolean`)&&(e.gitBranch===void 0||typeof e.gitBranch==`boolean`)}function Dc(e){let t=e.statusline;return kc(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:wc.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:wc.gitBranch}:{...wc}}function Oc(e,t){let n=W(e),r={...Dc(n),...t};return n.statusline=r,G(e,n),r}function kc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Ac(){return{type:`plugin-tui-requested`}}function jc(){return{type:`plugin-registry-reload-requested`}}function Mc(e){return e.getCommandHostAdapters?.().plugin}function Nc(){return[{name:`manage`,description:`Open plugin manager`,source:`plugin-manager`},{name:`install`,description:`Install a plugin`,source:`plugin-manager`},{name:`uninstall`,description:`Uninstall a plugin`,source:`plugin-manager`},{name:`enable`,description:`Enable a plugin`,source:`plugin-manager`},{name:`disable`,description:`Disable a plugin`,source:`plugin-manager`},{name:`marketplace`,description:`Manage plugin marketplaces`,source:`plugin-manager`,subcommands:[{name:`add`,description:`Add marketplace source`,source:`plugin-manager`},{name:`remove`,description:`Remove marketplace source`,source:`plugin-manager`},{name:`update`,description:`Update marketplace source`,source:`plugin-manager`},{name:`list`,description:`List marketplace sources`,source:`plugin-manager`}]}]}function Pc(e){if(e.clearConversationHistory!==void 0){e.clearConversationHistory();return}e.getSession().clearHistory()}function Fc(e){let t=e.trim();return t.length>0?t:void 0}function Ic(e){return{type:`session-renamed`,name:e}}function Lc(){return{type:`session-picker-requested`}}function Rc(){return{type:`session-exit-requested`}}function zc(e){let t=e.getSession();return{sessionId:t.getSessionId(),messageCount:t.getMessageCount()}}function Bc(e){let t=e.validateCurrentSessionReplayLog?.();if(t!==void 0)return t;let n=e.getSession().getSessionId(),r=(0,g.join)(R(e.getCwd()).logs,`${n}.jsonl`),i=(0,f.loadSessionLogEntries)(r);return{logFile:r,entryCount:i.length,validation:(0,f.validateSessionReplayLogEntries)(i)}}function Vc(e){let t=e.validation.ok?`Session replay log is valid.`:`Session replay log has ${e.validation.issues.length} issue(s).`,n=[`Log: ${e.logFile}`,`Entries: ${e.entryCount}`];if(e.validation.ok)return[t,...n].join(`
99
- `);let r=e.validation.issues.map((e,t)=>{let n=Hc(e);return`${t+1}. ${e.code}${n}: ${e.message}`});return[t,...n,``,...r].join(`
100
- `)}function Hc(e){let t=[];return e.executionId!==void 0&&t.push(`execution=${e.executionId}`),e.round!==void 0&&t.push(`round=${e.round}`),e.toolCallId!==void 0&&t.push(`tool=${e.toolCallId}`),t.length>0?` (${t.join(`, `)})`:``}function Uc(e=`rewind`){return[{name:`list`,description:`List edit checkpoints`,source:e},{name:`inspect`,description:`Inspect captured files and restore plans`,source:e},{name:`restore`,description:`Restore code to a checkpoint`,source:e},{name:`code`,description:`Restore code to a checkpoint`,source:e},{name:`rollback`,description:`Rollback code through a checkpoint`,source:e}]}function Wc(e){return e.listEditCheckpoints()}function Gc(e,t){if(!e.inspectEditCheckpoint)throw Error(`Checkpoint inspection is not available in this command host.`);return e.inspectEditCheckpoint(t)}function Kc(e,t){return e.restoreEditCheckpoint(t)}function qc(e,t){return e.rollbackEditCheckpoint(t)}const Jc=[/\b(api[_-]?key|secret|token|password|private key)\b/i,/\b\d{3}-\d{2}-\d{4}\b/,/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/,/주민등록|비밀번호|시크릿|토큰/u];function Yc(e){return Jc.some(t=>t.test(e))}function Xc(e){return(0,g.join)(e,`.robota`,`memory`)}function Zc(){return{version:1,records:[]}}var Qc=class{fs;path;now;constructor(e,t=()=>new Date,n=new N){this.fs=n,this.path=(0,g.join)(Xc(e),`pending.json`),this.now=t}getPath(){return this.path}list(e){let t=this.read().records;return e?t.filter(t=>t.status===e):t}get(e){return this.read().records.find(t=>t.id===e)}upsert(e,t,n){let r=this.read(),i=this.now().toISOString(),a=r.records.findIndex(t=>t.id===e.id),o={...e,status:t,updatedAt:i,decisionReason:n};a>=0?r.records[a]={...r.records[a],...o}:r.records.push(o),this.write(r)}mark(e,t,n){let r=this.read(),i=r.records.findIndex(t=>t.id===e);if(i<0)throw Error(`Memory candidate not found: ${e}`);let a={...r.records[i],status:t,updatedAt:this.now().toISOString(),decisionReason:n};return r.records[i]=a,this.write(r),a}read(){if(!this.fs.existsSync(this.path))return Zc();try{return{version:1,records:JSON.parse(this.fs.readFileSync(this.path,`utf8`)).records??[]}}catch{return Zc()}}write(e){this.fs.mkdirSync((0,g.dirname)(this.path),{recursive:!0}),this.fs.writeFileSync(this.path,JSON.stringify(e,null,2),`utf8`)}};function $c(e=`memory`){return[{name:`list`,description:`List project memory topics`,source:e},{name:`show`,description:`Show project memory index or a topic`,source:e},{name:`add`,description:`Save durable project memory`,source:e},{name:`pending`,description:`List pending memory candidates`,source:e},{name:`approve`,description:`Approve a pending memory candidate`,source:e},{name:`reject`,description:`Reject a pending memory candidate`,source:e},{name:`used`,description:`Show memory references used in the current turn`,source:e}]}function el(e,t){return new ho(e,t)}function tl(e,t){return new Qc(e,t)}function nl(e,t){let n=e.getCwd();return{project:el(n,t),pending:tl(n,t)}}function rl(e){return so(e)}function il(e){return Yc(e)}function al(e){return e.getUsedMemoryReferences()}function ol(e,t,n=()=>new Date){e.recordMemoryEvent({...t,at:n().toISOString()})}function sl(e,t,n){let r=t?t.split(/\s+/):[],i=e;return i=i.replace(/\$ARGUMENTS\[(\d+)]/g,(e,t)=>r[Number(t)]??``),i=i.replace(/\$ARGUMENTS/g,t),i=i.replace(/\$(\d)(?!\d|\w|\[)/g,(e,t)=>r[Number(t)]??``),i=i.replace(/\$\{CLAUDE_SESSION_ID}/g,n?.sessionId??``),i=i.replace(/\$\{CLAUDE_SKILL_DIR}/g,n?.skillDir??``),i}async function cl(e,t){let n=/!`([^`]+)`/g;if(!n.test(e))return e;n.lastIndex=0;let r=e,i,a=[];for(;(i=n.exec(e))!==null;)a.push({full:i[0],command:i[1]});for(let{full:e,command:n}of a){let i=``;if(t)try{i=t(n)}catch{i=``}r=r.replace(e,i)}return r}async function ll(e,t,n,r){return e.skillContent?sl(await cl(e.skillContent,n.shellExec),t,r):null}async function ul(e,t,n,r){let i=await ll(e,t,n,r);if(i){let n=t||e.description;return`<skill name="${e.name}">\n${i}\n</skill>\n\nExecute the "${e.name}" skill: ${n}`}return`Use the "${e.name}" skill: ${t||e.description}`}async function dl(e,t,n,r){if(e.context===`fork`){if(!n.runInFork)throw Error(`Fork execution is not available. Agent runtime deps may not be initialized.`);let i=await ll(e,t,n,r)??`Use the "${e.name}" skill: ${t||e.description}`,a={};return e.agent&&(a.agent=e.agent),e.allowedTools&&(a.allowedTools=e.allowedTools),{mode:`fork`,result:await n.runInFork(i,a)}}return{mode:`inject`,prompt:await ul(e,t,n,r)}}function fl(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function pl(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function ml(e,t){let n=t.trim();return n.length>0?`${e} ${n}`:e}function hl(e){if(!e?.startsWith(`/`))return;let t=e.slice(1).trim().split(/\s+/)[0];return t&&t.length>0?t:void 0}var gl=class{getSession;getSessionId;onSubmit;onApplyResult;recordSkillActivation;runSkillInFork;onForkSkill;onBlockingCommand;shellExec;commandExecutor;skillCommandSource;commandHostAdapters;commandInvocationSource=`user`;constructor(e,t,n,r,i,a,o,s,c,l,u,d){this.getSession=r,this.getSessionId=i,this.onSubmit=a,this.onApplyResult=o,this.recordSkillActivation=s,this.runSkillInFork=c,this.onForkSkill=l,this.onBlockingCommand=u,this.shellExec=d,this.commandExecutor=new Ko(e.flatMap(e=>e.systemCommands??[])),this.skillCommandSource=new Fi(t),this.commandHostAdapters=n}getCommandInvocationSource(){return this.commandInvocationSource}getCommandHostAdapters(){return this.commandHostAdapters??{}}listCommands(){return this.commandExecutor.listCommands().map(e=>({name:e.name,...e.displayName===void 0?{}:{displayName:e.displayName},description:e.description,...e.example===void 0?{}:{example:e.example}}))}listSkills(){return this.skillCommandSource.getCommands().map(e=>({name:e.name,description:e.description,source:e.source,modelInvocable:e.disableModelInvocation!==!0,userInvocable:e.userInvocable!==!1,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint},...e.context===void 0?{}:{context:e.context},...e.agent===void 0?{}:{agent:e.agent}}))}listModelInvocableCommands(){return this.commandExecutor.listModelInvocableCommands().map(e=>({name:e.name,description:e.description}))}findSkillCommand(e){let t=fl(e);return this.skillCommandSource.getCommands().find(e=>e.name.toLowerCase()===t.toLowerCase())}async executeCommand(e,t){let n=pl(e),r=this.commandExecutor.getCommand(n),i=t.trim();if(!r){let e=this.findSkillCommand(n),t=this.commandExecutor.getCommand(`skills`);return!e||!t?null:this.executeCommandWithSource(`user`,t,ml(e.name,i))}return this.executeCommandWithSource(`user`,r,i)}async executeCommandWithSource(e,t,n){let r=this.commandInvocationSource;this.commandInvocationSource=e;try{return t.lifecycle===`blocking`?this.onBlockingCommand(()=>this.executeForegroundCommand(t,n)):await this.commandExecutor.executeCommand(t,this.getSession(),n)}finally{this.commandInvocationSource=r}}async executeModelCommand(e,t){let n=this.commandInvocationSource;this.commandInvocationSource=`model`;try{return await this.commandExecutor.executeModelInvocable(e,this.getSession(),t)}finally{this.commandInvocationSource=n}}async executeSkillCommandByName(e,t,n){let r=this.findSkillCommand(e);if(!r)return null;if(n.invocationSource===`model`){if(r.disableModelInvocation===!0)return{success:!1,message:`Skill is not model-invocable: ${r.name}`};let e=await this.executeSkillWithActivation(r,t,`model-tool`);return{success:!0,message:`Skill activated: ${r.name}`,data:{skill:r.name,mode:e.mode,...e.prompt===void 0?{}:{prompt:e.prompt},...e.result===void 0?{}:{result:e.result}}}}return await this.executeUserResolvedSkillCommand(r,t,n.displayInput,n.rawInput,`user-slash`),{success:!0,message:``,data:{skill:r.name,sessionExecution:!0},effects:[{type:`session-execution-started`}]}}async executeUserResolvedSkillCommand(e,t,n,r,i){if(e.userInvocable===!1)throw Error(`Skill is not user-invocable: ${e.name}`);let a=hl(r);if(e.context===`fork`)return this.onForkSkill(e,t,n,a,i);let o=await this.executeSkillWithActivation(e,t,i,a);return o.mode===`inject`?(o.prompt&&await this.onSubmit(o.prompt,n,r),o):(await this.onApplyResult(o.result??`(empty response)`),o)}async executeSkillWithActivation(e,t,n,r){this.emitSkillActivation(e,n,`started`,r);try{let i=await dl(e,t,{runInFork:(e,t)=>this.runSkillInFork(e,t),...this.shellExec?{shellExec:this.shellExec}:{}},{sessionId:this.getSessionId()});return this.emitSkillActivation(e,n,`completed`,r,{appendHistory:!1}),i}catch(t){let i=t instanceof Error?t:Error(String(t));throw this.emitSkillActivation(e,n,`failed`,r,{error:i.message}),i}}emitSkillActivation(e,t,n,r,i={}){let a=Or({skill:e,invocation:t,status:n,...r===void 0?{}:{qualifiedName:r},...i.error===void 0?{}:{error:i.error}});this.recordSkillActivation(a,i.appendHistory??n!==`completed`)}async executeForegroundCommand(e,t){try{return await this.commandExecutor.executeCommand(e,this.getSession(),t)}catch(e){return{success:!1,message:`Error: ${e instanceof Error?e.message:String(e)}`}}}};function _l(){let e=(0,g.join)((0,_.homedir)(),`.robota`,`org-policy.json`);if(!(0,m.existsSync)(e))return null;try{let t=(0,m.readFileSync)(e,`utf8`);return JSON.parse(t)}catch{return null}}function vl(e,t){return`${e}${t?`\nContact your administrator: ${t}`:``}`}function yl(e){return e?!e.startsWith(`$ENV:`):!1}var bl=class extends Jt{session=null;listeners=new Map;initialized=!1;initPromise=null;sessionStore;sessionName;cwd;pendingRestoreMessages=null;resumeSessionId;forkSession;autoCompactThresholdSource=`default`;shutdownPromise=null;sandboxClient;sandboxSnapshotId;agentsFileEntries=[];claudeFileEntries=[];rebuildSystemMessage=null;providerDefinitions=[];orgPolicy=null;bgTracker;histTracker;skillRouter;execCtrl;constructor(e){super(),this.sessionStore=e.sessionStore,this.sessionName=e.sessionName,this.cwd=(`cwd`in e?e.cwd:void 0)??``,this.resumeSessionId=e.resumeSessionId,this.forkSession=e.forkSession??!1,this.sandboxClient=`sandboxClient`in e?e.sandboxClient:void 0,this.sandboxSnapshotId=`sandboxSnapshotId`in e?e.sandboxSnapshotId:void 0;let t=this.cwd,n=null;`session`in e&&e.session&&t&&(n=new z({cwd:t})),this.bgTracker=new Pt(()=>this.getBackgroundTaskManager(),(e,t)=>this.execCtrl.emitExecutionWorkspaceUpdated(e,t),e=>this.emit(`background_task_event`,e),e=>this.emit(`background_job_group_event`,e),()=>this.persistCurrentSession()),this.histTracker=new Ar(t,()=>this.getSessionOrThrow().getSessionId(),()=>this.execCtrl.executing,()=>this.persistCurrentSession(),e=>this.emit(`skill_activation`,e),n);let r=[...`commandModules`in e?e.commandModules??[]:[]],i=`commandHostAdapters`in e?e.commandHostAdapters:void 0,a=`shellExec`in e?e.shellExec:void 0;this.skillRouter=new gl(r,t,i,()=>this,()=>this.session?.getSessionId()??``,(e,t,n)=>this.submit(e,t,n),e=>this.execCtrl.applyForkSkillResult(e),(e,t)=>this.histTracker.recordSkillActivationEvent(e,t),(e,t)=>ur(e,t,this.getSessionOrThrow()),(e,t,n,r,i)=>this.execCtrl.executeForkSkillCommand(e,t,n,r,i,(e,t,n)=>this.submit(e,t,n)),e=>this.execCtrl.executeForegroundCommand(e,(e,t,n)=>this.submit(e,t,n)),a),this.execCtrl=new cr(this.histTracker,this.skillRouter,{getSession:()=>this.session,getSessionOrThrow:()=>this.getSessionOrThrow(),getCwd:()=>this.getCwd(),getContextState:()=>this.getContextState(),getExecutionWorkspaceSnapshot:()=>this.getExecutionWorkspaceSnapshot(),emit:(e,...t)=>this.emit(e,...t),persistSession:()=>this.persistCurrentSession()}),`providerDefinitions`in e&&(this.providerDefinitions=e.providerDefinitions??[]),`orgPolicy`in e&&(this.orgPolicy=e.orgPolicy??null);let o=this.configureInjectedSession(e);this.restoreSessionRecordIfNeeded(e),this.startAsyncInitializationIfNeeded(e,o),this.initialized&&this.bgTracker.subscribe(this.session),this.initialized&&this.persistCurrentSession()}configureInjectedSession(e){return`session`in e&&e.session?(this.session=e.session,this.autoCompactThresholdSource=`session`,this.initialized=!0,!0):!1}restoreSessionRecordIfNeeded(e){if(!e.resumeSessionId||!this.sessionStore)return;let t=Fr(this.sessionStore,e.resumeSessionId,this.forkSession,this.session);this.histTracker.restoreState({history:t.history,memoryEvents:t.memoryEvents,usedMemoryReferences:t.usedMemoryReferences,contextReferences:t.contextReferences,skillActivationEvents:t.skillActivationEvents}),t.sessionName&&(this.sessionName=t.sessionName),this.bgTracker.restoreState({tasks:t.backgroundTasks,taskEvents:t.backgroundTaskEvents,groups:t.backgroundJobGroups,groupEvents:t.backgroundJobGroupEvents}),this.pendingRestoreMessages=t.pendingRestoreMessages,this.sandboxSnapshotId=this.forkSession?void 0:t.sandboxSnapshotId}startAsyncInitializationIfNeeded(e,t){if(t)return;let n=e;this.initPromise=this.initializeAsync(n)}async initializeAsync(e){let t=await Io(e,{sandboxSnapshotId:this.sandboxSnapshotId,resumeSessionId:this.resumeSessionId,pendingRestoreMessages:this.pendingRestoreMessages,onTextDelta:e=>this.execCtrl.handleTextDelta(e),onContextUpdate:e=>this.emit(`context_update`,e),onCompactEvent:e=>this.execCtrl.handleCompactEvent(e),onToolExecution:e=>this.execCtrl.handleToolExecution(e),executeModelCommand:(e,t)=>this.executeModelCommand(e,t),isModelCommandInvocable:e=>this.skillRouter.commandExecutor.isModelInvocable(e),commandDescriptors:this.skillRouter.commandExecutor.listModelInvocableCommands(),setEditCheckpointStore:e=>this.histTracker.setEditCheckpointStore(e)});this.session=t.session,this.agentsFileEntries=t.agentsFileEntries,this.claudeFileEntries=t.claudeFileEntries,this.rebuildSystemMessage=t.rebuildSystemMessage,this.autoCompactThresholdSource=t.autoCompactThresholdSource,this.histTracker.recordSystemContextFiles([...t.agentsFileEntries,...t.claudeFileEntries]),this.pendingRestoreMessages=null,this.initialized=!0,this.bgTracker.subscribe(this.session),this.persistCurrentSession()}async ensureInitialized(){!this.initialized&&this.initPromise&&await this.initPromise}getSessionOrThrow(){if(!this.session)throw Error(`InteractiveSession not initialized. Call submit() or await initialization.`);return this.session}getCwd(){if(!this.cwd)throw Error(`cwd is not set — provide cwd in session options`);return this.cwd}get sessionId(){return this.session?.getSessionId()??``}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.get(e)?.delete(t)}emit(e,...t){let n=this.listeners.get(e);if(n)for(let e of n)e(...t)}async submit(e,t,n){if(await this.ensureInitialized(),this.execCtrl.shuttingDown)throw Error(`Interactive session is shutting down.`);if(this.execCtrl.executing){this.execCtrl.pendingPrompt=e,this.execCtrl.pendingDisplayInput=t,this.execCtrl.pendingRawInput=n;return}await this.execCtrl.executePrompt(e,t,n,this.agentsFileEntries,this.claudeFileEntries,this.rebuildSystemMessage,(e,t)=>{this.agentsFileEntries=e,this.claudeFileEntries=t,this.histTracker.recordSystemContextFiles([...e,...t])},(e,t,n)=>this.submit(e,t,n))}abort(){this.execCtrl.clearPendingQueue(),this.session?.abort()}shutdown(e={}){return this.shutdownPromise?this.shutdownPromise:(this.execCtrl.shuttingDown=!0,this.shutdownPromise=(async()=>{await this.ensureInitialized(),this.execCtrl.clearPendingQueue();let t=this.session;t?.abort(),await this.getBackgroundTaskManager()?.shutdown(e.message??`Session shutdown`),this.bgTracker.dispose(),await this.captureSandboxSnapshot(),this.persistCurrentSession(),await t?.shutdown({reason:e.reason??`other`}),this.listeners.clear()})(),this.shutdownPromise)}get isInitialized(){return this.initialized}getAutoCompactThresholdSource(){return this.autoCompactThresholdSource}getAutoCompactThreshold(){return this.getSessionOrThrow().getAutoCompactThreshold()}getSession(){return this.getSessionOrThrow()}getAgentJobCapability(){return this}setAutoCompactThreshold(e,t=`session`){this.getSessionOrThrow().setAutoCompactThreshold(e),this.autoCompactThresholdSource=t,this.emit(`context_update`,this.getContextState()),this.persistCurrentSession()}clearConversationHistory(){this.getSessionOrThrow().clearHistory(),this.histTracker.clearHistory(),this.persistCurrentSession(),this.emit(`context_update`,this.getContextState())}getName(){return this.sessionName}attachTransport(e){e.attach(this)}setName(e){if(this.sessionName=e,this.sessionStore&&this.session)try{let t=this.getSessionOrThrow().getSessionId(),n=this.sessionStore.load(t);n&&(n.name=e,n.updatedAt=new Date().toISOString(),this.sessionStore.save(n))}catch{}}getBackgroundTaskManager(){if(this.session)return Le(this.session)??j(this.session)?.backgroundTaskManager}async captureSandboxSnapshot(){if(this.sandboxClient?.snapshot)try{this.sandboxSnapshotId=await this.sandboxClient.snapshot()}catch(e){let t=e instanceof Error?e:Error(String(e));this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Sandbox snapshot error: ${t.message}`))),this.emit(`error`,t)}}persistCurrentSession(){if(!this.sessionStore||!this.session)return;let e=this.bgTracker.getState(),t=this.histTracker.getState();Lo(this.sessionStore,this.session,this.sessionName,this.cwd??``,t.history,{tasks:e.tasks,events:e.taskEvents,groups:e.groups,groupEvents:e.groupEvents},{events:t.memoryEvents,usedReferences:t.usedMemoryReferences},{events:t.skillActivationEvents},{references:t.contextReferences},{snapshotId:this.sandboxSnapshotId})}async switchProvider(e){let t=this.getSessionOrThrow(),n=this.getCwd(),r=Ms(n,{providerOverride:e,providerDefinitions:this.providerDefinitions}),i=Ns(n,void 0,{providerOverride:e,providerDefinitions:this.providerDefinitions});t.swapProvider(i,r.model)}async executeCommand(e,t){if(this.orgPolicy?.blockedCommands?.includes(e))return{message:vl(`Command /${e} is blocked by your organization policy.`,this.orgPolicy.adminContact),success:!1};let n=await super.executeCommand(e,t);if(n===null)return null;let r=n.effects?.find(e=>e.type===`provider-hot-swap-requested`);if(r){let{orgPolicy:e}=this;return e?.allowedProviders&&!e.allowedProviders.includes(r.profileName)?{message:vl(`Provider "${r.profileName}" is not allowed by your organization policy. Allowed: ${e.allowedProviders.join(`, `)}.`,e.adminContact),success:!1}:(await this.switchProvider(r.profileName),{...n,effects:n.effects?.filter(e=>e.type!==`provider-hot-swap-requested`)})}return n}};function xl(e,t=new N){let n=R(e);return new Tl(n.sessions,n.logs,t)}function Sl(e,t){return(e?.list()??[]).filter(e=>e.cwd===t).sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:e.id,...e.name===void 0?{}:{name:e.name},cwd:e.cwd,updatedAt:e.updatedAt,messageCount:e.messages.length,preview:El(e.messages)}))}function Cl(e,t){return Sl(e,t)[0]?.id}function wl(e,t){return(e?.list()??[]).find(e=>e.id===t||e.name===t)?.id}var Tl=class{store;logsDir;fs;constructor(e,t,n=new N){this.store=new f.SessionStore(e),this.logsDir=t,this.fs=n}save(e){this.store.save(Dl(e))}load(e){let t=this.store.load(e);return t===void 0?this.loadFromReplayLog(e):Ol(t)}list(){let e=this.store.list().map(Ol),t=new Set(e.map(e=>e.id));for(let n of this.listReplayLogRecords())t.has(n.id)||e.push(n);return e.sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}delete(e){this.store.delete(e)}loadFromReplayLog(e){if(!this.logsDir)return;let t=(0,f.replaySessionLogEntries)((0,f.loadSessionLogEntries)((0,g.join)(this.logsDir,`${e}.jsonl`)));if(!t.sessionId||t.messages.length===0)return;let n=t.backgroundTaskEvents,r=t.backgroundJobGroupEvents;return{id:t.sessionId,cwd:t.cwd??``,createdAt:t.createdAt??t.updatedAt??new Date(0).toISOString(),updatedAt:t.updatedAt??t.createdAt??new Date(0).toISOString(),messages:t.messages,history:t.history,backgroundTasks:kl(n),backgroundTaskEvents:n,backgroundJobGroups:jl(r),backgroundJobGroupEvents:r,skillActivationEvents:[],memoryEvents:t.memoryEvents}}listReplayLogRecords(){return!this.logsDir||!this.fs.existsSync(this.logsDir)?[]:this.fs.readdirSync(this.logsDir).filter(e=>e.endsWith(`.jsonl`)).map(e=>this.loadFromReplayLog(e.slice(0,-6))).filter(e=>e!==void 0)}};function El(e){for(let t of[...e].reverse())if(t.role===`assistant`&&typeof t.content==`string`)return t.content.replace(/[\n\r]+/g,` `).trim();return``}function Dl(e){return{...e}}function Ol(e){return{id:e.id,...e.name===void 0?{}:{name:e.name},cwd:e.cwd,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:e.messages,...e.history===void 0?{}:{history:e.history},...e.systemPrompt===void 0?{}:{systemPrompt:e.systemPrompt},...e.toolSchemas===void 0?{}:{toolSchemas:e.toolSchemas},...e.backgroundTasks===void 0?{}:{backgroundTasks:e.backgroundTasks},...e.backgroundTaskEvents===void 0?{}:{backgroundTaskEvents:e.backgroundTaskEvents},...e.backgroundJobGroups===void 0?{}:{backgroundJobGroups:e.backgroundJobGroups},...e.backgroundJobGroupEvents===void 0?{}:{backgroundJobGroupEvents:e.backgroundJobGroupEvents},...e.skillActivationEvents===void 0?{}:{skillActivationEvents:e.skillActivationEvents},...e.memoryEvents===void 0?{}:{memoryEvents:e.memoryEvents},...e.usedMemoryReferences===void 0?{}:{usedMemoryReferences:e.usedMemoryReferences},...e.contextReferences===void 0?{}:{contextReferences:e.contextReferences},...e.sandboxSnapshotId===void 0?{}:{sandboxSnapshotId:e.sandboxSnapshotId}}}function kl(e){let t=new Map;for(let n of e){let e=Al(n);e&&t.set(e.id,e)}return[...t.values()]}function Al(e){switch(e.type){case`background_task_created`:case`background_task_started`:case`background_task_updated`:case`background_task_completed`:case`background_task_failed`:case`background_task_cancelled`:return e.task;default:return}}function jl(e){let t=new Map;for(let n of e)t.set(n.group.id,n.group);return[...t.values()]}function Ml(e){let t=new bl({cwd:e.cwd??process.cwd(),provider:e.provider,permissionMode:e.permissionMode??`bypassPermissions`,maxTurns:e.maxTurns,permissionHandler:e.permissionHandler,additionalTools:e.additionalTools,...e.responseFormat?{responseFormat:e.responseFormat}:{}});return e.onTextDelta&&t.on(`text_delta`,e.onTextDelta),async e=>new Promise((n,r)=>{let i=e=>{s(),n(e.response)},a=e=>{s(),n(e.response)},o=e=>{s(),r(e)},s=()=>{t.off(`complete`,i),t.off(`interrupted`,a),t.off(`error`,o)};t.on(`complete`,i),t.on(`interrupted`,a),t.on(`error`,o),t.submit(e).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}const Nl=[`preferences`,`view-state`,`memory-projections`,`task-associations`,`workflow-metadata`,`inspection-index`],Pl=[{category:`preferences`,purpose:`User-local UI and display preferences.`,mayExecuteCommands:!1},{category:`view-state`,purpose:`Last selected panels, filters, and navigation state.`,mayExecuteCommands:!1},{category:`memory-projections`,purpose:`Inspectable local memory item projections and user choices.`,mayExecuteCommands:!1},{category:`task-associations`,purpose:`User-local associations between sessions, tasks, and background items.`,mayExecuteCommands:!1},{category:`workflow-metadata`,purpose:`Transparent workflow metadata that is not repo-owned.`,mayExecuteCommands:!1},{category:`inspection-index`,purpose:`Category and item summaries for user inspection and deletion.`,mayExecuteCommands:!1}];function Fl(e){return e.toISOString()}function Il(e,t){if(t.trim().length===0)throw Error(`${e} must not be empty.`);if(!g.default.isAbsolute(t))throw Error(`${e} must be an absolute path: ${t}`)}function Ll(){return process.env.HOME??(0,_.homedir)()}function Rl(e,t){let n=g.default.relative(e,t);return n===``||!n.startsWith(`..`)&&!g.default.isAbsolute(n)}async function zl(e,t){let n=e;for(;g.default.dirname(n)!==n;)try{let r=await t.realpath(n),i=g.default.relative(n,e);return g.default.resolve(r,i)}catch{n=g.default.dirname(n)}try{return await t.realpath(n)}catch{return g.default.resolve(e)}}async function Bl(e){let t=e.fsAsync??new P,n=g.default.resolve(e.activeRepositoryRoot);Il(`activeRepositoryRoot`,n);let r=e.storageRoot===void 0?g.default.join(e.homeDir??Ll(),`.robota`):e.storageRoot;Il(`userLocalStorageRoot`,r);let i=g.default.resolve(r),a=await zl(i,t);if(Rl(await zl(n,t),a))throw Error(`User-local storage root must be outside the active repository: ${i}`);return i}function Vl(e,t){return g.default.join(e,t)}async function Hl(e,t,n){let r=Vl(e,t),i;try{i=await n.readdir(r,{withFileTypes:!0})}catch{return[]}return(await Promise.all(i.map(async i=>{let a=g.default.join(r,i.name),o=await n.stat(a),s=i.name;return{root:e,category:t,key:s,summary:`${t}/${s}`,source:`user-local-storage`,scope:`user`,storageLocation:a,createdAt:Fl(new Date(o.birthtimeMs)),lastUsedAt:Fl(new Date(o.mtimeMs)),enabled:!0,deleteAvailable:!0,disableAvailable:!1}}))).sort((e,t)=>e.key.localeCompare(t.key))}async function Ul(e){let t=e.fsAsync??new P,n=await Bl(e),r=g.default.resolve(e.activeRepositoryRoot),i=e.createDirectories??!0;return i&&await t.mkdir(n,{recursive:!0}),{root:n,activeRepositoryRoot:r,categories:await Promise.all(Pl.map(async e=>{let r=Vl(n,e.category);i&&await t.mkdir(r,{recursive:!0});let a=await Hl(n,e.category,t);return{category:e.category,purpose:e.purpose,mayExecuteCommands:e.mayExecuteCommands,storageLocation:r,itemCount:a.length,items:a}})),generatedAt:Fl((e.now??(()=>new Date))())}}const Wl=[`view-preference`,`last-visible-cwd`,`background-selection`,`task-association`,`display-preference`,`inspection-choice`],Gl=`.json`,Kl=/^[a-z0-9][a-z0-9._-]*$/u,ql={"view-preference":`May affect UI panel, filter, density, or sorting display/navigation only.`,"last-visible-cwd":`May display or preselect an already visible workspace context only.`,"background-selection":`May restore the selected background entry in local UI only.`,"task-association":`May group visible tasks by a local association only.`,"display-preference":`May affect local text wrapping, compactness, or visibility only.`,"inspection-choice":`May affect inspection display choices only.`};function Jl(e){return e.toISOString()}function Yl(e){return Wl.includes(e)}function Xl(e){if(!Yl(e))throw Error(`Unsupported user-local memory category: ${e}`);return e}function Zl(e,t){let n=t.trim();if(n.length===0)throw Error(`${e} must not be empty.`);if(n.length>80||!Kl.test(n))throw Error(`${e} must use lowercase letters, numbers, dots, underscores, or hyphens: ${t}`);return n}function Ql(e,t,n){let r=t.trim().replace(/\s+/g,` `);if(r.length===0)throw Error(`${e} must not be empty.`);return r.length>n?r.slice(0,n):r}function $l(e){return Ql(`value`,e,240)}function eu(e,t){return`${e}__${t}${Gl}`}async function tu(e){let t=await Bl(e);return{root:t,memoryRoot:g.default.join(t,`memory-projections`)}}function nu(e,t){let n=JSON.parse(e),r=Z(n,`category`);if(n.schemaVersion!==1)throw Error(`Unsupported user-local memory schema at ${t}`);return{schemaVersion:1,category:Xl(r),key:Z(n,`key`),value:Z(n,`value`),summary:Z(n,`summary`),source:Z(n,`source`),scope:Z(n,`scope`),createdAt:Z(n,`createdAt`),lastUsedAt:Z(n,`lastUsedAt`),enabled:ru(n,`enabled`)}}function Z(e,t){let n=e[t];if(typeof n!=`string`)throw Error(`Invalid user-local memory field: ${t}`);return n}function ru(e,t){let n=e[t];if(typeof n!=`boolean`)throw Error(`Invalid user-local memory field: ${t}`);return n}function iu(e,t,n){return{root:e,category:n.category,key:n.key,summary:n.summary,valueSummary:$l(n.value),source:n.source,scope:n.scope,storageLocation:t,createdAt:n.createdAt,lastUsedAt:n.lastUsedAt,enabled:n.enabled,displayNavigationRule:ql[n.category],commandExecutionEffect:`none`,deleteAvailable:!0,disableAvailable:!0}}async function au(e,t,n){return iu(e,t,nu(await n.readFile(t,`utf8`),t))}async function ou(e){let t=Xl(e.category),n=Zl(`key`,e.key),{root:r,memoryRoot:i}=await tu(e);return{root:r,storageLocation:g.default.join(i,eu(t,n))}}async function su(e){let t=e.fsAsync??new P,n=Xl(e.category),r=Zl(`key`,e.key),i=Ql(`summary`,e.summary,240),a=Ql(`source`,e.source,80),o=Ql(`scope`,e.scope??`user`,120),s=$l(e.value),c=Jl((e.now??(()=>new Date))()),{root:l,memoryRoot:u}=await tu(e),d=g.default.join(u,eu(n,r)),f=c;try{f=nu(await t.readFile(d,`utf8`),d).createdAt}catch(e){if(e instanceof Error&&e.message.includes(`ENOENT`))f=c;else throw e}let p={schemaVersion:1,category:n,key:r,value:s,summary:i,source:a,scope:o,createdAt:f,lastUsedAt:c,enabled:!0};return await t.mkdir(u,{recursive:!0}),await t.writeFile(d,`${JSON.stringify(p,null,2)}\n`,`utf8`),iu(l,d,p)}async function cu(e){let t=e.fsAsync??new P,{root:n,memoryRoot:r}=await tu(e),i;try{i=await t.readdir(r,{withFileTypes:!0})}catch{i=[]}let a=await Promise.all(i.filter(e=>e.isFile()&&e.name.endsWith(Gl)).map(e=>au(n,g.default.join(r,e.name),t)));return{root:n,activeRepositoryRoot:g.default.resolve(e.activeRepositoryRoot),items:a.sort((e,t)=>`${e.category}/${e.key}`.localeCompare(`${t.category}/${t.key}`))}}async function lu(e){let t=e.fsAsync??new P,{root:n,storageLocation:r}=await ou(e);return au(n,r,t)}async function uu(e){let t=e.fsAsync??new P,{root:n,storageLocation:r}=await ou(e),i={...nu(await t.readFile(r,`utf8`),r),enabled:!1,lastUsedAt:Jl((e.now??(()=>new Date))())};return await t.writeFile(r,`${JSON.stringify(i,null,2)}\n`,`utf8`),iu(n,r,i)}async function du(e){let t=e.fsAsync??new P,{storageLocation:n}=await ou(e);return await t.rm(n),{category:e.category,key:e.key,deleted:!0}}async function fu(e){let t=await lu(e);return t.enabled?t:null}const pu=[`test`,`typecheck`,`build`],mu={idle:{checkpoint_created:`checkpointed`,cancelled:`cancelled`},checkpointed:{edits_started:`editing`,cancelled:`cancelled`},editing:{edits_applied:`verifying`,verify_failed:`failed`,cancelled:`cancelled`},verifying:{verify_passed:`passed`,verify_failed:`failed`,cancelled:`cancelled`},passed:{},failed:{rollback_completed:`rolled_back`,cancelled:`cancelled`},rolled_back:{},cancelled:{}};function hu(e){return e?Array.from(new Set(e.map(e=>e.trim()).filter(Boolean))):[]}function gu(e){return e.flatMap(e=>pu.map(t=>({id:`package-${t}:${e}`,phase:`verify`,description:`Run ${t} for ${e} in a child process against the new on-disk tree.`,required:!0,command:`pnpm --filter ${e} ${t}`})))}function _u(){return[{id:`checkpoint`,phase:`checkpoint`,description:`Create a recoverable turn-level checkpoint before the first mutation.`,required:!0},{id:`atomic-edit`,phase:`edit`,description:`Apply Write/Edit mutations through same-directory temp files and atomic rename.`,required:!0},{id:`handoff`,phase:`handoff`,description:`Keep the current process on already-loaded code and run verification child processes against disk.`,required:!0}]}function vu(e){return{id:`harness-verify`,phase:`verify`,description:`Run Robota harness verification as the local CI-like gate.`,required:!0,command:`pnpm harness:verify -- --base-ref ${e} --skip-record-check`}}function yu(){return{id:`rollback-on-failure`,phase:`recover`,description:`Use the existing edit checkpoint restore path if verification fails.`,required:!0}}function bu(e){if(e.changedFiles.length===0)throw Error(`Self-hosting verification requires at least one changed file.`);let t=e.baseRef??`origin/develop`,n=hu(e.packageScopes),r=[..._u(),...gu(n),vu(t),yu()];return{changedFiles:[...e.changedFiles],packageScopes:n,baseRef:t,steps:r}}function xu(e,t){let n=mu[e][t];if(!n)throw Error(`Invalid self-hosting loop transition: ${e} -> ${t}`);return n}function Su(e){return e}function Cu(e){if(!e||e.length===0)return;let[t,...n]=e;if(t!==void 0)return[t,...n]}function wu(e){let t=Cu(e),n=t===void 0?d.z.string().describe(`Registered model-invocable command name to execute`):d.z.enum(t).describe(`Registered model-invocable command name to execute`);return d.z.object({command:n,args:d.z.string().optional().describe(`Arguments to pass to the command`)})}function Tu(e){if(e.commandNames!==void 0)return e.commandNames;if(e.commandDescriptors!==void 0)return e.commandDescriptors.map(e=>A(e.name))}function Eu(e){return`- ${A(e.name)}${e.argumentHint?` ${e.argumentHint}`:``}: ${e.description}`}function Du(e){let t=`Executes a registered model-invocable Robota command through the command registry. Accepted command names and argument grammar come from registered command descriptors.`;return e===void 0||e.length===0?t:[t,`Use the registered command descriptors below as the authority for when to call this tool.`,``,`Registered model-invocable commands:`,...e.map(Eu)].join(`
101
- `)}function Ou(e){let t=wu(Tu(e));return(0,u.createZodFunctionTool)(`ExecuteCommand`,Du(e.commandDescriptors),Su(t),async n=>{let r=t.parse(n),i=A(r.command);return e.isModelInvocable(i)?lt(i,await e.execute(i,r.args??``)):JSON.stringify({success:!1,command:i,error:`Command is not model-invocable: ${i}`})})}const ku=[`Allow once`,`Allow for this session`,`Deny`];function Au(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}async function ju(e,t,n){e.writeLine(``),e.writeError(`[Permission Required] Tool: ${t}`),e.writeLine(` ${Au(n)}`),e.writeLine(``);let r=await e.select(ku,0);return r===1?`allow-session`:r===0}const Mu={usedTokens:0,maxTokens:2e5,usedPercentage:0,remainingPercentage:100},Nu={sessionId:`test-session-id`,updatedAt:new Date().toISOString(),entries:[]},Pu={id:``,parentSessionId:`test-session-id`,waitPolicy:`wait_all`,taskIds:[],status:`completed`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),results:[]};function Fu(e){return{submit:()=>Promise.resolve(),abort:()=>{},cancelQueue:()=>{},shutdown:()=>Promise.resolve(),isExecuting:()=>!1,getPendingPrompt:()=>null,getMessages:()=>[],getContextState:()=>({...Mu}),getSession:()=>({getSessionId:()=>`test-session-id`}),getCwd:()=>`/workspace`,executeCommand:()=>Promise.resolve(null),listCommands:()=>[],on:()=>{},off:()=>{},listBackgroundTasks:()=>[],getBackgroundTask:()=>void 0,cancelBackgroundTask:()=>Promise.resolve(),closeBackgroundTask:()=>Promise.resolve(),sendBackgroundTask:()=>Promise.resolve(),readBackgroundTaskLog:()=>Promise.resolve({taskId:``,lines:[]}),listBackgroundJobGroups:()=>[],getBackgroundJobGroup:()=>void 0,createBackgroundJobGroup:()=>({...Pu}),waitBackgroundJobGroup:()=>Promise.resolve({...Pu}),getExecutionWorkspaceSnapshot:()=>({...Nu}),listAgentDefinitions:()=>[],listAgentJobs:()=>[],spawnAgentJob:()=>Promise.resolve({id:`agent_1`,type:`general-purpose`,label:`general-purpose`,parentSessionId:`test-session-id`,status:`running`,mode:`background`,depth:1,cwd:`/workspace`,promptPreview:``,updatedAt:new Date().toISOString()}),sendAgentJob:()=>Promise.resolve(),cancelAgentJob:()=>Promise.resolve(),closeAgentJob:()=>Promise.resolve(),...e}}function Iu(){let e=Ii();return{deleted:Bi(e),path:e}}function Lu(e){try{let t=Ru(e);if(!t)return;let n=(0,m.readFileSync)((0,g.join)(t,`HEAD`),`utf8`).trim();if(!n)return;if(n.startsWith(`ref: `)){let e=n.slice(5).trim();return e.startsWith(`refs/heads/`)?e.slice(11):e}return n.slice(0,7)}catch{return}}function Ru(e){let t=(0,g.resolve)(e),n=(0,g.dirname)(t);for(;n!==t;){let e=zu((0,g.join)(t,`.git`),t);if(e)return e;t=n,n=(0,g.dirname)(t)}return zu((0,g.join)(t,`.git`),t)}function zu(e,t){if(!(0,m.existsSync)(e))return;let n=(0,m.lstatSync)(e);if(n.isDirectory())return e;if(!n.isFile())return;let r=(0,m.readFileSync)(e,`utf8`).trim();if(!r.startsWith(`gitdir:`))return;let i=r.slice(7).trim();return(0,g.isAbsolute)(i)?i:(0,g.resolve)(t,i)}function Bu(e,t){let n=Hu(e),r=Hu(t);if(n===void 0||r===void 0)return Math.sign(e.localeCompare(t));let i=$(n.major,r.major)||$(n.minor,r.minor)||$(n.patch,r.patch);return i===0?Uu(n.prerelease,r.prerelease):i}function Vu(e,t){return Bu(e,t)>0}function Hu(e){let[t,n]=(e.trim().replace(/^v/,``).split(`+`)[0]??``).split(`-`,2),[r,i,a]=t.split(`.`),o=Q(r),s=Q(i),c=Q(a);if(!(o===void 0||s===void 0||c===void 0))return{major:o,minor:s,patch:c,prerelease:n?n.split(`.`):[]}}function Q(e){if(!(e===void 0||!/^\d+$/.test(e)))return Number(e)}function $(e,t){return Math.sign(e-t)}function Uu(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=Wu(n,i);if(a!==0)return a}return 0}function Wu(e,t){let n=Q(e),r=Q(t);return n!==void 0&&r!==void 0?$(n,r):n===void 0?r===void 0?Math.sign(e.localeCompare(t)):1:-1}function Gu(e){let t=(0,g.dirname)((0,ee.fileURLToPath)(e)),n=[(0,g.join)(t,`..`,`..`,`package.json`),(0,g.join)(t,`..`,`package.json`)];for(let e of n)try{let t=(0,m.readFileSync)(e,`utf-8`),n=JSON.parse(t);if(n.version!==void 0&&n.name!==void 0)return n.version}catch{continue}return`0.0.0`}function Ku(e=process.env.HOME??process.env.USERPROFILE??`/`){return(0,g.join)(e,`.robota`,`update-check.json`)}function qu(e){if((0,m.existsSync)(e))try{return cd(JSON.parse((0,m.readFileSync)(e,`utf8`)))}catch{return}}function Ju(e,t){(0,m.mkdirSync)((0,g.dirname)(e),{recursive:!0}),(0,m.writeFileSync)(e,JSON.stringify(t,null,2)+`
102
- `,`utf8`)}async function Yu(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??Ku(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=qu(n);if(a!==void 0&&id(a,r,i,t))return nd(a,e.currentVersion)}let a=await Xu(e,t,n,r);return typeof a==`string`?rd(e.currentVersion,a):a}async function Xu(e,t,n,r){let i=await ad({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return i.ok?(Zu(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i.version}),i.version):(Zu(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:i.errorMessage}),{status:`error`,errorMessage:i.errorMessage})}function Zu(e,t){try{Ju(e,t)}catch{}}async function Qu(e){let t=await Yu(e);return t.status===`update_available`?t.notice:void 0}function $u(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function ed(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function td(e){return e.status===`update_available`?ed(e.notice):e.status===`current`?`Robota is up to date (${e.currentVersion}).`:e.status===`skipped`?`Robota update check skipped.`:`Robota update check failed: ${e.errorMessage}`}function nd(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:rd(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function rd(e,t){return Vu(t,e)?{status:`update_available`,notice:{currentVersion:e,latestVersion:t,installCommand:`npm install -g '@robota-sdk/agent-cli@latest'`}}:{status:`current`,currentVersion:e,latestVersion:t}}function id(e,t,n,r){if(e.packageName!==r)return!1;let i=Date.parse(e.checkedAt);return Number.isFinite(i)?t.getTime()-i<n:!1}async function ad(e){try{return{ok:!0,version:await od(e)}}catch(e){return{ok:!1,errorMessage:e instanceof Error?e.message:String(e)}}}async function od(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=sd(e.registryUrl,e.packageName),r=await e.fetchImpl(n,{headers:{accept:`application/json`},signal:t.signal});if(!r.ok)throw Error(`registry responded with HTTP ${r.status}`);let i=(await r.json())[`dist-tags`]?.latest;if(typeof i!=`string`||i.trim().length===0)throw Error(`registry metadata is missing dist-tags.latest`);return i}finally{clearTimeout(n)}}function sd(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function cd(e){if(!ld(e))return;let t=e;if(typeof t.packageName==`string`&&typeof t.checkedAt==`string`&&typeof t.currentVersion==`string`&&(t.latestVersion===void 0||typeof t.latestVersion==`string`)&&(t.errorMessage===void 0||typeof t.errorMessage==`string`))return{packageName:t.packageName,checkedAt:t.checkedAt,currentVersion:t.currentVersion,...t.latestVersion!==void 0&&{latestVersion:t.latestVersion},...t.errorMessage!==void 0&&{errorMessage:t.errorMessage}}}function ld(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ud(e){let t=Ii(),n={settings:{read:()=>W(t),write:e=>G(t,e)}},r=e.backgroundTaskRunners??(0,l.createDefaultBackgroundTaskRunners)(),i=e.commandModules??[],a=e.commandHostAdapters??n,o=`sessionStore`in e?e.sessionStore:xl(e.cwd);return{cwd:e.cwd,provider:e.provider,commandModules:i,commandHostAdapters:a,backgroundTaskRunners:r,subagentRunnerFactory:e.subagentRunnerFactory,sessionStore:o,transportRegistry:e.transportRegistry,reloadPluginCommandSource:e.reloadPluginCommandSource??(()=>{}),createSession(t){return new bl({cwd:e.cwd,provider:e.provider,backgroundTaskRunners:r,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:i,commandHostAdapters:a,permissionMode:t.permissionMode,maxTurns:t.maxTurns,sessionStore:t.sessionStore,sessionName:t.sessionName,bare:t.bare,allowedTools:t.allowedTools,deniedTools:t.deniedTools,model:t.model,appendSystemPrompt:t.appendSystemPrompt,systemPrompt:t.systemPrompt,shellExec:t.shellExec,agentName:t.agentName,orgPolicy:e.orgPolicy,additionalTools:t.additionalTools,resumeSessionId:t.resumeSessionId,...t.responseFormat?{responseFormat:t.responseFormat}:{}})}}}function dd(e){let t=ud({cwd:e.cwd??process.cwd(),provider:e.provider,sessionStore:void 0,commandHostAdapters:{settings:{read:()=>({}),write:()=>{}}}}),n=t.createSession.bind(t);return{...t,createSession(e){return n({bare:!0,...e})}}}exports.AUTO_COMPACT_THRESHOLD_SETTINGS_KEY=Is,exports.AgentExecutor=Hi,exports.BACKGROUND_COMMAND_DESCRIPTION=`List and control background tasks`,exports.BACKGROUND_COMMAND_USAGE=`Usage: background list | background read <task-id> [offset] | background cancel <task-id> | background close <task-id>`,exports.BUILT_IN_AGENTS=$e,exports.BackgroundJobOrchestrator=ne,exports.BuiltinCommandSource=Yo,exports.BundlePluginInstaller=wo,exports.BundlePluginLoader=Co,exports.CLEAR_COMMAND_DESCRIPTION=`Clear conversation history`,exports.CLI_UPDATE_CACHE_TTL_MS=864e5,exports.CLI_UPDATE_PACKAGE_NAME=`@robota-sdk/agent-cli`,exports.CLI_UPDATE_REGISTRY_URL=`https://registry.npmjs.org`,exports.CLI_UPDATE_TIMEOUT_MS=1500,exports.COST_COMMAND_DESCRIPTION=`Show session token usage and estimated cost. /cost budget <amount> sets a monthly budget.`,exports.CommandRegistry=Go,exports.DEFAULT_AUTO_COMPACT_THRESHOLD=Fs,exports.DEFAULT_STATUS_LINE_COMMAND_SETTINGS=wc,exports.EXECUTION_ORIGIN_METADATA_KEYS=S,exports.EXIT_COMMAND_DESCRIPTION=`Exit CLI`,exports.EditCheckpointStore=z,exports.HELP_COMMAND_DESCRIPTION=`Show available commands`,exports.InteractiveSession=bl,exports.LANGUAGE_COMMAND_ARGUMENT_HINT=`<code>`,exports.LANGUAGE_COMMAND_DESCRIPTION=`Set response language`,exports.MEMORY_COMMAND_ARGUMENT_HINT=`list | show [topic] | add <user|feedback|project|reference> <topic> <text> | pending | approve <id> | reject <id> | used`,exports.MEMORY_COMMAND_DESCRIPTION=`Project memory command. Use it to inspect project memory when stored context may help, save durable preferences, project conventions, feedback, or references worth reusing across sessions, review pending candidates, and report memory provenance. Do not store secrets, credentials, or transient facts.`,exports.MEMORY_COMMAND_USAGE=`Usage: memory list | memory show [topic] | memory add <user|feedback|project|reference> <topic> <text> | memory pending | memory approve <id> | memory reject <id> | memory used`,exports.MEMORY_INDEX_MAX_BYTES=ao,exports.MEMORY_INDEX_MAX_LINES=200,exports.MODEL_COMMAND_TOOL_PREFIX=rt,exports.MarketplaceClient=Oo,exports.PERMISSIONS_COMMAND_DESCRIPTION=`Show/change permission mode and permission rules`,exports.PERMISSION_MODE_ARGUMENT_HINT=`plan | default | acceptEdits | bypassPermissions`,exports.PERMISSION_MODE_COMMAND_DESCRIPTION=`Show/change permission mode`,exports.PLUGIN_COMMAND_ARGUMENT_HINT=`manage | install <name@marketplace> | uninstall <name@marketplace> | enable <name@marketplace> | disable <name@marketplace> | marketplace <action>`,exports.PLUGIN_COMMAND_DESCRIPTION=`Manage plugins`,exports.PROVIDER_SAFE_TOOL_NAME_PATTERN=it,exports.PluginCommandSource=Ps,exports.PluginSettingsStore=yo,exports.ProjectMemoryStore=ho,exports.PromptExecutor=Wi,exports.RECOMMENDED_RESPONSE_LANGUAGES=lc,exports.RELOAD_PLUGINS_COMMAND_DESCRIPTION=`Reload all plugin resources`,exports.RENAME_COMMAND_DESCRIPTION=`Rename the current session`,exports.RENAME_COMMAND_USAGE=`Usage: rename <name>`,exports.RESUME_COMMAND_DESCRIPTION=`Resume a previous session`,exports.REWIND_COMMAND_ARGUMENT_HINT=`list | inspect CHECKPOINT_ID | restore CHECKPOINT_ID | code CHECKPOINT_ID | rollback CHECKPOINT_ID`,exports.REWIND_COMMAND_DESCRIPTION=`List, inspect, restore, or rollback edit checkpoints.`,exports.STATUSLINE_COMMAND_ARGUMENT_HINT=`on | off | reset | git on | git off`,exports.STATUSLINE_COMMAND_DESCRIPTION=`Configure TUI status-line visibility and fields such as model, context, tokens, session, and git branch.`,exports.SkillCommandSource=Fi,exports.SystemCommandExecutor=Ko,exports.USER_LOCAL_MEMORY_CATEGORIES=Wl,exports.USER_LOCAL_STORAGE_CATEGORIES=Nl,exports.USER_LOCAL_STORAGE_CATEGORY_DEFINITIONS=Pl,exports.VALIDATE_SESSION_COMMAND_DESCRIPTION=`Validate current session replay log`,exports.VALID_PERMISSION_MODES=pc,exports.addCommandContextReference=Gs,exports.applyActiveModelChange=Ds,exports.applyProviderConfiguration=Ts,exports.applyProviderSwitch=Es,exports.applyStatusLineSettings=Oc,exports.assembleSubagentPrompt=nt,exports.buildBackgroundCommandSubcommands=$s,exports.buildLanguageCommandSubcommands=uc,exports.buildMemoryCommandSubcommands=$c,exports.buildPermissionModeSubcommands=mc,exports.buildPluginCommandSubcommands=Nc,exports.buildPromptWithFileReferences=pn,exports.buildProviderProfile=ns,exports.buildProviderSetupPatch=ts,exports.buildRewindCommandSubcommands=Uc,exports.buildStatusLineCommandSubcommands=Tc,exports.cancelCommandBackgroundTask=sc,exports.checkForCliUpdate=Yu,exports.checkSettingsDocument=ds,exports.checkSettingsFile=gs,exports.clearCommandContextReferences=qs,exports.clearContextReferences=rn,exports.clearConversationHistory=Pc,exports.closeCommandBackgroundTask=cc,exports.compactCommandContext=Us,exports.compareSemverVersions=Bu,exports.createAgentRuntime=ud,exports.createAgentTool=Nt,exports.createBackgroundGroupExecutionEntryId=ue,exports.createBackgroundProcessTool=_i,exports.createBackgroundTaskExecutionEntryId=w,exports.createBuiltinCommandModule=Xo,exports.createCommandExecutionTool=Ou,exports.createCommandMemoryStores=nl,exports.createCommandPendingMemoryStore=tl,exports.createCommandProjectMemoryStore=el,exports.createContextReferenceItem=en,exports.createDefaultTools=Vr,exports.createExecutionOriginMetadata=T,exports.createExecutionWorkspaceSnapshot=fe,exports.createExecutionWorkspaceTaskSpawner=Me,exports.createInProcessSubagentRunner=Ct,exports.createLineDetailPage=O,exports.createMainThreadDetailPage=ke,exports.createMainThreadExecutionEntryId=C,exports.createModelCommandToolProjection=st,exports.createPluginRegistryReloadRequestedEffect=jc,exports.createPluginTuiRequestedEffect=Ac,exports.createProjectSessionStore=xl,exports.createProjectedCommandExecutionTools=ut,exports.createPromptFileReferenceHistoryEntry=gn,exports.createProviderFromSettings=Ns,exports.createProviderSafeModelCommandToolName=ot,exports.createQuery=Ml,exports.createSessionExitRequestedEffect=Rc,exports.createSessionPickerRequestedEffect=Lc,exports.createSessionRenamedEffect=Ic,exports.createStatelessRuntime=dd,exports.createSubagentLogger=la,exports.createSubagentSession=_t,exports.createSystemCommands=qo,exports.createTestInteractiveSession=Fu,exports.deleteProviderProfile=$o,exports.deleteSettings=Bi,exports.deleteUserLocalMemoryItem=du,exports.disableUserLocalMemoryItem=uu,exports.discoverTaskFiles=$a,exports.evaluateReversibleToolSafety=Ji,exports.executeSkill=dl,exports.formatCliUpdateCheckMessage=td,exports.formatCliUpdateNotice=ed,exports.formatCommandBackgroundTask=ec,exports.formatCommandBackgroundTaskList=tc,exports.formatCommandHelpMessage=Qs,exports.formatCommandPermissionsMessage=Cc,exports.formatCommandSessionReplayValidationReport=Vc,Object.defineProperty(exports,`formatEnvReference`,{enumerable:!0,get:function(){return c.formatEnvReference}}),exports.formatInvalidPermissionModeMessage=_c,exports.formatLanguageUsageMessage=fc,exports.formatOrgPolicyViolationMessage=vl,exports.formatProjectedModelCommandToolPromptDescription=ct,exports.formatPromptFileReferenceDiagnostics=hn,exports.formatTaskContext=no,exports.getBuiltInAgent=k,exports.getForkWorkerSuffix=tt,exports.getProviderSettingsPaths=Cs,exports.getStartupCliUpdateNotice=Qu,exports.getSubagentSuffix=et,exports.getUserSettingsPath=Ii,exports.getUserUpdateCheckCachePath=Ku,exports.hasBlockingPromptFileReferenceDiagnostics=mn,exports.hasSensitiveCommandMemoryContent=il,Object.defineProperty(exports,`hasUsableSecretReference`,{enumerable:!0,get:function(){return c.hasUsableSecretReference}}),exports.inspectCommandEditCheckpoint=Gc,exports.inspectUserLocalMemoryItem=lu,exports.inspectUserLocalStorage=Ul,exports.isApiKeyPlaintext=yl,exports.isCommandMemoryType=rl,Object.defineProperty(exports,`isEnvReference`,{enumerable:!0,get:function(){return c.isEnvReference}}),exports.isMemoryType=so,exports.isNewerSemverVersion=Vu,exports.isPermissionMode=gc,exports.isStatusLineCommandSettingsPatch=Ec,exports.listActiveContextReferences=an,exports.listCommandBackgroundTasks=ac,exports.listCommandContextReferences=Ws,exports.listCommandEditCheckpoints=Wc,exports.listCommandSessionAllowedTools=xc,exports.listCommandUsedMemoryReferences=al,exports.listResumableSessionSummaries=Sl,exports.listUserLocalMemoryItems=cu,exports.loadOrgPolicy=_l,exports.loadTaskContext=ro,exports.mergeProviderPatch=rs,exports.mergeProviders=bs,exports.mergeSettings=ys,exports.normalizeModelCommandName=A,exports.parseCommandBackgroundLogCursor=nc,exports.parseExecutionWorkspaceEntryId=de,exports.parseFrontmatter=ji,exports.parseLanguageArgument=dc,exports.parsePermissionModeArgument=hc,exports.parsePromptFileReferences=bn,exports.parseSessionNameArgument=Fc,exports.parseTaskFile=eo,exports.planSelfHostingVerification=bu,exports.preprocessShellCommands=cl,exports.probeProviderProfile=us,exports.projectPaths=R,exports.promptForApproval=ju,exports.readAutoCompactThreshold=Rs,exports.readAutoCompactThresholdSource=zs,exports.readCommandBackgroundTaskLog=oc,exports.readCommandContextState=Ls,exports.readCommandPermissionMode=yc,exports.readCommandPermissionsState=Sc,exports.readCommandSessionInfo=zc,exports.readCurrentGitBranch=Qa,exports.readEnabledUserLocalMemoryItem=fu,exports.readMergedProviderSettings=js,exports.readMergedProviderSettingsFromPaths=_s,exports.readPackageVersion=Gu,exports.readProviderSettings=Ms,exports.readSettings=W,exports.readStatusLineSettings=Dc,exports.readUpdateCheckCache=qu,exports.recordCommandMemoryEvent=ol,exports.removeCommandContextReference=Ks,exports.removeContextReference=nn,exports.resetAutoCompactThresholdSetting=Hs,exports.resetUserConfig=Iu,exports.resolveActiveProvider=xs,Object.defineProperty(exports,`resolveEnvReference`,{enumerable:!0,get:function(){return c.resolveEnvReference}}),exports.resolveGitBranch=Lu,exports.resolveLatestSessionId=Cl,exports.resolvePermissionModeAdapter=vc,exports.resolvePluginCommandAdapter=Mc,exports.resolvePromptFileReferencePaths=On,exports.resolvePromptFileReferences=Dn,exports.resolveProviderSettingsWriteTargetPath=ws,exports.resolveSessionIdByIdOrName=wl,exports.resolveSettingsPathForScope=Li,exports.resolveSubagentLogDir=ua,exports.resolveUserLocalStorageRoot=Bl,exports.restoreCommandEditCheckpoint=Kc,exports.retrieveAgentToolDeps=j,exports.rollbackCommandEditCheckpoint=qc,exports.sanitizeProviderProfileName=Xs,exports.selectRelevantTasks=to,exports.setCommandAutoCompactThreshold=Bs,exports.setCurrentProvider=Qo,exports.setUserLocalMemoryItem=su,exports.shouldRunStartupCliUpdateCheck=$u,exports.storeAgentToolDeps=Ot,exports.substituteVariables=sl,exports.suggestProviderProfileName=Ys,exports.summarizeBackgroundJobGroup=se,exports.testProviderProfileCommand=ls,exports.toContextReferenceRecords=on,exports.toPromptFileReferenceRecords=F,exports.transitionSelfHostingLoop=xu,exports.updateModelInSettings=Ri,exports.updateTaskFileStatus=io,exports.upsertContextReference=tn,exports.upsertProviderProfile=Zo,exports.userPaths=mr,exports.validateCommandSessionReplayLog=Bc,exports.validateProviderProfile=es,exports.wrapEditCheckpointTools=wi,exports.wrapReversibleExecutionTools=Yi,exports.writeAutoCompactThresholdSetting=Vs,exports.writeCommandPermissionMode=bc,exports.writeSettings=G,exports.writeUpdateCheckCache=Ju;
94
+ `),s=go(o),c=new mo(e).loadStartupMemory().content||void 0,l=no(e);return{agentsMd:a,claudeMd:o,memoryMd:c,taskContext:l.trim().length>0?l:void 0,compactInstructions:s,agentsFileEntries:r,claudeFileEntries:i}}var vo=class{settingsPath;fs;constructor(e,t=new M){this.settingsPath=e,this.fs=t}readAll(){if(!this.fs.existsSync(this.settingsPath))return{};try{let e=this.fs.readFileSync(this.settingsPath,`utf-8`),t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch{return{}}}writeAll(e){let t=(0,g.dirname)(this.settingsPath);this.fs.existsSync(t)||this.fs.mkdirSync(t,{recursive:!0}),this.fs.writeFileSync(this.settingsPath,JSON.stringify(e,null,2),`utf-8`)}getEnabledPlugins(){let e=this.readAll().enabledPlugins;return typeof e==`object`&&e?e:{}}setPluginEnabled(e,t){let n=this.readAll(),r=this.getEnabledPluginsFrom(n);r[e]=t,n.enabledPlugins=r,this.writeAll(n)}removePluginEntry(e){let t=this.readAll(),n=this.getEnabledPluginsFrom(t);delete n[e],t.enabledPlugins=n,this.writeAll(t)}getMarketplaceSources(){let e=this.readAll().extraKnownMarketplaces;return typeof e==`object`&&e?e:{}}setMarketplaceSource(e,t){let n=this.readAll(),r=this.getMarketplaceSourcesFrom(n);r[e]={source:t},n.extraKnownMarketplaces=r,this.writeAll(n)}removeMarketplaceSource(e){let t=this.readAll(),n=this.getMarketplaceSourcesFrom(t);delete n[e],t.extraKnownMarketplaces=n,this.writeAll(t)}getEnabledPluginsFrom(e){let t=e.enabledPlugins;return typeof t==`object`&&t?t:{}}getMarketplaceSourcesFrom(e){let t=e.extraKnownMarketplaces;return typeof t==`object`&&t?t:{}}};function yo(e){let t=e.trimStart();if(!t.startsWith(`---`))return{metadata:{},content:e};let n=t.indexOf(`---`,3);if(n===-1)return{metadata:{},content:e};let r=t.slice(3,n).trim(),i=t.slice(n+3).trimStart(),a={};for(let e of r.split(`
95
+ `)){let t=e.indexOf(`:`);if(t===-1)continue;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();typeof r==`string`&&r.startsWith(`[`)&&r.endsWith(`]`)&&(r=r.slice(1,-1).split(`,`).map(e=>e.trim()).filter(e=>e.length>0)),n&&(a[n]=r)}return{metadata:a,content:i}}function bo(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.name!=`string`||typeof t.version!=`string`||typeof t.description!=`string`)return null;let n=typeof t.features==`object`&&t.features!==null?t.features:{};return{name:t.name,version:t.version,description:t.description,features:{commands:n.commands===!0?!0:void 0,agents:n.agents===!0?!0:void 0,skills:n.skills===!0?!0:void 0,hooks:n.hooks===!0?!0:void 0,mcp:n.mcp===!0?!0:void 0}}}function xo(e,t=new M){if(!t.existsSync(e))return[];try{return t.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name).sort()}catch{return[]}}var So=class{pluginsDir;enabledPlugins;fs;constructor(e,t,n=new M){this.pluginsDir=e,this.enabledPlugins=t??{},this.fs=n}loadPluginsSync(){return this.discoverAndLoad()}async loadAll(){return this.discoverAndLoad()}discoverAndLoad(){let e=(0,g.join)(this.pluginsDir,`cache`);if(!this.fs.existsSync(e))return[];let t=[],n=xo(e,this.fs);for(let r of n){let n=(0,g.join)(e,r),i=xo(n,this.fs);for(let e of i){let i=(0,g.join)(n,e),a=xo(i,this.fs);if(a.length===0)continue;let o=a[a.length-1],s=(0,g.join)(i,o),c=(0,g.join)(s,`.claude-plugin`,`plugin.json`);if(!this.fs.existsSync(c))continue;let l=this.readManifest(c);if(!l)continue;let u=`${l.name}@${r}`;if(this.isDisabled(u,l.name))continue;let d=this.loadPlugin(s,l);t.push(d)}}return t}readManifest(e){let t=this.fs.readFileSync(e,`utf-8`);return bo(JSON.parse(t))}isDisabled(e,t){return e in this.enabledPlugins?this.enabledPlugins[e]===!1:t in this.enabledPlugins?this.enabledPlugins[t]===!1:!1}loadPlugin(e,t){return{manifest:t,skills:this.loadSkills(e,t.name),commands:this.loadCommands(e,t.name),hooks:this.loadHooks(e),mcpConfig:this.loadMcpConfig(e),agents:this.loadAgents(e),pluginDir:e}}loadSkills(e,t){let n=(0,g.join)(e,`skills`);if(!this.fs.existsSync(n))return[];let r=this.fs.readdirSync(n,{withFileTypes:!0}),i=[];for(let e of r){if(!e.isDirectory())continue;let t=(0,g.join)(n,e.name,`SKILL.md`);if(!this.fs.existsSync(t))continue;let{metadata:r,content:a}=yo(this.fs.readFileSync(t,`utf-8`)),o=typeof r.description==`string`?r.description:``,s={name:e.name,description:o,skillContent:a,...r};i.push(s)}return i}loadCommands(e,t){let n=(0,g.join)(e,`commands`);if(!this.fs.existsSync(n))return[];let r=this.fs.readdirSync(n,{withFileTypes:!0}),i=[];for(let e of r){if(!e.isFile()||!e.name.endsWith(`.md`))continue;let{metadata:r,content:a}=yo(this.fs.readFileSync((0,g.join)(n,e.name),`utf-8`)),o=typeof r.name==`string`?r.name:e.name.replace(/\.md$/,``),s=typeof r.description==`string`?r.description:``;i.push({...r,name:`${t}:${o}`,description:s,skillContent:a})}return i}loadHooks(e){let t=(0,g.join)(e,`hooks`,`hooks.json`);if(!this.fs.existsSync(t))return{};let n=this.fs.readFileSync(t,`utf-8`),r=JSON.parse(n);return typeof r==`object`&&r?r:{}}loadMcpConfig(e){let t=(0,g.join)(e,`.mcp.json`);if(!this.fs.existsSync(t))return;let n=this.fs.readFileSync(t,`utf-8`);return JSON.parse(n)}loadAgents(e){let t=(0,g.join)(e,`agents`);return this.fs.existsSync(t)?this.fs.readdirSync(t,{withFileTypes:!0}).filter(e=>e.isDirectory()||e.name.endsWith(`.md`)).map(e=>e.name.replace(/\.md$/,``)):[]}},Co=class{pluginsDir;cacheDir;registryPath;settingsStore;marketplaceClient;exec;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.cacheDir=(0,g.join)(this.pluginsDir,`cache`),this.registryPath=(0,g.join)(this.pluginsDir,`installed_plugins.json`),this.settingsStore=e.settingsStore,this.marketplaceClient=e.marketplaceClient,this.exec=e.exec,this.fs=e.fs??new M}async install(e,t){let n=this.marketplaceClient.fetchManifest(t).plugins.find(t=>t.name===e);if(!n)throw Error(`Plugin "${e}" not found in marketplace "${t}"`);let r=this.resolveVersion(n,t),i=(0,g.join)(this.cacheDir,t,e,r);if(this.fs.existsSync(i))throw Error(`Plugin "${e}" version "${r}" is already installed from "${t}"`);this.resolveAndInstall(n.source,t,e,i);let a=`${e}@${t}`,o=this.readRegistry();o[a]={pluginName:e,marketplace:t,version:r,installPath:i,installedAt:new Date().toISOString()},this.writeRegistry(o)}async uninstall(e){let t=this.readRegistry(),n=t[e];if(!n)throw Error(`Plugin "${e}" is not installed`);this.fs.existsSync(n.installPath)&&this.fs.rmSync(n.installPath,{recursive:!0,force:!0}),delete t[e],this.writeRegistry(t),this.settingsStore.removePluginEntry(e)}async enable(e){this.settingsStore.setPluginEnabled(e,!0)}async disable(e){this.settingsStore.setPluginEnabled(e,!1)}getInstalledPlugins(){return this.readRegistry()}getPluginsByMarketplace(e){let t=this.readRegistry();return Object.values(t).filter(t=>t.marketplace===e)}resolveVersion(e,t){let n=e;return typeof n.version==`string`&&n.version?n.version:this.marketplaceClient.getMarketplaceSha(t)}normalizeSource(e){if(typeof e==`string`)return e;let t=e;return!t.type&&typeof t.source==`string`?{...t,type:t.source}:e}resolveAndInstall(e,t,n,r){this.fs.mkdirSync(r,{recursive:!0});let i=this.normalizeSource(e);try{if(typeof i==`string`){let e=(0,g.join)(this.marketplaceClient.getMarketplaceDir(t),i);if(!this.fs.existsSync(e))throw Error(`Plugin source path "${i}" not found in marketplace "${t}"`);this.fs.cpSync(e,r,{recursive:!0})}else if(i.type===`github`){let e=`https://github.com/${i.repo}.git`;this.cloneToDir(e,r,n)}else if(i.type===`url`&&typeof i.url==`string`&&i.url.endsWith(`.git`))this.cloneToDir(i.url,r,n);else if(i.type===`url`)throw Error(`URL source "${i.url}" is not a git repository (must end with .git)`);else throw Error(`Unknown source type: ${JSON.stringify(i)}`)}catch(e){throw this.fs.existsSync(r)&&this.fs.rmSync(r,{recursive:!0,force:!0}),e}}cloneToDir(e,t,n){this.fs.rmSync(t,{recursive:!0,force:!0});let r=`git clone --depth 1 ${e} ${t}`;try{this.exec(r,{timeout:6e4,stdio:`pipe`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to clone plugin "${n}": ${t}`)}}readRegistry(){if(!this.fs.existsSync(this.registryPath))return{};try{let e=this.fs.readFileSync(this.registryPath,`utf-8`),t=JSON.parse(e);return typeof t==`object`&&t?t:{}}catch{return{}}}writeRegistry(e){let t=(0,g.dirname)(this.registryPath);this.fs.existsSync(t)||this.fs.mkdirSync(t,{recursive:!0}),this.fs.writeFileSync(this.registryPath,JSON.stringify(e,null,2),`utf-8`)}};function X(e,t=new M){if(!t.existsSync(e))return{};try{let n=t.readFileSync(e,`utf-8`),r=JSON.parse(n);return typeof r==`object`&&r?r:{}}catch{return{}}}function wo(e,t,n=new M){let r=(0,g.dirname)(e);n.existsSync(r)||n.mkdirSync(r,{recursive:!0}),n.writeFileSync(e,JSON.stringify(t,null,2),`utf-8`)}function To(e,t,n=new M){let r=(0,g.join)(e,`installed_plugins.json`);if(!n.existsSync(r))return;let i;try{let e=n.readFileSync(r,`utf-8`),t=JSON.parse(e);if(typeof t!=`object`||!t)return;i=t}catch{return}let a=!1;for(let[e,r]of Object.entries(i))r.marketplace===t&&(r.installPath&&n.existsSync(r.installPath)&&n.rmSync(r.installPath,{recursive:!0,force:!0}),delete i[e],a=!0);if(a){let e=(0,g.dirname)(r);n.existsSync(e)||n.mkdirSync(e,{recursive:!0}),n.writeFileSync(r,JSON.stringify(i,null,2),`utf-8`)}}const Eo=6e4;var Do=class{pluginsDir;exec;marketplacesDir;registryPath;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.exec=e.exec,this.marketplacesDir=(0,g.join)(this.pluginsDir,`marketplaces`),this.registryPath=(0,g.join)(this.pluginsDir,`known_marketplaces.json`),this.fs=e.fs??new M}addMarketplace(e){let t=`temp-`+Date.now().toString(36),n=(0,g.join)(this.marketplacesDir,t);if(this.fs.mkdirSync(this.marketplacesDir,{recursive:!0}),e.type===`local`){if(!this.fs.existsSync(e.path))throw Error(`Local marketplace path does not exist: ${e.path}`);this.fs.cpSync(e.path,n,{recursive:!0})}else{let t=`git clone --depth 1 ${this.resolveCloneUrl(e)} ${n}`;try{this.exec(t,{timeout:Eo,stdio:`pipe`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to clone marketplace: ${t}`)}}let r=(0,g.join)(n,`.claude-plugin`,`marketplace.json`);if(!this.fs.existsSync(r))throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(e.type===`local`?`Local directory does not contain .claude-plugin/marketplace.json`:`Cloned repository does not contain .claude-plugin/marketplace.json`);let i=this.readManifestFromPath(r).name;if(!i)throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(`Marketplace manifest does not contain a "name" field`);let a=X(this.registryPath,this.fs);if(a[i])throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(`Marketplace "${i}" already exists`);let o=(0,g.join)(this.marketplacesDir,i);return this.fs.renameSync(n,o),a[i]={source:e,installLocation:o,lastUpdated:new Date().toISOString()},wo(this.registryPath,a,this.fs),i}removeMarketplace(e){let t=X(this.registryPath,this.fs),n=t[e];if(!n)throw Error(`Marketplace "${e}" not found`);To(this.pluginsDir,e,this.fs),this.fs.existsSync(n.installLocation)&&this.fs.rmSync(n.installLocation,{recursive:!0,force:!0}),delete t[e],wo(this.registryPath,t,this.fs)}updateMarketplace(e){let t=X(this.registryPath,this.fs),n=t[e];if(!n)throw Error(`Marketplace "${e}" not found`);if(!this.fs.existsSync(n.installLocation))throw Error(`Marketplace directory for "${e}" does not exist`);if(n.source.type===`local`){let e=n.source;if(!this.fs.existsSync(e.path))throw Error(`Local marketplace path does not exist: ${e.path}`);this.fs.rmSync(n.installLocation,{recursive:!0,force:!0}),this.fs.cpSync(e.path,n.installLocation,{recursive:!0})}else{let t=`git -C ${n.installLocation} pull`;try{this.exec(t,{timeout:Eo,stdio:`pipe`})}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Failed to update marketplace "${e}": ${n}`)}}n.lastUpdated=new Date().toISOString(),wo(this.registryPath,t,this.fs)}listMarketplaces(){let e=X(this.registryPath,this.fs);return Object.entries(e).map(([e,t])=>({name:e,source:t.source,lastUpdated:t.lastUpdated}))}fetchManifest(e){let t=X(this.registryPath,this.fs)[e];if(!t)throw Error(`Marketplace "${e}" not found`);let n=(0,g.join)(t.installLocation,`.claude-plugin`,`marketplace.json`);if(!this.fs.existsSync(n))throw Error(`Marketplace "${e}" does not contain .claude-plugin/marketplace.json`);return this.readManifestFromPath(n)}getMarketplaceDir(e){let t=X(this.registryPath,this.fs)[e];if(!t)throw Error(`Marketplace "${e}" not found`);return t.installLocation}getMarketplaceSha(e){let t=this.getMarketplaceDir(e);try{return this.exec(`git -C ${t} rev-parse HEAD`,{timeout:Eo,stdio:`pipe`}).toString().trim().slice(0,12)}catch{return`unknown`}}listAvailablePlugins(){let e=[],t=this.listMarketplaces();for(let{name:n}of t)try{let t=this.fetchManifest(n);for(let r of t.plugins)e.push({...r,marketplace:n})}catch{}return e}resolveCloneUrl(e){switch(e.type){case`github`:return`https://github.com/${e.repo}.git`;case`git`:return e.url;case`local`:throw Error(`Local source type does not use git cloning`);case`url`:throw Error(`URL marketplace source is not yet supported`)}}readManifestFromPath(e){let t=this.fs.readFileSync(e,`utf-8`),n=JSON.parse(t);if(typeof n!=`object`||!n)throw Error(`Invalid marketplace manifest: not an object`);if(typeof n.name!=`string`)throw Error(`Invalid marketplace manifest: missing "name" field`);return n}};function Oo(e){let t=(0,g.join)((0,g.dirname)((0,g.dirname)(e.pluginDir)),`data`,e.manifest.name);return{CLAUDE_PLUGIN_ROOT:e.pluginDir,CLAUDE_PLUGIN_PATH:e.pluginDir,CLAUDE_PLUGIN_DATA:t}}function ko(e,t){return Array.isArray(e.hooks)?{...e,hooks:e.hooks.map(e=>typeof e.command==`string`?{...e,command:e.command.replace(/\$\{CLAUDE_PLUGIN_ROOT\}/g,t)}:e)}:e}function Ao(e){let t={};for(let n of e){let e=n.hooks;if(!e)continue;let r=Oo(n),i=e.hooks??e;for(let[e,a]of Object.entries(i)){if(!Array.isArray(a))continue;t[e]||(t[e]=[]);let i=a.map(e=>{let t=ko(e,n.pluginDir);return t.env=r,t});t[e].push(...i)}}return t}function jo(e,t){if(Object.keys(t).length===0)return e;let n={};for(let[e,r]of Object.entries(t))n[e]=[...r];if(e)for(let[t,r]of Object.entries(e))Array.isArray(r)&&(n[t]||(n[t]=[]),n[t].push(...r));return n}async function Mo(e){let t=e.cwd,[n,r,i]=await Promise.all([e.config?Promise.resolve(e.config):La(t),e.bare?Promise.resolve({agentsMd:``,claudeMd:``,agentsFileEntries:[],claudeFileEntries:[]}):_o(t),e.bare?Promise.resolve({type:`unknown`,language:`unknown`}):Pr(t)]),a=e.language?{...n,language:e.language}:n,o=new So((0,g.join)((0,_.homedir)(),`.robota`,`plugins`));if(!e.bare)try{let e=o.loadPluginsSync();if(e.length>0){let t=Ao(e);a={...a,hooks:jo(a.hooks,t)}}}catch{}let s=L(t);await Po(e)||await No(e,t);let c=e.resumeSessionId&&!e.forkSession?e.resumeSessionId:void 0,{session:l,rebuildSystemMessage:u}=oa({config:a,cwd:t,context:r,projectInfo:i,permissionMode:e.permissionMode,maxTurns:e.maxTurns,terminal:Xn,sessionLogger:new f.FileSessionLogger(s.logs),permissionHandler:e.permissionHandler,provider:e.provider,onTextDelta:e.onTextDelta,onContextUpdate:e.onContextUpdate,onCompactEvent:e.onCompactEvent,onToolExecution:e.onToolExecution,sessionId:c,allowedTools:e.allowedTools,deniedTools:e.deniedTools,model:e.model,appendSystemPrompt:e.appendSystemPrompt,...e.systemPrompt?{systemPromptBuilder:()=>e.systemPrompt}:{},backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,...e.commandModules?.some(e=>e.sessionRequirements?.includes(`agent-runtime`))?{enableAgentRuntime:!0}:{},...e.commandModules||e.commandDescriptors?{commandDescriptors:[...e.commandDescriptors??[],...e.commandModules?.flatMap(e=>e.commandDescriptors??[])??[]]}:{},modelCommandExecutor:e.modelCommandExecutor,isModelCommandInvocable:e.isModelCommandInvocable,editCheckpointRecorder:e.editCheckpointRecorder,reversibleExecution:e.reversibleExecution,sandboxClient:e.sandboxClient,agentName:e.agentName,...e.additionalTools?{additionalTools:e.additionalTools}:{},...e.responseFormat?{responseFormat:e.responseFormat}:{}});return{session:l,agentsFileEntries:r.agentsFileEntries??[],claudeFileEntries:r.claudeFileEntries??[],rebuildSystemMessage:u}}async function No(e,t){if(e.workspaceManifest){if(!e.sandboxClient)throw Error(`workspaceManifest requires sandboxClient.`);await(0,u.applyWorkspaceManifest)(e.sandboxClient,e.workspaceManifest,{hostRoot:t,...e.sandboxWorkspaceRoot?{targetRoot:e.sandboxWorkspaceRoot}:{}})}}async function Po(e){if(!e.sandboxSnapshotId)return!1;if(!e.sandboxClient?.restore)throw Error(`sandboxSnapshotId requires sandboxClient with restore().`);return await e.sandboxClient.restore(e.sandboxSnapshotId),!0}async function Fo(e,t){let n=e.config??await La(e.cwd),r=n.autoCompactThreshold===void 0?`default`:`settings`,i=new R({cwd:e.cwd});t.setEditCheckpointStore(i);let a=await Mo({cwd:e.cwd,provider:e.provider,config:n,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:e.permissionHandler,resumeSessionId:t.resumeSessionId,forkSession:e.forkSession,onTextDelta:t.onTextDelta,onContextUpdate:t.onContextUpdate,onCompactEvent:t.onCompactEvent,onToolExecution:t.onToolExecution,bare:e.bare,allowedTools:e.allowedTools,deniedTools:e.deniedTools,model:e.model,appendSystemPrompt:e.appendSystemPrompt,...e.systemPrompt?{systemPrompt:e.systemPrompt}:{},language:e.language,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,...e.commandModules?{commandModules:e.commandModules}:{},editCheckpointRecorder:i,...e.reversibleExecution?{reversibleExecution:e.reversibleExecution}:{},...e.sandboxClient?{sandboxClient:e.sandboxClient}:{},...e.workspaceManifest?{workspaceManifest:e.workspaceManifest}:{},...e.sandboxWorkspaceRoot?{sandboxWorkspaceRoot:e.sandboxWorkspaceRoot}:{},...t.sandboxSnapshotId?{sandboxSnapshotId:t.sandboxSnapshotId}:{},...e.agentName?{agentName:e.agentName}:{},...e.additionalTools?{additionalTools:e.additionalTools}:{},...e.responseFormat?{responseFormat:e.responseFormat}:{},commandDescriptors:t.commandDescriptors,...t.commandDescriptors.length>0?{modelCommandExecutor:t.executeModelCommand,isModelCommandInvocable:t.isModelCommandInvocable}:{}});if(t.pendingRestoreMessages)for(let e of t.pendingRestoreMessages)Fr(a.session,e);return{session:a.session,agentsFileEntries:a.agentsFileEntries,claudeFileEntries:a.claudeFileEntries,rebuildSystemMessage:a.rebuildSystemMessage,autoCompactThresholdSource:r}}function Io(e,t,n,r,i,a,o,s,c,l){try{let u=t.getSessionId(),d=e.load(u),f=l?.snapshotId??d?.sandboxSnapshotId;e.save(Lo({session:t,sessionId:u,sessionName:n??d?.name,cwd:r,history:i,createdAt:d?.createdAt,backgroundState:a,memoryState:o,skillActivationState:s,contextReferenceState:c,...f===void 0?{}:{sandboxSnapshotId:f}}))}catch{}}function Lo(e){return{id:e.sessionId,...e.sessionName===void 0?{}:{name:e.sessionName},cwd:e.cwd,createdAt:e.createdAt??new Date().toISOString(),updatedAt:new Date().toISOString(),messages:e.session.getHistory(),history:e.history,systemPrompt:e.session.getSystemMessage(),toolSchemas:e.session.getToolSchemas(),...e.sandboxSnapshotId===void 0?{}:{sandboxSnapshotId:e.sandboxSnapshotId},...Ro(e.backgroundState),...zo(e.memoryState),...Bo(e.skillActivationState),...Vo(e.contextReferenceState)}}function Ro(e){return e?{backgroundTasks:[...e.tasks],backgroundTaskEvents:[...e.events],backgroundJobGroups:[...e.groups??[]],backgroundJobGroupEvents:[...e.groupEvents??[]]}:{}}function zo(e){return e?{memoryEvents:[...e.events],usedMemoryReferences:[...e.usedReferences]}:{}}function Bo(e){return e?{skillActivationEvents:[...e.events]}:{}}function Vo(e){return e?{contextReferences:[...e.references]}:{}}function Ho(e){return e.source===`skill`||e.source===`plugin`&&e.skillContent?`skill`:`builtin-command`}function Uo(e){let t=e.source===`skill`||e.source===`plugin`&&!!e.skillContent;return{name:e.name,kind:Ho(e),description:e.description,userInvocable:e.userInvocable!==!1,modelInvocable:e.modelInvocable===!0||t&&e.disableModelInvocation!==!0,...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.safety?{safety:e.safety}:{}}}var Wo=class{sources=[];addSource(e){this.sources.push(e)}replaceSource(e,t){this.sources=this.sources.filter(t=>t.name!==e),t!==void 0&&this.sources.push(t)}addModule(e){for(let t of e.commandSources??[])this.addSource(t)}getCommands(e){let t=[];for(let e of this.sources)t.push(...e.getCommands());if(!e)return t;let n=e.toLowerCase();return t.filter(e=>e.name.toLowerCase().startsWith(n))}resolveQualifiedName(e){let t=this.getCommands().filter(t=>t.source===`plugin`&&t.name.includes(`:`)&&t.name.endsWith(`:${e}`));return t.length===1?t[0].name:null}getSubcommands(e){let t=e.toLowerCase();for(let e of this.sources)for(let n of e.getCommands())if(n.name.toLowerCase()===t&&n.subcommands)return n.subcommands;return[]}getCapabilityDescriptors(){return this.getCommands().map(e=>Uo(e))}},Go=class{commands;constructor(e){this.commands=new Map;for(let t of e??Ko())this.commands.set(t.name,t)}register(e){this.commands.set(e.name,e)}async execute(e,t,n){let r=this.getCommand(e);return r?await this.executeCommand(r,t,n):null}getCommand(e){return this.commands.get(e)}resolveRequiresPermission(e){return e.requiresPermission===void 0?e.safety!==`read-only`:e.requiresPermission}async executeCommand(e,t,n){return await e.execute(t,n)}listCommands(){return[...this.commands.values()]}listModelInvocableCommands(){return this.listCommands().filter(e=>e.modelInvocable===!0).map(e=>({name:e.name,kind:`builtin-command`,description:e.description,userInvocable:e.userInvocable!==!1,modelInvocable:!0,...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.safety?{safety:e.safety}:{},requiresPermission:this.resolveRequiresPermission(e)}))}isModelInvocable(e){return this.commands.get(e)?.modelInvocable===!0}async executeModelInvocable(e,t,n){return this.isModelInvocable(e)?this.execute(e,t,n):null}hasCommand(e){return this.commands.has(e)}};function Ko(){return[]}function qo(e){return{name:e.name,description:e.description,source:`builtin`,...e.subcommands?{subcommands:[...e.subcommands]}:{},...e.argumentHint?{argumentHint:e.argumentHint}:{},...e.modelInvocable===void 0?{}:{modelInvocable:e.modelInvocable},...e.userInvocable===void 0?{}:{userInvocable:e.userInvocable},...e.safety?{safety:e.safety}:{}}}var Jo=class{name=`builtin`;commands;constructor(e=Ko()){this.commands=e.map(qo)}getCommands(){return this.commands}};function Yo(){let e=Ko();return{name:`sdk-builtin`,commandSources:[new Jo(e)],systemCommands:e}}function Xo(e,t,n){return{...e,providers:{...e.providers??{},[t]:n}}}function Zo(e,t){if(!e.providers?.[t])throw Error(`Provider profile "${t}" was not found`);return{...e,currentProvider:t}}function Qo(e,t,n={}){if(!e.providers?.[t])throw Error(`Provider profile "${t}" was not found`);let r={...e.providers};if(delete r[t],n.replacementCurrentProvider!==void 0&&r[n.replacementCurrentProvider]===void 0)throw Error(`Provider profile "${n.replacementCurrentProvider}" was not found`);let i={...e,providers:r};if(e.currentProvider!==t)return i;if(n.replacementCurrentProvider!==void 0)return{...i,currentProvider:n.replacementCurrentProvider};let a={...i};return delete a.currentProvider,a}function $o(e,t,n={}){if(!t.type)throw Error(`Provider profile "${e}" is missing type`);if(!t.model)throw Error(`Provider profile "${e}" is missing model`);let r=(0,c.findProviderDefinition)(n.providerDefinitions??[],t.type),i=(0,c.getProviderCredentialRequirement)(r);if(i!==void 0&&!is(t,r?.defaults,i))throw Error(`Provider profile "${e}" is missing ${os(i)}`)}function es(e,t={}){let n=ts(e,t);return $o(e.profile,n,t),{...e.setCurrent&&{currentProvider:e.profile},providers:{[e.profile]:n}}}function ts(e,t={}){let n=rs(e.type,t.providerDefinitions??[]);e.apiKey!==void 0&&e.apiKeyEnv===void 0&&console.warn(`API key stored as plain text in settings. Use --api-key-env for better security.`);let r=e.apiKeyEnv===void 0?e.apiKey??n.apiKey:(0,c.formatEnvReference)(e.apiKeyEnv),i=e.baseURL??n.baseURL;return{type:e.type,model:e.model??n.model,...ss(r)&&{apiKey:r},...i!==void 0&&{baseURL:i},...e.timeout!==void 0&&{timeout:e.timeout}}}function ns(e,t){let[n,r]=Object.entries(t.providers)[0]??[];if(!n||!r)return e;let i=Xo(e,n,r);return t.currentProvider?Zo(i,t.currentProvider):i}function rs(e,t){return(0,c.findProviderDefinition)(t,e)?.defaults??{}}function is(e,t,n){return n.anyOf.some(n=>(0,c.hasUsableSecretReference)(as(n,e,t)))}function as(e,t,n){return t[e]??n?.[e]}function os(e){return e.anyOf.join(` or `)}function ss(e){return e!==void 0&&e.length>0}async function cs(e,t,n,r){let i=n??e;if(!i)return{message:`No provider profile selected.`,success:!1};let a=t?.[i];if(!a)return{message:`Provider profile "${i}" was not found.`,success:!1};try{$o(i,a,{providerDefinitions:r.providerDefinitions})}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}let o=await((a.type?(0,c.findProviderDefinition)(r.providerDefinitions,a.type):void 0)?.probeProfile??ls)(a);return{message:o.ok?`Provider "${i}" test passed: ${o.message}`:`Provider "${i}" test failed: ${o.message}; manual configuration can continue.`,success:!0,data:{providerTest:{profile:i}}}}async function ls(e){return{ok:!0,message:`Profile fields are valid; no endpoint probe configured.`}}function us(e,t=[]){return ds(e,t)?`valid`:`incomplete`}function ds(e,t){if(typeof e.currentProvider==`string`){let n=e.providers?.[e.currentProvider];return fs(n?.type,n,t)}return!!(e.provider&&fs(e.provider.name,e.provider,t))}function fs(e,t,n){if(!t)return!1;if(!e)return(0,c.hasUsableSecretReference)(t.apiKey);let r=(0,c.findProviderDefinition)(n,e);if(r===void 0)return!1;let i=(0,c.getProviderCredentialRequirement)(r);return i===void 0?!0:ps(t,r,i)}function ps(e,t,n){return n.anyOf.some(n=>(0,c.hasUsableSecretReference)(ms(n,e,t)))}function ms(e,t,n){return t[e]??n.defaults?.[e]}function hs(e,t=[]){if(!(0,m.existsSync)(e))return`missing`;try{let n=(0,m.readFileSync)(e,`utf8`).trim();return n.length===0?`incomplete`:us(JSON.parse(n),t)}catch{return`corrupt`}}function gs(e,t=new M){return e.reduce((e,n)=>{let r=_s(n,t);return r===void 0?e:vs(e,r)},{})}function _s(e,t){if(t.existsSync(e))try{let n=t.readFileSync(e,`utf8`);return JSON.parse(n)}catch{return}}function vs(e,t){return{...e,...t,provider:e.provider!==void 0||t.provider!==void 0?{...e.provider,...t.provider}:void 0,providers:e.providers!==void 0||t.providers!==void 0?ys(e.providers,t.providers):void 0}}function ys(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]={...n[e],...r};return n}function bs(e,t,n){let r=t??e.currentProvider;if(r!==void 0){let t=e.providers?.[r];if(t===void 0)throw Error(`Provider profile "${r}" was not found in providers`);if(!t.type)throw Error(`Provider profile "${r}" is missing type`);return(0,l.normalizeProviderConfig)({name:t.type,model:t.model,apiKey:t.apiKey,baseURL:t.baseURL,timeout:t.timeout,options:t.options},n)}let i=e.provider;if(i?.name)return(0,l.normalizeProviderConfig)({name:i.name,model:i.model,apiKey:i.apiKey,baseURL:i.baseURL,timeout:i.timeout,options:i.options},n)}function xs(){return process.env.HOME??process.env.USERPROFILE??`/`}function Ss(e){let t=xs();return[(0,g.join)(t,`.robota`,`settings.json`),(0,g.join)(t,`.claude`,`settings.json`),(0,g.join)(e,`.robota`,`settings.json`),(0,g.join)(e,`.robota`,`settings.local.json`),(0,g.join)(e,`.claude`,`settings.json`),(0,g.join)(e,`.claude`,`settings.local.json`)]}function Cs(e,t={}){let n=t.settingsPaths??Ss(e),r=ks(n)??n[0];if(r===void 0)throw Error(`No settings path available for provider update`);return r}function Z(e){return G(e)}function ws(e,t,n={}){let r=ns(Z(e),es(t,n));return K(e,r),r}function Ts(e,t,n={}){let r=Z(e),i=r.providers?.[t]!==void 0,a=n.knownProviders?.[t]!==void 0,o=i||a?{...r,currentProvider:t}:Zo(r,t);return K(e,o),o}function Es(e,t,n={}){let r=n.settingsPaths??Ss(e),i=gs(r),a=n.providerOverride??i.currentProvider;if(typeof a!=`string`)throw Error(`Cannot update model: no active provider profile. Set "currentProvider" in settings.`);return Ds(r,a,t)}function Ds(e,t,n){let r=Os(e,t)??e[0];if(r===void 0)throw Error(`No settings path available for model update`);let i=Z(r),a=i.providers??{},o=a[t]??{},s={...i,providers:{...a,[t]:{...o,model:n}}};return K(r,s),{settingsPath:r,settings:s,profileName:t}}function Os(e,t){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r!==void 0&&Z(r).providers?.[t]!==void 0)return r}}function ks(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&Z(n).currentProvider!==void 0)return n}}function As(e){return gs(Ss(e))}function js(e,t={}){let n=bs(As(e),t.providerOverride,t.providerDefinitions??[]);if(n!==void 0)return n;throw Error("No provider configuration found. Run `robota` to set up.")}function Ms(e,t,n={}){let r=n.providerDefinitions??[],i=js(e,{...n,providerDefinitions:r}),a=t??i.model;return(0,l.createProviderFromConfig)({...i,model:a},r)}var Ns=class{name=`plugin`;plugins;constructor(e){this.plugins=e}getCommands(){let e=[];for(let t of this.plugins){for(let n of t.skills){let r=n.name.includes(`@`)?n.name.split(`@`)[0]:n.name;e.push({name:r,description:`(${t.manifest.name}) ${n.description}`,source:`plugin`,skillContent:n.skillContent,pluginDir:t.pluginDir})}for(let n of t.commands)e.push({name:n.name,description:n.description,source:`plugin`,skillContent:n.skillContent,pluginDir:t.pluginDir})}return e}};const Ps=f.AUTO_COMPACT_THRESHOLD,Fs=`autoCompactThreshold`;function Is(e){return e.getContextState()}function Ls(e){return e.getAutoCompactThreshold()}function Rs(e){return e.getAutoCompactThresholdSource?.()??`session`}function zs(e,t,n){if(e.setAutoCompactThreshold){e.setAutoCompactThreshold(t,n);return}let r=e.getSession();if(!r.setAutoCompactThreshold)throw Error(`Command host does not support changing auto-compact threshold.`);r.setAutoCompactThreshold(t)}function Bs(e,t){let n=qs(e);return n?(n.write({...n.read(),[Fs]:t}),!0):!1}function Vs(e){let t=qs(e);if(!t)return!1;let n={...t.read()};return delete n[Fs],t.write(n),!0}async function Hs(e,t){let n=Is(e),r=e.getSession().getMessageCount();return await e.compactContext(t),{before:n,after:Is(e),beforeMessageCount:r,afterMessageCount:e.getSession().getMessageCount()}}function Us(e){return e.listContextReferences?.()??[]}async function Ws(e,t){return e.addContextReference?e.addContextReference(t):{evicted:[],diagnostics:[`Command host does not support context reference additions.`]}}function Gs(e,t){return e.removeContextReference?.(t)??{}}function Ks(e){return e.clearContextReferences?.()??{removed:[]}}function qs(e){return e.getCommandHostAdapters?.().settings}function Js(e,t={}){let n=Ys(e.type)??`provider`,r=new Set(t.existingProfileNames??[]);if(!r.has(n))return n;let i=2;for(;r.has(`${n}-${i}`);)i+=1;return`${n}-${i}`}function Ys(e){let t=e?.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return t!==void 0&&t.length>0?t:void 0}function Xs(e){return e.listCommands?.()??[]}function Zs(e){return[`Available commands:`,...Xs(e).flatMap(e=>{let t=e.displayName??e.name,n=`/${e.name}`,r=` ${(e.displayName?`${t} (${n})`:n).padEnd(32)} — ${e.description}`;return e.example?[r,` Example: ${e.example}`]:[r]})].join(`
96
+ `)}function Qs(){return[{name:`list`,description:`List background tasks`,source:`background`},{name:`read`,description:`Read a background task log page`,source:`background`},{name:`cancel`,description:`Cancel a running background task`,source:`background`},{name:`close`,description:`Dismiss a terminal background task`,source:`background`}]}function $s(e){let t=e.promptPreview??e.commandPreview??``,n=e.unread?` unread`:``,r=e.currentAction?` (${e.currentAction})`:``,i=e.timeoutReason?` timeout=${e.timeoutReason}`:``,a=e.lastActivityAt?` lastActivityAt=${e.lastActivityAt}`:``,o=nc(e),s=t?` — ${t}`:``;return`${e.id} [${e.status}${n}${i}${a}${o}] ${e.kind}:${e.label}${r}${s}`}function ec(e){return e.length===0?`No background tasks.`:[`Background tasks:`,...e.map(e=>` ${$s(e)}`)].join(`
97
+ `)}function tc(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isNaN(t)?void 0:{offset:t}}function nc(e){let t=[];return e.worktreePath&&t.push(`worktree=${e.worktreePath}`),e.branchName&&t.push(`branch=${e.branchName}`),e.worktreeStatus&&t.push(`worktreeStatus="${rc(e.worktreeStatus)}"`),e.worktreeNextAction&&t.push(`next="${rc(e.worktreeNextAction)}"`),t.length===0?``:` ${t.join(` `)}`}function rc(e){let t=e.trim().replace(/\s+/g,` `);return t.length>160?`${t.slice(0,160)}...`:t}function ic(e,t){return e.listBackgroundTasks(t)}function ac(e,t,n){return e.readBackgroundTaskLog(t,n)}function oc(e,t,n){return e.cancelBackgroundTask(t,n)}function sc(e,t){return e.closeBackgroundTask(t)}const cc=[{code:`ko`,description:`Korean`},{code:`en`,description:`English`},{code:`ja`,description:`Japanese`},{code:`zh`,description:`Chinese`}];function lc(e=`language`){return cc.map(t=>({name:t.code,description:t.description,source:e}))}function uc(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function dc(e=`language`){return`Usage: ${e} <code> (e.g., ko, en, ja, zh)`}const fc=[`plan`,`default`,`acceptEdits`,`bypassPermissions`];function pc(e=`mode`){return[{name:`plan`,description:`Plan only, no execution`,source:e},{name:`default`,description:`Ask before risky actions`,source:e},{name:`acceptEdits`,description:`Auto-approve file edits`,source:e},{name:`bypassPermissions`,description:`Skip all permission checks`,source:e}]}function mc(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function hc(e){return fc.includes(e)}function gc(){return`Invalid mode. Valid: ${fc.join(` | `)}`}function _c(e){let t=e.getCommandHostAdapters?.().permissionMode;if(t!==void 0)return t;let n=e.getSession();return{getPermissionMode:()=>n.getPermissionMode(),setPermissionMode:e=>n.setPermissionMode(e),listSessionAllowedTools:()=>n.getSessionAllowedTools()}}function vc(e){return _c(e).getPermissionMode()}function yc(e,t){_c(e).setPermissionMode(t)}function bc(e){return _c(e).listSessionAllowedTools()}function xc(e){return{mode:vc(e),sessionAllowed:bc(e)}}function Sc(e){let t=[`Permission mode: ${e.mode}`];return e.sessionAllowed.length>0?t.push(`Session-approved tools: ${e.sessionAllowed.join(`, `)}`):t.push(`No session-approved tools.`),t.join(`
98
+ `)}const Cc={enabled:!0,gitBranch:!0};function wc(e=`statusline`){return[{name:`on`,description:`Show the status line`,source:e},{name:`off`,description:`Hide the status line`,source:e},{name:`reset`,description:`Restore default status-line fields`,source:e},{name:`git`,description:`Show or hide git branch field`,source:e}]}function Tc(e){return(e.enabled===void 0||typeof e.enabled==`boolean`)&&(e.gitBranch===void 0||typeof e.gitBranch==`boolean`)}function Ec(e){let t=e.statusline;return Oc(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:Cc.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:Cc.gitBranch}:{...Cc}}function Dc(e,t){let n=G(e),r={...Ec(n),...t};return n.statusline=r,K(e,n),r}function Oc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function kc(){return{type:`plugin-tui-requested`}}function Ac(){return{type:`plugin-registry-reload-requested`}}function jc(e){return e.getCommandHostAdapters?.().plugin}function Mc(){return[{name:`manage`,description:`Open plugin manager`,source:`plugin-manager`},{name:`install`,description:`Install a plugin`,source:`plugin-manager`},{name:`uninstall`,description:`Uninstall a plugin`,source:`plugin-manager`},{name:`enable`,description:`Enable a plugin`,source:`plugin-manager`},{name:`disable`,description:`Disable a plugin`,source:`plugin-manager`},{name:`marketplace`,description:`Manage plugin marketplaces`,source:`plugin-manager`,subcommands:[{name:`add`,description:`Add marketplace source`,source:`plugin-manager`},{name:`remove`,description:`Remove marketplace source`,source:`plugin-manager`},{name:`update`,description:`Update marketplace source`,source:`plugin-manager`},{name:`list`,description:`List marketplace sources`,source:`plugin-manager`}]}]}function Nc(e){if(e.clearConversationHistory!==void 0){e.clearConversationHistory();return}e.getSession().clearHistory()}function Pc(e){let t=e.trim();return t.length>0?t:void 0}function Fc(e){return{type:`session-renamed`,name:e}}function Ic(){return{type:`session-picker-requested`}}function Lc(){return{type:`session-exit-requested`}}function Rc(e){let t=e.getSession();return{sessionId:t.getSessionId(),messageCount:t.getMessageCount()}}function zc(e){let t=e.validateCurrentSessionReplayLog?.();if(t!==void 0)return t;let n=e.getSession().getSessionId(),r=(0,g.join)(L(e.getCwd()).logs,`${n}.jsonl`),i=(0,f.loadSessionLogEntries)(r);return{logFile:r,entryCount:i.length,validation:(0,f.validateSessionReplayLogEntries)(i)}}function Bc(e){let t=e.validation.ok?`Session replay log is valid.`:`Session replay log has ${e.validation.issues.length} issue(s).`,n=[`Log: ${e.logFile}`,`Entries: ${e.entryCount}`];if(e.validation.ok)return[t,...n].join(`
99
+ `);let r=e.validation.issues.map((e,t)=>{let n=Vc(e);return`${t+1}. ${e.code}${n}: ${e.message}`});return[t,...n,``,...r].join(`
100
+ `)}function Vc(e){let t=[];return e.executionId!==void 0&&t.push(`execution=${e.executionId}`),e.round!==void 0&&t.push(`round=${e.round}`),e.toolCallId!==void 0&&t.push(`tool=${e.toolCallId}`),t.length>0?` (${t.join(`, `)})`:``}function Hc(e=`rewind`){return[{name:`list`,description:`List edit checkpoints`,source:e},{name:`inspect`,description:`Inspect captured files and restore plans`,source:e},{name:`restore`,description:`Restore code to a checkpoint`,source:e},{name:`code`,description:`Restore code to a checkpoint`,source:e},{name:`rollback`,description:`Rollback code through a checkpoint`,source:e}]}function Uc(e){return e.listEditCheckpoints()}function Wc(e,t){if(!e.inspectEditCheckpoint)throw Error(`Checkpoint inspection is not available in this command host.`);return e.inspectEditCheckpoint(t)}function Gc(e,t){return e.restoreEditCheckpoint(t)}function Kc(e,t){return e.rollbackEditCheckpoint(t)}const qc=[/\b(api[_-]?key|secret|token|password|private key)\b/i,/\b\d{3}-\d{2}-\d{4}\b/,/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/,/주민등록|비밀번호|시크릿|토큰/u];function Jc(e){return qc.some(t=>t.test(e))}function Yc(e){return(0,g.join)(e,`.robota`,`memory`)}function Xc(){return{version:1,records:[]}}var Zc=class{fs;path;now;constructor(e,t=()=>new Date,n=new M){this.fs=n,this.path=(0,g.join)(Yc(e),`pending.json`),this.now=t}getPath(){return this.path}list(e){let t=this.read().records;return e?t.filter(t=>t.status===e):t}get(e){return this.read().records.find(t=>t.id===e)}upsert(e,t,n){let r=this.read(),i=this.now().toISOString(),a=r.records.findIndex(t=>t.id===e.id),o={...e,status:t,updatedAt:i,decisionReason:n};a>=0?r.records[a]={...r.records[a],...o}:r.records.push(o),this.write(r)}mark(e,t,n){let r=this.read(),i=r.records.findIndex(t=>t.id===e);if(i<0)throw Error(`Memory candidate not found: ${e}`);let a={...r.records[i],status:t,updatedAt:this.now().toISOString(),decisionReason:n};return r.records[i]=a,this.write(r),a}read(){if(!this.fs.existsSync(this.path))return Xc();try{return{version:1,records:JSON.parse(this.fs.readFileSync(this.path,`utf8`)).records??[]}}catch{return Xc()}}write(e){this.fs.mkdirSync((0,g.dirname)(this.path),{recursive:!0}),this.fs.writeFileSync(this.path,JSON.stringify(e,null,2),`utf8`)}};function Qc(e=`memory`){return[{name:`list`,description:`List project memory topics`,source:e},{name:`show`,description:`Show project memory index or a topic`,source:e},{name:`add`,description:`Save durable project memory`,source:e},{name:`pending`,description:`List pending memory candidates`,source:e},{name:`approve`,description:`Approve a pending memory candidate`,source:e},{name:`reject`,description:`Reject a pending memory candidate`,source:e},{name:`used`,description:`Show memory references used in the current turn`,source:e}]}function $c(e,t){return new mo(e,t)}function el(e,t){return new Zc(e,t)}function tl(e,t){let n=e.getCwd();return{project:$c(n,t),pending:el(n,t)}}function nl(e){return oo(e)}function rl(e){return Jc(e)}function il(e){return e.getUsedMemoryReferences()}function al(e,t,n=()=>new Date){e.recordMemoryEvent({...t,at:n().toISOString()})}function ol(e,t,n){let r=t?t.split(/\s+/):[],i=e;return i=i.replace(/\$ARGUMENTS\[(\d+)]/g,(e,t)=>r[Number(t)]??``),i=i.replace(/\$ARGUMENTS/g,t),i=i.replace(/\$(\d)(?!\d|\w|\[)/g,(e,t)=>r[Number(t)]??``),i=i.replace(/\$\{CLAUDE_SESSION_ID}/g,n?.sessionId??``),i=i.replace(/\$\{CLAUDE_SKILL_DIR}/g,n?.skillDir??``),i}async function sl(e,t){let n=/!`([^`]+)`/g;if(!n.test(e))return e;n.lastIndex=0;let r=e,i,a=[];for(;(i=n.exec(e))!==null;)a.push({full:i[0],command:i[1]});for(let{full:e,command:n}of a){let i=``;if(t)try{i=t(n)}catch{i=``}r=r.replace(e,i)}return r}async function cl(e,t,n,r){return e.skillContent?ol(await sl(e.skillContent,n.shellExec),t,r):null}async function ll(e,t,n,r){let i=await cl(e,t,n,r);if(i){let n=t||e.description;return`<skill name="${e.name}">\n${i}\n</skill>\n\nExecute the "${e.name}" skill: ${n}`}return`Use the "${e.name}" skill: ${t||e.description}`}async function ul(e,t,n,r){if(e.context===`fork`){if(!n.runInFork)throw Error(`Fork execution is not available. Agent runtime deps may not be initialized.`);let i=await cl(e,t,n,r)??`Use the "${e.name}" skill: ${t||e.description}`,a={};return e.agent&&(a.agent=e.agent),e.allowedTools&&(a.allowedTools=e.allowedTools),{mode:`fork`,result:await n.runInFork(i,a)}}return{mode:`inject`,prompt:await ll(e,t,n,r)}}function dl(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function fl(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function pl(e,t){let n=t.trim();return n.length>0?`${e} ${n}`:e}function ml(e){if(!e?.startsWith(`/`))return;let t=e.slice(1).trim().split(/\s+/)[0];return t&&t.length>0?t:void 0}var hl=class{getSession;getSessionId;onSubmit;onApplyResult;recordSkillActivation;runSkillInFork;onForkSkill;onBlockingCommand;shellExec;commandExecutor;skillCommandSource;commandHostAdapters;commandInvocationSource=`user`;constructor(e,t,n,r,i,a,o,s,c,l,u,d){this.getSession=r,this.getSessionId=i,this.onSubmit=a,this.onApplyResult=o,this.recordSkillActivation=s,this.runSkillInFork=c,this.onForkSkill=l,this.onBlockingCommand=u,this.shellExec=d,this.commandExecutor=new Go(e.flatMap(e=>e.systemCommands??[])),this.skillCommandSource=new Fi(t),this.commandHostAdapters=n}getCommandInvocationSource(){return this.commandInvocationSource}getCommandHostAdapters(){return this.commandHostAdapters??{}}listCommands(){return this.commandExecutor.listCommands().map(e=>({name:e.name,...e.displayName===void 0?{}:{displayName:e.displayName},description:e.description,...e.example===void 0?{}:{example:e.example}}))}listSkills(){return this.skillCommandSource.getCommands().map(e=>({name:e.name,description:e.description,source:e.source,modelInvocable:e.disableModelInvocation!==!0,userInvocable:e.userInvocable!==!1,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint},...e.context===void 0?{}:{context:e.context},...e.agent===void 0?{}:{agent:e.agent}}))}listModelInvocableCommands(){return this.commandExecutor.listModelInvocableCommands().map(e=>({name:e.name,description:e.description}))}findSkillCommand(e){let t=dl(e);return this.skillCommandSource.getCommands().find(e=>e.name.toLowerCase()===t.toLowerCase())}async executeCommand(e,t){let n=fl(e),r=this.commandExecutor.getCommand(n),i=t.trim();if(!r){let e=this.findSkillCommand(n),t=this.commandExecutor.getCommand(`skills`);return!e||!t?null:this.executeCommandWithSource(`user`,t,pl(e.name,i))}return this.executeCommandWithSource(`user`,r,i)}async executeCommandWithSource(e,t,n){let r=this.commandInvocationSource;this.commandInvocationSource=e;try{return t.lifecycle===`blocking`?this.onBlockingCommand(()=>this.executeForegroundCommand(t,n)):await this.commandExecutor.executeCommand(t,this.getSession(),n)}finally{this.commandInvocationSource=r}}async executeModelCommand(e,t){let n=this.commandInvocationSource;this.commandInvocationSource=`model`;try{return await this.commandExecutor.executeModelInvocable(e,this.getSession(),t)}finally{this.commandInvocationSource=n}}async executeSkillCommandByName(e,t,n){let r=this.findSkillCommand(e);if(!r)return null;if(n.invocationSource===`model`){if(r.disableModelInvocation===!0)return{success:!1,message:`Skill is not model-invocable: ${r.name}`};let e=await this.executeSkillWithActivation(r,t,`model-tool`);return{success:!0,message:`Skill activated: ${r.name}`,data:{skill:r.name,mode:e.mode,...e.prompt===void 0?{}:{prompt:e.prompt},...e.result===void 0?{}:{result:e.result}}}}return await this.executeUserResolvedSkillCommand(r,t,n.displayInput,n.rawInput,`user-slash`),{success:!0,message:``,data:{skill:r.name,sessionExecution:!0},effects:[{type:`session-execution-started`}]}}async executeUserResolvedSkillCommand(e,t,n,r,i){if(e.userInvocable===!1)throw Error(`Skill is not user-invocable: ${e.name}`);let a=ml(r);if(e.context===`fork`)return this.onForkSkill(e,t,n,a,i);let o=await this.executeSkillWithActivation(e,t,i,a);return o.mode===`inject`?(o.prompt&&await this.onSubmit(o.prompt,n,r),o):(await this.onApplyResult(o.result??`(empty response)`),o)}async executeSkillWithActivation(e,t,n,r){this.emitSkillActivation(e,n,`started`,r);try{let i=await ul(e,t,{runInFork:(e,t)=>this.runSkillInFork(e,t),...this.shellExec?{shellExec:this.shellExec}:{}},{sessionId:this.getSessionId()});return this.emitSkillActivation(e,n,`completed`,r,{appendHistory:!1}),i}catch(t){let i=t instanceof Error?t:Error(String(t));throw this.emitSkillActivation(e,n,`failed`,r,{error:i.message}),i}}emitSkillActivation(e,t,n,r,i={}){let a=kr({skill:e,invocation:t,status:n,...r===void 0?{}:{qualifiedName:r},...i.error===void 0?{}:{error:i.error}});this.recordSkillActivation(a,i.appendHistory??n!==`completed`)}async executeForegroundCommand(e,t){try{return await this.commandExecutor.executeCommand(e,this.getSession(),t)}catch(e){return{success:!1,message:`Error: ${e instanceof Error?e.message:String(e)}`}}}};function gl(){let e=(0,g.join)((0,_.homedir)(),`.robota`,`org-policy.json`);if(!(0,m.existsSync)(e))return null;try{let t=(0,m.readFileSync)(e,`utf8`);return JSON.parse(t)}catch{return null}}function _l(e,t){return`${e}${t?`\nContact your administrator: ${t}`:``}`}function vl(e){return e?!e.startsWith(`$ENV:`):!1}var yl=class extends Yt{session=null;listeners=new Map;initialized=!1;initPromise=null;sessionStore;sessionName;cwd;pendingRestoreMessages=null;resumeSessionId;forkSession;autoCompactThresholdSource=`default`;shutdownPromise=null;sandboxClient;sandboxSnapshotId;agentsFileEntries=[];claudeFileEntries=[];rebuildSystemMessage=null;providerDefinitions=[];orgPolicy=null;bgTracker;histTracker;skillRouter;execCtrl;constructor(e){super(),this.sessionStore=e.sessionStore,this.sessionName=e.sessionName,this.cwd=(`cwd`in e?e.cwd:void 0)??``,this.resumeSessionId=e.resumeSessionId,this.forkSession=e.forkSession??!1,this.sandboxClient=`sandboxClient`in e?e.sandboxClient:void 0,this.sandboxSnapshotId=`sandboxSnapshotId`in e?e.sandboxSnapshotId:void 0;let t=this.cwd,n=null;`session`in e&&e.session&&t&&(n=new R({cwd:t})),this.bgTracker=new Ft(()=>this.getBackgroundTaskManager(),(e,t)=>this.execCtrl.emitExecutionWorkspaceUpdated(e,t),e=>this.emit(`background_task_event`,e),e=>this.emit(`background_job_group_event`,e),()=>this.persistCurrentSession()),this.histTracker=new jr(t,()=>this.getSessionOrThrow().getSessionId(),()=>this.execCtrl.executing,()=>this.persistCurrentSession(),e=>this.emit(`skill_activation`,e),n);let r=[...`commandModules`in e?e.commandModules??[]:[]],i=`commandHostAdapters`in e?e.commandHostAdapters:void 0,a=`shellExec`in e?e.shellExec:void 0;this.skillRouter=new hl(r,t,i,()=>this,()=>this.session?.getSessionId()??``,(e,t,n)=>this.submit(e,t,n),e=>this.execCtrl.applyForkSkillResult(e),(e,t)=>this.histTracker.recordSkillActivationEvent(e,t),(e,t)=>dr(e,t,this.getSessionOrThrow()),(e,t,n,r,i)=>this.execCtrl.executeForkSkillCommand(e,t,n,r,i,(e,t,n)=>this.submit(e,t,n)),e=>this.execCtrl.executeForegroundCommand(e,(e,t,n)=>this.submit(e,t,n)),a),this.execCtrl=new lr(this.histTracker,this.skillRouter,{getSession:()=>this.session,getSessionOrThrow:()=>this.getSessionOrThrow(),getCwd:()=>this.getCwd(),getContextState:()=>this.getContextState(),getExecutionWorkspaceSnapshot:()=>this.getExecutionWorkspaceSnapshot(),emit:(e,...t)=>this.emit(e,...t),persistSession:()=>this.persistCurrentSession()}),`providerDefinitions`in e&&(this.providerDefinitions=e.providerDefinitions??[]),`orgPolicy`in e&&(this.orgPolicy=e.orgPolicy??null);let o=this.configureInjectedSession(e);this.restoreSessionRecordIfNeeded(e),this.startAsyncInitializationIfNeeded(e,o),this.initialized&&this.bgTracker.subscribe(this.session),this.initialized&&this.persistCurrentSession()}configureInjectedSession(e){return`session`in e&&e.session?(this.session=e.session,this.autoCompactThresholdSource=`session`,this.initialized=!0,!0):!1}restoreSessionRecordIfNeeded(e){if(!e.resumeSessionId||!this.sessionStore)return;let t=Ir(this.sessionStore,e.resumeSessionId,this.forkSession,this.session);this.histTracker.restoreState({history:t.history,memoryEvents:t.memoryEvents,usedMemoryReferences:t.usedMemoryReferences,contextReferences:t.contextReferences,skillActivationEvents:t.skillActivationEvents}),t.sessionName&&(this.sessionName=t.sessionName),this.bgTracker.restoreState({tasks:t.backgroundTasks,taskEvents:t.backgroundTaskEvents,groups:t.backgroundJobGroups,groupEvents:t.backgroundJobGroupEvents}),this.pendingRestoreMessages=t.pendingRestoreMessages,this.sandboxSnapshotId=this.forkSession?void 0:t.sandboxSnapshotId}startAsyncInitializationIfNeeded(e,t){if(t)return;let n=e;this.initPromise=this.initializeAsync(n)}async initializeAsync(e){let t=await Fo(e,{sandboxSnapshotId:this.sandboxSnapshotId,resumeSessionId:this.resumeSessionId,pendingRestoreMessages:this.pendingRestoreMessages,onTextDelta:e=>this.execCtrl.handleTextDelta(e),onContextUpdate:e=>this.emit(`context_update`,e),onCompactEvent:e=>this.execCtrl.handleCompactEvent(e),onToolExecution:e=>this.execCtrl.handleToolExecution(e),executeModelCommand:(e,t)=>this.executeModelCommand(e,t),isModelCommandInvocable:e=>this.skillRouter.commandExecutor.isModelInvocable(e),commandDescriptors:this.skillRouter.commandExecutor.listModelInvocableCommands(),setEditCheckpointStore:e=>this.histTracker.setEditCheckpointStore(e)});this.session=t.session,this.agentsFileEntries=t.agentsFileEntries,this.claudeFileEntries=t.claudeFileEntries,this.rebuildSystemMessage=t.rebuildSystemMessage,this.autoCompactThresholdSource=t.autoCompactThresholdSource,this.histTracker.recordSystemContextFiles([...t.agentsFileEntries,...t.claudeFileEntries]),this.pendingRestoreMessages=null,this.initialized=!0,this.bgTracker.subscribe(this.session),this.persistCurrentSession()}async ensureInitialized(){!this.initialized&&this.initPromise&&await this.initPromise}getSessionOrThrow(){if(!this.session)throw Error(`InteractiveSession not initialized. Call submit() or await initialization.`);return this.session}getCwd(){if(!this.cwd)throw Error(`cwd is not set — provide cwd in session options`);return this.cwd}get sessionId(){return this.session?.getSessionId()??``}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){this.listeners.get(e)?.delete(t)}emit(e,...t){let n=this.listeners.get(e);if(n)for(let e of n)e(...t)}async submit(e,t,n){if(await this.ensureInitialized(),this.execCtrl.shuttingDown)throw Error(`Interactive session is shutting down.`);if(this.execCtrl.executing){this.execCtrl.pendingPrompt=e,this.execCtrl.pendingDisplayInput=t,this.execCtrl.pendingRawInput=n;return}await this.execCtrl.executePrompt(e,t,n,this.agentsFileEntries,this.claudeFileEntries,this.rebuildSystemMessage,(e,t)=>{this.agentsFileEntries=e,this.claudeFileEntries=t,this.histTracker.recordSystemContextFiles([...e,...t])},(e,t,n)=>this.submit(e,t,n))}abort(){this.execCtrl.clearPendingQueue(),this.session?.abort()}shutdown(e={}){return this.shutdownPromise?this.shutdownPromise:(this.execCtrl.shuttingDown=!0,this.shutdownPromise=(async()=>{await this.ensureInitialized(),this.execCtrl.clearPendingQueue();let t=this.session;t?.abort(),await this.getBackgroundTaskManager()?.shutdown(e.message??`Session shutdown`),this.bgTracker.dispose(),await this.captureSandboxSnapshot(),this.persistCurrentSession(),await t?.shutdown({reason:e.reason??`other`}),this.listeners.clear()})(),this.shutdownPromise)}get isInitialized(){return this.initialized}getAutoCompactThresholdSource(){return this.autoCompactThresholdSource}getAutoCompactThreshold(){return this.getSessionOrThrow().getAutoCompactThreshold()}getSession(){return this.getSessionOrThrow()}getAgentJobCapability(){return this}setAutoCompactThreshold(e,t=`session`){this.getSessionOrThrow().setAutoCompactThreshold(e),this.autoCompactThresholdSource=t,this.emit(`context_update`,this.getContextState()),this.persistCurrentSession()}clearConversationHistory(){this.getSessionOrThrow().clearHistory(),this.histTracker.clearHistory(),this.persistCurrentSession(),this.emit(`context_update`,this.getContextState())}getName(){return this.sessionName}attachTransport(e){e.attach(this)}setName(e){if(this.sessionName=e,this.sessionStore&&this.session)try{let t=this.getSessionOrThrow().getSessionId(),n=this.sessionStore.load(t);n&&(n.name=e,n.updatedAt=new Date().toISOString(),this.sessionStore.save(n))}catch{}}getBackgroundTaskManager(){if(this.session)return Le(this.session)??A(this.session)?.backgroundTaskManager}async captureSandboxSnapshot(){if(this.sandboxClient?.snapshot)try{this.sandboxSnapshotId=await this.sandboxClient.snapshot()}catch(e){let t=e instanceof Error?e:Error(String(e));this.histTracker.append((0,c.messageToHistoryEntry)((0,c.createSystemMessage)(`Sandbox snapshot error: ${t.message}`))),this.emit(`error`,t)}}persistCurrentSession(){if(!this.sessionStore||!this.session)return;let e=this.bgTracker.getState(),t=this.histTracker.getState();Io(this.sessionStore,this.session,this.sessionName,this.cwd??``,t.history,{tasks:e.tasks,events:e.taskEvents,groups:e.groups,groupEvents:e.groupEvents},{events:t.memoryEvents,usedReferences:t.usedMemoryReferences},{events:t.skillActivationEvents},{references:t.contextReferences},{snapshotId:this.sandboxSnapshotId})}async switchProvider(e){let t=this.getSessionOrThrow(),n=this.getCwd(),r=js(n,{providerOverride:e,providerDefinitions:this.providerDefinitions}),i=Ms(n,void 0,{providerOverride:e,providerDefinitions:this.providerDefinitions});t.swapProvider(i,r.model)}async executeCommand(e,t){if(this.orgPolicy?.blockedCommands?.includes(e))return{message:_l(`Command /${e} is blocked by your organization policy.`,this.orgPolicy.adminContact),success:!1};let n=await super.executeCommand(e,t);if(n===null)return null;let r=n.effects?.find(e=>e.type===`provider-hot-swap-requested`);if(r){let{orgPolicy:e}=this;return e?.allowedProviders&&!e.allowedProviders.includes(r.profileName)?{message:_l(`Provider "${r.profileName}" is not allowed by your organization policy. Allowed: ${e.allowedProviders.join(`, `)}.`,e.adminContact),success:!1}:(await this.switchProvider(r.profileName),{...n,effects:n.effects?.filter(e=>e.type!==`provider-hot-swap-requested`)})}return n}};function bl(e,t=new M){let n=L(e);return new wl(n.sessions,n.logs,t)}function xl(e,t){return(e?.list()??[]).filter(e=>e.cwd===t).sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:e.id,...e.name===void 0?{}:{name:e.name},cwd:e.cwd,updatedAt:e.updatedAt,messageCount:e.messages.length,preview:Tl(e.messages)}))}function Sl(e,t){return xl(e,t)[0]?.id}function Cl(e,t){return(e?.list()??[]).find(e=>e.id===t||e.name===t)?.id}var wl=class{store;logsDir;fs;constructor(e,t,n=new M){this.store=new f.SessionStore(e),this.logsDir=t,this.fs=n}save(e){this.store.save(El(e))}load(e){let t=this.store.load(e);return t===void 0?this.loadFromReplayLog(e):Dl(t)}list(){let e=this.store.list().map(Dl),t=new Set(e.map(e=>e.id));for(let n of this.listReplayLogRecords())t.has(n.id)||e.push(n);return e.sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}delete(e){this.store.delete(e)}loadFromReplayLog(e){if(!this.logsDir)return;let t=(0,f.replaySessionLogEntries)((0,f.loadSessionLogEntries)((0,g.join)(this.logsDir,`${e}.jsonl`)));if(!t.sessionId||t.messages.length===0)return;let n=t.backgroundTaskEvents,r=t.backgroundJobGroupEvents;return{id:t.sessionId,cwd:t.cwd??``,createdAt:t.createdAt??t.updatedAt??new Date(0).toISOString(),updatedAt:t.updatedAt??t.createdAt??new Date(0).toISOString(),messages:t.messages,history:t.history,backgroundTasks:Ol(n),backgroundTaskEvents:n,backgroundJobGroups:Al(r),backgroundJobGroupEvents:r,skillActivationEvents:[],memoryEvents:t.memoryEvents}}listReplayLogRecords(){return!this.logsDir||!this.fs.existsSync(this.logsDir)?[]:this.fs.readdirSync(this.logsDir).filter(e=>e.endsWith(`.jsonl`)).map(e=>this.loadFromReplayLog(e.slice(0,-6))).filter(e=>e!==void 0)}};function Tl(e){for(let t of[...e].reverse())if(t.role===`assistant`&&typeof t.content==`string`)return t.content.replace(/[\n\r]+/g,` `).trim();return``}function El(e){return{...e}}function Dl(e){return{id:e.id,...e.name===void 0?{}:{name:e.name},cwd:e.cwd,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:e.messages,...e.history===void 0?{}:{history:e.history},...e.systemPrompt===void 0?{}:{systemPrompt:e.systemPrompt},...e.toolSchemas===void 0?{}:{toolSchemas:e.toolSchemas},...e.backgroundTasks===void 0?{}:{backgroundTasks:e.backgroundTasks},...e.backgroundTaskEvents===void 0?{}:{backgroundTaskEvents:e.backgroundTaskEvents},...e.backgroundJobGroups===void 0?{}:{backgroundJobGroups:e.backgroundJobGroups},...e.backgroundJobGroupEvents===void 0?{}:{backgroundJobGroupEvents:e.backgroundJobGroupEvents},...e.skillActivationEvents===void 0?{}:{skillActivationEvents:e.skillActivationEvents},...e.memoryEvents===void 0?{}:{memoryEvents:e.memoryEvents},...e.usedMemoryReferences===void 0?{}:{usedMemoryReferences:e.usedMemoryReferences},...e.contextReferences===void 0?{}:{contextReferences:e.contextReferences},...e.sandboxSnapshotId===void 0?{}:{sandboxSnapshotId:e.sandboxSnapshotId}}}function Ol(e){let t=new Map;for(let n of e){let e=kl(n);e&&t.set(e.id,e)}return[...t.values()]}function kl(e){switch(e.type){case`background_task_created`:case`background_task_started`:case`background_task_updated`:case`background_task_completed`:case`background_task_failed`:case`background_task_cancelled`:return e.task;default:return}}function Al(e){let t=new Map;for(let n of e)t.set(n.group.id,n.group);return[...t.values()]}function jl(e){let t=new yl({cwd:e.cwd??process.cwd(),provider:e.provider,permissionMode:e.permissionMode??`bypassPermissions`,maxTurns:e.maxTurns,permissionHandler:e.permissionHandler,additionalTools:e.additionalTools,...e.responseFormat?{responseFormat:e.responseFormat}:{}});return e.onTextDelta&&t.on(`text_delta`,e.onTextDelta),async e=>new Promise((n,r)=>{let i=e=>{s(),n(e.response)},a=e=>{s(),n(e.response)},o=e=>{s(),r(e)},s=()=>{t.off(`complete`,i),t.off(`interrupted`,a),t.off(`error`,o)};t.on(`complete`,i),t.on(`interrupted`,a),t.on(`error`,o),t.submit(e).catch(e=>{s(),r(e instanceof Error?e:Error(String(e)))})})}const Ml=[`preferences`,`view-state`,`memory-projections`,`task-associations`,`workflow-metadata`,`inspection-index`],Nl=[{category:`preferences`,purpose:`User-local UI and display preferences.`,mayExecuteCommands:!1},{category:`view-state`,purpose:`Last selected panels, filters, and navigation state.`,mayExecuteCommands:!1},{category:`memory-projections`,purpose:`Inspectable local memory item projections and user choices.`,mayExecuteCommands:!1},{category:`task-associations`,purpose:`User-local associations between sessions, tasks, and background items.`,mayExecuteCommands:!1},{category:`workflow-metadata`,purpose:`Transparent workflow metadata that is not repo-owned.`,mayExecuteCommands:!1},{category:`inspection-index`,purpose:`Category and item summaries for user inspection and deletion.`,mayExecuteCommands:!1}];function Pl(e){return e.toISOString()}function Fl(e,t){if(t.trim().length===0)throw Error(`${e} must not be empty.`);if(!g.default.isAbsolute(t))throw Error(`${e} must be an absolute path: ${t}`)}function Il(){return process.env.HOME??(0,_.homedir)()}function Ll(e,t){let n=g.default.relative(e,t);return n===``||!n.startsWith(`..`)&&!g.default.isAbsolute(n)}async function Rl(e,t){let n=e;for(;g.default.dirname(n)!==n;)try{let r=await t.realpath(n),i=g.default.relative(n,e);return g.default.resolve(r,i)}catch{n=g.default.dirname(n)}try{return await t.realpath(n)}catch{return g.default.resolve(e)}}async function zl(e){let t=e.fsAsync??new N,n=g.default.resolve(e.activeRepositoryRoot);Fl(`activeRepositoryRoot`,n);let r=e.storageRoot===void 0?g.default.join(e.homeDir??Il(),`.robota`):e.storageRoot;Fl(`userLocalStorageRoot`,r);let i=g.default.resolve(r),a=await Rl(i,t);if(Ll(await Rl(n,t),a))throw Error(`User-local storage root must be outside the active repository: ${i}`);return i}function Bl(e,t){return g.default.join(e,t)}async function Vl(e,t,n){let r=Bl(e,t),i;try{i=await n.readdir(r,{withFileTypes:!0})}catch{return[]}return(await Promise.all(i.map(async i=>{let a=g.default.join(r,i.name),o=await n.stat(a),s=i.name;return{root:e,category:t,key:s,summary:`${t}/${s}`,source:`user-local-storage`,scope:`user`,storageLocation:a,createdAt:Pl(new Date(o.birthtimeMs)),lastUsedAt:Pl(new Date(o.mtimeMs)),enabled:!0,deleteAvailable:!0,disableAvailable:!1}}))).sort((e,t)=>e.key.localeCompare(t.key))}async function Hl(e){let t=e.fsAsync??new N,n=await zl(e),r=g.default.resolve(e.activeRepositoryRoot),i=e.createDirectories??!0;return i&&await t.mkdir(n,{recursive:!0}),{root:n,activeRepositoryRoot:r,categories:await Promise.all(Nl.map(async e=>{let r=Bl(n,e.category);i&&await t.mkdir(r,{recursive:!0});let a=await Vl(n,e.category,t);return{category:e.category,purpose:e.purpose,mayExecuteCommands:e.mayExecuteCommands,storageLocation:r,itemCount:a.length,items:a}})),generatedAt:Pl((e.now??(()=>new Date))())}}const Ul=[`view-preference`,`last-visible-cwd`,`background-selection`,`task-association`,`display-preference`,`inspection-choice`],Wl=`.json`,Gl=/^[a-z0-9][a-z0-9._-]*$/u,Kl={"view-preference":`May affect UI panel, filter, density, or sorting display/navigation only.`,"last-visible-cwd":`May display or preselect an already visible workspace context only.`,"background-selection":`May restore the selected background entry in local UI only.`,"task-association":`May group visible tasks by a local association only.`,"display-preference":`May affect local text wrapping, compactness, or visibility only.`,"inspection-choice":`May affect inspection display choices only.`};function ql(e){return e.toISOString()}function Jl(e){return Ul.includes(e)}function Yl(e){if(!Jl(e))throw Error(`Unsupported user-local memory category: ${e}`);return e}function Xl(e,t){let n=t.trim();if(n.length===0)throw Error(`${e} must not be empty.`);if(n.length>80||!Gl.test(n))throw Error(`${e} must use lowercase letters, numbers, dots, underscores, or hyphens: ${t}`);return n}function Zl(e,t,n){let r=t.trim().replace(/\s+/g,` `);if(r.length===0)throw Error(`${e} must not be empty.`);return r.length>n?r.slice(0,n):r}function Ql(e){return Zl(`value`,e,240)}function $l(e,t){return`${e}__${t}${Wl}`}async function eu(e){let t=await zl(e);return{root:t,memoryRoot:g.default.join(t,`memory-projections`)}}function tu(e,t){let n=JSON.parse(e),r=Q(n,`category`);if(n.schemaVersion!==1)throw Error(`Unsupported user-local memory schema at ${t}`);return{schemaVersion:1,category:Yl(r),key:Q(n,`key`),value:Q(n,`value`),summary:Q(n,`summary`),source:Q(n,`source`),scope:Q(n,`scope`),createdAt:Q(n,`createdAt`),lastUsedAt:Q(n,`lastUsedAt`),enabled:nu(n,`enabled`)}}function Q(e,t){let n=e[t];if(typeof n!=`string`)throw Error(`Invalid user-local memory field: ${t}`);return n}function nu(e,t){let n=e[t];if(typeof n!=`boolean`)throw Error(`Invalid user-local memory field: ${t}`);return n}function ru(e,t,n){return{root:e,category:n.category,key:n.key,summary:n.summary,valueSummary:Ql(n.value),source:n.source,scope:n.scope,storageLocation:t,createdAt:n.createdAt,lastUsedAt:n.lastUsedAt,enabled:n.enabled,displayNavigationRule:Kl[n.category],commandExecutionEffect:`none`,deleteAvailable:!0,disableAvailable:!0}}async function iu(e,t,n){return ru(e,t,tu(await n.readFile(t,`utf8`),t))}async function au(e){let t=Yl(e.category),n=Xl(`key`,e.key),{root:r,memoryRoot:i}=await eu(e);return{root:r,storageLocation:g.default.join(i,$l(t,n))}}async function ou(e){let t=e.fsAsync??new N,n=Yl(e.category),r=Xl(`key`,e.key),i=Zl(`summary`,e.summary,240),a=Zl(`source`,e.source,80),o=Zl(`scope`,e.scope??`user`,120),s=Ql(e.value),c=ql((e.now??(()=>new Date))()),{root:l,memoryRoot:u}=await eu(e),d=g.default.join(u,$l(n,r)),f=c;try{f=tu(await t.readFile(d,`utf8`),d).createdAt}catch(e){if(e instanceof Error&&e.message.includes(`ENOENT`))f=c;else throw e}let p={schemaVersion:1,category:n,key:r,value:s,summary:i,source:a,scope:o,createdAt:f,lastUsedAt:c,enabled:!0};return await t.mkdir(u,{recursive:!0}),await t.writeFile(d,`${JSON.stringify(p,null,2)}\n`,`utf8`),ru(l,d,p)}async function su(e){let t=e.fsAsync??new N,{root:n,memoryRoot:r}=await eu(e),i;try{i=await t.readdir(r,{withFileTypes:!0})}catch{i=[]}let a=await Promise.all(i.filter(e=>e.isFile()&&e.name.endsWith(Wl)).map(e=>iu(n,g.default.join(r,e.name),t)));return{root:n,activeRepositoryRoot:g.default.resolve(e.activeRepositoryRoot),items:a.sort((e,t)=>`${e.category}/${e.key}`.localeCompare(`${t.category}/${t.key}`))}}async function cu(e){let t=e.fsAsync??new N,{root:n,storageLocation:r}=await au(e);return iu(n,r,t)}async function lu(e){let t=e.fsAsync??new N,{root:n,storageLocation:r}=await au(e),i={...tu(await t.readFile(r,`utf8`),r),enabled:!1,lastUsedAt:ql((e.now??(()=>new Date))())};return await t.writeFile(r,`${JSON.stringify(i,null,2)}\n`,`utf8`),ru(n,r,i)}async function uu(e){let t=e.fsAsync??new N,{storageLocation:n}=await au(e);return await t.rm(n),{category:e.category,key:e.key,deleted:!0}}async function du(e){let t=await cu(e);return t.enabled?t:null}const fu=[`test`,`typecheck`,`build`],pu={idle:{checkpoint_created:`checkpointed`,cancelled:`cancelled`},checkpointed:{edits_started:`editing`,cancelled:`cancelled`},editing:{edits_applied:`verifying`,verify_failed:`failed`,cancelled:`cancelled`},verifying:{verify_passed:`passed`,verify_failed:`failed`,cancelled:`cancelled`},passed:{},failed:{rollback_completed:`rolled_back`,cancelled:`cancelled`},rolled_back:{},cancelled:{}};function mu(e){return e?Array.from(new Set(e.map(e=>e.trim()).filter(Boolean))):[]}function hu(e){return e.flatMap(e=>fu.map(t=>({id:`package-${t}:${e}`,phase:`verify`,description:`Run ${t} for ${e} in a child process against the new on-disk tree.`,required:!0,command:`pnpm --filter ${e} ${t}`})))}function gu(){return[{id:`checkpoint`,phase:`checkpoint`,description:`Create a recoverable turn-level checkpoint before the first mutation.`,required:!0},{id:`atomic-edit`,phase:`edit`,description:`Apply Write/Edit mutations through same-directory temp files and atomic rename.`,required:!0},{id:`handoff`,phase:`handoff`,description:`Keep the current process on already-loaded code and run verification child processes against disk.`,required:!0}]}function _u(e){return{id:`harness-verify`,phase:`verify`,description:`Run Robota harness verification as the local CI-like gate.`,required:!0,command:`pnpm harness:verify -- --base-ref ${e} --skip-record-check`}}function vu(){return{id:`rollback-on-failure`,phase:`recover`,description:`Use the existing edit checkpoint restore path if verification fails.`,required:!0}}function yu(e){if(e.changedFiles.length===0)throw Error(`Self-hosting verification requires at least one changed file.`);let t=e.baseRef??`origin/develop`,n=mu(e.packageScopes),r=[...gu(),...hu(n),_u(t),vu()];return{changedFiles:[...e.changedFiles],packageScopes:n,baseRef:t,steps:r}}function bu(e,t){let n=pu[e][t];if(!n)throw Error(`Invalid self-hosting loop transition: ${e} -> ${t}`);return n}function xu(e){return e}function Su(e){if(!e||e.length===0)return;let[t,...n]=e;if(t!==void 0)return[t,...n]}function Cu(e){let t=Su(e),n=t===void 0?d.z.string().describe(`Registered model-invocable command name to execute`):d.z.enum(t).describe(`Registered model-invocable command name to execute`);return d.z.object({command:n,args:d.z.string().optional().describe(`Arguments to pass to the command`)})}function wu(e){if(e.commandNames!==void 0)return e.commandNames;if(e.commandDescriptors!==void 0)return e.commandDescriptors.map(e=>k(e.name))}function Tu(e){return`- ${k(e.name)}${e.argumentHint?` ${e.argumentHint}`:``}: ${e.description}`}function Eu(e){let t=`Executes a registered model-invocable Robota command through the command registry. Accepted command names and argument grammar come from registered command descriptors.`;return e===void 0||e.length===0?t:[t,`Use the registered command descriptors below as the authority for when to call this tool.`,``,`Registered model-invocable commands:`,...e.map(Tu)].join(`
101
+ `)}function Du(e){let t=Cu(wu(e));return(0,u.createZodFunctionTool)(`ExecuteCommand`,Eu(e.commandDescriptors),xu(t),async n=>{let r=t.parse(n),i=k(r.command);return e.isModelInvocable(i)?ut(i,await e.execute(i,r.args??``)):JSON.stringify({success:!1,command:i,error:`Command is not model-invocable: ${i}`})})}function Ou(e){return/^\/\S/.test(e)}function ku(e){let t=e.slice(1).trim().split(/\s+/);return{name:t[0]??``,args:t.slice(1).filter(e=>e.length>0)}}function Au(e){if(!Ou(e))return{type:`user-message`,text:e};let{name:t,args:n}=ku(e);return{type:`slash-command`,name:t,args:n}}function ju(e,t){return t.type===`pick`?{type:`pick`,id:e,title:`/${e}`,items:t.getItems()}:{type:`confirm`,id:e,message:t.message}}function Mu(e,t){return t.type===`cancelled`?null:e.type===`pick`&&t.type===`pick`?[t.item.value]:e.type===`confirm`&&t.type===`confirm`?[]:null}function Nu(e){return e.map(e=>({name:e.name,description:e.description}))}function Pu(e,t){let n=``,r=e=>{n+=e,t.write({type:`assistant-chunk`,chunk:e})},i=()=>{t.write({type:`assistant-done`,fullText:n}),n=``,t.setBusy(!1)},a=e=>{t.write({type:`tool-call`,id:e.executionId??e.toolName,name:e.toolName,args:e.firstArg})},o=e=>{t.write({type:`tool-result`,id:e.executionId??e.toolName,name:e.toolName,result:e.toolResultData??e.result})},s=e=>{t.setBusy(!1),t.write({type:`error`,error:e})},c=()=>{t.setBusy(!1)};return e.on(`text_delta`,r),e.on(`complete`,i),e.on(`tool_start`,a),e.on(`tool_end`,o),e.on(`error`,s),e.on(`interrupted`,c),()=>{e.off(`text_delta`,r),e.off(`complete`,i),e.off(`tool_start`,a),e.off(`tool_end`,o),e.off(`error`,s),e.off(`interrupted`,c)}}function Fu(e){let{channel:t,commandModules:n,_testSession:r}=e,i=null,a=null,o={};for(let e of n)e.interactionHints&&Object.assign(o,e.interactionHints);async function s(e){if(!i)return;let n=Au(e);if(n.type===`user-message`){t.write({type:`user-message`,text:e}),t.setBusy(!0),await i.submit(e);return}let{name:r,args:a}=n,s=o[r],c=a;if(s&&a.length===0){let e=Mu(s,await t.requestAction(ju(r,s)));if(e===null)return;c=e}let l=await i.executeCommand(r,c.join(` `));l?t.write({type:`command-result`,name:r,output:l.message}):t.write({type:`error`,error:Error(`Unknown command "/${r}". Type /help for help.`)})}return{async start(){if(r)i=r;else{let{provider:t,cwd:r,sessionStore:a}=e;if(!t)throw Error(`createInteractiveRuntime: provider is required`);if(!r)throw Error(`createInteractiveRuntime: cwd is required`);i=new yl({provider:t,cwd:r,sessionStore:a,commandModules:n})}a=Pu(i,t);let o=i.listCommands();t.setAvailableCommands(Nu(o)),t.onSubmit(s),await t.start()},async stop(){a?.(),await t.stop(),await i?.shutdown(),i=null}}}const Iu=[`Allow once`,`Allow for this session`,`Deny`];function Lu(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}async function Ru(e,t,n){e.writeLine(``),e.writeError(`[Permission Required] Tool: ${t}`),e.writeLine(` ${Lu(n)}`),e.writeLine(``);let r=await e.select(Iu,0);return r===1?`allow-session`:r===0}const zu={usedTokens:0,maxTokens:2e5,usedPercentage:0,remainingPercentage:100},Bu={sessionId:`test-session-id`,updatedAt:new Date().toISOString(),entries:[]},Vu={id:``,parentSessionId:`test-session-id`,waitPolicy:`wait_all`,taskIds:[],status:`completed`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),results:[]};function Hu(e){return{submit:()=>Promise.resolve(),abort:()=>{},cancelQueue:()=>{},shutdown:()=>Promise.resolve(),isExecuting:()=>!1,getPendingPrompt:()=>null,getMessages:()=>[],getContextState:()=>({...zu}),getSession:()=>({getSessionId:()=>`test-session-id`}),getCwd:()=>`/workspace`,executeCommand:()=>Promise.resolve(null),listCommands:()=>[],on:()=>{},off:()=>{},listBackgroundTasks:()=>[],getBackgroundTask:()=>void 0,cancelBackgroundTask:()=>Promise.resolve(),closeBackgroundTask:()=>Promise.resolve(),sendBackgroundTask:()=>Promise.resolve(),readBackgroundTaskLog:()=>Promise.resolve({taskId:``,lines:[]}),listBackgroundJobGroups:()=>[],getBackgroundJobGroup:()=>void 0,createBackgroundJobGroup:()=>({...Vu}),waitBackgroundJobGroup:()=>Promise.resolve({...Vu}),getExecutionWorkspaceSnapshot:()=>({...Bu}),listAgentDefinitions:()=>[],listAgentJobs:()=>[],spawnAgentJob:()=>Promise.resolve({id:`agent_1`,type:`general-purpose`,label:`general-purpose`,parentSessionId:`test-session-id`,status:`running`,mode:`background`,depth:1,cwd:`/workspace`,promptPreview:``,updatedAt:new Date().toISOString()}),sendAgentJob:()=>Promise.resolve(),cancelAgentJob:()=>Promise.resolve(),closeAgentJob:()=>Promise.resolve(),...e}}function Uu(){let e=W();return{deleted:zi(e),path:e}}function Wu(e){try{let t=Gu(e);if(!t)return;let n=(0,m.readFileSync)((0,g.join)(t,`HEAD`),`utf8`).trim();if(!n)return;if(n.startsWith(`ref: `)){let e=n.slice(5).trim();return e.startsWith(`refs/heads/`)?e.slice(11):e}return n.slice(0,7)}catch{return}}function Gu(e){let t=(0,g.resolve)(e),n=(0,g.dirname)(t);for(;n!==t;){let e=Ku((0,g.join)(t,`.git`),t);if(e)return e;t=n,n=(0,g.dirname)(t)}return Ku((0,g.join)(t,`.git`),t)}function Ku(e,t){if(!(0,m.existsSync)(e))return;let n=(0,m.lstatSync)(e);if(n.isDirectory())return e;if(!n.isFile())return;let r=(0,m.readFileSync)(e,`utf8`).trim();if(!r.startsWith(`gitdir:`))return;let i=r.slice(7).trim();return(0,g.isAbsolute)(i)?i:(0,g.resolve)(t,i)}function qu(e,t){let n=Yu(e),r=Yu(t);if(n===void 0||r===void 0)return Math.sign(e.localeCompare(t));let i=Xu(n.major,r.major)||Xu(n.minor,r.minor)||Xu(n.patch,r.patch);return i===0?Zu(n.prerelease,r.prerelease):i}function Ju(e,t){return qu(e,t)>0}function Yu(e){let[t,n]=(e.trim().replace(/^v/,``).split(`+`)[0]??``).split(`-`,2),[r,i,a]=t.split(`.`),o=$(r),s=$(i),c=$(a);if(!(o===void 0||s===void 0||c===void 0))return{major:o,minor:s,patch:c,prerelease:n?n.split(`.`):[]}}function $(e){if(!(e===void 0||!/^\d+$/.test(e)))return Number(e)}function Xu(e,t){return Math.sign(e-t)}function Zu(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=Qu(n,i);if(a!==0)return a}return 0}function Qu(e,t){let n=$(e),r=$(t);return n!==void 0&&r!==void 0?Xu(n,r):n===void 0?r===void 0?Math.sign(e.localeCompare(t)):1:-1}function $u(e){let t=(0,g.dirname)((0,ee.fileURLToPath)(e)),n=[(0,g.join)(t,`..`,`..`,`package.json`),(0,g.join)(t,`..`,`package.json`)];for(let e of n)try{let t=(0,m.readFileSync)(e,`utf-8`),n=JSON.parse(t);if(n.version!==void 0&&n.name!==void 0)return n.version}catch{continue}return`0.0.0`}function ed(e=process.env.HOME??process.env.USERPROFILE??`/`){return(0,g.join)(e,`.robota`,`update-check.json`)}function td(e){if((0,m.existsSync)(e))try{return gd(JSON.parse((0,m.readFileSync)(e,`utf8`)))}catch{return}}function nd(e,t){(0,m.mkdirSync)((0,g.dirname)(e),{recursive:!0}),(0,m.writeFileSync)(e,JSON.stringify(t,null,2)+`
102
+ `,`utf8`)}async function rd(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??ed(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=td(n);if(a!==void 0&&fd(a,r,i,t))return ud(a,e.currentVersion)}let a=await id(e,t,n,r);return typeof a==`string`?dd(e.currentVersion,a):a}async function id(e,t,n,r){let i=await pd({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return i.ok?(ad(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i.version}),i.version):(ad(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:i.errorMessage}),{status:`error`,errorMessage:i.errorMessage})}function ad(e,t){try{nd(e,t)}catch{}}async function od(e){let t=await rd(e);return t.status===`update_available`?t.notice:void 0}function sd(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function cd(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function ld(e){return e.status===`update_available`?cd(e.notice):e.status===`current`?`Robota is up to date (${e.currentVersion}).`:e.status===`skipped`?`Robota update check skipped.`:`Robota update check failed: ${e.errorMessage}`}function ud(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:dd(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function dd(e,t){return Ju(t,e)?{status:`update_available`,notice:{currentVersion:e,latestVersion:t,installCommand:`npm install -g '@robota-sdk/agent-cli@latest'`}}:{status:`current`,currentVersion:e,latestVersion:t}}function fd(e,t,n,r){if(e.packageName!==r)return!1;let i=Date.parse(e.checkedAt);return Number.isFinite(i)?t.getTime()-i<n:!1}async function pd(e){try{return{ok:!0,version:await md(e)}}catch(e){return{ok:!1,errorMessage:e instanceof Error?e.message:String(e)}}}async function md(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=hd(e.registryUrl,e.packageName),r=await e.fetchImpl(n,{headers:{accept:`application/json`},signal:t.signal});if(!r.ok)throw Error(`registry responded with HTTP ${r.status}`);let i=(await r.json())[`dist-tags`]?.latest;if(typeof i!=`string`||i.trim().length===0)throw Error(`registry metadata is missing dist-tags.latest`);return i}finally{clearTimeout(n)}}function hd(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function gd(e){if(!_d(e))return;let t=e;if(typeof t.packageName==`string`&&typeof t.checkedAt==`string`&&typeof t.currentVersion==`string`&&(t.latestVersion===void 0||typeof t.latestVersion==`string`)&&(t.errorMessage===void 0||typeof t.errorMessage==`string`))return{packageName:t.packageName,checkedAt:t.checkedAt,currentVersion:t.currentVersion,...t.latestVersion!==void 0&&{latestVersion:t.latestVersion},...t.errorMessage!==void 0&&{errorMessage:t.errorMessage}}}function _d(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vd(e){let t=W(),n={settings:{read:()=>G(t),write:e=>K(t,e)}},r=e.backgroundTaskRunners??(0,l.createDefaultBackgroundTaskRunners)(),i=e.commandModules??[],a=e.commandHostAdapters??n,o=`sessionStore`in e?e.sessionStore:bl(e.cwd);return{cwd:e.cwd,provider:e.provider,commandModules:i,commandHostAdapters:a,backgroundTaskRunners:r,subagentRunnerFactory:e.subagentRunnerFactory,sessionStore:o,transportRegistry:e.transportRegistry,reloadPluginCommandSource:e.reloadPluginCommandSource??(()=>{}),createSession(t){return new yl({cwd:e.cwd,provider:e.provider,backgroundTaskRunners:r,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:i,commandHostAdapters:a,permissionMode:t.permissionMode,maxTurns:t.maxTurns,sessionStore:t.sessionStore,sessionName:t.sessionName,bare:t.bare,allowedTools:t.allowedTools,deniedTools:t.deniedTools,model:t.model,appendSystemPrompt:t.appendSystemPrompt,systemPrompt:t.systemPrompt,shellExec:t.shellExec,agentName:t.agentName,orgPolicy:e.orgPolicy,additionalTools:t.additionalTools,resumeSessionId:t.resumeSessionId,...t.responseFormat?{responseFormat:t.responseFormat}:{}})}}}function yd(e){let t=vd({cwd:e.cwd??process.cwd(),provider:e.provider,sessionStore:void 0,commandHostAdapters:{settings:{read:()=>({}),write:()=>{}}}}),n=t.createSession.bind(t);return{...t,createSession(e){return n({bare:!0,...e})}}}exports.AUTO_COMPACT_THRESHOLD_SETTINGS_KEY=Fs,exports.AgentExecutor=Vi,exports.BACKGROUND_COMMAND_DESCRIPTION=`List and control background tasks`,exports.BACKGROUND_COMMAND_USAGE=`Usage: background list | background read <task-id> [offset] | background cancel <task-id> | background close <task-id>`,exports.BUILT_IN_AGENTS=$e,exports.BackgroundJobOrchestrator=ne,exports.BuiltinCommandSource=Jo,exports.BundlePluginInstaller=Co,exports.BundlePluginLoader=So,exports.CLEAR_COMMAND_DESCRIPTION=`Clear conversation history`,exports.CLI_UPDATE_CACHE_TTL_MS=864e5,exports.CLI_UPDATE_PACKAGE_NAME=`@robota-sdk/agent-cli`,exports.CLI_UPDATE_REGISTRY_URL=`https://registry.npmjs.org`,exports.CLI_UPDATE_TIMEOUT_MS=1500,exports.COST_COMMAND_DESCRIPTION=`Show session token usage and estimated cost. /cost budget <amount> sets a monthly budget.`,exports.CommandRegistry=Wo,exports.DEFAULT_AUTO_COMPACT_THRESHOLD=Ps,exports.DEFAULT_STATUS_LINE_COMMAND_SETTINGS=Cc,exports.EXECUTION_ORIGIN_METADATA_KEYS=S,exports.EXIT_COMMAND_DESCRIPTION=`Exit CLI`,exports.EditCheckpointStore=R,exports.HELP_COMMAND_DESCRIPTION=`Show available commands`,exports.InteractiveSession=yl,exports.LANGUAGE_COMMAND_ARGUMENT_HINT=`<code>`,exports.LANGUAGE_COMMAND_DESCRIPTION=`Set response language`,exports.MEMORY_COMMAND_ARGUMENT_HINT=`list | show [topic] | add <user|feedback|project|reference> <topic> <text> | pending | approve <id> | reject <id> | used`,exports.MEMORY_COMMAND_DESCRIPTION=`Project memory command. Use it to inspect project memory when stored context may help, save durable preferences, project conventions, feedback, or references worth reusing across sessions, review pending candidates, and report memory provenance. Do not store secrets, credentials, or transient facts.`,exports.MEMORY_COMMAND_USAGE=`Usage: memory list | memory show [topic] | memory add <user|feedback|project|reference> <topic> <text> | memory pending | memory approve <id> | memory reject <id> | memory used`,exports.MEMORY_INDEX_MAX_BYTES=io,exports.MEMORY_INDEX_MAX_LINES=200,exports.MODEL_COMMAND_TOOL_PREFIX=it,exports.MarketplaceClient=Do,exports.PERMISSIONS_COMMAND_DESCRIPTION=`Show/change permission mode and permission rules`,exports.PERMISSION_MODE_ARGUMENT_HINT=`plan | default | acceptEdits | bypassPermissions`,exports.PERMISSION_MODE_COMMAND_DESCRIPTION=`Show/change permission mode`,exports.PLUGIN_COMMAND_ARGUMENT_HINT=`manage | install <name@marketplace> | uninstall <name@marketplace> | enable <name@marketplace> | disable <name@marketplace> | marketplace <action>`,exports.PLUGIN_COMMAND_DESCRIPTION=`Manage plugins`,exports.PROVIDER_SAFE_TOOL_NAME_PATTERN=at,exports.PluginCommandSource=Ns,exports.PluginSettingsStore=vo,exports.ProjectMemoryStore=mo,exports.PromptExecutor=Ui,exports.RECOMMENDED_RESPONSE_LANGUAGES=cc,exports.RELOAD_PLUGINS_COMMAND_DESCRIPTION=`Reload all plugin resources`,exports.RENAME_COMMAND_DESCRIPTION=`Rename the current session`,exports.RENAME_COMMAND_USAGE=`Usage: rename <name>`,exports.RESUME_COMMAND_DESCRIPTION=`Resume a previous session`,exports.REWIND_COMMAND_ARGUMENT_HINT=`list | inspect CHECKPOINT_ID | restore CHECKPOINT_ID | code CHECKPOINT_ID | rollback CHECKPOINT_ID`,exports.REWIND_COMMAND_DESCRIPTION=`List, inspect, restore, or rollback edit checkpoints.`,exports.STATUSLINE_COMMAND_ARGUMENT_HINT=`on | off | reset | git on | git off`,exports.STATUSLINE_COMMAND_DESCRIPTION=`Configure TUI status-line visibility and fields such as model, context, tokens, session, and git branch.`,exports.SkillCommandSource=Fi,exports.SystemCommandExecutor=Go,exports.USER_LOCAL_MEMORY_CATEGORIES=Ul,exports.USER_LOCAL_STORAGE_CATEGORIES=Ml,exports.USER_LOCAL_STORAGE_CATEGORY_DEFINITIONS=Nl,exports.VALIDATE_SESSION_COMMAND_DESCRIPTION=`Validate current session replay log`,exports.VALID_PERMISSION_MODES=fc,exports.addCommandContextReference=Ws,exports.applyActiveModelChange=Es,exports.applyProviderConfiguration=ws,exports.applyProviderSwitch=Ts,exports.applyStatusLineSettings=Dc,exports.assembleSubagentPrompt=rt,exports.buildBackgroundCommandSubcommands=Qs,exports.buildLanguageCommandSubcommands=lc,exports.buildMemoryCommandSubcommands=Qc,exports.buildPermissionModeSubcommands=pc,exports.buildPluginCommandSubcommands=Mc,exports.buildPromptWithFileReferences=mn,exports.buildProviderProfile=ts,exports.buildProviderSetupPatch=es,exports.buildRewindCommandSubcommands=Hc,exports.buildStatusLineCommandSubcommands=wc,exports.cancelCommandBackgroundTask=oc,exports.checkForCliUpdate=rd,exports.checkSettingsDocument=us,exports.checkSettingsFile=hs,exports.clearCommandContextReferences=Ks,exports.clearContextReferences=an,exports.clearConversationHistory=Nc,exports.closeCommandBackgroundTask=sc,exports.compactCommandContext=Hs,exports.compareSemverVersions=qu,exports.createAgentRuntime=vd,exports.createAgentTool=Pt,exports.createBackgroundGroupExecutionEntryId=T,exports.createBackgroundProcessTool=_i,exports.createBackgroundTaskExecutionEntryId=w,exports.createBuiltinCommandModule=Yo,exports.createCommandExecutionTool=Du,exports.createCommandMemoryStores=tl,exports.createCommandPendingMemoryStore=el,exports.createCommandProjectMemoryStore=$c,exports.createContextReferenceItem=tn,exports.createDefaultTools=Hr,exports.createExecutionOriginMetadata=E,exports.createExecutionWorkspaceSnapshot=de,exports.createExecutionWorkspaceTaskSpawner=Me,exports.createInProcessSubagentRunner=wt,exports.createInteractiveRuntime=Fu,exports.createLineDetailPage=ke,exports.createMainThreadDetailPage=Oe,exports.createMainThreadExecutionEntryId=C,exports.createModelCommandToolProjection=ct,exports.createPluginRegistryReloadRequestedEffect=Ac,exports.createPluginTuiRequestedEffect=kc,exports.createProjectSessionStore=bl,exports.createProjectedCommandExecutionTools=dt,exports.createPromptFileReferenceHistoryEntry=_n,exports.createProviderFromSettings=Ms,exports.createProviderSafeModelCommandToolName=st,exports.createQuery=jl,exports.createSessionExitRequestedEffect=Lc,exports.createSessionPickerRequestedEffect=Ic,exports.createSessionRenamedEffect=Fc,exports.createStatelessRuntime=yd,exports.createSubagentLogger=ca,exports.createSubagentSession=vt,exports.createSystemCommands=Ko,exports.createTestInteractiveSession=Hu,exports.deleteProviderProfile=Qo,exports.deleteSettings=zi,exports.deleteUserLocalMemoryItem=uu,exports.disableUserLocalMemoryItem=lu,exports.discoverTaskFiles=Qa,exports.evaluateReversibleToolSafety=qi,exports.executeSkill=ul,exports.formatCliUpdateCheckMessage=ld,exports.formatCliUpdateNotice=cd,exports.formatCommandBackgroundTask=$s,exports.formatCommandBackgroundTaskList=ec,exports.formatCommandHelpMessage=Zs,exports.formatCommandPermissionsMessage=Sc,exports.formatCommandSessionReplayValidationReport=Bc,Object.defineProperty(exports,`formatEnvReference`,{enumerable:!0,get:function(){return c.formatEnvReference}}),exports.formatInvalidPermissionModeMessage=gc,exports.formatLanguageUsageMessage=dc,exports.formatOrgPolicyViolationMessage=_l,exports.formatProjectedModelCommandToolPromptDescription=lt,exports.formatPromptFileReferenceDiagnostics=gn,exports.formatTaskContext=to,exports.getBuiltInAgent=et,exports.getForkWorkerSuffix=nt,exports.getProviderSettingsPaths=Ss,exports.getStartupCliUpdateNotice=od,exports.getSubagentSuffix=tt,exports.getUserSettingsPath=W,exports.getUserUpdateCheckCachePath=ed,exports.hasBlockingPromptFileReferenceDiagnostics=hn,exports.hasSensitiveCommandMemoryContent=rl,Object.defineProperty(exports,`hasUsableSecretReference`,{enumerable:!0,get:function(){return c.hasUsableSecretReference}}),exports.inspectCommandEditCheckpoint=Wc,exports.inspectUserLocalMemoryItem=cu,exports.inspectUserLocalStorage=Hl,exports.isApiKeyPlaintext=vl,exports.isCommandMemoryType=nl,Object.defineProperty(exports,`isEnvReference`,{enumerable:!0,get:function(){return c.isEnvReference}}),exports.isMemoryType=oo,exports.isNewerSemverVersion=Ju,exports.isPermissionMode=hc,exports.isSlashCommand=Ou,exports.isStatusLineCommandSettingsPatch=Tc,exports.listActiveContextReferences=on,exports.listCommandBackgroundTasks=ic,exports.listCommandContextReferences=Us,exports.listCommandEditCheckpoints=Uc,exports.listCommandSessionAllowedTools=bc,exports.listCommandUsedMemoryReferences=il,exports.listResumableSessionSummaries=xl,exports.listUserLocalMemoryItems=su,exports.loadOrgPolicy=gl,exports.loadTaskContext=no,exports.mergeProviderPatch=ns,exports.mergeProviders=ys,exports.mergeSettings=vs,exports.normalizeModelCommandName=k,exports.parseCommandBackgroundLogCursor=tc,exports.parseExecutionWorkspaceEntryId=ue,exports.parseFrontmatter=ji,exports.parseInput=Au,exports.parseLanguageArgument=uc,exports.parsePermissionModeArgument=mc,exports.parsePromptFileReferences=xn,exports.parseSessionNameArgument=Pc,exports.parseTaskFile=$a,exports.planSelfHostingVerification=yu,exports.preprocessShellCommands=sl,exports.probeProviderProfile=ls,exports.projectPaths=L,exports.promptForApproval=Ru,exports.readAutoCompactThreshold=Ls,exports.readAutoCompactThresholdSource=Rs,exports.readCommandBackgroundTaskLog=ac,exports.readCommandContextState=Is,exports.readCommandPermissionMode=vc,exports.readCommandPermissionsState=xc,exports.readCommandSessionInfo=Rc,exports.readCurrentGitBranch=Za,exports.readEnabledUserLocalMemoryItem=du,exports.readMergedProviderSettings=As,exports.readMergedProviderSettingsFromPaths=gs,exports.readPackageVersion=$u,exports.readProviderSettings=js,exports.readSettings=G,exports.readStatusLineSettings=Ec,exports.readUpdateCheckCache=td,exports.recordCommandMemoryEvent=al,exports.removeCommandContextReference=Gs,exports.removeContextReference=rn,exports.resetAutoCompactThresholdSetting=Vs,exports.resetUserConfig=Uu,exports.resolveActiveProvider=bs,Object.defineProperty(exports,`resolveEnvReference`,{enumerable:!0,get:function(){return c.resolveEnvReference}}),exports.resolveGitBranch=Wu,exports.resolveLatestSessionId=Sl,exports.resolvePermissionModeAdapter=_c,exports.resolvePluginCommandAdapter=jc,exports.resolvePromptFileReferencePaths=kn,exports.resolvePromptFileReferences=On,exports.resolveProviderSettingsWriteTargetPath=Cs,exports.resolveSessionIdByIdOrName=Cl,exports.resolveSettingsPathForScope=Ii,exports.resolveSubagentLogDir=la,exports.resolveUserLocalStorageRoot=zl,exports.restoreCommandEditCheckpoint=Gc,exports.retrieveAgentToolDeps=A,exports.rollbackCommandEditCheckpoint=Kc,exports.sanitizeProviderProfileName=Ys,exports.selectRelevantTasks=eo,exports.setCommandAutoCompactThreshold=zs,exports.setCurrentProvider=Zo,exports.setUserLocalMemoryItem=ou,exports.shouldRunStartupCliUpdateCheck=sd,exports.storeAgentToolDeps=kt,exports.substituteVariables=ol,exports.suggestProviderProfileName=Js,exports.summarizeBackgroundJobGroup=se,exports.testProviderProfileCommand=cs,exports.toContextReferenceRecords=sn,exports.toPromptFileReferenceRecords=P,exports.tokeniseSlashCommand=ku,exports.transitionSelfHostingLoop=bu,exports.updateModelInSettings=Li,exports.updateTaskFileStatus=ro,exports.upsertContextReference=nn,exports.upsertProviderProfile=Xo,exports.userPaths=hr,exports.validateCommandSessionReplayLog=zc,exports.validateProviderProfile=$o,exports.wrapEditCheckpointTools=wi,exports.wrapReversibleExecutionTools=Ji,exports.writeAutoCompactThresholdSetting=Bs,exports.writeCommandPermissionMode=yc,exports.writeSettings=K,exports.writeUpdateCheckCache=nd;