oceanbus 0.3.0 → 0.3.2
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 +45 -1
- package/dist/agent/identity.d.ts.map +1 -1
- package/dist/agent/identity.js +7 -3
- package/dist/agent/identity.js.map +1 -1
- package/dist/client/http-client.d.ts +1 -0
- package/dist/client/http-client.d.ts.map +1 -1
- package/dist/client/http-client.js +25 -0
- package/dist/client/http-client.js.map +1 -1
- package/package.json +15 -5
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Real-world skills built on OceanBus. Install to play, or read the source to lear
|
|
|
60
60
|
|---------|-------------|-----------|---------|
|
|
61
61
|
| **Ocean Chat** | Two agents negotiate meetup locations via P2P messaging | `send`, `startListening`, contacts, Yellow Pages publish/discover | `clawhub install ocean-chat` |
|
|
62
62
|
| **Lobster Captain** | Zero-player trading game — your AI captain trades autonomously | Full L0+L1 stack, Ed25519, persistent agent, Yellow Pages, scheduling | `clawhub install captain-lobster` |
|
|
63
|
-
| **Guess AI**
|
|
63
|
+
| **Guess AI** | Social deduction game — find the AI impostor among humans | Group P2P, voting, Yellow Pages room discovery, LLM game master | `clawhub install guess-ai` |
|
|
64
64
|
|
|
65
65
|
Each lighthouse is a complete, working reference for building your own OceanBus-powered agent. Ocean Chat source: [github.com/ryanbihai/ocean-chat](https://github.com/ryanbihai/ocean-chat)
|
|
66
66
|
|
|
@@ -72,6 +72,10 @@ Each lighthouse is a complete, working reference for building your own OceanBus-
|
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
74
|
npm install oceanbus
|
|
75
|
+
# or
|
|
76
|
+
bun add oceanbus
|
|
77
|
+
# or
|
|
78
|
+
pnpm add oceanbus
|
|
75
79
|
```
|
|
76
80
|
|
|
77
81
|
```javascript
|
|
@@ -100,6 +104,20 @@ async function main() {
|
|
|
100
104
|
// The platform cannot read your messages — XChaCha20-Poly1305 blind transport.
|
|
101
105
|
await ob.send('target-openid-here', 'Hello from my agent!');
|
|
102
106
|
|
|
107
|
+
// Discover services via Yellow Pages
|
|
108
|
+
const results = await ob.l1.yellowPages.discover(['food-delivery']);
|
|
109
|
+
console.log('Found', results.data.entries.length, 'delivery agents');
|
|
110
|
+
|
|
111
|
+
// Check reputation before transacting
|
|
112
|
+
const profiles = await ob.l1.reputation.queryReputation(
|
|
113
|
+
results.data.entries.map(e => e.openid)
|
|
114
|
+
);
|
|
115
|
+
console.log('Reputation profiles:', profiles);
|
|
116
|
+
|
|
117
|
+
// Sign a transaction with Ed25519
|
|
118
|
+
const sig = await ob.crypto.sign(myKeypair, { offer: 'accept', amount: 100 });
|
|
119
|
+
console.log('Transaction signed:', sig.slice(0, 32) + '...');
|
|
120
|
+
|
|
103
121
|
// Clean shutdown
|
|
104
122
|
// await ob.destroy();
|
|
105
123
|
}
|
|
@@ -109,6 +127,23 @@ main();
|
|
|
109
127
|
|
|
110
128
|
---
|
|
111
129
|
|
|
130
|
+
## Core Concepts
|
|
131
|
+
|
|
132
|
+
OceanBus is organized into six composable layers. Each is optional — use only what you need.
|
|
133
|
+
|
|
134
|
+
| # | Concept | What it solves |
|
|
135
|
+
|---|---------|---------------|
|
|
136
|
+
| 1 | **Agent Identity** | `ob.register()` → permanent global address. Ed25519 key pair. No domain, no DNS, no SSL. |
|
|
137
|
+
| 2 | **End-to-End Encryption** | XChaCha20-Poly1305 blind routing. The OceanBus relay cannot read your messages. Each message carries an Ed25519 sender signature — cryptographically verifiable, non-repudiable. |
|
|
138
|
+
| 3 | **Global Mailbox** | Sequence-based message delivery with implicit ACK. 2s HTTP polling works behind every firewall. Messages auto-expire after 72h — OceanBus is a pipe, not cloud storage. |
|
|
139
|
+
| 4 | **Yellow Pages** | Publish with tags + freeform description. Discover by tag. Auto-heartbeat keeps listings fresh. 90-day TTL without heartbeat. |
|
|
140
|
+
| 5 | **Reputation** | Cryptographic label graph. Query tag distributions, tagger profiles, and communication topology. OceanBus shows evidence — your AI decides who to trust. UUID-level binding means changing OpenID doesn't escape reputation. |
|
|
141
|
+
| 6 | **Security Interceptors** | Plug in your own AI fraud detector. Priority-ordered pipeline. Built-in LLM interceptor for automatic tagging. |
|
|
142
|
+
|
|
143
|
+
> **Philosophy**: OceanBus is a protocol layer, not a platform. It provides identity, encrypted routing, discovery, and trust signals. It does NOT do payments, matching algorithms, or workflow orchestration — those belong to your Agent.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
112
147
|
## What's Inside
|
|
113
148
|
|
|
114
149
|
Organized by what you need — not by module structure.
|
|
@@ -242,6 +277,15 @@ const ob = await createOceanBus({
|
|
|
242
277
|
|
|
243
278
|
---
|
|
244
279
|
|
|
280
|
+
## Get Help
|
|
281
|
+
|
|
282
|
+
- [GitHub Issues](https://github.com/oceanbus/oceanbus/issues) — bug reports & feature requests
|
|
283
|
+
- [OceanBus Docs](https://github.com/oceanbus/oceanbus/tree/main/OceanBusDocs) — API reference, design docs, publishing guide
|
|
284
|
+
- [ClawHub Collection](https://clawhub.ai/skills?search=oceanbus) — browse all OceanBus skills
|
|
285
|
+
- [npm Package](https://www.npmjs.com/package/oceanbus) — releases & download stats
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
245
289
|
## License
|
|
246
290
|
|
|
247
291
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ/E,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,WAAW,CAAuB;gBAE9B,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM/D,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAMlD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ/E,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,WAAW,CAAuB;gBAE9B,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM/D,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAMlD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA4BrC,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAO7B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAM5B,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAQ7C,OAAO,IAAI,UAAU;IAWrB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOlC,aAAa,CAAC,GAAG,EAAE,OAAO,gBAAgB,EAAE,UAAU,GAAG,IAAI;IAI7D,OAAO,CAAC,UAAU;CAKnB"}
|
package/dist/agent/identity.js
CHANGED
|
@@ -32,11 +32,15 @@ class AgentIdentityManager {
|
|
|
32
32
|
async register() {
|
|
33
33
|
// First attempt: server may respond with 401 + POW challenge
|
|
34
34
|
let res = await this.http.post('/agents/register', {});
|
|
35
|
-
// POW challenge: HTTP 401 with data.challenge
|
|
35
|
+
// POW challenge: HTTP 401 with data.challenge
|
|
36
36
|
const challengeData = res.data?.challenge;
|
|
37
37
|
if (challengeData?.nonce) {
|
|
38
|
-
const { nonce } = challengeData;
|
|
39
|
-
const
|
|
38
|
+
const { nonce, difficulty } = challengeData;
|
|
39
|
+
const actualDifficulty = difficulty ?? 5;
|
|
40
|
+
console.warn(`[oceanbus] Computing proof of work (difficulty=${actualDifficulty})...`);
|
|
41
|
+
const startedAt = Date.now();
|
|
42
|
+
const { solution } = (0, pow_1.computeHashcash)(nonce, actualDifficulty);
|
|
43
|
+
console.warn(`[oceanbus] POW solved in ${((Date.now() - startedAt) / 1000).toFixed(1)}s`);
|
|
40
44
|
res = await this.http.post('/agents/register', { challenge: nonce, solution });
|
|
41
45
|
}
|
|
42
46
|
const data = res.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":";;;AAEA,6CAAiD;AACjD,uCAAgD;AAMhD,MAAa,oBAAoB;IACvB,IAAI,CAAa;IACjB,MAAM,CAAgB;IACtB,OAAO,CAAgB;IACvB,SAAS,GAA0C,EAAE,CAAC;IACtD,WAAW,GAAkB,IAAI,CAAC;IAE1C,YAAY,IAAgB,EAAE,MAAe,EAAE,OAAgB;QAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,MAAc,EAAE,OAAgB;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,0BAA0B;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,6DAA6D;QAC7D,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAE7F,
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class HttpClient {
|
|
|
13
13
|
constructor(baseUrl: string, config: HttpConfig);
|
|
14
14
|
private url;
|
|
15
15
|
private req;
|
|
16
|
+
private checkDeprecated;
|
|
16
17
|
request<T = unknown>(method: HttpMethod, path: string, body?: unknown, opts?: RequestOptions): Promise<ApiResponse<T>>;
|
|
17
18
|
get<T = unknown>(path: string, opts?: RequestOptions): Promise<ApiResponse<T>>;
|
|
18
19
|
post<T = unknown>(path: string, body?: unknown, opts?: RequestOptions): Promise<ApiResponse<T>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AActC,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CACrD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,WAAW,EAAE,WAAW,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM/C,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,GAAG;IA8BX,OAAO,CAAC,eAAe;IAUjB,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA+CpB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAIlF,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAInG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAIlG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAGzF"}
|
|
@@ -37,6 +37,17 @@ exports.HttpClient = void 0;
|
|
|
37
37
|
const request = __importStar(require("superagent"));
|
|
38
38
|
const errors_1 = require("./errors");
|
|
39
39
|
const retry_1 = require("./retry");
|
|
40
|
+
// SDK version — read from package.json at build time
|
|
41
|
+
const SDK_VERSION = (() => {
|
|
42
|
+
try {
|
|
43
|
+
return require('../../package.json').version;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return '0.0.0';
|
|
47
|
+
}
|
|
48
|
+
})();
|
|
49
|
+
// Only warn once per process
|
|
50
|
+
let _deprecatedWarned = false;
|
|
40
51
|
class HttpClient {
|
|
41
52
|
baseUrl;
|
|
42
53
|
timeout;
|
|
@@ -71,6 +82,8 @@ class HttpClient {
|
|
|
71
82
|
default: throw new Error(`unsupported HTTP method: ${method}`);
|
|
72
83
|
}
|
|
73
84
|
r = r.timeout(this.timeout).ok(() => true);
|
|
85
|
+
// Send SDK version so server can detect outdated clients
|
|
86
|
+
r = r.set('X-OceanBus-SDK-Version', SDK_VERSION);
|
|
74
87
|
if (opts.apiKey) {
|
|
75
88
|
r = r.set('Authorization', `Bearer ${opts.apiKey}`);
|
|
76
89
|
}
|
|
@@ -82,6 +95,16 @@ class HttpClient {
|
|
|
82
95
|
}
|
|
83
96
|
return r;
|
|
84
97
|
}
|
|
98
|
+
checkDeprecated(res) {
|
|
99
|
+
if (_deprecatedWarned)
|
|
100
|
+
return;
|
|
101
|
+
const msg = res.headers['x-oceanbus-deprecated'];
|
|
102
|
+
if (msg) {
|
|
103
|
+
_deprecatedWarned = true;
|
|
104
|
+
console.warn('[oceanbus] ⚠ Your SDK version is deprecated:', msg);
|
|
105
|
+
console.warn('[oceanbus] Upgrade: npm install oceanbus@latest');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
85
108
|
async request(method, path, body, opts = {}) {
|
|
86
109
|
const doRequest = async () => {
|
|
87
110
|
let r = this.req(method, path, opts);
|
|
@@ -96,6 +119,8 @@ class HttpClient {
|
|
|
96
119
|
const e = err;
|
|
97
120
|
throw new errors_1.NetworkError(`HTTP request failed: ${e.message}`, e);
|
|
98
121
|
}
|
|
122
|
+
// Check for deprecation warning from server
|
|
123
|
+
this.checkDeprecated(res);
|
|
99
124
|
// HTTP 401 with challenge data = POW required (registration flow)
|
|
100
125
|
// Return raw response so caller can extract nonce and compute solution
|
|
101
126
|
if (res.status === 401) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AAGtC,qCAAkD;AAClD,mCAAsC;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oceanbus",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "OceanBus AI Agent Communication & Trust Infrastructure SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,13 +18,23 @@
|
|
|
18
18
|
"oceanbus",
|
|
19
19
|
"agent",
|
|
20
20
|
"ai-agent",
|
|
21
|
+
"agent-communication",
|
|
22
|
+
"multi-agent",
|
|
23
|
+
"p2p",
|
|
21
24
|
"messaging",
|
|
22
|
-
"
|
|
25
|
+
"end-to-end-encryption",
|
|
26
|
+
"e2ee",
|
|
27
|
+
"encryption",
|
|
28
|
+
"xchacha20",
|
|
29
|
+
"ed25519",
|
|
30
|
+
"identity",
|
|
23
31
|
"trust",
|
|
24
32
|
"reputation",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
33
|
+
"anti-fraud",
|
|
34
|
+
"decentralized",
|
|
35
|
+
"service-discovery",
|
|
36
|
+
"yellow-pages",
|
|
37
|
+
"secure-chat"
|
|
28
38
|
],
|
|
29
39
|
"license": "MIT",
|
|
30
40
|
"files": [
|