adp-agent 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -0
  3. package/config.example.json +32 -0
  4. package/dist/agent-id.d.ts +9 -0
  5. package/dist/agent-id.js +118 -0
  6. package/dist/agent-id.js.map +1 -0
  7. package/dist/agent-id.test.d.ts +1 -0
  8. package/dist/agent-id.test.js +36 -0
  9. package/dist/agent-id.test.js.map +1 -0
  10. package/dist/canonical.d.ts +5 -0
  11. package/dist/canonical.js +35 -0
  12. package/dist/canonical.js.map +1 -0
  13. package/dist/canonical.test.d.ts +1 -0
  14. package/dist/canonical.test.js +33 -0
  15. package/dist/canonical.test.js.map +1 -0
  16. package/dist/capability-test.d.ts +1 -0
  17. package/dist/capability-test.js +108 -0
  18. package/dist/capability-test.js.map +1 -0
  19. package/dist/chat.d.ts +1 -0
  20. package/dist/chat.js +166 -0
  21. package/dist/chat.js.map +1 -0
  22. package/dist/contacts-test.d.ts +1 -0
  23. package/dist/contacts-test.js +225 -0
  24. package/dist/contacts-test.js.map +1 -0
  25. package/dist/crypto.d.ts +11 -0
  26. package/dist/crypto.js +103 -0
  27. package/dist/crypto.js.map +1 -0
  28. package/dist/crypto.test.d.ts +1 -0
  29. package/dist/crypto.test.js +40 -0
  30. package/dist/crypto.test.js.map +1 -0
  31. package/dist/discovery.d.ts +36 -0
  32. package/dist/discovery.js +291 -0
  33. package/dist/discovery.js.map +1 -0
  34. package/dist/envelope.d.ts +42 -0
  35. package/dist/envelope.js +58 -0
  36. package/dist/envelope.js.map +1 -0
  37. package/dist/gateway.d.ts +44 -0
  38. package/dist/gateway.js +255 -0
  39. package/dist/gateway.js.map +1 -0
  40. package/dist/index.d.ts +33 -0
  41. package/dist/index.js +75 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/integration-test.d.ts +1 -0
  44. package/dist/integration-test.js +206 -0
  45. package/dist/integration-test.js.map +1 -0
  46. package/dist/key-store.d.ts +10 -0
  47. package/dist/key-store.js +81 -0
  48. package/dist/key-store.js.map +1 -0
  49. package/dist/manifest.d.ts +35 -0
  50. package/dist/manifest.js +24 -0
  51. package/dist/manifest.js.map +1 -0
  52. package/dist/mdns-test.d.ts +1 -0
  53. package/dist/mdns-test.js +93 -0
  54. package/dist/mdns-test.js.map +1 -0
  55. package/dist/relay-peer-test.d.ts +1 -0
  56. package/dist/relay-peer-test.js +220 -0
  57. package/dist/relay-peer-test.js.map +1 -0
  58. package/dist/relay-test.d.ts +1 -0
  59. package/dist/relay-test.js +92 -0
  60. package/dist/relay-test.js.map +1 -0
  61. package/dist/relay.d.ts +60 -0
  62. package/dist/relay.js +277 -0
  63. package/dist/relay.js.map +1 -0
  64. package/dist/src/agent-id.d.ts +9 -0
  65. package/dist/src/agent-id.js +44 -0
  66. package/dist/src/agent-id.js.map +1 -0
  67. package/dist/src/agent-id.test.d.ts +1 -0
  68. package/dist/src/agent-id.test.js +36 -0
  69. package/dist/src/agent-id.test.js.map +1 -0
  70. package/dist/src/canonical.d.ts +5 -0
  71. package/dist/src/canonical.js +37 -0
  72. package/dist/src/canonical.js.map +1 -0
  73. package/dist/src/canonical.test.d.ts +1 -0
  74. package/dist/src/canonical.test.js +33 -0
  75. package/dist/src/canonical.test.js.map +1 -0
  76. package/dist/src/capabilities.d.ts +3 -0
  77. package/dist/src/capabilities.js +39 -0
  78. package/dist/src/capabilities.js.map +1 -0
  79. package/dist/src/config.d.ts +35 -0
  80. package/dist/src/config.js +3 -0
  81. package/dist/src/config.js.map +1 -0
  82. package/dist/src/contacts.d.ts +28 -0
  83. package/dist/src/contacts.js +118 -0
  84. package/dist/src/contacts.js.map +1 -0
  85. package/dist/src/crypto.d.ts +11 -0
  86. package/dist/src/crypto.js +83 -0
  87. package/dist/src/crypto.js.map +1 -0
  88. package/dist/src/crypto.test.d.ts +1 -0
  89. package/dist/src/crypto.test.js +40 -0
  90. package/dist/src/crypto.test.js.map +1 -0
  91. package/dist/src/discovery.d.ts +39 -0
  92. package/dist/src/discovery.js +317 -0
  93. package/dist/src/discovery.js.map +1 -0
  94. package/dist/src/envelope.d.ts +55 -0
  95. package/dist/src/envelope.js +95 -0
  96. package/dist/src/envelope.js.map +1 -0
  97. package/dist/src/gateway.d.ts +78 -0
  98. package/dist/src/gateway.js +540 -0
  99. package/dist/src/gateway.js.map +1 -0
  100. package/dist/src/index.d.ts +22 -0
  101. package/dist/src/index.js +81 -0
  102. package/dist/src/index.js.map +1 -0
  103. package/dist/src/key-rotation.d.ts +27 -0
  104. package/dist/src/key-rotation.js +41 -0
  105. package/dist/src/key-rotation.js.map +1 -0
  106. package/dist/src/key-store.d.ts +10 -0
  107. package/dist/src/key-store.js +81 -0
  108. package/dist/src/key-store.js.map +1 -0
  109. package/dist/src/logger.d.ts +9 -0
  110. package/dist/src/logger.js +18 -0
  111. package/dist/src/logger.js.map +1 -0
  112. package/dist/src/manifest.d.ts +37 -0
  113. package/dist/src/manifest.js +24 -0
  114. package/dist/src/manifest.js.map +1 -0
  115. package/dist/src/mcp-server.d.ts +38 -0
  116. package/dist/src/mcp-server.js +408 -0
  117. package/dist/src/mcp-server.js.map +1 -0
  118. package/dist/src/net-utils.d.ts +3 -0
  119. package/dist/src/net-utils.js +71 -0
  120. package/dist/src/net-utils.js.map +1 -0
  121. package/dist/src/registry/cache.d.ts +12 -0
  122. package/dist/src/registry/cache.js +45 -0
  123. package/dist/src/registry/cache.js.map +1 -0
  124. package/dist/src/registry/client.d.ts +43 -0
  125. package/dist/src/registry/client.js +245 -0
  126. package/dist/src/registry/client.js.map +1 -0
  127. package/dist/src/registry/config.d.ts +32 -0
  128. package/dist/src/registry/config.js +79 -0
  129. package/dist/src/registry/config.js.map +1 -0
  130. package/dist/src/registry/db.d.ts +10 -0
  131. package/dist/src/registry/db.js +97 -0
  132. package/dist/src/registry/db.js.map +1 -0
  133. package/dist/src/registry/index.d.ts +5 -0
  134. package/dist/src/registry/index.js +22 -0
  135. package/dist/src/registry/index.js.map +1 -0
  136. package/dist/src/registry/service.d.ts +45 -0
  137. package/dist/src/registry/service.js +802 -0
  138. package/dist/src/registry/service.js.map +1 -0
  139. package/dist/src/relay.d.ts +69 -0
  140. package/dist/src/relay.js +399 -0
  141. package/dist/src/relay.js.map +1 -0
  142. package/dist/src/task-manager.d.ts +55 -0
  143. package/dist/src/task-manager.js +150 -0
  144. package/dist/src/task-manager.js.map +1 -0
  145. package/dist/src/trust-store.d.ts +24 -0
  146. package/dist/src/trust-store.js +144 -0
  147. package/dist/src/trust-store.js.map +1 -0
  148. package/dist/src/webhook-client.d.ts +30 -0
  149. package/dist/src/webhook-client.js +78 -0
  150. package/dist/src/webhook-client.js.map +1 -0
  151. package/dist/start-mcp.d.ts +2 -0
  152. package/dist/start-mcp.js +126 -0
  153. package/dist/start-mcp.js.map +1 -0
  154. package/dist/start-registry.d.ts +2 -0
  155. package/dist/start-registry.js +33 -0
  156. package/dist/start-registry.js.map +1 -0
  157. package/dist/start-relay.d.ts +1 -0
  158. package/dist/start-relay.js +35 -0
  159. package/dist/start-relay.js.map +1 -0
  160. package/dist/start.d.ts +1 -0
  161. package/dist/start.js +364 -0
  162. package/dist/start.js.map +1 -0
  163. package/dist/task-manager.d.ts +55 -0
  164. package/dist/task-manager.js +145 -0
  165. package/dist/task-manager.js.map +1 -0
  166. package/dist/task-test.d.ts +1 -0
  167. package/dist/task-test.js +188 -0
  168. package/dist/task-test.js.map +1 -0
  169. package/dist/test-auth.d.ts +1 -0
  170. package/dist/test-auth.js +166 -0
  171. package/dist/test-auth.js.map +1 -0
  172. package/dist/test-key-rotation.d.ts +2 -0
  173. package/dist/test-key-rotation.js +114 -0
  174. package/dist/test-key-rotation.js.map +1 -0
  175. package/dist/test-registry.d.ts +2 -0
  176. package/dist/test-registry.js +123 -0
  177. package/dist/test-registry.js.map +1 -0
  178. package/dist/trust-store.d.ts +23 -0
  179. package/dist/trust-store.js +111 -0
  180. package/dist/trust-store.js.map +1 -0
  181. package/package.json +96 -0
  182. package/schema.sql +54 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskManager = void 0;
