beam-protocol-sdk 0.2.2 → 0.3.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/package.json +3 -23
- package/src/client.ts +383 -0
- package/src/directory.ts +91 -0
- package/src/frames.ts +161 -0
- package/src/identity.ts +85 -0
- package/src/index.ts +25 -0
- package/src/types.ts +71 -0
- package/tests/client.test.ts +217 -0
- package/tests/directory.test.ts +202 -0
- package/tests/frames.test.ts +213 -0
- package/tests/identity.test.ts +130 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +8 -0
- package/README.md +0 -177
- package/dist/client.d.ts +0 -96
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -293
- package/dist/client.js.map +0 -1
- package/dist/directory.d.ts +0 -15
- package/dist/directory.d.ts.map +0 -1
- package/dist/directory.js +0 -82
- package/dist/directory.js.map +0 -1
- package/dist/frames.d.ts +0 -29
- package/dist/frames.d.ts.map +0 -1
- package/dist/frames.js +0 -133
- package/dist/frames.js.map +0 -1
- package/dist/identity.d.ts +0 -19
- package/dist/identity.d.ts.map +0 -1
- package/dist/identity.js +0 -65
- package/dist/identity.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +0 -1
- package/dist/types.d.ts +0 -60
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/identity.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { generateKeyPairSync, sign, verify, createPrivateKey, createPublicKey, randomUUID } from 'node:crypto';
|
|
2
|
-
export class BeamIdentity {
|
|
3
|
-
beamId;
|
|
4
|
-
publicKeyBase64;
|
|
5
|
-
_privateKey;
|
|
6
|
-
_publicKey;
|
|
7
|
-
constructor(beamId, privateKey, publicKey) {
|
|
8
|
-
this.beamId = beamId;
|
|
9
|
-
this._privateKey = privateKey;
|
|
10
|
-
this._publicKey = publicKey;
|
|
11
|
-
this.publicKeyBase64 = publicKey.export({ type: 'spki', format: 'der' }).toString('base64');
|
|
12
|
-
}
|
|
13
|
-
static generate(config) {
|
|
14
|
-
const { privateKey, publicKey } = generateKeyPairSync('ed25519');
|
|
15
|
-
const beamId = `${config.agentName}@${config.orgName}.beam.directory`;
|
|
16
|
-
return new BeamIdentity(beamId, privateKey, publicKey);
|
|
17
|
-
}
|
|
18
|
-
static fromData(data) {
|
|
19
|
-
const privateKey = createPrivateKey({
|
|
20
|
-
key: Buffer.from(data.privateKeyBase64, 'base64'),
|
|
21
|
-
format: 'der',
|
|
22
|
-
type: 'pkcs8'
|
|
23
|
-
});
|
|
24
|
-
const publicKey = createPublicKey({
|
|
25
|
-
key: Buffer.from(data.publicKeyBase64, 'base64'),
|
|
26
|
-
format: 'der',
|
|
27
|
-
type: 'spki'
|
|
28
|
-
});
|
|
29
|
-
return new BeamIdentity(data.beamId, privateKey, publicKey);
|
|
30
|
-
}
|
|
31
|
-
export() {
|
|
32
|
-
return {
|
|
33
|
-
beamId: this.beamId,
|
|
34
|
-
publicKeyBase64: this.publicKeyBase64,
|
|
35
|
-
privateKeyBase64: this._privateKey.export({ type: 'pkcs8', format: 'der' }).toString('base64')
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
sign(data) {
|
|
39
|
-
const signature = sign(null, Buffer.from(data, 'utf8'), this._privateKey);
|
|
40
|
-
return signature.toString('base64');
|
|
41
|
-
}
|
|
42
|
-
static verify(data, signatureBase64, publicKeyBase64) {
|
|
43
|
-
try {
|
|
44
|
-
const publicKey = createPublicKey({
|
|
45
|
-
key: Buffer.from(publicKeyBase64, 'base64'),
|
|
46
|
-
format: 'der',
|
|
47
|
-
type: 'spki'
|
|
48
|
-
});
|
|
49
|
-
return verify(null, Buffer.from(data, 'utf8'), publicKey, Buffer.from(signatureBase64, 'base64'));
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
static parseBeamId(beamId) {
|
|
56
|
-
const match = beamId.match(/^([a-z0-9_-]+)@([a-z0-9_-]+)\.beam\.directory$/);
|
|
57
|
-
if (!match)
|
|
58
|
-
return null;
|
|
59
|
-
return { agent: match[1], org: match[2] };
|
|
60
|
-
}
|
|
61
|
-
static generateNonce() {
|
|
62
|
-
return randomUUID();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=identity.js.map
|
package/dist/identity.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { BeamIdentity } from './identity.js';
|
|
2
|
-
export { BeamDirectory, BeamDirectoryError } from './directory.js';
|
|
3
|
-
export { BeamClient, BeamThread } from './client.js';
|
|
4
|
-
export { createIntentFrame, createResultFrame, signFrame, validateIntentFrame, validateResultFrame, canonicalizeFrame, MAX_FRAME_SIZE, REPLAY_WINDOW_MS } from './frames.js';
|
|
5
|
-
export type { BeamIdString, BeamIdentityConfig, BeamIdentityData, IntentFrame, ResultFrame, AgentRegistration, AgentRecord, DirectoryConfig, BeamClientConfig, AgentSearchQuery } from './types.js';
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { BeamIdentity } from './identity.js';
|
|
2
|
-
export { BeamDirectory, BeamDirectoryError } from './directory.js';
|
|
3
|
-
export { BeamClient, BeamThread } from './client.js';
|
|
4
|
-
export { createIntentFrame, createResultFrame, signFrame, validateIntentFrame, validateResultFrame, canonicalizeFrame, MAX_FRAME_SIZE, REPLAY_WINDOW_MS } from './frames.js';
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAA"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/** Beam ID format: agent@org.beam.directory */
|
|
2
|
-
export type BeamIdString = `${string}@${string}.beam.directory`;
|
|
3
|
-
export interface BeamIdentityConfig {
|
|
4
|
-
agentName: string;
|
|
5
|
-
orgName: string;
|
|
6
|
-
}
|
|
7
|
-
export interface BeamIdentityData {
|
|
8
|
-
beamId: BeamIdString;
|
|
9
|
-
publicKeyBase64: string;
|
|
10
|
-
privateKeyBase64: string;
|
|
11
|
-
}
|
|
12
|
-
export interface IntentFrame {
|
|
13
|
-
v: '1';
|
|
14
|
-
intent: string;
|
|
15
|
-
from: BeamIdString;
|
|
16
|
-
to: BeamIdString;
|
|
17
|
-
payload: Record<string, unknown>;
|
|
18
|
-
nonce: string;
|
|
19
|
-
timestamp: string;
|
|
20
|
-
signature?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface ResultFrame {
|
|
23
|
-
v: '1';
|
|
24
|
-
success: boolean;
|
|
25
|
-
payload?: Record<string, unknown>;
|
|
26
|
-
error?: string;
|
|
27
|
-
errorCode?: string;
|
|
28
|
-
nonce: string;
|
|
29
|
-
timestamp: string;
|
|
30
|
-
latency?: number;
|
|
31
|
-
signature?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface AgentRegistration {
|
|
34
|
-
beamId: BeamIdString;
|
|
35
|
-
displayName: string;
|
|
36
|
-
capabilities: string[];
|
|
37
|
-
publicKey: string;
|
|
38
|
-
org: string;
|
|
39
|
-
}
|
|
40
|
-
export interface AgentRecord extends AgentRegistration {
|
|
41
|
-
trustScore: number;
|
|
42
|
-
verified: boolean;
|
|
43
|
-
createdAt: string;
|
|
44
|
-
lastSeen: string;
|
|
45
|
-
}
|
|
46
|
-
export interface DirectoryConfig {
|
|
47
|
-
baseUrl: string;
|
|
48
|
-
apiKey?: string;
|
|
49
|
-
}
|
|
50
|
-
export interface BeamClientConfig {
|
|
51
|
-
identity: BeamIdentityData;
|
|
52
|
-
directoryUrl: string;
|
|
53
|
-
}
|
|
54
|
-
export interface AgentSearchQuery {
|
|
55
|
-
org?: string;
|
|
56
|
-
capabilities?: string[];
|
|
57
|
-
minTrustScore?: number;
|
|
58
|
-
limit?: number;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAE/D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,GAAG,CAAA;IACN,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,EAAE,EAAE,YAAY,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,GAAG,CAAA;IACN,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|