@robota-sdk/agent-cli 3.0.0-beta.7 → 3.0.0-beta.70
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 +414 -114
- package/bin/robota.cjs +47 -0
- package/dist/node/bin.d.ts +2 -1
- package/dist/node/bin.js +50 -10
- package/dist/node/bin.js.map +1 -0
- package/dist/node/child-process-subagent-ipc--Vp2dk1v.js +2 -0
- package/dist/node/child-process-subagent-ipc--Vp2dk1v.js.map +1 -0
- package/dist/node/child-process-subagent-ipc-Aitv2i6E.cjs +1 -0
- package/dist/node/child-process-subagent-ipc-CEy8bLN6.cjs +1 -0
- package/dist/node/child-process-subagent-ipc-DVpVp43R.js +2 -0
- package/dist/node/child-process-subagent-ipc-DVpVp43R.js.map +1 -0
- package/dist/node/cli.cjs +1 -0
- package/dist/node/cli.d.ts +7 -0
- package/dist/node/cli.d.ts.map +1 -0
- package/dist/node/cli.js +2 -0
- package/dist/node/cli.js.map +1 -0
- package/dist/node/constants.cjs +1 -0
- package/dist/node/constants.js +2 -0
- package/dist/node/constants.js.map +1 -0
- package/dist/node/index.cjs +42 -1257
- package/dist/node/index.d.ts +12 -47
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +43 -13
- package/dist/node/index.js.map +1 -0
- package/dist/node/init/init-command.cjs +32 -0
- package/dist/node/init/init-command.js +33 -0
- package/dist/node/init/init-command.js.map +1 -0
- package/dist/node/modes/print-mode.cjs +6 -0
- package/dist/node/modes/print-mode.js +7 -0
- package/dist/node/modes/print-mode.js.map +1 -0
- package/dist/node/modes/shell-exec.cjs +1 -0
- package/dist/node/modes/shell-exec.js +2 -0
- package/dist/node/modes/shell-exec.js.map +1 -0
- package/dist/node/modes/tui-mode.cjs +1 -0
- package/dist/node/modes/tui-mode.js +2 -0
- package/dist/node/modes/tui-mode.js.map +1 -0
- package/dist/node/provider-default-definitions-CKtxv2k0.js +2 -0
- package/dist/node/provider-default-definitions-CKtxv2k0.js.map +1 -0
- package/dist/node/provider-default-definitions-GFiYzACo.cjs +1 -0
- package/dist/node/provider-default-definitions-g0ZUDeii.cjs +1 -0
- package/dist/node/startup/append-system-prompt.cjs +3 -0
- package/dist/node/startup/append-system-prompt.js +4 -0
- package/dist/node/startup/append-system-prompt.js.map +1 -0
- package/dist/node/startup/args-to-options.cjs +1 -0
- package/dist/node/startup/args-to-options.js +2 -0
- package/dist/node/startup/args-to-options.js.map +1 -0
- package/dist/node/startup/command-setup.cjs +1 -0
- package/dist/node/startup/command-setup.d.ts +11 -0
- package/dist/node/startup/command-setup.d.ts.map +1 -0
- package/dist/node/startup/command-setup.js +2 -0
- package/dist/node/startup/command-setup.js.map +1 -0
- package/dist/node/startup/config-phase.cjs +1 -0
- package/dist/node/startup/config-phase.js +2 -0
- package/dist/node/startup/config-phase.js.map +1 -0
- package/dist/node/startup/preflight.cjs +1 -0
- package/dist/node/startup/preflight.js +2 -0
- package/dist/node/startup/preflight.js.map +1 -0
- package/dist/node/startup/provider-setup.cjs +1 -0
- package/dist/node/startup/provider-setup.js +2 -0
- package/dist/node/startup/provider-setup.js.map +1 -0
- package/dist/node/startup/provider-startup.cjs +2 -0
- package/dist/node/startup/provider-startup.js +3 -0
- package/dist/node/startup/provider-startup.js.map +1 -0
- package/dist/node/startup/reset-config.cjs +1 -0
- package/dist/node/startup/reset-config.js +2 -0
- package/dist/node/startup/reset-config.js.map +1 -0
- package/dist/node/startup/session-setup.cjs +1 -0
- package/dist/node/startup/session-setup.js +2 -0
- package/dist/node/startup/session-setup.js.map +1 -0
- package/dist/node/startup/subagent-setup.cjs +1 -0
- package/dist/node/startup/subagent-setup.js +2 -0
- package/dist/node/startup/subagent-setup.js.map +1 -0
- package/dist/node/startup/update-notice.cjs +1 -0
- package/dist/node/startup/update-notice.js +2 -0
- package/dist/node/startup/update-notice.js.map +1 -0
- package/dist/node/startup/version.cjs +1 -0
- package/dist/node/startup/version.js +2 -0
- package/dist/node/startup/version.js.map +1 -0
- package/dist/node/subagents/child-process-subagent-worker.cjs +1 -0
- package/dist/node/subagents/child-process-subagent-worker.d.ts +1 -0
- package/dist/node/subagents/child-process-subagent-worker.js +2 -0
- package/dist/node/subagents/child-process-subagent-worker.js.map +1 -0
- package/dist/node/user-local-direct-command.cjs +1 -0
- package/dist/node/user-local-direct-command.js +2 -0
- package/dist/node/user-local-direct-command.js.map +1 -0
- package/dist/node/utils/cli-args.cjs +35 -0
- package/dist/node/utils/cli-args.js +36 -0
- package/dist/node/utils/cli-args.js.map +1 -0
- package/package.json +52 -16
- package/dist/node/bin.cjs +0 -1240
- package/dist/node/bin.d.cts +0 -1
- package/dist/node/chunk-A2A66S6Q.js +0 -1219
- package/dist/node/index.d.cts +0 -49
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset-config.js","names":[],"sources":["../../../src/startup/reset-config.ts"],"sourcesContent":["import { resetUserConfig } from '@robota-sdk/agent-framework';\nimport type { ITerminalOutput } from '@robota-sdk/agent-core';\n\nexport function runResetConfig(terminal: ITerminalOutput): void {\n const result = resetUserConfig();\n if (result.deleted) {\n terminal.writeLine(`Deleted ${result.path}`);\n } else {\n terminal.writeLine('No user settings found.');\n }\n}\n"],"mappings":"8DAGA,SAAgB,EAAe,EAAiC,CAC9D,IAAM,EAAS,EAAgB,EAC3B,EAAO,QACT,EAAS,UAAU,WAAW,EAAO,MAAM,EAE3C,EAAS,UAAU,yBAAyB,CAEhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require(`@robota-sdk/agent-framework`);function t(t,n){let r=n.noSessionPersistence?void 0:(0,e.createProjectSessionStore)(t),i,a=!1;if(n.continueMode)i=(0,e.resolveLatestSessionId)(r,t);else if(n.resumeId!==void 0){if(n.resumeId===``)a=!0;else if(i=(0,e.resolveSessionIdByIdOrName)(r,n.resumeId),i===void 0)throw Error(`Session not found: ${n.resumeId}`)}return{sessionStore:r,resumeSessionId:i,showSessionPickerOnStart:a}}exports.createSessionSetup=t;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createProjectSessionStore as e,resolveLatestSessionId as t,resolveSessionIdByIdOrName as n}from"@robota-sdk/agent-framework";function r(r,i){let a=i.noSessionPersistence?void 0:e(r),o,s=!1;if(i.continueMode)o=t(a,r);else if(i.resumeId!==void 0){if(i.resumeId===``)s=!0;else if(o=n(a,i.resumeId),o===void 0)throw Error(`Session not found: ${i.resumeId}`)}return{sessionStore:a,resumeSessionId:o,showSessionPickerOnStart:s}}export{r as createSessionSetup};
|
|
2
|
+
//# sourceMappingURL=session-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-setup.js","names":[],"sources":["../../../src/startup/session-setup.ts"],"sourcesContent":["import type { IInteractiveSessionStore } from '@robota-sdk/agent-framework';\nimport {\n createProjectSessionStore,\n resolveLatestSessionId,\n resolveSessionIdByIdOrName,\n} from '@robota-sdk/agent-framework';\nimport type { ISessionRunOptions } from './args-to-options.js';\n\nexport interface ISessionSetup {\n sessionStore: IInteractiveSessionStore | undefined;\n resumeSessionId: string | undefined;\n showSessionPickerOnStart: boolean;\n}\n\nexport function createSessionSetup(cwd: string, opts: ISessionRunOptions): ISessionSetup {\n const sessionStore = opts.noSessionPersistence ? undefined : createProjectSessionStore(cwd);\n\n let resumeSessionId: string | undefined;\n let showSessionPickerOnStart = false;\n\n if (opts.continueMode) {\n resumeSessionId = resolveLatestSessionId(sessionStore, cwd);\n } else if (opts.resumeId !== undefined) {\n if (opts.resumeId === '') {\n showSessionPickerOnStart = true;\n } else {\n resumeSessionId = resolveSessionIdByIdOrName(sessionStore, opts.resumeId);\n if (resumeSessionId === undefined) {\n throw new Error(`Session not found: ${opts.resumeId}`);\n }\n }\n }\n\n return { sessionStore, resumeSessionId, showSessionPickerOnStart };\n}\n"],"mappings":"oIAcA,SAAgB,EAAmB,EAAa,EAAyC,CACvF,IAAM,EAAe,EAAK,qBAAuB,IAAA,GAAY,EAA0B,CAAG,EAEtF,EACA,EAA2B,GAE/B,GAAI,EAAK,aACP,EAAkB,EAAuB,EAAc,CAAG,OACrD,GAAI,EAAK,WAAa,IAAA,GAC3B,IAAI,EAAK,WAAa,GACpB,EAA2B,QAG3B,GADA,EAAkB,EAA2B,EAAc,EAAK,QAAQ,EACpE,IAAoB,IAAA,GACtB,MAAU,MAAM,sBAAsB,EAAK,UAAU,CAEzD,CAGF,MAAO,CAAE,eAAc,kBAAiB,0BAAyB,CACnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require(`@robota-sdk/agent-subagent-runner`);function t(t){return{subagentRunnerFactory:(0,e.createChildProcessSubagentRunnerFactory)({providerConfig:t.providerConfig,logsDir:t.logsDir})}}exports.createSubagentSetup=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-setup.js","names":[],"sources":["../../../src/startup/subagent-setup.ts"],"sourcesContent":["import type { IProviderConfig } from '@robota-sdk/agent-core';\nimport type { TSubagentRunnerFactory } from '@robota-sdk/agent-framework';\nimport { createChildProcessSubagentRunnerFactory } from '@robota-sdk/agent-subagent-runner';\n\nexport interface ISubagentSetupConfig {\n providerConfig: IProviderConfig;\n logsDir: string;\n}\n\nexport interface ISubagentSetup {\n subagentRunnerFactory: TSubagentRunnerFactory;\n}\n\nexport function createSubagentSetup(config: ISubagentSetupConfig): ISubagentSetup {\n return {\n subagentRunnerFactory: createChildProcessSubagentRunnerFactory({\n providerConfig: config.providerConfig,\n logsDir: config.logsDir,\n }),\n };\n}\n"],"mappings":"4FAaA,SAAgB,EAAoB,EAA8C,CAChF,MAAO,CACL,sBAAuB,EAAwC,CAC7D,eAAgB,EAAO,eACvB,QAAS,EAAO,OAClB,CAAC,CACH,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require(`@robota-sdk/agent-framework`);function t(t,n){if((0,e.shouldRunStartupCliUpdateCheck)(n))return(0,e.getStartupCliUpdateNotice)({currentVersion:t}).then(t=>t?(0,e.formatCliUpdateNotice)(t):void 0)}exports.resolveStartupUpdateNotice=t;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{formatCliUpdateNotice as e,getStartupCliUpdateNotice as t,shouldRunStartupCliUpdateCheck as n}from"@robota-sdk/agent-framework";function r(r,i){if(n(i))return t({currentVersion:r}).then(t=>t?e(t):void 0)}export{r as resolveStartupUpdateNotice};
|
|
2
|
+
//# sourceMappingURL=update-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-notice.js","names":[],"sources":["../../../src/startup/update-notice.ts"],"sourcesContent":["import {\n shouldRunStartupCliUpdateCheck,\n getStartupCliUpdateNotice,\n formatCliUpdateNotice,\n} from '@robota-sdk/agent-framework';\nimport type { IStartupUpdatePolicyOptions } from './args-to-options.js';\n\nexport function resolveStartupUpdateNotice(\n version: string,\n policy: IStartupUpdatePolicyOptions,\n): Promise<string | undefined> | undefined {\n if (!shouldRunStartupCliUpdateCheck(policy)) return undefined;\n return getStartupCliUpdateNotice({ currentVersion: version }).then((n) =>\n n ? formatCliUpdateNotice(n) : undefined,\n );\n}\n"],"mappings":"uIAOA,SAAgB,EACd,EACA,EACyC,CACpC,KAA+B,CAAM,EAC1C,OAAO,EAA0B,CAAE,eAAgB,CAAQ,CAAC,EAAE,KAAM,GAClE,EAAI,EAAsB,CAAC,EAAI,IAAA,EACjC,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require(`@robota-sdk/agent-framework`);const t=()=>(0,e.readPackageVersion)(require(`url`).pathToFileURL(__filename).href);exports.readVersion=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","names":[],"sources":["../../../src/startup/version.ts"],"sourcesContent":["import { readPackageVersion } from '@robota-sdk/agent-framework';\n\nexport const readVersion = (): string => readPackageVersion(import.meta.url);\n"],"mappings":"iEAEA,MAAa,MAA4B,EAAmB,OAAO,KAAK,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../provider-default-definitions-g0ZUDeii.cjs`);require(`../index.cjs`);let t=require(`@robota-sdk/agent-framework`),n=require(`@robota-sdk/agent-executor`);const r={write:()=>{},writeLine:()=>{},writeMarkdown:()=>{},writeError:()=>{},prompt:()=>Promise.resolve(``),select:()=>Promise.resolve(0),spinner:()=>({stop:()=>{},update:()=>{}})};let i=null,a=!1,o=Promise.resolve();function s(e){process.send&&process.send(e)}async function c(o){try{let c=(0,n.createProviderFromProfile)(o.providerProfile,o.request.model,e.t),u=o.logsDir?(0,t.createSubagentLogger)(o.request.parentSessionId,o.jobId,o.logsDir):void 0;i=(0,t.createSubagentSession)({agentDefinition:o.agentDefinition,parentConfig:o.parentConfig,parentContext:o.parentContext,parentTools:(0,t.createDefaultTools)(),provider:c,terminal:r,sessionId:o.jobId,...u?{sessionLogger:u}:{},permissionMode:o.permissionMode,hooks:o.parentConfig.hooks,onTextDelta:e=>s({type:`text_delta`,delta:e}),onToolExecution:l});let d=await i.run(o.request.prompt);if(a){s({type:`cancelled`,reason:`Subagent worker cancelled`});return}s({type:`result`,output:d})}catch(e){if(a){s({type:`cancelled`,reason:`Subagent worker cancelled`});return}s({type:`error`,message:e instanceof Error?e.message:String(e)})}finally{setImmediate(()=>process.exit(a?130:0))}}function l(e){if(e.type===`start`){s({type:`tool_start`,toolName:e.toolName,toolArgs:e.toolArgs});return}s({type:`tool_end`,toolName:e.toolName,success:e.success??!0})}function u(e){if(i===null){s({type:`error`,message:`Subagent worker has not started`});return}o=o.then(async()=>{try{await i?.run(e)}catch(e){s({type:`error`,message:e instanceof Error?e.message:String(e)})}})}async function d(e){a=!0,i?.abort(),s({type:`cancelled`,reason:e}),await i?.shutdown({reason:`other`}).catch(()=>void 0),setTimeout(()=>process.exit(130),0)}process.on(`message`,e=>{if(!(0,t.isSubagentWorkerParentMessage)(e)){s({type:`error`,message:`Malformed subagent worker parent message`});return}switch(e.type){case`start`:o=o.then(()=>c(e.payload));break;case`send`:u(e.prompt);break;case`cancel`:d(e.reason);break;default:s({type:`error`,message:`Unhandled subagent worker parent message`})}}),process.on(`disconnect`,()=>{a=!0,i?.abort(),i?.shutdown({reason:`other`}).catch(()=>void 0)}),s({type:`ready`});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"../provider-default-definitions-CKtxv2k0.js";import{createDefaultTools as t,createSubagentLogger as n,createSubagentSession as r,isSubagentWorkerParentMessage as i}from"@robota-sdk/agent-framework";import{createProviderFromProfile as a}from"@robota-sdk/agent-executor";const o={write:()=>{},writeLine:()=>{},writeMarkdown:()=>{},writeError:()=>{},prompt:()=>Promise.resolve(``),select:()=>Promise.resolve(0),spinner:()=>({stop:()=>{},update:()=>{}})};let s=null,c=!1,l=Promise.resolve();function u(e){process.send&&process.send(e)}async function d(i){try{let l=a(i.providerProfile,i.request.model,e),d=i.logsDir?n(i.request.parentSessionId,i.jobId,i.logsDir):void 0;s=r({agentDefinition:i.agentDefinition,parentConfig:i.parentConfig,parentContext:i.parentContext,parentTools:t(),provider:l,terminal:o,sessionId:i.jobId,...d?{sessionLogger:d}:{},permissionMode:i.permissionMode,hooks:i.parentConfig.hooks,onTextDelta:e=>u({type:`text_delta`,delta:e}),onToolExecution:f});let p=await s.run(i.request.prompt);if(c){u({type:`cancelled`,reason:`Subagent worker cancelled`});return}u({type:`result`,output:p})}catch(e){if(c){u({type:`cancelled`,reason:`Subagent worker cancelled`});return}u({type:`error`,message:e instanceof Error?e.message:String(e)})}finally{setImmediate(()=>process.exit(c?130:0))}}function f(e){if(e.type===`start`){u({type:`tool_start`,toolName:e.toolName,toolArgs:e.toolArgs});return}u({type:`tool_end`,toolName:e.toolName,success:e.success??!0})}function p(e){if(s===null){u({type:`error`,message:`Subagent worker has not started`});return}l=l.then(async()=>{try{await s?.run(e)}catch(e){u({type:`error`,message:e instanceof Error?e.message:String(e)})}})}async function m(e){c=!0,s?.abort(),u({type:`cancelled`,reason:e}),await s?.shutdown({reason:`other`}).catch(()=>void 0),setTimeout(()=>process.exit(130),0)}process.on(`message`,e=>{if(!i(e)){u({type:`error`,message:`Malformed subagent worker parent message`});return}switch(e.type){case`start`:l=l.then(()=>d(e.payload));break;case`send`:p(e.prompt);break;case`cancel`:m(e.reason);break;default:u({type:`error`,message:`Unhandled subagent worker parent message`})}}),process.on(`disconnect`,()=>{c=!0,s?.abort(),s?.shutdown({reason:`other`}).catch(()=>void 0)}),u({type:`ready`});export{};
|
|
2
|
+
//# sourceMappingURL=child-process-subagent-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process-subagent-worker.js","names":[],"sources":["../../../src/subagents/child-process-subagent-worker.ts"],"sourcesContent":["import {\n createDefaultTools,\n createSubagentLogger,\n createSubagentSession,\n} from '@robota-sdk/agent-framework';\nimport { createProviderFromProfile } from '@robota-sdk/agent-executor';\nimport {\n isSubagentWorkerParentMessage,\n type ISubagentWorkerStartPayload,\n type TSubagentWorkerChildMessage,\n type TSubagentWorkerWireValue,\n} from '@robota-sdk/agent-framework';\nimport type { ITerminalOutput } from '../types.js';\nimport { DEFAULT_PROVIDER_DEFINITIONS } from '../utils/provider-default-definitions.js';\n\nconst CANCEL_EXIT_CODE = 130;\n\nconst NOOP_TERMINAL: ITerminalOutput = {\n write: (): void => {},\n writeLine: (): void => {},\n writeMarkdown: (): void => {},\n writeError: (): void => {},\n prompt: (): Promise<string> => Promise.resolve(''),\n select: (): Promise<number> => Promise.resolve(0),\n spinner: () => ({ stop: (): void => {}, update: (): void => {} }),\n};\n\ntype TSubagentSessionToolEvent = Parameters<\n NonNullable<Parameters<typeof createSubagentSession>[0]['onToolExecution']>\n>[0];\n\nlet session: ReturnType<typeof createSubagentSession> | null = null;\nlet cancelled = false;\nlet running: Promise<void> = Promise.resolve();\n\nfunction sendChildMessage(message: TSubagentWorkerChildMessage): void {\n if (process.send) {\n process.send(message);\n }\n}\n\nasync function runInitialPrompt(payload: ISubagentWorkerStartPayload): Promise<void> {\n try {\n const provider = createProviderFromProfile(\n payload.providerProfile,\n payload.request.model,\n DEFAULT_PROVIDER_DEFINITIONS,\n );\n const sessionLogger = payload.logsDir\n ? createSubagentLogger(payload.request.parentSessionId, payload.jobId, payload.logsDir)\n : undefined;\n session = createSubagentSession({\n agentDefinition: payload.agentDefinition,\n parentConfig: payload.parentConfig,\n parentContext: payload.parentContext,\n parentTools: createDefaultTools(),\n provider,\n terminal: NOOP_TERMINAL,\n sessionId: payload.jobId,\n ...(sessionLogger ? { sessionLogger } : {}),\n permissionMode: payload.permissionMode,\n hooks: payload.parentConfig.hooks,\n onTextDelta: (delta) => sendChildMessage({ type: 'text_delta', delta }),\n onToolExecution: forwardToolExecution,\n });\n const output = await session.run(payload.request.prompt);\n if (cancelled) {\n sendChildMessage({ type: 'cancelled', reason: 'Subagent worker cancelled' });\n return;\n }\n sendChildMessage({ type: 'result', output });\n } catch (error) {\n if (cancelled) {\n sendChildMessage({ type: 'cancelled', reason: 'Subagent worker cancelled' });\n return;\n }\n const message = error instanceof Error ? error.message : String(error);\n sendChildMessage({ type: 'error', message });\n } finally {\n setImmediate(() => process.exit(cancelled ? CANCEL_EXIT_CODE : 0));\n }\n}\n\nfunction forwardToolExecution(event: TSubagentSessionToolEvent): void {\n if (event.type === 'start') {\n sendChildMessage({ type: 'tool_start', toolName: event.toolName, toolArgs: event.toolArgs });\n return;\n }\n sendChildMessage({ type: 'tool_end', toolName: event.toolName, success: event.success ?? true });\n}\n\nfunction runFollowUp(prompt: string): void {\n if (session === null) {\n sendChildMessage({ type: 'error', message: 'Subagent worker has not started' });\n return;\n }\n running = running.then(async () => {\n try {\n await session?.run(prompt);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n sendChildMessage({ type: 'error', message });\n }\n });\n}\n\nasync function cancelWorker(reason?: string): Promise<void> {\n cancelled = true;\n session?.abort();\n sendChildMessage({ type: 'cancelled', reason });\n await session?.shutdown({ reason: 'other' }).catch(() => undefined);\n setTimeout(() => process.exit(CANCEL_EXIT_CODE), 0);\n}\n\nprocess.on('message', (message: TSubagentWorkerWireValue) => {\n if (!isSubagentWorkerParentMessage(message)) {\n sendChildMessage({ type: 'error', message: 'Malformed subagent worker parent message' });\n return;\n }\n\n switch (message.type) {\n case 'start':\n running = running.then(() => runInitialPrompt(message.payload));\n break;\n case 'send':\n runFollowUp(message.prompt);\n break;\n case 'cancel':\n void cancelWorker(message.reason);\n break;\n default:\n sendChildMessage({ type: 'error', message: 'Unhandled subagent worker parent message' });\n }\n});\n\nprocess.on('disconnect', () => {\n cancelled = true;\n session?.abort();\n void session?.shutdown({ reason: 'other' }).catch(() => undefined);\n});\n\nsendChildMessage({ type: 'ready' });\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require(`@robota-sdk/agent-command`);async function t(t,n,r){if(t.positional[0]!==`user-local`)return!1;let i=await(0,e.executeUserLocalDirectCommand)({cwd:n,argv:t.positional.slice(1),format:t.format,summary:t.summary,source:t.source}),a=i.message.trimEnd();if(!i.success)throw Error(a);return r.writeLine(a),!0}exports.runUserLocalDirectCommandIfRequested=t;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{executeUserLocalDirectCommand as e}from"@robota-sdk/agent-command";async function t(t,n,r){if(t.positional[0]!==`user-local`)return!1;let i=await e({cwd:n,argv:t.positional.slice(1),format:t.format,summary:t.summary,source:t.source}),a=i.message.trimEnd();if(!i.success)throw Error(a);return r.writeLine(a),!0}export{t as runUserLocalDirectCommandIfRequested};
|
|
2
|
+
//# sourceMappingURL=user-local-direct-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-local-direct-command.js","names":[],"sources":["../../src/user-local-direct-command.ts"],"sourcesContent":["import { executeUserLocalDirectCommand } from '@robota-sdk/agent-command';\nimport type { ITerminalOutput } from '@robota-sdk/agent-core';\nimport type { IUserLocalCommandOptions } from './startup/args-to-options.js';\n\nexport async function runUserLocalDirectCommandIfRequested(\n opts: IUserLocalCommandOptions,\n cwd: string,\n terminal: ITerminalOutput,\n): Promise<boolean> {\n if (opts.positional[0] !== 'user-local') {\n return false;\n }\n\n const result = await executeUserLocalDirectCommand({\n cwd,\n argv: opts.positional.slice(1),\n format: opts.format,\n summary: opts.summary,\n source: opts.source,\n });\n const output = result.message.trimEnd();\n if (!result.success) {\n throw new Error(output);\n }\n terminal.writeLine(output);\n return true;\n}\n"],"mappings":"0EAIA,eAAsB,EACpB,EACA,EACA,EACkB,CAClB,GAAI,EAAK,WAAW,KAAO,aACzB,MAAO,GAGT,IAAM,EAAS,MAAM,EAA8B,CACjD,MACA,KAAM,EAAK,WAAW,MAAM,CAAC,EAC7B,OAAQ,EAAK,OACb,QAAS,EAAK,QACd,OAAQ,EAAK,MACf,CAAC,EACK,EAAS,EAAO,QAAQ,QAAQ,EACtC,GAAI,CAAC,EAAO,QACV,MAAU,MAAM,CAAM,EAGxB,OADA,EAAS,UAAU,CAAM,EAClB,EACT"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
let e=require(`node:util`);const t=[`plan`,`default`,`acceptEdits`,`bypassPermissions`],n=[`text`,`json`,`stream-json`];function r(){return`
|
|
2
|
+
Usage: robota [options] [-p <prompt>]
|
|
3
|
+
|
|
4
|
+
Options:
|
|
5
|
+
-p <prompt> Run in print (headless) mode with the given prompt
|
|
6
|
+
--output-format <format> Output format: text | json | stream-json (default: text)
|
|
7
|
+
--system-prompt <text> Override the system prompt for this session
|
|
8
|
+
--append-system-prompt <t> Append text to the system prompt
|
|
9
|
+
--language <lang> Language preference (e.g. ko, en)
|
|
10
|
+
--no-session-persistence Disable session persistence for this run
|
|
11
|
+
--model <model> Override model for this session
|
|
12
|
+
--permission-mode <mode> Permission mode: plan | default | acceptEdits | bypassPermissions
|
|
13
|
+
--max-turns <n> Maximum agent turns before stopping
|
|
14
|
+
-c, --continue Continue the most recent session
|
|
15
|
+
-r, --resume <id> Resume a session by ID or name
|
|
16
|
+
-n, --name <name> Name for the new session
|
|
17
|
+
--fork-session Fork the current session
|
|
18
|
+
--configure Run interactive provider configuration
|
|
19
|
+
--configure-provider <n> Configure a specific provider
|
|
20
|
+
--dry-run <prompt> Plan-only run: show what the agent would do without modifying files
|
|
21
|
+
--check-update Check for CLI updates
|
|
22
|
+
--version Show version number
|
|
23
|
+
-h, --help Show this help message
|
|
24
|
+
|
|
25
|
+
Commands:
|
|
26
|
+
robota init Initialize AGENTS.md and .robota/settings.json
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
robota Start interactive TUI session
|
|
30
|
+
robota init Initialize project files
|
|
31
|
+
robota -p "Hello" Print mode: send prompt and exit
|
|
32
|
+
robota -p "Hello" --output-format json
|
|
33
|
+
robota --dry-run "Refactor the auth module" Show plan without modifying files
|
|
34
|
+
robota --continue Resume the last session
|
|
35
|
+
`}function i(e){if(e!==void 0){if(!n.includes(e))throw Error(`Invalid --output-format "${e}". Valid: ${n.join(` | `)}`);return e}}function a(e){if(e!==void 0){if(!t.includes(e))throw Error(`Invalid --permission-mode "${e}". Valid: ${t.join(` | `)}`);return e}}function o(e){if(e===void 0)return;let t=parseInt(e,10);if(isNaN(t)||t<=0)throw Error(`Invalid --max-turns "${e}". Must be a positive integer.`);return t}const s={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},"dry-run":{type:`boolean`,default:!1}}};function c(e,t){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:a(e[`permission-mode`]),maxTurns:o(e[`max-turns`]),forkSession:e[`fork-session`]??!1,sessionName:e.name,outputFormat:i(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,dryRun:e[`dry-run`]??!1}}function l(){let{values:t,positionals:n}=(0,e.parseArgs)(s);return c(t,n)}exports.parseCliArgs=l,exports.printHelp=r;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import{parseArgs as e}from"node:util";const t=[`plan`,`default`,`acceptEdits`,`bypassPermissions`],n=[`text`,`json`,`stream-json`];function r(){return`
|
|
2
|
+
Usage: robota [options] [-p <prompt>]
|
|
3
|
+
|
|
4
|
+
Options:
|
|
5
|
+
-p <prompt> Run in print (headless) mode with the given prompt
|
|
6
|
+
--output-format <format> Output format: text | json | stream-json (default: text)
|
|
7
|
+
--system-prompt <text> Override the system prompt for this session
|
|
8
|
+
--append-system-prompt <t> Append text to the system prompt
|
|
9
|
+
--language <lang> Language preference (e.g. ko, en)
|
|
10
|
+
--no-session-persistence Disable session persistence for this run
|
|
11
|
+
--model <model> Override model for this session
|
|
12
|
+
--permission-mode <mode> Permission mode: plan | default | acceptEdits | bypassPermissions
|
|
13
|
+
--max-turns <n> Maximum agent turns before stopping
|
|
14
|
+
-c, --continue Continue the most recent session
|
|
15
|
+
-r, --resume <id> Resume a session by ID or name
|
|
16
|
+
-n, --name <name> Name for the new session
|
|
17
|
+
--fork-session Fork the current session
|
|
18
|
+
--configure Run interactive provider configuration
|
|
19
|
+
--configure-provider <n> Configure a specific provider
|
|
20
|
+
--dry-run <prompt> Plan-only run: show what the agent would do without modifying files
|
|
21
|
+
--check-update Check for CLI updates
|
|
22
|
+
--version Show version number
|
|
23
|
+
-h, --help Show this help message
|
|
24
|
+
|
|
25
|
+
Commands:
|
|
26
|
+
robota init Initialize AGENTS.md and .robota/settings.json
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
robota Start interactive TUI session
|
|
30
|
+
robota init Initialize project files
|
|
31
|
+
robota -p "Hello" Print mode: send prompt and exit
|
|
32
|
+
robota -p "Hello" --output-format json
|
|
33
|
+
robota --dry-run "Refactor the auth module" Show plan without modifying files
|
|
34
|
+
robota --continue Resume the last session
|
|
35
|
+
`}function i(e){if(e!==void 0){if(!n.includes(e))throw Error(`Invalid --output-format "${e}". Valid: ${n.join(` | `)}`);return e}}function a(e){if(e!==void 0){if(!t.includes(e))throw Error(`Invalid --permission-mode "${e}". Valid: ${t.join(` | `)}`);return e}}function o(e){if(e===void 0)return;let t=parseInt(e,10);if(isNaN(t)||t<=0)throw Error(`Invalid --max-turns "${e}". Must be a positive integer.`);return t}const s={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},"dry-run":{type:`boolean`,default:!1}}};function c(e,t){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:a(e[`permission-mode`]),maxTurns:o(e[`max-turns`]),forkSession:e[`fork-session`]??!1,sessionName:e.name,outputFormat:i(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,dryRun:e[`dry-run`]??!1}}function l(){let{values:t,positionals:n}=e(s);return c(t,n)}export{l as parseCliArgs,r as printHelp};
|
|
36
|
+
//# sourceMappingURL=cli-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.js","names":[],"sources":["../../../src/utils/cli-args.ts"],"sourcesContent":["/**\n * CLI argument parsing and validation.\n * Pure functions — throw on invalid input, no process.* side effects.\n */\n\nimport { parseArgs } from 'node:util';\n\nimport type { TPermissionMode } from '@robota-sdk/agent-core';\n\nconst VALID_MODES: TPermissionMode[] = ['plan', 'default', 'acceptEdits', 'bypassPermissions'];\n\nconst VALID_OUTPUT_FORMATS = ['text', 'json', 'stream-json'] as const;\nexport type TOutputFormat = (typeof VALID_OUTPUT_FORMATS)[number];\n\nexport interface IParsedCliArgs {\n positional: string[];\n help: boolean;\n printMode: boolean;\n continueMode: boolean;\n resumeId: string | undefined;\n model: string | undefined;\n language: string | undefined;\n permissionMode: TPermissionMode | undefined;\n maxTurns: number | undefined;\n forkSession: boolean;\n sessionName: string | undefined;\n outputFormat: TOutputFormat | undefined;\n format: string | undefined;\n summary: string | undefined;\n source: string | undefined;\n systemPrompt: string | undefined;\n appendSystemPrompt: string | undefined;\n taskFile: string | undefined;\n version: boolean;\n reset: boolean;\n bare: boolean;\n allowedTools: string | undefined;\n noSessionPersistence: boolean;\n jsonSchema: string | undefined;\n configure: boolean;\n configureProvider: string | undefined;\n provider: string | undefined;\n providerType: string | undefined;\n baseURL: string | undefined;\n apiKey: string | undefined;\n apiKeyEnv: string | undefined;\n setCurrent: boolean;\n settingsScope: string | undefined;\n checkUpdate: boolean;\n disableUpdateCheck: boolean;\n dryRun: boolean;\n}\n\n/** Return CLI usage help text. */\nexport function printHelp(): string {\n return `\nUsage: robota [options] [-p <prompt>]\n\nOptions:\n -p <prompt> Run in print (headless) mode with the given prompt\n --output-format <format> Output format: text | json | stream-json (default: text)\n --system-prompt <text> Override the system prompt for this session\n --append-system-prompt <t> Append text to the system prompt\n --language <lang> Language preference (e.g. ko, en)\n --no-session-persistence Disable session persistence for this run\n --model <model> Override model for this session\n --permission-mode <mode> Permission mode: plan | default | acceptEdits | bypassPermissions\n --max-turns <n> Maximum agent turns before stopping\n -c, --continue Continue the most recent session\n -r, --resume <id> Resume a session by ID or name\n -n, --name <name> Name for the new session\n --fork-session Fork the current session\n --configure Run interactive provider configuration\n --configure-provider <n> Configure a specific provider\n --dry-run <prompt> Plan-only run: show what the agent would do without modifying files\n --check-update Check for CLI updates\n --version Show version number\n -h, --help Show this help message\n\nCommands:\n robota init Initialize AGENTS.md and .robota/settings.json\n\nExamples:\n robota Start interactive TUI session\n robota init Initialize project files\n robota -p \"Hello\" Print mode: send prompt and exit\n robota -p \"Hello\" --output-format json\n robota --dry-run \"Refactor the auth module\" Show plan without modifying files\n robota --continue Resume the last session\n`;\n}\n\n/** Validate and return a TOutputFormat from a raw CLI string, or throw on error. */\nexport function parseOutputFormat(raw: string | undefined): TOutputFormat | undefined {\n if (raw === undefined) return undefined;\n if (!(VALID_OUTPUT_FORMATS as readonly string[]).includes(raw)) {\n throw new Error(`Invalid --output-format \"${raw}\". Valid: ${VALID_OUTPUT_FORMATS.join(' | ')}`);\n }\n return raw as TOutputFormat;\n}\n\n/** Validate and return a TPermissionMode from a raw CLI string, or throw on error. */\nexport function parsePermissionMode(raw: string | undefined): TPermissionMode | undefined {\n if (raw === undefined) return undefined;\n if (!VALID_MODES.includes(raw as TPermissionMode)) {\n throw new Error(`Invalid --permission-mode \"${raw}\". Valid: ${VALID_MODES.join(' | ')}`);\n }\n return raw as TPermissionMode;\n}\n\n/** Validate and return a positive integer from a raw CLI string, or throw on error. */\nexport function parseMaxTurns(raw: string | undefined): number | undefined {\n if (raw === undefined) return undefined;\n const n = parseInt(raw, 10);\n if (isNaN(n) || n <= 0) {\n throw new Error(`Invalid --max-turns \"${raw}\". Must be a positive integer.`);\n }\n return n;\n}\n\nconst PARSE_ARGS_CONFIG = {\n allowPositionals: true,\n options: {\n help: { type: 'boolean', short: 'h', default: false },\n p: { type: 'boolean', short: 'p', default: false },\n continue: { type: 'boolean', short: 'c', default: false },\n resume: { type: 'string', short: 'r' },\n model: { type: 'string' },\n language: { type: 'string' },\n 'permission-mode': { type: 'string' },\n 'max-turns': { type: 'string' },\n 'fork-session': { type: 'boolean', default: false },\n name: { type: 'string', short: 'n' },\n 'output-format': { type: 'string' },\n format: { type: 'string' },\n summary: { type: 'string' },\n source: { type: 'string' },\n 'system-prompt': { type: 'string' },\n 'append-system-prompt': { type: 'string' },\n 'task-file': { type: 'string' },\n version: { type: 'boolean', default: false },\n reset: { type: 'boolean', default: false },\n bare: { type: 'boolean', default: false },\n 'allowed-tools': { type: 'string' },\n 'no-session-persistence': { type: 'boolean', default: false },\n 'json-schema': { type: 'string' },\n configure: { type: 'boolean', default: false },\n 'configure-provider': { type: 'string' },\n provider: { type: 'string' },\n type: { type: 'string' },\n 'base-url': { type: 'string' },\n 'api-key': { type: 'string' },\n 'api-key-env': { type: 'string' },\n 'set-current': { type: 'boolean', default: false },\n 'settings-scope': { type: 'string' },\n 'check-update': { type: 'boolean', default: false },\n 'disable-update-check': { type: 'boolean', default: false },\n 'dry-run': { type: 'boolean', default: false },\n },\n} as const;\n\nfunction mapParsedValues(\n values: ReturnType<typeof parseArgs<typeof PARSE_ARGS_CONFIG>>['values'],\n positionals: string[],\n): IParsedCliArgs {\n return {\n positional: positionals,\n help: values['help'] ?? false,\n printMode: values['p'] ?? false,\n continueMode: values['continue'] ?? false,\n resumeId: values['resume'],\n model: values['model'],\n language: values['language'],\n permissionMode: parsePermissionMode(values['permission-mode']),\n maxTurns: parseMaxTurns(values['max-turns']),\n forkSession: values['fork-session'] ?? false,\n sessionName: values['name'],\n outputFormat: parseOutputFormat(values['output-format']),\n format: values['format'],\n summary: values['summary'],\n source: values['source'],\n systemPrompt: values['system-prompt'],\n appendSystemPrompt: values['append-system-prompt'],\n taskFile: values['task-file'],\n version: values['version'] ?? false,\n reset: values['reset'] ?? false,\n bare: values['bare'] ?? false,\n allowedTools: values['allowed-tools'],\n noSessionPersistence: values['no-session-persistence'] ?? false,\n jsonSchema: values['json-schema'],\n configure: values['configure'] ?? false,\n configureProvider: values['configure-provider'],\n provider: values['provider'],\n providerType: values['type'],\n baseURL: values['base-url'],\n apiKey: values['api-key'],\n apiKeyEnv: values['api-key-env'],\n setCurrent: values['set-current'] ?? false,\n settingsScope: values['settings-scope'],\n checkUpdate: values['check-update'] ?? false,\n disableUpdateCheck: values['disable-update-check'] ?? false,\n dryRun: values['dry-run'] ?? false,\n };\n}\n\n/** Parse and validate CLI arguments. */\nexport function parseCliArgs(): IParsedCliArgs {\n const { values, positionals } = parseArgs(PARSE_ARGS_CONFIG);\n return mapParsedValues(values, positionals);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robota-sdk/agent-cli",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.70",
|
|
4
4
|
"description": "AI coding assistant CLI built on Robota SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"robota": "./
|
|
7
|
+
"robota": "./bin/robota.cjs"
|
|
8
8
|
},
|
|
9
9
|
"main": "dist/node/index.js",
|
|
10
10
|
"types": "dist/node/index.d.ts",
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
13
13
|
"types": "./dist/node/index.d.ts",
|
|
14
|
+
"source": "./src/index.ts",
|
|
14
15
|
"node": {
|
|
15
16
|
"import": "./dist/node/index.js",
|
|
16
17
|
"require": "./dist/node/index.cjs"
|
|
@@ -21,41 +22,76 @@
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/woojubb/robota.git"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://robota.io/",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/woojubb/robota/issues"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=22.0.0"
|
|
35
|
+
},
|
|
24
36
|
"files": [
|
|
25
|
-
"dist"
|
|
37
|
+
"dist",
|
|
38
|
+
"bin"
|
|
26
39
|
],
|
|
27
40
|
"dependencies": {
|
|
28
41
|
"chalk": "^5.3.0",
|
|
29
42
|
"cli-highlight": "^2.1.0",
|
|
30
|
-
"ink": "^6.8.0",
|
|
31
|
-
"ink-select-input": "^6.2.0",
|
|
32
|
-
"ink-spinner": "^5.0.0",
|
|
33
|
-
"ink-text-input": "^6.0.0",
|
|
34
43
|
"marked": "^9.1.5",
|
|
35
44
|
"marked-terminal": "^7.3.0",
|
|
36
|
-
"
|
|
45
|
+
"open": "^11.0.0",
|
|
37
46
|
"string-width": "^8.2.0",
|
|
38
|
-
"
|
|
39
|
-
"@robota-sdk/agent-
|
|
47
|
+
"ws": "^8.18.3",
|
|
48
|
+
"@robota-sdk/agent-command": "3.0.0-beta.70",
|
|
49
|
+
"@robota-sdk/agent-core": "3.0.0-beta.70",
|
|
50
|
+
"@robota-sdk/agent-provider": "3.0.0-beta.70",
|
|
51
|
+
"@robota-sdk/agent-subagent-runner": "3.0.0-beta.70",
|
|
52
|
+
"@robota-sdk/agent-framework": "3.0.0-beta.70",
|
|
53
|
+
"@robota-sdk/agent-transport": "3.0.0-beta.70"
|
|
40
54
|
},
|
|
41
55
|
"devDependencies": {
|
|
56
|
+
"@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
|
|
42
57
|
"@types/marked": "^6.0.0",
|
|
43
|
-
"@types/
|
|
58
|
+
"@types/ws": "^8.5.10",
|
|
44
59
|
"rimraf": "^5.0.5",
|
|
45
|
-
"
|
|
60
|
+
"tsdown": "^0.22.0",
|
|
46
61
|
"tsx": "^4.7.0",
|
|
47
62
|
"typescript": "^5.3.3",
|
|
48
|
-
"vitest": "^1.6.1"
|
|
63
|
+
"vitest": "^1.6.1",
|
|
64
|
+
"@robota-sdk/agent-executor": "3.0.0-beta.70"
|
|
49
65
|
},
|
|
66
|
+
"keywords": [
|
|
67
|
+
"ai",
|
|
68
|
+
"cli",
|
|
69
|
+
"coding-assistant",
|
|
70
|
+
"agent",
|
|
71
|
+
"llm",
|
|
72
|
+
"anthropic",
|
|
73
|
+
"openai",
|
|
74
|
+
"claude",
|
|
75
|
+
"typescript",
|
|
76
|
+
"developer-tools",
|
|
77
|
+
"terminal",
|
|
78
|
+
"automation",
|
|
79
|
+
"multi-provider",
|
|
80
|
+
"robota",
|
|
81
|
+
"open-source"
|
|
82
|
+
],
|
|
50
83
|
"license": "MIT",
|
|
51
84
|
"publishConfig": {
|
|
52
85
|
"access": "public"
|
|
53
86
|
},
|
|
54
87
|
"scripts": {
|
|
55
|
-
"build": "
|
|
56
|
-
"
|
|
57
|
-
"
|
|
88
|
+
"build": "pnpm --filter @robota-sdk/agent-web build:spa && node scripts/copy-web-assets.mjs && tsdown",
|
|
89
|
+
"build:js": "tsdown --no-dts",
|
|
90
|
+
"build:types": "tsdown --dts",
|
|
91
|
+
"dev": "tsx src/bin.ts",
|
|
92
|
+
"start": "node dist/node/bin.js",
|
|
58
93
|
"test": "vitest run --passWithNoTests",
|
|
94
|
+
"test:coverage": "vitest run --coverage --passWithNoTests",
|
|
59
95
|
"typecheck": "tsc --noEmit",
|
|
60
96
|
"lint": "eslint src/ --ext .ts,.tsx",
|
|
61
97
|
"clean": "rimraf dist"
|