@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.
Files changed (43) hide show
  1. package/dist/commands/agent.d.ts +8 -0
  2. package/dist/commands/agent.d.ts.map +1 -0
  3. package/dist/commands/agent.js +49 -0
  4. package/dist/commands/agent.js.map +1 -0
  5. package/dist/commands/auth.d.ts +15 -0
  6. package/dist/commands/auth.d.ts.map +1 -0
  7. package/dist/commands/auth.js +96 -0
  8. package/dist/commands/auth.js.map +1 -0
  9. package/dist/commands/dev.d.ts +9 -0
  10. package/dist/commands/dev.d.ts.map +1 -0
  11. package/dist/commands/dev.js +54 -0
  12. package/dist/commands/dev.js.map +1 -0
  13. package/dist/commands/init.d.ts +8 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +79 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/service.d.ts +8 -0
  18. package/dist/commands/service.d.ts.map +1 -0
  19. package/dist/commands/service.js +49 -0
  20. package/dist/commands/service.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +26 -0
  24. package/dist/index.js.map +1 -0
  25. package/package.json +47 -0
  26. package/templates/.env.example +7 -0
  27. package/templates/README.md +50 -0
  28. package/templates/apps/agent-server/package.json +22 -0
  29. package/templates/apps/agent-server/src/index.ts +83 -0
  30. package/templates/apps/agent-server/tsconfig.json +22 -0
  31. package/templates/apps/web/next.config.mjs +7 -0
  32. package/templates/apps/web/package.json +23 -0
  33. package/templates/apps/web/src/app/layout.tsx +18 -0
  34. package/templates/apps/web/src/app/page.tsx +40 -0
  35. package/templates/apps/web/tsconfig.json +40 -0
  36. package/templates/package.json +24 -0
  37. package/templates/packages/config/package.json +9 -0
  38. package/templates/packages/config/tsconfig.base.json +19 -0
  39. package/templates/packages/types/package.json +15 -0
  40. package/templates/packages/types/src/index.ts +24 -0
  41. package/templates/packages/types/tsconfig.json +14 -0
  42. package/templates/relaycore.config.ts +17 -0
  43. package/templates/turbo.json +30 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Agent Command - Agent Management
3
+ *
4
+ * Register and manage agents via RelayCore SDK.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const agentCommand: Command;
8
+ //# sourceMappingURL=agent.d.ts.map
@@ -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,9 @@
1
+ /**
2
+ * Dev Command - Development Environment Orchestration
3
+ *
4
+ * Starts agent server + Next.js frontend with live reloading.
5
+ */
6
+ export declare function devCommand(options: {
7
+ port: string;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=dev.d.ts.map
@@ -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,8 @@
1
+ /**
2
+ * Service Command - Service Management
3
+ *
4
+ * Register and manage services via RelayCore SDK.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const serviceCommand: Command;
8
+ //# sourceMappingURL=service.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
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 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,7 @@
1
+ RELAYCORE_API_KEY=rk_your_api_key_here
2
+ RELAYCORE_ENVIRONMENT=testnet
3
+
4
+ AGENT_PORT=3001
5
+ WEB_PORT=3000
6
+
7
+ DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgres
@@ -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,7 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ reactStrictMode: true,
4
+ transpilePackages: ['@relaycore/sdk'],
5
+ };
6
+
7
+ export default nextConfig;
@@ -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,9 @@
1
+ {
2
+ "name": "@relaycore/config",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "exports": {
7
+ "./tsconfig": "./tsconfig.base.json"
8
+ }
9
+ }
@@ -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,14 @@
1
+ {
2
+ "extends": "@relaycore/config/tsconfig",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": [
8
+ "src/**/*"
9
+ ],
10
+ "exclude": [
11
+ "node_modules",
12
+ "dist"
13
+ ]
14
+ }
@@ -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
+ }