@robota-sdk/agent-cli 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/node/bin.js +5 -5
  3. package/dist/node/{cli-core-Bz_5Fzj0.js → cli-core-Cg4H6FH2.js} +315 -315
  4. package/dist/node/desktop-host.js +1 -1
  5. package/dist/node/headless.js +1 -1
  6. package/dist/node/host.js +1 -1
  7. package/dist/node/index.js +1 -1
  8. package/dist/node/node-DdB-oeq6.js.map +1 -1
  9. package/dist/node/{node-oHeP4vDn.js → node-DwQY2ITL.js} +3 -3
  10. package/dist/node/node-DwQY2ITL.js.map +1 -0
  11. package/dist/node/{node-BsDZQcvi.js → node-TUI6iwZA.js} +2 -2
  12. package/dist/node/{product-host-BPPyJk9w.js → product-host-BsT1Xq4C.js} +358 -358
  13. package/dist/node/product-host-BsT1Xq4C.js.map +1 -0
  14. package/dist/node/{src-B9UMvThT-B-MlnUJH.js → src-B9UMvThT-B4p8y1ba.js} +1 -1
  15. package/dist/node/{src-B9UMvThT-Cvs0M0_E.js → src-B9UMvThT-DInbihOf.js} +2 -2
  16. package/dist/node/{src-B9UMvThT-Cvs0M0_E.js.map → src-B9UMvThT-DInbihOf.js.map} +1 -1
  17. package/dist/node/{src-BzaNFPZx-DAgH-EaI.js → src-BzaNFPZx-E-faT9I-.js} +2 -2
  18. package/dist/node/{src-BzaNFPZx-DAgH-EaI.js.map → src-BzaNFPZx-E-faT9I-.js.map} +1 -1
  19. package/dist/node/{src-BzaNFPZx-CIKPBZac.js → src-BzaNFPZx-PaYEuPZc.js} +1 -1
  20. package/dist/node/{src-DwAfU-9z-DOErKivb.js → src-DwAfU-9z-DLr4gyAc.js} +2 -2
  21. package/dist/node/{src-DwAfU-9z-DOErKivb.js.map → src-DwAfU-9z-DLr4gyAc.js.map} +1 -1
  22. package/dist/node/{src-DwAfU-9z-CalH1ynp.js → src-DwAfU-9z-YAG_fVg1.js} +1 -1
  23. package/dist/node/{src-UPsd6jNY-CgN4wopU.js → src-UPsd6jNY-BT0Qq67D.js} +2 -2
  24. package/dist/node/{src-UPsd6jNY-CgN4wopU.js.map → src-UPsd6jNY-BT0Qq67D.js.map} +1 -1
  25. package/dist/node/{src-UPsd6jNY-CUahgEdL.js → src-UPsd6jNY-CPmh5JTO.js} +1 -1
  26. package/package.json +38 -38
  27. package/dist/node/node-oHeP4vDn.js.map +0 -1
  28. package/dist/node/product-host-BPPyJk9w.js.map +0 -1
@@ -1,2 +1,2 @@
1
1
  ;(function(){var v=parseInt(process.versions.node.split('.')[0],10);if(v<22){process.stderr.write('\n✗ Node.js 22+ is required (current: '+process.version+')\n\nUpgrade:\n nvm: nvm install 22 && nvm use 22\n Volta: volta install node@22\n Download: https://nodejs.org/en/download\n\n');process.exit(1);}})();
