@bolloon/bolloon-agent 0.1.36 → 0.1.38

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 (518) hide show
  1. package/package.json +2 -2
  2. package/.auto-evolve-calls +0 -1
  3. package/.last-auto-evolve-baseline +0 -1
  4. package/.playwright-mcp/page-2026-06-16T07-51-45-706Z.yml +0 -130
  5. package/.playwright-mcp/page-2026-06-16T07-56-44-116Z.yml +0 -131
  6. package/Bolloon.md +0 -144
  7. package/Dive-into/CITATION.cff +0 -17
  8. package/Dive-into/LICENSE +0 -25
  9. package/Dive-into/README.md +0 -598
  10. package/Dive-into/README_zh.md +0 -599
  11. package/Dive-into/assets/context.png +0 -0
  12. package/Dive-into/assets/extensibility.png +0 -0
  13. package/Dive-into/assets/iteration.png +0 -0
  14. package/Dive-into/assets/layered_architecture.png +0 -0
  15. package/Dive-into/assets/main_structure.png +0 -0
  16. package/Dive-into/assets/permission.png +0 -0
  17. package/Dive-into/assets/session_compact.png +0 -0
  18. package/Dive-into/assets/subagent.png +0 -0
  19. package/Dive-into/paper/Dive_into_Claude_Code.pdf +0 -0
  20. package/dist/agents/constraint-layer.js.map +0 -1
  21. package/dist/agents/pi-sdk.js.map +0 -1
  22. package/dist/agents/workflow-engine.js.map +0 -1
  23. package/dist/bollharness/src/index.js +0 -5
  24. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
  25. package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
  26. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
  27. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
  28. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
  29. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
  30. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
  31. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
  32. package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
  33. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
  34. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
  35. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
  36. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
  37. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
  38. package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
  39. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
  40. package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
  41. package/dist/bollharness/src/scripts/checks/finding.js +0 -13
  42. package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
  43. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
  44. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
  45. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
  46. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
  47. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
  48. package/dist/bollharness/src/scripts/context_router.js +0 -67
  49. package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
  50. package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
  51. package/dist/bollharness/src/scripts/guard_router.js +0 -158
  52. package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
  53. package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
  54. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
  55. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
  56. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
  57. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
  58. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
  59. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
  60. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
  61. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
  62. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
  63. package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
  64. package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
  65. package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
  66. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
  67. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
  68. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
  69. package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
  70. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
  71. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
  72. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
  73. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
  74. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
  75. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
  76. package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
  77. package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
  78. package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
  79. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
  80. package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
  81. package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
  82. package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
  83. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
  84. package/dist/bollharness/src/scripts/sanitize.js +0 -6
  85. package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
  86. package/dist/bollharness-integration/context-router.js.map +0 -1
  87. package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
  88. package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
  89. package/dist/bollharness-integration/guard-checker.js.map +0 -1
  90. package/dist/bollharness-integration/index.js.map +0 -1
  91. package/dist/bollharness-integration/integration.js.map +0 -1
  92. package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
  93. package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
  94. package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
  95. package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
  96. package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
  97. package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
  98. package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
  99. package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
  100. package/dist/bollharness-integration/skill-adapter.js.map +0 -1
  101. package/dist/constraint-runtime/src/_archive_helper.js +0 -9
  102. package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
  103. package/dist/constraint-runtime/src/agent/index.js +0 -1
  104. package/dist/constraint-runtime/src/assistant/index.js +0 -12
  105. package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
  106. package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
  107. package/dist/constraint-runtime/src/bridge/index.js +0 -12
  108. package/dist/constraint-runtime/src/buddy/index.js +0 -12
  109. package/dist/constraint-runtime/src/cli/index.js +0 -12
  110. package/dist/constraint-runtime/src/command_graph.js +0 -10
  111. package/dist/constraint-runtime/src/commands.js +0 -60
  112. package/dist/constraint-runtime/src/components/index.js +0 -12
  113. package/dist/constraint-runtime/src/constants/index.js +0 -12
  114. package/dist/constraint-runtime/src/constraint/budget.js +0 -22
  115. package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
  116. package/dist/constraint-runtime/src/constraint/index.js +0 -2
  117. package/dist/constraint-runtime/src/constraint/permission.js +0 -20
  118. package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
  119. package/dist/constraint-runtime/src/context.js +0 -30
  120. package/dist/constraint-runtime/src/coordinator/index.js +0 -12
  121. package/dist/constraint-runtime/src/cost_hook.js +0 -4
  122. package/dist/constraint-runtime/src/cost_tracker.js +0 -8
  123. package/dist/constraint-runtime/src/deferred_init.js +0 -10
  124. package/dist/constraint-runtime/src/direct_modes.js +0 -6
  125. package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
  126. package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
  127. package/dist/constraint-runtime/src/execution_registry.js +0 -44
  128. package/dist/constraint-runtime/src/history.js +0 -9
  129. package/dist/constraint-runtime/src/hooks/index.js +0 -12
  130. package/dist/constraint-runtime/src/index.js +0 -26
  131. package/dist/constraint-runtime/src/ink.js +0 -4
  132. package/dist/constraint-runtime/src/keybindings/index.js +0 -12
  133. package/dist/constraint-runtime/src/memdir/index.js +0 -12
  134. package/dist/constraint-runtime/src/migrations/index.js +0 -12
  135. package/dist/constraint-runtime/src/models.js +0 -1
  136. package/dist/constraint-runtime/src/models.js.map +0 -1
  137. package/dist/constraint-runtime/src/moreright/index.js +0 -12
  138. package/dist/constraint-runtime/src/native_ts/index.js +0 -12
  139. package/dist/constraint-runtime/src/output_styles/index.js +0 -12
  140. package/dist/constraint-runtime/src/parity_audit.js +0 -12
  141. package/dist/constraint-runtime/src/plugins/index.js +0 -12
  142. package/dist/constraint-runtime/src/port_manifest.js +0 -11
  143. package/dist/constraint-runtime/src/prefetch.js +0 -9
  144. package/dist/constraint-runtime/src/query.js +0 -1
  145. package/dist/constraint-runtime/src/remote/index.js +0 -12
  146. package/dist/constraint-runtime/src/remote_runtime.js +0 -9
  147. package/dist/constraint-runtime/src/runtime/index.js +0 -1
  148. package/dist/constraint-runtime/src/runtime/session.js +0 -35
  149. package/dist/constraint-runtime/src/schemas/index.js +0 -12
  150. package/dist/constraint-runtime/src/screens/index.js +0 -12
  151. package/dist/constraint-runtime/src/server/index.js +0 -12
  152. package/dist/constraint-runtime/src/services/index.js +0 -12
  153. package/dist/constraint-runtime/src/session_store.js +0 -22
  154. package/dist/constraint-runtime/src/setup.js +0 -30
  155. package/dist/constraint-runtime/src/skills/index.js +0 -1
  156. package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
  157. package/dist/constraint-runtime/src/state/index.js +0 -12
  158. package/dist/constraint-runtime/src/system_init.js +0 -20
  159. package/dist/constraint-runtime/src/thinking/engine.js +0 -42
  160. package/dist/constraint-runtime/src/thinking/index.js +0 -1
  161. package/dist/constraint-runtime/src/tool_pool.js +0 -8
  162. package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
  163. package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
  164. package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
  165. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
  166. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
  167. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
  168. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
  169. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
  170. package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
  171. package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
  172. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
  173. package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
  174. package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
  175. package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
  176. package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
  177. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
  178. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
  179. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
  180. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
  181. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
  182. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
  183. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
  184. package/dist/constraint-runtime/src/tools.js +0 -80
  185. package/dist/constraint-runtime/src/transcript.js +0 -19
  186. package/dist/constraint-runtime/src/types/index.js +0 -12
  187. package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
  188. package/dist/constraint-runtime/src/utils/index.js +0 -12
  189. package/dist/constraint-runtime/src/vim/index.js +0 -12
  190. package/dist/constraint-runtime/src/voice/index.js +0 -12
  191. package/dist/constraints/index.js.map +0 -1
  192. package/dist/documents/reader.js.map +0 -1
  193. package/dist/llm/config-store.js.map +0 -1
  194. package/dist/llm/pi-ai.js.map +0 -1
  195. package/dist/network/agent-network.js.map +0 -1
  196. package/dist/network/iroh-integration.js.map +0 -1
  197. package/dist/network/iroh-transport.js.map +0 -1
  198. package/dist/network/p2p.js.map +0 -1
  199. package/dist/network/storage/adapters/json-adapter.js.map +0 -1
  200. package/dist/pi-ecosystem-colony/index.js.map +0 -1
  201. package/dist/pi-ecosystem-goals/index.js.map +0 -1
  202. package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
  203. package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
  204. package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
  205. package/dist/pi-ecosystem-judgment/index.js.map +0 -1
  206. package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
  207. package/dist/pi-ecosystem-mcp/index.js.map +0 -1
  208. package/dist/pi-ecosystem-subagents/index.js.map +0 -1
  209. package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
  210. package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
  211. package/dist/social/ant-colony/types.js.map +0 -1
  212. package/dist/social/channels/ChannelManager.js.map +0 -1
  213. package/dist/social/channels/DiapChannelBridge.js.map +0 -1
  214. package/dist/social/channels/InterestMatcher.js.map +0 -1
  215. package/dist/social/channels/types.js.map +0 -1
  216. package/dist/social/global-shared-context.js.map +0 -1
  217. package/dist/social/heartbeat.js.map +0 -1
  218. package/lefthook.yml +0 -33
  219. package/scripts/auto-evolve-loop.ts +0 -481
  220. package/scripts/build-web.ts +0 -116
  221. package/scripts/diff-reviewer.ts +0 -159
  222. package/scripts/validate-system-prompt.ts +0 -142
  223. package/scripts/weekly-report.ts +0 -364
  224. package/src/agents/agent-manifest-protocol.ts +0 -117
  225. package/src/agents/constraint-layer.ts +0 -309
  226. package/src/agents/iroh-secret.ts +0 -32
  227. package/src/agents/p2p-chat-tools.ts +0 -383
  228. package/src/agents/p2p-document-tools.ts +0 -347
  229. package/src/agents/permission-mode.ts +0 -127
  230. package/src/agents/pi-sdk.ts +0 -2895
  231. package/src/agents/pre-tool-validator.ts +0 -213
  232. package/src/agents/protocol.ts +0 -398
  233. package/src/agents/shell-guard.ts +0 -417
  234. package/src/agents/shell-tool.ts +0 -103
  235. package/src/agents/skill-loader.ts +0 -202
  236. package/src/agents/subagent-manager.ts +0 -553
  237. package/src/agents/workflow-engine.ts +0 -332
  238. package/src/agents/workflow-pivot-loop.ts +0 -766
  239. package/src/bollharness/.sanitize-report.json +0 -13
  240. package/src/bollharness/CLAUDE.md +0 -73
  241. package/src/bollharness/LICENSE +0 -21
  242. package/src/bollharness/README.md +0 -143
  243. package/src/bollharness/README.zh-CN.md +0 -131
  244. package/src/bollharness/package.json +0 -20
  245. package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
  246. package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
  247. package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
  248. package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
  249. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  250. package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
  251. package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
  252. package/src/bollharness/scripts/ci/count-components.sh +0 -65
  253. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  254. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  255. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  256. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  257. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  258. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  259. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  260. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  261. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  262. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  263. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  264. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
  265. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  266. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  267. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  268. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  269. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  270. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  271. package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
  272. package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
  273. package/src/bollharness/scripts/hooks/precompact.sh +0 -56
  274. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  275. package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
  276. package/src/bollharness/src/index.ts +0 -5
  277. package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
  278. package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
  279. package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
  280. package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
  281. package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
  282. package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
  283. package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
  284. package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
  285. package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
  286. package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
  287. package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
  288. package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
  289. package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
  290. package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
  291. package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
  292. package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
  293. package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
  294. package/src/bollharness/src/scripts/checks/finding.ts +0 -35
  295. package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
  296. package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
  297. package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
  298. package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
  299. package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
  300. package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
  301. package/src/bollharness/src/scripts/context_router.ts +0 -76
  302. package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
  303. package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
  304. package/src/bollharness/src/scripts/guard_router.ts +0 -194
  305. package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
  306. package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
  307. package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
  308. package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
  309. package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
  310. package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
  311. package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
  312. package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
  313. package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
  314. package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
  315. package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
  316. package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
  317. package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
  318. package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
  319. package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
  320. package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
  321. package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
  322. package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
  323. package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
  324. package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
  325. package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
  326. package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
  327. package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
  328. package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
  329. package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
  330. package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
  331. package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
  332. package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
  333. package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
  334. package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
  335. package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
  336. package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
  337. package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
  338. package/src/bollharness/src/scripts/sanitize.ts +0 -9
  339. package/src/bollharness/templates/persona/default.json +0 -19
  340. package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
  341. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  342. package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
  343. package/src/bollharness-integration/context-chain-router.ts +0 -474
  344. package/src/bollharness-integration/context-router-judgment.ts +0 -339
  345. package/src/bollharness-integration/context-router.ts +0 -583
  346. package/src/bollharness-integration/gate-state-machine.ts +0 -444
  347. package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
  348. package/src/bollharness-integration/guard-checker.ts +0 -451
  349. package/src/bollharness-integration/index.ts +0 -195
  350. package/src/bollharness-integration/integration.ts +0 -538
  351. package/src/bollharness-integration/judgment-prompts.yaml +0 -535
  352. package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
  353. package/src/bollharness-integration/skill-adapter.ts +0 -646
  354. package/src/bootstrap/bootstrap.ts +0 -135
  355. package/src/bootstrap/context-collector.ts +0 -371
  356. package/src/bootstrap/context-hierarchy.ts +0 -283
  357. package/src/bootstrap/lifecycle-hooks.ts +0 -289
  358. package/src/bootstrap/project-context.ts +0 -171
  359. package/src/cli/interface.ts +0 -211
  360. package/src/cli-entry.ts +0 -304
  361. package/src/constraints/index.ts +0 -6
  362. package/src/context-compaction/auto-compact.ts +0 -153
  363. package/src/context-compaction/budget-gate.ts +0 -32
  364. package/src/context-compaction/budget-reduce.ts +0 -37
  365. package/src/context-compaction/context-collapse.ts +0 -72
  366. package/src/context-compaction/index.ts +0 -24
  367. package/src/context-compaction/microcompact.ts +0 -54
  368. package/src/context-compaction/pipeline.ts +0 -133
  369. package/src/context-compaction/snip.ts +0 -51
  370. package/src/context-compaction/token-estimator.ts +0 -36
  371. package/src/context-compaction/types.ts +0 -99
  372. package/src/documents/reader.ts +0 -85
  373. package/src/documents/store.ts +0 -252
  374. package/src/electron-preload.ts +0 -25
  375. package/src/electron.ts +0 -200
  376. package/src/heartbeat/DaemonManager.ts +0 -283
  377. package/src/heartbeat/HealthMonitor.ts +0 -317
  378. package/src/heartbeat/StartupVerifier.ts +0 -223
  379. package/src/heartbeat/Watchdog.ts +0 -208
  380. package/src/heartbeat/index.ts +0 -109
  381. package/src/heartbeat/self-improve-bus.ts +0 -110
  382. package/src/heartbeat/types.ts +0 -82
  383. package/src/index.ts +0 -1724
  384. package/src/llm/audio-config-store.ts +0 -246
  385. package/src/llm/config-store.ts +0 -400
  386. package/src/llm/llm-judgment-client.ts +0 -471
  387. package/src/llm/pi-ai.ts +0 -653
  388. package/src/llm/system-prompt/health.ts +0 -159
  389. package/src/llm/system-prompt/layers/channel/local.md +0 -14
  390. package/src/llm/system-prompt/layers/channel/p2p-agent.md +0 -18
  391. package/src/llm/system-prompt/layers/channel/p2p-visitor.md +0 -19
  392. package/src/llm/system-prompt/layers/core/artifacts_storage.md +0 -89
  393. package/src/llm/system-prompt/layers/core/evenhandedness.md +0 -21
  394. package/src/llm/system-prompt/layers/core/hibs_reminders.md +0 -15
  395. package/src/llm/system-prompt/layers/core/identity.md +0 -37
  396. package/src/llm/system-prompt/layers/core/knowledge.md +0 -17
  397. package/src/llm/system-prompt/layers/core/memory_system.md +0 -12
  398. package/src/llm/system-prompt/layers/core/network_filesystem.md +0 -28
  399. package/src/llm/system-prompt/layers/core/refusal.md +0 -37
  400. package/src/llm/system-prompt/layers/core/tone.md +0 -31
  401. package/src/llm/system-prompt/layers/core/tools.thin.md +0 -13
  402. package/src/llm/system-prompt/layers/core/wellbeing.md +0 -41
  403. package/src/llm/system-prompt/layers/role/architect.md +0 -20
  404. package/src/llm/system-prompt/layers/role/expert.md +0 -19
  405. package/src/llm/system-prompt/layers/role/implementer.md +0 -15
  406. package/src/llm/system-prompt/layers/role/security.md +0 -15
  407. package/src/llm/system-prompt/layers/tool/artifacts.md +0 -72
  408. package/src/llm/system-prompt/layers/tool/bash.md +0 -25
  409. package/src/llm/system-prompt/layers/tool/hibs_api.md +0 -171
  410. package/src/llm/system-prompt/layers/tool/image_search.md +0 -70
  411. package/src/llm/system-prompt/layers/tool/manifest.md +0 -89
  412. package/src/llm/system-prompt/layers/tool/mcp_apps.md +0 -53
  413. package/src/llm/system-prompt/layers/tool/web_search.md +0 -83
  414. package/src/llm/system-prompt/registry.ts +0 -325
  415. package/src/llm/system-prompt/strip-hibsml.ts +0 -52
  416. package/src/llm/tool-manifest/ask_user_input.ts +0 -37
  417. package/src/llm/tool-manifest/bash.ts +0 -25
  418. package/src/llm/tool-manifest/create_file.ts +0 -26
  419. package/src/llm/tool-manifest/fetch_sports_data.ts +0 -28
  420. package/src/llm/tool-manifest/image_search.ts +0 -26
  421. package/src/llm/tool-manifest/index.ts +0 -88
  422. package/src/llm/tool-manifest/mcp.ts +0 -46
  423. package/src/llm/tool-manifest/message_compose.ts +0 -33
  424. package/src/llm/tool-manifest/places.ts +0 -86
  425. package/src/llm/tool-manifest/present_files.ts +0 -23
  426. package/src/llm/tool-manifest/recipe.ts +0 -42
  427. package/src/llm/tool-manifest/recommend_apps.ts +0 -25
  428. package/src/llm/tool-manifest/str_replace.ts +0 -29
  429. package/src/llm/tool-manifest/types.ts +0 -52
  430. package/src/llm/tool-manifest/view.ts +0 -26
  431. package/src/llm/tool-manifest/weather.ts +0 -29
  432. package/src/llm/tool-manifest/web.ts +0 -54
  433. package/src/llm/video-config-store.ts +0 -257
  434. package/src/network/agent-network.ts +0 -800
  435. package/src/network/hybrid-messenger.ts +0 -199
  436. package/src/network/iroh-bootstrap.ts +0 -57
  437. package/src/network/iroh-discovery.ts +0 -208
  438. package/src/network/iroh-integration.ts +0 -158
  439. package/src/network/iroh-transport.ts +0 -637
  440. package/src/network/known-peers.ts +0 -102
  441. package/src/network/p2p-direct.ts +0 -262
  442. package/src/network/p2p-secret.ts +0 -153
  443. package/src/network/p2p.ts +0 -964
  444. package/src/network/source-intent-broadcaster.ts +0 -242
  445. package/src/network/source-intent.ts +0 -167
  446. package/src/network/storage/adapters/json-adapter.ts +0 -454
  447. package/src/network/storage/index.ts +0 -203
  448. package/src/network/storage/types.ts +0 -166
  449. package/src/security/builtin-guards.ts +0 -162
  450. package/src/security/context-router-tool.ts +0 -122
  451. package/src/security/input-scanner.ts +0 -287
  452. package/src/security/react-harness.ts +0 -177
  453. package/src/security/tool-gate.ts +0 -294
  454. package/src/social/ant-colony/index.js +0 -19
  455. package/src/social/channels/ChannelManager.ts +0 -485
  456. package/src/social/channels/DiapChannelBridge.ts +0 -501
  457. package/src/social/channels/InterestMatcher.ts +0 -189
  458. package/src/social/channels/agent-workflow-config.json +0 -214
  459. package/src/social/channels/agent-workflow-config.yaml +0 -334
  460. package/src/social/channels/channel-agent-session.ts +0 -407
  461. package/src/social/channels/channel-heartbeat-agent.ts +0 -622
  462. package/src/social/channels/diap-doc-parser.ts +0 -282
  463. package/src/social/channels/harness-workflow-integrator.ts +0 -594
  464. package/src/social/channels/index.ts +0 -22
  465. package/src/social/channels/types.ts +0 -115
  466. package/src/social/global-shared-context.ts +0 -506
  467. package/src/social/heartbeat.ts +0 -1057
  468. package/src/social/persona/enhanced-persona.ts +0 -359
  469. package/src/types.d.ts +0 -12
  470. package/src/utils/auto-evolve-policy.ts +0 -138
  471. package/src/utils/auto-update.ts +0 -482
  472. package/src/utils/clamp.ts +0 -5
  473. package/src/web/agent-delegate-server.ts +0 -148
  474. package/src/web/api-config.html +0 -520
  475. package/src/web/client.js +0 -2352
  476. package/src/web/client.ts +0 -4326
  477. package/src/web/components/p2p/P2PModal.tsx +0 -416
  478. package/src/web/components/p2p/index.ts +0 -566
  479. package/src/web/components/p2p/index.tsx +0 -297
  480. package/src/web/components/p2p/p2p-connection.ts +0 -338
  481. package/src/web/components/p2p/p2p-identity.ts +0 -92
  482. package/src/web/components/p2p/p2p-manager.ts +0 -147
  483. package/src/web/components/p2p/p2p-messages.ts +0 -219
  484. package/src/web/components/p2p/p2p-modal.ts +0 -685
  485. package/src/web/components/p2p/p2p-store-memory.ts +0 -162
  486. package/src/web/components/p2p/p2p-tools.ts +0 -315
  487. package/src/web/components/p2p/types.ts +0 -170
  488. package/src/web/components/wallet-viem.mjs +0 -118
  489. package/src/web/design.md +0 -99
  490. package/src/web/icons/apple-touch-icon.png +0 -0
  491. package/src/web/icons/favicon-16x16.png +0 -0
  492. package/src/web/icons/favicon-192x192.png +0 -0
  493. package/src/web/icons/favicon-32x32.png +0 -0
  494. package/src/web/icons/favicon-48x48.png +0 -0
  495. package/src/web/icons/favicon-512x512.png +0 -0
  496. package/src/web/icons/favicon.icns +0 -0
  497. package/src/web/icons/favicon.ico +0 -0
  498. package/src/web/icons/icon.png +0 -0
  499. package/src/web/icons/image.png +0 -0
  500. package/src/web/index.html +0 -373
  501. package/src/web/iroh-delegate-transport.ts +0 -139
  502. package/src/web/manifest.json +0 -21
  503. package/src/web/server.ts +0 -5731
  504. package/src/web/style.css +0 -4737
  505. package/src/web/ui/message-renderer.ts +0 -540
  506. package/src/web/ui/step-timeline.ts +0 -394
  507. package/staging/auto-evolve/clean-001/.review-verdict +0 -9
  508. package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
  509. package/staging/auto-evolve/e2e-001/.patch-id +0 -1
  510. package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
  511. package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
  512. package/staging/auto-evolve/test-bad/.review-verdict +0 -12
  513. package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
  514. package/test-results/.last-run.json +0 -6
  515. package/test-results/src-test-web-loop-status-b-5734c-atus-bar-/346/230/276/347/244/272-spinner-/344/270/215/346/230/276/347/244/272/345/276/252/347/216/257/350/256/241/346/225/260/error-context.md +0 -285
  516. package/tsconfig.cli.json +0 -16
  517. package/tsconfig.electron.json +0 -20
  518. package/tsconfig.json +0 -18
