@bolloon/bolloon-agent 0.1.36 → 0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/package.json +2 -2
  2. package/.auto-evolve-calls +0 -1
  3. package/.last-auto-evolve-baseline +0 -1
  4. package/.playwright-mcp/page-2026-06-16T07-51-45-706Z.yml +0 -130
  5. package/.playwright-mcp/page-2026-06-16T07-56-44-116Z.yml +0 -131
  6. package/Bolloon.md +0 -144
  7. package/Dive-into/CITATION.cff +0 -17
  8. package/Dive-into/LICENSE +0 -25
  9. package/Dive-into/README.md +0 -598
  10. package/Dive-into/README_zh.md +0 -599
  11. package/Dive-into/assets/context.png +0 -0
  12. package/Dive-into/assets/extensibility.png +0 -0
  13. package/Dive-into/assets/iteration.png +0 -0
  14. package/Dive-into/assets/layered_architecture.png +0 -0
  15. package/Dive-into/assets/main_structure.png +0 -0
  16. package/Dive-into/assets/permission.png +0 -0
  17. package/Dive-into/assets/session_compact.png +0 -0
  18. package/Dive-into/assets/subagent.png +0 -0
  19. package/Dive-into/paper/Dive_into_Claude_Code.pdf +0 -0
  20. package/dist/agents/constraint-layer.js.map +0 -1
  21. package/dist/agents/pi-sdk.js.map +0 -1
  22. package/dist/agents/workflow-engine.js.map +0 -1
  23. package/dist/bollharness/src/index.js +0 -5
  24. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
  25. package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
  26. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
  27. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
  28. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
  29. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
  30. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
  31. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
  32. package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
  33. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
  34. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
  35. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
  36. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
  37. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
  38. package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
  39. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
  40. package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
  41. package/dist/bollharness/src/scripts/checks/finding.js +0 -13
  42. package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
  43. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
  44. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
  45. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
  46. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
  47. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
  48. package/dist/bollharness/src/scripts/context_router.js +0 -67
  49. package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
  50. package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
  51. package/dist/bollharness/src/scripts/guard_router.js +0 -158
  52. package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
  53. package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
  54. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
  55. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
  56. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
  57. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
  58. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
  59. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
  60. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
  61. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
  62. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
  63. package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
  64. package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
  65. package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
  66. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
  67. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
  68. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
  69. package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
  70. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
  71. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
  72. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
  73. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
  74. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
  75. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
  76. package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
  77. package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
  78. package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
  79. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
  80. package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
  81. package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
  82. package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
  83. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
  84. package/dist/bollharness/src/scripts/sanitize.js +0 -6
  85. package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
  86. package/dist/bollharness-integration/context-router.js.map +0 -1
  87. package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
  88. package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
  89. package/dist/bollharness-integration/guard-checker.js.map +0 -1
  90. package/dist/bollharness-integration/index.js.map +0 -1
  91. package/dist/bollharness-integration/integration.js.map +0 -1
  92. package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
  93. package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
  94. package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
  95. package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
  96. package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
  97. package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
  98. package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
  99. package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
  100. package/dist/bollharness-integration/skill-adapter.js.map +0 -1
  101. package/dist/constraint-runtime/src/_archive_helper.js +0 -9
  102. package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
  103. package/dist/constraint-runtime/src/agent/index.js +0 -1
  104. package/dist/constraint-runtime/src/assistant/index.js +0 -12
  105. package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
  106. package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
  107. package/dist/constraint-runtime/src/bridge/index.js +0 -12
  108. package/dist/constraint-runtime/src/buddy/index.js +0 -12
  109. package/dist/constraint-runtime/src/cli/index.js +0 -12
  110. package/dist/constraint-runtime/src/command_graph.js +0 -10
  111. package/dist/constraint-runtime/src/commands.js +0 -60
  112. package/dist/constraint-runtime/src/components/index.js +0 -12
  113. package/dist/constraint-runtime/src/constants/index.js +0 -12
  114. package/dist/constraint-runtime/src/constraint/budget.js +0 -22
  115. package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
  116. package/dist/constraint-runtime/src/constraint/index.js +0 -2
  117. package/dist/constraint-runtime/src/constraint/permission.js +0 -20
  118. package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
  119. package/dist/constraint-runtime/src/context.js +0 -30
  120. package/dist/constraint-runtime/src/coordinator/index.js +0 -12
  121. package/dist/constraint-runtime/src/cost_hook.js +0 -4
  122. package/dist/constraint-runtime/src/cost_tracker.js +0 -8
  123. package/dist/constraint-runtime/src/deferred_init.js +0 -10
  124. package/dist/constraint-runtime/src/direct_modes.js +0 -6
  125. package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
  126. package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
  127. package/dist/constraint-runtime/src/execution_registry.js +0 -44
  128. package/dist/constraint-runtime/src/history.js +0 -9
  129. package/dist/constraint-runtime/src/hooks/index.js +0 -12
  130. package/dist/constraint-runtime/src/index.js +0 -26
  131. package/dist/constraint-runtime/src/ink.js +0 -4
  132. package/dist/constraint-runtime/src/keybindings/index.js +0 -12
  133. package/dist/constraint-runtime/src/memdir/index.js +0 -12
  134. package/dist/constraint-runtime/src/migrations/index.js +0 -12
  135. package/dist/constraint-runtime/src/models.js +0 -1
  136. package/dist/constraint-runtime/src/models.js.map +0 -1
  137. package/dist/constraint-runtime/src/moreright/index.js +0 -12
  138. package/dist/constraint-runtime/src/native_ts/index.js +0 -12
  139. package/dist/constraint-runtime/src/output_styles/index.js +0 -12
  140. package/dist/constraint-runtime/src/parity_audit.js +0 -12
  141. package/dist/constraint-runtime/src/plugins/index.js +0 -12
  142. package/dist/constraint-runtime/src/port_manifest.js +0 -11
  143. package/dist/constraint-runtime/src/prefetch.js +0 -9
  144. package/dist/constraint-runtime/src/query.js +0 -1
  145. package/dist/constraint-runtime/src/remote/index.js +0 -12
  146. package/dist/constraint-runtime/src/remote_runtime.js +0 -9
  147. package/dist/constraint-runtime/src/runtime/index.js +0 -1
  148. package/dist/constraint-runtime/src/runtime/session.js +0 -35
  149. package/dist/constraint-runtime/src/schemas/index.js +0 -12
  150. package/dist/constraint-runtime/src/screens/index.js +0 -12
  151. package/dist/constraint-runtime/src/server/index.js +0 -12
  152. package/dist/constraint-runtime/src/services/index.js +0 -12
  153. package/dist/constraint-runtime/src/session_store.js +0 -22
  154. package/dist/constraint-runtime/src/setup.js +0 -30
  155. package/dist/constraint-runtime/src/skills/index.js +0 -1
  156. package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
  157. package/dist/constraint-runtime/src/state/index.js +0 -12
  158. package/dist/constraint-runtime/src/system_init.js +0 -20
  159. package/dist/constraint-runtime/src/thinking/engine.js +0 -42
  160. package/dist/constraint-runtime/src/thinking/index.js +0 -1
  161. package/dist/constraint-runtime/src/tool_pool.js +0 -8
  162. package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
  163. package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
  164. package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
  165. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
  166. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
  167. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
  168. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
  169. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
  170. package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
  171. package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
  172. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
  173. package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
  174. package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
  175. package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
  176. package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
  177. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
  178. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
  179. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
  180. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
  181. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
  182. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
  183. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
  184. package/dist/constraint-runtime/src/tools.js +0 -80
  185. package/dist/constraint-runtime/src/transcript.js +0 -19
  186. package/dist/constraint-runtime/src/types/index.js +0 -12
  187. package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
  188. package/dist/constraint-runtime/src/utils/index.js +0 -12
  189. package/dist/constraint-runtime/src/vim/index.js +0 -12
  190. package/dist/constraint-runtime/src/voice/index.js +0 -12
  191. package/dist/constraints/index.js.map +0 -1
  192. package/dist/documents/reader.js.map +0 -1
  193. package/dist/llm/config-store.js.map +0 -1
  194. package/dist/llm/pi-ai.js.map +0 -1
  195. package/dist/network/agent-network.js.map +0 -1
  196. package/dist/network/iroh-integration.js.map +0 -1
  197. package/dist/network/iroh-transport.js.map +0 -1
  198. package/dist/network/p2p.js.map +0 -1
  199. package/dist/network/storage/adapters/json-adapter.js.map +0 -1
  200. package/dist/pi-ecosystem-colony/index.js.map +0 -1
  201. package/dist/pi-ecosystem-goals/index.js.map +0 -1
  202. package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
  203. package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
  204. package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
  205. package/dist/pi-ecosystem-judgment/index.js.map +0 -1
  206. package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
  207. package/dist/pi-ecosystem-mcp/index.js.map +0 -1
  208. package/dist/pi-ecosystem-subagents/index.js.map +0 -1
  209. package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
  210. package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
  211. package/dist/social/ant-colony/types.js.map +0 -1
  212. package/dist/social/channels/ChannelManager.js.map +0 -1
  213. package/dist/social/channels/DiapChannelBridge.js.map +0 -1
  214. package/dist/social/channels/InterestMatcher.js.map +0 -1
  215. package/dist/social/channels/types.js.map +0 -1
  216. package/dist/social/global-shared-context.js.map +0 -1
  217. package/dist/social/heartbeat.js.map +0 -1
  218. package/lefthook.yml +0 -33
  219. package/scripts/auto-evolve-loop.ts +0 -481
  220. package/scripts/build-web.ts +0 -116
  221. package/scripts/diff-reviewer.ts +0 -159
  222. package/scripts/validate-system-prompt.ts +0 -142
  223. package/scripts/weekly-report.ts +0 -364
  224. package/src/agents/agent-manifest-protocol.ts +0 -117
  225. package/src/agents/constraint-layer.ts +0 -309
  226. package/src/agents/iroh-secret.ts +0 -32
  227. package/src/agents/p2p-chat-tools.ts +0 -383
  228. package/src/agents/p2p-document-tools.ts +0 -347
  229. package/src/agents/permission-mode.ts +0 -127
  230. package/src/agents/pi-sdk.ts +0 -2895
  231. package/src/agents/pre-tool-validator.ts +0 -213
  232. package/src/agents/protocol.ts +0 -398
  233. package/src/agents/shell-guard.ts +0 -417
  234. package/src/agents/shell-tool.ts +0 -103
  235. package/src/agents/skill-loader.ts +0 -202
  236. package/src/agents/subagent-manager.ts +0 -553
  237. package/src/agents/workflow-engine.ts +0 -332
  238. package/src/agents/workflow-pivot-loop.ts +0 -766
  239. package/src/bollharness/.sanitize-report.json +0 -13
  240. package/src/bollharness/CLAUDE.md +0 -73
  241. package/src/bollharness/LICENSE +0 -21
  242. package/src/bollharness/README.md +0 -143
  243. package/src/bollharness/README.zh-CN.md +0 -131
  244. package/src/bollharness/package.json +0 -20
  245. package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
  246. package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
  247. package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
  248. package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
  249. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  250. package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
  251. package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
  252. package/src/bollharness/scripts/ci/count-components.sh +0 -65
  253. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  254. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  255. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  256. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  257. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  258. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  259. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  260. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  261. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  262. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  263. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  264. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
  265. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  266. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  267. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  268. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  269. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  270. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  271. package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
  272. package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
  273. package/src/bollharness/scripts/hooks/precompact.sh +0 -56
  274. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  275. package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
  276. package/src/bollharness/src/index.ts +0 -5
  277. package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
  278. package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
  279. package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
  280. package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
  281. package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
  282. package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
  283. package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
  284. package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
  285. package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
  286. package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
  287. package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
  288. package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
  289. package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
  290. package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
  291. package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
  292. package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
  293. package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
  294. package/src/bollharness/src/scripts/checks/finding.ts +0 -35
  295. package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
  296. package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
  297. package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
  298. package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
  299. package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
  300. package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
  301. package/src/bollharness/src/scripts/context_router.ts +0 -76
  302. package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
  303. package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
  304. package/src/bollharness/src/scripts/guard_router.ts +0 -194
  305. package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
  306. package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
  307. package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
  308. package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
  309. package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
  310. package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
  311. package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
  312. package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
  313. package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
  314. package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
  315. package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
  316. package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
  317. package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
  318. package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
  319. package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
  320. package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
  321. package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
  322. package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
  323. package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
  324. package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
  325. package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
  326. package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
  327. package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
  328. package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
  329. package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
  330. package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
  331. package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
  332. package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
  333. package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
  334. package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
  335. package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
  336. package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
  337. package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
  338. package/src/bollharness/src/scripts/sanitize.ts +0 -9
  339. package/src/bollharness/templates/persona/default.json +0 -19
  340. package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
  341. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  342. package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
  343. package/src/bollharness-integration/context-chain-router.ts +0 -474
  344. package/src/bollharness-integration/context-router-judgment.ts +0 -339
  345. package/src/bollharness-integration/context-router.ts +0 -583
  346. package/src/bollharness-integration/gate-state-machine.ts +0 -444
  347. package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
  348. package/src/bollharness-integration/guard-checker.ts +0 -451
  349. package/src/bollharness-integration/index.ts +0 -195
  350. package/src/bollharness-integration/integration.ts +0 -538
  351. package/src/bollharness-integration/judgment-prompts.yaml +0 -535
  352. package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
  353. package/src/bollharness-integration/skill-adapter.ts +0 -646
  354. package/src/bootstrap/bootstrap.ts +0 -135
  355. package/src/bootstrap/context-collector.ts +0 -371
  356. package/src/bootstrap/context-hierarchy.ts +0 -283
  357. package/src/bootstrap/lifecycle-hooks.ts +0 -289
  358. package/src/bootstrap/project-context.ts +0 -171
  359. package/src/cli/interface.ts +0 -211
  360. package/src/cli-entry.ts +0 -304
  361. package/src/constraints/index.ts +0 -6
  362. package/src/context-compaction/auto-compact.ts +0 -153
  363. package/src/context-compaction/budget-gate.ts +0 -32
  364. package/src/context-compaction/budget-reduce.ts +0 -37
  365. package/src/context-compaction/context-collapse.ts +0 -72
  366. package/src/context-compaction/index.ts +0 -24
  367. package/src/context-compaction/microcompact.ts +0 -54
  368. package/src/context-compaction/pipeline.ts +0 -133
  369. package/src/context-compaction/snip.ts +0 -51
  370. package/src/context-compaction/token-estimator.ts +0 -36
  371. package/src/context-compaction/types.ts +0 -99
  372. package/src/documents/reader.ts +0 -85
  373. package/src/documents/store.ts +0 -252
  374. package/src/electron-preload.ts +0 -25
  375. package/src/electron.ts +0 -200
  376. package/src/heartbeat/DaemonManager.ts +0 -283
  377. package/src/heartbeat/HealthMonitor.ts +0 -317
  378. package/src/heartbeat/StartupVerifier.ts +0 -223
  379. package/src/heartbeat/Watchdog.ts +0 -208
  380. package/src/heartbeat/index.ts +0 -109
  381. package/src/heartbeat/self-improve-bus.ts +0 -110
  382. package/src/heartbeat/types.ts +0 -82
  383. package/src/index.ts +0 -1724
  384. package/src/llm/audio-config-store.ts +0 -246
  385. package/src/llm/config-store.ts +0 -400
  386. package/src/llm/llm-judgment-client.ts +0 -471
  387. package/src/llm/pi-ai.ts +0 -653
  388. package/src/llm/system-prompt/health.ts +0 -159
  389. package/src/llm/system-prompt/layers/channel/local.md +0 -14
  390. package/src/llm/system-prompt/layers/channel/p2p-agent.md +0 -18
  391. package/src/llm/system-prompt/layers/channel/p2p-visitor.md +0 -19
  392. package/src/llm/system-prompt/layers/core/artifacts_storage.md +0 -89
  393. package/src/llm/system-prompt/layers/core/evenhandedness.md +0 -21
  394. package/src/llm/system-prompt/layers/core/hibs_reminders.md +0 -15
  395. package/src/llm/system-prompt/layers/core/identity.md +0 -37
  396. package/src/llm/system-prompt/layers/core/knowledge.md +0 -17
  397. package/src/llm/system-prompt/layers/core/memory_system.md +0 -12
  398. package/src/llm/system-prompt/layers/core/network_filesystem.md +0 -28
  399. package/src/llm/system-prompt/layers/core/refusal.md +0 -37
  400. package/src/llm/system-prompt/layers/core/tone.md +0 -31
  401. package/src/llm/system-prompt/layers/core/tools.thin.md +0 -13
  402. package/src/llm/system-prompt/layers/core/wellbeing.md +0 -41
  403. package/src/llm/system-prompt/layers/role/architect.md +0 -20
  404. package/src/llm/system-prompt/layers/role/expert.md +0 -19
  405. package/src/llm/system-prompt/layers/role/implementer.md +0 -15
  406. package/src/llm/system-prompt/layers/role/security.md +0 -15
  407. package/src/llm/system-prompt/layers/tool/artifacts.md +0 -72
  408. package/src/llm/system-prompt/layers/tool/bash.md +0 -25
  409. package/src/llm/system-prompt/layers/tool/hibs_api.md +0 -171
  410. package/src/llm/system-prompt/layers/tool/image_search.md +0 -70
  411. package/src/llm/system-prompt/layers/tool/manifest.md +0 -89
  412. package/src/llm/system-prompt/layers/tool/mcp_apps.md +0 -53
  413. package/src/llm/system-prompt/layers/tool/web_search.md +0 -83
  414. package/src/llm/system-prompt/registry.ts +0 -325
  415. package/src/llm/system-prompt/strip-hibsml.ts +0 -52
  416. package/src/llm/tool-manifest/ask_user_input.ts +0 -37
  417. package/src/llm/tool-manifest/bash.ts +0 -25
  418. package/src/llm/tool-manifest/create_file.ts +0 -26
  419. package/src/llm/tool-manifest/fetch_sports_data.ts +0 -28
  420. package/src/llm/tool-manifest/image_search.ts +0 -26
  421. package/src/llm/tool-manifest/index.ts +0 -88
  422. package/src/llm/tool-manifest/mcp.ts +0 -46
  423. package/src/llm/tool-manifest/message_compose.ts +0 -33
  424. package/src/llm/tool-manifest/places.ts +0 -86
  425. package/src/llm/tool-manifest/present_files.ts +0 -23
  426. package/src/llm/tool-manifest/recipe.ts +0 -42
  427. package/src/llm/tool-manifest/recommend_apps.ts +0 -25
  428. package/src/llm/tool-manifest/str_replace.ts +0 -29
  429. package/src/llm/tool-manifest/types.ts +0 -52
  430. package/src/llm/tool-manifest/view.ts +0 -26
  431. package/src/llm/tool-manifest/weather.ts +0 -29
  432. package/src/llm/tool-manifest/web.ts +0 -54
  433. package/src/llm/video-config-store.ts +0 -257
  434. package/src/network/agent-network.ts +0 -800
  435. package/src/network/hybrid-messenger.ts +0 -199
  436. package/src/network/iroh-bootstrap.ts +0 -57
  437. package/src/network/iroh-discovery.ts +0 -208
  438. package/src/network/iroh-integration.ts +0 -158
  439. package/src/network/iroh-transport.ts +0 -637
  440. package/src/network/known-peers.ts +0 -102
  441. package/src/network/p2p-direct.ts +0 -262
  442. package/src/network/p2p-secret.ts +0 -153
  443. package/src/network/p2p.ts +0 -964
  444. package/src/network/source-intent-broadcaster.ts +0 -242
  445. package/src/network/source-intent.ts +0 -167
  446. package/src/network/storage/adapters/json-adapter.ts +0 -454
  447. package/src/network/storage/index.ts +0 -203
  448. package/src/network/storage/types.ts +0 -166
  449. package/src/security/builtin-guards.ts +0 -162
  450. package/src/security/context-router-tool.ts +0 -122
  451. package/src/security/input-scanner.ts +0 -287
  452. package/src/security/react-harness.ts +0 -177
  453. package/src/security/tool-gate.ts +0 -294
  454. package/src/social/ant-colony/index.js +0 -19
  455. package/src/social/channels/ChannelManager.ts +0 -485
  456. package/src/social/channels/DiapChannelBridge.ts +0 -501
  457. package/src/social/channels/InterestMatcher.ts +0 -189
  458. package/src/social/channels/agent-workflow-config.json +0 -214
  459. package/src/social/channels/agent-workflow-config.yaml +0 -334
  460. package/src/social/channels/channel-agent-session.ts +0 -407
  461. package/src/social/channels/channel-heartbeat-agent.ts +0 -622
  462. package/src/social/channels/diap-doc-parser.ts +0 -282
  463. package/src/social/channels/harness-workflow-integrator.ts +0 -594
  464. package/src/social/channels/index.ts +0 -22
  465. package/src/social/channels/types.ts +0 -115
  466. package/src/social/global-shared-context.ts +0 -506
  467. package/src/social/heartbeat.ts +0 -1057
  468. package/src/social/persona/enhanced-persona.ts +0 -359
  469. package/src/types.d.ts +0 -12
  470. package/src/utils/auto-evolve-policy.ts +0 -138
  471. package/src/utils/auto-update.ts +0 -482
  472. package/src/utils/clamp.ts +0 -5
  473. package/src/web/agent-delegate-server.ts +0 -148
  474. package/src/web/api-config.html +0 -520
  475. package/src/web/client.js +0 -2352
  476. package/src/web/client.ts +0 -4326
  477. package/src/web/components/p2p/P2PModal.tsx +0 -416
  478. package/src/web/components/p2p/index.ts +0 -566
  479. package/src/web/components/p2p/index.tsx +0 -297
  480. package/src/web/components/p2p/p2p-connection.ts +0 -338
  481. package/src/web/components/p2p/p2p-identity.ts +0 -92
  482. package/src/web/components/p2p/p2p-manager.ts +0 -147
  483. package/src/web/components/p2p/p2p-messages.ts +0 -219
  484. package/src/web/components/p2p/p2p-modal.ts +0 -685
  485. package/src/web/components/p2p/p2p-store-memory.ts +0 -162
  486. package/src/web/components/p2p/p2p-tools.ts +0 -315
  487. package/src/web/components/p2p/types.ts +0 -170
  488. package/src/web/components/wallet-viem.mjs +0 -118
  489. package/src/web/design.md +0 -99
  490. package/src/web/icons/apple-touch-icon.png +0 -0
  491. package/src/web/icons/favicon-16x16.png +0 -0
  492. package/src/web/icons/favicon-192x192.png +0 -0
  493. package/src/web/icons/favicon-32x32.png +0 -0
  494. package/src/web/icons/favicon-48x48.png +0 -0
  495. package/src/web/icons/favicon-512x512.png +0 -0
  496. package/src/web/icons/favicon.icns +0 -0
  497. package/src/web/icons/favicon.ico +0 -0
  498. package/src/web/icons/icon.png +0 -0
  499. package/src/web/icons/image.png +0 -0
  500. package/src/web/index.html +0 -373
  501. package/src/web/iroh-delegate-transport.ts +0 -139
  502. package/src/web/manifest.json +0 -21
  503. package/src/web/server.ts +0 -5731
  504. package/src/web/style.css +0 -4737
  505. package/src/web/ui/message-renderer.ts +0 -540
  506. package/src/web/ui/step-timeline.ts +0 -394
  507. package/staging/auto-evolve/clean-001/.review-verdict +0 -9
  508. package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
  509. package/staging/auto-evolve/e2e-001/.patch-id +0 -1
  510. package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
  511. package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
  512. package/staging/auto-evolve/test-bad/.review-verdict +0 -12
  513. package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
  514. package/test-results/.last-run.json +0 -6
  515. package/test-results/src-test-web-loop-status-b-5734c-atus-bar-/346/230/276/347/244/272-spinner-/344/270/215/346/230/276/347/244/272/345/276/252/347/216/257/350/256/241/346/225/260/error-context.md +0 -285
  516. package/tsconfig.cli.json +0 -16
  517. package/tsconfig.electron.json +0 -20
  518. package/tsconfig.json +0 -18
