@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,223 +0,0 @@
1
- /**
2
- * StartupVerifier - 启动自检验证器
3
- * 在服务启动时验证所有关键组件
4
- */
5
-
6
- import type { StartupReport, StartupCheck } from './types.js';
7
-
8
- export class StartupVerifier {
9
- private checks: Map<string, StartupCheck> = new Map();
10
-
11
- /**
12
- * 添加检查项
13
- */
14
- addCheck(name: string): void {
15
- this.checks.set(name, { name, status: 'pending' });
16
- }
17
-
18
- /**
19
- * 标记检查开始
20
- */
21
- startCheck(name: string): void {
22
- const check = this.checks.get(name);
23
- if (check) {
24
- check.status = 'running';
25
- check.startTime = Date.now();
26
- }
27
- }
28
-
29
- /**
30
- * 标记检查完成
31
- */
32
- completeCheck(name: string, passed: boolean, message?: string): void {
33
- const check = this.checks.get(name);
34
- if (check) {
35
- check.status = passed ? 'passed' : 'failed';
36
- check.message = message;
37
- check.duration_ms = Date.now() - (check.startTime || Date.now());
38
- }
39
- }
40
-
41
- /**
42
- * 运行所有自检
43
- */
44
- async verify(): Promise<StartupReport> {
45
- const startTime = Date.now();
46
- const critical_failures: string[] = [];
47
-
48
- // 1. 检查 Node.js 版本
49
- this.addCheck('node_version');
50
- this.startCheck('node_version');
51
- const nodeVersion = process.version;
52
- const majorVersion = parseInt(nodeVersion.replace('v', '').split('.')[0], 10);
53
- if (majorVersion >= 18) {
54
- this.completeCheck('node_version', true, `Node.js ${nodeVersion}`);
55
- } else {
56
- this.completeCheck('node_version', false, `Node.js ${nodeVersion} too old, need >= 18`);
57
- critical_failures.push('Node.js version too old');
58
- }
59
-
60
- // 2. 检查必要目录
61
- this.addCheck('required_directories');
62
- this.startCheck('required_directories');
63
- try {
64
- const fs = await import('fs/promises');
65
- const paths = [
66
- process.env.HOME ? `${process.env.HOME}/.bolloon` : '/tmp/.bolloon',
67
- '/tmp'
68
- ];
69
- for (const p of paths) {
70
- await fs.access(p);
71
- }
72
- this.completeCheck('required_directories', true, 'All required directories accessible');
73
- } catch (err: any) {
74
- this.completeCheck('required_directories', false, err.message);
75
- critical_failures.push('Cannot access required directories');
76
- }
77
-
78
- // 3. 检查 LLM 配置
79
- this.addCheck('llm_config');
80
- this.startCheck('llm_config');
81
- const hasLlmKey = !!(
82
- process.env.OPENAI_API_KEY ||
83
- process.env.ANTHROPIC_API_KEY ||
84
- process.env.MINIMAX_API_KEY ||
85
- process.env.OPENROUTER_API_KEY ||
86
- process.env.GEMINI_API_KEY ||
87
- process.env.OLLAMA_BASE_URL
88
- );
89
- if (hasLlmKey) {
90
- this.completeCheck('llm_config', true, 'LLM API key found');
91
- } else {
92
- this.completeCheck('llm_config', false, 'No LLM API key configured (optional)');
93
- // LLM 配置不是致命的,只是警告
94
- }
95
-
96
- // 4. 检查 P2P 依赖
97
- this.addCheck('p2p_modules');
98
- this.startCheck('p2p_modules');
99
- try {
100
- await import('@diap/sdk');
101
- this.completeCheck('p2p_modules', true, '@diap/sdk available');
102
- } catch (err: any) {
103
- this.completeCheck('p2p_modules', false, `@diap/sdk not available: ${err.message}`);
104
- critical_failures.push('@diap/sdk module not found');
105
- }
106
-
107
- // 5. 检查 IPFS 连接
108
- this.addCheck('ipfs_connection');
109
- this.startCheck('ipfs_connection');
110
- try {
111
- const ipfsRes = await fetch('http://127.0.0.1:5001/api/v0/id', {
112
- method: 'POST',
113
- signal: AbortSignal.timeout(3000)
114
- });
115
- if (ipfsRes.ok) {
116
- this.completeCheck('ipfs_connection', true, 'IPFS local node accessible');
117
- } else {
118
- this.completeCheck('ipfs_connection', false, 'IPFS returned error');
119
- }
120
- } catch (err: any) {
121
- this.completeCheck('ipfs_connection', false, 'IPFS not accessible (optional)');
122
- }
123
-
124
- // 6. 检查内存
125
- this.addCheck('memory');
126
- this.startCheck('memory');
127
- const usage = process.memoryUsage();
128
- const heapPercent = (usage.heapUsed / usage.heapTotal) * 100;
129
- if (heapPercent < 90) {
130
- this.completeCheck('memory', true, `Heap usage ${heapPercent.toFixed(1)}%`);
131
- } else {
132
- this.completeCheck('memory', false, `Heap usage critical: ${heapPercent.toFixed(1)}%`);
133
- critical_failures.push('Memory usage too high at startup');
134
- }
135
-
136
- // 7. 检查网络
137
- this.addCheck('network');
138
- this.startCheck('network');
139
- try {
140
- const res = await fetch('https://www.google.com/generate_204', {
141
- signal: AbortSignal.timeout(5000)
142
- });
143
- this.completeCheck('network', true, 'Internet connection available');
144
- } catch {
145
- this.completeCheck('network', false, 'No internet connection (optional)');
146
- }
147
-
148
- const totalDuration = Date.now() - startTime;
149
-
150
- return {
151
- success: critical_failures.length === 0,
152
- checks: Array.from(this.checks.values()),
153
- total_duration_ms: totalDuration,
154
- critical_failures
155
- };
156
- }
157
-
158
- /**
159
- * 打印检查报告
160
- */
161
- printReport(report: StartupReport): void {
162
- console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
163
- console.log('🚀 Bolloon 启动自检报告');
164
- console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
165
-
166
- for (const check of report.checks) {
167
- const icon = check.status === 'passed' ? '✅' :
168
- check.status === 'failed' ? '❌' :
169
- check.status === 'running' ? '⏳' : '⭕';
170
- const duration = check.duration_ms ? ` (${check.duration_ms}ms)` : '';
171
- console.log(` ${icon} ${check.name}${duration}`);
172
- if (check.message) {
173
- console.log(` ${check.message}`);
174
- }
175
- }
176
-
177
- console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
178
- console.log(`总计耗时: ${report.total_duration_ms}ms`);
179
-
180
- if (report.success) {
181
- console.log('✅ 所有关键检查通过!');
182
- } else {
183
- console.log('❌ 关键检查失败:');
184
- for (const failure of report.critical_failures) {
185
- console.log(` · ${failure}`);
186
- }
187
- }
188
- console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
189
- }
190
-
191
- /**
192
- * 快速验证(不打印)
193
- */
194
- async quickCheck(): Promise<boolean> {
195
- const report = await this.verify();
196
- return report.success;
197
- }
198
-
199
- /**
200
- * 获取检查状态
201
- */
202
- getChecks(): StartupCheck[] {
203
- return Array.from(this.checks.values());
204
- }
205
- }
206
-
207
- // 导出便捷函数
208
- let startupVerifierInstance: StartupVerifier | null = null;
209
-
210
- export async function runStartupVerification(): Promise<StartupReport> {
211
- const verifier = new StartupVerifier();
212
- startupVerifierInstance = verifier;
213
- const report = await verifier.verify();
214
- verifier.printReport(report);
215
- return report;
216
- }
217
-
218
- export function getStartupVerifier(): StartupVerifier {
219
- if (!startupVerifierInstance) {
220
- startupVerifierInstance = new StartupVerifier();
221
- }
222
- return startupVerifierInstance;
223
- }
@@ -1,208 +0,0 @@
1
- /**
2
- * Watchdog - 看门狗机制
3
- * 检测进程卡死、无响应等情况
4
- */
5
-
6
- import type { WatchdogConfig, WatchdogState, RestartStrategy, RestartLevel } from './types.js';
7
-
8
- export interface WatchdogCallbacks {
9
- onRestart?: (level: RestartLevel, reason: string) => void;
10
- onLog?: (message: string) => void;
11
- onHealthCheckFailed?: (failures: number) => void;
12
- }
13
-
14
- export class Watchdog {
15
- private config: Required<WatchdogConfig>;
16
- private state: WatchdogState;
17
- private checkIntervalId: ReturnType<typeof setInterval> | null = null;
18
- private restartStrategies: Map<RestartLevel, () => void | Promise<void>> = new Map();
19
- private restartCount: number = 0;
20
- private callbacks: WatchdogCallbacks;
21
-
22
- constructor(config: Partial<WatchdogConfig> = {}, callbacks: WatchdogCallbacks = {}) {
23
- this.config = {
24
- silentThresholdMs: config.silentThresholdMs || 300000, // 5 分钟无日志
25
- maxConsecutiveFailures: config.maxConsecutiveFailures || 3,
26
- checkIntervalMs: config.checkIntervalMs || 30000 // 30 秒检查一次
27
- };
28
- this.state = {
29
- lastActivityTime: Date.now(),
30
- consecutiveFailures: 0,
31
- isTriggered: false
32
- };
33
- this.callbacks = callbacks;
34
- }
35
-
36
- /**
37
- * 注册重启策略
38
- */
39
- registerRestartStrategy(level: RestartLevel, action: () => void | Promise<void>): void {
40
- this.restartStrategies.set(level, action);
41
- }
42
-
43
- /**
44
- * 记录活动(调用后更新 lastActivityTime)
45
- * 2026-06-10: 加 5s 去抖, 防 broadcast / SSE 高频路径炸 log + CPU
46
- * - lastActivityTime 始终更新 (cheap)
47
- * - 但 onLog 回调只在距上次 ≥5s 时触发, 避免每秒几十次 console.log
48
- */
49
- private _lastLogAt = 0;
50
- recordActivity(component?: string): void {
51
- this.state.lastActivityTime = Date.now();
52
- if (component) {
53
- const now = Date.now();
54
- if (now - this._lastLogAt >= 5000) {
55
- this._lastLogAt = now;
56
- this.callbacks.onLog?.(`[Watchdog] Activity from ${component}`);
57
- }
58
- }
59
- }
60
-
61
- /**
62
- * 记录日志(同时触发活动检测)
63
- */
64
- log(message: string): void {
65
- this.recordActivity();
66
- console.log(`[Watchdog] ${message}`);
67
- this.callbacks.onLog?.(message);
68
- }
69
-
70
- /**
71
- * 开始看门狗监控
72
- */
73
- start(): void {
74
- if (this.checkIntervalId) return;
75
-
76
- console.log(`[Watchdog] Started - silent threshold: ${this.config.silentThresholdMs}ms, check interval: ${this.config.checkIntervalMs}ms`);
77
-
78
- this.checkIntervalId = setInterval(() => {
79
- this.check();
80
- }, this.config.checkIntervalMs);
81
- }
82
-
83
- /**
84
- * 停止看门狗
85
- */
86
- stop(): void {
87
- if (this.checkIntervalId) {
88
- clearInterval(this.checkIntervalId);
89
- this.checkIntervalId = null;
90
- }
91
- console.log('[Watchdog] Stopped');
92
- }
93
-
94
- /**
95
- * 报告健康检查结果
96
- */
97
- reportHealthCheck(success: boolean, details?: string): void {
98
- if (success) {
99
- this.state.consecutiveFailures = 0;
100
- this.recordActivity('health_check');
101
- } else {
102
- this.state.consecutiveFailures++;
103
- console.log(`[Watchdog] Health check failed (${this.state.consecutiveFailures}/${this.config.maxConsecutiveFailures}): ${details || 'unknown'}`);
104
- this.callbacks.onHealthCheckFailed?.(this.state.consecutiveFailures);
105
-
106
- if (this.state.consecutiveFailures >= this.config.maxConsecutiveFailures) {
107
- this.triggerRestart(1, `Health check failed ${this.state.consecutiveFailures} times`);
108
- }
109
- }
110
- }
111
-
112
- /**
113
- * 获取当前状态
114
- */
115
- getState(): WatchdogState & { uptime_ms: number; restartCount: number } {
116
- return {
117
- ...this.state,
118
- uptime_ms: Date.now() - this.state.lastActivityTime,
119
- restartCount: this.restartCount
120
- };
121
- }
122
-
123
- /**
124
- * 执行检查
125
- */
126
- private check(): void {
127
- const now = Date.now();
128
- const silentTime = now - this.state.lastActivityTime;
129
-
130
- // 检查是否沉默太久
131
- if (silentTime > this.config.silentThresholdMs) {
132
- console.warn(`[Watchdog] No activity for ${Math.round(silentTime / 1000)}s`);
133
- this.triggerRestart(1, `No activity for ${Math.round(silentTime / 1000)}s`);
134
- return;
135
- }
136
-
137
- // 检查内存使用: 用绝对阈值, 不看 heapUsed/heapTotal 比例 (V8 内部比例不可靠, 经常 80-95% 误报)
138
- const usage = process.memoryUsage();
139
- const heapUsedMB = usage.heapUsed / 1024 / 1024;
140
- const rssMB = usage.rss / 1024 / 1024;
141
- // 1.2GB heap 或 1.5GB RSS 才是真危险
142
- if (heapUsedMB > 1224 || rssMB > 1536) {
143
- console.warn(`[Watchdog] Memory usage critical: heapUsed=${heapUsedMB.toFixed(0)}MB, rss=${rssMB.toFixed(0)}MB`);
144
- this.triggerRestart(1, `Memory usage heap=${heapUsedMB.toFixed(0)}MB rss=${rssMB.toFixed(0)}MB`);
145
- }
146
- }
147
-
148
- /**
149
- * 触发重启
150
- */
151
- private triggerRestart(level: RestartLevel, reason: string): void {
152
- if (this.state.isTriggered) {
153
- console.log(`[Watchdog] Already triggered, ignoring restart request: ${reason}`);
154
- return;
155
- }
156
-
157
- this.state.isTriggered = true;
158
- this.state.triggerReason = reason;
159
- this.restartCount++;
160
-
161
- console.error(`[Watchdog] 🔴 TRIGGERED: ${reason} (restart #${this.restartCount})`);
162
-
163
- const strategy = this.restartStrategies.get(level);
164
- if (strategy) {
165
- try {
166
- this.callbacks.onRestart?.(level, reason);
167
- const result = strategy();
168
- if (result instanceof Promise) {
169
- result.catch(err => {
170
- console.error('[Watchdog] Restart action failed:', err);
171
- });
172
- }
173
- } catch (err) {
174
- console.error('[Watchdog] Failed to execute restart strategy:', err);
175
- }
176
- } else {
177
- console.warn(`[Watchdog] No restart strategy registered for level ${level}`);
178
- this.callbacks.onRestart?.(level, reason);
179
- }
180
- }
181
-
182
- /**
183
- * 重置触发状态(允许再次触发)
184
- */
185
- reset(): void {
186
- this.state.isTriggered = false;
187
- this.state.triggerReason = undefined;
188
- this.state.lastActivityTime = Date.now();
189
- }
190
- }
191
-
192
- // 全局实例
193
- let watchdogInstance: Watchdog | null = null;
194
-
195
- export function getWatchdog(): Watchdog {
196
- if (!watchdogInstance) {
197
- watchdogInstance = new Watchdog();
198
- }
199
- return watchdogInstance;
200
- }
201
-
202
- export function createWatchdog(
203
- config?: Partial<WatchdogConfig>,
204
- callbacks?: WatchdogCallbacks
205
- ): Watchdog {
206
- watchdogInstance = new Watchdog(config, callbacks);
207
- return watchdogInstance;
208
- }
@@ -1,109 +0,0 @@
1
- /**
2
- * Bolloon 24h Heartbeat Module
3
- * 24 小时稳定运行心跳闭环
4
- */
5
-
6
- export * from './types.js';
7
- export * from './HealthMonitor.js';
8
- export * from './Watchdog.js';
9
- export * from './DaemonManager.js';
10
- export * from './StartupVerifier.js';
11
- export * from './self-improve-bus.js';
12
-
13
- import { createHealthMonitor, getHealthMonitor } from './HealthMonitor.js';
14
- import { createWatchdog, getWatchdog } from './Watchdog.js';
15
- import { createDaemonManager, getDaemonManager } from './DaemonManager.js';
16
- import { StartupVerifier, runStartupVerification, getStartupVerifier } from './StartupVerifier.js';
17
- import type { HealthStatus } from './types.js';
18
-
19
- /**
20
- * 初始化完整的 24h 心跳系统
21
- */
22
- export async function initialize24hHeartbeat(): Promise<{
23
- healthMonitor: ReturnType<typeof createHealthMonitor>;
24
- watchdog: ReturnType<typeof createWatchdog>;
25
- daemonManager: ReturnType<typeof createDaemonManager>;
26
- startupVerifier: StartupVerifier;
27
- }> {
28
- // 1. 启动自检
29
- const startupReport = await runStartupVerification();
30
- if (!startupReport.success) {
31
- console.warn('[24h] Startup verification failed, continuing anyway...');
32
- }
33
-
34
- // 2. 初始化健康监控
35
- const healthMonitor = createHealthMonitor({
36
- onStatusChange: (status: HealthStatus) => {
37
- if (status.status !== 'healthy') {
38
- console.warn(`[24h] Health status: ${status.status}`);
39
- for (const rec of status.recommendations || []) {
40
- console.warn(`[24h] → ${rec}`);
41
- }
42
- }
43
- }
44
- });
45
-
46
- // 3. 初始化看门狗
47
- const watchdog = createWatchdog(
48
- { silentThresholdMs: 300000, maxConsecutiveFailures: 3, checkIntervalMs: 30000 },
49
- {
50
- onLog: (msg) => console.log(`[24h-Watchdog] ${msg}`),
51
- onHealthCheckFailed: (failures) => console.warn(`[24h] Health check failures: ${failures}`),
52
- onRestart: (level, reason) => {
53
- console.error(`[24h] Restart triggered (level ${level}): ${reason}`);
54
- }
55
- }
56
- );
57
-
58
- // 4. 连接健康监控和看门狗
59
- healthMonitor.startPeriodicCheck(60000, (status) => {
60
- const hasError = Object.values(status.checks).some(c => c.status === 'error');
61
- watchdog.reportHealthCheck(!hasError, status.status);
62
- });
63
-
64
- // 5. 初始化守护进程管理器
65
- const daemonManager = createDaemonManager({
66
- maxRestarts: 5,
67
- restartDelayMs: 5000
68
- });
69
-
70
- // 6. 注册看门狗重启策略
71
- watchdog.registerRestartStrategy(1 as const, () => {
72
- console.log('[24h] Level 1 restart: Graceful restart...');
73
- // 可以添加进程重启逻辑
74
- });
75
-
76
- watchdog.registerRestartStrategy(2 as const, () => {
77
- console.log('[24h] Level 2 restart: Process restart...');
78
- // 可以添加进程重启逻辑
79
- });
80
-
81
- watchdog.registerRestartStrategy(3 as const, () => {
82
- console.log('[24h] Level 3 restart: System notification...');
83
- // 可以发送通知
84
- });
85
-
86
- // 7. 启动看门狗
87
- watchdog.start();
88
-
89
- console.log('[24h] 24h heartbeat system initialized');
90
- console.log(`[24h] Health checks: every 60s`);
91
- console.log(`[24h] Watchdog checks: every 30s`);
92
- console.log(`[24h] Max restarts: 5`);
93
-
94
- return { healthMonitor, watchdog, daemonManager, startupVerifier: getStartupVerifier() };
95
- }
96
-
97
- /**
98
- * 获取健康状态 JSON
99
- */
100
- export async function getHealthStatus(): Promise<HealthStatus> {
101
- const healthMonitor = getHealthMonitor();
102
- return healthMonitor.check();
103
- }
104
-
105
- // Re-export singleton getters for convenience
106
- export { getHealthMonitor, createHealthMonitor };
107
- export { getWatchdog, createWatchdog };
108
- export { getDaemonManager, createDaemonManager };
109
- export { getStartupVerifier };
@@ -1,110 +0,0 @@
1
- /**
2
- * Self-Improve Event Bus
3
- *
4
- * 心跳事件 → 自改触发器 (解耦 watchdog)
5
- *
6
- * 设计原则:
7
- * - Watchdog 负责保活 (重启进程), 不知道"自改"是什么
8
- * - Self-Improve Bus 监听"信号事件" (CI 失败, 任务连续失败, 静默超时)
9
- * - 信号达到阈值 + 通过冷却期 → 触发 runSelfImproveLoop
10
- * - 触发时通过 SSE 广播给前端, 用户能在 UI 里看到
11
- *
12
- * 关键不变量:
13
- * 1. 心跳**不**直接调自改 - 通过 emit() 异步触发
14
- * 2. 触发频率受 SELF_IMPROVE_COOLDOWN_MS 限制
15
- * 3. 同类事件 24 小时内只触发 1 次
16
- * 4. 触发后不阻塞健康检查
17
- */
18
-
19
- import { SELF_IMPROVE_COOLDOWN_MS } from '../agents/shell-guard.js';
20
-
21
- export type SelfImproveEvent =
22
- | { kind: 'ci-failed'; details: string }
23
- | { kind: 'task-failures'; details: string }
24
- | { kind: 'silent-timeout'; details: string }
25
- | { kind: 'user-requested'; details: string };
26
-
27
- interface EventRecord {
28
- at: number;
29
- count: number;
30
- }
31
-
32
- const EVENT_COOLDOWN_MS = 24 * 60 * 60 * 1000; // 24 小时内同类型只触发 1 次
33
-
34
- const eventHistory: Map<SelfImproveEvent['kind'], EventRecord> = new Map();
35
- let lastTriggerAt: number | null = null;
36
-
37
- type Listener = (event: SelfImproveEvent, goal: string) => void | Promise<void>;
38
- const listeners: Set<Listener> = new Set();
39
-
40
- /**
41
- * 订阅自改触发事件
42
- */
43
- export function onSelfImproveTrigger(fn: Listener): () => void {
44
- listeners.add(fn);
45
- return () => { listeners.delete(fn); };
46
- }
47
-
48
- /**
49
- * 心跳事件 → 自改总线
50
- *
51
- * @returns { triggered: boolean, reason?: string }
52
- */
53
- export function reportSelfImproveEvent(event: SelfImproveEvent): { triggered: boolean; reason?: string } {
54
- // 1. 24 小时同类事件冷却
55
- const prev = eventHistory.get(event.kind);
56
- if (prev && Date.now() - prev.at < EVENT_COOLDOWN_MS) {
57
- return { triggered: false, reason: `同类事件 ${event.kind} 在 24h 内已记录过, 跳过` };
58
- }
59
-
60
- // 2. 累加计数
61
- eventHistory.set(event.kind, {
62
- at: Date.now(),
63
- count: (prev?.count || 0) + 1
64
- });
65
-
66
- // 3. 自改循环冷却
67
- if (lastTriggerAt && Date.now() - lastTriggerAt < SELF_IMPROVE_COOLDOWN_MS) {
68
- const waitHrs = Math.ceil((SELF_IMPROVE_COOLDOWN_MS - (Date.now() - lastTriggerAt)) / 3600000);
69
- return { triggered: false, reason: `自改冷却中, 还需要约 ${waitHrs} 小时` };
70
- }
71
-
72
- // 4. 触发
73
- lastTriggerAt = Date.now();
74
- const goal = `信号事件: ${event.kind} - ${event.details}`;
75
-
76
- console.log(`[self-improve-bus] 🚀 触发自改循环: ${goal}`);
77
-
78
- // 异步触发所有 listener, 不阻塞调用方
79
- Promise.resolve().then(async () => {
80
- for (const listener of listeners) {
81
- try {
82
- await listener(event, goal);
83
- } catch (err) {
84
- console.error(`[self-improve-bus] listener 失败:`, err);
85
- }
86
- }
87
- });
88
-
89
- return { triggered: true };
90
- }
91
-
92
- /**
93
- * 获取当前事件历史 (供调试 / UI 显示)
94
- */
95
- export function getEventHistory(): Array<{ kind: string; at: string; count: number }> {
96
- return Array.from(eventHistory.entries()).map(([kind, rec]) => ({
97
- kind,
98
- at: new Date(rec.at).toISOString(),
99
- count: rec.count
100
- }));
101
- }
102
-
103
- /**
104
- * 强制重置 (仅供调试)
105
- */
106
- export function resetSelfImproveBus(): void {
107
- eventHistory.clear();
108
- lastTriggerAt = null;
109
- console.log('[self-improve-bus] 已重置');
110
- }