@bolloon/bolloon-agent 0.1.0 → 0.1.2

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 (581) hide show
  1. package/bin/bolloon-cli.cjs +157 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
  152. package/src/cli-entry.ts +304 -0
  153. package/src/heartbeat/DaemonManager.ts +283 -0
  154. package/src/heartbeat/HealthMonitor.ts +316 -0
  155. package/src/heartbeat/StartupVerifier.ts +223 -0
  156. package/src/heartbeat/Watchdog.ts +198 -0
  157. package/src/heartbeat/index.ts +108 -0
  158. package/src/heartbeat/types.ts +82 -0
  159. package/src/llm/config-store.ts +23 -5
  160. package/src/network/iroh-transport.ts +3 -3
  161. package/src/web/client.js +302 -136
  162. package/src/web/components/p2p/P2PModal.tsx +91 -3
  163. package/src/web/components/p2p/index.ts +171 -9
  164. package/src/web/components/p2p/p2p-connection.ts +153 -1
  165. package/src/web/components/p2p/p2p-manager.ts +39 -1
  166. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  167. package/src/web/components/p2p/p2p-tools.ts +315 -0
  168. package/src/web/components/p2p/types.ts +58 -0
  169. package/src/web/index.html +5 -0
  170. package/src/web/server.ts +353 -36
  171. package/src/web/style.css +118 -0
  172. package/tsconfig.cli.json +16 -0
  173. package/tsconfig.electron.json +1 -1
  174. package/tsconfig.json +1 -2
  175. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  176. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  177. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  178. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  179. package/dist/electron-preload.js +0 -15
  180. package/dist/electron-preload.js.map +0 -1
  181. package/dist/electron.js +0 -206
  182. package/dist/electron.js.map +0 -1
  183. package/dist/test/constraint-layer.test.js +0 -164
  184. package/dist/test/global-shared-context.test.js +0 -315
  185. package/dist/test/pi-sdk.test.js +0 -47
  186. package/dist/test/set-persona.test.js +0 -38
  187. package/dist/test/subagent-manager.test.js +0 -276
  188. package/dist/test/workflow-engine.test.js +0 -87
  189. package/dist/web/server.js +0 -1647
  190. package/dist/web/server.js.map +0 -1
  191. package/dist/workflows/collaboration.js +0 -374
  192. package/dist/workflows/index.js +0 -54
  193. package/docs/agent-communication.md +0 -333
  194. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  195. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  196. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  197. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  198. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  199. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  200. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  201. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  202. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  203. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  204. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  205. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  206. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  207. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  208. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  209. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  210. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  211. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  212. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  213. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  214. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  215. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  216. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  217. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  218. package/src/bollharness/.boll/settings.json +0 -180
  219. package/src/bollharness/.boll/settings.json.template +0 -31
  220. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  221. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  222. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  223. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  224. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  225. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  226. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  227. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  228. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  229. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  230. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  231. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  232. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  233. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  234. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  235. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  236. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  237. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  238. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  239. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  240. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  241. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  242. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  243. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  244. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  245. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  246. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  247. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  248. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  249. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  250. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  251. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  252. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  253. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  254. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  255. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  256. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  257. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  258. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  259. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  260. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  261. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  262. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  263. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  264. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  265. package/src/bollharness/.claude/settings.json +0 -157
  266. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  267. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  268. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  269. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  270. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  271. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  272. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  273. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  274. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  275. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  276. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  277. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  278. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  279. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  280. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  281. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  282. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  283. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  284. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  285. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  286. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  287. package/src/bollharness/.githooks/pre-commit +0 -21
  288. package/src/bollharness/.github/workflows/ci.yml +0 -88
  289. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  290. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  291. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  292. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  293. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  294. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  295. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  296. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  297. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  298. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  299. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  300. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  301. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  302. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  303. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  304. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  305. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  306. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  307. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  308. package/src/bollharness/docs/launch-article-en.md +0 -276
  309. package/src/bollharness/docs/launch-article-zh.md +0 -305
  310. package/src/bollharness/docs/practice.html +0 -356
  311. package/src/bollharness/docs/practice.md +0 -82
  312. package/src/bollharness/docs/research/round-1/README.md +0 -11
  313. package/src/bollharness/docs/research/round-2/README.md +0 -11
  314. package/src/bollharness/docs/research/round-3/README.md +0 -11
  315. package/src/bollharness/docs/research/round-4/README.md +0 -11
  316. package/src/bollharness/docs/research/round-5/README.md +0 -11
  317. package/src/bollharness/docs/research/round-6/README.md +0 -11
  318. package/src/bollharness/package-lock.json +0 -48
  319. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  320. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  321. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  322. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  323. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  324. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  325. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  326. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  327. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  328. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  329. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  330. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  331. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  332. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  333. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  334. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  335. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  336. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  337. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  338. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  339. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  340. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  341. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  342. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  343. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  344. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  345. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  346. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  347. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  348. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  349. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  350. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  351. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  352. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  353. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  354. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  355. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  356. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  357. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  358. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  359. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  360. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  361. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  362. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  363. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  364. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  365. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  366. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  367. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  368. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  369. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  370. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  371. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  372. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  373. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  374. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  375. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  376. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  377. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  378. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  379. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  380. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  381. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  382. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  383. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  384. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  385. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  386. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  387. package/src/bollharness/tsconfig.json +0 -26
  388. package/src/constraint-runtime/package-lock.json +0 -48
  389. package/src/constraint-runtime/package.json +0 -34
  390. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  391. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  392. package/src/constraint-runtime/src/agent/index.ts +0 -1
  393. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  394. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  395. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  396. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  397. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  398. package/src/constraint-runtime/src/cli/index.ts +0 -15
  399. package/src/constraint-runtime/src/command_graph.ts +0 -20
  400. package/src/constraint-runtime/src/commands.ts +0 -83
  401. package/src/constraint-runtime/src/components/index.ts +0 -15
  402. package/src/constraint-runtime/src/constants/index.ts +0 -15
  403. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  404. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  405. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  406. package/src/constraint-runtime/src/context.ts +0 -45
  407. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  408. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  409. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  410. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  411. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  412. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  413. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  414. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  415. package/src/constraint-runtime/src/history.ts +0 -16
  416. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  417. package/src/constraint-runtime/src/index.ts +0 -28
  418. package/src/constraint-runtime/src/ink.ts +0 -4
  419. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  420. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  421. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  422. package/src/constraint-runtime/src/models.ts +0 -49
  423. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  424. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  425. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  426. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  427. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  428. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  429. package/src/constraint-runtime/src/prefetch.ts +0 -17
  430. package/src/constraint-runtime/src/query.ts +0 -7
  431. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  432. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  433. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  434. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  435. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  436. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  437. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  438. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  439. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  440. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  441. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  442. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  443. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  444. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  445. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  446. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  447. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  448. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  449. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  450. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  451. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  452. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  453. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  454. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  455. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  456. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  457. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  458. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  459. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  460. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  461. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  462. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  463. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  464. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  465. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  466. package/src/constraint-runtime/src/remote/index.ts +0 -15
  467. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  468. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  469. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  470. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  471. package/src/constraint-runtime/src/screens/index.ts +0 -15
  472. package/src/constraint-runtime/src/server/index.ts +0 -15
  473. package/src/constraint-runtime/src/services/index.ts +0 -15
  474. package/src/constraint-runtime/src/session_store.ts +0 -32
  475. package/src/constraint-runtime/src/setup.ts +0 -50
  476. package/src/constraint-runtime/src/skills/index.ts +0 -1
  477. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  478. package/src/constraint-runtime/src/state/index.ts +0 -15
  479. package/src/constraint-runtime/src/system_init.ts +0 -21
  480. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  481. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  482. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  483. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  484. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  485. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  486. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  487. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  488. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  489. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  490. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  491. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  492. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  493. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  494. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  495. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  496. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  497. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  498. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  499. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  500. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  501. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  502. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  503. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  504. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  505. package/src/constraint-runtime/src/tools.ts +0 -100
  506. package/src/constraint-runtime/src/transcript.ts +0 -23
  507. package/src/constraint-runtime/src/types/index.ts +0 -15
  508. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  509. package/src/constraint-runtime/src/utils/index.ts +0 -15
  510. package/src/constraint-runtime/src/vim/index.ts +0 -15
  511. package/src/constraint-runtime/src/voice/index.ts +0 -15
  512. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  513. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  514. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  515. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  516. package/src/constraint-runtime/tsconfig.json +0 -13
  517. package/src/pi-ecosystem/index.ts +0 -453
  518. package/src/pi-ecosystem-colony/index.ts +0 -482
  519. package/src/pi-ecosystem-goals/index.ts +0 -585
  520. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  521. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  522. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  523. package/src/pi-ecosystem-judgment/index.ts +0 -678
  524. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  525. package/src/pi-ecosystem-mcp/index.ts +0 -427
  526. package/src/pi-ecosystem-subagents/index.ts +0 -408
  527. package/src/test/ai-judgment-test.ts +0 -92
  528. package/src/test/bollharness-integration.test.ts +0 -398
  529. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  530. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  531. package/src/test/constraint-layer.test.ts +0 -191
  532. package/src/test/diap-identity-test.ts +0 -222
  533. package/src/test/diap-quick-test.ts +0 -73
  534. package/src/test/global-shared-context.test.ts +0 -393
  535. package/src/test/harness-judgment-injection.test.ts +0 -353
  536. package/src/test/harness-workflow-integrator-test.ts +0 -285
  537. package/src/test/human-value-store.test.ts +0 -316
  538. package/src/test/hybrid-integration-test.ts +0 -126
  539. package/src/test/hybrid-messenger-verify.ts +0 -68
  540. package/src/test/iroh-bistream-debug.ts +0 -50
  541. package/src/test/iroh-communication.test.ts +0 -81
  542. package/src/test/iroh-debug-test.ts +0 -69
  543. package/src/test/iroh-diap-test.ts +0 -90
  544. package/src/test/iroh-direct-connect.ts +0 -65
  545. package/src/test/iroh-e2e-fixed.ts +0 -106
  546. package/src/test/iroh-e2e-same-process.ts +0 -83
  547. package/src/test/iroh-e2e.ts +0 -83
  548. package/src/test/iroh-final-e2e.ts +0 -84
  549. package/src/test/iroh-relay-test.ts +0 -46
  550. package/src/test/iroh-simple-test.ts +0 -49
  551. package/src/test/iroh-transport-verify.ts +0 -60
  552. package/src/test/iroh-transport.test.ts +0 -47
  553. package/src/test/iroh-two-nodes.ts +0 -87
  554. package/src/test/iroh-verify.ts +0 -55
  555. package/src/test/judgment-decision.test.ts +0 -373
  556. package/src/test/llm-judgment-integration.test.ts +0 -257
  557. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  558. package/src/test/p2p-agent-dialogue.ts +0 -423
  559. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  560. package/src/test/p2p-agent-harness-flow.ts +0 -562
  561. package/src/test/p2p-agent-harness-single.ts +0 -175
  562. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  563. package/src/test/p2p-cid-connect-test.ts +0 -245
  564. package/src/test/p2p-connect-receiver.ts +0 -85
  565. package/src/test/p2p-iroh-test.ts +0 -214
  566. package/src/test/p2p-minimal-test.ts +0 -264
  567. package/src/test/p2p-node-1.ts +0 -172
  568. package/src/test/p2p-node-2.ts +0 -172
  569. package/src/test/p2p-server.ts +0 -335
  570. package/src/test/p2p-two-nodes-test.ts +0 -542
  571. package/src/test/pi-sdk.test.ts +0 -47
  572. package/src/test/set-persona.ts +0 -56
  573. package/src/test/simple.test.ts +0 -11
  574. package/src/test/storage-integration.test.ts +0 -191
  575. package/src/test/subagent-manager.test.ts +0 -392
  576. package/src/test/test-gate-flow.test.ts +0 -92
  577. package/src/test/workflow-engine.test.ts +0 -101
  578. package/src/workflows/collaboration.ts +0 -455
  579. package/src/workflows/index.ts +0 -64
  580. package/vitest.config.ts +0 -12
  581. package//346/203/263/346/263/225.md +0 -79
