@castari/cli 0.1.10 → 0.2.0

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 (70) hide show
  1. package/bin/cast.js +2 -0
  2. package/dist/commands/agents.d.ts +6 -0
  3. package/dist/commands/agents.d.ts.map +1 -0
  4. package/dist/commands/agents.js +174 -0
  5. package/dist/commands/agents.js.map +1 -0
  6. package/dist/commands/apikey.d.ts +6 -0
  7. package/dist/commands/apikey.d.ts.map +1 -0
  8. package/dist/commands/apikey.js +57 -0
  9. package/dist/commands/apikey.js.map +1 -0
  10. package/dist/commands/deploy.d.ts +3 -3
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +24 -64
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/commands/invoke.d.ts +3 -0
  15. package/dist/commands/invoke.d.ts.map +1 -0
  16. package/dist/commands/invoke.js +50 -0
  17. package/dist/commands/invoke.js.map +1 -0
  18. package/dist/commands/login.d.ts +3 -0
  19. package/dist/commands/login.d.ts.map +1 -0
  20. package/dist/commands/login.js +123 -0
  21. package/dist/commands/login.js.map +1 -0
  22. package/dist/commands/logout.d.ts +3 -0
  23. package/dist/commands/logout.d.ts.map +1 -0
  24. package/dist/commands/logout.js +16 -0
  25. package/dist/commands/logout.js.map +1 -0
  26. package/dist/commands/secrets.d.ts +6 -0
  27. package/dist/commands/secrets.d.ts.map +1 -0
  28. package/dist/commands/secrets.js +90 -0
  29. package/dist/commands/secrets.js.map +1 -0
  30. package/dist/commands/stop.d.ts +3 -0
  31. package/dist/commands/stop.d.ts.map +1 -0
  32. package/dist/commands/stop.js +25 -0
  33. package/dist/commands/stop.js.map +1 -0
  34. package/dist/commands/usage.d.ts +3 -0
  35. package/dist/commands/usage.d.ts.map +1 -0
  36. package/dist/commands/usage.js +76 -0
  37. package/dist/commands/usage.js.map +1 -0
  38. package/dist/commands/whoami.d.ts +3 -0
  39. package/dist/commands/whoami.d.ts.map +1 -0
  40. package/dist/commands/whoami.js +27 -0
  41. package/dist/commands/whoami.js.map +1 -0
  42. package/dist/index.d.ts +2 -1
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +36 -34
  45. package/dist/index.js.map +1 -0
  46. package/dist/utils/errors.d.ts +6 -0
  47. package/dist/utils/errors.d.ts.map +1 -0
  48. package/dist/utils/errors.js +42 -0
  49. package/dist/utils/errors.js.map +1 -0
  50. package/dist/utils/output.d.ts +45 -0
  51. package/dist/utils/output.d.ts.map +1 -0
  52. package/dist/utils/output.js +75 -0
  53. package/dist/utils/output.js.map +1 -0
  54. package/package.json +55 -35
  55. package/LICENSE +0 -21
  56. package/README.md +0 -131
  57. package/dist/commands/client-id.d.ts +0 -1
  58. package/dist/commands/client-id.js +0 -25
  59. package/dist/commands/dev.d.ts +0 -1
  60. package/dist/commands/dev.js +0 -17
  61. package/dist/commands/generate-secrets.d.ts +0 -1
  62. package/dist/commands/generate-secrets.js +0 -60
  63. package/dist/commands/init.d.ts +0 -5
  64. package/dist/commands/init.js +0 -883
  65. package/dist/commands/start.d.ts +0 -5
  66. package/dist/commands/start.js +0 -100
  67. package/dist/utils/client-auth.d.ts +0 -11
  68. package/dist/utils/client-auth.js +0 -21
  69. package/dist/utils/client-id.d.ts +0 -10
  70. package/dist/utils/client-id.js +0 -36