@@ -1,800 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- import { multiaddr as createMultiaddr } from '@multiformats/multiaddr';
4
- import { KeyManager } from '@diap/sdk';
5
- import { p2pNetwork, type PersistentPeerInfo } from './p2p.js';
6
-
7
- const AGENT_REGISTRY_PATH = path.join(process.env.HOME || '/tmp', '.bolloon', 'agent-registry.json');
8
- const KEY_PAIR_PATH = path.join(process.env.HOME || '/tmp', '.bolloon', 'keypair.json');
9
-
10
- export interface KeyPair {
11
- privateKey: Uint8Array;
12
- publicKey: Uint8Array;
13
- did: string;
14
- }
15
-
16
- export interface AgentEndpoint {
17
- did: string;
18
- name: string;
19
- peerId: string;
20
- multiaddrs: string[];
21
- lastSeen?: number;
22
- publicKey?: string;
23
- signature?: string;
24
- }
25
-
26
- export interface AgentRegistryEntry {
27
- did: string;
28
- name: string;
29
- peerId: string;
30
- multiaddrs: string[];
31
- registeredAt: number;
32
- lastSeen: number;
33
- lastBroadcast: number;
34
- publicKey: string;
35
- relayAddr?: string;
36
- canRelay?: boolean;
37
- }
38
-
39
- export interface SignedMessage {
40
- type: string;
41
- from: string;
42
- name: string;
43
- payload: string;
44
- timestamp: number;
45
- signature: string;
46
- }
47
-
48
- export interface AddressBroadcast {
49
- type: 'address_broadcast';
50
- from: string;
51
- name: string;
52
- peerId: string;
53
- multiaddrs: string[];
54
- relayAddr?: string;
55
- canRelay?: boolean;
56
- timestamp: number;
57
- signature: string;
58
- }
59
-
60
- export interface DiscoveryMessage {
61
- type: 'discovery';
62
- from: string;
63
- name: string;
64
- capability: string[];
65
- timestamp: number;
66
- signature: string;
67
- }
68
-
69
- const ADDRESS_BROADCAST_INTERVAL = 5 * 60 * 1000;
70
- const RELAY_RETRY_INTERVAL = 30000;
71
- const MAX_RELAY_HOPS = 3;
72
- const MESSAGE_TIMESTAMP_TOLERANCE = 24 * 60 * 60 * 1000;
73
- const SIGNED_MESSAGE_TYPES = ['task', 'response', 'discovery', 'address_broadcast'] as const;
74
-
75
- export class AgentRegistry {
76
- private agents: Map<string, AgentRegistryEntry> = new Map();
77
- private registryPath: string;
78
- private ownEndpoint: AgentEndpoint | null = null;
79
- private keyPair: KeyPair | null = null;
80
- private keyPairPath: string;
81
- private relayMode: boolean = false;
82
- private pendingRelayMessages: Map<string, { data: Uint8Array; hops: number }[]> = new Map();
83
-
84
- constructor() {
85
- this.registryPath = AGENT_REGISTRY_PATH;
86
- this.keyPairPath = KEY_PAIR_PATH;
87
- }
88
-
89
- async initialize(): Promise<void> {
90
- await fs.mkdir(path.dirname(this.registryPath), { recursive: true });
91
- await this.loadRegistry();
92
- await this.loadOrCreateKeyPair();
93
- }
94
-
95
- private async loadOrCreateKeyPair(): Promise<void> {
96
- try {
97
- const data = await fs.readFile(this.keyPairPath, 'utf-8');
98
- const keyFile = JSON.parse(data);
99
- this.keyPair = {
100
- privateKey: Buffer.from(keyFile.privateKey, 'hex'),
101
- publicKey: Buffer.from(keyFile.publicKey, 'hex'),
102
- did: keyFile.did
103
- };
104
- console.log(`[Registry] Loaded keypair: ${this.keyPair.did.substring(0, 20)}...`);
105
- } catch {
106
- console.log(`[Registry] Generating new keypair...`);
107
- const kp = KeyManager.generate();
108
- this.keyPair = {
109
- privateKey: kp.privateKey,
110
- publicKey: kp.publicKey,
111
- did: kp.did
112
- };
113
- await this.saveKeyPair();
114
- console.log(`[Registry] New keypair created: ${this.keyPair.did.substring(0, 20)}...`);
115
- }
116
- }
117
-
118
- private async saveKeyPair(): Promise<void> {
119
- if (!this.keyPair) return;
120
- const keyFile = {
121
- privateKey: Buffer.from(this.keyPair.privateKey).toString('hex'),
122
- publicKey: Buffer.from(this.keyPair.publicKey).toString('hex'),
123
- did: this.keyPair.did,
124
- createdAt: new Date().toISOString()
125
- };
126
- await fs.writeFile(this.keyPairPath, JSON.stringify(keyFile, null, 2));
127
- }
128
-
129
- getKeyPair(): KeyPair | null {
130
- return this.keyPair;
131
- }
132
-
133
- async loadRegistry(): Promise<void> {
134
- try {
135
- const data = await fs.readFile(this.registryPath, 'utf-8');
136
- const entries: AgentRegistryEntry[] = JSON.parse(data);
137
- for (const entry of entries) {
138
- this.agents.set(entry.did, entry);
139
- }
140
- console.log(`[Registry] Loaded ${entries.length} known agents`);
141
- } catch {
142
- console.log(`[Registry] No existing registry found`);
143
- }
144
- }
145
-
146
- private async saveRegistry(): Promise<void> {
147
- try {
148
- const entries = Array.from(this.agents.values());
149
- await fs.writeFile(this.registryPath, JSON.stringify(entries, null, 2));
150
- } catch (e) {
151
- console.warn(`[Registry] Failed to save:`, e);
152
- }
153
- }
154
-
155
- setOwnEndpoint(endpoint: AgentEndpoint): void {
156
- this.ownEndpoint = endpoint;
157
- if (this.keyPair) {
158
- endpoint.did = this.keyPair.did;
159
- endpoint.publicKey = Buffer.from(this.keyPair.publicKey).toString('hex');
160
- }
161
- this.registerAgent(endpoint);
162
- }
163
-
164
- getOwnEndpoint(): AgentEndpoint | null {
165
- return this.ownEndpoint;
166
- }
167
-
168
- async signMessage(data: string): Promise<Uint8Array | null> {
169
- if (!this.keyPair) {
170
- console.warn(`[Registry] No keypair available for signing`);
171
- return null;
172
- }
173
- try {
174
- const signature = await KeyManager.sign(this.keyPair, new TextEncoder().encode(data));
175
- return signature;
176
- } catch (e) {
177
- console.warn(`[Registry] Signing failed:`, e);
178
- return null;
179
- }
180
- }
181
-
182
- async verifySignature(did: string, data: string, signature: Uint8Array): Promise<boolean> {
183
- try {
184
- const agent = this.agents.get(did);
185
- if (!agent || !agent.publicKey) {
186
- console.warn(`[Registry] Unknown agent or missing public key: ${did.substring(0, 20)}`);
187
- return false;
188
- }
189
-
190
- const publicKey = Buffer.from(agent.publicKey, 'hex');
191
- const keyPair = { privateKey: new Uint8Array(32), publicKey, did };
192
- const isValid = await KeyManager.verify(keyPair, new TextEncoder().encode(data), signature);
193
-
194
- if (!isValid) {
195
- console.warn(`[Registry] Invalid signature from ${did.substring(0, 20)}`);
196
- }
197
-
198
- return isValid;
199
- } catch (e) {
200
- console.warn(`[Registry] Verification failed:`, e);
201
- return false;
202
- }
203
- }
204
-
205
- registerAgent(endpoint: AgentEndpoint): void {
206
- const entry: AgentRegistryEntry = {
207
- did: endpoint.did,
208
- name: endpoint.name,
209
- peerId: endpoint.peerId,
210
- multiaddrs: endpoint.multiaddrs,
211
- registeredAt: Date.now(),
212
- lastSeen: Date.now(),
213
- lastBroadcast: 0,
214
- publicKey: endpoint.publicKey || ''
215
- };
216
-
217
- const existing = this.agents.get(endpoint.did);
218
- if (existing) {
219
- entry.registeredAt = existing.registeredAt;
220
- entry.lastBroadcast = existing.lastBroadcast;
221
- if (endpoint.publicKey && !existing.publicKey) {
222
- entry.publicKey = endpoint.publicKey;
223
- }
224
- }
225
-
226
- this.agents.set(endpoint.did, entry);
227
- this.saveRegistry();
228
- console.log(`[Registry] Registered agent: ${endpoint.name} (${endpoint.did.substring(0, 20)}...)`);
229
- }
230
-
231
- getAgent(did: string): AgentRegistryEntry | undefined {
232
- return this.agents.get(did);
233
- }
234
-
235
- getAgentByPeerId(peerId: string): AgentRegistryEntry | undefined {
236
- for (const agent of this.agents.values()) {
237
- if (agent.peerId === peerId) {
238
- return agent;
239
- }
240
- }
241
- return undefined;
242
- }
243
-
244
- getAllAgents(): AgentRegistryEntry[] {
245
- return Array.from(this.agents.values());
246
- }
247
-
248
- getOnlineAgents(timeoutMs: number = 10 * 60 * 1000): AgentRegistryEntry[] {
249
- const now = Date.now();
250
- return Array.from(this.agents.values()).filter(
251
- a => now - a.lastSeen < timeoutMs
252
- );
253
- }
254
-
255
- updateLastSeen(did: string): void {
256
- const agent = this.agents.get(did);
257
- if (agent) {
258
- agent.lastSeen = Date.now();
259
- this.saveRegistry();
260
- }
261
- }
262
-
263
- removeAgent(did: string): void {
264
- this.agents.delete(did);
265
- this.saveRegistry();
266
- }
267
-
268
- async createSignedBroadcast(): Promise<AddressBroadcast | null> {
269
- if (!this.ownEndpoint || !this.keyPair) return null;
270
-
271
- const now = Date.now();
272
- const entry = this.agents.get(this.ownEndpoint.did);
273
- if (entry && now - entry.lastBroadcast < ADDRESS_BROADCAST_INTERVAL) {
274
- return null;
275
- }
276
-
277
- const relayAddr = (p2pNetwork as any).getRelayAddress?.() || null;
278
-
279
- const broadcastData = JSON.stringify({
280
- type: 'address_broadcast',
281
- from: this.keyPair.did,
282
- name: this.ownEndpoint.name,
283
- peerId: this.ownEndpoint.peerId,
284
- multiaddrs: this.ownEndpoint.multiaddrs,
285
- relayAddr: relayAddr || undefined,
286
- canRelay: relayAddr ? true : false,
287
- timestamp: now
288
- });
289
-
290
- const signature = await this.signMessage(broadcastData);
291
- if (!signature) return null;
292
-
293
- const broadcast: AddressBroadcast = {
294
- type: 'address_broadcast',
295
- from: this.keyPair.did,
296
- name: this.ownEndpoint.name,
297
- peerId: this.ownEndpoint.peerId,
298
- multiaddrs: this.ownEndpoint.multiaddrs,
299
- relayAddr: relayAddr || undefined,
300
- canRelay: relayAddr ? true : false,
301
- timestamp: now,
302
- signature: Buffer.from(signature).toString('hex')
303
- };
304
-
305
- if (entry) {
306
- entry.lastBroadcast = now;
307
- }
308
-
309
- return broadcast;
310
- }
311
-
312
- async handleAddressBroadcast(broadcast: AddressBroadcast): Promise<boolean> {
313
- if (!this.keyPair || broadcast.from === this.keyPair.did) {
314
- return false;
315
- }
316
-
317
- if (Math.abs(broadcast.timestamp - Date.now()) > MESSAGE_TIMESTAMP_TOLERANCE) {
318
- console.log(`[Registry] Stale broadcast from ${broadcast.from.substring(0, 20)}`);
319
- return false;
320
- }
321
-
322
- const broadcastData = JSON.stringify({
323
- type: 'address_broadcast',
324
- from: broadcast.from,
325
- name: broadcast.name,
326
- peerId: broadcast.peerId,
327
- multiaddrs: broadcast.multiaddrs,
328
- relayAddr: broadcast.relayAddr,
329
- canRelay: broadcast.canRelay,
330
- timestamp: broadcast.timestamp
331
- });
332
-
333
- const signature = Buffer.from(broadcast.signature, 'hex');
334
- const isValid = await this.verifySignature(broadcast.from, broadcastData, signature);
335
- if (!isValid) {
336
- console.warn(`[Registry] Invalid broadcast signature from ${broadcast.from.substring(0, 20)}`);
337
- return false;
338
- }
339
-
340
- const entry: AgentRegistryEntry = {
341
- did: broadcast.from,
342
- name: broadcast.name,
343
- peerId: broadcast.peerId,
344
- multiaddrs: broadcast.multiaddrs,
345
- registeredAt: Date.now(),
346
- lastSeen: broadcast.timestamp,
347
- lastBroadcast: 0,
348
- publicKey: Buffer.from(this.keyPair.publicKey).toString('hex'),
349
- relayAddr: broadcast.relayAddr,
350
- canRelay: broadcast.canRelay
351
- };
352
-
353
- const existing = this.agents.get(broadcast.from);
354
- if (existing) {
355
- entry.registeredAt = existing.registeredAt;
356
- entry.lastBroadcast = existing.lastBroadcast;
357
- if (!existing.publicKey) {
358
- existing.publicKey = entry.publicKey;
359
- }
360
- }
361
-
362
- this.agents.set(broadcast.from, entry);
363
- this.saveRegistry();
364
-
365
- console.log(`[Registry] Verified broadcast from: ${broadcast.name} (${broadcast.from.substring(0, 20)}...) ${broadcast.canRelay ? '[Relay Capable]' : ''}`);
366
- return true;
367
- }
368
-
369
- async createSignedMessage(type: string, payload: string): Promise<SignedMessage | null> {
370
- if (!this.keyPair || !this.ownEndpoint) return null;
371
-
372
- const messageData = JSON.stringify({
373
- type,
374
- from: this.keyPair.did,
375
- name: this.ownEndpoint.name,
376
- payload,
377
- timestamp: Date.now()
378
- });
379
-
380
- const signature = await this.signMessage(messageData);
381
- if (!signature) return null;
382
-
383
- return {
384
- type,
385
- from: this.keyPair.did,
386
- name: this.ownEndpoint.name,
387
- payload,
388
- timestamp: Date.now(),
389
- signature: Buffer.from(signature).toString('hex')
390
- };
391
- }
392
-
393
- async verifySignedMessage(msg: SignedMessage): Promise<boolean> {
394
- if (!this.keyPair || msg.from === this.keyPair.did) {
395
- return false;
396
- }
397
-
398
- if (Math.abs(msg.timestamp - Date.now()) > MESSAGE_TIMESTAMP_TOLERANCE) {
399
- console.log(`[Registry] Stale message from ${msg.from.substring(0, 20)}`);
400
- return false;
401
- }
402
-
403
- const messageData = JSON.stringify({
404
- type: msg.type,
405
- from: msg.from,
406
- name: msg.name,
407
- payload: msg.payload,
408
- timestamp: msg.timestamp
409
- });
410
-
411
- const signature = Buffer.from(msg.signature, 'hex');
412
- return this.verifySignature(msg.from, messageData, signature);
413
- }
414
-
415
- async connectToAgent(did: string): Promise<boolean> {
416
- const agent = this.agents.get(did);
417
- if (!agent) {
418
- console.log(`[Registry] Unknown agent: ${did}`);
419
- return false;
420
- }
421
-
422
- if (!agent.multiaddrs || agent.multiaddrs.length === 0) {
423
- console.log(`[Registry] No addresses for agent: ${agent.name}`);
424
- if (!agent.relayAddr) {
425
- return false;
426
- }
427
- console.log(`[Registry] Agent has relay address, will try relay connection`);
428
- }
429
-
430
- let connected = false;
431
-
432
- if (agent.multiaddrs && agent.multiaddrs.length > 0) {
433
- for (const addr of agent.multiaddrs) {
434
- try {
435
- const ma = createMultiaddr(addr);
436
- const node = (p2pNetwork as any).node;
437
- if (node) {
438
- await node.dial(ma);
439
- connected = true;
440
- console.log(`[Registry] Direct connection to ${agent.name} at ${addr}`);
441
- break;
442
- }
443
- } catch (e) {
444
- console.warn(`[Registry] Failed to connect directly to ${addr}:`, e);
445
- }
446
- }
447
- }
448
-
449
- if (!connected && agent.relayAddr) {
450
- console.log(`[Registry] Trying relay connection to ${agent.name} via ${agent.relayAddr}`);
451
- try {
452
- const node = (p2pNetwork as any).node;
453
- if (node) {
454
- const ma = createMultiaddr(`${agent.relayAddr}/p2p/${agent.peerId}`);
455
- await node.dial(ma);
456
- connected = true;
457
- console.log(`[Registry] Relay connection to ${agent.name} established`);
458
- }
459
- } catch (e) {
460
- console.warn(`[Registry] Failed to connect via relay:`, e);
461
- }
462
- }
463
-
464
- if (!connected && agent.canRelay) {
465
- const relayPeers = this.findRelayPeers();
466
- for (const relay of relayPeers) {
467
- if (relay.peerId === agent.peerId) continue;
468
- try {
469
- console.log(`[Registry] Trying to relay via ${relay.name} (${relay.peerId.substring(0, 12)}...)`);
470
- const relayAddr = relay.relayAddr || relay.multiaddrs?.[0];
471
- if (relayAddr) {
472
- const node = (p2pNetwork as any).node;
473
- if (node) {
474
- const ma = createMultiaddr(`${relayAddr}/p2p/${agent.peerId}`);
475
- await node.dial(ma);
476
- connected = true;
477
- console.log(`[Registry] Connection to ${agent.name} via relay ${relay.name}`);
478
- break;
479
- }
480
- }
481
- } catch (e) {
482
- console.warn(`[Registry] Failed to relay via ${relay.name}:`, e);
483
- }
484
- }
485
- }
486
-
487
- if (connected) {
488
- this.updateLastSeen(did);
489
- p2pNetwork.addPersistentPeer({
490
- peerId: agent.peerId,
491
- multiaddrs: agent.multiaddrs,
492
- did: agent.did,
493
- name: agent.name,
494
- relayAddr: agent.relayAddr,
495
- canRelay: agent.canRelay
496
- });
497
- }
498
-
499
- return connected;
500
- }
501
-
502
- private findRelayPeers(): AgentRegistryEntry[] {
503
- const now = Date.now();
504
- return Array.from(this.agents.values()).filter(
505
- a => a.canRelay && a.relayAddr && now - a.lastSeen < 30 * 60 * 1000
506
- );
507
- }
508
-
509
- async relayMessage(toDid: string, data: Uint8Array, fromDid: string, hops = 0): Promise<boolean> {
510
- if (hops >= MAX_RELAY_HOPS) {
511
- console.log(`[Registry] Max relay hops reached for ${toDid}`);
512
- return false;
513
- }
514
-
515
- const targetAgent = this.agents.get(toDid);
516
- if (!targetAgent) {
517
- console.log(`[Registry] Unknown relay target: ${toDid}`);
518
- return false;
519
- }
520
-
521
- try {
522
- const peerId = targetAgent.peerId;
523
- const relayMsg = new TextEncoder().encode(
524
- `RELAY:${fromDid}|${hops + 1}|${new TextDecoder().decode(data)}`
525
- );
526
- await p2pNetwork.sendMessage(peerId, 'relay', new TextDecoder().decode(relayMsg));
527
- return true;
528
- } catch (e) {
529
- console.warn(`[Registry] Relay failed to ${toDid}:`, e);
530
- return false;
531
- }
532
- }
533
-
534
- getConnectionInfo(): { did: string; name: string; peerId: string; multiaddrs: string[] } | null {
535
- if (!this.ownEndpoint) return null;
536
- return {
537
- did: this.ownEndpoint.did,
538
- name: this.ownEndpoint.name,
539
- peerId: this.ownEndpoint.peerId,
540
- multiaddrs: this.ownEndpoint.multiaddrs
541
- };
542
- }
543
- }
544
-
545
- export const agentRegistry = new AgentRegistry();
546
-
547
- export class AgentMessaging {
548
- private registry: AgentRegistry;
549
- private messageHandlers: Map<string, (msg: Uint8Array, from: string, did?: string) => void> = new Map();
550
-
551
- constructor(registry: AgentRegistry) {
552
- this.registry = registry;
553
- }
554
-
555
- registerHandler(type: string, handler: (msg: Uint8Array, from: string, did?: string) => void): void {
556
- this.messageHandlers.set(type, handler);
557
- }
558
-
559
- async sendSignedToAgent(did: string, type: string, payload: string): Promise<boolean> {
560
- const agent = this.registry.getAgent(did);
561
- if (!agent) {
562
- console.log(`[Messaging] Unknown agent: ${did}`);
563
- return false;
564
- }
565
-
566
- const signedMsg = await this.registry.createSignedMessage(type, payload);
567
- if (!signedMsg) {
568
- console.warn(`[Messaging] Failed to create signed message`);
569
- return false;
570
- }
571
-
572
- try {
573
- const messageStr = JSON.stringify(signedMsg);
574
- await p2pNetwork.sendMessage(agent.peerId, 'signed', messageStr);
575
- return true;
576
- } catch (e) {
577
- console.warn(`[Messaging] Failed to send to ${did}:`, e);
578
- return false;
579
- }
580
- }
581
-
582
- async sendToAgent(did: string, type: string, payload: string): Promise<boolean> {
583
- const agent = this.registry.getAgent(did);
584
- if (!agent) {
585
- console.log(`[Messaging] Unknown agent: ${did}`);
586
- return false;
587
- }
588
-
589
- const message = `${type}:${payload}`;
590
-
591
- try {
592
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
593
- return true;
594
- } catch (e) {
595
- console.warn(`[Messaging] Failed to send to ${did}:`, e);
596
- return false;
597
- }
598
- }
599
-
600
- async broadcastToAll(type: string, payload: string): Promise<void> {
601
- const agents = this.registry.getOnlineAgents();
602
- const ownEndpoint = this.registry.getOwnEndpoint();
603
-
604
- for (const agent of agents) {
605
- if (agent.did === ownEndpoint?.did) continue;
606
-
607
- try {
608
- await p2pNetwork.sendMessage(agent.peerId, type, payload);
609
- } catch (e) {
610
- console.warn(`[Messaging] Broadcast failed to ${agent.name}:`, e);
611
- }
612
- }
613
- }
614
-
615
- parseMessage(data: Uint8Array): { type: string; payload: string; did?: string; isRelay?: boolean; relayHops?: number } | null {
616
- const messageStr = new TextDecoder().decode(data);
617
-
618
- if (messageStr.startsWith('RELAY:')) {
619
- const parts = messageStr.substring(6).split('|');
620
- if (parts.length >= 3) {
621
- const fromDid = parts[0];
622
- const hops = parseInt(parts[1], 10);
623
- const innerMessage = parts.slice(2).join('|');
624
- return this.parseInnerMessage(innerMessage, fromDid, true, hops);
625
- }
626
- }
627
-
628
- return this.parseInnerMessage(messageStr, undefined, false);
629
- }
630
-
631
- private parseInnerMessage(messageStr: string, relayFrom?: string, isRelay = false, relayHops = 0): { type: string; payload: string; did?: string; isRelay?: boolean; relayHops?: number } | null {
632
- if (messageStr.startsWith('DID:')) {
633
- const didEndIdx = messageStr.indexOf('|');
634
- if (didEndIdx > 0) {
635
- const did = messageStr.substring(4, didEndIdx);
636
- const afterDid = messageStr.substring(didEndIdx + 1);
637
- const colonIdx = afterDid.indexOf(':');
638
- if (colonIdx > 0) {
639
- return {
640
- type: afterDid.substring(0, colonIdx),
641
- payload: afterDid.substring(colonIdx + 1),
642
- did: relayFrom || did,
643
- isRelay,
644
- relayHops
645
- };
646
- }
647
- return { type: afterDid, payload: '', did: relayFrom || did, isRelay, relayHops };
648
- }
649
- }
650
-
651
- const colonIdx = messageStr.indexOf(':');
652
- if (colonIdx > 0) {
653
- return {
654
- type: messageStr.substring(0, colonIdx),
655
- payload: messageStr.substring(colonIdx + 1),
656
- did: relayFrom,
657
- isRelay,
658
- relayHops
659
- };
660
- }
661
- return { type: messageStr, payload: '', did: relayFrom, isRelay, relayHops };
662
- }
663
-
664
- async dispatchSignedMessage(data: Uint8Array, fromPeerId: string): Promise<boolean> {
665
- try {
666
- const messageStr = new TextDecoder().decode(data);
667
- const signedMsg: SignedMessage = JSON.parse(messageStr);
668
-
669
- if (!signedMsg.type || !signedMsg.from || !signedMsg.signature) {
670
- console.warn(`[Messaging] Invalid signed message format`);
671
- return false;
672
- }
673
-
674
- const isValid = await this.registry.verifySignedMessage(signedMsg);
675
- if (!isValid) {
676
- console.warn(`[Messaging] Signature verification failed for ${signedMsg.from.substring(0, 20)}`);
677
- return false;
678
- }
679
-
680
- const handler = this.messageHandlers.get(signedMsg.type);
681
- if (handler) {
682
- handler(data, fromPeerId, signedMsg.from);
683
- }
684
-
685
- return true;
686
- } catch (e) {
687
- console.warn(`[Messaging] Failed to dispatch signed message:`, e);
688
- return false;
689
- }
690
- }
691
-
692
- dispatchMessage(data: Uint8Array, fromPeerId: string): void {
693
- const parsed = this.parseMessage(data);
694
- if (!parsed) return;
695
-
696
- const handler = this.messageHandlers.get(parsed.type);
697
- if (handler) {
698
- handler(data, fromPeerId, parsed.did);
699
- }
700
- }
701
- }
702
-
703
- export const agentMessaging = new AgentMessaging(agentRegistry);
704
-
705
- export async function initializeAgentNetwork(
706
- ownDid: string,
707
- ownName: string,
708
- peerId: string,
709
- multiaddrs: string[]
710
- ): Promise<void> {
711
- await agentRegistry.initialize();
712
-
713
- const keyPair = agentRegistry.getKeyPair();
714
- const publicKeyHex = keyPair ? Buffer.from(keyPair.publicKey).toString('hex') : undefined;
715
-
716
- agentRegistry.setOwnEndpoint({
717
- did: keyPair?.did || ownDid,
718
- name: ownName,
719
- peerId,
720
- multiaddrs,
721
- publicKey: publicKeyHex
722
- });
723
-
724
- p2pNetwork.setOwnDid(keyPair?.did || ownDid);
725
-
726
- p2pNetwork.onMessage('signed', async (data, from, did) => {
727
- await agentMessaging.dispatchSignedMessage(data, from);
728
- });
729
-
730
- p2pNetwork.onMessage('address_broadcast', async (data, from, did) => {
731
- try {
732
- const messageStr = new TextDecoder().decode(data);
733
- const broadcast: AddressBroadcast = JSON.parse(messageStr);
734
- if (broadcast.type === 'address_broadcast') {
735
- await agentRegistry.handleAddressBroadcast(broadcast);
736
- }
737
- } catch (e) {
738
- console.warn(`[AgentNetwork] Failed to handle address broadcast:`, e);
739
- }
740
- });
741
-
742
- p2pNetwork.onMessage('relay', (data, from, did) => {
743
- try {
744
- const relayMsg = new TextDecoder().decode(data);
745
- const relayMatch = relayMsg.match(/^RELAY:(.+?)\|(\d+)\|(.+)$/);
746
- if (relayMatch) {
747
- const [, targetDid, hopsStr, innerData] = relayMatch;
748
- const hops = parseInt(hopsStr, 10);
749
-
750
- if (hops < MAX_RELAY_HOPS) {
751
- agentRegistry.relayMessage(targetDid, new TextEncoder().encode(innerData), did || from, hops);
752
- }
753
- }
754
- } catch (e) {
755
- console.warn(`[AgentNetwork] Failed to handle relay:`, e);
756
- }
757
- });
758
-
759
- p2pNetwork.onMessage('discovery', async (data, from, did) => {
760
- try {
761
- const messageStr = new TextDecoder().decode(data);
762
- const discovery: DiscoveryMessage = JSON.parse(messageStr);
763
- if (discovery.type === 'discovery') {
764
- const isValid = await agentRegistry.verifySignature(
765
- discovery.from,
766
- JSON.stringify({ ...discovery, signature: undefined }),
767
- Buffer.from(discovery.signature, 'hex')
768
- );
769
- if (isValid) {
770
- console.log(`[AgentNetwork] Verified discovery from: ${discovery.name}`);
771
- }
772
- }
773
- } catch (e) {
774
- console.warn(`[AgentNetwork] Failed to handle discovery:`, e);
775
- }
776
- });
777
-
778
- console.log(`[AgentNetwork] Initialized with DID: ${keyPair?.did.substring(0, 20) || ownDid.substring(0, 20)}...`);
779
- }
780
-
781
- export async function broadcastOwnAddress(): Promise<void> {
782
- const broadcast = await agentRegistry.createSignedBroadcast();
783
- if (broadcast) {
784
- const data = JSON.stringify(broadcast);
785
- await p2pNetwork.broadcast('address_broadcast', data);
786
- console.log(`[AgentNetwork] Broadcast signed address to network`);
787
- }
788
- }
789
-
790
- export async function findAndConnectToAgent(did: string): Promise<boolean> {
791
- return agentRegistry.connectToAgent(did);
792
- }
793
-
794
- export async function sendMessageToAgent(did: string, type: string, payload: string): Promise<boolean> {
795
- return agentMessaging.sendSignedToAgent(did, type, payload);
796
- }
797
-
798
- export async function sendUnverifiedMessageToAgent(did: string, type: string, payload: string): Promise<boolean> {
799
- return agentMessaging.sendToAgent(did, type, payload);
800
- }