@bolloon/bolloon-agent 0.4.28 → 0.4.30

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 (473) hide show
  1. package/bin/bolloon.cjs +18 -148
  2. package/bin/bolloon.cmd +6 -3
  3. package/dist/agents/contacts/chain.js +579 -0
  4. package/dist/agents/contacts/cli.js +158 -0
  5. package/dist/agents/contacts/consent.js +124 -0
  6. package/dist/agents/contacts/grant-payload.js +45 -0
  7. package/dist/agents/contacts/grants.js +451 -0
  8. package/dist/agents/contacts/policy.js +264 -0
  9. package/dist/agents/contacts/preview-types.js +6 -0
  10. package/dist/agents/contacts/providers.js +341 -0
  11. package/dist/agents/contacts/store.js +326 -0
  12. package/dist/agents/contacts/tools.js +154 -0
  13. package/dist/agents/contacts/types.js +148 -0
  14. package/dist/agents/pi-sdk-tools.js +3 -1
  15. package/dist/agents/pi-sdk.js +14 -1
  16. package/dist/cli/update-commands.js +349 -0
  17. package/dist/cli-entry.js +41 -55
  18. package/dist/electron-build/agents/agent-gateway.js +169 -0
  19. package/dist/electron-build/agents/agent-gateway.js.map +1 -0
  20. package/dist/electron-build/agents/agent-identity-store.js +212 -0
  21. package/dist/electron-build/agents/agent-identity-store.js.map +1 -0
  22. package/dist/electron-build/agents/agent-identity.js +196 -0
  23. package/dist/electron-build/agents/agent-identity.js.map +1 -0
  24. package/dist/electron-build/agents/agent-manifest-protocol.js +151 -0
  25. package/dist/electron-build/agents/agent-manifest-protocol.js.map +1 -0
  26. package/dist/electron-build/agents/agent-registry.js +217 -0
  27. package/dist/electron-build/agents/agent-registry.js.map +1 -0
  28. package/dist/electron-build/agents/agent-reputation.js +60 -0
  29. package/dist/electron-build/agents/agent-reputation.js.map +1 -0
  30. package/dist/electron-build/agents/agent-service-client.js +186 -0
  31. package/dist/electron-build/agents/agent-service-client.js.map +1 -0
  32. package/dist/electron-build/agents/browser-cdp.js +765 -0
  33. package/dist/electron-build/agents/browser-cdp.js.map +1 -0
  34. package/dist/electron-build/agents/computer-use.js +341 -0
  35. package/dist/electron-build/agents/computer-use.js.map +1 -0
  36. package/dist/electron-build/agents/constraint-layer.js +210 -0
  37. package/dist/electron-build/agents/constraint-layer.js.map +1 -0
  38. package/dist/electron-build/agents/contacts/chain.js +619 -0
  39. package/dist/electron-build/agents/contacts/chain.js.map +1 -0
  40. package/dist/electron-build/agents/contacts/consent.js +163 -0
  41. package/dist/electron-build/agents/contacts/consent.js.map +1 -0
  42. package/dist/electron-build/agents/contacts/grant-payload.js +52 -0
  43. package/dist/electron-build/agents/contacts/grant-payload.js.map +1 -0
  44. package/dist/electron-build/agents/contacts/grants.js +500 -0
  45. package/dist/electron-build/agents/contacts/grants.js.map +1 -0
  46. package/dist/electron-build/agents/contacts/policy.js +271 -0
  47. package/dist/electron-build/agents/contacts/policy.js.map +1 -0
  48. package/dist/electron-build/agents/contacts/preview-types.js +8 -0
  49. package/dist/electron-build/agents/contacts/preview-types.js.map +1 -0
  50. package/dist/electron-build/agents/contacts/providers.js +384 -0
  51. package/dist/electron-build/agents/contacts/providers.js.map +1 -0
  52. package/dist/electron-build/agents/contacts/store.js +370 -0
  53. package/dist/electron-build/agents/contacts/store.js.map +1 -0
  54. package/dist/electron-build/agents/contacts/tools.js +159 -0
  55. package/dist/electron-build/agents/contacts/tools.js.map +1 -0
  56. package/dist/electron-build/agents/contacts/types.js +166 -0
  57. package/dist/electron-build/agents/contacts/types.js.map +1 -0
  58. package/dist/electron-build/agents/decision-store.js +292 -0
  59. package/dist/electron-build/agents/decision-store.js.map +1 -0
  60. package/dist/electron-build/agents/deny-pipeline.js +125 -0
  61. package/dist/electron-build/agents/deny-pipeline.js.map +1 -0
  62. package/dist/electron-build/agents/economic-policy.js +172 -0
  63. package/dist/electron-build/agents/economic-policy.js.map +1 -0
  64. package/dist/electron-build/agents/error-classifier.js +125 -0
  65. package/dist/electron-build/agents/error-classifier.js.map +1 -0
  66. package/dist/electron-build/agents/execution-supervisor.js +539 -0
  67. package/dist/electron-build/agents/execution-supervisor.js.map +1 -0
  68. package/dist/electron-build/agents/external-events.js +171 -0
  69. package/dist/electron-build/agents/external-events.js.map +1 -0
  70. package/dist/electron-build/agents/gateway-join.js +315 -0
  71. package/dist/electron-build/agents/gateway-join.js.map +1 -0
  72. package/dist/electron-build/agents/gateway-network.js +505 -0
  73. package/dist/electron-build/agents/gateway-network.js.map +1 -0
  74. package/dist/electron-build/agents/goal-criteria.js +133 -0
  75. package/dist/electron-build/agents/goal-criteria.js.map +1 -0
  76. package/dist/electron-build/agents/goal-resume.js +364 -0
  77. package/dist/electron-build/agents/goal-resume.js.map +1 -0
  78. package/dist/electron-build/agents/goal-store.js +587 -0
  79. package/dist/electron-build/agents/goal-store.js.map +1 -0
  80. package/dist/electron-build/agents/intent-classifier.js +104 -0
  81. package/dist/electron-build/agents/intent-classifier.js.map +1 -0
  82. package/dist/electron-build/agents/iroh-secret.js +70 -0
  83. package/dist/electron-build/agents/iroh-secret.js.map +1 -0
  84. package/dist/electron-build/agents/loop-review.js +101 -0
  85. package/dist/electron-build/agents/loop-review.js.map +1 -0
  86. package/dist/electron-build/agents/memory-recall.js +154 -0
  87. package/dist/electron-build/agents/memory-recall.js.map +1 -0
  88. package/dist/electron-build/agents/p2p-document-tools.js +328 -0
  89. package/dist/electron-build/agents/p2p-document-tools.js.map +1 -0
  90. package/dist/electron-build/agents/parse-tool-call.js +564 -0
  91. package/dist/electron-build/agents/parse-tool-call.js.map +1 -0
  92. package/dist/electron-build/agents/patch-tool.js +205 -0
  93. package/dist/electron-build/agents/patch-tool.js.map +1 -0
  94. package/dist/electron-build/agents/payment-approval.js +183 -0
  95. package/dist/electron-build/agents/payment-approval.js.map +1 -0
  96. package/dist/electron-build/agents/payment-gate.js +139 -0
  97. package/dist/electron-build/agents/payment-gate.js.map +1 -0
  98. package/dist/electron-build/agents/permission-mode.js +124 -0
  99. package/dist/electron-build/agents/permission-mode.js.map +1 -0
  100. package/dist/electron-build/agents/pi-harness.js +268 -0
  101. package/dist/electron-build/agents/pi-harness.js.map +1 -0
  102. package/dist/electron-build/agents/pi-sdk-session-factory.js +117 -0
  103. package/dist/electron-build/agents/pi-sdk-session-factory.js.map +1 -0
  104. package/dist/electron-build/agents/pi-sdk-session-manager.js +335 -0
  105. package/dist/electron-build/agents/pi-sdk-session-manager.js.map +1 -0
  106. package/dist/electron-build/agents/pi-sdk-tools.js +4042 -0
  107. package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -0
  108. package/dist/electron-build/agents/pi-sdk-types.js +17 -0
  109. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -0
  110. package/dist/electron-build/agents/pi-sdk.js +3335 -0
  111. package/dist/electron-build/agents/pi-sdk.js.map +1 -0
  112. package/dist/electron-build/agents/plan-store.js +212 -0
  113. package/dist/electron-build/agents/plan-store.js.map +1 -0
  114. package/dist/electron-build/agents/pre-tool-validator.js +200 -0
  115. package/dist/electron-build/agents/pre-tool-validator.js.map +1 -0
  116. package/dist/electron-build/agents/process-runner.js +148 -0
  117. package/dist/electron-build/agents/process-runner.js.map +1 -0
  118. package/dist/electron-build/agents/react-loop.js +131 -0
  119. package/dist/electron-build/agents/react-loop.js.map +1 -0
  120. package/dist/electron-build/agents/resource-store.js +180 -0
  121. package/dist/electron-build/agents/resource-store.js.map +1 -0
  122. package/dist/electron-build/agents/resource-token.js +118 -0
  123. package/dist/electron-build/agents/resource-token.js.map +1 -0
  124. package/dist/electron-build/agents/resource-wallet.js +84 -0
  125. package/dist/electron-build/agents/resource-wallet.js.map +1 -0
  126. package/dist/electron-build/agents/run-store.js +854 -0
  127. package/dist/electron-build/agents/run-store.js.map +1 -0
  128. package/dist/electron-build/agents/runner-resolver.js +267 -0
  129. package/dist/electron-build/agents/runner-resolver.js.map +1 -0
  130. package/dist/electron-build/agents/session-store.js +294 -0
  131. package/dist/electron-build/agents/session-store.js.map +1 -0
  132. package/dist/electron-build/agents/shell-guard.js +465 -0
  133. package/dist/electron-build/agents/shell-guard.js.map +1 -0
  134. package/dist/electron-build/agents/shell-tool.js +102 -0
  135. package/dist/electron-build/agents/shell-tool.js.map +1 -0
  136. package/dist/electron-build/agents/skill-loader.js +216 -0
  137. package/dist/electron-build/agents/skill-loader.js.map +1 -0
  138. package/dist/electron-build/agents/skill-readiness.js +174 -0
  139. package/dist/electron-build/agents/skill-readiness.js.map +1 -0
  140. package/dist/electron-build/agents/skill-share.js +394 -0
  141. package/dist/electron-build/agents/skill-share.js.map +1 -0
  142. package/dist/electron-build/agents/skill-supervisor-link.js +75 -0
  143. package/dist/electron-build/agents/skill-supervisor-link.js.map +1 -0
  144. package/dist/electron-build/agents/skill-writer.js +347 -0
  145. package/dist/electron-build/agents/skill-writer.js.map +1 -0
  146. package/dist/electron-build/agents/skills-manager.js +763 -0
  147. package/dist/electron-build/agents/skills-manager.js.map +1 -0
  148. package/dist/electron-build/agents/supervisor-host.js +294 -0
  149. package/dist/electron-build/agents/supervisor-host.js.map +1 -0
  150. package/dist/electron-build/agents/task/local-seller.js +188 -0
  151. package/dist/electron-build/agents/task/local-seller.js.map +1 -0
  152. package/dist/electron-build/agents/task/report-card.js +152 -0
  153. package/dist/electron-build/agents/task/report-card.js.map +1 -0
  154. package/dist/electron-build/agents/task/resource-advisor.js +222 -0
  155. package/dist/electron-build/agents/task/resource-advisor.js.map +1 -0
  156. package/dist/electron-build/agents/task/task-budget.js +111 -0
  157. package/dist/electron-build/agents/task/task-budget.js.map +1 -0
  158. package/dist/electron-build/agents/task/task-runner.js +670 -0
  159. package/dist/electron-build/agents/task/task-runner.js.map +1 -0
  160. package/dist/electron-build/agents/task-state.js +266 -0
  161. package/dist/electron-build/agents/task-state.js.map +1 -0
  162. package/dist/electron-build/agents/tool-registry.js +141 -0
  163. package/dist/electron-build/agents/tool-registry.js.map +1 -0
  164. package/dist/electron-build/agents/treasury-bridge.js +165 -0
  165. package/dist/electron-build/agents/treasury-bridge.js.map +1 -0
  166. package/dist/electron-build/agents/user-questions.js +223 -0
  167. package/dist/electron-build/agents/user-questions.js.map +1 -0
  168. package/dist/electron-build/agents/verify-recipe.js +90 -0
  169. package/dist/electron-build/agents/verify-recipe.js.map +1 -0
  170. package/dist/electron-build/agents/workflow-engine.js +222 -0
  171. package/dist/electron-build/agents/workflow-engine.js.map +1 -0
  172. package/dist/electron-build/agents/workflow-pivot-loop.js +988 -0
  173. package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -0
  174. package/dist/electron-build/agents/write-staging.js +133 -0
  175. package/dist/electron-build/agents/write-staging.js.map +1 -0
  176. package/dist/electron-build/agents/x402/goal-run-bridge.js +115 -0
  177. package/dist/electron-build/agents/x402/goal-run-bridge.js.map +1 -0
  178. package/dist/electron-build/agents/x402/milestone-settlement.js +163 -0
  179. package/dist/electron-build/agents/x402/milestone-settlement.js.map +1 -0
  180. package/dist/electron-build/agents/x402/paid-info-protocol.js +274 -0
  181. package/dist/electron-build/agents/x402/paid-info-protocol.js.map +1 -0
  182. package/dist/electron-build/agents/x402/paid-info-store.js +409 -0
  183. package/dist/electron-build/agents/x402/paid-info-store.js.map +1 -0
  184. package/dist/electron-build/agents/x402/paid-info-tools.js +346 -0
  185. package/dist/electron-build/agents/x402/paid-info-tools.js.map +1 -0
  186. package/dist/electron-build/agents/x402/payment-recovery.js +330 -0
  187. package/dist/electron-build/agents/x402/payment-recovery.js.map +1 -0
  188. package/dist/electron-build/agents/x402/resource-contract.js +533 -0
  189. package/dist/electron-build/agents/x402/resource-contract.js.map +1 -0
  190. package/dist/electron-build/agents/x402/settlement-state.js +432 -0
  191. package/dist/electron-build/agents/x402/settlement-state.js.map +1 -0
  192. package/dist/electron-build/agents/x402/trade.js +294 -0
  193. package/dist/electron-build/agents/x402/trade.js.map +1 -0
  194. package/dist/electron-build/agents/x402/transaction-protocol.js +109 -0
  195. package/dist/electron-build/agents/x402/transaction-protocol.js.map +1 -0
  196. package/dist/electron-build/agents/x402/transaction-store.js +404 -0
  197. package/dist/electron-build/agents/x402/transaction-store.js.map +1 -0
  198. package/dist/electron-build/agents/x402/x402Pay.js +377 -0
  199. package/dist/electron-build/agents/x402/x402Pay.js.map +1 -0
  200. package/dist/electron-build/bollharness-integration/context-router-judgment.js +269 -0
  201. package/dist/electron-build/bollharness-integration/context-router-judgment.js.map +1 -0
  202. package/dist/electron-build/bollharness-integration/context-router.js +584 -0
  203. package/dist/electron-build/bollharness-integration/context-router.js.map +1 -0
  204. package/dist/electron-build/bollharness-integration/gate-state-machine.js +362 -0
  205. package/dist/electron-build/bollharness-integration/gate-state-machine.js.map +1 -0
  206. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js +136 -0
  207. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js.map +1 -0
  208. package/dist/electron-build/bollharness-integration/guard-checker.js +400 -0
  209. package/dist/electron-build/bollharness-integration/guard-checker.js.map +1 -0
  210. package/dist/electron-build/bollharness-integration/index.js +123 -0
  211. package/dist/electron-build/bollharness-integration/index.js.map +1 -0
  212. package/dist/electron-build/bollharness-integration/integration.js +531 -0
  213. package/dist/electron-build/bollharness-integration/integration.js.map +1 -0
  214. package/dist/electron-build/bollharness-integration/skill-adapter.js +608 -0
  215. package/dist/electron-build/bollharness-integration/skill-adapter.js.map +1 -0
  216. package/dist/electron-build/bootstrap/bootstrap.js +173 -0
  217. package/dist/electron-build/bootstrap/bootstrap.js.map +1 -0
  218. package/dist/electron-build/bootstrap/context-collector.js +358 -0
  219. package/dist/electron-build/bootstrap/context-collector.js.map +1 -0
  220. package/dist/electron-build/bootstrap/context-hierarchy.js +262 -0
  221. package/dist/electron-build/bootstrap/context-hierarchy.js.map +1 -0
  222. package/dist/electron-build/bootstrap/context-manager.js +211 -0
  223. package/dist/electron-build/bootstrap/context-manager.js.map +1 -0
  224. package/dist/electron-build/bootstrap/context-os.js +277 -0
  225. package/dist/electron-build/bootstrap/context-os.js.map +1 -0
  226. package/dist/electron-build/bootstrap/event-log.js +203 -0
  227. package/dist/electron-build/bootstrap/event-log.js.map +1 -0
  228. package/dist/electron-build/bootstrap/exhaust-scrubber.js +277 -0
  229. package/dist/electron-build/bootstrap/exhaust-scrubber.js.map +1 -0
  230. package/dist/electron-build/bootstrap/lifecycle-hooks.js +282 -0
  231. package/dist/electron-build/bootstrap/lifecycle-hooks.js.map +1 -0
  232. package/dist/electron-build/bootstrap/memory-compressor.js +377 -0
  233. package/dist/electron-build/bootstrap/memory-compressor.js.map +1 -0
  234. package/dist/electron-build/bootstrap/persona-loader.js +219 -0
  235. package/dist/electron-build/bootstrap/persona-loader.js.map +1 -0
  236. package/dist/electron-build/bootstrap/project-context.js +162 -0
  237. package/dist/electron-build/bootstrap/project-context.js.map +1 -0
  238. package/dist/electron-build/bootstrap/project-state.js +205 -0
  239. package/dist/electron-build/bootstrap/project-state.js.map +1 -0
  240. package/dist/electron-build/bootstrap/session-window.js +162 -0
  241. package/dist/electron-build/bootstrap/session-window.js.map +1 -0
  242. package/dist/electron-build/bootstrap/vector-index.js +291 -0
  243. package/dist/electron-build/bootstrap/vector-index.js.map +1 -0
  244. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +22 -0
  245. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js.map +1 -0
  246. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js +86 -0
  247. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js.map +1 -0
  248. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +37 -0
  249. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js.map +1 -0
  250. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +20 -0
  251. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js.map +1 -0
  252. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +29 -0
  253. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js.map +1 -0
  254. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +28 -0
  255. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js.map +1 -0
  256. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js +10 -0
  257. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js.map +1 -0
  258. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js +68 -0
  259. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js.map +1 -0
  260. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js +14 -0
  261. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js.map +1 -0
  262. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js +17 -0
  263. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js.map +1 -0
  264. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js +59 -0
  265. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js.map +1 -0
  266. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js +29 -0
  267. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js.map +1 -0
  268. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js +14 -0
  269. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js.map +1 -0
  270. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js +29 -0
  271. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js.map +1 -0
  272. package/dist/electron-build/constraints/index.js +11 -0
  273. package/dist/electron-build/constraints/index.js.map +1 -0
  274. package/dist/electron-build/context-compaction/auto-compact.js +182 -0
  275. package/dist/electron-build/context-compaction/auto-compact.js.map +1 -0
  276. package/dist/electron-build/context-compaction/budget-gate.js +32 -0
  277. package/dist/electron-build/context-compaction/budget-gate.js.map +1 -0
  278. package/dist/electron-build/context-compaction/budget-reduce.js +39 -0
  279. package/dist/electron-build/context-compaction/budget-reduce.js.map +1 -0
  280. package/dist/electron-build/context-compaction/context-collapse.js +71 -0
  281. package/dist/electron-build/context-compaction/context-collapse.js.map +1 -0
  282. package/dist/electron-build/context-compaction/index.js +38 -0
  283. package/dist/electron-build/context-compaction/index.js.map +1 -0
  284. package/dist/electron-build/context-compaction/microcompact.js +55 -0
  285. package/dist/electron-build/context-compaction/microcompact.js.map +1 -0
  286. package/dist/electron-build/context-compaction/pipeline.js +128 -0
  287. package/dist/electron-build/context-compaction/pipeline.js.map +1 -0
  288. package/dist/electron-build/context-compaction/snip.js +50 -0
  289. package/dist/electron-build/context-compaction/snip.js.map +1 -0
  290. package/dist/electron-build/context-compaction/token-estimator.js +40 -0
  291. package/dist/electron-build/context-compaction/token-estimator.js.map +1 -0
  292. package/dist/electron-build/context-compaction/types.js +21 -0
  293. package/dist/electron-build/context-compaction/types.js.map +1 -0
  294. package/dist/electron-build/cron/tick-lock.js +247 -0
  295. package/dist/electron-build/cron/tick-lock.js.map +1 -0
  296. package/dist/electron-build/documents/reader.js +131 -0
  297. package/dist/electron-build/documents/reader.js.map +1 -0
  298. package/dist/electron-build/documents/store.js +220 -0
  299. package/dist/electron-build/documents/store.js.map +1 -0
  300. package/dist/electron-build/external-engines/delegate-handle.js +76 -0
  301. package/dist/electron-build/external-engines/delegate-handle.js.map +1 -0
  302. package/dist/electron-build/external-engines/delegate.js +225 -0
  303. package/dist/electron-build/external-engines/delegate.js.map +1 -0
  304. package/dist/electron-build/external-engines/discovery.js +448 -0
  305. package/dist/electron-build/external-engines/discovery.js.map +1 -0
  306. package/dist/electron-build/external-engines/types.js +13 -0
  307. package/dist/electron-build/external-engines/types.js.map +1 -0
  308. package/dist/electron-build/hooks/hooks-engine.js +367 -0
  309. package/dist/electron-build/hooks/hooks-engine.js.map +1 -0
  310. package/dist/electron-build/judgeness/reflect.js +100 -0
  311. package/dist/electron-build/judgeness/reflect.js.map +1 -0
  312. package/dist/electron-build/judgeness/store.js +536 -0
  313. package/dist/electron-build/judgeness/store.js.map +1 -0
  314. package/dist/electron-build/judgeness/types.js +21 -0
  315. package/dist/electron-build/judgeness/types.js.map +1 -0
  316. package/dist/electron-build/llm/config-store.js +551 -0
  317. package/dist/electron-build/llm/config-store.js.map +1 -0
  318. package/dist/electron-build/llm/error-lessons.js +76 -0
  319. package/dist/electron-build/llm/error-lessons.js.map +1 -0
  320. package/dist/electron-build/llm/pi-ai.js +830 -0
  321. package/dist/electron-build/llm/pi-ai.js.map +1 -0
  322. package/dist/electron-build/llm/system-prompt/registry.js +318 -0
  323. package/dist/electron-build/llm/system-prompt/registry.js.map +1 -0
  324. package/dist/electron-build/llm/system-prompt/strip-hibsml.js +55 -0
  325. package/dist/electron-build/llm/system-prompt/strip-hibsml.js.map +1 -0
  326. package/dist/electron-build/locales/en.js +32 -0
  327. package/dist/electron-build/locales/en.js.map +1 -0
  328. package/dist/electron-build/locales/zh.js +30 -0
  329. package/dist/electron-build/locales/zh.js.map +1 -0
  330. package/dist/electron-build/lsp/lsp-manager.js +327 -0
  331. package/dist/electron-build/lsp/lsp-manager.js.map +1 -0
  332. package/dist/electron-build/lsp/lsp-tools.js +226 -0
  333. package/dist/electron-build/lsp/lsp-tools.js.map +1 -0
  334. package/dist/electron-build/migration/external-agent-migrator.js +451 -0
  335. package/dist/electron-build/migration/external-agent-migrator.js.map +1 -0
  336. package/dist/electron-build/network/agent-network.js +775 -0
  337. package/dist/electron-build/network/agent-network.js.map +1 -0
  338. package/dist/electron-build/network/goal-event-bridge.js +62 -0
  339. package/dist/electron-build/network/goal-event-bridge.js.map +1 -0
  340. package/dist/electron-build/network/iroh-integration.js +117 -0
  341. package/dist/electron-build/network/iroh-integration.js.map +1 -0
  342. package/dist/electron-build/network/iroh-transport.js +550 -0
  343. package/dist/electron-build/network/iroh-transport.js.map +1 -0
  344. package/dist/electron-build/network/p2p.js +1103 -0
  345. package/dist/electron-build/network/p2p.js.map +1 -0
  346. package/dist/electron-build/network/storage/adapters/json-adapter.js +416 -0
  347. package/dist/electron-build/network/storage/adapters/json-adapter.js.map +1 -0
  348. package/dist/electron-build/network/storage/types.js +18 -0
  349. package/dist/electron-build/network/storage/types.js.map +1 -0
  350. package/dist/electron-build/orbitdb/agent-tools.js +402 -0
  351. package/dist/electron-build/orbitdb/agent-tools.js.map +1 -0
  352. package/dist/electron-build/orbitdb/cid-database.js +284 -0
  353. package/dist/electron-build/orbitdb/cid-database.js.map +1 -0
  354. package/dist/electron-build/orbitdb/context-store.js +99 -0
  355. package/dist/electron-build/orbitdb/context-store.js.map +1 -0
  356. package/dist/electron-build/orbitdb/ipfs-node.js +120 -0
  357. package/dist/electron-build/orbitdb/ipfs-node.js.map +1 -0
  358. package/dist/electron-build/orbitdb/kanban-store.js +299 -0
  359. package/dist/electron-build/orbitdb/kanban-store.js.map +1 -0
  360. package/dist/electron-build/orbitdb/task-store.js +155 -0
  361. package/dist/electron-build/orbitdb/task-store.js.map +1 -0
  362. package/dist/electron-build/orbitdb/trajectory-store.js +194 -0
  363. package/dist/electron-build/orbitdb/trajectory-store.js.map +1 -0
  364. package/dist/electron-build/orbitdb/ui-cid.js +77 -0
  365. package/dist/electron-build/orbitdb/ui-cid.js.map +1 -0
  366. package/dist/electron-build/pi-ecosystem-a2ui/index.js +89 -0
  367. package/dist/electron-build/pi-ecosystem-a2ui/index.js.map +1 -0
  368. package/dist/electron-build/pi-ecosystem-goals/index.js +512 -0
  369. package/dist/electron-build/pi-ecosystem-goals/index.js.map +1 -0
  370. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js +325 -0
  371. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js.map +1 -0
  372. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js +492 -0
  373. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js.map +1 -0
  374. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js +167 -0
  375. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js.map +1 -0
  376. package/dist/electron-build/pi-ecosystem-judgment/decision.js +321 -0
  377. package/dist/electron-build/pi-ecosystem-judgment/decision.js.map +1 -0
  378. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js +175 -0
  379. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js.map +1 -0
  380. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js +232 -0
  381. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js.map +1 -0
  382. package/dist/electron-build/pi-ecosystem-judgment/distillation.js +304 -0
  383. package/dist/electron-build/pi-ecosystem-judgment/distillation.js.map +1 -0
  384. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js +176 -0
  385. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js.map +1 -0
  386. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js +65 -0
  387. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js.map +1 -0
  388. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js +808 -0
  389. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js.map +1 -0
  390. package/dist/electron-build/pi-ecosystem-judgment/index.js +508 -0
  391. package/dist/electron-build/pi-ecosystem-judgment/index.js.map +1 -0
  392. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js +334 -0
  393. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js.map +1 -0
  394. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js +228 -0
  395. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js.map +1 -0
  396. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js +598 -0
  397. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js.map +1 -0
  398. package/dist/electron-build/pi-ecosystem-mcp/index.js +643 -0
  399. package/dist/electron-build/pi-ecosystem-mcp/index.js.map +1 -0
  400. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js +116 -0
  401. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js.map +1 -0
  402. package/dist/electron-build/pi-ecosystem-subagents/index.js +352 -0
  403. package/dist/electron-build/pi-ecosystem-subagents/index.js.map +1 -0
  404. package/dist/electron-build/security/builtin-guards.js +133 -0
  405. package/dist/electron-build/security/builtin-guards.js.map +1 -0
  406. package/dist/electron-build/security/context-router-tool.js +111 -0
  407. package/dist/electron-build/security/context-router-tool.js.map +1 -0
  408. package/dist/electron-build/security/input-scanner.js +263 -0
  409. package/dist/electron-build/security/input-scanner.js.map +1 -0
  410. package/dist/electron-build/security/react-harness.js +148 -0
  411. package/dist/electron-build/security/react-harness.js.map +1 -0
  412. package/dist/electron-build/security/tool-gate.js +291 -0
  413. package/dist/electron-build/security/tool-gate.js.map +1 -0
  414. package/dist/electron-build/setup/setup-store.js +648 -0
  415. package/dist/electron-build/setup/setup-store.js.map +1 -0
  416. package/dist/electron-build/social/channels/ChannelManager.js +444 -0
  417. package/dist/electron-build/social/channels/ChannelManager.js.map +1 -0
  418. package/dist/electron-build/social/channels/DiapChannelBridge.js +451 -0
  419. package/dist/electron-build/social/channels/DiapChannelBridge.js.map +1 -0
  420. package/dist/electron-build/social/channels/InterestMatcher.js +135 -0
  421. package/dist/electron-build/social/channels/InterestMatcher.js.map +1 -0
  422. package/dist/electron-build/social/channels/types.js +21 -0
  423. package/dist/electron-build/social/channels/types.js.map +1 -0
  424. package/dist/electron-build/social/global-shared-context.js +368 -0
  425. package/dist/electron-build/social/global-shared-context.js.map +1 -0
  426. package/dist/electron-build/social/heartbeat.js +882 -0
  427. package/dist/electron-build/social/heartbeat.js.map +1 -0
  428. package/dist/electron-build/storage/did-catalog-bridge.js +314 -0
  429. package/dist/electron-build/storage/did-catalog-bridge.js.map +1 -0
  430. package/dist/electron-build/storage/did-catalog.js +272 -0
  431. package/dist/electron-build/storage/did-catalog.js.map +1 -0
  432. package/dist/electron-build/utils/auto-update.js +140 -558
  433. package/dist/electron-build/utils/auto-update.js.map +1 -1
  434. package/dist/electron-build/utils/module-context.js +98 -0
  435. package/dist/electron-build/utils/module-context.js.map +1 -0
  436. package/dist/electron-build/utils/runtime-bootstrap.js +745 -0
  437. package/dist/electron-build/utils/runtime-bootstrap.js.map +1 -0
  438. package/dist/electron-build/utils/update-manager.js +770 -0
  439. package/dist/electron-build/utils/update-manager.js.map +1 -0
  440. package/dist/electron-build/utils/update-state.js +406 -0
  441. package/dist/electron-build/utils/update-state.js.map +1 -0
  442. package/dist/electron-build/utils/version-info.js +562 -0
  443. package/dist/electron-build/utils/version-info.js.map +1 -0
  444. package/dist/electron-build/web/i18n.js +146 -0
  445. package/dist/electron-build/web/i18n.js.map +1 -0
  446. package/dist/electron-build/web/routes-x402-info.js +232 -0
  447. package/dist/electron-build/web/routes-x402-info.js.map +1 -0
  448. package/dist/electron-build/web/server-storage.js +390 -0
  449. package/dist/electron-build/web/server-storage.js.map +1 -0
  450. package/dist/electron-build/web/server-types.js +52 -0
  451. package/dist/electron-build/web/server-types.js.map +1 -0
  452. package/dist/electron-build/web/task-deps.js +41 -0
  453. package/dist/electron-build/web/task-deps.js.map +1 -0
  454. package/dist/index.js +58 -27
  455. package/dist/llm/system-prompt/registry.js +6 -3
  456. package/dist/security/tool-gate.js +4 -0
  457. package/dist/utils/auto-update.js +138 -525
  458. package/dist/utils/module-context.js +59 -0
  459. package/dist/utils/runtime-bootstrap.js +682 -0
  460. package/dist/utils/update-cli.js +82 -0
  461. package/dist/utils/update-health.js +401 -0
  462. package/dist/utils/update-manager.js +716 -0
  463. package/dist/utils/update-state.js +353 -0
  464. package/dist/utils/version-info.js +510 -0
  465. package/dist/web/mobile-contacts.js +329 -0
  466. package/dist/web/mobile-core.js +481 -15
  467. package/dist/web/mobile.html +32 -0
  468. package/dist/web/mobile.js +139 -0
  469. package/dist/web/routes-contacts.js +420 -0
  470. package/dist/web/server.js +5 -0
  471. package/package.json +1 -1
  472. package/scripts/build-cli.js +32 -151
  473. package/scripts/postinstall.js +153 -76
