@bolloon/bolloon-agent 0.1.36 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/dist/web/client.js +2861 -3746
  2. package/dist/web/components/p2p/index.js +226 -264
  3. package/dist/web/ui/message-renderer.js +323 -434
  4. package/dist/web/ui/step-timeline.js +255 -351
  5. package/package.json +2 -2
  6. package/.auto-evolve-calls +0 -1
  7. package/.last-auto-evolve-baseline +0 -1
  8. package/.playwright-mcp/page-2026-06-16T07-51-45-706Z.yml +0 -130
  9. package/.playwright-mcp/page-2026-06-16T07-56-44-116Z.yml +0 -131
  10. package/Bolloon.md +0 -144
  11. package/Dive-into/CITATION.cff +0 -17
  12. package/Dive-into/LICENSE +0 -25
  13. package/Dive-into/README.md +0 -598
  14. package/Dive-into/README_zh.md +0 -599
  15. package/Dive-into/assets/context.png +0 -0
  16. package/Dive-into/assets/extensibility.png +0 -0
  17. package/Dive-into/assets/iteration.png +0 -0
  18. package/Dive-into/assets/layered_architecture.png +0 -0
  19. package/Dive-into/assets/main_structure.png +0 -0
  20. package/Dive-into/assets/permission.png +0 -0
  21. package/Dive-into/assets/session_compact.png +0 -0
  22. package/Dive-into/assets/subagent.png +0 -0
  23. package/Dive-into/paper/Dive_into_Claude_Code.pdf +0 -0
  24. package/dist/agents/constraint-layer.js.map +0 -1
  25. package/dist/agents/pi-sdk.js.map +0 -1
  26. package/dist/agents/workflow-engine.js.map +0 -1
  27. package/dist/bollharness/src/index.js +0 -5
  28. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
  29. package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
  30. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
  31. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
  32. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
  33. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
  34. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
  35. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
  36. package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
  37. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
  38. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
  39. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
  40. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
  41. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
  42. package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
  43. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
  44. package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
  45. package/dist/bollharness/src/scripts/checks/finding.js +0 -13
  46. package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
  47. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
  48. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
  49. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
  50. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
  51. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
  52. package/dist/bollharness/src/scripts/context_router.js +0 -67
  53. package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
  54. package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
  55. package/dist/bollharness/src/scripts/guard_router.js +0 -158
  56. package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
  57. package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
  58. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
  59. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
  60. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
  61. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
  62. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
  63. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
  64. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
  65. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
  66. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
  67. package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
  68. package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
  69. package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
  70. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
  71. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
  72. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
  73. package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
  74. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
  75. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
  76. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
  77. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
  78. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
  79. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
  80. package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
  81. package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
  82. package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
  83. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
  84. package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
  85. package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
  86. package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
  87. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
  88. package/dist/bollharness/src/scripts/sanitize.js +0 -6
  89. package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
  90. package/dist/bollharness-integration/context-router.js.map +0 -1
  91. package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
  92. package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
  93. package/dist/bollharness-integration/guard-checker.js.map +0 -1
  94. package/dist/bollharness-integration/index.js.map +0 -1
  95. package/dist/bollharness-integration/integration.js.map +0 -1
  96. package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
  97. package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
  98. package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
  99. package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
  100. package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
  101. package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
  102. package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
  103. package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
  104. package/dist/bollharness-integration/skill-adapter.js.map +0 -1
  105. package/dist/constraint-runtime/src/_archive_helper.js +0 -9
  106. package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
  107. package/dist/constraint-runtime/src/agent/index.js +0 -1
  108. package/dist/constraint-runtime/src/assistant/index.js +0 -12
  109. package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
  110. package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
  111. package/dist/constraint-runtime/src/bridge/index.js +0 -12
  112. package/dist/constraint-runtime/src/buddy/index.js +0 -12
  113. package/dist/constraint-runtime/src/cli/index.js +0 -12
  114. package/dist/constraint-runtime/src/command_graph.js +0 -10
  115. package/dist/constraint-runtime/src/commands.js +0 -60
  116. package/dist/constraint-runtime/src/components/index.js +0 -12
  117. package/dist/constraint-runtime/src/constants/index.js +0 -12
  118. package/dist/constraint-runtime/src/constraint/budget.js +0 -22
  119. package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
  120. package/dist/constraint-runtime/src/constraint/index.js +0 -2
  121. package/dist/constraint-runtime/src/constraint/permission.js +0 -20
  122. package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
  123. package/dist/constraint-runtime/src/context.js +0 -30
  124. package/dist/constraint-runtime/src/coordinator/index.js +0 -12
  125. package/dist/constraint-runtime/src/cost_hook.js +0 -4
  126. package/dist/constraint-runtime/src/cost_tracker.js +0 -8
  127. package/dist/constraint-runtime/src/deferred_init.js +0 -10
  128. package/dist/constraint-runtime/src/direct_modes.js +0 -6
  129. package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
  130. package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
  131. package/dist/constraint-runtime/src/execution_registry.js +0 -44
  132. package/dist/constraint-runtime/src/history.js +0 -9
  133. package/dist/constraint-runtime/src/hooks/index.js +0 -12
  134. package/dist/constraint-runtime/src/index.js +0 -26
  135. package/dist/constraint-runtime/src/ink.js +0 -4
  136. package/dist/constraint-runtime/src/keybindings/index.js +0 -12
  137. package/dist/constraint-runtime/src/memdir/index.js +0 -12
  138. package/dist/constraint-runtime/src/migrations/index.js +0 -12
  139. package/dist/constraint-runtime/src/models.js +0 -1
  140. package/dist/constraint-runtime/src/models.js.map +0 -1
  141. package/dist/constraint-runtime/src/moreright/index.js +0 -12
  142. package/dist/constraint-runtime/src/native_ts/index.js +0 -12
  143. package/dist/constraint-runtime/src/output_styles/index.js +0 -12
  144. package/dist/constraint-runtime/src/parity_audit.js +0 -12
  145. package/dist/constraint-runtime/src/plugins/index.js +0 -12
  146. package/dist/constraint-runtime/src/port_manifest.js +0 -11
  147. package/dist/constraint-runtime/src/prefetch.js +0 -9
  148. package/dist/constraint-runtime/src/query.js +0 -1
  149. package/dist/constraint-runtime/src/remote/index.js +0 -12
  150. package/dist/constraint-runtime/src/remote_runtime.js +0 -9
  151. package/dist/constraint-runtime/src/runtime/index.js +0 -1
  152. package/dist/constraint-runtime/src/runtime/session.js +0 -35
  153. package/dist/constraint-runtime/src/schemas/index.js +0 -12
  154. package/dist/constraint-runtime/src/screens/index.js +0 -12
  155. package/dist/constraint-runtime/src/server/index.js +0 -12
  156. package/dist/constraint-runtime/src/services/index.js +0 -12
  157. package/dist/constraint-runtime/src/session_store.js +0 -22
  158. package/dist/constraint-runtime/src/setup.js +0 -30
  159. package/dist/constraint-runtime/src/skills/index.js +0 -1
  160. package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
  161. package/dist/constraint-runtime/src/state/index.js +0 -12
  162. package/dist/constraint-runtime/src/system_init.js +0 -20
  163. package/dist/constraint-runtime/src/thinking/engine.js +0 -42
  164. package/dist/constraint-runtime/src/thinking/index.js +0 -1
  165. package/dist/constraint-runtime/src/tool_pool.js +0 -8
  166. package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
  167. package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
  168. package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
  169. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
  170. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
  171. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
  172. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
  173. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
  174. package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
  175. package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
  176. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
  177. package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
  178. package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
  179. package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
  180. package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
  181. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
  182. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
  183. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
  184. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
  185. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
  186. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
  187. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
  188. package/dist/constraint-runtime/src/tools.js +0 -80
  189. package/dist/constraint-runtime/src/transcript.js +0 -19
  190. package/dist/constraint-runtime/src/types/index.js +0 -12
  191. package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
  192. package/dist/constraint-runtime/src/utils/index.js +0 -12
  193. package/dist/constraint-runtime/src/vim/index.js +0 -12
  194. package/dist/constraint-runtime/src/voice/index.js +0 -12
  195. package/dist/constraints/index.js.map +0 -1
  196. package/dist/documents/reader.js.map +0 -1
  197. package/dist/llm/config-store.js.map +0 -1
  198. package/dist/llm/pi-ai.js.map +0 -1
  199. package/dist/network/agent-network.js.map +0 -1
  200. package/dist/network/iroh-integration.js.map +0 -1
  201. package/dist/network/iroh-transport.js.map +0 -1
  202. package/dist/network/p2p.js.map +0 -1
  203. package/dist/network/storage/adapters/json-adapter.js.map +0 -1
  204. package/dist/pi-ecosystem-colony/index.js.map +0 -1
  205. package/dist/pi-ecosystem-goals/index.js.map +0 -1
  206. package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
  207. package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
  208. package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
  209. package/dist/pi-ecosystem-judgment/index.js.map +0 -1
  210. package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
  211. package/dist/pi-ecosystem-mcp/index.js.map +0 -1
  212. package/dist/pi-ecosystem-subagents/index.js.map +0 -1
  213. package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
  214. package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
  215. package/dist/social/ant-colony/types.js.map +0 -1
  216. package/dist/social/channels/ChannelManager.js.map +0 -1
  217. package/dist/social/channels/DiapChannelBridge.js.map +0 -1
  218. package/dist/social/channels/InterestMatcher.js.map +0 -1
  219. package/dist/social/channels/types.js.map +0 -1
  220. package/dist/social/global-shared-context.js.map +0 -1
  221. package/dist/social/heartbeat.js.map +0 -1
  222. package/dist/web/components/p2p/P2PModal.js +0 -188
  223. package/dist/web/components/p2p/p2p-modal.js +0 -657
  224. package/dist/web/components/p2p/p2p-tools.js +0 -248
  225. package/lefthook.yml +0 -33
  226. package/scripts/auto-evolve-loop.ts +0 -481
  227. package/scripts/auto-evolve-oneshot.sh +0 -155
  228. package/scripts/auto-evolve-snapshot.sh +0 -136
  229. package/scripts/build-cli.js +0 -216
  230. package/scripts/build-web.ts +0 -116
  231. package/scripts/detect-schema-changes.sh +0 -48
  232. package/scripts/diff-reviewer.ts +0 -159
  233. package/scripts/postinstall.js +0 -153
  234. package/scripts/validate-system-prompt.ts +0 -142
  235. package/scripts/weekly-report.ts +0 -364
  236. package/src/agents/agent-manifest-protocol.ts +0 -117
  237. package/src/agents/constraint-layer.ts +0 -309
  238. package/src/agents/iroh-secret.ts +0 -32
  239. package/src/agents/p2p-chat-tools.ts +0 -383
  240. package/src/agents/p2p-document-tools.ts +0 -347
  241. package/src/agents/permission-mode.ts +0 -127
  242. package/src/agents/pi-sdk.ts +0 -2895
  243. package/src/agents/pre-tool-validator.ts +0 -213
  244. package/src/agents/protocol.ts +0 -398
  245. package/src/agents/shell-guard.ts +0 -417
  246. package/src/agents/shell-tool.ts +0 -103
  247. package/src/agents/skill-loader.ts +0 -202
  248. package/src/agents/subagent-manager.ts +0 -553
  249. package/src/agents/workflow-engine.ts +0 -332
  250. package/src/agents/workflow-pivot-loop.ts +0 -766
  251. package/src/bollharness/.sanitize-report.json +0 -13
  252. package/src/bollharness/CLAUDE.md +0 -73
  253. package/src/bollharness/LICENSE +0 -21
  254. package/src/bollharness/README.md +0 -143
  255. package/src/bollharness/README.zh-CN.md +0 -131
  256. package/src/bollharness/package.json +0 -20
  257. package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
  258. package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
  259. package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
  260. package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
  261. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  262. package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
  263. package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
  264. package/src/bollharness/scripts/ci/count-components.sh +0 -65
  265. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  266. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  267. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  268. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  269. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  270. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  271. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  272. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  273. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  274. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  275. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  276. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
  277. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  278. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  279. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  280. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  281. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  282. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  283. package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
  284. package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
  285. package/src/bollharness/scripts/hooks/precompact.sh +0 -56
  286. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  287. package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
  288. package/src/bollharness/src/index.ts +0 -5
  289. package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
  290. package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
  291. package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
  292. package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
  293. package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
  294. package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
  295. package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
  296. package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
  297. package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
  298. package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
  299. package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
  300. package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
  301. package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
  302. package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
  303. package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
  304. package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
  305. package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
  306. package/src/bollharness/src/scripts/checks/finding.ts +0 -35
  307. package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
  308. package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
  309. package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
  310. package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
  311. package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
  312. package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
  313. package/src/bollharness/src/scripts/context_router.ts +0 -76
  314. package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
  315. package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
  316. package/src/bollharness/src/scripts/guard_router.ts +0 -194
  317. package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
  318. package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
  319. package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
  320. package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
  321. package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
  322. package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
  323. package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
  324. package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
  325. package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
  326. package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
  327. package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
  328. package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
  329. package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
  330. package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
  331. package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
  332. package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
  333. package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
  334. package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
  335. package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
  336. package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
  337. package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
  338. package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
  339. package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
  340. package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
  341. package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
  342. package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
  343. package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
  344. package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
  345. package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
  346. package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
  347. package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
  348. package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
  349. package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
  350. package/src/bollharness/src/scripts/sanitize.ts +0 -9
  351. package/src/bollharness/templates/persona/default.json +0 -19
  352. package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
  353. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  354. package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
  355. package/src/bollharness-integration/context-chain-router.ts +0 -474
  356. package/src/bollharness-integration/context-router-judgment.ts +0 -339
  357. package/src/bollharness-integration/context-router.ts +0 -583
  358. package/src/bollharness-integration/gate-state-machine.ts +0 -444
  359. package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
  360. package/src/bollharness-integration/guard-checker.ts +0 -451
  361. package/src/bollharness-integration/index.ts +0 -195
  362. package/src/bollharness-integration/integration.ts +0 -538
  363. package/src/bollharness-integration/judgment-prompts.yaml +0 -535
  364. package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
  365. package/src/bollharness-integration/skill-adapter.ts +0 -646
  366. package/src/bootstrap/bootstrap.ts +0 -135
  367. package/src/bootstrap/context-collector.ts +0 -371
  368. package/src/bootstrap/context-hierarchy.ts +0 -283
  369. package/src/bootstrap/lifecycle-hooks.ts +0 -289
  370. package/src/bootstrap/project-context.ts +0 -171
  371. package/src/cli/interface.ts +0 -211
  372. package/src/cli-entry.ts +0 -304
  373. package/src/constraints/index.ts +0 -6
  374. package/src/context-compaction/auto-compact.ts +0 -153
  375. package/src/context-compaction/budget-gate.ts +0 -32
  376. package/src/context-compaction/budget-reduce.ts +0 -37
  377. package/src/context-compaction/context-collapse.ts +0 -72
  378. package/src/context-compaction/index.ts +0 -24
  379. package/src/context-compaction/microcompact.ts +0 -54
  380. package/src/context-compaction/pipeline.ts +0 -133
  381. package/src/context-compaction/snip.ts +0 -51
  382. package/src/context-compaction/token-estimator.ts +0 -36
  383. package/src/context-compaction/types.ts +0 -99
  384. package/src/documents/reader.ts +0 -85
  385. package/src/documents/store.ts +0 -252
  386. package/src/electron-preload.ts +0 -25
  387. package/src/electron.ts +0 -200
  388. package/src/heartbeat/DaemonManager.ts +0 -283
  389. package/src/heartbeat/HealthMonitor.ts +0 -317
  390. package/src/heartbeat/StartupVerifier.ts +0 -223
  391. package/src/heartbeat/Watchdog.ts +0 -208
  392. package/src/heartbeat/index.ts +0 -109
  393. package/src/heartbeat/self-improve-bus.ts +0 -110
  394. package/src/heartbeat/types.ts +0 -82
  395. package/src/index.ts +0 -1724
  396. package/src/llm/audio-config-store.ts +0 -246
  397. package/src/llm/config-store.ts +0 -400
  398. package/src/llm/llm-judgment-client.ts +0 -471
  399. package/src/llm/pi-ai.ts +0 -653
  400. package/src/llm/system-prompt/health.ts +0 -159
  401. package/src/llm/system-prompt/layers/channel/local.md +0 -14
  402. package/src/llm/system-prompt/layers/channel/p2p-agent.md +0 -18
  403. package/src/llm/system-prompt/layers/channel/p2p-visitor.md +0 -19
  404. package/src/llm/system-prompt/layers/core/artifacts_storage.md +0 -89
  405. package/src/llm/system-prompt/layers/core/evenhandedness.md +0 -21
  406. package/src/llm/system-prompt/layers/core/hibs_reminders.md +0 -15
  407. package/src/llm/system-prompt/layers/core/identity.md +0 -37
  408. package/src/llm/system-prompt/layers/core/knowledge.md +0 -17
  409. package/src/llm/system-prompt/layers/core/memory_system.md +0 -12
  410. package/src/llm/system-prompt/layers/core/network_filesystem.md +0 -28
  411. package/src/llm/system-prompt/layers/core/refusal.md +0 -37
  412. package/src/llm/system-prompt/layers/core/tone.md +0 -31
  413. package/src/llm/system-prompt/layers/core/tools.thin.md +0 -13
  414. package/src/llm/system-prompt/layers/core/wellbeing.md +0 -41
  415. package/src/llm/system-prompt/layers/role/architect.md +0 -20
  416. package/src/llm/system-prompt/layers/role/expert.md +0 -19
  417. package/src/llm/system-prompt/layers/role/implementer.md +0 -15
  418. package/src/llm/system-prompt/layers/role/security.md +0 -15
  419. package/src/llm/system-prompt/layers/tool/artifacts.md +0 -72
  420. package/src/llm/system-prompt/layers/tool/bash.md +0 -25
  421. package/src/llm/system-prompt/layers/tool/hibs_api.md +0 -171
  422. package/src/llm/system-prompt/layers/tool/image_search.md +0 -70
  423. package/src/llm/system-prompt/layers/tool/manifest.md +0 -89
  424. package/src/llm/system-prompt/layers/tool/mcp_apps.md +0 -53
  425. package/src/llm/system-prompt/layers/tool/web_search.md +0 -83
  426. package/src/llm/system-prompt/registry.ts +0 -325
  427. package/src/llm/system-prompt/strip-hibsml.ts +0 -52
  428. package/src/llm/tool-manifest/ask_user_input.ts +0 -37
  429. package/src/llm/tool-manifest/bash.ts +0 -25
  430. package/src/llm/tool-manifest/create_file.ts +0 -26
  431. package/src/llm/tool-manifest/fetch_sports_data.ts +0 -28
  432. package/src/llm/tool-manifest/image_search.ts +0 -26
  433. package/src/llm/tool-manifest/index.ts +0 -88
  434. package/src/llm/tool-manifest/mcp.ts +0 -46
  435. package/src/llm/tool-manifest/message_compose.ts +0 -33
  436. package/src/llm/tool-manifest/places.ts +0 -86
  437. package/src/llm/tool-manifest/present_files.ts +0 -23
  438. package/src/llm/tool-manifest/recipe.ts +0 -42
  439. package/src/llm/tool-manifest/recommend_apps.ts +0 -25
  440. package/src/llm/tool-manifest/str_replace.ts +0 -29
  441. package/src/llm/tool-manifest/types.ts +0 -52
  442. package/src/llm/tool-manifest/view.ts +0 -26
  443. package/src/llm/tool-manifest/weather.ts +0 -29
  444. package/src/llm/tool-manifest/web.ts +0 -54
  445. package/src/llm/video-config-store.ts +0 -257
  446. package/src/network/agent-network.ts +0 -800
  447. package/src/network/hybrid-messenger.ts +0 -199
  448. package/src/network/iroh-bootstrap.ts +0 -57
  449. package/src/network/iroh-discovery.ts +0 -208
  450. package/src/network/iroh-integration.ts +0 -158
  451. package/src/network/iroh-transport.ts +0 -637
  452. package/src/network/known-peers.ts +0 -102
  453. package/src/network/p2p-direct.ts +0 -262
  454. package/src/network/p2p-secret.ts +0 -153
  455. package/src/network/p2p.ts +0 -964
  456. package/src/network/source-intent-broadcaster.ts +0 -242
  457. package/src/network/source-intent.ts +0 -167
  458. package/src/network/storage/adapters/json-adapter.ts +0 -454
  459. package/src/network/storage/index.ts +0 -203
  460. package/src/network/storage/types.ts +0 -166
  461. package/src/security/builtin-guards.ts +0 -162
  462. package/src/security/context-router-tool.ts +0 -122
  463. package/src/security/input-scanner.ts +0 -287
  464. package/src/security/react-harness.ts +0 -177
  465. package/src/security/tool-gate.ts +0 -294
  466. package/src/social/ant-colony/index.js +0 -19
  467. package/src/social/channels/ChannelManager.ts +0 -485
  468. package/src/social/channels/DiapChannelBridge.ts +0 -501
  469. package/src/social/channels/InterestMatcher.ts +0 -189
  470. package/src/social/channels/agent-workflow-config.json +0 -214
  471. package/src/social/channels/agent-workflow-config.yaml +0 -334
  472. package/src/social/channels/channel-agent-session.ts +0 -407
  473. package/src/social/channels/channel-heartbeat-agent.ts +0 -622
  474. package/src/social/channels/diap-doc-parser.ts +0 -282
  475. package/src/social/channels/harness-workflow-integrator.ts +0 -594
  476. package/src/social/channels/index.ts +0 -22
  477. package/src/social/channels/types.ts +0 -115
  478. package/src/social/global-shared-context.ts +0 -506
  479. package/src/social/heartbeat.ts +0 -1057
  480. package/src/social/persona/enhanced-persona.ts +0 -359
  481. package/src/types.d.ts +0 -12
  482. package/src/utils/auto-evolve-policy.ts +0 -138
  483. package/src/utils/auto-update.ts +0 -482
  484. package/src/utils/clamp.ts +0 -5
  485. package/src/web/agent-delegate-server.ts +0 -148
  486. package/src/web/api-config.html +0 -520
  487. package/src/web/client.js +0 -2352
  488. package/src/web/client.ts +0 -4326
  489. package/src/web/components/p2p/P2PModal.tsx +0 -416
  490. package/src/web/components/p2p/index.ts +0 -566
  491. package/src/web/components/p2p/index.tsx +0 -297
  492. package/src/web/components/p2p/p2p-connection.ts +0 -338
  493. package/src/web/components/p2p/p2p-identity.ts +0 -92
  494. package/src/web/components/p2p/p2p-manager.ts +0 -147
  495. package/src/web/components/p2p/p2p-messages.ts +0 -219
  496. package/src/web/components/p2p/p2p-modal.ts +0 -685
  497. package/src/web/components/p2p/p2p-store-memory.ts +0 -162
  498. package/src/web/components/p2p/p2p-tools.ts +0 -315
  499. package/src/web/components/p2p/types.ts +0 -170
  500. package/src/web/components/wallet-viem.mjs +0 -118
  501. package/src/web/design.md +0 -99
  502. package/src/web/icons/apple-touch-icon.png +0 -0
  503. package/src/web/icons/favicon-16x16.png +0 -0
  504. package/src/web/icons/favicon-192x192.png +0 -0
  505. package/src/web/icons/favicon-32x32.png +0 -0
  506. package/src/web/icons/favicon-48x48.png +0 -0
  507. package/src/web/icons/favicon-512x512.png +0 -0
  508. package/src/web/icons/favicon.icns +0 -0
  509. package/src/web/icons/favicon.ico +0 -0
  510. package/src/web/icons/icon.png +0 -0
  511. package/src/web/icons/image.png +0 -0
  512. package/src/web/index.html +0 -373
  513. package/src/web/iroh-delegate-transport.ts +0 -139
  514. package/src/web/manifest.json +0 -21
  515. package/src/web/server.ts +0 -5731
  516. package/src/web/style.css +0 -4737
  517. package/src/web/ui/message-renderer.ts +0 -540
  518. package/src/web/ui/step-timeline.ts +0 -394
  519. package/staging/auto-evolve/clean-001/.review-verdict +0 -9
  520. package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
  521. package/staging/auto-evolve/e2e-001/.patch-id +0 -1
  522. package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
  523. package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
  524. package/staging/auto-evolve/test-bad/.review-verdict +0 -12
  525. package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
  526. package/test-results/.last-run.json +0 -6
  527. 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
  528. package/tsconfig.cli.json +0 -16
  529. package/tsconfig.electron.json +0 -20
  530. package/tsconfig.json +0 -18
