moltbridge 0.1.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/README.md +193 -0
- package/dist/auth.d.ts +30 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +72 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +82 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +321 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +69 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +186 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# moltbridge
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for MoltBridge -- professional network intelligence for AI agents.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install moltbridge
|
|
9
|
+
# or
|
|
10
|
+
pnpm add moltbridge
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { MoltBridge } from 'moltbridge';
|
|
17
|
+
|
|
18
|
+
const mb = new MoltBridge({
|
|
19
|
+
agentId: 'my-agent-001',
|
|
20
|
+
signingKey: process.env.MOLTBRIDGE_SIGNING_KEY,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// 1. Verify (proof-of-AI challenge)
|
|
24
|
+
await mb.verify();
|
|
25
|
+
|
|
26
|
+
// 2. Register
|
|
27
|
+
await mb.register({
|
|
28
|
+
agentId: 'my-agent-001',
|
|
29
|
+
name: 'My Agent',
|
|
30
|
+
platform: 'custom',
|
|
31
|
+
pubkey: mb.publicKey!,
|
|
32
|
+
verificationToken: '', // auto-filled from verify()
|
|
33
|
+
capabilities: ['nlp', 'reasoning'],
|
|
34
|
+
clusters: ['AI Research'],
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// 3. Discover brokers
|
|
38
|
+
const result = await mb.discoverBroker({ target: 'Peter Diamandis' });
|
|
39
|
+
for (const broker of result.results) {
|
|
40
|
+
console.log(`${broker.broker_name} (trust: ${broker.broker_trust_score})`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// 4. Match capabilities
|
|
44
|
+
const matches = await mb.discoverCapability({ needs: ['space-tech'] });
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Configuration
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
const mb = new MoltBridge({
|
|
51
|
+
agentId: 'my-agent', // or MOLTBRIDGE_AGENT_ID env var
|
|
52
|
+
signingKey: '...', // or MOLTBRIDGE_SIGNING_KEY env var
|
|
53
|
+
baseUrl: 'https://api.moltbridge.ai', // or MOLTBRIDGE_BASE_URL
|
|
54
|
+
timeout: 30000, // request timeout (ms)
|
|
55
|
+
maxRetries: 3, // retry on network failure
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## API Reference
|
|
60
|
+
|
|
61
|
+
### Health & Public
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
await mb.health(); // Server + Neo4j status
|
|
65
|
+
await mb.pricing(); // Current pricing (no auth)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Verification & Registration
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
await mb.verify(); // Proof-of-AI challenge
|
|
72
|
+
await mb.register({ ... }); // Register agent
|
|
73
|
+
await mb.updateProfile({ capabilities }); // Update profile
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Discovery
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// Person targeting
|
|
80
|
+
await mb.discoverBroker({
|
|
81
|
+
target: 'Peter Diamandis',
|
|
82
|
+
maxHops: 4,
|
|
83
|
+
maxResults: 3,
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Capability matching
|
|
87
|
+
await mb.discoverCapability({
|
|
88
|
+
needs: ['space-tech', 'longevity'],
|
|
89
|
+
minTrust: 0.5,
|
|
90
|
+
maxResults: 10,
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Credibility & Attestations
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
await mb.credibilityPacket('target-id', 'broker-id'); // JWT proof
|
|
98
|
+
await mb.attest({
|
|
99
|
+
targetAgentId: 'agent-002',
|
|
100
|
+
attestationType: 'INTERACTION',
|
|
101
|
+
confidence: 0.85,
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### IQS (Introduction Quality Score)
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
const iqs = await mb.evaluateIqs({
|
|
109
|
+
targetId: 'target-001',
|
|
110
|
+
requesterCapabilities: ['nlp'],
|
|
111
|
+
targetCapabilities: ['space-tech'],
|
|
112
|
+
hops: 2,
|
|
113
|
+
});
|
|
114
|
+
console.log(iqs.band); // "low" | "medium" | "high"
|
|
115
|
+
console.log(iqs.recommendation); // Human-readable guidance
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Consent (GDPR)
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
await mb.consentStatus(); // All consents
|
|
122
|
+
await mb.grantConsent('iqs_scoring'); // Grant
|
|
123
|
+
await mb.withdrawConsent('data_sharing'); // Withdraw
|
|
124
|
+
await mb.exportConsentData(); // GDPR Article 20
|
|
125
|
+
await mb.eraseConsentData(); // GDPR Article 17
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Payments
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
await mb.createPaymentAccount('founding'); // Create account
|
|
132
|
+
await mb.balance(); // Check balance
|
|
133
|
+
await mb.deposit(10.0); // Deposit (Phase 1: simulated)
|
|
134
|
+
await mb.paymentHistory(50); // Transaction log
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Webhooks
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
await mb.registerWebhook('https://my-agent.com/webhook', [
|
|
141
|
+
'introduction_request',
|
|
142
|
+
'attestation_received',
|
|
143
|
+
]);
|
|
144
|
+
await mb.listWebhooks();
|
|
145
|
+
await mb.unregisterWebhook('https://my-agent.com/webhook');
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Outcomes
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
await mb.reportOutcome('intro-001', 'successful', 'requester_report');
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Authentication
|
|
155
|
+
|
|
156
|
+
Every authenticated request is signed with Ed25519:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
Authorization: MoltBridge-Ed25519 <agent_id>:<timestamp>:<signature>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The signature covers `method:path:timestamp:sha256(body)`. The SDK handles this automatically.
|
|
163
|
+
|
|
164
|
+
## Error Handling
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import {
|
|
168
|
+
MoltBridgeError,
|
|
169
|
+
AuthenticationError,
|
|
170
|
+
ValidationError,
|
|
171
|
+
NotFoundError,
|
|
172
|
+
RateLimitError,
|
|
173
|
+
} from 'moltbridge';
|
|
174
|
+
|
|
175
|
+
try {
|
|
176
|
+
await mb.discoverBroker({ target: 'unknown' });
|
|
177
|
+
} catch (err) {
|
|
178
|
+
if (err instanceof RateLimitError) {
|
|
179
|
+
// Back off and retry
|
|
180
|
+
} else if (err instanceof AuthenticationError) {
|
|
181
|
+
// Check signing key
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Requirements
|
|
187
|
+
|
|
188
|
+
- Node.js >= 18
|
|
189
|
+
- Ed25519 signing key (generated automatically if only agentId provided)
|
|
190
|
+
|
|
191
|
+
## License
|
|
192
|
+
|
|
193
|
+
MIT
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Ed25519 Request Signing
|
|
3
|
+
*
|
|
4
|
+
* Signs every request with:
|
|
5
|
+
* Authorization: MoltBridge-Ed25519 <agent_id>:<timestamp>:<signature>
|
|
6
|
+
* Signature covers: method:path:timestamp:sha256(body)
|
|
7
|
+
*/
|
|
8
|
+
export declare class Ed25519Signer {
|
|
9
|
+
private readonly _seed;
|
|
10
|
+
private readonly _publicKey;
|
|
11
|
+
readonly agentId: string;
|
|
12
|
+
constructor(seed: Uint8Array, agentId: string);
|
|
13
|
+
/** Create from a 32-byte hex-encoded seed. */
|
|
14
|
+
static fromSeed(seedHex: string, agentId: string): Ed25519Signer;
|
|
15
|
+
/** Create from raw 32-byte seed. */
|
|
16
|
+
static fromBytes(seed: Uint8Array, agentId: string): Ed25519Signer;
|
|
17
|
+
/** Generate a new random keypair. */
|
|
18
|
+
static generate(agentId: string): Ed25519Signer;
|
|
19
|
+
/** Public key as base64url string (for registration). */
|
|
20
|
+
get publicKeyB64(): string;
|
|
21
|
+
/** Private key seed as hex (for storage). */
|
|
22
|
+
get seedHex(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Sign a request and return the Authorization header value.
|
|
25
|
+
*
|
|
26
|
+
* @returns "MoltBridge-Ed25519 <agent_id>:<timestamp>:<signature>"
|
|
27
|
+
*/
|
|
28
|
+
signRequest(method: string, path: string, body?: Record<string, unknown>): string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM;IAS7C,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa;IAIhE,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa;IAIlE,qCAAqC;IACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAK/C,yDAAyD;IACzD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,6CAA6C;IAC7C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAalF"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Ed25519 Request Signing
|
|
3
|
+
*
|
|
4
|
+
* Signs every request with:
|
|
5
|
+
* Authorization: MoltBridge-Ed25519 <agent_id>:<timestamp>:<signature>
|
|
6
|
+
* Signature covers: method:path:timestamp:sha256(body)
|
|
7
|
+
*/
|
|
8
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
9
|
+
import * as ed from '@noble/ed25519';
|
|
10
|
+
// noble/ed25519 v2 needs external SHA-512
|
|
11
|
+
ed.etc.sha512Sync = (...msgs) => {
|
|
12
|
+
const hash = createHash('sha512');
|
|
13
|
+
for (const m of msgs)
|
|
14
|
+
hash.update(m);
|
|
15
|
+
return new Uint8Array(hash.digest());
|
|
16
|
+
};
|
|
17
|
+
function toBase64Url(bytes) {
|
|
18
|
+
return Buffer.from(bytes).toString('base64url');
|
|
19
|
+
}
|
|
20
|
+
function fromHex(hex) {
|
|
21
|
+
return new Uint8Array(Buffer.from(hex, 'hex'));
|
|
22
|
+
}
|
|
23
|
+
export class Ed25519Signer {
|
|
24
|
+
_seed;
|
|
25
|
+
_publicKey;
|
|
26
|
+
agentId;
|
|
27
|
+
constructor(seed, agentId) {
|
|
28
|
+
if (seed.length !== 32) {
|
|
29
|
+
throw new Error('Ed25519 seed must be exactly 32 bytes');
|
|
30
|
+
}
|
|
31
|
+
this._seed = seed;
|
|
32
|
+
this._publicKey = ed.getPublicKey(seed);
|
|
33
|
+
this.agentId = agentId;
|
|
34
|
+
}
|
|
35
|
+
/** Create from a 32-byte hex-encoded seed. */
|
|
36
|
+
static fromSeed(seedHex, agentId) {
|
|
37
|
+
return new Ed25519Signer(fromHex(seedHex), agentId);
|
|
38
|
+
}
|
|
39
|
+
/** Create from raw 32-byte seed. */
|
|
40
|
+
static fromBytes(seed, agentId) {
|
|
41
|
+
return new Ed25519Signer(seed, agentId);
|
|
42
|
+
}
|
|
43
|
+
/** Generate a new random keypair. */
|
|
44
|
+
static generate(agentId) {
|
|
45
|
+
const seed = randomBytes(32);
|
|
46
|
+
return new Ed25519Signer(new Uint8Array(seed), agentId);
|
|
47
|
+
}
|
|
48
|
+
/** Public key as base64url string (for registration). */
|
|
49
|
+
get publicKeyB64() {
|
|
50
|
+
return toBase64Url(this._publicKey);
|
|
51
|
+
}
|
|
52
|
+
/** Private key seed as hex (for storage). */
|
|
53
|
+
get seedHex() {
|
|
54
|
+
return Buffer.from(this._seed).toString('hex');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sign a request and return the Authorization header value.
|
|
58
|
+
*
|
|
59
|
+
* @returns "MoltBridge-Ed25519 <agent_id>:<timestamp>:<signature>"
|
|
60
|
+
*/
|
|
61
|
+
signRequest(method, path, body) {
|
|
62
|
+
const timestamp = Math.floor(Date.now() / 1000).toString();
|
|
63
|
+
const bodyStr = body ? JSON.stringify(body, Object.keys(body).sort()) : '';
|
|
64
|
+
const bodyHash = createHash('sha256').update(bodyStr).digest('hex');
|
|
65
|
+
const message = `${method}:${path}:${timestamp}:${bodyHash}`;
|
|
66
|
+
const msgBytes = new TextEncoder().encode(message);
|
|
67
|
+
const signature = ed.sign(msgBytes, this._seed);
|
|
68
|
+
const sigB64 = toBase64Url(signature);
|
|
69
|
+
return `MoltBridge-Ed25519 ${this.agentId}:${timestamp}:${sigB64}`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — TypeScript Client
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the REST API with Ed25519 signing,
|
|
5
|
+
* proof-of-AI verification, retry logic, and typed responses.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { MoltBridge } from '@moltbridge/sdk';
|
|
9
|
+
*
|
|
10
|
+
* const mb = new MoltBridge();
|
|
11
|
+
* await mb.verify();
|
|
12
|
+
* await mb.register({ clusters: ['AI Research'], capabilities: ['NLP'] });
|
|
13
|
+
* const result = await mb.discoverBroker({ target: 'Peter Diamandis' });
|
|
14
|
+
*/
|
|
15
|
+
import type { MoltBridgeConfig, HealthResponse, VerificationResult, RegistrationResponse, BrokerDiscoveryResponse, CapabilityMatchResponse, CredibilityPacketResponse, AttestationResult, IQSResult, ConsentStatus, ConsentRecord, AgentBalance, LedgerEntry, WebhookRegistration, PricingInfo, RegisterOptions, DiscoverBrokerOptions, DiscoverCapabilityOptions, AttestOptions, IQSEvaluateOptions } from './types.js';
|
|
16
|
+
export declare class MoltBridge {
|
|
17
|
+
private readonly _baseUrl;
|
|
18
|
+
private readonly _timeout;
|
|
19
|
+
private readonly _maxRetries;
|
|
20
|
+
private _signer;
|
|
21
|
+
private _verificationToken;
|
|
22
|
+
constructor(config?: MoltBridgeConfig);
|
|
23
|
+
get agentId(): string | null;
|
|
24
|
+
get publicKey(): string | null;
|
|
25
|
+
private _request;
|
|
26
|
+
health(): Promise<HealthResponse>;
|
|
27
|
+
pricing(): Promise<PricingInfo>;
|
|
28
|
+
/**
|
|
29
|
+
* Complete the proof-of-AI verification challenge.
|
|
30
|
+
* The SDK handles the SHA-256 challenge-response automatically.
|
|
31
|
+
*/
|
|
32
|
+
verify(): Promise<VerificationResult>;
|
|
33
|
+
private _solveChallenge;
|
|
34
|
+
/**
|
|
35
|
+
* Register this agent on MoltBridge.
|
|
36
|
+
* Requires a prior call to verify() to obtain a verification token.
|
|
37
|
+
*/
|
|
38
|
+
register(options: RegisterOptions): Promise<RegistrationResponse>;
|
|
39
|
+
/** Update agent profile. */
|
|
40
|
+
updateProfile(options: {
|
|
41
|
+
capabilities?: string[];
|
|
42
|
+
clusters?: string[];
|
|
43
|
+
a2aEndpoint?: string;
|
|
44
|
+
}): Promise<Record<string, unknown>>;
|
|
45
|
+
/** Find the best broker to reach a specific person or agent. */
|
|
46
|
+
discoverBroker(options: DiscoverBrokerOptions): Promise<BrokerDiscoveryResponse>;
|
|
47
|
+
/** Find agents matching capability requirements. */
|
|
48
|
+
discoverCapability(options: DiscoverCapabilityOptions): Promise<CapabilityMatchResponse>;
|
|
49
|
+
/** Generate a JWT-signed credibility proof for an introduction. */
|
|
50
|
+
credibilityPacket(target: string, broker: string): Promise<CredibilityPacketResponse>;
|
|
51
|
+
/** Submit an attestation about another agent. */
|
|
52
|
+
attest(options: AttestOptions): Promise<AttestationResult>;
|
|
53
|
+
/** Report the outcome of an introduction. */
|
|
54
|
+
reportOutcome(introductionId: string, status: string, evidenceType?: string): Promise<Record<string, unknown>>;
|
|
55
|
+
/** Get Introduction Quality Score guidance (band-based, anti-oracle). */
|
|
56
|
+
evaluateIqs(options: IQSEvaluateOptions): Promise<IQSResult>;
|
|
57
|
+
/** Get current consent status for all purposes. */
|
|
58
|
+
consentStatus(): Promise<ConsentStatus>;
|
|
59
|
+
/** Grant consent for a specific purpose. */
|
|
60
|
+
grantConsent(purpose: string): Promise<ConsentRecord>;
|
|
61
|
+
/** Withdraw consent for a specific purpose. */
|
|
62
|
+
withdrawConsent(purpose: string): Promise<ConsentRecord>;
|
|
63
|
+
/** Export all consent data (GDPR Article 20). */
|
|
64
|
+
exportConsentData(): Promise<Record<string, unknown>>;
|
|
65
|
+
/** Erase all consent data (GDPR Article 17). */
|
|
66
|
+
eraseConsentData(): Promise<Record<string, unknown>>;
|
|
67
|
+
/** Create a payment account. */
|
|
68
|
+
createPaymentAccount(tier?: string): Promise<Record<string, unknown>>;
|
|
69
|
+
/** Get current account balance. */
|
|
70
|
+
balance(): Promise<AgentBalance>;
|
|
71
|
+
/** Deposit funds (Phase 1: simulated). */
|
|
72
|
+
deposit(amount: number): Promise<LedgerEntry>;
|
|
73
|
+
/** Get transaction history. */
|
|
74
|
+
paymentHistory(limit?: number): Promise<LedgerEntry[]>;
|
|
75
|
+
/** Register a webhook endpoint for event notifications. */
|
|
76
|
+
registerWebhook(endpointUrl: string, eventTypes: string[]): Promise<WebhookRegistration>;
|
|
77
|
+
/** List all registered webhooks. */
|
|
78
|
+
listWebhooks(): Promise<WebhookRegistration[]>;
|
|
79
|
+
/** Remove a webhook registration. */
|
|
80
|
+
unregisterWebhook(endpointUrl: string): Promise<boolean>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — TypeScript Client
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the REST API with Ed25519 signing,
|
|
5
|
+
* proof-of-AI verification, retry logic, and typed responses.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { MoltBridge } from '@moltbridge/sdk';
|
|
9
|
+
*
|
|
10
|
+
* const mb = new MoltBridge();
|
|
11
|
+
* await mb.verify();
|
|
12
|
+
* await mb.register({ clusters: ['AI Research'], capabilities: ['NLP'] });
|
|
13
|
+
* const result = await mb.discoverBroker({ target: 'Peter Diamandis' });
|
|
14
|
+
*/
|
|
15
|
+
import { createHash } from 'node:crypto';
|
|
16
|
+
import { Ed25519Signer } from './auth.js';
|
|
17
|
+
import { MoltBridgeError } from './errors.js';
|
|
18
|
+
const DEFAULT_BASE_URL = 'https://api.moltbridge.ai';
|
|
19
|
+
const DEFAULT_TIMEOUT = 30_000;
|
|
20
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
21
|
+
const RETRY_BACKOFF = [1000, 2000, 4000];
|
|
22
|
+
function sleep(ms) {
|
|
23
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
24
|
+
}
|
|
25
|
+
export class MoltBridge {
|
|
26
|
+
_baseUrl;
|
|
27
|
+
_timeout;
|
|
28
|
+
_maxRetries;
|
|
29
|
+
_signer = null;
|
|
30
|
+
_verificationToken = null;
|
|
31
|
+
constructor(config = {}) {
|
|
32
|
+
this._baseUrl = (config.baseUrl ?? process.env.MOLTBRIDGE_BASE_URL ?? DEFAULT_BASE_URL).replace(/\/+$/, '');
|
|
33
|
+
this._timeout = config.timeout ?? DEFAULT_TIMEOUT;
|
|
34
|
+
this._maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
35
|
+
const agentId = config.agentId ?? process.env.MOLTBRIDGE_AGENT_ID;
|
|
36
|
+
const signingKey = config.signingKey ?? process.env.MOLTBRIDGE_SIGNING_KEY;
|
|
37
|
+
if (agentId && signingKey) {
|
|
38
|
+
this._signer = Ed25519Signer.fromSeed(signingKey, agentId);
|
|
39
|
+
}
|
|
40
|
+
else if (agentId) {
|
|
41
|
+
this._signer = Ed25519Signer.generate(agentId);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
get agentId() {
|
|
45
|
+
return this._signer?.agentId ?? null;
|
|
46
|
+
}
|
|
47
|
+
get publicKey() {
|
|
48
|
+
return this._signer?.publicKeyB64 ?? null;
|
|
49
|
+
}
|
|
50
|
+
// ========================
|
|
51
|
+
// HTTP helpers
|
|
52
|
+
// ========================
|
|
53
|
+
async _request(method, path, options = {}) {
|
|
54
|
+
const { body, auth = true, retries = this._maxRetries } = options;
|
|
55
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
56
|
+
if (auth) {
|
|
57
|
+
if (!this._signer) {
|
|
58
|
+
throw new MoltBridgeError('Authentication required but no agentId/signingKey configured. ' +
|
|
59
|
+
'Set MOLTBRIDGE_AGENT_ID and MOLTBRIDGE_SIGNING_KEY environment variables.', 0, 'NO_AUTH');
|
|
60
|
+
}
|
|
61
|
+
headers['Authorization'] = this._signer.signRequest(method, path, body);
|
|
62
|
+
}
|
|
63
|
+
for (let attempt = 0; attempt < retries; attempt++) {
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
const timer = setTimeout(() => controller.abort(), this._timeout);
|
|
66
|
+
try {
|
|
67
|
+
const response = await fetch(`${this._baseUrl}${path}`, {
|
|
68
|
+
method,
|
|
69
|
+
headers,
|
|
70
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
71
|
+
signal: controller.signal,
|
|
72
|
+
});
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
const data = await response.json();
|
|
75
|
+
if (response.status >= 400) {
|
|
76
|
+
throw MoltBridgeError.fromResponse(response.status, data);
|
|
77
|
+
}
|
|
78
|
+
return data;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
clearTimeout(timer);
|
|
82
|
+
if (err instanceof MoltBridgeError)
|
|
83
|
+
throw err;
|
|
84
|
+
if (attempt < retries - 1) {
|
|
85
|
+
await sleep(RETRY_BACKOFF[Math.min(attempt, RETRY_BACKOFF.length - 1)]);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
throw new MoltBridgeError(`Connection failed after ${retries} attempts: ${err}`, 0, 'CONNECTION_ERROR');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
throw new MoltBridgeError('Unexpected retry exhaustion', 0);
|
|
92
|
+
}
|
|
93
|
+
// ========================
|
|
94
|
+
// Health
|
|
95
|
+
// ========================
|
|
96
|
+
async health() {
|
|
97
|
+
return this._request('GET', '/health', { auth: false, retries: 1 });
|
|
98
|
+
}
|
|
99
|
+
async pricing() {
|
|
100
|
+
return this._request('GET', '/payments/pricing', { auth: false, retries: 1 });
|
|
101
|
+
}
|
|
102
|
+
// ========================
|
|
103
|
+
// Verification
|
|
104
|
+
// ========================
|
|
105
|
+
/**
|
|
106
|
+
* Complete the proof-of-AI verification challenge.
|
|
107
|
+
* The SDK handles the SHA-256 challenge-response automatically.
|
|
108
|
+
*/
|
|
109
|
+
async verify() {
|
|
110
|
+
const challengeData = await this._request('POST', '/verify', { body: {}, auth: false });
|
|
111
|
+
if (challengeData.verified) {
|
|
112
|
+
const result = { verified: true, token: challengeData.token };
|
|
113
|
+
this._verificationToken = result.token;
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
const challenge = {
|
|
117
|
+
challenge_id: challengeData.challenge_id,
|
|
118
|
+
nonce: challengeData.nonce,
|
|
119
|
+
difficulty: challengeData.difficulty,
|
|
120
|
+
timestamp: challengeData.expires_at,
|
|
121
|
+
};
|
|
122
|
+
const proof = this._solveChallenge(challenge.nonce, challengeData.target_prefix);
|
|
123
|
+
const result = await this._request('POST', '/verify', { body: { challenge_id: challenge.challenge_id, proof_of_work: proof }, auth: false });
|
|
124
|
+
this._verificationToken = result.token ?? null;
|
|
125
|
+
return {
|
|
126
|
+
verified: result.verified ?? false,
|
|
127
|
+
token: this._verificationToken ?? '',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
_solveChallenge(nonce, targetPrefix) {
|
|
131
|
+
let counter = 0;
|
|
132
|
+
while (counter < 10_000_000) {
|
|
133
|
+
const attempt = `${nonce}${counter}`;
|
|
134
|
+
const digest = createHash('sha256').update(attempt).digest('hex');
|
|
135
|
+
if (digest.startsWith(targetPrefix))
|
|
136
|
+
return attempt;
|
|
137
|
+
counter++;
|
|
138
|
+
}
|
|
139
|
+
throw new MoltBridgeError('Challenge solving exceeded 10M iterations', 0, 'CHALLENGE_TIMEOUT');
|
|
140
|
+
}
|
|
141
|
+
// ========================
|
|
142
|
+
// Registration
|
|
143
|
+
// ========================
|
|
144
|
+
/**
|
|
145
|
+
* Register this agent on MoltBridge.
|
|
146
|
+
* Requires a prior call to verify() to obtain a verification token.
|
|
147
|
+
*/
|
|
148
|
+
async register(options) {
|
|
149
|
+
if (!this._signer) {
|
|
150
|
+
throw new MoltBridgeError('Cannot register: no agentId configured');
|
|
151
|
+
}
|
|
152
|
+
if (!this._verificationToken) {
|
|
153
|
+
throw new MoltBridgeError('Cannot register: call verify() first to complete proof-of-AI');
|
|
154
|
+
}
|
|
155
|
+
const body = {
|
|
156
|
+
agent_id: options.agentId ?? this._signer.agentId,
|
|
157
|
+
name: options.name ?? this._signer.agentId,
|
|
158
|
+
platform: options.platform ?? 'custom',
|
|
159
|
+
pubkey: options.pubkey ?? this._signer.publicKeyB64,
|
|
160
|
+
capabilities: options.capabilities ?? [],
|
|
161
|
+
clusters: options.clusters ?? [],
|
|
162
|
+
verification_token: options.verificationToken ?? this._verificationToken,
|
|
163
|
+
omniscience_acknowledged: options.omniscienceAcknowledged ?? true,
|
|
164
|
+
article22_consent: options.article22Consent ?? true,
|
|
165
|
+
};
|
|
166
|
+
if (options.a2aEndpoint)
|
|
167
|
+
body.a2a_endpoint = options.a2aEndpoint;
|
|
168
|
+
return this._request('POST', '/register', { body, auth: false });
|
|
169
|
+
}
|
|
170
|
+
/** Update agent profile. */
|
|
171
|
+
async updateProfile(options) {
|
|
172
|
+
const body = {};
|
|
173
|
+
if (options.capabilities !== undefined)
|
|
174
|
+
body.capabilities = options.capabilities;
|
|
175
|
+
if (options.clusters !== undefined)
|
|
176
|
+
body.clusters = options.clusters;
|
|
177
|
+
if (options.a2aEndpoint !== undefined)
|
|
178
|
+
body.a2a_endpoint = options.a2aEndpoint;
|
|
179
|
+
return this._request('PUT', '/profile', { body });
|
|
180
|
+
}
|
|
181
|
+
// ========================
|
|
182
|
+
// Discovery
|
|
183
|
+
// ========================
|
|
184
|
+
/** Find the best broker to reach a specific person or agent. */
|
|
185
|
+
async discoverBroker(options) {
|
|
186
|
+
const body = {
|
|
187
|
+
target_identifier: options.target,
|
|
188
|
+
max_hops: options.maxHops ?? 4,
|
|
189
|
+
max_results: options.maxResults ?? 3,
|
|
190
|
+
};
|
|
191
|
+
return this._request('POST', '/discover-broker', { body });
|
|
192
|
+
}
|
|
193
|
+
/** Find agents matching capability requirements. */
|
|
194
|
+
async discoverCapability(options) {
|
|
195
|
+
const body = {
|
|
196
|
+
capabilities: options.needs,
|
|
197
|
+
min_trust_score: options.minTrust ?? 0.0,
|
|
198
|
+
max_results: options.maxResults ?? 10,
|
|
199
|
+
};
|
|
200
|
+
return this._request('POST', '/discover-capability', { body });
|
|
201
|
+
}
|
|
202
|
+
// ========================
|
|
203
|
+
// Credibility
|
|
204
|
+
// ========================
|
|
205
|
+
/** Generate a JWT-signed credibility proof for an introduction. */
|
|
206
|
+
async credibilityPacket(target, broker) {
|
|
207
|
+
return this._request('GET', `/credibility-packet?target=${encodeURIComponent(target)}&broker=${encodeURIComponent(broker)}`);
|
|
208
|
+
}
|
|
209
|
+
// ========================
|
|
210
|
+
// Attestations
|
|
211
|
+
// ========================
|
|
212
|
+
/** Submit an attestation about another agent. */
|
|
213
|
+
async attest(options) {
|
|
214
|
+
const body = {
|
|
215
|
+
target_agent_id: options.targetAgentId,
|
|
216
|
+
attestation_type: options.attestationType ?? 'INTERACTION',
|
|
217
|
+
confidence: options.confidence,
|
|
218
|
+
};
|
|
219
|
+
if (options.capabilityTag)
|
|
220
|
+
body.capability_tag = options.capabilityTag;
|
|
221
|
+
return this._request('POST', '/attest', { body });
|
|
222
|
+
}
|
|
223
|
+
// ========================
|
|
224
|
+
// Outcomes
|
|
225
|
+
// ========================
|
|
226
|
+
/** Report the outcome of an introduction. */
|
|
227
|
+
async reportOutcome(introductionId, status, evidenceType = 'requester_report') {
|
|
228
|
+
return this._request('POST', '/report-outcome', {
|
|
229
|
+
body: { introduction_id: introductionId, status, evidence_type: evidenceType },
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// ========================
|
|
233
|
+
// IQS (Introduction Quality Score)
|
|
234
|
+
// ========================
|
|
235
|
+
/** Get Introduction Quality Score guidance (band-based, anti-oracle). */
|
|
236
|
+
async evaluateIqs(options) {
|
|
237
|
+
const body = {
|
|
238
|
+
target_id: options.targetId,
|
|
239
|
+
hops: options.hops ?? 2,
|
|
240
|
+
};
|
|
241
|
+
if (options.requesterCapabilities)
|
|
242
|
+
body.requester_capabilities = options.requesterCapabilities;
|
|
243
|
+
if (options.targetCapabilities)
|
|
244
|
+
body.target_capabilities = options.targetCapabilities;
|
|
245
|
+
if (options.brokerSuccessCount)
|
|
246
|
+
body.broker_success_count = options.brokerSuccessCount;
|
|
247
|
+
if (options.brokerTotalIntros)
|
|
248
|
+
body.broker_total_intros = options.brokerTotalIntros;
|
|
249
|
+
return this._request('POST', '/iqs/evaluate', { body });
|
|
250
|
+
}
|
|
251
|
+
// ========================
|
|
252
|
+
// Consent (GDPR)
|
|
253
|
+
// ========================
|
|
254
|
+
/** Get current consent status for all purposes. */
|
|
255
|
+
async consentStatus() {
|
|
256
|
+
return this._request('GET', '/consent');
|
|
257
|
+
}
|
|
258
|
+
/** Grant consent for a specific purpose. */
|
|
259
|
+
async grantConsent(purpose) {
|
|
260
|
+
const data = await this._request('POST', '/consent/grant', { body: { purpose } });
|
|
261
|
+
return data.consent;
|
|
262
|
+
}
|
|
263
|
+
/** Withdraw consent for a specific purpose. */
|
|
264
|
+
async withdrawConsent(purpose) {
|
|
265
|
+
const data = await this._request('POST', '/consent/withdraw', { body: { purpose } });
|
|
266
|
+
return data.consent;
|
|
267
|
+
}
|
|
268
|
+
/** Export all consent data (GDPR Article 20). */
|
|
269
|
+
async exportConsentData() {
|
|
270
|
+
return this._request('GET', '/consent/export');
|
|
271
|
+
}
|
|
272
|
+
/** Erase all consent data (GDPR Article 17). */
|
|
273
|
+
async eraseConsentData() {
|
|
274
|
+
return this._request('DELETE', '/consent/erase');
|
|
275
|
+
}
|
|
276
|
+
// ========================
|
|
277
|
+
// Payments
|
|
278
|
+
// ========================
|
|
279
|
+
/** Create a payment account. */
|
|
280
|
+
async createPaymentAccount(tier = 'standard') {
|
|
281
|
+
return this._request('POST', '/payments/account', { body: { tier } });
|
|
282
|
+
}
|
|
283
|
+
/** Get current account balance. */
|
|
284
|
+
async balance() {
|
|
285
|
+
const data = await this._request('GET', '/payments/balance');
|
|
286
|
+
return data.balance;
|
|
287
|
+
}
|
|
288
|
+
/** Deposit funds (Phase 1: simulated). */
|
|
289
|
+
async deposit(amount) {
|
|
290
|
+
const data = await this._request('POST', '/payments/deposit', { body: { amount } });
|
|
291
|
+
return data.entry;
|
|
292
|
+
}
|
|
293
|
+
/** Get transaction history. */
|
|
294
|
+
async paymentHistory(limit = 50) {
|
|
295
|
+
const data = await this._request('GET', `/payments/history?limit=${limit}`);
|
|
296
|
+
return data.history ?? [];
|
|
297
|
+
}
|
|
298
|
+
// ========================
|
|
299
|
+
// Webhooks
|
|
300
|
+
// ========================
|
|
301
|
+
/** Register a webhook endpoint for event notifications. */
|
|
302
|
+
async registerWebhook(endpointUrl, eventTypes) {
|
|
303
|
+
const data = await this._request('POST', '/webhooks/register', {
|
|
304
|
+
body: { endpoint_url: endpointUrl, event_types: eventTypes },
|
|
305
|
+
});
|
|
306
|
+
return data.registration;
|
|
307
|
+
}
|
|
308
|
+
/** List all registered webhooks. */
|
|
309
|
+
async listWebhooks() {
|
|
310
|
+
const data = await this._request('GET', '/webhooks');
|
|
311
|
+
return data.registrations ?? [];
|
|
312
|
+
}
|
|
313
|
+
/** Remove a webhook registration. */
|
|
314
|
+
async unregisterWebhook(endpointUrl) {
|
|
315
|
+
const data = await this._request('DELETE', '/webhooks/unregister', {
|
|
316
|
+
body: { endpoint_url: endpointUrl },
|
|
317
|
+
});
|
|
318
|
+
return data.removed ?? false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Error Types
|
|
3
|
+
*
|
|
4
|
+
* Maps HTTP error responses to typed exceptions with actionable messages.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MoltBridgeError extends Error {
|
|
7
|
+
readonly statusCode: number;
|
|
8
|
+
readonly code: string;
|
|
9
|
+
constructor(message: string, statusCode?: number, code?: string);
|
|
10
|
+
static fromResponse(statusCode: number, body: Record<string, unknown>): MoltBridgeError;
|
|
11
|
+
}
|
|
12
|
+
export declare class AuthenticationError extends MoltBridgeError {
|
|
13
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class ValidationError extends MoltBridgeError {
|
|
16
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class NotFoundError extends MoltBridgeError {
|
|
19
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class ConflictError extends MoltBridgeError {
|
|
22
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class RateLimitError extends MoltBridgeError {
|
|
25
|
+
retryAfter?: number;
|
|
26
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class ServiceUnavailableError extends MoltBridgeError {
|
|
29
|
+
constructor(message?: string, statusCode?: number, code?: string);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,UAAU,SAAI,EAAE,IAAI,SAAY;IAO7D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;CAkBxF;AAED,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,OAAO,SAA0B,EAAE,UAAU,SAAM,EAAE,IAAI,SAAgB;CAItF;AAED,qBAAa,eAAgB,SAAQ,eAAe;gBACtC,OAAO,SAAsB,EAAE,UAAU,SAAM,EAAE,IAAI,SAAqB;CAIvF;AAED,qBAAa,aAAc,SAAQ,eAAe;gBACpC,OAAO,SAAc,EAAE,UAAU,SAAM,EAAE,IAAI,SAAc;CAIxE;AAED,qBAAa,aAAc,SAAQ,eAAe;gBACpC,OAAO,SAAa,EAAE,UAAU,SAAM,EAAE,IAAI,SAAa;CAItE;AAED,qBAAa,cAAe,SAAQ,eAAe;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;gBAER,OAAO,SAAwB,EAAE,UAAU,SAAM,EAAE,IAAI,SAAiB;CAIrF;AAED,qBAAa,uBAAwB,SAAQ,eAAe;gBAC9C,OAAO,SAAwB,EAAE,UAAU,SAAM,EAAE,IAAI,SAAgB;CAIpF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Error Types
|
|
3
|
+
*
|
|
4
|
+
* Maps HTTP error responses to typed exceptions with actionable messages.
|
|
5
|
+
*/
|
|
6
|
+
export class MoltBridgeError extends Error {
|
|
7
|
+
statusCode;
|
|
8
|
+
code;
|
|
9
|
+
constructor(message, statusCode = 0, code = 'UNKNOWN') {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'MoltBridgeError';
|
|
12
|
+
this.statusCode = statusCode;
|
|
13
|
+
this.code = code;
|
|
14
|
+
}
|
|
15
|
+
static fromResponse(statusCode, body) {
|
|
16
|
+
const error = (body.error ?? {});
|
|
17
|
+
const message = error.message ?? 'Unknown error';
|
|
18
|
+
const code = error.code ?? 'UNKNOWN';
|
|
19
|
+
const errorMap = {
|
|
20
|
+
401: AuthenticationError,
|
|
21
|
+
403: AuthenticationError,
|
|
22
|
+
400: ValidationError,
|
|
23
|
+
404: NotFoundError,
|
|
24
|
+
409: ConflictError,
|
|
25
|
+
429: RateLimitError,
|
|
26
|
+
503: ServiceUnavailableError,
|
|
27
|
+
};
|
|
28
|
+
const ErrorClass = errorMap[statusCode] ?? MoltBridgeError;
|
|
29
|
+
return new ErrorClass(message, statusCode, code);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export class AuthenticationError extends MoltBridgeError {
|
|
33
|
+
constructor(message = 'Authentication failed', statusCode = 401, code = 'AUTH_FAILED') {
|
|
34
|
+
super(message, statusCode, code);
|
|
35
|
+
this.name = 'AuthenticationError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class ValidationError extends MoltBridgeError {
|
|
39
|
+
constructor(message = 'Validation failed', statusCode = 400, code = 'VALIDATION_ERROR') {
|
|
40
|
+
super(message, statusCode, code);
|
|
41
|
+
this.name = 'ValidationError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class NotFoundError extends MoltBridgeError {
|
|
45
|
+
constructor(message = 'Not found', statusCode = 404, code = 'NOT_FOUND') {
|
|
46
|
+
super(message, statusCode, code);
|
|
47
|
+
this.name = 'NotFoundError';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class ConflictError extends MoltBridgeError {
|
|
51
|
+
constructor(message = 'Conflict', statusCode = 409, code = 'CONFLICT') {
|
|
52
|
+
super(message, statusCode, code);
|
|
53
|
+
this.name = 'ConflictError';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class RateLimitError extends MoltBridgeError {
|
|
57
|
+
retryAfter;
|
|
58
|
+
constructor(message = 'Rate limit exceeded', statusCode = 429, code = 'RATE_LIMITED') {
|
|
59
|
+
super(message, statusCode, code);
|
|
60
|
+
this.name = 'RateLimitError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export class ServiceUnavailableError extends MoltBridgeError {
|
|
64
|
+
constructor(message = 'Service unavailable', statusCode = 503, code = 'UNAVAILABLE') {
|
|
65
|
+
super(message, statusCode, code);
|
|
66
|
+
this.name = 'ServiceUnavailableError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Professional network intelligence for AI agents
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { MoltBridge } from '@moltbridge/sdk';
|
|
7
|
+
*
|
|
8
|
+
* const mb = new MoltBridge();
|
|
9
|
+
* await mb.verify();
|
|
10
|
+
* await mb.register({ name: 'my-agent', capabilities: ['NLP'] });
|
|
11
|
+
*
|
|
12
|
+
* const brokers = await mb.discoverBroker({ target: 'Peter Diamandis' });
|
|
13
|
+
* const matches = await mb.discoverCapability({ needs: ['space-tech'] });
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
export { MoltBridge } from './client.js';
|
|
19
|
+
export { Ed25519Signer } from './auth.js';
|
|
20
|
+
export { MoltBridgeError, AuthenticationError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, } from './errors.js';
|
|
21
|
+
export type { MoltBridgeConfig, HealthResponse, VerificationChallenge, VerificationResult, AgentNode, RegistrationResponse, BrokerResult, BrokerDiscoveryResponse, CapabilityMatch, CapabilityMatchResponse, CredibilityPacketResponse, AttestationResult, IQSResult, ConsentStatus, ConsentRecord, AgentBalance, LedgerEntry, WebhookRegistration, PricingInfo, RegisterOptions, DiscoverBrokerOptions, DiscoverCapabilityOptions, AttestOptions, IQSEvaluateOptions, WebhookEventType, } from './types.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — Professional network intelligence for AI agents
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { MoltBridge } from '@moltbridge/sdk';
|
|
7
|
+
*
|
|
8
|
+
* const mb = new MoltBridge();
|
|
9
|
+
* await mb.verify();
|
|
10
|
+
* await mb.register({ name: 'my-agent', capabilities: ['NLP'] });
|
|
11
|
+
*
|
|
12
|
+
* const brokers = await mb.discoverBroker({ target: 'Peter Diamandis' });
|
|
13
|
+
* const matches = await mb.discoverCapability({ needs: ['space-tech'] });
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
export { MoltBridge } from './client.js';
|
|
19
|
+
export { Ed25519Signer } from './auth.js';
|
|
20
|
+
export { MoltBridgeError, AuthenticationError, ValidationError, NotFoundError, ConflictError, RateLimitError, ServiceUnavailableError, } from './errors.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoltBridge SDK — TypeScript Types
|
|
3
|
+
*/
|
|
4
|
+
export interface MoltBridgeConfig {
|
|
5
|
+
/** Agent ID for authenticated requests */
|
|
6
|
+
agentId?: string;
|
|
7
|
+
/** Ed25519 signing key seed (hex-encoded) */
|
|
8
|
+
signingKey?: string;
|
|
9
|
+
/** Base URL of MoltBridge API (default: https://api.moltbridge.ai) */
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
/** Request timeout in ms (default: 30000) */
|
|
12
|
+
timeout?: number;
|
|
13
|
+
/** Max retry attempts (default: 3) */
|
|
14
|
+
maxRetries?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface HealthResponse {
|
|
17
|
+
name: string;
|
|
18
|
+
version: string;
|
|
19
|
+
status: 'healthy' | 'degraded';
|
|
20
|
+
uptime: number;
|
|
21
|
+
neo4j: {
|
|
22
|
+
connected: boolean;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface VerificationChallenge {
|
|
26
|
+
challenge_id: string;
|
|
27
|
+
nonce: string;
|
|
28
|
+
difficulty: number;
|
|
29
|
+
timestamp: string;
|
|
30
|
+
}
|
|
31
|
+
export interface VerificationResult {
|
|
32
|
+
verified: boolean;
|
|
33
|
+
token: string;
|
|
34
|
+
}
|
|
35
|
+
export interface AgentNode {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
platform: string;
|
|
39
|
+
trust_score: number;
|
|
40
|
+
capabilities: string[];
|
|
41
|
+
verified_at: string | null;
|
|
42
|
+
pubkey: string;
|
|
43
|
+
a2a_endpoint?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface RegistrationResponse {
|
|
46
|
+
agent: AgentNode;
|
|
47
|
+
consents_granted: string[];
|
|
48
|
+
disclosures_acknowledged: {
|
|
49
|
+
omniscience: string;
|
|
50
|
+
article22: boolean;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export interface BrokerResult {
|
|
54
|
+
broker_agent_id: string;
|
|
55
|
+
broker_name: string;
|
|
56
|
+
broker_trust_score: number;
|
|
57
|
+
path_hops: number;
|
|
58
|
+
via_clusters: string[];
|
|
59
|
+
composite_score: number;
|
|
60
|
+
}
|
|
61
|
+
export interface BrokerDiscoveryResponse {
|
|
62
|
+
results: BrokerResult[];
|
|
63
|
+
query_time_ms: number;
|
|
64
|
+
path_found: boolean;
|
|
65
|
+
message?: string;
|
|
66
|
+
discovery_hint?: string;
|
|
67
|
+
error?: {
|
|
68
|
+
code: string;
|
|
69
|
+
message: string;
|
|
70
|
+
status: number;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export interface CapabilityMatch {
|
|
74
|
+
agent_id: string;
|
|
75
|
+
agent_name: string;
|
|
76
|
+
trust_score: number;
|
|
77
|
+
matched_capabilities: string[];
|
|
78
|
+
match_score: number;
|
|
79
|
+
}
|
|
80
|
+
export interface CapabilityMatchResponse {
|
|
81
|
+
results: CapabilityMatch[];
|
|
82
|
+
query_time_ms: number;
|
|
83
|
+
discovery_hint?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface CredibilityPacketResponse {
|
|
86
|
+
packet: string;
|
|
87
|
+
expires_in: number;
|
|
88
|
+
verify_url: string;
|
|
89
|
+
}
|
|
90
|
+
export interface AttestationResult {
|
|
91
|
+
attestation: {
|
|
92
|
+
source: string;
|
|
93
|
+
target: string;
|
|
94
|
+
type: string;
|
|
95
|
+
confidence: number;
|
|
96
|
+
created_at: string;
|
|
97
|
+
valid_until: string;
|
|
98
|
+
};
|
|
99
|
+
target_trust_score: number;
|
|
100
|
+
}
|
|
101
|
+
export interface IQSResult {
|
|
102
|
+
band: 'low' | 'medium' | 'high';
|
|
103
|
+
recommendation: string;
|
|
104
|
+
threshold_used: number;
|
|
105
|
+
is_probationary: boolean;
|
|
106
|
+
components_received: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface ConsentStatus {
|
|
109
|
+
agent_id: string;
|
|
110
|
+
consents: Record<string, boolean>;
|
|
111
|
+
last_updated: string | null;
|
|
112
|
+
descriptions: Record<string, string>;
|
|
113
|
+
}
|
|
114
|
+
export interface ConsentRecord {
|
|
115
|
+
agent_id: string;
|
|
116
|
+
purpose: string;
|
|
117
|
+
granted: boolean;
|
|
118
|
+
version: number;
|
|
119
|
+
granted_at: string | null;
|
|
120
|
+
withdrawn_at: string | null;
|
|
121
|
+
}
|
|
122
|
+
export interface AgentBalance {
|
|
123
|
+
agent_id: string;
|
|
124
|
+
balance: number;
|
|
125
|
+
broker_tier: string;
|
|
126
|
+
}
|
|
127
|
+
export interface LedgerEntry {
|
|
128
|
+
id: string;
|
|
129
|
+
type: 'credit' | 'debit';
|
|
130
|
+
amount: number;
|
|
131
|
+
description: string;
|
|
132
|
+
timestamp: string;
|
|
133
|
+
}
|
|
134
|
+
export interface WebhookRegistration {
|
|
135
|
+
agent_id: string;
|
|
136
|
+
endpoint_url: string;
|
|
137
|
+
event_types: string[];
|
|
138
|
+
active: boolean;
|
|
139
|
+
last_delivery_at?: string;
|
|
140
|
+
failure_count: number;
|
|
141
|
+
}
|
|
142
|
+
export interface PricingInfo {
|
|
143
|
+
broker_discovery: number;
|
|
144
|
+
capability_match: number;
|
|
145
|
+
credibility_packet: number;
|
|
146
|
+
introduction_fee: number;
|
|
147
|
+
currency: string;
|
|
148
|
+
}
|
|
149
|
+
export interface RegisterOptions {
|
|
150
|
+
agentId: string;
|
|
151
|
+
name: string;
|
|
152
|
+
platform: string;
|
|
153
|
+
pubkey: string;
|
|
154
|
+
capabilities?: string[];
|
|
155
|
+
clusters?: string[];
|
|
156
|
+
a2aEndpoint?: string;
|
|
157
|
+
verificationToken: string;
|
|
158
|
+
omniscienceAcknowledged?: boolean;
|
|
159
|
+
article22Consent?: boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface DiscoverBrokerOptions {
|
|
162
|
+
target: string;
|
|
163
|
+
maxHops?: number;
|
|
164
|
+
maxResults?: number;
|
|
165
|
+
}
|
|
166
|
+
export interface DiscoverCapabilityOptions {
|
|
167
|
+
needs: string[];
|
|
168
|
+
minTrust?: number;
|
|
169
|
+
maxResults?: number;
|
|
170
|
+
}
|
|
171
|
+
export interface AttestOptions {
|
|
172
|
+
targetAgentId: string;
|
|
173
|
+
attestationType: 'CAPABILITY' | 'IDENTITY' | 'INTERACTION';
|
|
174
|
+
capabilityTag?: string;
|
|
175
|
+
confidence: number;
|
|
176
|
+
}
|
|
177
|
+
export interface IQSEvaluateOptions {
|
|
178
|
+
targetId: string;
|
|
179
|
+
requesterCapabilities?: string[];
|
|
180
|
+
targetCapabilities?: string[];
|
|
181
|
+
brokerSuccessCount?: number;
|
|
182
|
+
brokerTotalIntros?: number;
|
|
183
|
+
hops?: number;
|
|
184
|
+
}
|
|
185
|
+
export type WebhookEventType = 'introduction_request' | 'attestation_received' | 'trust_score_changed' | 'outcome_reported' | 'iqs_guidance';
|
|
186
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "moltbridge",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "MoltBridge SDK — Professional network intelligence for AI agents",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"test": "vitest run",
|
|
17
|
+
"test:watch": "vitest"
|
|
18
|
+
},
|
|
19
|
+
"files": ["dist"],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@noble/ed25519": "^2.2.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^5.7.3",
|
|
25
|
+
"vitest": "^4.0.18",
|
|
26
|
+
"@types/node": "^22.12.0"
|
|
27
|
+
},
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=18"
|
|
30
|
+
},
|
|
31
|
+
"keywords": ["moltbridge", "ai-agents", "network-intelligence", "ed25519"],
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/SageMindAI/moltbridge.git",
|
|
36
|
+
"directory": "sdk/js"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://moltbridge.ai",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/SageMindAI/moltbridge/issues"
|
|
41
|
+
}
|
|
42
|
+
}
|