2
- import{J as e}from"./node-PhNl8kvo.js";import{c as t,i as n,l as r,n as i,o as a,r as o,s}from"./cli-core-Bz_5Fzj0.js";import{z as c}from"zod";function l(e){let t=s(e,{kind:`video`,mediaTypePrefix:`video/`,defaultMimeType:`video/mp4`,parseDataUri:!1});return t.ok?t:{ok:!1,error:u(t.rejection)}}function u(e){switch(e.reason){case`asset_invalid`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_ASSET_INVALID`,`Provider returned asset output without valid assetId`,!1);case`uri_missing`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_URI_MISSING`,`Provider returned uri output without uri value`,!1);case`media_type_invalid`:case`data_uri_unsupported`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_MEDIA_TYPE_INVALID`,`Provider returned non-video media type for seedance-video output`,!1,{mimeType:e.reason===`media_type_invalid`?e.mimeType??`missing`:`missing`})}}function d(e,t,n){let i=e.trim().length>0?e.trim():t;return n.length>0&&!n.includes(i)?{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_MODEL_NOT_ALLOWED`,`Selected seedance-video model is not allowed in DAG runtime`,{model:i})}:{ok:!0,value:i}}function f(e){return new Promise(t=>{setTimeout(t,e)})}var p=class{definition;explicitDefaultModel;explicitAllowedModels;sleep;constructor(e){this.definition=e?.videoProviderDefinition,this.explicitDefaultModel=e?.defaultModel,this.explicitAllowedModels=e?.allowedModels,this.sleep=e?.sleep??f}resolveDefaultModel(){let e=this.explicitDefaultModel??this.definition?.defaults?.model;return typeof e!=`string`||e.trim().length===0?{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_MODEL_REQUIRED`,`DAG_SEEDANCE_VIDEO_DEFAULT_MODEL must be configured or model must be specified in node config`)}:{ok:!0,value:e.trim()}}resolveAllowedModels(){return this.explicitAllowedModels??this.definition?.defaults?.allowedModels??[]}resolveProvider(){if(this.definition!==void 0)return e(this.definition)}mapProviderError(e,n,r){return{ok:!1,error:t(e,n.message,!1,{code:n.code,model:r})}}async tryCancel(e,t){try{await e.cancelVideoJob(t)}catch{}}async generateVideo(e){let t=this.resolveDefaultModel();if(!t.ok)return t;let n=this.resolveAllowedModels(),i=this.resolveProvider();if(!i)return{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_CREDENTIALS_REQUIRED`,`SEEDANCE_API_KEY and SEEDANCE_BASE_URL must both be configured for seedance-video node runtime`)};let a=d(e.model,t.value,n);if(!a.ok)return a;let o=await i.createVideo({prompt:e.prompt,model:a.value,...e.durationSeconds===void 0?{}:{durationSeconds:e.durationSeconds},...e.aspectRatio===void 0?{}:{aspectRatio:e.aspectRatio}});return o.ok?this.pollJob(i,o.value.jobId,a.value,e):this.mapProviderError(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_CREATE_FAILED`,o.error,a.value)}mapTerminalSnapshot(e,n){if(e.status===`succeeded`)return e.output?l(e.output):{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_MISSING`,`Seedance video job succeeded but returned no output`,!1,{jobId:e.jobId,model:n})};if(e.status===`failed`||e.status===`cancelled`)return{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_JOB_FAILED`,`Seedance video job ${e.status}: ${e.error?.message??`no error detail`}`,!1,{jobId:e.jobId,status:e.status,providerCode:e.error?.code??`unknown`})}}async pollJob(e,n,r,i){let a=Date.now();for(;;){let o=await e.getVideoJob(n);if(!o.ok)return this.mapProviderError(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_POLL_FAILED`,o.error,r);let s=this.mapTerminalSnapshot(o.value,r);if(s)return s;if(Date.now()-a>=i.maxWaitMs)return await this.tryCancel(e,n),{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_TIMEOUT`,`Seedance video job did not complete within ${i.maxWaitMs}ms`,!0,{jobId:n,maxWaitMs:i.maxWaitMs})};await this.sleep(i.pollIntervalMs)}}};const m=c.object({model:c.string().default(``),baseCredits:c.number().default(.5),durationSeconds:c.number().int().positive().optional(),aspectRatio:c.string().optional(),pollIntervalMs:c.number().int().positive().default(5e3),maxWaitMs:c.number().int().positive().default(3e5)});var h=class extends n{nodeType=`seedance-video`;displayName=`Seedance Video`;category=`AI`;inputs=[{key:`text`,label:`Text`,order:0,type:`string`,required:!0}];outputs=[o({key:`video`,label:`Video`,order:0,required:!0,preset:i.VIDEO_MP4})];defaultInputPort=`text`;defaultOutputPort=`video`;configSchemaDefinition=m;runtime;constructor(e){super(),this.runtime=new p(e)}async estimateCostWithConfig(e,t,n){return{ok:!0,value:{estimatedCredits:n.baseCredits}}}async executeWithConfig(e,n,i){let o=new a(e,n.nodeDefinition.nodeId),s=o.requireInputString(`text`);if(!s.ok||s.value.trim().length===0)return{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_PROMPT_REQUIRED`,`Seedance video node requires non-empty text input`,{nodeId:n.nodeDefinition.nodeId})};let c=await this.runtime.generateVideo({prompt:s.value.trim(),model:i.model,...i.durationSeconds===void 0?{}:{durationSeconds:i.durationSeconds},...i.aspectRatio===void 0?{}:{aspectRatio:i.aspectRatio},pollIntervalMs:i.pollIntervalMs,maxWaitMs:i.maxWaitMs});return c.ok?c.value.kind===`video`?(o.setOutput(`video`,c.value),o.setOutput(`_agentSummary`,`Video generated from prompt with Seedance. Model: ${i.model}.`),{ok:!0,value:o.toOutput()}):{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_INVALID`,`Seedance video node returned non-video output`,!1)}:c}};function g(){return new h}export{m as SeedanceVideoConfigSchema,h as SeedanceVideoNodeDefinition,p as SeedanceVideoRuntime,g as createSeedanceVideoNodeDefinition};
2
+ import{J as e}from"./node-PhNl8kvo.js";import{c as t,i as n,l as r,n as i,o as a,r as o,s}from"./cli-core-Cg4H6FH2.js";import{z as c}from"zod";function l(e){let t=s(e,{kind:`video`,mediaTypePrefix:`video/`,defaultMimeType:`video/mp4`,parseDataUri:!1});return t.ok?t:{ok:!1,error:u(t.rejection)}}function u(e){switch(e.reason){case`asset_invalid`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_ASSET_INVALID`,`Provider returned asset output without valid assetId`,!1);case`uri_missing`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_URI_MISSING`,`Provider returned uri output without uri value`,!1);case`media_type_invalid`:case`data_uri_unsupported`:return t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_MEDIA_TYPE_INVALID`,`Provider returned non-video media type for seedance-video output`,!1,{mimeType:e.reason===`media_type_invalid`?e.mimeType??`missing`:`missing`})}}function d(e,t,n){let i=e.trim().length>0?e.trim():t;return n.length>0&&!n.includes(i)?{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_MODEL_NOT_ALLOWED`,`Selected seedance-video model is not allowed in DAG runtime`,{model:i})}:{ok:!0,value:i}}function f(e){return new Promise(t=>{setTimeout(t,e)})}var p=class{definition;explicitDefaultModel;explicitAllowedModels;sleep;constructor(e){this.definition=e?.videoProviderDefinition,this.explicitDefaultModel=e?.defaultModel,this.explicitAllowedModels=e?.allowedModels,this.sleep=e?.sleep??f}resolveDefaultModel(){let e=this.explicitDefaultModel??this.definition?.defaults?.model;return typeof e!=`string`||e.trim().length===0?{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_MODEL_REQUIRED`,`DAG_SEEDANCE_VIDEO_DEFAULT_MODEL must be configured or model must be specified in node config`)}:{ok:!0,value:e.trim()}}resolveAllowedModels(){return this.explicitAllowedModels??this.definition?.defaults?.allowedModels??[]}resolveProvider(){if(this.definition!==void 0)return e(this.definition)}mapProviderError(e,n,r){return{ok:!1,error:t(e,n.message,!1,{code:n.code,model:r})}}async tryCancel(e,t){try{await e.cancelVideoJob(t)}catch{}}async generateVideo(e){let t=this.resolveDefaultModel();if(!t.ok)return t;let n=this.resolveAllowedModels(),i=this.resolveProvider();if(!i)return{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_CREDENTIALS_REQUIRED`,`SEEDANCE_API_KEY and SEEDANCE_BASE_URL must both be configured for seedance-video node runtime`)};let a=d(e.model,t.value,n);if(!a.ok)return a;let o=await i.createVideo({prompt:e.prompt,model:a.value,...e.durationSeconds===void 0?{}:{durationSeconds:e.durationSeconds},...e.aspectRatio===void 0?{}:{aspectRatio:e.aspectRatio}});return o.ok?this.pollJob(i,o.value.jobId,a.value,e):this.mapProviderError(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_CREATE_FAILED`,o.error,a.value)}mapTerminalSnapshot(e,n){if(e.status===`succeeded`)return e.output?l(e.output):{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_MISSING`,`Seedance video job succeeded but returned no output`,!1,{jobId:e.jobId,model:n})};if(e.status===`failed`||e.status===`cancelled`)return{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_JOB_FAILED`,`Seedance video job ${e.status}: ${e.error?.message??`no error detail`}`,!1,{jobId:e.jobId,status:e.status,providerCode:e.error?.code??`unknown`})}}async pollJob(e,n,r,i){let a=Date.now();for(;;){let o=await e.getVideoJob(n);if(!o.ok)return this.mapProviderError(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_POLL_FAILED`,o.error,r);let s=this.mapTerminalSnapshot(o.value,r);if(s)return s;if(Date.now()-a>=i.maxWaitMs)return await this.tryCancel(e,n),{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_TIMEOUT`,`Seedance video job did not complete within ${i.maxWaitMs}ms`,!0,{jobId:n,maxWaitMs:i.maxWaitMs})};await this.sleep(i.pollIntervalMs)}}};const m=c.object({model:c.string().default(``),baseCredits:c.number().default(.5),durationSeconds:c.number().int().positive().optional(),aspectRatio:c.string().optional(),pollIntervalMs:c.number().int().positive().default(5e3),maxWaitMs:c.number().int().positive().default(3e5)});var h=class extends n{nodeType=`seedance-video`;displayName=`Seedance Video`;category=`AI`;inputs=[{key:`text`,label:`Text`,order:0,type:`string`,required:!0}];outputs=[o({key:`video`,label:`Video`,order:0,required:!0,preset:i.VIDEO_MP4})];defaultInputPort=`text`;defaultOutputPort=`video`;configSchemaDefinition=m;runtime;constructor(e){super(),this.runtime=new p(e)}async estimateCostWithConfig(e,t,n){return{ok:!0,value:{estimatedCredits:n.baseCredits}}}async executeWithConfig(e,n,i){let o=new a(e,n.nodeDefinition.nodeId),s=o.requireInputString(`text`);if(!s.ok||s.value.trim().length===0)return{ok:!1,error:r(`DAG_VALIDATION_SEEDANCE_VIDEO_PROMPT_REQUIRED`,`Seedance video node requires non-empty text input`,{nodeId:n.nodeDefinition.nodeId})};let c=await this.runtime.generateVideo({prompt:s.value.trim(),model:i.model,...i.durationSeconds===void 0?{}:{durationSeconds:i.durationSeconds},...i.aspectRatio===void 0?{}:{aspectRatio:i.aspectRatio},pollIntervalMs:i.pollIntervalMs,maxWaitMs:i.maxWaitMs});return c.ok?c.value.kind===`video`?(o.setOutput(`video`,c.value),o.setOutput(`_agentSummary`,`Video generated from prompt with Seedance. Model: ${i.model}.`),{ok:!0,value:o.toOutput()}):{ok:!1,error:t(`DAG_TASK_EXECUTION_SEEDANCE_VIDEO_OUTPUT_INVALID`,`Seedance video node returned non-video output`,!1)}:c}};function g(){return new h}export{m as SeedanceVideoConfigSchema,h as SeedanceVideoNodeDefinition,p as SeedanceVideoRuntime,g as createSeedanceVideoNodeDefinition};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robota-sdk/agent-cli",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "robota — a coding-capable terminal agent built from the same foundation as the Robota SDK",
5
5
  "type": "module",