@@ -1,213 +0,0 @@
1
- /**
2
- * Pre-Tool Validator — 4 步链式校验
3
- *
4
- * 严格对齐 Claude Code 论文 PreToolUse 4 步:
5
- * 1. modeGate(tool, mode) — bypassPermissions → 直接放行(除 shell)
6
- * 2. blacklistGate(tool, args) — 6 模式黑名单 (recursive rm, force push, dd 等)
7
- * 3. shellGuardGate(tool, args) — **完整** shell-guard (checkCommand + checkWritePath), 永远生效
8
- * 4. schemaGate(tool, args) — 第一版 stub: always allow (后续接入 tool-gate.ts)
9
- *
10
- * 每步独立 try/catch, 失败 = 跳过该步, 不阻塞 (与现有 lifecycle-hooks 风格一致)
11
- *
12
- * 失败静默: 任何 step 异常 → console.warn + 继续下一 step, 不抛错
13
- */
14
-
15
- import { shouldRunBlacklist, isShellTool, type PermissionMode } from './permission-mode.js';
16
- import { checkCommand, checkWritePath } from './shell-guard.js';
17
-
18
- export interface PreToolResult {
19
- allowed: boolean;
20
- reason?: string;
21
- /** 哪一步拒绝的 (供 audit log) */
22
- rejectedBy?: 'mode' | 'blacklist' | 'shell-guard' | 'schema';
23
- mode: PermissionMode;
24
- /** bypassPermissions 时记录, 区分 "完全放行" vs "shell-guard 仍生效" */
25
- shellGuardRetained?: boolean;
26
- }
27
-
28
- const DANGEROUS_PATTERNS: Array<{ re: RegExp; reason: string }> = [
29
- { re: /\brm\s+(-[a-z]*f[a-z]*\s+)?-[a-z]*r[a-z]*\s+\//, reason: '禁止递归删除根目录' },
30
- { re: /\bgit\s+push\s+.*--force\b/, reason: '禁止 force push' },
31
- { re: /\brm\s+-rf\s+~\//, reason: '禁止递归删除 home' },
32
- { re: /\bdd\s+if=.*\s+of=\/dev\//, reason: '禁止 dd 覆盖块设备' },
33
- { re: /\bcurl\s+.*\|\s*(ba)?sh\b/, reason: '禁止 curl|sh 直执行' },
34
- { re: />\s*\/dev\/sd[a-z]/, reason: '禁止写裸设备' },
35
- ];
36
-
37
- /**
38
- * Step 1: modeGate
39
- * - bypassPermissions + 非 shell → 直接放行 (但保留 shellGuardRetained 标记)
40
- * - 其他 → 继续
41
- */
42
- function modeGate(tool: string, mode: PermissionMode): PreToolResult | null {
43
- try {
44
- if (mode === 'bypassPermissions' && !isShellTool(tool)) {
45
- return { allowed: true, mode, rejectedBy: undefined, shellGuardRetained: false };
46
- }
47
- return null; // 不在这一步决定
48
- } catch (err) {
49
- console.warn('[pre-tool] modeGate failed (silent):', err);
50
- return null;
51
- }
52
- }
53
-
54
- /**
55
- * Step 2: blacklistGate
56
- * 6 模式黑名单 (现有 lifecycle-hooks.ts 行为)
57
- */
58
- function blacklistGate(tool: string, args: Record<string, unknown>, mode: PermissionMode): PreToolResult | null {
59
- try {
60
- if (!isShellTool(tool)) return null;
61
- const cmd = String(args.command || args.cmd || '');
62
- if (!cmd) return null;
63
- for (const { re, reason } of DANGEROUS_PATTERNS) {
64
- if (re.test(cmd)) {
65
- return { allowed: false, reason, rejectedBy: 'blacklist', mode };
66
- }
67
- }
68
- return null;
69
- } catch (err) {
70
- console.warn('[pre-tool] blacklistGate failed (silent):', err);
71
- return null;
72
- }
73
- }
74
-
75
- /**
76
- * Step 3: shellGuardGate
77
- * 永远跑 (绕过 mode), 是 bolloon 自身的安全底线
78
- *
79
- * 接完整 shell-guard.ts (checkCommand + checkWritePath):
80
- * - checkCommand 走命令白名单 + 参数黑名单 (允许列表默认 git/node/npm/npx/tsx/tsc/vitest 等)
81
- * - checkWritePath 走路径黑名单 (硬编码: pi-sdk.ts, shell-guard.ts, .env, .git/, .bolloon/, package.json, dist/ 等)
82
- *
83
- * 失败静默: 任何异常 → 跳过这步, 不阻塞
84
- */
85
- function shellGuardGate(tool: string, args: Record<string, unknown>, mode: PermissionMode): PreToolResult | null {
86
- try {
87
- if (!isShellTool(tool)) return null;
88
-
89
- // 1. 命令检查 (含白名单 + arg 黑名单)
90
- const cmd = String(args.command || args.cmd || '');
91
- let bin = '';
92
- if (cmd) {
93
- // shell-guard 期望 (cmd, args[]) 形式
94
- // 简单 split: 第一个 token 是 cmd, 之后是 args
95
- const parts = cmd.split(/\s+/).filter(Boolean);
96
- bin = parts[0] || '';
97
- const rest = parts.slice(1);
98
- if (bin) {
99
- const cmdResult = checkCommand(bin, rest);
100
- if (!cmdResult.allowed) {
101
- return {
102
- allowed: false,
103
- reason: cmdResult.reason,
104
- rejectedBy: 'shell-guard',
105
- mode,
106
- shellGuardRetained: true,
107
- };
108
- }
109
- }
110
- }
111
-
112
- // 2. 写路径检查 — 从 2 个来源抽:
113
- // a) 结构化字段 (args.path / args.target / args.file)
114
- // b) 命令字符串里的 token (老测试传 args.command='cat pi-sdk.ts' 时也能拦)
115
- const pathCandidates: string[] = [];
116
- const structured = String(
117
- args.path || args.target || args.file || args.targetPath || args.destination || ''
118
- );
119
- if (structured) pathCandidates.push(structured);
120
- if (cmd) {
121
- // 简单 tokenize: 按空白切, 取不含 shell 元字符的 token
122
- const tokens = cmd.split(/\s+/).filter((t) => t && !/^[|>;&`$()<]/.test(t));
123
- for (const t of tokens) {
124
- if (t !== bin) pathCandidates.push(t); // 跳过命令本身
125
- }
126
- }
127
- // 纯文件名 denylist (兜底 — checkWritePath 的 regex 要求 /src/xxx/ 锚定, 纯文件名拦不到)
128
- // 只对**写/删/改**类命令生效 (rm, cp, mv, sed -i, echo >); 读类命令 (cat, head, tail, ls) 跳过
129
- const READ_BINS = new Set(['cat', 'head', 'tail', 'wc', 'ls', 'echo', 'pwd', 'date', 'mkdir', 'touch', 'find', 'grep', 'git', 'node', 'npm', 'npx', 'tsx', 'tsc', 'vitest']);
130
- const FILENAME_DENYLIST = [
131
- 'pi-sdk.ts', 'shell-guard.ts', 'shell-tool.ts',
132
- '.env', 'package.json', 'tsconfig.json',
133
- ];
134
- const isReadOperation = READ_BINS.has(bin);
135
- for (const candidate of pathCandidates) {
136
- // 2a. checkWritePath 只对写操作调用 (读类命令绕开, 避免 cat pi-sdk.ts 误拦)
137
- if (!isReadOperation) {
138
- const pathResult = checkWritePath(candidate);
139
- if (!pathResult.allowed) {
140
- return {
141
- allowed: false,
142
- reason: pathResult.reason,
143
- rejectedBy: 'shell-guard',
144
- mode,
145
- shellGuardRetained: true,
146
- };
147
- }
148
- }
149
- // 2b. 纯文件名兜底 — 只对写操作生效
150
- if (!isReadOperation) {
151
- const baseName = candidate.split('/').pop() || '';
152
- if (FILENAME_DENYLIST.includes(baseName)) {
153
- return {
154
- allowed: false,
155
- reason: `shell-guard: 禁止 ${bin} 操作 ${candidate} (命中文件名硬编码黑名单)`,
156
- rejectedBy: 'shell-guard',
157
- mode,
158
- shellGuardRetained: true,
159
- };
160
- }
161
- }
162
- }
163
-
164
- return null; // 通过
165
- } catch (err) {
166
- console.warn('[pre-tool] shellGuardGate failed (silent):', err);
167
- return null;
168
- }
169
- }
170
-
171
- /**
172
- * Step 4: schemaGate
173
- * 第一版 stub: always allow
174
- */
175
- function schemaGate(_tool: string, _args: Record<string, unknown>, mode: PermissionMode): PreToolResult | null {
176
- return null; // 不在这一步决定
177
- }
178
-
179
- /**
180
- * 主入口: 4 步链式, 任何一步拒绝 → 返回, 否则最终放行
181
- */
182
- export function validatePreToolUse(
183
- tool: string,
184
- args: Record<string, unknown>,
185
- mode: PermissionMode
186
- ): PreToolResult {
187
- const steps = [
188
- () => modeGate(tool, mode),
189
- () => blacklistGate(tool, args, mode),
190
- () => shellGuardGate(tool, args, mode),
191
- () => schemaGate(tool, args, mode),
192
- ];
193
- for (const step of steps) {
194
- const result = step();
195
- if (result && !result.allowed) return result;
196
- }
197
- // 全部通过 → 放行
198
- // bypassPermissions + shell 走到这里 = shellGuardGate 已经放过, 但要标记 shellGuardRetained
199
- return {
200
- allowed: true,
201
- mode,
202
- rejectedBy: undefined,
203
- shellGuardRetained: isShellTool(tool),
204
- };
205
- }
206
-
207
- // ============================================================
208
- // 测试钩子
209
- // ============================================================
210
-
211
- export function _resetValidatorForTest(): void {
212
- // validator 是 pure, 保留 API 一致
213
- }
@@ -1,398 +0,0 @@
1
- import { p2pNetwork } from '../network/p2p.js';
2
- import { documentReader, DocumentContent } from '../documents/reader.js';
3
- import { getMinimax } from '../constraints/index.js';
4
-
5
- export type MessageType = 'task' | 'result' | 'report' | 'feedback' | 'improve' | 'improved';
6
-
7
- export interface AgentMessage {
8
- type: MessageType;
9
- from: string;
10
- to?: string;
11
- taskId: string;
12
- payload: string;
13
- timestamp: number;
14
- }
15
-
16
- export interface Task {
17
- taskId: string;
18
- action: 'read' | 'summarize' | 'improve' | 'report';
19
- target?: string;
20
- documentPath?: string;
21
- context?: string;
22
- requirements?: string;
23
- }
24
-
25
- export interface TaskResult {
26
- taskId: string;
27
- success: boolean;
28
- result?: string;
29
- qualityScore?: number;
30
- needsApproval?: boolean;
31
- autoSent?: boolean;
32
- }
33
-
34
- export interface ImproveResult {
35
- taskId: string;
36
- success: boolean;
37
- originalPath?: string;
38
- improvedContent?: string;
39
- qualityScore?: number;
40
- shouldAutoSend: boolean;
41
- needsApproval: boolean;
42
- }
43
-
44
- export class AgentProtocol {
45
- private peerId: string;
46
- private identityName: string;
47
- private pendingTasks: Map<string, Task> = new Map();
48
- private taskQueue: Task[] = [];
49
- private autoSendThreshold = 0.7;
50
- private autonomousMode = true;
51
-
52
- constructor(peerId: string, identityName?: string) {
53
- this.peerId = peerId;
54
- this.identityName = identityName || `Agent-${peerId.substring(0, 8)}`;
55
- this.setupMessageHandler();
56
- }
57
-
58
- private setupMessageHandler(): void {
59
- p2pNetwork.onMessage('task', async (data, from) => {
60
- const message = JSON.parse(new TextDecoder().decode(data)) as AgentMessage;
61
- await this.handleTask(message);
62
- });
63
-
64
- p2pNetwork.onMessage('result', async (data, from) => {
65
- const message = JSON.parse(new TextDecoder().decode(data)) as AgentMessage;
66
- await this.handleResult(message);
67
- });
68
-
69
- p2pNetwork.onMessage('feedback', async (data, from) => {
70
- const message = JSON.parse(new TextDecoder().decode(data)) as AgentMessage;
71
- await this.handleFeedback(message);
72
- });
73
-
74
- p2pNetwork.onMessage('improve', async (data, from) => {
75
- const message = JSON.parse(new TextDecoder().decode(data)) as AgentMessage;
76
- await this.handleImproveRequest(message);
77
- });
78
-
79
- p2pNetwork.onMessage('improved', async (data, from) => {
80
- const message = JSON.parse(new TextDecoder().decode(data)) as AgentMessage;
81
- await this.handleImprovedResult(message);
82
- });
83
- }
84
-
85
- async sendTask(task: Task, targetPeer: string): Promise<void> {
86
- const message: AgentMessage = {
87
- type: 'task',
88
- from: this.peerId,
89
- to: targetPeer,
90
- taskId: task.taskId,
91
- payload: JSON.stringify(task),
92
- timestamp: Date.now()
93
- };
94
-
95
- this.pendingTasks.set(task.taskId, task);
96
- await p2pNetwork.sendMessage(targetPeer, 'task', JSON.stringify(message));
97
- }
98
-
99
- async broadcastTask(task: Task): Promise<void> {
100
- const message: AgentMessage = {
101
- type: 'task',
102
- from: this.peerId,
103
- taskId: task.taskId,
104
- payload: JSON.stringify(task),
105
- timestamp: Date.now()
106
- };
107
-
108
- this.pendingTasks.set(task.taskId, task);
109
- await p2pNetwork.broadcast('task', JSON.stringify(message));
110
- }
111
-
112
- async requestImprove(documentPath: string, requirements: string, targetPeer?: string): Promise<void> {
113
- const task: Task = {
114
- taskId: `improve-${Date.now()}`,
115
- action: 'improve',
116
- documentPath,
117
- requirements,
118
- context: `Requested by ${this.identityName}`
119
- };
120
-
121
- const message: AgentMessage = {
122
- type: 'improve',
123
- from: this.peerId,
124
- to: targetPeer,
125
- taskId: task.taskId,
126
- payload: JSON.stringify(task),
127
- timestamp: Date.now()
128
- };
129
-
130
- this.pendingTasks.set(task.taskId, task);
131
-
132
- if (targetPeer) {
133
- await p2pNetwork.sendMessage(targetPeer, 'improve', JSON.stringify(message));
134
- } else {
135
- await p2pNetwork.broadcast('improve', JSON.stringify(message));
136
- }
137
- }
138
-
139
- private async handleTask(message: AgentMessage): Promise<void> {
140
- const task = JSON.parse(message.payload) as Task;
141
-
142
- if (task.action === 'read' && task.documentPath) {
143
- const content = await documentReader.read(task.documentPath);
144
- const result = await this.processDocument(content, task.context);
145
-
146
- const resultMsg: AgentMessage = {
147
- type: 'result',
148
- from: this.peerId,
149
- to: message.from,
150
- taskId: task.taskId,
151
- payload: JSON.stringify(result),
152
- timestamp: Date.now()
153
- };
154
-
155
- await p2pNetwork.sendMessage(message.from, 'result', JSON.stringify(resultMsg));
156
- } else if (task.action === 'improve' && task.documentPath && task.requirements) {
157
- const result = await this.processImprove(task);
158
- const resultMsg: AgentMessage = {
159
- type: 'improved',
160
- from: this.peerId,
161
- to: message.from,
162
- taskId: task.taskId,
163
- payload: JSON.stringify(result),
164
- timestamp: Date.now()
165
- };
166
-
167
- if (result.shouldAutoSend && this.autonomousMode) {
168
- console.log(`\n🤖 [${this.identityName}] 自动发送改进结果 (质量: ${(result.qualityScore! * 10).toFixed(1)}/10)`);
169
- await p2pNetwork.sendMessage(message.from, 'improved', JSON.stringify(resultMsg));
170
- } else if (result.needsApproval) {
171
- console.log(`\n📋 [${this.identityName}] 改进完成,等待审批 (质量: ${(result.qualityScore! * 10).toFixed(1)}/10)`);
172
- }
173
- }
174
- }
175
-
176
- private async processImprove(task: Task): Promise<ImproveResult> {
177
- const llm = getMinimax();
178
- const content = await documentReader.read(task.documentPath!);
179
- const improvedContent = await llm.improveContent(content.text, task.requirements!, task.context);
180
- const qualityScore = llm.estimateQuality(content.text, improvedContent);
181
- const shouldAutoSend = await llm.shouldAutoSend(qualityScore, this.autoSendThreshold);
182
-
183
- return {
184
- taskId: task.taskId,
185
- success: true,
186
- originalPath: task.documentPath,
187
- improvedContent,
188
- qualityScore,
189
- shouldAutoSend,
190
- needsApproval: !shouldAutoSend
191
- };
192
- }
193
-
194
- private async processDocument(content: DocumentContent, context?: string): Promise<TaskResult> {
195
- const llm = getMinimax();
196
- const chunks = documentReader.chunk(content.text);
197
- const summaries: string[] = [];
198
- let totalQuality = 0;
199
-
200
- for (const chunk of chunks) {
201
- const result = await llm.summarize(chunk, context);
202
- summaries.push(result.summary);
203
- totalQuality += result.qualityScore;
204
- }
205
-
206
- const combinedSummary = summaries.join('\n\n');
207
- const avgQuality = totalQuality / chunks.length;
208
-
209
- const canAutoSend = await llm.shouldAutoSend(avgQuality, this.autoSendThreshold);
210
-
211
- return {
212
- taskId: `task-${Date.now()}`,
213
- success: true,
214
- result: combinedSummary,
215
- qualityScore: avgQuality,
216
- needsApproval: !canAutoSend,
217
- autoSent: canAutoSend && this.autonomousMode
218
- };
219
- }
220
-
221
- private async handleResult(message: AgentMessage): Promise<void> {
222
- const result = JSON.parse(message.payload) as TaskResult;
223
- const task = this.pendingTasks.get(message.taskId);
224
-
225
- if (result.needsApproval && !result.autoSent) {
226
- console.log('\n📋 文档处理完成,需要人工确认:');
227
- console.log(` 质量评分: ${(result.qualityScore! * 10).toFixed(1)}/10`);
228
- console.log(` 摘要预览: ${result.result?.substring(0, 200)}...\n`);
229
- } else if (result.autoSent || this.autonomousMode) {
230
- console.log('\n✅ 文档处理完成,自动发送汇报');
231
- await this.autoReport(result, message.from);
232
- }
233
- }
234
-
235
- private async handleImproveRequest(message: AgentMessage): Promise<void> {
236
- const task = JSON.parse(message.payload) as Task;
237
- console.log(`\n📝 [${this.identityName}] 收到改进请求: ${task.documentPath}`);
238
- console.log(` 要求: ${task.requirements}`);
239
- }
240
-
241
- private async handleImprovedResult(message: AgentMessage): Promise<void> {
242
- const result = JSON.parse(message.payload) as ImproveResult;
243
- const task = this.pendingTasks.get(message.taskId);
244
-
245
- console.log('\n✨ 改进结果已接收:');
246
- console.log(` 原始文档: ${result.originalPath}`);
247
- console.log(` 质量评分: ${(result.qualityScore! * 10).toFixed(1)}/10`);
248
- console.log(` 自动发送: ${result.shouldAutoSend ? '是' : '否'}`);
249
- console.log(` 改进预览: ${result.improvedContent?.substring(0, 200)}...\n`);
250
- }
251
-
252
- private async handleFeedback(message: AgentMessage): Promise<void> {
253
- const { taskId, improvements } = JSON.parse(message.payload);
254
- console.log(`\n📝 [${this.identityName}] 收到改进意见 for task ${taskId}:`, improvements);
255
- }
256
-
257
- private async autoReport(result: TaskResult, fromPeer: string): Promise<void> {
258
- const reportMsg: AgentMessage = {
259
- type: 'report',
260
- from: this.peerId,
261
- taskId: result.taskId,
262
- payload: JSON.stringify({
263
- summary: result.result,
264
- qualityScore: result.qualityScore,
265
- fromAgent: this.identityName
266
- }),
267
- timestamp: Date.now()
268
- };
269
-
270
- const peers = p2pNetwork.getPeers();
271
- const failedPeers: string[] = [];
272
-
273
- for (const peer of peers) {
274
- if (peer !== fromPeer) {
275
- try {
276
- await p2pNetwork.sendMessage(peer, 'report', JSON.stringify(reportMsg));
277
- console.log(`[${this.identityName}] 汇报已发送至 ${peer}`);
278
- } catch (sendError) {
279
- console.warn(`[${this.identityName}] 发送汇报至 ${peer} 失败: ${sendError}`);
280
- failedPeers.push(peer);
281
- }
282
- }
283
- }
284
-
285
- // 重试失败的发送
286
- if (failedPeers.length > 0) {
287
- console.log(`[${this.identityName}] 尝试重新发送汇报至 ${failedPeers.length} 个失败节点`);
288
- await this.retryFailedReports(reportMsg, failedPeers, 2);
289
- }
290
- }
291
-
292
- private async retryFailedReports(
293
- reportMsg: AgentMessage,
294
- failedPeers: string[],
295
- maxRetries: number
296
- ): Promise<void> {
297
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
298
- if (failedPeers.length === 0) break;
299
-
300
- console.log(`[${this.identityName}] 重试第 ${attempt}/${maxRetries} 次`);
301
- await this.sleep(1000 * attempt); // 指数退避
302
-
303
- const stillFailed: string[] = [];
304
- for (const peer of failedPeers) {
305
- try {
306
- await p2pNetwork.sendMessage(peer, 'report', JSON.stringify(reportMsg));
307
- console.log(`[${this.identityName}] 重试成功: ${peer}`);
308
- } catch {
309
- stillFailed.push(peer);
310
- }
311
- }
312
- failedPeers = stillFailed;
313
- }
314
-
315
- if (failedPeers.length > 0) {
316
- console.log(`[${this.identityName}] 最终仍有 ${failedPeers.length} 个节点发送失败,将加入待重试队列`);
317
- this.queueFailedReports(reportMsg, failedPeers);
318
- }
319
- }
320
-
321
- private failedReportsQueue: Array<{ msg: AgentMessage; peers: string[]; timestamp: number }> = [];
322
-
323
- private queueFailedReports(msg: AgentMessage, peers: string[]): void {
324
- this.failedReportsQueue.push({
325
- msg,
326
- peers,
327
- timestamp: Date.now()
328
- });
329
- // 限制队列大小
330
- if (this.failedReportsQueue.length > 50) {
331
- this.failedReportsQueue = this.failedReportsQueue.slice(-50);
332
- }
333
- }
334
-
335
- async processFailedReportsQueue(): Promise<void> {
336
- if (this.failedReportsQueue.length === 0) return;
337
-
338
- console.log(`[${this.identityName}] 处理待重试汇报队列 (${this.failedReportsQueue.length} 条)`);
339
- const processed: number[] = [];
340
-
341
- for (let i = 0; i < this.failedReportsQueue.length; i++) {
342
- const item = this.failedReportsQueue[i];
343
- const stillFailed: string[] = [];
344
-
345
- for (const peer of item.peers) {
346
- try {
347
- await p2pNetwork.sendMessage(peer, 'report', JSON.stringify(item.msg));
348
- console.log(`[${this.identityName}] 队列重试成功: ${peer}`);
349
- } catch {
350
- stillFailed.push(peer);
351
- }
352
- }
353
-
354
- if (stillFailed.length === 0) {
355
- processed.push(i);
356
- } else {
357
- item.peers = stillFailed;
358
- item.timestamp = Date.now();
359
- }
360
- }
361
-
362
- // 移除已成功的
363
- for (let i = processed.length - 1; i >= 0; i--) {
364
- this.failedReportsQueue.splice(processed[i], 1);
365
- }
366
- }
367
-
368
- private sleep(ms: number): Promise<void> {
369
- return new Promise(resolve => setTimeout(resolve, ms));
370
- }
371
-
372
- async submitImprovements(taskId: string, improvements: string): Promise<void> {
373
- const feedbackMsg: AgentMessage = {
374
- type: 'feedback',
375
- from: this.peerId,
376
- taskId,
377
- payload: JSON.stringify({ taskId, improvements }),
378
- timestamp: Date.now()
379
- };
380
-
381
- const peers = p2pNetwork.getPeers();
382
- for (const peer of peers) {
383
- await p2pNetwork.sendMessage(peer, 'feedback', JSON.stringify(feedbackMsg));
384
- }
385
- }
386
-
387
- setAutoSendThreshold(threshold: number): void {
388
- this.autoSendThreshold = threshold;
389
- }
390
-
391
- setAutonomousMode(enabled: boolean): void {
392
- this.autonomousMode = enabled;
393
- }
394
-
395
- isAutonomousMode(): boolean {
396
- return this.autonomousMode;
397
- }
398
- }