@castari/cli 0.1.5 → 0.1.7
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 +9 -3
- package/dist/commands/client-id.js +1 -1
- package/dist/commands/generate-secrets.d.ts +1 -0
- package/dist/commands/{generate-client-id.js → generate-secrets.js} +15 -12
- package/dist/commands/init.js +4 -5
- package/dist/index.js +3 -3
- package/dist/utils/client-id.js +1 -1
- package/package.json +1 -1
- package/dist/commands/generate-client-id.d.ts +0 -1
package/README.md
CHANGED
|
@@ -84,12 +84,18 @@ castari start --snapshot my-agent --volume my-data
|
|
|
84
84
|
|
|
85
85
|
Press `Ctrl+C` to gracefully shut down.
|
|
86
86
|
|
|
87
|
-
### `castari generate-
|
|
87
|
+
### `castari generate-secrets`
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
Generates Castari credentials (client ID and API key) and stores them in `~/.castari/client.json`.
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
|
-
castari generate-
|
|
92
|
+
castari generate-secrets
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Outputs both values so you can copy them to your `.env` file:
|
|
96
|
+
```
|
|
97
|
+
CASTARI_CLIENT_ID=your-client-id
|
|
98
|
+
CASTARI_API_KEY=castari_your-api-key
|
|
93
99
|
```
|
|
94
100
|
|
|
95
101
|
## Configuration
|
|
@@ -20,6 +20,6 @@ export async function resolveClientId() {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
console.error(chalk.red('❌ CASTARI_CLIENT_ID is required.'));
|
|
23
|
-
console.error(chalk.white('Run `castari generate-
|
|
23
|
+
console.error(chalk.white('Run `castari generate-secrets` to create one, or set CASTARI_CLIENT_ID in your environment.'));
|
|
24
24
|
throw new Error('Missing CASTARI_CLIENT_ID');
|
|
25
25
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateSecrets(): Promise<void>;
|
|
@@ -2,7 +2,7 @@ import { randomUUID } from 'crypto';
|
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { saveClientAuth } from '../utils/client-auth';
|
|
5
|
-
export async function
|
|
5
|
+
export async function generateSecrets() {
|
|
6
6
|
const platformUrl = process.env.CASTARI_PLATFORM_URL || 'https://castari-api-12511-04c55b73-g4p2s9om.onporter.run';
|
|
7
7
|
const mintOnline = async () => {
|
|
8
8
|
try {
|
|
@@ -20,31 +20,32 @@ export async function generateClientId() {
|
|
|
20
20
|
source: 'online',
|
|
21
21
|
platformUrl,
|
|
22
22
|
});
|
|
23
|
-
console.log(chalk.green(
|
|
23
|
+
console.log(chalk.green(`\n✅ Secrets generated!\n`));
|
|
24
|
+
console.log(chalk.white(`CASTARI_CLIENT_ID=${data.clientId}`));
|
|
24
25
|
if (data.apiKey) {
|
|
25
|
-
console.log(chalk.
|
|
26
|
+
console.log(chalk.white(`CASTARI_API_KEY=${data.apiKey}`));
|
|
26
27
|
}
|
|
27
|
-
console.log(chalk.
|
|
28
|
-
return
|
|
28
|
+
console.log(chalk.gray(`\nSaved to ~/.castari/client.json`));
|
|
29
|
+
return true;
|
|
29
30
|
}
|
|
30
31
|
catch (err) {
|
|
31
32
|
console.error(chalk.yellow(`⚠️ Failed to mint via platform: ${err?.message || err}`));
|
|
32
|
-
return
|
|
33
|
+
return false;
|
|
33
34
|
}
|
|
34
35
|
};
|
|
35
|
-
const
|
|
36
|
-
if (
|
|
36
|
+
const success = await mintOnline();
|
|
37
|
+
if (success)
|
|
37
38
|
return;
|
|
38
39
|
const { confirmOffline } = await inquirer.prompt([
|
|
39
40
|
{
|
|
40
41
|
type: 'confirm',
|
|
41
42
|
name: 'confirmOffline',
|
|
42
|
-
message: 'Generate an offline client ID instead?',
|
|
43
|
+
message: 'Generate an offline client ID instead? (no API key)',
|
|
43
44
|
default: false,
|
|
44
45
|
},
|
|
45
46
|
]);
|
|
46
47
|
if (!confirmOffline) {
|
|
47
|
-
console.error(chalk.red('Aborted. No
|
|
48
|
+
console.error(chalk.red('Aborted. No secrets generated.'));
|
|
48
49
|
process.exit(1);
|
|
49
50
|
}
|
|
50
51
|
const offlineId = randomUUID();
|
|
@@ -52,6 +53,8 @@ export async function generateClientId() {
|
|
|
52
53
|
clientId: offlineId,
|
|
53
54
|
source: 'offline',
|
|
54
55
|
});
|
|
55
|
-
console.log(chalk.green(
|
|
56
|
-
console.log(chalk.white(`
|
|
56
|
+
console.log(chalk.green(`\n✅ Offline client ID generated!\n`));
|
|
57
|
+
console.log(chalk.white(`CASTARI_CLIENT_ID=${offlineId}`));
|
|
58
|
+
console.log(chalk.yellow(`\nNote: No API key generated in offline mode.`));
|
|
59
|
+
console.log(chalk.gray(`Saved to ~/.castari/client.json`));
|
|
57
60
|
}
|
package/dist/commands/init.js
CHANGED
|
@@ -110,7 +110,7 @@ async function initDemo() {
|
|
|
110
110
|
},
|
|
111
111
|
include: ['src'],
|
|
112
112
|
});
|
|
113
|
-
await writeFile(join(agentDir, '.env.example'), '
|
|
113
|
+
await writeFile(join(agentDir, '.env.example'), 'CASTARI_CLIENT_ID=your-client-id\nCASTARI_API_KEY=castari_your-api-key\n');
|
|
114
114
|
await writeFile(join(agentDir, 'src', 'agent.ts'), `import { serve } from '@castari/sdk'
|
|
115
115
|
|
|
116
116
|
serve({
|
|
@@ -854,17 +854,16 @@ Structure:
|
|
|
854
854
|
## Getting Castari Credentials
|
|
855
855
|
Generate your clientId and apiKey by running:
|
|
856
856
|
\`\`\`bash
|
|
857
|
-
castari generate-
|
|
857
|
+
castari generate-secrets
|
|
858
858
|
\`\`\`
|
|
859
|
-
|
|
859
|
+
This will output both values so you can copy them to your \`.env\` files.
|
|
860
860
|
|
|
861
861
|
## 1) Prepare and deploy the agent
|
|
862
862
|
\`\`\`bash
|
|
863
863
|
cd castari_demo/agent
|
|
864
|
-
cp .env.example .env # add
|
|
864
|
+
cp .env.example .env # add CASTARI_CLIENT_ID, CASTARI_API_KEY
|
|
865
865
|
bun install # pulls @castari/sdk from npm
|
|
866
866
|
castari deploy # builds snapshot castari-demo-agent (CLI must be installed)
|
|
867
|
-
# Optional: bun run src/agent.ts # run locally without the CLI
|
|
868
867
|
\`\`\`
|
|
869
868
|
|
|
870
869
|
## 2) Run the web app
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { init } from './commands/init';
|
|
|
4
4
|
import { deploy } from './commands/deploy';
|
|
5
5
|
import { start } from './commands/start';
|
|
6
6
|
import { dev } from './commands/dev';
|
|
7
|
-
import {
|
|
7
|
+
import { generateSecrets } from './commands/generate-secrets';
|
|
8
8
|
import { createRequire } from 'module';
|
|
9
9
|
const require = createRequire(import.meta.url);
|
|
10
10
|
const { version } = require('../package.json');
|
|
@@ -27,8 +27,8 @@ cli
|
|
|
27
27
|
.command('dev', 'Run the agent locally for development')
|
|
28
28
|
.action(dev);
|
|
29
29
|
cli
|
|
30
|
-
.command('generate-
|
|
31
|
-
.action(
|
|
30
|
+
.command('generate-secrets', 'Generate Castari credentials (client ID and API key)')
|
|
31
|
+
.action(generateSecrets);
|
|
32
32
|
cli.help();
|
|
33
33
|
cli.version(version);
|
|
34
34
|
cli.parse();
|
package/dist/utils/client-id.js
CHANGED
|
@@ -31,6 +31,6 @@ export async function getClientIdOrExit(explicit) {
|
|
|
31
31
|
if (stored?.clientId)
|
|
32
32
|
return stored.clientId;
|
|
33
33
|
console.error(chalk.red('CASTARI_CLIENT_ID is required.'));
|
|
34
|
-
console.error(chalk.white('Run `castari generate-
|
|
34
|
+
console.error(chalk.white('Run `castari generate-secrets` to create one, or set CASTARI_CLIENT_ID in your environment.'));
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function generateClientId(): Promise<void>;
|