@robota-sdk/agent-framework 3.0.0-beta.75 → 3.0.0-beta.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/index.cjs +7 -7
- package/dist/node/index.d.ts +20 -4
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +4 -4
- package/dist/node/index.js.map +1 -1
- package/package.json +6 -6
package/dist/node/index.js
CHANGED
|
@@ -95,7 +95,7 @@ Do not use emojis.`}function mn(){return`You are a worker subagent executing a s
|
|
|
95
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 Hs(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 Us(e,t=new R){if(!t.existsSync(e))return[];try{return t.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name).sort()}catch{return[]}}var Ws=class{pluginsDir;enabledPlugins;fs;constructor(e,t,n=new R){this.pluginsDir=e,this.enabledPlugins=t??{},this.fs=n}loadPluginsSync(){return this.discoverAndLoad()}async loadAll(){return this.discoverAndLoad()}discoverAndLoad(){let e=w(this.pluginsDir,`cache`);if(!this.fs.existsSync(e))return[];let t=[],n=Us(e,this.fs);for(let r of n){let n=w(e,r),i=Us(n,this.fs);for(let e of i){let i=w(n,e),a=Us(i,this.fs);if(a.length===0)continue;let o=a[a.length-1],s=w(i,o),c=w(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 Hs(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=w(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=w(n,e.name,`SKILL.md`);if(!this.fs.existsSync(t))continue;let{metadata:r,content:a}=Vs(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=w(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}=Vs(this.fs.readFileSync(w(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=w(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=w(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=w(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$/,``)):[]}},Gs=class{pluginsDir;cacheDir;registryPath;settingsStore;marketplaceClient;exec;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.cacheDir=w(this.pluginsDir,`cache`),this.registryPath=w(this.pluginsDir,`installed_plugins.json`),this.settingsStore=e.settingsStore,this.marketplaceClient=e.marketplaceClient,this.exec=e.exec,this.fs=e.fs??new R}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=w(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=w(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=C(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 Z(e,t=new R){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 Ks(e,t,n=new R){let r=C(e);n.existsSync(r)||n.mkdirSync(r,{recursive:!0}),n.writeFileSync(e,JSON.stringify(t,null,2),`utf-8`)}function qs(e,t,n=new R){let r=w(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=C(r);n.existsSync(e)||n.mkdirSync(e,{recursive:!0}),n.writeFileSync(r,JSON.stringify(i,null,2),`utf-8`)}}const Js=6e4;var Ys=class{pluginsDir;exec;marketplacesDir;registryPath;fs;constructor(e){this.pluginsDir=e.pluginsDir,this.exec=e.exec,this.marketplacesDir=w(this.pluginsDir,`marketplaces`),this.registryPath=w(this.pluginsDir,`known_marketplaces.json`),this.fs=e.fs??new R}addMarketplace(e){let t=`temp-`+Date.now().toString(36),n=w(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:Js,stdio:`pipe`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to clone marketplace: ${t}`)}}let r=w(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=Z(this.registryPath,this.fs);if(a[i])throw this.fs.rmSync(n,{recursive:!0,force:!0}),Error(`Marketplace "${i}" already exists`);let o=w(this.marketplacesDir,i);return this.fs.renameSync(n,o),a[i]={source:e,installLocation:o,lastUpdated:new Date().toISOString()},Ks(this.registryPath,a,this.fs),i}removeMarketplace(e){let t=Z(this.registryPath,this.fs),n=t[e];if(!n)throw Error(`Marketplace "${e}" not found`);qs(this.pluginsDir,e,this.fs),this.fs.existsSync(n.installLocation)&&this.fs.rmSync(n.installLocation,{recursive:!0,force:!0}),delete t[e],Ks(this.registryPath,t,this.fs)}updateMarketplace(e){let t=Z(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:Js,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(),Ks(this.registryPath,t,this.fs)}listMarketplaces(){let e=Z(this.registryPath,this.fs);return Object.entries(e).map(([e,t])=>({name:e,source:t.source,lastUpdated:t.lastUpdated}))}fetchManifest(e){let t=Z(this.registryPath,this.fs)[e];if(!t)throw Error(`Marketplace "${e}" not found`);let n=w(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=Z(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:Js,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 Xs(e){let t=w(C(C(e.pluginDir)),`data`,e.manifest.name);return{CLAUDE_PLUGIN_ROOT:e.pluginDir,CLAUDE_PLUGIN_PATH:e.pluginDir,CLAUDE_PLUGIN_DATA:t}}function Zs(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 Qs(e){let t={};for(let n of e){let e=n.hooks;if(!e)continue;let r=Xs(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=Zs(e,n.pluginDir);return t.env=r,t});t[e].push(...i)}}return t}function $s(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 ec(e){let t=e.cwd,[n,r,i]=await Promise.all([e.config?Promise.resolve(e.config):as(t),e.bare?Promise.resolve({agentsMd:``,claudeMd:``,agentsFileEntries:[],claudeFileEntries:[]}):zs(t),e.bare?Promise.resolve({type:`unknown`,language:`unknown`}):Ji(t)]),a=e.language?{...n,language:e.language}:n,o=new Ws(w(D(),`.robota`,`plugins`));if(!e.bare)try{let e=o.loadPluginsSync();if(e.length>0){let t=Qs(e);a={...a,hooks:$s(a.hooks,t)}}}catch{}let s=H(t);await nc(e)||await tc(e,t);let c=e.resumeSessionId&&!e.forkSession?e.resumeSessionId:void 0,{session:l,rebuildSystemMessage:u}=Do({config:a,cwd:t,context:r,projectInfo:i,permissionMode:e.permissionMode,maxTurns:e.maxTurns,terminal:oi,sessionLogger:new xe(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.persona===void 0?{}:{persona:e.persona},...e.systemPrompt?{systemPromptBuilder:()=>e.systemPrompt}:{},backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,...e.commandModules?.some(e=>e.sessionRequirements?.includes(`agent-runtime`))?{enableAgentRuntime:!0}:{},...e.enableParallelSubagents===void 0?{}:{enableParallelSubagents:e.enableParallelSubagents},...e.selfVerification===void 0?{}:{selfVerification:e.selfVerification},...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.activePresetId===void 0?{}:{activePresetId:e.activePresetId},...e.additionalTools?{additionalTools:e.additionalTools}:{},...e.responseFormat?{responseFormat:e.responseFormat}:{}});return{session:l,agentsFileEntries:r.agentsFileEntries??[],claudeFileEntries:r.claudeFileEntries??[],rebuildSystemMessage:u}}async function tc(e,t){if(e.workspaceManifest){if(!e.sandboxClient)throw Error(`workspaceManifest requires sandboxClient.`);await ue(e.sandboxClient,e.workspaceManifest,{hostRoot:t,...e.sandboxWorkspaceRoot?{targetRoot:e.sandboxWorkspaceRoot}:{}})}}async function nc(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 rc(e,t){let n=e.config??await as(e.cwd),r=n.autoCompactThreshold===void 0?`default`:`settings`,i=new Ni({cwd:e.cwd});t.setEditCheckpointStore(i);let a=await ec({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.persona===void 0?{}:{persona:e.persona},...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.activePresetId===void 0?{}:{activePresetId:e.activePresetId},...e.enableParallelSubagents===void 0?{}:{enableParallelSubagents:e.enableParallelSubagents},...e.selfVerification===void 0?{}:{selfVerification:e.selfVerification},...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)Yi(a.session,e);a.session.syncContextFromHistory()}return{session:a.session,agentsFileEntries:a.agentsFileEntries,claudeFileEntries:a.claudeFileEntries,rebuildSystemMessage:a.rebuildSystemMessage,autoCompactThresholdSource:r}}function ic(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(ac({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 ac(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},...oc(e.backgroundState),...sc(e.memoryState),...cc(e.skillActivationState),...lc(e.contextReferenceState)}}function oc(e){return e?{backgroundTasks:[...e.tasks],backgroundTaskEvents:[...e.events],backgroundJobGroups:[...e.groups??[]],backgroundJobGroupEvents:[...e.groupEvents??[]]}:{}}function sc(e){return e?{memoryEvents:[...e.events],usedMemoryReferences:[...e.usedReferences]}:{}}function cc(e){return e?{skillActivationEvents:[...e.events]}:{}}function lc(e){return e?{contextReferences:[...e.references]}:{}}function uc(e){return e.source===`skill`||e.source===`plugin`&&e.skillContent?`skill`:`builtin-command`}function dc(e){let t=e.source===`skill`||e.source===`plugin`&&!!e.skillContent;return{name:e.name,kind:uc(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 fc=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=>dc(e))}},pc=class{commands;constructor(e){this.commands=new Map;for(let t of e??mc())this.commands.set(t.name,t)}register(e){this.commands.set(e.name,e)}replaceCommands(e){this.commands.clear();for(let t of e)this.commands.set(t.name,t)}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 mc(){return[]}function hc(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 gc=class{name=`builtin`;commands;constructor(e=mc()){this.commands=e.map(hc)}getCommands(){return this.commands}};function _c(){let e=mc();return{name:`sdk-builtin`,commandSources:[new gc(e)],systemCommands:e}}function vc(e,t,n){return{...e,providers:{...e.providers??{},[t]:n}}}function yc(e,t){if(!e.providers?.[t])throw Error(`Provider profile "${t}" was not found`);return{...e,currentProvider:t}}function bc(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 xc(e,t,n={}){if(!t.type)throw Error(`Provider profile "${e}" is missing type`);let r=n.providerDefinitions??[],i=u(r,t.type);if(i===void 0&&r.length>0)throw Error(`Unknown provider "${t.type}". Supported providers: ${p(r)}`);if(!t.model)throw Error(`Provider profile "${e}" is missing model`);let a=m(i);if(a!==void 0&&!Ec(t,i?.defaults,a))throw Error(`Provider profile "${e}" is missing ${Oc(a)}`)}function Sc(e,t={}){let n=Cc(e,t);return xc(e.profile,n,t),{...e.setCurrent&&{currentProvider:e.profile},providers:{[e.profile]:n}}}function Cc(e,t={}){let n=Tc(e.type,t.providerDefinitions??[]);if(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.`),e.apiKeyEnv!==void 0){let n=(t.env??process.env)[e.apiKeyEnv];if(n===void 0||n.length===0)throw Error(`Environment variable ${e.apiKeyEnv} is not set — set it before configuring (the profile will reference $ENV:${e.apiKeyEnv})`)}let r=e.apiKeyEnv===void 0?e.apiKey??n.apiKey:f(e.apiKeyEnv),i=e.baseURL??n.baseURL;return{type:e.type,model:e.model??n.model,...kc(r)&&{apiKey:r},...i!==void 0&&{baseURL:i},...e.timeout!==void 0&&{timeout:e.timeout}}}function wc(e,t){let[n,r]=Object.entries(t.providers)[0]??[];if(!n||!r)return e;let i=vc(e,n,r);return t.currentProvider?yc(i,t.currentProvider):i}function Tc(e,t){return u(t,e)?.defaults??{}}function Ec(e,t,n){return n.anyOf.some(n=>h(Dc(n,e,t)))}function Dc(e,t,n){return t[e]??n?.[e]}function Oc(e){return e.anyOf.join(` or `)}function kc(e){return e!==void 0&&e.length>0}async function Ac(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{xc(i,a,{providerDefinitions:r.providerDefinitions})}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}let o=await((a.type?u(r.providerDefinitions,a.type):void 0)?.probeProfile??jc)(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 jc(e){return{ok:!0,message:`Profile fields are valid; no endpoint probe configured.`}}function Mc(e,t=[]){return Nc(e,t)?`valid`:`incomplete`}function Nc(e,t){if(typeof e.currentProvider==`string`){let n=e.providers?.[e.currentProvider];return Pc(n?.type,n,t)}return!!(e.provider&&Pc(e.provider.name,e.provider,t))}function Pc(e,t,n){if(!t)return!1;if(!e)return h(t.apiKey);let r=u(n,e);if(r===void 0)return!1;let i=m(r);return i===void 0?!0:Fc(t,r,i)}function Fc(e,t,n){return n.anyOf.some(n=>h(Ic(n,e,t)))}function Ic(e,t,n){return t[e]??n.defaults?.[e]}function Lc(e,t=[]){if(!b(e))return`missing`;try{let n=x(e,`utf8`).trim();return n.length===0?`incomplete`:Mc(JSON.parse(n),t)}catch{return`corrupt`}}function Rc(e,t=new R){return e.reduce((e,n)=>{let r=zc(n,t);return r===void 0?e:Bc(e,r)},{})}function zc(e,t){if(!t.existsSync(e))return;let n=t.readFileSync(e,`utf8`);try{return JSON.parse(n)}catch(t){throw new eo(e,t instanceof Error?t.message:String(t))}}function Bc(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?Vc(e.providers,t.providers):void 0}}function Vc(e,t){let n={...e??{}};for(let[e,r]of Object.entries(t??{}))n[e]={...n[e],...r};return n}function Hc(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 le({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 le({name:i.name,model:i.model,apiKey:i.apiKey,baseURL:i.baseURL,timeout:i.timeout,options:i.options},n)}function Uc(){return process.env.HOME??process.env.USERPROFILE??`/`}function Wc(e){let t=Uc();return[w(t,`.robota`,`settings.json`),w(t,`.claude`,`settings.json`),w(e,`.robota`,`settings.json`),w(e,`.robota`,`settings.local.json`),w(e,`.claude`,`settings.json`),w(e,`.claude`,`settings.local.json`)]}function Gc(e,t={}){let n=t.settingsPaths??Wc(e),r=Qc(n)??n[0];if(r===void 0)throw Error(`No settings path available for provider update`);return r}function Kc(e){return q(e)}function qc(e,t,n={}){let r=wc(Kc(e),Sc(t,n));return J(e,r),r}function Jc(e,t,n={}){let r=Kc(e),i=r.providers?.[t]!==void 0,a=n.knownProviders?.[t]!==void 0,o=i||a?{...r,currentProvider:t}:yc(r,t);return J(e,o),o}function Yc(e,t,n={}){let r=n.settingsPaths??Wc(e),i=Rc(r),a=n.providerOverride??i.currentProvider;if(typeof a!=`string`)throw Error(`Cannot update model: no active provider profile. Set "currentProvider" in settings.`);return Xc(r,a,t)}function Xc(e,t,n){let r=Zc(e,t)??e[0];if(r===void 0)throw Error(`No settings path available for model update`);let i=Kc(r),a=i.providers??{},o=a[t]??{},s={...i,providers:{...a,[t]:{...o,model:n}}};return J(r,s),{settingsPath:r,settings:s,profileName:t}}function Zc(e,t){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r!==void 0&&Kc(r).providers?.[t]!==void 0)return r}}function Qc(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&Kc(n).currentProvider!==void 0)return n}}var $c=class extends Error{constructor(e){super(e),this.name=`ProviderConfigError`}};function el(e){return Rc(Wc(e))}function tl(e,n=process.env){for(let r of e){let e=r.defaults;if(e?.apiKey===void 0||e.model===void 0||!te(e.apiKey))continue;let i=e.apiKey.slice(t.length).trim();if(i.length===0)continue;let a=n[i];if(!(a===void 0||a.length===0))return{name:r.type,model:e.model,apiKey:a,...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout},...e.options!==void 0&&{options:e.options},source:`env-default`,sourceEnvVar:i}}}function nl(e,t={}){let n=Hc(el(e),t.providerOverride,t.providerDefinitions??[]);if(n!==void 0)return n;let r=tl(t.providerDefinitions??[],t.env);if(r!==void 0)return r;throw new $c("No provider configuration found. Run `robota` to set up.")}function rl(e,t,n={}){let r=n.providerDefinitions??[],i=nl(e,{...n,providerDefinitions:r}),a=t??i.model;return se({...i,model:a},r)}var il=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}};function al(e,t,n){let r=e;if(t!==void 0){let e=new Set(t);r=r.filter(t=>e.has(t.name))}if(n!==void 0){let e=new Set(n);r=r.filter(t=>!e.has(t.name))}return r}const ol=be,sl=`autoCompactThreshold`;function cl(e){return e.getContextState()}function ll(e){return e.getAutoCompactThreshold()}function ul(e){return e.getAutoCompactThresholdSource?.()??`session`}function dl(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 fl(e,t){let n=yl(e);return n?(n.write({...n.read(),[sl]:t}),!0):!1}function pl(e){let t=yl(e);if(!t)return!1;let n={...t.read()};return delete n[sl],t.write(n),!0}async function ml(e,t){let n=cl(e),r=e.getSession().getMessageCount();return await e.compactContext(t),{before:n,after:cl(e),beforeMessageCount:r,afterMessageCount:e.getSession().getMessageCount()}}function hl(e){return e.listContextReferences?.()??[]}async function gl(e,t){return e.addContextReference?e.addContextReference(t):{evicted:[],diagnostics:[`Command host does not support context reference additions.`]}}function _l(e,t){return e.removeContextReference?.(t)??{}}function vl(e){return e.clearContextReferences?.()??{removed:[]}}function yl(e){return e.getCommandHostAdapters?.().settings}function bl(e,t={}){let n=xl(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 xl(e){let t=e?.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return t!==void 0&&t.length>0?t:void 0}const Sl=`Show available commands`;function Cl(e){return e.listCommands?.()??[]}function wl(e){return[`Available commands:`,...Cl(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
96
|
`)}const Tl=`List and control background tasks`,El=`Usage: background list | background read <task-id> [offset] | background cancel <task-id> | background close <task-id>`;function Dl(){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 Ol(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=jl(e),s=t?` — ${t}`:``;return`${e.id} [${e.status}${n}${i}${a}${o}] ${e.kind}:${e.label}${r}${s}`}function kl(e){return e.length===0?`No background tasks.`:[`Background tasks:`,...e.map(e=>` ${Ol(e)}`)].join(`
|
|
97
97
|
`)}function Al(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isNaN(t)?void 0:{offset:t}}function jl(e){let t=[];return e.worktreePath&&t.push(`worktree=${e.worktreePath}`),e.branchName&&t.push(`branch=${e.branchName}`),e.worktreeStatus&&t.push(`worktreeStatus="${Ml(e.worktreeStatus)}"`),e.worktreeNextAction&&t.push(`next="${Ml(e.worktreeNextAction)}"`),t.length===0?``:` ${t.join(` `)}`}function Ml(e){let t=e.trim().replace(/\s+/g,` `);return t.length>160?`${t.slice(0,160)}...`:t}function Nl(e,t){return e.listBackgroundTasks(t)}function Pl(e,t,n){return e.readBackgroundTaskLog(t,n)}function Fl(e,t,n){return e.cancelBackgroundTask(t,n)}function Il(e,t){return e.closeBackgroundTask(t)}const Ll=`Set response language`,Rl=`<code>`,zl=[{code:`ko`,description:`Korean`},{code:`en`,description:`English`},{code:`ja`,description:`Japanese`},{code:`zh`,description:`Chinese`}];function Bl(e=`language`){return zl.map(t=>({name:t.code,description:t.description,source:e}))}function Vl(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function Hl(e=`language`){return`Usage: ${e} <code> (e.g., ko, en, ja, zh)`}const Ul=`Show/change permission mode`,Wl=`plan | default | acceptEdits | bypassPermissions`,Gl=`Show/change permission mode and permission rules`,Kl=[`plan`,`default`,`acceptEdits`,`bypassPermissions`];function ql(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 Jl(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}function Yl(e){return Kl.includes(e)}function Xl(){return`Invalid mode. Valid: ${Kl.join(` | `)}`}function Zl(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 Ql(e){return Zl(e).getPermissionMode()}function $l(e,t){Zl(e).setPermissionMode(t)}function eu(e){return Zl(e).listSessionAllowedTools()}function tu(e){return{mode:Ql(e),sessionAllowed:eu(e)}}function nu(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
|
-
`)}function ru(e,t,n){let r=[],i=[];e.getSession().setActivePresetId?.(t),n.permissionMode===void 0?i.push(`permissionMode`):($l(e,n.permissionMode),r.push(`permissionMode`));let a={...n.model!==void 0&&{model:n.model},...n.effort!==void 0&&{effort:n.effort},...n.temperature!==void 0&&{temperature:n.temperature},...n.maxOutputTokens!==void 0&&{maxOutputTokens:n.maxOutputTokens}};for(let e of[`model`,`effort`,`temperature`,`maxOutputTokens`])n[e]===void 0?i.push(e):r.push(e);return Object.keys(a).length>0&&e.getSession().applyModelOptions?.(a),n.persona===void 0?i.push(`persona`):(e.applyPersona?.(n.persona),r.push(`persona`)),n.enabledCommandModules!==void 0||n.disabledCommandModules!==void 0?(e.applyCommandModuleSelection?.(n.enabledCommandModules,n.disabledCommandModules),r.push(`commandModules`)):i.push(`commandModules`),n.enableParallelSubagents===void 0?i.push(`enableParallelSubagents`):(e.getSession().setParallelSubagentsEnabled?.(n.enableParallelSubagents),r.push(`enableParallelSubagents`)),n.selfVerification===void 0?i.push(`selfVerification`):(e.applySelfVerification?.(n.selfVerification),r.push(`selfVerification`)),{applied:r,skipped:i}}const iu=`Configure TUI status-line visibility and fields such as model, context, tokens, session, and git branch.`,au=`on | off | reset | git on | git off`,ou={enabled:!0,gitBranch:!0};function su(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 cu(e){return(e.enabled===void 0||typeof e.enabled==`boolean`)&&(e.gitBranch===void 0||typeof e.gitBranch==`boolean`)}function lu(e){let t=e.statusline;return du(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:ou.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:ou.gitBranch}:{...ou}}function uu(e,t){let n=q(e),r={...lu(n),...t};return n.statusline=r,J(e,n),r}function du(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}const fu=`Manage plugins`,pu=`manage | install <name@marketplace> | uninstall <name@marketplace> | enable <name@marketplace> | disable <name@marketplace> | marketplace <action>`,mu=`Reload all plugin resources`;function hu(){return{type:`plugin-tui-requested`}}function gu(){return{type:`plugin-registry-reload-requested`}}function _u(e){return e.getCommandHostAdapters?.().plugin}function vu(){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`}]}]}const yu=`Clear conversation history`,bu=`Rename the current session`,xu=`Usage: rename <name>`,Su=`Resume a previous session`,Cu=`Show session token usage and estimated cost. /cost budget <amount> sets a monthly budget.`,wu=`Validate current session replay log`,Tu=`Exit CLI`;function Eu(e){if(e.clearConversationHistory!==void 0){e.clearConversationHistory();return}e.getSession().clearHistory()}function Du(e){let t=e.trim();return t.length>0?t:void 0}function Ou(e){return{type:`session-renamed`,name:e}}function ku(){return{type:`session-picker-requested`}}function Au(){return{type:`session-exit-requested`}}function ju(e){let t=e.getSession();return{sessionId:t.getSessionId(),messageCount:t.getMessageCount()}}function Mu(e){let t=e.validateCurrentSessionReplayLog?.();if(t!==void 0)return t;let n=e.getSession().getSessionId(),r=w(H(e.getCwd()).logs,`${n}.jsonl`),i=we(r);return{logFile:r,entryCount:i.length,validation:Ee(i)}}function Nu(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(`
|
|
98
|
+
`)}async function ru(e,t,n){let r=[],i=[];e.getSession().setActivePresetId?.(t),n.permissionMode===void 0?i.push(`permissionMode`):($l(e,n.permissionMode),r.push(`permissionMode`));let a={...n.model!==void 0&&{model:n.model},...n.effort!==void 0&&{effort:n.effort},...n.temperature!==void 0&&{temperature:n.temperature},...n.maxOutputTokens!==void 0&&{maxOutputTokens:n.maxOutputTokens}};for(let e of[`model`,`effort`,`temperature`,`maxOutputTokens`])n[e]===void 0?i.push(e):r.push(e);return Object.keys(a).length>0&&await e.getSession().applyModelOptions?.(a),n.persona===void 0?i.push(`persona`):(e.applyPersona?.(n.persona),r.push(`persona`)),n.enabledCommandModules!==void 0||n.disabledCommandModules!==void 0?(e.applyCommandModuleSelection?.(n.enabledCommandModules,n.disabledCommandModules),r.push(`commandModules`)):i.push(`commandModules`),n.enableParallelSubagents===void 0?i.push(`enableParallelSubagents`):(e.getSession().setParallelSubagentsEnabled?.(n.enableParallelSubagents),r.push(`enableParallelSubagents`)),n.selfVerification===void 0?i.push(`selfVerification`):(e.applySelfVerification?.(n.selfVerification),r.push(`selfVerification`)),{applied:r,skipped:i}}const iu=`Configure TUI status-line visibility and fields such as model, context, tokens, session, and git branch.`,au=`on | off | reset | git on | git off`,ou={enabled:!0,gitBranch:!0};function su(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 cu(e){return(e.enabled===void 0||typeof e.enabled==`boolean`)&&(e.gitBranch===void 0||typeof e.gitBranch==`boolean`)}function lu(e){let t=e.statusline;return du(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:ou.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:ou.gitBranch}:{...ou}}function uu(e,t){let n=q(e),r={...lu(n),...t};return n.statusline=r,J(e,n),r}function du(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}const fu=`Manage plugins`,pu=`manage | install <name@marketplace> | uninstall <name@marketplace> | enable <name@marketplace> | disable <name@marketplace> | marketplace <action>`,mu=`Reload all plugin resources`;function hu(){return{type:`plugin-tui-requested`}}function gu(){return{type:`plugin-registry-reload-requested`}}function _u(e){return e.getCommandHostAdapters?.().plugin}function vu(){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`}]}]}const yu=`Clear conversation history`,bu=`Rename the current session`,xu=`Usage: rename <name>`,Su=`Resume a previous session`,Cu=`Show session token usage and estimated cost. /cost budget <amount> sets a monthly budget.`,wu=`Validate current session replay log`,Tu=`Exit CLI`;function Eu(e){if(e.clearConversationHistory!==void 0){e.clearConversationHistory();return}e.getSession().clearHistory()}function Du(e){let t=e.trim();return t.length>0?t:void 0}function Ou(e){return{type:`session-renamed`,name:e}}function ku(){return{type:`session-picker-requested`}}function Au(){return{type:`session-exit-requested`}}function ju(e){let t=e.getSession();return{sessionId:t.getSessionId(),messageCount:t.getMessageCount()}}function Mu(e){let t=e.validateCurrentSessionReplayLog?.();if(t!==void 0)return t;let n=e.getSession().getSessionId(),r=w(H(e.getCwd()).logs,`${n}.jsonl`),i=we(r);return{logFile:r,entryCount:i.length,validation:Ee(i)}}function Nu(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
99
|
`);let r=e.validation.issues.map((e,t)=>{let n=Pu(e);return`${t+1}. ${e.code}${n}: ${e.message}`});return[t,...n,``,...r].join(`
|
|
100
100
|
`)}function Pu(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(`, `)})`:``}const Fu=`List, inspect, restore, or rollback edit checkpoints.`,Iu=`list | inspect CHECKPOINT_ID | restore CHECKPOINT_ID | code CHECKPOINT_ID | rollback CHECKPOINT_ID`;function Lu(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 Ru(e){return e.listEditCheckpoints()}function zu(e,t){if(!e.inspectEditCheckpoint)throw Error(`Checkpoint inspection is not available in this command host.`);return e.inspectEditCheckpoint(t)}function Bu(e,t){return e.restoreEditCheckpoint(t)}function Vu(e,t){return e.rollbackEditCheckpoint(t)}const Hu=[/\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 Uu(e){return Hu.some(t=>t.test(e))}function Wu(e){return w(e,`.robota`,`memory`)}function Gu(){return{version:1,records:[]}}var Ku=class{fs;path;now;constructor(e,t=()=>new Date,n=new R){this.fs=n,this.path=w(Wu(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 Gu();try{return{version:1,records:JSON.parse(this.fs.readFileSync(this.path,`utf8`)).records??[]}}catch{return Gu()}}write(e){this.fs.mkdirSync(C(this.path),{recursive:!0}),this.fs.writeFileSync(this.path,JSON.stringify(e,null,2),`utf8`)}};const qu=`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.`,Ju=`list | show [topic] | add <user|feedback|project|reference> <topic> <text> | pending | approve <id> | reject <id> | used`,Yu=`Usage: memory list | memory show [topic] | memory add <user|feedback|project|reference> <topic> <text> | memory pending | memory approve <id> | memory reject <id> | memory used`;function Xu(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 Zu(e,t){return new Is(e,t)}function Qu(e,t){return new Ku(e,t)}function $u(e,t){let n=e.getCwd();return{project:Zu(n,t),pending:Qu(n,t)}}function ed(e){return ks(e)}function td(e){return Uu(e)}function nd(e){return e.getUsedMemoryReferences()}function rd(e,t,n=()=>new Date){e.recordMemoryEvent({...t,at:n().toISOString()})}function id(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 ad(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 od(e,t,n,r){return e.skillContent?id(await ad(e.skillContent,n.shellExec),t,r):null}async function sd(e,t,n,r){let i=await od(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 cd(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 od(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 sd(e,t,n,r)}}function ld(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function ud(e){return e.trim().replace(/^\/+/,``).split(/\s+/)[0]??``}function dd(e,t){let n=t.trim();return n.length>0?`${e} ${n}`:e}function fd(e){if(!e?.startsWith(`/`))return;let t=e.slice(1).trim().split(/\s+/)[0];return t&&t.length>0?t:void 0}var pd=class{getSession;getSessionId;onSubmit;onApplyResult;recordSkillActivation;runSkillInFork;onForkSkill;onBlockingCommand;shellExec;commandExecutor;allCommandModules;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.allCommandModules=e,this.commandExecutor=new pc(e.flatMap(e=>e.systemCommands??[])),this.skillCommandSource=new $a(t),this.commandHostAdapters=n}reapplyCommandModuleSelection(e,t){let n=al(this.allCommandModules,e,t);this.commandExecutor.replaceCommands(n.flatMap(e=>e.systemCommands??[]))}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=ld(e);return this.skillCommandSource.getCommands().find(e=>e.name.toLowerCase()===t.toLowerCase())}async executeCommand(e,t){let n=ud(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,dd(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=fd(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 cd(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=Vi({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 md(){let e=w(D(),`.robota`,`org-policy.json`);if(!b(e))return null;try{let t=x(e,`utf8`);return JSON.parse(t)}catch{return null}}function hd(e,t){return`${e}${t?`\nContact your administrator: ${t}`:``}`}function gd(e){return e?!e.startsWith(`$ENV:`):!1}var _d=class extends sr{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 Ni({cwd:t})),this.bgTracker=new qn(()=>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(),(e,t)=>this.requestWakeup(e,t),e=>this.histTracker.append(_(c(e)))),this.histTracker=new Gi(t,()=>this.getSessionOrThrow().getSessionId(),()=>this.execCtrl.executing,()=>this.persistCurrentSession(),e=>this.emit(`skill_activation`,e),e=>this.emit(`memory_event`,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 pd(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)=>Si(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 bi(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=Xi(this.sessionStore,e.resumeSessionId,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,this.session&&t.pendingRestoreMessages===null&&(this.session.syncContextFromHistory(),this.emit(`context_update`,this.getContextState()))}startAsyncInitializationIfNeeded(e,t){if(t)return;let n=e;this.initPromise=this.initializeAsync(n)}async initializeAsync(e){let t=await rc(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(),this.emit(`context_update`,this.getContextState())}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,r={}){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,this.execCtrl.pendingTurnOptions=r;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,r)=>this.submit(e,t,n,r),r)}requestWakeup(e,t){this.execCtrl.shuttingDown||this.execCtrl.wakeTaskIds.has(t)||(this.execCtrl.wakeTaskIds.add(t),this.submit(e,void 0,void 0,{turnSource:`agent-wakeup`,wakeTaskId:t}))}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()}applyPersona(e){if(this.rebuildSystemMessage===null)return;let t=this.agentsFileEntries.map(e=>e.content).join(`
|
|
101
101
|
|
|
@@ -105,7 +105,7 @@ Do not use emojis.`}function mn(){return`You are a worker subagent executing a s
|
|
|
105
105
|
|
|
106
106
|
`),n=this.claudeFileEntries.map(e=>e.content).join(`
|
|
107
107
|
|
|
108
|
-
`),r=this.rebuildSystemMessage(t,n,{selfVerification:e});this.getSessionOrThrow().updateSystemMessage(r)}applyCommandModuleSelection(e,t){this.skillRouter.reapplyCommandModuleSelection(e,t)}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 qt(this.session)??I(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(_(c(`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();ic(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=nl(n,{providerOverride:e,providerDefinitions:this.providerDefinitions}),i=rl(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:hd(`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:hd(`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 vd(e,t=new R){let n=H(e);return new Sd(n.sessions,n.logs,t)}function yd(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:Cd(e.messages)}))}function bd(e,t){return yd(e,t)[0]?.id}function xd(e,t){return(e?.list()??[]).find(e=>e.id===t||e.name===t)?.id}var Sd=class{store;logsDir;fs;constructor(e,t,n=new R){this.store=new Ce(e),this.logsDir=t,this.fs=n}save(e){this.store.save(wd(e))}load(e){let t=this.store.load(e);return t===void 0?this.loadFromReplayLog(e):Td(t)}list(){let e=this.store.list().map(Td),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=Te(we(w(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:Ed(n),backgroundTaskEvents:n,backgroundJobGroups:Od(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 Cd(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 wd(e){return{...e}}function Td(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 Ed(e){let t=new Map;for(let n of e){let e=Dd(n);e&&t.set(e.id,e)}return[...t.values()]}function Dd(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 Od(e){let t=new Map;for(let n of e)t.set(n.group.id,n.group);return[...t.values()]}function kd(e){let t=new _d({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 Ad=[`preferences`,`view-state`,`memory-projections`,`task-associations`,`workflow-metadata`,`inspection-index`],jd=[{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 Md(e){return e.toISOString()}function Nd(e,t){if(t.trim().length===0)throw Error(`${e} must not be empty.`);if(!S.isAbsolute(t))throw Error(`${e} must be an absolute path: ${t}`)}function Pd(){return process.env.HOME??D()}function Fd(e,t){let n=S.relative(e,t);return n===``||!n.startsWith(`..`)&&!S.isAbsolute(n)}async function Id(e,t){let n=e;for(;S.dirname(n)!==n;)try{let r=await t.realpath(n),i=S.relative(n,e);return S.resolve(r,i)}catch{n=S.dirname(n)}try{return await t.realpath(n)}catch{return S.resolve(e)}}async function Ld(e){let t=e.fsAsync??new z,n=S.resolve(e.activeRepositoryRoot);Nd(`activeRepositoryRoot`,n);let r=e.storageRoot===void 0?S.join(e.homeDir??Pd(),`.robota`):e.storageRoot;Nd(`userLocalStorageRoot`,r);let i=S.resolve(r),a=await Id(i,t);if(Fd(await Id(n,t),a))throw Error(`User-local storage root must be outside the active repository: ${i}`);return i}function Rd(e,t){return S.join(e,t)}async function zd(e,t,n){let r=Rd(e,t),i;try{i=await n.readdir(r,{withFileTypes:!0})}catch{return[]}return(await Promise.all(i.map(async i=>{let a=S.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:Md(new Date(o.birthtimeMs)),lastUsedAt:Md(new Date(o.mtimeMs)),enabled:!0,deleteAvailable:!0,disableAvailable:!1}}))).sort((e,t)=>e.key.localeCompare(t.key))}async function Bd(e){let t=e.fsAsync??new z,n=await Ld(e),r=S.resolve(e.activeRepositoryRoot),i=e.createDirectories??!0;return i&&await t.mkdir(n,{recursive:!0}),{root:n,activeRepositoryRoot:r,categories:await Promise.all(jd.map(async e=>{let r=Rd(n,e.category);i&&await t.mkdir(r,{recursive:!0});let a=await zd(n,e.category,t);return{category:e.category,purpose:e.purpose,mayExecuteCommands:e.mayExecuteCommands,storageLocation:r,itemCount:a.length,items:a}})),generatedAt:Md((e.now??(()=>new Date))())}}const Vd=[`view-preference`,`last-visible-cwd`,`background-selection`,`task-association`,`display-preference`,`inspection-choice`],Hd=`.json`,Ud=/^[a-z0-9][a-z0-9._-]*$/u,Wd={"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 Gd(e){return e.toISOString()}function Kd(e){return Vd.includes(e)}function qd(e){if(!Kd(e))throw Error(`Unsupported user-local memory category: ${e}`);return e}function Jd(e,t){let n=t.trim();if(n.length===0)throw Error(`${e} must not be empty.`);if(n.length>80||!Ud.test(n))throw Error(`${e} must use lowercase letters, numbers, dots, underscores, or hyphens: ${t}`);return n}function Yd(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 Xd(e){return Yd(`value`,e,240)}function Zd(e,t){return`${e}__${t}${Hd}`}async function Qd(e){let t=await Ld(e);return{root:t,memoryRoot:S.join(t,`memory-projections`)}}function $d(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:qd(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:ef(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 ef(e,t){let n=e[t];if(typeof n!=`boolean`)throw Error(`Invalid user-local memory field: ${t}`);return n}function tf(e,t,n){return{root:e,category:n.category,key:n.key,summary:n.summary,valueSummary:Xd(n.value),source:n.source,scope:n.scope,storageLocation:t,createdAt:n.createdAt,lastUsedAt:n.lastUsedAt,enabled:n.enabled,displayNavigationRule:Wd[n.category],commandExecutionEffect:`none`,deleteAvailable:!0,disableAvailable:!0}}async function nf(e,t,n){return tf(e,t,$d(await n.readFile(t,`utf8`),t))}async function rf(e){let t=qd(e.category),n=Jd(`key`,e.key),{root:r,memoryRoot:i}=await Qd(e);return{root:r,storageLocation:S.join(i,Zd(t,n))}}async function af(e){let t=e.fsAsync??new z,n=qd(e.category),r=Jd(`key`,e.key),i=Yd(`summary`,e.summary,240),a=Yd(`source`,e.source,80),o=Yd(`scope`,e.scope??`user`,120),s=Xd(e.value),c=Gd((e.now??(()=>new Date))()),{root:l,memoryRoot:u}=await Qd(e),d=S.join(u,Zd(n,r)),f=c;try{f=$d(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`),tf(l,d,p)}async function of(e){let t=e.fsAsync??new z,{root:n,memoryRoot:r}=await Qd(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(Hd)).map(e=>nf(n,S.join(r,e.name),t)));return{root:n,activeRepositoryRoot:S.resolve(e.activeRepositoryRoot),items:a.sort((e,t)=>`${e.category}/${e.key}`.localeCompare(`${t.category}/${t.key}`))}}async function sf(e){let t=e.fsAsync??new z,{root:n,storageLocation:r}=await rf(e);return nf(n,r,t)}async function cf(e){let t=e.fsAsync??new z,{root:n,storageLocation:r}=await rf(e),i={...$d(await t.readFile(r,`utf8`),r),enabled:!1,lastUsedAt:Gd((e.now??(()=>new Date))())};return await t.writeFile(r,`${JSON.stringify(i,null,2)}\n`,`utf8`),tf(n,r,i)}async function lf(e){let t=e.fsAsync??new z,{storageLocation:n}=await rf(e);return await t.rm(n),{category:e.category,key:e.key,deleted:!0}}async function uf(e){let t=await sf(e);return t.enabled?t:null}const df=[`test`,`typecheck`,`build`],ff={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 pf(e){return e?Array.from(new Set(e.map(e=>e.trim()).filter(Boolean))):[]}function mf(e){return e.flatMap(e=>df.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 hf(){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 gf(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 _f(){return{id:`rollback-on-failure`,phase:`recover`,description:`Use the existing edit checkpoint restore path if verification fails.`,required:!0}}function vf(e){if(e.changedFiles.length===0)throw Error(`Self-hosting verification requires at least one changed file.`);let t=e.baseRef??`origin/develop`,n=pf(e.packageScopes),r=[...hf(),...mf(n),gf(t),_f()];return{changedFiles:[...e.changedFiles],packageScopes:n,baseRef:t,steps:r}}function yf(e,t){let n=ff[e][t];if(!n)throw Error(`Invalid self-hosting loop transition: ${e} -> ${t}`);return n}function bf(e){return e}function xf(e){if(!e||e.length===0)return;let[t,...n]=e;if(t!==void 0)return[t,...n]}function Sf(e){let t=xf(e),n=t===void 0?v.string().describe(`Registered model-invocable command name to execute`):v.enum(t).describe(`Registered model-invocable command name to execute`);return v.object({command:n,args:v.string().optional().describe(`Arguments to pass to the command`)})}function Cf(e){if(e.commandNames!==void 0)return e.commandNames;if(e.commandDescriptors!==void 0)return e.commandDescriptors.map(e=>F(e.name))}function wf(e){return`- ${F(e.name)}${e.argumentHint?` ${e.argumentHint}`:``}: ${e.description}`}function Tf(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(wf)].join(`
|
|
109
|
-
`)}function
|
|
110
|
-
`,`utf8`)}async function op(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??rp(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=ip(n);if(a!==void 0&&hp(a,r,i,t))return pp(a,e.currentVersion)}let a=await sp(e,t,n,r);return typeof a==`string`?mp(e.currentVersion,a):a}async function sp(e,t,n,r){let i=await gp({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return i.ok?(cp(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i.version}),i.version):(cp(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:i.errorMessage}),{status:`error`,errorMessage:i.errorMessage})}function cp(e,t){try{ap(e,t)}catch{}}async function lp(e){let t=await op(e);return t.status===`update_available`?t.notice:void 0}function up(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function dp(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function fp(e){return e.status===`update_available`?dp(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 pp(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:mp(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function mp(e,t){return qf(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 hp(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 gp(e){try{return{ok:!0,version:await _p(e)}}catch(e){return{ok:!1,errorMessage:e instanceof Error?e.message:String(e)}}}async function _p(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=vp(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 vp(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function yp(e){if(!bp(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 bp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xp(e){let t=to(),n={settings:{read:()=>q(t),write:e=>J(t,e)}},r=e.backgroundTaskRunners??oe(),i=e.commandModules??[],a=e.commandHostAdapters??n,o=`sessionStore`in e?e.sessionStore:vd(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 _d({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 Sp(e){let t=xp({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})}}}export{sl as AUTO_COMPACT_THRESHOLD_SETTINGS_KEY,so as AgentExecutor,Tl as BACKGROUND_COMMAND_DESCRIPTION,El as BACKGROUND_COMMAND_USAGE,dn as BUILT_IN_AGENTS,st as BackgroundJobOrchestrator,gc as BuiltinCommandSource,Gs as BundlePluginInstaller,Ws as BundlePluginLoader,yu as CLEAR_COMMAND_DESCRIPTION,tp as CLI_UPDATE_CACHE_TTL_MS,$f as CLI_UPDATE_PACKAGE_NAME,ep as CLI_UPDATE_REGISTRY_URL,np as CLI_UPDATE_TIMEOUT_MS,Cu as COST_COMMAND_DESCRIPTION,fc as CommandRegistry,ol as DEFAULT_AUTO_COMPACT_THRESHOLD,ou as DEFAULT_STATUS_LINE_COMMAND_SETTINGS,j as EXECUTION_ORIGIN_METADATA_KEYS,Tu as EXIT_COMMAND_DESCRIPTION,Ni as EditCheckpointStore,Sl as HELP_COMMAND_DESCRIPTION,_d as InteractiveSession,Rl as LANGUAGE_COMMAND_ARGUMENT_HINT,Ll as LANGUAGE_COMMAND_DESCRIPTION,Ju as MEMORY_COMMAND_ARGUMENT_HINT,qu as MEMORY_COMMAND_DESCRIPTION,Yu as MEMORY_COMMAND_USAGE,Ds as MEMORY_INDEX_MAX_BYTES,Es as MEMORY_INDEX_MAX_LINES,gn as MODEL_COMMAND_TOOL_PREFIX,Ys as MarketplaceClient,Gl as PERMISSIONS_COMMAND_DESCRIPTION,Wl as PERMISSION_MODE_ARGUMENT_HINT,Ul as PERMISSION_MODE_COMMAND_DESCRIPTION,pu as PLUGIN_COMMAND_ARGUMENT_HINT,fu as PLUGIN_COMMAND_DESCRIPTION,_n as PROVIDER_SAFE_TOOL_NAME_PATTERN,il as PluginCommandSource,Bs as PluginSettingsStore,Is as ProjectMemoryStore,lo as PromptExecutor,$c as ProviderConfigError,zl as RECOMMENDED_RESPONSE_LANGUAGES,mu as RELOAD_PLUGINS_COMMAND_DESCRIPTION,bu as RENAME_COMMAND_DESCRIPTION,xu as RENAME_COMMAND_USAGE,Su as RESUME_COMMAND_DESCRIPTION,Iu as REWIND_COMMAND_ARGUMENT_HINT,Fu as REWIND_COMMAND_DESCRIPTION,au as STATUSLINE_COMMAND_ARGUMENT_HINT,iu as STATUSLINE_COMMAND_DESCRIPTION,eo as SettingsParseError,$a as SkillCommandSource,pc as SystemCommandExecutor,Vd as USER_LOCAL_MEMORY_CATEGORIES,Ad as USER_LOCAL_STORAGE_CATEGORIES,jd as USER_LOCAL_STORAGE_CATEGORY_DEFINITIONS,wu as VALIDATE_SESSION_COMMAND_DESCRIPTION,Kl as VALID_PERMISSION_MODES,gl as addCommandContextReference,Yc as applyActiveModelChange,ru as applyPresetToSession,qc as applyProviderConfiguration,Jc as applyProviderSwitch,uu as applyStatusLineSettings,hn as assembleSubagentPrompt,Dl as buildBackgroundCommandSubcommands,Bl as buildLanguageCommandSubcommands,Xu as buildMemoryCommandSubcommands,ql as buildPermissionModeSubcommands,vu as buildPluginCommandSubcommands,Tr as buildPromptWithFileReferences,Cc as buildProviderProfile,Sc as buildProviderSetupPatch,Lu as buildRewindCommandSubcommands,su as buildStatusLineCommandSubcommands,Fl as cancelCommandBackgroundTask,op as checkForCliUpdate,Mc as checkSettingsDocument,Lc as checkSettingsFile,vl as clearCommandContextReferences,gr as clearContextReferences,Eu as clearConversationHistory,Il as closeCommandBackgroundTask,ml as compactCommandContext,Kf as compareSemverVersions,xp as createAgentRuntime,Kn as createAgentTool,vt as createBackgroundGroupExecutionEntryId,Pa as createBackgroundProcessTool,_t as createBackgroundTaskExecutionEntryId,_c as createBuiltinCommandModule,Ef as createCommandExecutionTool,$u as createCommandMemoryStores,Qu as createCommandPendingMemoryStore,Zu as createCommandProjectMemoryStore,pr as createContextReferenceItem,ra as createDefaultTools,M as createExecutionOriginMetadata,bt as createExecutionWorkspaceSnapshot,Ht as createExecutionWorkspaceTaskSpawner,In as createInProcessSubagentRunner,Pf as createInteractiveRuntime,zt as createLineDetailPage,Rt as createMainThreadDetailPage,gt as createMainThreadExecutionEntryId,bn as createModelCommandToolProjection,gu as createPluginRegistryReloadRequestedEffect,hu as createPluginTuiRequestedEffect,vd as createProjectSessionStore,Cn as createProjectedCommandExecutionTools,Or as createPromptFileReferenceHistoryEntry,rl as createProviderFromSettings,yn as createProviderSafeModelCommandToolName,kd as createQuery,Au as createSessionExitRequestedEffect,ku as createSessionPickerRequestedEffect,Ou as createSessionRenamedEffect,Sp as createStatelessRuntime,ko as createSubagentLogger,An as createSubagentSession,mc as createSystemCommands,Vf as createTestInteractiveSession,bc as deleteProviderProfile,ao as deleteSettings,lf as deleteUserLocalMemoryItem,cf as disableUserLocalMemoryItem,bs as discoverTaskFiles,mo as evaluateReversibleToolSafety,cd as executeSkill,fp as formatCliUpdateCheckMessage,dp as formatCliUpdateNotice,Ol as formatCommandBackgroundTask,kl as formatCommandBackgroundTaskList,wl as formatCommandHelpMessage,nu as formatCommandPermissionsMessage,Nu as formatCommandSessionReplayValidationReport,d as formatEnvReference,Xl as formatInvalidPermissionModeMessage,Hl as formatLanguageUsageMessage,hd as formatOrgPolicyViolationMessage,xn as formatProjectedModelCommandToolPromptDescription,Dr as formatPromptFileReferenceDiagnostics,Cs as formatTaskContext,fn as getBuiltInAgent,mn as getForkWorkerSuffix,Wc as getProviderSettingsPaths,lp as getStartupCliUpdateNotice,pn as getSubagentSuffix,to as getUserSettingsPath,rp as getUserUpdateCheckCachePath,Er as hasBlockingPromptFileReferenceDiagnostics,td as hasSensitiveCommandMemoryContent,ee as hasUsableSecretReference,zu as inspectCommandEditCheckpoint,sf as inspectUserLocalMemoryItem,Bd as inspectUserLocalStorage,gd as isApiKeyPlaintext,ed as isCommandMemoryType,g as isEnvReference,ks as isMemoryType,qf as isNewerSemverVersion,Yl as isPermissionMode,Df as isSlashCommand,cu as isStatusLineCommandSettingsPatch,_r as listActiveContextReferences,Nl as listCommandBackgroundTasks,hl as listCommandContextReferences,Ru as listCommandEditCheckpoints,eu as listCommandSessionAllowedTools,nd as listCommandUsedMemoryReferences,yd as listResumableSessionSummaries,of as listUserLocalMemoryItems,md as loadOrgPolicy,ws as loadTaskContext,wc as mergeProviderPatch,Vc as mergeProviders,Bc as mergeSettings,F as normalizeModelCommandName,Al as parseCommandBackgroundLogCursor,yt as parseExecutionWorkspaceEntryId,Ya as parseFrontmatter,kf as parseInput,Vl as parseLanguageArgument,Jl as parsePermissionModeArgument,Mr as parsePromptFileReferences,Du as parseSessionNameArgument,xs as parseTaskFile,vf as planSelfHostingVerification,ad as preprocessShellCommands,jc as probeProviderProfile,H as projectPaths,Lf as promptForApproval,ll as readAutoCompactThreshold,ul as readAutoCompactThresholdSource,Pl as readCommandBackgroundTaskLog,cl as readCommandContextState,Ql as readCommandPermissionMode,tu as readCommandPermissionsState,ju as readCommandSessionInfo,ys as readCurrentGitBranch,uf as readEnabledUserLocalMemoryItem,el as readMergedProviderSettings,Rc as readMergedProviderSettingsFromPaths,Qf as readPackageVersion,nl as readProviderSettings,q as readSettings,lu as readStatusLineSettings,ip as readUpdateCheckCache,rd as recordCommandMemoryEvent,_l as removeCommandContextReference,hr as removeContextReference,pl as resetAutoCompactThresholdSetting,Hf as resetUserConfig,Hc as resolveActiveProvider,tl as resolveEnvDefaultProvider,ne as resolveEnvReference,Uf as resolveGitBranch,bd as resolveLatestSessionId,Zl as resolvePermissionModeAdapter,_u as resolvePluginCommandAdapter,zr as resolvePromptFileReferencePaths,Rr as resolvePromptFileReferences,Gc as resolveProviderSettingsWriteTargetPath,xd as resolveSessionIdByIdOrName,no as resolveSettingsPathForScope,Ao as resolveSubagentLogDir,Ld as resolveUserLocalStorageRoot,Bu as restoreCommandEditCheckpoint,I as retrieveAgentToolDeps,Vu as rollbackCommandEditCheckpoint,xl as sanitizeProviderProfileName,Ss as selectRelevantTasks,dl as setCommandAutoCompactThreshold,yc as setCurrentProvider,af as setUserLocalMemoryItem,up as shouldRunStartupCliUpdateCheck,Vn as storeAgentToolDeps,id as substituteVariables,bl as suggestProviderProfileName,ft as summarizeBackgroundJobGroup,Ac as testProviderProfileCommand,vr as toContextReferenceRecords,B as toPromptFileReferenceRecords,Of as tokeniseSlashCommand,yf as transitionSelfHostingLoop,ro as updateModelInSettings,Ts as updateTaskFileStatus,mr as upsertContextReference,vc as upsertProviderProfile,Ei as userPaths,Mu as validateCommandSessionReplayLog,xc as validateProviderProfile,Ha as wrapEditCheckpointTools,ho as wrapReversibleExecutionTools,fl as writeAutoCompactThresholdSetting,$l as writeCommandPermissionMode,J as writeSettings,ap as writeUpdateCheckCache};
|
|
108
|
+
`),r=this.rebuildSystemMessage(t,n,{selfVerification:e});this.getSessionOrThrow().updateSystemMessage(r)}applyCommandModuleSelection(e,t){this.skillRouter.reapplyCommandModuleSelection(e,t)}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 qt(this.session)??I(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(_(c(`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();ic(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=nl(n,{providerOverride:e,providerDefinitions:this.providerDefinitions}),i=rl(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:hd(`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:hd(`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 vd(e,t=new R){let n=H(e);return new Cd(n.sessions,n.logs,t)}function yd(e=new R){return new Cd(Ei().sessions,void 0,e)}function bd(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:wd(e.messages)}))}function xd(e,t){return bd(e,t)[0]?.id}function Sd(e,t){return(e?.list()??[]).find(e=>e.id===t||e.name===t)?.id}var Cd=class{store;logsDir;fs;constructor(e,t,n=new R){this.store=new Ce(e),this.logsDir=t,this.fs=n}save(e){this.store.save(Td(e))}load(e){let t=this.store.load(e);return t===void 0?this.loadFromReplayLog(e):Ed(t)}list(){let e=this.store.list().map(Ed),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=Te(we(w(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:Dd(n),backgroundTaskEvents:n,backgroundJobGroups:kd(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 wd(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 Td(e){return{...e}}function Ed(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 Dd(e){let t=new Map;for(let n of e){let e=Od(n);e&&t.set(e.id,e)}return[...t.values()]}function Od(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 kd(e){let t=new Map;for(let n of e)t.set(n.group.id,n.group);return[...t.values()]}function Ad(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).slice(0,60)}async function jd(e,t){let n=t.slice(0,200),r=await e.chat([c(`You generate short session titles. Respond with ONLY a 3-5 word lowercase-hyphenated title (e.g. refactor-auth-middleware). No explanation, no punctuation, no quotes.`),l(n)],{maxTokens:20}),i=Ad(typeof r.content==`string`?r.content:``);return!i||i.length<3?Ad(t):i}function Md(e){let t=new _d({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 Nd=[`preferences`,`view-state`,`memory-projections`,`task-associations`,`workflow-metadata`,`inspection-index`],Pd=[{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 Fd(e){return e.toISOString()}function Id(e,t){if(t.trim().length===0)throw Error(`${e} must not be empty.`);if(!S.isAbsolute(t))throw Error(`${e} must be an absolute path: ${t}`)}function Ld(){return process.env.HOME??D()}function Rd(e,t){let n=S.relative(e,t);return n===``||!n.startsWith(`..`)&&!S.isAbsolute(n)}async function zd(e,t){let n=e;for(;S.dirname(n)!==n;)try{let r=await t.realpath(n),i=S.relative(n,e);return S.resolve(r,i)}catch{n=S.dirname(n)}try{return await t.realpath(n)}catch{return S.resolve(e)}}async function Bd(e){let t=e.fsAsync??new z,n=S.resolve(e.activeRepositoryRoot);Id(`activeRepositoryRoot`,n);let r=e.storageRoot===void 0?S.join(e.homeDir??Ld(),`.robota`):e.storageRoot;Id(`userLocalStorageRoot`,r);let i=S.resolve(r),a=await zd(i,t);if(Rd(await zd(n,t),a))throw Error(`User-local storage root must be outside the active repository: ${i}`);return i}function Vd(e,t){return S.join(e,t)}async function Hd(e,t,n){let r=Vd(e,t),i;try{i=await n.readdir(r,{withFileTypes:!0})}catch{return[]}return(await Promise.all(i.map(async i=>{let a=S.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:Fd(new Date(o.birthtimeMs)),lastUsedAt:Fd(new Date(o.mtimeMs)),enabled:!0,deleteAvailable:!0,disableAvailable:!1}}))).sort((e,t)=>e.key.localeCompare(t.key))}async function Ud(e){let t=e.fsAsync??new z,n=await Bd(e),r=S.resolve(e.activeRepositoryRoot),i=e.createDirectories??!0;return i&&await t.mkdir(n,{recursive:!0}),{root:n,activeRepositoryRoot:r,categories:await Promise.all(Pd.map(async e=>{let r=Vd(n,e.category);i&&await t.mkdir(r,{recursive:!0});let a=await Hd(n,e.category,t);return{category:e.category,purpose:e.purpose,mayExecuteCommands:e.mayExecuteCommands,storageLocation:r,itemCount:a.length,items:a}})),generatedAt:Fd((e.now??(()=>new Date))())}}const Wd=[`view-preference`,`last-visible-cwd`,`background-selection`,`task-association`,`display-preference`,`inspection-choice`],Gd=`.json`,Kd=/^[a-z0-9][a-z0-9._-]*$/u,qd={"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 Jd(e){return e.toISOString()}function Yd(e){return Wd.includes(e)}function Xd(e){if(!Yd(e))throw Error(`Unsupported user-local memory category: ${e}`);return e}function Zd(e,t){let n=t.trim();if(n.length===0)throw Error(`${e} must not be empty.`);if(n.length>80||!Kd.test(n))throw Error(`${e} must use lowercase letters, numbers, dots, underscores, or hyphens: ${t}`);return n}function Qd(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 $d(e){return Qd(`value`,e,240)}function ef(e,t){return`${e}__${t}${Gd}`}async function tf(e){let t=await Bd(e);return{root:t,memoryRoot:S.join(t,`memory-projections`)}}function nf(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:Xd(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:rf(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 rf(e,t){let n=e[t];if(typeof n!=`boolean`)throw Error(`Invalid user-local memory field: ${t}`);return n}function af(e,t,n){return{root:e,category:n.category,key:n.key,summary:n.summary,valueSummary:$d(n.value),source:n.source,scope:n.scope,storageLocation:t,createdAt:n.createdAt,lastUsedAt:n.lastUsedAt,enabled:n.enabled,displayNavigationRule:qd[n.category],commandExecutionEffect:`none`,deleteAvailable:!0,disableAvailable:!0}}async function of(e,t,n){return af(e,t,nf(await n.readFile(t,`utf8`),t))}async function sf(e){let t=Xd(e.category),n=Zd(`key`,e.key),{root:r,memoryRoot:i}=await tf(e);return{root:r,storageLocation:S.join(i,ef(t,n))}}async function cf(e){let t=e.fsAsync??new z,n=Xd(e.category),r=Zd(`key`,e.key),i=Qd(`summary`,e.summary,240),a=Qd(`source`,e.source,80),o=Qd(`scope`,e.scope??`user`,120),s=$d(e.value),c=Jd((e.now??(()=>new Date))()),{root:l,memoryRoot:u}=await tf(e),d=S.join(u,ef(n,r)),f=c;try{f=nf(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`),af(l,d,p)}async function lf(e){let t=e.fsAsync??new z,{root:n,memoryRoot:r}=await tf(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(Gd)).map(e=>of(n,S.join(r,e.name),t)));return{root:n,activeRepositoryRoot:S.resolve(e.activeRepositoryRoot),items:a.sort((e,t)=>`${e.category}/${e.key}`.localeCompare(`${t.category}/${t.key}`))}}async function uf(e){let t=e.fsAsync??new z,{root:n,storageLocation:r}=await sf(e);return of(n,r,t)}async function df(e){let t=e.fsAsync??new z,{root:n,storageLocation:r}=await sf(e),i={...nf(await t.readFile(r,`utf8`),r),enabled:!1,lastUsedAt:Jd((e.now??(()=>new Date))())};return await t.writeFile(r,`${JSON.stringify(i,null,2)}\n`,`utf8`),af(n,r,i)}async function ff(e){let t=e.fsAsync??new z,{storageLocation:n}=await sf(e);return await t.rm(n),{category:e.category,key:e.key,deleted:!0}}async function pf(e){let t=await uf(e);return t.enabled?t:null}const mf=[`test`,`typecheck`,`build`],hf={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 gf(e){return e?Array.from(new Set(e.map(e=>e.trim()).filter(Boolean))):[]}function _f(e){return e.flatMap(e=>mf.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 vf(){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 yf(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 bf(){return{id:`rollback-on-failure`,phase:`recover`,description:`Use the existing edit checkpoint restore path if verification fails.`,required:!0}}function xf(e){if(e.changedFiles.length===0)throw Error(`Self-hosting verification requires at least one changed file.`);let t=e.baseRef??`origin/develop`,n=gf(e.packageScopes),r=[...vf(),..._f(n),yf(t),bf()];return{changedFiles:[...e.changedFiles],packageScopes:n,baseRef:t,steps:r}}function Sf(e,t){let n=hf[e][t];if(!n)throw Error(`Invalid self-hosting loop transition: ${e} -> ${t}`);return n}function Cf(e){return e}function wf(e){if(!e||e.length===0)return;let[t,...n]=e;if(t!==void 0)return[t,...n]}function Tf(e){let t=wf(e),n=t===void 0?v.string().describe(`Registered model-invocable command name to execute`):v.enum(t).describe(`Registered model-invocable command name to execute`);return v.object({command:n,args:v.string().optional().describe(`Arguments to pass to the command`)})}function Ef(e){if(e.commandNames!==void 0)return e.commandNames;if(e.commandDescriptors!==void 0)return e.commandDescriptors.map(e=>F(e.name))}function Df(e){return`- ${F(e.name)}${e.argumentHint?` ${e.argumentHint}`:``}: ${e.description}`}function Of(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(Df)].join(`
|
|
109
|
+
`)}function kf(e){let t=Tf(Ef(e));return he(`ExecuteCommand`,Of(e.commandDescriptors),Cf(t),async n=>{let r=t.parse(n),i=F(r.command);return e.isModelInvocable(i)?Sn(i,await e.execute(i,r.args??``)):JSON.stringify({success:!1,command:i,error:`Command is not model-invocable: ${i}`})})}function Af(e){return/^\/\S/.test(e)}function jf(e){let t=e.slice(1).trim().split(/\s+/);return{name:t[0]??``,args:t.slice(1).filter(e=>e.length>0)}}function Mf(e){if(!Af(e))return{type:`user-message`,text:e};let{name:t,args:n}=jf(e);return{type:`slash-command`,name:t,args:n}}function Nf(e,t){return t.type===`pick`?{type:`pick`,id:e,title:`/${e}`,items:t.getItems()}:{type:`confirm`,id:e,message:t.message}}function Pf(e,t){return t.type===`cancelled`?null:e.type===`pick`&&t.type===`pick`?[t.item.value]:e.type===`confirm`&&t.type===`confirm`?[]:null}function Ff(e){return e.map(e=>({name:e.name,description:e.description}))}function If(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 Lf(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=Mf(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=Pf(s,await t.requestAction(Nf(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 _d({provider:t,cwd:r,sessionStore:a,commandModules:n})}a=If(i,t);let o=i.listCommands();t.setAvailableCommands(Ff(o)),t.onSubmit(s),await t.start()},async stop(){a?.(),await t.stop(),await i?.shutdown(),i=null}}}const Rf=[`Allow once`,`Allow for this session`,`Deny`];function zf(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 Bf(e,t,n){e.writeLine(``),e.writeError(`[Permission Required] Tool: ${t}`),e.writeLine(` ${zf(n)}`),e.writeLine(``);let r=await e.select(Rf,0);return r===1?`allow-session`:r===0}const Vf={usedTokens:0,maxTokens:2e5,usedPercentage:0,remainingPercentage:100},Hf={sessionId:`test-session-id`,updatedAt:new Date().toISOString(),entries:[]},Uf={id:``,parentSessionId:`test-session-id`,waitPolicy:`wait_all`,taskIds:[],status:`completed`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),results:[]};function Wf(e){return{submit:()=>Promise.resolve(),abort:()=>{},cancelQueue:()=>{},shutdown:()=>Promise.resolve(),isExecuting:()=>!1,getPendingPrompt:()=>null,getMessages:()=>[],getContextState:()=>({...Vf}),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:()=>({...Uf}),waitBackgroundJobGroup:()=>Promise.resolve({...Uf}),getExecutionWorkspaceSnapshot:()=>({...Hf}),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 Gf(){let e=to();return{deleted:ao(e),path:e}}function Kf(e){try{let t=qf(e);if(!t)return;let n=x(w(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 qf(e){let t=E(e),n=C(t);for(;n!==t;){let e=Jf(w(t,`.git`),t);if(e)return e;t=n,n=C(t)}return Jf(w(t,`.git`),t)}function Jf(e,t){if(!b(e))return;let n=Ae(e);if(n.isDirectory())return e;if(!n.isFile())return;let r=x(e,`utf8`).trim();if(!r.startsWith(`gitdir:`))return;let i=r.slice(7).trim();return Ye(i)?i:E(t,i)}function Yf(e,t){let n=Zf(e),r=Zf(t);if(n===void 0||r===void 0)return Math.sign(e.localeCompare(t));let i=Qf(n.major,r.major)||Qf(n.minor,r.minor)||Qf(n.patch,r.patch);return i===0?$f(n.prerelease,r.prerelease):i}function Xf(e,t){return Yf(e,t)>0}function Zf(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 Qf(e,t){return Math.sign(e-t)}function $f(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=ep(n,i);if(a!==0)return a}return 0}function ep(e,t){let n=$(e),r=$(t);return n!==void 0&&r!==void 0?Qf(n,r):n===void 0?r===void 0?Math.sign(e.localeCompare(t)):1:-1}function tp(e){let t=C(at(e)),n=[w(t,`..`,`..`,`package.json`),w(t,`..`,`package.json`)];for(let e of n)try{let t=x(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`}const np=`@robota-sdk/agent-cli`,rp=`https://registry.npmjs.org`,ip=1440*60*1e3,ap=1500;function op(e=process.env.HOME??process.env.USERPROFILE??`/`){return w(e,`.robota`,`update-check.json`)}function sp(e){if(b(e))try{return Sp(JSON.parse(x(e,`utf8`)))}catch{return}}function cp(e,t){je(C(e),{recursive:!0}),Le(e,JSON.stringify(t,null,2)+`
|
|
110
|
+
`,`utf8`)}async function lp(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??op(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=sp(n);if(a!==void 0&&vp(a,r,i,t))return gp(a,e.currentVersion)}let a=await up(e,t,n,r);return typeof a==`string`?_p(e.currentVersion,a):a}async function up(e,t,n,r){let i=await yp({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return i.ok?(dp(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i.version}),i.version):(dp(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:i.errorMessage}),{status:`error`,errorMessage:i.errorMessage})}function dp(e,t){try{cp(e,t)}catch{}}async function fp(e){let t=await lp(e);return t.status===`update_available`?t.notice:void 0}function pp(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function mp(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function hp(e){return e.status===`update_available`?mp(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 gp(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:_p(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function _p(e,t){return Xf(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 vp(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 yp(e){try{return{ok:!0,version:await bp(e)}}catch(e){return{ok:!1,errorMessage:e instanceof Error?e.message:String(e)}}}async function bp(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=xp(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 xp(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function Sp(e){if(!Cp(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 Cp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function wp(e){let t=to(),n={settings:{read:()=>q(t),write:e=>J(t,e)}},r=e.backgroundTaskRunners??oe(),i=e.commandModules??[],a=e.commandHostAdapters??n,o=`sessionStore`in e?e.sessionStore:vd(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 _d({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 Tp(e){let t=wp({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})}}}export{sl as AUTO_COMPACT_THRESHOLD_SETTINGS_KEY,so as AgentExecutor,Tl as BACKGROUND_COMMAND_DESCRIPTION,El as BACKGROUND_COMMAND_USAGE,dn as BUILT_IN_AGENTS,st as BackgroundJobOrchestrator,gc as BuiltinCommandSource,Gs as BundlePluginInstaller,Ws as BundlePluginLoader,yu as CLEAR_COMMAND_DESCRIPTION,ip as CLI_UPDATE_CACHE_TTL_MS,np as CLI_UPDATE_PACKAGE_NAME,rp as CLI_UPDATE_REGISTRY_URL,ap as CLI_UPDATE_TIMEOUT_MS,Cu as COST_COMMAND_DESCRIPTION,fc as CommandRegistry,ol as DEFAULT_AUTO_COMPACT_THRESHOLD,ou as DEFAULT_STATUS_LINE_COMMAND_SETTINGS,j as EXECUTION_ORIGIN_METADATA_KEYS,Tu as EXIT_COMMAND_DESCRIPTION,Ni as EditCheckpointStore,Sl as HELP_COMMAND_DESCRIPTION,_d as InteractiveSession,Rl as LANGUAGE_COMMAND_ARGUMENT_HINT,Ll as LANGUAGE_COMMAND_DESCRIPTION,Ju as MEMORY_COMMAND_ARGUMENT_HINT,qu as MEMORY_COMMAND_DESCRIPTION,Yu as MEMORY_COMMAND_USAGE,Ds as MEMORY_INDEX_MAX_BYTES,Es as MEMORY_INDEX_MAX_LINES,gn as MODEL_COMMAND_TOOL_PREFIX,Ys as MarketplaceClient,Gl as PERMISSIONS_COMMAND_DESCRIPTION,Wl as PERMISSION_MODE_ARGUMENT_HINT,Ul as PERMISSION_MODE_COMMAND_DESCRIPTION,pu as PLUGIN_COMMAND_ARGUMENT_HINT,fu as PLUGIN_COMMAND_DESCRIPTION,_n as PROVIDER_SAFE_TOOL_NAME_PATTERN,il as PluginCommandSource,Bs as PluginSettingsStore,Is as ProjectMemoryStore,lo as PromptExecutor,$c as ProviderConfigError,zl as RECOMMENDED_RESPONSE_LANGUAGES,mu as RELOAD_PLUGINS_COMMAND_DESCRIPTION,bu as RENAME_COMMAND_DESCRIPTION,xu as RENAME_COMMAND_USAGE,Su as RESUME_COMMAND_DESCRIPTION,Iu as REWIND_COMMAND_ARGUMENT_HINT,Fu as REWIND_COMMAND_DESCRIPTION,au as STATUSLINE_COMMAND_ARGUMENT_HINT,iu as STATUSLINE_COMMAND_DESCRIPTION,eo as SettingsParseError,$a as SkillCommandSource,pc as SystemCommandExecutor,Wd as USER_LOCAL_MEMORY_CATEGORIES,Nd as USER_LOCAL_STORAGE_CATEGORIES,Pd as USER_LOCAL_STORAGE_CATEGORY_DEFINITIONS,wu as VALIDATE_SESSION_COMMAND_DESCRIPTION,Kl as VALID_PERMISSION_MODES,gl as addCommandContextReference,Yc as applyActiveModelChange,ru as applyPresetToSession,qc as applyProviderConfiguration,Jc as applyProviderSwitch,uu as applyStatusLineSettings,hn as assembleSubagentPrompt,Dl as buildBackgroundCommandSubcommands,Bl as buildLanguageCommandSubcommands,Xu as buildMemoryCommandSubcommands,ql as buildPermissionModeSubcommands,vu as buildPluginCommandSubcommands,Tr as buildPromptWithFileReferences,Cc as buildProviderProfile,Sc as buildProviderSetupPatch,Lu as buildRewindCommandSubcommands,su as buildStatusLineCommandSubcommands,Fl as cancelCommandBackgroundTask,lp as checkForCliUpdate,Mc as checkSettingsDocument,Lc as checkSettingsFile,vl as clearCommandContextReferences,gr as clearContextReferences,Eu as clearConversationHistory,Il as closeCommandBackgroundTask,ml as compactCommandContext,Yf as compareSemverVersions,wp as createAgentRuntime,Kn as createAgentTool,vt as createBackgroundGroupExecutionEntryId,Pa as createBackgroundProcessTool,_t as createBackgroundTaskExecutionEntryId,_c as createBuiltinCommandModule,kf as createCommandExecutionTool,$u as createCommandMemoryStores,Qu as createCommandPendingMemoryStore,Zu as createCommandProjectMemoryStore,pr as createContextReferenceItem,ra as createDefaultTools,M as createExecutionOriginMetadata,bt as createExecutionWorkspaceSnapshot,Ht as createExecutionWorkspaceTaskSpawner,In as createInProcessSubagentRunner,Lf as createInteractiveRuntime,zt as createLineDetailPage,Rt as createMainThreadDetailPage,gt as createMainThreadExecutionEntryId,bn as createModelCommandToolProjection,gu as createPluginRegistryReloadRequestedEffect,hu as createPluginTuiRequestedEffect,vd as createProjectSessionStore,Cn as createProjectedCommandExecutionTools,Or as createPromptFileReferenceHistoryEntry,rl as createProviderFromSettings,yn as createProviderSafeModelCommandToolName,Md as createQuery,Au as createSessionExitRequestedEffect,ku as createSessionPickerRequestedEffect,Ou as createSessionRenamedEffect,Tp as createStatelessRuntime,ko as createSubagentLogger,An as createSubagentSession,mc as createSystemCommands,Wf as createTestInteractiveSession,yd as createUserSessionStore,bc as deleteProviderProfile,ao as deleteSettings,ff as deleteUserLocalMemoryItem,df as disableUserLocalMemoryItem,bs as discoverTaskFiles,mo as evaluateReversibleToolSafety,cd as executeSkill,hp as formatCliUpdateCheckMessage,mp as formatCliUpdateNotice,Ol as formatCommandBackgroundTask,kl as formatCommandBackgroundTaskList,wl as formatCommandHelpMessage,nu as formatCommandPermissionsMessage,Nu as formatCommandSessionReplayValidationReport,d as formatEnvReference,Xl as formatInvalidPermissionModeMessage,Hl as formatLanguageUsageMessage,hd as formatOrgPolicyViolationMessage,xn as formatProjectedModelCommandToolPromptDescription,Dr as formatPromptFileReferenceDiagnostics,Cs as formatTaskContext,jd as generateSessionName,fn as getBuiltInAgent,mn as getForkWorkerSuffix,Wc as getProviderSettingsPaths,fp as getStartupCliUpdateNotice,pn as getSubagentSuffix,to as getUserSettingsPath,op as getUserUpdateCheckCachePath,Er as hasBlockingPromptFileReferenceDiagnostics,td as hasSensitiveCommandMemoryContent,ee as hasUsableSecretReference,zu as inspectCommandEditCheckpoint,uf as inspectUserLocalMemoryItem,Ud as inspectUserLocalStorage,gd as isApiKeyPlaintext,ed as isCommandMemoryType,g as isEnvReference,ks as isMemoryType,Xf as isNewerSemverVersion,Yl as isPermissionMode,Af as isSlashCommand,cu as isStatusLineCommandSettingsPatch,_r as listActiveContextReferences,Nl as listCommandBackgroundTasks,hl as listCommandContextReferences,Ru as listCommandEditCheckpoints,eu as listCommandSessionAllowedTools,nd as listCommandUsedMemoryReferences,bd as listResumableSessionSummaries,lf as listUserLocalMemoryItems,md as loadOrgPolicy,ws as loadTaskContext,wc as mergeProviderPatch,Vc as mergeProviders,Bc as mergeSettings,F as normalizeModelCommandName,Al as parseCommandBackgroundLogCursor,yt as parseExecutionWorkspaceEntryId,Ya as parseFrontmatter,Mf as parseInput,Vl as parseLanguageArgument,Jl as parsePermissionModeArgument,Mr as parsePromptFileReferences,Du as parseSessionNameArgument,xs as parseTaskFile,xf as planSelfHostingVerification,ad as preprocessShellCommands,jc as probeProviderProfile,H as projectPaths,Bf as promptForApproval,ll as readAutoCompactThreshold,ul as readAutoCompactThresholdSource,Pl as readCommandBackgroundTaskLog,cl as readCommandContextState,Ql as readCommandPermissionMode,tu as readCommandPermissionsState,ju as readCommandSessionInfo,ys as readCurrentGitBranch,pf as readEnabledUserLocalMemoryItem,el as readMergedProviderSettings,Rc as readMergedProviderSettingsFromPaths,tp as readPackageVersion,nl as readProviderSettings,q as readSettings,lu as readStatusLineSettings,sp as readUpdateCheckCache,rd as recordCommandMemoryEvent,_l as removeCommandContextReference,hr as removeContextReference,pl as resetAutoCompactThresholdSetting,Gf as resetUserConfig,Hc as resolveActiveProvider,tl as resolveEnvDefaultProvider,ne as resolveEnvReference,Kf as resolveGitBranch,xd as resolveLatestSessionId,Zl as resolvePermissionModeAdapter,_u as resolvePluginCommandAdapter,zr as resolvePromptFileReferencePaths,Rr as resolvePromptFileReferences,Gc as resolveProviderSettingsWriteTargetPath,Sd as resolveSessionIdByIdOrName,no as resolveSettingsPathForScope,Ao as resolveSubagentLogDir,Bd as resolveUserLocalStorageRoot,Bu as restoreCommandEditCheckpoint,I as retrieveAgentToolDeps,Vu as rollbackCommandEditCheckpoint,xl as sanitizeProviderProfileName,Ss as selectRelevantTasks,dl as setCommandAutoCompactThreshold,yc as setCurrentProvider,cf as setUserLocalMemoryItem,pp as shouldRunStartupCliUpdateCheck,Vn as storeAgentToolDeps,id as substituteVariables,bl as suggestProviderProfileName,ft as summarizeBackgroundJobGroup,Ac as testProviderProfileCommand,vr as toContextReferenceRecords,B as toPromptFileReferenceRecords,jf as tokeniseSlashCommand,Sf as transitionSelfHostingLoop,ro as updateModelInSettings,Ts as updateTaskFileStatus,mr as upsertContextReference,vc as upsertProviderProfile,Ei as userPaths,Mu as validateCommandSessionReplayLog,xc as validateProviderProfile,Ha as wrapEditCheckpointTools,ho as wrapReversibleExecutionTools,fl as writeAutoCompactThresholdSetting,$l as writeCommandPermissionMode,J as writeSettings,cp as writeUpdateCheckCache};
|
|
111
111
|
//# sourceMappingURL=index.js.map
|