oceanbus 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/LICENSE +21 -0
- package/README.md +171 -0
- package/bin/oceanbus.js +28 -0
- package/dist/agent/identity.d.ts +23 -0
- package/dist/agent/identity.d.ts.map +1 -0
- package/dist/agent/identity.js +84 -0
- package/dist/agent/identity.js.map +1 -0
- package/dist/agent/index.d.ts +4 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +11 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/keys.d.ts +11 -0
- package/dist/agent/keys.d.ts.map +1 -0
- package/dist/agent/keys.js +50 -0
- package/dist/agent/keys.js.map +1 -0
- package/dist/agent/store.d.ts +23 -0
- package/dist/agent/store.d.ts.map +1 -0
- package/dist/agent/store.js +89 -0
- package/dist/agent/store.js.map +1 -0
- package/dist/cli/commands/block.d.ts +3 -0
- package/dist/cli/commands/block.d.ts.map +1 -0
- package/dist/cli/commands/block.js +25 -0
- package/dist/cli/commands/block.js.map +1 -0
- package/dist/cli/commands/key-new.d.ts +3 -0
- package/dist/cli/commands/key-new.d.ts.map +1 -0
- package/dist/cli/commands/key-new.js +21 -0
- package/dist/cli/commands/key-new.js.map +1 -0
- package/dist/cli/commands/key-revoke.d.ts +3 -0
- package/dist/cli/commands/key-revoke.d.ts.map +1 -0
- package/dist/cli/commands/key-revoke.js +25 -0
- package/dist/cli/commands/key-revoke.js.map +1 -0
- package/dist/cli/commands/keygen.d.ts +3 -0
- package/dist/cli/commands/keygen.d.ts.map +1 -0
- package/dist/cli/commands/keygen.js +20 -0
- package/dist/cli/commands/keygen.js.map +1 -0
- package/dist/cli/commands/listen.d.ts +3 -0
- package/dist/cli/commands/listen.d.ts.map +1 -0
- package/dist/cli/commands/listen.js +45 -0
- package/dist/cli/commands/listen.js.map +1 -0
- package/dist/cli/commands/openid.d.ts +3 -0
- package/dist/cli/commands/openid.d.ts.map +1 -0
- package/dist/cli/commands/openid.js +20 -0
- package/dist/cli/commands/openid.js.map +1 -0
- package/dist/cli/commands/register.d.ts +3 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +21 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/send.d.ts +3 -0
- package/dist/cli/commands/send.d.ts.map +1 -0
- package/dist/cli/commands/send.js +61 -0
- package/dist/cli/commands/send.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +3 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +20 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +37 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/program.d.ts +1 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +4 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/client/errors.d.ts +16 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +42 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/http-client.d.ts +23 -0
- package/dist/client/http-client.d.ts.map +1 -0
- package/dist/client/http-client.js +130 -0
- package/dist/client/http-client.js.map +1 -0
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +12 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/retry.d.ts +14 -0
- package/dist/client/retry.d.ts.map +1 -0
- package/dist/client/retry.js +53 -0
- package/dist/client/retry.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +39 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +9 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +106 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/crypto/canonical-json.d.ts +2 -0
- package/dist/crypto/canonical-json.d.ts.map +1 -0
- package/dist/crypto/canonical-json.js +39 -0
- package/dist/crypto/canonical-json.js.map +1 -0
- package/dist/crypto/ed25519.d.ts +12 -0
- package/dist/crypto/ed25519.d.ts.map +1 -0
- package/dist/crypto/ed25519.js +101 -0
- package/dist/crypto/ed25519.js.map +1 -0
- package/dist/crypto/index.d.ts +4 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +17 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/pow.d.ts +5 -0
- package/dist/crypto/pow.d.ts.map +1 -0
- package/dist/crypto/pow.js +16 -0
- package/dist/crypto/pow.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +269 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/chain.d.ts +33 -0
- package/dist/interceptors/chain.d.ts.map +1 -0
- package/dist/interceptors/chain.js +32 -0
- package/dist/interceptors/chain.js.map +1 -0
- package/dist/interceptors/index.d.ts +5 -0
- package/dist/interceptors/index.d.ts.map +1 -0
- package/dist/interceptors/index.js +10 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/llm.d.ts +13 -0
- package/dist/interceptors/llm.d.ts.map +1 -0
- package/dist/interceptors/llm.js +21 -0
- package/dist/interceptors/llm.js.map +1 -0
- package/dist/l1/base-client.d.ts +17 -0
- package/dist/l1/base-client.d.ts.map +1 -0
- package/dist/l1/base-client.js +40 -0
- package/dist/l1/base-client.js.map +1 -0
- package/dist/l1/ca.d.ts +16 -0
- package/dist/l1/ca.d.ts.map +1 -0
- package/dist/l1/ca.js +92 -0
- package/dist/l1/ca.js.map +1 -0
- package/dist/l1/dispatcher.d.ts +15 -0
- package/dist/l1/dispatcher.d.ts.map +1 -0
- package/dist/l1/dispatcher.js +68 -0
- package/dist/l1/dispatcher.js.map +1 -0
- package/dist/l1/index.d.ts +7 -0
- package/dist/l1/index.d.ts.map +1 -0
- package/dist/l1/index.js +14 -0
- package/dist/l1/index.js.map +1 -0
- package/dist/l1/reputation.d.ts +14 -0
- package/dist/l1/reputation.d.ts.map +1 -0
- package/dist/l1/reputation.js +48 -0
- package/dist/l1/reputation.js.map +1 -0
- package/dist/l1/yellow-pages.d.ts +16 -0
- package/dist/l1/yellow-pages.d.ts.map +1 -0
- package/dist/l1/yellow-pages.js +71 -0
- package/dist/l1/yellow-pages.js.map +1 -0
- package/dist/mailbox/cursor.d.ts +11 -0
- package/dist/mailbox/cursor.d.ts.map +1 -0
- package/dist/mailbox/cursor.js +79 -0
- package/dist/mailbox/cursor.js.map +1 -0
- package/dist/mailbox/index.d.ts +5 -0
- package/dist/mailbox/index.d.ts.map +1 -0
- package/dist/mailbox/index.js +10 -0
- package/dist/mailbox/index.js.map +1 -0
- package/dist/mailbox/poller.d.ts +18 -0
- package/dist/mailbox/poller.d.ts.map +1 -0
- package/dist/mailbox/poller.js +64 -0
- package/dist/mailbox/poller.js.map +1 -0
- package/dist/mailbox/sync.d.ts +13 -0
- package/dist/mailbox/sync.d.ts.map +1 -0
- package/dist/mailbox/sync.js +60 -0
- package/dist/mailbox/sync.js.map +1 -0
- package/dist/messaging/blocklist.d.ts +17 -0
- package/dist/messaging/blocklist.d.ts.map +1 -0
- package/dist/messaging/blocklist.js +110 -0
- package/dist/messaging/blocklist.js.map +1 -0
- package/dist/messaging/idgen.d.ts +3 -0
- package/dist/messaging/idgen.d.ts.map +1 -0
- package/dist/messaging/idgen.js +45 -0
- package/dist/messaging/idgen.js.map +1 -0
- package/dist/messaging/index.d.ts +4 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +11 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/send.d.ts +9 -0
- package/dist/messaging/send.d.ts.map +1 -0
- package/dist/messaging/send.js +55 -0
- package/dist/messaging/send.js.map +1 -0
- package/dist/quota/index.d.ts +2 -0
- package/dist/quota/index.d.ts.map +1 -0
- package/dist/quota/index.js +6 -0
- package/dist/quota/index.js.map +1 -0
- package/dist/quota/manager.d.ts +25 -0
- package/dist/quota/manager.d.ts.map +1 -0
- package/dist/quota/manager.js +118 -0
- package/dist/quota/manager.js.map +1 -0
- package/dist/types/agent.d.ts +19 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/api.d.ts +17 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +27 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +57 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/crypto.d.ts +39 -0
- package/dist/types/crypto.d.ts.map +1 -0
- package/dist/types/crypto.js +3 -0
- package/dist/types/crypto.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/l1.d.ts +129 -0
- package/dist/types/l1.d.ts.map +1 -0
- package/dist/types/l1.js +5 -0
- package/dist/types/l1.js.map +1 -0
- package/dist/types/messaging.d.ts +30 -0
- package/dist/types/messaging.d.ts.map +1 -0
- package/dist/types/messaging.js +3 -0
- package/dist/types/messaging.js.map +1 -0
- package/package.json +52 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OceanBus
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# OceanBus SDK
|
|
2
|
+
|
|
3
|
+
AI Agent 通信与信任基础设施 Node.js SDK。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install oceanbus
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 快速开始
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
const { createOceanBus } = require('oceanbus');
|
|
15
|
+
|
|
16
|
+
async function main() {
|
|
17
|
+
// 创建实例(自动加载本地持久化身份)
|
|
18
|
+
const ob = await createOceanBus();
|
|
19
|
+
|
|
20
|
+
// 首次使用需要注册
|
|
21
|
+
await ob.register();
|
|
22
|
+
|
|
23
|
+
// 获取你的收件地址
|
|
24
|
+
const myOpenid = await ob.getOpenId();
|
|
25
|
+
|
|
26
|
+
// 发送消息
|
|
27
|
+
await ob.send(targetOpenid, 'Hello OceanBus!');
|
|
28
|
+
|
|
29
|
+
// 监听收件
|
|
30
|
+
const stop = ob.startListening((msg) => {
|
|
31
|
+
console.log(`[${msg.seq_id}] ${msg.from_openid}: ${msg.content}`);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// 退出时清理
|
|
35
|
+
await ob.destroy();
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 配置
|
|
40
|
+
|
|
41
|
+
OceanBus 支持四层配置覆盖(高优先级覆盖低优先级):
|
|
42
|
+
|
|
43
|
+
1. 编译默认值
|
|
44
|
+
2. `~/.oceanbus/config.yaml`
|
|
45
|
+
3. 环境变量(`OCEANBUS_*`)
|
|
46
|
+
4. 构造函数参数
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
const ob = await createOceanBus({
|
|
50
|
+
baseUrl: 'https://prod.example.com/api/l0', // 切换生产服
|
|
51
|
+
http: { timeout: 15000 },
|
|
52
|
+
quota: { dailyLimit: 500 },
|
|
53
|
+
});
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
| 环境变量 | 说明 |
|
|
57
|
+
|----------|------|
|
|
58
|
+
| `OCEANBUS_BASE_URL` | L0 API 地址 |
|
|
59
|
+
| `OCEANBUS_DAILY_LIMIT` | 每日消息配额上限 |
|
|
60
|
+
| `OCEANBUS_TIMEOUT` | HTTP 超时(毫秒) |
|
|
61
|
+
| `OCEANBUS_POLL_INTERVAL` | 轮询间隔(毫秒) |
|
|
62
|
+
| `OCEANBUS_API_KEY` | API Key |
|
|
63
|
+
| `OCEANBUS_AGENT_ID` | Agent ID |
|
|
64
|
+
|
|
65
|
+
## CLI
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
oceanbus register # 注册新 Agent
|
|
69
|
+
oceanbus whoami # 查看当前身份
|
|
70
|
+
oceanbus openid # 获取当前 OpenID
|
|
71
|
+
oceanbus send <openid> # 发送消息(支持管道输入)
|
|
72
|
+
oceanbus listen # 监听收件
|
|
73
|
+
oceanbus block <openid> # 屏蔽发送者
|
|
74
|
+
oceanbus keygen # 生成 Ed25519 密钥对
|
|
75
|
+
oceanbus key new # 创建新 API Key
|
|
76
|
+
oceanbus key revoke <key_id> # 吊销 API Key
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## API 概览
|
|
80
|
+
|
|
81
|
+
### 身份与密钥
|
|
82
|
+
|
|
83
|
+
```javascript
|
|
84
|
+
await ob.register(); // 注册新 Agent
|
|
85
|
+
await ob.whoami(); // 查看身份和 OpenID
|
|
86
|
+
await ob.getOpenId(); // 获取当前 OpenID
|
|
87
|
+
await ob.createApiKey(); // 创建新 API Key
|
|
88
|
+
await ob.revokeApiKey('key_id'); // 吊销 API Key
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 消息收发
|
|
92
|
+
|
|
93
|
+
```javascript
|
|
94
|
+
await ob.send(openid, 'Hello'); // 发送消息
|
|
95
|
+
await ob.sendJson(openid, { action: 'test' }); // 发送 JSON
|
|
96
|
+
await ob.sync(sinceSeq, limit); // 手动同步消息
|
|
97
|
+
|
|
98
|
+
const stop = ob.startListening((msg) => { // 自动监听
|
|
99
|
+
console.log(msg.content);
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 黑名单与反查
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
await ob.blockSender(fromOpenid); // 屏蔽
|
|
107
|
+
await ob.unblockSender(fromOpenid); // 解除屏蔽
|
|
108
|
+
ob.isBlocked(fromOpenid); // 检查是否已屏蔽
|
|
109
|
+
await ob.reverseLookup(openid); // 反查 OpenID 真实 ID
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 密码学(Ed25519)
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
const kp = await ob.crypto.generateKeypair();
|
|
116
|
+
const sig = await ob.crypto.sign(kp, { action: 'pay', amount: 100 });
|
|
117
|
+
const valid = await ob.crypto.verify(kp.publicKey, { action: 'pay', amount: 100 }, sig);
|
|
118
|
+
const canon = ob.crypto.canonicalize({ z: 1, a: 2 }); // {"a":2,"z":1}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 拦截器
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
ob.interceptors.register({
|
|
125
|
+
name: 'fraud-detector',
|
|
126
|
+
priority: 100,
|
|
127
|
+
evaluate: async (msg, ctx) => {
|
|
128
|
+
if (msg.content.includes('钓鱼')) {
|
|
129
|
+
return { action: 'block', reason: 'phishing detected' };
|
|
130
|
+
}
|
|
131
|
+
return { action: 'pass' };
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 配额
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
const usage = ob.quota.getDailyUsage();
|
|
140
|
+
// { used: 10, limit: 100, remaining: 90 }
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 测试
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm test # 全部测试(单元 + 端到端)
|
|
147
|
+
npm run test:unit # 仅单元测试(Jest,86 个用例)
|
|
148
|
+
npm run test:e2e # 仅端到端测试(32 个用例)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 服务器迁移
|
|
152
|
+
|
|
153
|
+
切换服务器只需修改 `baseUrl`:
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
const ob = await createOceanBus({
|
|
157
|
+
baseUrl: 'https://prod.oceanbus.com/api/l0'
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
或通过环境变量:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
export OCEANBUS_BASE_URL=https://prod.oceanbus.com/api/l0
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
L0 API 接口规范不变的前提下,SDK 代码无需任何改动。
|
|
168
|
+
|
|
169
|
+
## License
|
|
170
|
+
|
|
171
|
+
MIT
|
package/bin/oceanbus.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// OceanBus CLI entry point
|
|
3
|
+
// After tsc compiles, this file requires dist/cli/index.js
|
|
4
|
+
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
|
|
8
|
+
// Determine the source root: bin/ lives next to dist/
|
|
9
|
+
const distRoot = path.join(__dirname, '..', 'dist');
|
|
10
|
+
const cliEntry = path.join(distRoot, 'cli', 'index.js');
|
|
11
|
+
|
|
12
|
+
if (fs.existsSync(cliEntry)) {
|
|
13
|
+
const { runCli } = require(cliEntry);
|
|
14
|
+
runCli();
|
|
15
|
+
} else {
|
|
16
|
+
// Development mode: try ts-node or fallback
|
|
17
|
+
try {
|
|
18
|
+
require('ts-node').register({
|
|
19
|
+
project: path.join(__dirname, '..', 'tsconfig.json'),
|
|
20
|
+
});
|
|
21
|
+
const { runCli } = require(path.join(__dirname, '..', 'src', 'cli', 'index'));
|
|
22
|
+
runCli();
|
|
23
|
+
} catch (tsErr) {
|
|
24
|
+
console.error('OceanBus CLI is not built. Run `npx tsc` first.');
|
|
25
|
+
console.error('Or install ts-node: npm install -g ts-node');
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HttpClient } from '../client/http-client';
|
|
2
|
+
import type { RegistrationData, OpenIDData, AgentState } from '../types/agent';
|
|
3
|
+
export declare class AgentIdentityManager {
|
|
4
|
+
private http;
|
|
5
|
+
private apiKey;
|
|
6
|
+
private agentId;
|
|
7
|
+
private extraKeys;
|
|
8
|
+
private openidCache;
|
|
9
|
+
constructor(http: HttpClient, apiKey?: string, agentId?: string);
|
|
10
|
+
getApiKey(): string | null;
|
|
11
|
+
getAgentId(): string | null;
|
|
12
|
+
getCachedOpenId(): string | null;
|
|
13
|
+
updateCredential(apiKey: string, agentId?: string): void;
|
|
14
|
+
register(): Promise<RegistrationData>;
|
|
15
|
+
whoami(): Promise<OpenIDData>;
|
|
16
|
+
getOpenId(): Promise<string>;
|
|
17
|
+
ensureRegistered(): Promise<AgentState>;
|
|
18
|
+
toState(): AgentState;
|
|
19
|
+
fromState(state: AgentState): void;
|
|
20
|
+
trackExtraKey(key: import('../types/agent').ApiKeyData): void;
|
|
21
|
+
private ensureAuth;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +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;AAG/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;IAWrC,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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentIdentityManager = void 0;
|
|
4
|
+
const errors_1 = require("../client/errors");
|
|
5
|
+
class AgentIdentityManager {
|
|
6
|
+
http;
|
|
7
|
+
apiKey;
|
|
8
|
+
agentId;
|
|
9
|
+
extraKeys = [];
|
|
10
|
+
openidCache = null;
|
|
11
|
+
constructor(http, apiKey, agentId) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.apiKey = apiKey || null;
|
|
14
|
+
this.agentId = agentId || null;
|
|
15
|
+
}
|
|
16
|
+
getApiKey() {
|
|
17
|
+
return this.apiKey;
|
|
18
|
+
}
|
|
19
|
+
getAgentId() {
|
|
20
|
+
return this.agentId;
|
|
21
|
+
}
|
|
22
|
+
getCachedOpenId() {
|
|
23
|
+
return this.openidCache;
|
|
24
|
+
}
|
|
25
|
+
updateCredential(apiKey, agentId) {
|
|
26
|
+
this.apiKey = apiKey;
|
|
27
|
+
if (agentId)
|
|
28
|
+
this.agentId = agentId;
|
|
29
|
+
this.openidCache = null; // invalidate openid cache
|
|
30
|
+
}
|
|
31
|
+
async register() {
|
|
32
|
+
const res = await this.http.post('/agents/register', {});
|
|
33
|
+
const data = res.data;
|
|
34
|
+
this.agentId = data.agent_id;
|
|
35
|
+
this.apiKey = data.api_key;
|
|
36
|
+
this.openidCache = null;
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
async whoami() {
|
|
40
|
+
this.ensureAuth();
|
|
41
|
+
const res = await this.http.get('/agents/me', { apiKey: this.apiKey });
|
|
42
|
+
this.openidCache = res.data.my_openid;
|
|
43
|
+
return res.data;
|
|
44
|
+
}
|
|
45
|
+
async getOpenId() {
|
|
46
|
+
if (this.openidCache !== null)
|
|
47
|
+
return this.openidCache;
|
|
48
|
+
const data = await this.whoami();
|
|
49
|
+
return data.my_openid;
|
|
50
|
+
}
|
|
51
|
+
async ensureRegistered() {
|
|
52
|
+
if (this.agentId && this.apiKey) {
|
|
53
|
+
return { agent_id: this.agentId, api_key: this.apiKey, extra_keys: [] };
|
|
54
|
+
}
|
|
55
|
+
const reg = await this.register();
|
|
56
|
+
return { agent_id: reg.agent_id, api_key: reg.api_key, extra_keys: [] };
|
|
57
|
+
}
|
|
58
|
+
toState() {
|
|
59
|
+
if (!this.agentId || !this.apiKey) {
|
|
60
|
+
throw new errors_1.OceanBusError('Agent identity not initialized');
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
agent_id: this.agentId,
|
|
64
|
+
api_key: this.apiKey,
|
|
65
|
+
extra_keys: this.extraKeys,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
fromState(state) {
|
|
69
|
+
this.agentId = state.agent_id;
|
|
70
|
+
this.apiKey = state.api_key;
|
|
71
|
+
this.extraKeys = state.extra_keys || [];
|
|
72
|
+
this.openidCache = null;
|
|
73
|
+
}
|
|
74
|
+
trackExtraKey(key) {
|
|
75
|
+
this.extraKeys.push(key);
|
|
76
|
+
}
|
|
77
|
+
ensureAuth() {
|
|
78
|
+
if (!this.apiKey) {
|
|
79
|
+
throw new errors_1.OceanBusError('Not authenticated: call register() first or provide API key in config');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.AgentIdentityManager = AgentIdentityManager;
|
|
84
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/agent/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryKeyStore = exports.FileKeyStore = exports.ApiKeyManager = exports.AgentIdentityManager = void 0;
|
|
4
|
+
var identity_1 = require("./identity");
|
|
5
|
+
Object.defineProperty(exports, "AgentIdentityManager", { enumerable: true, get: function () { return identity_1.AgentIdentityManager; } });
|
|
6
|
+
var keys_1 = require("./keys");
|
|
7
|
+
Object.defineProperty(exports, "ApiKeyManager", { enumerable: true, get: function () { return keys_1.ApiKeyManager; } });
|
|
8
|
+
var store_1 = require("./store");
|
|
9
|
+
Object.defineProperty(exports, "FileKeyStore", { enumerable: true, get: function () { return store_1.FileKeyStore; } });
|
|
10
|
+
Object.defineProperty(exports, "MemoryKeyStore", { enumerable: true, get: function () { return store_1.MemoryKeyStore; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":";;;AAAA,uCAAkD;AAAzC,gHAAA,oBAAoB,OAAA;AAC7B,+BAAuC;AAA9B,qGAAA,aAAa,OAAA;AACtB,iCAAiE;AAAxD,qGAAA,YAAY,OAAA;AAAE,uGAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HttpClient } from '../client/http-client';
|
|
2
|
+
import type { ApiKeyData } from '../types/agent';
|
|
3
|
+
export declare class ApiKeyManager {
|
|
4
|
+
private http;
|
|
5
|
+
private getApiKey;
|
|
6
|
+
constructor(http: HttpClient, getApiKey: () => string | null);
|
|
7
|
+
createApiKey(): Promise<ApiKeyData>;
|
|
8
|
+
createApiKeyWithRetry(maxWaitMs?: number): Promise<ApiKeyData>;
|
|
9
|
+
revokeApiKey(keyId: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI;IAKtD,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAQnC,qBAAqB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBrE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMjD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiKeyManager = void 0;
|
|
4
|
+
const errors_1 = require("../client/errors");
|
|
5
|
+
class ApiKeyManager {
|
|
6
|
+
http;
|
|
7
|
+
getApiKey;
|
|
8
|
+
constructor(http, getApiKey) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.getApiKey = getApiKey;
|
|
11
|
+
}
|
|
12
|
+
async createApiKey() {
|
|
13
|
+
const key = this.getApiKey();
|
|
14
|
+
if (!key)
|
|
15
|
+
throw new errors_1.OceanBusError('Not authenticated');
|
|
16
|
+
const res = await this.http.post('/agents/me/keys', {}, { apiKey: key });
|
|
17
|
+
return res.data;
|
|
18
|
+
}
|
|
19
|
+
async createApiKeyWithRetry(maxWaitMs = 15000) {
|
|
20
|
+
const data = await this.createApiKey();
|
|
21
|
+
// New API keys may have propagation delay.
|
|
22
|
+
// Verify the new key works before returning.
|
|
23
|
+
const startTime = Date.now();
|
|
24
|
+
const pollIntervalMs = 1000;
|
|
25
|
+
while (Date.now() - startTime < maxWaitMs) {
|
|
26
|
+
try {
|
|
27
|
+
const res = await this.http.get('/agents/me', { apiKey: data.api_key });
|
|
28
|
+
if (res.code === 0)
|
|
29
|
+
return data; // key works
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
// still propagating — the key may not be ready yet
|
|
33
|
+
if (process.env.OceanBus_DEBUG) {
|
|
34
|
+
console.error('[oceanbus] key propagation check:', err.message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
await new Promise((r) => setTimeout(r, pollIntervalMs));
|
|
38
|
+
}
|
|
39
|
+
// If we timed out, return the key anyway with a warning — it may work shortly
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
async revokeApiKey(keyId) {
|
|
43
|
+
const key = this.getApiKey();
|
|
44
|
+
if (!key)
|
|
45
|
+
throw new errors_1.OceanBusError('Not authenticated');
|
|
46
|
+
await this.http.del(`/agents/me/keys/${keyId}`, { apiKey: key });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ApiKeyManager = ApiKeyManager;
|
|
50
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":";;;AAEA,6CAAiD;AAEjD,MAAa,aAAa;IAChB,IAAI,CAAa;IACjB,SAAS,CAAsB;IAEvC,YAAY,IAAgB,EAAE,SAA8B;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,CAAC,CAAC;QAEvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,iBAAiB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,YAAoB,KAAK;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvC,2CAA2C;QAC3C,6CAA6C;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC,CAAC,YAAY;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,mDAAmD;gBACnD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,8EAA8E;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,CAAC,CAAC;QAEvD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAhDD,sCAgDC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AgentState } from '../types/agent';
|
|
2
|
+
export interface KeyStore {
|
|
3
|
+
save(state: AgentState): Promise<void>;
|
|
4
|
+
load(): Promise<AgentState | null>;
|
|
5
|
+
clear(): Promise<void>;
|
|
6
|
+
getPath(): string;
|
|
7
|
+
}
|
|
8
|
+
export declare class MemoryKeyStore implements KeyStore {
|
|
9
|
+
private state;
|
|
10
|
+
save(state: AgentState): Promise<void>;
|
|
11
|
+
load(): Promise<AgentState | null>;
|
|
12
|
+
clear(): Promise<void>;
|
|
13
|
+
getPath(): string;
|
|
14
|
+
}
|
|
15
|
+
export declare class FileKeyStore implements KeyStore {
|
|
16
|
+
private filePath;
|
|
17
|
+
constructor(filePath?: string);
|
|
18
|
+
save(state: AgentState): Promise<void>;
|
|
19
|
+
load(): Promise<AgentState | null>;
|
|
20
|
+
clear(): Promise<void>;
|
|
21
|
+
getPath(): string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/agent/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,MAAM,CAAC;CACnB;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,KAAK,CAA2B;IAElC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,IAAI,MAAM;CAGlB;AAED,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;IAIvB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.FileKeyStore = exports.MemoryKeyStore = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
class MemoryKeyStore {
|
|
41
|
+
state = null;
|
|
42
|
+
async save(state) {
|
|
43
|
+
this.state = { ...state };
|
|
44
|
+
}
|
|
45
|
+
async load() {
|
|
46
|
+
return this.state ? { ...this.state } : null;
|
|
47
|
+
}
|
|
48
|
+
async clear() {
|
|
49
|
+
this.state = null;
|
|
50
|
+
}
|
|
51
|
+
getPath() {
|
|
52
|
+
return '(memory)';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MemoryKeyStore = MemoryKeyStore;
|
|
56
|
+
class FileKeyStore {
|
|
57
|
+
filePath;
|
|
58
|
+
constructor(filePath) {
|
|
59
|
+
this.filePath = filePath || path.join(os.homedir(), '.oceanbus', 'credentials.json');
|
|
60
|
+
}
|
|
61
|
+
async save(state) {
|
|
62
|
+
const dir = path.dirname(this.filePath);
|
|
63
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
64
|
+
const content = JSON.stringify(state, null, 2);
|
|
65
|
+
await fs.promises.writeFile(this.filePath, content, { mode: 0o600 });
|
|
66
|
+
}
|
|
67
|
+
async load() {
|
|
68
|
+
try {
|
|
69
|
+
const raw = await fs.promises.readFile(this.filePath, 'utf-8');
|
|
70
|
+
return JSON.parse(raw);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async clear() {
|
|
77
|
+
try {
|
|
78
|
+
await fs.promises.unlink(this.filePath);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// file doesn't exist, nothing to clear
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
getPath() {
|
|
85
|
+
return this.filePath;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.FileKeyStore = FileKeyStore;
|
|
89
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/agent/store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAUzB,MAAa,cAAc;IACjB,KAAK,GAAsB,IAAI,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAlBD,wCAkBC;AAED,MAAa,YAAY;IACf,QAAQ,CAAS;IAEzB,YAAY,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAlCD,oCAkCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,eAAO,MAAM,YAAY,EAAE,aAmB1B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.blockCommand = void 0;
|
|
4
|
+
const index_1 = require("../../index");
|
|
5
|
+
exports.blockCommand = {
|
|
6
|
+
command: 'block <openid>',
|
|
7
|
+
describe: 'Block a sender by their from_openid',
|
|
8
|
+
builder: (yargs) => yargs.positional('openid', {
|
|
9
|
+
type: 'string',
|
|
10
|
+
describe: 'Sender OpenID to block',
|
|
11
|
+
demandOption: true,
|
|
12
|
+
}),
|
|
13
|
+
handler: async (argv) => {
|
|
14
|
+
try {
|
|
15
|
+
const ob = await (0, index_1.createOceanBus)();
|
|
16
|
+
await ob.blockSender(argv.openid);
|
|
17
|
+
console.log(JSON.stringify({ code: 0, msg: 'blocked' }));
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
console.error('Block failed:', err.message);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../src/cli/commands/block.ts"],"names":[],"mappings":";;;AACA,uCAA6C;AAMhC,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,qCAAqC;IAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,wBAAwB;QAClC,YAAY,EAAE,IAAI;KACnB,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;YAClC,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAe,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/key-new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,eAAO,MAAM,aAAa,EAAE,aAc3B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.keyNewCommand = void 0;
|
|
4
|
+
const index_1 = require("../../index");
|
|
5
|
+
exports.keyNewCommand = {
|
|
6
|
+
command: 'key new',
|
|
7
|
+
describe: 'Create a new API key',
|
|
8
|
+
handler: async () => {
|
|
9
|
+
try {
|
|
10
|
+
const ob = await (0, index_1.createOceanBus)();
|
|
11
|
+
const data = await ob.createApiKey();
|
|
12
|
+
console.log(JSON.stringify(data, null, 2));
|
|
13
|
+
console.error('Note: new API keys may take a few seconds to propagate.');
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
console.error('Key creation failed:', err.message);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=key-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-new.js","sourceRoot":"","sources":["../../../src/cli/commands/key-new.ts"],"names":[],"mappings":";;;AACA,uCAA6C;AAEhC,QAAA,aAAa,GAAkB;IAC1C,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAc,GAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-revoke.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/key-revoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,eAAO,MAAM,gBAAgB,EAAE,aAmB9B,CAAC"}
|