adp-agent 0.2.1 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"start-mcp.js","sourceRoot":"","sources":["../start-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start-mcp.js","sourceRoot":"","sources":["../start-mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export {};
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  const relay_1 = require("./src/relay");
@@ -1 +1 @@
1
- {"version":3,"file":"start-relay.js","sourceRoot":"","sources":["../start-relay.ts"],"names":[],"mappings":";;AAAA,uCAAoC;AAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;AAC/E,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3H,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5I,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AACzI,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;AACrI,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;AAEzI,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;IACtB,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;CACnB,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC;;;;UAIF,IAAI,IAAI,IAAI;;gBAEN,mBAAmB,GAAG,IAAI,gBAAgB,kBAAkB,GAAG,IAAI;oBAC/D,eAAe,GAAG,QAAQ,OAAO,kBAAkB;;CAEtE,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"start-relay.js","sourceRoot":"","sources":["../start-relay.ts"],"names":[],"mappings":";;;AAEA,uCAAoC;AAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;AAC/E,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3H,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5I,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AACzI,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;AACrI,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;AAEzI,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;IACtB,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;CACnB,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC;;;;UAIF,IAAI,IAAI,IAAI;;gBAEN,mBAAmB,GAAG,IAAI,gBAAgB,kBAAkB,GAAG,IAAI;oBAC/D,eAAe,GAAG,QAAQ,OAAO,kBAAkB;;CAEtE,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "adp-agent",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Agent Discovery Protocol (ADP) - discover, query, and ping agents via MCP / OpenClaw",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
7
7
  "bin": {
8
- "adp": "dist/start-mcp.js"
8
+ "adp-agent": "dist/start-mcp.js",
9
+ "adp-registry": "dist/start-registry.js",
10
+ "adp-relay": "dist/start-relay.js"
9
11
  },
10
12
  "files": [
11
13
  "dist/",
package/skill/SKILL.md CHANGED
@@ -353,10 +353,12 @@ await server.start();
353
353
 
354
354
  ### Pattern 5: Webhook Mode (for non-WebSocket frameworks)
355
355
 
356
- For agent frameworks that don't support WebSocket, use ADP's webhook communication mode.
356
+ For agent frameworks that don't support WebSocket, use ADP's webhook communication mode. Webhooks are ideal for long-running async tasks where the result is delivered later.
357
+
358
+ #### 5.1 Configure Gateway with Webhook
357
359
 
358
360
  ```typescript
359
- import { Gateway, loadOrCreateIdentity } from 'adp-agent';
361
+ import { Gateway, loadOrCreateIdentity, signEnvelope, canonicalize, generateMessageId } from 'adp-agent';
360
362
 
361
363
  const { identity } = loadOrCreateIdentity('myapp', 'webhook-agent', 'WebhookAgent');
362
364
 
@@ -365,9 +367,199 @@ const gateway = new Gateway({
365
367
  secretKey: identity.secretKey,
366
368
  agentId: identity.agentId,
367
369
  displayName: 'Webhook Agent',
368
- capabilities: ['adp:ping', 'adp:capability.query', 'custom:my-action'],
370
+ capabilities: [
371
+ 'adp:ping',
372
+ 'adp:capability.query',
373
+ {
374
+ capability: 'custom:video.generate',
375
+ description: 'Generate video (async task)',
376
+ async: true,
377
+ preferredMode: 'webhook',
378
+ },
379
+ ],
369
380
  communication: {
370
381
  mode: 'webhook',
382
+ webhook: {
383
+ enabled: true,
384
+ url: 'https://my-agent.example.com/webhook/adp',
385
+ secret: 'your-webhook-secret',
386
+ timeout: 30000,
387
+ retry: {
388
+ maxAttempts: 3,
389
+ backoffMs: 1000,
390
+ },
391
+ },
392
+ },
393
+ customHandlers: {
394
+ 'custom:video.generate': async (ws, envelope) => {
395
+ const params = envelope.params as { prompt?: string; duration?: number };
396
+
397
+ console.log('Starting video generation...');
398
+
399
+ // Simulate async work
400
+ await new Promise(resolve => setTimeout(resolve, 5000));
401
+
402
+ const reply = signEnvelope({
403
+ protocol: 'adp/0.2',
404
+ id: generateMessageId(),
405
+ from: identity.agentId,
406
+ to: envelope.from,
407
+ action: 'custom:video.generate',
408
+ params: {
409
+ task_id: envelope.params?.task_id,
410
+ status: 'COMPLETED',
411
+ result: {
412
+ video_url: 'https://cdn.example.com/video.mp4',
413
+ thumbnail_url: 'https://cdn.example.com/thumb.jpg',
414
+ },
415
+ },
416
+ reply_to: envelope.id,
417
+ timestamp: new Date().toISOString(),
418
+ }, identity.secretKey, canonicalize);
419
+
420
+ ws.send(JSON.stringify(reply));
421
+ },
422
+ },
423
+ });
424
+ ```
425
+
426
+ #### 5.2 Receive Webhook Callbacks
427
+
428
+ Your agent framework needs an HTTP endpoint to receive webhook callbacks:
429
+
430
+ ```typescript
431
+ import * as http from 'http';
432
+ import { WebhookClient, WebhookPayload, WebhookEvent } from 'adp-agent';
433
+
434
+ interface WebhookPayload {
435
+ event: WebhookEvent;
436
+ task_id: string;
437
+ agent_id: string;
438
+ timestamp: string;
439
+ signature: string;
440
+ data: {
441
+ result?: unknown;
442
+ error?: { code: string; message: string };
443
+ progress?: { current: number; total: number; message: string };
444
+ };
445
+ }
446
+
447
+ function startWebhookServer(port: number) {
448
+ const server = http.createServer((req, res) => {
449
+ if (req.method === 'POST' && req.url === '/webhook/adp') {
450
+ let body = '';
451
+ req.on('data', chunk => { body += chunk.toString(); });
452
+ req.on('end', () => {
453
+ try {
454
+ const payload = JSON.parse(body) as WebhookPayload;
455
+
456
+ console.log(`Received webhook: ${payload.event}`);
457
+ console.log(`Task ID: ${payload.task_id}`);
458
+ console.log(`Data:`, payload.data);
459
+
460
+ // Handle different event types
461
+ switch (payload.event) {
462
+ case 'task.completed':
463
+ console.log('Task completed successfully!');
464
+ break;
465
+ case 'task.failed':
466
+ console.error('Task failed:', payload.data.error);
467
+ break;
468
+ case 'task.progress':
469
+ console.log('Task progress:', payload.data.progress);
470
+ break;
471
+ }
472
+
473
+ res.writeHead(200, { 'Content-Type': 'application/json' });
474
+ res.end(JSON.stringify({ status: 'ok' }));
475
+ } catch (error) {
476
+ console.error('Failed to parse webhook:', error);
477
+ res.writeHead(400);
478
+ res.end('Invalid JSON');
479
+ }
480
+ });
481
+ } else {
482
+ res.writeHead(404);
483
+ res.end();
484
+ }
485
+ });
486
+
487
+ server.listen(port, () => {
488
+ console.log(`Webhook server listening on port ${port}`);
489
+ });
490
+ }
491
+
492
+ startWebhookServer(8080);
493
+ ```
494
+
495
+ #### 5.3 Verify Webhook Signatures
496
+
497
+ For security, always verify webhook signatures:
498
+
499
+ ```typescript
500
+ import { WebhookClient, WebhookPayload } from 'adp-agent';
501
+ import { loadIdentity } from 'adp-agent';
502
+
503
+ function verifyWebhook(payload: WebhookPayload, agentId: string): boolean {
504
+ // Load the sender's public key from their agent ID
505
+ const identity = loadIdentity('namespace', 'agent-name', 'tag');
506
+ if (!identity) {
507
+ console.error('Unknown agent');
508
+ return false;
509
+ }
510
+
511
+ const isValid = WebhookClient.verifyWebhookSignature(payload, identity.publicKey);
512
+
513
+ if (!isValid) {
514
+ console.error('Invalid webhook signature!');
515
+ return false;
516
+ }
517
+
518
+ console.log('Webhook signature verified');
519
+ return true;
520
+ }
521
+
522
+ // Usage in webhook handler:
523
+ const payload = JSON.parse(body) as WebhookPayload;
524
+ if (verifyWebhook(payload, payload.agent_id)) {
525
+ // Process the webhook
526
+ }
527
+ ```
528
+
529
+ #### 5.4 Webhook Events
530
+
531
+ | Event | Description | Data Structure |
532
+ |-------|-------------|----------------|
533
+ | `task.completed` | Task finished successfully | `{ result: T }` |
534
+ | `task.failed` | Task failed with error | `{ error: { code, message } }` |
535
+ | `task.progress` | Task progress update | `{ progress: { current, total, message } }` |
536
+
537
+ #### 5.5 Hybrid Mode (WebSocket + Webhook)
538
+
539
+ Use hybrid mode for best of both worlds — sync responses via WebSocket, async callbacks via webhook:
540
+
541
+ ```typescript
542
+ const gateway = new Gateway({
543
+ port: 9900,
544
+ secretKey: identity.secretKey,
545
+ agentId: identity.agentId,
546
+ displayName: 'Hybrid Agent',
547
+ capabilities: [
548
+ {
549
+ capability: 'custom:quick.action',
550
+ description: 'Fast sync action',
551
+ async: false,
552
+ preferredMode: 'websocket',
553
+ },
554
+ {
555
+ capability: 'custom:long.task',
556
+ description: 'Long async task',
557
+ async: true,
558
+ preferredMode: 'webhook',
559
+ },
560
+ ],
561
+ communication: {
562
+ mode: 'hybrid',
371
563
  webhook: {
372
564
  enabled: true,
373
565
  url: 'https://my-agent.example.com/webhook/adp',