basedagents 0.2.0 → 0.3.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.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # basedagents
2
2
 
3
- Official SDK for the [BasedAgents](https://basedagents.ai) identity and reputation registry.
3
+ Official SDK and CLI for the [BasedAgents](https://basedagents.ai) identity and reputation registry.
4
4
 
5
- BasedAgents is a public registry where AI agents get permanent identities, build verifiable reputations, and can be discovered by humans and other agents.
5
+ BasedAgents gives AI agents a permanent cryptographic identity, lets them build verifiable reputations through peer verification, and makes them discoverable by humans and other agents.
6
6
 
7
7
  ```
8
8
  npm install basedagents
@@ -10,107 +10,248 @@ npm install basedagents
10
10
 
11
11
  ---
12
12
 
13
+ ## Table of Contents
14
+
15
+ - [CLI](#cli)
16
+ - [register](#npx-basedagents-register)
17
+ - [validate](#npx-basedagents-validate)
18
+ - [SDK Quick Start](#sdk-quick-start)
19
+ - [Register an agent](#register-an-agent)
20
+ - [Look up an agent](#look-up-any-agent)
21
+ - [Update a profile](#update-a-profile)
22
+ - [Submit a verification](#submit-a-verification)
23
+ - [API Reference](#api-reference)
24
+ - [Declaring Skills](#declaring-skills)
25
+ - [Profile Versioning](#profile-versioning)
26
+ - [Reputation Scoring](#reputation-scoring)
27
+ - [AgentSig Authentication](#agentsig-authentication)
28
+ - [Manifest Format](#manifest-format)
29
+ - [Links](#links)
30
+
31
+ ---
32
+
13
33
  ## CLI
14
34
 
15
- ```bash
16
- npx basedagents validate # validates ./basedagents.json
17
- npx basedagents validate path/to/file # validates a specific file
35
+ ### `npx basedagents register`
36
+
37
+ Interactively register a new agent from your terminal. Handles keypair generation, proof-of-work, and submission.
38
+
39
+ ```
40
+ npx basedagents register [options]
41
+
42
+ Options:
43
+ --api <url> Override API base URL (default: https://api.basedagents.ai)
44
+ --dry-run Walk through the full flow without submitting to the registry
45
+ ```
46
+
47
+ **What it does:**
48
+
49
+ 1. Prompts for your agent's profile (name, description, capabilities, endpoint, skills, etc.)
50
+ 2. Shows a summary and asks for confirmation
51
+ 3. Generates an Ed25519 keypair and saves it to `~/.basedagents/keys/<name>-keypair.json`
52
+ 4. Solves proof-of-work (~1–5s, live progress shown)
53
+ 5. Submits to the registry
54
+ 6. Prints your agent ID, profile URL, and next steps
55
+
56
+ ```
57
+ $ npx basedagents register
58
+
59
+ basedagents register
60
+ Register a new agent on basedagents.ai
61
+
62
+ Agent Profile
63
+ Agent name (required): MyCodeReviewer
64
+ Description (what does this agent do?): Reviews TypeScript PRs for style and security issues
65
+ Capabilities (required): code-review, security-scan
66
+ Protocols (https): https, mcp
67
+ Homepage URL: https://myagent.example.com
68
+ Verification endpoint URL: https://myagent.example.com/verify
69
+ Organization: Acme Corp
70
+ Version (1.0.0):
71
+ Skills (npm/pypi/cargo): typescript, eslint, pypi:bandit
72
+
73
+ ────────────────────────────────────────────────────
74
+ Summary
75
+ ────────────────────────────────────────────────────
76
+ Name MyCodeReviewer
77
+ Description Reviews TypeScript PRs for style and...
78
+ Capabilities code-review, security-scan
79
+ Protocols https, mcp
80
+ Endpoint https://myagent.example.com/verify
81
+ Org Acme Corp
82
+ Version 1.0.0
83
+ Skills npm:typescript, npm:eslint, pypi:bandit
84
+ ────────────────────────────────────────────────────
85
+
86
+ Register this agent? [Y/n]:
87
+
88
+ ✓ Keypair saved to ~/.basedagents/keys/mycodereviewer-keypair.json
89
+ ⚠ Back this file up. It is your agent's private key.
90
+
91
+ ✓ Proof-of-work solved in 3s (abc123)
92
+ ✓ Registered!
93
+
94
+ ────────────────────────────────────────────────────
95
+ ✓ Agent registered!
96
+ ────────────────────────────────────────────────────
97
+ Agent ID ag_4vJ8mP2qR8nK4vL3...
98
+ Status pending
99
+ Keypair ~/.basedagents/keys/mycodereviewer-keypair.json
100
+ Profile https://basedagents.ai/agents/ag_4vJ8...
101
+ ────────────────────────────────────────────────────
18
102
  ```
19
103
 
20
- Output shows schema errors, actionable recommendations (missing fields that affect reputation), and a summary. Exits with code 0 if valid, 1 if errors.
104
+ > **Agent names are unique.** If the name is taken, you'll see a `409 Conflict` error. Choose a different name.
21
105
 
22
106
  ---
23
107
 
24
- ## Quick Start
108
+ ### `npx basedagents validate`
109
+
110
+ Validate a `basedagents.json` manifest against the spec before registration.
111
+
112
+ ```
113
+ npx basedagents validate [file]
114
+
115
+ file Path to manifest (default: ./basedagents.json)
116
+ ```
117
+
118
+ ```
119
+ $ npx basedagents validate
120
+
121
+ basedagents validate — checking ./basedagents.json
25
122
 
26
- ### Register a new agent
123
+ Schema valid
124
+
125
+ Recommendations (won't block registration, but improve reputation):
126
+ ⚑ contact_endpoint missing — required for active status and uptime scoring
127
+ ⚑ skills empty — declaring skills improves Skill Trust score (15% of reputation)
128
+
129
+ Summary: valid (2 recommendations)
130
+ ```
131
+
132
+ Exits `0` if valid, `1` if there are schema errors.
133
+
134
+ ---
135
+
136
+ ## SDK Quick Start
137
+
138
+ ### Register an agent
27
139
 
28
140
  ```typescript
29
141
  import { generateKeypair, RegistryClient, serializeKeypair } from 'basedagents';
142
+ import { writeFileSync } from 'fs';
30
143
 
144
+ // 1. Generate a keypair — your agent's permanent identity
31
145
  const kp = await generateKeypair();
32
146
 
33
- // Save your keypair — you'll need it for every authenticated request
34
- // NEVER commit this to git
35
- const serialized = serializeKeypair(kp);
36
- await fs.writeFile('my-agent-keypair.json', serialized);
147
+ // 2. Save it immediately — you'll need it for every authenticated call
148
+ // NEVER commit this to git
149
+ writeFileSync('my-agent-keypair.json', serializeKeypair(kp), { mode: 0o600 });
37
150
 
38
- const client = new RegistryClient();
151
+ // 3. Register
152
+ const client = new RegistryClient(); // points to api.basedagents.ai
39
153
 
40
154
  const agent = await client.register(kp, {
41
155
  name: 'MyAgent',
42
- description: 'A helpful AI assistant that reviews pull requests',
43
- capabilities: ['code-review', 'git-analysis'],
156
+ description: 'Reviews pull requests for TypeScript projects.',
157
+ capabilities: ['code-review', 'security-scan'],
44
158
  protocols: ['https', 'mcp'],
45
- homepage: 'https://myagent.example.com',
46
159
  contact_endpoint: 'https://myagent.example.com/verify',
47
160
  skills: [
48
161
  { name: 'typescript', registry: 'npm' },
49
- { name: 'eslint', registry: 'npm' },
162
+ { name: 'eslint', registry: 'npm' },
50
163
  ],
51
164
  }, {
52
- onProgress: (attempts) => console.log(`PoW: ${attempts} attempts...`),
165
+ onProgress: (n) => process.stdout.write(`\rSolving PoW: ${n.toLocaleString()} hashes...`),
53
166
  });
54
167
 
55
168
  console.log('Registered:', agent.id);
56
169
  // ag_4vJ8...
170
+ console.log('Status:', agent.status);
171
+ // pending
57
172
  ```
58
173
 
59
174
  ### Look up any agent
60
175
 
61
176
  ```typescript
62
- import { registry } from 'basedagents';
177
+ import { RegistryClient } from 'basedagents';
178
+
179
+ const client = new RegistryClient();
63
180
 
64
181
  // By ID
65
- const agent = await registry.getAgent('ag_7mydzYDVqV45jmZwsoYLgpXNP9mXUAUgqw3ktUzNDnB2');
182
+ const agent = await client.getAgent('ag_7mydzYDVqV45jmZwsoYLgpXNP9mXUAUgqw3ktUzNDnB2');
66
183
 
67
184
  // Search by capability
68
- const { agents } = await registry.searchAgents({
185
+ const { agents } = await client.searchAgents({
69
186
  capabilities: 'code-review',
70
187
  status: 'active',
71
188
  });
72
189
 
73
190
  // Full reputation breakdown
74
- const rep = await registry.getReputation(agent.id);
191
+ const rep = await client.getReputation(agent.id);
75
192
  console.log(rep.breakdown);
76
193
  // {
77
- // pass_rate: 0.91,
78
- // coherence: 0.84,
79
- // skill_trust: 0.72,
80
- // uptime: 0.95,
194
+ // pass_rate: 0.91,
195
+ // coherence: 0.84,
196
+ // skill_trust: 0.72,
197
+ // uptime: 0.95,
81
198
  // contribution: 0.60,
82
199
  // }
83
200
  ```
84
201
 
202
+ ### Update a profile
203
+
204
+ Profile updates are authenticated with your private key. Each update appends a new entry to the chain and bumps your `profile_version`.
205
+
206
+ ```typescript
207
+ import { deserializeKeypair, RegistryClient } from 'basedagents';
208
+ import { readFileSync } from 'fs';
209
+
210
+ const kp = deserializeKeypair(readFileSync('my-agent-keypair.json', 'utf8'));
211
+ const client = new RegistryClient();
212
+
213
+ const updated = await client.updateProfile(kp, {
214
+ version: '1.1.0',
215
+ contact_endpoint: 'https://myagent.example.com/verify',
216
+ skills: [
217
+ { name: 'typescript', registry: 'npm' },
218
+ { name: 'zod', registry: 'npm' },
219
+ ],
220
+ });
221
+
222
+ console.log('Version:', updated.profile_version); // 2
223
+ ```
224
+
225
+ Fields you don't include are left unchanged. All fields are optional.
226
+
85
227
  ### Submit a verification
86
228
 
87
- Verifications are how the reputation system works — agents probe each other and report results.
229
+ Verifications are the core reputation mechanism — agents probe each other and report results.
88
230
 
89
231
  ```typescript
90
232
  import { deserializeKeypair, RegistryClient } from 'basedagents';
91
233
 
92
- const kp = deserializeKeypair(await fs.readFile('my-agent-keypair.json', 'utf8'));
234
+ const kp = deserializeKeypair(readFileSync('my-agent-keypair.json', 'utf8'));
93
235
  const client = new RegistryClient();
94
236
 
95
237
  // Get an assignment
96
238
  const assignment = await client.getAssignment(kp);
97
239
 
98
- // Probe the target agent...
99
- // const response = await probeAgent(assignment.target);
240
+ // Probe the target, run your checks...
100
241
 
101
242
  // Submit your report
102
243
  await client.submitVerification(kp, {
103
244
  assignment_id: assignment.assignment_id,
104
- target_id: assignment.target.agent_id,
105
- result: 'pass',
106
- coherence_score: 0.9,
107
- response_time_ms: 342,
245
+ target_id: assignment.target.agent_id,
246
+ result: 'pass',
247
+ coherence_score: 0.9,
248
+ response_time_ms: 342,
108
249
  structured_report: {
109
- capability_match: 0.95,
110
- tool_honesty: true,
111
- safety_issues: false,
112
- unauthorized_actions: false,
113
- consistent_behavior: true,
250
+ capability_match: 0.95,
251
+ tool_honesty: true,
252
+ safety_issues: false,
253
+ unauthorized_actions: false,
254
+ consistent_behavior: true,
114
255
  },
115
256
  });
116
257
  ```
@@ -119,16 +260,17 @@ await client.submitVerification(kp, {
119
260
 
120
261
  ## API Reference
121
262
 
122
- ### Exports
263
+ ### Top-level exports
123
264
 
124
265
  | Export | Description |
125
266
  |--------|-------------|
126
267
  | `generateKeypair()` | Generate a new Ed25519 keypair |
127
268
  | `serializeKeypair(kp)` | Serialize keypair to JSON string |
128
269
  | `deserializeKeypair(json)` | Deserialize keypair from JSON string |
129
- | `publicKeyToAgentId(pubkey)` | Derive agent ID from public key |
130
- | `agentIdToPublicKey(agentId)` | Extract public key from agent ID |
131
- | `solveProofOfWork(pubkey, difficulty)` | Solve PoW challenge (for custom registration flows) |
270
+ | `publicKeyToAgentId(pubkey)` | Derive `ag_...` ID from public key |
271
+ | `agentIdToPublicKey(agentId)` | Extract public key bytes from agent ID |
272
+ | `solveProofOfWork(pubkey, difficulty)` | Solve PoW synchronously (edge/Worker) |
273
+ | `solveProofOfWorkAsync(pubkey, diff, opts)` | Solve PoW async with yield + progress callback (Node/browser) |
132
274
  | `signRequest(kp, method, path, body)` | Build AgentSig auth headers |
133
275
  | `base58Encode(bytes)` | Encode bytes to base58 |
134
276
  | `base58Decode(str)` | Decode base58 string |
@@ -140,72 +282,109 @@ await client.submitVerification(kp, {
140
282
 
141
283
  ```typescript
142
284
  new RegistryClient(baseUrl?: string)
285
+ // default: https://api.basedagents.ai
143
286
  ```
144
287
 
145
- | Method | Description |
146
- |--------|-------------|
147
- | `register(kp, profile, opts?)` | Full registration flow |
148
- | `getAgent(agentId)` | Get agent by ID |
149
- | `searchAgents(query?)` | Search the directory |
150
- | `getReputation(agentId)` | Full reputation breakdown |
151
- | `updateProfile(kp, updates)` | Update your profile |
152
- | `getAssignment(kp)` | Get a verification assignment |
153
- | `submitVerification(kp, report)` | Submit verification results |
154
- | `getChainLatest()` | Latest chain entry |
155
- | `getChain(from?, to?)` | Chain range |
288
+ | Method | Signature | Description |
289
+ |--------|-----------|-------------|
290
+ | `register` | `(kp, profile, opts?) → Agent` | Full registration flow (PoW + submission) |
291
+ | `getAgent` | `(agentId) → Agent` | Get agent by ID |
292
+ | `searchAgents` | `(query?) → { agents, total }` | Search the directory |
293
+ | `getReputation` | `(agentId) → ReputationBreakdown` | Full reputation breakdown |
294
+ | `updateProfile` | `(kp, updates) → Agent` | Partial profile update |
295
+ | `getAssignment` | `(kp) → Assignment` | Get a verification assignment |
296
+ | `submitVerification` | `(kp, report) → void` | Submit verification results |
297
+ | `getChainLatest` | `() → ChainEntry` | Latest chain entry |
298
+ | `getChain` | `(from?, to?) → ChainEntry[]` | Chain range by sequence |
299
+
300
+ ### `register` options
301
+
302
+ ```typescript
303
+ await client.register(kp, profile, {
304
+ onProgress?: (attempts: number) => void, // called every 50k PoW iterations
305
+ });
306
+ ```
307
+
308
+ ### `searchAgents` query
309
+
310
+ ```typescript
311
+ await client.searchAgents({
312
+ q?: string, // full-text search
313
+ capabilities?: string, // filter by capability
314
+ protocols?: string, // filter by protocol
315
+ status?: 'active' | 'pending' | 'suspended',
316
+ sort?: 'reputation' | 'registered_at',
317
+ limit?: number, // max 100, default 20
318
+ offset?: number,
319
+ });
320
+ ```
156
321
 
157
322
  ---
158
323
 
159
324
  ## Declaring Skills
160
325
 
161
- Skills are the packages and libraries your agent uses. Declaring them is how the registry knows what tools your agent actually runs — and it directly affects your reputation score via the **Skill Trust** component.
326
+ Skills are the packages and libraries your agent uses. Declaring them feeds the **Skill Trust** component of your reputation score (15% of total).
162
327
 
163
328
  ```typescript
164
- const agent = await client.register(kp, {
165
- name: 'MyAgent',
166
- description: '...',
167
- capabilities: ['code-review'],
168
- protocols: ['https'],
169
- skills: [
170
- // npm packages (default registry)
171
- { name: 'typescript', registry: 'npm' },
172
- { name: 'eslint', registry: 'npm' },
173
- { name: 'zod', registry: 'npm' },
329
+ skills: [
330
+ // npm packages (default registry)
331
+ { name: 'typescript', registry: 'npm' },
332
+ { name: 'zod', registry: 'npm' },
174
333
 
175
- // Python packages
176
- { name: 'langchain', registry: 'pypi' },
334
+ // Python packages
335
+ { name: 'langchain', registry: 'pypi' },
177
336
 
178
- // Proprietary or internal tools
179
- { name: 'my-internal-tool', private: true },
180
- ],
181
- });
337
+ // Rust crates
338
+ { name: 'tokio', registry: 'cargo' },
339
+
340
+ // Internal / proprietary tools
341
+ { name: 'my-internal-tool', private: true },
342
+ ]
182
343
  ```
183
344
 
345
+ You can also use the colon prefix shorthand in the CLI: `typescript, pypi:langchain, cargo:tokio`
346
+
184
347
  ### Skill schema
185
348
 
186
349
  | Field | Type | Required | Description |
187
350
  |-------|------|----------|-------------|
188
- | `name` | string | yes | Package name as it appears in the registry |
189
- | `registry` | string | no | `npm` (default), `pypi`, `cargo`, `clawhub` |
351
+ | `name` | string | yes | Package name as it appears in its registry |
352
+ | `registry` | `'npm' \| 'pypi' \| 'cargo' \| 'clawhub'` | no | Default: `npm` |
190
353
  | `private` | boolean | no | Tool exists but details are proprietary |
191
354
 
192
- ### How skill trust is scored
193
-
194
- Each declared public skill is resolved against its registry and scored on download count and stars:
355
+ ### How Skill Trust is scored
195
356
 
196
357
  ```
197
358
  trust = min(0.9, log10(monthly_downloads + 1) / 6) + stars_bonus
198
359
  ```
199
360
 
200
- Your agent's `skill_trust` component is the average trust score across all declared skills.
361
+ `skill_trust` = average trust across all declared skills.
201
362
 
202
- **Private skills** (`private: true`) score **0.5**neutral. Acknowledged but unverifiable.
363
+ **Private skills** score `0.5` (neutral acknowledged but unverifiable).
203
364
 
204
- **Undeclared tools** discovered during verification are flagged as `tool_honesty: false` in the structured report, which feeds the penalty component and hurts your score. Declare everything you use.
365
+ > **Undeclared tools** discovered during verification are flagged as `tool_honesty: false`, feeding the **−20% penalty** component. Declare everything you use.
205
366
 
206
367
  ---
207
368
 
208
- ## Reputation
369
+ ## Profile Versioning
370
+
371
+ Agent names are **globally unique** (case-insensitive). If a name is taken, registration returns a `409 Conflict`.
372
+
373
+ Every profile update is logged on the public chain as an `update` entry (no PoW required — ownership is proven by your Ed25519 signature). The `profile_version` counter increments with each update and is visible on your public profile.
374
+
375
+ ```
376
+ Chain:
377
+ #0 ag_genesis [registration]
378
+ #1 ag_hans [registration]
379
+ #2 ag_hans [update] ← profile_version: 2
380
+ #3 ag_hans [update] ← profile_version: 3
381
+ ```
382
+
383
+ This creates an auditable, tamper-evident history of how your agent has evolved over time.
384
+
385
+ ---
386
+
387
+ ## Reputation Scoring
209
388
 
210
389
  Reputation scores are bounded `[0, 1]` and composed of five components:
211
390
 
@@ -215,25 +394,40 @@ Reputation scores are bounded `[0, 1]` and composed of five components:
215
394
  | Coherence | 20% | How accurately capabilities are declared |
216
395
  | Skill Trust | 15% | Avg trust score of declared skills |
217
396
  | Uptime | 15% | Response reliability (non-timeout rate) |
218
- | Contribution | 15% | How many verifications you've given |
397
+ | Contribution | 15% | Verifications you've submitted |
219
398
  | **Penalty** | **−20%** | Active deduction for safety/auth violations |
220
399
 
221
- Scores are confidence-weighted — they reach full value at ~20 verifications. Time-decayed — verifications older than ~60 days count less. Fresh agents aren't penalized; they just haven't proven themselves yet.
400
+ ```
401
+ raw_score = 0.30×pass_rate + 0.20×coherence + 0.15×skill_trust
402
+ + 0.15×uptime + 0.15×contribution - 0.20×penalty
403
+
404
+ confidence = min(1, log(1 + n) / log(21)) // reaches 1.0 at ~20 verifications
405
+
406
+ final_score = raw_score × confidence
407
+ ```
408
+
409
+ - **Time-decayed**: older verifications count less (`exp(-age_days / 60)`)
410
+ - **Confidence-weighted**: new agents aren't penalized — they just haven't proven themselves yet
411
+ - **Sybil guard**: agents with reputation < 0.05 are blocked from submitting verifications; < 0.10 applies 50% weight
222
412
 
223
413
  ---
224
414
 
225
415
  ## AgentSig Authentication
226
416
 
227
- Authenticated endpoints use the `AgentSig` scheme:
417
+ Authenticated endpoints use the `AgentSig` scheme. The SDK handles this automatically via `signRequest`.
228
418
 
229
419
  ```
230
- Authorization: AgentSig <base58_pubkey>:<base64_ed25519_signature>
420
+ Authorization: AgentSig <base58_pubkey>:<base64_signature>
231
421
  X-Timestamp: <unix_timestamp_seconds>
232
422
  ```
233
423
 
234
424
  The signature covers: `"<METHOD>:<path>:<timestamp>:<sha256(body)>"`
235
425
 
426
+ Manual usage (for custom integrations):
427
+
236
428
  ```typescript
429
+ import { signRequest } from 'basedagents';
430
+
237
431
  const headers = await signRequest(kp, 'POST', '/v1/verify/submit', body);
238
432
  // {
239
433
  // Authorization: 'AgentSig 4vJ8...:base64sig...',
@@ -243,10 +437,44 @@ const headers = await signRequest(kp, 'POST', '/v1/verify/submit', body);
243
437
 
244
438
  ---
245
439
 
440
+ ## Manifest Format
441
+
442
+ Agents can declare their profile in a `basedagents.json` file at the root of their repository:
443
+
444
+ ```json
445
+ {
446
+ "$schema": "https://basedagents.ai/schema/manifest/0.1.json",
447
+ "name": "MyAgent",
448
+ "version": "1.0.0",
449
+ "description": "Reviews TypeScript PRs for style and security issues.",
450
+ "capabilities": ["code-review", "security-scan"],
451
+ "protocols": ["https", "mcp"],
452
+ "contact_endpoint": "https://myagent.example.com/verify",
453
+ "homepage": "https://myagent.example.com",
454
+ "organization": "Acme Corp",
455
+ "skills": [
456
+ { "name": "typescript", "registry": "npm" },
457
+ { "name": "eslint", "registry": "npm" }
458
+ ],
459
+ "tags": ["typescript", "security"]
460
+ }
461
+ ```
462
+
463
+ Validate before registering:
464
+
465
+ ```bash
466
+ npx basedagents validate
467
+ ```
468
+
469
+ See the full [Manifest Specification](https://basedagents.ai/docs/manifest) for all available fields, types, and limits.
470
+
471
+ ---
472
+
246
473
  ## Links
247
474
 
248
475
  - **Registry**: [basedagents.ai](https://basedagents.ai)
249
- - **API docs**: [basedagents.ai/docs](https://basedagents.ai/docs)
476
+ - **API docs**: [basedagents.ai/docs](https://basedagents.ai/docs/getting-started)
477
+ - **Register**: [basedagents.ai/register](https://basedagents.ai/register)
250
478
  - **GitHub**: [github.com/maxfain/basedagents](https://github.com/maxfain/basedagents)
251
479
  - **API base URL**: `https://api.basedagents.ai`
252
480
 
@@ -254,4 +482,4 @@ const headers = await signRequest(kp, 'POST', '/v1/verify/submit', body);
254
482
 
255
483
  ## License
256
484
 
257
- Apache 2.0 — see [LICENSE](./LICENSE)
485
+ [Apache 2.0](./LICENSE)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwB1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B1C"}
package/dist/cli/index.js CHANGED
@@ -6,7 +6,8 @@
6
6
  * basedagents validate --help Show help
7
7
  */
8
8
  import { validate } from './validate.js';
9
- const VERSION = '0.1.3';
9
+ import { register } from './register.js';
10
+ const VERSION = '0.2.0';
10
11
  const HELP = `
11
12
  basedagents — CLI for the BasedAgents agent registry
12
13
 
@@ -14,17 +15,20 @@ Usage:
14
15
  basedagents <command> [options]
15
16
 
16
17
  Commands:
17
- validate [file] Validate a basedagents.json manifest
18
- Defaults to ./basedagents.json if no file given
18
+ register Interactive registration (prompts)
19
+ register --manifest <file> Non-interactive read profile from JSON file
20
+ validate [file] Validate a basedagents.json manifest
21
+ Defaults to ./basedagents.json if no file given
19
22
 
20
23
  Options:
21
24
  --version, -v Print version
22
25
  --help, -h Show this help message
23
26
 
24
27
  Examples:
25
- basedagents validate
26
- basedagents validate ./my-agent/basedagents.json
28
+ npx basedagents register
29
+ npx basedagents register --manifest ./basedagents.json
27
30
  npx basedagents validate
31
+ npx basedagents validate ./my-agent/basedagents.json
28
32
 
29
33
  Docs: https://basedagents.ai/docs
30
34
  `;
@@ -39,6 +43,10 @@ export async function main() {
39
43
  process.exit(0);
40
44
  }
41
45
  const command = args[0];
46
+ if (command === 'register') {
47
+ await register(args.slice(1));
48
+ return;
49
+ }
42
50
  if (command === 'validate') {
43
51
  const file = args[1] ?? 'basedagents.json';
44
52
  const result = validate(file);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;CAoBZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * basedagents register
3
+ *
4
+ * Interactive terminal flow for registering a new agent.
5
+ * Generates a keypair, prompts for profile info, solves PoW, and submits.
6
+ */
7
+ export declare function register(args: string[]): Promise<void>;
8
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/cli/register.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkKH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiM5D"}
@@ -0,0 +1,326 @@
1
+ /**
2
+ * basedagents register
3
+ *
4
+ * Interactive terminal flow for registering a new agent.
5
+ * Generates a keypair, prompts for profile info, solves PoW, and submits.
6
+ */
7
+ import { createInterface } from 'readline';
8
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
9
+ import { homedir } from 'os';
10
+ import { join } from 'path';
11
+ import { generateKeypair, serializeKeypair, publicKeyToAgentId, solveProofOfWorkAsync } from '../index.js';
12
+ import { RegistryClient } from '../index.js';
13
+ // ─── ANSI ───
14
+ const R = '\x1b[0m';
15
+ const bold = (s) => `\x1b[1m${s}${R}`;
16
+ const dim = (s) => `\x1b[2m${s}${R}`;
17
+ const red = (s) => `\x1b[31m${s}${R}`;
18
+ const yellow = (s) => `\x1b[33m${s}${R}`;
19
+ const green = (s) => `\x1b[32m${s}${R}`;
20
+ const cyan = (s) => `\x1b[36m${s}${R}`;
21
+ const API_URL = process.env.BASEDAGENTS_API_URL ?? 'https://api.basedagents.ai';
22
+ // ─── Readline helpers ───
23
+ function makeRl() {
24
+ return createInterface({ input: process.stdin, output: process.stdout });
25
+ }
26
+ function prompt(rl, question) {
27
+ return new Promise(resolve => rl.question(question, answer => resolve(answer.trim())));
28
+ }
29
+ async function ask(rl, label, defaultVal, required = false) {
30
+ const hint = defaultVal ? dim(` (${defaultVal})`) : required ? dim(' (required)') : dim(' (optional, Enter to skip)');
31
+ while (true) {
32
+ const answer = await prompt(rl, ` ${label}${hint}: `);
33
+ const value = answer || defaultVal || '';
34
+ if (required && !value) {
35
+ console.log(red(` → Required.`));
36
+ continue;
37
+ }
38
+ return value;
39
+ }
40
+ }
41
+ async function confirm(rl, question, defaultYes = true) {
42
+ const hint = defaultYes ? dim('Y/n') : dim('y/N');
43
+ const answer = await prompt(rl, ` ${question} [${hint}]: `);
44
+ if (!answer)
45
+ return defaultYes;
46
+ return answer.toLowerCase().startsWith('y');
47
+ }
48
+ // ─── PoW progress spinner ───
49
+ const SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
50
+ let spinnerIdx = 0;
51
+ function showProgress(attempts) {
52
+ const spin = SPINNER[spinnerIdx++ % SPINNER.length];
53
+ process.stdout.write(`\r ${spin} Solving proof-of-work... ${cyan(attempts.toLocaleString())} hashes`);
54
+ }
55
+ // ─── Slugify for filename ───
56
+ function slugify(s) {
57
+ return s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
58
+ }
59
+ // ─── Non-interactive manifest registration ───
60
+ async function registerFromManifest(manifestPath, apiUrl, dryRun) {
61
+ const { readFileSync } = await import('fs');
62
+ let raw;
63
+ try {
64
+ raw = JSON.parse(readFileSync(manifestPath, 'utf8'));
65
+ }
66
+ catch {
67
+ console.log(red(` ✗ Could not read manifest: ${manifestPath}`));
68
+ process.exit(1);
69
+ }
70
+ const m = raw;
71
+ const identity = (m.identity ?? m);
72
+ const name = String(identity.name ?? '');
73
+ const description = String(identity.description ?? '');
74
+ const capabilities = identity.capabilities ?? [];
75
+ const protocols = identity.protocols ?? ['https'];
76
+ const version = String(identity.version ?? '1.0.0');
77
+ const homepage = identity.homepage ? String(identity.homepage) : undefined;
78
+ const contactEndpoint = (identity.contact_endpoint ?? identity.contactEndpoint)
79
+ ? String(identity.contact_endpoint ?? identity.contactEndpoint)
80
+ : undefined;
81
+ const organization = identity.organization ? String(identity.organization) : undefined;
82
+ const skills = (identity.skills ?? [])
83
+ .map(s => ({ name: s.name, registry: (s.registry ?? 'npm') }));
84
+ const tags = identity.tags ?? [];
85
+ const offers = identity.offers ?? [];
86
+ const needs = identity.needs ?? [];
87
+ if (!name || !description || !capabilities.length) {
88
+ console.log(red(' ✗ Manifest must have name, description, and at least one capability.'));
89
+ process.exit(1);
90
+ }
91
+ console.log('');
92
+ console.log(bold('basedagents register') + dim(' --manifest'));
93
+ console.log('');
94
+ console.log(` ${dim('Name')} ${name}`);
95
+ console.log(` ${dim('Description')} ${description.slice(0, 70)}${description.length > 70 ? '…' : ''}`);
96
+ console.log(` ${dim('Capabilities')} ${capabilities.join(', ')}`);
97
+ console.log(` ${dim('Protocols')} ${protocols.join(', ')}`);
98
+ if (contactEndpoint)
99
+ console.log(` ${dim('Endpoint')} ${contactEndpoint}`);
100
+ console.log('');
101
+ if (dryRun) {
102
+ console.log(dim(' --dry-run: stopping here.\n'));
103
+ return;
104
+ }
105
+ // Keypair
106
+ process.stdout.write(' Generating Ed25519 keypair...');
107
+ const keypair = await generateKeypair();
108
+ const agentId = publicKeyToAgentId(keypair.publicKey);
109
+ console.log(` ${green('✓')}`);
110
+ const { mkdirSync, writeFileSync, existsSync } = await import('fs');
111
+ const { join } = await import('path');
112
+ const { homedir } = await import('os');
113
+ const keysDir = join(homedir(), '.basedagents', 'keys');
114
+ mkdirSync(keysDir, { recursive: true });
115
+ const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
116
+ let keypairPath = join(keysDir, `${slug}-keypair.json`);
117
+ let i = 2;
118
+ while (existsSync(keypairPath))
119
+ keypairPath = join(keysDir, `${slug}-${i++}-keypair.json`);
120
+ writeFileSync(keypairPath, serializeKeypair(keypair), { mode: 0o600 });
121
+ console.log(` ${green('✓')} Keypair → ${cyan(keypairPath)}`);
122
+ console.log(yellow(` ⚠ Back this up. Losing it = losing control of ${cyan(agentId)}`));
123
+ console.log('');
124
+ // PoW
125
+ const t0 = Date.now();
126
+ const { nonce } = await solveProofOfWorkAsync(keypair.publicKey, 22, { onProgress: showProgress });
127
+ const powMs = Date.now() - t0;
128
+ process.stdout.write(`\r ${green('✓')} Proof-of-work solved in ${cyan(Math.round(powMs / 1000) + 's')} \n`);
129
+ // Register
130
+ process.stdout.write(' Registering...');
131
+ const client = new RegistryClient(apiUrl);
132
+ const profile = {
133
+ name, description, capabilities, protocols, version,
134
+ ...(homepage ? { homepage } : {}),
135
+ ...(contactEndpoint ? { contact_endpoint: contactEndpoint } : {}),
136
+ ...(organization ? { organization } : {}),
137
+ ...(skills.length ? { skills } : {}),
138
+ ...(tags.length ? { tags } : {}),
139
+ ...(offers.length ? { offers } : {}),
140
+ ...(needs.length ? { needs } : {}),
141
+ };
142
+ const agent = await client.register(keypair, profile);
143
+ console.log(` ${green('✓')}`);
144
+ console.log('');
145
+ console.log(green(bold('✓ Registered!')));
146
+ console.log(` ${dim('Agent ID')} ${cyan(agent.id)}`);
147
+ console.log(` ${dim('Status')} ${agent.status}`);
148
+ console.log(` ${dim('Profile')} https://basedagents.ai/agents/${agent.id}`);
149
+ console.log(` ${dim('Keypair')} ${keypairPath}`);
150
+ console.log('');
151
+ }
152
+ // ─── Main register flow ───
153
+ export async function register(args) {
154
+ const apiUrl = args.includes('--api') ? args[args.indexOf('--api') + 1] : API_URL;
155
+ const dryRun = args.includes('--dry-run');
156
+ // Non-interactive manifest mode
157
+ const manifestIdx = args.indexOf('--manifest');
158
+ if (manifestIdx !== -1) {
159
+ const manifestPath = args[manifestIdx + 1];
160
+ if (!manifestPath || manifestPath.startsWith('--')) {
161
+ console.log(red('\n ✗ --manifest requires a file path\n'));
162
+ process.exit(1);
163
+ }
164
+ await registerFromManifest(manifestPath, apiUrl, dryRun);
165
+ return;
166
+ }
167
+ console.log('');
168
+ console.log(bold('basedagents register'));
169
+ console.log(dim('Register a new agent on basedagents.ai'));
170
+ console.log('');
171
+ const rl = makeRl();
172
+ try {
173
+ // ── Profile prompts ──
174
+ console.log(bold('Agent Profile'));
175
+ console.log(dim(' Required fields are marked. Everything else is optional but improves discoverability and reputation.'));
176
+ console.log('');
177
+ const name = await ask(rl, 'Agent name', undefined, true);
178
+ const description = await ask(rl, 'Description (what does this agent do?)', undefined, true);
179
+ console.log('');
180
+ console.log(dim(' Capabilities: comma-separated list of what your agent can do.'));
181
+ console.log(dim(` Known values: code-review, code-generation, analysis, reasoning, search,`));
182
+ console.log(dim(` planning, data-analysis, summarization, tool-use, web-search`));
183
+ const capInput = await ask(rl, 'Capabilities', undefined, true);
184
+ const capabilities = capInput.split(',').map(s => s.trim()).filter(Boolean);
185
+ console.log('');
186
+ console.log(dim(' Protocols: how your agent accepts connections.'));
187
+ console.log(dim(` Options: https, mcp, a2a, websocket, grpc, openapi`));
188
+ const protoInput = await ask(rl, 'Protocols', 'https');
189
+ const protocols = protoInput.split(',').map(s => s.trim()).filter(Boolean);
190
+ console.log('');
191
+ const homepage = await ask(rl, 'Homepage URL');
192
+ const contactEndpoint = await ask(rl, 'Verification endpoint URL');
193
+ if (!contactEndpoint) {
194
+ console.log(yellow(` ⚠ Without a contact endpoint your agent will stay in pending status.`));
195
+ console.log(yellow(` You can add it later with: ${cyan('client.updateProfile(kp, { contact_endpoint: "..." })')}`));
196
+ }
197
+ const organization = await ask(rl, 'Organization');
198
+ const version = await ask(rl, 'Version', '1.0.0');
199
+ console.log('');
200
+ console.log(dim(' Skills: npm/pypi/cargo packages your agent uses. Comma-separated.'));
201
+ console.log(dim(' Example: typescript, zod, langchain'));
202
+ console.log(dim(' These feed your Skill Trust reputation score (15% of total).'));
203
+ const skillsInput = await ask(rl, 'Skills');
204
+ const skills = skillsInput
205
+ ? skillsInput.split(',').map(s => {
206
+ const trimmed = s.trim();
207
+ // detect registry prefix like "pypi:langchain"
208
+ const colonIdx = trimmed.indexOf(':');
209
+ if (colonIdx > 0) {
210
+ return { name: trimmed.slice(colonIdx + 1), registry: trimmed.slice(0, colonIdx) };
211
+ }
212
+ return { name: trimmed, registry: 'npm' };
213
+ }).filter(s => s.name)
214
+ : [];
215
+ // ── Summary ──
216
+ console.log('');
217
+ console.log('─'.repeat(52));
218
+ console.log(bold('Summary'));
219
+ console.log('─'.repeat(52));
220
+ const rows = [
221
+ ['Name', name],
222
+ ['Description', description.length > 60 ? description.slice(0, 60) + '…' : description],
223
+ ['Capabilities', capabilities.join(', ')],
224
+ ['Protocols', protocols.join(', ')],
225
+ ...(homepage ? [['Homepage', homepage]] : []),
226
+ ...(contactEndpoint ? [['Endpoint', contactEndpoint]] : []),
227
+ ...(organization ? [['Org', organization]] : []),
228
+ ['Version', version],
229
+ ...(skills.length ? [['Skills', skills.map(s => `${s.registry}:${s.name}`).join(', ')]] : []),
230
+ ];
231
+ for (const [k, v] of rows) {
232
+ console.log(` ${dim(k.padEnd(14))} ${v}`);
233
+ }
234
+ console.log('─'.repeat(52));
235
+ console.log('');
236
+ const proceed = await confirm(rl, 'Register this agent?');
237
+ if (!proceed) {
238
+ console.log(dim('\n Aborted.\n'));
239
+ rl.close();
240
+ return;
241
+ }
242
+ // ── Keypair ──
243
+ console.log('');
244
+ process.stdout.write(' Generating Ed25519 keypair...');
245
+ const keypair = await generateKeypair();
246
+ const agentId = publicKeyToAgentId(keypair.publicKey);
247
+ console.log(` ${green('✓')}`);
248
+ // Save keypair
249
+ const keysDir = join(homedir(), '.basedagents', 'keys');
250
+ mkdirSync(keysDir, { recursive: true });
251
+ const slug = slugify(name);
252
+ let keypairPath = join(keysDir, `${slug}-keypair.json`);
253
+ // avoid collision
254
+ let i = 2;
255
+ while (existsSync(keypairPath)) {
256
+ keypairPath = join(keysDir, `${slug}-${i++}-keypair.json`);
257
+ }
258
+ writeFileSync(keypairPath, serializeKeypair(keypair), { mode: 0o600 });
259
+ console.log(` ${green('✓')} Keypair saved to ${cyan(keypairPath)}`);
260
+ console.log('');
261
+ console.log(yellow(` ⚠ Back this file up. It is your agent's private key.`));
262
+ console.log(yellow(` Losing it means losing control of ${cyan(agentId)}`));
263
+ console.log('');
264
+ if (dryRun) {
265
+ console.log(dim(' --dry-run: skipping registration.\n'));
266
+ rl.close();
267
+ return;
268
+ }
269
+ // ── Proof-of-Work ──
270
+ const t0 = Date.now();
271
+ const { nonce } = await solveProofOfWorkAsync(keypair.publicKey, 22, { onProgress: showProgress });
272
+ const powMs = Date.now() - t0;
273
+ process.stdout.write(`\r ${green('✓')} Proof-of-work solved in ${cyan(Math.round(powMs / 1000) + 's')} (${cyan(nonce)}) \n`);
274
+ // ── Register ──
275
+ process.stdout.write(' Registering with basedagents.ai...');
276
+ const client = new RegistryClient(apiUrl);
277
+ const profile = {
278
+ name,
279
+ description,
280
+ capabilities,
281
+ protocols,
282
+ ...(homepage ? { homepage } : {}),
283
+ ...(contactEndpoint ? { contact_endpoint: contactEndpoint } : {}),
284
+ ...(organization ? { organization } : {}),
285
+ version,
286
+ ...(skills.length ? { skills } : {}),
287
+ };
288
+ const agent = await client.register(keypair, profile);
289
+ console.log(` ${green('✓')}`);
290
+ // ── Success ──
291
+ console.log('');
292
+ console.log('─'.repeat(52));
293
+ console.log(green(bold('✓ Agent registered!')));
294
+ console.log('─'.repeat(52));
295
+ console.log(` ${dim('Agent ID')} ${cyan(agent.id)}`);
296
+ console.log(` ${dim('Status')} ${agent.status}`);
297
+ console.log(` ${dim('Keypair')} ${keypairPath}`);
298
+ console.log(` ${dim('Profile')} https://basedagents.ai/agents/${agent.id}`);
299
+ console.log('─'.repeat(52));
300
+ console.log('');
301
+ if (agent.status === 'pending') {
302
+ console.log(dim(' Next steps:'));
303
+ if (!contactEndpoint) {
304
+ console.log(dim(' 1. Set a contact endpoint so the registry can verify your agent:'));
305
+ console.log(` ${cyan(`npx basedagents update --contact-endpoint https://your-agent.example.com/verify`)}`);
306
+ }
307
+ else {
308
+ console.log(dim(' 1. Your agent will be probed automatically within 5 minutes.'));
309
+ console.log(dim(' Make sure your endpoint is reachable and returns 2xx.'));
310
+ }
311
+ console.log(dim(' 2. Once verified, status flips to active and you appear in the directory.'));
312
+ }
313
+ console.log('');
314
+ }
315
+ catch (err) {
316
+ console.log('');
317
+ const msg = err instanceof Error ? err.message : String(err);
318
+ console.log(red(` ✗ Registration failed: ${msg}`));
319
+ console.log('');
320
+ process.exit(1);
321
+ }
322
+ finally {
323
+ rl.close();
324
+ }
325
+ }
326
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/cli/register.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "basedagents",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "SDK for the BasedAgents identity and reputation registry — register AI agents, sign requests, search the registry, and submit verifications",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",