@bolloon/bolloon-agent 0.3.37 → 0.3.39

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 (222) hide show
  1. package/README.md +135 -135
  2. package/bin/bolloon-cli.cjs +183 -183
  3. package/bin/bolloon.cjs +0 -0
  4. package/bin/bolloon.js +157 -0
  5. package/dist/agents/constraint-layer.js +19 -19
  6. package/dist/agents/judgment-protocol.js +14 -14
  7. package/dist/agents/loop-review.js +58 -0
  8. package/dist/agents/pi-sdk-tools.js +107 -0
  9. package/dist/agents/pi-sdk-types.js +12 -12
  10. package/dist/agents/pi-sdk.js +133 -91
  11. package/dist/agents/workflow-pivot-loop.js +2 -2
  12. package/dist/bollharness/src/scripts/deploy-guard.js +8 -8
  13. package/dist/bollharness-integration/context-router-judgment.js +4 -4
  14. package/dist/bollharness-integration/context-router.js +292 -292
  15. package/dist/bollharness-integration/gate-state-machine.js +13 -13
  16. package/dist/bollharness-integration/llm-judgment-engine.js +134 -134
  17. package/dist/bollharness-integration/skill-adapter.js +21 -21
  18. package/dist/bootstrap/bootstrap.js +14 -1
  19. package/dist/bootstrap/chat-archiver.js +14 -14
  20. package/dist/bootstrap/context-collector.js +5 -1
  21. package/dist/bootstrap/context-os.js +21 -21
  22. package/dist/bootstrap/memory-compressor.js +13 -13
  23. package/dist/cli/ink-app.js +46 -8
  24. package/dist/cli/loading-tui.js +7 -5
  25. package/dist/cli/mention-data.js +2 -1
  26. package/dist/cli-entry.js +37 -37
  27. package/dist/constraint-runtime/setup.js +1 -1
  28. package/dist/constraint-runtime/tools/PolymarketSDK/cancelOrder.d.ts +3 -13
  29. package/dist/constraint-runtime/tools/PolymarketSDK/cancelOrder.js +4 -16
  30. package/dist/constraint-runtime/tools/PolymarketSDK/createOrder.d.ts +3 -24
  31. package/dist/constraint-runtime/tools/PolymarketSDK/createOrder.js +4 -31
  32. package/dist/constraint-runtime/tools/PolymarketSDK/getMarket.d.ts +0 -1
  33. package/dist/constraint-runtime/tools/PolymarketSDK/getMarket.js +3 -14
  34. package/dist/constraint-runtime/tools/PolymarketSDK/getOrders.d.ts +2 -11
  35. package/dist/constraint-runtime/tools/PolymarketSDK/getOrders.js +4 -23
  36. package/dist/constraint-runtime/tools/PolymarketSDK/listMarkets.d.ts +0 -4
  37. package/dist/constraint-runtime/tools/PolymarketSDK/listMarkets.js +2 -22
  38. package/dist/context-compaction/auto-compact.js +7 -7
  39. package/dist/electron/first-run.js +54 -54
  40. package/dist/electron-build/electron/first-run.js +54 -54
  41. package/dist/electron-build/utils/auto-update.js +8 -0
  42. package/dist/electron-build/utils/auto-update.js.map +1 -1
  43. package/dist/electron-preload.js.map +1 -1
  44. package/dist/electron.js.map +1 -1
  45. package/dist/index.js +246 -143
  46. package/dist/llm/config-store.js +18 -2
  47. package/dist/llm/llm-judgment-client.js +102 -102
  48. package/dist/llm/pi-ai.js +77 -59
  49. package/dist/llm/system-prompt/layers/channel/human-async.md +41 -41
  50. package/dist/llm/system-prompt/layers/channel/local.md +14 -14
  51. package/dist/llm/system-prompt/layers/channel/p2p-agent.md +18 -18
  52. package/dist/llm/system-prompt/layers/channel/p2p-peer-sync.md +51 -51
  53. package/dist/llm/system-prompt/layers/channel/p2p-proactive.md +43 -43
  54. package/dist/llm/system-prompt/layers/channel/p2p-visitor.md +19 -19
  55. package/dist/llm/system-prompt/layers/channel/session-handoff.md +61 -61
  56. package/dist/llm/system-prompt/layers/core/artifacts_storage.md +89 -89
  57. package/dist/llm/system-prompt/layers/core/evenhandedness.md +21 -21
  58. package/dist/llm/system-prompt/layers/core/external-engagement.md +73 -73
  59. package/dist/llm/system-prompt/layers/core/hibs_reminders.md +15 -15
  60. package/dist/llm/system-prompt/layers/core/identity.md +48 -48
  61. package/dist/llm/system-prompt/layers/core/knowledge.md +17 -17
  62. package/dist/llm/system-prompt/layers/core/memory_system.md +12 -12
  63. package/dist/llm/system-prompt/layers/core/network_filesystem.md +28 -28
  64. package/dist/llm/system-prompt/layers/core/refusal.md +37 -37
  65. package/dist/llm/system-prompt/layers/core/tone.md +31 -31
  66. package/dist/llm/system-prompt/layers/core/tools.thin.md +13 -13
  67. package/dist/llm/system-prompt/layers/core/wellbeing.md +41 -41
  68. package/dist/llm/system-prompt/layers/role/architect.md +20 -20
  69. package/dist/llm/system-prompt/layers/role/expert.md +19 -19
  70. package/dist/llm/system-prompt/layers/role/implementer.md +15 -15
  71. package/dist/llm/system-prompt/layers/role/security.md +15 -15
  72. package/dist/llm/system-prompt/layers/tool/artifacts.md +72 -72
  73. package/dist/llm/system-prompt/layers/tool/bash.md +25 -25
  74. package/dist/llm/system-prompt/layers/tool/goal_handoff.md +77 -77
  75. package/dist/llm/system-prompt/layers/tool/hibs_api.md +171 -171
  76. package/dist/llm/system-prompt/layers/tool/image_search.md +70 -70
  77. package/dist/llm/system-prompt/layers/tool/manifest.md +89 -89
  78. package/dist/llm/system-prompt/layers/tool/mcp_apps.md +53 -53
  79. package/dist/llm/system-prompt/layers/tool/p2p_request.md +61 -61
  80. package/dist/llm/system-prompt/layers/tool/web_search.md +83 -83
  81. package/dist/llm/tool-manifest/ask_user_input.js +1 -1
  82. package/dist/llm/tool-manifest/bash.js +3 -3
  83. package/dist/llm/tool-manifest/create_file.js +4 -4
  84. package/dist/llm/tool-manifest/fetch_sports_data.js +3 -3
  85. package/dist/llm/tool-manifest/image_search.js +2 -2
  86. package/dist/llm/tool-manifest/index.js +0 -59
  87. package/dist/llm/tool-manifest/mcp.js +2 -2
  88. package/dist/llm/tool-manifest/message_compose.js +3 -3
  89. package/dist/llm/tool-manifest/places.js +2 -2
  90. package/dist/llm/tool-manifest/present_files.js +1 -1
  91. package/dist/llm/tool-manifest/recipe.js +2 -2
  92. package/dist/llm/tool-manifest/str_replace.js +5 -5
  93. package/dist/llm/tool-manifest/view.js +3 -3
  94. package/dist/llm/tool-manifest/weather.js +4 -4
  95. package/dist/llm/tool-manifest/web.js +4 -4
  96. package/dist/migration/external-agent-migrator.js +300 -0
  97. package/dist/pi-ecosystem-colony/index.js +365 -0
  98. package/dist/pi-ecosystem-judgment/causal-judge.js +51 -51
  99. package/dist/pi-ecosystem-judgment/distill-prompt.js +42 -42
  100. package/dist/pi-ecosystem-judgment/distillation.js +14 -14
  101. package/dist/pi-ecosystem-judgment/monitor-gate.js +28 -28
  102. package/dist/pi-ecosystem-judgment/value-injection.js +102 -102
  103. package/dist/security/context-router-tool.js +15 -15
  104. package/dist/security/tool-gate.js +2 -0
  105. package/dist/social/ant-colony/AdaptiveHeartbeat.js +101 -0
  106. package/dist/social/ant-colony/PheromoneEngine.js +227 -0
  107. package/dist/social/ant-colony/index.js +6 -0
  108. package/dist/social/ant-colony/types.js +24 -0
  109. package/dist/test/ai-judgment-test.js +80 -0
  110. package/dist/test/bollharness-integration.test.js +318 -0
  111. package/dist/test/channel-agent-multi-dialogue.js +205 -0
  112. package/dist/test/channel-heartbeat-agent-test.js +201 -0
  113. package/dist/test/constraint-layer.test.js +164 -0
  114. package/dist/test/diap-identity-test.js +172 -0
  115. package/dist/test/diap-quick-test.js +62 -0
  116. package/dist/test/global-shared-context.test.js +315 -0
  117. package/dist/test/harness-judgment-injection.test.js +246 -0
  118. package/dist/test/harness-workflow-integrator-test.js +228 -0
  119. package/dist/test/human-value-store.test.js +243 -0
  120. package/dist/test/hybrid-integration-test.js +118 -0
  121. package/dist/test/hybrid-messenger-verify.js +55 -0
  122. package/dist/test/iroh-bistream-debug.js +38 -0
  123. package/dist/test/iroh-communication.test.js +66 -0
  124. package/dist/test/iroh-debug-test.js +57 -0
  125. package/dist/test/iroh-diap-test.js +71 -0
  126. package/dist/test/iroh-direct-connect.js +55 -0
  127. package/dist/test/iroh-e2e-fixed.js +89 -0
  128. package/dist/test/iroh-e2e-same-process.js +63 -0
  129. package/dist/test/iroh-e2e.js +66 -0
  130. package/dist/test/iroh-final-e2e.js +72 -0
  131. package/dist/test/iroh-relay-test.js +37 -0
  132. package/dist/test/iroh-simple-test.js +41 -0
  133. package/dist/test/iroh-transport-verify.js +54 -0
  134. package/dist/test/iroh-transport.test.js +37 -0
  135. package/dist/test/iroh-two-nodes.js +70 -0
  136. package/dist/test/iroh-verify.js +44 -0
  137. package/dist/test/judgment-decision.test.js +219 -0
  138. package/dist/test/llm-judgment-integration.test.js +220 -0
  139. package/dist/test/p2p-agent-complex-dialogue.js +385 -0
  140. package/dist/test/p2p-agent-dialogue.js +341 -0
  141. package/dist/test/p2p-agent-full-bidirectional.js +510 -0
  142. package/dist/test/p2p-agent-harness-flow.js +437 -0
  143. package/dist/test/p2p-agent-harness-single.js +143 -0
  144. package/dist/test/p2p-ai-dialogue-test.js +318 -0
  145. package/dist/test/p2p-cid-connect-test.js +195 -0
  146. package/dist/test/p2p-connect-receiver.js +69 -0
  147. package/dist/test/p2p-doc-transfer.js +110 -0
  148. package/dist/test/p2p-identity-page-test.js +77 -0
  149. package/dist/test/p2p-iroh-test.js +171 -0
  150. package/dist/test/p2p-minimal-test.js +241 -0
  151. package/dist/test/p2p-node-1.js +148 -0
  152. package/dist/test/p2p-node-2.js +148 -0
  153. package/dist/test/p2p-server.js +281 -0
  154. package/dist/test/p2p-two-nodes-test.js +438 -0
  155. package/dist/test/pi-sdk.test.js +44 -0
  156. package/dist/test/set-persona.js +40 -0
  157. package/dist/test/simple.test.js +9 -0
  158. package/dist/test/storage-integration.test.js +150 -0
  159. package/dist/test/subagent-manager.test.js +276 -0
  160. package/dist/test/test-gate-flow.test.js +81 -0
  161. package/dist/test/workflow-engine.test.js +87 -0
  162. package/dist/test/workflow-pivot-loop.test.js +246 -0
  163. package/dist/utils/auto-update.js +7 -0
  164. package/dist/web/api-config.html +779 -779
  165. package/dist/web/client-hearth.js +10 -10
  166. package/dist/web/components/wallet-viem.mjs +118 -118
  167. package/dist/web/index.html +424 -424
  168. package/dist/web/manifest.json +20 -20
  169. package/dist/web/server.js +13 -13
  170. package/dist/web/style.css +4914 -4914
  171. package/package.json +193 -193
  172. package/scripts/build-cli.js +215 -215
  173. package/scripts/build-web.ts +130 -130
  174. package/scripts/postinstall.js +152 -152
  175. package/bin/bolloon-daemon.sh +0 -207
  176. package/dist/constraint-runtime/reference_data/archive_surface_snapshot.json +0 -63
  177. package/dist/constraint-runtime/reference_data/commands_snapshot.json +0 -1037
  178. package/dist/constraint-runtime/reference_data/subsystems/assistant.json +0 -8
  179. package/dist/constraint-runtime/reference_data/subsystems/bootstrap.json +0 -8
  180. package/dist/constraint-runtime/reference_data/subsystems/bridge.json +0 -32
  181. package/dist/constraint-runtime/reference_data/subsystems/buddy.json +0 -13
  182. package/dist/constraint-runtime/reference_data/subsystems/cli.json +0 -26
  183. package/dist/constraint-runtime/reference_data/subsystems/components.json +0 -32
  184. package/dist/constraint-runtime/reference_data/subsystems/constants.json +0 -28
  185. package/dist/constraint-runtime/reference_data/subsystems/coordinator.json +0 -8
  186. package/dist/constraint-runtime/reference_data/subsystems/entrypoints.json +0 -15
  187. package/dist/constraint-runtime/reference_data/subsystems/hooks.json +0 -32
  188. package/dist/constraint-runtime/reference_data/subsystems/keybindings.json +0 -21
  189. package/dist/constraint-runtime/reference_data/subsystems/memdir.json +0 -15
  190. package/dist/constraint-runtime/reference_data/subsystems/migrations.json +0 -18
  191. package/dist/constraint-runtime/reference_data/subsystems/moreright.json +0 -8
  192. package/dist/constraint-runtime/reference_data/subsystems/native_ts.json +0 -11
  193. package/dist/constraint-runtime/reference_data/subsystems/outputStyles.json +0 -8
  194. package/dist/constraint-runtime/reference_data/subsystems/plugins.json +0 -9
  195. package/dist/constraint-runtime/reference_data/subsystems/remote.json +0 -11
  196. package/dist/constraint-runtime/reference_data/subsystems/schemas.json +0 -8
  197. package/dist/constraint-runtime/reference_data/subsystems/screens.json +0 -10
  198. package/dist/constraint-runtime/reference_data/subsystems/server.json +0 -10
  199. package/dist/constraint-runtime/reference_data/subsystems/services.json +0 -32
  200. package/dist/constraint-runtime/reference_data/subsystems/skills.json +0 -27
  201. package/dist/constraint-runtime/reference_data/subsystems/state.json +0 -13
  202. package/dist/constraint-runtime/reference_data/subsystems/types.json +0 -18
  203. package/dist/constraint-runtime/reference_data/subsystems/upstreamproxy.json +0 -9
  204. package/dist/constraint-runtime/reference_data/subsystems/utils.json +0 -32
  205. package/dist/constraint-runtime/reference_data/subsystems/vim.json +0 -12
  206. package/dist/constraint-runtime/reference_data/subsystems/voice.json +0 -8
  207. package/dist/constraint-runtime/reference_data/tools_snapshot.json +0 -922
  208. package/dist/constraint-runtime/tools/PolymarketSDK/clobShared.d.ts +0 -50
  209. package/dist/constraint-runtime/tools/PolymarketSDK/clobShared.js +0 -78
  210. package/dist/electron/config.js.map +0 -1
  211. package/dist/electron/dialogs.js.map +0 -1
  212. package/dist/electron/first-run.js.map +0 -1
  213. package/dist/electron/ipc.js.map +0 -1
  214. package/dist/electron/logger.js.map +0 -1
  215. package/dist/electron/main.js.map +0 -1
  216. package/dist/electron/menu.js.map +0 -1
  217. package/dist/electron/paths.js.map +0 -1
  218. package/dist/electron/server.js.map +0 -1
  219. package/dist/electron/tray.js.map +0 -1
  220. package/dist/electron/window.js.map +0 -1
  221. package/dist/utils/auto-update.js.map +0 -1
  222. package/dist/web/client.js.map +0 -7
