@bolloon/bolloon-agent 0.4.30 → 0.4.32
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/dist/agents/agent-gateway.js +5 -0
- package/dist/agents/agent-manifest-protocol.js +29 -0
- package/dist/agents/chain/chain-config.js +504 -0
- package/dist/agents/chain/chain-index-query.js +135 -0
- package/dist/agents/chain/chain-indexer.js +1045 -0
- package/dist/agents/chain/chain-settlement.js +284 -0
- package/dist/agents/chain/chain-state-store.js +245 -0
- package/dist/agents/chain/chain-wallet.js +198 -0
- package/dist/agents/chain/escrow-client.js +433 -0
- package/dist/agents/chain/index.js +20 -0
- package/dist/agents/chain/onchain-trade.js +691 -0
- package/dist/agents/economic-policy.js +7 -0
- package/dist/agents/gateway-network.js +6 -0
- package/dist/agents/local-signer.js +59 -0
- package/dist/agents/network-pulse.js +912 -0
- package/dist/agents/task/task-onchain-runner.js +284 -0
- package/dist/agents/task-contract.js +322 -0
- package/dist/agents/task-inbox.js +267 -0
- package/dist/agents/task-transport.js +280 -0
- package/dist/agents/x402/paid-info-store.js +75 -6
- package/dist/agents/x402/transaction-store.js +8 -1
- package/dist/cli/commands/agent.js +230 -0
- package/dist/cli/commands/chain.js +926 -0
- package/dist/cli/commands/index.js +69 -0
- package/dist/cli/commands/mcp.js +98 -0
- package/dist/cli/commands/network.js +334 -0
- package/dist/cli/commands/payment.js +125 -0
- package/dist/cli/commands/tasks.js +1236 -0
- package/dist/cli/commands/trade.js +229 -0
- package/dist/cli/commands/wallet.js +450 -0
- package/dist/cli/mcp/bridge.js +105 -0
- package/dist/cli/mcp/server.js +188 -0
- package/dist/cli/mcp/tools.js +955 -0
- package/dist/cli/protocol-envelope.js +358 -0
- package/dist/cli-entry.js +146 -17
- package/dist/electron-build/agents/agent-gateway.js +5 -0
- package/dist/electron-build/agents/agent-gateway.js.map +1 -1
- package/dist/electron-build/agents/agent-manifest-protocol.js +62 -0
- package/dist/electron-build/agents/agent-manifest-protocol.js.map +1 -1
- package/dist/electron-build/agents/chain/chain-config.js +556 -0
- package/dist/electron-build/agents/chain/chain-config.js.map +1 -0
- package/dist/electron-build/agents/chain/chain-index-query.js +145 -0
- package/dist/electron-build/agents/chain/chain-index-query.js.map +1 -0
- package/dist/electron-build/agents/chain/chain-indexer.js +1095 -0
- package/dist/electron-build/agents/chain/chain-indexer.js.map +1 -0
- package/dist/electron-build/agents/chain/chain-settlement.js +291 -0
- package/dist/electron-build/agents/chain/chain-settlement.js.map +1 -0
- package/dist/electron-build/agents/chain/escrow-client.js +443 -0
- package/dist/electron-build/agents/chain/escrow-client.js.map +1 -0
- package/dist/electron-build/agents/economic-policy.js +7 -0
- package/dist/electron-build/agents/economic-policy.js.map +1 -1
- package/dist/electron-build/agents/gateway-network.js +6 -0
- package/dist/electron-build/agents/gateway-network.js.map +1 -1
- package/dist/electron-build/agents/network-pulse.js +979 -0
- package/dist/electron-build/agents/network-pulse.js.map +1 -0
- package/dist/electron-build/agents/x402/paid-info-store.js +76 -6
- package/dist/electron-build/agents/x402/paid-info-store.js.map +1 -1
- package/dist/electron-build/agents/x402/transaction-store.js +8 -1
- package/dist/electron-build/agents/x402/transaction-store.js.map +1 -1
- package/dist/web/chain-explorer.js +617 -0
- package/dist/web/explorer.html +163 -0
- package/dist/web/index.html +5 -0
- package/dist/web/routes-chain-index.js +108 -0
- package/dist/web/routes-onchain-trade.js +99 -0
- package/dist/web/server.js +42 -0
- package/dist/web/task-frame-server.js +211 -0
- package/package.json +2 -1
- package/scripts/build-web.ts +20 -1
|
@@ -69,6 +69,13 @@ export class LocalEconomicPolicy {
|
|
|
69
69
|
await this.resetIfNewDay();
|
|
70
70
|
return this._dailySpent;
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* 把当前配置 + 今日花费落盘 (2026-09-21: P3 `bolloon wallet set-policy` 要能持久化策略改动)。
|
|
74
|
+
* 与 `recordSpend` / `resetIfNewDay` 用**同一份**文件格式与同一个 `persist()` —— 不另开一套写法。
|
|
75
|
+
*/
|
|
76
|
+
async save() {
|
|
77
|
+
await this.persist();
|
|
78
|
+
}
|
|
72
79
|
async resetIfNewDay() {
|
|
73
80
|
const today = new Date().toISOString().slice(0, 10);
|
|
74
81
|
if (this._dayKey !== today) {
|
|
@@ -209,6 +209,12 @@ export async function joinNetwork(link, deps) {
|
|
|
209
209
|
sharedContextCid: bootstrap.sharedContextCid,
|
|
210
210
|
},
|
|
211
211
|
]);
|
|
212
|
+
// 2026-09-18: 入网成功 → 网络脉冲 (匿名统计, 失败静默)
|
|
213
|
+
try {
|
|
214
|
+
const did = String(globalThis.__bolloonLocalDid || bootstrap.name || link || 'unknown-node');
|
|
215
|
+
void import('./network-pulse.js').then((np) => np.recordNetworkEvent({ type: 'node_joined', did, signed: true })).catch(() => { });
|
|
216
|
+
}
|
|
217
|
+
catch { /* ignore */ }
|
|
212
218
|
return { ok: true, joined, total: remoteServices.length, linkKind: parsed.kind, networkName: bootstrap.name || parsed.networkName, networkId: bootstrap.networkId, sharedContextCid: bootstrap.sharedContextCid };
|
|
213
219
|
}
|
|
214
220
|
/** 启动恢复: 重拉所有已加入网络 (失败静默, 保留记录). 返回恢复统计. */
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* local-signer.ts — 本机 DID 身份签名器 (P3, 2026-09-21)
|
|
3
|
+
*
|
|
4
|
+
* `bolloon-task/1` 的每一个信封 (request / accept / reject / result) 都必须带签名。
|
|
5
|
+
* 签名用的是本机 DIAP 身份 (`~/.bolloon/identity.json`, ed25519) —— **私钥只在本机进程内存里**,
|
|
6
|
+
* 本模块**只返回可用于签名的 keypair 对象**, 绝不返回私钥字符串/hex, 也不打印任何密钥材料。
|
|
7
|
+
*
|
|
8
|
+
* 红线 (P1 §5.5):
|
|
9
|
+
* · 私钥永不进 stdout/日志/审计账本;
|
|
10
|
+
* · 公钥 (hex) 可以随帧一起走 P2P —— 对端需要它来验签, 它是公开材料;
|
|
11
|
+
* · 没有本机身份 → 返回 null, 调用方必须**如实失败**, 不许用假签名糊过去。
|
|
12
|
+
*/
|
|
13
|
+
import * as os from 'os';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import * as crypto from 'crypto';
|
|
16
|
+
/** 本机身份文件 (与 network-pulse 快照签名同源: ~/.bolloon/identity.json) */
|
|
17
|
+
export function identityFile(home) {
|
|
18
|
+
return path.join(home || process.env.HOME || os.homedir(), '.bolloon', 'identity.json');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 加载本机签名器。文件缺失/损坏 → null (调用方如实报"没有可签名的身份")。
|
|
22
|
+
*/
|
|
23
|
+
export async function loadLocalSigner(home) {
|
|
24
|
+
try {
|
|
25
|
+
const file = identityFile(home);
|
|
26
|
+
const { KeyManager } = (await import('@diap/sdk'));
|
|
27
|
+
const kp = await KeyManager.fromFile(file);
|
|
28
|
+
if (!kp?.privateKey || !kp?.publicKey)
|
|
29
|
+
return null;
|
|
30
|
+
return { did: String(kp.did || ''), publicKeyHex: Buffer.from(kp.publicKey).toString('hex'), keypair: kp };
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** 本机公钥 hex (给帧的信封用; 没有身份 → null) */
|
|
37
|
+
export async function localPublicKeyHex(home) {
|
|
38
|
+
const s = await loadLocalSigner(home);
|
|
39
|
+
return s?.publicKeyHex ?? null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 从公钥 hex 造一个 `KeyManager.verify` 能吃的 verifier。
|
|
43
|
+
* (@diap/sdk 的 verify 只用到 `publicKey` 字段 —— 它改不了密钥的用途, 这里不涉及任何私钥。)
|
|
44
|
+
*/
|
|
45
|
+
export function verifierFor(publicKeyHex) {
|
|
46
|
+
if (!/^[0-9a-f]{64}$/i.test(String(publicKeyHex || '')))
|
|
47
|
+
return null;
|
|
48
|
+
return { publicKey: new Uint8Array(Buffer.from(publicKeyHex, 'hex')) };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 指纹 (sha256 前 12 位 hex) —— 只用于日志/审计的"是谁签的", **不可逆, 不含密钥材料**。
|
|
52
|
+
*/
|
|
53
|
+
export function fingerprintOf(input) {
|
|
54
|
+
return `sha256:${crypto.createHash('sha256').update(String(input || '')).digest('hex').slice(0, 12)}`;
|
|
55
|
+
}
|
|
56
|
+
/** payload 摘要 (审计账本只记摘要, 不记正文) */
|
|
57
|
+
export function payloadDigest(payload) {
|
|
58
|
+
return crypto.createHash('sha256').update(String(payload ?? '')).digest('hex');
|
|
59
|
+
}
|