@robota-sdk/agent-cli 3.0.0-beta.64 → 3.0.0-beta.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/bin.js +6 -6
- package/dist/node/bin.js.map +1 -1
- package/dist/node/index.cjs +6 -6
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +7 -7
- package/dist/node/index.js.map +1 -1
- package/package.json +8 -8
package/dist/node/index.cjs
CHANGED
|
@@ -30,15 +30,15 @@ Examples:
|
|
|
30
30
|
`,`utf8`)}function S(e){return(0,n.existsSync)(e)?((0,n.unlinkSync)(e),!0):!1}function C(e){let t=ne();return[(0,r.join)(t,`.robota`,`settings.json`),(0,r.join)(t,`.claude`,`settings.json`),(0,r.join)(e,`.robota`,`settings.json`),(0,r.join)(e,`.robota`,`settings.local.json`),(0,r.join)(e,`.claude`,`settings.json`),(0,r.join)(e,`.claude`,`settings.local.json`)]}function ne(){return process.env.HOME??process.env.USERPROFILE??`/`}function w(e){return(0,a.readMergedProviderSettingsFromPaths)(C(e))}function T(e,t={}){let n=(0,a.resolveActiveProvider)(w(e),t.providerOverride,D(t));if(n!==void 0)return n;throw Error("No provider configuration found. Run `robota` to set up.")}function E(e,t,n={}){let r=D(n),i=T(e,{...n,providerDefinitions:r}),a=t??i.model;return(0,c.createProviderFromConfig)({...i,model:a},r)}function D(t){return t.providerDefinitions??e.r}function O(e,t={}){let n=t.settingsPaths??C(e),r=oe(n)??n[0];if(r===void 0)throw Error(`No settings path available for provider update`);return r}function k(e){return b(e)}function A(e,t,n={}){let r=(0,a.mergeProviderPatch)(k(e),(0,a.buildProviderSetupPatch)(t,n));return x(e,r),r}function j(e,t,n={}){let r=k(e),i=r.providers?.[t]!==void 0,o=n.knownProviders?.[t]!==void 0,s=i||o?{...r,currentProvider:t}:(0,a.setCurrentProvider)(r,t);return x(e,s),s}function re(e,t,n={}){let r=n.settingsPaths??C(e),i=(0,a.readMergedProviderSettingsFromPaths)(r),o=n.providerOverride??i.currentProvider;if(typeof o!=`string`)throw Error(`Cannot update model: no active provider profile. Set "currentProvider" in settings.`);return ie(r,o,t)}function ie(e,t,n){let r=ae(e,t)??e[0];if(r===void 0)throw Error(`No settings path available for model update`);let i=k(r),a=i.providers??{},o=a[t]??{},s={...i,providers:{...a,[t]:{...o,model:n}}};return x(r,s),{settingsPath:r,settings:s,profileName:t}}function ae(e,t){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r!==void 0&&k(r).providers?.[t]!==void 0)return r}}function oe(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&k(n).currentProvider!==void 0)return n}}function M(e,t){if(t===void 0||t===`user`)return y();if(t===`project-local`)return(0,r.join)(e,`.robota`,`settings.local.json`);throw Error(`Invalid --settings-scope "${t}". Valid: user | project-local`)}function se(t,n,r=e.r){let i=M(t,n.settingsScope);return n.configureProvider?(A(i,le(n),{providerDefinitions:r}),process.stdout.write(`Provider profile saved to ${i}\n`),!n.printMode&&n.positional.length===0):n.provider&&n.setCurrent?(j(n.settingsScope===void 0?O(t):i,n.provider,{knownProviders:w(t).providers}),process.stdout.write(`Current provider set to ${n.provider}\n`),!n.printMode&&n.positional.length===0):!1}async function ce(t,n,r,i=e.r){let o=w(t);if((0,a.checkSettingsDocument)(n.provider===void 0?o:{...o,currentProvider:n.provider},i)===`valid`)return;if(!fe())throw Error(P(i));await N(t,ue(t,n),r,i);let s=w(t);if((0,a.checkSettingsDocument)(n.provider===void 0?s:{...s,currentProvider:n.provider},i)!==`valid`)throw Error(P(i))}async function N(t,n,r,i=e.r){let a=(0,o.resolveProviderSetupSelection)(await r((0,o.formatProviderSetupSelectionPrompt)(i)),i),s=M(t,n.settingsScope);A(s,await(0,o.runProviderSetupPromptFlow)(a,r,i,{existingProfileNames:Object.keys(w(t).providers??{})}),{providerDefinitions:i});let c=await r(` Response language (ko/en/ja/zh, default: en): `);if(c){let e=b(s);e.language=c,x(s,e)}process.stdout.write(`\n Config saved to ${s}\n\n`)}function le(e){let t=e.providerType??e.configureProvider;if(!e.configureProvider||!t)throw Error(`--configure-provider requires a provider profile and --type`);return{profile:e.configureProvider,type:t,...e.model!==void 0&&{model:e.model},...e.apiKey!==void 0&&{apiKey:e.apiKey},...e.apiKeyEnv!==void 0&&{apiKeyEnv:e.apiKeyEnv},...e.baseURL!==void 0&&{baseURL:e.baseURL},setCurrent:e.setCurrent}}function ue(e,t){if(t.settingsScope!==void 0||t.provider!==void 0)return t;let n=de(C(e));if(n===void 0)return t;let i=(0,r.join)(e,`.robota`,`settings.json`),a=(0,r.join)(e,`.robota`,`settings.local.json`);return n===i||n===a?{...t,settingsScope:`project-local`}:t}function de(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&typeof b(n).currentProvider==`string`)return n}}function fe(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function P(t=e.r){return[`No provider configuration found.`,"Run `robota --configure` in an interactive terminal, or configure a provider:",`Supported providers: ${(0,l.formatSupportedProviderTypes)(t)}`,...t.map(pe)].join(`
|
|
31
31
|
`)}function pe(e){return` ${[`robota --configure-provider ${e.type}`,`--type ${e.type}`,...e.defaults?.baseURL===void 0?[]:[`--base-url <url>`],`--model <model>`,...e.requiresApiKey===!0?[`--api-key-env <ENV_NAME>`]:[],`--set-current`].join(` `)}`}var me=class{entries=new Map;settingsPath;constructor(e){this.settingsPath=e}register(e){this.entries.set(e.name,e)}getAll(){let e=this.readTransportSettings();return Array.from(this.entries.values()).map(t=>({transport:t,config:this.resolveConfig(t,e[t.name])}))}getEnabled(){return this.getAll().filter(e=>e.config.enabled).map(e=>e.transport)}async setEnabled(e,t){let n=b(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,x(this.settingsPath,n)}async setOptions(e,t){let n=b(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,x(this.settingsPath,n)}async startAll(e){let t=this.getEnabled();for(let n of t)n.attach(e),await n.start()}async stopAll(){for(let e of this.entries.values())await e.stop()}resolveConfig(e,t){return{enabled:t?.enabled??e.defaultEnabled,options:t?.options??{}}}readTransportSettings(){let e=b(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};function he(e,t,n,r,i){switch(e.type){case`ready`:t();break;case`result`:n(e.output);break;case`error`:r(new c.BackgroundTaskError(`runner`,e.message));break;case`cancelled`:r(new c.BackgroundTaskError(`runner`,e.reason??`Subagent worker cancelled`));break;case`text_delta`:i?.({type:`background_task_text_delta`,delta:e.delta});break;case`tool_start`:i?.({type:`background_task_tool_start`,toolName:e.toolName,firstArg:F(e.toolArgs)});break;case`tool_end`:i?.({type:`background_task_tool_end`,toolName:e.toolName,success:e.success});break;default:r(new c.BackgroundTaskError(`runner`,`Unhandled subagent worker message`))}}function F(e){if(!e)return;let t=Object.values(e)[0];if(t!==void 0)return typeof t==`object`?JSON.stringify(t):String(t)}function I(e,t){return new Promise((n,r)=>{if(!e.connected){r(new c.BackgroundTaskError(`crash`,`Subagent worker IPC channel is closed`));return}e.send(t,e=>{if(e){r(e);return}n()})})}async function L(e,t){e.child.connected&&await I(e.child,{type:`cancel`,reason:t}).catch(()=>void 0),e.killTimer=setTimeout(()=>{e.child.killed||e.child.kill(`SIGTERM`)},e.killGraceMs)}function R(e){return new Promise((t,n)=>{new ge(e,t,n).start()})}var ge=class{options;resolve;reject;settled=!1;started=!1;timeoutTimer;constructor(e,t,n){this.options=e,this.resolve=t,this.reject=n,this.timeoutTimer=ve(this.options.runtime,e=>this.rejectOnce(e))}start(){let{child:e}=this.options.runtime;e.on(`message`,this.onMessage),e.on(`error`,this.onError),e.on(`exit`,this.onExit),e.once(`spawn`,()=>{setImmediate(this.startWorker)})}startWorker=()=>{if(this.started)return;this.started=!0;let{child:e}=this.options.runtime;I(e,{type:`start`,payload:this.options.payload}).catch(e=>{this.rejectOnce(e instanceof Error?e:Error(String(e)))})};onMessage=t=>{if(!e.t(t)){this.rejectOnce(new c.BackgroundTaskError(`runner`,`Received malformed subagent worker message`));return}let{job:n}=this.options.runtime;he(t,this.startWorker,this.resolveOnce,this.rejectOnce,n.emit)};onError=e=>{this.rejectOnce(new c.BackgroundTaskError(`crash`,e.message))};onExit=(e,t)=>{this.settled||this.rejectOnce(new c.BackgroundTaskError(`crash`,be(e,t)))};resolveOnce=e=>{if(this.settled)return;this.settled=!0,this.clearTimers(),this.cleanup();let{runtime:t,resolveTranscriptPath:n}=this.options;this.resolve(ye(t.job,e,n))};rejectOnce=e=>{this.settled||(this.settled=!0,this.clearTimers(),this.cleanup(),this.reject(e))};clearTimers(){this.timeoutTimer&&clearTimeout(this.timeoutTimer),this.options.runtime.killTimer&&clearTimeout(this.options.runtime.killTimer)}cleanup(){let{child:e}=this.options.runtime;e.off(`message`,this.onMessage),e.off(`error`,this.onError),e.off(`exit`,this.onExit)}};function _e(e){let t=!1,n=()=>{};return{promise:new Promise((e,t)=>{n=t}),reject(r){t||(t=!0,n(new c.BackgroundTaskError(`runner`,r??`Subagent job cancelled: ${e}`)))}}}function ve(e,t){if(e.job.request.timeoutMs)return setTimeout(()=>{L(e,`Subagent worker timed out`),t(new c.BackgroundTaskError(`timeout`,`Subagent worker timed out`))},e.job.request.timeoutMs)}function ye(e,t,n){let r=n(e);return{jobId:e.jobId,output:t,...r?{metadata:{transcriptPath:r,logPath:r}}:{}}}function be(e,t){return`Subagent worker exited before result: ${t===null?`exit code ${e===null?`unknown`:e}`:`signal ${t}`}`}function z(e={}){return t=>{let n=new B(t,e);return e.worktreeIsolation===!1?n:(0,c.createWorktreeSubagentRunner)({runner:n,worktreeAdapter:e.worktreeAdapter??(0,c.createGitWorktreeIsolationAdapter)(),hooks:t.config.hooks,hookTypeExecutors:t.hookTypeExecutors})}}var B=class{deps;workerPath;execArgv;killGraceMs;providerConfig;env;logsDir;constructor(e,t={}){this.deps=e,this.workerPath=t.workerPath??we(),this.execArgv=t.execArgv,this.killGraceMs=t.killGraceMs??2e3,this.providerConfig=t.providerConfig,this.env=t.env,this.logsDir=t.logsDir}start(e){let n=(0,t.fork)(this.workerPath,[],{cwd:e.request.cwd,env:{...process.env,...this.env??{}},execArgv:this.execArgv??Te(this.workerPath),stdio:[`ignore`,`ignore`,`ignore`,`ipc`]}),r={job:e,child:n,killGraceMs:this.killGraceMs},i=R({runtime:r,payload:this.createStartPayload(e),resolveTranscriptPath:e=>this.resolveTranscriptPath(e)}),a=_e(e.jobId);i.catch(()=>void 0);let o=Promise.race([i,a.promise]),s=this.resolveTranscriptPath(e);return{jobId:e.jobId,...n.pid!==void 0&&{pid:n.pid},...s!==void 0&&{transcriptPath:s,logPath:s},result:o,cancel:async e=>{a.reject(e),await L(r,e)},send:async e=>{await I(n,{type:`send`,prompt:e})},...s!==void 0&&{readLog:async t=>Ee(e.jobId,s,t)}}}createStartPayload(e){let t=xe(e.request.type,this.deps.customAgentRegistry);return{jobId:e.jobId,request:e.request,agentDefinition:Se(t,e),parentConfig:this.deps.config,parentContext:this.deps.context,providerProfile:Ce(this.providerConfig,this.deps,e),permissionMode:this.deps.permissionMode,...this.logsDir?{logsDir:this.logsDir}:{}}}resolveTranscriptPath(e){if(this.logsDir)return(0,r.join)(this.logsDir,e.request.parentSessionId,`subagents`,`${e.jobId}.jsonl`)}};function xe(e,t){let n=t?.(e)??(0,a.getBuiltInAgent)(e);if(!n)throw new c.BackgroundTaskError(`validation`,`Unknown agent type: ${e}`);return n}function Se(e,t){return{...e,...t.request.model?{model:t.request.model}:{},...t.request.allowedTools?{tools:t.request.allowedTools}:{},...t.request.disallowedTools?{disallowedTools:t.request.disallowedTools}:{}}}function Ce(e,t,n){let r=e??t.config.provider;return{profileName:t.config.currentProvider,type:r.name,model:n.request.model??r.model,apiKey:r.apiKey,baseURL:r.baseURL,timeout:r.timeout,options:r.options}}function we(){let e=process.argv[1]??``,t=e?(0,r.dirname)(e):process.cwd(),i=e.endsWith(`.ts`)||e.endsWith(`.tsx`)?`.ts`:`.js`,a=[(0,r.join)(t,`subagents`,`child-process-subagent-worker${i}`),(0,r.join)(t,`child-process-subagent-worker${i}`)];for(let e of a)if((0,n.existsSync)(e))return e;return a[0]}function Te(e){return!e.endsWith(`.ts`)||process.execArgv.some(e=>e.includes(`tsx`))?process.execArgv:[...process.execArgv,`--import`,`tsx`]}function Ee(e,t,r){return(0,n.existsSync)(t)?(0,c.createBackgroundTaskLogPage)(e,(0,n.readFileSync)(t,`utf8`).split(/\r?\n/).filter(Boolean),r):{taskId:e,cursor:r,lines:[]}}function De(e,t){let n=V(e),r=V(t);if(n===void 0||r===void 0)return Math.sign(e.localeCompare(t));let i=U(n.major,r.major)||U(n.minor,r.minor)||U(n.patch,r.patch);return i===0?ke(n.prerelease,r.prerelease):i}function Oe(e,t){return De(e,t)>0}function V(e){let[t,n]=(e.trim().replace(/^v/,``).split(`+`)[0]??``).split(`-`,2),[r,i,a]=t.split(`.`),o=H(r),s=H(i),c=H(a);if(!(o===void 0||s===void 0||c===void 0))return{major:o,minor:s,patch:c,prerelease:n?n.split(`.`):[]}}function H(e){if(!(e===void 0||!/^\d+$/.test(e)))return Number(e)}function U(e,t){return Math.sign(e-t)}function ke(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=Ae(n,i);if(a!==0)return a}return 0}function Ae(e,t){let n=H(e),r=H(t);return n!==void 0&&r!==void 0?U(n,r):n===void 0?r===void 0?Math.sign(e.localeCompare(t)):1:-1}function je(e=process.env.HOME??process.env.USERPROFILE??`/`){return(0,r.join)(e,`.robota`,`update-check.json`)}function Me(e){if((0,n.existsSync)(e))try{return Ve(JSON.parse((0,n.readFileSync)(e,`utf8`)))}catch{return}}function Ne(e,t){(0,n.mkdirSync)((0,r.dirname)(e),{recursive:!0}),(0,n.writeFileSync)(e,JSON.stringify(t,null,2)+`
|
|
32
32
|
`,`utf8`)}async function W(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??je(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=Me(n);if(a!==void 0&&Re(a,r,i,t))return Le(a,e.currentVersion)}try{let i=await ze({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return G(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i}),q(e.currentVersion,i)}catch(i){let a=i instanceof Error?i.message:String(i);return G(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:a}),{status:`error`,errorMessage:a}}}function G(e,t){try{Ne(e,t)}catch{}}async function Pe(e){let t=await W(e);return t.status===`update_available`?t.notice:void 0}function Fe(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function K(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function Ie(e){return e.status===`update_available`?K(e.notice):e.status===`current`?`Robota is up to date (${e.currentVersion}).`:e.status===`skipped`?`Robota update check skipped.`:`Robota update check failed: ${e.errorMessage}`}function Le(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:q(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function q(e,t){return Oe(t,e)?{status:`update_available`,notice:{currentVersion:e,latestVersion:t,installCommand:`npm install -g '@robota-sdk/agent-cli@latest'`}}:{status:`current`,currentVersion:e,latestVersion:t}}function Re(e,t,n,r){if(e.packageName!==r)return!1;let i=Date.parse(e.checkedAt);return Number.isFinite(i)?t.getTime()-i<n:!1}async function ze(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=Be(e.registryUrl,e.packageName),r=await e.fetchImpl(n,{headers:{accept:`application/json`},signal:t.signal});if(!r.ok)throw Error(`registry responded with HTTP ${r.status}`);let i=(await r.json())[`dist-tags`]?.latest;if(typeof i!=`string`||i.trim().length===0)throw Error(`registry metadata is missing dist-tags.latest`);return i}finally{clearTimeout(n)}}function Be(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function Ve(e){if(!He(e))return;let t=e;if(typeof t.packageName==`string`&&typeof t.checkedAt==`string`&&typeof t.currentVersion==`string`&&(t.latestVersion===void 0||typeof t.latestVersion==`string`)&&(t.errorMessage===void 0||typeof t.errorMessage==`string`))return{packageName:t.packageName,checkedAt:t.checkedAt,currentVersion:t.currentVersion,...t.latestVersion!==void 0&&{latestVersion:t.latestVersion},...t.errorMessage!==void 0&&{errorMessage:t.errorMessage}}}function He(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const J={...a.DEFAULT_STATUS_LINE_COMMAND_SETTINGS};function Ue(e){let t=e.statusline;return Ge(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:J.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:J.gitBranch}:{...J}}function We(e,t){let n=b(e),r={...Ue(n),...t};return n.statusline=r,x(e,n),r}function Ge(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Ke(e){try{let t=qe(e);if(!t)return;let i=(0,n.readFileSync)((0,r.join)(t,`HEAD`),`utf8`).trim();if(!i)return;if(i.startsWith(`ref: `)){let e=i.slice(5).trim();return e.startsWith(`refs/heads/`)?e.slice(11):e}return i.slice(0,7)}catch{return}}function qe(e){let t=(0,r.resolve)(e),n=(0,r.dirname)(t);for(;n!==t;){let e=Y((0,r.join)(t,`.git`),t);if(e)return e;t=n,n=(0,r.dirname)(t)}return Y((0,r.join)(t,`.git`),t)}function Y(e,t){if(!(0,n.existsSync)(e))return;let i=(0,n.lstatSync)(e);if(i.isDirectory())return e;if(!i.isFile())return;let a=(0,n.readFileSync)(e,`utf8`).trim();if(!a.startsWith(`gitdir:`))return;let o=a.slice(7).trim();return(0,r.isAbsolute)(o)?o:(0,r.resolve)(t,o)}const X=`plugin`;function Je(){return process.env.HOME??(0,p.homedir)()}function Z(e){let t=new a.BundlePluginLoader((0,r.join)(Je(),`.robota`,`plugins`));try{let n=t.loadPluginsSync();return n.length===0?(e.replaceSource(X),0):(e.replaceSource(X,new a.PluginCommandSource(n)),n.length)}catch{return e.replaceSource(X),0}}function Ye(e){let n=(0,p.homedir)(),i=(0,r.join)(n,`.robota`,`plugins`),o=(0,r.join)(n,`.robota`,`settings.json`),s=(e,n)=>(0,t.execSync)(e,{timeout:n.timeout,stdio:n.stdio??`pipe`}),c=new a.PluginSettingsStore(o),l=new a.MarketplaceClient({pluginsDir:i,exec:s});return{cwd:e,marketplace:l,installer:new a.BundlePluginInstaller({pluginsDir:i,settingsStore:c,marketplaceClient:l,exec:s}),loader:new a.BundlePluginLoader(i),settingsStore:c}}async function Xe(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 Ze(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 Qe(e,n,i){let[o,s]=n.split(`@`);if(!o||!s)throw Error(`Plugin ID must be in format: name@marketplace`);if(i===`project`){let n=(0,r.join)(e.cwd,`.robota`,`plugins`);await new a.BundlePluginInstaller({pluginsDir:n,settingsStore:e.settingsStore,marketplaceClient:e.marketplace,exec:(e,n)=>(0,t.execSync)(e,{timeout:n.timeout,stdio:n.stdio??`pipe`})}).install(o,s);return}await e.installer.install(o,s)}async function $e(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 et(e){return e.marketplace.listMarketplaces().map(e=>({name:e.name,type:e.source.type}))}function tt(e){let t=Ye(e);return{listInstalled:()=>Xe(t),listAvailablePlugins:e=>Ze(t,e),install:(e,n)=>Qe(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=>$e(t,e),marketplaceUpdate:async e=>t.marketplace.updateMarketplace(e),marketplaceList:async()=>et(t),reloadPlugins:async()=>({loadedPluginCount:(await t.loader.loadAll()).length})}}async function nt(e,t){if(e.positional[0]!==`user-local`)return!1;let n=await(0,o.executeUserLocalDirectCommand)({cwd:t,argv:e.positional.slice(1),format:e.format,summary:e.summary,source:e.source}),r=n.message.endsWith(`
|
|
33
|
-
`)?n.message:`${n.message}\n`;return n.success||(process.stderr.write(r),process.exit(1)),process.stdout.write(r),!0}function Q(){try{let e=(0,r.dirname)((0,i.fileURLToPath)(require(`url`).pathToFileURL(__filename).href)),t=[(0,r.join)(e,`..`,`..`,`package.json`),(0,r.join)(e,`..`,`package.json`)];for(let e of t)try{let t=(0,n.readFileSync)(e,`utf-8`),r=JSON.parse(t);if(r.version!==void 0&&r.name!==void 0)return r.version}catch{}return`0.0.0`}catch{return`0.0.0`}}function $(e,t=!1){return new Promise((n,r)=>{process.stdout.write(e);let i=``,a=process.stdin,o=a.isRaw;if(!a.isTTY){r(Error(`Cannot prompt for input: stdin is not a TTY.
|
|
33
|
+
`)?n.message:`${n.message}\n`;return n.success||(process.stderr.write(r),process.exit(1)),process.stdout.write(r),!0}function Q(){return[{label:`plan`,value:`plan`,description:`Plan only, no execution`},{label:`default`,value:`default`,description:`Ask before risky actions`},{label:`acceptEdits`,value:`acceptEdits`,description:`Auto-approve file edits`},{label:`bypassPermissions`,value:`bypassPermissions`,description:`Skip all permission checks`}]}function rt(){return[{label:`ko Korean`,value:`ko`,description:`한국어`},{label:`en English`,value:`en`,description:`English`},{label:`ja Japanese`,value:`ja`,description:`日本語`},{label:`zh Chinese`,value:`zh`,description:`中文`}]}function it(){return[{label:`current`,value:`current`,description:`Show current provider`},{label:`list`,value:`list`,description:`List available providers`},{label:`use`,value:`use`,description:`Switch to a provider`},{label:`add`,value:`add`,description:`Add a new provider`},{label:`test`,value:`test`,description:`Test provider connection`}]}const at={agent:void 0,background:void 0,clear:{onMissingArgs:`confirm`,message:`Clear conversation history?`},compact:void 0,context:void 0,cost:void 0,exit:{onMissingArgs:`confirm`,message:`Exit the session?`},help:void 0,language:{onMissingArgs:`picker`,getItems:rt},memory:void 0,mode:{onMissingArgs:`picker`,getItems:Q},model:void 0,permissions:void 0,plugin:void 0,provider:{onMissingArgs:`picker`,getItems:it},rename:void 0,reset:void 0,resume:void 0,rewind:void 0,settings:void 0,skills:void 0,statusline:void 0,"user-local":void 0,"validate-session":void 0};function ot(e){return at[e]}function st(){try{let e=(0,r.dirname)((0,i.fileURLToPath)(require(`url`).pathToFileURL(__filename).href)),t=[(0,r.join)(e,`..`,`..`,`package.json`),(0,r.join)(e,`..`,`package.json`)];for(let e of t)try{let t=(0,n.readFileSync)(e,`utf-8`),r=JSON.parse(t);if(r.version!==void 0&&r.name!==void 0)return r.version}catch{}return`0.0.0`}catch{return`0.0.0`}}function $(e,t=!1){return new Promise((n,r)=>{process.stdout.write(e);let i=``,a=process.stdin,o=a.isRaw;if(!a.isTTY){r(Error(`Cannot prompt for input: stdin is not a TTY.
|
|
34
34
|
Set your API key via environment variable instead:
|
|
35
35
|
ANTHROPIC_API_KEY=<key> robota
|
|
36
36
|
OPENAI_API_KEY=<key> robota`));return}a.setRawMode(!0),a.resume(),a.setEncoding(`utf8`);let s=e=>{for(let r of e)if(r===`\r`||r===`
|
|
37
37
|
`){a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
|
|
38
38
|
`),n(i.trim());return}else r===``||r===`\b`?i.length>0&&(i=i.slice(0,-1),process.stdout.write(`\b \b`)):r===``?(a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
|
|
39
|
-
`),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)})}function
|
|
40
|
-
`)}function
|
|
39
|
+
`),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)})}function ct(e,t){let i=(0,n.readFileSync)((0,r.resolve)(e,t),`utf8`).trim();if(i.length===0)throw Error(`Task file is empty: ${t}`);return`Task file (${t}):\n${i}`}function lt(){let e=y();S(e)?process.stdout.write(`Deleted ${e}\n`):process.stdout.write(`No user settings found.
|
|
40
|
+
`)}function ut({cwd:e,providerDefinitions:t}){return[(0,o.createSkillsCommandModule)({cwd:e}),(0,o.createHelpCommandModule)(),(0,o.createAgentCommandModule)(),(0,o.createModelCommandModule)({providerDefinitions:t,settings:{readMergedSettings:()=>w(e)}}),(0,o.createPermissionsCommandModule)(),(0,o.createModeCommandModule)(),(0,o.createLanguageCommandModule)(),(0,o.createBackgroundCommandModule)(),(0,o.createMemoryCommandModule)(),(0,o.createUserLocalCommandModule)(),(0,o.createCompactCommandModule)(),(0,o.createContextCommandModule)(),(0,o.createExitCommandModule)(),(0,o.createSessionCommandModule)(),(0,o.createResetCommandModule)(),(0,o.createRewindCommandModule)(),(0,o.createStatusLineCommandModule)(),(0,o.createPluginCommandModule)(),(0,o.createSettingsCommandModule)(),(0,o.createProviderCommandModule)({providerDefinitions:t,settings:{readMergedSettings:()=>w(e),readTargetSettings:()=>b(O(e)),writeTargetSettings:t=>x(O(e),t)}})]}function dt(t,n,r,i){let a={settings:{read:()=>b(y()),write:e=>x(y(),e)},plugin:tt(t)},o=r.providerDefinitions??e.r;return{commandHostAdapters:a,providerDefinitions:o,commandModules:[...ut({cwd:t,providerDefinitions:o}),...r.commandModules??[]],startupUpdateNoticePromise:Fe(n)?Pe({currentVersion:i}):void 0}}function ft(e,t){let n=[];if(t.appendSystemPrompt&&n.push(t.appendSystemPrompt),t.taskFile)try{n.push(ct(e,t.taskFile))}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}return t.jsonSchema&&n.push(`Respond with valid JSON only, matching this JSON schema:\n${t.jsonSchema}`),n.length>0?n.join(`
|
|
41
41
|
|
|
42
|
-
`):void 0}async function
|
|
43
|
-
`),process.exit(1));let f=
|
|
44
|
-
`);let p=new a.InteractiveSession({cwd:e,provider:r,permissionMode:n.permissionMode??`bypassPermissions`,maxTurns:n.maxTurns,sessionStore:n.noSessionPersistence?void 0:i,sessionName:n.sessionName,bare:n.bare||void 0,allowedTools:n.allowedTools?n.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:f,backgroundTaskRunners:o,subagentRunnerFactory:s,commandModules:c,commandHostAdapters:l,shellExec:e=>(0,t.execSync)(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),agentName:`robota-cli`}),m=(0,u.createHeadlessTransport)({outputFormat:n.outputFormat??`text`,prompt:d});p.attachTransport(m),await m.start(),await p.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(m.getExitCode())}async function
|
|
42
|
+
`):void 0}async function pt(e,n,r,i,o,s,c,l){let d=n.positional.join(` `).trim();if(!d&&!process.stdin.isTTY){let e=[];for await(let t of process.stdin)e.push(t);d=Buffer.concat(e).toString(`utf-8`).trim()}d||(process.stderr.write(`Print mode (-p) requires a prompt argument.
|
|
43
|
+
`),process.exit(1));let f=ft(e,n);n.systemPrompt&&process.stderr.write(`Warning: --system-prompt is not yet functional and will be ignored.
|
|
44
|
+
`);let p=new a.InteractiveSession({cwd:e,provider:r,permissionMode:n.permissionMode??`bypassPermissions`,maxTurns:n.maxTurns,sessionStore:n.noSessionPersistence?void 0:i,sessionName:n.sessionName,bare:n.bare||void 0,allowedTools:n.allowedTools?n.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:f,backgroundTaskRunners:o,subagentRunnerFactory:s,commandModules:c,commandHostAdapters:l,shellExec:e=>(0,t.execSync)(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),agentName:`robota-cli`}),m=(0,u.createHeadlessTransport)({outputFormat:n.outputFormat??`text`,prompt:d});p.attachTransport(m),await m.start(),await p.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(m.getExitCode())}async function mt(e={}){let n=te(),r=st();if(n.help){ee();return}if(n.version){process.stdout.write(`robota ${r}\n`);return}if(n.checkUpdate){let e=await W({currentVersion:r,force:!0}),t=Ie(e);e.status===`error`&&(process.stderr.write(`${t}\n`),process.exit(1)),process.stdout.write(`${t}\n`);return}if(n.reset){lt();return}let i=process.cwd();if(await nt(n,i))return;let{commandHostAdapters:o,providerDefinitions:s,commandModules:l,startupUpdateNoticePromise:u}=dt(i,n,e,r);if(n.configure){await N(i,n,$,s);return}if(se(i,n,s))return;try{await ce(i,n,$,s)}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let d=n.provider?{providerOverride:n.provider,providerDefinitions:s}:{providerDefinitions:s},p=w(i);n.provider??p.currentProvider;let m=T(i,d),h=n.model??m.model,g=E(i,n.model,d),_=(0,c.createDefaultBackgroundTaskRunners)(),v=(0,a.projectPaths)(i),y=z({providerConfig:{...m,model:h},logsDir:v.logs}),b=(0,a.createProjectSessionStore)(i),x,S=!1;if(n.continueMode?x=(0,a.resolveLatestSessionId)(b,i):n.resumeId!==void 0&&(n.resumeId===``?S=!0:(x=(0,a.resolveSessionIdByIdOrName)(b,n.resumeId),x===void 0&&(process.stderr.write(`Session not found: ${n.resumeId}\n`),process.exit(1)))),n.printMode){await pt(i,n,g,b,_,y,l,o);return}await new f.TuiTransport({cwd:i,provider:g,providerOverride:n.provider,providerType:m.name,modelId:h,language:n.language,permissionMode:n.permissionMode,maxTurns:n.maxTurns,version:r,sessionStore:n.noSessionPersistence?void 0:b,resumeSessionId:x,showSessionPickerOnStart:S,forkSession:n.forkSession,sessionName:n.sessionName,backgroundTaskRunners:_,subagentRunnerFactory:y,commandModules:l,commandHostAdapters:o,shellExec:e=>(0,t.execSync)(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),startupUpdateNotice:u?u.then(e=>e?K(e):void 0):void 0,transportRegistry:gt(),cliAdapter:ht(s),reloadPluginCommandSource:Z,agentName:`robota-cli`,resolveInteraction:ot}).start(),process.exit(0)}function ht(e){return{getUserSettingsPath:()=>y(),readSettings:e=>b(e),writeSettings:(e,t)=>x(e,t),deleteSettings:e=>S(e),applyStatusLineSettings:(e,t)=>We(e,t),reloadPluginCommandSource:e=>{Z(e)},applyActiveModelChange:(e,t,n)=>(re(e,t,n),{applied:!0}),getGitBranch:e=>Ke(e),getProviderDisplayName:t=>(0,a.findProviderDefinition)(e,t)?.displayName??t}}function gt(){let e=new me(y());return e.register(new d.WsTransport),e}exports.ChildProcessSubagentRunner=B,Object.defineProperty(exports,`GitWorktreeIsolationAdapter`,{enumerable:!0,get:function(){return c.GitWorktreeIsolationAdapter}}),exports.createChildProcessSubagentRunnerFactory=z,Object.defineProperty(exports,`createGitWorktreeIsolationAdapter`,{enumerable:!0,get:function(){return c.createGitWorktreeIsolationAdapter}}),exports.startCli=mt;
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/cli.ts","../../src/subagents/child-process-subagent-runner.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/cli.ts","../../src/subagents/child-process-subagent-runner.ts"],"mappings":";;;;;;;;UA+LiB,gBAAA;EACf,cAAA,YAA0B,cAAA;EAC1B,mBAAA,YAA+B,mBAAmB;AAAA;AAAA,iBAyK9B,QAAA,CAAS,OAAA,GAAS,gBAAA,GAAwB,OAAO;;;UCtUtD,kCAAA;EACf,cAAA,GAAiB,eAAA;EACjB,UAAA;EACA,QAAA;EACA,WAAA;EACA,GAAA,GAAM,MAAA,CAAO,UAAA;EACb,iBAAA;EACA,eAAA,GAAkB,wBAAA;EAClB,OAAA;AAAA;AAAA,iBAGc,uCAAA,CACd,OAAA,GAAS,kCAAA,GACR,sBAAsB;AAAA,cAaZ,0BAAA,YAAsC,eAAA;EAAA,iBAS9B,IAAA;EAAA,iBARF,UAAA;EAAA,iBACA,QAAA;EAAA,iBACA,WAAA;EAAA,iBACA,cAAA;EAAA,iBACA,GAAA;EAAA,iBACA,OAAA;cAGE,IAAA,EAAM,4BAAA,EACvB,OAAA,GAAS,kCAAA;EAUX,KAAA,CAAM,GAAA,EAAK,iBAAA,GAAoB,kBAAA;EAAA,QA0CvB,kBAAA;EAAA,QAcA,qBAAA;AAAA"}
|
package/dist/node/index.js
CHANGED
|
@@ -29,17 +29,17 @@ Examples:
|
|
|
29
29
|
`)}function Ze(e){if(e!==void 0)return w.includes(e)||(process.stderr.write(`Invalid --output-format "${e}". Valid: ${w.join(` | `)}\n`),process.exit(1)),e}function Qe(e){if(e!==void 0)return C.includes(e)||(process.stderr.write(`Invalid --permission-mode "${e}". Valid: ${C.join(` | `)}\n`),process.exit(1)),e}function $e(e){if(e===void 0)return;let t=parseInt(e,10);return(isNaN(t)||t<=0)&&(process.stderr.write(`Invalid --max-turns "${e}". Must be a positive integer.\n`),process.exit(1)),t}function et(){let{values:e,positionals:t}=Re({allowPositionals:!0,options:{help:{type:`boolean`,short:`h`,default:!1},p:{type:`boolean`,short:`p`,default:!1},continue:{type:`boolean`,short:`c`,default:!1},resume:{type:`string`,short:`r`},model:{type:`string`},language:{type:`string`},"permission-mode":{type:`string`},"max-turns":{type:`string`},"fork-session":{type:`boolean`,default:!1},name:{type:`string`,short:`n`},"output-format":{type:`string`},format:{type:`string`},summary:{type:`string`},source:{type:`string`},"system-prompt":{type:`string`},"append-system-prompt":{type:`string`},"task-file":{type:`string`},version:{type:`boolean`,default:!1},reset:{type:`boolean`,default:!1},bare:{type:`boolean`,default:!1},"allowed-tools":{type:`string`},"no-session-persistence":{type:`boolean`,default:!1},"json-schema":{type:`string`},configure:{type:`boolean`,default:!1},"configure-provider":{type:`string`},provider:{type:`string`},type:{type:`string`},"base-url":{type:`string`},"api-key":{type:`string`},"api-key-env":{type:`string`},"set-current":{type:`boolean`,default:!1},"settings-scope":{type:`string`},"check-update":{type:`boolean`,default:!1},"disable-update-check":{type:`boolean`,default:!1}}});return{positional:t,help:e.help??!1,printMode:e.p??!1,continueMode:e.continue??!1,resumeId:e.resume,model:e.model,language:e.language,permissionMode:Qe(e[`permission-mode`]),maxTurns:$e(e[`max-turns`]),forkSession:e[`fork-session`]??!1,sessionName:e.name,outputFormat:Ze(e[`output-format`]),format:e.format,summary:e.summary,source:e.source,systemPrompt:e[`system-prompt`],appendSystemPrompt:e[`append-system-prompt`],taskFile:e[`task-file`],version:e.version??!1,reset:e.reset??!1,bare:e.bare??!1,allowedTools:e[`allowed-tools`],noSessionPersistence:e[`no-session-persistence`]??!1,jsonSchema:e[`json-schema`],configure:e.configure??!1,configureProvider:e[`configure-provider`],provider:e.provider,providerType:e.type,baseURL:e[`base-url`],apiKey:e[`api-key`],apiKeyEnv:e[`api-key-env`],setCurrent:e[`set-current`]??!1,settingsScope:e[`settings-scope`],checkUpdate:e[`check-update`]??!1,disableUpdateCheck:e[`disable-update-check`]??!1}}function T(){return f(process.env.HOME??process.env.USERPROFILE??`/`,`.robota`,`settings.json`)}function E(e){if(!i(e))return{};let t=s(e,`utf8`);try{return JSON.parse(t)}catch{return process.stderr.write(`Warning: corrupt settings file at ${e}, resetting to defaults\n`),{}}}function D(e,t){o(u(e),{recursive:!0}),l(e,JSON.stringify(t,null,2)+`
|
|
30
30
|
`,`utf8`)}function O(e){return i(e)?(c(e),!0):!1}function k(e){let t=tt();return[f(t,`.robota`,`settings.json`),f(t,`.claude`,`settings.json`),f(e,`.robota`,`settings.json`),f(e,`.robota`,`settings.local.json`),f(e,`.claude`,`settings.json`),f(e,`.claude`,`settings.local.json`)]}function tt(){return process.env.HOME??process.env.USERPROFILE??`/`}function A(e){return ce(k(e))}function j(e,t={}){let n=ue(A(e),t.providerOverride,M(t));if(n!==void 0)return n;throw Error("No provider configuration found. Run `robota` to set up.")}function nt(e,t,n={}){let r=M(n),i=j(e,{...n,providerDefinitions:r}),a=t??i.model;return We({...i,model:a},r)}function M(t){return t.providerDefinitions??e}function N(e,t={}){let n=t.settingsPaths??k(e),r=st(n)??n[0];if(r===void 0)throw Error(`No settings path available for provider update`);return r}function P(e){return E(e)}function F(e,t,n={}){let r=oe(P(e),ne(t,n));return D(e,r),r}function rt(e,t,n={}){let r=P(e),i=r.providers?.[t]!==void 0,a=n.knownProviders?.[t]!==void 0,o=i||a?{...r,currentProvider:t}:pe(r,t);return D(e,o),o}function it(e,t,n={}){let r=n.settingsPaths??k(e),i=le(r),a=n.providerOverride??i.currentProvider;if(typeof a!=`string`)throw Error(`Cannot update model: no active provider profile. Set "currentProvider" in settings.`);return at(r,a,t)}function at(e,t,n){let r=ot(e,t)??e[0];if(r===void 0)throw Error(`No settings path available for model update`);let i=P(r),a=i.providers??{},o=a[t]??{},s={...i,providers:{...a,[t]:{...o,model:n}}};return D(r,s),{settingsPath:r,settings:s,profileName:t}}function ot(e,t){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r!==void 0&&P(r).providers?.[t]!==void 0)return r}}function st(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&P(n).currentProvider!==void 0)return n}}function I(e,t){if(t===void 0||t===`user`)return T();if(t===`project-local`)return f(e,`.robota`,`settings.local.json`);throw Error(`Invalid --settings-scope "${t}". Valid: user | project-local`)}function ct(t,n,r=e){let i=I(t,n.settingsScope);return n.configureProvider?(F(i,ut(n),{providerDefinitions:r}),process.stdout.write(`Provider profile saved to ${i}\n`),!n.printMode&&n.positional.length===0):n.provider&&n.setCurrent?(rt(n.settingsScope===void 0?N(t):i,n.provider,{knownProviders:A(t).providers}),process.stdout.write(`Current provider set to ${n.provider}\n`),!n.printMode&&n.positional.length===0):!1}async function lt(t,n,r,i=e){let a=A(t);if(b(n.provider===void 0?a:{...a,currentProvider:n.provider},i)===`valid`)return;if(!pt())throw Error(R(i));await L(t,dt(t,n),r,i);let o=A(t);if(b(n.provider===void 0?o:{...o,currentProvider:n.provider},i)!==`valid`)throw Error(R(i))}async function L(t,n,r,i=e){let a=Ie(await r(Fe(i)),i),o=I(t,n.settingsScope);F(o,await Le(a,r,i,{existingProfileNames:Object.keys(A(t).providers??{})}),{providerDefinitions:i});let s=await r(` Response language (ko/en/ja/zh, default: en): `);if(s){let e=E(o);e.language=s,D(o,e)}process.stdout.write(`\n Config saved to ${o}\n\n`)}function ut(e){let t=e.providerType??e.configureProvider;if(!e.configureProvider||!t)throw Error(`--configure-provider requires a provider profile and --type`);return{profile:e.configureProvider,type:t,...e.model!==void 0&&{model:e.model},...e.apiKey!==void 0&&{apiKey:e.apiKey},...e.apiKeyEnv!==void 0&&{apiKeyEnv:e.apiKeyEnv},...e.baseURL!==void 0&&{baseURL:e.baseURL},setCurrent:e.setCurrent}}function dt(e,t){if(t.settingsScope!==void 0||t.provider!==void 0)return t;let n=ft(k(e));if(n===void 0)return t;let r=f(e,`.robota`,`settings.json`),i=f(e,`.robota`,`settings.local.json`);return n===r||n===i?{...t,settingsScope:`project-local`}:t}function ft(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n!==void 0&&typeof E(n).currentProvider==`string`)return n}}function pt(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function R(t=e){return[`No provider configuration found.`,"Run `robota --configure` in an interactive terminal, or configure a provider:",`Supported providers: ${Ke(t)}`,...t.map(mt)].join(`
|
|
31
31
|
`)}function mt(e){return` ${[`robota --configure-provider ${e.type}`,`--type ${e.type}`,...e.defaults?.baseURL===void 0?[]:[`--base-url <url>`],`--model <model>`,...e.requiresApiKey===!0?[`--api-key-env <ENV_NAME>`]:[],`--set-current`].join(` `)}`}var ht=class{entries=new Map;settingsPath;constructor(e){this.settingsPath=e}register(e){this.entries.set(e.name,e)}getAll(){let e=this.readTransportSettings();return Array.from(this.entries.values()).map(t=>({transport:t,config:this.resolveConfig(t,e[t.name])}))}getEnabled(){return this.getAll().filter(e=>e.config.enabled).map(e=>e.transport)}async setEnabled(e,t){let n=E(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},enabled:t},n.transports=r,D(this.settingsPath,n)}async setOptions(e,t){let n=E(this.settingsPath),r=n.transports??{};r[e]={...r[e]??{},options:t},n.transports=r,D(this.settingsPath,n)}async startAll(e){let t=this.getEnabled();for(let n of t)n.attach(e),await n.start()}async stopAll(){for(let e of this.entries.values())await e.stop()}resolveConfig(e,t){return{enabled:t?.enabled??e.defaultEnabled,options:t?.options??{}}}readTransportSettings(){let e=E(this.settingsPath).transports;return!e||typeof e!=`object`||Array.isArray(e)?{}:e}};function gt(e,t,n,r,i){switch(e.type){case`ready`:t();break;case`result`:n(e.output);break;case`error`:r(new x(`runner`,e.message));break;case`cancelled`:r(new x(`runner`,e.reason??`Subagent worker cancelled`));break;case`text_delta`:i?.({type:`background_task_text_delta`,delta:e.delta});break;case`tool_start`:i?.({type:`background_task_tool_start`,toolName:e.toolName,firstArg:_t(e.toolArgs)});break;case`tool_end`:i?.({type:`background_task_tool_end`,toolName:e.toolName,success:e.success});break;default:r(new x(`runner`,`Unhandled subagent worker message`))}}function _t(e){if(!e)return;let t=Object.values(e)[0];if(t!==void 0)return typeof t==`object`?JSON.stringify(t):String(t)}function z(e,t){return new Promise((n,r)=>{if(!e.connected){r(new x(`crash`,`Subagent worker IPC channel is closed`));return}e.send(t,e=>{if(e){r(e);return}n()})})}async function B(e,t){e.child.connected&&await z(e.child,{type:`cancel`,reason:t}).catch(()=>void 0),e.killTimer=setTimeout(()=>{e.child.killed||e.child.kill(`SIGTERM`)},e.killGraceMs)}function vt(e){return new Promise((t,n)=>{new yt(e,t,n).start()})}var yt=class{options;resolve;reject;settled=!1;started=!1;timeoutTimer;constructor(e,t,n){this.options=e,this.resolve=t,this.reject=n,this.timeoutTimer=xt(this.options.runtime,e=>this.rejectOnce(e))}start(){let{child:e}=this.options.runtime;e.on(`message`,this.onMessage),e.on(`error`,this.onError),e.on(`exit`,this.onExit),e.once(`spawn`,()=>{setImmediate(this.startWorker)})}startWorker=()=>{if(this.started)return;this.started=!0;let{child:e}=this.options.runtime;z(e,{type:`start`,payload:this.options.payload}).catch(e=>{this.rejectOnce(e instanceof Error?e:Error(String(e)))})};onMessage=e=>{if(!t(e)){this.rejectOnce(new x(`runner`,`Received malformed subagent worker message`));return}let{job:n}=this.options.runtime;gt(e,this.startWorker,this.resolveOnce,this.rejectOnce,n.emit)};onError=e=>{this.rejectOnce(new x(`crash`,e.message))};onExit=(e,t)=>{this.settled||this.rejectOnce(new x(`crash`,Ct(e,t)))};resolveOnce=e=>{if(this.settled)return;this.settled=!0,this.clearTimers(),this.cleanup();let{runtime:t,resolveTranscriptPath:n}=this.options;this.resolve(St(t.job,e,n))};rejectOnce=e=>{this.settled||(this.settled=!0,this.clearTimers(),this.cleanup(),this.reject(e))};clearTimers(){this.timeoutTimer&&clearTimeout(this.timeoutTimer),this.options.runtime.killTimer&&clearTimeout(this.options.runtime.killTimer)}cleanup(){let{child:e}=this.options.runtime;e.off(`message`,this.onMessage),e.off(`error`,this.onError),e.off(`exit`,this.onExit)}};function bt(e){let t=!1,n=()=>{};return{promise:new Promise((e,t)=>{n=t}),reject(r){t||(t=!0,n(new x(`runner`,r??`Subagent job cancelled: ${e}`)))}}}function xt(e,t){if(e.job.request.timeoutMs)return setTimeout(()=>{B(e,`Subagent worker timed out`),t(new x(`timeout`,`Subagent worker timed out`))},e.job.request.timeoutMs)}function St(e,t,n){let r=n(e);return{jobId:e.jobId,output:t,...r?{metadata:{transcriptPath:r,logPath:r}}:{}}}function Ct(e,t){return`Subagent worker exited before result: ${t===null?`exit code ${e===null?`unknown`:e}`:`signal ${t}`}`}function V(e={}){return t=>{let n=new H(t,e);return e.worktreeIsolation===!1?n:Ge({runner:n,worktreeAdapter:e.worktreeAdapter??Ue(),hooks:t.config.hooks,hookTypeExecutors:t.hookTypeExecutors})}}var H=class{deps;workerPath;execArgv;killGraceMs;providerConfig;env;logsDir;constructor(e,t={}){this.deps=e,this.workerPath=t.workerPath??Dt(),this.execArgv=t.execArgv,this.killGraceMs=t.killGraceMs??2e3,this.providerConfig=t.providerConfig,this.env=t.env,this.logsDir=t.logsDir}start(e){let t=r(this.workerPath,[],{cwd:e.request.cwd,env:{...process.env,...this.env??{}},execArgv:this.execArgv??Ot(this.workerPath),stdio:[`ignore`,`ignore`,`ignore`,`ipc`]}),n={job:e,child:t,killGraceMs:this.killGraceMs},i=vt({runtime:n,payload:this.createStartPayload(e),resolveTranscriptPath:e=>this.resolveTranscriptPath(e)}),a=bt(e.jobId);i.catch(()=>void 0);let o=Promise.race([i,a.promise]),s=this.resolveTranscriptPath(e);return{jobId:e.jobId,...t.pid!==void 0&&{pid:t.pid},...s!==void 0&&{transcriptPath:s,logPath:s},result:o,cancel:async e=>{a.reject(e),await B(n,e)},send:async e=>{await z(t,{type:`send`,prompt:e})},...s!==void 0&&{readLog:async t=>kt(e.jobId,s,t)}}}createStartPayload(e){let t=wt(e.request.type,this.deps.customAgentRegistry);return{jobId:e.jobId,request:e.request,agentDefinition:Tt(t,e),parentConfig:this.deps.config,parentContext:this.deps.context,providerProfile:Et(this.providerConfig,this.deps,e),permissionMode:this.deps.permissionMode,...this.logsDir?{logsDir:this.logsDir}:{}}}resolveTranscriptPath(e){if(this.logsDir)return f(this.logsDir,e.request.parentSessionId,`subagents`,`${e.jobId}.jsonl`)}};function wt(e,t){let n=t?.(e)??ae(e);if(!n)throw new x(`validation`,`Unknown agent type: ${e}`);return n}function Tt(e,t){return{...e,...t.request.model?{model:t.request.model}:{},...t.request.allowedTools?{tools:t.request.allowedTools}:{},...t.request.disallowedTools?{disallowedTools:t.request.disallowedTools}:{}}}function Et(e,t,n){let r=e??t.config.provider;return{profileName:t.config.currentProvider,type:r.name,model:n.request.model??r.model,apiKey:r.apiKey,baseURL:r.baseURL,timeout:r.timeout,options:r.options}}function Dt(){let e=process.argv[1]??``,t=e?u(e):process.cwd(),n=e.endsWith(`.ts`)||e.endsWith(`.tsx`)?`.ts`:`.js`,r=[f(t,`subagents`,`child-process-subagent-worker${n}`),f(t,`child-process-subagent-worker${n}`)];for(let e of r)if(i(e))return e;return r[0]}function Ot(e){return!e.endsWith(`.ts`)||process.execArgv.some(e=>e.includes(`tsx`))?process.execArgv:[...process.execArgv,`--import`,`tsx`]}function kt(e,t,n){return i(t)?Be(e,s(t,`utf8`).split(/\r?\n/).filter(Boolean),n):{taskId:e,cursor:n,lines:[]}}function At(e,t){let n=U(e),r=U(t);if(n===void 0||r===void 0)return Math.sign(e.localeCompare(t));let i=G(n.major,r.major)||G(n.minor,r.minor)||G(n.patch,r.patch);return i===0?Mt(n.prerelease,r.prerelease):i}function jt(e,t){return At(e,t)>0}function U(e){let[t,n]=(e.trim().replace(/^v/,``).split(`+`)[0]??``).split(`-`,2),[r,i,a]=t.split(`.`),o=W(r),s=W(i),c=W(a);if(!(o===void 0||s===void 0||c===void 0))return{major:o,minor:s,patch:c,prerelease:n?n.split(`.`):[]}}function W(e){if(!(e===void 0||!/^\d+$/.test(e)))return Number(e)}function G(e,t){return Math.sign(e-t)}function Mt(e,t){if(e.length===0&&t.length===0)return 0;if(e.length===0)return 1;if(t.length===0)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n===void 0)return-1;if(i===void 0)return 1;let a=Nt(n,i);if(a!==0)return a}return 0}function Nt(e,t){let n=W(e),r=W(t);return n!==void 0&&r!==void 0?G(n,r):n===void 0?r===void 0?Math.sign(e.localeCompare(t)):1:-1}function Pt(e=process.env.HOME??process.env.USERPROFILE??`/`){return f(e,`.robota`,`update-check.json`)}function Ft(e){if(i(e))try{return Wt(JSON.parse(s(e,`utf8`)))}catch{return}}function It(e,t){o(u(e),{recursive:!0}),l(e,JSON.stringify(t,null,2)+`
|
|
32
|
-
`,`utf8`)}async function K(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??Pt(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=Ft(n);if(a!==void 0&&Vt(a,r,i,t))return Bt(a,e.currentVersion)}try{let i=await Ht({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return q(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i}),Y(e.currentVersion,i)}catch(i){let a=i instanceof Error?i.message:String(i);return q(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:a}),{status:`error`,errorMessage:a}}}function q(e,t){try{It(e,t)}catch{}}async function Lt(e){let t=await K(e);return t.status===`update_available`?t.notice:void 0}function Rt(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function J(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function zt(e){return e.status===`update_available`?J(e.notice):e.status===`current`?`Robota is up to date (${e.currentVersion}).`:e.status===`skipped`?`Robota update check skipped.`:`Robota update check failed: ${e.errorMessage}`}function Bt(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:Y(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function Y(e,t){return jt(t,e)?{status:`update_available`,notice:{currentVersion:e,latestVersion:t,installCommand:`npm install -g '@robota-sdk/agent-cli@latest'`}}:{status:`current`,currentVersion:e,latestVersion:t}}function Vt(e,t,n,r){if(e.packageName!==r)return!1;let i=Date.parse(e.checkedAt);return Number.isFinite(i)?t.getTime()-i<n:!1}async function Ht(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=Ut(e.registryUrl,e.packageName),r=await e.fetchImpl(n,{headers:{accept:`application/json`},signal:t.signal});if(!r.ok)throw Error(`registry responded with HTTP ${r.status}`);let i=(await r.json())[`dist-tags`]?.latest;if(typeof i!=`string`||i.trim().length===0)throw Error(`registry metadata is missing dist-tags.latest`);return i}finally{clearTimeout(n)}}function Ut(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function Wt(e){if(!Gt(e))return;let t=e;if(typeof t.packageName==`string`&&typeof t.checkedAt==`string`&&typeof t.currentVersion==`string`&&(t.latestVersion===void 0||typeof t.latestVersion==`string`)&&(t.errorMessage===void 0||typeof t.errorMessage==`string`))return{packageName:t.packageName,checkedAt:t.checkedAt,currentVersion:t.currentVersion,...t.latestVersion!==void 0&&{latestVersion:t.latestVersion},...t.errorMessage!==void 0&&{errorMessage:t.errorMessage}}}function Gt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const X={..._};function Kt(e){let t=e.statusline;return Jt(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:X.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:X.gitBranch}:{...X}}function qt(e,t){let n=E(e),r={...Kt(n),...t};return n.statusline=r,D(e,n),r}function Jt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Yt(e){try{let t=Xt(e);if(!t)return;let n=s(f(t,`HEAD`),`utf8`).trim();if(!n)return;if(n.startsWith(`ref: `)){let e=n.slice(5).trim();return e.startsWith(`refs/heads/`)?e.slice(11):e}return n.slice(0,7)}catch{return}}function Xt(e){let t=p(e),n=u(t);for(;n!==t;){let e=Z(f(t,`.git`),t);if(e)return e;t=n,n=u(t)}return Z(f(t,`.git`),t)}function Z(e,t){if(!i(e))return;let n=a(e);if(n.isDirectory())return e;if(!n.isFile())return;let r=s(e,`utf8`).trim();if(!r.startsWith(`gitdir:`))return;let o=r.slice(7).trim();return d(o)?o:p(t,o)}const Q=`plugin`;function Zt(){return process.env.HOME??S()}function
|
|
33
|
-
`)?n.message:`${n.message}\n`;return n.success||(process.stderr.write(r),process.exit(1)),process.stdout.write(r),!0}function
|
|
32
|
+
`,`utf8`)}async function K(e){if(e.disabled===!0)return{status:`skipped`,reason:`disabled`};let t=e.packageName??`@robota-sdk/agent-cli`,n=e.cachePath??Pt(),r=e.now??new Date,i=e.ttlMs??864e5;if(e.force!==!0){let a=Ft(n);if(a!==void 0&&Vt(a,r,i,t))return Bt(a,e.currentVersion)}try{let i=await Ht({fetchImpl:e.fetchImpl??fetch,packageName:t,registryUrl:e.registryUrl??`https://registry.npmjs.org`,timeoutMs:e.timeoutMs??1500});return q(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,latestVersion:i}),Y(e.currentVersion,i)}catch(i){let a=i instanceof Error?i.message:String(i);return q(n,{packageName:t,checkedAt:r.toISOString(),currentVersion:e.currentVersion,errorMessage:a}),{status:`error`,errorMessage:a}}}function q(e,t){try{It(e,t)}catch{}}async function Lt(e){let t=await K(e);return t.status===`update_available`?t.notice:void 0}function Rt(e){return e.printMode===!1&&e.disableUpdateCheck===!1}function J(e){return[`Robota update available: ${e.currentVersion} -> ${e.latestVersion}.`,`Run ${e.installCommand}`].join(` `)}function zt(e){return e.status===`update_available`?J(e.notice):e.status===`current`?`Robota is up to date (${e.currentVersion}).`:e.status===`skipped`?`Robota update check skipped.`:`Robota update check failed: ${e.errorMessage}`}function Bt(e,t){return e.errorMessage===void 0?e.latestVersion===void 0?{status:`error`,errorMessage:`Cached update check has no latest version`}:Y(t,e.latestVersion):{status:`error`,errorMessage:e.errorMessage}}function Y(e,t){return jt(t,e)?{status:`update_available`,notice:{currentVersion:e,latestVersion:t,installCommand:`npm install -g '@robota-sdk/agent-cli@latest'`}}:{status:`current`,currentVersion:e,latestVersion:t}}function Vt(e,t,n,r){if(e.packageName!==r)return!1;let i=Date.parse(e.checkedAt);return Number.isFinite(i)?t.getTime()-i<n:!1}async function Ht(e){let t=new AbortController,n=setTimeout(()=>t.abort(),e.timeoutMs);try{let n=Ut(e.registryUrl,e.packageName),r=await e.fetchImpl(n,{headers:{accept:`application/json`},signal:t.signal});if(!r.ok)throw Error(`registry responded with HTTP ${r.status}`);let i=(await r.json())[`dist-tags`]?.latest;if(typeof i!=`string`||i.trim().length===0)throw Error(`registry metadata is missing dist-tags.latest`);return i}finally{clearTimeout(n)}}function Ut(e,t){return`${e.replace(/\/+$/,``)}/${encodeURIComponent(t)}`}function Wt(e){if(!Gt(e))return;let t=e;if(typeof t.packageName==`string`&&typeof t.checkedAt==`string`&&typeof t.currentVersion==`string`&&(t.latestVersion===void 0||typeof t.latestVersion==`string`)&&(t.errorMessage===void 0||typeof t.errorMessage==`string`))return{packageName:t.packageName,checkedAt:t.checkedAt,currentVersion:t.currentVersion,...t.latestVersion!==void 0&&{latestVersion:t.latestVersion},...t.errorMessage!==void 0&&{errorMessage:t.errorMessage}}}function Gt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const X={..._};function Kt(e){let t=e.statusline;return Jt(t)?{enabled:typeof t.enabled==`boolean`?t.enabled:X.enabled,gitBranch:typeof t.gitBranch==`boolean`?t.gitBranch:X.gitBranch}:{...X}}function qt(e,t){let n=E(e),r={...Kt(n),...t};return n.statusline=r,D(e,n),r}function Jt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Yt(e){try{let t=Xt(e);if(!t)return;let n=s(f(t,`HEAD`),`utf8`).trim();if(!n)return;if(n.startsWith(`ref: `)){let e=n.slice(5).trim();return e.startsWith(`refs/heads/`)?e.slice(11):e}return n.slice(0,7)}catch{return}}function Xt(e){let t=p(e),n=u(t);for(;n!==t;){let e=Z(f(t,`.git`),t);if(e)return e;t=n,n=u(t)}return Z(f(t,`.git`),t)}function Z(e,t){if(!i(e))return;let n=a(e);if(n.isDirectory())return e;if(!n.isFile())return;let r=s(e,`utf8`).trim();if(!r.startsWith(`gitdir:`))return;let o=r.slice(7).trim();return d(o)?o:p(t,o)}const Q=`plugin`;function Zt(){return process.env.HOME??S()}function Qt(e){let t=new g(f(Zt(),`.robota`,`plugins`));try{let n=t.loadPluginsSync();return n.length===0?(e.replaceSource(Q),0):(e.replaceSource(Q,new ee(n)),n.length)}catch{return e.replaceSource(Q),0}}function $t(e){let t=S(),r=f(t,`.robota`,`plugins`),i=f(t,`.robota`,`settings.json`),a=(e,t)=>n(e,{timeout:t.timeout,stdio:t.stdio??`pipe`}),o=new te(i),s=new y({pluginsDir:r,exec:a});return{cwd:e,marketplace:s,installer:new h({pluginsDir:r,settingsStore:o,marketplaceClient:s,exec:a}),loader:new g(r),settingsStore:o}}async function en(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 tn(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 nn(e,t,r){let[i,a]=t.split(`@`);if(!i||!a)throw Error(`Plugin ID must be in format: name@marketplace`);if(r===`project`){await new h({pluginsDir:f(e.cwd,`.robota`,`plugins`),settingsStore:e.settingsStore,marketplaceClient:e.marketplace,exec:(e,t)=>n(e,{timeout:t.timeout,stdio:t.stdio??`pipe`})}).install(i,a);return}await e.installer.install(i,a)}async function rn(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 an(e){return e.marketplace.listMarketplaces().map(e=>({name:e.name,type:e.source.type}))}function on(e){let t=$t(e);return{listInstalled:()=>en(t),listAvailablePlugins:e=>tn(t,e),install:(e,n)=>nn(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=>rn(t,e),marketplaceUpdate:async e=>t.marketplace.updateMarketplace(e),marketplaceList:async()=>an(t),reloadPlugins:async()=>({loadedPluginCount:(await t.loader.loadAll()).length})}}async function sn(e,t){if(e.positional[0]!==`user-local`)return!1;let n=await Pe({cwd:t,argv:e.positional.slice(1),format:e.format,summary:e.summary,source:e.source}),r=n.message.endsWith(`
|
|
33
|
+
`)?n.message:`${n.message}\n`;return n.success||(process.stderr.write(r),process.exit(1)),process.stdout.write(r),!0}function cn(){return[{label:`plan`,value:`plan`,description:`Plan only, no execution`},{label:`default`,value:`default`,description:`Ask before risky actions`},{label:`acceptEdits`,value:`acceptEdits`,description:`Auto-approve file edits`},{label:`bypassPermissions`,value:`bypassPermissions`,description:`Skip all permission checks`}]}function ln(){return[{label:`ko Korean`,value:`ko`,description:`한국어`},{label:`en English`,value:`en`,description:`English`},{label:`ja Japanese`,value:`ja`,description:`日本語`},{label:`zh Chinese`,value:`zh`,description:`中文`}]}function un(){return[{label:`current`,value:`current`,description:`Show current provider`},{label:`list`,value:`list`,description:`List available providers`},{label:`use`,value:`use`,description:`Switch to a provider`},{label:`add`,value:`add`,description:`Add a new provider`},{label:`test`,value:`test`,description:`Test provider connection`}]}const dn={agent:void 0,background:void 0,clear:{onMissingArgs:`confirm`,message:`Clear conversation history?`},compact:void 0,context:void 0,cost:void 0,exit:{onMissingArgs:`confirm`,message:`Exit the session?`},help:void 0,language:{onMissingArgs:`picker`,getItems:ln},memory:void 0,mode:{onMissingArgs:`picker`,getItems:cn},model:void 0,permissions:void 0,plugin:void 0,provider:{onMissingArgs:`picker`,getItems:un},rename:void 0,reset:void 0,resume:void 0,rewind:void 0,settings:void 0,skills:void 0,statusline:void 0,"user-local":void 0,"validate-session":void 0};function fn(e){return dn[e]}function pn(){try{let e=u(m(import.meta.url)),t=[f(e,`..`,`..`,`package.json`),f(e,`..`,`package.json`)];for(let e of t)try{let t=s(e,`utf-8`),n=JSON.parse(t);if(n.version!==void 0&&n.name!==void 0)return n.version}catch{}return`0.0.0`}catch{return`0.0.0`}}function $(e,t=!1){return new Promise((n,r)=>{process.stdout.write(e);let i=``,a=process.stdin,o=a.isRaw;if(!a.isTTY){r(Error(`Cannot prompt for input: stdin is not a TTY.
|
|
34
34
|
Set your API key via environment variable instead:
|
|
35
35
|
ANTHROPIC_API_KEY=<key> robota
|
|
36
36
|
OPENAI_API_KEY=<key> robota`));return}a.setRawMode(!0),a.resume(),a.setEncoding(`utf8`);let s=e=>{for(let r of e)if(r===`\r`||r===`
|
|
37
37
|
`){a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
|
|
38
38
|
`),n(i.trim());return}else r===``||r===`\b`?i.length>0&&(i=i.slice(0,-1),process.stdout.write(`\b \b`)):r===``?(a.removeListener(`data`,s),a.setRawMode(o??!1),a.pause(),process.stdout.write(`
|
|
39
|
-
`),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)})}function
|
|
40
|
-
`)}function
|
|
39
|
+
`),process.exit(0)):r.charCodeAt(0)>=32&&(i+=r,process.stdout.write(t?`*`:r))};a.on(`data`,s)})}function mn(e,t){let n=s(p(e,t),`utf8`).trim();if(n.length===0)throw Error(`Task file is empty: ${t}`);return`Task file (${t}):\n${n}`}function hn(){let e=T();O(e)?process.stdout.write(`Deleted ${e}\n`):process.stdout.write(`No user settings found.
|
|
40
|
+
`)}function gn({cwd:e,providerDefinitions:t}){return[je({cwd:e}),ye(),me(),Ce({providerDefinitions:t,settings:{readMergedSettings:()=>A(e)}}),we(),Se(),be(),he(),xe(),Ne(),ge(),_e(),ve(),ke(),De(),Oe(),Me(),Te(),Ae(),Ee({providerDefinitions:t,settings:{readMergedSettings:()=>A(e),readTargetSettings:()=>E(N(e)),writeTargetSettings:t=>D(N(e),t)}})]}function _n(t,n,r,i){let a={settings:{read:()=>E(T()),write:e=>D(T(),e)},plugin:on(t)},o=r.providerDefinitions??e;return{commandHostAdapters:a,providerDefinitions:o,commandModules:[...gn({cwd:t,providerDefinitions:o}),...r.commandModules??[]],startupUpdateNoticePromise:Rt(n)?Lt({currentVersion:i}):void 0}}function vn(e,t){let n=[];if(t.appendSystemPrompt&&n.push(t.appendSystemPrompt),t.taskFile)try{n.push(mn(e,t.taskFile))}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}return t.jsonSchema&&n.push(`Respond with valid JSON only, matching this JSON schema:\n${t.jsonSchema}`),n.length>0?n.join(`
|
|
41
41
|
|
|
42
|
-
`):void 0}async function
|
|
43
|
-
`),process.exit(1));let u=
|
|
44
|
-
`);let d=new v({cwd:e,provider:r,permissionMode:t.permissionMode??`bypassPermissions`,maxTurns:t.maxTurns,sessionStore:t.noSessionPersistence?void 0:i,sessionName:t.sessionName,bare:t.bare||void 0,allowedTools:t.allowedTools?t.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:u,backgroundTaskRunners:a,subagentRunnerFactory:o,commandModules:s,commandHostAdapters:c,shellExec:e=>n(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),agentName:`robota-cli`}),f=qe({outputFormat:t.outputFormat??`text`,prompt:l});d.attachTransport(f),await f.start(),await d.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(f.getExitCode())}async function
|
|
42
|
+
`):void 0}async function yn(e,t,r,i,a,o,s,c){let l=t.positional.join(` `).trim();if(!l&&!process.stdin.isTTY){let e=[];for await(let t of process.stdin)e.push(t);l=Buffer.concat(e).toString(`utf-8`).trim()}l||(process.stderr.write(`Print mode (-p) requires a prompt argument.
|
|
43
|
+
`),process.exit(1));let u=vn(e,t);t.systemPrompt&&process.stderr.write(`Warning: --system-prompt is not yet functional and will be ignored.
|
|
44
|
+
`);let d=new v({cwd:e,provider:r,permissionMode:t.permissionMode??`bypassPermissions`,maxTurns:t.maxTurns,sessionStore:t.noSessionPersistence?void 0:i,sessionName:t.sessionName,bare:t.bare||void 0,allowedTools:t.allowedTools?t.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:u,backgroundTaskRunners:a,subagentRunnerFactory:o,commandModules:s,commandHostAdapters:c,shellExec:e=>n(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),agentName:`robota-cli`}),f=qe({outputFormat:t.outputFormat??`text`,prompt:l});d.attachTransport(f),await f.start(),await d.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(f.getExitCode())}async function bn(e={}){let t=et(),r=pn();if(t.help){Xe();return}if(t.version){process.stdout.write(`robota ${r}\n`);return}if(t.checkUpdate){let e=await K({currentVersion:r,force:!0}),t=zt(e);e.status===`error`&&(process.stderr.write(`${t}\n`),process.exit(1)),process.stdout.write(`${t}\n`);return}if(t.reset){hn();return}let i=process.cwd();if(await sn(t,i))return;let{commandHostAdapters:a,providerDefinitions:o,commandModules:s,startupUpdateNoticePromise:c}=_n(i,t,e,r);if(t.configure){await L(i,t,$,o);return}if(ct(i,t,o))return;try{await lt(i,t,$,o)}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}let l=t.provider?{providerOverride:t.provider,providerDefinitions:o}:{providerDefinitions:o},u=A(i);t.provider??u.currentProvider;let d=j(i,l),f=t.model??d.model,p=nt(i,t.model,l),m=Ve(),h=se(i),g=V({providerConfig:{...d,model:f},logsDir:h.logs}),_=re(i),v,y=!1;if(t.continueMode?v=de(_,i):t.resumeId!==void 0&&(t.resumeId===``?y=!0:(v=fe(_,t.resumeId),v===void 0&&(process.stderr.write(`Session not found: ${t.resumeId}\n`),process.exit(1)))),t.printMode){await yn(i,t,p,_,m,g,s,a);return}await new Ye({cwd:i,provider:p,providerOverride:t.provider,providerType:d.name,modelId:f,language:t.language,permissionMode:t.permissionMode,maxTurns:t.maxTurns,version:r,sessionStore:t.noSessionPersistence?void 0:_,resumeSessionId:v,showSessionPickerOnStart:y,forkSession:t.forkSession,sessionName:t.sessionName,backgroundTaskRunners:m,subagentRunnerFactory:g,commandModules:s,commandHostAdapters:a,shellExec:e=>n(e,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd(),startupUpdateNotice:c?c.then(e=>e?J(e):void 0):void 0,transportRegistry:Sn(),cliAdapter:xn(o),reloadPluginCommandSource:Qt,agentName:`robota-cli`,resolveInteraction:fn}).start(),process.exit(0)}function xn(e){return{getUserSettingsPath:()=>T(),readSettings:e=>E(e),writeSettings:(e,t)=>D(e,t),deleteSettings:e=>O(e),applyStatusLineSettings:(e,t)=>qt(e,t),reloadPluginCommandSource:e=>{Qt(e)},applyActiveModelChange:(e,t,n)=>(it(e,t,n),{applied:!0}),getGitBranch:e=>Yt(e),getProviderDisplayName:t=>ie(e,t)?.displayName??t}}function Sn(){let e=new ht(T());return e.register(new Je),e}export{H as ChildProcessSubagentRunner,ze as GitWorktreeIsolationAdapter,V as createChildProcessSubagentRunnerFactory,He as createGitWorktreeIsolationAdapter,bn as startCli};
|
|
45
45
|
//# sourceMappingURL=index.js.map
|