@bolloon/bolloon-agent 0.1.35 → 0.1.37

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 (502) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/p2p-chat-tools.js +6 -6
  3. package/dist/agents/permission-mode.js +115 -0
  4. package/dist/agents/pi-sdk.js +435 -25
  5. package/dist/agents/pre-tool-validator.js +194 -0
  6. package/dist/agents/workflow-pivot-loop.js +113 -12
  7. package/dist/bollharness-integration/context-router.js +2 -2
  8. package/dist/bollharness-integration/guard-checker.js +1 -1
  9. package/dist/bootstrap/bootstrap.js +3 -0
  10. package/dist/bootstrap/context-collector.js +17 -1
  11. package/dist/bootstrap/context-hierarchy.js +218 -0
  12. package/dist/bootstrap/lifecycle-hooks.js +86 -24
  13. package/dist/bootstrap/project-context.js +10 -3
  14. package/dist/context-compaction/auto-compact.js +144 -0
  15. package/dist/context-compaction/budget-gate.js +28 -0
  16. package/dist/context-compaction/budget-reduce.js +35 -0
  17. package/dist/context-compaction/context-collapse.js +66 -0
  18. package/dist/context-compaction/index.js +21 -0
  19. package/dist/context-compaction/microcompact.js +51 -0
  20. package/dist/context-compaction/pipeline.js +123 -0
  21. package/dist/context-compaction/snip.js +45 -0
  22. package/dist/context-compaction/token-estimator.js +35 -0
  23. package/dist/context-compaction/types.js +19 -0
  24. package/dist/heartbeat/HealthMonitor.js +3 -2
  25. package/dist/index.js +38 -2
  26. package/dist/llm/llm-judgment-client.js +32 -30
  27. package/dist/llm/pi-ai.js +103 -16
  28. package/dist/llm/system-prompt/health.js +129 -0
  29. package/dist/llm/system-prompt/registry.js +246 -0
  30. package/dist/llm/system-prompt/strip-hibsml.js +51 -0
  31. package/dist/llm/tool-manifest/ask_user_input.js +35 -0
  32. package/dist/llm/tool-manifest/bash.js +23 -0
  33. package/dist/llm/tool-manifest/create_file.js +24 -0
  34. package/dist/llm/tool-manifest/fetch_sports_data.js +26 -0
  35. package/dist/llm/tool-manifest/image_search.js +24 -0
  36. package/dist/llm/tool-manifest/index.js +69 -0
  37. package/dist/llm/tool-manifest/mcp.js +43 -0
  38. package/dist/llm/tool-manifest/message_compose.js +31 -0
  39. package/dist/llm/tool-manifest/places.js +83 -0
  40. package/dist/llm/tool-manifest/present_files.js +21 -0
  41. package/dist/llm/tool-manifest/recipe.js +40 -0
  42. package/dist/llm/tool-manifest/recommend_apps.js +23 -0
  43. package/dist/llm/tool-manifest/str_replace.js +27 -0
  44. package/dist/llm/tool-manifest/types.js +7 -0
  45. package/dist/llm/tool-manifest/view.js +24 -0
  46. package/dist/llm/tool-manifest/weather.js +27 -0
  47. package/dist/llm/tool-manifest/web.js +51 -0
  48. package/dist/network/p2p-direct.js +23 -0
  49. package/dist/network/source-intent-broadcaster.js +203 -0
  50. package/dist/network/source-intent.js +100 -0
  51. package/dist/pi-ecosystem-judgment/adaptive-scan.js +48 -0
  52. package/dist/pi-ecosystem-judgment/injection-gate.js +54 -12
  53. package/dist/pi-ecosystem-judgment/value-injection.js +8 -2
  54. package/dist/security/context-router-tool.js +1 -1
  55. package/dist/security/input-scanner.js +223 -0
  56. package/dist/web/client.js +3089 -4458
  57. package/dist/web/index.html +58 -67
  58. package/dist/web/server.js +299 -117
  59. package/dist/web/style.css +531 -249
  60. package/dist/web/ui/message-renderer.js +352 -0
  61. package/dist/web/ui/step-timeline.js +279 -0
  62. package/package.json +2 -2
  63. package/.auto-evolve-calls +0 -1
  64. package/.last-auto-evolve-baseline +0 -1
  65. package/Bolloon.md +0 -103
  66. package/dist/agents/constraint-layer.js.map +0 -1
  67. package/dist/agents/pi-sdk.js.map +0 -1
  68. package/dist/agents/workflow-engine.js.map +0 -1
  69. package/dist/bollharness/src/index.js +0 -5
  70. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
  71. package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
  72. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
  73. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
  74. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
  75. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
  76. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
  77. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
  78. package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
  79. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
  80. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
  81. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
  82. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
  83. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
  84. package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
  85. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
  86. package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
  87. package/dist/bollharness/src/scripts/checks/finding.js +0 -13
  88. package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
  89. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
  90. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
  91. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
  92. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
  93. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
  94. package/dist/bollharness/src/scripts/context_router.js +0 -67
  95. package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
  96. package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
  97. package/dist/bollharness/src/scripts/guard_router.js +0 -158
  98. package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
  99. package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
  100. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
  101. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
  102. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
  103. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
  104. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
  105. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
  106. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
  107. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
  108. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
  109. package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
  110. package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
  111. package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
  112. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
  113. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
  114. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
  115. package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
  116. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
  117. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
  118. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
  119. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
  120. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
  121. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
  122. package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
  123. package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
  124. package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
  125. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
  126. package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
  127. package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
  128. package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
  129. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
  130. package/dist/bollharness/src/scripts/sanitize.js +0 -6
  131. package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
  132. package/dist/bollharness-integration/context-router.js.map +0 -1
  133. package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
  134. package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
  135. package/dist/bollharness-integration/guard-checker.js.map +0 -1
  136. package/dist/bollharness-integration/index.js.map +0 -1
  137. package/dist/bollharness-integration/integration.js.map +0 -1
  138. package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
  139. package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
  140. package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
  141. package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
  142. package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
  143. package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
  144. package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
  145. package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
  146. package/dist/bollharness-integration/skill-adapter.js.map +0 -1
  147. package/dist/constraint-runtime/src/_archive_helper.js +0 -9
  148. package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
  149. package/dist/constraint-runtime/src/agent/index.js +0 -1
  150. package/dist/constraint-runtime/src/assistant/index.js +0 -12
  151. package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
  152. package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
  153. package/dist/constraint-runtime/src/bridge/index.js +0 -12
  154. package/dist/constraint-runtime/src/buddy/index.js +0 -12
  155. package/dist/constraint-runtime/src/cli/index.js +0 -12
  156. package/dist/constraint-runtime/src/command_graph.js +0 -10
  157. package/dist/constraint-runtime/src/commands.js +0 -60
  158. package/dist/constraint-runtime/src/components/index.js +0 -12
  159. package/dist/constraint-runtime/src/constants/index.js +0 -12
  160. package/dist/constraint-runtime/src/constraint/budget.js +0 -22
  161. package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
  162. package/dist/constraint-runtime/src/constraint/index.js +0 -2
  163. package/dist/constraint-runtime/src/constraint/permission.js +0 -20
  164. package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
  165. package/dist/constraint-runtime/src/context.js +0 -30
  166. package/dist/constraint-runtime/src/coordinator/index.js +0 -12
  167. package/dist/constraint-runtime/src/cost_hook.js +0 -4
  168. package/dist/constraint-runtime/src/cost_tracker.js +0 -8
  169. package/dist/constraint-runtime/src/deferred_init.js +0 -10
  170. package/dist/constraint-runtime/src/direct_modes.js +0 -6
  171. package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
  172. package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
  173. package/dist/constraint-runtime/src/execution_registry.js +0 -44
  174. package/dist/constraint-runtime/src/history.js +0 -9
  175. package/dist/constraint-runtime/src/hooks/index.js +0 -12
  176. package/dist/constraint-runtime/src/index.js +0 -26
  177. package/dist/constraint-runtime/src/ink.js +0 -4
  178. package/dist/constraint-runtime/src/keybindings/index.js +0 -12
  179. package/dist/constraint-runtime/src/memdir/index.js +0 -12
  180. package/dist/constraint-runtime/src/migrations/index.js +0 -12
  181. package/dist/constraint-runtime/src/models.js +0 -1
  182. package/dist/constraint-runtime/src/models.js.map +0 -1
  183. package/dist/constraint-runtime/src/moreright/index.js +0 -12
  184. package/dist/constraint-runtime/src/native_ts/index.js +0 -12
  185. package/dist/constraint-runtime/src/output_styles/index.js +0 -12
  186. package/dist/constraint-runtime/src/parity_audit.js +0 -12
  187. package/dist/constraint-runtime/src/plugins/index.js +0 -12
  188. package/dist/constraint-runtime/src/port_manifest.js +0 -11
  189. package/dist/constraint-runtime/src/prefetch.js +0 -9
  190. package/dist/constraint-runtime/src/query.js +0 -1
  191. package/dist/constraint-runtime/src/remote/index.js +0 -12
  192. package/dist/constraint-runtime/src/remote_runtime.js +0 -9
  193. package/dist/constraint-runtime/src/runtime/index.js +0 -1
  194. package/dist/constraint-runtime/src/runtime/session.js +0 -35
  195. package/dist/constraint-runtime/src/schemas/index.js +0 -12
  196. package/dist/constraint-runtime/src/screens/index.js +0 -12
  197. package/dist/constraint-runtime/src/server/index.js +0 -12
  198. package/dist/constraint-runtime/src/services/index.js +0 -12
  199. package/dist/constraint-runtime/src/session_store.js +0 -22
  200. package/dist/constraint-runtime/src/setup.js +0 -30
  201. package/dist/constraint-runtime/src/skills/index.js +0 -1
  202. package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
  203. package/dist/constraint-runtime/src/state/index.js +0 -12
  204. package/dist/constraint-runtime/src/system_init.js +0 -20
  205. package/dist/constraint-runtime/src/thinking/engine.js +0 -42
  206. package/dist/constraint-runtime/src/thinking/index.js +0 -1
  207. package/dist/constraint-runtime/src/tool_pool.js +0 -8
  208. package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
  209. package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
  210. package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
  211. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
  212. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
  213. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
  214. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
  215. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
  216. package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
  217. package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
  218. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
  219. package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
  220. package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
  221. package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
  222. package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
  223. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
  224. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
  225. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
  226. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
  227. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
  228. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
  229. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
  230. package/dist/constraint-runtime/src/tools.js +0 -80
  231. package/dist/constraint-runtime/src/transcript.js +0 -19
  232. package/dist/constraint-runtime/src/types/index.js +0 -12
  233. package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
  234. package/dist/constraint-runtime/src/utils/index.js +0 -12
  235. package/dist/constraint-runtime/src/vim/index.js +0 -12
  236. package/dist/constraint-runtime/src/voice/index.js +0 -12
  237. package/dist/constraints/index.js.map +0 -1
  238. package/dist/documents/reader.js.map +0 -1
  239. package/dist/llm/config-store.js.map +0 -1
  240. package/dist/llm/pi-ai.js.map +0 -1
  241. package/dist/network/agent-network.js.map +0 -1
  242. package/dist/network/iroh-integration.js.map +0 -1
  243. package/dist/network/iroh-transport.js.map +0 -1
  244. package/dist/network/p2p.js.map +0 -1
  245. package/dist/network/storage/adapters/json-adapter.js.map +0 -1
  246. package/dist/pi-ecosystem-colony/index.js.map +0 -1
  247. package/dist/pi-ecosystem-goals/index.js.map +0 -1
  248. package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
  249. package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
  250. package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
  251. package/dist/pi-ecosystem-judgment/index.js.map +0 -1
  252. package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
  253. package/dist/pi-ecosystem-mcp/index.js.map +0 -1
  254. package/dist/pi-ecosystem-subagents/index.js.map +0 -1
  255. package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
  256. package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
  257. package/dist/social/ant-colony/types.js.map +0 -1
  258. package/dist/social/channels/ChannelManager.js.map +0 -1
  259. package/dist/social/channels/DiapChannelBridge.js.map +0 -1
  260. package/dist/social/channels/InterestMatcher.js.map +0 -1
  261. package/dist/social/channels/types.js.map +0 -1
  262. package/dist/social/global-shared-context.js.map +0 -1
  263. package/dist/social/heartbeat.js.map +0 -1
  264. package/lefthook.yml +0 -29
  265. package/scripts/auto-evolve-loop.ts +0 -376
  266. package/scripts/auto-evolve-oneshot.sh +0 -155
  267. package/scripts/auto-evolve-snapshot.sh +0 -136
  268. package/scripts/build-cli.js +0 -216
  269. package/scripts/build-web.ts +0 -82
  270. package/scripts/detect-schema-changes.sh +0 -48
  271. package/scripts/diff-reviewer.ts +0 -159
  272. package/scripts/postinstall.js +0 -153
  273. package/scripts/weekly-report.ts +0 -364
  274. package/src/agents/agent-manifest-protocol.ts +0 -117
  275. package/src/agents/constraint-layer.ts +0 -309
  276. package/src/agents/iroh-secret.ts +0 -32
  277. package/src/agents/p2p-chat-tools.ts +0 -383
  278. package/src/agents/p2p-document-tools.ts +0 -347
  279. package/src/agents/pi-sdk.ts +0 -2462
  280. package/src/agents/protocol.ts +0 -398
  281. package/src/agents/shell-guard.ts +0 -417
  282. package/src/agents/shell-tool.ts +0 -103
  283. package/src/agents/skill-loader.ts +0 -202
  284. package/src/agents/subagent-manager.ts +0 -553
  285. package/src/agents/workflow-engine.ts +0 -332
  286. package/src/agents/workflow-pivot-loop.ts +0 -675
  287. package/src/bollharness/.sanitize-report.json +0 -13
  288. package/src/bollharness/CLAUDE.md +0 -73
  289. package/src/bollharness/LICENSE +0 -21
  290. package/src/bollharness/README.md +0 -143
  291. package/src/bollharness/README.zh-CN.md +0 -131
  292. package/src/bollharness/package.json +0 -20
  293. package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
  294. package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
  295. package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
  296. package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
  297. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  298. package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
  299. package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
  300. package/src/bollharness/scripts/ci/count-components.sh +0 -65
  301. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  302. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  303. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  304. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  305. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  306. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  307. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  308. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  309. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  310. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  311. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  312. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
  313. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  314. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  315. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  316. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  317. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  318. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  319. package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
  320. package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
  321. package/src/bollharness/scripts/hooks/precompact.sh +0 -56
  322. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  323. package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
  324. package/src/bollharness/src/index.ts +0 -5
  325. package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
  326. package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
  327. package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
  328. package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
  329. package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
  330. package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
  331. package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
  332. package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
  333. package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
  334. package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
  335. package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
  336. package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
  337. package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
  338. package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
  339. package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
  340. package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
  341. package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
  342. package/src/bollharness/src/scripts/checks/finding.ts +0 -35
  343. package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
  344. package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
  345. package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
  346. package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
  347. package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
  348. package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
  349. package/src/bollharness/src/scripts/context_router.ts +0 -76
  350. package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
  351. package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
  352. package/src/bollharness/src/scripts/guard_router.ts +0 -194
  353. package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
  354. package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
  355. package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
  356. package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
  357. package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
  358. package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
  359. package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
  360. package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
  361. package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
  362. package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
  363. package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
  364. package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
  365. package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
  366. package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
  367. package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
  368. package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
  369. package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
  370. package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
  371. package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
  372. package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
  373. package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
  374. package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
  375. package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
  376. package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
  377. package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
  378. package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
  379. package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
  380. package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
  381. package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
  382. package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
  383. package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
  384. package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
  385. package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
  386. package/src/bollharness/src/scripts/sanitize.ts +0 -9
  387. package/src/bollharness/templates/persona/default.json +0 -19
  388. package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
  389. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  390. package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
  391. package/src/bollharness-integration/context-chain-router.ts +0 -474
  392. package/src/bollharness-integration/context-router-judgment.ts +0 -339
  393. package/src/bollharness-integration/context-router.ts +0 -583
  394. package/src/bollharness-integration/gate-state-machine.ts +0 -444
  395. package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
  396. package/src/bollharness-integration/guard-checker.ts +0 -451
  397. package/src/bollharness-integration/index.ts +0 -195
  398. package/src/bollharness-integration/integration.ts +0 -538
  399. package/src/bollharness-integration/judgment-prompts.yaml +0 -535
  400. package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
  401. package/src/bollharness-integration/skill-adapter.ts +0 -646
  402. package/src/bootstrap/bootstrap.ts +0 -132
  403. package/src/bootstrap/context-collector.ts +0 -342
  404. package/src/bootstrap/lifecycle-hooks.ts +0 -176
  405. package/src/bootstrap/project-context.ts +0 -163
  406. package/src/cli/interface.ts +0 -211
  407. package/src/cli-entry.ts +0 -304
  408. package/src/constraints/index.ts +0 -6
  409. package/src/documents/reader.ts +0 -85
  410. package/src/documents/store.ts +0 -252
  411. package/src/electron-preload.ts +0 -25
  412. package/src/electron.ts +0 -200
  413. package/src/heartbeat/DaemonManager.ts +0 -283
  414. package/src/heartbeat/HealthMonitor.ts +0 -316
  415. package/src/heartbeat/StartupVerifier.ts +0 -223
  416. package/src/heartbeat/Watchdog.ts +0 -208
  417. package/src/heartbeat/index.ts +0 -109
  418. package/src/heartbeat/self-improve-bus.ts +0 -110
  419. package/src/heartbeat/types.ts +0 -82
  420. package/src/index.ts +0 -1690
  421. package/src/llm/audio-config-store.ts +0 -246
  422. package/src/llm/config-store.ts +0 -400
  423. package/src/llm/llm-judgment-client.ts +0 -470
  424. package/src/llm/pi-ai.ts +0 -558
  425. package/src/llm/video-config-store.ts +0 -257
  426. package/src/network/agent-network.ts +0 -800
  427. package/src/network/hybrid-messenger.ts +0 -199
  428. package/src/network/iroh-bootstrap.ts +0 -57
  429. package/src/network/iroh-discovery.ts +0 -208
  430. package/src/network/iroh-integration.ts +0 -158
  431. package/src/network/iroh-transport.ts +0 -637
  432. package/src/network/known-peers.ts +0 -102
  433. package/src/network/p2p-direct.ts +0 -240
  434. package/src/network/p2p-secret.ts +0 -153
  435. package/src/network/p2p.ts +0 -964
  436. package/src/network/storage/adapters/json-adapter.ts +0 -454
  437. package/src/network/storage/index.ts +0 -203
  438. package/src/network/storage/types.ts +0 -166
  439. package/src/security/builtin-guards.ts +0 -162
  440. package/src/security/context-router-tool.ts +0 -122
  441. package/src/security/react-harness.ts +0 -177
  442. package/src/security/tool-gate.ts +0 -294
  443. package/src/social/ant-colony/index.js +0 -19
  444. package/src/social/channels/ChannelManager.ts +0 -485
  445. package/src/social/channels/DiapChannelBridge.ts +0 -501
  446. package/src/social/channels/InterestMatcher.ts +0 -189
  447. package/src/social/channels/agent-workflow-config.json +0 -214
  448. package/src/social/channels/agent-workflow-config.yaml +0 -334
  449. package/src/social/channels/channel-agent-session.ts +0 -407
  450. package/src/social/channels/channel-heartbeat-agent.ts +0 -622
  451. package/src/social/channels/diap-doc-parser.ts +0 -282
  452. package/src/social/channels/harness-workflow-integrator.ts +0 -594
  453. package/src/social/channels/index.ts +0 -22
  454. package/src/social/channels/types.ts +0 -115
  455. package/src/social/global-shared-context.ts +0 -506
  456. package/src/social/heartbeat.ts +0 -1057
  457. package/src/social/persona/enhanced-persona.ts +0 -359
  458. package/src/types.d.ts +0 -12
  459. package/src/utils/auto-evolve-policy.ts +0 -138
  460. package/src/utils/auto-update.ts +0 -482
  461. package/src/utils/clamp.ts +0 -5
  462. package/src/web/agent-delegate-server.ts +0 -148
  463. package/src/web/api-config.html +0 -520
  464. package/src/web/client.js +0 -4898
  465. package/src/web/components/p2p/P2PModal.tsx +0 -416
  466. package/src/web/components/p2p/index.ts +0 -566
  467. package/src/web/components/p2p/index.tsx +0 -297
  468. package/src/web/components/p2p/p2p-connection.ts +0 -338
  469. package/src/web/components/p2p/p2p-identity.ts +0 -92
  470. package/src/web/components/p2p/p2p-manager.ts +0 -147
  471. package/src/web/components/p2p/p2p-messages.ts +0 -219
  472. package/src/web/components/p2p/p2p-modal.ts +0 -685
  473. package/src/web/components/p2p/p2p-store-memory.ts +0 -162
  474. package/src/web/components/p2p/p2p-tools.ts +0 -315
  475. package/src/web/components/p2p/types.ts +0 -170
  476. package/src/web/components/wallet-viem.mjs +0 -118
  477. package/src/web/design.md +0 -99
  478. package/src/web/icons/apple-touch-icon.png +0 -0
  479. package/src/web/icons/favicon-16x16.png +0 -0
  480. package/src/web/icons/favicon-192x192.png +0 -0
  481. package/src/web/icons/favicon-32x32.png +0 -0
  482. package/src/web/icons/favicon-48x48.png +0 -0
  483. package/src/web/icons/favicon-512x512.png +0 -0
  484. package/src/web/icons/favicon.icns +0 -0
  485. package/src/web/icons/favicon.ico +0 -0
  486. package/src/web/icons/icon.png +0 -0
  487. package/src/web/icons/image.png +0 -0
  488. package/src/web/index.html +0 -382
  489. package/src/web/iroh-delegate-transport.ts +0 -139
  490. package/src/web/manifest.json +0 -21
  491. package/src/web/server.ts +0 -5571
  492. package/src/web/style.css +0 -4455
  493. package/staging/auto-evolve/clean-001/.review-verdict +0 -9
  494. package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
  495. package/staging/auto-evolve/e2e-001/.patch-id +0 -1
  496. package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
  497. package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
  498. package/staging/auto-evolve/test-bad/.review-verdict +0 -12
  499. package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
  500. package/tsconfig.cli.json +0 -16
  501. package/tsconfig.electron.json +0 -20
  502. package/tsconfig.json +0 -18
