@bolloon/bolloon-agent 0.1.35 → 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 (502) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/p2p-chat-tools.js +6 -6
  3. package/dist/agents/permission-mode.js +115 -0
  4. package/dist/agents/pi-sdk.js +435 -25
  5. package/dist/agents/pre-tool-validator.js +194 -0
  6. package/dist/agents/workflow-pivot-loop.js +113 -12
  7. package/dist/bollharness-integration/context-router.js +2 -2
  8. package/dist/bollharness-integration/guard-checker.js +1 -1
  9. package/dist/bootstrap/bootstrap.js +3 -0
  10. package/dist/bootstrap/context-collector.js +17 -1
  11. package/dist/bootstrap/context-hierarchy.js +218 -0
  12. package/dist/bootstrap/lifecycle-hooks.js +86 -24
  13. package/dist/bootstrap/project-context.js +10 -3
  14. package/dist/context-compaction/auto-compact.js +144 -0
  15. package/dist/context-compaction/budget-gate.js +28 -0
  16. package/dist/context-compaction/budget-reduce.js +35 -0
  17. package/dist/context-compaction/context-collapse.js +66 -0
  18. package/dist/context-compaction/index.js +21 -0
  19. package/dist/context-compaction/microcompact.js +51 -0
  20. package/dist/context-compaction/pipeline.js +123 -0
  21. package/dist/context-compaction/snip.js +45 -0
  22. package/dist/context-compaction/token-estimator.js +35 -0
  23. package/dist/context-compaction/types.js +19 -0
  24. package/dist/heartbeat/HealthMonitor.js +3 -2
  25. package/dist/index.js +38 -2
  26. package/dist/llm/llm-judgment-client.js +32 -30
  27. package/dist/llm/pi-ai.js +103 -16
  28. package/dist/llm/system-prompt/health.js +129 -0
  29. package/dist/llm/system-prompt/registry.js +246 -0
  30. package/dist/llm/system-prompt/strip-hibsml.js +51 -0
  31. package/dist/llm/tool-manifest/ask_user_input.js +35 -0
  32. package/dist/llm/tool-manifest/bash.js +23 -0
  33. package/dist/llm/tool-manifest/create_file.js +24 -0
  34. package/dist/llm/tool-manifest/fetch_sports_data.js +26 -0
  35. package/dist/llm/tool-manifest/image_search.js +24 -0
  36. package/dist/llm/tool-manifest/index.js +69 -0
  37. package/dist/llm/tool-manifest/mcp.js +43 -0
  38. package/dist/llm/tool-manifest/message_compose.js +31 -0
  39. package/dist/llm/tool-manifest/places.js +83 -0
  40. package/dist/llm/tool-manifest/present_files.js +21 -0
  41. package/dist/llm/tool-manifest/recipe.js +40 -0
  42. package/dist/llm/tool-manifest/recommend_apps.js +23 -0
  43. package/dist/llm/tool-manifest/str_replace.js +27 -0
  44. package/dist/llm/tool-manifest/types.js +7 -0
  45. package/dist/llm/tool-manifest/view.js +24 -0
  46. package/dist/llm/tool-manifest/weather.js +27 -0
  47. package/dist/llm/tool-manifest/web.js +51 -0
  48. package/dist/network/p2p-direct.js +23 -0
  49. package/dist/network/source-intent-broadcaster.js +203 -0
  50. package/dist/network/source-intent.js +100 -0
  51. package/dist/pi-ecosystem-judgment/adaptive-scan.js +48 -0
  52. package/dist/pi-ecosystem-judgment/injection-gate.js +54 -12
  53. package/dist/pi-ecosystem-judgment/value-injection.js +8 -2
  54. package/dist/security/context-router-tool.js +1 -1
  55. package/dist/security/input-scanner.js +223 -0
  56. package/dist/web/client.js +3089 -4458
  57. package/dist/web/index.html +58 -67
  58. package/dist/web/server.js +299 -117
  59. package/dist/web/style.css +531 -249
  60. package/dist/web/ui/message-renderer.js +352 -0
  61. package/dist/web/ui/step-timeline.js +279 -0
  62. package/package.json +2 -2
  63. package/.auto-evolve-calls +0 -1
  64. package/.last-auto-evolve-baseline +0 -1
  65. package/Bolloon.md +0 -103
  66. package/dist/agents/constraint-layer.js.map +0 -1
  67. package/dist/agents/pi-sdk.js.map +0 -1
  68. package/dist/agents/workflow-engine.js.map +0 -1
  69. package/dist/bollharness/src/index.js +0 -5
  70. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
  71. package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
  72. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
  73. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
  74. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
  75. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
  76. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
  77. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
  78. package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
  79. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
  80. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
  81. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
  82. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
  83. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
  84. package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
  85. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
  86. package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
  87. package/dist/bollharness/src/scripts/checks/finding.js +0 -13
  88. package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
  89. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
  90. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
  91. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
  92. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
  93. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
  94. package/dist/bollharness/src/scripts/context_router.js +0 -67
  95. package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
  96. package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
  97. package/dist/bollharness/src/scripts/guard_router.js +0 -158
  98. package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
  99. package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
  100. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
  101. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
  102. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
  103. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
  104. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
  105. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
  106. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
  107. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
  108. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
  109. package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
  110. package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
  111. package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
  112. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
  113. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
  114. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
  115. package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
  116. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
  117. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
  118. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
  119. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
  120. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
  121. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
  122. package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
  123. package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
  124. package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
  125. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
  126. package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
  127. package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
  128. package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
  129. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
  130. package/dist/bollharness/src/scripts/sanitize.js +0 -6
  131. package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
  132. package/dist/bollharness-integration/context-router.js.map +0 -1
  133. package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
  134. package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
  135. package/dist/bollharness-integration/guard-checker.js.map +0 -1
  136. package/dist/bollharness-integration/index.js.map +0 -1
  137. package/dist/bollharness-integration/integration.js.map +0 -1
  138. package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
  139. package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
  140. package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
  141. package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
  142. package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
  143. package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
  144. package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
  145. package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
  146. package/dist/bollharness-integration/skill-adapter.js.map +0 -1
  147. package/dist/constraint-runtime/src/_archive_helper.js +0 -9
  148. package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
  149. package/dist/constraint-runtime/src/agent/index.js +0 -1
  150. package/dist/constraint-runtime/src/assistant/index.js +0 -12
  151. package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
  152. package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
  153. package/dist/constraint-runtime/src/bridge/index.js +0 -12
  154. package/dist/constraint-runtime/src/buddy/index.js +0 -12
  155. package/dist/constraint-runtime/src/cli/index.js +0 -12
  156. package/dist/constraint-runtime/src/command_graph.js +0 -10
  157. package/dist/constraint-runtime/src/commands.js +0 -60
  158. package/dist/constraint-runtime/src/components/index.js +0 -12
  159. package/dist/constraint-runtime/src/constants/index.js +0 -12
  160. package/dist/constraint-runtime/src/constraint/budget.js +0 -22
  161. package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
  162. package/dist/constraint-runtime/src/constraint/index.js +0 -2
  163. package/dist/constraint-runtime/src/constraint/permission.js +0 -20
  164. package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
  165. package/dist/constraint-runtime/src/context.js +0 -30
  166. package/dist/constraint-runtime/src/coordinator/index.js +0 -12
  167. package/dist/constraint-runtime/src/cost_hook.js +0 -4
  168. package/dist/constraint-runtime/src/cost_tracker.js +0 -8
  169. package/dist/constraint-runtime/src/deferred_init.js +0 -10
  170. package/dist/constraint-runtime/src/direct_modes.js +0 -6
  171. package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
  172. package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
  173. package/dist/constraint-runtime/src/execution_registry.js +0 -44
  174. package/dist/constraint-runtime/src/history.js +0 -9
  175. package/dist/constraint-runtime/src/hooks/index.js +0 -12
  176. package/dist/constraint-runtime/src/index.js +0 -26
  177. package/dist/constraint-runtime/src/ink.js +0 -4
  178. package/dist/constraint-runtime/src/keybindings/index.js +0 -12
  179. package/dist/constraint-runtime/src/memdir/index.js +0 -12
  180. package/dist/constraint-runtime/src/migrations/index.js +0 -12
  181. package/dist/constraint-runtime/src/models.js +0 -1
  182. package/dist/constraint-runtime/src/models.js.map +0 -1
  183. package/dist/constraint-runtime/src/moreright/index.js +0 -12
  184. package/dist/constraint-runtime/src/native_ts/index.js +0 -12
  185. package/dist/constraint-runtime/src/output_styles/index.js +0 -12
  186. package/dist/constraint-runtime/src/parity_audit.js +0 -12
  187. package/dist/constraint-runtime/src/plugins/index.js +0 -12
  188. package/dist/constraint-runtime/src/port_manifest.js +0 -11
  189. package/dist/constraint-runtime/src/prefetch.js +0 -9
  190. package/dist/constraint-runtime/src/query.js +0 -1
  191. package/dist/constraint-runtime/src/remote/index.js +0 -12
  192. package/dist/constraint-runtime/src/remote_runtime.js +0 -9
  193. package/dist/constraint-runtime/src/runtime/index.js +0 -1
  194. package/dist/constraint-runtime/src/runtime/session.js +0 -35
  195. package/dist/constraint-runtime/src/schemas/index.js +0 -12
  196. package/dist/constraint-runtime/src/screens/index.js +0 -12
  197. package/dist/constraint-runtime/src/server/index.js +0 -12
  198. package/dist/constraint-runtime/src/services/index.js +0 -12
  199. package/dist/constraint-runtime/src/session_store.js +0 -22
  200. package/dist/constraint-runtime/src/setup.js +0 -30
  201. package/dist/constraint-runtime/src/skills/index.js +0 -1
  202. package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
  203. package/dist/constraint-runtime/src/state/index.js +0 -12
  204. package/dist/constraint-runtime/src/system_init.js +0 -20
  205. package/dist/constraint-runtime/src/thinking/engine.js +0 -42
  206. package/dist/constraint-runtime/src/thinking/index.js +0 -1
  207. package/dist/constraint-runtime/src/tool_pool.js +0 -8
  208. package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
  209. package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
  210. package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
  211. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
  212. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
  213. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
  214. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
  215. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
  216. package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
  217. package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
  218. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
  219. package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
  220. package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
  221. package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
  222. package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
  223. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
  224. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
  225. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
  226. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
  227. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
  228. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
  229. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
  230. package/dist/constraint-runtime/src/tools.js +0 -80
  231. package/dist/constraint-runtime/src/transcript.js +0 -19
  232. package/dist/constraint-runtime/src/types/index.js +0 -12
  233. package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
  234. package/dist/constraint-runtime/src/utils/index.js +0 -12
  235. package/dist/constraint-runtime/src/vim/index.js +0 -12
  236. package/dist/constraint-runtime/src/voice/index.js +0 -12
  237. package/dist/constraints/index.js.map +0 -1
  238. package/dist/documents/reader.js.map +0 -1
  239. package/dist/llm/config-store.js.map +0 -1
  240. package/dist/llm/pi-ai.js.map +0 -1
  241. package/dist/network/agent-network.js.map +0 -1
  242. package/dist/network/iroh-integration.js.map +0 -1
  243. package/dist/network/iroh-transport.js.map +0 -1
  244. package/dist/network/p2p.js.map +0 -1
  245. package/dist/network/storage/adapters/json-adapter.js.map +0 -1
  246. package/dist/pi-ecosystem-colony/index.js.map +0 -1
  247. package/dist/pi-ecosystem-goals/index.js.map +0 -1
  248. package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
  249. package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
  250. package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
  251. package/dist/pi-ecosystem-judgment/index.js.map +0 -1
  252. package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
  253. package/dist/pi-ecosystem-mcp/index.js.map +0 -1
  254. package/dist/pi-ecosystem-subagents/index.js.map +0 -1
  255. package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
  256. package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
  257. package/dist/social/ant-colony/types.js.map +0 -1
  258. package/dist/social/channels/ChannelManager.js.map +0 -1
  259. package/dist/social/channels/DiapChannelBridge.js.map +0 -1
  260. package/dist/social/channels/InterestMatcher.js.map +0 -1
  261. package/dist/social/channels/types.js.map +0 -1
  262. package/dist/social/global-shared-context.js.map +0 -1
  263. package/dist/social/heartbeat.js.map +0 -1
  264. package/lefthook.yml +0 -29
  265. package/scripts/auto-evolve-loop.ts +0 -376
  266. package/scripts/auto-evolve-oneshot.sh +0 -155
  267. package/scripts/auto-evolve-snapshot.sh +0 -136
  268. package/scripts/build-cli.js +0 -216
  269. package/scripts/build-web.ts +0 -82
  270. package/scripts/detect-schema-changes.sh +0 -48
  271. package/scripts/diff-reviewer.ts +0 -159
  272. package/scripts/postinstall.js +0 -153
  273. package/scripts/weekly-report.ts +0 -364
  274. package/src/agents/agent-manifest-protocol.ts +0 -117
  275. package/src/agents/constraint-layer.ts +0 -309
  276. package/src/agents/iroh-secret.ts +0 -32
  277. package/src/agents/p2p-chat-tools.ts +0 -383
  278. package/src/agents/p2p-document-tools.ts +0 -347
  279. package/src/agents/pi-sdk.ts +0 -2462
  280. package/src/agents/protocol.ts +0 -398
  281. package/src/agents/shell-guard.ts +0 -417
  282. package/src/agents/shell-tool.ts +0 -103
  283. package/src/agents/skill-loader.ts +0 -202
  284. package/src/agents/subagent-manager.ts +0 -553
  285. package/src/agents/workflow-engine.ts +0 -332
  286. package/src/agents/workflow-pivot-loop.ts +0 -675
  287. package/src/bollharness/.sanitize-report.json +0 -13
  288. package/src/bollharness/CLAUDE.md +0 -73
  289. package/src/bollharness/LICENSE +0 -21
  290. package/src/bollharness/README.md +0 -143
  291. package/src/bollharness/README.zh-CN.md +0 -131
  292. package/src/bollharness/package.json +0 -20
  293. package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
  294. package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
  295. package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
  296. package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
  297. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  298. package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
  299. package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
  300. package/src/bollharness/scripts/ci/count-components.sh +0 -65
  301. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  302. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  303. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  304. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  305. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  306. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  307. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  308. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  309. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  310. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  311. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  312. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
  313. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  314. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  315. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  316. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  317. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  318. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  319. package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
  320. package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
  321. package/src/bollharness/scripts/hooks/precompact.sh +0 -56
  322. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  323. package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
  324. package/src/bollharness/src/index.ts +0 -5
  325. package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
  326. package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
  327. package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
  328. package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
  329. package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
  330. package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
  331. package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
  332. package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
  333. package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
  334. package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
  335. package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
  336. package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
  337. package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
  338. package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
  339. package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
  340. package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
  341. package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
  342. package/src/bollharness/src/scripts/checks/finding.ts +0 -35
  343. package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
  344. package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
  345. package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
  346. package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
  347. package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
  348. package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
  349. package/src/bollharness/src/scripts/context_router.ts +0 -76
  350. package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
  351. package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
  352. package/src/bollharness/src/scripts/guard_router.ts +0 -194
  353. package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
  354. package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
  355. package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
  356. package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
  357. package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
  358. package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
  359. package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
  360. package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
  361. package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
  362. package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
  363. package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
  364. package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
  365. package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
  366. package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
  367. package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
  368. package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
  369. package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
  370. package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
  371. package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
  372. package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
  373. package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
  374. package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
  375. package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
  376. package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
  377. package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
  378. package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
  379. package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
  380. package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
  381. package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
  382. package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
  383. package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
  384. package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
  385. package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
  386. package/src/bollharness/src/scripts/sanitize.ts +0 -9
  387. package/src/bollharness/templates/persona/default.json +0 -19
  388. package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
  389. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  390. package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
  391. package/src/bollharness-integration/context-chain-router.ts +0 -474
  392. package/src/bollharness-integration/context-router-judgment.ts +0 -339
  393. package/src/bollharness-integration/context-router.ts +0 -583
  394. package/src/bollharness-integration/gate-state-machine.ts +0 -444
  395. package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
  396. package/src/bollharness-integration/guard-checker.ts +0 -451
  397. package/src/bollharness-integration/index.ts +0 -195
  398. package/src/bollharness-integration/integration.ts +0 -538
  399. package/src/bollharness-integration/judgment-prompts.yaml +0 -535
  400. package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
  401. package/src/bollharness-integration/skill-adapter.ts +0 -646
  402. package/src/bootstrap/bootstrap.ts +0 -132
  403. package/src/bootstrap/context-collector.ts +0 -342
  404. package/src/bootstrap/lifecycle-hooks.ts +0 -176
  405. package/src/bootstrap/project-context.ts +0 -163
  406. package/src/cli/interface.ts +0 -211
  407. package/src/cli-entry.ts +0 -304
  408. package/src/constraints/index.ts +0 -6
  409. package/src/documents/reader.ts +0 -85
  410. package/src/documents/store.ts +0 -252
  411. package/src/electron-preload.ts +0 -25
  412. package/src/electron.ts +0 -200
  413. package/src/heartbeat/DaemonManager.ts +0 -283
  414. package/src/heartbeat/HealthMonitor.ts +0 -316
  415. package/src/heartbeat/StartupVerifier.ts +0 -223
  416. package/src/heartbeat/Watchdog.ts +0 -208
  417. package/src/heartbeat/index.ts +0 -109
  418. package/src/heartbeat/self-improve-bus.ts +0 -110
  419. package/src/heartbeat/types.ts +0 -82
  420. package/src/index.ts +0 -1690
  421. package/src/llm/audio-config-store.ts +0 -246
  422. package/src/llm/config-store.ts +0 -400
  423. package/src/llm/llm-judgment-client.ts +0 -470
  424. package/src/llm/pi-ai.ts +0 -558
  425. package/src/llm/video-config-store.ts +0 -257
  426. package/src/network/agent-network.ts +0 -800
  427. package/src/network/hybrid-messenger.ts +0 -199
  428. package/src/network/iroh-bootstrap.ts +0 -57
  429. package/src/network/iroh-discovery.ts +0 -208
  430. package/src/network/iroh-integration.ts +0 -158
  431. package/src/network/iroh-transport.ts +0 -637
  432. package/src/network/known-peers.ts +0 -102
  433. package/src/network/p2p-direct.ts +0 -240
  434. package/src/network/p2p-secret.ts +0 -153
  435. package/src/network/p2p.ts +0 -964
  436. package/src/network/storage/adapters/json-adapter.ts +0 -454
  437. package/src/network/storage/index.ts +0 -203
  438. package/src/network/storage/types.ts +0 -166
  439. package/src/security/builtin-guards.ts +0 -162
  440. package/src/security/context-router-tool.ts +0 -122
  441. package/src/security/react-harness.ts +0 -177
  442. package/src/security/tool-gate.ts +0 -294
  443. package/src/social/ant-colony/index.js +0 -19
  444. package/src/social/channels/ChannelManager.ts +0 -485
  445. package/src/social/channels/DiapChannelBridge.ts +0 -501
  446. package/src/social/channels/InterestMatcher.ts +0 -189
  447. package/src/social/channels/agent-workflow-config.json +0 -214
  448. package/src/social/channels/agent-workflow-config.yaml +0 -334
  449. package/src/social/channels/channel-agent-session.ts +0 -407
  450. package/src/social/channels/channel-heartbeat-agent.ts +0 -622
  451. package/src/social/channels/diap-doc-parser.ts +0 -282
  452. package/src/social/channels/harness-workflow-integrator.ts +0 -594
  453. package/src/social/channels/index.ts +0 -22
  454. package/src/social/channels/types.ts +0 -115
  455. package/src/social/global-shared-context.ts +0 -506
  456. package/src/social/heartbeat.ts +0 -1057
  457. package/src/social/persona/enhanced-persona.ts +0 -359
  458. package/src/types.d.ts +0 -12
  459. package/src/utils/auto-evolve-policy.ts +0 -138
  460. package/src/utils/auto-update.ts +0 -482
  461. package/src/utils/clamp.ts +0 -5
  462. package/src/web/agent-delegate-server.ts +0 -148
  463. package/src/web/api-config.html +0 -520
  464. package/src/web/client.js +0 -4898
  465. package/src/web/components/p2p/P2PModal.tsx +0 -416
  466. package/src/web/components/p2p/index.ts +0 -566
  467. package/src/web/components/p2p/index.tsx +0 -297
  468. package/src/web/components/p2p/p2p-connection.ts +0 -338
  469. package/src/web/components/p2p/p2p-identity.ts +0 -92
  470. package/src/web/components/p2p/p2p-manager.ts +0 -147
  471. package/src/web/components/p2p/p2p-messages.ts +0 -219
  472. package/src/web/components/p2p/p2p-modal.ts +0 -685
  473. package/src/web/components/p2p/p2p-store-memory.ts +0 -162
  474. package/src/web/components/p2p/p2p-tools.ts +0 -315
  475. package/src/web/components/p2p/types.ts +0 -170
  476. package/src/web/components/wallet-viem.mjs +0 -118
  477. package/src/web/design.md +0 -99
  478. package/src/web/icons/apple-touch-icon.png +0 -0
  479. package/src/web/icons/favicon-16x16.png +0 -0
  480. package/src/web/icons/favicon-192x192.png +0 -0
  481. package/src/web/icons/favicon-32x32.png +0 -0
  482. package/src/web/icons/favicon-48x48.png +0 -0
  483. package/src/web/icons/favicon-512x512.png +0 -0
  484. package/src/web/icons/favicon.icns +0 -0
  485. package/src/web/icons/favicon.ico +0 -0
  486. package/src/web/icons/icon.png +0 -0
  487. package/src/web/icons/image.png +0 -0
  488. package/src/web/index.html +0 -382
  489. package/src/web/iroh-delegate-transport.ts +0 -139
  490. package/src/web/manifest.json +0 -21
  491. package/src/web/server.ts +0 -5571
  492. package/src/web/style.css +0 -4455
  493. package/staging/auto-evolve/clean-001/.review-verdict +0 -9
  494. package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
  495. package/staging/auto-evolve/e2e-001/.patch-id +0 -1
  496. package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
  497. package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
  498. package/staging/auto-evolve/test-bad/.review-verdict +0 -12
  499. package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
  500. package/tsconfig.cli.json +0 -16
  501. package/tsconfig.electron.json +0 -20
  502. package/tsconfig.json +0 -18
