beam-protocol-cli 0.5.0 → 0.5.1

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 (57) hide show
  1. package/dist/commands/browse.d.ts +11 -0
  2. package/dist/commands/browse.d.ts.map +1 -0
  3. package/dist/commands/browse.js +47 -0
  4. package/dist/commands/browse.js.map +1 -0
  5. package/dist/commands/delegate.d.ts +9 -0
  6. package/dist/commands/delegate.d.ts.map +1 -0
  7. package/dist/commands/delegate.js +44 -0
  8. package/dist/commands/delegate.js.map +1 -0
  9. package/dist/commands/init.d.ts +9 -0
  10. package/dist/commands/init.d.ts.map +1 -0
  11. package/dist/commands/init.js +44 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/commands/lookup.d.ts +7 -0
  14. package/dist/commands/lookup.d.ts.map +1 -0
  15. package/dist/commands/lookup.js +56 -0
  16. package/dist/commands/lookup.js.map +1 -0
  17. package/dist/commands/profile-update.d.ts +10 -0
  18. package/dist/commands/profile-update.d.ts.map +1 -0
  19. package/dist/commands/profile-update.js +36 -0
  20. package/dist/commands/profile-update.js.map +1 -0
  21. package/dist/commands/register.d.ts +8 -0
  22. package/dist/commands/register.d.ts.map +1 -0
  23. package/dist/commands/register.js +46 -0
  24. package/dist/commands/register.js.map +1 -0
  25. package/dist/commands/report.d.ts +8 -0
  26. package/dist/commands/report.d.ts.map +1 -0
  27. package/dist/commands/report.js +41 -0
  28. package/dist/commands/report.js.map +1 -0
  29. package/dist/commands/search.d.ts +11 -0
  30. package/dist/commands/search.d.ts.map +1 -0
  31. package/dist/commands/search.js +72 -0
  32. package/dist/commands/search.js.map +1 -0
  33. package/dist/commands/send.d.ts +8 -0
  34. package/dist/commands/send.d.ts.map +1 -0
  35. package/dist/commands/send.js +76 -0
  36. package/dist/commands/send.js.map +1 -0
  37. package/dist/commands/stats.d.ts +7 -0
  38. package/dist/commands/stats.d.ts.map +1 -0
  39. package/dist/commands/stats.js +35 -0
  40. package/dist/commands/stats.js.map +1 -0
  41. package/dist/commands/verify-check.d.ts +7 -0
  42. package/dist/commands/verify-check.d.ts.map +1 -0
  43. package/dist/commands/verify-check.js +34 -0
  44. package/dist/commands/verify-check.js.map +1 -0
  45. package/dist/commands/verify-domain.d.ts +7 -0
  46. package/dist/commands/verify-domain.d.ts.map +1 -0
  47. package/dist/commands/verify-domain.js +36 -0
  48. package/dist/commands/verify-domain.js.map +1 -0
  49. package/dist/config.d.ts +16 -0
  50. package/dist/config.d.ts.map +1 -0
  51. package/dist/config.js +37 -0
  52. package/dist/config.js.map +1 -0
  53. package/dist/index.d.ts +3 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +145 -0
  56. package/dist/index.js.map +1 -0
  57. package/package.json +3 -3
