@bolloon/bolloon-agent 0.4.31 → 0.4.33

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 (55) hide show
  1. package/dist/agents/chain/chain-config.js +504 -0
  2. package/dist/agents/chain/chain-index-query.js +135 -0
  3. package/dist/agents/chain/chain-indexer.js +1045 -0
  4. package/dist/agents/chain/chain-settlement.js +284 -0
  5. package/dist/agents/chain/chain-state-store.js +245 -0
  6. package/dist/agents/chain/chain-wallet.js +198 -0
  7. package/dist/agents/chain/escrow-client.js +433 -0
  8. package/dist/agents/chain/explorer.js +52 -0
  9. package/dist/agents/chain/index.js +22 -0
  10. package/dist/agents/chain/onchain-trade.js +705 -0
  11. package/dist/agents/network-pulse.js +676 -2
  12. package/dist/agents/task/task-onchain-runner.js +302 -0
  13. package/dist/agents/task/task-runner.js +27 -3
  14. package/dist/agents/task-board.js +702 -0
  15. package/dist/agents/task-group.js +567 -0
  16. package/dist/agents/x402/paid-info-store.js +75 -6
  17. package/dist/cli/commands/chain.js +926 -0
  18. package/dist/cli/commands/index.js +12 -2
  19. package/dist/cli/commands/tasks.js +627 -6
  20. package/dist/cli/mcp/server.js +4 -1
  21. package/dist/cli/mcp/tools.js +348 -5
  22. package/dist/cli/protocol-envelope.js +16 -0
  23. package/dist/cli-entry.js +6 -1
  24. package/dist/electron-build/agents/chain/chain-config.js +556 -0
  25. package/dist/electron-build/agents/chain/chain-config.js.map +1 -0
  26. package/dist/electron-build/agents/chain/chain-index-query.js +145 -0
  27. package/dist/electron-build/agents/chain/chain-index-query.js.map +1 -0
  28. package/dist/electron-build/agents/chain/chain-indexer.js +1095 -0
  29. package/dist/electron-build/agents/chain/chain-indexer.js.map +1 -0
  30. package/dist/electron-build/agents/chain/chain-settlement.js +291 -0
  31. package/dist/electron-build/agents/chain/chain-settlement.js.map +1 -0
  32. package/dist/electron-build/agents/chain/escrow-client.js +443 -0
  33. package/dist/electron-build/agents/chain/escrow-client.js.map +1 -0
  34. package/dist/electron-build/agents/chain/explorer.js +59 -0
  35. package/dist/electron-build/agents/chain/explorer.js.map +1 -0
  36. package/dist/electron-build/agents/local-signer.js +101 -0
  37. package/dist/electron-build/agents/local-signer.js.map +1 -0
  38. package/dist/electron-build/agents/network-pulse.js +693 -3
  39. package/dist/electron-build/agents/network-pulse.js.map +1 -1
  40. package/dist/electron-build/agents/task/task-runner.js +27 -3
  41. package/dist/electron-build/agents/task/task-runner.js.map +1 -1
  42. package/dist/electron-build/agents/task-board.js +761 -0
  43. package/dist/electron-build/agents/task-board.js.map +1 -0
  44. package/dist/electron-build/agents/task-contract.js +382 -0
  45. package/dist/electron-build/agents/task-contract.js.map +1 -0
  46. package/dist/electron-build/agents/x402/paid-info-store.js +76 -6
  47. package/dist/electron-build/agents/x402/paid-info-store.js.map +1 -1
  48. package/dist/web/chain-explorer.js +617 -0
  49. package/dist/web/explorer.html +163 -0
  50. package/dist/web/index.html +5 -0
  51. package/dist/web/routes-chain-index.js +108 -0
  52. package/dist/web/routes-onchain-trade.js +99 -0
  53. package/dist/web/server.js +13 -0
  54. package/package.json +2 -1
  55. package/scripts/build-web.ts +20 -1