@@ -0,0 +1,383 @@
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 .boll/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 .boll/state/context-chains/
15
+ */
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ export const CONTEXT_CHAINS_DIR = path.join('.boll', 'state', 'context-chains');
19
+ /**
20
+ * Ensure context-chains directory exists
21
+ */
22
+ function ensureDir() {
23
+ if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
24
+ fs.mkdirSync(CONTEXT_CHAINS_DIR, { recursive: true });
25
+ }
26
+ }
27
+ /**
28
+ * Get current month directory path
29
+ */
30
+ function getMonthDir() {
31
+ const now = new Date();
32
+ const year = now.getFullYear();
33
+ const month = String(now.getMonth() + 1).padStart(2, '0');
34
+ return path.join(CONTEXT_CHAINS_DIR, `${year}-${month}`);
35
+ }
36
+ /**
37
+ * Generate session ID
38
+ */
39
+ function generateSessionId() {
40
+ const now = new Date();
41
+ const year = now.getFullYear();
42
+ const month = String(now.getMonth() + 1).padStart(2, '0');
43
+ const day = String(now.getDate()).padStart(2, '0');
44
+ const seq = getTodaySequence() + 1;
45
+ return `${year}${month}${day}-${String(seq).padStart(3, '0')}`;
46
+ }
47
+ /**
48
+ * Get today's sequence number
49
+ */
50
+ function getTodaySequence() {
51
+ const dir = getMonthDir();
52
+ if (!fs.existsSync(dir))
53
+ return 0;
54
+ const todayPrefix = new Date().toISOString().slice(0, 10).replace(/-/g, '');
55
+ const files = fs.readdirSync(dir)
56
+ .filter(f => f.startsWith(todayPrefix) && f.endsWith('.yaml'));
57
+ return files.length;
58
+ }
59
+ /**
60
+ * Save a context chain summary
61
+ */
62
+ export function saveContextChain(summary) {
63
+ ensureDir();
64
+ const monthDir = getMonthDir();
65
+ if (!fs.existsSync(monthDir)) {
66
+ fs.mkdirSync(monthDir, { recursive: true });
67
+ }
68
+ const filename = `${summary.session_id}-${summary.work_type}-${getTodaySequence() + 1}.yaml`;
69
+ const filepath = path.join(monthDir, filename);
70
+ const yaml = contextChainToYaml(summary);
71
+ fs.writeFileSync(filepath, yaml, 'utf-8');
72
+ return filepath;
73
+ }
74
+ /**
75
+ * Convert context chain to YAML string
76
+ */
77
+ function contextChainToYaml(summary) {
78
+ const lines = [
79
+ `session_id: "${summary.session_id}"`,
80
+ `work_type: ${summary.work_type}`,
81
+ `created_at: "${summary.created_at}"`,
82
+ `gate_at_session: ${summary.gate_at_session}`,
83
+ '',
84
+ '关联上下文:',
85
+ ];
86
+ for (const ref of summary['关联上下文']) {
87
+ lines.push(` - session_id: "${ref.session_id}"`);
88
+ lines.push(` reason: "${ref.reason}"`);
89
+ lines.push(` relevance: ${ref.relevance}`);
90
+ }
91
+ lines.push('');
92
+ lines.push('核心摘要:');
93
+ const core = summary['核心摘要'];
94
+ for (const [key, value] of Object.entries(core)) {
95
+ if (Array.isArray(value)) {
96
+ lines.push(` ${key}:`);
97
+ for (const item of value) {
98
+ if (typeof item === 'object') {
99
+ for (const [k, v] of Object.entries(item)) {
100
+ lines.push(` - ${k}: ${JSON.stringify(v)}`);
101
+ }
102
+ }
103
+ else {
104
+ lines.push(` - ${JSON.stringify(item)}`);
105
+ }
106
+ }
107
+ }
108
+ else if (typeof value === 'object' && value !== null) {
109
+ lines.push(` ${key}:`);
110
+ for (const [k, v] of Object.entries(value)) {
111
+ lines.push(` ${k}: ${JSON.stringify(v)}`);
112
+ }
113
+ }
114
+ else {
115
+ lines.push(` ${key}: ${JSON.stringify(value)}`);
116
+ }
117
+ }
118
+ if (summary['决策缺口'] && summary['决策缺口'].length > 0) {
119
+ lines.push('');
120
+ lines.push('决策缺口:');
121
+ for (const gap of summary['决策缺口']) {
122
+ lines.push(` - 描述: "${gap.描述}"`);
123
+ lines.push(` 影响: "${gap.影响}"`);
124
+ lines.push(` 需要什么才能关闭: "${gap.需要什么才能关闭}"`);
125
+ }
126
+ }
127
+ if (summary['风险点'] && summary['风险点'].length > 0) {
128
+ lines.push('');
129
+ lines.push('风险点:');
130
+ for (const risk of summary['风险点']) {
131
+ lines.push(` - 描述: "${risk.描述}"`);
132
+ lines.push(` 概率: ${risk.概率}`);
133
+ lines.push(` 缓解措施: "${risk.缓解措施}"`);
134
+ }
135
+ }
136
+ if (summary['遗迹'] && summary['遗迹'].length > 0) {
137
+ lines.push('');
138
+ lines.push('遗迹:');
139
+ for (const relic of summary['遗迹']) {
140
+ lines.push(` - "${relic}"`);
141
+ }
142
+ }
143
+ return lines.join('\n');
144
+ }
145
+ /**
146
+ * Load a single context chain by session_id
147
+ */
148
+ export function loadContextChain(sessionId) {
149
+ const pattern = new RegExp(`^${sessionId.replace(/-/g, '.*')}-.*\\.yaml$`);
150
+ const dirs = fs.existsSync(CONTEXT_CHAINS_DIR)
151
+ ? fs.readdirSync(CONTEXT_CHAINS_DIR)
152
+ : [];
153
+ for (const dir of dirs) {
154
+ const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
155
+ if (!fs.statSync(dirPath).isDirectory())
156
+ continue;
157
+ const files = fs.readdirSync(dirPath).filter(f => pattern.test(f));
158
+ if (files.length > 0) {
159
+ const content = fs.readFileSync(path.join(dirPath, files[0]), 'utf-8');
160
+ return parseContextChainYaml(content);
161
+ }
162
+ }
163
+ return null;
164
+ }
165
+ /**
166
+ * Parse YAML content to ContextChainSummary
167
+ */
168
+ function parseContextChainYaml(content) {
169
+ const result = {};
170
+ const lines = content.split('\n');
171
+ let currentKey = '';
172
+ let currentArray = [];
173
+ let inArray = false;
174
+ for (const line of lines) {
175
+ if (line.includes(':') && !line.startsWith(' ')) {
176
+ const [key, ...valueParts] = line.split(':');
177
+ const value = valueParts.join(':').trim();
178
+ if (inArray && currentKey) {
179
+ result[currentKey] = currentArray;
180
+ currentArray = [];
181
+ inArray = false;
182
+ }
183
+ currentKey = key.trim();
184
+ if (value) {
185
+ result[currentKey] = value.replace(/^["']|["']$/g, '');
186
+ }
187
+ }
188
+ else if (line.startsWith(' - ')) {
189
+ inArray = true;
190
+ currentArray.push(line.replace(/^ - /, '').replace(/^["']|["']$/g, ''));
191
+ }
192
+ }
193
+ if (inArray && currentKey) {
194
+ result[currentKey] = currentArray;
195
+ }
196
+ return result;
197
+ }
198
+ /**
199
+ * Find related context chains by work type and relevance
200
+ */
201
+ export function findRelatedChains(options = {}) {
202
+ const { workType, minRelevance = 0.5, maxTokens = 2000, gate, } = options;
203
+ if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
204
+ return [];
205
+ }
206
+ const chains = [];
207
+ const dirs = fs.readdirSync(CONTEXT_CHAINS_DIR);
208
+ for (const dir of dirs) {
209
+ const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
210
+ if (!fs.statSync(dirPath).isDirectory())
211
+ continue;
212
+ const files = fs.readdirSync(dirPath).filter(f => f.endsWith('.yaml'));
213
+ for (const file of files) {
214
+ const content = fs.readFileSync(path.join(dirPath, file), 'utf-8');
215
+ const chain = parseContextChainYaml(content);
216
+ if (workType && chain.work_type !== workType)
217
+ continue;
218
+ if (gate !== undefined && chain.gate_at_session !== gate)
219
+ continue;
220
+ chains.push(chain);
221
+ }
222
+ }
223
+ // Sort by relevance and recency
224
+ chains.sort((a, b) => {
225
+ const aRecency = new Date(a.created_at).getTime();
226
+ const bRecency = new Date(b.created_at).getTime();
227
+ return bRecency - aRecency;
228
+ });
229
+ // Apply token budget
230
+ let totalTokens = 0;
231
+ const selected = [];
232
+ for (const chain of chains) {
233
+ const estimatedTokens = estimateTokens(chain);
234
+ if (totalTokens + estimatedTokens > maxTokens)
235
+ break;
236
+ selected.push(chain);
237
+ totalTokens += estimatedTokens;
238
+ }
239
+ return selected;
240
+ }
241
+ /**
242
+ * Estimate token count for a chain
243
+ */
244
+ function estimateTokens(chain) {
245
+ const yaml = contextChainToYaml(chain);
246
+ return Math.ceil(yaml.length / 4);
247
+ }
248
+ /**
249
+ * Generate injection for Gate 0/3
250
+ */
251
+ export async function generateContextChainInjection(gate, workType) {
252
+ const chains = findRelatedChains({
253
+ workType,
254
+ gate: gate === 0 ? undefined : gate,
255
+ maxTokens: 2000,
256
+ });
257
+ if (chains.length === 0) {
258
+ return '';
259
+ }
260
+ const header = gate === 0
261
+ ? '# Context Chains — Recent Session Summaries'
262
+ : `# Context Chains — Gate ${gate} Related Sessions`;
263
+ const lines = [
264
+ header,
265
+ `# Injected at session start — chains from related prior sessions`,
266
+ `# Total chains: ${chains.length} | Token budget: ~2000`,
267
+ '',
268
+ 'context_chains:',
269
+ ];
270
+ for (const chain of chains) {
271
+ lines.push(` - session_id: "${chain.session_id}"`);
272
+ lines.push(` work_type: ${chain.work_type}`);
273
+ lines.push(` created_at: "${chain.created_at}"`);
274
+ lines.push(` gate_at_session: ${chain.gate_at_session}`);
275
+ if (chain['关联上下文'].length > 0) {
276
+ lines.push(` 关联上下文:`);
277
+ for (const ref of chain['关联上下文']) {
278
+ lines.push(` - session_id: "${ref.session_id}"`);
279
+ lines.push(` relevance: ${ref.relevance}`);
280
+ }
281
+ }
282
+ lines.push(` 核心摘要:`);
283
+ const core = chain['核心摘要'];
284
+ for (const [key, value] of Object.entries(core)) {
285
+ if (Array.isArray(value)) {
286
+ lines.push(` ${key}:`);
287
+ for (const item of value.slice(0, 3)) {
288
+ if (typeof item === 'object') {
289
+ lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
290
+ }
291
+ else {
292
+ lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
293
+ }
294
+ }
295
+ if (value.length > 3) {
296
+ lines.push(` ... (${value.length - 3} more)`);
297
+ }
298
+ }
299
+ else if (typeof value === 'string' && value.length > 100) {
300
+ lines.push(` ${key}: "${value.slice(0, 100)}..."`);
301
+ }
302
+ else {
303
+ lines.push(` ${key}: ${JSON.stringify(value)}`);
304
+ }
305
+ }
306
+ lines.push('');
307
+ }
308
+ return lines.join('\n');
309
+ }
310
+ /**
311
+ * Create a new context chain summary from conversation
312
+ */
313
+ export function createContextChain(params) {
314
+ const sessionId = generateSessionId();
315
+ const summary = {
316
+ session_id: sessionId,
317
+ work_type: params.workType,
318
+ created_at: new Date().toISOString(),
319
+ gate_at_session: params.gate,
320
+ '关联上下文': (params.relatedSessions || []).map(r => ({
321
+ session_id: r.sessionId,
322
+ reason: r.reason,
323
+ relevance: r.relevance,
324
+ })),
325
+ '核心摘要': extractCoreSummary(params.workType, params.conversationText),
326
+ '决策缺口': [],
327
+ '风险点': [],
328
+ '遗迹': [],
329
+ };
330
+ return summary;
331
+ }
332
+ /**
333
+ * Extract core summary based on work type
334
+ */
335
+ function extractCoreSummary(workType, text) {
336
+ switch (workType) {
337
+ case 'code_change':
338
+ return extractCodeChangeSummary(text);
339
+ case 'review':
340
+ return extractReviewSummary(text);
341
+ case 'design':
342
+ return extractDesignSummary(text);
343
+ case 'planning':
344
+ return extractPlanningSummary(text);
345
+ case 'debugging':
346
+ return extractDebuggingSummary(text);
347
+ case 'question':
348
+ return extractQuestionSummary(text);
349
+ default:
350
+ return { raw: text.slice(0, 500) };
351
+ }
352
+ }
353
+ function extractCodeChangeSummary(text) {
354
+ const files = [];
355
+ // Extract file paths from common patterns
356
+ const filePattern = /(?:modified|changed|added|deleted):\s+([^\s]+)/gi;
357
+ let match;
358
+ while ((match = filePattern.exec(text)) !== null) {
359
+ files.push({ path: match[1], change_type: 'modify', reason: '' });
360
+ }
361
+ return { files_changed: files, decisions: [], adr_linked: [] };
362
+ }
363
+ function extractReviewSummary(text) {
364
+ const hasBlock = text.toLowerCase().includes('block') || text.toLowerCase().includes('reject');
365
+ return {
366
+ verdict: hasBlock ? 'BLOCK' : 'PASS',
367
+ reviewed_artifact: '',
368
+ blocking_issues: [],
369
+ non_blocking_observations: [],
370
+ };
371
+ }
372
+ function extractDesignSummary(text) {
373
+ return { design_choices: [], constraints: [], consumers: [] };
374
+ }
375
+ function extractPlanningSummary(text) {
376
+ return { goals: [], dependencies: [], risks: [], decision_gaps: [] };
377
+ }
378
+ function extractDebuggingSummary(text) {
379
+ return { root_cause: '', symptoms_observed: [], fix_applied: [], files_touched: [] };
380
+ }
381
+ function extractQuestionSummary(text) {
382
+ return { question_type: 'unknown', answer_summary: '', source: '' };
383
+ }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Judgment-Aware Context Router
4
3
  *
@@ -14,14 +13,8 @@
14
13
  * - Extends with judgment lookup based on fragment context
15
14
  * - Injects at Gate 0, Gate 3, and file-edit time
16
15
  */
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.getJudgmentsForFragment = getJudgmentsForFragment;
19
- exports.getJudgmentsForPath = getJudgmentsForPath;
20
- exports.getCoreJudgmentsForSession = getCoreJudgmentsForSession;
21
- exports.getJudgmentsForContextRequest = getJudgmentsForContextRequest;
22
- exports.generateJudgmentInjection = generateJudgmentInjection;
23
- const context_router_js_1 = require("./context-router.js");
24
- const index_js_1 = require("../pi-ecosystem-judgment/index.js");
16
+ import { match as contextMatch, } from './context-router.js';
17
+ import { getCombinedJudgments, getJudgmentsForContext, calculateConfidence, } from '../pi-ecosystem-judgment/index.js';
25
18
  const DEFAULT_OPTIONS = {
26
19
  minConfidence: 0.7,
27
20
  maxJudgments: 5,
@@ -31,8 +24,8 @@ const DEFAULT_OPTIONS = {
31
24
  /**
32
25
  * Get judgments associated with a fragment name
33
26
  */
34
- async function getJudgmentsForFragment(fragmentName) {
35
- const allJudgments = await (0, index_js_1.getCombinedJudgments)();
27
+ export async function getJudgmentsForFragment(fragmentName) {
28
+ const allJudgments = await getCombinedJudgments();
36
29
  // Map fragment to judgment context categories
37
30
  const fragmentContextMap = {
38
31
  'truth-source-hierarchy': ['truth-source', 'code', 'architecture', 'hierarchy', 'priority'],
@@ -62,10 +55,10 @@ async function getJudgmentsForFragment(fragmentName) {
62
55
  /**
63
56
  * Get high-confidence judgments for a file path
64
57
  */
65
- async function getJudgmentsForPath(filePath, options = {}) {
58
+ export async function getJudgmentsForPath(filePath, options = {}) {
66
59
  const opts = { ...DEFAULT_OPTIONS, ...options };
67
60
  // Get associated fragment names
68
- const fragmentNames = (0, context_router_js_1.match)(filePath);
61
+ const fragmentNames = contextMatch(filePath);
69
62
  const allFragments = fragmentNames.length > 0 ? fragmentNames : ['general-dev-principles'];
70
63
  // Get judgments for each fragment
71
64
  const allJudgments = [];
@@ -89,7 +82,7 @@ async function getJudgmentsForPath(filePath, options = {}) {
89
82
  // Limit count
90
83
  const limitedJudgments = filteredJudgments.slice(0, opts.maxJudgments);
91
84
  // Calculate overall confidence
92
- const overallConfidence = (0, index_js_1.calculateConfidence)(limitedJudgments);
85
+ const overallConfidence = calculateConfidence(limitedJudgments);
93
86
  // Format as YAML
94
87
  const contextYaml = formatJudgmentsAsYaml(limitedJudgments, opts);
95
88
  return {
@@ -102,8 +95,8 @@ async function getJudgmentsForPath(filePath, options = {}) {
102
95
  /**
103
96
  * Get core judgments for session start (high confidence only)
104
97
  */
105
- async function getCoreJudgmentsForSession(minConfidence = 0.9) {
106
- const allJudgments = await (0, index_js_1.getCombinedJudgments)();
98
+ export async function getCoreJudgmentsForSession(minConfidence = 0.9) {
99
+ const allJudgments = await getCombinedJudgments();
107
100
  const highConfidence = allJudgments
108
101
  .filter(j => j.confidence >= minConfidence && j.source === 'human')
109
102
  .sort((a, b) => b.confidence - a.confidence)
@@ -130,14 +123,14 @@ async function getCoreJudgmentsForSession(minConfidence = 0.9) {
130
123
  /**
131
124
  * Get judgments for a specific context (e.g., "investment", "code-review")
132
125
  */
133
- async function getJudgmentsForContextRequest(context, options = {}) {
126
+ export async function getJudgmentsForContextRequest(context, options = {}) {
134
127
  const opts = { ...DEFAULT_OPTIONS, ...options };
135
- const judgments = await (0, index_js_1.getJudgmentsForContext)(context);
128
+ const judgments = await getJudgmentsForContext(context);
136
129
  const filtered = judgments
137
130
  .filter(j => j.confidence >= opts.minConfidence)
138
131
  .sort((a, b) => b.confidence - a.confidence)
139
132
  .slice(0, opts.maxJudgments);
140
- const overallConfidence = (0, index_js_1.calculateConfidence)(filtered);
133
+ const overallConfidence = calculateConfidence(filtered);
141
134
  const contextYaml = formatJudgmentsAsYaml(filtered, opts);
142
135
  return {
143
136
  fragments: [],
@@ -232,7 +225,7 @@ function escapeYamlString(str) {
232
225
  /**
233
226
  * Generate injection prompt for a file path
234
227
  */
235
- async function generateJudgmentInjection(filePath, gate, options = {}) {
228
+ export async function generateJudgmentInjection(filePath, gate, options = {}) {
236
229
  const opts = { ...DEFAULT_OPTIONS, ...options };
237
230
  // Gate-specific confidence thresholds
238
231
  const gateConfidence = {
@@ -266,4 +259,3 @@ async function generateJudgmentInjection(filePath, gate, options = {}) {
266
259
 
267
260
  ${result.contextYaml}`;
268
261
  }
269
- //# sourceMappingURL=context-router-judgment.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Context Router - Port of Bollharness context-fragments to Bolloon
4
3
  *
@@ -7,54 +6,15 @@
7
6
  *
8
7
  * Loads fragments from src/bollharness/scripts/context-fragments/
9
8
  */
10
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- var desc = Object.getOwnPropertyDescriptor(m, k);
13
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
- desc = { enumerable: true, get: function() { return m[k]; } };
15
- }
16
- Object.defineProperty(o, k2, desc);
17
- }) : (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- o[k2] = m[k];
20
- }));
21
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
- Object.defineProperty(o, "default", { enumerable: true, value: v });
23
- }) : function(o, v) {
24
- o["default"] = v;
25
- });
26
- var __importStar = (this && this.__importStar) || (function () {
27
- var ownKeys = function(o) {
28
- ownKeys = Object.getOwnPropertyNames || function (o) {
29
- var ar = [];
30
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
- return ar;
32
- };
33
- return ownKeys(o);
34
- };
35
- return function (mod) {
36
- if (mod && mod.__esModule) return mod;
37
- var result = {};
38
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
- __setModuleDefault(result, mod);
40
- return result;
41
- };
42
- })();
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.CONTEXT_FRAGMENTS = exports.ContextRouter = exports.FALLBACK_FRAGMENTS = exports.CONTEXT_MAP = exports.FRAGMENTS_DIR = exports.BOLLHARNESS_CONTEXT_DIR = void 0;
45
- exports.loadFragment = loadFragment;
46
- exports.match = match;
47
- exports.getFragments = getFragments;
48
- exports.loadFragments = loadFragments;
49
- const fs = __importStar(require("fs"));
50
- const path = __importStar(require("path"));
51
- exports.BOLLHARNESS_CONTEXT_DIR = path.join('src', 'bollharness', 'scripts', 'context-fragments');
52
- exports.FRAGMENTS_DIR = exports.BOLLHARNESS_CONTEXT_DIR;
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ export const BOLLHARNESS_CONTEXT_DIR = path.join('src', 'bollharness', 'scripts', 'context-fragments');
12
+ export const FRAGMENTS_DIR = BOLLHARNESS_CONTEXT_DIR;
53
13
  /**
54
14
  * Context Map - Maps file paths to relevant context fragments
55
15
  * Uses actual fragment filenames from src/bollharness/scripts/context-fragments/
56
16
  */
57
- exports.CONTEXT_MAP = {
17
+ export const CONTEXT_MAP = {
58
18
  'src/agents/': ['truth-source-hierarchy', 'protocol-consumers'],
59
19
  'src/documents/': ['truth-source-hierarchy', 'db-shared-structures'],
60
20
  'src/network/': ['truth-source-hierarchy', 'protocol-consumers'],
@@ -71,17 +31,17 @@ exports.CONTEXT_MAP = {
71
31
  /**
72
32
  * Default fragments to inject when no specific match
73
33
  */
74
- exports.FALLBACK_FRAGMENTS = ['general-dev-principles', 'code-quality'];
34
+ export const FALLBACK_FRAGMENTS = ['general-dev-principles', 'code-quality'];
75
35
  /**
76
36
  * Load a context fragment by name
77
37
  */
78
- function loadFragment(name) {
38
+ export function loadFragment(name) {
79
39
  if (!name)
80
40
  return '';
81
- const candidate = path.join(exports.FRAGMENTS_DIR, `${name}.md`);
41
+ const candidate = path.join(FRAGMENTS_DIR, `${name}.md`);
82
42
  try {
83
43
  const resolved = path.resolve(candidate);
84
- const fragmentsDirResolved = path.resolve(exports.FRAGMENTS_DIR);
44
+ const fragmentsDirResolved = path.resolve(FRAGMENTS_DIR);
85
45
  if (!resolved.startsWith(fragmentsDirResolved))
86
46
  return '';
87
47
  if (fs.existsSync(resolved) && fs.statSync(resolved).isFile()) {
@@ -95,7 +55,7 @@ function loadFragment(name) {
95
55
  * Match file path to context fragments
96
56
  * Adapted from bollharness's match() function
97
57
  */
98
- function match(filePath) {
58
+ export function match(filePath) {
99
59
  if (!filePath)
100
60
  return [];
101
61
  if (path.isAbsolute(filePath))
@@ -105,10 +65,10 @@ function match(filePath) {
105
65
  return [];
106
66
  }
107
67
  const matched = [];
108
- const sortedPatterns = Object.keys(exports.CONTEXT_MAP).sort((a, b) => b.length - a.length);
68
+ const sortedPatterns = Object.keys(CONTEXT_MAP).sort((a, b) => b.length - a.length);
109
69
  for (const pattern of sortedPatterns) {
110
70
  if (normalized.startsWith(pattern) || normalized.endsWith(pattern)) {
111
- matched.push(...exports.CONTEXT_MAP[pattern]);
71
+ matched.push(...CONTEXT_MAP[pattern]);
112
72
  }
113
73
  }
114
74
  return [...new Set(matched)];
@@ -116,17 +76,17 @@ function match(filePath) {
116
76
  /**
117
77
  * Get all fragments for a file
118
78
  */
119
- function getFragments(filePath) {
79
+ export function getFragments(filePath) {
120
80
  let fragments = match(filePath);
121
81
  if (!fragments.length) {
122
- fragments = Array.isArray(exports.FALLBACK_FRAGMENTS) ? exports.FALLBACK_FRAGMENTS : [exports.FALLBACK_FRAGMENTS];
82
+ fragments = Array.isArray(FALLBACK_FRAGMENTS) ? FALLBACK_FRAGMENTS : [FALLBACK_FRAGMENTS];
123
83
  }
124
84
  return fragments;
125
85
  }
126
86
  /**
127
87
  * Load all fragments for a file
128
88
  */
129
- function loadFragments(filePath) {
89
+ export function loadFragments(filePath) {
130
90
  const fragmentNames = getFragments(filePath);
131
91
  const contentParts = [];
132
92
  for (const name of fragmentNames) {
@@ -139,12 +99,12 @@ function loadFragments(filePath) {
139
99
  /**
140
100
  * Context Router class for integration with Bolloon
141
101
  */
142
- class ContextRouter {
102
+ export class ContextRouter {
143
103
  fragmentsDir;
144
104
  injectedFile;
145
105
  injectedTTL = 3600; // 1 hour
146
106
  constructor(fragmentsDir) {
147
- this.fragmentsDir = fragmentsDir || exports.FRAGMENTS_DIR;
107
+ this.fragmentsDir = fragmentsDir || FRAGMENTS_DIR;
148
108
  this.injectedFile = path.join('.boll', 'guard', 'injected.json');
149
109
  }
150
110
  /**
@@ -177,7 +137,7 @@ class ContextRouter {
177
137
  */
178
138
  async getJudgmentsForPath(filePath, minConfidence = 0.7) {
179
139
  try {
180
- const { getJudgmentsForPath } = await Promise.resolve().then(() => __importStar(require('./context-router-judgment.js')));
140
+ const { getJudgmentsForPath } = await import('./context-router-judgment.js');
181
141
  const result = await getJudgmentsForPath(filePath, { minConfidence });
182
142
  return result.contextYaml;
183
143
  }
@@ -190,7 +150,7 @@ class ContextRouter {
190
150
  */
191
151
  async getCoreJudgments(minConfidence = 0.9) {
192
152
  try {
193
- const { getCoreJudgmentsForSession } = await Promise.resolve().then(() => __importStar(require('./context-router-judgment.js')));
153
+ const { getCoreJudgmentsForSession } = await import('./context-router-judgment.js');
194
154
  return await getCoreJudgmentsForSession(minConfidence);
195
155
  }
196
156
  catch {
@@ -202,7 +162,7 @@ class ContextRouter {
202
162
  */
203
163
  async getJudgmentsForContext(context, minConfidence = 0.7) {
204
164
  try {
205
- const { getJudgmentsForContextRequest } = await Promise.resolve().then(() => __importStar(require('./context-router-judgment.js')));
165
+ const { getJudgmentsForContextRequest } = await import('./context-router-judgment.js');
206
166
  const result = await getJudgmentsForContextRequest(context, { minConfidence });
207
167
  return result.contextYaml;
208
168
  }
@@ -215,7 +175,7 @@ class ContextRouter {
215
175
  */
216
176
  async generateJudgmentInjection(filePath, gate) {
217
177
  try {
218
- const { generateJudgmentInjection } = await Promise.resolve().then(() => __importStar(require('./context-router-judgment.js')));
178
+ const { generateJudgmentInjection } = await import('./context-router-judgment.js');
219
179
  return await generateJudgmentInjection(filePath, gate);
220
180
  }
221
181
  catch {
@@ -259,12 +219,11 @@ class ContextRouter {
259
219
  fs.writeFileSync(this.injectedFile, JSON.stringify(data, null, 2), 'utf-8');
260
220
  }
261
221
  }
262
- exports.ContextRouter = ContextRouter;
263
222
  /**
264
223
  * Context fragments content
265
224
  * These can be stored in context-fragments/ directory
266
225
  */
267
- exports.CONTEXT_FRAGMENTS = {
226
+ export const CONTEXT_FRAGMENTS = {
268
227
  'general-dev-principles': `# General Development Principles
269
228
 
270
229
  ## Core Values
@@ -581,4 +540,3 @@ Bolloon is a P2P AI document processing system with multi-agent collaboration.
581
540
  - Coordinate with peers
582
541
  - Monitor performance`,
583
542
  };
584
- //# sourceMappingURL=context-router.js.map