@bolloon/bolloon-agent 0.4.10 → 0.4.12
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 +14 -8
- package/dist/agents/agent-registry.js +151 -0
- package/dist/agents/agent-reputation.js +54 -0
- package/dist/agents/agent-service-client.js +121 -0
- package/dist/agents/economic-policy.js +132 -0
- package/dist/agents/pi-sdk-tools.js +203 -0
- package/dist/pi-ecosystem-a2ui/index.js +81 -0
- package/dist/web/a2ui-client.js +32697 -0
- package/dist/web/mobile.html +4 -0
- package/dist/web/server.js +47 -0
- package/package.json +3 -1
- package/scripts/build-web.ts +15 -0
package/dist/web/mobile.html
CHANGED
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
<div class="section-label">MCP 工具 (触控调用)</div>
|
|
38
38
|
<div class="list" id="mcp-tools"></div>
|
|
39
|
+
<div class="section-label">A2UI 动态面板 (智能体生成)</div>
|
|
40
|
+
<div id="a2ui-root"></div>
|
|
39
41
|
</section>
|
|
40
42
|
|
|
41
43
|
<!-- 我 tab -->
|
|
@@ -68,5 +70,7 @@
|
|
|
68
70
|
</div>
|
|
69
71
|
|
|
70
72
|
<script src="./mobile.js"></script>
|
|
73
|
+
<!-- 2026-08-12: A2UI 渲染器 (智能体生成动态 UI, 挂载 #a2ui-root) -->
|
|
74
|
+
<script src="./a2ui-client.js"></script>
|
|
71
75
|
</body>
|
|
72
76
|
</html>
|
package/dist/web/server.js
CHANGED
|
@@ -2785,6 +2785,32 @@ ${goalDesc}
|
|
|
2785
2785
|
res.status(400).json({ ok: false, severity: 'block', reason: e?.message ?? 'parse error' });
|
|
2786
2786
|
}
|
|
2787
2787
|
});
|
|
2788
|
+
// 2026-08-13 (Phase E1): Agent 服务 Registry — 发现层 (OrbitDB 去中心化 + 本地 fallback)
|
|
2789
|
+
app.get('/api/registry', async (_req, res) => {
|
|
2790
|
+
try {
|
|
2791
|
+
const { getAgentRegistry } = await import('../agents/agent-registry.js');
|
|
2792
|
+
const q = String(_req.query?.q || '').trim();
|
|
2793
|
+
const registry = getAgentRegistry();
|
|
2794
|
+
const services = q ? await registry.discover(q) : await registry.list();
|
|
2795
|
+
res.json({ services, count: services.length, ready: registry.ready });
|
|
2796
|
+
}
|
|
2797
|
+
catch (e) {
|
|
2798
|
+
res.status(500).json({ error: e?.message });
|
|
2799
|
+
}
|
|
2800
|
+
});
|
|
2801
|
+
app.post('/api/registry/register', async (req, res) => {
|
|
2802
|
+
try {
|
|
2803
|
+
const { getAgentRegistry } = await import('../agents/agent-registry.js');
|
|
2804
|
+
const registry = getAgentRegistry();
|
|
2805
|
+
const r = await registry.register(req.body || {});
|
|
2806
|
+
if (!r.ok)
|
|
2807
|
+
return res.status(400).json({ error: r.error });
|
|
2808
|
+
res.json({ ok: true, registered: req.body?.agentId, ready: registry.ready });
|
|
2809
|
+
}
|
|
2810
|
+
catch (e) {
|
|
2811
|
+
res.status(500).json({ error: e?.message });
|
|
2812
|
+
}
|
|
2813
|
+
});
|
|
2788
2814
|
// 2026-08-12: MCP 工具列表 (MCP 前端支持 — 手机端/桌面 UI 展示可用 MCP 工具)
|
|
2789
2815
|
app.get('/api/mcp/tools', async (_req, res) => {
|
|
2790
2816
|
try {
|
|
@@ -2808,6 +2834,27 @@ ${goalDesc}
|
|
|
2808
2834
|
console.warn('[ui-tools] UI 广播注入失败 (非致命):', e?.message?.slice(0, 120));
|
|
2809
2835
|
}
|
|
2810
2836
|
})();
|
|
2837
|
+
// 2026-08-12: A2UI (Agent to UI) — 把 broadcast 注入 a2ui 模块, agent 调 a2ui_* 工具时广播 {type:'a2ui'} 给前端 SSE
|
|
2838
|
+
(async () => {
|
|
2839
|
+
try {
|
|
2840
|
+
const { setA2uiBroadcast } = await import('../pi-ecosystem-a2ui/index.js');
|
|
2841
|
+
setA2uiBroadcast(broadcast);
|
|
2842
|
+
}
|
|
2843
|
+
catch (e) {
|
|
2844
|
+
console.warn('[a2ui] 广播注入失败 (非致命):', e?.message?.slice(0, 120));
|
|
2845
|
+
}
|
|
2846
|
+
})();
|
|
2847
|
+
// 2026-08-13 (Phase E1): 预热 Agent 服务 Registry (OrbitDB 去中心化)
|
|
2848
|
+
(async () => {
|
|
2849
|
+
try {
|
|
2850
|
+
const { warmAgentRegistry } = await import('../agents/agent-registry.js');
|
|
2851
|
+
const ok = await warmAgentRegistry();
|
|
2852
|
+
console.log(`[agent-registry] OrbitDB 服务注册表 ${ok ? '已启用' : '未启用 (回退本地)'}`);
|
|
2853
|
+
}
|
|
2854
|
+
catch (e) {
|
|
2855
|
+
console.warn('[agent-registry] 预热失败 (非致命):', e?.message?.slice(0, 120));
|
|
2856
|
+
}
|
|
2857
|
+
})();
|
|
2811
2858
|
app.get('/api/health', (_req, res) => {
|
|
2812
2859
|
res.json(healthCheck(getPackageVersion()));
|
|
2813
2860
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bolloon/bolloon-agent",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.12",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "P2P AI Document Agent - 全局安装后执行 `bolloon` 启动产品",
|
|
6
6
|
"main": "dist/cli-entry.js",
|
|
@@ -55,6 +55,8 @@
|
|
|
55
55
|
"src/constraint-runtime"
|
|
56
56
|
],
|
|
57
57
|
"dependencies": {
|
|
58
|
+
"@a2ui/react": "^0.10.2",
|
|
59
|
+
"@a2ui/web_core": "^0.10.6",
|
|
58
60
|
"@bolloon/constraint-runtime": "0.1.0",
|
|
59
61
|
"@capacitor/android": "^8.5.0",
|
|
60
62
|
"@capacitor/core": "^8.5.0",
|
package/scripts/build-web.ts
CHANGED
|
@@ -91,6 +91,21 @@ async function main() {
|
|
|
91
91
|
bundle: true,
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
+
// 2026-08-12: 编译 A2UI 前端渲染器 (a2ui-client.tsx → a2ui-client.js)
|
|
95
|
+
// react + @a2ui/react + @a2ui/web_core 全部打包进 bundle (手机端 webview 无 CDN)
|
|
96
|
+
console.log('[build-web] 编译 a2ui-client.tsx...');
|
|
97
|
+
await esbuild.build({
|
|
98
|
+
entryPoints: [path.join(ROOT, 'src/web/a2ui-client.tsx')],
|
|
99
|
+
outfile: path.join(DIST_WEB, 'a2ui-client.js'),
|
|
100
|
+
format: 'iife',
|
|
101
|
+
target: 'es2022',
|
|
102
|
+
platform: 'browser',
|
|
103
|
+
minify: false,
|
|
104
|
+
bundle: true,
|
|
105
|
+
jsx: 'automatic',
|
|
106
|
+
loader: { '.tsx': 'tsx' },
|
|
107
|
+
});
|
|
108
|
+
|
|
94
109
|
// 复制静态文件
|
|
95
110
|
console.log('[build-web] 复制静态文件...');
|
|
96
111
|
await fs.copyFile(path.join(ROOT, 'src/web/index.html'), path.join(DIST_WEB, 'index.html'));
|