package/dist/cli-entry.js CHANGED
@@ -50,42 +50,42 @@ function printBannerCli() {
50
50
  printBanner(VERSION);
51
51
  }
52
52
  function printHelp() {
53
- console.log(`
54
- ${BOLD}用法:${RESET}
55
- bolloon [选项] [命令] [参数]
56
-
57
- ${BOLD}选项:${RESET}
58
- --gui, -g 启动图形界面 (Electron)
59
- --web, -w 启动 Web UI (浏览器)
60
- --cli, -c 启动命令行界面
61
- --version, -v 显示版本信息
62
- --help, -h 显示帮助信息
63
-
64
- ${BOLD}命令:${RESET}
65
- bolloon update [--now] 检查更新 / 立即更新 (bolloon update --now)
66
- bolloon model [name] [model] 列出 / 切换模型供应商 (如: bolloon model deepseek deepseek-v4-flash)
67
- bolloon read <file> 读取文档
68
- bolloon summarize <file> 总结文档
69
- bolloon improve <file> <req> 改进文档
70
- bolloon engine list 列出外部编码智能体
71
- bolloon engine run <prompt> 委派任务给智能体
72
- bolloon x402 fetch <url> x402 自动支付 HTTP 请求
73
- bolloon x402 balance <address> 查询 x402 钱包余额
74
-
75
- ${BOLD}示例:${RESET}
76
- bolloon # 启动图形界面
77
- bolloon --web # 启动 Web UI
78
- bolloon --cli # 命令行模式
79
- bolloon model # 查看当前模型供应商
80
- bolloon model minimax # 切换到 MiniMax
81
- bolloon update # 检查更新
82
- bolloon update --now # 立即更新
83
-
84
- ${BOLD}环境变量:${RESET}
85
- MINIMAX_API_KEY MiniMax API 密钥
86
- OPENAI_API_KEY OpenAI API 密钥
87
- ANTHROPIC_API_KEY Anthropic API 密钥
88
- PORT Web 服务端口 (默认 54188)
53
+ console.log(`
54
+ ${BOLD}用法:${RESET}
55
+ bolloon [选项] [命令] [参数]
56
+
57
+ ${BOLD}选项:${RESET}
58
+ --gui, -g 启动图形界面 (Electron)
59
+ --web, -w 启动 Web UI (浏览器)
60
+ --cli, -c 启动命令行界面
61
+ --version, -v 显示版本信息
62
+ --help, -h 显示帮助信息
63
+
64
+ ${BOLD}命令:${RESET}
65
+ bolloon update [--now] 检查更新 / 立即更新 (bolloon update --now)
66
+ bolloon model [name] [model] 列出 / 切换模型供应商 (如: bolloon model deepseek deepseek-v4-flash)
67
+ bolloon read <file> 读取文档
68
+ bolloon summarize <file> 总结文档
69
+ bolloon improve <file> <req> 改进文档
70
+ bolloon engine list 列出外部编码智能体
71
+ bolloon engine run <prompt> 委派任务给智能体
72
+ bolloon x402 fetch <url> x402 自动支付 HTTP 请求
73
+ bolloon x402 balance <address> 查询 x402 钱包余额
74
+
75
+ ${BOLD}示例:${RESET}
76
+ bolloon # 启动图形界面
77
+ bolloon --web # 启动 Web UI
78
+ bolloon --cli # 命令行模式
79
+ bolloon model # 查看当前模型供应商
80
+ bolloon model minimax # 切换到 MiniMax
81
+ bolloon update # 检查更新
82
+ bolloon update --now # 立即更新
83
+
84
+ ${BOLD}环境变量:${RESET}
85
+ MINIMAX_API_KEY MiniMax API 密钥
86
+ OPENAI_API_KEY OpenAI API 密钥
87
+ ANTHROPIC_API_KEY Anthropic API 密钥
88
+ PORT Web 服务端口 (默认 54188)
89
89
  `);
90
90
  }
91
91
  function getDistDir() {
@@ -357,7 +357,7 @@ async function handleModelCommand(modelArgs) {
357
357
  const info = PROVIDER_INFO[name] || {};
358
358
  console.log(`${GREEN}✅ 已切换到 ${name}${RESET} (${info.name || ''})${modelNote}`);
359
359
  console.log(` 当前模型: ${modelArgs[1] || provider.model || (info.models && info.models[0]) || '默认'}`);
360
- console.log(` 配置已持久化: ~/.bolloon/llm-config.json`);
360
+ console.log(` 配置已持久化: ~/.bolloon/bolloon-config.json`);
361
361
  }
362
362
  /** 引擎子命令: list / run */
363
363
  async function handleEngineCommand(engineArgs) {
@@ -1,4 +1,4 @@
1
- import platform from 'platform';
1
+ import * as platform from 'platform';
2
2
  import { runDeferredInit } from './deferred_init.js';
3
3
  import { startMdmRawRead, startKeychainPrefetch, startProjectScan } from './prefetch.js';
4
4
  export function buildWorkspaceSetup() {
@@ -1,17 +1,7 @@
1
1
  export interface CancelOrderParams {
2
- /** 取消订单的钱包私钥 */
3
- privateKey: string;
4
- /** 要取消的订单 ID (orderId) */
5
2
  orderId: string;
6
- apiKey?: string;
7
- apiSecret?: string;
8
- apiPassphrase?: string;
9
- funder?: string;
10
3
  }
11
- export interface CancelOrderResult {
4
+ export declare function cancelOrder(params: CancelOrderParams): Promise<{
12
5
  success: boolean;
13
- message?: string;
14
- raw?: any;
15
- }
16
- /** 撤单 (@polymarket/client 统一 SDK cancelOrder, 2026-08-04 迁移). */
17
- export declare function cancelOrder(params: CancelOrderParams): Promise<CancelOrderResult>;
6
+ message: string;
7
+ }>;
@@ -1,18 +1,6 @@
1
- import { buildSecureClient } from './clobShared.js';
2
- /** 撤单 (@polymarket/client 统一 SDK cancelOrder, 2026-08-04 迁移). */
3
1
  export async function cancelOrder(params) {
4
- if (!params.privateKey) {
5
- return { success: false, message: '取消订单需要提供钱包私钥 privateKey' };
6
- }
7
- if (!params.orderId) {
8
- return { success: false, message: 'orderId 必填' };
9
- }
10
- try {
11
- const { client } = await buildSecureClient({ privateKey: params.privateKey, funder: params.funder });
12
- const resp = await client.cancelOrder({ orderId: params.orderId });
13
- return { success: true, message: '已提交取消', raw: resp };
14
- }
15
- catch (e) {
16
- return { success: false, message: `取消失败: ${e?.message || e}` };
17
- }
2
+ return {
3
+ success: false,
4
+ message: 'Polymarket order cancellation requires CLOB client with authentication. Use the Polymarket web interface to cancel orders.',
5
+ };
18
6
  }
@@ -1,31 +1,10 @@
1
1
  export interface CreateOrderParams {
2
- /** 下单钱包私钥 (0x...), 用于 EIP-712 订单签名 */
3
- privateKey: string;
4
- /** 市场 ID (condition id) */
5
2
  marketId: string;
6
3
  side: 'BUY' | 'SELL';
7
- /** 限价 0-1, 需符合市场 tickSize */
8
4
  price: number;
9
- /** 数量 (买单=花费 pUSD 份额, 卖单=卖出份额) */
10
5
  size: number;
11
- /** 显式 tokenID (优先于 outcome) */
12
- tokenId?: string;
13
- /** outcome: "Yes"/"No" 或索引 0/1, 默认取第一个 (通常是 Yes) */
14
- outcome?: string | number;
15
- /** 已存在的 API key (兼容保留, 新 SDK 不需要) */
16
- apiKey?: string;
17
- apiSecret?: string;
18
- apiPassphrase?: string;
19
- /** 资金地址 (默认 = 私钥地址) */
20
- funder?: string;
21
- orderType?: 'GTC' | 'GTD';
22
6
  }
23
- export interface CreateOrderResult {
7
+ export declare function createOrder(params: CreateOrderParams): Promise<{
24
8
  success: boolean;
25
- message?: string;
26
- orderId?: string;
27
- status?: string;
28
- raw?: any;
29
- }
30
- /** 限价单下单 (@polymarket/client 统一 SDK placeLimitOrder, 2026-08-04 迁移). */
31
- export declare function createOrder(params: CreateOrderParams): Promise<CreateOrderResult>;
9
+ message: string;
10
+ }>;
@@ -1,33 +1,6 @@
1
- import { OrderSide, buildSecureClient, fetchMarketMeta, resolveTokenId } from './clobShared.js';
2
- /** 限价单下单 (@polymarket/client 统一 SDK placeLimitOrder, 2026-08-04 迁移). */
3
1
  export async function createOrder(params) {
4
- if (!params.privateKey) {
5
- return { success: false, message: '下单需要提供钱包私钥 privateKey (用于 EIP-712 订单签名)' };
6
- }
7
- if (!params.marketId) {
8
- return { success: false, message: 'marketId 必填' };
9
- }
10
- try {
11
- const meta = await fetchMarketMeta(params.marketId);
12
- const tokenID = resolveTokenId(meta, params.tokenId, params.outcome);
13
- if (!tokenID) {
14
- return { success: false, message: '无法解析 tokenID (outcome 不匹配或市场无 clobTokenIds)' };
15
- }
16
- const { client } = await buildSecureClient({ privateKey: params.privateKey, funder: params.funder });
17
- const resp = await client.placeLimitOrder({
18
- tokenId: tokenID,
19
- price: Number(params.price),
20
- size: Number(params.size),
21
- side: params.side === 'SELL' ? OrderSide.SELL : OrderSide.BUY,
22
- });
23
- return {
24
- success: true,
25
- orderId: resp?.orderId ?? resp?.id,
26
- status: resp?.status ?? resp?.orderStatus,
27
- raw: resp,
28
- };
29
- }
30
- catch (e) {
31
- return { success: false, message: `下单失败: ${e?.message || e}` };
32
- }
2
+ return {
3
+ success: false,
4
+ message: 'Polymarket order creation requires CLOB client with authentication. Use the Polymarket web interface to create orders.',
5
+ };
33
6
  }
@@ -6,5 +6,4 @@ export interface Market {
6
6
  active: boolean;
7
7
  closed: boolean;
8
8
  }
9
- /** 按市场 id 查询单个市场 (@polymarket/client 统一 SDK, 2026-08-04 迁移). */
10
9
  export declare function getMarket(id: string): Promise<Market | null>;
@@ -1,16 +1,5 @@
1
- import { createPublicClient } from '@polymarket/client';
2
- /** 按市场 id 查询单个市场 (@polymarket/client 统一 SDK, 2026-08-04 迁移). */
3
1
  export async function getMarket(id) {
4
- const client = createPublicClient();
5
- const m = await client.fetchMarket({ id });
6
- if (!m)
7
- return null;
8
- return {
9
- id: m.id,
10
- question: m.question,
11
- slug: m.slug,
12
- volume: m.volume ?? '',
13
- active: !m.closed,
14
- closed: m.closed,
15
- };
2
+ const { listMarkets } = await import('polymarket-sdk').catch(() => ({ listMarkets: async () => [] }));
3
+ const markets = await listMarkets({ id });
4
+ return markets[0] ?? null;
16
5
  }
@@ -1,16 +1,7 @@
1
1
  export interface GetOrdersParams {
2
- /** 查询订单的钱包私钥 */
3
- privateKey?: string;
4
- /** 按市场 ID 过滤 (可选) */
5
2
  marketId?: string;
6
- apiKey?: string;
7
- apiSecret?: string;
8
- apiPassphrase?: string;
9
- funder?: string;
10
3
  }
11
- export interface GetOrdersResult {
4
+ export declare function getOrders(params?: GetOrdersParams): Promise<{
12
5
  orders: any[];
13
6
  message: string;
14
- }
15
- /** 查未成交订单 (@polymarket/client 统一 SDK listOpenOrders, 2026-08-04 迁移). */
16
- export declare function getOrders(params?: GetOrdersParams): Promise<GetOrdersResult>;
7
+ }>;
@@ -1,25 +1,6 @@
1
- import { buildSecureClient } from './clobShared.js';
2
- /** 查未成交订单 (@polymarket/client 统一 SDK listOpenOrders, 2026-08-04 迁移). */
3
1
  export async function getOrders(params = {}) {
4
- if (!params.privateKey) {
5
- return { orders: [], message: '查询订单需要提供钱包私钥 privateKey' };
6
- }
7
- try {
8
- const { client } = await buildSecureClient({ privateKey: params.privateKey, funder: params.funder });
9
- const pages = client.listOpenOrders(params.marketId ? { marketId: params.marketId } : {});
10
- const page = await pages.firstPage();
11
- const orders = (page.items || []).map((o) => ({
12
- id: o.orderId ?? o.id,
13
- status: o.status,
14
- side: o.side,
15
- price: o.price,
16
- size: o.size,
17
- marketId: o.marketId,
18
- raw: o,
19
- }));
20
- return { orders, message: 'OK' };
21
- }
22
- catch (e) {
23
- return { orders: [], message: `查询失败: ${e?.message || e}` };
24
- }
2
+ return {
3
+ orders: [],
4
+ message: 'Polymarket order retrieval requires CLOB client with authentication. Use the Polymarket web interface to view orders.',
5
+ };
25
6
  }
@@ -16,8 +16,4 @@ export interface Market {
16
16
  outcomes: string;
17
17
  outcomePrices: string;
18
18
  }
19
- /**
20
- * 查询市场列表 (@polymarket/client 统一 SDK, 2026-08-04 迁移).
21
- * 返回结构与旧 polymarket-sdk 对齐 (id/question/conditionId/slug/volume/active/closed/outcomes/outcomePrices).
22
- */
23
19
  export declare function listMarkets(params?: ListMarketsParams): Promise<Market[]>;
@@ -1,24 +1,4 @@
1
- import { createPublicClient } from '@polymarket/client';
2
- /**
3
- * 查询市场列表 (@polymarket/client 统一 SDK, 2026-08-04 迁移).
4
- * 返回结构与旧 polymarket-sdk 对齐 (id/question/conditionId/slug/volume/active/closed/outcomes/outcomePrices).
5
- */
6
1
  export async function listMarkets(params = {}) {
7
- const client = createPublicClient();
8
- const pages = client.listMarkets({
9
- closed: params.closed ?? false,
10
- pageSize: params.limit ?? 20,
11
- });
12
- const page = await pages.firstPage();
13
- return (page.items || []).map((m) => ({
14
- id: m.id,
15
- question: m.question,
16
- conditionId: m.conditionId ?? m.clobTokenIds?.[0] ?? '',
17
- slug: m.slug,
18
- volume: m.volume ?? '',
19
- active: !m.closed,
20
- closed: m.closed,
21
- outcomes: Array.isArray(m.outcomes) ? m.outcomes.map((o) => o?.name ?? o).join(',') : String(m.outcomes ?? ''),
22
- outcomePrices: Array.isArray(m.outcomePrices) ? m.outcomePrices.join(',') : String(m.outcomePrices ?? ''),
23
- }));
2
+ const { listMarkets: marketsFn } = await import('polymarket-sdk').catch(() => ({ listMarkets: async () => [] }));
3
+ return marketsFn(params);
24
4
  }
@@ -45,13 +45,13 @@ async function writeCache(scope, key, summary) {
45
45
  console.warn('[compactor] cache write failed (silent):', err);
46
46
  }
47
47
  }
48
- const SUMMARIZE_SYSTEM = `你是一个对话历史压缩助手.
49
- 你的任务: 把给定的对话历史压缩成 1-2 句话的摘要, 保留所有出现过的 tool names.
50
- 要求:
51
- - 保留所有用户的关键需求
52
- - 保留所有调用过的 tool names (例如 read_file, shell_exec, use_skill 等)
53
- - 保留关键决策和发现
54
- - 不要添加原对话中没有的信息
48
+ const SUMMARIZE_SYSTEM = `你是一个对话历史压缩助手.
49
+ 你的任务: 把给定的对话历史压缩成 1-2 句话的摘要, 保留所有出现过的 tool names.
50
+ 要求:
51
+ - 保留所有用户的关键需求
52
+ - 保留所有调用过的 tool names (例如 read_file, shell_exec, use_skill 等)
53
+ - 保留关键决策和发现
54
+ - 不要添加原对话中没有的信息
55
55
  - 输出纯文本, 不要 JSON, 不要 markdown 标题`;
56
56
  export async function autoCompact(history, opts = {}) {
57
57
  try {
@@ -9,60 +9,60 @@ import * as fs from 'fs';
9
9
  import * as path from 'path';
10
10
  import { firstRunFlagPath, dataDir, logsDir } from './paths';
11
11
  import { log } from './logger';
12
- const OVERLAY_HTML = `
13
- <!DOCTYPE html>
14
- <html>
15
- <head>
16
- <meta charset="utf-8" />
17
- <style>
18
- :root { color-scheme: light dark; }
19
- body {
20
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
21
- margin: 0; padding: 32px 28px;
22
- background: rgba(245,245,247,0.97);
23
- color: #1d1d1f;
24
- height: 100vh; box-sizing: border-box;
25
- }
26
- @media (prefers-color-scheme: dark) {
27
- body { background: rgba(28,28,30,0.97); color: #f5f5f7; }
28
- }
29
- h1 { font-size: 18px; margin: 0 0 14px; font-weight: 600; }
30
- p { font-size: 13px; line-height: 1.55; margin: 8px 0; }
31
- code {
32
- font-family: ui-monospace, "SF Mono", Menlo, monospace;
33
- font-size: 12px; padding: 1px 5px;
34
- background: rgba(0,0,0,0.06); border-radius: 3px;
35
- }
36
- @media (prefers-color-scheme: dark) {
37
- code { background: rgba(255,255,255,0.08); }
38
- }
39
- .btn {
40
- display: inline-block; margin-top: 18px; padding: 8px 18px;
41
- background: #007aff; color: #fff; border: none; border-radius: 6px;
42
- font-size: 13px; font-weight: 500; cursor: pointer;
43
- }
44
- .btn:hover { background: #0066d6; }
45
- ul { padding-left: 20px; }
46
- li { font-size: 13px; line-height: 1.7; }
47
- </style>
48
- </head>
49
- <body>
50
- <h1>欢迎使用 Bolloon Agent</h1>
51
- <p>你的数据存放在本地, 不上传:</p>
52
- <ul>
53
- <li>配置 / 频道 / P2P 密钥: <code id="data"></code></li>
54
- <li>运行日志: <code id="logs"></code></li>
55
- </ul>
56
- <p>所有数据在卸载后仍保留 — 想清理就手动删除 ~/.bolloon/。</p>
57
- <button class="btn" id="ok">知道了</button>
58
- <script>
59
- const ok = document.getElementById('ok');
60
- ok.addEventListener('click', () => window.electronAPI.markFirstRunSeen());
61
- document.getElementById('data').textContent = window.electronAPI.getDataPathSync?.() || '';
62
- document.getElementById('logs').textContent = window.electronAPI.getLogsPathSync?.() || '';
63
- </script>
64
- </body>
65
- </html>
12
+ const OVERLAY_HTML = `
13
+ <!DOCTYPE html>
14
+ <html>
15
+ <head>
16
+ <meta charset="utf-8" />
17
+ <style>
18
+ :root { color-scheme: light dark; }
19
+ body {
20
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
21
+ margin: 0; padding: 32px 28px;
22
+ background: rgba(245,245,247,0.97);
23
+ color: #1d1d1f;
24
+ height: 100vh; box-sizing: border-box;
25
+ }
26
+ @media (prefers-color-scheme: dark) {
27
+ body { background: rgba(28,28,30,0.97); color: #f5f5f7; }
28
+ }
29
+ h1 { font-size: 18px; margin: 0 0 14px; font-weight: 600; }
30
+ p { font-size: 13px; line-height: 1.55; margin: 8px 0; }
31
+ code {
32
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
33
+ font-size: 12px; padding: 1px 5px;
34
+ background: rgba(0,0,0,0.06); border-radius: 3px;
35
+ }
36
+ @media (prefers-color-scheme: dark) {
37
+ code { background: rgba(255,255,255,0.08); }
38
+ }
39
+ .btn {
40
+ display: inline-block; margin-top: 18px; padding: 8px 18px;
41
+ background: #007aff; color: #fff; border: none; border-radius: 6px;
42
+ font-size: 13px; font-weight: 500; cursor: pointer;
43
+ }
44
+ .btn:hover { background: #0066d6; }
45
+ ul { padding-left: 20px; }
46
+ li { font-size: 13px; line-height: 1.7; }
47
+ </style>
48
+ </head>
49
+ <body>
50
+ <h1>欢迎使用 Bolloon Agent</h1>
51
+ <p>你的数据存放在本地, 不上传:</p>
52
+ <ul>
53
+ <li>配置 / 频道 / P2P 密钥: <code id="data"></code></li>
54
+ <li>运行日志: <code id="logs"></code></li>
55
+ </ul>
56
+ <p>所有数据在卸载后仍保留 — 想清理就手动删除 ~/.bolloon/。</p>
57
+ <button class="btn" id="ok">知道了</button>
58
+ <script>
59
+ const ok = document.getElementById('ok');
60
+ ok.addEventListener('click', () => window.electronAPI.markFirstRunSeen());
61
+ document.getElementById('data').textContent = window.electronAPI.getDataPathSync?.() || '';
62
+ document.getElementById('logs').textContent = window.electronAPI.getLogsPathSync?.() || '';
63
+ </script>
64
+ </body>
65
+ </html>
66
66
  `;
67
67
  export function hasSeenFirstRun() {
68
68
  try {
@@ -49,60 +49,60 @@ const fs = __importStar(require("fs"));
49
49
  const path = __importStar(require("path"));
50
50
  const paths_1 = require("./paths");
51
51
  const logger_1 = require("./logger");
52
- const OVERLAY_HTML = `
53
- <!DOCTYPE html>
54
- <html>
55
- <head>
56
- <meta charset="utf-8" />
57
- <style>
58
- :root { color-scheme: light dark; }
59
- body {
60
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
61
- margin: 0; padding: 32px 28px;
62
- background: rgba(245,245,247,0.97);
63
- color: #1d1d1f;
64
- height: 100vh; box-sizing: border-box;
65
- }
66
- @media (prefers-color-scheme: dark) {
67
- body { background: rgba(28,28,30,0.97); color: #f5f5f7; }
68
- }
69
- h1 { font-size: 18px; margin: 0 0 14px; font-weight: 600; }
70
- p { font-size: 13px; line-height: 1.55; margin: 8px 0; }
71
- code {
72
- font-family: ui-monospace, "SF Mono", Menlo, monospace;
73
- font-size: 12px; padding: 1px 5px;
74
- background: rgba(0,0,0,0.06); border-radius: 3px;
75
- }
76
- @media (prefers-color-scheme: dark) {
77
- code { background: rgba(255,255,255,0.08); }
78
- }
79
- .btn {
80
- display: inline-block; margin-top: 18px; padding: 8px 18px;
81
- background: #007aff; color: #fff; border: none; border-radius: 6px;
82
- font-size: 13px; font-weight: 500; cursor: pointer;
83
- }
84
- .btn:hover { background: #0066d6; }
85
- ul { padding-left: 20px; }
86
- li { font-size: 13px; line-height: 1.7; }
87
- </style>
88
- </head>
89
- <body>
90
- <h1>欢迎使用 Bolloon Agent</h1>
91
- <p>你的数据存放在本地, 不上传:</p>
92
- <ul>
93
- <li>配置 / 频道 / P2P 密钥: <code id="data"></code></li>
94
- <li>运行日志: <code id="logs"></code></li>
95
- </ul>
96
- <p>所有数据在卸载后仍保留 — 想清理就手动删除 ~/.bolloon/。</p>
97
- <button class="btn" id="ok">知道了</button>
98
- <script>
99
- const ok = document.getElementById('ok');
100
- ok.addEventListener('click', () => window.electronAPI.markFirstRunSeen());
101
- document.getElementById('data').textContent = window.electronAPI.getDataPathSync?.() || '';
102
- document.getElementById('logs').textContent = window.electronAPI.getLogsPathSync?.() || '';
103
- </script>
104
- </body>
105
- </html>
52
+ const OVERLAY_HTML = `
53
+ <!DOCTYPE html>
54
+ <html>
55
+ <head>
56
+ <meta charset="utf-8" />
57
+ <style>
58
+ :root { color-scheme: light dark; }
59
+ body {
60
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
61
+ margin: 0; padding: 32px 28px;
62
+ background: rgba(245,245,247,0.97);
63
+ color: #1d1d1f;
64
+ height: 100vh; box-sizing: border-box;
65
+ }
66
+ @media (prefers-color-scheme: dark) {
67
+ body { background: rgba(28,28,30,0.97); color: #f5f5f7; }
68
+ }
69
+ h1 { font-size: 18px; margin: 0 0 14px; font-weight: 600; }
70
+ p { font-size: 13px; line-height: 1.55; margin: 8px 0; }
71
+ code {
72
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
73
+ font-size: 12px; padding: 1px 5px;
74
+ background: rgba(0,0,0,0.06); border-radius: 3px;
75
+ }
76
+ @media (prefers-color-scheme: dark) {
77
+ code { background: rgba(255,255,255,0.08); }
78
+ }
79
+ .btn {
80
+ display: inline-block; margin-top: 18px; padding: 8px 18px;
81
+ background: #007aff; color: #fff; border: none; border-radius: 6px;
82
+ font-size: 13px; font-weight: 500; cursor: pointer;
83
+ }
84
+ .btn:hover { background: #0066d6; }
85
+ ul { padding-left: 20px; }
86
+ li { font-size: 13px; line-height: 1.7; }
87
+ </style>
88
+ </head>
89
+ <body>
90
+ <h1>欢迎使用 Bolloon Agent</h1>
91
+ <p>你的数据存放在本地, 不上传:</p>
92
+ <ul>
93
+ <li>配置 / 频道 / P2P 密钥: <code id="data"></code></li>
94
+ <li>运行日志: <code id="logs"></code></li>
95
+ </ul>
96
+ <p>所有数据在卸载后仍保留 — 想清理就手动删除 ~/.bolloon/。</p>
97
+ <button class="btn" id="ok">知道了</button>
98
+ <script>
99
+ const ok = document.getElementById('ok');
100
+ ok.addEventListener('click', () => window.electronAPI.markFirstRunSeen());
101
+ document.getElementById('data').textContent = window.electronAPI.getDataPathSync?.() || '';
102
+ document.getElementById('logs').textContent = window.electronAPI.getLogsPathSync?.() || '';
103
+ </script>
104
+ </body>
105
+ </html>
106
106
  `;
107
107
  function hasSeenFirstRun() {
108
108
  try {
@@ -48,6 +48,7 @@ var __importStar = (this && this.__importStar) || (function () {
48
48
  };
49
49
  })();
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.setNotifyQuiet = setNotifyQuiet;
51
52
  exports.checkAndUpdate = checkAndUpdate;
52
53
  exports.checkForUpdates = checkForUpdates;
53
54
  exports.performUpdate = performUpdate;
@@ -66,10 +67,17 @@ const MAGENTA = '\x1b[35m';
66
67
  const PKG_NAME = '@bolloon/bolloon-agent';
67
68
  const BOLLOON_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '/tmp', '.bolloon');
68
69
  const UPDATE_CACHE = path.join(BOLLOON_DIR, '.update-check.json');
70
+ /** 2026-08-07: CLI 交互模式下静音自动更新通知 (避免后台检查污染 TUI 屏幕) */
71
+ let notifyQuiet = false;
72
+ function setNotifyQuiet(v) {
73
+ notifyQuiet = v;
74
+ }
69
75
  /**
70
76
  * 通知用户。使用 stderr,避免在交互式 CLI 模式下 stdout 被吞掉。
71
77
  */
72
78
  function notify(msg, color = RESET) {
79
+ if (notifyQuiet)
80
+ return;
73
81
  process.stderr.write(`${color}${msg}${RESET}`);
74
82
  }
75
83
  function httpGet(url) {