@robota-sdk/agent-command 3.0.0-beta.65 → 3.0.0-beta.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/node/index.cjs +28 -28
- package/dist/node/index.d.ts +35 -5
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +28 -28
- package/dist/node/index.js.map +1 -1
- package/package.json +5 -3
- package/src/agent/agent-command-module.ts +2 -1
- package/src/agent/agent-command.ts +4 -2
- package/src/background/background-command-module.ts +7 -5
- package/src/background/background-command.ts +2 -1
- package/src/compact/compact-command-module.ts +2 -1
- package/src/compact/compact-command.ts +2 -1
- package/src/context/context-command-module.ts +2 -1
- package/src/context/context-command.ts +7 -6
- package/src/default/default-command-modules.ts +64 -0
- package/src/default/index.ts +2 -0
- package/src/exit/exit-command-module.ts +4 -2
- package/src/exit/exit-command.ts +2 -1
- package/src/help/help-command-module.ts +4 -2
- package/src/help/help-command.ts +2 -1
- package/src/index.ts +3 -0
- package/src/language/language-command-module.ts +8 -6
- package/src/language/language-command.ts +2 -1
- package/src/memory/memory-command-module.ts +8 -6
- package/src/memory/memory-command.ts +9 -8
- package/src/mode/mode-command-module.ts +8 -6
- package/src/mode/mode-command.ts +2 -1
- package/src/model/model-command-module.ts +8 -6
- package/src/model/model-command.ts +2 -1
- package/src/permissions/permissions-command-module.ts +8 -6
- package/src/permissions/permissions-command.ts +2 -1
- package/src/plugin/plugin-command-module.ts +8 -6
- package/src/plugin/plugin-command.ts +6 -5
- package/src/plugins/default-plugin-command-adapter.ts +164 -0
- package/src/plugins/default-plugin-command-source-loader.ts +31 -0
- package/src/provider/__tests__/provider-setup-flow.test.ts +204 -3
- package/src/provider/index.ts +2 -0
- package/src/provider/provider-command-execution.ts +11 -6
- package/src/provider/provider-command-module.ts +2 -1
- package/src/provider/provider-command-profile-lifecycle.ts +11 -6
- package/src/provider/provider-command-profile-operations.ts +11 -9
- package/src/provider/provider-command-profile.ts +12 -10
- package/src/provider/provider-command-setup.ts +10 -8
- package/src/provider/provider-setup-flow.ts +3 -2
- package/src/provider/provider-startup.ts +117 -0
- package/src/reset/reset-command-module.ts +2 -1
- package/src/rewind/rewind-command-module.ts +8 -6
- package/src/rewind/rewind-command.ts +7 -6
- package/src/session/session-command-module.ts +8 -6
- package/src/session/session-command.ts +2 -1
- package/src/skills/skills-command-module.ts +7 -7
- package/src/statusline/statusline-command-module.ts +8 -6
- package/src/statusline/statusline-command.ts +2 -1
- package/src/user-local/user-local-command-module.ts +6 -5
- package/src/user-local/user-local-command.ts +4 -2
- package/src/user-local/user-local-memory-command.ts +3 -1
package/dist/node/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import{BACKGROUND_COMMAND_DESCRIPTION as e,BACKGROUND_COMMAND_USAGE as t,
|
|
2
|
-
`),success:!0,data:{agents:t.length,jobs:n.length}}}function
|
|
3
|
-
`),success:!0,data:{agentIds:a.map(e=>e.id),groupId:o.id}}}async function
|
|
4
|
-
`)}${o}`:`No log lines: ${n}`,success:!0,data:{agentId:n,nextOffset:a.nextCursor?.offset}}}async function
|
|
5
|
-
`)}function
|
|
6
|
-
`)}${n}`:`No log lines: ${i}`,success:!0,data:{taskId:i,nextOffset:t.nextCursor?.offset}}}return r===`cancel`||r===`stop`?(await
|
|
7
|
-
`);function
|
|
8
|
-
`),success:!0,data:{usedTokens:r.usedTokens,maxTokens:r.maxTokens,percentage:r.usedPercentage,autoCompactThreshold:i,autoCompactThresholdSource:a,references:
|
|
9
|
-
`),data:{autoCompactThreshold:t,autoCompactThresholdSource:n}}}if(n===`on`)return
|
|
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
|
|
12
|
-
`),data:{references:e}}}function
|
|
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
|
|
15
|
-
`),success:!0,data:{count:t.length}}}function
|
|
16
|
-
`),success:!0,data:{count:t.length,references:[...t]}}}function
|
|
17
|
-
`)}`}):
|
|
18
|
-
`)}function
|
|
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
|
|
21
|
-
`):`Current provider "${e}" was not found in providers.`}function
|
|
22
|
-
`),success:!0,data:{count:e.length,checkpoints:[...e]}}}function
|
|
23
|
-
`),success:!0,data:{inspection:e}}}function
|
|
24
|
-
`),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function
|
|
25
|
-
`),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function
|
|
26
|
-
`):[`Registered skills:`,...e.map(
|
|
27
|
-
`)}function
|
|
28
|
-
`);function
|
|
29
|
-
`)}function $(e){if(e===void 0)throw Error(`User-local memory category is required.`);return e}async function
|
|
30
|
-
`)}async function
|
|
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
|