6
6
  "bin": {
@@ -113,6 +113,7 @@
113
113
  },
114
114
  "devDependencies": {
115
115
  "@homebridge/node-pty-prebuilt-multiarch": "^0.14.1",
116
+ "@robota-sdk/workflows": "0.0.1",
116
117
  "@types/marked": "^6.0.0",
117
118
  "@types/qrcode": "^1.5.5",
118
119
  "@types/ws": "^8.18.1",
@@ -127,43 +128,42 @@
127
128
  "tsx": "^4.23.1",
128
129
  "typescript": "^6.0.3",
129
130
  "vitest": "^3.2.6",
130
- "@robota-sdk/workflows": "file:../../vendor/robota-workflows/robota-sdk-workflows-0.0.1.tgz",
131
- "@robota-sdk/agent-builtin-providers": "3.0.0",
132
- "@robota-sdk/agent-command": "3.0.0",
133
- "@robota-sdk/agent-core": "3.0.0",
134
- "@robota-sdk/agent-executor": "3.0.0",
135
- "@robota-sdk/agent-gui-web": "3.0.0",
136
- "@robota-sdk/agent-interface-analytics": "3.0.0",
137
- "@robota-sdk/agent-interface-command": "3.0.0",
138
- "@robota-sdk/agent-interface-session": "3.0.0",
139
- "@robota-sdk/agent-framework": "3.0.0",
140
- "@robota-sdk/agent-interface-transport": "3.0.0",
141
- "@robota-sdk/agent-mcp": "3.0.0",
142
- "@robota-sdk/agent-interface-session-mobility": "3.0.0",
143
- "@robota-sdk/agent-organization-host": "3.0.0",
144
- "@robota-sdk/agent-preset": "3.0.0",
145
- "@robota-sdk/agent-product": "3.0.0",
146
- "@robota-sdk/agent-provider-anthropic": "3.0.0",
147
- "@robota-sdk/agent-provider-gemini": "3.0.0",
148
- "@robota-sdk/agent-provider-openai": "3.0.0",
149
- "@robota-sdk/agent-provider-openai-compatible": "3.0.0",
150
- "@robota-sdk/agent-provider-replay": "3.0.0",
151
- "@robota-sdk/agent-remote-pairing": "3.0.0",
152
- "@robota-sdk/agent-session": "3.0.0",
153
- "@robota-sdk/agent-session-analytics": "3.0.0",
154
- "@robota-sdk/agent-subagent-runner": "3.0.0",
155
- "@robota-sdk/agent-telemetry-otel": "3.0.0",
156
- "@robota-sdk/agent-tool-defaults": "3.0.0",
157
- "@robota-sdk/agent-transport": "3.0.0",
158
- "@robota-sdk/agent-transport-acp": "3.0.0",
159
- "@robota-sdk/agent-tools": "3.0.0",
160
- "@robota-sdk/agent-transport-http": "3.0.0",
161
- "@robota-sdk/agent-transport-mcp": "3.0.0",
162
- "@robota-sdk/agent-transport-webrtc": "3.0.0",
163
- "@robota-sdk/agent-transport-ws": "3.0.0",
164
- "@robota-sdk/agent-ui-terminal": "3.0.0",
165
- "@robota-sdk/pack-coding": "3.0.0",
166
- "@robota-sdk/product-config": "3.0.0"
131
+ "@robota-sdk/agent-builtin-providers": "3.0.2",
132
+ "@robota-sdk/agent-command": "3.0.2",
133
+ "@robota-sdk/agent-core": "3.0.2",
134
+ "@robota-sdk/agent-framework": "3.0.2",
135
+ "@robota-sdk/agent-executor": "3.0.2",
136
+ "@robota-sdk/agent-gui-web": "3.0.2",
137
+ "@robota-sdk/agent-interface-analytics": "3.0.2",
138
+ "@robota-sdk/agent-interface-session": "3.0.2",
139
+ "@robota-sdk/agent-interface-session-mobility": "3.0.2",
140
+ "@robota-sdk/agent-interface-command": "3.0.2",
141
+ "@robota-sdk/agent-mcp": "3.0.2",
142
+ "@robota-sdk/agent-preset": "3.0.2",
143
+ "@robota-sdk/agent-organization-host": "3.0.2",
144
+ "@robota-sdk/agent-provider-anthropic": "3.0.2",
145
+ "@robota-sdk/agent-interface-transport": "3.0.2",
146
+ "@robota-sdk/agent-provider-openai": "3.0.2",
147
+ "@robota-sdk/agent-product": "3.0.2",
148
+ "@robota-sdk/agent-provider-replay": "3.0.2",
149
+ "@robota-sdk/agent-session": "3.0.2",
150
+ "@robota-sdk/agent-provider-gemini": "3.0.2",
151
+ "@robota-sdk/agent-remote-pairing": "3.0.2",
152
+ "@robota-sdk/agent-provider-openai-compatible": "3.0.2",
153
+ "@robota-sdk/agent-session-analytics": "3.0.2",
154
+ "@robota-sdk/agent-subagent-runner": "3.0.2",
155
+ "@robota-sdk/agent-telemetry-otel": "3.0.2",
156
+ "@robota-sdk/agent-tools": "3.0.2",
157
+ "@robota-sdk/agent-tool-defaults": "3.0.2",
158
+ "@robota-sdk/agent-transport": "3.0.2",
159
+ "@robota-sdk/agent-transport-acp": "3.0.2",
160
+ "@robota-sdk/agent-transport-http": "3.0.2",
161
+ "@robota-sdk/agent-transport-mcp": "3.0.2",
162
+ "@robota-sdk/agent-transport-webrtc": "3.0.2",
163
+ "@robota-sdk/agent-transport-ws": "3.0.2",
164
+ "@robota-sdk/agent-ui-terminal": "3.0.2",
165
+ "@robota-sdk/product-config": "3.0.2",
166
+ "@robota-sdk/pack-coding": "3.0.2"
167
167
  },
168
168
  "keywords": [
169
169
  "ai",