@castari/cli 0.2.4 → 0.3.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.
- package/dist/commands/agents.js +2 -2
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +221 -14
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +295 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/invoke.d.ts.map +1 -1
- package/dist/commands/invoke.js +6 -1
- package/dist/commands/invoke.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
package/dist/commands/agents.js
CHANGED
|
@@ -89,7 +89,7 @@ const createCommand = new Command('create')
|
|
|
89
89
|
spinner.succeed(`Agent '${agent.name}' created!`);
|
|
90
90
|
blank();
|
|
91
91
|
keyValue('Slug', agent.slug);
|
|
92
|
-
keyValue('Git URL', agent.git_repo_url);
|
|
92
|
+
keyValue('Git URL', agent.git_repo_url ?? undefined);
|
|
93
93
|
keyValue('Status', agent.status);
|
|
94
94
|
blank();
|
|
95
95
|
hint(`Deploy with: cast deploy ${agent.slug}`);
|
|
@@ -115,7 +115,7 @@ const getCommand = new Command('get')
|
|
|
115
115
|
blank();
|
|
116
116
|
keyValue('Name', agent.name);
|
|
117
117
|
keyValue('Slug', agent.slug);
|
|
118
|
-
keyValue('Git URL', agent.git_repo_url);
|
|
118
|
+
keyValue('Git URL', agent.git_repo_url ?? undefined);
|
|
119
119
|
keyValue('Status', formatStatus(agent.status));
|
|
120
120
|
keyValue('Sandbox ID', agent.sandbox_id ?? undefined);
|
|
121
121
|
keyValue('Created', formatDate(agent.created_at));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuJpC,eAAO,MAAM,aAAa,SAgHtB,CAAC"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -1,28 +1,235 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
-
import { CastariClient } from '@castari/sdk';
|
|
5
|
-
import { keyValue, blank, hint } from '../utils/output.js';
|
|
4
|
+
import { CastariClient, NotFoundError } from '@castari/sdk';
|
|
5
|
+
import { keyValue, blank, hint, error, info } from '../utils/output.js';
|
|
6
6
|
import { handleError } from '../utils/errors.js';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as tar from 'tar';
|
|
10
|
+
import * as os from 'os';
|
|
11
|
+
/**
|
|
12
|
+
* Load castari.json from the current directory
|
|
13
|
+
*/
|
|
14
|
+
function loadProjectConfig(dir) {
|
|
15
|
+
const configPath = path.join(dir, 'castari.json');
|
|
16
|
+
if (!fs.existsSync(configPath)) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
21
|
+
return JSON.parse(content);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert a project name to a valid slug
|
|
29
|
+
*/
|
|
30
|
+
function nameToSlug(name) {
|
|
31
|
+
return name
|
|
32
|
+
.toLowerCase()
|
|
33
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
34
|
+
.replace(/^-+|-+$/g, '')
|
|
35
|
+
.slice(0, 100);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a tarball of the project directory
|
|
39
|
+
*/
|
|
40
|
+
async function createTarball(projectDir) {
|
|
41
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'castari-deploy-'));
|
|
42
|
+
const tarballPath = path.join(tempDir, 'code.tar.gz');
|
|
43
|
+
// Get list of files to include (respect .gitignore patterns)
|
|
44
|
+
const filesToInclude = [];
|
|
45
|
+
const ignorePatterns = loadGitignore(projectDir);
|
|
46
|
+
function walkDir(dir, relativePath = '') {
|
|
47
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
const fullPath = path.join(dir, entry.name);
|
|
50
|
+
const relPath = path.join(relativePath, entry.name);
|
|
51
|
+
// Skip common directories that shouldn't be deployed
|
|
52
|
+
if (entry.isDirectory()) {
|
|
53
|
+
if (entry.name === 'node_modules' ||
|
|
54
|
+
entry.name === '.git' ||
|
|
55
|
+
entry.name === 'dist' ||
|
|
56
|
+
entry.name === '.castari') {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// Check gitignore patterns
|
|
60
|
+
if (shouldIgnore(relPath + '/', ignorePatterns)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
walkDir(fullPath, relPath);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Check gitignore patterns
|
|
67
|
+
if (!shouldIgnore(relPath, ignorePatterns)) {
|
|
68
|
+
filesToInclude.push(relPath);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
walkDir(projectDir);
|
|
74
|
+
// Create tarball
|
|
75
|
+
await tar.create({
|
|
76
|
+
gzip: true,
|
|
77
|
+
file: tarballPath,
|
|
78
|
+
cwd: projectDir,
|
|
79
|
+
}, filesToInclude);
|
|
80
|
+
return tarballPath;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Load .gitignore patterns
|
|
84
|
+
*/
|
|
85
|
+
function loadGitignore(dir) {
|
|
86
|
+
const gitignorePath = path.join(dir, '.gitignore');
|
|
87
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const content = fs.readFileSync(gitignorePath, 'utf-8');
|
|
92
|
+
return content
|
|
93
|
+
.split('\n')
|
|
94
|
+
.map((line) => line.trim())
|
|
95
|
+
.filter((line) => line && !line.startsWith('#'));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a path should be ignored based on patterns
|
|
103
|
+
*/
|
|
104
|
+
function shouldIgnore(filePath, patterns) {
|
|
105
|
+
for (const pattern of patterns) {
|
|
106
|
+
// Simple pattern matching (doesn't handle all gitignore features)
|
|
107
|
+
if (pattern.endsWith('/')) {
|
|
108
|
+
// Directory pattern
|
|
109
|
+
if (filePath.startsWith(pattern) || filePath === pattern.slice(0, -1)) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (pattern.includes('*')) {
|
|
114
|
+
// Wildcard pattern
|
|
115
|
+
const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
|
|
116
|
+
if (regex.test(filePath) || regex.test(path.basename(filePath))) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Exact match or prefix match
|
|
122
|
+
if (filePath === pattern || filePath.startsWith(pattern + '/')) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
7
129
|
export const deployCommand = new Command('deploy')
|
|
8
|
-
.description('Deploy an agent')
|
|
9
|
-
.argument('
|
|
130
|
+
.description('Deploy an agent from local project or by slug')
|
|
131
|
+
.argument('[slug]', 'Agent slug (optional if in a Castari project directory)')
|
|
10
132
|
.action(async (slug) => {
|
|
11
|
-
const
|
|
133
|
+
const projectDir = process.cwd();
|
|
12
134
|
try {
|
|
13
135
|
const client = new CastariClient();
|
|
14
136
|
await client.ensureAuthenticated();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
137
|
+
// If no slug provided, try to detect from castari.json
|
|
138
|
+
if (!slug) {
|
|
139
|
+
const config = loadProjectConfig(projectDir);
|
|
140
|
+
if (!config) {
|
|
141
|
+
error('No castari.json found in current directory');
|
|
142
|
+
blank();
|
|
143
|
+
hint('Either provide an agent slug: cast deploy <slug>');
|
|
144
|
+
hint('Or run from a Castari project directory with castari.json');
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
slug = nameToSlug(config.name);
|
|
148
|
+
info(`Detected project: ${chalk.cyan(config.name)}`);
|
|
149
|
+
// Check if agent exists
|
|
150
|
+
let agent;
|
|
151
|
+
try {
|
|
152
|
+
agent = await client.agents.get(slug);
|
|
153
|
+
info(`Found existing agent: ${chalk.cyan(slug)}`);
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
if (e instanceof NotFoundError) {
|
|
157
|
+
// Create the agent
|
|
158
|
+
const createSpinner = ora(`Creating agent '${slug}'...`).start();
|
|
159
|
+
try {
|
|
160
|
+
agent = await client.agents.create({
|
|
161
|
+
name: config.name,
|
|
162
|
+
slug: slug,
|
|
163
|
+
sourceType: 'local',
|
|
164
|
+
});
|
|
165
|
+
createSpinner.succeed(`Created agent '${slug}'`);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
createSpinner.fail('Failed to create agent');
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
throw e;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Create tarball and upload
|
|
177
|
+
const tarSpinner = ora('Packaging project...').start();
|
|
178
|
+
let tarballPath;
|
|
179
|
+
try {
|
|
180
|
+
tarballPath = await createTarball(projectDir);
|
|
181
|
+
const stats = fs.statSync(tarballPath);
|
|
182
|
+
tarSpinner.succeed(`Packaged project (${(stats.size / 1024).toFixed(1)} KB)`);
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
tarSpinner.fail('Failed to package project');
|
|
186
|
+
throw err;
|
|
187
|
+
}
|
|
188
|
+
// Upload and deploy
|
|
189
|
+
const deploySpinner = ora(`Deploying ${chalk.cyan(slug)}... (this may take a minute)`).start();
|
|
190
|
+
try {
|
|
191
|
+
const content = fs.readFileSync(tarballPath);
|
|
192
|
+
const blob = new Blob([content], { type: 'application/gzip' });
|
|
193
|
+
const result = await client.agents.uploadCode(slug, blob, 'code.tar.gz', {
|
|
194
|
+
autoDeploy: true,
|
|
195
|
+
});
|
|
196
|
+
// Cleanup temp file
|
|
197
|
+
fs.unlinkSync(tarballPath);
|
|
198
|
+
fs.rmdirSync(path.dirname(tarballPath));
|
|
199
|
+
deploySpinner.succeed(`Agent '${slug}' deployed!`);
|
|
200
|
+
blank();
|
|
201
|
+
keyValue('Status', chalk.green(result.status));
|
|
202
|
+
keyValue('Sandbox ID', result.sandbox_id ?? undefined);
|
|
203
|
+
blank();
|
|
204
|
+
hint(`Invoke with: cast invoke ${slug} "your prompt here"`);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
deploySpinner.fail('Deployment failed');
|
|
208
|
+
// Cleanup temp file on error
|
|
209
|
+
try {
|
|
210
|
+
fs.unlinkSync(tarballPath);
|
|
211
|
+
fs.rmdirSync(path.dirname(tarballPath));
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Ignore cleanup errors
|
|
215
|
+
}
|
|
216
|
+
throw err;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// Traditional deployment by slug (for git-based agents)
|
|
221
|
+
const spinner = ora(`Deploying ${slug}...`).start();
|
|
222
|
+
spinner.text = `Deploying ${slug}... (this may take a minute)`;
|
|
223
|
+
const agent = await client.agents.deploy(slug);
|
|
224
|
+
spinner.succeed(`Agent '${slug}' deployed!`);
|
|
225
|
+
blank();
|
|
226
|
+
keyValue('Status', chalk.green(agent.status));
|
|
227
|
+
keyValue('Sandbox ID', agent.sandbox_id ?? undefined);
|
|
228
|
+
blank();
|
|
229
|
+
hint(`Invoke with: cast invoke ${slug} "your prompt here"`);
|
|
230
|
+
}
|
|
23
231
|
}
|
|
24
232
|
catch (err) {
|
|
25
|
-
spinner.fail('Deployment failed');
|
|
26
233
|
handleError(err);
|
|
27
234
|
}
|
|
28
235
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmPpC,eAAO,MAAM,WAAW,SAoHpB,CAAC"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import prompts from 'prompts';
|
|
3
|
+
import fsExtra from 'fs-extra';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import * as https from 'https';
|
|
9
|
+
import * as tar from 'tar';
|
|
10
|
+
import * as os from 'os';
|
|
11
|
+
import { success, error, hint, blank, header, info } from '../utils/output.js';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = path.dirname(__filename);
|
|
15
|
+
const GITHUB_REPO = 'castari/cli';
|
|
16
|
+
const GITHUB_BRANCH = 'main';
|
|
17
|
+
const TEMPLATES_DIR = 'templates';
|
|
18
|
+
const TEMPLATES = {
|
|
19
|
+
default: {
|
|
20
|
+
name: 'default',
|
|
21
|
+
description: 'Coding agent with file and bash tools (like Claude Code)',
|
|
22
|
+
},
|
|
23
|
+
'research-agent': {
|
|
24
|
+
name: 'research-agent',
|
|
25
|
+
description: 'Deep research with web search and document synthesis',
|
|
26
|
+
},
|
|
27
|
+
'support-agent': {
|
|
28
|
+
name: 'support-agent',
|
|
29
|
+
description: 'Customer support with ticket handling and escalation',
|
|
30
|
+
},
|
|
31
|
+
'mcp-tools': {
|
|
32
|
+
name: 'mcp-tools',
|
|
33
|
+
description: 'Agent with example MCP server integration',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* List available templates
|
|
38
|
+
*/
|
|
39
|
+
function listTemplates() {
|
|
40
|
+
blank();
|
|
41
|
+
header('Available templates:');
|
|
42
|
+
blank();
|
|
43
|
+
for (const [key, tmpl] of Object.entries(TEMPLATES)) {
|
|
44
|
+
console.log(` ${chalk.cyan(key.padEnd(18))} ${tmpl.description}`);
|
|
45
|
+
}
|
|
46
|
+
blank();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the local templates directory (for development)
|
|
50
|
+
*/
|
|
51
|
+
function getLocalTemplatesDir() {
|
|
52
|
+
// Check for CASTARI_LOCAL_TEMPLATES env var
|
|
53
|
+
if (process.env.CASTARI_LOCAL_TEMPLATES) {
|
|
54
|
+
return process.env.CASTARI_LOCAL_TEMPLATES;
|
|
55
|
+
}
|
|
56
|
+
// Check if we're in the repo (look for templates dir relative to CLI)
|
|
57
|
+
// This handles development scenarios
|
|
58
|
+
const repoRoot = path.resolve(__dirname, '..', '..', '..', '..');
|
|
59
|
+
const templatesPath = path.join(repoRoot, TEMPLATES_DIR);
|
|
60
|
+
if (fsExtra.existsSync(templatesPath)) {
|
|
61
|
+
return templatesPath;
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Download tarball from URL
|
|
67
|
+
*/
|
|
68
|
+
function downloadTarball(url, destPath) {
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
const file = fsExtra.createWriteStream(destPath);
|
|
71
|
+
file.on('error', (err) => {
|
|
72
|
+
file.close();
|
|
73
|
+
fsExtra.unlink(destPath).catch(() => { });
|
|
74
|
+
reject(err);
|
|
75
|
+
});
|
|
76
|
+
const request = (reqUrl) => {
|
|
77
|
+
https.get(reqUrl, (response) => {
|
|
78
|
+
// Handle redirects
|
|
79
|
+
if (response.statusCode === 301 || response.statusCode === 302) {
|
|
80
|
+
const redirectUrl = response.headers.location;
|
|
81
|
+
if (redirectUrl) {
|
|
82
|
+
request(redirectUrl);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (response.statusCode !== 200) {
|
|
87
|
+
file.close();
|
|
88
|
+
reject(new Error(`Failed to download: HTTP ${response.statusCode}`));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
response.pipe(file);
|
|
92
|
+
file.on('finish', () => {
|
|
93
|
+
file.close();
|
|
94
|
+
resolve();
|
|
95
|
+
});
|
|
96
|
+
}).on('error', (err) => {
|
|
97
|
+
fsExtra.unlink(destPath).catch(() => { }); // Clean up partial file
|
|
98
|
+
reject(err);
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
request(url);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Download template from GitHub
|
|
106
|
+
*/
|
|
107
|
+
async function downloadTemplateFromGitHub(templateName, targetDir) {
|
|
108
|
+
const tempDir = path.join(os.tmpdir(), `castari-template-${Date.now()}`);
|
|
109
|
+
const tarballPath = path.join(tempDir, 'repo.tar.gz');
|
|
110
|
+
try {
|
|
111
|
+
await fsExtra.ensureDir(tempDir);
|
|
112
|
+
// Download tarball from GitHub
|
|
113
|
+
const tarballUrl = `https://codeload.github.com/${GITHUB_REPO}/tar.gz/${GITHUB_BRANCH}`;
|
|
114
|
+
await downloadTarball(tarballUrl, tarballPath);
|
|
115
|
+
// Extract tarball
|
|
116
|
+
await tar.x({
|
|
117
|
+
file: tarballPath,
|
|
118
|
+
cwd: tempDir,
|
|
119
|
+
});
|
|
120
|
+
// Find the extracted directory (GitHub adds prefix like "cli-main")
|
|
121
|
+
const entries = await fsExtra.readdir(tempDir);
|
|
122
|
+
const extractedDir = entries.find((e) => e !== 'repo.tar.gz' && fsExtra.statSync(path.join(tempDir, e)).isDirectory());
|
|
123
|
+
if (!extractedDir) {
|
|
124
|
+
throw new Error('Failed to find extracted template directory');
|
|
125
|
+
}
|
|
126
|
+
// Copy the specific template folder
|
|
127
|
+
const templateSource = path.join(tempDir, extractedDir, TEMPLATES_DIR, templateName);
|
|
128
|
+
if (!fsExtra.existsSync(templateSource)) {
|
|
129
|
+
throw new Error(`Template '${templateName}' not found. The template may not be available yet.`);
|
|
130
|
+
}
|
|
131
|
+
await fsExtra.copy(templateSource, targetDir);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
// Cleanup temp directory
|
|
135
|
+
await fsExtra.remove(tempDir).catch(() => { });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Copy template from local directory
|
|
140
|
+
*/
|
|
141
|
+
async function copyLocalTemplate(localTemplatesDir, templateName, targetDir) {
|
|
142
|
+
const templateSource = path.join(localTemplatesDir, templateName);
|
|
143
|
+
if (!fsExtra.existsSync(templateSource)) {
|
|
144
|
+
throw new Error(`Template '${templateName}' not found at ${templateSource}`);
|
|
145
|
+
}
|
|
146
|
+
await fsExtra.copy(templateSource, targetDir);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Replace template variables in all files
|
|
150
|
+
*/
|
|
151
|
+
async function replaceVariables(dir, vars) {
|
|
152
|
+
const entries = await fsExtra.readdir(dir, { withFileTypes: true });
|
|
153
|
+
for (const entry of entries) {
|
|
154
|
+
const fullPath = path.join(dir, entry.name);
|
|
155
|
+
if (entry.isDirectory()) {
|
|
156
|
+
// Skip node_modules if somehow present
|
|
157
|
+
if (entry.name === 'node_modules')
|
|
158
|
+
continue;
|
|
159
|
+
await replaceVariables(fullPath, vars);
|
|
160
|
+
}
|
|
161
|
+
else if (entry.isFile()) {
|
|
162
|
+
// Read file content
|
|
163
|
+
let content = await fsExtra.readFile(fullPath, 'utf-8');
|
|
164
|
+
// Replace {{variable}} patterns
|
|
165
|
+
for (const [key, value] of Object.entries(vars)) {
|
|
166
|
+
content = content.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), value);
|
|
167
|
+
}
|
|
168
|
+
// Write back
|
|
169
|
+
await fsExtra.writeFile(fullPath, content);
|
|
170
|
+
// Rename .template files (e.g., package.json.template -> package.json)
|
|
171
|
+
if (entry.name.endsWith('.template')) {
|
|
172
|
+
const newPath = fullPath.replace(/\.template$/, '');
|
|
173
|
+
await fsExtra.rename(fullPath, newPath);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Run npm install in the target directory
|
|
180
|
+
*/
|
|
181
|
+
function runNpmInstall(targetDir) {
|
|
182
|
+
try {
|
|
183
|
+
execSync('npm install', {
|
|
184
|
+
cwd: targetDir,
|
|
185
|
+
stdio: 'pipe',
|
|
186
|
+
timeout: 120000, // 2 minute timeout
|
|
187
|
+
});
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export const initCommand = new Command('init')
|
|
195
|
+
.description('Initialize a new Castari agent project')
|
|
196
|
+
.argument('[name]', 'Project name')
|
|
197
|
+
.option('-t, --template <template>', 'Template to use')
|
|
198
|
+
.option('-l, --list', 'List available templates')
|
|
199
|
+
.action(async (name, options) => {
|
|
200
|
+
// Handle --list flag
|
|
201
|
+
if (options.list) {
|
|
202
|
+
listTemplates();
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// Require name
|
|
206
|
+
if (!name) {
|
|
207
|
+
error('Project name is required');
|
|
208
|
+
blank();
|
|
209
|
+
hint('Usage: cast init <name> [--template <template>]');
|
|
210
|
+
hint(' cast init --list');
|
|
211
|
+
process.exit(1);
|
|
212
|
+
}
|
|
213
|
+
// Resolve target directory and extract project name
|
|
214
|
+
const targetDir = path.resolve(process.cwd(), name);
|
|
215
|
+
const projectName = path.basename(targetDir);
|
|
216
|
+
// Check if directory already exists
|
|
217
|
+
if (fsExtra.existsSync(targetDir)) {
|
|
218
|
+
error(`Directory '${projectName}' already exists`);
|
|
219
|
+
hint('Choose a different name or remove the existing directory');
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
// Select template
|
|
223
|
+
let templateKey = options.template;
|
|
224
|
+
if (!templateKey) {
|
|
225
|
+
// Interactive template selection
|
|
226
|
+
const response = await prompts({
|
|
227
|
+
type: 'select',
|
|
228
|
+
name: 'template',
|
|
229
|
+
message: 'Select a template:',
|
|
230
|
+
choices: Object.entries(TEMPLATES).map(([key, tmpl]) => ({
|
|
231
|
+
title: `${chalk.cyan(key)} — ${tmpl.description}`,
|
|
232
|
+
value: key,
|
|
233
|
+
})),
|
|
234
|
+
});
|
|
235
|
+
if (!response.template) {
|
|
236
|
+
// User cancelled
|
|
237
|
+
info('Cancelled.');
|
|
238
|
+
process.exit(0);
|
|
239
|
+
}
|
|
240
|
+
templateKey = response.template;
|
|
241
|
+
}
|
|
242
|
+
// Validate template
|
|
243
|
+
if (!templateKey || !TEMPLATES[templateKey]) {
|
|
244
|
+
error(`Unknown template '${templateKey ?? 'undefined'}'`);
|
|
245
|
+
hint("Run 'cast init --list' to see available templates");
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
// At this point templateKey is guaranteed to be a valid template name
|
|
249
|
+
const selectedTemplate = templateKey;
|
|
250
|
+
// Create project from template
|
|
251
|
+
const spinner = ora(`Creating ${chalk.cyan(projectName)} from ${chalk.cyan(selectedTemplate)} template...`).start();
|
|
252
|
+
try {
|
|
253
|
+
// Check for local templates first (for development)
|
|
254
|
+
const localTemplatesDir = getLocalTemplatesDir();
|
|
255
|
+
if (localTemplatesDir) {
|
|
256
|
+
await copyLocalTemplate(localTemplatesDir, selectedTemplate, targetDir);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
await downloadTemplateFromGitHub(selectedTemplate, targetDir);
|
|
260
|
+
}
|
|
261
|
+
// Replace template variables
|
|
262
|
+
await replaceVariables(targetDir, {
|
|
263
|
+
name: projectName,
|
|
264
|
+
version: '0.1.0',
|
|
265
|
+
});
|
|
266
|
+
spinner.succeed(`Created ${chalk.cyan(projectName)}/ from ${chalk.cyan(selectedTemplate)} template`);
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
spinner.fail('Failed to create project');
|
|
270
|
+
if (err instanceof Error) {
|
|
271
|
+
error(err.message);
|
|
272
|
+
}
|
|
273
|
+
// Clean up partial directory
|
|
274
|
+
await fsExtra.remove(targetDir).catch(() => { });
|
|
275
|
+
process.exit(1);
|
|
276
|
+
}
|
|
277
|
+
// Install dependencies
|
|
278
|
+
const installSpinner = ora('Installing dependencies...').start();
|
|
279
|
+
if (runNpmInstall(targetDir)) {
|
|
280
|
+
installSpinner.succeed('Installed dependencies');
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
installSpinner.warn('Failed to install dependencies');
|
|
284
|
+
hint("Run 'npm install' manually in the project directory");
|
|
285
|
+
}
|
|
286
|
+
// Print next steps
|
|
287
|
+
blank();
|
|
288
|
+
success('Project ready!');
|
|
289
|
+
blank();
|
|
290
|
+
header('Next steps:');
|
|
291
|
+
console.log(` ${chalk.cyan('cd')} ${projectName}`);
|
|
292
|
+
console.log(` ${chalk.cyan('cast deploy')}`);
|
|
293
|
+
blank();
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,aAAa,SAsDtB,CAAC"}
|
package/dist/commands/invoke.js
CHANGED
|
@@ -10,6 +10,7 @@ export const invokeCommand = new Command('invoke')
|
|
|
10
10
|
.argument('<slug>', 'Agent slug')
|
|
11
11
|
.argument('[prompt]', 'Prompt to send to the agent')
|
|
12
12
|
.option('-i, --input <file>', 'Read prompt from file')
|
|
13
|
+
.option('-s, --session <id>', 'Session ID for conversation continuity (reuses sandbox)')
|
|
13
14
|
.action(async (slug, promptArg, options) => {
|
|
14
15
|
try {
|
|
15
16
|
// Get prompt from argument or file
|
|
@@ -28,7 +29,10 @@ export const invokeCommand = new Command('invoke')
|
|
|
28
29
|
const client = new CastariClient();
|
|
29
30
|
await client.ensureAuthenticated();
|
|
30
31
|
spinner.text = `Invoking ${slug}... (this may take a while)`;
|
|
31
|
-
const result = await client.agents.invoke(slug, {
|
|
32
|
+
const result = await client.agents.invoke(slug, {
|
|
33
|
+
prompt,
|
|
34
|
+
sessionId: options?.session,
|
|
35
|
+
});
|
|
32
36
|
spinner.stop();
|
|
33
37
|
blank();
|
|
34
38
|
// Print the response
|
|
@@ -36,6 +40,7 @@ export const invokeCommand = new Command('invoke')
|
|
|
36
40
|
// Print usage stats
|
|
37
41
|
blank();
|
|
38
42
|
console.log(chalk.gray('─'.repeat(50)));
|
|
43
|
+
console.log(chalk.gray(`Session: ${result.session_id}`));
|
|
39
44
|
console.log(chalk.gray(`Tokens: ${formatNumber(result.input_tokens)} in / ${formatNumber(result.output_tokens)} out`));
|
|
40
45
|
const cost = typeof result.total_cost_usd === 'string'
|
|
41
46
|
? parseFloat(result.total_cost_usd)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC;KACnD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,SAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { stopCommand } from './commands/stop.js';
|
|
|
10
10
|
import { invokeCommand } from './commands/invoke.js';
|
|
11
11
|
import { secretsCommand } from './commands/secrets.js';
|
|
12
12
|
import { usageCommand } from './commands/usage.js';
|
|
13
|
+
import { initCommand } from './commands/init.js';
|
|
13
14
|
const program = new Command();
|
|
14
15
|
program
|
|
15
16
|
.name('cast')
|
|
@@ -31,6 +32,8 @@ program.addCommand(invokeCommand);
|
|
|
31
32
|
program.addCommand(secretsCommand);
|
|
32
33
|
// Usage
|
|
33
34
|
program.addCommand(usageCommand);
|
|
35
|
+
// Project initialization
|
|
36
|
+
program.addCommand(initCommand);
|
|
34
37
|
// Parse arguments
|
|
35
38
|
program.parse();
|
|
36
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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;
|
|
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;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,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,yBAAyB;AACzB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@castari/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Castari CLI - Deploy AI agents with one command",
|
|
5
5
|
"author": "Castari <hello@castari.dev>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,14 +27,19 @@
|
|
|
27
27
|
"clean": "rm -rf dist"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@castari/sdk": "^0.
|
|
30
|
+
"@castari/sdk": "^0.3.0",
|
|
31
31
|
"chalk": "^5.3.0",
|
|
32
32
|
"cli-table3": "^0.6.0",
|
|
33
33
|
"commander": "^12.0.0",
|
|
34
|
+
"fs-extra": "^11.2.0",
|
|
34
35
|
"open": "^10.0.0",
|
|
35
|
-
"ora": "^8.0.0"
|
|
36
|
+
"ora": "^8.0.0",
|
|
37
|
+
"prompts": "^2.4.2",
|
|
38
|
+
"tar": "^7.0.0"
|
|
36
39
|
},
|
|
37
40
|
"devDependencies": {
|
|
41
|
+
"@types/fs-extra": "^11.0.4",
|
|
42
|
+
"@types/prompts": "^2.4.9",
|
|
38
43
|
"typescript": "^5.3.0"
|
|
39
44
|
},
|
|
40
45
|
"files": [
|