@@ -1,482 +0,0 @@
1
- /**
2
- * npm 自动更新检查器
3
- *
4
- * 功能:
5
- * - 启动时检查 npm 注册表是否有新版本
6
- * - 自动下载并安装最新版本
7
- * - 支持增量更新(只更新新增的包)
8
- */
9
-
10
- import { execSync } from 'child_process';
11
- import * as fs from 'fs';
12
- import * as path from 'path';
13
- import * as https from 'https';
14
- import * as http from 'http';
15
-
16
- // ANSI 颜色
17
- const RESET = '\x1b[0m';
18
- const BOLD = '\x1b[1m';
19
- const CYAN = '\x1b[36m';
20
- const GREEN = '\x1b[32m';
21
- const YELLOW = '\x1b[33m';
22
- const MAGENTA = '\x1b[35m';
23
-
24
- interface PackageInfo {
25
- name: string;
26
- version: string;
27
- latest: string;
28
- outdated: boolean;
29
- packages: OutdatedPackage[];
30
- }
31
-
32
- interface OutdatedPackage {
33
- name: string;
34
- current: string;
35
- wanted: string;
36
- latest: string;
37
- location: string;
38
- }
39
-
40
- interface UpdateResult {
41
- success: boolean;
42
- updated: boolean;
43
- message: string;
44
- updatedPackages?: string[];
45
- error?: string;
46
- }
47
-
48
- function log(msg: string, color: string = RESET) {
49
- process.stdout.write(`${color}${msg}${RESET}`);
50
- }
51
-
52
- function httpGet(url: string): Promise<string> {
53
- return new Promise((resolve, reject) => {
54
- const client = url.startsWith('https') ? https : http;
55
- const req = client.get(url, { timeout: 10000 }, (res: any) => {
56
- let data = '';
57
- res.on('data', (chunk: string) => data += chunk);
58
- res.on('end', () => resolve(data));
59
- });
60
- req.on('error', reject);
61
- req.on('timeout', () => {
62
- req.destroy();
63
- reject(new Error('请求超时'));
64
- });
65
- });
66
- }
67
-
68
- /**
69
- * 获取 bolloon 全局安装目录
70
- */
71
- function getGlobalBolloonDir(): string | null {
72
- const possiblePaths = [
73
- path.join(process.env.HOME || '', '.npm-global/lib/node_modules/@bolloon/bolloon-agent'),
74
- path.join(process.env.PREFIX || '/usr/local', 'lib/node_modules/@bolloon/bolloon-agent'),
75
- ];
76
- for (const p of possiblePaths) {
77
- if (fs.existsSync(path.join(p, 'package.json'))) {
78
- return p;
79
- }
80
- }
81
- return null;
82
- }
83
-
84
- /**
85
- * 获取当前安装的包版本
86
- * 优先使用全局安装的版本(更准确反映实际运行的版本)
87
- */
88
- function getInstalledVersion(packageName: string): string | null {
89
- // 调试:打印 cwd
90
- console.error(`[DEBUG] getInstalledVersion called, cwd=${process.cwd()}, package=${packageName}`);
91
-
92
- // 对于 @bolloon/bolloon-agent,始终优先从全局安装位置读取版本
93
- // 这样可以准确检测实际安装的版本,而不受 cwd 影响
94
- if (packageName === '@bolloon/bolloon-agent') {
95
- const globalDir = getGlobalBolloonDir();
96
- console.error(`[DEBUG] globalDir=${globalDir}`);
97
- if (globalDir) {
98
- const pkgPath = path.join(globalDir, 'package.json');
99
- console.error(`[DEBUG] pkgPath=${pkgPath}, exists=${fs.existsSync(pkgPath)}`);
100
- try {
101
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
102
- console.error(`[DEBUG] pkg.version=${pkg.version}`);
103
- return pkg.version || null;
104
- } catch (e) {
105
- // 忽略
106
- }
107
- }
108
-
109
- // 回退到本地 package.json
110
- const localPkgPath = path.join(process.cwd(), 'package.json');
111
- console.error(`[DEBUG] localPkgPath=${localPkgPath}, exists=${fs.existsSync(localPkgPath)}`);
112
- if (fs.existsSync(localPkgPath)) {
113
- try {
114
- const pkg = JSON.parse(fs.readFileSync(localPkgPath, 'utf-8'));
115
- console.error(`[DEBUG] local pkg.version=${pkg.version}`);
116
- return pkg.version || null;
117
- } catch (e) {
118
- // 忽略
119
- }
120
- }
121
- }
122
-
123
- // 检查本地 node_modules
124
- const packageJsonPath = findPackageJson(packageName);
125
- console.error(`[DEBUG] findPackageJson=${packageJsonPath}`);
126
- if (packageJsonPath) {
127
- try {
128
- const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
129
- console.error(`[DEBUG] node_modules pkg.version=${pkg.version}`);
130
- return pkg.version || null;
131
- } catch (e) {
132
- // 忽略错误
133
- }
134
- }
135
- return null;
136
- }
137
-
138
- /**
139
- * 查找包的 package.json 路径
140
- */
141
- function findPackageJson(packageName: string): string | null {
142
- // 检查当前项目的 node_modules
143
- const checkPaths = [
144
- path.join(process.cwd(), 'node_modules', packageName, 'package.json'),
145
- path.join(process.cwd(), 'node_modules', '@' + packageName.split('/')[0], packageName.split('/')[1] || '', 'package.json'),
146
- ];
147
-
148
- for (const p of checkPaths) {
149
- if (fs.existsSync(p)) return p;
150
- }
151
- return null;
152
- }
153
-
154
- /**
155
- * 检查 npm 注册表获取最新版本
156
- */
157
- async function getLatestVersion(packageName: string): Promise<string | null> {
158
- try {
159
- const encodedName = encodeURIComponent(packageName);
160
- const url = `https://registry.npmjs.org/${encodedName}`;
161
- const response = await httpGet(url);
162
- const data = JSON.parse(response);
163
- return data['dist-tags']?.latest || null;
164
- } catch (e) {
165
- return null;
166
- }
167
- }
168
-
169
- /**
170
- * 比较版本号
171
- */
172
- function compareVersions(current: string, latest: string): -1 | 0 | 1 {
173
- const currentParts = current.split('.').map(Number);
174
- const latestParts = latest.split('.').map(Number);
175
-
176
- for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
177
- const c = currentParts[i] || 0;
178
- const l = latestParts[i] || 0;
179
- if (c < l) return -1;
180
- if (c > l) return 1;
181
- }
182
- return 0;
183
- }
184
-
185
- /**
186
- * 检查 @bolloon 相关的包是否有更新
187
- */
188
- async function checkBolloonUpdates(): Promise<PackageInfo | null> {
189
- const packagesToCheck = [
190
- '@bolloon/bolloon-agent',
191
- '@bolloon/constraint-runtime',
192
- ];
193
-
194
- const outdatedPackages: OutdatedPackage[] = [];
195
- let hasUpdate = false;
196
- let currentVersion = '';
197
- let latestVersion = '';
198
-
199
- for (const pkg of packagesToCheck) {
200
- const installed = getInstalledVersion(pkg);
201
- console.error(`[DEBUG] getInstalledVersion(${pkg}) = ${installed}`);
202
- if (!installed) continue;
203
-
204
- // 只记录 @bolloon/bolloon-agent 的版本作为当前版本
205
- if (pkg === '@bolloon/bolloon-agent') {
206
- currentVersion = installed;
207
- }
208
-
209
- const latest = await getLatestVersion(pkg);
210
- console.error(`[DEBUG] getLatestVersion(${pkg}) = ${latest}`);
211
-
212
- if (latest && compareVersions(installed, latest) < 0) {
213
- hasUpdate = true;
214
- latestVersion = latest;
215
- outdatedPackages.push({
216
- name: pkg,
217
- current: installed,
218
- wanted: latest,
219
- latest,
220
- location: pkg
221
- });
222
- }
223
- }
224
-
225
- if (outdatedPackages.length === 0) {
226
- return {
227
- name: '@bolloon/bolloon-agent',
228
- version: currentVersion,
229
- latest: currentVersion,
230
- outdated: false,
231
- packages: []
232
- };
233
- }
234
-
235
- return {
236
- name: '@bolloon/bolloon-agent',
237
- version: currentVersion,
238
- latest: latestVersion,
239
- outdated: hasUpdate,
240
- packages: outdatedPackages
241
- };
242
- }
243
-
244
- /**
245
- * 使用 npm outdated 检查所有包的更新
246
- */
247
- function checkNpmOutdated(): OutdatedPackage[] {
248
- try {
249
- const output = execSync('npm outdated --json', {
250
- encoding: 'utf-8',
251
- timeout: 30000,
252
- maxBuffer: 10 * 1024 * 1024,
253
- cwd: process.cwd()
254
- });
255
-
256
- if (!output.trim()) return [];
257
-
258
- const data = JSON.parse(output);
259
- const packages: OutdatedPackage[] = [];
260
-
261
- for (const [name, info] of Object.entries(data)) {
262
- const pkg = info as any;
263
- packages.push({
264
- name,
265
- current: pkg.current || '0.0.0',
266
- wanted: pkg.wanted || '0.0.0',
267
- latest: pkg.latest || '0.0.0',
268
- location: pkg.location || name
269
- });
270
- }
271
-
272
- return packages;
273
- } catch (e: any) {
274
- // npm outdated 在没有过时包时会返回非零退出码
275
- if (e.status !== 0 && !e.message?.includes('npm outdated')) {
276
- return [];
277
- }
278
- return [];
279
- }
280
- }
281
-
282
- /**
283
- * 自动更新 npm 包 (legacy: 只传包名, 让 npm 按本地 semver 约束判断 — 不可靠)
284
- * 新代码应使用 updatePackagesWithVersion 并传 name@version
285
- */
286
- async function updatePackages(packages?: string[]): Promise<UpdateResult> {
287
- const targets = packages && packages.length > 0 ? packages : ['@bolloon/bolloon-agent'];
288
- // 旧 API 没有 version, 加一个空 placeholder 走相同路径
289
- return updatePackagesWithVersion(targets);
290
- }
291
-
292
- /**
293
- * 自动更新 npm 包, 传 `name@version` 形式的目标让 npm install 不被本地
294
- * package.json 的 semver 约束卡住 (旧版只传 name 时, npm 看到本地
295
- * package.json 里 "^0.1.17" 已经满足就判 up to date, 永远升不上去)
296
- */
297
- async function updatePackagesWithVersion(packagesWithVersion: string[]): Promise<UpdateResult> {
298
- // 解析 `name@version` 形式, 提取 name 用于 before/after 校验
299
- const parsed = packagesWithVersion.map(spec => {
300
- const at = spec.lastIndexOf('@');
301
- if (at <= 0) return { name: spec, version: '' };
302
- return { name: spec.slice(0, at), version: spec.slice(at + 1) };
303
- });
304
- const targets = parsed.map(p => p.name);
305
- const before = new Map<string, string | null>();
306
- for (const p of targets) before.set(p, getInstalledVersion(p));
307
-
308
- // 用 targetsWithVersion 直接拼命令 - 包含具体版本号, 不会被本地约束拦截
309
- const args = ['npm', 'install', '-g', ...packagesWithVersion];
310
-
311
- log(`\n${CYAN}📦 正在更新包...${RESET}\n`, RESET);
312
-
313
- try {
314
- execSync(args.join(' '), {
315
- encoding: 'utf-8',
316
- timeout: 300000,
317
- stdio: 'inherit',
318
- cwd: process.cwd()
319
- });
320
- } catch (e: any) {
321
- return {
322
- success: false,
323
- updated: false,
324
- message: '更新失败',
325
- error: e.message
326
- };
327
- }
328
-
329
- // install 退出码 0 并不等于"真的升上去了" ("up to date" 也是 0)。
330
- // 重新读取磁盘版本, 只有真的达到 latest 之一才算 updated。
331
- const upgraded: string[] = [];
332
- for (const p of parsed) {
333
- const after = getInstalledVersion(p.name);
334
- const was = before.get(p.name);
335
- if (after && was && compareVersions(was, after) < 0) {
336
- upgraded.push(p.name);
337
- }
338
- // 版本没变 = npm 仍判 up to date; 不当成功
339
- }
340
-
341
- if (upgraded.length > 0) {
342
- return {
343
- success: true,
344
- updated: true,
345
- message: `已更新: ${upgraded.join(', ')}`,
346
- updatedPackages: upgraded
347
- };
348
- }
349
- return {
350
- success: true,
351
- updated: false,
352
- message: '已是最新版本,无需重启',
353
- updatedPackages: []
354
- };
355
- }
356
-
357
- /**
358
- * 检查并自动更新(启动时调用)
359
- */
360
- export async function checkAndUpdate(): Promise<{
361
- hasUpdate: boolean;
362
- info: PackageInfo | null;
363
- updated: boolean;
364
- message: string;
365
- }> {
366
- // opt-in: 默认跳过更新检查. 想允许必须显式提供以下任一标志:
367
- // --update-check, --update-now, --allow-update
368
- // BOLLOON_AUTO_UPDATE=1
369
- const allowFlag = process.argv.includes('--update-check')
370
- || process.argv.includes('--update-now')
371
- || process.argv.includes('--allow-update');
372
- const allowEnv = process.env.BOLLOON_AUTO_UPDATE === '1';
373
- if (!allowFlag && !allowEnv) {
374
- return { hasUpdate: false, info: null, updated: false, message: '跳过更新检查 (默认关闭, 用 --update-check 显式触发)' };
375
- }
376
-
377
- // 显式屏蔽仍然优先
378
- if (process.argv.includes('--no-update') || process.argv.includes('--skip-update')) {
379
- return { hasUpdate: false, info: null, updated: false, message: '跳过更新检查' };
380
- }
381
-
382
- if (process.env.BOLLOON_SKIP_UPDATE === 'true') {
383
- return { hasUpdate: false, info: null, updated: false, message: '跳过更新检查(环境变量)' };
384
- }
385
-
386
- log(`\n${CYAN}🔍 检查更新...${RESET}`, RESET);
387
-
388
- try {
389
- // 检查 @bolloon 包的更新
390
- const bolloonInfo = await checkBolloonUpdates();
391
-
392
- if (bolloonInfo && bolloonInfo.outdated) {
393
- log(`\n${YELLOW}⚠️ 发现新版本: ${bolloonInfo.latest}${RESET}\n`, RESET);
394
- log(` 当前版本: ${bolloonInfo.version}\n`, RESET);
395
- log(` 最新版本: ${bolloonInfo.latest}\n\n`, RESET);
396
-
397
- // 自动更新
398
- // 关键: 把目标版本号也传过去, 否则 `npm install -g @bolloon/bolloon-agent`
399
- // 会按本地 package.json 的 "^0.1.17" 约束去判断, 永远装不上去
400
- const targetsWithVersion = bolloonInfo.packages.map(p => `${p.name}@${p.latest}`);
401
- const result = await updatePackagesWithVersion(targetsWithVersion);
402
-
403
- if (result.success) {
404
- log(`\n${GREEN}✅ 更新成功!请重新启动应用${RESET}\n`, RESET);
405
-
406
- // 提示用户重启
407
- log(`${YELLOW}💡 请重新运行 bolloon 以使用新版本${RESET}\n\n`, RESET);
408
-
409
- // 通知主进程更新完成
410
- process.emit('bolloon-update-complete', result);
411
-
412
- return {
413
- hasUpdate: true,
414
- info: bolloonInfo,
415
- updated: true,
416
- message: `已更新到 ${bolloonInfo.latest}`
417
- };
418
- } else {
419
- return {
420
- hasUpdate: true,
421
- info: bolloonInfo,
422
- updated: false,
423
- message: `更新失败: ${result.error}`
424
- };
425
- }
426
- } else {
427
- log(` ${GREEN}✓${RESET} 已是最新版本 (${bolloonInfo?.version || 'unknown'})\n`, RESET);
428
- return {
429
- hasUpdate: false,
430
- info: bolloonInfo,
431
- updated: false,
432
- message: '已是最新版本'
433
- };
434
- }
435
- } catch (e: any) {
436
- log(` ${YELLOW}⚠${RESET} 更新检查失败: ${e.message}\n`, RESET);
437
- return {
438
- hasUpdate: false,
439
- info: null,
440
- updated: false,
441
- message: `检查失败: ${e.message}`
442
- };
443
- }
444
- }
445
-
446
- /**
447
- * 仅检查更新,不自动安装
448
- */
449
- export async function checkForUpdates(): Promise<PackageInfo | null> {
450
- return await checkBolloonUpdates();
451
- }
452
-
453
- /**
454
- * 手动触发更新
455
- */
456
- export async function performUpdate(packages?: string[]): Promise<UpdateResult> {
457
- return await updatePackages(packages);
458
- }
459
-
460
- // CLI 入口
461
- if (process.argv[1]?.includes('auto-update')) {
462
- (async () => {
463
- const command = process.argv[2];
464
-
465
- switch (command) {
466
- case 'check':
467
- const info = await checkForUpdates();
468
- if (info) {
469
- console.log(JSON.stringify(info, null, 2));
470
- }
471
- break;
472
-
473
- case 'update':
474
- const result = await performUpdate(process.argv.slice(3));
475
- console.log(JSON.stringify(result, null, 2));
476
- break;
477
-
478
- default:
479
- await checkAndUpdate();
480
- }
481
- })();
482
- }
@@ -1,5 +0,0 @@
1
- export function clamp(n: number, min: number, max: number): number {
2
- if (n < min) return min;
3
- if (n > max) return max;
4
- return n;
5
- }
@@ -1,148 +0,0 @@
1
- /**
2
- * agent-delegate-server - 把 manifest + agent_delegate 协议挂到 Web API
3
- *
4
- * 启动: PORT=54189 npx tsx src/web/agent-delegate-server.ts
5
- *
6
- * 提供:
7
- * GET /api/agent/local-manifest — 本节点智能体清单
8
- * POST /api/agent/register — 注册/更新本节点智能体
9
- * GET /api/agent/remote-manifests — 缓存的远端 manifest 列表
10
- * POST /api/agent/pick — 按 capability + 可选 ownerPublicKey 选 agent
11
- * POST /api/agent/delegate — DOC 驱动委派 (转发到对端 agent)
12
- *
13
- * 该模块不直接绑 Hyperswarm — 通过注入的 transport 抽象:
14
- * - sendToNode(nodeId, frame) -> Promise<responseFrame>
15
- *
16
- * 主进程接入时把 Hyperswarm 拨号逻辑包成 transport 注入。
17
- */
18
-
19
- import express from 'express';
20
- import {
21
- buildAgentDelegateRequest, buildAgentResponse, buildManifestPayload, buildManifestRequest,
22
- parseFrame, setLocalManifest, addLocalAgent, getLocalManifest, getRemoteManifests,
23
- cacheRemoteManifest, pickAgent, type AgentManifestEntry, type AgentManifest,
24
- } from '../agents/agent-manifest-protocol.js';
25
-
26
- export interface DelegateTransport {
27
- /** 发送 frame 到指定节点公钥, 等待回包. null 表示不实现 (同步返回占位) */
28
- sendToNode(publicKey: string, frame: string, timeoutMs?: number): Promise<string | null>;
29
- /** 注册 onMessage: 对方 manifest_request 来了, 我方要回 manifest_payload */
30
- onIncomingFrame(handler: (fromPublicKey: string, frame: string) => Promise<string | null>): void;
31
- }
32
-
33
- export function createAgentDelegateApp(transport: DelegateTransport): express.Express {
34
- const app = express();
35
- app.use(express.json({ limit: '2mb' }));
36
-
37
- // ---- 本地 manifest ----
38
- app.get('/api/agent/local-manifest', (_req, res) => {
39
- res.json(getLocalManifest());
40
- });
41
-
42
- app.post('/api/agent/register', (req, res) => {
43
- const body = req.body as { agents: AgentManifestEntry[]; ownerName?: string; ownerPublicKey?: string };
44
- if (!body.agents || !Array.isArray(body.agents)) {
45
- return res.status(400).json({ error: 'agents array required' });
46
- }
47
- setLocalManifest({
48
- ownerName: body.ownerName || getLocalManifest().ownerName || 'unknown',
49
- ownerPublicKey: body.ownerPublicKey || getLocalManifest().ownerPublicKey || '',
50
- agents: body.agents,
51
- });
52
- res.json({ ok: true, manifest: getLocalManifest() });
53
- });
54
-
55
- // ---- 远端 manifest 列表 ----
56
- app.get('/api/agent/remote-manifests', (_req, res) => {
57
- res.json({ count: getRemoteManifests().length, manifests: getRemoteManifests() });
58
- });
59
-
60
- // ---- 按 capability 选 agent ----
61
- app.post('/api/agent/pick', (req, res) => {
62
- const { capability, ownerPublicKey } = req.body as { capability: string; ownerPublicKey?: string };
63
- if (!capability) return res.status(400).json({ error: 'capability required' });
64
- const picked = pickAgent(capability, ownerPublicKey);
65
- if (!picked) return res.status(404).json({ error: 'no matching agent', capability });
66
- res.json({ ok: true, agent: picked.agent, owner: { name: picked.owner.ownerName, publicKey: picked.owner.ownerPublicKey } });
67
- });
68
-
69
- // ---- DOC 驱动委派 ----
70
- app.post('/api/agent/delegate', async (req, res) => {
71
- try {
72
- const { toPublicKey, capability, docPath, docContent, instruction, fromAgentId } = req.body as {
73
- toPublicKey: string;
74
- capability: string;
75
- docPath?: string;
76
- docContent?: string;
77
- instruction: string;
78
- fromAgentId?: string;
79
- };
80
- if (!toPublicKey || !capability || !instruction) {
81
- return res.status(400).json({ error: 'toPublicKey, capability, instruction required' });
82
- }
83
-
84
- // 1) 优先从已缓存的远端 manifest 里选 agent
85
- let targetAgent: AgentManifestEntry | null = null;
86
- const remote = getRemoteManifests().find((m) => m.ownerPublicKey === toPublicKey || m.ownerPublicKey.startsWith(toPublicKey.substring(0, 16)));
87
- if (remote) {
88
- targetAgent = remote.agents.find((a) => a.capabilities.includes(capability) && a.status === 'active') || null;
89
- }
90
-
91
- // 2) 构造 frame, 通过 transport 发送
92
- const frame = buildAgentDelegateRequest({
93
- capability,
94
- docPath,
95
- docContent,
96
- instruction,
97
- fromAgentId: fromAgentId || 'local-user',
98
- });
99
-
100
- const replyFrame = await transport.sendToNode(toPublicKey, frame, 30000);
101
- if (!replyFrame) {
102
- return res.status(504).json({ error: 'no response from peer (timeout or transport not wired)' });
103
- }
104
- const f = parseFrame(replyFrame);
105
- if (!f || f.type !== 'agent_response') {
106
- return res.status(502).json({ error: 'bad response', frame: replyFrame });
107
- }
108
- res.json({
109
- ok: true,
110
- targetAgent: targetAgent || { id: f.payload.delegatedTo, capabilities: [capability], status: 'active', name: f.payload.delegatedTo },
111
- response: f.payload,
112
- });
113
- } catch (e: any) {
114
- res.status(500).json({ error: e.message });
115
- }
116
- });
117
-
118
- // ---- 接收对方 manifest_request / agent_delegate 处理 ----
119
- // 业务端需要把对端来的入站 frame 转给本 handler
120
- // 简化: 把 handler 挂到 transport.onIncomingFrame
121
- transport.onIncomingFrame(async (fromPublicKey, frame) => {
122
- const f = parseFrame(frame);
123
- if (!f) return null;
124
- if (f.type === 'manifest_request') {
125
- return buildManifestPayload(getLocalManifest());
126
- }
127
- if (f.type === 'manifest_payload') {
128
- cacheRemoteManifest(f.payload as AgentManifest);
129
- return null; // 不需要回包
130
- }
131
- if (f.type === 'agent_delegate') {
132
- // 路由到本地匹配 agent
133
- const req = f.payload as any;
134
- const local = getLocalManifest();
135
- const target = local.agents.find((a) => a.capabilities.includes(req.capability) && a.status === 'active') || local.agents[0];
136
- if (!target) return buildAgentResponse({ ok: false, delegatedTo: 'none', summary: 'no local agent available' });
137
- return buildAgentResponse({
138
- ok: true,
139
- delegatedTo: target.id,
140
- resultCid: `mock-${Date.now()}`,
141
- summary: `[${target.name}] 已处理任务: ${req.instruction?.substring(0, 30)}`,
142
- });
143
- }
144
- return null;
145
- });
146
-
147
- return app;
148
- }