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.
- package/LICENSE +21 -0
- package/README.md +141 -0
- package/config.example.json +32 -0
- package/dist/agent-id.d.ts +9 -0
- package/dist/agent-id.js +118 -0
- package/dist/agent-id.js.map +1 -0
- package/dist/agent-id.test.d.ts +1 -0
- package/dist/agent-id.test.js +36 -0
- package/dist/agent-id.test.js.map +1 -0
- package/dist/canonical.d.ts +5 -0
- package/dist/canonical.js +35 -0
- package/dist/canonical.js.map +1 -0
- package/dist/canonical.test.d.ts +1 -0
- package/dist/canonical.test.js +33 -0
- package/dist/canonical.test.js.map +1 -0
- package/dist/capability-test.d.ts +1 -0
- package/dist/capability-test.js +108 -0
- package/dist/capability-test.js.map +1 -0
- package/dist/chat.d.ts +1 -0
- package/dist/chat.js +166 -0
- package/dist/chat.js.map +1 -0
- package/dist/contacts-test.d.ts +1 -0
- package/dist/contacts-test.js +225 -0
- package/dist/contacts-test.js.map +1 -0
- package/dist/crypto.d.ts +11 -0
- package/dist/crypto.js +103 -0
- package/dist/crypto.js.map +1 -0
- package/dist/crypto.test.d.ts +1 -0
- package/dist/crypto.test.js +40 -0
- package/dist/crypto.test.js.map +1 -0
- package/dist/discovery.d.ts +36 -0
- package/dist/discovery.js +291 -0
- package/dist/discovery.js.map +1 -0
- package/dist/envelope.d.ts +42 -0
- package/dist/envelope.js +58 -0
- package/dist/envelope.js.map +1 -0
- package/dist/gateway.d.ts +44 -0
- package/dist/gateway.js +255 -0
- package/dist/gateway.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/integration-test.d.ts +1 -0
- package/dist/integration-test.js +206 -0
- package/dist/integration-test.js.map +1 -0
- package/dist/key-store.d.ts +10 -0
- package/dist/key-store.js +81 -0
- package/dist/key-store.js.map +1 -0
- package/dist/manifest.d.ts +35 -0
- package/dist/manifest.js +24 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mdns-test.d.ts +1 -0
- package/dist/mdns-test.js +93 -0
- package/dist/mdns-test.js.map +1 -0
- package/dist/relay-peer-test.d.ts +1 -0
- package/dist/relay-peer-test.js +220 -0
- package/dist/relay-peer-test.js.map +1 -0
- package/dist/relay-test.d.ts +1 -0
- package/dist/relay-test.js +92 -0
- package/dist/relay-test.js.map +1 -0
- package/dist/relay.d.ts +60 -0
- package/dist/relay.js +277 -0
- package/dist/relay.js.map +1 -0
- package/dist/src/agent-id.d.ts +9 -0
- package/dist/src/agent-id.js +44 -0
- package/dist/src/agent-id.js.map +1 -0
- package/dist/src/agent-id.test.d.ts +1 -0
- package/dist/src/agent-id.test.js +36 -0
- package/dist/src/agent-id.test.js.map +1 -0
- package/dist/src/canonical.d.ts +5 -0
- package/dist/src/canonical.js +37 -0
- package/dist/src/canonical.js.map +1 -0
- package/dist/src/canonical.test.d.ts +1 -0
- package/dist/src/canonical.test.js +33 -0
- package/dist/src/canonical.test.js.map +1 -0
- package/dist/src/capabilities.d.ts +3 -0
- package/dist/src/capabilities.js +39 -0
- package/dist/src/capabilities.js.map +1 -0
- package/dist/src/config.d.ts +35 -0
- package/dist/src/config.js +3 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/contacts.d.ts +28 -0
- package/dist/src/contacts.js +118 -0
- package/dist/src/contacts.js.map +1 -0
- package/dist/src/crypto.d.ts +11 -0
- package/dist/src/crypto.js +83 -0
- package/dist/src/crypto.js.map +1 -0
- package/dist/src/crypto.test.d.ts +1 -0
- package/dist/src/crypto.test.js +40 -0
- package/dist/src/crypto.test.js.map +1 -0
- package/dist/src/discovery.d.ts +39 -0
- package/dist/src/discovery.js +317 -0
- package/dist/src/discovery.js.map +1 -0
- package/dist/src/envelope.d.ts +55 -0
- package/dist/src/envelope.js +95 -0
- package/dist/src/envelope.js.map +1 -0
- package/dist/src/gateway.d.ts +78 -0
- package/dist/src/gateway.js +540 -0
- package/dist/src/gateway.js.map +1 -0
- package/dist/src/index.d.ts +22 -0
- package/dist/src/index.js +81 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/key-rotation.d.ts +27 -0
- package/dist/src/key-rotation.js +41 -0
- package/dist/src/key-rotation.js.map +1 -0
- package/dist/src/key-store.d.ts +10 -0
- package/dist/src/key-store.js +81 -0
- package/dist/src/key-store.js.map +1 -0
- package/dist/src/logger.d.ts +9 -0
- package/dist/src/logger.js +18 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/manifest.d.ts +37 -0
- package/dist/src/manifest.js +24 -0
- package/dist/src/manifest.js.map +1 -0
- package/dist/src/mcp-server.d.ts +38 -0
- package/dist/src/mcp-server.js +408 -0
- package/dist/src/mcp-server.js.map +1 -0
- package/dist/src/net-utils.d.ts +3 -0
- package/dist/src/net-utils.js +71 -0
- package/dist/src/net-utils.js.map +1 -0
- package/dist/src/registry/cache.d.ts +12 -0
- package/dist/src/registry/cache.js +45 -0
- package/dist/src/registry/cache.js.map +1 -0
- package/dist/src/registry/client.d.ts +43 -0
- package/dist/src/registry/client.js +245 -0
- package/dist/src/registry/client.js.map +1 -0
- package/dist/src/registry/config.d.ts +32 -0
- package/dist/src/registry/config.js +79 -0
- package/dist/src/registry/config.js.map +1 -0
- package/dist/src/registry/db.d.ts +10 -0
- package/dist/src/registry/db.js +97 -0
- package/dist/src/registry/db.js.map +1 -0
- package/dist/src/registry/index.d.ts +5 -0
- package/dist/src/registry/index.js +22 -0
- package/dist/src/registry/index.js.map +1 -0
- package/dist/src/registry/service.d.ts +45 -0
- package/dist/src/registry/service.js +802 -0
- package/dist/src/registry/service.js.map +1 -0
- package/dist/src/relay.d.ts +69 -0
- package/dist/src/relay.js +399 -0
- package/dist/src/relay.js.map +1 -0
- package/dist/src/task-manager.d.ts +55 -0
- package/dist/src/task-manager.js +150 -0
- package/dist/src/task-manager.js.map +1 -0
- package/dist/src/trust-store.d.ts +24 -0
- package/dist/src/trust-store.js +144 -0
- package/dist/src/trust-store.js.map +1 -0
- package/dist/src/webhook-client.d.ts +30 -0
- package/dist/src/webhook-client.js +78 -0
- package/dist/src/webhook-client.js.map +1 -0
- package/dist/start-mcp.d.ts +2 -0
- package/dist/start-mcp.js +126 -0
- package/dist/start-mcp.js.map +1 -0
- package/dist/start-registry.d.ts +2 -0
- package/dist/start-registry.js +33 -0
- package/dist/start-registry.js.map +1 -0
- package/dist/start-relay.d.ts +1 -0
- package/dist/start-relay.js +35 -0
- package/dist/start-relay.js.map +1 -0
- package/dist/start.d.ts +1 -0
- package/dist/start.js +364 -0
- package/dist/start.js.map +1 -0
- package/dist/task-manager.d.ts +55 -0
- package/dist/task-manager.js +145 -0
- package/dist/task-manager.js.map +1 -0
- package/dist/task-test.d.ts +1 -0
- package/dist/task-test.js +188 -0
- package/dist/task-test.js.map +1 -0
- package/dist/test-auth.d.ts +1 -0
- package/dist/test-auth.js +166 -0
- package/dist/test-auth.js.map +1 -0
- package/dist/test-key-rotation.d.ts +2 -0
- package/dist/test-key-rotation.js +114 -0
- package/dist/test-key-rotation.js.map +1 -0
- package/dist/test-registry.d.ts +2 -0
- package/dist/test-registry.js +123 -0
- package/dist/test-registry.js.map +1 -0
- package/dist/trust-store.d.ts +23 -0
- package/dist/trust-store.js +111 -0
- package/dist/trust-store.js.map +1 -0
- package/package.json +96 -0
- package/schema.sql +54 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { TrustStore } from './trust-store';
|
|
2
|
+
export declare const MESSAGE_SIZE_LIMIT: number;
|
|
3
|
+
export interface Envelope {
|
|
4
|
+
protocol: string;
|
|
5
|
+
id: string;
|
|
6
|
+
from: string;
|
|
7
|
+
to: string;
|
|
8
|
+
action: string;
|
|
9
|
+
params: unknown;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
sig: string;
|
|
12
|
+
reply_to?: string;
|
|
13
|
+
error?: {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
data?: unknown;
|
|
17
|
+
};
|
|
18
|
+
trace_id?: string;
|
|
19
|
+
span_id?: string;
|
|
20
|
+
encoding?: string;
|
|
21
|
+
expires_at?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface VerificationResult {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
error?: string;
|
|
26
|
+
message?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface VerifierOptions {
|
|
29
|
+
/** Enable TOFU (Trust On First Use) — auto-trusts unknown senders on first verified message.
|
|
30
|
+
* Default: false. Enable only in development or when you understand the risk. */
|
|
31
|
+
tofuEnabled?: boolean;
|
|
32
|
+
/** Called when a previously-unknown agent is encountered. */
|
|
33
|
+
onNewAgent?: (agentId: string) => void;
|
|
34
|
+
/** Max clock skew tolerance in milliseconds. Default: 300_000 (5 min). */
|
|
35
|
+
timestampToleranceMs?: number;
|
|
36
|
+
}
|
|
37
|
+
export declare class MessageVerifier {
|
|
38
|
+
private trustStore;
|
|
39
|
+
private tofuEnabled;
|
|
40
|
+
private onNewAgent?;
|
|
41
|
+
private timestampToleranceMs;
|
|
42
|
+
constructor(trustStore: TrustStore, options?: VerifierOptions);
|
|
43
|
+
verify(envelope: Envelope): Promise<VerificationResult>;
|
|
44
|
+
}
|
|
45
|
+
export declare function generateMessageId(): string;
|
|
46
|
+
export declare function buildEnvelope(from: string, to: string, action: string, params?: unknown, options?: {
|
|
47
|
+
reply_to?: string;
|
|
48
|
+
error?: {
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
data?: unknown;
|
|
52
|
+
};
|
|
53
|
+
trace_id?: string;
|
|
54
|
+
span_id?: string;
|
|
55
|
+
}): Omit<Envelope, 'sig'>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageVerifier = exports.MESSAGE_SIZE_LIMIT = void 0;
|
|
4
|
+
exports.generateMessageId = generateMessageId;
|
|
5
|
+
exports.buildEnvelope = buildEnvelope;
|
|
6
|
+
const crypto_1 = require("./crypto");
|
|
7
|
+
const canonical_1 = require("./canonical");
|
|
8
|
+
const agent_id_1 = require("./agent-id");
|
|
9
|
+
const crypto_2 = require("crypto");
|
|
10
|
+
const logger_1 = require("./logger");
|
|
11
|
+
exports.MESSAGE_SIZE_LIMIT = 1024 * 1024;
|
|
12
|
+
const TIMESTAMP_TOLERANCE_MS = 300000;
|
|
13
|
+
class MessageVerifier {
|
|
14
|
+
constructor(trustStore, options = {}) {
|
|
15
|
+
this.trustStore = trustStore;
|
|
16
|
+
this.tofuEnabled = options.tofuEnabled ?? false;
|
|
17
|
+
this.onNewAgent = options.onNewAgent;
|
|
18
|
+
this.timestampToleranceMs = options.timestampToleranceMs ?? TIMESTAMP_TOLERANCE_MS;
|
|
19
|
+
}
|
|
20
|
+
async verify(envelope) {
|
|
21
|
+
if (!envelope.sig) {
|
|
22
|
+
return { valid: false, error: 'INVALID_SIGNATURE', message: 'Signature missing' };
|
|
23
|
+
}
|
|
24
|
+
const sigBytes = (0, crypto_1.decodeBase64URL)(envelope.sig);
|
|
25
|
+
if (sigBytes.length !== 64) {
|
|
26
|
+
return { valid: false, error: 'INVALID_SIGNATURE', message: 'Invalid signature length' };
|
|
27
|
+
}
|
|
28
|
+
const timestamp = new Date(envelope.timestamp).getTime();
|
|
29
|
+
if (isNaN(timestamp)) {
|
|
30
|
+
return { valid: false, error: 'INVALID_PARAMS', message: 'Invalid timestamp format' };
|
|
31
|
+
}
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
if (Math.abs(now - timestamp) > this.timestampToleranceMs) {
|
|
34
|
+
return { valid: false, error: 'INVALID_PARAMS', message: 'Timestamp too old or in future' };
|
|
35
|
+
}
|
|
36
|
+
const publicKey = (() => {
|
|
37
|
+
try {
|
|
38
|
+
return (0, agent_id_1.extractPublicKey)(envelope.from);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
})();
|
|
44
|
+
if (!publicKey) {
|
|
45
|
+
return { valid: false, error: 'INVALID_PARAMS', message: 'Invalid sender agent ID format' };
|
|
46
|
+
}
|
|
47
|
+
const { sig, ...unsigned } = envelope;
|
|
48
|
+
const canonical = (0, canonical_1.canonicalize)(unsigned);
|
|
49
|
+
const messageBytes = new TextEncoder().encode(canonical);
|
|
50
|
+
const isValid = (0, crypto_1.verify)(publicKey, messageBytes, sigBytes);
|
|
51
|
+
if (!isValid) {
|
|
52
|
+
return { valid: false, error: 'INVALID_SIGNATURE', message: 'Signature verification failed' };
|
|
53
|
+
}
|
|
54
|
+
if (this.trustStore.has(envelope.from)) {
|
|
55
|
+
if (this.trustStore.hasConflict(envelope.from, publicKey)) {
|
|
56
|
+
return { valid: false, error: 'TRUST_CONFLICT', message: 'Agent public key does not match trusted key' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (this.tofuEnabled) {
|
|
61
|
+
this.trustStore.pin(envelope.from, publicKey, 'tofu');
|
|
62
|
+
this.onNewAgent?.(envelope.from);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return {
|
|
66
|
+
valid: false,
|
|
67
|
+
error: 'TRUST_NOT_ESTABLISHED',
|
|
68
|
+
message: `Agent ${envelope.from} is not in trust store. TOFU is disabled — pin the agent first.`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
this.trustStore.updateLastVerified(envelope.from);
|
|
73
|
+
this.trustStore.save().catch(err => {
|
|
74
|
+
(0, logger_1.getLogger)().warn('[ADP MessageVerifier] Failed to save trust store:', err);
|
|
75
|
+
});
|
|
76
|
+
return { valid: true };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.MessageVerifier = MessageVerifier;
|
|
80
|
+
function generateMessageId() {
|
|
81
|
+
return 'msg_' + (0, crypto_2.randomBytes)(8).toString('base64url');
|
|
82
|
+
}
|
|
83
|
+
function buildEnvelope(from, to, action, params = {}, options) {
|
|
84
|
+
return {
|
|
85
|
+
protocol: 'adp/0.2',
|
|
86
|
+
id: generateMessageId(),
|
|
87
|
+
from,
|
|
88
|
+
to,
|
|
89
|
+
action,
|
|
90
|
+
params,
|
|
91
|
+
timestamp: new Date().toISOString(),
|
|
92
|
+
...options,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
import { Envelope, MessageVerifier } from './envelope';
|
|
3
|
+
import { Manifest, Capability, Route, AgentInfo } from './manifest';
|
|
4
|
+
import { TrustStore } from './trust-store';
|
|
5
|
+
import { TaskManager } from './task-manager';
|
|
6
|
+
import { ContactStore } from './contacts';
|
|
7
|
+
import { CommunicationConfig } from './config';
|
|
8
|
+
export interface GatewayOptions {
|
|
9
|
+
host?: string;
|
|
10
|
+
port: number;
|
|
11
|
+
path?: string;
|
|
12
|
+
secretKey: Uint8Array;
|
|
13
|
+
agentId: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
capabilities: (string | Capability)[];
|
|
16
|
+
routes?: Route[];
|
|
17
|
+
tls?: {
|
|
18
|
+
cert: string;
|
|
19
|
+
key: string;
|
|
20
|
+
};
|
|
21
|
+
skipVerification?: boolean;
|
|
22
|
+
tofuEnabled?: boolean;
|
|
23
|
+
onNewAgent?: (agentId: string) => void;
|
|
24
|
+
onInfo?: (from: string, params: unknown) => void;
|
|
25
|
+
customHandlers?: Record<string, ActionHandler>;
|
|
26
|
+
taskManager?: TaskManager;
|
|
27
|
+
contacts?: ContactStore;
|
|
28
|
+
description?: string;
|
|
29
|
+
agentInfo?: AgentInfo;
|
|
30
|
+
trustStore?: TrustStore;
|
|
31
|
+
verifier?: MessageVerifier;
|
|
32
|
+
noServer?: boolean;
|
|
33
|
+
communication?: CommunicationConfig;
|
|
34
|
+
}
|
|
35
|
+
export type ActionHandler = (ws: WebSocket, envelope: Envelope) => Promise<void>;
|
|
36
|
+
export declare class Gateway {
|
|
37
|
+
private server;
|
|
38
|
+
private wss;
|
|
39
|
+
private secretKey;
|
|
40
|
+
private agentId;
|
|
41
|
+
private manifest;
|
|
42
|
+
private trustStore;
|
|
43
|
+
private verifier;
|
|
44
|
+
private messageIdCache;
|
|
45
|
+
private skipVerification;
|
|
46
|
+
private onInfo?;
|
|
47
|
+
private customActions;
|
|
48
|
+
private taskManager?;
|
|
49
|
+
private connections;
|
|
50
|
+
private heartbeatIntervalMs;
|
|
51
|
+
private heartbeatTimeoutMs;
|
|
52
|
+
private webhookClient?;
|
|
53
|
+
private communicationConfig?;
|
|
54
|
+
private tasks;
|
|
55
|
+
constructor(options: GatewayOptions & {
|
|
56
|
+
heartbeatIntervalMs?: number;
|
|
57
|
+
heartbeatTimeoutMs?: number;
|
|
58
|
+
});
|
|
59
|
+
private handleConnection;
|
|
60
|
+
private processMessage;
|
|
61
|
+
private handleMessage;
|
|
62
|
+
private getCommunicationMode;
|
|
63
|
+
private handleAsyncRequest;
|
|
64
|
+
private handlePing;
|
|
65
|
+
private handleCapabilityQuery;
|
|
66
|
+
private handleInfo;
|
|
67
|
+
private handleKeyRotate;
|
|
68
|
+
private sendError;
|
|
69
|
+
private signAndBuildEnvelope;
|
|
70
|
+
registerCapability(cap: string | Capability, handler: ActionHandler): void;
|
|
71
|
+
getManifest(): Manifest;
|
|
72
|
+
getAgentId(): string;
|
|
73
|
+
processRelayMessage(rawEnvelope: unknown): Promise<void>;
|
|
74
|
+
private processMessageDirect;
|
|
75
|
+
private handleMessageDirect;
|
|
76
|
+
close(): void;
|
|
77
|
+
}
|
|
78
|
+
export declare function connectToAgent(agentId: string, address: string, localAgentId: string): Promise<WebSocket>;
|