@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,501 +0,0 @@
1
- /**
2
- * DiapChannelBridge - 基于 Diap 去中心化协议的对外社交频道系统
3
- *
4
- * 核心功能:
5
- * 1. 将本地频道注册到 Diap 网络,成为"可发现的服务"
6
- * 2. 通过 Diap 发现具有特定能力的外部智能体
7
- * 3. 跨频道智能体消息路由和通信
8
- */
9
-
10
- import type { SocialSessionProvider } from '../heartbeat.js';
11
- import type {
12
- SocialChannel,
13
- ChannelPresence,
14
- ChannelAnnouncement,
15
- DiscoveredAgent,
16
- ServiceRegistration
17
- } from './types.js';
18
- import type { IdentityRegistration, KeyPair } from '@diap/sdk';
19
-
20
- export interface DiapBridgeConfig {
21
- discoveryInterval: number;
22
- broadcastInterval: number;
23
- maxDiscoveredAgents: number;
24
- }
25
-
26
- const DEFAULT_CONFIG: DiapBridgeConfig = {
27
- discoveryInterval: 60 * 1000,
28
- broadcastInterval: 30 * 1000,
29
- maxDiscoveredAgents: 100
30
- };
31
-
32
- export class DiapChannelBridge {
33
- private agentAuthManager: any = null;
34
- private keyPair: KeyPair | null = null;
35
- private sessionProvider: SocialSessionProvider;
36
- private registeredServices: Map<string, ServiceRegistration> = new Map();
37
- private discoveredAgents: Map<string, DiscoveredAgent> = new Map();
38
- private config: DiapBridgeConfig;
39
- private initialized: boolean = false;
40
- private discoveryTimer: ReturnType<typeof setInterval> | null = null;
41
- private broadcastTimer: ReturnType<typeof setInterval> | null = null;
42
- private ownChannel: SocialChannel | null = null;
43
-
44
- constructor(
45
- agentAuthManager: any,
46
- keyPair: KeyPair,
47
- sessionProvider: SocialSessionProvider,
48
- config?: Partial<DiapBridgeConfig>
49
- ) {
50
- this.agentAuthManager = agentAuthManager;
51
- this.keyPair = keyPair;
52
- this.sessionProvider = sessionProvider;
53
- this.config = { ...DEFAULT_CONFIG, ...config };
54
- }
55
-
56
- async initialize(): Promise<void> {
57
- if (this.initialized) return;
58
-
59
- // 注册消息处理器
60
- await this.registerMessageHandlers();
61
-
62
- // 启动发现循环
63
- this.startDiscoveryLoop();
64
-
65
- // 启动广播循环
66
- this.startBroadcastLoop();
67
-
68
- this.initialized = true;
69
- console.log('[DiapBridge] Initialized');
70
- }
71
-
72
- private async registerMessageHandlers(): Promise<void> {
73
- try {
74
- const { p2pNetwork } = await import('../../network/p2p.js');
75
-
76
- // 处理频道公告
77
- p2pNetwork.onMessage('channel_announce', async (data: Uint8Array, from: string) => {
78
- try {
79
- const announcement: ChannelAnnouncement = JSON.parse(new TextDecoder().decode(data));
80
- await this.handleChannelAnnouncement(announcement, from);
81
- } catch (e) {
82
- console.warn('[DiapBridge] Failed to parse channel announcement:', e);
83
- }
84
- });
85
-
86
- // 处理频道消息
87
- p2pNetwork.onMessage('channel_msg', async (data: Uint8Array, from: string) => {
88
- try {
89
- const msg = JSON.parse(new TextDecoder().decode(data));
90
- await this.handleChannelMessage(msg, from);
91
- } catch (e) {
92
- console.warn('[DiapBridge] Failed to parse channel message:', e);
93
- }
94
- });
95
-
96
- // 处理智能体发现请求
97
- p2pNetwork.onMessage('agent_discovery', async (data: Uint8Array, from: string) => {
98
- try {
99
- const request = JSON.parse(new TextDecoder().decode(data));
100
- await this.handleDiscoveryRequest(request, from);
101
- } catch (e) {
102
- console.warn('[DiapBridge] Failed to parse discovery request:', e);
103
- }
104
- });
105
-
106
- // 处理发现响应
107
- p2pNetwork.onMessage('agent_discovery_response', async (data: Uint8Array, from: string) => {
108
- try {
109
- const response = JSON.parse(new TextDecoder().decode(data));
110
- await this.handleDiscoveryResponse(response, from);
111
- } catch (e) {
112
- console.warn('[DiapBridge] Failed to parse discovery response:', e);
113
- }
114
- });
115
-
116
- console.log('[DiapBridge] Message handlers registered');
117
- } catch (e) {
118
- console.warn('[DiapBridge] Failed to register message handlers:', e);
119
- }
120
- }
121
-
122
- /**
123
- * 注册频道到 Diap 网络
124
- */
125
- async registerChannelToDiap(channel: SocialChannel): Promise<void> {
126
- this.ownChannel = channel;
127
-
128
- if (!this.agentAuthManager) {
129
- console.warn('[DiapBridge] No AgentAuthManager, skipping Diap registration');
130
- return;
131
- }
132
-
133
- const service: ServiceRegistration = {
134
- serviceType: 'social_channel',
135
- endpoint: channel.id,
136
- metadata: {
137
- topic: channel.topic,
138
- capabilities: channel.requiredCapabilities,
139
- memberCount: channel.members.size,
140
- channelType: channel.type,
141
- name: channel.name
142
- },
143
- registeredAt: Date.now()
144
- };
145
-
146
- try {
147
- // 通过 AgentAuthManager 注册服务
148
- await this.agentAuthManager.registerService(
149
- channel.id,
150
- {
151
- serviceType: 'channel',
152
- endpoint: channel.id,
153
- metadata: service.metadata
154
- },
155
- this.keyPair
156
- );
157
-
158
- this.registeredServices.set(channel.id, service);
159
- console.log(`[DiapBridge] Registered channel to Diap: ${channel.name}`);
160
- } catch (e) {
161
- console.warn('[DiapBridge] Failed to register channel to Diap:', e);
162
- }
163
- }
164
-
165
- /**
166
- * 通过 Diap 发现具有特定能力的外部智能体
167
- */
168
- async discoverAgentsByCapability(capabilities: string[]): Promise<DiscoveredAgent[]> {
169
- if (capabilities.length === 0) return [];
170
-
171
- try {
172
- // 通过 P2P 网络发送发现请求
173
- const { p2pNetwork } = await import('../../network/p2p.js');
174
-
175
- const request = {
176
- type: 'discovery_request',
177
- requesterDid: this.getOwnDid(),
178
- capabilities,
179
- timestamp: Date.now()
180
- };
181
-
182
- await p2pNetwork.broadcast('agent_discovery', JSON.stringify(request));
183
-
184
- // 等待响应(实际由事件驱动)
185
- return Array.from(this.discoveredAgents.values());
186
- } catch (e) {
187
- console.warn('[DiapBridge] Failed to discover agents:', e);
188
- return [];
189
- }
190
- }
191
-
192
- /**
193
- * 处理频道公告
194
- */
195
- private async handleChannelAnnouncement(
196
- announcement: ChannelAnnouncement,
197
- fromPeerId: string
198
- ): Promise<void> {
199
- // 验证签名(如果实现)
200
- if (announcement.signature) {
201
- const isValid = await this.verifyAnnouncement(announcement);
202
- if (!isValid) {
203
- console.warn('[DiapBridge] Invalid channel announcement signature');
204
- return;
205
- }
206
- }
207
-
208
- // 检查是否是自己的公告
209
- if (announcement.leaderDid === this.getOwnDid()) {
210
- return;
211
- }
212
-
213
- // 记录发现的智能体
214
- const agent: DiscoveredAgent = {
215
- did: announcement.leaderDid,
216
- name: announcement.channelName,
217
- capabilities: announcement.capabilities,
218
- lastSeen: Date.now(),
219
- channelId: announcement.channelId
220
- };
221
-
222
- this.discoveredAgents.set(agent.did, agent);
223
- console.log(`[DiapBridge] Discovered agent via channel: ${agent.name}`);
224
- }
225
-
226
- /**
227
- * 处理频道消息
228
- */
229
- private async handleChannelMessage(msg: any, fromPeerId: string): Promise<void> {
230
- const agent = this.discoveredAgents.get(msg.fromDid);
231
- if (agent) {
232
- agent.lastSeen = Date.now();
233
- }
234
- }
235
-
236
- /**
237
- * 处理发现请求
238
- */
239
- private async handleDiscoveryRequest(request: any, fromPeerId: string): Promise<void> {
240
- // 忽略自己的请求
241
- if (request.requesterDid === this.getOwnDid()) {
242
- return;
243
- }
244
-
245
- const persona = this.sessionProvider.getPersona();
246
- const capabilities = persona?.capabilities || [];
247
-
248
- // 检查能力是否匹配
249
- const hasMatch = request.capabilities.some((reqCap: string) =>
250
- capabilities.some(myCap =>
251
- reqCap.toLowerCase().includes(myCap.toLowerCase()) ||
252
- myCap.toLowerCase().includes(reqCap.toLowerCase())
253
- )
254
- );
255
-
256
- if (!hasMatch) return;
257
-
258
- // 发送响应
259
- const { p2pNetwork } = await import('../../network/p2p.js');
260
-
261
- const response = {
262
- type: 'discovery_response',
263
- responderDid: this.getOwnDid(),
264
- responderName: persona?.name || 'Agent',
265
- capabilities,
266
- interests: persona?.interests || [],
267
- channelId: this.ownChannel?.id,
268
- timestamp: Date.now()
269
- };
270
-
271
- try {
272
- await p2pNetwork.sendMessage(fromPeerId, 'agent_discovery_response', JSON.stringify(response));
273
- } catch (e) {
274
- console.warn('[DiapBridge] Failed to send discovery response:', e);
275
- }
276
- }
277
-
278
- /**
279
- * 处理发现响应
280
- */
281
- private async handleDiscoveryResponse(response: any, fromPeerId: string): Promise<void> {
282
- const agent: DiscoveredAgent = {
283
- did: response.responderDid,
284
- name: response.responderName,
285
- capabilities: response.capabilities,
286
- interests: response.interests,
287
- lastSeen: Date.now(),
288
- peerId: fromPeerId,
289
- channelId: response.channelId
290
- };
291
-
292
- this.discoveredAgents.set(agent.did, agent);
293
-
294
- // 限制发现数量
295
- if (this.discoveredAgents.size > this.config.maxDiscoveredAgents) {
296
- const oldest = Array.from(this.discoveredAgents.values())
297
- .sort((a, b) => a.lastSeen - b.lastSeen)[0];
298
- if (oldest) {
299
- this.discoveredAgents.delete(oldest.did);
300
- }
301
- }
302
-
303
- console.log(`[DiapBridge] Discovered agent: ${agent.name} (${(agent.capabilities || []).join(', ')})`);
304
- }
305
-
306
- private verifyAnnouncement(announcement: ChannelAnnouncement): Promise<boolean> {
307
- // TODO: 实现签名验证
308
- return Promise.resolve(true);
309
- }
310
-
311
- private getOwnDid(): string {
312
- // 从 persona 或其他地方获取自己的 DID
313
- const persona = this.sessionProvider.getPersona();
314
- return persona?.name || `did:local:${Date.now()}`;
315
- }
316
-
317
- /**
318
- * 广播频道
319
- */
320
- async broadcastChannel(channel: SocialChannel): Promise<void> {
321
- const { p2pNetwork } = await import('../../network/p2p.js');
322
-
323
- const announcement: ChannelAnnouncement = {
324
- type: 'channel_announce',
325
- channelId: channel.id,
326
- channelName: channel.name,
327
- topic: channel.topic,
328
- capabilities: channel.requiredCapabilities,
329
- memberCount: channel.members.size,
330
- leaderDid: this.getOwnDid(),
331
- isPublic: channel.isPublic,
332
- timestamp: Date.now()
333
- };
334
-
335
- // TODO: 添加签名
336
-
337
- try {
338
- await p2pNetwork.broadcast('channel_announce', JSON.stringify(announcement));
339
- } catch (e) {
340
- console.warn('[DiapBridge] Failed to broadcast channel:', e);
341
- }
342
- }
343
-
344
- /**
345
- * 向智能体发送消息
346
- */
347
- async sendToAgent(agentDid: string, type: string, payload: string): Promise<boolean> {
348
- const agent = this.discoveredAgents.get(agentDid);
349
- if (!agent?.peerId) {
350
- console.warn(`[DiapBridge] Unknown agent or no peerId: ${agentDid}`);
351
- return false;
352
- }
353
-
354
- try {
355
- const { p2pNetwork } = await import('../../network/p2p.js');
356
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
357
- return true;
358
- } catch (e) {
359
- console.warn(`[DiapBridge] Failed to send to agent ${agentDid}:`, e);
360
- return false;
361
- }
362
- }
363
-
364
- /**
365
- * 获取发现的智能体
366
- */
367
- getDiscoveredAgents(): DiscoveredAgent[] {
368
- return Array.from(this.discoveredAgents.values());
369
- }
370
-
371
- /**
372
- * 获取注册的服务
373
- */
374
- getRegisteredServices(): ServiceRegistration[] {
375
- return Array.from(this.registeredServices.values());
376
- }
377
-
378
- /**
379
- * 向指定 DID 的智能体发送消息(跨频道通信)
380
- */
381
- async sendToAgentByDid(targetDid: string, type: string, payload: string): Promise<boolean> {
382
- const agent = this.discoveredAgents.get(targetDid);
383
- if (!agent?.peerId) {
384
- console.warn(`[DiapBridge] Unknown agent or no peerId: ${targetDid}`);
385
- return false;
386
- }
387
-
388
- try {
389
- const { p2pNetwork } = await import('../../network/p2p.js');
390
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
391
- return true;
392
- } catch (e) {
393
- console.warn(`[DiapBridge] Failed to send to agent ${targetDid}:`, e);
394
- return false;
395
- }
396
- }
397
-
398
- /**
399
- * 广播消息到所有已发现的智能体
400
- */
401
- async broadcastToAllAgents(type: string, payload: string): Promise<number> {
402
- let successCount = 0;
403
-
404
- for (const agent of this.discoveredAgents.values()) {
405
- if (agent.peerId) {
406
- try {
407
- const { p2pNetwork } = await import('../../network/p2p.js');
408
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
409
- successCount++;
410
- } catch (e) {
411
- console.warn(`[DiapBridge] Failed to broadcast to ${agent.name}:`, e);
412
- }
413
- }
414
- }
415
-
416
- return successCount;
417
- }
418
-
419
- /**
420
- * 根据能力筛选智能体并发送消息
421
- */
422
- async sendToAgentsByCapability(
423
- capabilities: string[],
424
- type: string,
425
- payload: string
426
- ): Promise<number> {
427
- let successCount = 0;
428
-
429
- for (const agent of this.discoveredAgents.values()) {
430
- const agentCaps = agent.capabilities || [];
431
- const hasMatch = capabilities.some(reqCap =>
432
- agentCaps.some(myCap =>
433
- reqCap.toLowerCase().includes(myCap.toLowerCase()) ||
434
- myCap.toLowerCase().includes(reqCap.toLowerCase())
435
- )
436
- );
437
-
438
- if (hasMatch && agent.peerId) {
439
- try {
440
- const { p2pNetwork } = await import('../../network/p2p.js');
441
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
442
- successCount++;
443
- } catch (e) {
444
- console.warn(`[DiapBridge] Failed to send to ${agent.name}:`, e);
445
- }
446
- }
447
- }
448
-
449
- return successCount;
450
- }
451
-
452
- /**
453
- * 设置自己的频道(用于跨频道消息发送)
454
- */
455
- setOwnChannel(channel: SocialChannel): void {
456
- this.ownChannel = channel;
457
- }
458
-
459
- private startDiscoveryLoop(): void {
460
- this.discoveryTimer = setInterval(async () => {
461
- if (!this.initialized) return;
462
-
463
- const persona = this.sessionProvider.getPersona();
464
- const capabilities = persona?.capabilities || [];
465
-
466
- if (capabilities.length > 0) {
467
- await this.discoverAgentsByCapability(capabilities);
468
- }
469
-
470
- // 清理过期的发现
471
- const now = Date.now();
472
- for (const [did, agent] of this.discoveredAgents.entries()) {
473
- if (now - agent.lastSeen > 5 * 60 * 1000) {
474
- this.discoveredAgents.delete(did);
475
- }
476
- }
477
- }, this.config.discoveryInterval);
478
- }
479
-
480
- private startBroadcastLoop(): void {
481
- this.broadcastTimer = setInterval(async () => {
482
- if (!this.initialized || !this.ownChannel) return;
483
- await this.broadcastChannel(this.ownChannel);
484
- }, this.config.broadcastInterval);
485
- }
486
-
487
- /**
488
- * 关闭
489
- */
490
- shutdown(): void {
491
- if (this.discoveryTimer) {
492
- clearInterval(this.discoveryTimer);
493
- }
494
- if (this.broadcastTimer) {
495
- clearInterval(this.broadcastTimer);
496
- }
497
- this.discoveredAgents.clear();
498
- this.registeredServices.clear();
499
- console.log('[DiapBridge] Shutdown');
500
- }
501
- }
@@ -1,189 +0,0 @@
1
- /**
2
- * InterestMatcher - 兴趣/能力匹配算法
3
- *
4
- * 计算智能体与频道的匹配度,用于自动加入决策
5
- */
6
-
7
- import type { PersonaDoc } from '../heartbeat.js';
8
- import type { SocialChannel, ChannelPresence } from './types.js';
9
-
10
- export class InterestMatcher {
11
- /**
12
- * 计算智能体与频道的匹配度 (0-1)
13
- */
14
- calculateMatchScore(
15
- personaCapabilities: string[],
16
- personaInterests: string[],
17
- channelTopic: string,
18
- channelCapabilities: string[]
19
- ): number {
20
- let score = 0;
21
- let weight = 0;
22
-
23
- // 能力匹配 (权重 0.5)
24
- if (channelCapabilities.length > 0 && personaCapabilities.length > 0) {
25
- const capabilityMatch = this.countMatches(personaCapabilities, channelCapabilities);
26
- const capabilityScore = capabilityMatch / channelCapabilities.length;
27
- score += capabilityScore * 0.5;
28
- weight += 0.5;
29
- }
30
-
31
- // 兴趣匹配 (权重 0.3)
32
- if (channelTopic && (personaInterests.length > 0 || personaCapabilities.length > 0)) {
33
- const allPersonaTags = [...personaInterests, ...personaCapabilities];
34
- const topicWords = channelTopic.toLowerCase().split(/[,\s]+/).filter(Boolean);
35
- const interestMatch = this.countMatches(
36
- allPersonaTags.map(t => t.toLowerCase()),
37
- topicWords
38
- );
39
- const interestScore = topicWords.length > 0 ? interestMatch / topicWords.length : 0;
40
- score += interestScore * 0.3;
41
- weight += 0.3;
42
- }
43
-
44
- // 额外能力加分 (权重 0.2)
45
- if (personaCapabilities.length > 0 && channelCapabilities.length > 0) {
46
- const extraCapabilities = personaCapabilities.filter(
47
- cap => !channelCapabilities.some(ch => ch.toLowerCase() === cap.toLowerCase())
48
- );
49
- const extraScore = Math.min(extraCapabilities.length * 0.05, 0.2);
50
- score += extraScore;
51
- weight += 0.2;
52
- }
53
-
54
- return weight > 0 ? score / (weight / 1) : 0;
55
- }
56
-
57
- /**
58
- * 计算两个数组的匹配数量
59
- */
60
- private countMatches(arr1: string[], arr2: string[]): number {
61
- let count = 0;
62
- for (const item1 of arr1) {
63
- for (const item2 of arr2) {
64
- if (this.fuzzyMatch(item1, item2)) {
65
- count++;
66
- break;
67
- }
68
- }
69
- }
70
- return count;
71
- }
72
-
73
- /**
74
- * 模糊匹配 (考虑包含关系)
75
- */
76
- private fuzzyMatch(str1: string, str2: string): boolean {
77
- const s1 = str1.toLowerCase();
78
- const s2 = str2.toLowerCase();
79
- return s1.includes(s2) || s2.includes(s1) || this.levenshteinSimilarity(s1, s2) > 0.7;
80
- }
81
-
82
- /**
83
- * Levenshtein 相似度
84
- */
85
- private levenshteinSimilarity(s1: string, s2: string): number {
86
- if (s1 === s2) return 1;
87
- if (s1.length === 0 || s2.length === 0) return 0;
88
-
89
- const matrix: number[][] = [];
90
-
91
- for (let i = 0; i <= s1.length; i++) {
92
- matrix[i] = [i];
93
- }
94
- for (let j = 0; j <= s2.length; j++) {
95
- matrix[0][j] = j;
96
- }
97
-
98
- for (let i = 1; i <= s1.length; i++) {
99
- for (let j = 1; j <= s2.length; j++) {
100
- const cost = s1[i - 1] === s2[j - 1] ? 0 : 1;
101
- matrix[i][j] = Math.min(
102
- matrix[i - 1][j] + 1,
103
- matrix[i][j - 1] + 1,
104
- matrix[i - 1][j - 1] + cost
105
- );
106
- }
107
- }
108
-
109
- const maxLen = Math.max(s1.length, s2.length);
110
- return 1 - matrix[s1.length][s2.length] / maxLen;
111
- }
112
-
113
- /**
114
- * 查找匹配的频道列表
115
- */
116
- findMatchingChannels(
117
- persona: PersonaDoc | null,
118
- channels: (SocialChannel | ChannelPresence)[],
119
- threshold: number = 0.5
120
- ): Array<{ channel: SocialChannel | ChannelPresence; score: number }> {
121
- const capabilities = persona?.capabilities || [];
122
- const interests = persona?.interests || [];
123
- const topic = persona?.interests?.join(', ') || '';
124
-
125
- const matches: Array<{ channel: SocialChannel | ChannelPresence; score: number }> = [];
126
-
127
- for (const channel of channels) {
128
- const channelTopic = 'topic' in channel ? channel.topic : '';
129
- const channelCapabilities = 'requiredCapabilities' in channel
130
- ? channel.requiredCapabilities
131
- : 'capabilities' in channel
132
- ? (channel as ChannelPresence).capabilities
133
- : [];
134
-
135
- const score = this.calculateMatchScore(
136
- capabilities,
137
- interests,
138
- channelTopic,
139
- channelCapabilities
140
- );
141
-
142
- if (score >= threshold) {
143
- matches.push({ channel, score });
144
- }
145
- }
146
-
147
- // 按匹配度排序
148
- matches.sort((a, b) => b.score - a.score);
149
-
150
- return matches;
151
- }
152
-
153
- /**
154
- * 检查是否应该自动加入频道
155
- */
156
- shouldAutoJoin(
157
- persona: PersonaDoc | null,
158
- channel: SocialChannel | ChannelPresence,
159
- existingChannelIds: string[],
160
- threshold: number = 0.5
161
- ): boolean {
162
- const channelId = 'id' in channel ? channel.id : channel.channelId;
163
-
164
- // 已经加入的频道不再加入
165
- if (existingChannelIds.includes(channelId)) {
166
- return false;
167
- }
168
-
169
- const capabilities = persona?.capabilities || [];
170
- const interests = persona?.interests || [];
171
- const channelTopic = 'topic' in channel ? channel.topic : '';
172
- const channelCapabilities = 'requiredCapabilities' in channel
173
- ? channel.requiredCapabilities
174
- : 'capabilities' in channel
175
- ? (channel as ChannelPresence).capabilities
176
- : [];
177
-
178
- const score = this.calculateMatchScore(
179
- capabilities,
180
- interests,
181
- channelTopic,
182
- channelCapabilities
183
- );
184
-
185
- return score >= threshold;
186
- }
187
- }
188
-
189
- export const interestMatcher = new InterestMatcher();