@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,474 +0,0 @@
1
- /**
2
- * Context Chain Router - Session summary chain injection
3
- *
4
- * Integrates with existing ContextRouter and Judgment systems.
5
- *
6
- * Architecture:
7
- * - Session end → extract summary by work_type → store in .bolloon/state/context-chains/
8
- * - Session start (Gate 0/3) → lookup related chains → inject summaries
9
- * - Work type: code_change | review | design | question | planning | debugging
10
- *
11
- * Integration points:
12
- * - Uses existing context-router-judgment.ts pattern (extends, not replaces)
13
- * - Gate injection via gate-judgment-inject.ts
14
- * - Storage in .bolloon/state/context-chains/
15
- */
16
-
17
- import * as fs from 'fs';
18
- import * as path from 'path';
19
-
20
- export const CONTEXT_CHAINS_DIR = path.join('.bolloon', 'state', 'context-chains');
21
-
22
- export type WorkType = 'code_change' | 'review' | 'design' | 'question' | 'planning' | 'debugging';
23
-
24
- export interface ContextChainSummary {
25
- session_id: string;
26
- work_type: WorkType;
27
- created_at: string;
28
- gate_at_session: number;
29
- '关联上下文': Array<{
30
- session_id: string;
31
- reason: string;
32
- relevance: number;
33
- }>;
34
- '核心摘要': Record<string, unknown>;
35
- '决策缺口'?: Array<{ 描述: string; 影响: string; 需要什么才能关闭: string }>;
36
- '风险点'?: Array<{ 描述: string; 概率: 'high' | 'medium' | 'low'; 缓解措施: string }>;
37
- '遗迹'?: string[];
38
- }
39
-
40
- export interface ContextChainLookupOptions {
41
- workType?: WorkType;
42
- minRelevance?: number;
43
- maxTokens?: number;
44
- gate?: number;
45
- }
46
-
47
- /**
48
- * Ensure context-chains directory exists
49
- */
50
- function ensureDir(): void {
51
- if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
52
- fs.mkdirSync(CONTEXT_CHAINS_DIR, { recursive: true });
53
- }
54
- }
55
-
56
- /**
57
- * Get current month directory path
58
- */
59
- function getMonthDir(): string {
60
- const now = new Date();
61
- const year = now.getFullYear();
62
- const month = String(now.getMonth() + 1).padStart(2, '0');
63
- return path.join(CONTEXT_CHAINS_DIR, `${year}-${month}`);
64
- }
65
-
66
- /**
67
- * Generate session ID
68
- */
69
- function generateSessionId(): string {
70
- const now = new Date();
71
- const year = now.getFullYear();
72
- const month = String(now.getMonth() + 1).padStart(2, '0');
73
- const day = String(now.getDate()).padStart(2, '0');
74
- const seq = getTodaySequence() + 1;
75
- return `${year}${month}${day}-${String(seq).padStart(3, '0')}`;
76
- }
77
-
78
- /**
79
- * Get today's sequence number
80
- */
81
- function getTodaySequence(): number {
82
- const dir = getMonthDir();
83
- if (!fs.existsSync(dir)) return 0;
84
-
85
- const todayPrefix = new Date().toISOString().slice(0, 10).replace(/-/g, '');
86
- const files = fs.readdirSync(dir)
87
- .filter(f => f.startsWith(todayPrefix) && f.endsWith('.yaml'));
88
-
89
- return files.length;
90
- }
91
-
92
- /**
93
- * Save a context chain summary
94
- */
95
- export function saveContextChain(summary: ContextChainSummary): string {
96
- ensureDir();
97
- const monthDir = getMonthDir();
98
- if (!fs.existsSync(monthDir)) {
99
- fs.mkdirSync(monthDir, { recursive: true });
100
- }
101
-
102
- const filename = `${summary.session_id}-${summary.work_type}-${getTodaySequence() + 1}.yaml`;
103
- const filepath = path.join(monthDir, filename);
104
-
105
- const yaml = contextChainToYaml(summary);
106
- fs.writeFileSync(filepath, yaml, 'utf-8');
107
-
108
- return filepath;
109
- }
110
-
111
- /**
112
- * Convert context chain to YAML string
113
- */
114
- function contextChainToYaml(summary: ContextChainSummary): string {
115
- const lines: string[] = [
116
- `session_id: "${summary.session_id}"`,
117
- `work_type: ${summary.work_type}`,
118
- `created_at: "${summary.created_at}"`,
119
- `gate_at_session: ${summary.gate_at_session}`,
120
- '',
121
- '关联上下文:',
122
- ];
123
-
124
- for (const ref of summary['关联上下文']) {
125
- lines.push(` - session_id: "${ref.session_id}"`);
126
- lines.push(` reason: "${ref.reason}"`);
127
- lines.push(` relevance: ${ref.relevance}`);
128
- }
129
-
130
- lines.push('');
131
- lines.push('核心摘要:');
132
-
133
- const core = summary['核心摘要'];
134
- for (const [key, value] of Object.entries(core)) {
135
- if (Array.isArray(value)) {
136
- lines.push(` ${key}:`);
137
- for (const item of value) {
138
- if (typeof item === 'object') {
139
- for (const [k, v] of Object.entries(item)) {
140
- lines.push(` - ${k}: ${JSON.stringify(v)}`);
141
- }
142
- } else {
143
- lines.push(` - ${JSON.stringify(item)}`);
144
- }
145
- }
146
- } else if (typeof value === 'object' && value !== null) {
147
- lines.push(` ${key}:`);
148
- for (const [k, v] of Object.entries(value)) {
149
- lines.push(` ${k}: ${JSON.stringify(v)}`);
150
- }
151
- } else {
152
- lines.push(` ${key}: ${JSON.stringify(value)}`);
153
- }
154
- }
155
-
156
- if (summary['决策缺口'] && summary['决策缺口'].length > 0) {
157
- lines.push('');
158
- lines.push('决策缺口:');
159
- for (const gap of summary['决策缺口']) {
160
- lines.push(` - 描述: "${gap.描述}"`);
161
- lines.push(` 影响: "${gap.影响}"`);
162
- lines.push(` 需要什么才能关闭: "${gap.需要什么才能关闭}"`);
163
- }
164
- }
165
-
166
- if (summary['风险点'] && summary['风险点'].length > 0) {
167
- lines.push('');
168
- lines.push('风险点:');
169
- for (const risk of summary['风险点']) {
170
- lines.push(` - 描述: "${risk.描述}"`);
171
- lines.push(` 概率: ${risk.概率}`);
172
- lines.push(` 缓解措施: "${risk.缓解措施}"`);
173
- }
174
- }
175
-
176
- if (summary['遗迹'] && summary['遗迹'].length > 0) {
177
- lines.push('');
178
- lines.push('遗迹:');
179
- for (const relic of summary['遗迹']) {
180
- lines.push(` - "${relic}"`);
181
- }
182
- }
183
-
184
- return lines.join('\n');
185
- }
186
-
187
- /**
188
- * Load a single context chain by session_id
189
- */
190
- export function loadContextChain(sessionId: string): ContextChainSummary | null {
191
- const pattern = new RegExp(`^${sessionId.replace(/-/g, '.*')}-.*\\.yaml$`);
192
-
193
- const dirs = fs.existsSync(CONTEXT_CHAINS_DIR)
194
- ? fs.readdirSync(CONTEXT_CHAINS_DIR)
195
- : [];
196
-
197
- for (const dir of dirs) {
198
- const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
199
- if (!fs.statSync(dirPath).isDirectory()) continue;
200
-
201
- const files = fs.readdirSync(dirPath).filter(f => pattern.test(f));
202
- if (files.length > 0) {
203
- const content = fs.readFileSync(path.join(dirPath, files[0]), 'utf-8');
204
- return parseContextChainYaml(content);
205
- }
206
- }
207
-
208
- return null;
209
- }
210
-
211
- /**
212
- * Parse YAML content to ContextChainSummary
213
- */
214
- function parseContextChainYaml(content: string): ContextChainSummary {
215
- const result: Record<string, unknown> = {};
216
- const lines = content.split('\n');
217
- let currentKey = '';
218
- let currentArray: string[] = [];
219
- let inArray = false;
220
-
221
- for (const line of lines) {
222
- if (line.includes(':') && !line.startsWith(' ')) {
223
- const [key, ...valueParts] = line.split(':');
224
- const value = valueParts.join(':').trim();
225
-
226
- if (inArray && currentKey) {
227
- result[currentKey] = currentArray;
228
- currentArray = [];
229
- inArray = false;
230
- }
231
-
232
- currentKey = key.trim();
233
-
234
- if (value) {
235
- result[currentKey] = value.replace(/^["']|["']$/g, '');
236
- }
237
- } else if (line.startsWith(' - ')) {
238
- inArray = true;
239
- currentArray.push(line.replace(/^ - /, '').replace(/^["']|["']$/g, ''));
240
- }
241
- }
242
-
243
- if (inArray && currentKey) {
244
- result[currentKey] = currentArray;
245
- }
246
-
247
- return result as unknown as ContextChainSummary;
248
- }
249
-
250
- /**
251
- * Find related context chains by work type and relevance
252
- */
253
- export function findRelatedChains(options: ContextChainLookupOptions = {}): ContextChainSummary[] {
254
- const {
255
- workType,
256
- minRelevance = 0.5,
257
- maxTokens = 2000,
258
- gate,
259
- } = options;
260
-
261
- if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
262
- return [];
263
- }
264
-
265
- const chains: ContextChainSummary[] = [];
266
- const dirs = fs.readdirSync(CONTEXT_CHAINS_DIR);
267
-
268
- for (const dir of dirs) {
269
- const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
270
- if (!fs.statSync(dirPath).isDirectory()) continue;
271
-
272
- const files = fs.readdirSync(dirPath).filter(f => f.endsWith('.yaml'));
273
-
274
- for (const file of files) {
275
- const content = fs.readFileSync(path.join(dirPath, file), 'utf-8');
276
- const chain = parseContextChainYaml(content);
277
-
278
- if (workType && chain.work_type !== workType) continue;
279
- if (gate !== undefined && chain.gate_at_session !== gate) continue;
280
-
281
- chains.push(chain);
282
- }
283
- }
284
-
285
- // Sort by relevance and recency
286
- chains.sort((a, b) => {
287
- const aRecency = new Date(a.created_at).getTime();
288
- const bRecency = new Date(b.created_at).getTime();
289
- return bRecency - aRecency;
290
- });
291
-
292
- // Apply token budget
293
- let totalTokens = 0;
294
- const selected: ContextChainSummary[] = [];
295
-
296
- for (const chain of chains) {
297
- const estimatedTokens = estimateTokens(chain);
298
- if (totalTokens + estimatedTokens > maxTokens) break;
299
-
300
- selected.push(chain);
301
- totalTokens += estimatedTokens;
302
- }
303
-
304
- return selected;
305
- }
306
-
307
- /**
308
- * Estimate token count for a chain
309
- */
310
- function estimateTokens(chain: ContextChainSummary): number {
311
- const yaml = contextChainToYaml(chain);
312
- return Math.ceil(yaml.length / 4);
313
- }
314
-
315
- /**
316
- * Generate injection for Gate 0/3
317
- */
318
- export async function generateContextChainInjection(
319
- gate: number,
320
- workType?: WorkType
321
- ): Promise<string> {
322
- const chains = findRelatedChains({
323
- workType,
324
- gate: gate === 0 ? undefined : gate,
325
- maxTokens: 2000,
326
- });
327
-
328
- if (chains.length === 0) {
329
- return '';
330
- }
331
-
332
- const header = gate === 0
333
- ? '# Context Chains — Recent Session Summaries'
334
- : `# Context Chains — Gate ${gate} Related Sessions`;
335
-
336
- const lines: string[] = [
337
- header,
338
- `# Injected at session start — chains from related prior sessions`,
339
- `# Total chains: ${chains.length} | Token budget: ~2000`,
340
- '',
341
- 'context_chains:',
342
- ];
343
-
344
- for (const chain of chains) {
345
- lines.push(` - session_id: "${chain.session_id}"`);
346
- lines.push(` work_type: ${chain.work_type}`);
347
- lines.push(` created_at: "${chain.created_at}"`);
348
- lines.push(` gate_at_session: ${chain.gate_at_session}`);
349
-
350
- if (chain['关联上下文'].length > 0) {
351
- lines.push(` 关联上下文:`);
352
- for (const ref of chain['关联上下文']) {
353
- lines.push(` - session_id: "${ref.session_id}"`);
354
- lines.push(` relevance: ${ref.relevance}`);
355
- }
356
- }
357
-
358
- lines.push(` 核心摘要:`);
359
- const core = chain['核心摘要'];
360
- for (const [key, value] of Object.entries(core)) {
361
- if (Array.isArray(value)) {
362
- lines.push(` ${key}:`);
363
- for (const item of value.slice(0, 3)) {
364
- if (typeof item === 'object') {
365
- lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
366
- } else {
367
- lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
368
- }
369
- }
370
- if (value.length > 3) {
371
- lines.push(` ... (${value.length - 3} more)`);
372
- }
373
- } else if (typeof value === 'string' && value.length > 100) {
374
- lines.push(` ${key}: "${value.slice(0, 100)}..."`);
375
- } else {
376
- lines.push(` ${key}: ${JSON.stringify(value)}`);
377
- }
378
- }
379
- lines.push('');
380
- }
381
-
382
- return lines.join('\n');
383
- }
384
-
385
- /**
386
- * Create a new context chain summary from conversation
387
- */
388
- export function createContextChain(params: {
389
- workType: WorkType;
390
- gate: number;
391
- conversationText: string;
392
- relatedSessions?: Array<{ sessionId: string; reason: string; relevance: number }>;
393
- }): ContextChainSummary {
394
- const sessionId = generateSessionId();
395
-
396
- const summary: ContextChainSummary = {
397
- session_id: sessionId,
398
- work_type: params.workType,
399
- created_at: new Date().toISOString(),
400
- gate_at_session: params.gate,
401
- '关联上下文': (params.relatedSessions || []).map(r => ({
402
- session_id: r.sessionId,
403
- reason: r.reason,
404
- relevance: r.relevance,
405
- })),
406
- '核心摘要': extractCoreSummary(params.workType, params.conversationText),
407
- '决策缺口': [],
408
- '风险点': [],
409
- '遗迹': [],
410
- };
411
-
412
- return summary;
413
- }
414
-
415
- /**
416
- * Extract core summary based on work type
417
- */
418
- function extractCoreSummary(workType: WorkType, text: string): Record<string, unknown> {
419
- switch (workType) {
420
- case 'code_change':
421
- return extractCodeChangeSummary(text);
422
- case 'review':
423
- return extractReviewSummary(text);
424
- case 'design':
425
- return extractDesignSummary(text);
426
- case 'planning':
427
- return extractPlanningSummary(text);
428
- case 'debugging':
429
- return extractDebuggingSummary(text);
430
- case 'question':
431
- return extractQuestionSummary(text);
432
- default:
433
- return { raw: text.slice(0, 500) };
434
- }
435
- }
436
-
437
- function extractCodeChangeSummary(text: string): Record<string, unknown> {
438
- const files: Array<{ path: string; change_type: string; reason: string }> = [];
439
-
440
- // Extract file paths from common patterns
441
- const filePattern = /(?:modified|changed|added|deleted):\s+([^\s]+)/gi;
442
- let match;
443
- while ((match = filePattern.exec(text)) !== null) {
444
- files.push({ path: match[1], change_type: 'modify', reason: '' });
445
- }
446
-
447
- return { files_changed: files, decisions: [], adr_linked: [] };
448
- }
449
-
450
- function extractReviewSummary(text: string): Record<string, unknown> {
451
- const hasBlock = text.toLowerCase().includes('block') || text.toLowerCase().includes('reject');
452
- return {
453
- verdict: hasBlock ? 'BLOCK' : 'PASS',
454
- reviewed_artifact: '',
455
- blocking_issues: [],
456
- non_blocking_observations: [],
457
- };
458
- }
459
-
460
- function extractDesignSummary(text: string): Record<string, unknown> {
461
- return { design_choices: [], constraints: [], consumers: [] };
462
- }
463
-
464
- function extractPlanningSummary(text: string): Record<string, unknown> {
465
- return { goals: [], dependencies: [], risks: [], decision_gaps: [] };
466
- }
467
-
468
- function extractDebuggingSummary(text: string): Record<string, unknown> {
469
- return { root_cause: '', symptoms_observed: [], fix_applied: [], files_touched: [] };
470
- }
471
-
472
- function extractQuestionSummary(text: string): Record<string, unknown> {
473
- return { question_type: 'unknown', answer_summary: '', source: '' };
474
- }