@relaycore/cli 0.1.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/agent.d.ts +8 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +49 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/auth.d.ts +15 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +96 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/dev.d.ts +9 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +54 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +79 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/service.d.ts +8 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +49 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
- package/templates/.env.example +7 -0
- package/templates/README.md +50 -0
- package/templates/apps/agent-server/package.json +22 -0
- package/templates/apps/agent-server/src/index.ts +83 -0
- package/templates/apps/agent-server/tsconfig.json +22 -0
- package/templates/apps/web/next.config.mjs +7 -0
- package/templates/apps/web/package.json +23 -0
- package/templates/apps/web/src/app/layout.tsx +18 -0
- package/templates/apps/web/src/app/page.tsx +40 -0
- package/templates/apps/web/tsconfig.json +40 -0
- package/templates/package.json +24 -0
- package/templates/packages/config/package.json +9 -0
- package/templates/packages/config/tsconfig.base.json +19 -0
- package/templates/packages/types/package.json +15 -0
- package/templates/packages/types/src/index.ts +24 -0
- package/templates/packages/types/tsconfig.json +14 -0
- package/templates/relaycore.config.ts +17 -0
- package/templates/turbo.json +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,YAAY,SAAuB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Command - Agent Management
|
|
3
|
+
*
|
|
4
|
+
* Register and manage agents via RelayCore SDK.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
import { loadConfig } from './auth.js';
|
|
10
|
+
export const agentCommand = new Command('agent');
|
|
11
|
+
agentCommand
|
|
12
|
+
.command('register')
|
|
13
|
+
.description('Register a new agent')
|
|
14
|
+
.action(async () => {
|
|
15
|
+
console.log(chalk.bold.cyan('\n🤖 Register Agent\n'));
|
|
16
|
+
const spinner = ora('Loading configuration...').start();
|
|
17
|
+
try {
|
|
18
|
+
const config = await loadConfig();
|
|
19
|
+
spinner.succeed('Configuration loaded');
|
|
20
|
+
// TODO: Use RelayCore SDK to register agent
|
|
21
|
+
spinner.start('Registering agent...');
|
|
22
|
+
// Placeholder - will use SDK
|
|
23
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
24
|
+
spinner.succeed('Agent registered');
|
|
25
|
+
console.log(chalk.green('\n✅ Agent registered successfully\n'));
|
|
26
|
+
console.log(chalk.white('Agent ID: agent_123456\n'));
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
spinner.fail('Failed to register agent');
|
|
30
|
+
console.error(chalk.red(error));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
agentCommand
|
|
35
|
+
.command('list')
|
|
36
|
+
.description('List all agents')
|
|
37
|
+
.action(async () => {
|
|
38
|
+
console.log(chalk.bold.cyan('\n🤖 Your Agents\n'));
|
|
39
|
+
try {
|
|
40
|
+
const config = await loadConfig();
|
|
41
|
+
// TODO: Use RelayCore SDK to list agents
|
|
42
|
+
console.log(chalk.white('No agents registered yet\n'));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(chalk.red(error));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjD,YAAY;KACP,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAExC,4CAA4C;QAC5C,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEtC,6BAA6B;QAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,YAAY;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAE3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Command - API Key Management
|
|
3
|
+
*
|
|
4
|
+
* Handles authentication with RelayCore API.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
interface Config {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
environment: 'testnet' | 'mainnet';
|
|
11
|
+
}
|
|
12
|
+
export declare const authCommand: Command;
|
|
13
|
+
export declare function loadConfig(): Promise<Config>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,UAAU,MAAM;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;AAED,eAAO,MAAM,WAAW,SAAsB,CAAC;AAmF/C,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAKlD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Command - API Key Management
|
|
3
|
+
*
|
|
4
|
+
* Handles authentication with RelayCore API.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import os from 'os';
|
|
13
|
+
const CONFIG_DIR = path.join(os.homedir(), '.relaycore');
|
|
14
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
15
|
+
export const authCommand = new Command('auth');
|
|
16
|
+
authCommand
|
|
17
|
+
.command('login')
|
|
18
|
+
.description('Authenticate with RelayCore')
|
|
19
|
+
.action(async () => {
|
|
20
|
+
console.log(chalk.bold.cyan('\n🔐 RelayCore Authentication\n'));
|
|
21
|
+
const answers = await inquirer.prompt([
|
|
22
|
+
{
|
|
23
|
+
type: 'password',
|
|
24
|
+
name: 'apiKey',
|
|
25
|
+
message: 'Enter your RelayCore API key:',
|
|
26
|
+
validate: (input) => {
|
|
27
|
+
if (!input.startsWith('rk_')) {
|
|
28
|
+
return 'API key must start with rk_';
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
name: 'environment',
|
|
36
|
+
message: 'Select environment:',
|
|
37
|
+
choices: ['testnet', 'mainnet'],
|
|
38
|
+
default: 'testnet',
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
const spinner = ora('Validating API key...').start();
|
|
42
|
+
try {
|
|
43
|
+
// TODO: Validate API key against RelayCore API
|
|
44
|
+
const baseUrl = answers.environment === 'testnet'
|
|
45
|
+
? 'https://api-testnet.relaycore.io'
|
|
46
|
+
: 'https://api.relaycore.io';
|
|
47
|
+
const config = {
|
|
48
|
+
apiKey: answers.apiKey,
|
|
49
|
+
baseUrl,
|
|
50
|
+
environment: answers.environment,
|
|
51
|
+
};
|
|
52
|
+
await fs.ensureDir(CONFIG_DIR);
|
|
53
|
+
await fs.writeJson(CONFIG_FILE, config, { spaces: 2 });
|
|
54
|
+
spinner.succeed('Authentication successful');
|
|
55
|
+
console.log(chalk.green(`\n✅ Logged in to ${answers.environment}\n`));
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
spinner.fail('Authentication failed');
|
|
59
|
+
console.error(chalk.red(error));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
authCommand
|
|
64
|
+
.command('status')
|
|
65
|
+
.description('Show authentication status')
|
|
66
|
+
.action(async () => {
|
|
67
|
+
try {
|
|
68
|
+
const config = await loadConfig();
|
|
69
|
+
console.log(chalk.cyan('\n📋 Authentication Status\n'));
|
|
70
|
+
console.log(chalk.white(`Environment: ${config.environment}`));
|
|
71
|
+
console.log(chalk.white(`API Key: ${config.apiKey.substring(0, 10)}...`));
|
|
72
|
+
console.log(chalk.white(`Base URL: ${config.baseUrl}\n`));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.log(chalk.yellow('\n⚠️ Not authenticated. Run `relaycore auth login`\n'));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
authCommand
|
|
79
|
+
.command('logout')
|
|
80
|
+
.description('Log out from RelayCore')
|
|
81
|
+
.action(async () => {
|
|
82
|
+
try {
|
|
83
|
+
await fs.remove(CONFIG_FILE);
|
|
84
|
+
console.log(chalk.green('\n✅ Logged out successfully\n'));
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(chalk.red('Failed to logout'));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
export async function loadConfig() {
|
|
91
|
+
if (!await fs.pathExists(CONFIG_FILE)) {
|
|
92
|
+
throw new Error('Not authenticated. Run `relaycore auth login`');
|
|
93
|
+
}
|
|
94
|
+
return await fs.readJson(CONFIG_FILE);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,iBAiDzD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev Command - Development Environment Orchestration
|
|
3
|
+
*
|
|
4
|
+
* Starts agent server + Next.js frontend with live reloading.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import concurrently from 'concurrently';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
export async function devCommand(options) {
|
|
12
|
+
console.log(chalk.bold.cyan('\n🚀 Starting RelayCore Development Environment\n'));
|
|
13
|
+
// Check if we're in a RelayCore project
|
|
14
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
15
|
+
if (!await fs.pathExists(packageJsonPath)) {
|
|
16
|
+
console.log(chalk.red('❌ Not in a RelayCore project directory\n'));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const spinner = ora('Checking configuration...').start();
|
|
20
|
+
// Check for .env file
|
|
21
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
22
|
+
if (!await fs.pathExists(envPath)) {
|
|
23
|
+
spinner.warn('.env file not found');
|
|
24
|
+
console.log(chalk.yellow('\n⚠️ Create a .env file with your RELAYCORE_API_KEY\n'));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
spinner.succeed('Configuration valid');
|
|
28
|
+
console.log(chalk.cyan('\n📦 Starting services...\n'));
|
|
29
|
+
try {
|
|
30
|
+
// Run agent server + frontend concurrently
|
|
31
|
+
const { result } = concurrently([
|
|
32
|
+
{
|
|
33
|
+
command: 'npm run dev --workspace=apps/agent-server',
|
|
34
|
+
name: 'agent',
|
|
35
|
+
prefixColor: 'blue',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
command: 'npm run dev --workspace=apps/web',
|
|
39
|
+
name: 'web',
|
|
40
|
+
prefixColor: 'magenta',
|
|
41
|
+
},
|
|
42
|
+
], {
|
|
43
|
+
prefix: 'name',
|
|
44
|
+
killOthers: ['failure', 'success'],
|
|
45
|
+
restartTries: 3,
|
|
46
|
+
});
|
|
47
|
+
await result;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error(chalk.red('\n❌ Development server failed\n'));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAyB;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAElF,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,IAAI,CAAC;QACD,2CAA2C;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAC5B;gBACI,OAAO,EAAE,2CAA2C;gBACpD,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,MAAM;aACtB;YACD;gBACI,OAAO,EAAE,kCAAkC;gBAC3C,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,SAAS;aACzB;SACJ,EAAE;YACC,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAClC,YAAY,EAAE,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC;IAEjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command - Scaffold Generator
|
|
3
|
+
*
|
|
4
|
+
* Creates a new RelayCore agent project from templates.
|
|
5
|
+
* This is the primary entry point for developers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function initCommand(projectName?: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,iBAyErD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command - Scaffold Generator
|
|
3
|
+
*
|
|
4
|
+
* Creates a new RelayCore agent project from templates.
|
|
5
|
+
* This is the primary entry point for developers.
|
|
6
|
+
*/
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { execa } from 'execa';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
export async function initCommand(projectName) {
|
|
17
|
+
console.log(chalk.bold.cyan('\n🚀 RelayCore Project Initializer\n'));
|
|
18
|
+
// Prompt for project name if not provided
|
|
19
|
+
if (!projectName) {
|
|
20
|
+
const answers = await inquirer.prompt([
|
|
21
|
+
{
|
|
22
|
+
type: 'input',
|
|
23
|
+
name: 'projectName',
|
|
24
|
+
message: 'Project name:',
|
|
25
|
+
default: 'my-relaycore-agent',
|
|
26
|
+
validate: (input) => {
|
|
27
|
+
if (!/^[a-z0-9-]+$/.test(input)) {
|
|
28
|
+
return 'Project name must be lowercase alphanumeric with hyphens';
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
]);
|
|
34
|
+
projectName = answers.projectName;
|
|
35
|
+
}
|
|
36
|
+
// Ensure projectName is treated as a string after the check
|
|
37
|
+
const projectPath = path.join(process.cwd(), projectName);
|
|
38
|
+
// Check if directory exists
|
|
39
|
+
if (await fs.pathExists(projectPath)) {
|
|
40
|
+
console.log(chalk.red(`\n❌ Directory ${projectName} already exists\n`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const spinner = ora('Creating project structure...').start();
|
|
44
|
+
try {
|
|
45
|
+
// Create project directory
|
|
46
|
+
await fs.ensureDir(projectPath);
|
|
47
|
+
// Copy templates
|
|
48
|
+
const templatesDir = path.join(__dirname, '../../templates');
|
|
49
|
+
await fs.copy(templatesDir, projectPath);
|
|
50
|
+
// Update package.json with project name
|
|
51
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
52
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
53
|
+
packageJson.name = projectName;
|
|
54
|
+
await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
55
|
+
spinner.succeed('Project structure created');
|
|
56
|
+
// Install dependencies
|
|
57
|
+
spinner.start('Installing dependencies...');
|
|
58
|
+
await execa('npm', ['install'], { cwd: projectPath });
|
|
59
|
+
spinner.succeed('Dependencies installed');
|
|
60
|
+
// Initialize git
|
|
61
|
+
spinner.start('Initializing git repository...');
|
|
62
|
+
await execa('git', ['init'], { cwd: projectPath });
|
|
63
|
+
await execa('git', ['add', '.'], { cwd: projectPath });
|
|
64
|
+
await execa('git', ['commit', '-m', 'Initial commit from RelayCore CLI'], { cwd: projectPath });
|
|
65
|
+
spinner.succeed('Git repository initialized');
|
|
66
|
+
// Success message
|
|
67
|
+
console.log(chalk.green.bold('\n✅ Project created successfully!\n'));
|
|
68
|
+
console.log(chalk.cyan('Next steps:\n'));
|
|
69
|
+
console.log(chalk.white(` cd ${projectName}`));
|
|
70
|
+
console.log(chalk.white(' # Add your RelayCore API key to .env'));
|
|
71
|
+
console.log(chalk.white(' relaycore dev\n'));
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
spinner.fail('Failed to create project');
|
|
75
|
+
console.error(chalk.red(error));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,SAAyB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Command - Service Management
|
|
3
|
+
*
|
|
4
|
+
* Register and manage services via RelayCore SDK.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
import { loadConfig } from './auth.js';
|
|
10
|
+
export const serviceCommand = new Command('service');
|
|
11
|
+
serviceCommand
|
|
12
|
+
.command('register')
|
|
13
|
+
.description('Register a new service')
|
|
14
|
+
.action(async () => {
|
|
15
|
+
console.log(chalk.bold.cyan('\n⚙️ Register Service\n'));
|
|
16
|
+
const spinner = ora('Loading configuration...').start();
|
|
17
|
+
try {
|
|
18
|
+
const config = await loadConfig();
|
|
19
|
+
spinner.succeed('Configuration loaded');
|
|
20
|
+
// TODO: Use RelayCore SDK to register service
|
|
21
|
+
spinner.start('Registering service...');
|
|
22
|
+
// Placeholder - will use SDK
|
|
23
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
24
|
+
spinner.succeed('Service registered');
|
|
25
|
+
console.log(chalk.green('\n✅ Service registered successfully\n'));
|
|
26
|
+
console.log(chalk.white('Service ID: service_123456\n'));
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
spinner.fail('Failed to register service');
|
|
30
|
+
console.error(chalk.red(error));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
serviceCommand
|
|
35
|
+
.command('list')
|
|
36
|
+
.description('List all services')
|
|
37
|
+
.action(async () => {
|
|
38
|
+
console.log(chalk.bold.cyan('\n⚙️ Your Services\n'));
|
|
39
|
+
try {
|
|
40
|
+
const config = await loadConfig();
|
|
41
|
+
// TODO: Use RelayCore SDK to list services
|
|
42
|
+
console.log(chalk.white('No services registered yet\n'));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(chalk.red(error));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;AAErD,cAAc;KACT,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAExC,8CAA8C;QAC9C,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAExC,6BAA6B;QAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAE7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,cAAc;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,2CAA2C;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAE7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { initCommand } from './commands/init.js';
|
|
4
|
+
import { authCommand } from './commands/auth.js';
|
|
5
|
+
import { agentCommand } from './commands/agent.js';
|
|
6
|
+
import { serviceCommand } from './commands/service.js';
|
|
7
|
+
import { devCommand } from './commands/dev.js';
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('relaycore')
|
|
11
|
+
.description('RelayCore CLI - Build and deploy AI agents on Bitcoin')
|
|
12
|
+
.version('0.1.0');
|
|
13
|
+
program
|
|
14
|
+
.command('init [project-name]')
|
|
15
|
+
.description('Initialize a new RelayCore project')
|
|
16
|
+
.action(initCommand);
|
|
17
|
+
program.addCommand(authCommand);
|
|
18
|
+
program.addCommand(agentCommand);
|
|
19
|
+
program.addCommand(serviceCommand);
|
|
20
|
+
program
|
|
21
|
+
.command('dev')
|
|
22
|
+
.description('Start development environment')
|
|
23
|
+
.option('-p, --port <port>', 'Port for development server', '3000')
|
|
24
|
+
.action(devCommand);
|
|
25
|
+
program.parse();
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO;KACF,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,CAAC;KAClE,MAAM,CAAC,UAAU,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@relaycore/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "RelayCore CLI - Production-grade agent platform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"relaycore": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"templates"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsc --watch",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"relaycore",
|
|
21
|
+
"agents",
|
|
22
|
+
"x402",
|
|
23
|
+
"mcp",
|
|
24
|
+
"cronos",
|
|
25
|
+
"ai"
|
|
26
|
+
],
|
|
27
|
+
"author": "RelayCore",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"commander": "^12.0.0",
|
|
31
|
+
"inquirer": "^9.2.0",
|
|
32
|
+
"chalk": "^5.3.0",
|
|
33
|
+
"ora": "^8.0.0",
|
|
34
|
+
"fs-extra": "^11.2.0",
|
|
35
|
+
"execa": "^8.0.0",
|
|
36
|
+
"concurrently": "^8.2.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^20.0.0",
|
|
40
|
+
"@types/inquirer": "^9.0.0",
|
|
41
|
+
"@types/fs-extra": "^11.0.0",
|
|
42
|
+
"typescript": "^5.3.0"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# RelayCore Agent Project
|
|
2
|
+
|
|
3
|
+
A production-grade AI agent built with RelayCore.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
1. **Install dependencies**
|
|
8
|
+
```bash
|
|
9
|
+
npm install
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. **Configure environment**
|
|
13
|
+
```bash
|
|
14
|
+
cp .env.example .env
|
|
15
|
+
# Add your RELAYCORE_API_KEY to .env
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
3. **Start development**
|
|
19
|
+
```bash
|
|
20
|
+
relaycore dev
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Project Structure
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
.
|
|
27
|
+
├── apps/
|
|
28
|
+
│ ├── agent-server/ # MCP-compatible agent runtime
|
|
29
|
+
│ └── web/ # Next.js frontend dashboard
|
|
30
|
+
├── packages/
|
|
31
|
+
│ ├── config/ # Shared configuration
|
|
32
|
+
│ └── types/ # Shared TypeScript types
|
|
33
|
+
└── relaycore.config.ts # RelayCore configuration
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Available Commands
|
|
37
|
+
|
|
38
|
+
- `relaycore dev` - Start development environment
|
|
39
|
+
- `relaycore agent register` - Register a new agent
|
|
40
|
+
- `relaycore service register` - Register a new service
|
|
41
|
+
- `relaycore auth status` - Check authentication status
|
|
42
|
+
|
|
43
|
+
## Documentation
|
|
44
|
+
|
|
45
|
+
Visit [docs.relaycore.io](https://docs.relaycore.io) for full documentation.
|
|
46
|
+
|
|
47
|
+
## Support
|
|
48
|
+
|
|
49
|
+
- Discord: [discord.gg/relaycore](https://discord.gg/relaycore)
|
|
50
|
+
- Email: support@relaycore.io
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@relaycore/agent-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "tsx watch src/index.ts",
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@relaycore/sdk": "workspace:*",
|
|
13
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
14
|
+
"dotenv": "^16.4.7",
|
|
15
|
+
"zod": "^3.24.1"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^22.10.5",
|
|
19
|
+
"tsx": "^4.19.2",
|
|
20
|
+
"typescript": "^5.7.2"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import {
|
|
4
|
+
CallToolRequestSchema,
|
|
5
|
+
ListToolsRequestSchema,
|
|
6
|
+
} from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { RelayCore } from '@relaycore/sdk';
|
|
8
|
+
import dotenv from 'dotenv';
|
|
9
|
+
|
|
10
|
+
dotenv.config();
|
|
11
|
+
|
|
12
|
+
const server = new Server(
|
|
13
|
+
{
|
|
14
|
+
name: 'relaycore-agent',
|
|
15
|
+
version: '0.1.0',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
capabilities: {
|
|
19
|
+
tools: {},
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const relaycore = new RelayCore({
|
|
25
|
+
apiKey: process.env.RELAYCORE_API_KEY!,
|
|
26
|
+
environment: process.env.RELAYCORE_ENVIRONMENT as 'testnet' | 'mainnet' || 'testnet',
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
30
|
+
return {
|
|
31
|
+
tools: [
|
|
32
|
+
{
|
|
33
|
+
name: 'execute_task',
|
|
34
|
+
description: 'Execute a task using RelayCore services',
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
properties: {
|
|
38
|
+
task: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'The task to execute',
|
|
41
|
+
},
|
|
42
|
+
context: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
description: 'Additional context for the task',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
required: ['task'],
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
55
|
+
if (request.params.name === 'execute_task') {
|
|
56
|
+
const { task, context } = request.params.arguments as {
|
|
57
|
+
task: string;
|
|
58
|
+
context?: Record<string, unknown>;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
content: [
|
|
63
|
+
{
|
|
64
|
+
type: 'text',
|
|
65
|
+
text: `Executing task: ${task}\nContext: ${JSON.stringify(context, null, 2)}`,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
throw new Error(`Unknown tool: ${request.params.name}`);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
async function main() {
|
|
75
|
+
const transport = new StdioServerTransport();
|
|
76
|
+
await server.connect(transport);
|
|
77
|
+
console.error('RelayCore Agent Server running on stdio');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
main().catch((error) => {
|
|
81
|
+
console.error('Server error:', error);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"rootDir": "./src",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"declaration": true
|
|
14
|
+
},
|
|
15
|
+
"include": [
|
|
16
|
+
"src/**/*"
|
|
17
|
+
],
|
|
18
|
+
"exclude": [
|
|
19
|
+
"node_modules",
|
|
20
|
+
"dist"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@relaycore/web",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev",
|
|
7
|
+
"build": "next build",
|
|
8
|
+
"start": "next start",
|
|
9
|
+
"lint": "next lint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@relaycore/sdk": "workspace:*",
|
|
13
|
+
"next": "^15.1.6",
|
|
14
|
+
"react": "^19.0.0",
|
|
15
|
+
"react-dom": "^19.0.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^22.10.5",
|
|
19
|
+
"@types/react": "^19.0.6",
|
|
20
|
+
"@types/react-dom": "^19.0.2",
|
|
21
|
+
"typescript": "^5.7.2"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
|
|
3
|
+
export const metadata: Metadata = {
|
|
4
|
+
title: 'RelayCore Agent Dashboard',
|
|
5
|
+
description: 'Monitor and manage your RelayCore AI agent',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export default function RootLayout({
|
|
9
|
+
children,
|
|
10
|
+
}: {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}) {
|
|
13
|
+
return (
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<body>{children}</body>
|
|
16
|
+
</html>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
|
|
5
|
+
export default function Home() {
|
|
6
|
+
const [status, setStatus] = useState<'connecting' | 'connected' | 'error'>('connecting');
|
|
7
|
+
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
setTimeout(() => setStatus('connected'), 1000);
|
|
10
|
+
}, []);
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<main style={{ padding: '2rem', fontFamily: 'system-ui' }}>
|
|
14
|
+
<h1>RelayCore Agent Dashboard</h1>
|
|
15
|
+
|
|
16
|
+
<div style={{ marginTop: '2rem' }}>
|
|
17
|
+
<h2>Agent Status</h2>
|
|
18
|
+
<p>Status: <strong>{status}</strong></p>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div style={{ marginTop: '2rem' }}>
|
|
22
|
+
<h2>Quick Start</h2>
|
|
23
|
+
<ol>
|
|
24
|
+
<li>Configure your agent in <code>relaycore.config.ts</code></li>
|
|
25
|
+
<li>Add tools to <code>apps/agent-server/src/index.ts</code></li>
|
|
26
|
+
<li>Test your agent with Claude Desktop or other MCP clients</li>
|
|
27
|
+
</ol>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div style={{ marginTop: '2rem' }}>
|
|
31
|
+
<h2>Resources</h2>
|
|
32
|
+
<ul>
|
|
33
|
+
<li><a href="https://docs.relaycore.io">Documentation</a></li>
|
|
34
|
+
<li><a href="https://discord.gg/relaycore">Discord Community</a></li>
|
|
35
|
+
<li><a href="https://github.com/relaycore">GitHub</a></li>
|
|
36
|
+
</ul>
|
|
37
|
+
</div>
|
|
38
|
+
</main>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"lib": [
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.iterable",
|
|
7
|
+
"esnext"
|
|
8
|
+
],
|
|
9
|
+
"allowJs": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"module": "esnext",
|
|
15
|
+
"moduleResolution": "bundler",
|
|
16
|
+
"resolveJsonModule": true,
|
|
17
|
+
"isolatedModules": true,
|
|
18
|
+
"jsx": "preserve",
|
|
19
|
+
"incremental": true,
|
|
20
|
+
"plugins": [
|
|
21
|
+
{
|
|
22
|
+
"name": "next"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"paths": {
|
|
26
|
+
"@/*": [
|
|
27
|
+
"./src/*"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"include": [
|
|
32
|
+
"next-env.d.ts",
|
|
33
|
+
"**/*.ts",
|
|
34
|
+
"**/*.tsx",
|
|
35
|
+
".next/types/**/*.ts"
|
|
36
|
+
],
|
|
37
|
+
"exclude": [
|
|
38
|
+
"node_modules"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-relaycore-agent",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"workspaces": [
|
|
7
|
+
"apps/*",
|
|
8
|
+
"packages/*"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"dev": "relaycore dev",
|
|
12
|
+
"build": "turbo run build",
|
|
13
|
+
"test": "turbo run test",
|
|
14
|
+
"lint": "turbo run lint",
|
|
15
|
+
"clean": "turbo run clean && rm -rf node_modules"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"turbo": "^2.3.3",
|
|
19
|
+
"typescript": "^5.7.2"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "ES2022",
|
|
5
|
+
"lib": [
|
|
6
|
+
"ES2022"
|
|
7
|
+
],
|
|
8
|
+
"module": "ESNext",
|
|
9
|
+
"moduleResolution": "bundler",
|
|
10
|
+
"strict": true,
|
|
11
|
+
"esModuleInterop": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"declaration": true,
|
|
16
|
+
"declarationMap": true,
|
|
17
|
+
"sourceMap": true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@relaycore/types",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"dev": "tsc --watch"
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"typescript": "^5.7.2"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface AgentConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
version: string;
|
|
5
|
+
capabilities: string[];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ServiceConfig {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
endpoint: string;
|
|
12
|
+
pricing?: {
|
|
13
|
+
amount: number;
|
|
14
|
+
currency: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface RelayCoreConfig {
|
|
19
|
+
agent: AgentConfig;
|
|
20
|
+
services: ServiceConfig[];
|
|
21
|
+
network: {
|
|
22
|
+
environment: 'testnet' | 'mainnet';
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineConfig } from '@relaycore/sdk';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
agent: {
|
|
5
|
+
name: 'My RelayCore Agent',
|
|
6
|
+
description: 'An AI agent built with RelayCore',
|
|
7
|
+
version: '0.1.0',
|
|
8
|
+
capabilities: [
|
|
9
|
+
'chat',
|
|
10
|
+
'task-execution',
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
services: [],
|
|
14
|
+
network: {
|
|
15
|
+
environment: process.env.RELAYCORE_ENVIRONMENT || 'testnet',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://turbo.build/schema.json",
|
|
3
|
+
"globalDependencies": [
|
|
4
|
+
"**/.env"
|
|
5
|
+
],
|
|
6
|
+
"pipeline": {
|
|
7
|
+
"build": {
|
|
8
|
+
"dependsOn": [
|
|
9
|
+
"^build"
|
|
10
|
+
],
|
|
11
|
+
"outputs": [
|
|
12
|
+
"dist/**",
|
|
13
|
+
".next/**"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"dev": {
|
|
17
|
+
"cache": false,
|
|
18
|
+
"persistent": true
|
|
19
|
+
},
|
|
20
|
+
"lint": {
|
|
21
|
+
"outputs": []
|
|
22
|
+
},
|
|
23
|
+
"test": {
|
|
24
|
+
"outputs": []
|
|
25
|
+
},
|
|
26
|
+
"clean": {
|
|
27
|
+
"cache": false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|