@@ -0,0 +1,11 @@
1
+ interface BrowseOptions {
2
+ page?: string;
3
+ capability?: string;
4
+ tier?: string;
5
+ verifiedOnly?: boolean;
6
+ directory?: string;
7
+ json?: boolean;
8
+ }
9
+ export declare function cmdBrowse(options: BrowseOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=browse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CrE"}
@@ -0,0 +1,47 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdBrowse(options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const page = options.page ? parseInt(options.page, 10) : 1;
9
+ const filters = {
10
+ capability: options.capability,
11
+ tier: options.tier,
12
+ verified_only: options.verifiedOnly,
13
+ };
14
+ const spinner = ora(`Browsing directory page ${page}...`).start();
15
+ try {
16
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
17
+ const result = await client.browse(page, filters);
18
+ spinner.stop();
19
+ if (options.json) {
20
+ console.log(JSON.stringify(result, null, 2));
21
+ return;
22
+ }
23
+ console.log('');
24
+ console.log(chalk.bold(`šŸ“š Directory Page ${result.page}`));
25
+ console.log(chalk.dim(`Showing ${result.agents.length} of ${result.total} agents`));
26
+ console.log(chalk.dim('─'.repeat(72)));
27
+ for (const agent of result.agents) {
28
+ const badge = agent.verified ? chalk.green('āœ“') : chalk.dim('ā—‹');
29
+ const tier = agent.verificationTier ? chalk.magenta(agent.verificationTier) : chalk.dim('basic');
30
+ console.log(` ${badge} ${chalk.bold(agent.beamId)} ${chalk.dim(`(${tier})`)}`);
31
+ console.log(` ${agent.displayName}${agent.description ? chalk.dim(` — ${agent.description}`) : ''}`);
32
+ if (agent.capabilities.length > 0) {
33
+ console.log(` ${chalk.cyan('Capabilities:')} ${agent.capabilities.join(', ')}`);
34
+ }
35
+ if (agent.website) {
36
+ console.log(` ${chalk.cyan('Website:')} ${agent.website}`);
37
+ }
38
+ console.log('');
39
+ }
40
+ }
41
+ catch (err) {
42
+ spinner.fail('Browse failed');
43
+ console.error(chalk.red(`āœ– ${err.message}`));
44
+ process.exit(1);
45
+ }
46
+ }
47
+ //# sourceMappingURL=browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface DelegateOptions {
2
+ scope?: string;
3
+ expires?: string;
4
+ directory?: string;
5
+ json?: boolean;
6
+ }
7
+ export declare function cmdDelegate(targetBeamId: string, options: DelegateOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/commands/delegate.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/F"}
@@ -0,0 +1,44 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { BEAM_ID_PATTERN, loadConfig } from '../config.js';
5
+ export async function cmdDelegate(targetBeamId, options) {
6
+ if (!BEAM_ID_PATTERN.test(targetBeamId)) {
7
+ console.error(chalk.red(`āœ– Invalid Beam ID: ${targetBeamId}`));
8
+ process.exit(1);
9
+ }
10
+ if (!options.scope) {
11
+ console.error(chalk.red('āœ– Missing required --scope value'));
12
+ process.exit(1);
13
+ }
14
+ const config = loadConfig();
15
+ const directoryUrl = options.directory ?? config.directoryUrl;
16
+ const expiresIn = options.expires ? parseInt(options.expires, 10) : undefined;
17
+ const spinner = ora(`Creating delegation for ${chalk.bold(targetBeamId)}...`).start();
18
+ try {
19
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
20
+ const delegation = await client.delegate(targetBeamId, options.scope, expiresIn);
21
+ spinner.stop();
22
+ if (options.json) {
23
+ console.log(JSON.stringify(delegation, null, 2));
24
+ return;
25
+ }
26
+ console.log('');
27
+ console.log(chalk.bold.green('āœ… Delegation created'));
28
+ console.log(chalk.dim('─'.repeat(40)));
29
+ console.log(`${chalk.cyan('From:')} ${delegation.sourceBeamId}`);
30
+ console.log(`${chalk.cyan('To:')} ${delegation.targetBeamId}`);
31
+ console.log(`${chalk.cyan('Scope:')} ${delegation.scope}`);
32
+ if (delegation.expiresAt)
33
+ console.log(`${chalk.cyan('Expires:')} ${delegation.expiresAt}`);
34
+ if (delegation.status)
35
+ console.log(`${chalk.cyan('Status:')} ${delegation.status}`);
36
+ console.log('');
37
+ }
38
+ catch (err) {
39
+ spinner.fail('Delegation failed');
40
+ console.error(chalk.red(`āœ– ${err.message}`));
41
+ process.exit(1);
42
+ }
43
+ }
44
+ //# sourceMappingURL=delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/commands/delegate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface InitOptions {
2
+ agent: string;
3
+ org?: string;
4
+ force?: boolean;
5
+ directory?: string;
6
+ }
7
+ export declare function cmdInit(options: InitOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDjE"}
@@ -0,0 +1,44 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamIdentity } from '@beam-protocol/sdk';
4
+ import { configExists, saveConfig, DEFAULT_DIRECTORY_URL } from '../config.js';
5
+ export async function cmdInit(options) {
6
+ const { agent, org, force, directory = DEFAULT_DIRECTORY_URL } = options;
7
+ if (!/^[a-z0-9_-]+$/.test(agent)) {
8
+ console.error(chalk.red('āœ– Agent name must match [a-z0-9_-]'));
9
+ process.exit(1);
10
+ }
11
+ if (org && !/^[a-z0-9_-]+$/.test(org)) {
12
+ console.error(chalk.red('āœ– Org name must match [a-z0-9_-]'));
13
+ process.exit(1);
14
+ }
15
+ if (configExists() && !force) {
16
+ console.error(chalk.yellow('⚠ Identity already exists at .beam/identity.json'));
17
+ console.error(chalk.dim(' Use --force to overwrite'));
18
+ process.exit(1);
19
+ }
20
+ const spinner = ora('Generating Ed25519 keypair...').start();
21
+ const identity = BeamIdentity.generate({ agentName: agent, orgName: org });
22
+ const identityData = identity.export();
23
+ saveConfig({
24
+ identity: identityData,
25
+ directoryUrl: directory,
26
+ createdAt: new Date().toISOString()
27
+ });
28
+ spinner.succeed('Identity generated');
29
+ console.log('');
30
+ console.log(chalk.bold('šŸ”‘ Beam Identity Created'));
31
+ console.log(chalk.dim('─'.repeat(40)));
32
+ console.log(`${chalk.cyan('Beam ID:')} ${chalk.bold(identityData.beamId)}`);
33
+ console.log(`${chalk.cyan('Directory:')} ${directory}`);
34
+ console.log(`${chalk.cyan('Config:')} ${process.cwd()}/.beam/identity.json`);
35
+ console.log('');
36
+ console.log(chalk.dim('Public key (SPKI/DER/base64):'));
37
+ console.log(chalk.dim(identityData.publicKeyBase64.substring(0, 64) + '...'));
38
+ console.log('');
39
+ console.log(chalk.yellow('⚠ Keep .beam/identity.json secret — it contains your private key!'));
40
+ console.log(chalk.dim(' Add .beam/ to your .gitignore'));
41
+ console.log('');
42
+ console.log(chalk.green('Next step:'), `beam register --display-name "${org ? agent : 'My Consumer Agent'}" --capabilities "query,answer"`);
43
+ }
44
+ //# 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,7 @@
1
+ interface LookupOptions {
2
+ directory?: string;
3
+ json?: boolean;
4
+ }
5
+ export declare function cmdLookup(beamId: string, options: LookupOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../src/commands/lookup.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CrF"}
@@ -0,0 +1,56 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamDirectory } from '@beam-protocol/sdk';
4
+ import { BEAM_ID_PATTERN, resolveDirectoryUrl } from '../config.js';
5
+ export async function cmdLookup(beamId, options) {
6
+ const directoryUrl = resolveDirectoryUrl(options.directory);
7
+ if (!BEAM_ID_PATTERN.test(beamId)) {
8
+ console.error(chalk.red(`āœ– Invalid Beam ID format: ${beamId}`));
9
+ console.error(chalk.dim(' Expected: agent@beam.directory or agent@org.beam.directory'));
10
+ process.exit(1);
11
+ }
12
+ const spinner = ora(`Looking up ${chalk.bold(beamId)}...`).start();
13
+ try {
14
+ const directory = new BeamDirectory({ baseUrl: directoryUrl });
15
+ const record = await directory.lookup(beamId);
16
+ if (!record) {
17
+ spinner.fail(`Agent not found: ${beamId}`);
18
+ process.exit(1);
19
+ }
20
+ spinner.stop();
21
+ if (options.json) {
22
+ console.log(JSON.stringify(record, null, 2));
23
+ return;
24
+ }
25
+ const trustBar = getTrustBar(record.trustScore);
26
+ console.log('');
27
+ console.log(chalk.bold(`šŸ¤– ${record.displayName}`));
28
+ console.log(chalk.dim('─'.repeat(40)));
29
+ console.log(`${chalk.cyan('Beam ID:')} ${chalk.bold(record.beamId)}`);
30
+ console.log(`${chalk.cyan('Org:')} ${record.org ?? chalk.dim('consumer')}`);
31
+ console.log(`${chalk.cyan('Trust Score:')} ${trustBar} ${(record.trustScore * 100).toFixed(0)}%`);
32
+ console.log(`${chalk.cyan('Verified:')} ${record.verified ? chalk.green('āœ“ Verified') : chalk.yellow('Unverified')}`);
33
+ if (record.capabilities.length > 0) {
34
+ console.log(`${chalk.cyan('Capabilities:')} ${record.capabilities.map((capability) => chalk.blue(capability)).join(', ')}`);
35
+ }
36
+ console.log(`${chalk.cyan('Last Seen:')} ${new Date(record.lastSeen).toLocaleString()}`);
37
+ console.log(`${chalk.cyan('Registered:')} ${new Date(record.createdAt).toLocaleString()}`);
38
+ console.log('');
39
+ }
40
+ catch (err) {
41
+ spinner.fail('Lookup failed');
42
+ console.error(chalk.red(`āœ– ${err.message}`));
43
+ process.exit(1);
44
+ }
45
+ }
46
+ function getTrustBar(score) {
47
+ const filled = Math.round(score * 10);
48
+ const empty = 10 - filled;
49
+ const bar = 'ā–ˆ'.repeat(filled) + 'ā–‘'.repeat(empty);
50
+ if (score >= 0.8)
51
+ return chalk.green(bar);
52
+ if (score >= 0.5)
53
+ return chalk.yellow(bar);
54
+ return chalk.red(bar);
55
+ }
56
+ //# sourceMappingURL=lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/commands/lookup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface ProfileUpdateOptions {
2
+ description?: string;
3
+ logoUrl?: string;
4
+ website?: string;
5
+ directory?: string;
6
+ json?: boolean;
7
+ }
8
+ export declare function cmdProfileUpdate(options: ProfileUpdateOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=profile-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-update.d.ts","sourceRoot":"","sources":["../../src/commands/profile-update.ts"],"names":[],"mappings":"AAKA,UAAU,oBAAoB;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCnF"}
@@ -0,0 +1,36 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdProfileUpdate(options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const spinner = ora(`Updating profile for ${chalk.bold(config.identity.beamId)}...`).start();
9
+ try {
10
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
11
+ const profile = await client.updateProfile({
12
+ description: options.description,
13
+ logo_url: options.logoUrl,
14
+ website: options.website,
15
+ });
16
+ spinner.stop();
17
+ if (options.json) {
18
+ console.log(JSON.stringify(profile, null, 2));
19
+ return;
20
+ }
21
+ console.log('');
22
+ console.log(chalk.bold.green('āœ… Profile updated'));
23
+ console.log(chalk.dim('─'.repeat(40)));
24
+ console.log(`${chalk.cyan('Beam ID:')} ${profile.beamId}`);
25
+ console.log(`${chalk.cyan('Description:')} ${profile.description ?? chalk.dim('—')}`);
26
+ console.log(`${chalk.cyan('Logo URL:')} ${profile.logoUrl ?? chalk.dim('—')}`);
27
+ console.log(`${chalk.cyan('Website:')} ${profile.website ?? chalk.dim('—')}`);
28
+ console.log('');
29
+ }
30
+ catch (err) {
31
+ spinner.fail('Profile update failed');
32
+ console.error(chalk.red(`āœ– ${err.message}`));
33
+ process.exit(1);
34
+ }
35
+ }
36
+ //# sourceMappingURL=profile-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-update.js","sourceRoot":"","sources":["../../src/commands/profile-update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAUzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA6B;IAClE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAA;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;IAE5F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACzC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,OAAO;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface RegisterOptions {
2
+ displayName?: string;
3
+ capabilities?: string;
4
+ directory?: string;
5
+ }
6
+ export declare function cmdRegister(options: RegisterOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CzE"}
@@ -0,0 +1,46 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient, BeamIdentity } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdRegister(options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const parsed = BeamIdentity.parseBeamId(config.identity.beamId);
9
+ if (!parsed) {
10
+ console.error(chalk.red('āœ– Invalid Beam ID in config'));
11
+ process.exit(1);
12
+ }
13
+ const displayName = options.displayName ?? parsed.agent;
14
+ const capabilities = options.capabilities
15
+ ? options.capabilities.split(',').map(c => c.trim()).filter(Boolean)
16
+ : [];
17
+ const spinner = ora(`Registering ${chalk.bold(config.identity.beamId)}...`).start();
18
+ try {
19
+ const client = new BeamClient({
20
+ identity: config.identity,
21
+ directoryUrl
22
+ });
23
+ const record = await client.register(displayName, capabilities);
24
+ spinner.succeed('Agent registered successfully');
25
+ console.log('');
26
+ console.log(chalk.bold('āœ… Registration Complete'));
27
+ console.log(chalk.dim('─'.repeat(40)));
28
+ console.log(`${chalk.cyan('Beam ID:')} ${chalk.bold(record.beamId)}`);
29
+ console.log(`${chalk.cyan('Display:')} ${record.displayName}`);
30
+ console.log(`${chalk.cyan('Org:')} ${record.org ?? chalk.dim('consumer')}`);
31
+ console.log(`${chalk.cyan('Trust Score:')} ${(record.trustScore * 100).toFixed(0)}%`);
32
+ console.log(`${chalk.cyan('Verified:')} ${record.verified ? chalk.green('Yes āœ“') : chalk.yellow('No')}`);
33
+ if (record.capabilities.length > 0) {
34
+ console.log(`${chalk.cyan('Capabilities:')} ${record.capabilities.join(', ')}`);
35
+ }
36
+ console.log(`${chalk.cyan('Registered:')} ${new Date(record.createdAt).toLocaleString()}`);
37
+ console.log('');
38
+ console.log(chalk.green('Next step:'), `beam lookup ${record.beamId}`);
39
+ }
40
+ catch (err) {
41
+ spinner.fail('Registration failed');
42
+ console.error(chalk.red(`āœ– ${err.message}`));
43
+ process.exit(1);
44
+ }
45
+ }
46
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface ReportOptions {
2
+ reason?: string;
3
+ directory?: string;
4
+ json?: boolean;
5
+ }
6
+ export declare function cmdReport(targetBeamId: string, options: ReportOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC3F"}
@@ -0,0 +1,41 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { BEAM_ID_PATTERN, loadConfig } from '../config.js';
5
+ export async function cmdReport(targetBeamId, options) {
6
+ if (!BEAM_ID_PATTERN.test(targetBeamId)) {
7
+ console.error(chalk.red(`āœ– Invalid Beam ID: ${targetBeamId}`));
8
+ process.exit(1);
9
+ }
10
+ if (!options.reason) {
11
+ console.error(chalk.red('āœ– Missing required --reason value'));
12
+ process.exit(1);
13
+ }
14
+ const config = loadConfig();
15
+ const directoryUrl = options.directory ?? config.directoryUrl;
16
+ const spinner = ora(`Submitting report for ${chalk.bold(targetBeamId)}...`).start();
17
+ try {
18
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
19
+ const report = await client.report(targetBeamId, options.reason);
20
+ spinner.stop();
21
+ if (options.json) {
22
+ console.log(JSON.stringify(report, null, 2));
23
+ return;
24
+ }
25
+ console.log('');
26
+ console.log(chalk.bold.yellow('⚠ Agent reported'));
27
+ console.log(chalk.dim('─'.repeat(40)));
28
+ console.log(`${chalk.cyan('Reporter:')} ${report.reporterBeamId}`);
29
+ console.log(`${chalk.cyan('Target:')} ${report.targetBeamId}`);
30
+ console.log(`${chalk.cyan('Reason:')} ${report.reason}`);
31
+ if (report.status)
32
+ console.log(`${chalk.cyan('Status:')} ${report.status}`);
33
+ console.log('');
34
+ }
35
+ catch (err) {
36
+ spinner.fail('Report failed');
37
+ console.error(chalk.red(`āœ– ${err.message}`));
38
+ process.exit(1);
39
+ }
40
+ }
41
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAQ1D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,YAAoB,EAAE,OAAsB;IAC1E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAA;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;IAEnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAChE,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface SearchOptions {
2
+ org?: string;
3
+ capability?: string;
4
+ minTrust?: string;
5
+ limit?: string;
6
+ directory?: string;
7
+ json?: boolean;
8
+ }
9
+ export declare function cmdSearch(options: SearchOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrE"}
@@ -0,0 +1,72 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamDirectory } from '@beam-protocol/sdk';
4
+ import { resolveDirectoryUrl } from '../config.js';
5
+ export async function cmdSearch(options) {
6
+ const directoryUrl = resolveDirectoryUrl(options.directory);
7
+ const query = {
8
+ org: options.org,
9
+ capabilities: options.capability ? [options.capability] : undefined,
10
+ minTrustScore: options.minTrust ? parseFloat(options.minTrust) : undefined,
11
+ limit: options.limit ? parseInt(options.limit, 10) : 20
12
+ };
13
+ const parts = [];
14
+ if (query.org)
15
+ parts.push(`org=${query.org}`);
16
+ if (query.capabilities)
17
+ parts.push(`capability=${query.capabilities[0]}`);
18
+ const label = parts.length ? parts.join(', ') : 'all agents';
19
+ const spinner = ora(`Searching ${label}...`).start();
20
+ try {
21
+ const directory = new BeamDirectory({ baseUrl: directoryUrl });
22
+ const agents = await directory.search(query);
23
+ spinner.stop();
24
+ if (options.json) {
25
+ console.log(JSON.stringify(agents, null, 2));
26
+ return;
27
+ }
28
+ if (agents.length === 0) {
29
+ console.log(chalk.yellow(`\n No agents found matching your query.\n`));
30
+ return;
31
+ }
32
+ console.log('');
33
+ console.log(chalk.bold(`šŸ” Found ${agents.length} agent${agents.length !== 1 ? 's' : ''}`));
34
+ console.log(chalk.dim('─'.repeat(60)));
35
+ for (const agent of agents) {
36
+ const trustPct = (agent.trustScore * 100).toFixed(0);
37
+ const verified = agent.verified ? chalk.green('āœ“') : chalk.dim('ā—‹');
38
+ const caps = agent.capabilities.length > 0
39
+ ? chalk.dim(` [${agent.capabilities.join(', ')}]`)
40
+ : '';
41
+ console.log(` ${verified} ${chalk.bold(agent.beamId)}${caps}`);
42
+ console.log(` ${chalk.dim(agent.displayName)} Ā· Trust: ${getTrustColored(agent.trustScore, trustPct + '%')} Ā· Last seen: ${formatRelative(agent.lastSeen)}`);
43
+ console.log('');
44
+ }
45
+ }
46
+ catch (err) {
47
+ spinner.fail('Search failed');
48
+ console.error(chalk.red(`āœ– ${err.message}`));
49
+ process.exit(1);
50
+ }
51
+ }
52
+ function getTrustColored(score, label) {
53
+ if (score >= 0.8)
54
+ return chalk.green(label);
55
+ if (score >= 0.5)
56
+ return chalk.yellow(label);
57
+ return chalk.red(label);
58
+ }
59
+ function formatRelative(iso) {
60
+ const ms = Date.now() - new Date(iso).getTime();
61
+ const minutes = Math.floor(ms / 60000);
62
+ if (minutes < 1)
63
+ return chalk.dim('just now');
64
+ if (minutes < 60)
65
+ return chalk.dim(`${minutes}m ago`);
66
+ const hours = Math.floor(minutes / 60);
67
+ if (hours < 24)
68
+ return chalk.dim(`${hours}h ago`);
69
+ const days = Math.floor(hours / 24);
70
+ return chalk.dim(`${days}d ago`);
71
+ }
72
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface SendOptions {
2
+ directory?: string;
3
+ timeout?: string;
4
+ json?: boolean;
5
+ }
6
+ export declare function cmdSend(to: string, intent: string, paramsJson: string | undefined, options: SendOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,OAAO,CAC3B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
@@ -0,0 +1,76 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { BEAM_ID_PATTERN, loadConfig } from '../config.js';
5
+ export async function cmdSend(to, intent, paramsJson, options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const timeoutMs = options.timeout ? parseInt(options.timeout, 10) * 1000 : 10000;
9
+ if (!BEAM_ID_PATTERN.test(to)) {
10
+ console.error(chalk.red(`āœ– Invalid Beam ID: ${to}`));
11
+ console.error(chalk.dim(' Expected: agent@beam.directory or agent@org.beam.directory'));
12
+ process.exit(1);
13
+ }
14
+ let params = {};
15
+ if (paramsJson) {
16
+ try {
17
+ const parsed = JSON.parse(paramsJson);
18
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
19
+ params = parsed;
20
+ }
21
+ else {
22
+ throw new Error('Params must be a JSON object');
23
+ }
24
+ }
25
+ catch (err) {
26
+ console.error(chalk.red(`āœ– Invalid params JSON: ${err.message}`));
27
+ process.exit(1);
28
+ }
29
+ }
30
+ const spinner = ora(`Sending ${chalk.bold(intent)} to ${chalk.bold(to)}...`).start();
31
+ const startTime = Date.now();
32
+ try {
33
+ const client = new BeamClient({
34
+ identity: config.identity,
35
+ directoryUrl
36
+ });
37
+ const result = await client.send(to, intent, params, timeoutMs);
38
+ const elapsed = Date.now() - startTime;
39
+ spinner.stop();
40
+ if (options.json) {
41
+ console.log(JSON.stringify(result, null, 2));
42
+ return;
43
+ }
44
+ if (result.success) {
45
+ console.log('');
46
+ console.log(chalk.bold.green('āœ… Intent delivered successfully'));
47
+ console.log(chalk.dim('─'.repeat(40)));
48
+ console.log(`${chalk.cyan('From:')} ${config.identity.beamId}`);
49
+ console.log(`${chalk.cyan('To:')} ${to}`);
50
+ console.log(`${chalk.cyan('Intent:')} ${intent}`);
51
+ console.log(`${chalk.cyan('Latency:')} ${elapsed}ms`);
52
+ if (result.payload && Object.keys(result.payload).length > 0) {
53
+ console.log('');
54
+ console.log(chalk.bold('šŸ“¦ Result Payload:'));
55
+ console.log(JSON.stringify(result.payload, null, 2));
56
+ }
57
+ }
58
+ else {
59
+ console.log('');
60
+ console.log(chalk.bold.red('āœ– Intent failed'));
61
+ console.log(chalk.dim('─'.repeat(40)));
62
+ console.log(`${chalk.cyan('Error:')} ${result.error ?? 'Unknown error'}`);
63
+ if (result.errorCode) {
64
+ console.log(`${chalk.cyan('Code:')} ${result.errorCode}`);
65
+ }
66
+ console.log(`${chalk.cyan('Latency:')} ${elapsed}ms`);
67
+ }
68
+ console.log('');
69
+ }
70
+ catch (err) {
71
+ spinner.fail('Send failed');
72
+ console.error(chalk.red(`āœ– ${err.message}`));
73
+ process.exit(1);
74
+ }
75
+ }
76
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface StatsOptions {
2
+ directory?: string;
3
+ json?: boolean;
4
+ }
5
+ export declare function cmdStats(options: StatsOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BnE"}
@@ -0,0 +1,35 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdStats(options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const spinner = ora('Fetching directory statistics...').start();
9
+ try {
10
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
11
+ const stats = await client.getStats();
12
+ spinner.stop();
13
+ if (options.json) {
14
+ console.log(JSON.stringify(stats, null, 2));
15
+ return;
16
+ }
17
+ console.log('');
18
+ console.log(chalk.bold('šŸ“ˆ Directory statistics'));
19
+ console.log(chalk.dim('─'.repeat(40)));
20
+ console.log(`${chalk.cyan('Total agents:')} ${stats.totalAgents}`);
21
+ console.log(`${chalk.cyan('Verified:')} ${stats.verifiedAgents}`);
22
+ console.log(`${chalk.cyan('Intents:')} ${stats.intentsProcessed}`);
23
+ if (stats.consumerAgents !== undefined)
24
+ console.log(`${chalk.cyan('Consumers:')} ${stats.consumerAgents}`);
25
+ if (stats.version)
26
+ console.log(`${chalk.cyan('Version:')} ${stats.version}`);
27
+ console.log('');
28
+ }
29
+ catch (err) {
30
+ spinner.fail('Stats failed');
31
+ console.error(chalk.red(`āœ– ${err.message}`));
32
+ process.exit(1);
33
+ }
34
+ }
35
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAOzC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAA;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAA;IAE/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1E,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QACrC,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3C,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACvE,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;QAC7G,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface VerifyCheckOptions {
2
+ directory?: string;
3
+ json?: boolean;
4
+ }
5
+ export declare function cmdVerifyCheck(options: VerifyCheckOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=verify-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-check.d.ts","sourceRoot":"","sources":["../../src/commands/verify-check.ts"],"names":[],"mappings":"AAKA,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/E"}
@@ -0,0 +1,34 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdVerifyCheck(options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const spinner = ora('Checking verification status...').start();
9
+ try {
10
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
11
+ const verification = await client.checkDomainVerification();
12
+ spinner.stop();
13
+ if (options.json) {
14
+ console.log(JSON.stringify(verification, null, 2));
15
+ return;
16
+ }
17
+ console.log('');
18
+ console.log(chalk.bold('šŸ”Ž Verification status'));
19
+ console.log(chalk.dim('─'.repeat(40)));
20
+ console.log(`${chalk.cyan('Domain:')} ${verification.domain || chalk.dim('—')}`);
21
+ console.log(`${chalk.cyan('Verified:')} ${verification.verified ? chalk.green('Yes āœ“') : chalk.yellow('Pending')}`);
22
+ console.log(`${chalk.cyan('Status:')} ${verification.status ?? chalk.dim('—')}`);
23
+ if (verification.tier) {
24
+ console.log(`${chalk.cyan('Tier:')} ${verification.tier}`);
25
+ }
26
+ console.log('');
27
+ }
28
+ catch (err) {
29
+ spinner.fail('Verification check failed');
30
+ console.error(chalk.red(`āœ– ${err.message}`));
31
+ process.exit(1);
32
+ }
33
+ }
34
+ //# sourceMappingURL=verify-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-check.js","sourceRoot":"","sources":["../../src/commands/verify-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAOzC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA2B;IAC9D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAA;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAA;IAE9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1E,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAA;QAC3D,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAClD,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACnH,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface VerifyDomainOptions {
2
+ directory?: string;
3
+ json?: boolean;
4
+ }
5
+ export declare function cmdVerifyDomain(domain: string, options: VerifyDomainOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=verify-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-domain.d.ts","sourceRoot":"","sources":["../../src/commands/verify-domain.ts"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjG"}
@@ -0,0 +1,36 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BeamClient } from '@beam-protocol/sdk';
4
+ import { loadConfig } from '../config.js';
5
+ export async function cmdVerifyDomain(domain, options) {
6
+ const config = loadConfig();
7
+ const directoryUrl = options.directory ?? config.directoryUrl;
8
+ const spinner = ora(`Starting DNS verification for ${chalk.bold(domain)}...`).start();
9
+ try {
10
+ const client = new BeamClient({ identity: config.identity, directoryUrl });
11
+ const verification = await client.verifyDomain(domain);
12
+ spinner.stop();
13
+ if (options.json) {
14
+ console.log(JSON.stringify(verification, null, 2));
15
+ return;
16
+ }
17
+ console.log('');
18
+ console.log(chalk.bold('🌐 Domain verification started'));
19
+ console.log(chalk.dim('─'.repeat(40)));
20
+ console.log(`${chalk.cyan('Domain:')} ${verification.domain}`);
21
+ console.log(`${chalk.cyan('Verified:')} ${verification.verified ? chalk.green('Yes') : chalk.yellow('Pending')}`);
22
+ if (verification.txtName)
23
+ console.log(`${chalk.cyan('TXT Name:')} ${verification.txtName}`);
24
+ if (verification.txtValue ?? verification.expected) {
25
+ console.log(`${chalk.cyan('TXT Value:')} ${verification.txtValue ?? verification.expected}`);
26
+ }
27
+ console.log('');
28
+ console.log(chalk.dim('After adding the TXT record, run: beam verify check'));
29
+ }
30
+ catch (err) {
31
+ spinner.fail('Domain verification failed');
32
+ console.error(chalk.red(`āœ– ${err.message}`));
33
+ process.exit(1);
34
+ }
35
+ }
36
+ //# sourceMappingURL=verify-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-domain.js","sourceRoot":"","sources":["../../src/commands/verify-domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAOzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,OAA4B;IAChF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAA;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;IAErF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1E,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,EAAE,CAAA;QAEd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAClD,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAA;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACjH,IAAI,YAAY,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3F,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAA;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BeamIdentityData } from '@beam-protocol/sdk';
2
+ export interface BeamConfig {
3
+ identity: BeamIdentityData;
4
+ directoryUrl: string;
5
+ createdAt: string;
6
+ }
7
+ export declare function getConfigDir(cwd?: string): string;
8
+ export declare function getConfigPath(cwd?: string): string;
9
+ export declare function configExists(cwd?: string): boolean;
10
+ export declare function loadOptionalConfig(cwd?: string): BeamConfig | null;
11
+ export declare function loadConfig(cwd?: string): BeamConfig;
12
+ export declare function resolveDirectoryUrl(override?: string, cwd?: string): string;
13
+ export declare function saveConfig(config: BeamConfig, cwd?: string): void;
14
+ export declare const DEFAULT_DIRECTORY_URL: string;
15
+ export declare const BEAM_ID_PATTERN: RegExp;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,OAAO,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,SAAgB,GAAG,UAAU,GAAG,IAAI,CAOzE;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,UAAU,CAM1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,CAElF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAgB,GAAG,IAAI,CAIxE;AAED,eAAO,MAAM,qBAAqB,QAAoE,CAAA;AACtG,eAAO,MAAM,eAAe,QAA+E,CAAA"}
package/dist/config.js ADDED
@@ -0,0 +1,37 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ export function getConfigDir(cwd = process.cwd()) {
4
+ return join(cwd, '.beam');
5
+ }
6
+ export function getConfigPath(cwd = process.cwd()) {
7
+ return join(getConfigDir(cwd), 'identity.json');
8
+ }
9
+ export function configExists(cwd = process.cwd()) {
10
+ return existsSync(getConfigPath(cwd));
11
+ }
12
+ export function loadOptionalConfig(cwd = process.cwd()) {
13
+ const path = getConfigPath(cwd);
14
+ if (!existsSync(path)) {
15
+ return null;
16
+ }
17
+ const raw = readFileSync(path, 'utf8');
18
+ return JSON.parse(raw);
19
+ }
20
+ export function loadConfig(cwd = process.cwd()) {
21
+ const config = loadOptionalConfig(cwd);
22
+ if (!config) {
23
+ throw new Error(`No Beam identity found. Run 'beam init' first.`);
24
+ }
25
+ return config;
26
+ }
27
+ export function resolveDirectoryUrl(override, cwd = process.cwd()) {
28
+ return override ?? loadOptionalConfig(cwd)?.directoryUrl ?? DEFAULT_DIRECTORY_URL;
29
+ }
30
+ export function saveConfig(config, cwd = process.cwd()) {
31
+ const dir = getConfigDir(cwd);
32
+ mkdirSync(dir, { recursive: true });
33
+ writeFileSync(getConfigPath(cwd), JSON.stringify(config, null, 2), 'utf8');
34
+ }
35
+ export const DEFAULT_DIRECTORY_URL = process.env['BEAM_DIRECTORY_URL'] ?? 'https://api.beam.directory';
36
+ export const BEAM_ID_PATTERN = /^(?:[a-z0-9_-]+@beam\.directory|[a-z0-9_-]+@[a-z0-9_-]+\.beam\.directory)$/;
37
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAShC,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,OAAO,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACxE,OAAO,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,YAAY,IAAI,qBAAqB,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAChE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC7B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,4BAA4B,CAAA;AACtG,MAAM,CAAC,MAAM,eAAe,GAAG,4EAA4E,CAAA"}
@@ -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,145 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { cmdInit } from './commands/init.js';
5
+ import { cmdRegister } from './commands/register.js';
6
+ import { cmdLookup } from './commands/lookup.js';
7
+ import { cmdSearch } from './commands/search.js';
8
+ import { cmdSend } from './commands/send.js';
9
+ import { cmdBrowse } from './commands/browse.js';
10
+ import { cmdProfileUpdate } from './commands/profile-update.js';
11
+ import { cmdVerifyDomain } from './commands/verify-domain.js';
12
+ import { cmdVerifyCheck } from './commands/verify-check.js';
13
+ import { cmdStats } from './commands/stats.js';
14
+ import { cmdDelegate } from './commands/delegate.js';
15
+ import { cmdReport } from './commands/report.js';
16
+ const program = new Command();
17
+ program
18
+ .name('beam')
19
+ .description(chalk.bold('Beam Protocol CLI') + '\n' +
20
+ chalk.dim('SMTP for AI Agents — agent identity, registration & intent routing'))
21
+ .version('0.5.0');
22
+ program
23
+ .command('init')
24
+ .description('Generate a new Beam identity (writes .beam/identity.json)')
25
+ .requiredOption('-a, --agent <name>', 'Agent name (e.g. jarvis)')
26
+ .option('-o, --org <name>', 'Organisation name (optional for consumer Beam-IDs)')
27
+ .option('-d, --directory <url>', 'Directory server URL', process.env['BEAM_DIRECTORY_URL'] ?? 'https://api.beam.directory')
28
+ .option('-f, --force', 'Overwrite existing identity')
29
+ .action(async (opts) => {
30
+ await cmdInit(opts);
31
+ });
32
+ program
33
+ .command('register')
34
+ .description('Register this agent with a Beam directory')
35
+ .option('-n, --display-name <name>', 'Human-readable display name')
36
+ .option('-c, --capabilities <list>', 'Comma-separated capabilities (e.g. query,answer,write)')
37
+ .option('-d, --directory <url>', 'Override directory URL')
38
+ .action(async (opts) => {
39
+ await cmdRegister(opts);
40
+ });
41
+ program
42
+ .command('lookup <beamId>')
43
+ .description('Look up an agent by Beam ID')
44
+ .option('-d, --directory <url>', 'Override directory URL')
45
+ .option('--json', 'Output raw JSON')
46
+ .action(async (beamId, opts) => {
47
+ await cmdLookup(beamId, opts);
48
+ });
49
+ program
50
+ .command('search')
51
+ .description('Search for agents in the directory')
52
+ .option('--org <org>', 'Filter by organisation')
53
+ .option('--capability <cap>', 'Filter by capability')
54
+ .option('--min-trust <score>', 'Minimum trust score (0.0-1.0)')
55
+ .option('--limit <n>', 'Max results', '20')
56
+ .option('-d, --directory <url>', 'Override directory URL')
57
+ .option('--json', 'Output raw JSON')
58
+ .action(async (opts) => {
59
+ await cmdSearch(opts);
60
+ });
61
+ program
62
+ .command('browse')
63
+ .description('Browse paginated agent listings')
64
+ .option('--page <n>', 'Page number', '1')
65
+ .option('--capability <cap>', 'Filter by capability')
66
+ .option('--tier <tier>', 'Filter by verification tier')
67
+ .option('--verified-only', 'Only show verified agents')
68
+ .option('-d, --directory <url>', 'Override directory URL')
69
+ .option('--json', 'Output raw JSON')
70
+ .action(async (opts) => {
71
+ await cmdBrowse(opts);
72
+ });
73
+ const profile = program.command('profile').description('Profile management commands');
74
+ profile
75
+ .command('update')
76
+ .description('Update your agent profile')
77
+ .option('--description <text>', 'Profile description')
78
+ .option('--logo-url <url>', 'Public logo URL')
79
+ .option('--website <url>', 'Public website URL')
80
+ .option('-d, --directory <url>', 'Override directory URL')
81
+ .option('--json', 'Output raw JSON')
82
+ .action(async (opts) => {
83
+ await cmdProfileUpdate(opts);
84
+ });
85
+ const verify = program.command('verify').description('Verification commands');
86
+ verify
87
+ .command('domain <domain>')
88
+ .description('Initiate DNS verification for a domain')
89
+ .option('-d, --directory <url>', 'Override directory URL')
90
+ .option('--json', 'Output raw JSON')
91
+ .action(async (domain, opts) => {
92
+ await cmdVerifyDomain(domain, opts);
93
+ });
94
+ verify
95
+ .command('check')
96
+ .description('Check current verification status')
97
+ .option('-d, --directory <url>', 'Override directory URL')
98
+ .option('--json', 'Output raw JSON')
99
+ .action(async (opts) => {
100
+ await cmdVerifyCheck(opts);
101
+ });
102
+ program
103
+ .command('stats')
104
+ .description('Show directory statistics')
105
+ .option('-d, --directory <url>', 'Override directory URL')
106
+ .option('--json', 'Output raw JSON')
107
+ .action(async (opts) => {
108
+ await cmdStats(opts);
109
+ });
110
+ program
111
+ .command('delegate <targetBeamId>')
112
+ .description('Create a delegation for another Beam agent')
113
+ .requiredOption('--scope <scope>', 'Delegation scope')
114
+ .option('--expires <hours>', 'Hours until delegation expiry')
115
+ .option('-d, --directory <url>', 'Override directory URL')
116
+ .option('--json', 'Output raw JSON')
117
+ .action(async (targetBeamId, opts) => {
118
+ await cmdDelegate(targetBeamId, opts);
119
+ });
120
+ program
121
+ .command('report <targetBeamId>')
122
+ .description('Report an agent')
123
+ .requiredOption('--reason <reason>', 'Reason for the report')
124
+ .option('-d, --directory <url>', 'Override directory URL')
125
+ .option('--json', 'Output raw JSON')
126
+ .action(async (targetBeamId, opts) => {
127
+ await cmdReport(targetBeamId, opts);
128
+ });
129
+ program
130
+ .command('send <to> <intent> [params]')
131
+ .description('Send an intent to an agent and print the result')
132
+ .option('-d, --directory <url>', 'Override directory URL')
133
+ .option('-t, --timeout <seconds>', 'Timeout in seconds', '10')
134
+ .option('--json', 'Output raw JSON')
135
+ .action(async (to, intent, params, opts) => {
136
+ await cmdSend(to, intent, params, opts);
137
+ });
138
+ program.configureOutput({
139
+ outputError: (str, write) => write(chalk.red(str))
140
+ });
141
+ program.parseAsync(process.argv).catch((err) => {
142
+ console.error(chalk.red(`\nāœ– ${err.message}`));
143
+ process.exit(1);
144
+ });
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beam-protocol-cli",
3
- "version": "0.5.0",
4
- "description": "Beam Protocol CLI \u2014 manage Beam identities, register agents, send intents",
3
+ "version": "0.5.1",
4
+ "description": "Beam Protocol CLI — manage Beam identities, register agents, send intents",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "beam": "./dist/index.js"
@@ -34,4 +34,4 @@
34
34
  "ai-agents",
35
35
  "cli"
36
36
  ]
37
- }
37
+ }