4
+ const envelope_1 = require("./envelope");
5
+ const crypto_1 = require("./crypto");
6
+ const canonical_1 = require("./canonical");
7
+ const crypto_2 = require("crypto");
8
+ class TaskManager {
9
+ constructor() {
10
+ this.tasks = new Map();
11
+ }
12
+ create(capability, input) {
13
+ const taskId = 'task_' + (0, crypto_2.randomBytes)(8).toString('base64url');
14
+ const now = new Date().toISOString();
15
+ const task = {
16
+ taskId,
17
+ status: 'PENDING',
18
+ capability,
19
+ input,
20
+ createdAt: now,
21
+ updatedAt: now,
22
+ };
23
+ this.tasks.set(taskId, task);
24
+ return task;
25
+ }
26
+ start(taskId) {
27
+ const task = this.tasks.get(taskId);
28
+ if (!task)
29
+ throw new Error('Task not found');
30
+ if (task.status !== 'PENDING') {
31
+ throw new Error(`Cannot start task in ${task.status} status`);
32
+ }
33
+ task.status = 'WORKING';
34
+ task.updatedAt = new Date().toISOString();
35
+ return task;
36
+ }
37
+ complete(taskId, result) {
38
+ const task = this.tasks.get(taskId);
39
+ if (!task)
40
+ throw new Error('Task not found');
41
+ if (task.status !== 'WORKING') {
42
+ throw new Error(`Cannot complete task in ${task.status} status`);
43
+ }
44
+ task.status = 'COMPLETED';
45
+ task.result = result;
46
+ task.updatedAt = new Date().toISOString();
47
+ return task;
48
+ }
49
+ fail(taskId, error) {
50
+ const task = this.tasks.get(taskId);
51
+ if (!task)
52
+ throw new Error('Task not found');
53
+ if (task.status !== 'WORKING') {
54
+ throw new Error(`Cannot fail task in ${task.status} status`);
55
+ }
56
+ task.status = 'FAILED';
57
+ task.error = error;
58
+ task.updatedAt = new Date().toISOString();
59
+ return task;
60
+ }
61
+ cancel(taskId) {
62
+ const task = this.tasks.get(taskId);
63
+ if (!task)
64
+ throw new Error('Task not found');
65
+ if (task.status === 'COMPLETED' || task.status === 'FAILED' || task.status === 'CANCELED') {
66
+ throw new Error(`Cannot cancel task in ${task.status} status`);
67
+ }
68
+ task.status = 'CANCELED';
69
+ task.updatedAt = new Date().toISOString();
70
+ return task;
71
+ }
72
+ get(taskId) {
73
+ return this.tasks.get(taskId);
74
+ }
75
+ list(filter) {
76
+ let tasks = Array.from(this.tasks.values());
77
+ if (filter?.status) {
78
+ tasks = tasks.filter((t) => t.status === filter.status);
79
+ }
80
+ tasks.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
81
+ const limit = filter?.limit ?? 20;
82
+ let start = 0;
83
+ if (filter?.cursor) {
84
+ const cursorIdx = tasks.findIndex(t => t.taskId === filter.cursor);
85
+ start = cursorIdx >= 0 ? cursorIdx + 1 : 0;
86
+ }
87
+ const page = tasks.slice(start, start + limit);
88
+ const nextCursor = start + limit < tasks.length ? page[page.length - 1].taskId : null;
89
+ return { tasks: page, nextCursor };
90
+ }
91
+ async handleCreateTask(envelope, secretKey) {
92
+ const params = envelope.params;
93
+ const task = this.create(params.capability, params.input);
94
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.create', {
95
+ task_id: task.taskId,
96
+ status: task.status,
97
+ }, { reply_to: envelope.id });
98
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
99
+ }
100
+ async handleGetTask(envelope, secretKey) {
101
+ const params = envelope.params;
102
+ const task = this.get(params.task_id);
103
+ if (!task) {
104
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.get', {}, {
105
+ reply_to: envelope.id,
106
+ error: { code: 'AGENT_NOT_FOUND', message: 'Task not found' },
107
+ });
108
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
109
+ }
110
+ const result = {
111
+ task_id: task.taskId,
112
+ status: task.status,
113
+ result: task.result,
114
+ error: task.error,
115
+ created_at: task.createdAt,
116
+ updated_at: task.updatedAt,
117
+ };
118
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.get', result, { reply_to: envelope.id });
119
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
120
+ }
121
+ async handleListTasks(envelope, secretKey) {
122
+ const params = envelope.params;
123
+ const { tasks, nextCursor } = this.list(params);
124
+ const taskSummaries = tasks.map((task) => ({
125
+ task_id: task.taskId,
126
+ status: task.status,
127
+ capability: task.capability,
128
+ created_at: task.createdAt,
129
+ }));
130
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.list', { tasks: taskSummaries, next_cursor: nextCursor }, { reply_to: envelope.id });
131
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
132
+ }
133
+ async handleCancelTask(envelope, secretKey) {
134
+ const params = envelope.params;
135
+ try {
136
+ const task = this.cancel(params.task_id);
137
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.cancel', { task_id: task.taskId, status: task.status }, { reply_to: envelope.id });
138
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
139
+ }
140
+ catch (err) {
141
+ const reply = (0, envelope_1.buildEnvelope)(envelope.to, envelope.from, 'adp:task.cancel', {}, {
142
+ reply_to: envelope.id,
143
+ error: { code: 'INTERNAL_ERROR', message: err.message },
144
+ });
145
+ return (0, crypto_1.signEnvelope)(reply, secretKey, canonical_1.canonicalize);
146
+ }
147
+ }
148
+ }
149
+ exports.TaskManager = TaskManager;
150
+ //# sourceMappingURL=task-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ interface TrustRecord {
2
+ public_key: string;
3
+ first_seen: string;
4
+ last_verified: string;
5
+ origin: 'tofu' | 'pinned' | 'rotation';
6
+ verified_by: string[];
7
+ superseded_by: string | null;
8
+ }
9
+ export declare class TrustStore {
10
+ private data;
11
+ private filePath;
12
+ private inMemory;
13
+ constructor(filePath?: string);
14
+ load(): Promise<void>;
15
+ save(): Promise<void>;
16
+ has(agentId: string): boolean;
17
+ pin(agentId: string, publicKey: Uint8Array, origin: TrustRecord['origin'], verifiedBy?: string[]): boolean;
18
+ getPublicKey(agentId: string): Uint8Array | null;
19
+ updateLastVerified(agentId: string): void;
20
+ addRotation(oldAgentId: string, newAgentId: string, publicKey: Uint8Array): void;
21
+ hasConflict(agentId: string, publicKey: Uint8Array): boolean;
22
+ getRecord(agentId: string): TrustRecord | undefined;
23
+ }
24
+ export {};
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TrustStore = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os_1 = require("os");
40
+ const crypto_1 = require("./crypto");
41
+ const logger_1 = require("./logger");
42
+ class TrustStore {
43
+ constructor(filePath) {
44
+ this.data = {};
45
+ this.inMemory = filePath === ':memory:';
46
+ this.filePath = filePath || path.join((0, os_1.homedir)(), '.adp', 'trust_store.json');
47
+ }
48
+ async load() {
49
+ if (this.inMemory)
50
+ return;
51
+ try {
52
+ const content = await fs.promises.readFile(this.filePath, 'utf-8');
53
+ this.data = JSON.parse(content);
54
+ }
55
+ catch {
56
+ this.data = {};
57
+ }
58
+ }
59
+ async save() {
60
+ if (this.inMemory)
61
+ return;
62
+ const dir = path.dirname(this.filePath);
63
+ await fs.promises.mkdir(dir, { recursive: true });
64
+ await fs.promises.writeFile(this.filePath, JSON.stringify(this.data, null, 2));
65
+ }
66
+ has(agentId) {
67
+ return agentId in this.data;
68
+ }
69
+ pin(agentId, publicKey, origin, verifiedBy = ['tofu_single']) {
70
+ const encodedKey = (0, crypto_1.encodeBase64URL)(publicKey);
71
+ if (this.data[agentId]) {
72
+ if (this.data[agentId].public_key !== encodedKey) {
73
+ (0, logger_1.getLogger)().error(`[ADP TrustStore] KEY MISMATCH: refusing to overwrite ${agentId} ` +
74
+ `(existing ${this.data[agentId].origin} → requested ${origin}). ` +
75
+ `Existing key: ${this.data[agentId].public_key.slice(0, 12)}..., ` +
76
+ `New key: ${encodedKey.slice(0, 12)}...`);
77
+ return false;
78
+ }
79
+ if (origin !== 'tofu') {
80
+ this.data[agentId].origin = origin;
81
+ }
82
+ }
83
+ else {
84
+ this.data[agentId] = {
85
+ public_key: encodedKey,
86
+ first_seen: new Date().toISOString(),
87
+ last_verified: new Date().toISOString(),
88
+ origin,
89
+ verified_by: verifiedBy,
90
+ superseded_by: null,
91
+ };
92
+ }
93
+ return true;
94
+ }
95
+ getPublicKey(agentId) {
96
+ if (!(agentId in this.data)) {
97
+ return null;
98
+ }
99
+ const visited = new Set();
100
+ let current = agentId;
101
+ while (current in this.data) {
102
+ if (visited.has(current)) {
103
+ (0, logger_1.getLogger)().warn('[ADP TrustStore] Rotation cycle detected for:', agentId);
104
+ return null;
105
+ }
106
+ visited.add(current);
107
+ const record = this.data[current];
108
+ if (!record.superseded_by) {
109
+ return (0, crypto_1.decodeBase64URL)(record.public_key);
110
+ }
111
+ current = record.superseded_by;
112
+ }
113
+ return null;
114
+ }
115
+ updateLastVerified(agentId) {
116
+ if (this.data[agentId]) {
117
+ this.data[agentId].last_verified = new Date().toISOString();
118
+ }
119
+ }
120
+ addRotation(oldAgentId, newAgentId, publicKey) {
121
+ if (this.data[oldAgentId]) {
122
+ this.data[oldAgentId].superseded_by = newAgentId;
123
+ }
124
+ this.data[newAgentId] = {
125
+ public_key: (0, crypto_1.encodeBase64URL)(publicKey),
126
+ first_seen: new Date().toISOString(),
127
+ last_verified: new Date().toISOString(),
128
+ origin: 'rotation',
129
+ verified_by: ['rotation'],
130
+ superseded_by: null,
131
+ };
132
+ }
133
+ hasConflict(agentId, publicKey) {
134
+ const existing = this.getPublicKey(agentId);
135
+ if (!existing)
136
+ return false;
137
+ return !Buffer.from(existing).equals(Buffer.from(publicKey));
138
+ }
139
+ getRecord(agentId) {
140
+ return this.data[agentId];
141
+ }
142
+ }
143
+ exports.TrustStore = TrustStore;
144
+ //# sourceMappingURL=trust-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-store.js","sourceRoot":"","sources":["../../src/trust-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { WebhookConfig } from './config';
2
+ export type WebhookEvent = 'task.completed' | 'task.failed' | 'task.progress';
3
+ export interface WebhookPayload<T = unknown> {
4
+ event: WebhookEvent;
5
+ task_id: string;
6
+ agent_id: string;
7
+ timestamp: string;
8
+ signature: string;
9
+ data: T;
10
+ }
11
+ export interface TaskResult<T = unknown> {
12
+ result?: T;
13
+ error?: {
14
+ code: string;
15
+ message: string;
16
+ };
17
+ progress?: {
18
+ current: number;
19
+ total: number;
20
+ message: string;
21
+ };
22
+ }
23
+ export declare class WebhookClient {
24
+ private config;
25
+ private logger;
26
+ constructor(config: WebhookConfig);
27
+ sendWebhook<T = unknown>(event: WebhookEvent, taskId: string, agentId: string, data: TaskResult<T>, secretKey: Uint8Array): Promise<void>;
28
+ private signPayload;
29
+ static verifyWebhookSignature(payload: WebhookPayload, publicKey: Uint8Array): boolean;
30
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebhookClient = void 0;
4
+ const crypto_1 = require("./crypto");
5
+ const canonical_1 = require("./canonical");
6
+ const logger_1 = require("./logger");
7
+ class WebhookClient {
8
+ constructor(config) {
9
+ this.config = config;
10
+ this.logger = (0, logger_1.getLogger)();
11
+ if (!config.url || !config.secret) {
12
+ throw new Error('Webhook URL and secret are required');
13
+ }
14
+ }
15
+ async sendWebhook(event, taskId, agentId, data, secretKey) {
16
+ const payload = {
17
+ event,
18
+ task_id: taskId,
19
+ agent_id: agentId,
20
+ timestamp: new Date().toISOString(),
21
+ signature: '',
22
+ data
23
+ };
24
+ payload.signature = this.signPayload(payload, secretKey);
25
+ const maxAttempts = this.config.retry?.maxAttempts || 3;
26
+ const backoffMs = this.config.retry?.backoffMs || 1000;
27
+ const timeout = this.config.timeout || 30000;
28
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
29
+ try {
30
+ const abortController = new AbortController();
31
+ const timeoutId = setTimeout(() => abortController.abort(), timeout);
32
+ const response = await fetch(this.config.url, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ 'X-Webhook-Signature': payload.signature,
37
+ 'X-Webhook-Timestamp': payload.timestamp,
38
+ 'X-Webhook-Event': event,
39
+ 'X-Webhook-Task-Id': taskId
40
+ },
41
+ body: JSON.stringify(payload),
42
+ signal: abortController.signal
43
+ });
44
+ clearTimeout(timeoutId);
45
+ if (response.ok) {
46
+ this.logger.info(`Webhook sent successfully: ${event} (task: ${taskId})`);
47
+ return;
48
+ }
49
+ const errorText = await response.text();
50
+ this.logger.warn(`Webhook failed (attempt ${attempt}/${maxAttempts}): ${response.status} - ${errorText}`);
51
+ }
52
+ catch (error) {
53
+ this.logger.warn(`Webhook request failed (attempt ${attempt}/${maxAttempts}): ${error}`);
54
+ }
55
+ if (attempt < maxAttempts) {
56
+ const delay = backoffMs * Math.pow(2, attempt - 1);
57
+ this.logger.info(`Retrying webhook in ${delay}ms...`);
58
+ await new Promise(resolve => setTimeout(resolve, delay));
59
+ }
60
+ }
61
+ throw new Error(`Webhook failed after ${maxAttempts} attempts`);
62
+ }
63
+ signPayload(payload, secretKey) {
64
+ const canonical = (0, canonical_1.canonicalize)(payload);
65
+ const messageBytes = new TextEncoder().encode(canonical);
66
+ const signatureBytes = (0, crypto_1.sign)(secretKey, messageBytes);
67
+ return (0, crypto_1.encodeBase64URL)(signatureBytes);
68
+ }
69
+ static verifyWebhookSignature(payload, publicKey) {
70
+ const { signature, ...unsigned } = payload;
71
+ const canonical = (0, canonical_1.canonicalize)(unsigned);
72
+ const messageBytes = new TextEncoder().encode(canonical);
73
+ const signatureBytes = (0, crypto_1.decodeBase64URL)(signature);
74
+ return (0, crypto_1.verify)(publicKey, messageBytes, signatureBytes);
75
+ }
76
+ }
77
+ exports.WebhookClient = WebhookClient;
78
+ //# sourceMappingURL=webhook-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-client.js","sourceRoot":"","sources":["../../src/webhook-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const mcp_server_1 = require("./src/mcp-server");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ const os = __importStar(require("os"));
41
+ function loadMcpConfig() {
42
+ const candidates = [
43
+ path.join(process.cwd(), '.adp', 'config.json'),
44
+ path.join(os.homedir(), '.adp', 'config.json'),
45
+ ];
46
+ for (const cp of candidates) {
47
+ try {
48
+ if (!fs.existsSync(cp))
49
+ continue;
50
+ return JSON.parse(fs.readFileSync(cp, 'utf-8'));
51
+ }
52
+ catch { }
53
+ }
54
+ return {};
55
+ }
56
+ const rawArgs = process.argv.slice(2);
57
+ const args = rawArgs.filter(a => a !== '--');
58
+ const tag = args.find(a => !a.startsWith('--')) || 'agent1';
59
+ const cfg = loadMcpConfig();
60
+ const rc = cfg.relay || {};
61
+ const rg = cfg.registry || {};
62
+ let relayUrl = process.env.ADP_RELAY || '';
63
+ if (!relayUrl) {
64
+ const relayArg = args.find(a => a.startsWith('--relay='));
65
+ if (relayArg)
66
+ relayUrl = relayArg.split('=')[1];
67
+ else
68
+ relayUrl = rc.url || '';
69
+ }
70
+ let registryUrl = process.env.ADP_REGISTRY || '';
71
+ if (!registryUrl) {
72
+ const registryArg = args.find(a => a.startsWith('--registry='));
73
+ if (registryArg)
74
+ registryUrl = registryArg.split('=')[1];
75
+ else
76
+ registryUrl = rg.url || '';
77
+ }
78
+ const registryToken = process.env.ADP_REGISTRY_TOKEN || rg.token || '';
79
+ const namespace = process.env.ADP_NAMESPACE || String(cfg.namespace || 'local');
80
+ let agentName = process.env.ADP_NAME || '';
81
+ if (!agentName) {
82
+ const nameArg = args.find(a => a.startsWith('--name='));
83
+ if (nameArg)
84
+ agentName = nameArg.split('=')[1];
85
+ else
86
+ agentName = String(cfg.name || '');
87
+ }
88
+ const displayName = cfg.displayName;
89
+ const capabilities = cfg.capabilities;
90
+ const description = cfg.description;
91
+ const portBase = cfg.portBase;
92
+ const communication = cfg.communication;
93
+ const server = new mcp_server_1.AdpMcpServer({
94
+ tag,
95
+ namespace,
96
+ agentName,
97
+ relayUrl: relayUrl || undefined,
98
+ registryUrl: registryUrl || undefined,
99
+ registryToken: registryToken || undefined,
100
+ displayName,
101
+ capabilities,
102
+ description,
103
+ portBase,
104
+ communication: communication,
105
+ });
106
+ process.stderr.write(`[ADP-MCP] Starting with tag=${tag}\n`);
107
+ process.on('SIGINT', async () => {
108
+ process.stderr.write('[ADP-MCP] Shutting down...\n');
109
+ await server.shutdown();
110
+ process.exit(0);
111
+ });
112
+ process.on('SIGTERM', async () => {
113
+ process.stderr.write('[ADP-MCP] Shutting down...\n');
114
+ await server.shutdown();
115
+ process.exit(0);
116
+ });
117
+ async function main() {
118
+ await server.start();
119
+ await server.connect();
120
+ process.stderr.write('[ADP-MCP] Ready\n');
121
+ }
122
+ main().catch((err) => {
123
+ process.stderr.write(`[ADP-MCP] Fatal: ${err.message}\n`);
124
+ process.exit(1);
125
+ });
126
+ //# sourceMappingURL=start-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-mcp.js","sourceRoot":"","sources":["../start-mcp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAAgD;AAEhD,2CAA6B;AAC7B,uCAAyB;AACzB,uCAAyB;AAEzB,SAAS,aAAa;IACpB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KAC/C,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;gBAAE,SAAS;YACjC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAE7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;AAE5D,MAAM,GAAG,GAAG,aAAa,EAA6B,CAAC;AACvD,MAAM,EAAE,GAAI,GAAG,CAAC,KAA4C,IAAI,EAAE,CAAC;AACnE,MAAM,EAAE,GAAI,GAAG,CAAC,QAA+C,IAAI,EAAE,CAAC;AAEtE,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;AAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;IACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,IAAI,QAAQ;QAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAC3C,QAAQ,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAChE,IAAI,WAAW;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QACpD,WAAW,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;AAEvE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;AAEhF,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO;QAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAC1C,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,WAAW,GAAG,GAAG,CAAC,WAAiC,CAAC;AAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,YAAmD,CAAC;AAC7E,MAAM,WAAW,GAAG,GAAG,CAAC,WAAiC,CAAC;AAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAA8B,CAAC;AACpD,MAAM,aAAa,GAAG,GAAG,CAAC,aAAoD,CAAC;AAE/E,MAAM,MAAM,GAAG,IAAI,yBAAY,CAAC;IAC9B,GAAG;IACH,SAAS;IACT,SAAS;IACT,QAAQ,EAAE,QAAQ,IAAI,SAAS;IAC/B,WAAW,EAAE,WAAW,IAAI,SAAS;IACrC,aAAa,EAAE,aAAa,IAAI,SAAS;IACzC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,aAAa,EAAE,aAAoB;CACpC,CAAC,CAAC;AAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;AAE7D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC5C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAqB,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const registry_1 = require("./src/registry");
5
+ async function main() {
6
+ console.log('Starting ADP Registry...');
7
+ try {
8
+ // Initialize database
9
+ const db = new registry_1.Database(registry_1.defaultConfig);
10
+ await db.initialize();
11
+ // Initialize cache
12
+ const cache = new registry_1.Cache(registry_1.defaultConfig);
13
+ await cache.initialize();
14
+ // Create and start service
15
+ const service = new registry_1.RegistryService(registry_1.defaultConfig, db, cache);
16
+ service.start();
17
+ console.log('Registry is ready to accept connections');
18
+ // Graceful shutdown
19
+ process.on('SIGINT', async () => {
20
+ console.log('\nShutting down...');
21
+ await service.stop();
22
+ await db.close();
23
+ await cache.close();
24
+ process.exit(0);
25
+ });
26
+ }
27
+ catch (error) {
28
+ console.error('Failed to start registry:', error);
29
+ process.exit(1);
30
+ }
31
+ }
32
+ main();
33
+ //# sourceMappingURL=start-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-registry.js","sourceRoot":"","sources":["../start-registry.ts"],"names":[],"mappings":";;;AAEA,6CAAiF;AAEjF,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,EAAE,GAAG,IAAI,mBAAQ,CAAC,wBAAa,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;QAEtB,mBAAmB;QACnB,MAAM,KAAK,GAAG,IAAI,gBAAK,CAAC,wBAAa,CAAC,CAAC;QACvC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QAEzB,2BAA2B;QAC3B,MAAM,OAAO,GAAG,IAAI,0BAAe,CAAC,wBAAa,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};