@@ -1,192 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import { match, loadFragment, FALLBACK_FRAGMENTS } from "./context_router";
4
- import { readAllSignals, runGuards, writeSessionSignal } from "./guard_router";
5
- const INJECTED_TTL = 3600;
6
- const INJECTED_FILE = path.join(process.cwd(), ".boll", "guard", "injected.json");
7
- const METRICS_DIR = path.join(process.cwd(), ".boll", "metrics");
8
- const METRICS_FILE = path.join(METRICS_DIR, "guard-events.jsonl");
9
- function emitMetric(event, data = {}) {
10
- try {
11
- if (!fs.existsSync(METRICS_DIR)) {
12
- fs.mkdirSync(METRICS_DIR, { recursive: true });
13
- }
14
- const record = {
15
- ts: new Date().toISOString(),
16
- session_pid: process.ppid,
17
- event,
18
- ...data,
19
- };
20
- fs.appendFileSync(METRICS_FILE, JSON.stringify(record) + "\n", "utf-8");
21
- }
22
- catch { }
23
- }
24
- function readInjected() {
25
- if (!fs.existsSync(INJECTED_FILE))
26
- return new Set();
27
- try {
28
- const data = JSON.parse(fs.readFileSync(INJECTED_FILE, "utf-8"));
29
- if (Date.now() / 1000 - data.timestamp > INJECTED_TTL)
30
- return new Set();
31
- return new Set(data.fragments || []);
32
- }
33
- catch {
34
- return new Set();
35
- }
36
- }
37
- function writeInjected(fragments) {
38
- const guardDir = path.join(process.cwd(), ".boll", "guard");
39
- if (!fs.existsSync(guardDir)) {
40
- fs.mkdirSync(guardDir, { recursive: true });
41
- }
42
- const data = { timestamp: Date.now() / 1000, fragments: Array.from(fragments).sort() };
43
- fs.writeFileSync(INJECTED_FILE, JSON.stringify(data, null, 2), "utf-8");
44
- }
45
- function getFilePath() {
46
- if (process.argv.includes("--dry-run")) {
47
- const idx = process.argv.indexOf("--dry-run");
48
- if (idx + 1 < process.argv.length) {
49
- return process.argv[idx + 1];
50
- }
51
- return null;
52
- }
53
- try {
54
- const input = JSON.parse(fs.readFileSync(0, "utf-8"));
55
- return input.tool_input?.file_path ?? input.tool_input?.path ?? null;
56
- }
57
- catch {
58
- return null;
59
- }
60
- }
61
- function makeRelative(filePath, repoRoot) {
62
- try {
63
- const resolved = path.resolve(filePath);
64
- return path.relative(repoRoot, resolved);
65
- }
66
- catch {
67
- return null;
68
- }
69
- }
70
- function appendFindings(outputParts, findings) {
71
- outputParts.push("\n\n## Guard Findings\n");
72
- for (const raw of findings) {
73
- const f = raw;
74
- const blockingTag = f.blocking ? " [blocking]" : "";
75
- const skills = f.required_skills.join(", ");
76
- const skillsLine = skills ? `\n required_skills: ${skills}` : "";
77
- outputParts.push(`- ${f.severity}${blockingTag} ${f.category}: ${f.message}${skillsLine}`);
78
- }
79
- }
80
- const REPO_ROOT = process.cwd();
81
- const checksDir = path.join(REPO_ROOT, "src", "scripts", "checks");
82
- export async function main() {
83
- const startMs = Date.now();
84
- const checkOnly = process.argv.includes("--check-only");
85
- const once = process.argv.includes("--once");
86
- const dryRun = process.argv.includes("--dry-run");
87
- emitMetric("hook_trigger", {
88
- mode: checkOnly ? "check_only" : "post_tool_use",
89
- once,
90
- dry_run: dryRun,
91
- });
92
- if (once) {
93
- const guardDir = path.join(process.cwd(), ".boll", "guard");
94
- const sessionFile = path.join(guardDir, `once-${process.pid}.flag`);
95
- if (fs.existsSync(sessionFile)) {
96
- try {
97
- const ts = parseFloat(fs.readFileSync(sessionFile, "utf-8").trim());
98
- if (Date.now() / 1000 - ts < 3600) {
99
- process.exit(0);
100
- }
101
- }
102
- catch { }
103
- }
104
- if (!fs.existsSync(guardDir)) {
105
- fs.mkdirSync(guardDir, { recursive: true });
106
- }
107
- fs.writeFileSync(sessionFile, String(Date.now() / 1000), "utf-8");
108
- }
109
- const outputParts = [];
110
- if (checkOnly) {
111
- const signal = readAllSignals(process.pid);
112
- const findings = signal.findings;
113
- if (findings.length) {
114
- appendFindings(outputParts, findings);
115
- process.stderr.write(outputParts.join("\n") + "\n");
116
- emitMetric("check_only_findings", {
117
- findings_count: findings.length,
118
- elapsed_ms: Date.now() - startMs,
119
- });
120
- process.exit(0);
121
- }
122
- process.exit(0);
123
- }
124
- let filePath = getFilePath();
125
- if (!filePath)
126
- process.exit(0);
127
- filePath = makeRelative(filePath, REPO_ROOT);
128
- if (!filePath) {
129
- emitMetric("path_rejected", { reason: "outside_repo_or_unresolvable" });
130
- process.exit(0);
131
- }
132
- const alreadyInjected = readInjected();
133
- let fragments = match(filePath);
134
- if (!fragments.length) {
135
- fragments = Array.isArray(FALLBACK_FRAGMENTS) ? FALLBACK_FRAGMENTS : [FALLBACK_FRAGMENTS];
136
- }
137
- const newFragments = fragments.filter(f => !alreadyInjected.has(f));
138
- const contentParts = [];
139
- for (const name of newFragments) {
140
- const text = loadFragment(name);
141
- if (text)
142
- contentParts.push(text);
143
- }
144
- if (newFragments.length) {
145
- const totalBytes = contentParts.reduce((sum, p) => sum + Buffer.byteLength(p, "utf-8"), 0);
146
- emitMetric("fragment_inject", {
147
- file_path: filePath,
148
- fragments: newFragments,
149
- count: newFragments.length,
150
- bytes: totalBytes,
151
- est_tokens: Math.ceil(totalBytes / 4),
152
- });
153
- }
154
- if (contentParts.length) {
155
- outputParts.push("## Context\n");
156
- outputParts.push(contentParts.join("\n\n---\n\n"));
157
- newFragments.forEach(f => alreadyInjected.add(f));
158
- writeInjected(alreadyInjected);
159
- }
160
- const findings = await runGuards(filePath, checksDir);
161
- if (findings.length) {
162
- const blockingCount = findings.filter(f => f.blocking).length;
163
- const categories = {};
164
- const severities = {};
165
- for (const f of findings) {
166
- categories[f.category] = (categories[f.category] || 0) + 1;
167
- severities[f.severity] = (severities[f.severity] || 0) + 1;
168
- }
169
- emitMetric("guard_findings", {
170
- file_path: filePath,
171
- findings_count: findings.length,
172
- blocking_count: blockingCount,
173
- categories,
174
- severities,
175
- });
176
- writeSessionSignal(findings);
177
- appendFindings(outputParts, findings);
178
- }
179
- emitMetric("hook_done", {
180
- file_path: filePath,
181
- had_output: outputParts.length > 0,
182
- elapsed_ms: Date.now() - startMs,
183
- });
184
- if (outputParts.length) {
185
- process.stderr.write(outputParts.join("\n") + "\n");
186
- process.exit(2);
187
- }
188
- process.exit(0);
189
- }
190
- if (require.main === module) {
191
- main();
192
- }
@@ -1,158 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- export const GUARD_MAP = {
4
- "bridge_agent/": ["check_bridge_deps"],
5
- "backend/product/bridge/": ["check_bridge_deps"],
6
- "mcp-server/": ["check_mcp_parity"],
7
- "mcp-server-node/": ["check_mcp_parity"],
8
- "docs/issues/": ["check_issue_closure"],
9
- "backend/product/routes/": ["check_doc_freshness"],
10
- "docs/ROADMAP.md": ["check_doc_freshness"],
11
- "CLAUDE.md": ["check_doc_freshness"],
12
- "docs/magic/": ["check_doc_freshness"],
13
- ".boll/rules/backend-routes.md": ["check_doc_freshness"],
14
- ".boll/settings.json": ["check_hook_installed"],
15
- ".githooks/": ["check_hook_installed"],
16
- "scripts/context_router.ts": ["check_fragment_integrity"],
17
- "scripts/context-fragments/": ["check_fragment_integrity"],
18
- };
19
- export const DEFAULT_GUARDS = [];
20
- export const CATEGORY_TO_SKILLS = {
21
- closure_semantics: ["lead", "boll-ops"],
22
- contract_drift: ["boll-dev", "boll-eng-test"],
23
- bridge_boundary: ["boll-bridge", "boll-ops"],
24
- policy_freeze: ["lead", "arch", "plan-lock"],
25
- doc_integrity: ["boll-ops"],
26
- version_drift: ["boll-ops"],
27
- artifact_linkage: ["lead"],
28
- governance_bootstrap: ["boll-ops"],
29
- };
30
- const SESSION_TTL_SECONDS = 3600;
31
- export function route(filePath) {
32
- const matched = [];
33
- const sortedPatterns = Object.keys(GUARD_MAP).sort((a, b) => b.length - a.length);
34
- for (const pattern of sortedPatterns) {
35
- if (filePath.startsWith(pattern) || filePath === pattern.replace(/\/$/, "")) {
36
- matched.push(...GUARD_MAP[pattern]);
37
- }
38
- }
39
- if (matched.length === 0) {
40
- return [...DEFAULT_GUARDS];
41
- }
42
- return [...new Set(matched)];
43
- }
44
- export async function runGuards(filePath, checksDir) {
45
- const guardNames = route(filePath);
46
- const findings = [];
47
- for (const name of guardNames) {
48
- try {
49
- const checkModule = await import(path.join(checksDir, `${name}.js`));
50
- if (!checkModule.run) {
51
- findings.push({
52
- severity: "P1",
53
- message: `${name} has no run() function`,
54
- file: `scripts/checks/${name}.ts`,
55
- blocking: false,
56
- category: "governance_bootstrap",
57
- problem_class: "unknown",
58
- required_skills: [],
59
- required_reads: [],
60
- });
61
- continue;
62
- }
63
- const result = checkModule.run(checksDir, { mode: "full" });
64
- if (Array.isArray(result)) {
65
- findings.push(...result);
66
- }
67
- else {
68
- findings.push(result);
69
- }
70
- }
71
- catch (exc) {
72
- findings.push({
73
- severity: "P0",
74
- message: `Failed to import guard ${name}: ${exc}`,
75
- file: `scripts/checks/${name}.ts`,
76
- blocking: true,
77
- category: "governance_bootstrap",
78
- problem_class: "unknown",
79
- required_skills: [],
80
- required_reads: [],
81
- });
82
- }
83
- }
84
- return findings;
85
- }
86
- function getGuardDir() {
87
- return path.join(process.cwd(), ".boll", "guard");
88
- }
89
- export function writeSessionSignal(findings) {
90
- const guardDir = getGuardDir();
91
- if (!fs.existsSync(guardDir)) {
92
- fs.mkdirSync(guardDir, { recursive: true });
93
- }
94
- const pid = process.pid;
95
- const target = path.join(guardDir, `session-${pid}.json`);
96
- const tmp = path.join(guardDir, `session-${pid}.tmp`);
97
- const data = {
98
- pid,
99
- timestamp: Date.now() / 1000,
100
- findings,
101
- };
102
- fs.writeFileSync(tmp, JSON.stringify(data, null, 2), "utf-8");
103
- fs.renameSync(tmp, target);
104
- return target;
105
- }
106
- export function readAllSignals(pid) {
107
- const guardDir = getGuardDir();
108
- if (!fs.existsSync(guardDir)) {
109
- return { severity: null, blocking: false, required_skills: [], findings: [] };
110
- }
111
- const severityOrder = { P0: 0, P1: 1, P2: 2 };
112
- const now = Date.now() / 1000;
113
- const allFindings = [];
114
- let maxSeverity = null;
115
- let blocking = false;
116
- const skills = new Set();
117
- let paths;
118
- if (pid !== undefined) {
119
- paths = [path.join(guardDir, `session-${pid}.json`)];
120
- }
121
- else {
122
- paths = fs.readdirSync(guardDir)
123
- .filter(f => f.startsWith("session-") && f.endsWith(".json"))
124
- .map(f => path.join(guardDir, f));
125
- }
126
- for (const p of paths) {
127
- if (!fs.existsSync(p))
128
- continue;
129
- try {
130
- const data = JSON.parse(fs.readFileSync(p, "utf-8"));
131
- const ts = data.timestamp;
132
- if (now - ts > SESSION_TTL_SECONDS) {
133
- try {
134
- fs.unlinkSync(p);
135
- }
136
- catch { }
137
- continue;
138
- }
139
- for (const f of data.findings) {
140
- allFindings.push(f);
141
- const sev = f.severity;
142
- if (maxSeverity === null || severityOrder[sev] < severityOrder[maxSeverity]) {
143
- maxSeverity = sev;
144
- }
145
- if (f.blocking)
146
- blocking = true;
147
- f.required_skills.forEach(s => skills.add(s));
148
- }
149
- }
150
- catch { }
151
- }
152
- return {
153
- severity: maxSeverity,
154
- blocking,
155
- required_skills: Array.from(skills).sort(),
156
- findings: allFindings,
157
- };
158
- }
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- process.stdout.write(`\n\n## Bollharness Context\n\n` +
3
- `bollharness is an AI Agent Session Governance Framework.\n\n` +
4
- `For more information, see CLAUDE.md in the project root.\n`);
5
- process.exit(0);
6
- export {};
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,92 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- const REPO_ROOT = process.cwd();
4
- function getCurrentGate() {
5
- const envGate = process.env.BOLL_GATE_TO;
6
- if (envGate) {
7
- return parseInt(envGate, 10);
8
- }
9
- try {
10
- const gateFile = path.join(REPO_ROOT, ".boll", "gate", "current");
11
- if (fs.existsSync(gateFile)) {
12
- const content = fs.readFileSync(gateFile, "utf-8").trim();
13
- const state = JSON.parse(content);
14
- return state.current_gate;
15
- }
16
- }
17
- catch { }
18
- const envGateFinal = process.env.BOLL_GATE;
19
- if (envGateFinal) {
20
- return parseInt(envGateFinal, 10);
21
- }
22
- return 0;
23
- }
24
- async function getCoreJudgments() {
25
- try {
26
- const judgmentPath = path.join(REPO_ROOT, "src", "bollharness-integration", "context-router-judgment.js");
27
- if (!fs.existsSync(judgmentPath)) {
28
- return "";
29
- }
30
- const { getCoreJudgmentsForSession } = await import(judgmentPath);
31
- return await getCoreJudgmentsForSession(0.9);
32
- }
33
- catch (e) {
34
- console.error("[Gate Judgment] Failed to load core judgments:", e);
35
- return "";
36
- }
37
- }
38
- async function getGateJudgments(gate) {
39
- try {
40
- const judgmentPath = path.join(REPO_ROOT, "src", "bollharness-integration", "context-router-judgment.js");
41
- if (!fs.existsSync(judgmentPath)) {
42
- return "";
43
- }
44
- const { generateJudgmentInjection } = await import(judgmentPath);
45
- return await generateJudgmentInjection(".", gate);
46
- }
47
- catch (e) {
48
- console.error("[Gate Judgment] Failed to load gate judgments:", e);
49
- return "";
50
- }
51
- }
52
- async function getContextChainInjection(gate) {
53
- try {
54
- const chainPath = path.join(REPO_ROOT, "src", "bollharness-integration", "context-chain-router.js");
55
- if (!fs.existsSync(chainPath)) {
56
- return "";
57
- }
58
- const { generateContextChainInjection } = await import(chainPath);
59
- return await generateContextChainInjection(gate);
60
- }
61
- catch (e) {
62
- console.error("[Gate Judgment] Failed to load context chains:", e);
63
- return "";
64
- }
65
- }
66
- export async function main() {
67
- const gate = getCurrentGate();
68
- const INJECT_GATES = [0, 3];
69
- if (!INJECT_GATES.includes(gate)) {
70
- process.exit(0);
71
- }
72
- const judgments = gate === 0
73
- ? await getCoreJudgments()
74
- : await getGateJudgments(gate);
75
- const chains = await getContextChainInjection(gate);
76
- if (judgments || chains) {
77
- process.stdout.write("\n");
78
- if (judgments) {
79
- process.stdout.write(judgments + "\n\n");
80
- }
81
- if (chains) {
82
- process.stdout.write(chains + "\n");
83
- }
84
- }
85
- process.exit(0);
86
- }
87
- if (require.main === module) {
88
- main().catch((e) => {
89
- console.error("[Gate Judgment] Error:", e);
90
- process.exit(1);
91
- });
92
- }
@@ -1,63 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- const REPO_ROOT = process.cwd();
4
- async function getGateJudgments(gate, filePath = ".") {
5
- try {
6
- const judgmentPath = path.join(REPO_ROOT, "src", "bollharness-integration", "context-router-judgment.js");
7
- if (!fs.existsSync(judgmentPath)) {
8
- return "";
9
- }
10
- const { generateJudgmentInjection } = await import(judgmentPath);
11
- return await generateJudgmentInjection(filePath, gate);
12
- }
13
- catch (e) {
14
- console.error("[Gate Transition Judgment] Failed to load judgments:", e);
15
- return "";
16
- }
17
- }
18
- async function getContextChainInjection(gate) {
19
- try {
20
- const chainPath = path.join(REPO_ROOT, "src", "bollharness-integration", "context-chain-router.js");
21
- if (!fs.existsSync(chainPath)) {
22
- return "";
23
- }
24
- const { generateContextChainInjection } = await import(chainPath);
25
- return await generateContextChainInjection(gate);
26
- }
27
- catch (e) {
28
- console.error("[Gate Transition Judgment] Failed to load context chains:", e);
29
- return "";
30
- }
31
- }
32
- export async function main() {
33
- const args = process.argv.slice(2);
34
- const envGate = process.env.BOLL_GATE_TO;
35
- const gate = args[0]
36
- ? parseInt(args[0], 10)
37
- : envGate
38
- ? parseInt(envGate, 10)
39
- : 0;
40
- const filePath = args[1] || ".";
41
- const INJECT_GATES = [0, 3];
42
- if (!INJECT_GATES.includes(gate)) {
43
- process.exit(0);
44
- }
45
- const judgments = await getGateJudgments(gate, filePath);
46
- const chains = await getContextChainInjection(gate);
47
- if (judgments || chains) {
48
- process.stdout.write("\n");
49
- if (judgments) {
50
- process.stdout.write(judgments + "\n\n");
51
- }
52
- if (chains) {
53
- process.stdout.write(chains + "\n");
54
- }
55
- }
56
- process.exit(0);
57
- }
58
- if (require.main === module) {
59
- main().catch((e) => {
60
- console.error("[Gate Transition Judgment] Error:", e);
61
- process.exit(1);
62
- });
63
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,73 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- const LOOP_THRESHOLD = 5;
4
- const STATE_DIR = ".boll/guard";
5
- const STATE_FILE_PREFIX = "loop-";
6
- const TTL_SECONDS = 3600;
7
- function getStateFile() {
8
- const pid = process.ppid;
9
- return path.join(STATE_DIR, `${STATE_FILE_PREFIX}${pid}.json`);
10
- }
11
- function loadState() {
12
- const stateFile = getStateFile();
13
- if (!fs.existsSync(stateFile))
14
- return {};
15
- try {
16
- const data = JSON.parse(fs.readFileSync(stateFile, "utf-8"));
17
- if (Date.now() / 1000 - data._ts > TTL_SECONDS) {
18
- return {};
19
- }
20
- return data;
21
- }
22
- catch (exc) {
23
- process.stderr.write(`[loop-detection] corrupt state ${stateFile}: ${exc}; resetting\n`);
24
- try {
25
- fs.unlinkSync(stateFile);
26
- }
27
- catch { }
28
- return {};
29
- }
30
- }
31
- function saveState(state) {
32
- try {
33
- if (!fs.existsSync(STATE_DIR)) {
34
- fs.mkdirSync(STATE_DIR, { recursive: true });
35
- }
36
- state._ts = Date.now() / 1000;
37
- fs.writeFileSync(getStateFile(), JSON.stringify(state), "utf-8");
38
- }
39
- catch (exc) {
40
- process.stderr.write(`[loop-detection] save_state OSError: ${exc}; counter not persisted\n`);
41
- }
42
- }
43
- export function postToolUseInject(message) {
44
- process.stdout.write(`\n\n## Loop Detection\n\n${message}\n`);
45
- }
46
- export function main() {
47
- let event;
48
- try {
49
- event = JSON.parse(fs.readFileSync(0, "utf-8") || "{}");
50
- }
51
- catch {
52
- return;
53
- }
54
- const toolName = event.tool_name || "";
55
- const toolInput = event.tool_input || {};
56
- if (!["Write", "Edit"].includes(toolName))
57
- return;
58
- const filePath = toolInput.file_path || "";
59
- if (!filePath)
60
- return;
61
- const state = loadState();
62
- const counts = state.counts || {};
63
- counts[filePath] = (counts[filePath] || 0) + 1;
64
- state.counts = counts;
65
- saveState(state);
66
- const count = counts[filePath];
67
- if (count >= LOOP_THRESHOLD) {
68
- postToolUseInject(`[LoopDetection] 你已经编辑 ${filePath} ${count} 次了。考虑换一个方法或退一步重新思考整体方案。[来源: LangChain LoopDetection middleware]`);
69
- }
70
- }
71
- if (require.main === module) {
72
- main();
73
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }
@@ -1,6 +0,0 @@
1
- export function main() {
2
- process.exit(0);
3
- }
4
- if (require.main === module) {
5
- main();
6
- }