@@ -0,0 +1,52 @@
1
+ /**
2
+ * explorer.ts — 区块浏览器映射 (chainId → 公网浏览器) + **交易**链接构造
3
+ *
4
+ * 只回答一件事: **这条链有没有已知的公网浏览器**。
5
+ * · 有 → `https://<explorer>/tx/0x…` (公开可核验的链上事实)
6
+ * · 认不出 / 本机隔离开发链 (31337) → **null** —— 没有公网浏览器就**不给链接**,
7
+ * 绝不编造 `href="#"`、死链或猜一个域名 (宁缺勿错)。
8
+ *
9
+ * 隐私红线 (2026-09-23 leo 拍板; 同日收窄):
10
+ * · 允许出现在公开快照里的 0x 字符串**只有两种**: 交易哈希 (0x+64 hex) 与 escrow **合约**地址
11
+ * (0x+40 hex) —— 它们本来就是公开链上事实。
12
+ * · 但**页面只可点交易**: escrow 合约地址保留在行数据里供索引/诊断, **不渲染、不生成合约链接**
13
+ * (所以本文件**没有** address 链接构造器 —— 少一个能凭空造出合约链接的入口)。
14
+ * · EOA / 钱包地址 (买方·卖方·payTo 之类)、taskKey 原文、taskId、args 里的地址、DID、
15
+ * peer IP / multiaddr、私钥 —— **一个都不许**经这里或别处进快照。
16
+ * · 本文件只构造 URL, 不读盘不发 RPC, 也从不接受「调用方说它是合约地址」的自我声明。
17
+ */
18
+ /** chainId → 公网浏览器 base URL (白名单; 认不出的一律没有) */
19
+ export const EXPLORER_BY_CHAIN = Object.freeze({
20
+ 8453: 'https://basescan.org', // Base 主网
21
+ 84532: 'https://sepolia.basescan.org', // Base Sepolia 测试网
22
+ 1: 'https://etherscan.io', // Ethereum 主网
23
+ 11155111: 'https://sepolia.etherscan.io', // Sepolia 测试网
24
+ });
25
+ /** 交易哈希: 小写 0x + 64 位十六进制 (词法唯一形状) */
26
+ export const TX_HASH_RE = /^0x[0-9a-f]{64}$/;
27
+ /** 地址: 小写 0x + 40 位十六进制 (合约地址同样长这样 —— 是**谁**由调用方的白名单决定) */
28
+ export const ADDRESS_RE = /^0x[0-9a-f]{40}$/;
29
+ /**
30
+ * 浏览器**交易**链接形状 (反向校验用): https + 已知浏览器域名 + `/tx/0x64hex`。
31
+ * 给守卫 / 单测一把「这不是我们造的链接」的尺子 —— 端口 / 凭据 / 别的路径 (含 `/address/`) 一律不认。
32
+ */
33
+ export const EXPLORER_URL_RE = /^https:\/\/(?:[a-z0-9-]+\.)*(?:basescan\.org|etherscan\.io)\/tx\/0x[0-9a-f]{64}$/;
34
+ /** chainId 有没有已知公网浏览器 → base URL; 认不出 (含本机 31337) → null */
35
+ export function explorerBaseUrl(chainId) {
36
+ const id = Number(chainId);
37
+ if (!Number.isInteger(id) || id < 0)
38
+ return null;
39
+ return EXPLORER_BY_CHAIN[id] ?? null;
40
+ }
41
+ /** 交易链接; 链没浏览器 / 哈希非法 → null (调用方**不要**填 null 之外的占位) */
42
+ export function explorerTxUrl(chainId, txHash) {
43
+ const base = explorerBaseUrl(chainId);
44
+ const h = String(txHash ?? '').toLowerCase();
45
+ if (!base || !TX_HASH_RE.test(h))
46
+ return null;
47
+ return `${base}/tx/${h}`;
48
+ }
49
+ /** 这个字符串是不是我们亲手造的那种**交易**浏览器链接 (守卫 / 单测用) */
50
+ export function isExplorerUrl(url) {
51
+ return typeof url === 'string' && EXPLORER_URL_RE.test(url);
52
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * src/agents/chain/index.ts — 链桥模块出口 (P3: Bolloon 链桥 / P5: 链上索引器)
3
+ *
4
+ * 七件事的入口:
5
+ * · chain-config — 链配置 / 确认数门槛 / 钱包路径 (env → 本地安全配置 → 报错)
6
+ * · escrow-client — AgentEscrow v2 真链读写 + 5 个 v2 事件监听 (ethers v6)
7
+ * · chain-settlement — 「到底结算了没有」的唯一判定 (修 F5)
8
+ * · chain-wallet — 链上签名的唯一放行闸 + 签名审计
9
+ * · chain-state-store — 落盘 / 重启恢复 / 重组对账
10
+ * · chain-indexer — P5: v2 事件索引器 (分页扫 / 增量 / 去重 / 重组回退 / 全量重建)
11
+ * · chain-index-query — P5: 只读查询 (时间线 / cursor 增量 / 统计 / 索引高度)
12
+ * · explorer — chainId → 公网区块浏览器 (**只造交易链接**: 合约地址不页面化; 认不出的链不给链接)
13
+ */
14
+ export * from './chain-config.js';
15
+ export * from './escrow-client.js';
16
+ export * from './chain-settlement.js';
17
+ export * from './chain-wallet.js';
18
+ export * from './chain-state-store.js';
19
+ export * from './onchain-trade.js';
20
+ export * from './chain-indexer.js';
21
+ export * from './chain-index-query.js';
22
+ export * from './explorer.js';