@@ -0,0 +1,775 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.agentMessaging = exports.AgentMessaging = exports.agentRegistry = exports.AgentRegistry = void 0;
37
+ exports.didKeyMatchesPublicKey = didKeyMatchesPublicKey;
38
+ exports.initializeAgentNetwork = initializeAgentNetwork;
39
+ exports.broadcastOwnAddress = broadcastOwnAddress;
40
+ exports.findAndConnectToAgent = findAndConnectToAgent;
41
+ exports.sendMessageToAgent = sendMessageToAgent;
42
+ exports.sendUnverifiedMessageToAgent = sendUnverifiedMessageToAgent;
43
+ const fs = __importStar(require("fs/promises"));
44
+ const path = __importStar(require("path"));
45
+ const multiaddr_1 = require("@multiformats/multiaddr");
46
+ const sdk_1 = require("@diap/sdk");
47
+ const p2p_js_1 = require("./p2p.js");
48
+ const AGENT_REGISTRY_PATH = path.join(process.env.HOME || '/tmp', '.bolloon', 'agent-registry.json');
49
+ const KEY_PAIR_PATH = path.join(process.env.HOME || '/tmp', '.bolloon', 'keypair.json');
50
+ const ADDRESS_BROADCAST_INTERVAL = 5 * 60 * 1000;
51
+ const RELAY_RETRY_INTERVAL = 30000;
52
+ const MAX_RELAY_HOPS = 3;
53
+ const MESSAGE_TIMESTAMP_TOLERANCE = 24 * 60 * 60 * 1000;
54
+ const SIGNED_MESSAGE_TYPES = ['task', 'response', 'discovery', 'address_broadcast'];
55
+ /**
56
+ * 2026-09-15: did:key:z6Mk… 与 Ed25519 公钥字节是否一致。
57
+ *
58
+ * DID 由公钥派生 (did:key 规范: multibase base58btc of 0xed01 || rawKey), 所以首次接触时
59
+ * 自携公钥**无法伪造**: 冒充者换了公钥就解码不出同一个 DID。
60
+ * 返回: true 一致 / false 不一致 (疑似冒充) / null 非 did:key 形态 (无法判定, 不阻断, 交给签名验证)。
61
+ */
62
+ async function didKeyMatchesPublicKey(did, publicKeyHex) {
63
+ if (!/^did:key:z/.test(did))
64
+ return null;
65
+ try {
66
+ const { base58btc } = await Promise.resolve().then(() => __importStar(require('multiformats/bases/base58')));
67
+ const decoded = base58btc.decode(did.slice('did:key:'.length));
68
+ // 34 字节 = 2 字节 multicodec 前缀 (0xed01 = ed25519-pub) + 32 字节公钥
69
+ if (decoded.length !== 34)
70
+ return false;
71
+ if (decoded[0] !== 0xed || decoded[1] !== 0x01)
72
+ return false;
73
+ const claimed = Buffer.from(publicKeyHex, 'hex');
74
+ if (claimed.length !== 32)
75
+ return false;
76
+ return Buffer.compare(Buffer.from(decoded.slice(2)), claimed) === 0;
77
+ }
78
+ catch {
79
+ return null; // 解码失败 → 不判定 (不当成冒充, 也不放行: 签名仍要过)
80
+ }
81
+ }
82
+ class AgentRegistry {
83
+ agents = new Map();
84
+ registryPath;
85
+ ownEndpoint = null;
86
+ keyPair = null;
87
+ keyPairPath;
88
+ relayMode = false;
89
+ pendingRelayMessages = new Map();
90
+ constructor() {
91
+ this.registryPath = AGENT_REGISTRY_PATH;
92
+ this.keyPairPath = KEY_PAIR_PATH;
93
+ }
94
+ async initialize() {
95
+ await fs.mkdir(path.dirname(this.registryPath), { recursive: true });
96
+ await this.loadRegistry();
97
+ await this.loadOrCreateKeyPair();
98
+ }
99
+ async loadOrCreateKeyPair() {
100
+ try {
101
+ const data = await fs.readFile(this.keyPairPath, 'utf-8');
102
+ const keyFile = JSON.parse(data);
103
+ this.keyPair = {
104
+ privateKey: Buffer.from(keyFile.privateKey, 'hex'),
105
+ publicKey: Buffer.from(keyFile.publicKey, 'hex'),
106
+ did: keyFile.did
107
+ };
108
+ console.log(`[Registry] Loaded keypair: ${this.keyPair.did.substring(0, 20)}...`);
109
+ }
110
+ catch {
111
+ console.log(`[Registry] Generating new keypair...`);
112
+ const kp = sdk_1.KeyManager.generate();
113
+ this.keyPair = {
114
+ privateKey: kp.privateKey,
115
+ publicKey: kp.publicKey,
116
+ did: kp.did
117
+ };
118
+ await this.saveKeyPair();
119
+ console.log(`[Registry] New keypair created: ${this.keyPair.did.substring(0, 20)}...`);
120
+ }
121
+ }
122
+ async saveKeyPair() {
123
+ if (!this.keyPair)
124
+ return;
125
+ const keyFile = {
126
+ privateKey: Buffer.from(this.keyPair.privateKey).toString('hex'),
127
+ publicKey: Buffer.from(this.keyPair.publicKey).toString('hex'),
128
+ did: this.keyPair.did,
129
+ createdAt: new Date().toISOString()
130
+ };
131
+ await fs.writeFile(this.keyPairPath, JSON.stringify(keyFile, null, 2));
132
+ }
133
+ getKeyPair() {
134
+ return this.keyPair;
135
+ }
136
+ async loadRegistry() {
137
+ try {
138
+ const data = await fs.readFile(this.registryPath, 'utf-8');
139
+ const entries = JSON.parse(data);
140
+ for (const entry of entries) {
141
+ this.agents.set(entry.did, entry);
142
+ }
143
+ console.log(`[Registry] Loaded ${entries.length} known agents`);
144
+ }
145
+ catch {
146
+ console.log(`[Registry] No existing registry found`);
147
+ }
148
+ }
149
+ async saveRegistry() {
150
+ try {
151
+ const entries = Array.from(this.agents.values());
152
+ await fs.writeFile(this.registryPath, JSON.stringify(entries, null, 2));
153
+ }
154
+ catch (e) {
155
+ console.warn(`[Registry] Failed to save:`, e);
156
+ }
157
+ }
158
+ setOwnEndpoint(endpoint) {
159
+ this.ownEndpoint = endpoint;
160
+ if (this.keyPair) {
161
+ endpoint.did = this.keyPair.did;
162
+ endpoint.publicKey = Buffer.from(this.keyPair.publicKey).toString('hex');
163
+ }
164
+ this.registerAgent(endpoint);
165
+ }
166
+ getOwnEndpoint() {
167
+ return this.ownEndpoint;
168
+ }
169
+ async signMessage(data) {
170
+ if (!this.keyPair) {
171
+ console.warn(`[Registry] No keypair available for signing`);
172
+ return null;
173
+ }
174
+ try {
175
+ const signature = await sdk_1.KeyManager.sign(this.keyPair, new TextEncoder().encode(data));
176
+ return signature;
177
+ }
178
+ catch (e) {
179
+ console.warn(`[Registry] Signing failed:`, e);
180
+ return null;
181
+ }
182
+ }
183
+ async verifySignature(did, data, signature) {
184
+ try {
185
+ const agent = this.agents.get(did);
186
+ if (!agent || !agent.publicKey) {
187
+ console.warn(`[Registry] Unknown agent or missing public key: ${did.substring(0, 20)}`);
188
+ return false;
189
+ }
190
+ const publicKey = Buffer.from(agent.publicKey, 'hex');
191
+ const keyPair = { privateKey: new Uint8Array(32), publicKey, did };
192
+ const isValid = await sdk_1.KeyManager.verify(keyPair, new TextEncoder().encode(data), signature);
193
+ if (!isValid) {
194
+ console.warn(`[Registry] Invalid signature from ${did.substring(0, 20)}`);
195
+ }
196
+ return isValid;
197
+ }
198
+ catch (e) {
199
+ console.warn(`[Registry] Verification failed:`, e);
200
+ return false;
201
+ }
202
+ }
203
+ registerAgent(endpoint) {
204
+ const entry = {
205
+ did: endpoint.did,
206
+ name: endpoint.name,
207
+ peerId: endpoint.peerId,
208
+ multiaddrs: endpoint.multiaddrs,
209
+ registeredAt: Date.now(),
210
+ lastSeen: Date.now(),
211
+ lastBroadcast: 0,
212
+ publicKey: endpoint.publicKey || ''
213
+ };
214
+ const existing = this.agents.get(endpoint.did);
215
+ if (existing) {
216
+ entry.registeredAt = existing.registeredAt;
217
+ entry.lastBroadcast = existing.lastBroadcast;
218
+ if (endpoint.publicKey && !existing.publicKey) {
219
+ entry.publicKey = endpoint.publicKey;
220
+ }
221
+ }
222
+ this.agents.set(endpoint.did, entry);
223
+ this.saveRegistry();
224
+ console.log(`[Registry] Registered agent: ${endpoint.name} (${endpoint.did.substring(0, 20)}...)`);
225
+ }
226
+ getAgent(did) {
227
+ return this.agents.get(did);
228
+ }
229
+ getAgentByPeerId(peerId) {
230
+ for (const agent of this.agents.values()) {
231
+ if (agent.peerId === peerId) {
232
+ return agent;
233
+ }
234
+ }
235
+ return undefined;
236
+ }
237
+ getAllAgents() {
238
+ return Array.from(this.agents.values());
239
+ }
240
+ getOnlineAgents(timeoutMs = 10 * 60 * 1000) {
241
+ const now = Date.now();
242
+ return Array.from(this.agents.values()).filter(a => now - a.lastSeen < timeoutMs);
243
+ }
244
+ updateLastSeen(did) {
245
+ const agent = this.agents.get(did);
246
+ if (agent) {
247
+ agent.lastSeen = Date.now();
248
+ this.saveRegistry();
249
+ }
250
+ }
251
+ removeAgent(did) {
252
+ this.agents.delete(did);
253
+ this.saveRegistry();
254
+ }
255
+ async createSignedBroadcast() {
256
+ if (!this.ownEndpoint || !this.keyPair)
257
+ return null;
258
+ const now = Date.now();
259
+ const entry = this.agents.get(this.ownEndpoint.did);
260
+ if (entry && now - entry.lastBroadcast < ADDRESS_BROADCAST_INTERVAL) {
261
+ return null;
262
+ }
263
+ const relayAddr = p2p_js_1.p2pNetwork.getRelayAddress?.() || null;
264
+ const ownPublicKeyHex = Buffer.from(this.keyPair.publicKey).toString('hex');
265
+ const broadcastData = JSON.stringify({
266
+ type: 'address_broadcast',
267
+ from: this.keyPair.did,
268
+ name: this.ownEndpoint.name,
269
+ peerId: this.ownEndpoint.peerId,
270
+ multiaddrs: this.ownEndpoint.multiaddrs,
271
+ relayAddr: relayAddr || undefined,
272
+ canRelay: relayAddr ? true : false,
273
+ publicKey: ownPublicKeyHex,
274
+ timestamp: now
275
+ });
276
+ const signature = await this.signMessage(broadcastData);
277
+ if (!signature)
278
+ return null;
279
+ const broadcast = {
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
+ publicKey: ownPublicKeyHex,
288
+ timestamp: now,
289
+ signature: Buffer.from(signature).toString('hex')
290
+ };
291
+ if (entry) {
292
+ entry.lastBroadcast = now;
293
+ }
294
+ return broadcast;
295
+ }
296
+ async handleAddressBroadcast(broadcast) {
297
+ if (!this.keyPair || broadcast.from === this.keyPair.did) {
298
+ return false;
299
+ }
300
+ if (Math.abs(broadcast.timestamp - Date.now()) > MESSAGE_TIMESTAMP_TOLERANCE) {
301
+ console.log(`[Registry] Stale broadcast from ${broadcast.from.substring(0, 20)}`);
302
+ return false;
303
+ }
304
+ const broadcastData = JSON.stringify({
305
+ type: 'address_broadcast',
306
+ from: broadcast.from,
307
+ name: broadcast.name,
308
+ peerId: broadcast.peerId,
309
+ multiaddrs: broadcast.multiaddrs,
310
+ relayAddr: broadcast.relayAddr,
311
+ canRelay: broadcast.canRelay,
312
+ publicKey: broadcast.publicKey,
313
+ timestamp: broadcast.timestamp
314
+ });
315
+ const signature = Buffer.from(broadcast.signature, 'hex');
316
+ const known = this.agents.get(broadcast.from);
317
+ // 2026-09-15: 首次接触 (全球化去中心网络里全是陌生人) —— 原来只认「registry 里已有的公钥」,
318
+ // 陌生人第一次广播必然验签失败 → 广播被丢弃 → 陌生人永远发现不了彼此 (入网文档 §7 的链路实际不通).
319
+ // 现在: 未知 DID 时用广播自带 publicKey 自证 (TOFU: 首次接触信任自携公钥);
320
+ // did:key 额外做 DID↔公钥 派生一致性检查 (DID 本身就是公钥, 自携公钥无法伪造).
321
+ let verifyKeyHex = known?.publicKey || undefined;
322
+ if (!verifyKeyHex) {
323
+ const claimed = String(broadcast.publicKey || '');
324
+ if (!claimed) {
325
+ console.warn(`[Registry] Unknown agent ${broadcast.from.substring(0, 20)}… 且广播未携带 publicKey → 无法验证, 拒收`);
326
+ return false;
327
+ }
328
+ const binding = await didKeyMatchesPublicKey(broadcast.from, claimed);
329
+ if (binding === false) {
330
+ console.warn(`[Registry] did:key 与自带公钥不匹配 (疑似冒充) from=${broadcast.from.substring(0, 24)}… → 拒收`);
331
+ return false;
332
+ }
333
+ verifyKeyHex = claimed;
334
+ }
335
+ else if (broadcast.publicKey && broadcast.publicKey !== verifyKeyHex) {
336
+ // 已认识这个 DID, 却报出另一把公钥 → 身份接管尝试, 拒收 (不覆盖已存公钥)
337
+ console.warn(`[Registry] ${broadcast.from.substring(0, 20)}… 广播的公钥与已知公钥不一致 → 拒收 (不覆盖)`);
338
+ return false;
339
+ }
340
+ const isValid = await this.verifySignatureWithKey(broadcast.from, verifyKeyHex, broadcastData, signature);
341
+ if (!isValid) {
342
+ console.warn(`[Registry] Invalid broadcast signature from ${broadcast.from.substring(0, 20)}`);
343
+ return false;
344
+ }
345
+ const entry = {
346
+ did: broadcast.from,
347
+ name: broadcast.name,
348
+ peerId: broadcast.peerId,
349
+ multiaddrs: broadcast.multiaddrs,
350
+ registeredAt: Date.now(),
351
+ lastSeen: broadcast.timestamp,
352
+ lastBroadcast: 0,
353
+ // 2026-09-15 修复: 原来写的是**自己**的公钥 (this.keyPair.publicKey) →
354
+ // 对端后续任何签名消息都验不过 (拿我方公钥去验对方签名), 属于把对端身份写坏.
355
+ publicKey: verifyKeyHex,
356
+ relayAddr: broadcast.relayAddr,
357
+ canRelay: broadcast.canRelay
358
+ };
359
+ const existing = this.agents.get(broadcast.from);
360
+ if (existing) {
361
+ entry.registeredAt = existing.registeredAt;
362
+ entry.lastBroadcast = existing.lastBroadcast;
363
+ if (existing.publicKey)
364
+ entry.publicKey = existing.publicKey; // 已有公钥永不覆盖
365
+ }
366
+ this.agents.set(broadcast.from, entry);
367
+ this.saveRegistry();
368
+ console.log(`[Registry] Verified broadcast from: ${broadcast.name} (${broadcast.from.substring(0, 20)}...) ${broadcast.canRelay ? '[Relay Capable]' : ''}${known ? '' : ' [首次接触 TOFU]'}`);
369
+ return true;
370
+ }
371
+ /** 用给定公钥 (hex) 验签 — 首次接触路径用 (未知 DID 时 registry 里没公钥) */
372
+ async verifySignatureWithKey(did, publicKeyHex, data, signature) {
373
+ try {
374
+ const publicKey = Buffer.from(publicKeyHex, 'hex');
375
+ if (publicKey.length !== 32) {
376
+ console.warn(`[Registry] publicKey 长度非法 (${publicKey.length} 字节, 期望 32): ${did.substring(0, 20)}…`);
377
+ return false;
378
+ }
379
+ const keyPair = { privateKey: new Uint8Array(32), publicKey, did };
380
+ return await sdk_1.KeyManager.verify(keyPair, new TextEncoder().encode(data), signature);
381
+ }
382
+ catch (e) {
383
+ console.warn(`[Registry] Verification with provided key failed:`, e);
384
+ return false;
385
+ }
386
+ }
387
+ async createSignedMessage(type, payload) {
388
+ if (!this.keyPair || !this.ownEndpoint)
389
+ return null;
390
+ const messageData = JSON.stringify({
391
+ type,
392
+ from: this.keyPair.did,
393
+ name: this.ownEndpoint.name,
394
+ payload,
395
+ timestamp: Date.now()
396
+ });
397
+ const signature = await this.signMessage(messageData);
398
+ if (!signature)
399
+ return null;
400
+ return {
401
+ type,
402
+ from: this.keyPair.did,
403
+ name: this.ownEndpoint.name,
404
+ payload,
405
+ timestamp: Date.now(),
406
+ signature: Buffer.from(signature).toString('hex')
407
+ };
408
+ }
409
+ async verifySignedMessage(msg) {
410
+ if (!this.keyPair || msg.from === this.keyPair.did) {
411
+ return false;
412
+ }
413
+ if (Math.abs(msg.timestamp - Date.now()) > MESSAGE_TIMESTAMP_TOLERANCE) {
414
+ console.log(`[Registry] Stale message from ${msg.from.substring(0, 20)}`);
415
+ return false;
416
+ }
417
+ const messageData = JSON.stringify({
418
+ type: msg.type,
419
+ from: msg.from,
420
+ name: msg.name,
421
+ payload: msg.payload,
422
+ timestamp: msg.timestamp
423
+ });
424
+ const signature = Buffer.from(msg.signature, 'hex');
425
+ return this.verifySignature(msg.from, messageData, signature);
426
+ }
427
+ async connectToAgent(did) {
428
+ const agent = this.agents.get(did);
429
+ if (!agent) {
430
+ console.log(`[Registry] Unknown agent: ${did}`);
431
+ return false;
432
+ }
433
+ if (!agent.multiaddrs || agent.multiaddrs.length === 0) {
434
+ console.log(`[Registry] No addresses for agent: ${agent.name}`);
435
+ if (!agent.relayAddr) {
436
+ return false;
437
+ }
438
+ console.log(`[Registry] Agent has relay address, will try relay connection`);
439
+ }
440
+ let connected = false;
441
+ if (agent.multiaddrs && agent.multiaddrs.length > 0) {
442
+ for (const addr of agent.multiaddrs) {
443
+ try {
444
+ const ma = (0, multiaddr_1.multiaddr)(addr);
445
+ const node = p2p_js_1.p2pNetwork.node;
446
+ if (node) {
447
+ await node.dial(ma);
448
+ connected = true;
449
+ console.log(`[Registry] Direct connection to ${agent.name} at ${addr}`);
450
+ break;
451
+ }
452
+ }
453
+ catch (e) {
454
+ console.warn(`[Registry] Failed to connect directly to ${addr}:`, e);
455
+ }
456
+ }
457
+ }
458
+ if (!connected && agent.relayAddr) {
459
+ console.log(`[Registry] Trying relay connection to ${agent.name} via ${agent.relayAddr}`);
460
+ try {
461
+ const node = p2p_js_1.p2pNetwork.node;
462
+ if (node) {
463
+ const ma = (0, multiaddr_1.multiaddr)(`${agent.relayAddr}/p2p/${agent.peerId}`);
464
+ await node.dial(ma);
465
+ connected = true;
466
+ console.log(`[Registry] Relay connection to ${agent.name} established`);
467
+ }
468
+ }
469
+ catch (e) {
470
+ console.warn(`[Registry] Failed to connect via relay:`, e);
471
+ }
472
+ }
473
+ if (!connected && agent.canRelay) {
474
+ const relayPeers = this.findRelayPeers();
475
+ for (const relay of relayPeers) {
476
+ if (relay.peerId === agent.peerId)
477
+ continue;
478
+ try {
479
+ console.log(`[Registry] Trying to relay via ${relay.name} (${relay.peerId.substring(0, 12)}...)`);
480
+ const relayAddr = relay.relayAddr || relay.multiaddrs?.[0];
481
+ if (relayAddr) {
482
+ const node = p2p_js_1.p2pNetwork.node;
483
+ if (node) {
484
+ const ma = (0, multiaddr_1.multiaddr)(`${relayAddr}/p2p/${agent.peerId}`);
485
+ await node.dial(ma);
486
+ connected = true;
487
+ console.log(`[Registry] Connection to ${agent.name} via relay ${relay.name}`);
488
+ break;
489
+ }
490
+ }
491
+ }
492
+ catch (e) {
493
+ console.warn(`[Registry] Failed to relay via ${relay.name}:`, e);
494
+ }
495
+ }
496
+ }
497
+ if (connected) {
498
+ this.updateLastSeen(did);
499
+ p2p_js_1.p2pNetwork.addPersistentPeer({
500
+ peerId: agent.peerId,
501
+ multiaddrs: agent.multiaddrs,
502
+ did: agent.did,
503
+ name: agent.name,
504
+ relayAddr: agent.relayAddr,
505
+ canRelay: agent.canRelay
506
+ });
507
+ }
508
+ return connected;
509
+ }
510
+ findRelayPeers() {
511
+ const now = Date.now();
512
+ return Array.from(this.agents.values()).filter(a => a.canRelay && a.relayAddr && now - a.lastSeen < 30 * 60 * 1000);
513
+ }
514
+ async relayMessage(toDid, data, fromDid, hops = 0) {
515
+ if (hops >= MAX_RELAY_HOPS) {
516
+ console.log(`[Registry] Max relay hops reached for ${toDid}`);
517
+ return false;
518
+ }
519
+ const targetAgent = this.agents.get(toDid);
520
+ if (!targetAgent) {
521
+ console.log(`[Registry] Unknown relay target: ${toDid}`);
522
+ return false;
523
+ }
524
+ try {
525
+ const peerId = targetAgent.peerId;
526
+ const relayMsg = new TextEncoder().encode(`RELAY:${fromDid}|${hops + 1}|${new TextDecoder().decode(data)}`);
527
+ await p2p_js_1.p2pNetwork.sendMessage(peerId, 'relay', new TextDecoder().decode(relayMsg));
528
+ return true;
529
+ }
530
+ catch (e) {
531
+ console.warn(`[Registry] Relay failed to ${toDid}:`, e);
532
+ return false;
533
+ }
534
+ }
535
+ getConnectionInfo() {
536
+ if (!this.ownEndpoint)
537
+ return null;
538
+ return {
539
+ did: this.ownEndpoint.did,
540
+ name: this.ownEndpoint.name,
541
+ peerId: this.ownEndpoint.peerId,
542
+ multiaddrs: this.ownEndpoint.multiaddrs
543
+ };
544
+ }
545
+ }
546
+ exports.AgentRegistry = AgentRegistry;
547
+ exports.agentRegistry = new AgentRegistry();
548
+ class AgentMessaging {
549
+ registry;
550
+ messageHandlers = new Map();
551
+ constructor(registry) {
552
+ this.registry = registry;
553
+ }
554
+ registerHandler(type, handler) {
555
+ this.messageHandlers.set(type, handler);
556
+ }
557
+ async sendSignedToAgent(did, type, payload) {
558
+ const agent = this.registry.getAgent(did);
559
+ if (!agent) {
560
+ console.log(`[Messaging] Unknown agent: ${did}`);
561
+ return false;
562
+ }
563
+ const signedMsg = await this.registry.createSignedMessage(type, payload);
564
+ if (!signedMsg) {
565
+ console.warn(`[Messaging] Failed to create signed message`);
566
+ return false;
567
+ }
568
+ try {
569
+ const messageStr = JSON.stringify(signedMsg);
570
+ await p2p_js_1.p2pNetwork.sendMessage(agent.peerId, 'signed', messageStr);
571
+ return true;
572
+ }
573
+ catch (e) {
574
+ console.warn(`[Messaging] Failed to send to ${did}:`, e);
575
+ return false;
576
+ }
577
+ }
578
+ async sendToAgent(did, type, payload) {
579
+ const agent = this.registry.getAgent(did);
580
+ if (!agent) {
581
+ console.log(`[Messaging] Unknown agent: ${did}`);
582
+ return false;
583
+ }
584
+ const message = `${type}:${payload}`;
585
+ try {
586
+ await p2p_js_1.p2pNetwork.sendMessage(agent.peerId, type, payload);
587
+ return true;
588
+ }
589
+ catch (e) {
590
+ console.warn(`[Messaging] Failed to send to ${did}:`, e);
591
+ return false;
592
+ }
593
+ }
594
+ async broadcastToAll(type, payload) {
595
+ const agents = this.registry.getOnlineAgents();
596
+ const ownEndpoint = this.registry.getOwnEndpoint();
597
+ for (const agent of agents) {
598
+ if (agent.did === ownEndpoint?.did)
599
+ continue;
600
+ try {
601
+ await p2p_js_1.p2pNetwork.sendMessage(agent.peerId, type, payload);
602
+ }
603
+ catch (e) {
604
+ console.warn(`[Messaging] Broadcast failed to ${agent.name}:`, e);
605
+ }
606
+ }
607
+ }
608
+ parseMessage(data) {
609
+ const messageStr = new TextDecoder().decode(data);
610
+ if (messageStr.startsWith('RELAY:')) {
611
+ const parts = messageStr.substring(6).split('|');
612
+ if (parts.length >= 3) {
613
+ const fromDid = parts[0];
614
+ const hops = parseInt(parts[1], 10);
615
+ const innerMessage = parts.slice(2).join('|');
616
+ return this.parseInnerMessage(innerMessage, fromDid, true, hops);
617
+ }
618
+ }
619
+ return this.parseInnerMessage(messageStr, undefined, false);
620
+ }
621
+ parseInnerMessage(messageStr, relayFrom, isRelay = false, relayHops = 0) {
622
+ if (messageStr.startsWith('DID:')) {
623
+ const didEndIdx = messageStr.indexOf('|');
624
+ if (didEndIdx > 0) {
625
+ const did = messageStr.substring(4, didEndIdx);
626
+ const afterDid = messageStr.substring(didEndIdx + 1);
627
+ const colonIdx = afterDid.indexOf(':');
628
+ if (colonIdx > 0) {
629
+ return {
630
+ type: afterDid.substring(0, colonIdx),
631
+ payload: afterDid.substring(colonIdx + 1),
632
+ did: relayFrom || did,
633
+ isRelay,
634
+ relayHops
635
+ };
636
+ }
637
+ return { type: afterDid, payload: '', did: relayFrom || did, isRelay, relayHops };
638
+ }
639
+ }
640
+ const colonIdx = messageStr.indexOf(':');
641
+ if (colonIdx > 0) {
642
+ return {
643
+ type: messageStr.substring(0, colonIdx),
644
+ payload: messageStr.substring(colonIdx + 1),
645
+ did: relayFrom,
646
+ isRelay,
647
+ relayHops
648
+ };
649
+ }
650
+ return { type: messageStr, payload: '', did: relayFrom, isRelay, relayHops };
651
+ }
652
+ async dispatchSignedMessage(data, fromPeerId) {
653
+ try {
654
+ const messageStr = new TextDecoder().decode(data);
655
+ const signedMsg = JSON.parse(messageStr);
656
+ if (!signedMsg.type || !signedMsg.from || !signedMsg.signature) {
657
+ console.warn(`[Messaging] Invalid signed message format`);
658
+ return false;
659
+ }
660
+ const isValid = await this.registry.verifySignedMessage(signedMsg);
661
+ if (!isValid) {
662
+ console.warn(`[Messaging] Signature verification failed for ${signedMsg.from.substring(0, 20)}`);
663
+ return false;
664
+ }
665
+ // 2026-09-16 (2-C.4): 目标关联的真实外部事件 —— 签名已通过校验, 这里再按
666
+ // 来源 / correlation / 过期 / eventId 去重做一次严格匹配, 只唤醒"正在等这个事件"的 Goal。
667
+ // **不在这里启动 agent**: 只写事实 + 唤醒, 由 Supervisor 下一轮继续。
668
+ try {
669
+ const { tryDeliverGoalEvent } = await Promise.resolve().then(() => __importStar(require('./goal-event-bridge.js')));
670
+ await tryDeliverGoalEvent(signedMsg, fromPeerId);
671
+ }
672
+ catch (e) {
673
+ console.warn(`[Messaging] goal event bridge 失败 (不影响普通消息):`, e?.message);
674
+ }
675
+ const handler = this.messageHandlers.get(signedMsg.type);
676
+ if (handler) {
677
+ handler(data, fromPeerId, signedMsg.from);
678
+ }
679
+ return true;
680
+ }
681
+ catch (e) {
682
+ console.warn(`[Messaging] Failed to dispatch signed message:`, e);
683
+ return false;
684
+ }
685
+ }
686
+ dispatchMessage(data, fromPeerId) {
687
+ const parsed = this.parseMessage(data);
688
+ if (!parsed)
689
+ return;
690
+ const handler = this.messageHandlers.get(parsed.type);
691
+ if (handler) {
692
+ handler(data, fromPeerId, parsed.did);
693
+ }
694
+ }
695
+ }
696
+ exports.AgentMessaging = AgentMessaging;
697
+ exports.agentMessaging = new AgentMessaging(exports.agentRegistry);
698
+ async function initializeAgentNetwork(ownDid, ownName, peerId, multiaddrs) {
699
+ await exports.agentRegistry.initialize();
700
+ const keyPair = exports.agentRegistry.getKeyPair();
701
+ const publicKeyHex = keyPair ? Buffer.from(keyPair.publicKey).toString('hex') : undefined;
702
+ exports.agentRegistry.setOwnEndpoint({
703
+ did: keyPair?.did || ownDid,
704
+ name: ownName,
705
+ peerId,
706
+ multiaddrs,
707
+ publicKey: publicKeyHex
708
+ });
709
+ p2p_js_1.p2pNetwork.setOwnDid(keyPair?.did || ownDid);
710
+ p2p_js_1.p2pNetwork.onMessage('signed', async (data, from, did) => {
711
+ await exports.agentMessaging.dispatchSignedMessage(data, from);
712
+ });
713
+ p2p_js_1.p2pNetwork.onMessage('address_broadcast', async (data, from, did) => {
714
+ try {
715
+ const messageStr = new TextDecoder().decode(data);
716
+ const broadcast = JSON.parse(messageStr);
717
+ if (broadcast.type === 'address_broadcast') {
718
+ await exports.agentRegistry.handleAddressBroadcast(broadcast);
719
+ }
720
+ }
721
+ catch (e) {
722
+ console.warn(`[AgentNetwork] Failed to handle address broadcast:`, e);
723
+ }
724
+ });
725
+ p2p_js_1.p2pNetwork.onMessage('relay', (data, from, did) => {
726
+ try {
727
+ const relayMsg = new TextDecoder().decode(data);
728
+ const relayMatch = relayMsg.match(/^RELAY:(.+?)\|(\d+)\|(.+)$/);
729
+ if (relayMatch) {
730
+ const [, targetDid, hopsStr, innerData] = relayMatch;
731
+ const hops = parseInt(hopsStr, 10);
732
+ if (hops < MAX_RELAY_HOPS) {
733
+ exports.agentRegistry.relayMessage(targetDid, new TextEncoder().encode(innerData), did || from, hops);
734
+ }
735
+ }
736
+ }
737
+ catch (e) {
738
+ console.warn(`[AgentNetwork] Failed to handle relay:`, e);
739
+ }
740
+ });
741
+ p2p_js_1.p2pNetwork.onMessage('discovery', async (data, from, did) => {
742
+ try {
743
+ const messageStr = new TextDecoder().decode(data);
744
+ const discovery = JSON.parse(messageStr);
745
+ if (discovery.type === 'discovery') {
746
+ const isValid = await exports.agentRegistry.verifySignature(discovery.from, JSON.stringify({ ...discovery, signature: undefined }), Buffer.from(discovery.signature, 'hex'));
747
+ if (isValid) {
748
+ console.log(`[AgentNetwork] Verified discovery from: ${discovery.name}`);
749
+ }
750
+ }
751
+ }
752
+ catch (e) {
753
+ console.warn(`[AgentNetwork] Failed to handle discovery:`, e);
754
+ }
755
+ });
756
+ console.log(`[AgentNetwork] Initialized with DID: ${keyPair?.did.substring(0, 20) || ownDid.substring(0, 20)}...`);
757
+ }
758
+ async function broadcastOwnAddress() {
759
+ const broadcast = await exports.agentRegistry.createSignedBroadcast();
760
+ if (broadcast) {
761
+ const data = JSON.stringify(broadcast);
762
+ await p2p_js_1.p2pNetwork.broadcast('address_broadcast', data);
763
+ console.log(`[AgentNetwork] Broadcast signed address to network`);
764
+ }
765
+ }
766
+ async function findAndConnectToAgent(did) {
767
+ return exports.agentRegistry.connectToAgent(did);
768
+ }
769
+ async function sendMessageToAgent(did, type, payload) {
770
+ return exports.agentMessaging.sendSignedToAgent(did, type, payload);
771
+ }
772
+ async function sendUnverifiedMessageToAgent(did, type, payload) {
773
+ return exports.agentMessaging.sendToAgent(did, type, payload);
774
+ }
775
+ //# sourceMappingURL=agent-network.js.map