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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/bin/oceanbus.js +28 -0
  4. package/dist/agent/identity.d.ts +23 -0
  5. package/dist/agent/identity.d.ts.map +1 -0
  6. package/dist/agent/identity.js +84 -0
  7. package/dist/agent/identity.js.map +1 -0
  8. package/dist/agent/index.d.ts +4 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +11 -0
  11. package/dist/agent/index.js.map +1 -0
  12. package/dist/agent/keys.d.ts +11 -0
  13. package/dist/agent/keys.d.ts.map +1 -0
  14. package/dist/agent/keys.js +50 -0
  15. package/dist/agent/keys.js.map +1 -0
  16. package/dist/agent/store.d.ts +23 -0
  17. package/dist/agent/store.d.ts.map +1 -0
  18. package/dist/agent/store.js +89 -0
  19. package/dist/agent/store.js.map +1 -0
  20. package/dist/cli/commands/block.d.ts +3 -0
  21. package/dist/cli/commands/block.d.ts.map +1 -0
  22. package/dist/cli/commands/block.js +25 -0
  23. package/dist/cli/commands/block.js.map +1 -0
  24. package/dist/cli/commands/key-new.d.ts +3 -0
  25. package/dist/cli/commands/key-new.d.ts.map +1 -0
  26. package/dist/cli/commands/key-new.js +21 -0
  27. package/dist/cli/commands/key-new.js.map +1 -0
  28. package/dist/cli/commands/key-revoke.d.ts +3 -0
  29. package/dist/cli/commands/key-revoke.d.ts.map +1 -0
  30. package/dist/cli/commands/key-revoke.js +25 -0
  31. package/dist/cli/commands/key-revoke.js.map +1 -0
  32. package/dist/cli/commands/keygen.d.ts +3 -0
  33. package/dist/cli/commands/keygen.d.ts.map +1 -0
  34. package/dist/cli/commands/keygen.js +20 -0
  35. package/dist/cli/commands/keygen.js.map +1 -0
  36. package/dist/cli/commands/listen.d.ts +3 -0
  37. package/dist/cli/commands/listen.d.ts.map +1 -0
  38. package/dist/cli/commands/listen.js +45 -0
  39. package/dist/cli/commands/listen.js.map +1 -0
  40. package/dist/cli/commands/openid.d.ts +3 -0
  41. package/dist/cli/commands/openid.d.ts.map +1 -0
  42. package/dist/cli/commands/openid.js +20 -0
  43. package/dist/cli/commands/openid.js.map +1 -0
  44. package/dist/cli/commands/register.d.ts +3 -0
  45. package/dist/cli/commands/register.d.ts.map +1 -0
  46. package/dist/cli/commands/register.js +21 -0
  47. package/dist/cli/commands/register.js.map +1 -0
  48. package/dist/cli/commands/send.d.ts +3 -0
  49. package/dist/cli/commands/send.d.ts.map +1 -0
  50. package/dist/cli/commands/send.js +61 -0
  51. package/dist/cli/commands/send.js.map +1 -0
  52. package/dist/cli/commands/whoami.d.ts +3 -0
  53. package/dist/cli/commands/whoami.d.ts.map +1 -0
  54. package/dist/cli/commands/whoami.js +20 -0
  55. package/dist/cli/commands/whoami.js.map +1 -0
  56. package/dist/cli/index.d.ts +2 -0
  57. package/dist/cli/index.d.ts.map +1 -0
  58. package/dist/cli/index.js +37 -0
  59. package/dist/cli/index.js.map +1 -0
  60. package/dist/cli/program.d.ts +1 -0
  61. package/dist/cli/program.d.ts.map +1 -0
  62. package/dist/cli/program.js +4 -0
  63. package/dist/cli/program.js.map +1 -0
  64. package/dist/client/errors.d.ts +16 -0
  65. package/dist/client/errors.d.ts.map +1 -0
  66. package/dist/client/errors.js +42 -0
  67. package/dist/client/errors.js.map +1 -0
  68. package/dist/client/http-client.d.ts +23 -0
  69. package/dist/client/http-client.d.ts.map +1 -0
  70. package/dist/client/http-client.js +130 -0
  71. package/dist/client/http-client.js.map +1 -0
  72. package/dist/client/index.d.ts +5 -0
  73. package/dist/client/index.d.ts.map +1 -0
  74. package/dist/client/index.js +12 -0
  75. package/dist/client/index.js.map +1 -0
  76. package/dist/client/retry.d.ts +14 -0
  77. package/dist/client/retry.d.ts.map +1 -0
  78. package/dist/client/retry.js +53 -0
  79. package/dist/client/retry.js.map +1 -0
  80. package/dist/config/defaults.d.ts +3 -0
  81. package/dist/config/defaults.d.ts.map +1 -0
  82. package/dist/config/defaults.js +39 -0
  83. package/dist/config/defaults.js.map +1 -0
  84. package/dist/config/index.d.ts +3 -0
  85. package/dist/config/index.d.ts.map +1 -0
  86. package/dist/config/index.js +9 -0
  87. package/dist/config/index.js.map +1 -0
  88. package/dist/config/loader.d.ts +4 -0
  89. package/dist/config/loader.d.ts.map +1 -0
  90. package/dist/config/loader.js +106 -0
  91. package/dist/config/loader.js.map +1 -0
  92. package/dist/crypto/canonical-json.d.ts +2 -0
  93. package/dist/crypto/canonical-json.d.ts.map +1 -0
  94. package/dist/crypto/canonical-json.js +39 -0
  95. package/dist/crypto/canonical-json.js.map +1 -0
  96. package/dist/crypto/ed25519.d.ts +12 -0
  97. package/dist/crypto/ed25519.d.ts.map +1 -0
  98. package/dist/crypto/ed25519.js +101 -0
  99. package/dist/crypto/ed25519.js.map +1 -0
  100. package/dist/crypto/index.d.ts +4 -0
  101. package/dist/crypto/index.d.ts.map +1 -0
  102. package/dist/crypto/index.js +17 -0
  103. package/dist/crypto/index.js.map +1 -0
  104. package/dist/crypto/pow.d.ts +5 -0
  105. package/dist/crypto/pow.d.ts.map +1 -0
  106. package/dist/crypto/pow.js +16 -0
  107. package/dist/crypto/pow.js.map +1 -0
  108. package/dist/index.d.ts +89 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +269 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/interceptors/chain.d.ts +33 -0
  113. package/dist/interceptors/chain.d.ts.map +1 -0
  114. package/dist/interceptors/chain.js +32 -0
  115. package/dist/interceptors/chain.js.map +1 -0
  116. package/dist/interceptors/index.d.ts +5 -0
  117. package/dist/interceptors/index.d.ts.map +1 -0
  118. package/dist/interceptors/index.js +10 -0
  119. package/dist/interceptors/index.js.map +1 -0
  120. package/dist/interceptors/llm.d.ts +13 -0
  121. package/dist/interceptors/llm.d.ts.map +1 -0
  122. package/dist/interceptors/llm.js +21 -0
  123. package/dist/interceptors/llm.js.map +1 -0
  124. package/dist/l1/base-client.d.ts +17 -0
  125. package/dist/l1/base-client.d.ts.map +1 -0
  126. package/dist/l1/base-client.js +40 -0
  127. package/dist/l1/base-client.js.map +1 -0
  128. package/dist/l1/ca.d.ts +16 -0
  129. package/dist/l1/ca.d.ts.map +1 -0
  130. package/dist/l1/ca.js +92 -0
  131. package/dist/l1/ca.js.map +1 -0
  132. package/dist/l1/dispatcher.d.ts +15 -0
  133. package/dist/l1/dispatcher.d.ts.map +1 -0
  134. package/dist/l1/dispatcher.js +68 -0
  135. package/dist/l1/dispatcher.js.map +1 -0
  136. package/dist/l1/index.d.ts +7 -0
  137. package/dist/l1/index.d.ts.map +1 -0
  138. package/dist/l1/index.js +14 -0
  139. package/dist/l1/index.js.map +1 -0
  140. package/dist/l1/reputation.d.ts +14 -0
  141. package/dist/l1/reputation.d.ts.map +1 -0
  142. package/dist/l1/reputation.js +48 -0
  143. package/dist/l1/reputation.js.map +1 -0
  144. package/dist/l1/yellow-pages.d.ts +16 -0
  145. package/dist/l1/yellow-pages.d.ts.map +1 -0
  146. package/dist/l1/yellow-pages.js +71 -0
  147. package/dist/l1/yellow-pages.js.map +1 -0
  148. package/dist/mailbox/cursor.d.ts +11 -0
  149. package/dist/mailbox/cursor.d.ts.map +1 -0
  150. package/dist/mailbox/cursor.js +79 -0
  151. package/dist/mailbox/cursor.js.map +1 -0
  152. package/dist/mailbox/index.d.ts +5 -0
  153. package/dist/mailbox/index.d.ts.map +1 -0
  154. package/dist/mailbox/index.js +10 -0
  155. package/dist/mailbox/index.js.map +1 -0
  156. package/dist/mailbox/poller.d.ts +18 -0
  157. package/dist/mailbox/poller.d.ts.map +1 -0
  158. package/dist/mailbox/poller.js +64 -0
  159. package/dist/mailbox/poller.js.map +1 -0
  160. package/dist/mailbox/sync.d.ts +13 -0
  161. package/dist/mailbox/sync.d.ts.map +1 -0
  162. package/dist/mailbox/sync.js +60 -0
  163. package/dist/mailbox/sync.js.map +1 -0
  164. package/dist/messaging/blocklist.d.ts +17 -0
  165. package/dist/messaging/blocklist.d.ts.map +1 -0
  166. package/dist/messaging/blocklist.js +110 -0
  167. package/dist/messaging/blocklist.js.map +1 -0
  168. package/dist/messaging/idgen.d.ts +3 -0
  169. package/dist/messaging/idgen.d.ts.map +1 -0
  170. package/dist/messaging/idgen.js +45 -0
  171. package/dist/messaging/idgen.js.map +1 -0
  172. package/dist/messaging/index.d.ts +4 -0
  173. package/dist/messaging/index.d.ts.map +1 -0
  174. package/dist/messaging/index.js +11 -0
  175. package/dist/messaging/index.js.map +1 -0
  176. package/dist/messaging/send.d.ts +9 -0
  177. package/dist/messaging/send.d.ts.map +1 -0
  178. package/dist/messaging/send.js +55 -0
  179. package/dist/messaging/send.js.map +1 -0
  180. package/dist/quota/index.d.ts +2 -0
  181. package/dist/quota/index.d.ts.map +1 -0
  182. package/dist/quota/index.js +6 -0
  183. package/dist/quota/index.js.map +1 -0
  184. package/dist/quota/manager.d.ts +25 -0
  185. package/dist/quota/manager.d.ts.map +1 -0
  186. package/dist/quota/manager.js +118 -0
  187. package/dist/quota/manager.js.map +1 -0
  188. package/dist/types/agent.d.ts +19 -0
  189. package/dist/types/agent.d.ts.map +1 -0
  190. package/dist/types/agent.js +3 -0
  191. package/dist/types/agent.js.map +1 -0
  192. package/dist/types/api.d.ts +17 -0
  193. package/dist/types/api.d.ts.map +1 -0
  194. package/dist/types/api.js +27 -0
  195. package/dist/types/api.js.map +1 -0
  196. package/dist/types/config.d.ts +57 -0
  197. package/dist/types/config.d.ts.map +1 -0
  198. package/dist/types/config.js +3 -0
  199. package/dist/types/config.js.map +1 -0
  200. package/dist/types/crypto.d.ts +39 -0
  201. package/dist/types/crypto.d.ts.map +1 -0
  202. package/dist/types/crypto.js +3 -0
  203. package/dist/types/crypto.js.map +1 -0
  204. package/dist/types/index.d.ts +7 -0
  205. package/dist/types/index.d.ts.map +1 -0
  206. package/dist/types/index.js +23 -0
  207. package/dist/types/index.js.map +1 -0
  208. package/dist/types/l1.d.ts +129 -0
  209. package/dist/types/l1.d.ts.map +1 -0
  210. package/dist/types/l1.js +5 -0
  211. package/dist/types/l1.js.map +1 -0
  212. package/dist/types/messaging.d.ts +30 -0
  213. package/dist/types/messaging.d.ts.map +1 -0
  214. package/dist/types/messaging.js +3 -0
  215. package/dist/types/messaging.js.map +1 -0
  216. package/package.json +52 -0