@@ -1,481 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * auto-evolve-loop.ts — 阶段 D 主循环 (重写版)
4
- *
5
- * 流程 (per iteration):
6
- * 1. 跑 vitest, 拿 fail 信息
7
- * 2. 把 fail + 当前 src/test 源码喂给 LLM (走 PiAIModel / MiniMax)
8
- * 3. 写 diff 到 staging/auto-evolve/iter-<N>/
9
- * 4. 跑 detect-schema-changes + diff-reviewer
10
- * 5a. reviewer PASS → git apply --recount --whitespace=fix + commit
11
- * 5b. reviewer FAIL → log, 累计连续失败
12
- * 6. 连续 3 次 FAIL → 自动回滚 baseline + 通知
13
- *
14
- * 退出条件 (任一即停):
15
- * - 全部测试 PASS (loop 成功)
16
- * - 连续 3 次 FAIL (loop 认输)
17
- * - max-iter 达到 (默认 10)
18
- * - 人类 SIGINT (Ctrl-C)
19
- *
20
- * 用法:
21
- * tsx scripts/auto-evolve-loop.ts
22
- * tsx scripts/auto-evolve-loop.ts --max-iter 5
23
- * tsx scripts/auto-evolve-loop.ts --target src/utils/foo.ts
24
- */
25
-
26
- import { execFile } from 'child_process';
27
- import * as fs from 'fs/promises';
28
- import { promisify } from 'util';
29
- import * as path from 'path';
30
-
31
- const pExec = promisify(execFile);
32
- const REPO = process.cwd();
33
-
34
- /**
35
- * P2P 协作 broadcaster (行级 reserve + commit-intent 广播)
36
- * 走现有 P2PDirect + 'bolloon-agent-harness' topic, 不开新端口.
37
- * 失败 → 整个 loop 仍能跑 (broadcaster = null 时跳过), 不阻塞自迭代.
38
- */
39
- let broadcaster: any = null;
40
- async function initBroadcaster(): Promise<void> {
41
- try {
42
- const { P2PDirect } = await import('../src/network/p2p-direct.js');
43
- const { SourceIntentBroadcaster } = await import('../src/network/source-intent-broadcaster.js');
44
- const hostname = await pExec('hostname', []).then(r => r.stdout.trim()).catch(() => 'unknown');
45
- const p2p = new P2PDirect({ name: 'auto-evolve', role: 'auto-evolve-agent' });
46
- await p2p.start();
47
- const sb = new SourceIntentBroadcaster(p2p, {
48
- agent: `agent-${hostname}`,
49
- topic: 'bolloon-agent-harness',
50
- });
51
- await sb.start();
52
-
53
- // P2P Hook 4: 监听远端事件, 打印到日志 (聊天框能看)
54
- sb.on('remoteReserve', (m: any) => {
55
- console.log(`[p2p] 远端 ${m.agent} reserve ${m.file} 行 ${m.lines[0]}-${m.lines[1]} (task=${m.taskId})`);
56
- });
57
- sb.on('remoteConflict', (c: any) => {
58
- console.log(`[p2p] 冲突: 远端 ${c.agent} 也想改 ${JSON.stringify(c.lines)} — 我方让步 / 改方向`);
59
- });
60
- sb.on('remoteRelease', (m: any) => {
61
- console.log(`[p2p] 远端 ${m.agent} release ${m.file} 行 ${m.lines[0]}-${m.lines[1]}`);
62
- });
63
- sb.on('remoteCommit', (m: any) => {
64
- console.log(`[p2p] 远端 ${m.agent} commit ${m.file} sha=${m.sha} diffHash=${m.diffHash}`);
65
- });
66
-
67
- // 把 live reserves 注入到 LLM 系统 prompt (pi-ai Hook)
68
- try {
69
- const pi = await import('../src/llm/pi-ai.js');
70
- pi.setSystemPrependProvider(() => {
71
- const live = sb.liveReserves();
72
- if (live.length === 0) return null;
73
- return [
74
- '【行级 P2P 协调】其他智能体正在改的代码行:',
75
- ...live.map(r => ` - ${r.file} 行 ${r.lines[0]}-${r.lines[1]} (${r.agent}, task=${r.taskId})`),
76
- '你即将改的代码行如果重叠, 请让出或改别的行.',
77
- ].join('\n');
78
- });
79
- console.log('[p2p] systemPrependProvider 已注册');
80
- } catch (err: any) {
81
- console.warn(`[p2p] systemPrependProvider 注册失败: ${err.message?.slice(0, 100)}`);
82
- }
83
-
84
- broadcaster = sb;
85
- console.log('[p2p] broadcaster 已启动');
86
- } catch (err: any) {
87
- console.warn(`[p2p] broadcaster 启动失败 (loop 继续): ${err.message?.slice(0, 200)}`);
88
- broadcaster = null;
89
- }
90
- }
91
-
92
- interface VitestResult {
93
- failed: number;
94
- passed: number;
95
- totalFiles: string[];
96
- failingTests: { file: string; name: string; message: string }[];
97
- }
98
-
99
- /**
100
- * 跑全量 vitest, 在 parseVitestJson 里 filter
101
- * (vitest 不接受 positional path filter, 会被忽略)
102
- */
103
- async function runVitest(targetFile?: string): Promise<VitestResult> {
104
- const args = ['vitest', 'run', '--reporter=json', '--no-color'];
105
- try {
106
- const { stdout } = await pExec('npx', args, { cwd: REPO, maxBuffer: 50 * 1024 * 1024 });
107
- const json = JSON.parse(stdout);
108
- return parseVitestJson(json, targetFile);
109
- } catch (err: any) {
110
- if (err.stdout) {
111
- try {
112
- const json = JSON.parse(err.stdout);
113
- return parseVitestJson(json, targetFile);
114
- } catch {
115
- // 解析失败
116
- }
117
- }
118
- return { failed: 1, passed: 0, totalFiles: [], failingTests: [{ file: 'unknown', name: 'vitest crashed', message: err.message?.slice(0, 500) || '' }] };
119
- }
120
- }
121
-
122
- function parseVitestJson(j: any, targetFile?: string): VitestResult {
123
- const failingTests: VitestResult['failingTests'] = [];
124
- const totalFiles: string[] = [];
125
- let failed = 0;
126
- let passed = 0;
127
- for (const f of j.testResults || []) {
128
- // targetFile 过滤: 只看匹配的文件
129
- if (targetFile && !f.name?.includes(targetFile.split('/').pop() || '')) {
130
- continue;
131
- }
132
- totalFiles.push(f.name || '');
133
- failed += f.assertionResults?.filter((a: any) => a.status === 'failed').length || 0;
134
- passed += f.assertionResults?.filter((a: any) => a.status === 'passed').length || 0;
135
- for (const a of f.assertionResults || []) {
136
- if (a.status === 'failed') {
137
- failingTests.push({
138
- file: f.name,
139
- name: a.fullName || a.title,
140
- message: (a.failureMessages || []).join('\n').slice(0, 1500),
141
- });
142
- }
143
- }
144
- }
145
- return { failed, passed, totalFiles, failingTests };
146
- }
147
-
148
- /**
149
- * 调 LLM — 走 bolloon 自带 PiAIModel (MiniMax, 读 .env 的 MINIMAX_API_KEY)
150
- * 无 key 或 SDK 不可用都返回空字符串 (loop 认作 "无 diff" 重试)
151
- */
152
- async function callLLM(prompt: string): Promise<string> {
153
- try {
154
- const pi = await import('../src/llm/pi-ai.js' as any).catch(() => import('../src/llm/pi-ai.js'));
155
- const client = pi.initMinimax();
156
- const text = await client.generateText({
157
- messages: [{ role: 'user', content: prompt }],
158
- maxTokens: 4096,
159
- temperature: 0.2,
160
- });
161
- await bumpCallCount();
162
- return text || '';
163
- } catch (e: any) {
164
- console.warn(`[loop] PiAIModel 不可用: ${e.message?.slice(0, 100)}`);
165
- return '';
166
- }
167
- }
168
-
169
- async function bumpCallCount(): Promise<void> {
170
- const f = path.join(REPO, '.auto-evolve-calls');
171
- const today = new Date().toISOString().slice(0, 10);
172
- let count = 0;
173
- try {
174
- const lines = (await fs.readFile(f, 'utf-8')).trim().split('\n').filter(Boolean);
175
- const lastLine = lines[lines.length - 1];
176
- if (lastLine?.startsWith(today)) count = parseInt(lastLine.split(':')[1] || '0', 10);
177
- } catch { /* no file yet */ }
178
- await fs.writeFile(f, `${today}:${count + 1}\n`, 'utf-8');
179
- }
180
-
181
- const FIX_PROMPT = `你是一个谨慎的代码修复助手. 你的工作是修复失败的测试, **不**做无关改动.
182
-
183
- 约束 (违反任一即重做):
184
- 1. 改动最小: 只动让测试通过必需的部分
185
- 2. 不改测试本身 (除非 test 自身有 bug)
186
- 3. 不引入新依赖
187
- 4. 不删注释 / 不改注释
188
- 5. 不动 schema (interface/type) 除非 fail 信息明确要求
189
- 6. 不用 any / unknown / @ts-ignore 偷懒
190
- 7. 不动 package.json / tsconfig.json
191
-
192
- 输出格式 (严格):
193
- - 第一个字符必须是 \`\`\`diff
194
- - 中间是 unified diff (git format-patch 风格, --- a/path +++ b/path)
195
- - 最后一个字符必须是 \`\`\`
196
- - 不要在 diff 块外输出任何文字
197
- - 不要使用 thinking 块 (下游会丢失)
198
- - **改动必须严格匹配当前源码 (行数, 缩进)**
199
-
200
- FAIL 信息:
201
- {{FAIL}}
202
-
203
- 相关源码 (请严格匹配行数和缩进):
204
- {{SOURCE}}
205
-
206
- 请**只**输出 diff 块:`;
207
-
208
- async function getSourceContext(file: string): Promise<string> {
209
- try {
210
- const content = await fs.readFile(file, 'utf-8');
211
- return content.slice(0, 8000);
212
- } catch {
213
- return '';
214
- }
215
- }
216
-
217
- /**
218
- * 从 test 文件的 import 语句里提取 src 路径, 读出来
219
- * 关键: 让 LLM 看到真实源文件, 否则它只能猜行数, diff apply 会失败
220
- */
221
- async function getImportedSource(testFile: string): Promise<string> {
222
- try {
223
- const testContent = await fs.readFile(testFile, 'utf-8');
224
- const dir = path.dirname(testFile);
225
- const imports = [...testContent.matchAll(/from\s+['"]([^'"]+)['"]/g)].map((m) => m[1]);
226
- const out: string[] = [];
227
- for (const imp of imports) {
228
- if (!imp.startsWith('.')) continue;
229
- let resolved = path.resolve(dir, imp);
230
- if (resolved.endsWith('.js')) {
231
- // 试 .ts 替换
232
- const tsTry = resolved.replace(/\.js$/, '.ts');
233
- if (await fs.access(tsTry).then(() => true).catch(() => false)) {
234
- resolved = tsTry;
235
- }
236
- } else if (!resolved.endsWith('.ts')) {
237
- if (await fs.access(resolved + '.ts').then(() => true).catch(() => false)) {
238
- resolved += '.ts';
239
- }
240
- }
241
- try {
242
- const content = await fs.readFile(resolved, 'utf-8');
243
- out.push(`--- ${resolved} ---\n${content.slice(0, 4000)}`);
244
- } catch { /* skip */ }
245
- }
246
- return out.join('\n\n');
247
- } catch {
248
- return '';
249
- }
250
- }
251
-
252
- function extractDiff(llmOutput: string): string | null {
253
- // 找 ```diff ... ``` 块
254
- const m = /```diff\s*([\s\S]*?)```/.exec(llmOutput);
255
- if (m) return m[1].trim();
256
- return null;
257
- }
258
-
259
- async function writePatch(iter: number, patchContent: string): Promise<string> {
260
- const id = `iter-${String(iter).padStart(3, '0')}`;
261
- const dir = path.join(REPO, 'staging', 'auto-evolve', id);
262
- await fs.mkdir(dir, { recursive: true });
263
- await fs.writeFile(path.join(dir, `${id}.patch`), patchContent, 'utf-8');
264
- await fs.writeFile(path.join(dir, '.patch-id'), id, 'utf-8');
265
- return id;
266
- }
267
-
268
- async function runReviewer(patchId: string): Promise<{ verdict: 'PASS' | 'FAIL'; concerns: string[] }> {
269
- try {
270
- await pExec('bash', [path.join(REPO, 'scripts/detect-schema-changes.sh'), patchId], { cwd: REPO });
271
- await pExec('npx', ['tsx', 'scripts/diff-reviewer.ts', patchId, '--model', 'claude-sonnet-4-6'], { cwd: REPO });
272
- const verdictFile = path.join(REPO, 'staging', 'auto-evolve', patchId, '.review-verdict');
273
- const json = JSON.parse(await fs.readFile(verdictFile, 'utf-8'));
274
- return { verdict: json.verdict, concerns: json.concerns || [] };
275
- } catch (err: any) {
276
- return { verdict: 'FAIL', concerns: [err.message?.slice(0, 200) || 'reviewer crashed'] };
277
- }
278
- }
279
-
280
- async function commitPatch(patchId: string): Promise<boolean> {
281
- try {
282
- const patchFile = path.join(REPO, 'staging', 'auto-evolve', patchId, `${patchId}.patch`);
283
-
284
- // patch 末尾补 newline (LLM 输出可能无)
285
- let patchContent = await fs.readFile(patchFile, 'utf-8');
286
- if (!patchContent.endsWith('\n')) patchContent += '\n';
287
- await fs.writeFile(patchFile, patchContent, 'utf-8');
288
-
289
- // --whitespace=fix 容错, --recount 重算行号
290
- await pExec('git', ['apply', '--recount', '--whitespace=fix', patchFile], { cwd: REPO });
291
- const { stdout } = await pExec('git', ['status', '--porcelain'], { cwd: REPO });
292
- const files = stdout.trim().split('\n').filter(Boolean).map((l) => l.split(/\s+/).slice(1).join(' '));
293
- for (const f of files) {
294
- try {
295
- await pExec('git', ['add', f], { cwd: REPO });
296
- } catch { /* binary or removed */ }
297
- }
298
- await pExec('git', ['commit', '-m', `auto-evolve: ${patchId} (LLM 修复)`], { cwd: REPO });
299
-
300
- // P2P Hook 2: 广播 commit-intent (供对方智能体做轻量审计 / 触发 push)
301
- if (broadcaster) {
302
- try {
303
- const { stdout: shaOut } = await pExec('git', ['rev-parse', '--short', 'HEAD'], { cwd: REPO });
304
- const sha = shaOut.trim();
305
- for (const f of files) {
306
- // 简化: 整文件视为 [1, 99999], diffHash 用 patchId
307
- await broadcaster.broadcastCommitIntent({
308
- taskId: patchId,
309
- file: f,
310
- lines: [1, 99999],
311
- sha,
312
- diffHash: patchId.slice(0, 16),
313
- });
314
- }
315
- console.log(`[p2p] commit-intent 广播: ${files.length} 个文件, sha=${sha}`);
316
- } catch (err: any) {
317
- console.warn(`[p2p] commit-intent 广播失败: ${err.message?.slice(0, 100)}`);
318
- }
319
- }
320
-
321
- return true;
322
- } catch (err: any) {
323
- console.error(`[loop] commit 失败: ${err.message?.slice(0, 200)}`);
324
- return false;
325
- }
326
- }
327
-
328
- async function rollback(baseline: string): Promise<void> {
329
- console.log(`[loop] ⚠️ 自动回滚到 ${baseline}`);
330
- await pExec('git', ['reset', '--hard', baseline], { cwd: REPO });
331
- }
332
-
333
- async function notify(msg: string): Promise<void> {
334
- const f = path.join(REPO, '.auto-evolve-notify');
335
- const line = `[${new Date().toISOString()}] ${msg}\n`;
336
- await fs.appendFile(f, line, 'utf-8');
337
- console.log(`[notify] ${msg}`);
338
- }
339
-
340
- async function main() {
341
- const args = process.argv.slice(2);
342
- let maxIter = 10;
343
- let targetFile: string | undefined;
344
- for (let i = 0; i < args.length; i++) {
345
- if (args[i] === '--max-iter' && args[i + 1]) maxIter = parseInt(args[++i], 10);
346
- if (args[i] === '--target' && args[i + 1]) targetFile = args[++i];
347
- }
348
-
349
- // P2P Hook 1: 启动 broadcaster (失败不阻塞 loop)
350
- await initBroadcaster();
351
-
352
- // 必须先有 baseline
353
- if (!(await fs.stat('.last-auto-evolve-baseline').catch(() => null))) {
354
- console.log('[loop] 没 baseline, 先打一个');
355
- await pExec('bash', ['scripts/auto-evolve-snapshot.sh', 'snapshot'], { cwd: REPO });
356
- }
357
- const baseline = (await fs.readFile('.last-auto-evolve-baseline', 'utf-8')).trim();
358
- console.log(`[loop] baseline: ${baseline}, max-iter: ${maxIter}`);
359
-
360
- let consecutiveFails = 0;
361
- for (let iter = 1; iter <= maxIter; iter++) {
362
- console.log(`\n========== iter ${iter}/${maxIter} ==========`);
363
-
364
- // 1. 跑 vitest
365
- const result = await runVitest(targetFile);
366
- console.log(`[vitest] passed=${result.passed} failed=${result.failed}`);
367
-
368
- if (result.failed === 0) {
369
- console.log('[loop] ✅ 全部测试通过, 退出');
370
- return;
371
- }
372
-
373
- // 2. 让 LLM 修
374
- const failSummary = result.failingTests
375
- .slice(0, 3)
376
- .map((f) => `FILE: ${f.file}\nTEST: ${f.name}\nERROR: ${f.message}`)
377
- .join('\n---\n');
378
- const firstTest = result.failingTests[0]?.file || '';
379
- const testCtx = await getSourceContext(firstTest);
380
- const srcCtx = await getImportedSource(firstTest);
381
- const sourceCtx = `=== TEST FILE ===\n${testCtx}\n\n=== SRC FILE (imported) ===\n${srcCtx}`;
382
- const prompt = FIX_PROMPT
383
- .replace('{{FAIL}}', failSummary)
384
- .replace('{{SOURCE}}', sourceCtx);
385
-
386
- console.log('[loop] 调 LLM 修...');
387
-
388
- // P2P Hook 3: best-effort reserve 我方即将改的文件 (行级粒度, 整文件 [1, 99999])
389
- // 失败/冲突 → 仅 log, 不阻塞 loop (LLM 已经能从 systemPrepend 看到 liveReserves)
390
- if (broadcaster) {
391
- const filesToReserve = [firstTest, ...(srcCtx.match(/^=== SRC FILE \(imported\) ===\s*\n([^\n]+)$/m)?.[1] ? [srcCtx.match(/^=== SRC FILE \(imported\) ===\s*\n([^\n]+)$/m)![1]] : [])]
392
- .map(p => p.replace(REPO + '/', ''))
393
- .filter((p, i, a) => p && a.indexOf(p) === i);
394
- for (const f of filesToReserve) {
395
- if (!f || f === 'unknown') continue;
396
- try {
397
- const r = await broadcaster.reserve({ taskId: patchId || `iter-${iter}`, file: f, lines: [1, 99999] });
398
- if (r.ok) {
399
- console.log(`[p2p] reserve OK: ${f}`);
400
- } else {
401
- console.log(`[p2p] reserve 冲突: ${f} 已被 ${r.existing.agent} 占用, LLM 会避开`);
402
- }
403
- } catch (err: any) {
404
- console.warn(`[p2p] reserve 失败 (继续): ${err.message?.slice(0, 80)}`);
405
- }
406
- }
407
- }
408
-
409
- const llmOut = await callLLM(prompt);
410
- const diff = extractDiff(llmOut);
411
- if (!diff) {
412
- console.log('[loop] LLM 没返回有效 diff');
413
- console.log('--- LLM 原始输出 (前 800) ---');
414
- console.log(llmOut.slice(0, 800));
415
- console.log('---');
416
- consecutiveFails++;
417
- if (consecutiveFails >= 3) {
418
- await notify(`连续 3 次 LLM 无 diff, 自动回滚 ${baseline}`);
419
- await rollback(baseline);
420
- return;
421
- }
422
- continue;
423
- }
424
-
425
- // 3. 写 staging
426
- const patchId = await writePatch(iter, diff);
427
- console.log(`[loop] 写到 ${patchId}`);
428
-
429
- // 4. 跑 reviewer
430
- const review = await runReviewer(patchId);
431
- console.log(`[reviewer] verdict=${review.verdict} concerns=${review.concerns.length}`);
432
- if (review.concerns.length > 0) {
433
- for (const c of review.concerns) console.log(` - ${c}`);
434
- }
435
-
436
- if (review.verdict === 'FAIL') {
437
- consecutiveFails++;
438
- if (consecutiveFails >= 3) {
439
- await notify(`连续 3 次 reviewer FAIL, 自动回滚 ${baseline}`);
440
- await rollback(baseline);
441
- return;
442
- }
443
- continue;
444
- }
445
-
446
- // 5. 提交
447
- const committed = await commitPatch(patchId);
448
- if (!committed) {
449
- console.log('[loop] commit 失败 (apply 或 lefthook 拦), 算 fail');
450
- consecutiveFails++;
451
- // commit 失败时只清 staged + 回滚 working tree (tracked), 不删 untracked 新文件
452
- try {
453
- await pExec('git', ['reset'], { cwd: REPO });
454
- await pExec('git', ['checkout', '--', '.'], { cwd: REPO });
455
- } catch { /* 忽略 */ }
456
- continue;
457
- }
458
-
459
- // 6. 跑 vitest 看 commit 后是否真过
460
- const after = await runVitest(targetFile);
461
- console.log(`[vitest after] passed=${after.passed} failed=${after.failed}`);
462
- if (after.failed < result.failed) {
463
- console.log(`[loop] 进步: ${result.failed} → ${after.failed} fail`);
464
- consecutiveFails = 0;
465
- } else {
466
- console.log(`[loop] 没进步, revert 这次 commit`);
467
- await pExec('git', ['reset', '--hard', 'HEAD~1'], { cwd: REPO });
468
- consecutiveFails++;
469
- }
470
-
471
- if (consecutiveFails >= 3) {
472
- await notify(`连续 3 次无进步, 自动回滚 ${baseline}`);
473
- await rollback(baseline);
474
- return;
475
- }
476
- }
477
-
478
- console.log(`[loop] 达到 max-iter=${maxIter}, 退出`);
479
- }
480
-
481
- main().catch((e) => { console.error('[loop] fatal:', e); process.exit(1); });
@@ -1,116 +0,0 @@
1
- /**
2
- * Web 构建脚本
3
- */
4
- import * as fs from 'fs/promises';
5
- import * as path from 'path';
6
- import { execSync } from 'child_process';
7
- import * as esbuild from 'esbuild';
8
-
9
- const ROOT = path.resolve(import.meta.dirname, '..');
10
- const DIST_WEB = path.join(ROOT, 'dist', 'web');
11
-
12
- async function main() {
13
- console.log('[build-web] 开始构建...');
14
-
15
- // 重要: 不能 rm -rf 整个 dist/web/, 否则会删掉 build:main 编译出来的
16
- // dist/web/server.js. 只清理 web 静态资源, 保留 server.js.
17
- for (const f of ['index.html', 'api-config.html', 'style.css', 'client.js', 'components']) {
18
- await fs.rm(path.join(DIST_WEB, f), { recursive: true, force: true });
19
- }
20
- await fs.mkdir(DIST_WEB, { recursive: true });
21
- await fs.mkdir(path.join(DIST_WEB, 'components', 'p2p'), { recursive: true });
22
-
23
- // 编译 TypeScript 模块
24
- console.log('[build-web] 编译 TypeScript 模块...');
25
- const moduleFiles = [
26
- 'src/web/components/p2p/types.ts',
27
- 'src/web/components/p2p/p2p-store-memory.ts',
28
- 'src/web/components/p2p/p2p-identity.ts',
29
- 'src/web/components/p2p/p2p-connection.ts',
30
- 'src/web/components/p2p/p2p-messages.ts',
31
- 'src/web/components/p2p/p2p-manager.ts',
32
- ];
33
-
34
- try {
35
- execSync(`npx tsc --outDir dist/web/components/p2p --declaration false --skipLibCheck --target ES2022 --module ESNext --moduleResolution bundler ${moduleFiles.join(' ')}`, {
36
- cwd: ROOT,
37
- stdio: 'inherit'
38
- });
39
- } catch {
40
- console.log('[build-web] TypeScript 编译有警告,继续...');
41
- }
42
-
43
- // 编译 P2P Modal UI(esbuild)
44
- console.log('[build-web] 编译 P2P Modal UI...');
45
- await esbuild.build({
46
- entryPoints: [path.join(ROOT, 'src/web/components/p2p/index.ts')],
47
- outfile: path.join(DIST_WEB, 'components/p2p/index.js'),
48
- format: 'esm',
49
- target: 'es2022',
50
- platform: 'browser',
51
- minify: false,
52
- });
53
-
54
- // 2026-06-15: 编译 message-renderer.ts (对话显示 UI 模块)
55
- // esbuild 编译 .ts → dist/web/ui/message-renderer.js (ESM, 浏览器侧 <script type="module"> 加载)
56
- console.log('[build-web] 编译 message-renderer.ts...');
57
- await fs.mkdir(path.join(DIST_WEB, 'ui'), { recursive: true });
58
- await esbuild.build({
59
- entryPoints: [path.join(ROOT, 'src/web/ui/message-renderer.ts')],
60
- outfile: path.join(DIST_WEB, 'ui/message-renderer.js'),
61
- format: 'esm',
62
- target: 'es2022',
63
- platform: 'browser',
64
- minify: false,
65
- });
66
-
67
- // 2026-06-15: 编译 step-timeline.ts (气泡内 4 状态步骤条)
68
- console.log('[build-web] 编译 step-timeline.ts...');
69
- await esbuild.build({
70
- entryPoints: [path.join(ROOT, 'src/web/ui/step-timeline.ts')],
71
- outfile: path.join(DIST_WEB, 'ui/step-timeline.js'),
72
- format: 'esm',
73
- target: 'es2022',
74
- platform: 'browser',
75
- minify: false,
76
- });
77
-
78
- // 编译主客户端入口 (classic script, 非 module; 由 index.html 以 /client.js 加载)
79
- console.log('[build-web] 编译 client.ts...');
80
- await esbuild.build({
81
- entryPoints: [path.join(ROOT, 'src/web/client.ts')],
82
- outfile: path.join(DIST_WEB, 'client.js'),
83
- format: 'iife',
84
- target: 'es2022',
85
- platform: 'browser',
86
- minify: false,
87
- });
88
-
89
- // 复制静态文件
90
- console.log('[build-web] 复制静态文件...');
91
- await fs.copyFile(path.join(ROOT, 'src/web/index.html'), path.join(DIST_WEB, 'index.html'));
92
- await fs.copyFile(path.join(ROOT, 'src/web/api-config.html'), path.join(DIST_WEB, 'api-config.html'));
93
- await fs.copyFile(path.join(ROOT, 'src/web/style.css'), path.join(DIST_WEB, 'style.css'));
94
- // 复制 PWA manifest (index.html 里有 <link rel="manifest">, 否则浏览器会 404)
95
- await fs.copyFile(path.join(ROOT, 'src/web/manifest.json'), path.join(DIST_WEB, 'manifest.json'));
96
- // 复制 icons 目录 (manifest.json 里引用了 favicon 等)
97
- await fs.cp(path.join(ROOT, 'src/web/icons'), path.join(DIST_WEB, 'icons'), { recursive: true });
98
-
99
- // 复制 components/ 下的独立 ESM 模块 (非 p2p 那些, 已被 esbuild 单独编译)
100
- // 例如 wallet-viem.mjs: 浏览器侧 viem 封装, 被 index.html 引用
101
- const extraComponentsDir = path.join(ROOT, 'src/web/components');
102
- for (const entry of await fs.readdir(extraComponentsDir)) {
103
- if (entry === 'p2p') continue;
104
- const src = path.join(extraComponentsDir, entry);
105
- const dest = path.join(DIST_WEB, 'components', entry);
106
- const stat = await fs.stat(src);
107
- if (stat.isFile()) {
108
- await fs.mkdir(path.dirname(dest), { recursive: true });
109
- await fs.copyFile(src, dest);
110
- }
111
- }
112
-
113
- console.log('[build-web] 完成!');
114
- }
115
-
116
- main().catch(console.error);