@orchagent/cli 0.3.85 → 0.3.86

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.
@@ -67,17 +67,11 @@ Examples:
67
67
  const deleteCheck = await (0, api_1.checkAgentDelete)(config, selectedAgent.id);
68
68
  // Show agent info
69
69
  process.stdout.write(`\n${chalk_1.default.bold('Agent:')} ${selectedAgent.name}@${selectedAgent.version}\n`);
70
- if (deleteCheck.stars_count > 0 || deleteCheck.fork_count > 0) {
71
- process.stdout.write(`${chalk_1.default.bold('Stars:')} ${deleteCheck.stars_count} ${chalk_1.default.bold('Forks:')} ${deleteCheck.fork_count}\n`);
72
- }
73
70
  process.stdout.write('\n');
74
71
  // Handle dry-run
75
72
  if (options.dryRun) {
76
73
  process.stdout.write('\nDRY RUN - No changes will be made\n\n');
77
74
  process.stdout.write(`Would delete: ${selectedAgent.name}@${selectedAgent.version}\n`);
78
- if (deleteCheck.stars_count > 0 || deleteCheck.fork_count > 0) {
79
- process.stdout.write(chalk_1.default.yellow('Warning: This agent has stars or forks\n'));
80
- }
81
75
  process.stdout.write(chalk_1.default.gray('\nData would be retained for 30 days before permanent deletion.\n'));
82
76
  process.stdout.write('\nNo changes made (dry run)\n');
83
77
  return;
@@ -85,7 +79,7 @@ Examples:
85
79
  // Handle confirmation
86
80
  if (!options.yes) {
87
81
  if (deleteCheck.requires_confirmation) {
88
- process.stdout.write(chalk_1.default.yellow('Warning: This agent has stars or forks. Type the agent name to confirm deletion.\n\n'));
82
+ process.stdout.write(chalk_1.default.yellow('Warning: This agent requires extra confirmation. Type the agent name to confirm deletion.\n\n'));
89
83
  const confirmName = await promptText(`Type "${selectedAgent.name}" to confirm deletion: `);
90
84
  if (confirmName !== selectedAgent.name) {
91
85
  process.stdout.write(chalk_1.default.red('\nDeletion cancelled. Name did not match.\n'));
@@ -476,7 +476,7 @@ function registerPublishCommand(program) {
476
476
  // Warn when publishing to the public showcase workspace
477
477
  if (ws.slug === 'orchagent-public' && !options.dryRun) {
478
478
  process.stderr.write(chalk_1.default.red.bold('\n PUBLIC WORKSPACE\n') +
479
- chalk_1.default.red(` Everything published to "${ws.slug}" is publicly visible on orchagent.io/explore.\n\n`));
479
+ chalk_1.default.red(` Everything published to "${ws.slug}" is publicly visible on orchagent.io.\n\n`));
480
480
  const readline = await Promise.resolve().then(() => __importStar(require('readline/promises')));
481
481
  const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
482
482
  const answer = await rl.question(chalk_1.default.red(' Continue? (y/N): '));
@@ -610,6 +610,11 @@ function registerPublishCommand(program) {
610
610
  if (runMode === 'always_on' && executionEngine === 'direct_llm') {
611
611
  throw new errors_1.CliError('run_mode=always_on requires runtime.command or loop configuration');
612
612
  }
613
+ if (manifest.timeout_seconds !== undefined) {
614
+ if (!Number.isInteger(manifest.timeout_seconds) || manifest.timeout_seconds <= 0) {
615
+ throw new errors_1.CliError('timeout_seconds must be a positive integer');
616
+ }
617
+ }
613
618
  // Warn about deprecated prompt field
614
619
  if (manifest.prompt) {
615
620
  process.stderr.write(chalk_1.default.yellow('Warning: "prompt" field in orchagent.json is ignored. Use prompt.md file instead.\n'));
@@ -994,6 +999,7 @@ function registerPublishCommand(program) {
994
999
  is_public: false,
995
1000
  supported_providers: supportedProviders,
996
1001
  default_models: manifest.default_models,
1002
+ timeout_seconds: manifest.timeout_seconds,
997
1003
  // Local run fields for code runtime agents
998
1004
  source_url: manifest.source_url,
999
1005
  pip_package: manifest.pip_package,
@@ -2332,9 +2332,11 @@ async function executeLocal(agentRef, args, options) {
2332
2332
  process.stderr.write(` orch run ${org}/${parsed.agent}@${parsed.version} --local --data '{\"task\": \"...\"}'\n`);
2333
2333
  return;
2334
2334
  }
2335
+ // Resolve @file.json / @- stdin syntax before parsing
2336
+ const resolvedInput = await resolveJsonBody(options.input);
2335
2337
  let agentInputData;
2336
2338
  try {
2337
- agentInputData = JSON.parse(options.input);
2339
+ agentInputData = JSON.parse(resolvedInput);
2338
2340
  }
2339
2341
  catch {
2340
2342
  throw new errors_1.CliError('Invalid JSON input');
@@ -41,6 +41,8 @@ function statusColor(status) {
41
41
  case 'completed': return chalk_1.default.green(status);
42
42
  case 'failed': return chalk_1.default.red(status);
43
43
  case 'running': return chalk_1.default.yellow(status);
44
+ case 'queued': return chalk_1.default.cyan(status);
45
+ case 'deduplicated': return chalk_1.default.dim(status);
44
46
  default: return status;
45
47
  }
46
48
  }
@@ -335,10 +337,20 @@ function registerScheduleCommand(program) {
335
337
  body,
336
338
  headers: { 'Content-Type': 'application/json' },
337
339
  } : {});
338
- process.stdout.write(chalk_1.default.green('\u2713') + ` Run completed\n\n`);
340
+ // Status-aware header message
341
+ const isAsync = result.status === 'queued' || result.status === 'deduplicated';
342
+ if (isAsync) {
343
+ process.stdout.write(chalk_1.default.cyan('\u2713') + ` Run ${result.status}\n\n`);
344
+ }
345
+ else if (result.status === 'failed' || result.status === 'timeout') {
346
+ process.stdout.write(chalk_1.default.red('\u2717') + ` Run ${result.status}\n\n`);
347
+ }
348
+ else {
349
+ process.stdout.write(chalk_1.default.green('\u2713') + ` Run completed\n\n`);
350
+ }
339
351
  process.stdout.write(` Run ID: ${result.run_id}\n`);
340
352
  process.stdout.write(` Status: ${statusColor(result.status)}\n`);
341
- process.stdout.write(` Duration: ${result.duration_ms}ms\n`);
353
+ process.stdout.write(` Duration: ${result.duration_ms != null ? `${result.duration_ms}ms` : 'pending'}\n`);
342
354
  if (result.error) {
343
355
  process.stdout.write(` Error: ${chalk_1.default.red(result.error)}\n`);
344
356
  }
@@ -211,11 +211,11 @@ function registerSkillCommand(program) {
211
211
  .description('Browse available skills')
212
212
  .option('--json', 'Output raw JSON')
213
213
  .action(async () => {
214
- process.stdout.write('Browse and discover skills at: https://orchagent.io/explore\n\n' +
215
- 'Install a skill:\n' +
214
+ process.stdout.write('Install a skill:\n' +
216
215
  ' orch skill install <org>/<skill-name>\n\n' +
217
216
  'View installed skills:\n' +
218
- ' orch update --check\n');
217
+ ' orch update --check\n\n' +
218
+ 'Learn more: https://docs.orchagent.io/skills\n');
219
219
  process.exit(0);
220
220
  });
221
221
  // orch skill create [name]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchagent/cli",
3
- "version": "0.3.85",
3
+ "version": "0.3.86",
4
4
  "description": "Command-line interface for orchagent — deploy and run AI agents for your team",
5
5
  "license": "MIT",
6
6
  "author": "orchagent <hello@orchagent.io>",