@robota-sdk/agent-command 3.0.0-beta.65 → 3.0.0-beta.67

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.
Files changed (57) hide show
  1. package/README.md +74 -0
  2. package/dist/node/index.cjs +28 -28
  3. package/dist/node/index.d.ts +35 -5
  4. package/dist/node/index.d.ts.map +1 -1
  5. package/dist/node/index.js +28 -28
  6. package/dist/node/index.js.map +1 -1
  7. package/package.json +5 -3
  8. package/src/agent/agent-command-module.ts +2 -1
  9. package/src/agent/agent-command.ts +4 -2
  10. package/src/background/background-command-module.ts +7 -5
  11. package/src/background/background-command.ts +2 -1
  12. package/src/compact/compact-command-module.ts +2 -1
  13. package/src/compact/compact-command.ts +2 -1
  14. package/src/context/context-command-module.ts +2 -1
  15. package/src/context/context-command.ts +7 -6
  16. package/src/default/default-command-modules.ts +64 -0
  17. package/src/default/index.ts +2 -0
  18. package/src/exit/exit-command-module.ts +4 -2
  19. package/src/exit/exit-command.ts +2 -1
  20. package/src/help/help-command-module.ts +4 -2
  21. package/src/help/help-command.ts +2 -1
  22. package/src/index.ts +3 -0
  23. package/src/language/language-command-module.ts +8 -6
  24. package/src/language/language-command.ts +2 -1
  25. package/src/memory/memory-command-module.ts +8 -6
  26. package/src/memory/memory-command.ts +9 -8
  27. package/src/mode/mode-command-module.ts +8 -6
  28. package/src/mode/mode-command.ts +2 -1
  29. package/src/model/model-command-module.ts +8 -6
  30. package/src/model/model-command.ts +2 -1
  31. package/src/permissions/permissions-command-module.ts +8 -6
  32. package/src/permissions/permissions-command.ts +2 -1
  33. package/src/plugin/plugin-command-module.ts +8 -6
  34. package/src/plugin/plugin-command.ts +6 -5
  35. package/src/plugins/default-plugin-command-adapter.ts +164 -0
  36. package/src/plugins/default-plugin-command-source-loader.ts +31 -0
  37. package/src/provider/__tests__/provider-setup-flow.test.ts +204 -3
  38. package/src/provider/index.ts +2 -0
  39. package/src/provider/provider-command-execution.ts +11 -6
  40. package/src/provider/provider-command-module.ts +2 -1
  41. package/src/provider/provider-command-profile-lifecycle.ts +11 -6
  42. package/src/provider/provider-command-profile-operations.ts +11 -9
  43. package/src/provider/provider-command-profile.ts +12 -10
  44. package/src/provider/provider-command-setup.ts +10 -8
  45. package/src/provider/provider-setup-flow.ts +3 -2
  46. package/src/provider/provider-startup.ts +117 -0
  47. package/src/reset/reset-command-module.ts +2 -1
  48. package/src/rewind/rewind-command-module.ts +8 -6
  49. package/src/rewind/rewind-command.ts +7 -6
  50. package/src/session/session-command-module.ts +8 -6
  51. package/src/session/session-command.ts +2 -1
  52. package/src/skills/skills-command-module.ts +7 -7
  53. package/src/statusline/statusline-command-module.ts +8 -6
  54. package/src/statusline/statusline-command.ts +2 -1
  55. package/src/user-local/user-local-command-module.ts +6 -5
  56. package/src/user-local/user-local-command.ts +4 -2
  57. package/src/user-local/user-local-memory-command.ts +3 -1