package/dist/index.js ADDED
@@ -0,0 +1,269 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.OceanBus = void 0;
18
+ exports.createOceanBus = createOceanBus;
19
+ const http_client_1 = require("./client/http-client");
20
+ const store_1 = require("./agent/store");
21
+ const identity_1 = require("./agent/identity");
22
+ const keys_1 = require("./agent/keys");
23
+ const send_1 = require("./messaging/send");
24
+ const blocklist_1 = require("./messaging/blocklist");
25
+ const sync_1 = require("./mailbox/sync");
26
+ const poller_1 = require("./mailbox/poller");
27
+ const cursor_1 = require("./mailbox/cursor");
28
+ const loader_1 = require("./config/loader");
29
+ const errors_1 = require("./client/errors");
30
+ // Crypto
31
+ const ed25519_1 = require("./crypto/ed25519");
32
+ const canonical_json_1 = require("./crypto/canonical-json");
33
+ // L1
34
+ const dispatcher_1 = require("./l1/dispatcher");
35
+ const yellow_pages_1 = require("./l1/yellow-pages");
36
+ const ca_1 = require("./l1/ca");
37
+ const reputation_1 = require("./l1/reputation");
38
+ // Interceptors
39
+ const chain_1 = require("./interceptors/chain");
40
+ const llm_1 = require("./interceptors/llm");
41
+ // Quota
42
+ const manager_1 = require("./quota/manager");
43
+ class OceanBus {
44
+ config;
45
+ http;
46
+ identity;
47
+ keys;
48
+ messaging;
49
+ blocklist;
50
+ mailbox;
51
+ poller = null;
52
+ keyStore;
53
+ cursor;
54
+ l1Dispatcher = null;
55
+ // Crypto
56
+ crypto;
57
+ // L1
58
+ l1;
59
+ // Interceptors
60
+ interceptors;
61
+ _quota; // internal, exposed via getter
62
+ constructor(config, keyStore) {
63
+ this.config = config;
64
+ this.keyStore = keyStore;
65
+ // HTTP client
66
+ this.http = new http_client_1.HttpClient(config.baseUrl, config.http);
67
+ // Identity
68
+ this.identity = new identity_1.AgentIdentityManager(this.http, config.identity?.api_key, config.identity?.agent_id);
69
+ // API Keys
70
+ this.keys = new keys_1.ApiKeyManager(this.http, () => this.identity.getApiKey());
71
+ // Messaging
72
+ this.messaging = new send_1.MessagingService(this.http, () => this.identity.getApiKey());
73
+ // Blocklist
74
+ this.blocklist = new blocklist_1.BlocklistManager(this.http, () => this.identity.getApiKey());
75
+ // Mailbox cursor
76
+ this.cursor = new cursor_1.SeqCursor();
77
+ this.mailbox = new sync_1.MailboxSync(this.http, () => this.identity.getApiKey(), this.cursor, config.mailbox.defaultPageSize);
78
+ // Interceptors
79
+ this.interceptors = new chain_1.InterceptorChain();
80
+ if (config.interceptor.enabled) {
81
+ // Note: noopEvaluator passes all messages — user must provide custom LLMEvaluatorFn
82
+ // via ob.interceptors.register(new LLMInterceptor(yourEvaluator))
83
+ this.interceptors.register(new llm_1.LLMInterceptor(llm_1.noopEvaluator));
84
+ }
85
+ // Quota
86
+ this._quota = new manager_1.QuotaManager(undefined, config.quota.dailyLimitWarnThreshold, config.quota.dailyLimit);
87
+ // Crypto
88
+ this.crypto = {
89
+ generateKeypair: ed25519_1.generateKeypair,
90
+ sign: (keypair, payload) => (0, ed25519_1.sign)(keypair.secretKey, payload),
91
+ verify: ed25519_1.verify,
92
+ canonicalize: canonical_json_1.canonicalize,
93
+ keypairToHex: ed25519_1.keypairToHex,
94
+ hexToKeypair: ed25519_1.hexToKeypair,
95
+ verifyCertificate: async (cert, trustedCAs) => {
96
+ // Use the shared CAClient if available (post-create), otherwise create a temp one
97
+ if (this.l1) {
98
+ return this.l1.ca.verifyCertificateOffline(cert);
99
+ }
100
+ const ca = new ca_1.CAClient({ send: () => Promise.resolve(), sendJson: () => Promise.resolve() }, '', trustedCAs || []);
101
+ return ca.verifyCertificateOffline(cert);
102
+ },
103
+ };
104
+ }
105
+ static async create(userConfig) {
106
+ const config = (0, loader_1.resolveConfig)(userConfig);
107
+ // Initialize key store
108
+ let keyStore;
109
+ if (config.keyStore.type === 'file') {
110
+ keyStore = new store_1.FileKeyStore(config.keyStore.filePath);
111
+ }
112
+ else {
113
+ keyStore = new store_1.MemoryKeyStore();
114
+ }
115
+ const ob = new OceanBus(config, keyStore);
116
+ // Load persisted identity if not provided via config
117
+ if (!config.identity?.api_key) {
118
+ const saved = await keyStore.load();
119
+ if (saved) {
120
+ ob.identity.fromState(saved);
121
+ }
122
+ }
123
+ // Load persisted blocklist
124
+ await ob.blocklist.loadLocal();
125
+ // Load quota
126
+ await ob._quota.load();
127
+ // Load seq cursor
128
+ await ob.cursor.load();
129
+ // Set up shared L1 dispatcher — one polling engine for all L1 requests
130
+ ob.l1Dispatcher = new dispatcher_1.L1Dispatcher(ob.mailbox, config.l1.requestTimeoutMs, config.l1.requestPollIntervalMs);
131
+ // Initialize L1 clients
132
+ // L1 transport bypasses quota — infrastructure messages (heartbeat, CA, YP)
133
+ // are not user messages and should not count toward daily limits
134
+ const transport = {
135
+ send: (to, content, cid) => ob.messaging.send(to, content, cid),
136
+ sendJson: (to, data, cid) => ob.messaging.sendJson(to, data, cid),
137
+ };
138
+ ob.l1 = {
139
+ yellowPages: new yellow_pages_1.YellowPagesClient(transport, config.l1.ypOpenids[0] || '', ob.l1Dispatcher, config.l1.requestTimeoutMs),
140
+ ca: new ca_1.CAClient(transport, config.l1.trustedCAs[0]?.ca_openid || '', config.l1.trustedCAs, ob.l1Dispatcher, config.l1.requestTimeoutMs),
141
+ reputation: new reputation_1.ReputationClient(transport, '', ob.l1Dispatcher, config.l1.requestTimeoutMs),
142
+ };
143
+ return ob;
144
+ }
145
+ // Identity convenience methods
146
+ async register() {
147
+ const data = await this.identity.register();
148
+ await this.keyStore.save(this.identity.toState());
149
+ return data;
150
+ }
151
+ async whoami() {
152
+ const data = await this.identity.whoami();
153
+ return { agent_id: this.identity.getAgentId(), openid: data.my_openid };
154
+ }
155
+ async getOpenId() {
156
+ return this.identity.getOpenId();
157
+ }
158
+ // API Key convenience methods
159
+ async createApiKey() {
160
+ return this.keys.createApiKeyWithRetry();
161
+ }
162
+ async revokeApiKey(keyId) {
163
+ return this.keys.revokeApiKey(keyId);
164
+ }
165
+ // Messaging convenience methods
166
+ async send(toOpenid, content, opts) {
167
+ // Quota check
168
+ if (this.config.quota.enforceLocal) {
169
+ const q = await this._quota.checkAndIncrement();
170
+ if (!q.allowed) {
171
+ throw new errors_1.OceanBusError('Daily message quota exceeded');
172
+ }
173
+ }
174
+ return this.messaging.send(toOpenid, content, opts?.clientMsgId);
175
+ }
176
+ async sendJson(toOpenid, data, opts) {
177
+ if (this.config.quota.enforceLocal) {
178
+ const q = await this._quota.checkAndIncrement();
179
+ if (!q.allowed) {
180
+ throw new errors_1.OceanBusError('Daily message quota exceeded');
181
+ }
182
+ }
183
+ return this.messaging.sendJson(toOpenid, data, opts?.clientMsgId);
184
+ }
185
+ // Mailbox convenience methods
186
+ async sync(sinceSeq, limit) {
187
+ return this.mailbox.sync(sinceSeq, limit);
188
+ }
189
+ startListening(onMessage, options) {
190
+ if (this.poller)
191
+ this.poller.stop();
192
+ this.poller = new poller_1.AutoPollEngine(this.mailbox, async (msg) => {
193
+ // Run through interceptor chain
194
+ if (this.config.interceptor.enabled) {
195
+ const ctx = {
196
+ agentId: this.identity.getAgentId() || '',
197
+ timestamp: Date.now(),
198
+ };
199
+ const result = await this.interceptors.process(msg, ctx);
200
+ if (result.decision.action === 'block')
201
+ return; // silent discard
202
+ if (result.decision.action === 'flag') {
203
+ // Attach flag metadata for the handler
204
+ msg.flagged = true;
205
+ msg.flagReason = result.decision.reason;
206
+ }
207
+ }
208
+ await onMessage(msg);
209
+ }, (err) => { console.error('[oceanbus] listen error:', err.message); }, options?.intervalMs ?? this.config.mailbox.pollIntervalMs);
210
+ this.poller.start();
211
+ return () => {
212
+ if (this.poller) {
213
+ this.poller.stop();
214
+ this.poller = null;
215
+ }
216
+ };
217
+ }
218
+ stopListening() {
219
+ if (this.poller) {
220
+ this.poller.stop();
221
+ this.poller = null;
222
+ }
223
+ }
224
+ // Blocklist convenience methods
225
+ async blockSender(fromOpenid) {
226
+ return this.blocklist.block(fromOpenid);
227
+ }
228
+ async unblockSender(fromOpenid) {
229
+ return this.blocklist.unblock(fromOpenid);
230
+ }
231
+ isBlocked(fromOpenid) {
232
+ return this.blocklist.isBlocked(fromOpenid);
233
+ }
234
+ getBlocklist() {
235
+ return this.blocklist.getBlocklist();
236
+ }
237
+ async reverseLookup(openid) {
238
+ return this.blocklist.reverseLookup(openid);
239
+ }
240
+ // Quota convenience methods
241
+ get quota() {
242
+ return {
243
+ getDailyUsage: () => this._quota.getUsage(),
244
+ resetDailyCount: () => this._quota.reset(),
245
+ };
246
+ }
247
+ // Lifecycle
248
+ async destroy() {
249
+ this.stopListening();
250
+ if (this.l1Dispatcher) {
251
+ this.l1Dispatcher.destroy();
252
+ this.l1Dispatcher = null;
253
+ }
254
+ if (this.identity.getAgentId()) {
255
+ await this.keyStore.save(this.identity.toState());
256
+ }
257
+ await this.cursor.save();
258
+ await this.blocklist.saveLocal();
259
+ await this._quota.save();
260
+ }
261
+ }
262
+ exports.OceanBus = OceanBus;
263
+ async function createOceanBus(config) {
264
+ return OceanBus.create(config);
265
+ }
266
+ // Re-export all types
267
+ __exportStar(require("./types"), exports);
268
+ __exportStar(require("./client/errors"), exports);
269
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { Message } from '../types/messaging';
2
+ export interface InterceptorContext {
3
+ agentId: string;
4
+ timestamp: number;
5
+ sessionCount?: number;
6
+ [key: string]: unknown;
7
+ }
8
+ export type InterceptorDecision = {
9
+ action: 'pass';
10
+ } | {
11
+ action: 'flag';
12
+ reason: string;
13
+ risk: 'low' | 'medium' | 'high';
14
+ } | {
15
+ action: 'block';
16
+ reason: string;
17
+ };
18
+ export interface MessageInterceptor {
19
+ name: string;
20
+ priority: number;
21
+ evaluate(message: Message, context: InterceptorContext): Promise<InterceptorDecision>;
22
+ }
23
+ export declare class InterceptorChain {
24
+ private interceptors;
25
+ register(interceptor: MessageInterceptor): void;
26
+ remove(name: string): boolean;
27
+ list(): ReadonlyArray<MessageInterceptor>;
28
+ process(message: Message, context: InterceptorContext): Promise<{
29
+ decision: InterceptorDecision;
30
+ by: string;
31
+ }>;
32
+ }
33
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/interceptors/chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;CAAE,GACnE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvF;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAA4B;IAEhD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAM/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B,IAAI,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAInC,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,mBAAmB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAS1D"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InterceptorChain = void 0;
4
+ class InterceptorChain {
5
+ interceptors = [];
6
+ register(interceptor) {
7
+ this.interceptors.push(interceptor);
8
+ // Sort by priority (higher runs first)
9
+ this.interceptors.sort((a, b) => b.priority - a.priority);
10
+ }
11
+ remove(name) {
12
+ const idx = this.interceptors.findIndex((i) => i.name === name);
13
+ if (idx === -1)
14
+ return false;
15
+ this.interceptors.splice(idx, 1);
16
+ return true;
17
+ }
18
+ list() {
19
+ return this.interceptors;
20
+ }
21
+ async process(message, context) {
22
+ for (const interceptor of this.interceptors) {
23
+ const decision = await interceptor.evaluate(message, context);
24
+ if (decision.action === 'block' || decision.action === 'flag') {
25
+ return { decision, by: interceptor.name };
26
+ }
27
+ }
28
+ return { decision: { action: 'pass' }, by: 'default' };
29
+ }
30
+ }
31
+ exports.InterceptorChain = InterceptorChain;
32
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/interceptors/chain.ts"],"names":[],"mappings":";;;AAoBA,MAAa,gBAAgB;IACnB,YAAY,GAAyB,EAAE,CAAC;IAEhD,QAAQ,CAAC,WAA+B;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAgB,EAChB,OAA2B;QAE3B,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9D,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACzD,CAAC;CACF;AAhCD,4CAgCC"}
@@ -0,0 +1,5 @@
1
+ export { InterceptorChain } from './chain';
2
+ export type { MessageInterceptor, InterceptorContext, InterceptorDecision } from './chain';
3
+ export { LLMInterceptor, DEFAULT_SECURITY_PROMPT, noopEvaluator } from './llm';
4
+ export type { LLMEvaluatorFn } from './llm';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC/E,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.noopEvaluator = exports.DEFAULT_SECURITY_PROMPT = exports.LLMInterceptor = exports.InterceptorChain = void 0;
4
+ var chain_1 = require("./chain");
5
+ Object.defineProperty(exports, "InterceptorChain", { enumerable: true, get: function () { return chain_1.InterceptorChain; } });
6
+ var llm_1 = require("./llm");
7
+ Object.defineProperty(exports, "LLMInterceptor", { enumerable: true, get: function () { return llm_1.LLMInterceptor; } });
8
+ Object.defineProperty(exports, "DEFAULT_SECURITY_PROMPT", { enumerable: true, get: function () { return llm_1.DEFAULT_SECURITY_PROMPT; } });
9
+ Object.defineProperty(exports, "noopEvaluator", { enumerable: true, get: function () { return llm_1.noopEvaluator; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAAlC,yGAAA,gBAAgB,OAAA;AAEzB,6BAA+E;AAAtE,qGAAA,cAAc,OAAA;AAAE,8GAAA,uBAAuB,OAAA;AAAE,oGAAA,aAAa,OAAA"}
@@ -0,0 +1,13 @@
1
+ import type { MessageInterceptor, InterceptorContext, InterceptorDecision } from './chain';
2
+ import type { Message } from '../types/messaging';
3
+ export type LLMEvaluatorFn = (message: Message, context: InterceptorContext) => Promise<InterceptorDecision>;
4
+ export declare class LLMInterceptor implements MessageInterceptor {
5
+ name: string;
6
+ priority: number;
7
+ private evaluator;
8
+ constructor(evaluator: LLMEvaluatorFn);
9
+ evaluate(message: Message, context: InterceptorContext): Promise<InterceptorDecision>;
10
+ }
11
+ export declare const DEFAULT_SECURITY_PROMPT = "\u4F60\u662F\u4E3B\u4EBA\u7684\u672C\u5730\u53CD\u8BC8\u5B89\u5168\u5B88\u536B\u3002\u8BF7\u5206\u6790\u4EE5\u4E0B\u89E3\u5BC6\u4FE1\u606F\u3002\u5982\u679C\u5176\u4E2D\u5305\u542B\u660E\u663E\u7684\"\u65E0\u62C5\u4FDD\u4EA4\u6613\u8981\u6C42\"\u3001\"\u9493\u9C7C\u5916\u90E8\u94FE\u63A5\"\u3001\"\u5192\u5145\u5B98\u65B9\u5BA2\u670D\"\u7B49\u5178\u578B\u6B3A\u8BC8\u7279\u5F81\uFF0C\u8BF7\u76F4\u63A5\u8FD4\u56DE [BLOCK]\uFF0C\u5E76\u5728\u672C\u5730\u9759\u9ED8\u9500\u6BC1\u8BE5\u6D88\u606F\u3002";
12
+ export declare const noopEvaluator: LLMEvaluatorFn;
13
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/interceptors/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,qBAAa,cAAe,YAAW,kBAAkB;IACvD,IAAI,SAA0B;IAC9B,QAAQ,SAAO;IACf,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAI/B,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAG5F;AAGD,eAAO,MAAM,uBAAuB,yfAAmG,CAAC;AAGxI,eAAO,MAAM,aAAa,EAAE,cAAiD,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.noopEvaluator = exports.DEFAULT_SECURITY_PROMPT = exports.LLMInterceptor = void 0;
4
+ class LLMInterceptor {
5
+ name = 'llm-security-scanner';
6
+ priority = 100;
7
+ evaluator;
8
+ constructor(evaluator) {
9
+ this.evaluator = evaluator;
10
+ }
11
+ async evaluate(message, context) {
12
+ return this.evaluator(message, context);
13
+ }
14
+ }
15
+ exports.LLMInterceptor = LLMInterceptor;
16
+ // Default system prompt for LLM-based fraud detection
17
+ exports.DEFAULT_SECURITY_PROMPT = `你是主人的本地反诈安全守卫。请分析以下解密信息。如果其中包含明显的"无担保交易要求"、"钓鱼外部链接"、"冒充官方客服"等典型欺诈特征,请直接返回 [BLOCK],并在本地静默销毁该消息。`;
18
+ // No-op evaluator that passes everything (default when no LLM configured)
19
+ const noopEvaluator = async () => ({ action: 'pass' });
20
+ exports.noopEvaluator = noopEvaluator;
21
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/interceptors/llm.ts"],"names":[],"mappings":";;;AAQA,MAAa,cAAc;IACzB,IAAI,GAAG,sBAAsB,CAAC;IAC9B,QAAQ,GAAG,GAAG,CAAC;IACP,SAAS,CAAiB;IAElC,YAAY,SAAyB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB,EAAE,OAA2B;QAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAZD,wCAYC;AAED,sDAAsD;AACzC,QAAA,uBAAuB,GAAG,gGAAgG,CAAC;AAExI,0EAA0E;AACnE,MAAM,aAAa,GAAmB,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAAjE,QAAA,aAAa,iBAAoD"}
@@ -0,0 +1,17 @@
1
+ import type { L1Request, L1Response } from '../types/l1';
2
+ import type { L1Dispatcher } from './dispatcher';
3
+ export interface L1Transport {
4
+ send(toOpenid: string, content: string, clientMsgId?: string): Promise<void>;
5
+ sendJson(toOpenid: string, data: object, clientMsgId?: string): Promise<void>;
6
+ }
7
+ export declare class L1Client {
8
+ protected sendFn: L1Transport;
9
+ protected serviceOpenid: string;
10
+ protected requestTimeoutMs: number;
11
+ private dispatcher;
12
+ constructor(sendFn: L1Transport, serviceOpenid: string, dispatcher?: L1Dispatcher, requestTimeoutMs?: number);
13
+ setDispatcher(dispatcher: L1Dispatcher): void;
14
+ protected buildRequest(action: string, extra?: Record<string, unknown>): L1Request;
15
+ sendAction(request: L1Request): Promise<L1Response>;
16
+ }
17
+ //# sourceMappingURL=base-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED,qBAAa,QAAQ;IACnB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,UAAU,CAAsB;gBAGtC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,YAAY,EACzB,gBAAgB,GAAE,MAAc;IAQlC,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAI7C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS;IAQhF,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;CAc1D"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.L1Client = void 0;
4
+ const idgen_1 = require("../messaging/idgen");
5
+ const errors_1 = require("../client/errors");
6
+ class L1Client {
7
+ sendFn;
8
+ serviceOpenid;
9
+ requestTimeoutMs;
10
+ dispatcher;
11
+ constructor(sendFn, serviceOpenid, dispatcher, requestTimeoutMs = 30000) {
12
+ this.sendFn = sendFn;
13
+ this.serviceOpenid = serviceOpenid;
14
+ this.dispatcher = dispatcher || null;
15
+ this.requestTimeoutMs = requestTimeoutMs;
16
+ }
17
+ setDispatcher(dispatcher) {
18
+ this.dispatcher = dispatcher;
19
+ }
20
+ buildRequest(action, extra = {}) {
21
+ return {
22
+ action,
23
+ request_id: (0, idgen_1.generateRequestId)(),
24
+ ...extra,
25
+ };
26
+ }
27
+ async sendAction(request) {
28
+ if (!this.dispatcher) {
29
+ throw new errors_1.OceanBusError('L1 dispatcher not configured');
30
+ }
31
+ // Register pending request with dispatcher BEFORE sending
32
+ const responsePromise = this.dispatcher.register(request.request_id, this.requestTimeoutMs);
33
+ // Send the request
34
+ await this.sendFn.sendJson(this.serviceOpenid, request);
35
+ // Wait for the shared dispatcher to match the response
36
+ return responsePromise;
37
+ }
38
+ }
39
+ exports.L1Client = L1Client;
40
+ //# sourceMappingURL=base-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":";;;AACA,8CAAuD;AACvD,6CAAiD;AAQjD,MAAa,QAAQ;IACT,MAAM,CAAc;IACpB,aAAa,CAAS;IACtB,gBAAgB,CAAS;IAC3B,UAAU,CAAsB;IAExC,YACE,MAAmB,EACnB,aAAqB,EACrB,UAAyB,EACzB,mBAA2B,KAAK;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,UAAwB;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,YAAY,CAAC,MAAc,EAAE,QAAiC,EAAE;QACxE,OAAO;YACL,MAAM;YACN,UAAU,EAAE,IAAA,yBAAiB,GAAE;YAC/B,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAkB;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,sBAAa,CAAC,8BAA8B,CAAC,CAAC;QAC1D,CAAC;QAED,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5F,mBAAmB;QACnB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAExD,uDAAuD;QACvD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AA5CD,4BA4CC"}
@@ -0,0 +1,16 @@
1
+ import { L1Client, L1Transport } from './base-client';
2
+ import type { L1Dispatcher } from './dispatcher';
3
+ import type { CaApplyRequest } from '../types/l1';
4
+ import type { L1Response } from '../types/l1';
5
+ import type { Certificate, TrustAnchor, CertVerifyResult } from '../types/crypto';
6
+ export declare class CAClient extends L1Client {
7
+ private trustedCAs;
8
+ constructor(sendFn: L1Transport, serviceOpenid: string, trustedCAs?: TrustAnchor[], dispatcher?: L1Dispatcher, requestTimeoutMs?: number);
9
+ addTrustAnchor(anchor: TrustAnchor): void;
10
+ applyCert(application: CaApplyRequest['application']): Promise<L1Response>;
11
+ challengeResponse(applicationId: string, signedNonce: string): Promise<L1Response>;
12
+ verifyCertOnline(certId: string): Promise<L1Response>;
13
+ getCRL(): Promise<L1Response>;
14
+ verifyCertificateOffline(certificate: Certificate): Promise<CertVerifyResult>;
15
+ }
16
+ //# sourceMappingURL=ca.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ca.d.ts","sourceRoot":"","sources":["../../src/l1/ca.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlF,qBAAa,QAAS,SAAQ,QAAQ;IACpC,OAAO,CAAC,UAAU,CAAuC;gBAGvD,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,WAAW,EAAO,EAC9B,UAAU,CAAC,EAAE,YAAY,EACzB,gBAAgB,GAAE,MAAc;IAgBlC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAUnC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAS1E,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUlF,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASrD,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAQ7B,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+BpF"}
package/dist/l1/ca.js ADDED
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CAClient = void 0;
4
+ const base_client_1 = require("./base-client");
5
+ const crypto_1 = require("../crypto");
6
+ class CAClient extends base_client_1.L1Client {
7
+ trustedCAs;
8
+ constructor(sendFn, serviceOpenid, trustedCAs = [], dispatcher, requestTimeoutMs = 30000) {
9
+ super(sendFn, serviceOpenid, dispatcher, requestTimeoutMs);
10
+ this.trustedCAs = new Map();
11
+ for (const ca of trustedCAs) {
12
+ const keyMap = new Map();
13
+ for (const key of ca.keys) {
14
+ if (key.status === 'active') {
15
+ keyMap.set(key.key_id, (0, crypto_1.hexToBuffer)(key.public_key.replace('ed25519:', '')));
16
+ }
17
+ }
18
+ this.trustedCAs.set(ca.issuer, keyMap);
19
+ }
20
+ }
21
+ addTrustAnchor(anchor) {
22
+ const keyMap = new Map();
23
+ for (const key of anchor.keys) {
24
+ if (key.status === 'active') {
25
+ keyMap.set(key.key_id, (0, crypto_1.hexToBuffer)(key.public_key.replace('ed25519:', '')));
26
+ }
27
+ }
28
+ this.trustedCAs.set(anchor.issuer, keyMap);
29
+ }
30
+ async applyCert(application) {
31
+ const request = {
32
+ ...this.buildRequest('apply_cert'),
33
+ action: 'apply_cert',
34
+ application,
35
+ };
36
+ return this.sendAction(request);
37
+ }
38
+ async challengeResponse(applicationId, signedNonce) {
39
+ const request = {
40
+ ...this.buildRequest('cert_challenge_response'),
41
+ action: 'cert_challenge_response',
42
+ application_id: applicationId,
43
+ signed_nonce: signedNonce,
44
+ };
45
+ return this.sendAction(request);
46
+ }
47
+ async verifyCertOnline(certId) {
48
+ const request = {
49
+ ...this.buildRequest('verify_cert'),
50
+ action: 'verify_cert',
51
+ cert_id: certId,
52
+ };
53
+ return this.sendAction(request);
54
+ }
55
+ async getCRL() {
56
+ const request = {
57
+ ...this.buildRequest('get_crl'),
58
+ action: 'get_crl',
59
+ };
60
+ return this.sendAction(request);
61
+ }
62
+ async verifyCertificateOffline(certificate) {
63
+ try {
64
+ const issuerKeys = this.trustedCAs.get(certificate.cert.issuer);
65
+ if (!issuerKeys) {
66
+ return { valid: false, error: `Unknown CA issuer: ${certificate.cert.issuer}` };
67
+ }
68
+ const caPk = issuerKeys.get(certificate.cert.issuer_key_id);
69
+ if (!caPk) {
70
+ return { valid: false, error: `Unknown CA key_id: ${certificate.cert.issuer_key_id}` };
71
+ }
72
+ const valid = await (0, crypto_1.verify)(caPk, certificate.cert, certificate.sig);
73
+ if (!valid) {
74
+ return { valid: false, error: 'Signature verification failed' };
75
+ }
76
+ const now = new Date();
77
+ const expires = new Date(certificate.cert.expires_at);
78
+ if (isNaN(expires.getTime())) {
79
+ return { valid: false, error: 'Invalid expiry date' };
80
+ }
81
+ if (now > expires) {
82
+ return { valid: false, error: 'Certificate expired' };
83
+ }
84
+ return { valid: true, level: certificate.cert.level };
85
+ }
86
+ catch (err) {
87
+ return { valid: false, error: err.message };
88
+ }
89
+ }
90
+ }
91
+ exports.CAClient = CAClient;
92
+ //# sourceMappingURL=ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ca.js","sourceRoot":"","sources":["../../src/l1/ca.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { MailboxSync } from '../mailbox/sync';
2
+ import type { L1Response } from '../types/l1';
3
+ export declare class L1Dispatcher {
4
+ private mailbox;
5
+ private engine;
6
+ private pending;
7
+ private requestTimeoutMs;
8
+ private pollIntervalMs;
9
+ constructor(mailbox: MailboxSync, requestTimeoutMs?: number, pollIntervalMs?: number);
10
+ private dispatch;
11
+ register(requestId: string, timeoutMs?: number): Promise<L1Response>;
12
+ get pendingCount(): number;
13
+ destroy(): void;
14
+ }
15
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/l1/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG7B,OAAO,EAAE,WAAW,EACpB,gBAAgB,GAAE,MAAc,EAChC,cAAc,GAAE,MAAa;IAO/B,OAAO,CAAC,QAAQ;IAmBhB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4BpE,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,OAAO,IAAI,IAAI;CAYhB"}