@@ -0,0 +1,90 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+ import { CastariClient } from '@castari/sdk';
5
+ import { info, hint, blank } from '../utils/output.js';
6
+ import { handleError } from '../utils/errors.js';
7
+ /**
8
+ * cast secrets list <slug>
9
+ */
10
+ const listCommand = new Command('list')
11
+ .description('List secret keys for an agent')
12
+ .argument('<slug>', 'Agent slug')
13
+ .action(async (slug) => {
14
+ const spinner = ora('Fetching secrets...').start();
15
+ try {
16
+ const client = new CastariClient();
17
+ await client.ensureAuthenticated();
18
+ const secrets = await client.agents.listSecrets(slug);
19
+ spinner.stop();
20
+ if (secrets.length === 0) {
21
+ info(`No secrets set for agent '${slug}'`);
22
+ hint(`Set one with: cast secrets set ${slug} <key> <value>`);
23
+ return;
24
+ }
25
+ blank();
26
+ console.log(chalk.bold(`Secrets for '${slug}':`));
27
+ blank();
28
+ for (const secret of secrets) {
29
+ console.log(` ${chalk.cyan('•')} ${secret.key}`);
30
+ }
31
+ blank();
32
+ info('Note: Secret values are never displayed for security');
33
+ }
34
+ catch (err) {
35
+ spinner.fail('Failed to list secrets');
36
+ handleError(err);
37
+ }
38
+ });
39
+ /**
40
+ * cast secrets set <slug> <key> <value>
41
+ */
42
+ const setCommand = new Command('set')
43
+ .description('Set a secret for an agent')
44
+ .argument('<slug>', 'Agent slug')
45
+ .argument('<key>', 'Secret key (e.g., API_KEY)')
46
+ .argument('<value>', 'Secret value')
47
+ .action(async (slug, key, value) => {
48
+ const spinner = ora('Setting secret...').start();
49
+ try {
50
+ const client = new CastariClient();
51
+ await client.ensureAuthenticated();
52
+ await client.agents.setSecret(slug, key, value);
53
+ spinner.succeed(`Secret '${key}' set for agent '${slug}'`);
54
+ hint('Redeploy the agent to apply changes');
55
+ }
56
+ catch (err) {
57
+ spinner.fail('Failed to set secret');
58
+ handleError(err);
59
+ }
60
+ });
61
+ /**
62
+ * cast secrets delete <slug> <key>
63
+ */
64
+ const deleteCommand = new Command('delete')
65
+ .description('Delete a secret from an agent')
66
+ .argument('<slug>', 'Agent slug')
67
+ .argument('<key>', 'Secret key to delete')
68
+ .action(async (slug, key) => {
69
+ const spinner = ora('Deleting secret...').start();
70
+ try {
71
+ const client = new CastariClient();
72
+ await client.ensureAuthenticated();
73
+ await client.agents.deleteSecret(slug, key);
74
+ spinner.succeed(`Secret '${key}' deleted from agent '${slug}'`);
75
+ hint('Redeploy the agent to apply changes');
76
+ }
77
+ catch (err) {
78
+ spinner.fail('Failed to delete secret');
79
+ handleError(err);
80
+ }
81
+ });
82
+ /**
83
+ * cast secrets
84
+ */
85
+ export const secretsCommand = new Command('secrets')
86
+ .description('Manage agent secrets')
87
+ .addCommand(listCommand)
88
+ .addCommand(setCommand)
89
+ .addCommand(deleteCommand);
90
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/commands/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const stopCommand: Command;
3
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SAoBpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import { CastariClient } from '@castari/sdk';
4
+ import { keyValue, blank } from '../utils/output.js';
5
+ import { handleError } from '../utils/errors.js';
6
+ export const stopCommand = new Command('stop')
7
+ .description('Stop a running agent')
8
+ .argument('<slug>', 'Agent slug')
9
+ .action(async (slug) => {
10
+ const spinner = ora(`Stopping ${slug}...`).start();
11
+ try {
12
+ const client = new CastariClient();
13
+ await client.ensureAuthenticated();
14
+ const agent = await client.agents.stop(slug);
15
+ spinner.succeed(`Agent '${slug}' stopped`);
16
+ blank();
17
+ keyValue('Status', agent.status);
18
+ blank();
19
+ }
20
+ catch (err) {
21
+ spinner.fail('Failed to stop agent');
22
+ handleError(err);
23
+ }
24
+ });
25
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAW,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC;QAC3C,KAAK,EAAE,CAAC;QACR,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,EAAE,CAAC;IACV,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const usageCommand: Command;
3
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/commands/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAkFrB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import Table from 'cli-table3';
4
+ import chalk from 'chalk';
5
+ import { CastariClient } from '@castari/sdk';
6
+ import { blank, formatNumber, formatCost, header } from '../utils/output.js';
7
+ import { handleError } from '../utils/errors.js';
8
+ export const usageCommand = new Command('usage')
9
+ .description('Show usage statistics')
10
+ .option('-d, --days <days>', 'Number of days to show (default: 30)', '30')
11
+ .option('--daily', 'Show daily breakdown')
12
+ .action(async (options) => {
13
+ const spinner = ora('Fetching usage data...').start();
14
+ try {
15
+ const client = new CastariClient();
16
+ await client.ensureAuthenticated();
17
+ const days = parseInt(options.days, 10);
18
+ if (options.daily) {
19
+ // Show daily breakdown
20
+ const dailyUsage = await client.usage.daily({ days });
21
+ spinner.stop();
22
+ blank();
23
+ header(`Usage (last ${days} days)`);
24
+ blank();
25
+ if (dailyUsage.length === 0) {
26
+ console.log(chalk.gray(' No usage data available'));
27
+ return;
28
+ }
29
+ const table = new Table({
30
+ head: [
31
+ chalk.white('Date'),
32
+ chalk.white('Invocations'),
33
+ chalk.white('Input Tokens'),
34
+ chalk.white('Output Tokens'),
35
+ chalk.white('Cost'),
36
+ ],
37
+ style: {
38
+ head: [],
39
+ border: [],
40
+ },
41
+ });
42
+ for (const day of dailyUsage) {
43
+ table.push([
44
+ day.date,
45
+ formatNumber(day.invocation_count),
46
+ formatNumber(day.input_tokens),
47
+ formatNumber(day.output_tokens),
48
+ formatCost(day.cost_usd),
49
+ ]);
50
+ }
51
+ console.log(table.toString());
52
+ }
53
+ else {
54
+ // Show summary
55
+ const summary = await client.usage.summary({ days });
56
+ spinner.stop();
57
+ blank();
58
+ header(`Usage Summary (last ${days} days)`);
59
+ blank();
60
+ const table = new Table({
61
+ style: {
62
+ head: [],
63
+ border: [],
64
+ },
65
+ });
66
+ table.push([chalk.gray('Total Invocations'), formatNumber(summary.total_invocations)], [chalk.gray('Input Tokens'), formatNumber(summary.total_input_tokens)], [chalk.gray('Output Tokens'), formatNumber(summary.total_output_tokens)], [chalk.gray('Total Cost'), chalk.green(formatCost(summary.total_cost_usd))]);
67
+ console.log(table.toString());
68
+ blank();
69
+ }
70
+ }
71
+ catch (err) {
72
+ spinner.fail('Failed to fetch usage data');
73
+ handleError(err);
74
+ }
75
+ });
76
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/commands/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const whoamiCommand: Command;
3
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAqBtB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import { CastariClient } from '@castari/sdk';
4
+ import { keyValue, blank } from '../utils/output.js';
5
+ import { handleError } from '../utils/errors.js';
6
+ export const whoamiCommand = new Command('whoami')
7
+ .description('Show current authenticated user')
8
+ .action(async () => {
9
+ const spinner = ora('Fetching user info...').start();
10
+ try {
11
+ const client = new CastariClient();
12
+ await client.ensureAuthenticated();
13
+ const user = await client.auth.me();
14
+ spinner.stop();
15
+ blank();
16
+ keyValue('Email', user.email);
17
+ keyValue('User ID', user.id);
18
+ keyValue('API Key', user.api_key_prefix ? `${user.api_key_prefix}...` : 'None');
19
+ keyValue('Created', new Date(user.created_at).toLocaleDateString());
20
+ blank();
21
+ }
22
+ catch (err) {
23
+ spinner.fail('Failed to get user info');
24
+ handleError(err);
25
+ }
26
+ });
27
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAEpC,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,EAAE,CAAC;QACR,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChF,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpE,KAAK,EAAE,CAAC;IACV,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -1,34 +1,36 @@
1
- #!/usr/bin/env bun
2
- import { cac } from 'cac';
3
- import { init } from './commands/init';
4
- import { deploy } from './commands/deploy';
5
- import { start } from './commands/start';
6
- import { dev } from './commands/dev';
7
- import { generateSecrets } from './commands/generate-secrets';
8
- import { createRequire } from 'module';
9
- const require = createRequire(import.meta.url);
10
- const { version } = require('../package.json');
11
- const cli = cac('castari');
12
- cli
13
- .command('init', 'Initialize a new Castari agent project')
14
- .option('--demo', 'Generate a Castari demo (web + agent) scaffold')
15
- .action(init);
16
- cli
17
- .command('deploy', 'Deploy the agent to the Castari Platform')
18
- .option('--snapshot <name>', 'Snapshot name (overrides package.json)')
19
- .action(deploy);
20
- cli
21
- .command('start', 'Start a sandbox for the agent')
22
- .option('--snapshot <name>', 'Snapshot name')
23
- .option('--volume <name>', 'Volume name for persistence')
24
- .option('--id <id>', 'Custom sandbox ID')
25
- .action(start);
26
- cli
27
- .command('dev', 'Run the agent locally for development')
28
- .action(dev);
29
- cli
30
- .command('generate-secrets', 'Generate Castari credentials (client ID and API key)')
31
- .action(generateSecrets);
32
- cli.help();
33
- cli.version(version);
34
- cli.parse();
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { loginCommand } from './commands/login.js';
4
+ import { logoutCommand } from './commands/logout.js';
5
+ import { whoamiCommand } from './commands/whoami.js';
6
+ import { apikeyCommand } from './commands/apikey.js';
7
+ import { agentsCommand } from './commands/agents.js';
8
+ import { deployCommand } from './commands/deploy.js';
9
+ import { stopCommand } from './commands/stop.js';
10
+ import { invokeCommand } from './commands/invoke.js';
11
+ import { secretsCommand } from './commands/secrets.js';
12
+ import { usageCommand } from './commands/usage.js';
13
+ const program = new Command();
14
+ program
15
+ .name('cast')
16
+ .description('Castari CLI - Deploy AI agents with one command')
17
+ .version('0.1.0');
18
+ // Auth commands
19
+ program.addCommand(loginCommand);
20
+ program.addCommand(logoutCommand);
21
+ program.addCommand(whoamiCommand);
22
+ program.addCommand(apikeyCommand);
23
+ // Agent management
24
+ program.addCommand(agentsCommand);
25
+ // Deployment
26
+ program.addCommand(deployCommand);
27
+ program.addCommand(stopCommand);
28
+ // Invocation
29
+ program.addCommand(invokeCommand);
30
+ // Secrets
31
+ program.addCommand(secretsCommand);
32
+ // Usage
33
+ program.addCommand(usageCommand);
34
+ // Parse arguments
35
+ program.parse();
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,gBAAgB;AAChB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,mBAAmB;AACnB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,aAAa;AACb,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,aAAa;AACb,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,UAAU;AACV,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,QAAQ;AACR,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Handle an error and display a user-friendly message
3
+ * Exits the process with code 1
4
+ */
5
+ export declare function handleError(err: unknown): never;
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CA2B/C"}
@@ -0,0 +1,42 @@
1
+ import { CastariError, AuthenticationError, NotFoundError, RateLimitError, ValidationError, BadRequestError, } from '@castari/sdk';
2
+ import { error, hint } from './output.js';
3
+ /**
4
+ * Handle an error and display a user-friendly message
5
+ * Exits the process with code 1
6
+ */
7
+ export function handleError(err) {
8
+ if (err instanceof AuthenticationError) {
9
+ error('Authentication failed');
10
+ hint("Run 'cast login' to authenticate");
11
+ }
12
+ else if (err instanceof NotFoundError) {
13
+ error(err.message || 'Resource not found');
14
+ hint("Run 'cast agents list' to see your agents");
15
+ }
16
+ else if (err instanceof RateLimitError) {
17
+ error('Rate limit exceeded');
18
+ if (err.retryAfter) {
19
+ hint(`Try again in ${err.retryAfter} seconds`);
20
+ }
21
+ else {
22
+ hint('Try again in a few moments');
23
+ }
24
+ }
25
+ else if (err instanceof ValidationError) {
26
+ error(`Validation error: ${err.message}`);
27
+ }
28
+ else if (err instanceof BadRequestError) {
29
+ error(`Bad request: ${err.message}`);
30
+ }
31
+ else if (err instanceof CastariError) {
32
+ error(err.message);
33
+ }
34
+ else if (err instanceof Error) {
35
+ error(err.message);
36
+ }
37
+ else {
38
+ error('An unexpected error occurred');
39
+ }
40
+ process.exit(1);
41
+ }
42
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/B,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,oBAAoB,CAAC,CAAC;QAC3C,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QACzC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;QAC1C,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;QAC1C,KAAK,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Print a success message
3
+ */
4
+ export declare function success(message: string): void;
5
+ /**
6
+ * Print an info message
7
+ */
8
+ export declare function info(message: string): void;
9
+ /**
10
+ * Print a warning message
11
+ */
12
+ export declare function warn(message: string): void;
13
+ /**
14
+ * Print an error message
15
+ */
16
+ export declare function error(message: string): void;
17
+ /**
18
+ * Print a hint/suggestion
19
+ */
20
+ export declare function hint(message: string): void;
21
+ /**
22
+ * Print a blank line
23
+ */
24
+ export declare function blank(): void;
25
+ /**
26
+ * Print a header
27
+ */
28
+ export declare function header(title: string): void;
29
+ /**
30
+ * Print a key-value pair
31
+ */
32
+ export declare function keyValue(key: string, value: string | number | undefined): void;
33
+ /**
34
+ * Format a number with commas
35
+ */
36
+ export declare function formatNumber(n: number): string;
37
+ /**
38
+ * Format a cost in USD
39
+ */
40
+ export declare function formatCost(usd: number): string;
41
+ /**
42
+ * Format a date string
43
+ */
44
+ export declare function formatDate(dateStr: string): string;
45
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAE9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASlD"}
@@ -0,0 +1,75 @@
1
+ import chalk from 'chalk';
2
+ /**
3
+ * Print a success message
4
+ */
5
+ export function success(message) {
6
+ console.log(chalk.green('✓'), message);
7
+ }
8
+ /**
9
+ * Print an info message
10
+ */
11
+ export function info(message) {
12
+ console.log(chalk.blue('ℹ'), message);
13
+ }
14
+ /**
15
+ * Print a warning message
16
+ */
17
+ export function warn(message) {
18
+ console.log(chalk.yellow('⚠'), message);
19
+ }
20
+ /**
21
+ * Print an error message
22
+ */
23
+ export function error(message) {
24
+ console.error(chalk.red('✗'), message);
25
+ }
26
+ /**
27
+ * Print a hint/suggestion
28
+ */
29
+ export function hint(message) {
30
+ console.log(chalk.gray(' →'), chalk.gray(message));
31
+ }
32
+ /**
33
+ * Print a blank line
34
+ */
35
+ export function blank() {
36
+ console.log();
37
+ }
38
+ /**
39
+ * Print a header
40
+ */
41
+ export function header(title) {
42
+ console.log(chalk.bold(title));
43
+ }
44
+ /**
45
+ * Print a key-value pair
46
+ */
47
+ export function keyValue(key, value) {
48
+ console.log(` ${chalk.gray(key + ':')} ${value ?? chalk.gray('N/A')}`);
49
+ }
50
+ /**
51
+ * Format a number with commas
52
+ */
53
+ export function formatNumber(n) {
54
+ return n.toLocaleString();
55
+ }
56
+ /**
57
+ * Format a cost in USD
58
+ */
59
+ export function formatCost(usd) {
60
+ return `$${usd.toFixed(4)}`;
61
+ }
62
+ /**
63
+ * Format a date string
64
+ */
65
+ export function formatDate(dateStr) {
66
+ const date = new Date(dateStr);
67
+ return date.toLocaleDateString('en-US', {
68
+ year: 'numeric',
69
+ month: 'short',
70
+ day: 'numeric',
71
+ hour: '2-digit',
72
+ minute: '2-digit',
73
+ });
74
+ }
75
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAkC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,37 +1,57 @@
1
1
  {
2
- "name": "@castari/cli",
3
- "version": "0.1.10",
4
- "type": "module",
5
- "bin": {
6
- "castari": "./dist/index.js"
7
- },
8
- "files": [
9
- "dist"
10
- ],
11
- "license": "MIT",
12
- "publishConfig": {
13
- "access": "public"
14
- },
15
- "scripts": {
16
- "build": "tsc",
17
- "dev": "bun run src/index.ts"
18
- },
19
- "dependencies": {
20
- "@anthropic-ai/claude-agent-sdk": "^0.1.44",
21
- "@castari/sdk": "^0.1.4",
22
- "adm-zip": "^0.5.16",
23
- "cac": "^6.7.14",
24
- "chalk": "^5.3.0",
25
- "dotenv": "^16.3.1",
26
- "form-data": "^4.0.5",
27
- "inquirer": "^9.2.12"
28
- },
29
- "devDependencies": {
30
- "@types/adm-zip": "^0.5.7",
31
- "@types/bun": "^1.3.3",
32
- "@types/form-data": "^2.5.2",
33
- "@types/inquirer": "^9.0.7",
34
- "@types/node": "^20.10.0",
35
- "typescript": "^5.6.3"
36
- }
2
+ "name": "@castari/cli",
3
+ "version": "0.2.0",
4
+ "description": "Castari CLI - Deploy AI agents with one command",
5
+ "author": "Castari <hello@castari.dev>",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/castari/cli.git",
10
+ "directory": "packages/cli"
11
+ },
12
+ "homepage": "https://castari.dev",
13
+ "bugs": {
14
+ "url": "https://github.com/castari/cli/issues"
15
+ },
16
+ "type": "module",
17
+ "main": "dist/index.js",
18
+ "types": "dist/index.d.ts",
19
+ "bin": {
20
+ "cast": "./bin/cast.js"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "test": "vitest run --passWithNoTests",
25
+ "test:watch": "vitest",
26
+ "typecheck": "tsc --noEmit",
27
+ "clean": "rm -rf dist"
28
+ },
29
+ "dependencies": {
30
+ "@castari/sdk": "workspace:*",
31
+ "chalk": "^5.3.0",
32
+ "cli-table3": "^0.6.0",
33
+ "commander": "^12.0.0",
34
+ "open": "^10.0.0",
35
+ "ora": "^8.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "typescript": "^5.3.0"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "bin"
43
+ ],
44
+ "engines": {
45
+ "node": ">=18.0.0"
46
+ },
47
+ "keywords": [
48
+ "castari",
49
+ "ai",
50
+ "agents",
51
+ "cli",
52
+ "claude",
53
+ "anthropic",
54
+ "llm",
55
+ "deploy"
56
+ ]
37
57
  }