@@ -1,31 +1,31 @@
1
- import{BACKGROUND_COMMAND_DESCRIPTION as e,BACKGROUND_COMMAND_USAGE as t,CLEAR_COMMAND_DESCRIPTION as n,COST_COMMAND_DESCRIPTION as r,DEFAULT_AUTO_COMPACT_THRESHOLD as i,DEFAULT_STATUS_LINE_COMMAND_SETTINGS as a,EXIT_COMMAND_DESCRIPTION as o,HELP_COMMAND_DESCRIPTION as s,LANGUAGE_COMMAND_ARGUMENT_HINT as ee,LANGUAGE_COMMAND_DESCRIPTION as te,MEMORY_COMMAND_ARGUMENT_HINT as ne,MEMORY_COMMAND_DESCRIPTION as re,MEMORY_COMMAND_USAGE as ie,MODEL_COMMAND_ARGUMENT_HINT as ae,MODEL_COMMAND_DESCRIPTION as oe,PERMISSIONS_COMMAND_DESCRIPTION as se,PERMISSION_MODE_ARGUMENT_HINT as ce,PERMISSION_MODE_COMMAND_DESCRIPTION as le,PLUGIN_COMMAND_ARGUMENT_HINT as ue,PLUGIN_COMMAND_DESCRIPTION as de,RELOAD_PLUGINS_COMMAND_DESCRIPTION as fe,RENAME_COMMAND_DESCRIPTION as pe,RENAME_COMMAND_USAGE as me,RESUME_COMMAND_DESCRIPTION as he,REWIND_COMMAND_ARGUMENT_HINT as ge,REWIND_COMMAND_DESCRIPTION as _e,STATUSLINE_COMMAND_ARGUMENT_HINT as ve,STATUSLINE_COMMAND_DESCRIPTION as ye,SkillCommandSource as be,VALIDATE_SESSION_COMMAND_DESCRIPTION as xe,addCommandContextReference as Se,buildBackgroundCommandSubcommands as Ce,buildLanguageCommandSubcommands as we,buildMemoryCommandSubcommands as Te,buildModelCommandSubcommands as Ee,buildPermissionModeSubcommands as De,buildPluginCommandSubcommands as Oe,buildProviderSetupPatch as ke,buildRewindCommandSubcommands as Ae,buildStatusLineCommandSubcommands as je,cancelCommandBackgroundTask as Me,clearCommandContextReferences as Ne,clearConversationHistory as Pe,closeCommandBackgroundTask as Fe,compactCommandContext as Ie,createCommandMemoryStores as Le,createPluginRegistryReloadRequestedEffect as Re,createPluginTuiRequestedEffect as ze,createSessionExitRequestedEffect as Be,createSessionPickerRequestedEffect as Ve,createSessionRenamedEffect as He,deleteProviderProfile as Ue,deleteUserLocalMemoryItem as We,disableUserLocalMemoryItem as Ge,formatCommandBackgroundTaskList as Ke,formatCommandHelpMessage as qe,formatCommandPermissionsMessage as Je,formatCommandSessionReplayValidationReport as Ye,formatInvalidPermissionModeMessage as Xe,formatLanguageUsageMessage as Ze,formatModelCommandUsageMessageAsync as Qe,hasSensitiveCommandMemoryContent as $e,inspectCommandEditCheckpoint as et,inspectUserLocalMemoryItem as tt,inspectUserLocalStorage as nt,isCommandMemoryType as rt,isPermissionMode as it,listCommandBackgroundTasks as at,listCommandContextReferences as c,listCommandEditCheckpoints as ot,listCommandUsedMemoryReferences as st,listUserLocalMemoryItems as ct,mergeProviderPatch as lt,parseCommandBackgroundLogCursor as ut,parseLanguageArgument as dt,parsePermissionModeArgument as ft,parseSessionNameArgument as pt,readAutoCompactThreshold as mt,readAutoCompactThresholdSource as ht,readCommandBackgroundTaskLog as gt,readCommandContextState as _t,readCommandPermissionMode as vt,readCommandPermissionsState as yt,readCommandSessionInfo as bt,recordCommandMemoryEvent as xt,removeCommandContextReference as St,resetAutoCompactThresholdSetting as Ct,resolvePluginCommandAdapter as wt,restoreCommandEditCheckpoint as Tt,rollbackCommandEditCheckpoint as Et,sanitizeProviderProfileName as Dt,setCommandAutoCompactThreshold as Ot,setCurrentProvider as kt,setUserLocalMemoryItem as At,suggestProviderProfileName as jt,summarizeBackgroundJobGroup as Mt,testProviderProfileCommand as Nt,upsertProviderProfile as Pt,validateCommandSessionReplayLog as Ft,writeAutoCompactThresholdSetting as It,writeCommandPermissionMode as Lt}from"@robota-sdk/agent-framework";import{findProviderDefinition as l,formatSupportedProviderTypes as u}from"@robota-sdk/agent-core";function Rt(e){let t=[],n=``,r,i=!1;for(let a of e){if(i){n+=a,i=!1;continue}if(r&&a===`\\`){i=!0;continue}if(r){a===r?r=void 0:n+=a;continue}if(a===`"`||a===`'`){r=a;continue}if(/\s/.test(a)){n.length>0&&(t.push(n),n=``);continue}n+=a}return n.length>0&&t.push(n),t}function zt(e){let t=[],n,r,i;for(let a=0;a<e.length;a+=1){let o=e[a];if(o!==`--background`){if(o===`--agent`||o===`--type`||o===`-a`){n=e[a+1],a+=1;continue}if(o===`--model`){r=e[a+1],a+=1;continue}if(o===`--isolation`){let t=e[a+1];(t===`none`||t===`worktree`)&&(i=t),a+=1;continue}o!==void 0&&t.push(o)}}return{positional:t,...n?{agentType:n}:{},...r?{model:r}:{},...i?{isolation:i}:{}}}function d(e,t,n,r){return{agentType:t,label:n,mode:`background`,prompt:r,...e.model?{model:e.model}:{},...e.isolation?{isolation:e.isolation}:{}}}function Bt(e,t){let n=zt(e),[r,...i]=n.positional,a=n.agentType??`general-purpose`,o=n.positional;!n.agentType&&r&&t.has(r)&&(a=r,o=i);let s=o.join(` `).trim();if(s)return d(n,a,a,s)}function Vt(e,t){let n=zt(e);return n.positional.map(e=>Ht(e,n,t)).filter(e=>e!==void 0)}function Ht(e,t,n){let r=e.indexOf(`=`);if(r>0)return Ut(e.slice(0,r),e.slice(r+1),t,n);let i=e.indexOf(`:`);if(i<=0||i===e.length-1)return;let a=e.slice(0,i),o=e.slice(i+1);return d(t,t.agentType??(n.has(a)?a:`general-purpose`),a,o)}function Ut(e,t,n,r){let i=t.indexOf(`:`);if(i===-1)return d(n,n.agentType??(r.has(e)?e:`general-purpose`),e,t);if(!(i===0||i===t.length-1))return d(n,t.slice(0,i),e,t.slice(i+1))}function f(e){return e instanceof Error?e.message:String(e)}function Wt(e){return new Set(e.listAgentDefinitions().map(e=>e.name))}function Gt(e,t){let n=e.listAgentDefinitions();if(!n.some(e=>e.name===t))return{message:`Unknown agent type: ${t}\nAvailable agents: ${n.map(e=>e.name).join(`, `)}`,success:!1}}async function Kt(e,t){let n=Gt(e,t.agentType);if(n)return n;try{return{state:await e.spawnAgentJob(t)}}catch(e){return{message:f(e),success:!1}}}function qt(){return{message:``,effects:[{type:`agent-switcher-requested`}],success:!0}}async function Jt(e){let t=e.listAgentDefinitions(),n=e.listAgentJobs();return{message:[`Available agents:`,...t.map(e=>` ${e.name} - ${e.description}`),``,n.length===0?`No active agent jobs.`:`Agent jobs:`,...n.map(e=>` ${Yt(e)}`)].join(`
2
- `),success:!0,data:{agents:t.length,jobs:n.length}}}function Yt(e){let t=[e.worktreePath?`worktree=${e.worktreePath}`:void 0,e.branchName?`branch=${e.branchName}`:void 0].filter(e=>e!==void 0),n=t.length>0?` ${t.join(` `)}`:``;return`${e.id} [${e.status}${n}] ${e.label} - ${e.promptPreview}`}async function Xt(e,t){let n=Bt(t,Wt(e));if(!n)return{message:`Usage: agent run [AGENT_NAME] [--agent AGENT_NAME] PROMPT`,success:!1};let r=await Kt(e,n);if(`success`in r)return r;let{state:i}=r;return{message:`Started agent job: ${i.id}`,success:!0,data:{agentId:i.id,status:i.status}}}async function Zt(e,t){let n=t.includes(`--wait`)||!t.includes(`--detach`),r=Vt(t.filter(e=>e!==`--wait`&&e!==`--detach`),Wt(e));if(r.length===0)return{message:`Usage: agent parallel [--wait|--detach] LABEL:"PROMPT" [LABEL=AGENT_NAME:"PROMPT"]`,success:!1};let i=r.map(t=>Gt(e,t.agentType)).find(e=>e!==void 0);if(i)return i;let a;try{a=await Promise.all(r.map(t=>e.spawnAgentJob(t)))}catch(e){return{message:f(e),success:!1}}let o=e.createBackgroundJobGroup({waitPolicy:`wait_all`,taskIds:a.map(e=>e.id),label:`agent parallel`});if(n){let t=Mt(await e.waitBackgroundJobGroup(o.id));return{message:an(t),success:!0,data:{agentIds:a.map(e=>e.id),groupId:o.id,summary:t}}}return{message:[`Started agent jobs:`,...a.map(e=>`${e.label}: ${e.id}`)].join(`
3
- `),success:!0,data:{agentIds:a.map(e=>e.id),groupId:o.id}}}async function Qt(e,t){let[n]=t;if(!n)return{message:`Usage: agent wait GROUP_ID`,success:!1};let r=Mt(await e.waitBackgroundJobGroup(n));return{message:an(r),success:!0,data:{groupId:n,summary:r}}}async function $t(e,t){let[n,r]=t;if(!n)return{message:`Usage: agent read AGENT_ID [OFFSET]`,success:!1};let i=r?{offset:Number.parseInt(r,10)}:void 0,a=await e.readBackgroundTaskLog(n,i),o=a.nextCursor?`\nNext offset: ${a.nextCursor.offset}`:``;return{message:a.lines.length>0?`${a.lines.join(`
4
- `)}${o}`:`No log lines: ${n}`,success:!0,data:{agentId:n,nextOffset:a.nextCursor?.offset}}}async function en(e,t){let[n,...r]=t,i=r.join(` `).trim();return!n||!i?{message:`Usage: agent send AGENT_ID PROMPT`,success:!1}:(await e.sendAgentJob(n,i),{message:`Sent input to agent job: ${n}`,success:!0,data:{agentId:n}})}async function tn(e,t){let[n,...r]=t;return n?(await e.cancelAgentJob(n,r.join(` `)||void 0),{message:`Agent job stopped: ${n}`,success:!0,data:{agentId:n}}):{message:`Usage: agent stop AGENT_ID [REASON]`,success:!1}}async function nn(e,t){let[n]=t;return n?(await e.closeAgentJob(n),{message:`Agent job closed: ${n}`,success:!0,data:{agentId:n}}):{message:`Usage: agent close AGENT_ID`,success:!1}}async function rn(e,t){try{if(t.trim()===``)return qt();let[n=`list`,...r]=Rt(t);return n===`list`&&r.length===0?Jt(e):n===`run`?Xt(e,r):n===`parallel`?Zt(e,r):n===`wait`?Qt(e,r):n===`read`||n===`open`?$t(e,r):n===`send`?en(e,r):n===`stop`||n===`cancel`?tn(e,r):n===`close`?nn(e,r):Xt(e,[n,...r])}catch(e){return{message:f(e),success:!1}}}function an(e){return[`Background job group ${e.groupId}: ${e.status} (${e.completed}/${e.total} completed, ${e.failed} failed, ${e.cancelled} cancelled, ${e.pending} pending)`,...e.lines].join(`
5
- `)}function on(e){let t=e.getAgentJobCapability?.();if(!t)throw Error(`Agent job capability is not available in this context.`);return t}function sn(){return[{name:`list`,description:`List available agents and active jobs`,source:`agent`},{name:`run`,description:`Start one background agent job`,source:`agent`},{name:`parallel`,description:`Run multiple agents in parallel`,source:`agent`},{name:`wait`,description:`Wait for a background agent group summary`,source:`agent`},{name:`read`,description:`Read an agent job log page`,source:`agent`},{name:`send`,description:`Send follow-up input to an agent job`,source:`agent`},{name:`stop`,description:`Cancel a running agent job`,source:`agent`},{name:`close`,description:`Dismiss a terminal agent job`,source:`agent`},{name:`open`,description:`Focus an agent job detail view when supported`,source:`agent`}]}function p(){return{name:`agent`,description:[`Subagent jobs command.`,`Natural-language arguments start one background agent job.`,`When the user explicitly asks to create, run, spawn, delegate to, or use agents/subagents, start the requested agent command immediately and do not ask a follow-up question unless execution is impossible or unsafe.`,`If the target item is unspecified, include target selection inside the agent prompt instead of delaying execution.`,`The parallel form starts multiple background agent jobs as a wait_all group and returns a consolidated group summary unless --detach is present.`,`list, wait, read, send, stop, close, and open manage existing agent jobs.`].join(` `),source:`agent`,modelInvocable:!0,argumentHint:`PROMPT | AGENT_NAME PROMPT | list | parallel [--wait|--detach] LABEL:"PROMPT" [LABEL=AGENT_NAME:"PROMPT"] | wait GROUP_ID | read AGENT_ID [OFFSET] | send AGENT_ID PROMPT | stop AGENT_ID | close AGENT_ID`,safety:`background-agent`,subcommands:sn()}}function cn(){let e=p();return{name:e.name,description:e.description,execute:(e,t)=>rn(on(e),t),...e.modelInvocable===void 0?{}:{modelInvocable:e.modelInvocable},...e.userInvocable===void 0?{}:{userInvocable:e.userInvocable},...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint},...e.safety===void 0?{}:{safety:e.safety}}}var ln=class{name=`agent`;getCommands(){return[p()]}};function un(){return{name:`agent-command-agent`,commandSources:[new ln],systemCommands:[cn()],sessionRequirements:[`agent-runtime`]}}function dn(e){return e.trim().split(/\s+/).filter(Boolean)}async function fn(e,n){let[r=`list`,i,...a]=dn(n);if(r===`list`){let t=at(e);return{message:Ke(t),success:!0,data:{count:t.length}}}if(!i)return{message:t,success:!1};if(r===`read`||r===`log`||r===`open`){let t=await gt(e,i,ut(a[0])),n=t.nextCursor?`\nNext offset: ${t.nextCursor.offset}`:``;return{message:t.lines.length>0?`${t.lines.join(`
6
- `)}${n}`:`No log lines: ${i}`,success:!0,data:{taskId:i,nextOffset:t.nextCursor?.offset}}}return r===`cancel`||r===`stop`?(await Me(e,i,a.join(` `)||void 0),{message:`Background task cancelled: ${i}`,success:!0,data:{taskId:i}}):r===`close`||r===`dismiss`?(await Fe(e,i),{message:`Background task closed: ${i}`,success:!0,data:{taskId:i}}):{message:`Unknown background action: ${r}`,success:!1}}function m(){return{name:`background`,description:e,source:`background`,modelInvocable:!1,subcommands:Ce()}}function pn(){let e=m();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,subcommands:e.subcommands,execute:fn}}var mn=class{name=`background`;getCommands(){return[m()]}};function hn(){return{name:`agent-command-background`,commandSources:[new mn],systemCommands:[pn()]}}function gn(e){let t=e.trim();return t.length>0?t:void 0}async function _n(e,t){let n=await Ie(e,gn(t)),r=n.before.usedPercentage,i=n.after.usedPercentage;return{message:`Context compacted: ${Math.round(r)}% -> ${Math.round(i)}%`,success:!0,data:{before:r,after:i}}}function h(){return{name:`compact`,description:`Compress context window`,source:`compact`,modelInvocable:!0,argumentHint:`[instructions]`,safety:`write`}}function vn(){let e=h();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:e.modelInvocable,argumentHint:e.argumentHint,safety:e.safety,lifecycle:`blocking`,execute:_n}}var yn=class{name=`compact`;getCommands(){return[h()]}};function bn(){return{name:`agent-command-compact`,commandSources:[new yn],systemCommands:[vn()]}}const g=[`Usage: /context [list] | add <path> | remove <path> | clear | auto on | off | <percent> | reset`,`Examples: /context list, /context add AGENTS.md, /context remove AGENTS.md, /context auto 85%`].join(`
7
- `);function _(e){return e===!1?`disabled`:`${Math.round(e*100)}%`}function xn(e,t){return e===!1?`Auto compact: disabled (${t})`:`Auto compact: ${_(e)} (${t})`}function Sn(e){return e?`settings`:`current session only`}async function Cn(e,t){let n=t.trim().split(/\s+/).filter(e=>e.length>0);if(n.length>0)return wn(e,n);let r=_t(e),i=mt(e),a=ht(e);return{message:[`Context: ${r.usedTokens.toLocaleString()} / ${r.maxTokens.toLocaleString()} tokens (${Math.round(r.usedPercentage)}%)`,xn(i,a),An(c(e))].join(`
8
- `),success:!0,data:{usedTokens:r.usedTokens,maxTokens:r.maxTokens,percentage:r.usedPercentage,autoCompactThreshold:i,autoCompactThresholdSource:a,references:c(e)}}}async function wn(e,t){let[n,...r]=t;if(n===`list`)return r.length>0?{success:!1,message:g}:jn(c(e));if(n===`add`)return En(e,r);if(n===`remove`)return Dn(e,r);if(n===`clear`){if(r.length>0)return{success:!1,message:g};let t=Ne(e);return{success:!0,message:`Context references cleared: ${t.removed.length} removed.`,data:{removed:t.removed}}}return n===`auto`?Tn(e,r):{success:!1,message:g}}function Tn(e,t){let[n,r]=t;if(r!==void 0)return{success:!1,message:g};if(n===void 0){let t=mt(e),n=ht(e);return{success:!0,message:[xn(t,n),g].join(`
9
- `),data:{autoCompactThreshold:t,autoCompactThresholdSource:n}}}if(n===`on`)return v(e,i,`enabled`);if(n===`off`)return v(e,!1,`disabled`);if(n===`reset`){let t=Ct(e);return Ot(e,i,`default`),{success:!0,message:`Auto compact reset to default: ${_(i)} (${Sn(t)}).`,data:{autoCompactThreshold:i,autoCompactThresholdSource:`default`,persisted:t}}}let a=kn(n);return a.success?v(e,a.threshold,`threshold set`):{success:!1,message:`${a.message}\n${g}`}}async function En(e,t){let n=t.join(` `).trim();if(!n)return{success:!1,message:g};let r=await Se(e,n);return r.reference?{success:!0,message:[`Context reference added: ${y(r.reference)}.`,...r.evicted.length>0?[`Evicted ${r.evicted.length} older context reference(s).`]:[]].join(`
1
+ import{BACKGROUND_COMMAND_DESCRIPTION as e,BACKGROUND_COMMAND_USAGE as t,BundlePluginInstaller as n,BundlePluginLoader as r,CLEAR_COMMAND_DESCRIPTION as i,COST_COMMAND_DESCRIPTION as a,DEFAULT_AUTO_COMPACT_THRESHOLD as o,DEFAULT_STATUS_LINE_COMMAND_SETTINGS as s,EXIT_COMMAND_DESCRIPTION as c,HELP_COMMAND_DESCRIPTION as ee,LANGUAGE_COMMAND_ARGUMENT_HINT as te,LANGUAGE_COMMAND_DESCRIPTION as ne,MEMORY_COMMAND_ARGUMENT_HINT as re,MEMORY_COMMAND_DESCRIPTION as ie,MEMORY_COMMAND_USAGE as ae,MODEL_COMMAND_ARGUMENT_HINT as oe,MODEL_COMMAND_DESCRIPTION as se,MarketplaceClient as ce,PERMISSIONS_COMMAND_DESCRIPTION as le,PERMISSION_MODE_ARGUMENT_HINT as ue,PERMISSION_MODE_COMMAND_DESCRIPTION as de,PLUGIN_COMMAND_ARGUMENT_HINT as fe,PLUGIN_COMMAND_DESCRIPTION as pe,PluginCommandSource as me,PluginSettingsStore as he,RELOAD_PLUGINS_COMMAND_DESCRIPTION as ge,RENAME_COMMAND_DESCRIPTION as _e,RENAME_COMMAND_USAGE as ve,RESUME_COMMAND_DESCRIPTION as ye,REWIND_COMMAND_ARGUMENT_HINT as be,REWIND_COMMAND_DESCRIPTION as xe,STATUSLINE_COMMAND_ARGUMENT_HINT as Se,STATUSLINE_COMMAND_DESCRIPTION as Ce,SkillCommandSource as we,VALIDATE_SESSION_COMMAND_DESCRIPTION as Te,addCommandContextReference as Ee,applyProviderConfiguration as De,buildBackgroundCommandSubcommands as Oe,buildLanguageCommandSubcommands as ke,buildMemoryCommandSubcommands as Ae,buildModelCommandSubcommands as je,buildPermissionModeSubcommands as Me,buildPluginCommandSubcommands as Ne,buildProviderSetupPatch as Pe,buildRewindCommandSubcommands as Fe,buildStatusLineCommandSubcommands as Ie,cancelCommandBackgroundTask as Le,checkSettingsDocument as Re,clearCommandContextReferences as ze,clearConversationHistory as Be,closeCommandBackgroundTask as Ve,compactCommandContext as He,createCommandMemoryStores as Ue,createPluginRegistryReloadRequestedEffect as We,createPluginTuiRequestedEffect as Ge,createSessionExitRequestedEffect as Ke,createSessionPickerRequestedEffect as qe,createSessionRenamedEffect as Je,deleteProviderProfile as Ye,deleteUserLocalMemoryItem as Xe,disableUserLocalMemoryItem as Ze,formatCommandBackgroundTaskList as Qe,formatCommandHelpMessage as $e,formatCommandPermissionsMessage as et,formatCommandSessionReplayValidationReport as tt,formatInvalidPermissionModeMessage as nt,formatLanguageUsageMessage as rt,formatModelCommandUsageMessageAsync as it,getProviderSettingsPaths as at,hasSensitiveCommandMemoryContent as ot,inspectCommandEditCheckpoint as st,inspectUserLocalMemoryItem as ct,inspectUserLocalStorage as lt,isCommandMemoryType as ut,isPermissionMode as dt,listCommandBackgroundTasks as ft,listCommandContextReferences as l,listCommandEditCheckpoints as pt,listCommandUsedMemoryReferences as mt,listUserLocalMemoryItems as ht,mergeProviderPatch as gt,parseCommandBackgroundLogCursor as _t,parseLanguageArgument as vt,parsePermissionModeArgument as yt,parseSessionNameArgument as bt,readAutoCompactThreshold as xt,readAutoCompactThresholdSource as St,readCommandBackgroundTaskLog as Ct,readCommandContextState as wt,readCommandPermissionMode as Tt,readCommandPermissionsState as Et,readCommandSessionInfo as Dt,readMergedProviderSettings as u,readSettings as Ot,recordCommandMemoryEvent as kt,removeCommandContextReference as At,resetAutoCompactThresholdSetting as jt,resolvePluginCommandAdapter as Mt,resolveSettingsPathForScope as Nt,restoreCommandEditCheckpoint as Pt,rollbackCommandEditCheckpoint as Ft,sanitizeProviderProfileName as It,setCommandAutoCompactThreshold as Lt,setCurrentProvider as Rt,setUserLocalMemoryItem as zt,suggestProviderProfileName as Bt,summarizeBackgroundJobGroup as Vt,testProviderProfileCommand as Ht,upsertProviderProfile as Ut,validateCommandSessionReplayLog as Wt,writeAutoCompactThresholdSetting as Gt,writeCommandPermissionMode as Kt,writeSettings as qt}from"@robota-sdk/agent-framework";import{findProviderDefinition as d,formatSupportedProviderTypes as f}from"@robota-sdk/agent-core";import{join as p}from"node:path";import{execSync as Jt}from"node:child_process";import{homedir as Yt}from"node:os";function Xt(e){let t=[],n=``,r,i=!1;for(let a of e){if(i){n+=a,i=!1;continue}if(r&&a===`\\`){i=!0;continue}if(r){a===r?r=void 0:n+=a;continue}if(a===`"`||a===`'`){r=a;continue}if(/\s/.test(a)){n.length>0&&(t.push(n),n=``);continue}n+=a}return n.length>0&&t.push(n),t}function Zt(e){let t=[],n,r,i;for(let a=0;a<e.length;a+=1){let o=e[a];if(o!==`--background`){if(o===`--agent`||o===`--type`||o===`-a`){n=e[a+1],a+=1;continue}if(o===`--model`){r=e[a+1],a+=1;continue}if(o===`--isolation`){let t=e[a+1];(t===`none`||t===`worktree`)&&(i=t),a+=1;continue}o!==void 0&&t.push(o)}}return{positional:t,...n?{agentType:n}:{},...r?{model:r}:{},...i?{isolation:i}:{}}}function m(e,t,n,r){return{agentType:t,label:n,mode:`background`,prompt:r,...e.model?{model:e.model}:{},...e.isolation?{isolation:e.isolation}:{}}}function Qt(e,t){let n=Zt(e),[r,...i]=n.positional,a=n.agentType??`general-purpose`,o=n.positional;!n.agentType&&r&&t.has(r)&&(a=r,o=i);let s=o.join(` `).trim();if(s)return m(n,a,a,s)}function $t(e,t){let n=Zt(e);return n.positional.map(e=>en(e,n,t)).filter(e=>e!==void 0)}function en(e,t,n){let r=e.indexOf(`=`);if(r>0)return tn(e.slice(0,r),e.slice(r+1),t,n);let i=e.indexOf(`:`);if(i<=0||i===e.length-1)return;let a=e.slice(0,i),o=e.slice(i+1);return m(t,t.agentType??(n.has(a)?a:`general-purpose`),a,o)}function tn(e,t,n,r){let i=t.indexOf(`:`);if(i===-1)return m(n,n.agentType??(r.has(e)?e:`general-purpose`),e,t);if(!(i===0||i===t.length-1))return m(n,t.slice(0,i),e,t.slice(i+1))}function h(e){return e instanceof Error?e.message:String(e)}function nn(e){return new Set(e.listAgentDefinitions().map(e=>e.name))}function rn(e,t){let n=e.listAgentDefinitions();if(!n.some(e=>e.name===t))return{message:`Unknown agent type: ${t}\nAvailable agents: ${n.map(e=>e.name).join(`, `)}`,success:!1}}async function an(e,t){let n=rn(e,t.agentType);if(n)return n;try{return{state:await e.spawnAgentJob(t)}}catch(e){return{message:h(e),success:!1}}}function on(){return{message:``,effects:[{type:`agent-switcher-requested`}],success:!0}}async function sn(e){let t=e.listAgentDefinitions(),n=e.listAgentJobs();return{message:[`Available agents:`,...t.map(e=>` ${e.name} - ${e.description}`),``,n.length===0?`No active agent jobs.`:`Agent jobs:`,...n.map(e=>` ${cn(e)}`)].join(`
2
+ `),success:!0,data:{agents:t.length,jobs:n.length}}}function cn(e){let t=[e.worktreePath?`worktree=${e.worktreePath}`:void 0,e.branchName?`branch=${e.branchName}`:void 0].filter(e=>e!==void 0),n=t.length>0?` ${t.join(` `)}`:``;return`${e.id} [${e.status}${n}] ${e.label} - ${e.promptPreview}`}async function ln(e,t){let n=Qt(t,nn(e));if(!n)return{message:`Usage: agent run [AGENT_NAME] [--agent AGENT_NAME] PROMPT`,success:!1};let r=await an(e,n);if(`success`in r)return r;let{state:i}=r;return{message:`Started agent job: ${i.id}`,success:!0,data:{agentId:i.id,status:i.status}}}async function un(e,t){let n=t.includes(`--wait`)||!t.includes(`--detach`),r=$t(t.filter(e=>e!==`--wait`&&e!==`--detach`),nn(e));if(r.length===0)return{message:`Usage: agent parallel [--wait|--detach] LABEL:"PROMPT" [LABEL=AGENT_NAME:"PROMPT"]`,success:!1};let i=r.map(t=>rn(e,t.agentType)).find(e=>e!==void 0);if(i)return i;let a;try{a=await Promise.all(r.map(t=>e.spawnAgentJob(t)))}catch(e){return{message:h(e),success:!1}}let o=e.createBackgroundJobGroup({waitPolicy:`wait_all`,taskIds:a.map(e=>e.id),label:`agent parallel`});if(n){let t=Vt(await e.waitBackgroundJobGroup(o.id));return{message:_n(t),success:!0,data:{agentIds:a.map(e=>e.id),groupId:o.id,summary:t}}}return{message:[`Started agent jobs:`,...a.map(e=>`${e.label}: ${e.id}`)].join(`
3
+ `),success:!0,data:{agentIds:a.map(e=>e.id),groupId:o.id}}}async function dn(e,t){let[n]=t;if(!n)return{message:`Usage: agent wait GROUP_ID`,success:!1};let r=Vt(await e.waitBackgroundJobGroup(n));return{message:_n(r),success:!0,data:{groupId:n,summary:r}}}async function fn(e,t){let[n,r]=t;if(!n)return{message:`Usage: agent read AGENT_ID [OFFSET]`,success:!1};let i=r?{offset:Number.parseInt(r,10)}:void 0,a=await e.readBackgroundTaskLog(n,i),o=a.nextCursor?`\nNext offset: ${a.nextCursor.offset}`:``;return{message:a.lines.length>0?`${a.lines.join(`
4
+ `)}${o}`:`No log lines: ${n}`,success:!0,data:{agentId:n,nextOffset:a.nextCursor?.offset}}}async function pn(e,t){let[n,...r]=t,i=r.join(` `).trim();return!n||!i?{message:`Usage: agent send AGENT_ID PROMPT`,success:!1}:(await e.sendAgentJob(n,i),{message:`Sent input to agent job: ${n}`,success:!0,data:{agentId:n}})}async function mn(e,t){let[n,...r]=t;return n?(await e.cancelAgentJob(n,r.join(` `)||void 0),{message:`Agent job stopped: ${n}`,success:!0,data:{agentId:n}}):{message:`Usage: agent stop AGENT_ID [REASON]`,success:!1}}async function hn(e,t){let[n]=t;return n?(await e.closeAgentJob(n),{message:`Agent job closed: ${n}`,success:!0,data:{agentId:n}}):{message:`Usage: agent close AGENT_ID`,success:!1}}async function gn(e,t){try{if(t.trim()===``)return on();let[n=`list`,...r]=Xt(t);return n===`list`&&r.length===0?sn(e):n===`run`?ln(e,r):n===`parallel`?un(e,r):n===`wait`?dn(e,r):n===`read`||n===`open`?fn(e,r):n===`send`?pn(e,r):n===`stop`||n===`cancel`?mn(e,r):n===`close`?hn(e,r):ln(e,[n,...r])}catch(e){return{message:h(e),success:!1}}}function _n(e){return[`Background job group ${e.groupId}: ${e.status} (${e.completed}/${e.total} completed, ${e.failed} failed, ${e.cancelled} cancelled, ${e.pending} pending)`,...e.lines].join(`
5
+ `)}function vn(e){let t=e.getAgentJobCapability?.();if(!t)throw Error(`Agent job capability is not available in this context.`);return t}function yn(){return[{name:`list`,description:`List available agents and active jobs`,source:`agent`},{name:`run`,description:`Start one background agent job`,source:`agent`},{name:`parallel`,description:`Run multiple agents in parallel`,source:`agent`},{name:`wait`,description:`Wait for a background agent group summary`,source:`agent`},{name:`read`,description:`Read an agent job log page`,source:`agent`},{name:`send`,description:`Send follow-up input to an agent job`,source:`agent`},{name:`stop`,description:`Cancel a running agent job`,source:`agent`},{name:`close`,description:`Dismiss a terminal agent job`,source:`agent`},{name:`open`,description:`Focus an agent job detail view when supported`,source:`agent`}]}function g(){return{name:`agent`,displayName:`Agent Jobs`,description:[`Subagent jobs command.`,`Natural-language arguments start one background agent job.`,`When the user explicitly asks to create, run, spawn, delegate to, or use agents/subagents, start the requested agent command immediately and do not ask a follow-up question unless execution is impossible or unsafe.`,`If the target item is unspecified, include target selection inside the agent prompt instead of delaying execution.`,`The parallel form starts multiple background agent jobs as a wait_all group and returns a consolidated group summary unless --detach is present.`,`list, wait, read, send, stop, close, and open manage existing agent jobs.`].join(` `),source:`agent`,modelInvocable:!0,argumentHint:`PROMPT | AGENT_NAME PROMPT | list | parallel [--wait|--detach] LABEL:"PROMPT" [LABEL=AGENT_NAME:"PROMPT"] | wait GROUP_ID | read AGENT_ID [OFFSET] | send AGENT_ID PROMPT | stop AGENT_ID | close AGENT_ID`,safety:`background-agent`,subcommands:yn()}}function bn(){let e=g();return{name:e.name,...e.displayName===void 0?{}:{displayName:e.displayName},description:e.description,requiresPermission:!1,execute:(e,t)=>gn(vn(e),t),...e.modelInvocable===void 0?{}:{modelInvocable:e.modelInvocable},...e.userInvocable===void 0?{}:{userInvocable:e.userInvocable},...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint},...e.safety===void 0?{}:{safety:e.safety}}}var xn=class{name=`agent`;getCommands(){return[g()]}};function Sn(){return{name:`agent-command-agent`,commandSources:[new xn],systemCommands:[bn()],sessionRequirements:[`agent-runtime`]}}function Cn(e){return e.trim().split(/\s+/).filter(Boolean)}async function wn(e,n){let[r=`list`,i,...a]=Cn(n);if(r===`list`){let t=ft(e);return{message:Qe(t),success:!0,data:{count:t.length}}}if(!i)return{message:t,success:!1};if(r===`read`||r===`log`||r===`open`){let t=await Ct(e,i,_t(a[0])),n=t.nextCursor?`\nNext offset: ${t.nextCursor.offset}`:``;return{message:t.lines.length>0?`${t.lines.join(`
6
+ `)}${n}`:`No log lines: ${i}`,success:!0,data:{taskId:i,nextOffset:t.nextCursor?.offset}}}return r===`cancel`||r===`stop`?(await Le(e,i,a.join(` `)||void 0),{message:`Background task cancelled: ${i}`,success:!0,data:{taskId:i}}):r===`close`||r===`dismiss`?(await Ve(e,i),{message:`Background task closed: ${i}`,success:!0,data:{taskId:i}}):{message:`Unknown background action: ${r}`,success:!1}}function _(){return{name:`background`,displayName:`Background Tasks`,description:e,source:`background`,modelInvocable:!1,subcommands:Oe()}}function Tn(){let e=_();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,subcommands:e.subcommands,execute:wn}}var En=class{name=`background`;getCommands(){return[_()]}};function Dn(){return{name:`agent-command-background`,commandSources:[new En],systemCommands:[Tn()]}}function On(e){let t=e.trim();return t.length>0?t:void 0}async function kn(e,t){let n=await He(e,On(t)),r=n.before.usedPercentage,i=n.after.usedPercentage;return{message:`Context compacted: ${Math.round(r)}% -> ${Math.round(i)}%`,success:!0,data:{before:r,after:i}}}function v(){return{name:`compact`,displayName:`Compact Context`,description:`Compress context window`,source:`compact`,modelInvocable:!0,argumentHint:`[instructions]`,safety:`write`}}function An(){let e=v();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:e.modelInvocable,argumentHint:e.argumentHint,safety:e.safety,lifecycle:`blocking`,execute:kn}}var jn=class{name=`compact`;getCommands(){return[v()]}};function Mn(){return{name:`agent-command-compact`,commandSources:[new jn],systemCommands:[An()]}}const y=[`Usage: /context [list] | add <path> | remove <path> | clear | auto on | off | <percent> | reset`,`Examples: /context list, /context add AGENTS.md, /context remove AGENTS.md, /context auto 85%`].join(`
7
+ `);function b(e){return e===!1?`disabled`:`${Math.round(e*100)}%`}function Nn(e,t){return e===!1?`Auto compact: disabled (${t})`:`Auto compact: ${b(e)} (${t})`}function Pn(e){return e?`settings`:`current session only`}async function Fn(e,t){let n=t.trim().split(/\s+/).filter(e=>e.length>0);if(n.length>0)return In(e,n);let r=wt(e),i=xt(e),a=St(e);return{message:[`Context: ${r.usedTokens.toLocaleString()} / ${r.maxTokens.toLocaleString()} tokens (${Math.round(r.usedPercentage)}%)`,Nn(i,a),Hn(l(e))].join(`
8
+ `),success:!0,data:{usedTokens:r.usedTokens,maxTokens:r.maxTokens,percentage:r.usedPercentage,autoCompactThreshold:i,autoCompactThresholdSource:a,references:l(e)}}}async function In(e,t){let[n,...r]=t;if(n===`list`)return r.length>0?{success:!1,message:y}:Un(l(e));if(n===`add`)return Rn(e,r);if(n===`remove`)return zn(e,r);if(n===`clear`){if(r.length>0)return{success:!1,message:y};let t=ze(e);return{success:!0,message:`Context references cleared: ${t.removed.length} removed.`,data:{removed:t.removed}}}return n===`auto`?Ln(e,r):{success:!1,message:y}}function Ln(e,t){let[n,r]=t;if(r!==void 0)return{success:!1,message:y};if(n===void 0){let t=xt(e),n=St(e);return{success:!0,message:[Nn(t,n),y].join(`
9
+ `),data:{autoCompactThreshold:t,autoCompactThresholdSource:n}}}if(n===`on`)return x(e,o,`enabled`);if(n===`off`)return x(e,!1,`disabled`);if(n===`reset`){let t=jt(e);return Lt(e,o,`default`),{success:!0,message:`Auto compact reset to default: ${b(o)} (${Pn(t)}).`,data:{autoCompactThreshold:o,autoCompactThresholdSource:`default`,persisted:t}}}let i=Vn(n);return i.success?x(e,i.threshold,`threshold set`):{success:!1,message:`${i.message}\n${y}`}}async function Rn(e,t){let n=t.join(` `).trim();if(!n)return{success:!1,message:y};let r=await Ee(e,n);return r.reference?{success:!0,message:[`Context reference added: ${S(r.reference)}.`,...r.evicted.length>0?[`Evicted ${r.evicted.length} older context reference(s).`]:[]].join(`
10
10
  `),data:{reference:r.reference,evicted:r.evicted}}:{success:!1,message:r.diagnostics.join(`
11
- `)||`Context reference not found: ${n}`,data:{diagnostics:r.diagnostics}}}function Dn(e,t){let n=t.join(` `).trim();if(!n)return{success:!1,message:g};let r=St(e,n);return r.removed?{success:!0,message:`Context reference removed: ${y(r.removed)}.`,data:{removed:r.removed}}:{success:!1,message:`Context reference not found: ${n}`}}function v(e,t,n){let r=It(e,t),i=r?`settings`:`session`;return Ot(e,t,i),{success:!0,message:On(n,t,r),data:{autoCompactThreshold:t,autoCompactThresholdSource:i,persisted:r}}}function On(e,t,n){let r=Sn(n);return e===`disabled`?`Auto compact disabled (${r}).`:e===`enabled`?`Auto compact enabled at ${_(t)} (${r}).`:`Auto compact threshold set to ${_(t)} (${r}).`}function kn(e){if(e.endsWith(`%`)){let t=Number(e.slice(0,-1));return!Number.isFinite(t)||t<=0||t>100?{success:!1,message:`Auto compact percentage must be greater than 0% and at most 100%.`}:{success:!0,threshold:t/100}}if(e.includes(`.`)){let t=Number(e);return!Number.isFinite(t)||t<=0||t>1?{success:!1,message:`Auto compact fraction must be greater than 0 and at most 1.`}:{success:!0,threshold:t}}return{success:!1,message:`Use a percentage such as 85% or a fraction such as 0.85.`}}function An(e){return`References: ${e.filter(e=>e.status===`active`).length} active, ${e.filter(e=>e.status===`observed`).length} observed`}function jn(e){return e.length===0?{success:!0,message:`No context references.`,data:{references:e}}:{success:!0,message:[`Context references:`,...e.map(y)].join(`
12
- `),data:{references:e}}}function y(e){return[e.relativePath,`[${e.loadType}, ${e.status}]`,`${e.byteLength.toLocaleString()} B`].join(` `)}function b(){return{name:`context`,description:`Context window info, reference inventory, and auto-compact controls`,source:`context`,modelInvocable:!1,argumentHint:`list | add <path> | remove <path> | clear | auto ...`,subcommands:[{name:`list`,description:`List loaded context references`,source:`context`},{name:`add`,description:`Add a file to active context references`,source:`context`},{name:`remove`,description:`Remove a context reference`,source:`context`},{name:`clear`,description:`Clear context references`,source:`context`},{name:`auto`,description:`Inspect or change auto-compact policy`,source:`context`}]}}function Mn(){let e=b();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,execute:Cn}}var Nn=class{name=`context`;getCommands(){return[b()]}};function Pn(){return{name:`agent-command-context`,commandSources:[new Nn],systemCommands:[Mn()]}}function Fn(e,t){return{success:!0,message:`Exit requested.`,effects:[Be()]}}function In(){return{name:`exit`,description:o,source:`exit`,modelInvocable:!1}}function Ln(){let e=In();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Fn}}var Rn=class{name=`exit`;getCommands(){return[In()]}};function zn(){return{name:`agent-command-exit`,commandSources:[new Rn],systemCommands:[Ln()]}}function Bn(e,t){return{success:!0,message:qe(e)}}function Vn(){return{name:`help`,description:s,source:`help`,modelInvocable:!1}}function Hn(){let e=Vn();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Bn}}var Un=class{name=`help`;getCommands(){return[Vn()]}};function Wn(){return{name:`agent-command-help`,commandSources:[new Un],systemCommands:[Hn()]}}function Gn(e,t){let n=dt(t);return n===void 0?{message:Ze(),success:!1}:{message:`Language set to "${n}".`,success:!0,data:{language:n},effects:[{type:`language-change-requested`,language:n}]}}function x(){return{name:`language`,description:te,source:`language`,argumentHint:ee,subcommands:we(`language`),modelInvocable:!1}}function Kn(){let e=x();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:Gn}}var qn=class{name=`language`;getCommands(){return[x()]}};function Jn(){return{name:`agent-command-language`,commandSources:[new qn],systemCommands:[Kn()]}}function S(){return{message:ie,success:!1}}function Yn(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function Xn(e){let t=e.list(),n=t.topics.length>0?t.topics.map(e=>`- ${e.name}: ${e.path}`).join(`
11
+ `)||`Context reference not found: ${n}`,data:{diagnostics:r.diagnostics}}}function zn(e,t){let n=t.join(` `).trim();if(!n)return{success:!1,message:y};let r=At(e,n);return r.removed?{success:!0,message:`Context reference removed: ${S(r.removed)}.`,data:{removed:r.removed}}:{success:!1,message:`Context reference not found: ${n}`}}function x(e,t,n){let r=Gt(e,t),i=r?`settings`:`session`;return Lt(e,t,i),{success:!0,message:Bn(n,t,r),data:{autoCompactThreshold:t,autoCompactThresholdSource:i,persisted:r}}}function Bn(e,t,n){let r=Pn(n);return e===`disabled`?`Auto compact disabled (${r}).`:e===`enabled`?`Auto compact enabled at ${b(t)} (${r}).`:`Auto compact threshold set to ${b(t)} (${r}).`}function Vn(e){if(e.endsWith(`%`)){let t=Number(e.slice(0,-1));return!Number.isFinite(t)||t<=0||t>100?{success:!1,message:`Auto compact percentage must be greater than 0% and at most 100%.`}:{success:!0,threshold:t/100}}if(e.includes(`.`)){let t=Number(e);return!Number.isFinite(t)||t<=0||t>1?{success:!1,message:`Auto compact fraction must be greater than 0 and at most 1.`}:{success:!0,threshold:t}}return{success:!1,message:`Use a percentage such as 85% or a fraction such as 0.85.`}}function Hn(e){return`References: ${e.filter(e=>e.status===`active`).length} active, ${e.filter(e=>e.status===`observed`).length} observed`}function Un(e){return e.length===0?{success:!0,message:`No context references.`,data:{references:e}}:{success:!0,message:[`Context references:`,...e.map(S)].join(`
12
+ `),data:{references:e}}}function S(e){return[e.relativePath,`[${e.loadType}, ${e.status}]`,`${e.byteLength.toLocaleString()} B`].join(` `)}function Wn(){return{name:`context`,displayName:`Context References`,description:`Context window info, reference inventory, and auto-compact controls`,source:`context`,modelInvocable:!1,argumentHint:`list | add <path> | remove <path> | clear | auto ...`,subcommands:[{name:`list`,description:`List loaded context references`,source:`context`},{name:`add`,description:`Add a file to active context references`,source:`context`},{name:`remove`,description:`Remove a context reference`,source:`context`},{name:`clear`,description:`Clear context references`,source:`context`},{name:`auto`,description:`Inspect or change auto-compact policy`,source:`context`}]}}function Gn(){let e=Wn();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,execute:Fn}}var Kn=class{name=`context`;getCommands(){return[Wn()]}};function qn(){return{name:`agent-command-context`,commandSources:[new Kn],systemCommands:[Gn()]}}function Jn(e,t){return{success:!0,message:`Exit requested.`,effects:[Ke()]}}function Yn(){return{name:`exit`,displayName:`Exit Session`,description:c,source:`exit`,modelInvocable:!1}}function Xn(){let e=Yn();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!0,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Jn}}var Zn=class{name=`exit`;getCommands(){return[Yn()]}};function Qn(){return{name:`agent-command-exit`,commandSources:[new Zn],systemCommands:[Xn()]}}function $n(e,t){return{success:!0,message:$e(e)}}function er(){return{name:`help`,displayName:`Help`,description:ee,source:`help`,modelInvocable:!1}}function tr(){let e=er();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:$n}}var nr=class{name=`help`;getCommands(){return[er()]}};function rr(){return{name:`agent-command-help`,commandSources:[new nr],systemCommands:[tr()]}}function ir(e,t){let n=vt(t);return n===void 0?{message:rt(),success:!1}:{message:`Language set to "${n}".`,success:!0,data:{language:n},effects:[{type:`language-change-requested`,language:n}]}}function C(){return{name:`language`,displayName:`Language`,description:ne,source:`language`,argumentHint:te,subcommands:ke(`language`),modelInvocable:!1}}function ar(){let e=C();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:ir}}var or=class{name=`language`;getCommands(){return[C()]}};function sr(){return{name:`agent-command-language`,commandSources:[new or],systemCommands:[ar()]}}function w(){return{message:ae,success:!1}}function cr(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function lr(e){let t=e.list(),n=t.topics.length>0?t.topics.map(e=>`- ${e.name}: ${e.path}`).join(`
13
13
  `):`(none)`;return{message:[`Memory index: ${t.indexPath}`,`Topics directory: ${t.topicsPath}`,`Topics:`,n].join(`
14
- `),success:!0,data:{indexPath:t.indexPath,topicsPath:t.topicsPath,topicCount:t.topics.length}}}function Zn(e,t){if(!t||t===`index`){let t=e.loadStartupMemory();return{message:t.content||`(empty memory index)`,success:!0,data:{path:t.path,lineCount:t.lineCount,truncated:t.truncated}}}return{message:e.readTopic(t)||`(empty memory topic: ${t})`,success:!0,data:{topic:t}}}function Qn(e){let t=e[1],n=e[2],r=e.slice(3).join(` `).trim();if(!(!t||!rt(t)||!n||r.length===0))return{type:t,topic:n,text:r}}function $n(e){let t=e.list(`pending`);return{message:[`Pending memory candidates:`,...t.length>0?t.map(e=>`- ${e.id} ${e.type}/${e.topic} confidence=${e.confidence}: ${e.text}`):[`(no pending memory candidates)`]].join(`
15
- `),success:!0,data:{count:t.length}}}function C(e,t){xt(e,t)}function er(e,t,n,r){if(!r)return S();try{let i=t.mark(r,`approved`,`approved-by-user`),a=n.append(i),o=t.mark(r,`saved`,`approved-and-saved`);return C(e,{type:`memory_candidate_approved`,candidateId:o.id,topic:o.topic,reason:`approved-by-user`}),C(e,{type:`memory_candidate_saved`,candidateId:o.id,topic:o.topic,reason:a.deduplicated?`deduplicated`:`approved-and-saved`}),{message:a.deduplicated?`Saved memory candidate ${r} was already present in ${a.topicPath}`:`Saved memory candidate ${r} to ${a.topicPath}`,success:!0,data:{id:r,status:o.status,topic:a.topic,topicPath:a.topicPath,deduplicated:a.deduplicated}}}catch(e){return Yn(e instanceof Error?e:String(e))}}function tr(e,t,n){if(!n)return S();try{let r=t.mark(n,`rejected`,`rejected-by-user`);return C(e,{type:`memory_candidate_rejected`,candidateId:r.id,topic:r.topic,reason:`rejected-by-user`}),{message:`Rejected memory candidate ${n}`,success:!0,data:{id:n,status:r.status}}}catch(e){return Yn(e instanceof Error?e:String(e))}}function nr(e){let t=st(e);return{message:[`Used memory references:`,...t.length>0?t.map(e=>{let t=e.truncated?` truncated=true`:``;return`- ${e.topic} score=${e.score}${t}: ${e.path}`}):[`(no memory used in current turn)`]].join(`
16
- `),success:!0,data:{count:t.length,references:[...t]}}}function rr(e,t){let n=t.trim().split(/\s+/).filter(Boolean),r=n[0]??`list`,i=Le(e);if(r===`list`)return Xn(i.project);if(r===`show`)return Zn(i.project,n[1]);if(r===`pending`)return $n(i.pending);if(r===`approve`)return er(e,i.pending,i.project,n[1]);if(r===`reject`)return tr(e,i.pending,n[1]);if(r===`used`)return nr(e);if(r===`add`){let e=Qn(n);if(!e)return S();if($e(e.text))return{message:`Refusing to save sensitive memory content.`,success:!1};let t=i.project.append(e);return{message:t.deduplicated?`${e.type} memory already exists in ${t.topicPath}`:`Saved ${e.type} memory to ${t.topicPath}`,success:!0,data:{indexPath:t.indexPath,topicPath:t.topicPath,topic:t.topic,deduplicated:t.deduplicated}}}return S()}function w(){return{name:`memory`,description:re,source:`memory`,argumentHint:ne,modelInvocable:!0,safety:`write`,subcommands:Te()}}function ir(){let e=w();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!0,argumentHint:e.argumentHint,safety:e.safety,subcommands:e.subcommands,execute:rr}}var ar=class{name=`memory`;getCommands(){return[w()]}};function or(){return{name:`agent-command-memory`,commandSources:[new ar],systemCommands:[ir()]}}function sr(e,t){let n=ft(t);if(n===void 0){let t=vt(e);return{message:`Current mode: ${t}`,success:!0,data:{mode:t}}}return it(n)?(Lt(e,n),{message:`Permission mode set to: ${n}`,success:!0,data:{mode:n}}):{message:Xe(),success:!1}}function T(){return{name:`mode`,description:le,source:`mode`,argumentHint:ce,subcommands:De(`mode`),modelInvocable:!1}}function cr(){let e=T();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:sr}}var lr=class{name=`mode`;getCommands(){return[T()]}};function ur(){return{name:`agent-command-mode`,commandSources:[new lr],systemCommands:[cr()]}}function dr(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}async function fr(e,t,n){let r=dr(t);return r===void 0?{message:await Qe({...n?.settings===void 0?{}:{settings:n.settings.readMergedSettings()},...n?.providerDefinitions===void 0?{}:{providerDefinitions:n.providerDefinitions},refresh:!0}),success:!1}:{message:`Model change requested: ${r}`,success:!0,data:{modelId:r},effects:[{type:`model-change-requested`,modelId:r}]}}function E(e){return{name:`model`,description:oe,source:`model`,argumentHint:ae,subcommands:gr(e)}}function pr(e){let t=E(e);return{name:t.name,description:t.description,userInvocable:!0,argumentHint:t.argumentHint,subcommands:t.subcommands,lifecycle:`inline`,execute:(t,n)=>fr(t,n,e)}}var mr=class{options;name=`model`;constructor(e){this.options=e}getCommands(){return[E(this.options)]}};function hr(e){return{name:`agent-command-model`,commandSources:[new mr(e)],systemCommands:[pr(e)]}}function gr(e){return Ee(e===void 0?`model`:{source:`model`,providerDefinitions:e.providerDefinitions,settings:e.settings.readMergedSettings()})}function _r(e,t){let n=ft(t);if(n!==void 0){if(!it(n))return{message:Xe(),success:!1};Lt(e,n);let t=yt(e);return{message:`Permission mode set to: ${n}\n${Je(t)}`,success:!0,data:{mode:t.mode,sessionAllowed:t.sessionAllowed}}}let r=yt(e);return{message:Je(r),success:!0,data:{mode:r.mode,sessionAllowed:r.sessionAllowed}}}function D(){return{name:`permissions`,description:se,source:`permissions`,argumentHint:ce,subcommands:De(`permissions`),modelInvocable:!1}}function vr(){let e=D();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:_r}}var yr=class{name=`permissions`;getCommands(){return[D()]}};function br(){return{name:`agent-command-permissions`,commandSources:[new yr],systemCommands:[vr()]}}function xr(e){let t=e.trim().split(/\s+/).filter(e=>e.length>0);return{subcommand:t[0]??``,subArgs:t.slice(1).join(` `).trim()}}function O(e){return{success:!1,message:e}}function Sr(e){return wt(e)}async function k(e,t){let n=Sr(e);if(n===void 0)return{success:!1,message:`Plugin management is not available.`};try{return{success:!0,message:await t(n)}}catch(e){return{success:!1,message:`Plugin error: ${e instanceof Error?e.message:String(e)}`}}}async function Cr(e,t){let{subcommand:n,subArgs:r}=xr(t);return n===`add`&&r.length>0?k(e,async e=>{let t=await e.marketplaceAdd(r);return`Added marketplace: "${t}" (from ${r})\nInstall plugins with: /plugin install <name>@${t}`}):n===`remove`&&r.length>0?k(e,async e=>(await e.marketplaceRemove(r),`Removed marketplace "${r}" and uninstalled its plugins.`)):n===`update`&&r.length>0?k(e,async e=>(await e.marketplaceUpdate(r),`Updated marketplace "${r}".`)):n===`list`?k(e,async e=>{let t=await e.marketplaceList();return t.length===0?`No marketplace sources configured.`:`Marketplace sources:\n${t.map(e=>` ${e.name} (${e.type})`).join(`
17
- `)}`}):O(`Usage: /plugin marketplace add <source> | remove <name> | update <name> | list`)}function A(e,t,n,r){return t.length===0?Promise.resolve(O(n)):k(e,e=>Promise.resolve(r(e,t)))}function wr(){return{success:!0,message:`Opening plugin manager...`,effects:[ze()]}}function Tr(e,t){return A(e,t,`Usage: /plugin install <name>@<marketplace>`,async(e,t)=>(await e.install(t),`Installed plugin: ${t}`))}function Er(e,t){return A(e,t,`Usage: /plugin uninstall <name>@<marketplace>`,async(e,t)=>(await e.uninstall(t),`Uninstalled plugin: ${t}`))}function Dr(e,t){return A(e,t,`Usage: /plugin enable <name>@<marketplace>`,async(e,t)=>(await e.enable(t),`Enabled plugin: ${t}`))}function Or(e,t){return A(e,t,`Usage: /plugin disable <name>@<marketplace>`,async(e,t)=>(await e.disable(t),`Disabled plugin: ${t}`))}async function kr(e,t){let{subcommand:n,subArgs:r}=xr(t);switch(n){case``:case`manage`:return wr();case`install`:return Tr(e,r);case`uninstall`:return Er(e,r);case`enable`:return Dr(e,r);case`disable`:return Or(e,r);case`marketplace`:return Cr(e,r);default:return O(`Unknown plugin subcommand: ${n}`)}}async function Ar(e,t){return k(e,async e=>{let t=await e.reloadPlugins();return`Reloaded ${t.loadedPluginCount===1?`1 plugin resource`:`${t.loadedPluginCount} plugin resources`}.`}).then(e=>e.success?{...e,effects:[Re()]}:e)}function j(){return{name:`plugin`,description:de,source:`plugin-manager`,modelInvocable:!1,argumentHint:ue,subcommands:Oe()}}function M(){return{name:`reload-plugins`,description:fe,source:`plugin-manager`,modelInvocable:!1}}function jr(){let e=j();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,lifecycle:`inline`,subcommands:e.subcommands,execute:kr}}function Mr(){let e=M();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Ar}}var Nr=class{name=`plugin-manager`;getCommands(){return[j(),M()]}};function Pr(){return{name:`agent-command-plugin`,commandSources:[new Nr],systemCommands:[jr(),Mr()]}}function N(e,t,n={}){let r=Vr(e,t);return{type:e,steps:Wr(Hr(r),n.initialValues),setupHelpLinks:r.setupHelpLinks??[],stepIndex:0,values:{},existingProfileNames:n.existingProfileNames??[],...n.profileName===void 0?{}:{profileName:n.profileName},...n.setCurrent===void 0?{}:{setCurrent:n.setCurrent}}}function Fr(e){return e.length===0?` No providers are available.`:[` Select provider:`,...e.map((e,t)=>` ${t+1}. ${I(e)}`),` Provider [1-${e.length}] (default: 1): `].join(`
18
- `)}function Ir(e,t){let n=e.trim(),r=n.length>0?n:`1`,i=Br(r);if(i!==void 0){let e=t[i];if(e!==void 0)return e.type;throw Error(`Provider selection ${r} is out of range. Currently supported: ${u(t)}`)}let a=l(t,r);if(a===void 0)throw Error(`Unknown provider: ${r}. Currently supported: ${u(t)}`);return a.type}function P(e){let t=e.steps[e.stepIndex];if(t===void 0)throw Error(`Provider setup step ${e.stepIndex} is out of range`);return t}function F(e,t){let n=P(e),r=t.trim()||n.defaultValue||``,i=L(n,r);if(i!==void 0)return{status:`error`,state:e,message:i};let a={...e,stepIndex:e.stepIndex+1,values:{...e.values,[n.key]:r}};return a.stepIndex<e.steps.length?{status:`next`,state:a}:{status:`complete`,input:Gr(a)}}async function Lr(e,t,n,r={}){let i=N(e,n,r),a=i.steps.length;for(;i.stepIndex<a;){let e=P(i),n=await t(Rr(e,i.setupHelpLinks),e.masked===!0),r=F(i,n);if(r.status===`complete`)return r.input;if(r.status===`error`)throw Error(r.message);i=r.state}throw Error(`Provider setup flow ended without completion`)}function Rr(e,t=[]){let n=e.defaultValue===void 0?``:` (default: ${e.defaultValue})`,r=zr(t);return`${r.length>0?`${r}\n`:``} ${e.title}${n}: `}function I(e){let t=e.displayName===void 0?e.type:`${e.displayName} (${e.type})`;return e.description===void 0?t:`${t} - ${e.description}`}function zr(e=[]){return e.length===0?``:e.map(e=>` Setup help: ${Ur(e.kind)}: ${e.label} - ${e.url}`).join(`
19
- `)}function Br(e){if(/^\d+$/.test(e))return Number(e)-1}function L(e,t){if(e.required===!0&&t.length===0)return`Required`}function Vr(e,t){let n=l(t,e);if(n===void 0)throw Error(`Unknown provider: ${e}. Currently supported: ${u(t)}`);return n}function Hr(e){if(e.setupSteps!==void 0)return[...e.setupSteps];let t=[{key:`model`,title:`${e.type} model`,defaultValue:e.defaults?.model,required:e.defaults?.model===void 0}];return e.defaults?.baseURL!==void 0&&t.unshift({key:`baseURL`,title:`${e.type} base URL`,defaultValue:e.defaults.baseURL}),e.requiresApiKey===!0&&t.push({key:`apiKey`,title:`${e.type} API key`,defaultValue:e.defaults?.apiKey,required:e.defaults?.apiKey===void 0,masked:!0}),t}function Ur(e){return e===`api-key`?`API key`:e===`console`?`Console`:`Official`}function Wr(e,t){return t===void 0?[...e]:e.map(e=>{let n=t[e.key];return n===void 0?e:{...e,defaultValue:n,required:!1}})}function Gr(e){let t=e.profileName??jt({type:e.type},{existingProfileNames:e.existingProfileNames}),n=e.values.apiKey;return{profile:t,type:e.type,model:e.values.model,...n!==void 0&&n.length>0&&{apiKey:n},...e.values.baseURL!==void 0&&{baseURL:e.values.baseURL},setCurrent:e.setCurrent??!0}}const Kr={type:`session-restart-requested`,reason:`other`};function qr(e,t){return N(e,t.providerDefinitions,{existingProfileNames:Object.keys(t.settings.readMergedSettings().providers??{})})}function R(e,t){return{prompt:Jr(e),submit:n=>Xr(e,n,t),cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function Jr(e){let t=P(e),n=t.masked===!0&&t.defaultValue!==void 0?`(unchanged)`:t.defaultValue;return{kind:`text`,title:t.title,...Yr(e),...n===void 0?{}:{placeholder:n},...t.defaultValue===void 0?{}:{allowEmpty:!0},...t.masked===void 0?{}:{masked:t.masked},validate:e=>L(t,e)}}function Yr(e){let t=zr(e.setupHelpLinks);return t.length>0?{description:t}:{}}function Xr(e,t,n){let r=F(e,t);return r.status===`error`?{message:r.message,success:!1,interaction:R(e,n)}:r.status===`complete`?Zr(r.input,n):{message:``,success:!0,interaction:R(r.state,n)}}function Zr(e,t){let n=t.settings.readTargetSettings(),r=ke(e,{providerDefinitions:t.providerDefinitions});return t.settings.writeTargetSettings(lt(n,r)),{message:`Provider ${e.profile} configured. Restarting...`,success:!0,effects:[{...Kr,message:`Provider setup restart`}]}}const Qr={type:`session-restart-requested`,reason:`other`};function $r(e,t,n){return`${e===n?`* `:``}${e}: ${t.type??`unknown`} ${t.model??`(no model)`}`}function ei(e,t,n){return t?e?.[t]?n.settings.readMergedSettings().currentProvider===t?{message:`Provider profile "${t}" is already current.`,success:!0}:{message:`Provider change requested: ${t}`,success:!0,interaction:ti(t,n)}:{message:`Provider profile "${t}" was not found.`,success:!1}:{message:`Usage: provider use <profile>`,success:!1}}function ti(e,t){return{prompt:{kind:`choice`,title:`Change provider to ${e}? This will restart the session.`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>{if(n!==`yes`)return{message:`Provider change cancelled.`,success:!0};let r=t.settings.readMergedSettings(),i=t.settings.readTargetSettings(),a=i.providers?.[e]!==void 0||r.providers?.[e]!==void 0?{...i,currentProvider:e}:kt(i,e);return t.settings.writeTargetSettings(a),{message:`Provider changed to ${e}. Restarting...`,success:!0,effects:[{...Qr,message:`Provider change restart`}]}},cancel:()=>({message:`Provider change cancelled.`,success:!0})}}function ni(e,t){let n=t.settings.readMergedSettings().providers?.[e];if(!n)return{message:`Provider profile "${e}" was not found.`,success:!1};if(!n.type)return{message:`Provider profile "${e}" is missing type.`,success:!1};try{let r=N(n.type,t.providerDefinitions,{profileName:e,setCurrent:!1,initialValues:ri(n)});return{message:`Provider edit requested: ${e}`,success:!0,interaction:z(r,e,t)}}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}}function ri(e){return{...typeof e.model==`string`?{model:e.model}:{},...typeof e.apiKey==`string`?{apiKey:e.apiKey}:{},...typeof e.baseURL==`string`?{baseURL:e.baseURL}:{}}}function z(e,t,n){return{prompt:Jr(e),submit:r=>ii(e,t,r,n),cancel:()=>({message:`Provider edit cancelled.`,success:!0})}}function ii(e,t,n,r){let i=F(e,n);return i.status===`error`?{message:i.message,success:!1,interaction:z(e,t,r)}:i.status===`complete`?ai(i.input,t,r):{message:``,success:!0,interaction:z(i.state,t,r)}}function ai(e,t,n){let r=n.settings.readMergedSettings(),i=r.providers?.[t];if(!i)return{message:`Provider profile "${t}" was not found.`,success:!1};let a=n.settings.readTargetSettings(),o=ke(e,{providerDefinitions:n.providerDefinitions}).providers[t];if(!o)return{message:`Provider profile "${t}" was not updated.`,success:!1};n.settings.writeTargetSettings(Pt(a,t,{...i,...o}));let s=r.currentProvider===t;return{message:s?`Provider ${t} updated. Restarting...`:`Provider ${t} updated.`,success:!0,...s?{effects:[{...Qr,message:`Provider edit restart`}]}:{}}}const oi={type:`session-restart-requested`,reason:`other`};function si(e,t){let n=t.settings.readMergedSettings();if(!n.providers?.[e])return{message:`Provider profile "${e}" was not found.`,success:!1};let r=hi(e,Object.keys(n.providers));return{message:`Provider duplicate requested: ${e}`,success:!0,interaction:ci(e,r,t)}}function ci(e,t,n){return{prompt:{kind:`text`,title:`Duplicate ${e} as`,placeholder:t,allowEmpty:!0,validate:e=>li(e,t,n)},submit:r=>ui(e,r,t,n),cancel:()=>({message:`Provider duplicate cancelled.`,success:!0})}}function li(e,t,n){let r=gi(e,t);if(r.length===0)return`Required`;if(n.settings.readMergedSettings().providers?.[r]!==void 0)return`Provider profile "${r}" already exists`}function ui(e,t,n,r){let i=r.settings.readMergedSettings().providers?.[e];if(!i)return{message:`Provider profile "${e}" was not found.`,success:!1};let a=gi(t,n),o=li(a,n,r);return o===void 0?(r.settings.writeTargetSettings(Pt(r.settings.readTargetSettings(),a,{...i})),{message:`Provider profile duplicated: ${e} -> ${a}.`,success:!0}):{message:o,success:!1}}function di(e,t){let n=t.settings.readMergedSettings().providers??{};return n[e]?Object.keys(n).length<=1?{message:`Cannot delete the only provider profile.`,success:!1}:t.settings.readTargetSettings().providers?.[e]===void 0?{message:`Provider profile "${e}" is not stored in the active write target; edit its source settings file or override it before deleting.`,success:!1}:{message:`Provider delete requested: ${e}`,success:!0,interaction:fi(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function fi(e,t){return{prompt:{kind:`choice`,title:`Delete provider profile ${e}?`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>n===`yes`?pi(e,t):{message:`Provider delete cancelled.`,success:!0},cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}function pi(e,t){let n=t.settings.readMergedSettings();if(n.currentProvider!==e)return t.settings.writeTargetSettings(Ue(t.settings.readTargetSettings(),e)),{message:`Provider profile deleted: ${e}.`,success:!0};let r=Object.entries(n.providers??{}).filter(([t])=>t!==e).map(([e,t])=>({value:e,label:$r(e,t,n.currentProvider)}));return{message:`Select a replacement provider before deleting ${e}.`,success:!0,interaction:{prompt:{kind:`choice`,title:`Replacement provider for ${e}`,options:r,maxVisible:8},submit:n=>mi(e,n,t),cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}}function mi(e,t,n){if(n.settings.readMergedSettings().providers?.[t]===void 0||t===e)return{message:`Provider profile "${t}" was not found.`,success:!1};let r=Ue(n.settings.readTargetSettings(),e);return n.settings.writeTargetSettings({...r,currentProvider:t}),{message:`Provider profile deleted: ${e}. Restarting with ${t}...`,success:!0,effects:[{...oi,message:`Provider delete restart`}]}}function hi(e,t){let n=Dt(`${e}-copy`)??`provider-copy`;if(!t.includes(n))return n;for(let e=2;e<1e3;e+=1){let r=`${n}-${e}`;if(!t.includes(r))return r}return`${n}-${Date.now()}`}function gi(e,t){return Dt(e.trim()||t)??``}const _i=`switch`,vi=`edit`,yi=`test`,bi=`duplicate`,xi=`delete`,Si=`cancel`;function Ci(e,t,n){return{prompt:{kind:`choice`,title:`Select provider profile`,options:Object.entries(t??{}).map(([t,n])=>({value:t,label:$r(t,n,e)})),maxVisible:8},submit:e=>wi(e,n),cancel:()=>({message:`Provider profile selection cancelled.`,success:!0})}}function wi(e,t){return t.settings.readMergedSettings().providers?.[e]?{message:`Provider profile selected: ${e}`,success:!0,interaction:Ti(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function Ti(e,t){return{prompt:{kind:`choice`,title:`Provider profile: ${e}`,options:[{value:_i,label:`Switch`},{value:vi,label:`Edit`},{value:yi,label:`Test`},{value:bi,label:`Duplicate`},{value:xi,label:`Delete`},{value:Si,label:`Cancel`}]},submit:n=>Ei(e,n,t),cancel:()=>({message:`Provider profile action cancelled.`,success:!0})}}async function Ei(e,t,n){let r=n.settings.readMergedSettings();switch(t){case _i:return ei(r.providers,e,n);case vi:return ni(e,n);case yi:return await Nt(r.currentProvider,r.providers,e,n);case bi:return si(e,n);case xi:return di(e,n);case Si:return{message:`Provider profile action cancelled.`,success:!0};default:return{message:`Unknown provider profile action "${t}".`,success:!1}}}async function Di(e,t){let n=t.settings.readMergedSettings(),r=e.trim();if(r.length===0)return Oi(n.currentProvider,n.providers,t);let[i=`current`,a]=r.split(/\s+/);return i===`list`?Oi(n.currentProvider,n.providers,t):i===`current`||i===``?{message:Ai(n.currentProvider,n.providers),success:!0}:i===`use`?ei(n.providers,a,t):i===`test`?await Nt(n.currentProvider,n.providers,a,t):i===`add`?ji(a,t):{message:`Usage: provider [current|list|use <profile>|add <type>|test [profile]]`,success:!1}}function Oi(e,t,n){let r=ki(e,t);return Object.keys(t??{}).length===0?{message:r,success:!0}:{message:r,success:!0,interaction:Ci(e,t,n)}}function ki(e,t){let n=Object.entries(t??{});return n.length===0?`No provider profiles configured.`:n.map(([t,n])=>`${t===e?`*`:`-`} ${t}: ${n.type??`unknown`} ${n.model??`(no model)`}`).join(`
20
- `)}function Ai(e,t){if(!e)return`No current provider configured.`;let n=t?.[e];return n?[`Current provider: ${e}`,`Type: ${n.type??`unknown`}`,`Model: ${n.model??`(no model)`}`,...n.baseURL?[`Base URL: ${n.baseURL}`]:[]].join(`
21
- `):`Current provider "${e}" was not found in providers.`}function ji(e,t){return e===void 0||e.length===0?{message:`Provider setup requested. Select a provider to continue.`,success:!0,interaction:Mi(t)}:l(t.providerDefinitions,e)===void 0?{message:`Usage: provider add <type>. Supported: ${u(t.providerDefinitions)}`,success:!1}:{message:`Provider setup requested: ${e}`,success:!0,interaction:R(qr(e,t),t)}}function Mi(e){return{prompt:{kind:`choice`,title:`Select provider`,options:e.providerDefinitions.map(e=>({value:e.type,label:I(e)})),maxVisible:6},submit:t=>{let n=qr(t,e);return{message:`Provider setup requested: ${t}`,success:!0,interaction:R(n,e)}},cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function Ni(){return[{name:`current`,description:`Show current provider`,source:`provider`},{name:`list`,description:`List provider profiles`,source:`provider`},{name:`use`,description:`Switch provider profile`,source:`provider`},{name:`add`,description:`Configure a provider profile`,source:`provider`},{name:`test`,description:`Test provider profile`,source:`provider`}]}function B(){return{name:`provider`,description:`Manage provider profiles`,source:`provider`,modelInvocable:!1,argumentHint:`current | list | use <profile> | add [type] | test [profile]`,subcommands:Ni()}}var Pi=class{name=`provider`;getCommands(){return[B()]}};function Fi(e){let t=B();return{name:t.name,description:t.description,userInvocable:!0,modelInvocable:!1,argumentHint:t.argumentHint,subcommands:t.subcommands,execute:async(t,n)=>Di(n,e)}}function Ii(e){return{name:`agent-command-provider`,commandSources:[new Pi],systemCommands:[Fi(e)]}}function Li(e,t){return{success:!0,message:`Reset requested.`,data:{resetRequested:!0},effects:[{type:`settings-reset-requested`}]}}function V(){return{name:`reset`,description:`Delete settings`,source:`reset`,modelInvocable:!1}}function Ri(){let e=V();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Li}}var zi=class{name=`reset`;getCommands(){return[V()]}};function Bi(){return{name:`agent-command-reset`,commandSources:[new zi],systemCommands:[Ri()]}}function H(){return{message:`Usage: rewind [list] | rewind inspect <checkpoint-id> | rewind restore <checkpoint-id> | rewind code <checkpoint-id> | rewind rollback <checkpoint-id>`,success:!1}}function Vi(e){let t=e.replace(/\s+/g,` `).trim();return t.length<=120?t:`${t.slice(0,117)}...`}function Hi(e){return{message:[`Edit checkpoints:`,...e.length>0?e.map(e=>`- ${e.id} files=${e.fileCount} ${e.createdAt} ${Vi(e.prompt)}`):[`(no edit checkpoints)`]].join(`
22
- `),success:!0,data:{count:e.length,checkpoints:[...e]}}}function Ui(e){return e.length>0?e.join(`, `):`(none)`}function Wi(e){let t=e.capturedFiles.length>0?e.capturedFiles.map(e=>{let t=e.snapshotSizeBytes===void 0?``:` size=${e.snapshotSizeBytes}B`;return`- ${e.relativePath} action=${e.restoreAction} snapshot=${String(e.snapshotAvailable)}${t}`}):[`(no files captured)`];return{message:[`Checkpoint ${e.target.id}`,`Prompt: ${Vi(e.target.prompt)}`,`Captured files:`,...t,`Restore later checkpoints: files=${e.restoreToCheckpoint.fileCount} checkpoints=${Ui(e.restoreToCheckpoint.checkpointIds)}`,`Rollback through checkpoint: files=${e.rollbackThroughCheckpoint.fileCount} checkpoints=${Ui(e.rollbackThroughCheckpoint.checkpointIds)}`].join(`
23
- `),success:!0,data:{inspection:e}}}function Gi(e){return{message:[`Restored code to ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Rolled back checkpoints: ${e.restoredCheckpointCount}`].join(`
24
- `),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function Ki(e){return{message:[`Rolled back code through ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Removed checkpoints: ${e.removedCheckpointCount}`].join(`
25
- `),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function U(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function qi(e,t){if(!t)return H();try{return Wi(et(e,t))}catch(e){return U(e instanceof Error?e:String(e))}}async function Ji(e,t){if(!t)return H();try{return Gi(await Tt(e,t))}catch(e){return U(e instanceof Error?e:String(e))}}async function Yi(e,t){if(!t)return H();try{return Ki(await Et(e,t))}catch(e){return U(e instanceof Error?e:String(e))}}async function Xi(e,t){let n=t.trim().split(/\s+/).filter(Boolean),r=n[0]??`list`;return r===`list`?Hi(ot(e)):r===`inspect`?qi(e,n[1]):r===`restore`||r===`code`?Ji(e,n[1]):r===`rollback`?Yi(e,n[1]):H()}function Zi(){return{name:`rewind`,description:_e,source:`rewind`,argumentHint:ge,modelInvocable:!1,safety:`write`,subcommands:Ae()}}function Qi(){let e=Zi();return{name:e.name,description:e.description,argumentHint:e.argumentHint,userInvocable:!0,modelInvocable:!1,safety:`write`,subcommands:e.subcommands,execute:Xi}}var $i=class{name=`rewind`;getCommands(){return[Zi()]}};function ea(){return{name:`agent-command-rewind`,commandSources:[new $i],systemCommands:[Qi()]}}const ta=`Conversation cleared.`;function na(e,t){return Pe(e),{success:!0,message:ta,effects:[{type:`conversation-history-cleared`}]}}function ra(e,t){let n=pt(t);return n===void 0?{success:!1,message:me}:{success:!0,message:`Session renamed to "${n}".`,data:{name:n},effects:[He(n)]}}function ia(e,t){return{success:!0,message:`Opening session picker...`,data:{triggerResumePicker:!0},effects:[Ve()]}}function aa(e,t){let n=bt(e);return{success:!0,message:`Session: ${n.sessionId}\nMessages: ${n.messageCount}`,data:{sessionId:n.sessionId,messageCount:n.messageCount}}}function oa(e,t){let n=Ft(e);return{success:n.validation.ok,message:Ye(n),data:{logFile:n.logFile,entryCount:n.entryCount,issueCount:n.validation.issues.length,ok:n.validation.ok}}}function W(){return{name:`clear`,description:n,source:`session`,modelInvocable:!1}}function G(){return{name:`rename`,description:pe,source:`session`,modelInvocable:!1}}function K(){return{name:`resume`,description:he,source:`session`,modelInvocable:!1}}function q(){return{name:`cost`,description:r,source:`session`,modelInvocable:!1}}function J(){return{name:`validate-session`,description:xe,source:`session`,modelInvocable:!1}}function sa(){let e=W();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:na}}function ca(){let e=G();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:ra}}function la(){let e=K();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:ia}}function ua(){let e=q();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:aa}}function da(){let e=J();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:oa}}var fa=class{name=`session`;getCommands(){return[W(),G(),K(),q(),J()]}};function pa(){return{name:`agent-command-session`,commandSources:[new fa],systemCommands:[sa(),ca(),la(),ua(),da()]}}function Y(){return{name:`settings`,description:`Open transport settings — enable/disable transports and configure options`,source:`settings`,modelInvocable:!1}}function ma(){let e=Y();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:async()=>({success:!0,message:`Opening settings...`,effects:[{type:`settings-tui-requested`}]})}}var ha=class{name=`settings`;getCommands(){return[Y()]}};function ga(){return{name:`agent-command-settings`,commandSources:[new ha],systemCommands:[ma()]}}const _a=`Skill command. Before following a matching registered skill from the system prompt Skills section, invoke the projected skills command tool with args "<skill-name> [args]". Without arguments, list registered skills. With a skill name, activate that skill. Slash syntax is a UI input/display concern; the SDK command identity is "skills".`;function va(e){let t=[];return e.modelInvocable||t.push(`model-disabled`),e.userInvocable||t.push(`model-only`),e.context&&t.push(`context:${e.context}`),e.agent&&t.push(`agent:${e.agent}`),t.length>0?` [${t.join(`, `)}]`:``}function ya(e){let t=e.argumentHint?` ${e.argumentHint}`:``;return`- ${e.name}${t}: ${e.description}${va(e)}`}function ba(e){return e.length===0?[`No skills are registered for this session.`,``,`Skills are metadata until activated. Do not invent or imitate a skill workflow when no matching registered skill exists.`].join(`
26
- `):[`Registered skills:`,...e.map(ya),``,`Activation contract:`,`- Use /skills <skill-name> [args] to activate a matching skill.`,`- Treat /<skill-name> as a virtual alias for /skills <skill-name>.`,`- The system prompt Skills section is skill selection metadata.`,`- Treat descriptions as selection metadata only, not as loaded SKILL.md content.`,`- Do not answer by merely naming, recommending, or imitating a matching skill.`,`- If no listed skill matches the task, continue without claiming a skill was activated.`].join(`
27
- `)}function xa(e){let t=e.trim();if(t.length===0||t===`list`)return{action:`list`,skillArgs:``};let[n=``,...r]=t.split(/\s+/);return n.length===0?{action:`list`,skillArgs:``}:{action:`activate`,skillName:n,skillArgs:r.join(` `)}}async function Sa(e,t=``){let n=xa(t);if(n.action===`activate`&&n.skillName!==void 0){if(!e.executeSkillCommandByName)return{success:!1,message:`Skill activation is not available in this session.`};let t=`/${n.skillName}${n.skillArgs?` ${n.skillArgs}`:``}`;return await e.executeSkillCommandByName(n.skillName,n.skillArgs,{invocationSource:e.getCommandInvocationSource?.()??`user`,displayInput:t,rawInput:t})??{success:!1,message:`Unknown skill: ${n.skillName}`}}let r=e.listSkills?.()??[];return{success:!0,message:ba(r),data:{skills:r,activationContract:{activateWith:`/skills <skill-name> [args]`,activationRequiredBeforeWorkflow:!0,metadataIsNotSkillContent:!0}}}}function X(){return{name:`skills`,description:_a,source:`skills`,modelInvocable:!0,userInvocable:!0,argumentHint:`[list | <skill-name> [args]]`,safety:`read-only`}}function Ca(){let e=X();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!0,argumentHint:e.argumentHint,safety:e.safety,lifecycle:`inline`,execute:Sa}}var wa=class{name=`skills`;getCommands(){return[X()]}};function Ta(e={}){let t=[new wa];return t.push(new be(e.cwd??process.cwd())),{name:`agent-command-skills`,commandSources:t,systemCommands:[Ca()]}}const Ea=[`Usage: /statusline on | off | reset | git on | git off`,`Fields: model, context, permission mode, message count, session name, thinking state, git branch.`].join(`
28
- `);function Da(e){let t=e.trim().toLowerCase().split(/\s+/).filter(e=>e.length>0),[n,r]=t;return n===`on`&&r===void 0?{success:!0,message:`Status line enabled.`,patch:{enabled:!0}}:n===`off`&&r===void 0?{success:!0,message:`Status line disabled.`,patch:{enabled:!1}}:n===`reset`&&r===void 0?{success:!0,message:`Status line settings reset.`,patch:{...a}}:n===`git`&&r===`on`&&t.length===2?{success:!0,message:`Status line git branch shown.`,patch:{gitBranch:!0}}:n===`git`&&r===`off`&&t.length===2?{success:!0,message:`Status line git branch hidden.`,patch:{gitBranch:!1}}:{success:!1,message:Ea}}function Oa(e,t){let n=Da(t);return n.success?{success:!0,message:n.message,effects:[{type:`statusline-settings-patch`,patch:n.patch}]}:{success:!1,message:n.message}}function Z(){return{name:`statusline`,description:ye,source:`statusline`,argumentHint:ve,subcommands:je(`statusline`),modelInvocable:!1}}function ka(){let e=Z();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:Oa}}var Aa=class{name=`statusline`;getCommands(){return[Z()]}};function ja(){return{name:`agent-command-statusline`,commandSources:[new Aa],systemCommands:[ka()]}}const Ma=`Inspect Robota user-local storage and memory state.`,Na=`storage list [--format json] | memory set/list/inspect/disable/delete`,Q=`Usage: user-local storage list [--format json] | user-local memory set <category> <key> <value> --summary <summary> --source <source> | user-local memory list [--format json] | user-local memory inspect <category> <key> [--format json] | user-local memory disable <category> <key> | user-local memory delete <category> <key>`;function Pa(e){return e.length===0?`No user-local memory items.`:e.map(e=>`- ${e.category}/${e.key} (${e.enabled?`enabled`:`disabled`})`).join(`
29
- `)}function $(e){if(e===void 0)throw Error(`User-local memory category is required.`);return e}async function Fa(e,t){let n=await ct({activeRepositoryRoot:e});return{message:t.format===`json`?JSON.stringify(n,null,2):Pa(n.items),success:!0,data:{list:n}}}async function Ia(e,t){let[n,r,i]=t.positional,a=await At({activeRepositoryRoot:e,category:$(n),key:r??``,value:i??``,summary:t.summary??``,source:t.source??``});return{message:`Stored user-local memory item ${a.category}/${a.key} at ${a.storageLocation}`,success:!0,data:{item:a}}}async function La(e,t){let[n,r]=t.positional,i=await tt({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:t.format===`json`?JSON.stringify(i,null,2):`${i.category}/${i.key}: ${i.summary}`,success:!0,data:{item:i}}}async function Ra(e,t){let[n,r]=t.positional,i=await Ge({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:`Disabled user-local memory item ${i.category}/${i.key}`,success:!0,data:{item:i}}}async function za(e,t){let[n,r]=t.positional,i=await We({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:`Deleted user-local memory item ${i.category}/${i.key}`,success:!0,data:{result:i}}}async function Ba(e,t){return(t.action??`list`)===`list`?Fa(e,t):t.action===`set`?Ia(e,t):t.action===`inspect`?La(e,t):t.action===`disable`?Ra(e,t):t.action===`delete`?za(e,t):{message:Q,success:!1}}function Va(e){if(e===void 0||e===`text`)return`text`;if(e===`json`)return`json`;throw Error(`Unsupported user-local output format: ${e}`)}function Ha(e,t,n){return e===`--format`?{format:t[n+1],nextIndex:n+1}:e.startsWith(`--format=`)?{format:e.slice(9),nextIndex:n}:e===`--summary`?{summary:t[n+1],nextIndex:n+1}:e.startsWith(`--summary=`)?{summary:e.slice(10),nextIndex:n}:e===`--source`?{source:t[n+1],nextIndex:n+1}:e.startsWith(`--source=`)?{source:e.slice(9),nextIndex:n}:null}function Ua(e,t={}){let n=t.format,r=t.summary,i=t.source,a=[];for(let t=0;t<e.length;t+=1){let o=e[t],s=Ha(o,e,t);if(s!==null){n=s.format??n,r=s.summary??r,i=s.source??i,t=s.nextIndex;continue}a.push(o)}return{target:a[0],action:a[1],positional:a.slice(2),format:Va(n),summary:r,source:i}}function Wa(e){return e.trim().split(/\s+/).filter(Boolean)}function Ga(e,t){let n=t.map(e=>`- ${e.category}`);return[`User-local storage root: ${e}`,`Categories:`,...n].join(`
30
- `)}async function Ka(e,t){if((t.action??`list`)!==`list`)return{message:Q,success:!1};let n=await nt({activeRepositoryRoot:e});return{message:t.format===`json`?JSON.stringify(n,null,2):Ga(n.root,n.categories),success:!0,data:{root:n.root,categories:n.categories,inspection:n}}}async function qa(e,t){return t.target===`storage`?Ka(e,t):t.target===`memory`?Ba(e,t):{message:Q,success:!1}}function Ja(e){return e.includes(`ENOENT`)?`User-local memory item not found.`:e}async function Ya(e){try{return await qa(e.cwd,Ua(e.argv,{format:e.format,summary:e.summary,source:e.source}))}catch(e){return{message:Ja(e instanceof Error?e.message:String(e)),success:!1}}}async function Xa(e,t){try{return await qa(e.getCwd(),Ua(Wa(t)))}catch(e){return{message:Ja(e instanceof Error?e.message:String(e)),success:!1}}}function Za(){return{name:`user-local`,description:Ma,source:`user-local`,argumentHint:Na,modelInvocable:!1,safety:`read-only`,subcommands:[{name:`storage`,description:`Inspect user-local storage categories`,source:`user-local`},{name:`memory`,description:`Inspect and manage user-local memory items`,source:`user-local`}]}}function Qa(){let e=Za();return{name:e.name,description:e.description,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,safety:e.safety,subcommands:e.subcommands,execute:Xa}}var $a=class{name=`user-local`;getCommands(){return[Za()]}};function eo(){return{name:`agent-command-user-local`,commandSources:[new $a],systemCommands:[Qa()]}}export{ln as AgentCommandSource,mn as BackgroundCommandSource,ta as CLEAR_COMMAND_MESSAGE,yn as CompactCommandSource,Nn as ContextCommandSource,Rn as ExitCommandSource,Un as HelpCommandSource,qn as LanguageCommandSource,ar as MemoryCommandSource,lr as ModeCommandSource,mr as ModelCommandSource,yr as PermissionsCommandSource,Nr as PluginManagerCommandSource,Pi as ProviderCommandSource,$i as RewindCommandSource,_a as SKILLS_COMMAND_DESCRIPTION,Ea as STATUSLINE_USAGE,fa as SessionCommandSource,ha as SettingsCommandSource,wa as SkillsCommandSource,Aa as StatusLineCommandSource,Na as USER_LOCAL_COMMAND_ARGUMENT_HINT,Ma as USER_LOCAL_COMMAND_DESCRIPTION,Q as USER_LOCAL_COMMAND_USAGE,$a as UserLocalCommandSource,p as createAgentCommandEntry,un as createAgentCommandModule,cn as createAgentSystemCommand,m as createBackgroundCommandEntry,hn as createBackgroundCommandModule,W as createClearCommandEntry,h as createCompactCommandEntry,bn as createCompactCommandModule,b as createContextCommandEntry,Pn as createContextCommandModule,q as createCostCommandEntry,In as createExitCommandEntry,zn as createExitCommandModule,Vn as createHelpCommandEntry,Wn as createHelpCommandModule,x as createLanguageCommandEntry,Jn as createLanguageCommandModule,w as createMemoryCommandEntry,or as createMemoryCommandModule,T as createModeCommandEntry,ur as createModeCommandModule,E as createModelCommandEntry,hr as createModelCommandModule,D as createPermissionsCommandEntry,br as createPermissionsCommandModule,j as createPluginCommandEntry,Pr as createPluginCommandModule,B as createProviderCommandEntry,Ii as createProviderCommandModule,N as createProviderSetupFlow,M as createReloadPluginsCommandEntry,G as createRenameCommandEntry,V as createResetCommandEntry,Bi as createResetCommandModule,K as createResumeCommandEntry,ea as createRewindCommandModule,pa as createSessionCommandModule,Y as createSettingsCommandEntry,ga as createSettingsCommandModule,X as createSkillsCommandEntry,Ta as createSkillsCommandModule,Z as createStatusLineCommandEntry,ja as createStatusLineCommandModule,Za as createUserLocalCommandEntry,eo as createUserLocalCommandModule,J as createValidateSessionCommandEntry,rn as executeAgentCommand,fn as executeBackgroundCommand,na as executeClearCommand,_n as executeCompactCommand,Cn as executeContextCommand,aa as executeCostCommand,Fn as executeExitCommand,Bn as executeHelpCommand,Gn as executeLanguageCommand,rr as executeMemoryCommand,sr as executeModeCommand,fr as executeModelCommand,_r as executePermissionsCommand,kr as executePluginCommand,Di as executeProviderCommand,Ar as executeReloadPluginsCommand,ra as executeRenameCommand,Li as executeResetCommand,ia as executeResumeCommand,Xi as executeRewindCommand,Sa as executeSkillsCommand,Oa as executeStatusLineCommand,Xa as executeUserLocalCommand,Ya as executeUserLocalDirectCommand,oa as executeValidateSessionCommand,I as formatProviderSetupChoiceLabel,zr as formatProviderSetupHelpLinks,Rr as formatProviderSetupPromptLabel,Fr as formatProviderSetupSelectionPrompt,P as getProviderSetupStep,Ir as resolveProviderSetupSelection,Lr as runProviderSetupPromptFlow,F as submitProviderSetupValue,L as validateProviderSetupValue};
14
+ `),success:!0,data:{indexPath:t.indexPath,topicsPath:t.topicsPath,topicCount:t.topics.length}}}function ur(e,t){if(!t||t===`index`){let t=e.loadStartupMemory();return{message:t.content||`(empty memory index)`,success:!0,data:{path:t.path,lineCount:t.lineCount,truncated:t.truncated}}}return{message:e.readTopic(t)||`(empty memory topic: ${t})`,success:!0,data:{topic:t}}}function dr(e){let t=e[1],n=e[2],r=e.slice(3).join(` `).trim();if(!(!t||!ut(t)||!n||r.length===0))return{type:t,topic:n,text:r}}function fr(e){let t=e.list(`pending`);return{message:[`Pending memory candidates:`,...t.length>0?t.map(e=>`- ${e.id} ${e.type}/${e.topic} confidence=${e.confidence}: ${e.text}`):[`(no pending memory candidates)`]].join(`
15
+ `),success:!0,data:{count:t.length}}}function T(e,t){kt(e,t)}function pr(e,t,n,r){if(!r)return w();try{let i=t.mark(r,`approved`,`approved-by-user`),a=n.append(i),o=t.mark(r,`saved`,`approved-and-saved`);return T(e,{type:`memory_candidate_approved`,candidateId:o.id,topic:o.topic,reason:`approved-by-user`}),T(e,{type:`memory_candidate_saved`,candidateId:o.id,topic:o.topic,reason:a.deduplicated?`deduplicated`:`approved-and-saved`}),{message:a.deduplicated?`Saved memory candidate ${r} was already present in ${a.topicPath}`:`Saved memory candidate ${r} to ${a.topicPath}`,success:!0,data:{id:r,status:o.status,topic:a.topic,topicPath:a.topicPath,deduplicated:a.deduplicated}}}catch(e){return cr(e instanceof Error?e:String(e))}}function mr(e,t,n){if(!n)return w();try{let r=t.mark(n,`rejected`,`rejected-by-user`);return T(e,{type:`memory_candidate_rejected`,candidateId:r.id,topic:r.topic,reason:`rejected-by-user`}),{message:`Rejected memory candidate ${n}`,success:!0,data:{id:n,status:r.status}}}catch(e){return cr(e instanceof Error?e:String(e))}}function hr(e){let t=mt(e);return{message:[`Used memory references:`,...t.length>0?t.map(e=>{let t=e.truncated?` truncated=true`:``;return`- ${e.topic} score=${e.score}${t}: ${e.path}`}):[`(no memory used in current turn)`]].join(`
16
+ `),success:!0,data:{count:t.length,references:[...t]}}}function gr(e,t){let n=t.trim().split(/\s+/).filter(Boolean),r=n[0]??`list`,i=Ue(e);if(r===`list`)return lr(i.project);if(r===`show`)return ur(i.project,n[1]);if(r===`pending`)return fr(i.pending);if(r===`approve`)return pr(e,i.pending,i.project,n[1]);if(r===`reject`)return mr(e,i.pending,n[1]);if(r===`used`)return hr(e);if(r===`add`){let e=dr(n);if(!e)return w();if(ot(e.text))return{message:`Refusing to save sensitive memory content.`,success:!1};let t=i.project.append(e);return{message:t.deduplicated?`${e.type} memory already exists in ${t.topicPath}`:`Saved ${e.type} memory to ${t.topicPath}`,success:!0,data:{indexPath:t.indexPath,topicPath:t.topicPath,topic:t.topic,deduplicated:t.deduplicated}}}return w()}function E(){return{name:`memory`,displayName:`Memory`,description:ie,source:`memory`,argumentHint:re,modelInvocable:!0,safety:`write`,subcommands:Ae()}}function _r(){let e=E();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!0,argumentHint:e.argumentHint,safety:e.safety,subcommands:e.subcommands,execute:gr}}var vr=class{name=`memory`;getCommands(){return[E()]}};function yr(){return{name:`agent-command-memory`,commandSources:[new vr],systemCommands:[_r()]}}function br(e,t){let n=yt(t);if(n===void 0){let t=Tt(e);return{message:`Current mode: ${t}`,success:!0,data:{mode:t}}}return dt(n)?(Kt(e,n),{message:`Permission mode set to: ${n}`,success:!0,data:{mode:n}}):{message:nt(),success:!1}}function D(){return{name:`mode`,displayName:`Interaction Mode`,description:de,source:`mode`,argumentHint:ue,subcommands:Me(`mode`),modelInvocable:!1}}function xr(){let e=D();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:br}}var Sr=class{name=`mode`;getCommands(){return[D()]}};function Cr(){return{name:`agent-command-mode`,commandSources:[new Sr],systemCommands:[xr()]}}function wr(e){let t=e.trim().split(/\s+/)[0];return t!==void 0&&t.length>0?t:void 0}async function Tr(e,t,n){let r=wr(t);return r===void 0?{message:await it({...n?.settings===void 0?{}:{settings:n.settings.readMergedSettings()},...n?.providerDefinitions===void 0?{}:{providerDefinitions:n.providerDefinitions},refresh:!0}),success:!1}:{message:`Model change requested: ${r}`,success:!0,data:{modelId:r},effects:[{type:`model-change-requested`,modelId:r}]}}function O(e){return{name:`model`,displayName:`Change Model`,description:se,source:`model`,argumentHint:oe,subcommands:kr(e)}}function Er(e){let t=O(e);return{name:t.name,displayName:t.displayName,description:t.description,requiresPermission:!0,userInvocable:!0,argumentHint:t.argumentHint,subcommands:t.subcommands,lifecycle:`inline`,execute:(t,n)=>Tr(t,n,e)}}var Dr=class{options;name=`model`;constructor(e){this.options=e}getCommands(){return[O(this.options)]}};function Or(e){return{name:`agent-command-model`,commandSources:[new Dr(e)],systemCommands:[Er(e)]}}function kr(e){return je(e===void 0?`model`:{source:`model`,providerDefinitions:e.providerDefinitions,settings:e.settings.readMergedSettings()})}function Ar(e,t){let n=yt(t);if(n!==void 0){if(!dt(n))return{message:nt(),success:!1};Kt(e,n);let t=Et(e);return{message:`Permission mode set to: ${n}\n${et(t)}`,success:!0,data:{mode:t.mode,sessionAllowed:t.sessionAllowed}}}let r=Et(e);return{message:et(r),success:!0,data:{mode:r.mode,sessionAllowed:r.sessionAllowed}}}function k(){return{name:`permissions`,displayName:`Permissions`,description:le,source:`permissions`,argumentHint:ue,subcommands:Me(`permissions`),modelInvocable:!1}}function jr(){let e=k();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!0,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:Ar}}var Mr=class{name=`permissions`;getCommands(){return[k()]}};function Nr(){return{name:`agent-command-permissions`,commandSources:[new Mr],systemCommands:[jr()]}}function Pr(e){let t=e.trim().split(/\s+/).filter(e=>e.length>0);return{subcommand:t[0]??``,subArgs:t.slice(1).join(` `).trim()}}function A(e){return{success:!1,message:e}}function Fr(e){return Mt(e)}async function j(e,t){let n=Fr(e);if(n===void 0)return{success:!1,message:`Plugin management is not available.`};try{return{success:!0,message:await t(n)}}catch(e){return{success:!1,message:`Plugin error: ${e instanceof Error?e.message:String(e)}`}}}async function Ir(e,t){let{subcommand:n,subArgs:r}=Pr(t);return n===`add`&&r.length>0?j(e,async e=>{let t=await e.marketplaceAdd(r);return`Added marketplace: "${t}" (from ${r})\nInstall plugins with: /plugin install <name>@${t}`}):n===`remove`&&r.length>0?j(e,async e=>(await e.marketplaceRemove(r),`Removed marketplace "${r}" and uninstalled its plugins.`)):n===`update`&&r.length>0?j(e,async e=>(await e.marketplaceUpdate(r),`Updated marketplace "${r}".`)):n===`list`?j(e,async e=>{let t=await e.marketplaceList();return t.length===0?`No marketplace sources configured.`:`Marketplace sources:\n${t.map(e=>` ${e.name} (${e.type})`).join(`
17
+ `)}`}):A(`Usage: /plugin marketplace add <source> | remove <name> | update <name> | list`)}function M(e,t,n,r){return t.length===0?Promise.resolve(A(n)):j(e,e=>Promise.resolve(r(e,t)))}function Lr(){return{success:!0,message:`Opening plugin manager...`,effects:[Ge()]}}function Rr(e,t){return M(e,t,`Usage: /plugin install <name>@<marketplace>`,async(e,t)=>(await e.install(t),`Installed plugin: ${t}`))}function zr(e,t){return M(e,t,`Usage: /plugin uninstall <name>@<marketplace>`,async(e,t)=>(await e.uninstall(t),`Uninstalled plugin: ${t}`))}function Br(e,t){return M(e,t,`Usage: /plugin enable <name>@<marketplace>`,async(e,t)=>(await e.enable(t),`Enabled plugin: ${t}`))}function Vr(e,t){return M(e,t,`Usage: /plugin disable <name>@<marketplace>`,async(e,t)=>(await e.disable(t),`Disabled plugin: ${t}`))}async function Hr(e,t){let{subcommand:n,subArgs:r}=Pr(t);switch(n){case``:case`manage`:return Lr();case`install`:return Rr(e,r);case`uninstall`:return zr(e,r);case`enable`:return Br(e,r);case`disable`:return Vr(e,r);case`marketplace`:return Ir(e,r);default:return A(`Unknown plugin subcommand: ${n}`)}}async function Ur(e,t){return j(e,async e=>{let t=await e.reloadPlugins();return`Reloaded ${t.loadedPluginCount===1?`1 plugin resource`:`${t.loadedPluginCount} plugin resources`}.`}).then(e=>e.success?{...e,effects:[We()]}:e)}function N(){return{name:`plugin`,displayName:`Plugins`,description:pe,source:`plugin-manager`,modelInvocable:!1,argumentHint:fe,subcommands:Ne()}}function P(){return{name:`reload-plugins`,displayName:`Reload Plugins`,description:ge,source:`plugin-manager`,modelInvocable:!1}}function Wr(){let e=N();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,lifecycle:`inline`,subcommands:e.subcommands,execute:Hr}}function Gr(){let e=P();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Ur}}var Kr=class{name=`plugin-manager`;getCommands(){return[N(),P()]}};function qr(){return{name:`agent-command-plugin`,commandSources:[new Kr],systemCommands:[Wr(),Gr()]}}function F(e,t,n={}){let r=ei(e,t);return{type:e,steps:ri(ti(r),n.initialValues),setupHelpLinks:r.setupHelpLinks??[],stepIndex:0,values:{},existingProfileNames:n.existingProfileNames??[],...n.profileName===void 0?{}:{profileName:n.profileName},...n.setCurrent===void 0?{}:{setCurrent:n.setCurrent}}}function Jr(e){return e.length===0?` No providers are available.`:[` Select provider:`,...e.map((e,t)=>` ${t+1}. ${Qr(e)}`),` Provider [1-${e.length}] (default: 1): `].join(`
18
+ `)}function Yr(e,t){let n=e.trim(),r=n.length>0?n:`1`,i=$r(r);if(i!==void 0){let e=t[i];if(e!==void 0)return e.type;throw Error(`Provider selection ${r} is out of range. Currently supported: ${f(t)}`)}let a=d(t,r);if(a===void 0)throw Error(`Unknown provider: ${r}. Currently supported: ${f(t)}`);return a.type}function I(e){let t=e.steps[e.stepIndex];if(t===void 0)throw Error(`Provider setup step ${e.stepIndex} is out of range`);return t}function L(e,t){let n=I(e),r=t.trim()||n.defaultValue||``,i=z(n,r);if(i!==void 0)return{status:`error`,state:e,message:i};let a={...e,stepIndex:e.stepIndex+1,values:{...e.values,[n.key]:r}};return a.stepIndex<e.steps.length?{status:`next`,state:a}:{status:`complete`,input:ii(a)}}async function Xr(e,t,n,r={}){let i=F(e,n,r),a=i.steps.length;for(;i.stepIndex<a;){let e=I(i),n=await t(Zr(e,i.setupHelpLinks),e.masked===!0),r=L(i,n);if(r.status===`complete`)return r.input;if(r.status===`error`)throw Error(r.message);i=r.state}throw Error(`Provider setup flow ended without completion`)}function Zr(e,t=[]){let n=e.defaultValue===void 0?``:` (default: ${e.defaultValue})`,r=R(t);return`${r.length>0?`${r}\n`:``} ${e.title}${n}: `}function Qr(e){let t=e.displayName===void 0?e.type:`${e.displayName} (${e.type})`;return e.description===void 0?t:`${t} - ${e.description}`}function R(e=[]){return e.length===0?``:e.map(e=>` Setup help: ${ni(e.kind)}: ${e.label} - ${e.url}`).join(`
19
+ `)}function $r(e){if(/^\d+$/.test(e))return Number(e)-1}function z(e,t){if(e.required===!0&&t.length===0)return`Required`}function ei(e,t){let n=d(t,e);if(n===void 0)throw Error(`Unknown provider: ${e}. Currently supported: ${f(t)}`);return n}function ti(e){if(e.setupSteps!==void 0)return[...e.setupSteps];let t=[{key:`model`,title:`${e.type} model`,defaultValue:e.defaults?.model,required:e.defaults?.model===void 0}];return e.defaults?.baseURL!==void 0&&t.unshift({key:`baseURL`,title:`${e.type} base URL`,defaultValue:e.defaults.baseURL}),e.requiresApiKey===!0&&t.push({key:`apiKey`,title:`${e.type} API key`,defaultValue:e.defaults?.apiKey,required:e.defaults?.apiKey===void 0,masked:!0}),t}function ni(e){return e===`api-key`?`API key`:e===`console`?`Console`:`Official`}function ri(e,t){return t===void 0?[...e]:e.map(e=>{let n=t[e.key];return n===void 0?e:{...e,defaultValue:n,required:!1}})}function ii(e){let t=e.profileName??Bt({type:e.type},{existingProfileNames:e.existingProfileNames}),n=e.values.apiKey;return{profile:t,type:e.type,model:e.values.model,...n!==void 0&&n.length>0&&{apiKey:n},...e.values.baseURL!==void 0&&{baseURL:e.values.baseURL},setCurrent:e.setCurrent??!0}}const ai={type:`session-restart-requested`,reason:`other`};function oi(e,t){return F(e,t.providerDefinitions,{existingProfileNames:Object.keys(t.settings.readMergedSettings().providers??{})})}function B(e,t){return{prompt:si(e),submit:n=>li(e,n,t),cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function si(e){let t=I(e),n=t.masked===!0&&t.defaultValue!==void 0?`(unchanged)`:t.defaultValue;return{kind:`text`,title:t.title,...ci(e),...n===void 0?{}:{placeholder:n},...t.defaultValue===void 0?{}:{allowEmpty:!0},...t.masked===void 0?{}:{masked:t.masked},validate:e=>z(t,e)}}function ci(e){let t=R(e.setupHelpLinks);return t.length>0?{description:t}:{}}function li(e,t,n){let r=L(e,t);return r.status===`error`?{message:r.message,success:!1,interaction:B(e,n)}:r.status===`complete`?ui(r.input,n):{message:``,success:!0,interaction:B(r.state,n)}}function ui(e,t){let n=t.settings.readTargetSettings(),r=Pe(e,{providerDefinitions:t.providerDefinitions});return t.settings.writeTargetSettings(gt(n,r)),{message:`Provider ${e.profile} configured. Restarting...`,success:!0,effects:[{...ai,message:`Provider setup restart`}]}}const di={type:`session-restart-requested`,reason:`other`};function fi(e,t,n){return`${e===n?`* `:``}${e}: ${t.type??`unknown`} ${t.model??`(no model)`}`}function pi(e,t,n){return t?e?.[t]?n.settings.readMergedSettings().currentProvider===t?{message:`Provider profile "${t}" is already current.`,success:!0}:{message:`Provider change requested: ${t}`,success:!0,interaction:mi(t,n)}:{message:`Provider profile "${t}" was not found.`,success:!1}:{message:`Usage: provider use <profile>`,success:!1}}function mi(e,t){return{prompt:{kind:`choice`,title:`Change provider to ${e}? This will restart the session.`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>{if(n!==`yes`)return{message:`Provider change cancelled.`,success:!0};let r=t.settings.readMergedSettings(),i=t.settings.readTargetSettings(),a=i.providers?.[e]!==void 0||r.providers?.[e]!==void 0?{...i,currentProvider:e}:Rt(i,e);return t.settings.writeTargetSettings(a),{message:`Provider changed to ${e}. Restarting...`,success:!0,effects:[{...di,message:`Provider change restart`}]}},cancel:()=>({message:`Provider change cancelled.`,success:!0})}}function hi(e,t){let n=t.settings.readMergedSettings().providers?.[e];if(!n)return{message:`Provider profile "${e}" was not found.`,success:!1};if(!n.type)return{message:`Provider profile "${e}" is missing type.`,success:!1};try{let r=F(n.type,t.providerDefinitions,{profileName:e,setCurrent:!1,initialValues:gi(n)});return{message:`Provider edit requested: ${e}`,success:!0,interaction:V(r,e,t)}}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}}function gi(e){return{...typeof e.model==`string`?{model:e.model}:{},...typeof e.apiKey==`string`?{apiKey:e.apiKey}:{},...typeof e.baseURL==`string`?{baseURL:e.baseURL}:{}}}function V(e,t,n){return{prompt:si(e),submit:r=>_i(e,t,r,n),cancel:()=>({message:`Provider edit cancelled.`,success:!0})}}function _i(e,t,n,r){let i=L(e,n);return i.status===`error`?{message:i.message,success:!1,interaction:V(e,t,r)}:i.status===`complete`?vi(i.input,t,r):{message:``,success:!0,interaction:V(i.state,t,r)}}function vi(e,t,n){let r=n.settings.readMergedSettings(),i=r.providers?.[t];if(!i)return{message:`Provider profile "${t}" was not found.`,success:!1};let a=n.settings.readTargetSettings(),o=Pe(e,{providerDefinitions:n.providerDefinitions}).providers[t];if(!o)return{message:`Provider profile "${t}" was not updated.`,success:!1};n.settings.writeTargetSettings(Ut(a,t,{...i,...o}));let s=r.currentProvider===t;return{message:s?`Provider ${t} updated. Restarting...`:`Provider ${t} updated.`,success:!0,...s?{effects:[{...di,message:`Provider edit restart`}]}:{}}}const yi={type:`session-restart-requested`,reason:`other`};function bi(e,t){let n=t.settings.readMergedSettings();if(!n.providers?.[e])return{message:`Provider profile "${e}" was not found.`,success:!1};let r=Oi(e,Object.keys(n.providers));return{message:`Provider duplicate requested: ${e}`,success:!0,interaction:xi(e,r,t)}}function xi(e,t,n){return{prompt:{kind:`text`,title:`Duplicate ${e} as`,placeholder:t,allowEmpty:!0,validate:e=>Si(e,t,n)},submit:r=>Ci(e,r,t,n),cancel:()=>({message:`Provider duplicate cancelled.`,success:!0})}}function Si(e,t,n){let r=ki(e,t);if(r.length===0)return`Required`;if(n.settings.readMergedSettings().providers?.[r]!==void 0)return`Provider profile "${r}" already exists`}function Ci(e,t,n,r){let i=r.settings.readMergedSettings().providers?.[e];if(!i)return{message:`Provider profile "${e}" was not found.`,success:!1};let a=ki(t,n),o=Si(a,n,r);return o===void 0?(r.settings.writeTargetSettings(Ut(r.settings.readTargetSettings(),a,{...i})),{message:`Provider profile duplicated: ${e} -> ${a}.`,success:!0}):{message:o,success:!1}}function wi(e,t){let n=t.settings.readMergedSettings().providers??{};return n[e]?Object.keys(n).length<=1?{message:`Cannot delete the only provider profile.`,success:!1}:t.settings.readTargetSettings().providers?.[e]===void 0?{message:`Provider profile "${e}" is not stored in the active write target; edit its source settings file or override it before deleting.`,success:!1}:{message:`Provider delete requested: ${e}`,success:!0,interaction:Ti(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function Ti(e,t){return{prompt:{kind:`choice`,title:`Delete provider profile ${e}?`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>n===`yes`?Ei(e,t):{message:`Provider delete cancelled.`,success:!0},cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}function Ei(e,t){let n=t.settings.readMergedSettings();if(n.currentProvider!==e)return t.settings.writeTargetSettings(Ye(t.settings.readTargetSettings(),e)),{message:`Provider profile deleted: ${e}.`,success:!0};let r=Object.entries(n.providers??{}).filter(([t])=>t!==e).map(([e,t])=>({value:e,label:fi(e,t,n.currentProvider)}));return{message:`Select a replacement provider before deleting ${e}.`,success:!0,interaction:{prompt:{kind:`choice`,title:`Replacement provider for ${e}`,options:r,maxVisible:8},submit:n=>Di(e,n,t),cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}}function Di(e,t,n){if(n.settings.readMergedSettings().providers?.[t]===void 0||t===e)return{message:`Provider profile "${t}" was not found.`,success:!1};let r=Ye(n.settings.readTargetSettings(),e);return n.settings.writeTargetSettings({...r,currentProvider:t}),{message:`Provider profile deleted: ${e}. Restarting with ${t}...`,success:!0,effects:[{...yi,message:`Provider delete restart`}]}}function Oi(e,t){let n=It(`${e}-copy`)??`provider-copy`;if(!t.includes(n))return n;for(let e=2;e<1e3;e+=1){let r=`${n}-${e}`;if(!t.includes(r))return r}return`${n}-${Date.now()}`}function ki(e,t){return It(e.trim()||t)??``}const Ai=`switch`,ji=`edit`,Mi=`test`,Ni=`duplicate`,Pi=`delete`,Fi=`cancel`;function Ii(e,t,n){return{prompt:{kind:`choice`,title:`Select provider profile`,options:Object.entries(t??{}).map(([t,n])=>({value:t,label:fi(t,n,e)})),maxVisible:8},submit:e=>Li(e,n),cancel:()=>({message:`Provider profile selection cancelled.`,success:!0})}}function Li(e,t){return t.settings.readMergedSettings().providers?.[e]?{message:`Provider profile selected: ${e}`,success:!0,interaction:Ri(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function Ri(e,t){return{prompt:{kind:`choice`,title:`Provider profile: ${e}`,options:[{value:Ai,label:`Switch`},{value:ji,label:`Edit`},{value:Mi,label:`Test`},{value:Ni,label:`Duplicate`},{value:Pi,label:`Delete`},{value:Fi,label:`Cancel`}]},submit:n=>zi(e,n,t),cancel:()=>({message:`Provider profile action cancelled.`,success:!0})}}async function zi(e,t,n){let r=n.settings.readMergedSettings();switch(t){case Ai:return pi(r.providers,e,n);case ji:return hi(e,n);case Mi:return await Ht(r.currentProvider,r.providers,e,n);case Ni:return bi(e,n);case Pi:return wi(e,n);case Fi:return{message:`Provider profile action cancelled.`,success:!0};default:return{message:`Unknown provider profile action "${t}".`,success:!1}}}async function Bi(e,t){let n=t.settings.readMergedSettings(),r=e.trim();if(r.length===0)return Vi(n.currentProvider,n.providers,t);let[i=`current`,a]=r.split(/\s+/);return i===`list`?Vi(n.currentProvider,n.providers,t):i===`current`||i===``?{message:Ui(n.currentProvider,n.providers),success:!0}:i===`use`?pi(n.providers,a,t):i===`test`?await Ht(n.currentProvider,n.providers,a,t):i===`add`?Wi(a,t):{message:`Usage: provider [current|list|use <profile>|add <type>|test [profile]]`,success:!1}}function Vi(e,t,n){let r=Hi(e,t);return Object.keys(t??{}).length===0?{message:r,success:!0}:{message:r,success:!0,interaction:Ii(e,t,n)}}function Hi(e,t){let n=Object.entries(t??{});return n.length===0?`No provider profiles configured.`:n.map(([t,n])=>`${t===e?`*`:`-`} ${t}: ${n.type??`unknown`} ${n.model??`(no model)`}`).join(`
20
+ `)}function Ui(e,t){if(!e)return`No current provider configured.`;let n=t?.[e];return n?[`Current provider: ${e}`,`Type: ${n.type??`unknown`}`,`Model: ${n.model??`(no model)`}`,...n.baseURL?[`Base URL: ${n.baseURL}`]:[]].join(`
21
+ `):`Current provider "${e}" was not found in providers.`}function Wi(e,t){return e===void 0||e.length===0?{message:`Provider setup requested. Select a provider to continue.`,success:!0,interaction:Gi(t)}:d(t.providerDefinitions,e)===void 0?{message:`Usage: provider add <type>. Supported: ${f(t.providerDefinitions)}`,success:!1}:{message:`Provider setup requested: ${e}`,success:!0,interaction:B(oi(e,t),t)}}function Gi(e){return{prompt:{kind:`choice`,title:`Select provider`,options:e.providerDefinitions.map(e=>({value:e.type,label:Qr(e)})),maxVisible:6},submit:t=>{let n=oi(t,e);return{message:`Provider setup requested: ${t}`,success:!0,interaction:B(n,e)}},cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function Ki(){return[{name:`current`,description:`Show current provider`,source:`provider`},{name:`list`,description:`List provider profiles`,source:`provider`},{name:`use`,description:`Switch provider profile`,source:`provider`},{name:`add`,description:`Configure a provider profile`,source:`provider`},{name:`test`,description:`Test provider profile`,source:`provider`}]}function H(){return{name:`provider`,displayName:`Provider Setup`,description:`Manage provider profiles`,source:`provider`,modelInvocable:!1,argumentHint:`current | list | use <profile> | add [type] | test [profile]`,subcommands:Ki()}}var qi=class{name=`provider`;getCommands(){return[H()]}};function Ji(e){let t=H();return{name:t.name,displayName:t.displayName,description:t.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:t.argumentHint,subcommands:t.subcommands,execute:async(t,n)=>Bi(n,e)}}function Yi(e){return{name:`agent-command-provider`,commandSources:[new qi],systemCommands:[Ji(e)]}}async function Xi(e,t,n,r,i){let a=Yr(await n(Jr(i)),i),o=Nt(e,t.settingsScope);De(o,await Xr(a,n,i,{existingProfileNames:Object.keys(u(e).providers??{})}),{providerDefinitions:i});let s=await n(` Response language (ko/en/ja/zh, default: en): `);if(s){let e=Ot(o);e.language=s,qt(o,e)}r.writeLine(`\n Config saved to ${o}\n`)}async function Zi(e,t,n,r,i,a){let o=u(e);if(Re(t.provider===void 0?o:{...o,currentProvider:t.provider},i)===`valid`)return;if(!(a.isInteractive??(()=>!1))())throw Error(a.formatError(i));await Xi(e,Qi(e,t),n,r,i);let s=u(e);if(Re(t.provider===void 0?s:{...s,currentProvider:t.provider},i)!==`valid`)throw Error(a.formatError(i))}function Qi(e,t){if(t.settingsScope!==void 0||t.provider!==void 0)return t;let n=$i(at(e));if(n===void 0)return t;let r=p(e,`.robota`,`settings.json`),i=p(e,`.robota`,`settings.local.json`);return n===r||n===i?{...t,settingsScope:`project-local`}:t}function $i(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&typeof Ot(n).currentProvider==`string`)return n}}function ea(e,t){return{success:!0,message:`Reset requested.`,data:{resetRequested:!0},effects:[{type:`settings-reset-requested`}]}}function U(){return{name:`reset`,displayName:`Reset Settings`,description:`Delete settings`,source:`reset`,modelInvocable:!1}}function ta(){let e=U();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!0,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:ea}}var na=class{name=`reset`;getCommands(){return[U()]}};function ra(){return{name:`agent-command-reset`,commandSources:[new na],systemCommands:[ta()]}}function W(){return{message:`Usage: rewind [list] | rewind inspect <checkpoint-id> | rewind restore <checkpoint-id> | rewind code <checkpoint-id> | rewind rollback <checkpoint-id>`,success:!1}}function ia(e){let t=e.replace(/\s+/g,` `).trim();return t.length<=120?t:`${t.slice(0,117)}...`}function aa(e){return{message:[`Edit checkpoints:`,...e.length>0?e.map(e=>`- ${e.id} files=${e.fileCount} ${e.createdAt} ${ia(e.prompt)}`):[`(no edit checkpoints)`]].join(`
22
+ `),success:!0,data:{count:e.length,checkpoints:[...e]}}}function oa(e){return e.length>0?e.join(`, `):`(none)`}function sa(e){let t=e.capturedFiles.length>0?e.capturedFiles.map(e=>{let t=e.snapshotSizeBytes===void 0?``:` size=${e.snapshotSizeBytes}B`;return`- ${e.relativePath} action=${e.restoreAction} snapshot=${String(e.snapshotAvailable)}${t}`}):[`(no files captured)`];return{message:[`Checkpoint ${e.target.id}`,`Prompt: ${ia(e.target.prompt)}`,`Captured files:`,...t,`Restore later checkpoints: files=${e.restoreToCheckpoint.fileCount} checkpoints=${oa(e.restoreToCheckpoint.checkpointIds)}`,`Rollback through checkpoint: files=${e.rollbackThroughCheckpoint.fileCount} checkpoints=${oa(e.rollbackThroughCheckpoint.checkpointIds)}`].join(`
23
+ `),success:!0,data:{inspection:e}}}function ca(e){return{message:[`Restored code to ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Rolled back checkpoints: ${e.restoredCheckpointCount}`].join(`
24
+ `),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function la(e){return{message:[`Rolled back code through ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Removed checkpoints: ${e.removedCheckpointCount}`].join(`
25
+ `),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function G(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function ua(e,t){if(!t)return W();try{return sa(st(e,t))}catch(e){return G(e instanceof Error?e:String(e))}}async function da(e,t){if(!t)return W();try{return ca(await Pt(e,t))}catch(e){return G(e instanceof Error?e:String(e))}}async function fa(e,t){if(!t)return W();try{return la(await Ft(e,t))}catch(e){return G(e instanceof Error?e:String(e))}}async function pa(e,t){let n=t.trim().split(/\s+/).filter(Boolean),r=n[0]??`list`;return r===`list`?aa(pt(e)):r===`inspect`?ua(e,n[1]):r===`restore`||r===`code`?da(e,n[1]):r===`rollback`?fa(e,n[1]):W()}function ma(){return{name:`rewind`,displayName:`Rewind History`,description:xe,source:`rewind`,argumentHint:be,modelInvocable:!1,safety:`write`,subcommands:Fe()}}function ha(){let e=ma();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,argumentHint:e.argumentHint,userInvocable:!0,modelInvocable:!1,safety:`write`,subcommands:e.subcommands,execute:pa}}var ga=class{name=`rewind`;getCommands(){return[ma()]}};function _a(){return{name:`agent-command-rewind`,commandSources:[new ga],systemCommands:[ha()]}}const va=`Conversation cleared.`;function ya(e,t){return Be(e),{success:!0,message:va,effects:[{type:`conversation-history-cleared`}]}}function ba(e,t){let n=bt(t);return n===void 0?{success:!1,message:ve}:{success:!0,message:`Session renamed to "${n}".`,data:{name:n},effects:[Je(n)]}}function xa(e,t){return{success:!0,message:`Opening session picker...`,data:{triggerResumePicker:!0},effects:[qe()]}}function Sa(e,t){let n=Dt(e);return{success:!0,message:`Session: ${n.sessionId}\nMessages: ${n.messageCount}`,data:{sessionId:n.sessionId,messageCount:n.messageCount}}}function Ca(e,t){let n=Wt(e);return{success:n.validation.ok,message:tt(n),data:{logFile:n.logFile,entryCount:n.entryCount,issueCount:n.validation.issues.length,ok:n.validation.ok}}}function K(){return{name:`clear`,displayName:`Clear History`,description:i,source:`session`,modelInvocable:!1}}function q(){return{name:`rename`,displayName:`Rename Session`,description:_e,source:`session`,modelInvocable:!1}}function J(){return{name:`resume`,displayName:`Resume Session`,description:ye,source:`session`,modelInvocable:!1}}function Y(){return{name:`cost`,displayName:`Session Cost`,description:a,source:`session`,modelInvocable:!1}}function X(){return{name:`validate-session`,displayName:`Validate Session`,description:Te,source:`session`,modelInvocable:!1}}function wa(){let e=K();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:ya}}function Ta(){let e=q();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:ba}}function Ea(){let e=J();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:xa}}function Da(){let e=Y();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Sa}}function Oa(){let e=X();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Ca}}var ka=class{name=`session`;getCommands(){return[K(),q(),J(),Y(),X()]}};function Aa(){return{name:`agent-command-session`,commandSources:[new ka],systemCommands:[wa(),Ta(),Ea(),Da(),Oa()]}}function Z(){return{name:`settings`,displayName:`Settings`,description:`Open transport settings — enable/disable transports and configure options`,source:`settings`,modelInvocable:!1}}function ja(){let e=Z();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:async()=>({success:!0,message:`Opening settings...`,effects:[{type:`settings-tui-requested`}]})}}var Ma=class{name=`settings`;getCommands(){return[Z()]}};function Na(){return{name:`agent-command-settings`,commandSources:[new Ma],systemCommands:[ja()]}}const Pa=`Skill command. Before following a matching registered skill from the system prompt Skills section, invoke the projected skills command tool with args "<skill-name> [args]". Without arguments, list registered skills. With a skill name, activate that skill. Slash syntax is a UI input/display concern; the SDK command identity is "skills".`;function Fa(e){let t=[];return e.modelInvocable||t.push(`model-disabled`),e.userInvocable||t.push(`model-only`),e.context&&t.push(`context:${e.context}`),e.agent&&t.push(`agent:${e.agent}`),t.length>0?` [${t.join(`, `)}]`:``}function Ia(e){let t=e.argumentHint?` ${e.argumentHint}`:``;return`- ${e.name}${t}: ${e.description}${Fa(e)}`}function La(e){return e.length===0?[`No skills are registered for this session.`,``,`Skills are metadata until activated. Do not invent or imitate a skill workflow when no matching registered skill exists.`].join(`
26
+ `):[`Registered skills:`,...e.map(Ia),``,`Activation contract:`,`- Use /skills <skill-name> [args] to activate a matching skill.`,`- Treat /<skill-name> as a virtual alias for /skills <skill-name>.`,`- The system prompt Skills section is skill selection metadata.`,`- Treat descriptions as selection metadata only, not as loaded SKILL.md content.`,`- Do not answer by merely naming, recommending, or imitating a matching skill.`,`- If no listed skill matches the task, continue without claiming a skill was activated.`].join(`
27
+ `)}function Ra(e){let t=e.trim();if(t.length===0||t===`list`)return{action:`list`,skillArgs:``};let[n=``,...r]=t.split(/\s+/);return n.length===0?{action:`list`,skillArgs:``}:{action:`activate`,skillName:n,skillArgs:r.join(` `)}}async function za(e,t=``){let n=Ra(t);if(n.action===`activate`&&n.skillName!==void 0){if(!e.executeSkillCommandByName)return{success:!1,message:`Skill activation is not available in this session.`};let t=`/${n.skillName}${n.skillArgs?` ${n.skillArgs}`:``}`;return await e.executeSkillCommandByName(n.skillName,n.skillArgs,{invocationSource:e.getCommandInvocationSource?.()??`user`,displayInput:t,rawInput:t})??{success:!1,message:`Unknown skill: ${n.skillName}`}}let r=e.listSkills?.()??[];return{success:!0,message:La(r),data:{skills:r,activationContract:{activateWith:`/skills <skill-name> [args]`,activationRequiredBeforeWorkflow:!0,metadataIsNotSkillContent:!0}}}}function Ba(){return{name:`skills`,displayName:`Skills`,description:Pa,source:`skills`,modelInvocable:!0,userInvocable:!0,argumentHint:`[list | <skill-name> [args]]`,safety:`read-only`}}function Va(){let e=Ba();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!0,argumentHint:e.argumentHint,safety:e.safety,lifecycle:`inline`,execute:za}}var Ha=class{name=`skills`;getCommands(){return[Ba()]}};function Ua(e){let t=[new Ha];return t.push(new we(e.cwd)),{name:`agent-command-skills`,commandSources:t,systemCommands:[Va()]}}const Wa=[`Usage: /statusline on | off | reset | git on | git off`,`Fields: model, context, permission mode, message count, session name, thinking state, git branch.`].join(`
28
+ `);function Ga(e){let t=e.trim().toLowerCase().split(/\s+/).filter(e=>e.length>0),[n,r]=t;return n===`on`&&r===void 0?{success:!0,message:`Status line enabled.`,patch:{enabled:!0}}:n===`off`&&r===void 0?{success:!0,message:`Status line disabled.`,patch:{enabled:!1}}:n===`reset`&&r===void 0?{success:!0,message:`Status line settings reset.`,patch:{...s}}:n===`git`&&r===`on`&&t.length===2?{success:!0,message:`Status line git branch shown.`,patch:{gitBranch:!0}}:n===`git`&&r===`off`&&t.length===2?{success:!0,message:`Status line git branch hidden.`,patch:{gitBranch:!1}}:{success:!1,message:Wa}}function Ka(e,t){let n=Ga(t);return n.success?{success:!0,message:n.message,effects:[{type:`statusline-settings-patch`,patch:n.patch}]}:{success:!1,message:n.message}}function qa(){return{name:`statusline`,displayName:`Status Line`,description:Ce,source:`statusline`,argumentHint:Se,subcommands:Ie(`statusline`),modelInvocable:!1}}function Ja(){let e=qa();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,subcommands:e.subcommands,lifecycle:`inline`,execute:Ka}}var Ya=class{name=`statusline`;getCommands(){return[qa()]}};function Xa(){return{name:`agent-command-statusline`,commandSources:[new Ya],systemCommands:[Ja()]}}const Za=`Inspect Robota user-local storage and memory state.`,Qa=`storage list [--format json] | memory set/list/inspect/disable/delete`,Q=`Usage: user-local storage list [--format json] | user-local memory set <category> <key> <value> --summary <summary> --source <source> | user-local memory list [--format json] | user-local memory inspect <category> <key> [--format json] | user-local memory disable <category> <key> | user-local memory delete <category> <key>`;function $a(e){return e.length===0?`No user-local memory items.`:e.map(e=>`- ${e.category}/${e.key} (${e.enabled?`enabled`:`disabled`})`).join(`
29
+ `)}function $(e){if(e===void 0)throw Error(`User-local memory category is required.`);return e}async function eo(e,t){let n=await ht({activeRepositoryRoot:e});return{message:t.format===`json`?JSON.stringify(n,null,2):$a(n.items),success:!0,data:{list:n}}}async function to(e,t){let[n,r,i]=t.positional,a=await zt({activeRepositoryRoot:e,category:$(n),key:r??``,value:i??``,summary:t.summary??``,source:t.source??``});return{message:`Stored user-local memory item ${a.category}/${a.key} at ${a.storageLocation}`,success:!0,data:{item:a}}}async function no(e,t){let[n,r]=t.positional,i=await ct({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:t.format===`json`?JSON.stringify(i,null,2):`${i.category}/${i.key}: ${i.summary}`,success:!0,data:{item:i}}}async function ro(e,t){let[n,r]=t.positional,i=await Ze({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:`Disabled user-local memory item ${i.category}/${i.key}`,success:!0,data:{item:i}}}async function io(e,t){let[n,r]=t.positional,i=await Xe({activeRepositoryRoot:e,category:$(n),key:r??``});return{message:`Deleted user-local memory item ${i.category}/${i.key}`,success:!0,data:{result:i}}}async function ao(e,t){return(t.action??`list`)===`list`?eo(e,t):t.action===`set`?to(e,t):t.action===`inspect`?no(e,t):t.action===`disable`?ro(e,t):t.action===`delete`?io(e,t):{message:Q,success:!1}}function oo(e){if(e===void 0||e===`text`)return`text`;if(e===`json`)return`json`;throw Error(`Unsupported user-local output format: ${e}`)}function so(e,t,n){return e===`--format`?{format:t[n+1],nextIndex:n+1}:e.startsWith(`--format=`)?{format:e.slice(9),nextIndex:n}:e===`--summary`?{summary:t[n+1],nextIndex:n+1}:e.startsWith(`--summary=`)?{summary:e.slice(10),nextIndex:n}:e===`--source`?{source:t[n+1],nextIndex:n+1}:e.startsWith(`--source=`)?{source:e.slice(9),nextIndex:n}:null}function co(e,t={}){let n=t.format,r=t.summary,i=t.source,a=[];for(let t=0;t<e.length;t+=1){let o=e[t],s=so(o,e,t);if(s!==null){n=s.format??n,r=s.summary??r,i=s.source??i,t=s.nextIndex;continue}a.push(o)}return{target:a[0],action:a[1],positional:a.slice(2),format:oo(n),summary:r,source:i}}function lo(e){return e.trim().split(/\s+/).filter(Boolean)}function uo(e,t){let n=t.map(e=>`- ${e.category}`);return[`User-local storage root: ${e}`,`Categories:`,...n].join(`
30
+ `)}async function fo(e,t){if((t.action??`list`)!==`list`)return{message:Q,success:!1};let n=await lt({activeRepositoryRoot:e});return{message:t.format===`json`?JSON.stringify(n,null,2):uo(n.root,n.categories),success:!0,data:{root:n.root,categories:n.categories,inspection:n}}}async function po(e,t){return t.target===`storage`?fo(e,t):t.target===`memory`?ao(e,t):{message:Q,success:!1}}function mo(e){return e.includes(`ENOENT`)?`User-local memory item not found.`:e}async function ho(e){try{return await po(e.cwd,co(e.argv,{format:e.format,summary:e.summary,source:e.source}))}catch(e){return{message:mo(e instanceof Error?e.message:String(e)),success:!1}}}async function go(e,t){try{return await po(e.getCwd(),co(lo(t)))}catch(e){return{message:mo(e instanceof Error?e.message:String(e)),success:!1}}}function _o(){return{name:`user-local`,displayName:`User Config`,description:Za,source:`user-local`,argumentHint:Qa,modelInvocable:!1,safety:`read-only`,subcommands:[{name:`storage`,description:`Inspect user-local storage categories`,source:`user-local`},{name:`memory`,description:`Inspect and manage user-local memory items`,source:`user-local`}]}}function vo(){let e=_o();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:e.argumentHint,safety:e.safety,subcommands:e.subcommands,execute:go}}var yo=class{name=`user-local`;getCommands(){return[_o()]}};function bo(){return{name:`agent-command-user-local`,commandSources:[new yo],systemCommands:[vo()]}}function xo({cwd:e,providerDefinitions:t,providerSettingsAdapter:n}){return[Ua({cwd:e}),rr(),Sn(),Or({providerDefinitions:t,settings:{readMergedSettings:()=>n.readMergedSettings()}}),Nr(),Cr(),sr(),Dn(),yr(),bo(),Mn(),qn(),Qn(),Aa(),ra(),_a(),Xa(),qr(),Na(),Yi({providerDefinitions:t,settings:n})]}function So(e){let t=Yt(),i=p(t,`.robota`,`plugins`),a=p(t,`.robota`,`settings.json`),o=(e,t)=>Jt(e,{timeout:t.timeout,stdio:t.stdio??`pipe`}),s=new he(a),c=new ce({pluginsDir:i,exec:o});return{cwd:e,marketplace:c,installer:new n({pluginsDir:i,settingsStore:s,marketplaceClient:c,exec:o}),loader:new r(i),settingsStore:s}}async function Co(e){let t=await e.loader.loadAll(),n=e.settingsStore.getEnabledPlugins();return t.map(e=>{let t=e.pluginDir.split(`/`),r=t.indexOf(`cache`),i=r>=0?t[r+1]??``:``,a=i?`${e.manifest.name}@${i}`:e.manifest.name;return{name:a,description:e.manifest.description,enabled:n[a]!==!1&&n[e.manifest.name]!==!1}})}async function wo(e,t){let n;try{n=e.marketplace.fetchManifest(t)}catch{return[]}let r=e.installer.getInstalledPlugins(),i=new Set(Object.values(r).map(e=>e.pluginName));return n.plugins.map(e=>({name:e.name,description:e.description,installed:i.has(e.name)}))}async function To(e,t,r){let[i,a]=t.split(`@`);if(!i||!a)throw Error(`Plugin ID must be in format: name@marketplace`);if(r===`project`){await new n({pluginsDir:p(e.cwd,`.robota`,`plugins`),settingsStore:e.settingsStore,marketplaceClient:e.marketplace,exec:(e,t)=>Jt(e,{timeout:t.timeout,stdio:t.stdio??`pipe`})}).install(i,a);return}await e.installer.install(i,a)}async function Eo(e,t){let n=e.installer.getPluginsByMarketplace(t);for(let t of n)await e.installer.uninstall(`${t.pluginName}@${t.marketplace}`);e.marketplace.removeMarketplace(t)}function Do(e){return e.marketplace.listMarketplaces().map(e=>({name:e.name,type:e.source.type}))}function Oo(e){let t=So(e);return{listInstalled:()=>Co(t),listAvailablePlugins:e=>wo(t,e),install:(e,n)=>To(t,e,n),uninstall:async e=>t.installer.uninstall(e),enable:async e=>t.installer.enable(e),disable:async e=>t.installer.disable(e),marketplaceAdd:async e=>e.includes(`/`)&&!e.includes(`:`)?t.marketplace.addMarketplace({type:`github`,repo:e}):t.marketplace.addMarketplace({type:`git`,url:e}),marketplaceRemove:e=>Eo(t,e),marketplaceUpdate:async e=>t.marketplace.updateMarketplace(e),marketplaceList:async()=>Do(t),reloadPlugins:async()=>({loadedPluginCount:(await t.loader.loadAll()).length})}}const ko=`plugin`;function Ao(){return process.env.HOME??Yt()}function jo(e){let t=new r(p(Ao(),`.robota`,`plugins`));try{let n=t.loadPluginsSync();return n.length===0?(e.replaceSource(ko),0):(e.replaceSource(ko,new me(n)),n.length)}catch{return e.replaceSource(ko),0}}export{xn as AgentCommandSource,En as BackgroundCommandSource,va as CLEAR_COMMAND_MESSAGE,jn as CompactCommandSource,Kn as ContextCommandSource,Zn as ExitCommandSource,nr as HelpCommandSource,or as LanguageCommandSource,vr as MemoryCommandSource,Sr as ModeCommandSource,Dr as ModelCommandSource,Mr as PermissionsCommandSource,Kr as PluginManagerCommandSource,qi as ProviderCommandSource,ga as RewindCommandSource,Pa as SKILLS_COMMAND_DESCRIPTION,Wa as STATUSLINE_USAGE,ka as SessionCommandSource,Ma as SettingsCommandSource,Ha as SkillsCommandSource,Ya as StatusLineCommandSource,Qa as USER_LOCAL_COMMAND_ARGUMENT_HINT,Za as USER_LOCAL_COMMAND_DESCRIPTION,Q as USER_LOCAL_COMMAND_USAGE,yo as UserLocalCommandSource,g as createAgentCommandEntry,Sn as createAgentCommandModule,bn as createAgentSystemCommand,_ as createBackgroundCommandEntry,Dn as createBackgroundCommandModule,K as createClearCommandEntry,v as createCompactCommandEntry,Mn as createCompactCommandModule,Wn as createContextCommandEntry,qn as createContextCommandModule,Y as createCostCommandEntry,xo as createDefaultCommandModules,Oo as createDefaultPluginCommandAdapter,Yn as createExitCommandEntry,Qn as createExitCommandModule,er as createHelpCommandEntry,rr as createHelpCommandModule,C as createLanguageCommandEntry,sr as createLanguageCommandModule,E as createMemoryCommandEntry,yr as createMemoryCommandModule,D as createModeCommandEntry,Cr as createModeCommandModule,O as createModelCommandEntry,Or as createModelCommandModule,k as createPermissionsCommandEntry,Nr as createPermissionsCommandModule,N as createPluginCommandEntry,qr as createPluginCommandModule,H as createProviderCommandEntry,Yi as createProviderCommandModule,F as createProviderSetupFlow,P as createReloadPluginsCommandEntry,q as createRenameCommandEntry,U as createResetCommandEntry,ra as createResetCommandModule,J as createResumeCommandEntry,_a as createRewindCommandModule,Aa as createSessionCommandModule,Z as createSettingsCommandEntry,Na as createSettingsCommandModule,Ba as createSkillsCommandEntry,Ua as createSkillsCommandModule,qa as createStatusLineCommandEntry,Xa as createStatusLineCommandModule,_o as createUserLocalCommandEntry,bo as createUserLocalCommandModule,X as createValidateSessionCommandEntry,Zi as ensureProviderConfig,gn as executeAgentCommand,wn as executeBackgroundCommand,ya as executeClearCommand,kn as executeCompactCommand,Fn as executeContextCommand,Sa as executeCostCommand,Jn as executeExitCommand,$n as executeHelpCommand,ir as executeLanguageCommand,gr as executeMemoryCommand,br as executeModeCommand,Tr as executeModelCommand,Ar as executePermissionsCommand,Hr as executePluginCommand,Bi as executeProviderCommand,Ur as executeReloadPluginsCommand,ba as executeRenameCommand,ea as executeResetCommand,xa as executeResumeCommand,pa as executeRewindCommand,za as executeSkillsCommand,Ka as executeStatusLineCommand,go as executeUserLocalCommand,ho as executeUserLocalDirectCommand,Ca as executeValidateSessionCommand,Qr as formatProviderSetupChoiceLabel,R as formatProviderSetupHelpLinks,Zr as formatProviderSetupPromptLabel,Jr as formatProviderSetupSelectionPrompt,I as getProviderSetupStep,jo as reloadPluginCommandSource,Yr as resolveProviderSetupSelection,Xr as runProviderSetupPromptFlow,Xi as runProviderStartupSetup,L as submitProviderSetupValue,z as validateProviderSetupValue};
31
31
  //# sourceMappingURL=index.js.map