@robota-sdk/agent-command 3.0.0-beta.67 → 3.0.0-beta.69
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 +0 -1
- package/dist/node/index.cjs +57 -28
- package/dist/node/index.d.ts +3 -16
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +57 -28
- package/dist/node/index.js.map +1 -1
- package/package.json +3 -3
- package/src/compact/__tests__/compact-command-module.test.ts +13 -4
- package/src/compact/compact-command-module.ts +2 -0
- package/src/compact/compact-command.ts +11 -4
- package/src/context/__tests__/context-command-module.test.ts +42 -0
- package/src/default/default-command-modules.ts +0 -5
- package/src/help/__tests__/help-command.test.ts +119 -0
- package/src/index.ts +0 -1
- package/src/provider/__tests__/org-policy.test.ts +165 -0
- package/src/provider/__tests__/provider-command-module.test.ts +18 -29
- package/src/provider/__tests__/provider-setup-flow.test.ts +2 -2
- package/src/provider/provider-command-execution.ts +2 -2
- package/src/provider/provider-command-module.ts +4 -2
- package/src/provider/provider-command-profile-operations.ts +37 -49
- package/src/provider/provider-onboarding.ts +64 -0
- package/src/provider/provider-setup-flow.ts +11 -2
- package/src/provider/provider-startup.ts +15 -3
- package/src/session/__tests__/model-pricing.test.ts +64 -0
- package/src/session/__tests__/session-command-module.test.ts +51 -7
- package/src/session/model-pricing.ts +79 -0
- package/src/session/session-command.ts +124 -8
- package/src/model/__tests__/model-command-module.test.ts +0 -273
- package/src/model/index.ts +0 -6
- package/src/model/model-command-module.ts +0 -70
- package/src/model/model-command.ts +0 -41
package/README.md
CHANGED
|
@@ -38,7 +38,6 @@ const modules = [
|
|
|
38
38
|
| `/language` | Language switching |
|
|
39
39
|
| `/memory` | Memory read/write |
|
|
40
40
|
| `/mode` | Interaction mode switching |
|
|
41
|
-
| `/model` | AI model selection |
|
|
42
41
|
| `/permissions` | Permission management |
|
|
43
42
|
| `/plugin` | Plugin enable/disable |
|
|
44
43
|
| `/provider` | AI provider configuration |
|
package/dist/node/index.cjs
CHANGED
|
@@ -1,30 +1,59 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@robota-sdk/agent-framework`),t=require(`@robota-sdk/agent-core`),n=require(`node:path`),r=require(`node:
|
|
2
|
-
`),success:!0,data:{agents:t.length,jobs:n.length}}}function
|
|
3
|
-
`),success:!0,data:{agentIds:o.map(e=>e.id),groupId:s.id}}}async function
|
|
4
|
-
`)}${o}`:`No log lines: ${n}`,success:!0,data:{agentId:n,nextOffset:a.nextCursor?.offset}}}async function
|
|
5
|
-
`)}function
|
|
6
|
-
`)}${r}`:`No log lines: ${i}`,success:!0,data:{taskId:i,nextOffset:n.nextCursor?.offset}}}return r===`cancel`||r===`stop`?(await(0,e.cancelCommandBackgroundTask)(t,i,a.join(` `)||void 0),{message:`Background task cancelled: ${i}`,success:!0,data:{taskId:i}}):r===`close`||r===`dismiss`?(await(0,e.closeCommandBackgroundTask)(t,i),{message:`Background task closed: ${i}`,success:!0,data:{taskId:i}}):{message:`Unknown background action: ${r}`,success:!1}}function
|
|
7
|
-
`)
|
|
8
|
-
`)
|
|
9
|
-
`),data:{autoCompactThreshold:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@robota-sdk/agent-framework`),t=require(`@robota-sdk/agent-core`),n=require(`node:path`),r=require(`node:fs`),i=require(`node:child_process`),a=require(`node:os`);function o(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 s(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 c(e,t,n,r){return{agentType:t,label:n,mode:`background`,prompt:r,...e.model?{model:e.model}:{},...e.isolation?{isolation:e.isolation}:{}}}function l(e,t){let n=s(e),[r,...i]=n.positional,a=n.agentType??`general-purpose`,o=n.positional;!n.agentType&&r&&t.has(r)&&(a=r,o=i);let l=o.join(` `).trim();if(l)return c(n,a,a,l)}function u(e,t){let n=s(e);return n.positional.map(e=>ee(e,n,t)).filter(e=>e!==void 0)}function ee(e,t,n){let r=e.indexOf(`=`);if(r>0)return te(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 c(t,t.agentType??(n.has(a)?a:`general-purpose`),a,o)}function te(e,t,n,r){let i=t.indexOf(`:`);if(i===-1)return c(n,n.agentType??(r.has(e)?e:`general-purpose`),e,t);if(!(i===0||i===t.length-1))return c(n,t.slice(0,i),e,t.slice(i+1))}function d(e){return e instanceof Error?e.message:String(e)}function ne(e){return new Set(e.listAgentDefinitions().map(e=>e.name))}function re(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 ie(e,t){let n=re(e,t.agentType);if(n)return n;try{return{state:await e.spawnAgentJob(t)}}catch(e){return{message:d(e),success:!1}}}function ae(){return{message:``,effects:[{type:`agent-switcher-requested`}],success:!0}}async function oe(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=>` ${se(e)}`)].join(`
|
|
2
|
+
`),success:!0,data:{agents:t.length,jobs:n.length}}}function se(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 ce(e,t){let n=l(t,ne(e));if(!n)return{message:`Usage: agent run [AGENT_NAME] [--agent AGENT_NAME] PROMPT`,success:!1};let r=await ie(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 le(t,n){let r=n.includes(`--wait`)||!n.includes(`--detach`),i=u(n.filter(e=>e!==`--wait`&&e!==`--detach`),ne(t));if(i.length===0)return{message:`Usage: agent parallel [--wait|--detach] LABEL:"PROMPT" [LABEL=AGENT_NAME:"PROMPT"]`,success:!1};let a=i.map(e=>re(t,e.agentType)).find(e=>e!==void 0);if(a)return a;let o;try{o=await Promise.all(i.map(e=>t.spawnAgentJob(e)))}catch(e){return{message:d(e),success:!1}}let s=t.createBackgroundJobGroup({waitPolicy:`wait_all`,taskIds:o.map(e=>e.id),label:`agent parallel`});if(r){let n=(0,e.summarizeBackgroundJobGroup)(await t.waitBackgroundJobGroup(s.id));return{message:ge(n),success:!0,data:{agentIds:o.map(e=>e.id),groupId:s.id,summary:n}}}return{message:[`Started agent jobs:`,...o.map(e=>`${e.label}: ${e.id}`)].join(`
|
|
3
|
+
`),success:!0,data:{agentIds:o.map(e=>e.id),groupId:s.id}}}async function ue(t,n){let[r]=n;if(!r)return{message:`Usage: agent wait GROUP_ID`,success:!1};let i=(0,e.summarizeBackgroundJobGroup)(await t.waitBackgroundJobGroup(r));return{message:ge(i),success:!0,data:{groupId:r,summary:i}}}async function de(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 fe(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 pe(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 me(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 he(e,t){try{if(t.trim()===``)return ae();let[n=`list`,...r]=o(t);return n===`list`&&r.length===0?oe(e):n===`run`?ce(e,r):n===`parallel`?le(e,r):n===`wait`?ue(e,r):n===`read`||n===`open`?de(e,r):n===`send`?fe(e,r):n===`stop`||n===`cancel`?pe(e,r):n===`close`?me(e,r):ce(e,[n,...r])}catch(e){return{message:d(e),success:!1}}}function ge(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 _e(e){let t=e.getAgentJobCapability?.();if(!t)throw Error(`Agent job capability is not available in this context.`);return t}function ve(){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 f(){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:ve()}}function ye(){let e=f();return{name:e.name,...e.displayName===void 0?{}:{displayName:e.displayName},description:e.description,requiresPermission:!1,execute:(e,t)=>he(_e(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 be=class{name=`agent`;getCommands(){return[f()]}};function xe(){return{name:`agent-command-agent`,commandSources:[new be],systemCommands:[ye()],sessionRequirements:[`agent-runtime`]}}function Se(e){return e.trim().split(/\s+/).filter(Boolean)}async function Ce(t,n){let[r=`list`,i,...a]=Se(n);if(r===`list`){let n=(0,e.listCommandBackgroundTasks)(t);return{message:(0,e.formatCommandBackgroundTaskList)(n),success:!0,data:{count:n.length}}}if(!i)return{message:e.BACKGROUND_COMMAND_USAGE,success:!1};if(r===`read`||r===`log`||r===`open`){let n=await(0,e.readCommandBackgroundTaskLog)(t,i,(0,e.parseCommandBackgroundLogCursor)(a[0])),r=n.nextCursor?`\nNext offset: ${n.nextCursor.offset}`:``;return{message:n.lines.length>0?`${n.lines.join(`
|
|
6
|
+
`)}${r}`:`No log lines: ${i}`,success:!0,data:{taskId:i,nextOffset:n.nextCursor?.offset}}}return r===`cancel`||r===`stop`?(await(0,e.cancelCommandBackgroundTask)(t,i,a.join(` `)||void 0),{message:`Background task cancelled: ${i}`,success:!0,data:{taskId:i}}):r===`close`||r===`dismiss`?(await(0,e.closeCommandBackgroundTask)(t,i),{message:`Background task closed: ${i}`,success:!0,data:{taskId:i}}):{message:`Unknown background action: ${r}`,success:!1}}function we(){return{name:`background`,displayName:`Background Tasks`,description:e.BACKGROUND_COMMAND_DESCRIPTION,source:`background`,modelInvocable:!1,subcommands:(0,e.buildBackgroundCommandSubcommands)()}}function Te(){let e=we();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,subcommands:e.subcommands,execute:Ce}}var Ee=class{name=`background`;getCommands(){return[we()]}};function De(){return{name:`agent-command-background`,commandSources:[new Ee],systemCommands:[Te()]}}function Oe(e){let t=e.trim();return t.length>0?t:void 0}async function ke(t,n){let{before:r,after:i,beforeMessageCount:a,afterMessageCount:o}=await(0,e.compactCommandContext)(t,Oe(n)),s=a-o;return{message:[`Context compacted.`,` Removed messages: ${s} (${a>0?Math.round(s/a*100):0}% of total)`,` Context: ${Math.round(r.usedPercentage)}% → ${Math.round(i.usedPercentage)}%`].join(`
|
|
7
|
+
`),success:!0,data:{before:r,after:i,beforeMessageCount:a,afterMessageCount:o}}}function p(){return{name:`compact`,displayName:`Compact Context`,description:`Compress context window`,source:`compact`,modelInvocable:!0,argumentHint:`[instructions]`,safety:`write`,example:`/compact Summarize the current context`}}function Ae(){let e=p();return{name:e.name,displayName:e.displayName,description:e.description,example:e.example,requiresPermission:!1,userInvocable:!0,modelInvocable:e.modelInvocable,argumentHint:e.argumentHint,safety:e.safety,lifecycle:`blocking`,execute:ke}}var je=class{name=`compact`;getCommands(){return[p()]}};function Me(){return{name:`agent-command-compact`,commandSources:[new je],systemCommands:[Ae()]}}const m=[`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(`
|
|
8
|
+
`);function h(e){return e===!1?`disabled`:`${Math.round(e*100)}%`}function Ne(e,t){return e===!1?`Auto compact: disabled (${t})`:`Auto compact: ${h(e)} (${t})`}function Pe(e){return e?`settings`:`current session only`}async function Fe(t,n){let r=n.trim().split(/\s+/).filter(e=>e.length>0);if(r.length>0)return Ie(t,r);let i=(0,e.readCommandContextState)(t),a=(0,e.readAutoCompactThreshold)(t),o=(0,e.readAutoCompactThresholdSource)(t);return{message:[`Context: ${i.usedTokens.toLocaleString()} / ${i.maxTokens.toLocaleString()} tokens (${Math.round(i.usedPercentage)}%)`,Ne(a,o),He((0,e.listCommandContextReferences)(t))].join(`
|
|
9
|
+
`),success:!0,data:{usedTokens:i.usedTokens,maxTokens:i.maxTokens,percentage:i.usedPercentage,autoCompactThreshold:a,autoCompactThresholdSource:o,references:(0,e.listCommandContextReferences)(t)}}}async function Ie(t,n){let[r,...i]=n;if(r===`list`)return i.length>0?{success:!1,message:m}:Ue((0,e.listCommandContextReferences)(t));if(r===`add`)return Re(t,i);if(r===`remove`)return ze(t,i);if(r===`clear`){if(i.length>0)return{success:!1,message:m};let n=(0,e.clearCommandContextReferences)(t);return{success:!0,message:`Context references cleared: ${n.removed.length} removed.`,data:{removed:n.removed}}}return r===`auto`?Le(t,i):{success:!1,message:m}}function Le(t,n){let[r,i]=n;if(i!==void 0)return{success:!1,message:m};if(r===void 0){let n=(0,e.readAutoCompactThreshold)(t),r=(0,e.readAutoCompactThresholdSource)(t);return{success:!0,message:[Ne(n,r),m].join(`
|
|
10
|
+
`),data:{autoCompactThreshold:n,autoCompactThresholdSource:r}}}if(r===`on`)return g(t,e.DEFAULT_AUTO_COMPACT_THRESHOLD,`enabled`);if(r===`off`)return g(t,!1,`disabled`);if(r===`reset`){let n=(0,e.resetAutoCompactThresholdSetting)(t);return(0,e.setCommandAutoCompactThreshold)(t,e.DEFAULT_AUTO_COMPACT_THRESHOLD,`default`),{success:!0,message:`Auto compact reset to default: ${h(e.DEFAULT_AUTO_COMPACT_THRESHOLD)} (${Pe(n)}).`,data:{autoCompactThreshold:e.DEFAULT_AUTO_COMPACT_THRESHOLD,autoCompactThresholdSource:`default`,persisted:n}}}let a=Ve(r);return a.success?g(t,a.threshold,`threshold set`):{success:!1,message:`${a.message}\n${m}`}}async function Re(t,n){let r=n.join(` `).trim();if(!r)return{success:!1,message:m};let i=await(0,e.addCommandContextReference)(t,r);return i.reference?{success:!0,message:[`Context reference added: ${_(i.reference)}.`,...i.evicted.length>0?[`Evicted ${i.evicted.length} older context reference(s).`]:[]].join(`
|
|
10
11
|
`),data:{reference:i.reference,evicted:i.evicted}}:{success:!1,message:i.diagnostics.join(`
|
|
11
|
-
`)||`Context reference not found: ${r}`,data:{diagnostics:i.diagnostics}}}function
|
|
12
|
-
`),data:{references:e}}}function _(e){return[e.relativePath,`[${e.loadType}, ${e.status}]`,`${e.byteLength.toLocaleString()} B`].join(` `)}function v(){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
|
|
12
|
+
`)||`Context reference not found: ${r}`,data:{diagnostics:i.diagnostics}}}function ze(t,n){let r=n.join(` `).trim();if(!r)return{success:!1,message:m};let i=(0,e.removeCommandContextReference)(t,r);return i.removed?{success:!0,message:`Context reference removed: ${_(i.removed)}.`,data:{removed:i.removed}}:{success:!1,message:`Context reference not found: ${r}`}}function g(t,n,r){let i=(0,e.writeAutoCompactThresholdSetting)(t,n),a=i?`settings`:`session`;return(0,e.setCommandAutoCompactThreshold)(t,n,a),{success:!0,message:Be(r,n,i),data:{autoCompactThreshold:n,autoCompactThresholdSource:a,persisted:i}}}function Be(e,t,n){let r=Pe(n);return e===`disabled`?`Auto compact disabled (${r}).`:e===`enabled`?`Auto compact enabled at ${h(t)} (${r}).`:`Auto compact threshold set to ${h(t)} (${r}).`}function Ve(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 He(e){return`References: ${e.filter(e=>e.status===`active`).length} active, ${e.filter(e=>e.status===`observed`).length} observed`}function Ue(e){return e.length===0?{success:!0,message:`No context references.`,data:{references:e}}:{success:!0,message:[`Context references:`,...e.map(_)].join(`
|
|
13
|
+
`),data:{references:e}}}function _(e){return[e.relativePath,`[${e.loadType}, ${e.status}]`,`${e.byteLength.toLocaleString()} B`].join(` `)}function v(){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 We(){let e=v();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,execute:Fe}}var Ge=class{name=`context`;getCommands(){return[v()]}};function Ke(){return{name:`agent-command-context`,commandSources:[new Ge],systemCommands:[We()]}}function qe(t,n){return{success:!0,message:`Exit requested.`,effects:[(0,e.createSessionExitRequestedEffect)()]}}function y(){return{name:`exit`,displayName:`Exit Session`,description:e.EXIT_COMMAND_DESCRIPTION,source:`exit`,modelInvocable:!1}}function Je(){let e=y();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!0,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:qe}}var Ye=class{name=`exit`;getCommands(){return[y()]}};function Xe(){return{name:`agent-command-exit`,commandSources:[new Ye],systemCommands:[Je()]}}function Ze(t,n){return{success:!0,message:(0,e.formatCommandHelpMessage)(t)}}function b(){return{name:`help`,displayName:`Help`,description:e.HELP_COMMAND_DESCRIPTION,source:`help`,modelInvocable:!1}}function Qe(){let e=b();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Ze}}var $e=class{name=`help`;getCommands(){return[b()]}};function et(){return{name:`agent-command-help`,commandSources:[new $e],systemCommands:[Qe()]}}function tt(t,n){let r=(0,e.parseLanguageArgument)(n);return r===void 0?{message:(0,e.formatLanguageUsageMessage)(),success:!1}:{message:`Language set to "${r}".`,success:!0,data:{language:r},effects:[{type:`language-change-requested`,language:r}]}}function x(){return{name:`language`,displayName:`Language`,description:e.LANGUAGE_COMMAND_DESCRIPTION,source:`language`,argumentHint:e.LANGUAGE_COMMAND_ARGUMENT_HINT,subcommands:(0,e.buildLanguageCommandSubcommands)(`language`),modelInvocable:!1}}function nt(){let e=x();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:tt}}var rt=class{name=`language`;getCommands(){return[x()]}};function it(){return{name:`agent-command-language`,commandSources:[new rt],systemCommands:[nt()]}}function S(){return{message:e.MEMORY_COMMAND_USAGE,success:!1}}function at(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function ot(e){let t=e.list(),n=t.topics.length>0?t.topics.map(e=>`- ${e.name}: ${e.path}`).join(`
|
|
13
14
|
`):`(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:n.length,references:[...n]}}}function
|
|
17
|
-
`)}`}):
|
|
18
|
-
`)}function
|
|
19
|
-
`)}function Jt(e){if(/^\d+$/.test(e))return Number(e)-1}function R(e,t){if(e.required===!0&&t.length===0)return`Required`}function Yt(e,n){let r=(0,t.findProviderDefinition)(n,e);if(r===void 0)throw Error(`Unknown provider: ${e}. Currently supported: ${(0,t.formatSupportedProviderTypes)(n)}`);return r}function Xt(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 Zt(e){return e===`api-key`?`API key`:e===`console`?`Console`:`Official`}function Qt(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 $t(t){let n=t.profileName??(0,e.suggestProviderProfileName)({type:t.type},{existingProfileNames:t.existingProfileNames}),r=t.values.apiKey;return{profile:n,type:t.type,model:t.values.model,...r!==void 0&&r.length>0&&{apiKey:r},...t.values.baseURL!==void 0&&{baseURL:t.values.baseURL},setCurrent:t.setCurrent??!0}}const en={type:`session-restart-requested`,reason:`other`};function tn(e,t){return N(e,t.providerDefinitions,{existingProfileNames:Object.keys(t.settings.readMergedSettings().providers??{})})}function z(e,t){return{prompt:nn(e),submit:n=>an(e,n,t),cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function nn(e){let t=P(e),n=t.masked===!0&&t.defaultValue!==void 0?`(unchanged)`:t.defaultValue;return{kind:`text`,title:t.title,...rn(e),...n===void 0?{}:{placeholder:n},...t.defaultValue===void 0?{}:{allowEmpty:!0},...t.masked===void 0?{}:{masked:t.masked},validate:e=>R(t,e)}}function rn(e){let t=L(e.setupHelpLinks);return t.length>0?{description:t}:{}}function an(e,t,n){let r=F(e,t);return r.status===`error`?{message:r.message,success:!1,interaction:z(e,n)}:r.status===`complete`?on(r.input,n):{message:``,success:!0,interaction:z(r.state,n)}}function on(t,n){let r=n.settings.readTargetSettings(),i=(0,e.buildProviderSetupPatch)(t,{providerDefinitions:n.providerDefinitions});return n.settings.writeTargetSettings((0,e.mergeProviderPatch)(r,i)),{message:`Provider ${t.profile} configured. Restarting...`,success:!0,effects:[{...en,message:`Provider setup restart`}]}}const sn={type:`session-restart-requested`,reason:`other`};function cn(e,t,n){return`${e===n?`* `:``}${e}: ${t.type??`unknown`} ${t.model??`(no model)`}`}function ln(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:un(t,n)}:{message:`Provider profile "${t}" was not found.`,success:!1}:{message:`Usage: provider use <profile>`,success:!1}}function un(t,n){return{prompt:{kind:`choice`,title:`Change provider to ${t}? This will restart the session.`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:r=>{if(r!==`yes`)return{message:`Provider change cancelled.`,success:!0};let i=n.settings.readMergedSettings(),a=n.settings.readTargetSettings(),o=a.providers?.[t]!==void 0||i.providers?.[t]!==void 0?{...a,currentProvider:t}:(0,e.setCurrentProvider)(a,t);return n.settings.writeTargetSettings(o),{message:`Provider changed to ${t}. Restarting...`,success:!0,effects:[{...sn,message:`Provider change restart`}]}},cancel:()=>({message:`Provider change cancelled.`,success:!0})}}function dn(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:fn(n)});return{message:`Provider edit requested: ${e}`,success:!0,interaction:pn(r,e,t)}}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}}function fn(e){return{...typeof e.model==`string`?{model:e.model}:{},...typeof e.apiKey==`string`?{apiKey:e.apiKey}:{},...typeof e.baseURL==`string`?{baseURL:e.baseURL}:{}}}function pn(e,t,n){return{prompt:nn(e),submit:r=>mn(e,t,r,n),cancel:()=>({message:`Provider edit cancelled.`,success:!0})}}function mn(e,t,n,r){let i=F(e,n);return i.status===`error`?{message:i.message,success:!1,interaction:pn(e,t,r)}:i.status===`complete`?hn(i.input,t,r):{message:``,success:!0,interaction:pn(i.state,t,r)}}function hn(t,n,r){let i=r.settings.readMergedSettings(),a=i.providers?.[n];if(!a)return{message:`Provider profile "${n}" was not found.`,success:!1};let o=r.settings.readTargetSettings(),s=(0,e.buildProviderSetupPatch)(t,{providerDefinitions:r.providerDefinitions}).providers[n];if(!s)return{message:`Provider profile "${n}" was not updated.`,success:!1};r.settings.writeTargetSettings((0,e.upsertProviderProfile)(o,n,{...a,...s}));let c=i.currentProvider===n;return{message:c?`Provider ${n} updated. Restarting...`:`Provider ${n} updated.`,success:!0,...c?{effects:[{...sn,message:`Provider edit restart`}]}:{}}}const gn={type:`session-restart-requested`,reason:`other`};function _n(e,t){let n=t.settings.readMergedSettings();if(!n.providers?.[e])return{message:`Provider profile "${e}" was not found.`,success:!1};let r=Tn(e,Object.keys(n.providers));return{message:`Provider duplicate requested: ${e}`,success:!0,interaction:vn(e,r,t)}}function vn(e,t,n){return{prompt:{kind:`text`,title:`Duplicate ${e} as`,placeholder:t,allowEmpty:!0,validate:e=>yn(e,t,n)},submit:r=>bn(e,r,t,n),cancel:()=>({message:`Provider duplicate cancelled.`,success:!0})}}function yn(e,t,n){let r=En(e,t);if(r.length===0)return`Required`;if(n.settings.readMergedSettings().providers?.[r]!==void 0)return`Provider profile "${r}" already exists`}function bn(t,n,r,i){let a=i.settings.readMergedSettings().providers?.[t];if(!a)return{message:`Provider profile "${t}" was not found.`,success:!1};let o=En(n,r),s=yn(o,r,i);return s===void 0?(i.settings.writeTargetSettings((0,e.upsertProviderProfile)(i.settings.readTargetSettings(),o,{...a})),{message:`Provider profile duplicated: ${t} -> ${o}.`,success:!0}):{message:s,success:!1}}function xn(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:Sn(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function Sn(e,t){return{prompt:{kind:`choice`,title:`Delete provider profile ${e}?`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>n===`yes`?Cn(e,t):{message:`Provider delete cancelled.`,success:!0},cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}function Cn(t,n){let r=n.settings.readMergedSettings();if(r.currentProvider!==t)return n.settings.writeTargetSettings((0,e.deleteProviderProfile)(n.settings.readTargetSettings(),t)),{message:`Provider profile deleted: ${t}.`,success:!0};let i=Object.entries(r.providers??{}).filter(([e])=>e!==t).map(([e,t])=>({value:e,label:cn(e,t,r.currentProvider)}));return{message:`Select a replacement provider before deleting ${t}.`,success:!0,interaction:{prompt:{kind:`choice`,title:`Replacement provider for ${t}`,options:i,maxVisible:8},submit:e=>wn(t,e,n),cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}}function wn(t,n,r){if(r.settings.readMergedSettings().providers?.[n]===void 0||n===t)return{message:`Provider profile "${n}" was not found.`,success:!1};let i=(0,e.deleteProviderProfile)(r.settings.readTargetSettings(),t);return r.settings.writeTargetSettings({...i,currentProvider:n}),{message:`Provider profile deleted: ${t}. Restarting with ${n}...`,success:!0,effects:[{...gn,message:`Provider delete restart`}]}}function Tn(t,n){let r=(0,e.sanitizeProviderProfileName)(`${t}-copy`)??`provider-copy`;if(!n.includes(r))return r;for(let e=2;e<1e3;e+=1){let t=`${r}-${e}`;if(!n.includes(t))return t}return`${r}-${Date.now()}`}function En(t,n){return(0,e.sanitizeProviderProfileName)(t.trim()||n)??``}const Dn=`switch`,On=`edit`,kn=`test`,An=`duplicate`,jn=`delete`,Mn=`cancel`;function Nn(e,t,n){return{prompt:{kind:`choice`,title:`Select provider profile`,options:Object.entries(t??{}).map(([t,n])=>({value:t,label:cn(t,n,e)})),maxVisible:8},submit:e=>Pn(e,n),cancel:()=>({message:`Provider profile selection cancelled.`,success:!0})}}function Pn(e,t){return t.settings.readMergedSettings().providers?.[e]?{message:`Provider profile selected: ${e}`,success:!0,interaction:Fn(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function Fn(e,t){return{prompt:{kind:`choice`,title:`Provider profile: ${e}`,options:[{value:Dn,label:`Switch`},{value:On,label:`Edit`},{value:kn,label:`Test`},{value:An,label:`Duplicate`},{value:jn,label:`Delete`},{value:Mn,label:`Cancel`}]},submit:n=>In(e,n,t),cancel:()=>({message:`Provider profile action cancelled.`,success:!0})}}async function In(t,n,r){let i=r.settings.readMergedSettings();switch(n){case Dn:return ln(i.providers,t,r);case On:return dn(t,r);case kn:return await(0,e.testProviderProfileCommand)(i.currentProvider,i.providers,t,r);case An:return _n(t,r);case jn:return xn(t,r);case Mn:return{message:`Provider profile action cancelled.`,success:!0};default:return{message:`Unknown provider profile action "${n}".`,success:!1}}}async function Ln(t,n){let r=n.settings.readMergedSettings(),i=t.trim();if(i.length===0)return Rn(r.currentProvider,r.providers,n);let[a=`current`,o]=i.split(/\s+/);return a===`list`?Rn(r.currentProvider,r.providers,n):a===`current`||a===``?{message:Bn(r.currentProvider,r.providers),success:!0}:a===`use`?ln(r.providers,o,n):a===`test`?await(0,e.testProviderProfileCommand)(r.currentProvider,r.providers,o,n):a===`add`?Vn(o,n):{message:`Usage: provider [current|list|use <profile>|add <type>|test [profile]]`,success:!1}}function Rn(e,t,n){let r=zn(e,t);return Object.keys(t??{}).length===0?{message:r,success:!0}:{message:r,success:!0,interaction:Nn(e,t,n)}}function zn(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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
`),success:!0,data:{indexPath:t.indexPath,topicsPath:t.topicsPath,topicCount:t.topics.length}}}function st(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 ct(t){let n=t[1],r=t[2],i=t.slice(3).join(` `).trim();if(!(!n||!(0,e.isCommandMemoryType)(n)||!r||i.length===0))return{type:n,topic:r,text:i}}function lt(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(`
|
|
16
|
+
`),success:!0,data:{count:t.length}}}function ut(t,n){(0,e.recordCommandMemoryEvent)(t,n)}function dt(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 ut(e,{type:`memory_candidate_approved`,candidateId:o.id,topic:o.topic,reason:`approved-by-user`}),ut(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 at(e instanceof Error?e:String(e))}}function ft(e,t,n){if(!n)return S();try{let r=t.mark(n,`rejected`,`rejected-by-user`);return ut(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 at(e instanceof Error?e:String(e))}}function pt(t){let n=(0,e.listCommandUsedMemoryReferences)(t);return{message:[`Used memory references:`,...n.length>0?n.map(e=>{let t=e.truncated?` truncated=true`:``;return`- ${e.topic} score=${e.score}${t}: ${e.path}`}):[`(no memory used in current turn)`]].join(`
|
|
17
|
+
`),success:!0,data:{count:n.length,references:[...n]}}}function mt(t,n){let r=n.trim().split(/\s+/).filter(Boolean),i=r[0]??`list`,a=(0,e.createCommandMemoryStores)(t);if(i===`list`)return ot(a.project);if(i===`show`)return st(a.project,r[1]);if(i===`pending`)return lt(a.pending);if(i===`approve`)return dt(t,a.pending,a.project,r[1]);if(i===`reject`)return ft(t,a.pending,r[1]);if(i===`used`)return pt(t);if(i===`add`){let t=ct(r);if(!t)return S();if((0,e.hasSensitiveCommandMemoryContent)(t.text))return{message:`Refusing to save sensitive memory content.`,success:!1};let n=a.project.append(t);return{message:n.deduplicated?`${t.type} memory already exists in ${n.topicPath}`:`Saved ${t.type} memory to ${n.topicPath}`,success:!0,data:{indexPath:n.indexPath,topicPath:n.topicPath,topic:n.topic,deduplicated:n.deduplicated}}}return S()}function C(){return{name:`memory`,displayName:`Memory`,description:e.MEMORY_COMMAND_DESCRIPTION,source:`memory`,argumentHint:e.MEMORY_COMMAND_ARGUMENT_HINT,modelInvocable:!0,safety:`write`,subcommands:(0,e.buildMemoryCommandSubcommands)()}}function ht(){let e=C();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:mt}}var gt=class{name=`memory`;getCommands(){return[C()]}};function _t(){return{name:`agent-command-memory`,commandSources:[new gt],systemCommands:[ht()]}}function vt(t,n){let r=(0,e.parsePermissionModeArgument)(n);if(r===void 0){let n=(0,e.readCommandPermissionMode)(t);return{message:`Current mode: ${n}`,success:!0,data:{mode:n}}}return(0,e.isPermissionMode)(r)?((0,e.writeCommandPermissionMode)(t,r),{message:`Permission mode set to: ${r}`,success:!0,data:{mode:r}}):{message:(0,e.formatInvalidPermissionModeMessage)(),success:!1}}function w(){return{name:`mode`,displayName:`Interaction Mode`,description:e.PERMISSION_MODE_COMMAND_DESCRIPTION,source:`mode`,argumentHint:e.PERMISSION_MODE_ARGUMENT_HINT,subcommands:(0,e.buildPermissionModeSubcommands)(`mode`),modelInvocable:!1}}function yt(){let e=w();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:vt}}var bt=class{name=`mode`;getCommands(){return[w()]}};function xt(){return{name:`agent-command-mode`,commandSources:[new bt],systemCommands:[yt()]}}function St(t,n){let r=(0,e.parsePermissionModeArgument)(n);if(r!==void 0){if(!(0,e.isPermissionMode)(r))return{message:(0,e.formatInvalidPermissionModeMessage)(),success:!1};(0,e.writeCommandPermissionMode)(t,r);let n=(0,e.readCommandPermissionsState)(t);return{message:`Permission mode set to: ${r}\n${(0,e.formatCommandPermissionsMessage)(n)}`,success:!0,data:{mode:n.mode,sessionAllowed:n.sessionAllowed}}}let i=(0,e.readCommandPermissionsState)(t);return{message:(0,e.formatCommandPermissionsMessage)(i),success:!0,data:{mode:i.mode,sessionAllowed:i.sessionAllowed}}}function T(){return{name:`permissions`,displayName:`Permissions`,description:e.PERMISSIONS_COMMAND_DESCRIPTION,source:`permissions`,argumentHint:e.PERMISSION_MODE_ARGUMENT_HINT,subcommands:(0,e.buildPermissionModeSubcommands)(`permissions`),modelInvocable:!1}}function Ct(){let e=T();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:St}}var wt=class{name=`permissions`;getCommands(){return[T()]}};function Tt(){return{name:`agent-command-permissions`,commandSources:[new wt],systemCommands:[Ct()]}}function Et(e){let t=e.trim().split(/\s+/).filter(e=>e.length>0);return{subcommand:t[0]??``,subArgs:t.slice(1).join(` `).trim()}}function E(e){return{success:!1,message:e}}function Dt(t){return(0,e.resolvePluginCommandAdapter)(t)}async function D(e,t){let n=Dt(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 Ot(e,t){let{subcommand:n,subArgs:r}=Et(t);return n===`add`&&r.length>0?D(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?D(e,async e=>(await e.marketplaceRemove(r),`Removed marketplace "${r}" and uninstalled its plugins.`)):n===`update`&&r.length>0?D(e,async e=>(await e.marketplaceUpdate(r),`Updated marketplace "${r}".`)):n===`list`?D(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(`
|
|
18
|
+
`)}`}):E(`Usage: /plugin marketplace add <source> | remove <name> | update <name> | list`)}function O(e,t,n,r){return t.length===0?Promise.resolve(E(n)):D(e,e=>Promise.resolve(r(e,t)))}function kt(){return{success:!0,message:`Opening plugin manager...`,effects:[(0,e.createPluginTuiRequestedEffect)()]}}function At(e,t){return O(e,t,`Usage: /plugin install <name>@<marketplace>`,async(e,t)=>(await e.install(t),`Installed plugin: ${t}`))}function jt(e,t){return O(e,t,`Usage: /plugin uninstall <name>@<marketplace>`,async(e,t)=>(await e.uninstall(t),`Uninstalled plugin: ${t}`))}function Mt(e,t){return O(e,t,`Usage: /plugin enable <name>@<marketplace>`,async(e,t)=>(await e.enable(t),`Enabled plugin: ${t}`))}function Nt(e,t){return O(e,t,`Usage: /plugin disable <name>@<marketplace>`,async(e,t)=>(await e.disable(t),`Disabled plugin: ${t}`))}async function Pt(e,t){let{subcommand:n,subArgs:r}=Et(t);switch(n){case``:case`manage`:return kt();case`install`:return At(e,r);case`uninstall`:return jt(e,r);case`enable`:return Mt(e,r);case`disable`:return Nt(e,r);case`marketplace`:return Ot(e,r);default:return E(`Unknown plugin subcommand: ${n}`)}}async function Ft(t,n){return D(t,async e=>{let t=await e.reloadPlugins();return`Reloaded ${t.loadedPluginCount===1?`1 plugin resource`:`${t.loadedPluginCount} plugin resources`}.`}).then(t=>t.success?{...t,effects:[(0,e.createPluginRegistryReloadRequestedEffect)()]}:t)}function k(){return{name:`plugin`,displayName:`Plugins`,description:e.PLUGIN_COMMAND_DESCRIPTION,source:`plugin-manager`,modelInvocable:!1,argumentHint:e.PLUGIN_COMMAND_ARGUMENT_HINT,subcommands:(0,e.buildPluginCommandSubcommands)()}}function A(){return{name:`reload-plugins`,displayName:`Reload Plugins`,description:e.RELOAD_PLUGINS_COMMAND_DESCRIPTION,source:`plugin-manager`,modelInvocable:!1}}function It(){let e=k();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:Pt}}function Lt(){let e=A();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Ft}}var Rt=class{name=`plugin-manager`;getCommands(){return[k(),A()]}};function zt(){return{name:`agent-command-plugin`,commandSources:[new Rt],systemCommands:[It(),Lt()]}}function j(e,t,n={}){let r=Kt(e,t);return{type:e,steps:Yt(qt(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 Bt(e){return e.length===0?` No providers are available.`:[` Select provider:`,...e.map((e,t)=>` ${t+1}. ${P(e)}`),` Provider [1-${e.length}] (default: 1): `].join(`
|
|
19
|
+
`)}function Vt(e,n){let r=e.trim(),i=r.length>0?r:`1`,a=Gt(i);if(a!==void 0){let e=n[a];if(e!==void 0)return e.type;throw Error(`Provider selection ${i} is out of range. Currently supported: ${(0,t.formatSupportedProviderTypes)(n)}`)}let o=(0,t.findProviderDefinition)(n,i);if(o===void 0)throw Error(`Unknown provider: ${i}. Currently supported: ${(0,t.formatSupportedProviderTypes)(n)}`);return o.type}function M(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 N(e,t){let n=M(e),r=t.trim()||n.defaultValue||``,i=I(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:Xt(a)}}async function Ht(e,t,n,r={}){let i=j(e,n,r),a=i.steps.length;for(;i.stepIndex<a;){let e=M(i),n=await t(Ut(e,i.setupHelpLinks),e.masked===!0),r=N(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 Ut(e,t=[]){let n=e.defaultValue===void 0?``:` (default: ${e.defaultValue})`,r=F(t);return`${r.length>0?`${r}\n`:``} ${e.title}${n}: `}const Wt={"cloud-paid":`[Cloud/Paid]`,"cloud-free":`[Cloud/Free]`,"local-free":`[Local/Free]`};function P(e){let t=`${e.category===void 0?``:`${Wt[e.category]??``} `}${e.displayName===void 0?e.type:`${e.displayName} (${e.type})`}`;return e.description===void 0?t:`${t} — ${e.description}`}function F(e=[]){return e.length===0?``:e.map(e=>` Setup help: ${Jt(e.kind)}: ${e.label} - ${e.url}`).join(`
|
|
20
|
+
`)}function Gt(e){if(/^\d+$/.test(e))return Number(e)-1}function I(e,t){if(e.required===!0&&t.length===0)return`Required`}function Kt(e,n){let r=(0,t.findProviderDefinition)(n,e);if(r===void 0)throw Error(`Unknown provider: ${e}. Currently supported: ${(0,t.formatSupportedProviderTypes)(n)}`);return r}function qt(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 Jt(e){return e===`api-key`?`API key`:e===`console`?`Console`:`Official`}function Yt(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 Xt(t){let n=t.profileName??(0,e.suggestProviderProfileName)({type:t.type},{existingProfileNames:t.existingProfileNames}),r=t.values.apiKey;return{profile:n,type:t.type,model:t.values.model,...r!==void 0&&r.length>0&&{apiKey:r},...t.values.baseURL!==void 0&&{baseURL:t.values.baseURL},setCurrent:t.setCurrent??!0}}const Zt={type:`session-restart-requested`,reason:`other`};function Qt(e,t){return j(e,t.providerDefinitions,{existingProfileNames:Object.keys(t.settings.readMergedSettings().providers??{})})}function L(e,t){return{prompt:$t(e),submit:n=>tn(e,n,t),cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function $t(e){let t=M(e),n=t.masked===!0&&t.defaultValue!==void 0?`(unchanged)`:t.defaultValue;return{kind:`text`,title:t.title,...en(e),...n===void 0?{}:{placeholder:n},...t.defaultValue===void 0?{}:{allowEmpty:!0},...t.masked===void 0?{}:{masked:t.masked},validate:e=>I(t,e)}}function en(e){let t=F(e.setupHelpLinks);return t.length>0?{description:t}:{}}function tn(e,t,n){let r=N(e,t);return r.status===`error`?{message:r.message,success:!1,interaction:L(e,n)}:r.status===`complete`?nn(r.input,n):{message:``,success:!0,interaction:L(r.state,n)}}function nn(t,n){let r=n.settings.readTargetSettings(),i=(0,e.buildProviderSetupPatch)(t,{providerDefinitions:n.providerDefinitions});return n.settings.writeTargetSettings((0,e.mergeProviderPatch)(r,i)),{message:`Provider ${t.profile} configured. Restarting...`,success:!0,effects:[{...Zt,message:`Provider setup restart`}]}}function rn(e,t,n){return`${e===n?`* `:``}${e}: ${t.type??`unknown`} ${t.model??`(no model)`}`}function an(t,n,r){if(!n)return{message:`Usage: /provider switch <profile>`,success:!1};if(!t?.[n])return{message:`Provider profile "${n}" was not found.`,success:!1};let{orgPolicy:i}=r;if(i?.allowedProviders&&!i.allowedProviders.includes(n))return{message:(0,e.formatOrgPolicyViolationMessage)(`Provider "${n}" is not allowed by your organization policy. Allowed: ${i.allowedProviders.join(`, `)}.`,i.adminContact),success:!1};if(r.settings.readMergedSettings().currentProvider===n)return{message:`Already using provider "${n}".`,success:!0};let a=t[n],o=r.settings.readTargetSettings(),s=r.settings.readMergedSettings(),c=o.providers?.[n]!==void 0||s.providers?.[n]!==void 0?{...o,currentProvider:n}:(0,e.setCurrentProvider)(o,n);return r.settings.writeTargetSettings(c),{message:`Switched to ${n} (${a.model??`unknown model`}). History preserved.`,success:!0,effects:[{type:`provider-hot-swap-requested`,profileName:n}]}}function on(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=j(n.type,t.providerDefinitions,{profileName:e,setCurrent:!1,initialValues:sn(n)});return{message:`Provider edit requested: ${e}`,success:!0,interaction:R(r,e,t)}}catch(e){return{message:e instanceof Error?e.message:String(e),success:!1}}}function sn(e){return{...typeof e.model==`string`?{model:e.model}:{},...typeof e.apiKey==`string`?{apiKey:e.apiKey}:{},...typeof e.baseURL==`string`?{baseURL:e.baseURL}:{}}}function R(e,t,n){return{prompt:$t(e),submit:r=>cn(e,t,r,n),cancel:()=>({message:`Provider edit cancelled.`,success:!0})}}function cn(e,t,n,r){let i=N(e,n);return i.status===`error`?{message:i.message,success:!1,interaction:R(e,t,r)}:i.status===`complete`?ln(i.input,t,r):{message:``,success:!0,interaction:R(i.state,t,r)}}function ln(t,n,r){let i=r.settings.readMergedSettings(),a=i.providers?.[n];if(!a)return{message:`Provider profile "${n}" was not found.`,success:!1};let{orgPolicy:o}=r;if(o?.requireApiKeyFromEnv&&(0,e.isApiKeyPlaintext)(t.apiKey))return{message:(0,e.formatOrgPolicyViolationMessage)(`Your organization policy requires API keys to be stored as environment variable references ($ENV:VAR_NAME), not as plaintext.`,o.adminContact),success:!1};let s=r.settings.readTargetSettings(),c=(0,e.buildProviderSetupPatch)(t,{providerDefinitions:r.providerDefinitions}).providers[n];if(!c)return{message:`Provider profile "${n}" was not updated.`,success:!1};r.settings.writeTargetSettings((0,e.upsertProviderProfile)(s,n,{...a,...c}));let l=i.currentProvider===n;return{message:l?`Provider ${n} updated. Switching...`:`Provider ${n} updated.`,success:!0,...l?{effects:[{type:`provider-hot-swap-requested`,profileName:n}]}:{}}}const un={type:`session-restart-requested`,reason:`other`};function dn(e,t){let n=t.settings.readMergedSettings();if(!n.providers?.[e])return{message:`Provider profile "${e}" was not found.`,success:!1};let r=yn(e,Object.keys(n.providers));return{message:`Provider duplicate requested: ${e}`,success:!0,interaction:fn(e,r,t)}}function fn(e,t,n){return{prompt:{kind:`text`,title:`Duplicate ${e} as`,placeholder:t,allowEmpty:!0,validate:e=>pn(e,t,n)},submit:r=>mn(e,r,t,n),cancel:()=>({message:`Provider duplicate cancelled.`,success:!0})}}function pn(e,t,n){let r=bn(e,t);if(r.length===0)return`Required`;if(n.settings.readMergedSettings().providers?.[r]!==void 0)return`Provider profile "${r}" already exists`}function mn(t,n,r,i){let a=i.settings.readMergedSettings().providers?.[t];if(!a)return{message:`Provider profile "${t}" was not found.`,success:!1};let o=bn(n,r),s=pn(o,r,i);return s===void 0?(i.settings.writeTargetSettings((0,e.upsertProviderProfile)(i.settings.readTargetSettings(),o,{...a})),{message:`Provider profile duplicated: ${t} -> ${o}.`,success:!0}):{message:s,success:!1}}function hn(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:gn(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function gn(e,t){return{prompt:{kind:`choice`,title:`Delete provider profile ${e}?`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]},submit:n=>n===`yes`?_n(e,t):{message:`Provider delete cancelled.`,success:!0},cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}function _n(t,n){let r=n.settings.readMergedSettings();if(r.currentProvider!==t)return n.settings.writeTargetSettings((0,e.deleteProviderProfile)(n.settings.readTargetSettings(),t)),{message:`Provider profile deleted: ${t}.`,success:!0};let i=Object.entries(r.providers??{}).filter(([e])=>e!==t).map(([e,t])=>({value:e,label:rn(e,t,r.currentProvider)}));return{message:`Select a replacement provider before deleting ${t}.`,success:!0,interaction:{prompt:{kind:`choice`,title:`Replacement provider for ${t}`,options:i,maxVisible:8},submit:e=>vn(t,e,n),cancel:()=>({message:`Provider delete cancelled.`,success:!0})}}}function vn(t,n,r){if(r.settings.readMergedSettings().providers?.[n]===void 0||n===t)return{message:`Provider profile "${n}" was not found.`,success:!1};let i=(0,e.deleteProviderProfile)(r.settings.readTargetSettings(),t);return r.settings.writeTargetSettings({...i,currentProvider:n}),{message:`Provider profile deleted: ${t}. Restarting with ${n}...`,success:!0,effects:[{...un,message:`Provider delete restart`}]}}function yn(t,n){let r=(0,e.sanitizeProviderProfileName)(`${t}-copy`)??`provider-copy`;if(!n.includes(r))return r;for(let e=2;e<1e3;e+=1){let t=`${r}-${e}`;if(!n.includes(t))return t}return`${r}-${Date.now()}`}function bn(t,n){return(0,e.sanitizeProviderProfileName)(t.trim()||n)??``}const xn=`switch`,Sn=`edit`,Cn=`test`,wn=`duplicate`,Tn=`delete`,En=`cancel`;function Dn(e,t,n){return{prompt:{kind:`choice`,title:`Select provider profile`,options:Object.entries(t??{}).map(([t,n])=>({value:t,label:rn(t,n,e)})),maxVisible:8},submit:e=>On(e,n),cancel:()=>({message:`Provider profile selection cancelled.`,success:!0})}}function On(e,t){return t.settings.readMergedSettings().providers?.[e]?{message:`Provider profile selected: ${e}`,success:!0,interaction:kn(e,t)}:{message:`Provider profile "${e}" was not found.`,success:!1}}function kn(e,t){return{prompt:{kind:`choice`,title:`Provider profile: ${e}`,options:[{value:xn,label:`Switch`},{value:Sn,label:`Edit`},{value:Cn,label:`Test`},{value:wn,label:`Duplicate`},{value:Tn,label:`Delete`},{value:En,label:`Cancel`}]},submit:n=>An(e,n,t),cancel:()=>({message:`Provider profile action cancelled.`,success:!0})}}async function An(t,n,r){let i=r.settings.readMergedSettings();switch(n){case xn:return an(i.providers,t,r);case Sn:return on(t,r);case Cn:return await(0,e.testProviderProfileCommand)(i.currentProvider,i.providers,t,r);case wn:return dn(t,r);case Tn:return hn(t,r);case En:return{message:`Provider profile action cancelled.`,success:!0};default:return{message:`Unknown provider profile action "${n}".`,success:!1}}}async function jn(t,n){let r=n.settings.readMergedSettings(),i=t.trim();if(i.length===0)return Mn(r.currentProvider,r.providers,n);let[a=`current`,o]=i.split(/\s+/);return a===`list`?Mn(r.currentProvider,r.providers,n):a===`current`||a===``?{message:Pn(r.currentProvider,r.providers),success:!0}:a===`switch`?an(r.providers,o,n):a===`test`?await(0,e.testProviderProfileCommand)(r.currentProvider,r.providers,o,n):a===`add`?Fn(o,n):{message:`Usage: provider [current|list|switch <profile>|add <type>|test [profile]]`,success:!1}}function Mn(e,t,n){let r=Nn(e,t);return Object.keys(t??{}).length===0?{message:r,success:!0}:{message:r,success:!0,interaction:Dn(e,t,n)}}function Nn(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(`
|
|
21
|
+
`)}function Pn(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(`
|
|
22
|
+
`):`Current provider "${e}" was not found in providers.`}function Fn(e,n){return e===void 0||e.length===0?{message:`Provider setup requested. Select a provider to continue.`,success:!0,interaction:In(n)}:(0,t.findProviderDefinition)(n.providerDefinitions,e)===void 0?{message:`Usage: provider add <type>. Supported: ${(0,t.formatSupportedProviderTypes)(n.providerDefinitions)}`,success:!1}:{message:`Provider setup requested: ${e}`,success:!0,interaction:L(Qt(e,n),n)}}function In(e){return{prompt:{kind:`choice`,title:`Select provider`,options:e.providerDefinitions.map(e=>({value:e.type,label:P(e)})),maxVisible:6},submit:t=>{let n=Qt(t,e);return{message:`Provider setup requested: ${t}`,success:!0,interaction:L(n,e)}},cancel:()=>({message:`Provider setup cancelled.`,success:!0})}}function Ln(){return[{name:`current`,description:`Show current provider`,source:`provider`},{name:`list`,description:`List provider profiles`,source:`provider`},{name:`switch`,description:`Hot-swap to another provider profile`,source:`provider`},{name:`add`,description:`Configure a provider profile`,source:`provider`},{name:`test`,description:`Test provider profile`,source:`provider`}]}function Rn(){return{name:`provider`,displayName:`Provider Setup`,description:`Manage provider profiles`,source:`provider`,modelInvocable:!1,argumentHint:`current | list | switch <profile> | add [type] | test [profile]`,subcommands:Ln(),example:`/provider switch production`}}var zn=class{name=`provider`;getCommands(){return[Rn()]}};function Bn(e){let t=Rn();return{name:t.name,displayName:t.displayName,description:t.description,example:t.example,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,argumentHint:t.argumentHint,subcommands:t.subcommands,execute:async(t,n)=>jn(n,e)}}function Vn(e){return{name:`agent-command-provider`,commandSources:[new zn],systemCommands:[Bn(e)]}}async function Hn(e,t){let n=(await e(`
|
|
23
|
+
Do you have an API key for an AI provider?
|
|
24
|
+
|
|
25
|
+
1. Yes, I have an API key
|
|
26
|
+
2. No — get a free key (Google Gemini, takes ~2 min)
|
|
27
|
+
3. No — use a local model (LM Studio, no API key needed)
|
|
28
|
+
|
|
29
|
+
Choose [1-3] (default: 1): `)).trim()||`1`;return n===`2`?(t.writeLine(`
|
|
30
|
+
── Get a free Gemini API key ────────────────────────────────────────────────
|
|
31
|
+
|
|
32
|
+
1. Open https://aistudio.google.com/apikey in your browser
|
|
33
|
+
2. Sign in with your Google account
|
|
34
|
+
3. Click "Create API key" (takes ~30 seconds)
|
|
35
|
+
4. Copy the key starting with "AIza..."
|
|
36
|
+
|
|
37
|
+
─────────────────────────────────────────────────────────────────────────────
|
|
38
|
+
`),await e(` Press Enter when you have your API key: `),{path:`free-key`,preselectedType:`gemini`}):n===`3`?(t.writeLine(`
|
|
39
|
+
── Set up a local model with LM Studio ──────────────────────────────────────
|
|
40
|
+
|
|
41
|
+
1. Download LM Studio from https://lmstudio.ai
|
|
42
|
+
2. Open LM Studio → search for a model (e.g. "llama" or "phi") → Download
|
|
43
|
+
3. Go to Developer tab → click Start Server
|
|
44
|
+
(default address: http://localhost:1234)
|
|
45
|
+
|
|
46
|
+
When the server is running, come back here and press Enter to continue.
|
|
47
|
+
|
|
48
|
+
─────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
`),await e(` Press Enter when LM Studio server is running: `),{path:`local`,preselectedType:`gemma`}):{path:`has-key`}}async function Un(t,n,r,i,a){let o=await Hn(r,i),s=Object.keys((0,e.readMergedProviderSettings)(t).providers??{}),c=(0,e.resolveSettingsPathForScope)(t,n.settingsScope),l;l=o.preselectedType===void 0?Vt(await r(Bt(a)),a):o.preselectedType,(0,e.applyProviderConfiguration)(c,await Ht(l,r,a,{existingProfileNames:s}),{providerDefinitions:a});let u=await r(` Response language (ko/en/ja/zh, default: en): `);if(u){let t=(0,e.readSettings)(c);t.language=u,(0,e.writeSettings)(c,t)}i.writeLine(`\n Config saved to ${c}\n`)}async function Wn(t,n,r,i,a,o){let s=(0,e.readMergedProviderSettings)(t);if((0,e.checkSettingsDocument)(n.provider===void 0?s:{...s,currentProvider:n.provider},a)===`valid`)return;if(!(o.isInteractive??(()=>!1))())throw Error(o.formatError(a));await Un(t,Gn(t,n),r,i,a);let c=(0,e.readMergedProviderSettings)(t);if((0,e.checkSettingsDocument)(n.provider===void 0?c:{...c,currentProvider:n.provider},a)!==`valid`)throw Error(o.formatError(a))}function Gn(t,r){if(r.settingsScope!==void 0||r.provider!==void 0)return r;let i=Kn((0,e.getProviderSettingsPaths)(t));if(i===void 0)return r;let a=(0,n.join)(t,`.robota`,`settings.json`),o=(0,n.join)(t,`.robota`,`settings.local.json`);return i===a||i===o?{...r,settingsScope:`project-local`}:r}function Kn(t){for(let n=t.length-1;n>=0;--n){let r=t[n];if(r!==void 0&&typeof(0,e.readSettings)(r).currentProvider==`string`)return r}}function qn(e,t){return{success:!0,message:`Reset requested.`,data:{resetRequested:!0},effects:[{type:`settings-reset-requested`}]}}function z(){return{name:`reset`,displayName:`Reset Settings`,description:`Delete settings`,source:`reset`,modelInvocable:!1}}function Jn(){let e=z();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!0,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:qn}}var Yn=class{name=`reset`;getCommands(){return[z()]}};function Xn(){return{name:`agent-command-reset`,commandSources:[new Yn],systemCommands:[Jn()]}}function B(){return{message:`Usage: rewind [list] | rewind inspect <checkpoint-id> | rewind restore <checkpoint-id> | rewind code <checkpoint-id> | rewind rollback <checkpoint-id>`,success:!1}}function Zn(e){let t=e.replace(/\s+/g,` `).trim();return t.length<=120?t:`${t.slice(0,117)}...`}function Qn(e){return{message:[`Edit checkpoints:`,...e.length>0?e.map(e=>`- ${e.id} files=${e.fileCount} ${e.createdAt} ${Zn(e.prompt)}`):[`(no edit checkpoints)`]].join(`
|
|
50
|
+
`),success:!0,data:{count:e.length,checkpoints:[...e]}}}function $n(e){return e.length>0?e.join(`, `):`(none)`}function er(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: ${Zn(e.target.prompt)}`,`Captured files:`,...t,`Restore later checkpoints: files=${e.restoreToCheckpoint.fileCount} checkpoints=${$n(e.restoreToCheckpoint.checkpointIds)}`,`Rollback through checkpoint: files=${e.rollbackThroughCheckpoint.fileCount} checkpoints=${$n(e.rollbackThroughCheckpoint.checkpointIds)}`].join(`
|
|
51
|
+
`),success:!0,data:{inspection:e}}}function tr(e){return{message:[`Restored code to ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Rolled back checkpoints: ${e.restoredCheckpointCount}`].join(`
|
|
52
|
+
`),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function nr(e){return{message:[`Rolled back code through ${e.target.id}.`,`Restored files: ${e.restoredFileCount}`,`Removed checkpoints: ${e.removedCheckpointCount}`].join(`
|
|
53
|
+
`),success:!0,data:{target:e.target,restoredCheckpointCount:e.restoredCheckpointCount,restoredFileCount:e.restoredFileCount,removedCheckpointCount:e.removedCheckpointCount}}}function V(e){return{message:e instanceof Error?e.message:String(e),success:!1}}function rr(t,n){if(!n)return B();try{return er((0,e.inspectCommandEditCheckpoint)(t,n))}catch(e){return V(e instanceof Error?e:String(e))}}async function ir(t,n){if(!n)return B();try{return tr(await(0,e.restoreCommandEditCheckpoint)(t,n))}catch(e){return V(e instanceof Error?e:String(e))}}async function ar(t,n){if(!n)return B();try{return nr(await(0,e.rollbackCommandEditCheckpoint)(t,n))}catch(e){return V(e instanceof Error?e:String(e))}}async function or(t,n){let r=n.trim().split(/\s+/).filter(Boolean),i=r[0]??`list`;return i===`list`?Qn((0,e.listCommandEditCheckpoints)(t)):i===`inspect`?rr(t,r[1]):i===`restore`||i===`code`?ir(t,r[1]):i===`rollback`?ar(t,r[1]):B()}function sr(){return{name:`rewind`,displayName:`Rewind History`,description:e.REWIND_COMMAND_DESCRIPTION,source:`rewind`,argumentHint:e.REWIND_COMMAND_ARGUMENT_HINT,modelInvocable:!1,safety:`write`,subcommands:(0,e.buildRewindCommandSubcommands)()}}function cr(){let e=sr();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:or}}var lr=class{name=`rewind`;getCommands(){return[sr()]}};function ur(){return{name:`agent-command-rewind`,commandSources:[new lr],systemCommands:[cr()]}}const dr={"claude-opus-4-7":{inputPerMillion:15,outputPerMillion:75},"claude-opus-4-5":{inputPerMillion:15,outputPerMillion:75},"claude-sonnet-4-6":{inputPerMillion:3,outputPerMillion:15},"claude-sonnet-4-5":{inputPerMillion:3,outputPerMillion:15},"claude-haiku-4-5":{inputPerMillion:.8,outputPerMillion:4},"claude-3-5-sonnet-20241022":{inputPerMillion:3,outputPerMillion:15},"claude-3-5-haiku-20241022":{inputPerMillion:.8,outputPerMillion:4},"claude-3-opus-20240229":{inputPerMillion:15,outputPerMillion:75},"gpt-4o":{inputPerMillion:2.5,outputPerMillion:10},"gpt-4o-mini":{inputPerMillion:.15,outputPerMillion:.6},o1:{inputPerMillion:15,outputPerMillion:60},"o1-mini":{inputPerMillion:3,outputPerMillion:12},o3:{inputPerMillion:10,outputPerMillion:40},"o3-mini":{inputPerMillion:1.1,outputPerMillion:4.4},"deepseek-chat":{inputPerMillion:.14,outputPerMillion:.28},"deepseek-reasoner":{inputPerMillion:.55,outputPerMillion:2.19},"gemini-2.0-flash":{inputPerMillion:.1,outputPerMillion:.4},"gemini-2.0-flash-thinking":{inputPerMillion:.35,outputPerMillion:3.5},"gemini-1.5-pro":{inputPerMillion:1.25,outputPerMillion:5},"gemini-1.5-flash":{inputPerMillion:.075,outputPerMillion:.3}},fr=[{pattern:/claude-opus/i,price:{inputPerMillion:15,outputPerMillion:75}},{pattern:/claude-sonnet/i,price:{inputPerMillion:3,outputPerMillion:15}},{pattern:/claude-haiku/i,price:{inputPerMillion:.8,outputPerMillion:4}},{pattern:/gpt-4o-mini/i,price:{inputPerMillion:.15,outputPerMillion:.6}},{pattern:/gpt-4/i,price:{inputPerMillion:2.5,outputPerMillion:10}},{pattern:/deepseek/i,price:{inputPerMillion:.14,outputPerMillion:.28}},{pattern:/gemini-2/i,price:{inputPerMillion:.1,outputPerMillion:.4}},{pattern:/gemini-1/i,price:{inputPerMillion:1.25,outputPerMillion:5}}];function pr(e){let t=dr[e];if(t)return t;for(let{pattern:t,price:n}of fr)if(t.test(e))return n}function mr(e,t,n){let r=pr(e);if(r)return t/1e6*r.inputPerMillion+n/1e6*r.outputPerMillion}function H(e){return e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function hr(e){return e.toLocaleString(`en-US`)}const gr=`Conversation cleared.`;function _r(t,n){return(0,e.clearConversationHistory)(t),{success:!0,message:gr,effects:[{type:`conversation-history-cleared`}]}}function vr(t,n){let r=(0,e.parseSessionNameArgument)(n);return r===void 0?{success:!1,message:e.RENAME_COMMAND_USAGE}:{success:!0,message:`Session renamed to "${r}".`,data:{name:r},effects:[(0,e.createSessionRenamedEffect)(r)]}}function yr(t,n){return{success:!0,message:`Opening session picker...`,data:{triggerResumePicker:!0},effects:[(0,e.createSessionPickerRequestedEffect)()]}}const U=`.robota/budget.json`;function br(e){let t=(0,n.join)(e,U);if(!(0,r.existsSync)(t))return;let i;try{i=(0,r.readFileSync)(t,`utf-8`)}catch{return}try{return JSON.parse(i)}catch{return}}function xr(e,t){(0,r.mkdirSync)((0,n.join)(e,`.robota`),{recursive:!0}),(0,r.writeFileSync)((0,n.join)(e,U),JSON.stringify(t,null,2))}function Sr(e){let t=(0,n.join)(e,U);(0,r.existsSync)(t)&&(0,r.writeFileSync)(t,`{}`)}function Cr(t){let n=t.getSession(),r=(0,e.readCommandSessionInfo)(t),i=n.getSessionTokenUsage?.(),a=n.getModelId?.(),o=[`Session: ${r.sessionId}`,`Messages: ${r.messageCount}`],s={sessionId:r.sessionId,messageCount:r.messageCount};if(i){if(o.push(`Tokens: ${hr(i.inputTokens)} input / ${hr(i.outputTokens)} output`),s.inputTokens=i.inputTokens,s.outputTokens=i.outputTokens,a){let e=mr(a,i.inputTokens,i.outputTokens);if(e!==void 0){o.push(`Cost: ${H(e)} (${a})`),s.estimatedCostUsd=e;let n=br(t.getCwd());if(n?.monthly){let t=n.monthly-e,r=Math.min(100,Math.round(e/n.monthly*100));o.push(`Budget: ${H(t)} remaining of ${H(n.monthly)}/mo (${r}% used)`),s.budgetMonthly=n.monthly,s.budgetRemainingUsd=t}}}}else o.push(`Tokens: not yet available (no turns completed)`);return{lines:o,data:s}}function wr(e,t){let n=t.trim();if(n.startsWith(`budget`)){let t=n.slice(6).trim();if(t===`clear`)return Sr(e.getCwd()),{success:!0,message:`Monthly budget cleared.`};if(t===``){let t=br(e.getCwd());return t?.monthly?{success:!0,message:`Monthly budget: ${H(t.monthly)}`}:{success:!0,message:`No budget set. Use: /cost budget <amount>`}}let r=parseFloat(t);return!Number.isFinite(r)||r<=0?{success:!1,message:`Usage: /cost budget <amount> (e.g. /cost budget 5.00)`}:(xr(e.getCwd(),{monthly:r}),{success:!0,message:`Monthly budget set to ${H(r)}.`})}let{lines:r,data:i}=Cr(e);return{success:!0,message:r.join(`
|
|
54
|
+
`),data:i}}function Tr(t,n){let r=(0,e.validateCommandSessionReplayLog)(t);return{success:r.validation.ok,message:(0,e.formatCommandSessionReplayValidationReport)(r),data:{logFile:r.logFile,entryCount:r.entryCount,issueCount:r.validation.issues.length,ok:r.validation.ok}}}function W(){return{name:`clear`,displayName:`Clear History`,description:e.CLEAR_COMMAND_DESCRIPTION,source:`session`,modelInvocable:!1}}function G(){return{name:`rename`,displayName:`Rename Session`,description:e.RENAME_COMMAND_DESCRIPTION,source:`session`,modelInvocable:!1}}function K(){return{name:`resume`,displayName:`Resume Session`,description:e.RESUME_COMMAND_DESCRIPTION,source:`session`,modelInvocable:!1}}function q(){return{name:`cost`,displayName:`Session Cost`,description:e.COST_COMMAND_DESCRIPTION,source:`session`,modelInvocable:!1}}function J(){return{name:`validate-session`,displayName:`Validate Session`,description:e.VALIDATE_SESSION_COMMAND_DESCRIPTION,source:`session`,modelInvocable:!1}}function Er(){let e=W();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:_r}}function Dr(){let e=G();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:vr}}function Or(){let e=K();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:yr}}function kr(){let e=q();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:wr}}function Ar(){let e=J();return{name:e.name,displayName:e.displayName,description:e.description,requiresPermission:!1,userInvocable:!0,modelInvocable:!1,lifecycle:`inline`,execute:Tr}}var jr=class{name=`session`;getCommands(){return[W(),G(),K(),q(),J()]}};function Mr(){return{name:`agent-command-session`,commandSources:[new jr],systemCommands:[Er(),Dr(),Or(),kr(),Ar()]}}function Y(){return{name:`settings`,displayName:`Settings`,description:`Open transport settings — enable/disable transports and configure options`,source:`settings`,modelInvocable:!1}}function Nr(){let e=Y();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 Pr=class{name=`settings`;getCommands(){return[Y()]}};function Fr(){return{name:`agent-command-settings`,commandSources:[new Pr],systemCommands:[Nr()]}}const Ir=`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 Lr(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 Rr(e){let t=e.argumentHint?` ${e.argumentHint}`:``;return`- ${e.name}${t}: ${e.description}${Lr(e)}`}function zr(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(`
|
|
55
|
+
`):[`Registered skills:`,...e.map(Rr),``,`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(`
|
|
56
|
+
`)}function Br(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 Vr(e,t=``){let n=Br(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:zr(r),data:{skills:r,activationContract:{activateWith:`/skills <skill-name> [args]`,activationRequiredBeforeWorkflow:!0,metadataIsNotSkillContent:!0}}}}function X(){return{name:`skills`,displayName:`Skills`,description:Ir,source:`skills`,modelInvocable:!0,userInvocable:!0,argumentHint:`[list | <skill-name> [args]]`,safety:`read-only`}}function Hr(){let e=X();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:Vr}}var Ur=class{name=`skills`;getCommands(){return[X()]}};function Wr(t){let n=[new Ur];return n.push(new e.SkillCommandSource(t.cwd)),{name:`agent-command-skills`,commandSources:n,systemCommands:[Hr()]}}const Gr=[`Usage: /statusline on | off | reset | git on | git off`,`Fields: model, context, permission mode, message count, session name, thinking state, git branch.`].join(`
|
|
57
|
+
`);function Kr(t){let n=t.trim().toLowerCase().split(/\s+/).filter(e=>e.length>0),[r,i]=n;return r===`on`&&i===void 0?{success:!0,message:`Status line enabled.`,patch:{enabled:!0}}:r===`off`&&i===void 0?{success:!0,message:`Status line disabled.`,patch:{enabled:!1}}:r===`reset`&&i===void 0?{success:!0,message:`Status line settings reset.`,patch:{...e.DEFAULT_STATUS_LINE_COMMAND_SETTINGS}}:r===`git`&&i===`on`&&n.length===2?{success:!0,message:`Status line git branch shown.`,patch:{gitBranch:!0}}:r===`git`&&i===`off`&&n.length===2?{success:!0,message:`Status line git branch hidden.`,patch:{gitBranch:!1}}:{success:!1,message:Gr}}function qr(e,t){let n=Kr(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`,displayName:`Status Line`,description:e.STATUSLINE_COMMAND_DESCRIPTION,source:`statusline`,argumentHint:e.STATUSLINE_COMMAND_ARGUMENT_HINT,subcommands:(0,e.buildStatusLineCommandSubcommands)(`statusline`),modelInvocable:!1}}function Jr(){let e=Z();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:qr}}var Yr=class{name=`statusline`;getCommands(){return[Z()]}};function Xr(){return{name:`agent-command-statusline`,commandSources:[new Yr],systemCommands:[Jr()]}}const Zr=`Inspect Robota user-local storage and memory state.`,Qr=`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 $r(e){return e.length===0?`No user-local memory items.`:e.map(e=>`- ${e.category}/${e.key} (${e.enabled?`enabled`:`disabled`})`).join(`
|
|
58
|
+
`)}function $(e){if(e===void 0)throw Error(`User-local memory category is required.`);return e}async function ei(t,n){let r=await(0,e.listUserLocalMemoryItems)({activeRepositoryRoot:t});return{message:n.format===`json`?JSON.stringify(r,null,2):$r(r.items),success:!0,data:{list:r}}}async function ti(t,n){let[r,i,a]=n.positional,o=await(0,e.setUserLocalMemoryItem)({activeRepositoryRoot:t,category:$(r),key:i??``,value:a??``,summary:n.summary??``,source:n.source??``});return{message:`Stored user-local memory item ${o.category}/${o.key} at ${o.storageLocation}`,success:!0,data:{item:o}}}async function ni(t,n){let[r,i]=n.positional,a=await(0,e.inspectUserLocalMemoryItem)({activeRepositoryRoot:t,category:$(r),key:i??``});return{message:n.format===`json`?JSON.stringify(a,null,2):`${a.category}/${a.key}: ${a.summary}`,success:!0,data:{item:a}}}async function ri(t,n){let[r,i]=n.positional,a=await(0,e.disableUserLocalMemoryItem)({activeRepositoryRoot:t,category:$(r),key:i??``});return{message:`Disabled user-local memory item ${a.category}/${a.key}`,success:!0,data:{item:a}}}async function ii(t,n){let[r,i]=n.positional,a=await(0,e.deleteUserLocalMemoryItem)({activeRepositoryRoot:t,category:$(r),key:i??``});return{message:`Deleted user-local memory item ${a.category}/${a.key}`,success:!0,data:{result:a}}}async function ai(e,t){return(t.action??`list`)===`list`?ei(e,t):t.action===`set`?ti(e,t):t.action===`inspect`?ni(e,t):t.action===`disable`?ri(e,t):t.action===`delete`?ii(e,t):{message:Q,success:!1}}function oi(e){if(e===void 0||e===`text`)return`text`;if(e===`json`)return`json`;throw Error(`Unsupported user-local output format: ${e}`)}function si(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 ci(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=si(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:oi(n),summary:r,source:i}}function li(e){return e.trim().split(/\s+/).filter(Boolean)}function ui(e,t){let n=t.map(e=>`- ${e.category}`);return[`User-local storage root: ${e}`,`Categories:`,...n].join(`
|
|
59
|
+
`)}async function di(t,n){if((n.action??`list`)!==`list`)return{message:Q,success:!1};let r=await(0,e.inspectUserLocalStorage)({activeRepositoryRoot:t});return{message:n.format===`json`?JSON.stringify(r,null,2):ui(r.root,r.categories),success:!0,data:{root:r.root,categories:r.categories,inspection:r}}}async function fi(e,t){return t.target===`storage`?di(e,t):t.target===`memory`?ai(e,t):{message:Q,success:!1}}function pi(e){return e.includes(`ENOENT`)?`User-local memory item not found.`:e}async function mi(e){try{return await fi(e.cwd,ci(e.argv,{format:e.format,summary:e.summary,source:e.source}))}catch(e){return{message:pi(e instanceof Error?e.message:String(e)),success:!1}}}async function hi(e,t){try{return await fi(e.getCwd(),ci(li(t)))}catch(e){return{message:pi(e instanceof Error?e.message:String(e)),success:!1}}}function gi(){return{name:`user-local`,displayName:`User Config`,description:Zr,source:`user-local`,argumentHint:Qr,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 _i(){let e=gi();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:hi}}var vi=class{name=`user-local`;getCommands(){return[gi()]}};function yi(){return{name:`agent-command-user-local`,commandSources:[new vi],systemCommands:[_i()]}}function bi({cwd:e,providerDefinitions:t,providerSettingsAdapter:n}){return[Wr({cwd:e}),et(),xe(),Tt(),xt(),it(),De(),_t(),yi(),Me(),Ke(),Xe(),Mr(),Xn(),ur(),Xr(),zt(),Fr(),Vn({providerDefinitions:t,settings:n})]}function xi(t){let r=(0,a.homedir)(),o=(0,n.join)(r,`.robota`,`plugins`),s=(0,n.join)(r,`.robota`,`settings.json`),c=(e,t)=>(0,i.execSync)(e,{timeout:t.timeout,stdio:t.stdio??`pipe`}),l=new e.PluginSettingsStore(s),u=new e.MarketplaceClient({pluginsDir:o,exec:c});return{cwd:t,marketplace:u,installer:new e.BundlePluginInstaller({pluginsDir:o,settingsStore:l,marketplaceClient:u,exec:c}),loader:new e.BundlePluginLoader(o),settingsStore:l}}async function Si(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 Ci(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 wi(t,r,a){let[o,s]=r.split(`@`);if(!o||!s)throw Error(`Plugin ID must be in format: name@marketplace`);if(a===`project`){let r=(0,n.join)(t.cwd,`.robota`,`plugins`);await new e.BundlePluginInstaller({pluginsDir:r,settingsStore:t.settingsStore,marketplaceClient:t.marketplace,exec:(e,t)=>(0,i.execSync)(e,{timeout:t.timeout,stdio:t.stdio??`pipe`})}).install(o,s);return}await t.installer.install(o,s)}async function Ti(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 Ei(e){return e.marketplace.listMarketplaces().map(e=>({name:e.name,type:e.source.type}))}function Di(e){let t=xi(e);return{listInstalled:()=>Si(t),listAvailablePlugins:e=>Ci(t,e),install:(e,n)=>wi(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=>Ti(t,e),marketplaceUpdate:async e=>t.marketplace.updateMarketplace(e),marketplaceList:async()=>Ei(t),reloadPlugins:async()=>({loadedPluginCount:(await t.loader.loadAll()).length})}}const Oi=`plugin`;function ki(){return process.env.HOME??(0,a.homedir)()}function Ai(t){let r=new e.BundlePluginLoader((0,n.join)(ki(),`.robota`,`plugins`));try{let n=r.loadPluginsSync();return n.length===0?(t.replaceSource(Oi),0):(t.replaceSource(Oi,new e.PluginCommandSource(n)),n.length)}catch{return t.replaceSource(Oi),0}}exports.AgentCommandSource=be,exports.BackgroundCommandSource=Ee,exports.CLEAR_COMMAND_MESSAGE=gr,exports.CompactCommandSource=je,exports.ContextCommandSource=Ge,exports.ExitCommandSource=Ye,exports.HelpCommandSource=$e,exports.LanguageCommandSource=rt,exports.MemoryCommandSource=gt,exports.ModeCommandSource=bt,exports.PermissionsCommandSource=wt,exports.PluginManagerCommandSource=Rt,exports.ProviderCommandSource=zn,exports.RewindCommandSource=lr,exports.SKILLS_COMMAND_DESCRIPTION=Ir,exports.STATUSLINE_USAGE=Gr,exports.SessionCommandSource=jr,exports.SettingsCommandSource=Pr,exports.SkillsCommandSource=Ur,exports.StatusLineCommandSource=Yr,exports.USER_LOCAL_COMMAND_ARGUMENT_HINT=Qr,exports.USER_LOCAL_COMMAND_DESCRIPTION=Zr,exports.USER_LOCAL_COMMAND_USAGE=Q,exports.UserLocalCommandSource=vi,exports.createAgentCommandEntry=f,exports.createAgentCommandModule=xe,exports.createAgentSystemCommand=ye,exports.createBackgroundCommandEntry=we,exports.createBackgroundCommandModule=De,exports.createClearCommandEntry=W,exports.createCompactCommandEntry=p,exports.createCompactCommandModule=Me,exports.createContextCommandEntry=v,exports.createContextCommandModule=Ke,exports.createCostCommandEntry=q,exports.createDefaultCommandModules=bi,exports.createDefaultPluginCommandAdapter=Di,exports.createExitCommandEntry=y,exports.createExitCommandModule=Xe,exports.createHelpCommandEntry=b,exports.createHelpCommandModule=et,exports.createLanguageCommandEntry=x,exports.createLanguageCommandModule=it,exports.createMemoryCommandEntry=C,exports.createMemoryCommandModule=_t,exports.createModeCommandEntry=w,exports.createModeCommandModule=xt,exports.createPermissionsCommandEntry=T,exports.createPermissionsCommandModule=Tt,exports.createPluginCommandEntry=k,exports.createPluginCommandModule=zt,exports.createProviderCommandEntry=Rn,exports.createProviderCommandModule=Vn,exports.createProviderSetupFlow=j,exports.createReloadPluginsCommandEntry=A,exports.createRenameCommandEntry=G,exports.createResetCommandEntry=z,exports.createResetCommandModule=Xn,exports.createResumeCommandEntry=K,exports.createRewindCommandModule=ur,exports.createSessionCommandModule=Mr,exports.createSettingsCommandEntry=Y,exports.createSettingsCommandModule=Fr,exports.createSkillsCommandEntry=X,exports.createSkillsCommandModule=Wr,exports.createStatusLineCommandEntry=Z,exports.createStatusLineCommandModule=Xr,exports.createUserLocalCommandEntry=gi,exports.createUserLocalCommandModule=yi,exports.createValidateSessionCommandEntry=J,exports.ensureProviderConfig=Wn,exports.executeAgentCommand=he,exports.executeBackgroundCommand=Ce,exports.executeClearCommand=_r,exports.executeCompactCommand=ke,exports.executeContextCommand=Fe,exports.executeCostCommand=wr,exports.executeExitCommand=qe,exports.executeHelpCommand=Ze,exports.executeLanguageCommand=tt,exports.executeMemoryCommand=mt,exports.executeModeCommand=vt,exports.executePermissionsCommand=St,exports.executePluginCommand=Pt,exports.executeProviderCommand=jn,exports.executeReloadPluginsCommand=Ft,exports.executeRenameCommand=vr,exports.executeResetCommand=qn,exports.executeResumeCommand=yr,exports.executeRewindCommand=or,exports.executeSkillsCommand=Vr,exports.executeStatusLineCommand=qr,exports.executeUserLocalCommand=hi,exports.executeUserLocalDirectCommand=mi,exports.executeValidateSessionCommand=Tr,exports.formatProviderSetupChoiceLabel=P,exports.formatProviderSetupHelpLinks=F,exports.formatProviderSetupPromptLabel=Ut,exports.formatProviderSetupSelectionPrompt=Bt,exports.getProviderSetupStep=M,exports.reloadPluginCommandSource=Ai,exports.resolveProviderSetupSelection=Vt,exports.runProviderSetupPromptFlow=Ht,exports.runProviderStartupSetup=Un,exports.submitProviderSetupValue=N,exports.validateProviderSetupValue=I;
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CommandRegistry, IAgentJobHostContext, ICommand, ICommandHostContext, ICommandModule, ICommandPluginAdapter, ICommandResult, ICommandSource,
|
|
1
|
+
import { CommandRegistry, IAgentJobHostContext, ICommand, ICommandHostContext, ICommandModule, ICommandPluginAdapter, ICommandResult, ICommandSource, IProviderCommandModuleOptions, IProviderCommandModuleOptions as IProviderCommandModuleOptions$1, IProviderCommandModuleOptions as IProviderCommandModuleOptions$2, IProviderCommandSettingsAdapter, IProviderCommandSettingsAdapter as IProviderCommandSettingsAdapter$1, IProviderSetupInput, ISystemCommand, TSettingsScope } from "@robota-sdk/agent-framework";
|
|
2
2
|
import { IProviderDefinition, IProviderSetupHelpLink, IProviderSetupStepDefinition, ITerminalOutput, TProviderSetupField } from "@robota-sdk/agent-core";
|
|
3
3
|
|
|
4
4
|
//#region src/agent/agent-command-module.d.ts
|
|
@@ -113,19 +113,6 @@ declare function createModeCommandModule(): ICommandModule;
|
|
|
113
113
|
//#region src/mode/mode-command.d.ts
|
|
114
114
|
declare function executeModeCommand(context: ICommandHostContext, args: string): ICommandResult;
|
|
115
115
|
//#endregion
|
|
116
|
-
//#region src/model/model-command-module.d.ts
|
|
117
|
-
declare function createModelCommandEntry(options?: IModelCommandModuleOptions): ICommand;
|
|
118
|
-
declare class ModelCommandSource implements ICommandSource {
|
|
119
|
-
private readonly options?;
|
|
120
|
-
readonly name = "model";
|
|
121
|
-
constructor(options?: IModelCommandModuleOptions | undefined);
|
|
122
|
-
getCommands(): ICommand[];
|
|
123
|
-
}
|
|
124
|
-
declare function createModelCommandModule(options?: IModelCommandModuleOptions): ICommandModule;
|
|
125
|
-
//#endregion
|
|
126
|
-
//#region src/model/model-command.d.ts
|
|
127
|
-
declare function executeModelCommand(_context: ICommandHostContext, args: string, options?: IModelCommandModuleOptions): Promise<ICommandResult>;
|
|
128
|
-
//#endregion
|
|
129
116
|
//#region src/permissions/permissions-command-module.d.ts
|
|
130
117
|
declare function createPermissionsCommandEntry(): ICommand;
|
|
131
118
|
declare class PermissionsCommandSource implements ICommandSource {
|
|
@@ -239,7 +226,7 @@ declare const CLEAR_COMMAND_MESSAGE = "Conversation cleared.";
|
|
|
239
226
|
declare function executeClearCommand(context: ICommandHostContext, _args: string): ICommandResult;
|
|
240
227
|
declare function executeRenameCommand(_context: ICommandHostContext, args: string): ICommandResult;
|
|
241
228
|
declare function executeResumeCommand(_context: ICommandHostContext, _args: string): ICommandResult;
|
|
242
|
-
declare function executeCostCommand(context: ICommandHostContext,
|
|
229
|
+
declare function executeCostCommand(context: ICommandHostContext, args: string): ICommandResult;
|
|
243
230
|
declare function executeValidateSessionCommand(context: ICommandHostContext, _args: string): ICommandResult;
|
|
244
231
|
//#endregion
|
|
245
232
|
//#region src/session/session-command-module.d.ts
|
|
@@ -319,5 +306,5 @@ declare function createDefaultPluginCommandAdapter(cwd: string): ICommandPluginA
|
|
|
319
306
|
//#region src/plugins/default-plugin-command-source-loader.d.ts
|
|
320
307
|
declare function reloadPluginCommandSource(registry: CommandRegistry): number;
|
|
321
308
|
//#endregion
|
|
322
|
-
export { AgentCommandSource, BackgroundCommandSource, CLEAR_COMMAND_MESSAGE, CompactCommandSource, ContextCommandSource, ExitCommandSource, HelpCommandSource, type IDefaultCommandModulesOptions, type IEnsureProviderConfigOptions, type IProviderCommandModuleOptions, type IProviderCommandSettingsAdapter, type IProviderSetupFlowOptions, type IProviderSetupFlowState, type IProviderSetupPromptStep, type IProviderStartupContext, type IUserLocalDirectCommandOptions, LanguageCommandSource, MemoryCommandSource, ModeCommandSource,
|
|
309
|
+
export { AgentCommandSource, BackgroundCommandSource, CLEAR_COMMAND_MESSAGE, CompactCommandSource, ContextCommandSource, ExitCommandSource, HelpCommandSource, type IDefaultCommandModulesOptions, type IEnsureProviderConfigOptions, type IProviderCommandModuleOptions, type IProviderCommandSettingsAdapter, type IProviderSetupFlowOptions, type IProviderSetupFlowState, type IProviderSetupPromptStep, type IProviderStartupContext, type IUserLocalDirectCommandOptions, LanguageCommandSource, MemoryCommandSource, ModeCommandSource, PermissionsCommandSource, PluginManagerCommandSource, ProviderCommandSource, RewindCommandSource, SKILLS_COMMAND_DESCRIPTION, STATUSLINE_USAGE, SessionCommandSource, SettingsCommandSource, SkillsCommandSource, StatusLineCommandSource, type TPromptInput, type TProviderSetupFlowSubmitResult, type TProviderSetupType, USER_LOCAL_COMMAND_ARGUMENT_HINT, USER_LOCAL_COMMAND_DESCRIPTION, USER_LOCAL_COMMAND_USAGE, UserLocalCommandSource, createAgentCommandEntry, createAgentCommandModule, createAgentSystemCommand, createBackgroundCommandEntry, createBackgroundCommandModule, createClearCommandEntry, createCompactCommandEntry, createCompactCommandModule, createContextCommandEntry, createContextCommandModule, createCostCommandEntry, createDefaultCommandModules, createDefaultPluginCommandAdapter, createExitCommandEntry, createExitCommandModule, createHelpCommandEntry, createHelpCommandModule, createLanguageCommandEntry, createLanguageCommandModule, createMemoryCommandEntry, createMemoryCommandModule, createModeCommandEntry, createModeCommandModule, createPermissionsCommandEntry, createPermissionsCommandModule, createPluginCommandEntry, createPluginCommandModule, createProviderCommandEntry, createProviderCommandModule, createProviderSetupFlow, createReloadPluginsCommandEntry, createRenameCommandEntry, createResetCommandEntry, createResetCommandModule, createResumeCommandEntry, createRewindCommandModule, createSessionCommandModule, createSettingsCommandEntry, createSettingsCommandModule, createSkillsCommandEntry, createSkillsCommandModule, createStatusLineCommandEntry, createStatusLineCommandModule, createUserLocalCommandEntry, createUserLocalCommandModule, createValidateSessionCommandEntry, ensureProviderConfig, executeAgentCommand, executeBackgroundCommand, executeClearCommand, executeCompactCommand, executeContextCommand, executeCostCommand, executeExitCommand, executeHelpCommand, executeLanguageCommand, executeMemoryCommand, executeModeCommand, executePermissionsCommand, executePluginCommand, executeProviderCommand, executeReloadPluginsCommand, executeRenameCommand, executeResetCommand, executeResumeCommand, executeRewindCommand, executeSkillsCommand, executeStatusLineCommand, executeUserLocalCommand, executeUserLocalDirectCommand, executeValidateSessionCommand, formatProviderSetupChoiceLabel, formatProviderSetupHelpLinks, formatProviderSetupPromptLabel, formatProviderSetupSelectionPrompt, getProviderSetupStep, reloadPluginCommandSource, resolveProviderSetupSelection, runProviderSetupPromptFlow, runProviderStartupSetup, submitProviderSetupValue, validateProviderSetupValue };
|
|
323
310
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/agent/agent-command-module.ts","../../src/agent/agent-command.ts","../../src/default/default-command-modules.ts","../../src/background/background-command-module.ts","../../src/background/background-command.ts","../../src/compact/compact-command-module.ts","../../src/compact/compact-command.ts","../../src/context/context-command-module.ts","../../src/context/context-command.ts","../../src/exit/exit-command-module.ts","../../src/exit/exit-command.ts","../../src/help/help-command-module.ts","../../src/help/help-command.ts","../../src/language/language-command-module.ts","../../src/language/language-command.ts","../../src/memory/memory-command-module.ts","../../src/memory/memory-command.ts","../../src/mode/mode-command-module.ts","../../src/mode/mode-command.ts","../../src/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/agent/agent-command-module.ts","../../src/agent/agent-command.ts","../../src/default/default-command-modules.ts","../../src/background/background-command-module.ts","../../src/background/background-command.ts","../../src/compact/compact-command-module.ts","../../src/compact/compact-command.ts","../../src/context/context-command-module.ts","../../src/context/context-command.ts","../../src/exit/exit-command-module.ts","../../src/exit/exit-command.ts","../../src/help/help-command-module.ts","../../src/help/help-command.ts","../../src/language/language-command-module.ts","../../src/language/language-command.ts","../../src/memory/memory-command-module.ts","../../src/memory/memory-command.ts","../../src/mode/mode-command-module.ts","../../src/mode/mode-command.ts","../../src/permissions/permissions-command-module.ts","../../src/permissions/permissions-command.ts","../../src/plugin/plugin-command-module.ts","../../src/plugin/plugin-command.ts","../../src/provider/provider-command-module.ts","../../src/provider/provider-command-execution.ts","../../src/provider/provider-setup-flow.ts","../../src/provider/provider-startup.ts","../../src/reset/reset-command-module.ts","../../src/reset/reset-command.ts","../../src/rewind/rewind-command-module.ts","../../src/rewind/rewind-command.ts","../../src/session/session-command.ts","../../src/session/session-command-module.ts","../../src/settings/settings-command-module.ts","../../src/skills/skills-command-module.ts","../../src/skills/skills-command.ts","../../src/statusline/statusline-command-module.ts","../../src/statusline/statusline-command.ts","../../src/user-local/user-local-command-module.ts","../../src/user-local/user-local-command-constants.ts","../../src/user-local/user-local-command.ts","../../src/plugins/default-plugin-command-adapter.ts","../../src/plugins/default-plugin-command-source-loader.ts"],"mappings":"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"}
|