@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
@@ -1,678 +0,0 @@
1
- /**
2
- * Pi Judgment Integration for Bolloon
3
- *
4
- * Core module for capturing, distilling, and applying human judgment.
5
- *
6
- * Architecture:
7
- * Human Input → Distillation Trigger → LLM Extraction → Judgment YAML
8
- * ↓
9
- * ValueFunction
10
- * ↓
11
- * Runtime Decision
12
- *
13
- * Storage: Hybrid mode
14
- * - High-frequency rules: Embedded in context-fragments/*.md YAML frontmatter
15
- * - Long-term preferences: .bolloon/judgments/*.yaml
16
- */
17
-
18
- import * as fs from 'fs/promises';
19
- import * as path from 'path';
20
-
21
- export type JudgmentType = 'rule' | 'preference' | 'trajectory' | 'reward';
22
- export type JudgmentSource = 'human' | 'agent' | 'collaboration';
23
- export type DistillationTrigger = 'explicit' | 'implicit' | 'trajectory';
24
-
25
- export interface Judgment {
26
- id: string;
27
- type: JudgmentType;
28
- content: string;
29
- source: JudgmentSource;
30
- confidence: number;
31
- context?: string;
32
- createdAt: string;
33
- updatedAt: string;
34
- evidence?: JudgmentEvidence;
35
- metadata?: Record<string, unknown>;
36
- }
37
-
38
- export interface JudgmentEvidence {
39
- trajectory?: TrajectoryPoint[];
40
- preference_pair?: PreferencePair[];
41
- correction?: Correction;
42
- }
43
-
44
- export interface TrajectoryPoint {
45
- timestamp: string;
46
- action: string;
47
- outcome: string;
48
- approved: boolean;
49
- }
50
-
51
- export interface PreferencePair {
52
- query: string;
53
- chosen: string;
54
- rejected: string;
55
- context?: string;
56
- }
57
-
58
- export interface Correction {
59
- original: string;
60
- corrected: string;
61
- reason?: string;
62
- timestamp: string;
63
- }
64
-
65
- export interface JudgmentFile {
66
- judgments: Judgment[];
67
- filePath: string;
68
- lastModified: string;
69
- }
70
-
71
- export interface DistillationRequest {
72
- rawInput: string;
73
- trigger: DistillationTrigger;
74
- context: string;
75
- conversationHistory?: string[];
76
- agentPrediction?: string;
77
- }
78
-
79
- export interface ValueFunction {
80
- judgments: Judgment[];
81
- contextWeights: Record<string, number>;
82
- lastUpdated: string;
83
- }
84
-
85
- const JUDGMENTS_DIR = path.join(process.env.HOME || '/tmp', '.bolloon', 'judgments');
86
- const JUDGMENT_FILES = {
87
- rules: path.join(JUDGMENTS_DIR, 'rules.yaml'),
88
- preferences: path.join(JUDGMENTS_DIR, 'preferences.yaml'),
89
- trajectories: path.join(JUDGMENTS_DIR, 'trajectories.yaml'),
90
- rewards: path.join(JUDGMENTS_DIR, 'rewards.yaml'),
91
- };
92
-
93
- let judgmentCache: Map<string, Judgment[]> = new Map();
94
- let valueFunctionCache: ValueFunction | null = null;
95
- let cacheDirty: boolean = true;
96
- let storeInitialized = false;
97
-
98
- function generateJudgmentId(): string {
99
- return `jdg-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
100
- }
101
-
102
- /**
103
- * Initialize the judgment store, creating all YAML files if they don't exist
104
- */
105
- export async function initializeJudgmentStore(): Promise<void> {
106
- if (storeInitialized) return;
107
-
108
- await fs.mkdir(JUDGMENTS_DIR, { recursive: true });
109
-
110
- const emptyYaml = '# Auto-generated by Pi Judgment System\n# Do not edit manually\n\njudgments: []\n';
111
-
112
- for (const [type, filePath] of Object.entries(JUDGMENT_FILES)) {
113
- try {
114
- await fs.access(filePath);
115
- } catch {
116
- await fs.writeFile(filePath, emptyYaml, 'utf-8');
117
- console.log(`[Judgment] Created ${type} store at ${filePath}`);
118
- }
119
- }
120
-
121
- storeInitialized = true;
122
- cacheDirty = true;
123
- }
124
-
125
- /**
126
- * Bootstrap the entire judgment system - initializes all stores and LLM
127
- */
128
- export async function bootstrapJudgmentSystem(): Promise<void> {
129
- console.log('[Judgment] Bootstrapping judgment system...');
130
-
131
- await initializeJudgmentStore();
132
-
133
- const { initializeValueStore } = await import('./human-value-store.js');
134
- await initializeValueStore();
135
-
136
- const { initializeDistillation } = await import('./distillation.js');
137
- await initializeDistillation();
138
-
139
- cacheDirty = true;
140
- valueFunctionCache = null;
141
-
142
- console.log('[Judgment] Bootstrap complete');
143
- }
144
-
145
- /**
146
- * Load all judgments from YAML files
147
- */
148
- export async function loadJudgments(): Promise<Map<string, Judgment[]>> {
149
- if (!storeInitialized) {
150
- await initializeJudgmentStore();
151
- }
152
-
153
- const judgments = new Map<string, Judgment[]>();
154
-
155
- for (const [type, filePath] of Object.entries(JUDGMENT_FILES)) {
156
- try {
157
- const content = await fs.readFile(filePath, 'utf-8');
158
- const data = parseYaml(content) as { judgments?: Judgment[] } | Judgment[];
159
- if (data && Array.isArray(data)) {
160
- judgments.set(type, data as Judgment[]);
161
- } else if (data && 'judgments' in data && Array.isArray(data.judgments)) {
162
- judgments.set(type, data.judgments as Judgment[]);
163
- }
164
- } catch {
165
- judgments.set(type, []);
166
- }
167
- }
168
-
169
- judgmentCache = judgments;
170
- cacheDirty = false;
171
- return judgments;
172
- }
173
-
174
- /**
175
- * Save judgments to YAML file
176
- */
177
- async function saveJudgments(type: string, judgments: Judgment[]): Promise<void> {
178
- await fs.mkdir(JUDGMENTS_DIR, { recursive: true });
179
- const filePath = JUDGMENT_FILES[type as keyof typeof JUDGMENT_FILES];
180
- if (!filePath) return;
181
-
182
- const yaml = serializeYaml({ judgments });
183
- await fs.writeFile(filePath, yaml, 'utf-8');
184
- cacheDirty = true;
185
- }
186
-
187
- /**
188
- * Create a new judgment
189
- */
190
- export async function createJudgment(params: {
191
- type: JudgmentType;
192
- content: string;
193
- source: JudgmentSource;
194
- confidence: number;
195
- context?: string;
196
- evidence?: JudgmentEvidence;
197
- }): Promise<Judgment> {
198
- const judgment: Judgment = {
199
- id: generateJudgmentId(),
200
- type: params.type,
201
- content: params.content,
202
- source: params.source,
203
- confidence: params.confidence,
204
- context: params.context,
205
- createdAt: new Date().toISOString(),
206
- updatedAt: new Date().toISOString(),
207
- evidence: params.evidence,
208
- };
209
-
210
- const judgments = await loadJudgments();
211
- const typeJudgments = judgments.get(params.type) || [];
212
- typeJudgments.push(judgment);
213
- judgments.set(params.type, typeJudgments);
214
-
215
- await saveJudgments(params.type, typeJudgments);
216
-
217
- console.log(`[Judgment] Created ${judgment.id} (${params.type}): ${params.content.substring(0, 50)}...`);
218
- return judgment;
219
- }
220
-
221
- /**
222
- * Update judgment confidence based on feedback
223
- */
224
- export async function updateJudgmentConfidence(
225
- id: string,
226
- delta: number,
227
- feedbackType: 'approve' | 'reject' | 'correct'
228
- ): Promise<Judgment | null> {
229
- const judgments = await loadJudgments();
230
-
231
- for (const [type, typeJudgments] of judgments.entries()) {
232
- const judgment = typeJudgments.find((j) => j.id === id);
233
- if (judgment) {
234
- let confidenceChange = delta;
235
-
236
- if (feedbackType === 'approve') {
237
- confidenceChange = Math.min(delta, 1 - judgment.confidence);
238
- } else if (feedbackType === 'reject') {
239
- confidenceChange = -delta;
240
- } else if (feedbackType === 'correct') {
241
- confidenceChange = delta * 2;
242
- }
243
-
244
- judgment.confidence = Math.max(0, Math.min(1, judgment.confidence + confidenceChange));
245
- judgment.updatedAt = new Date().toISOString();
246
-
247
- await saveJudgments(type, typeJudgments);
248
- return judgment;
249
- }
250
- }
251
-
252
- return null;
253
- }
254
-
255
- /**
256
- * Get all judgments
257
- */
258
- export async function getAllJudgments(): Promise<Judgment[]> {
259
- const judgments = await loadJudgments();
260
- const all: Judgment[] = [];
261
- for (const typeJudgments of judgments.values()) {
262
- all.push(...typeJudgments);
263
- }
264
- return all;
265
- }
266
-
267
- /**
268
- * Get judgments by type
269
- */
270
- export async function getJudgmentsByType(type: JudgmentType): Promise<Judgment[]> {
271
- const judgments = await loadJudgments();
272
- return judgments.get(type) || [];
273
- }
274
-
275
- /**
276
- * Get judgments relevant to a context
277
- */
278
- export async function getJudgmentsForContext(context: string): Promise<Judgment[]> {
279
- const all = await getAllJudgments();
280
- return all.filter((j) => {
281
- if (!j.context) return false;
282
- return j.context.toLowerCase().includes(context.toLowerCase());
283
- });
284
- }
285
-
286
- /**
287
- * Calculate confidence score for a decision
288
- */
289
- export function calculateConfidence(judgments: Judgment[]): number {
290
- if (judgments.length === 0) return 0.5;
291
-
292
- let totalSourceWeight = 0;
293
- let weightedConfidenceSum = 0;
294
-
295
- for (const j of judgments) {
296
- const sourceWeight = j.source === 'human' ? 1.5 : 1.0;
297
- weightedConfidenceSum += j.confidence * sourceWeight;
298
- totalSourceWeight += sourceWeight;
299
- }
300
-
301
- return totalSourceWeight > 0 ? weightedConfidenceSum / totalSourceWeight : 0.5;
302
- }
303
-
304
- /**
305
- * Build ValueFunction from judgments
306
- */
307
- export async function buildValueFunction(context?: string): Promise<ValueFunction> {
308
- const judgments = context
309
- ? await getJudgmentsForContext(context)
310
- : await getAllJudgments();
311
-
312
- const contextWeights: Record<string, number> = {};
313
- const contextCounts: Record<string, number> = {};
314
-
315
- for (const j of judgments) {
316
- const ctx = j.context || 'general';
317
- contextCounts[ctx] = (contextCounts[ctx] || 0) + 1;
318
- }
319
-
320
- for (const [ctx, count] of Object.entries(contextCounts)) {
321
- contextWeights[ctx] = count / judgments.length;
322
- }
323
-
324
- return {
325
- judgments,
326
- contextWeights,
327
- lastUpdated: new Date().toISOString(),
328
- };
329
- }
330
-
331
- /**
332
- * Get cached ValueFunction
333
- */
334
- export async function getValueFunction(context?: string): Promise<ValueFunction> {
335
- if (!valueFunctionCache || cacheDirty) {
336
- valueFunctionCache = await buildValueFunction(context);
337
- }
338
- return valueFunctionCache;
339
- }
340
-
341
- /**
342
- * Extract judgments from context fragment YAML frontmatter
343
- * Falls back to using file content + filename as context when no frontmatter judgment exists
344
- */
345
- export async function extractFromFragment(fragmentPath: string): Promise<Judgment[]> {
346
- try {
347
- const content = await fs.readFile(fragmentPath, 'utf-8');
348
- const frontmatter = extractFrontmatter(content);
349
- const context = path.basename(fragmentPath, '.md');
350
- const markdownContent = extractMarkdownContent(content);
351
-
352
- if (frontmatter.judgment) {
353
- const j = frontmatter.judgment as Record<string, unknown>;
354
- return [{
355
- id: generateJudgmentId(),
356
- type: (j.type as JudgmentType) || 'rule',
357
- content: markdownContent,
358
- source: (j.source as JudgmentSource) || 'human',
359
- confidence: typeof j.confidence === 'number' ? j.confidence : 0.9,
360
- context: j.category as string || context,
361
- createdAt: j.last_reviewed as string || new Date().toISOString(),
362
- updatedAt: new Date().toISOString(),
363
- metadata: { source: 'fragment', fragment: fragmentPath },
364
- }];
365
- }
366
-
367
- if (!markdownContent || markdownContent.trim().length < 10) {
368
- return [];
369
- }
370
-
371
- const firstLine = markdownContent.split('\n').find(l => l.trim().length > 0) || '';
372
- const headingMatch = firstLine.match(/^#+\s*(.+)/);
373
- const ruleContent = headingMatch
374
- ? `${headingMatch[1].trim()} - ${markdownContent.substring(0, 200).replace(/^#+\s*.+\n/, '').trim().substring(0, 150)}`
375
- : markdownContent.substring(0, 200).split('\n')[0]?.trim() || firstLine;
376
-
377
- return [{
378
- id: generateJudgmentId(),
379
- type: 'rule',
380
- content: ruleContent,
381
- source: 'human',
382
- confidence: 0.8,
383
- context,
384
- createdAt: new Date().toISOString(),
385
- updatedAt: new Date().toISOString(),
386
- metadata: { source: 'fragment', fragment: fragmentPath, autoExtracted: true },
387
- }];
388
- } catch {
389
- return [];
390
- }
391
- }
392
-
393
- /**
394
- * Load judgments from all context fragments
395
- */
396
- export async function loadFragmentJudgments(): Promise<Judgment[]> {
397
- const FRAGMENTS_DIR = path.join(process.cwd(), 'src', 'bollharness', 'scripts', 'context-fragments');
398
- const fragmentJudgments: Judgment[] = [];
399
-
400
- try {
401
- const files = await fs.readdir(FRAGMENTS_DIR);
402
- for (const file of files) {
403
- if (file.endsWith('.md')) {
404
- const judgments = await extractFromFragment(path.join(FRAGMENTS_DIR, file));
405
- fragmentJudgments.push(...judgments);
406
- }
407
- }
408
- } catch {
409
- // Fragment directory doesn't exist
410
- }
411
-
412
- return fragmentJudgments;
413
- }
414
-
415
- /**
416
- * Get combined judgments (file + fragments)
417
- */
418
- export async function getCombinedJudgments(): Promise<Judgment[]> {
419
- const [fileJudgments, fragmentJudgments] = await Promise.all([
420
- getAllJudgments(),
421
- loadFragmentJudgments(),
422
- ]);
423
-
424
- const seen = new Set<string>();
425
- const combined: Judgment[] = [];
426
-
427
- for (const j of fragmentJudgments) {
428
- combined.push(j);
429
- seen.add(j.context || j.id);
430
- }
431
-
432
- for (const j of fileJudgments) {
433
- if (!seen.has(j.context || j.id)) {
434
- combined.push(j);
435
- }
436
- }
437
-
438
- return combined;
439
- }
440
-
441
- /**
442
- * Simple YAML parser (handles basic judgment format)
443
- */
444
- function parseYaml(content: string): unknown {
445
- try {
446
- if (!content.trim()) return [];
447
-
448
- const data: Record<string, unknown> = {};
449
- const lines = content.split('\n');
450
- const arrayItems: Record<string, unknown>[] = [];
451
- let inArray = false;
452
- let currentItem: Record<string, unknown> | null = null;
453
- let currentItemIndent = 0;
454
-
455
- for (const line of lines) {
456
- const trimmed = line.trim();
457
- const indent = line.search(/\S/);
458
- const isArrayItem = trimmed.startsWith('-');
459
- const isComment = trimmed.startsWith('#');
460
-
461
- if (isComment) continue;
462
-
463
- if (trimmed.startsWith('judgments:')) {
464
- inArray = true;
465
- continue;
466
- }
467
-
468
- if (!inArray) continue;
469
-
470
- if (isArrayItem) {
471
- if (currentItem) {
472
- arrayItems.push(currentItem);
473
- }
474
- currentItem = {};
475
- currentItemIndent = indent + 1;
476
-
477
- const itemContent = trimmed.substring(1).trim();
478
- const kvMatch = itemContent.match(/^(\w+):\s*(.*)/);
479
- if (kvMatch) {
480
- currentItem[kvMatch[1]] = parseValue(kvMatch[2]);
481
- }
482
- continue;
483
- }
484
-
485
- if (currentItem && indent > currentItemIndent) {
486
- const kvMatch = trimmed.match(/^(\w+):\s*(.*)/);
487
- if (kvMatch) {
488
- currentItem[kvMatch[1]] = parseValue(kvMatch[2]);
489
- }
490
- continue;
491
- }
492
-
493
- if (trimmed.includes(':')) {
494
- const kvMatch = trimmed.match(/^(\w+):\s*(.*)/);
495
- if (kvMatch && !isArrayItem) {
496
- data[kvMatch[1]] = parseValue(kvMatch[2]);
497
- }
498
- }
499
- }
500
-
501
- if (currentItem) {
502
- arrayItems.push(currentItem);
503
- }
504
-
505
- if (arrayItems.length > 0) {
506
- data['judgments'] = arrayItems;
507
- }
508
-
509
- return data;
510
- } catch {
511
- return [];
512
- }
513
- }
514
-
515
- function parseValue(value: string): unknown {
516
- const trimmed = value.trim();
517
- if (trimmed === 'true') return true;
518
- if (trimmed === 'false') return false;
519
- if (trimmed === 'null' || trimmed === 'undefined') return null;
520
- if (!isNaN(Number(trimmed)) && trimmed !== '') return Number(trimmed);
521
- return trimmed;
522
- }
523
-
524
- /**
525
- * Simple YAML serializer
526
- */
527
- function serializeYaml(data: unknown): string {
528
- const lines: string[] = ['# Auto-generated by Pi Judgment System', '# Do not edit manually', ''];
529
-
530
- if (typeof data === 'object' && data !== null) {
531
- lines.push('judgments:');
532
- const d = data as Record<string, unknown>;
533
- const arr = d.judgments;
534
- if (Array.isArray(arr)) {
535
- for (const item of arr) {
536
- lines.push(' - ' + serializeObject(item, 4));
537
- }
538
- }
539
- }
540
-
541
- return lines.join('\n');
542
- }
543
-
544
- function serializeObject(obj: unknown, indent: number): string {
545
- if (typeof obj !== 'object' || obj === null) {
546
- return String(obj);
547
- }
548
-
549
- const spaces = ' '.repeat(indent);
550
- const innerSpace = ' '.repeat(indent + 2);
551
- const parts: string[] = [];
552
-
553
- for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {
554
- if (value === undefined || value === null) continue;
555
-
556
- if (typeof value === 'object' && !Array.isArray(value)) {
557
- parts.push(`${key}:`);
558
- parts.push(serializeObject(value, indent + 2));
559
- } else if (Array.isArray(value)) {
560
- parts.push(`${key}:`);
561
- for (const item of value) {
562
- parts.push(`${innerSpace}- ${serializeObject(item, indent + 4)}`);
563
- }
564
- } else {
565
- const strValue = typeof value === 'string' ? `"${value}"` : String(value);
566
- parts.push(`${key}: ${strValue}`);
567
- }
568
- }
569
-
570
- if (parts.length === 1 && !parts[0].includes(':')) {
571
- return parts[0];
572
- }
573
-
574
- return parts.join(`\n${spaces}`);
575
- }
576
-
577
- /**
578
- * Extract YAML frontmatter from markdown
579
- */
580
- function extractFrontmatter(content: string): Record<string, unknown> {
581
- const match = content.match(/^---\n([\s\S]*?)\n---/);
582
- if (!match) return {};
583
-
584
- const frontmatter: Record<string, unknown> = {};
585
- const lines = match[1].split('\n');
586
-
587
- let currentKey = '';
588
- let currentIndent = 0;
589
-
590
- for (const line of lines) {
591
- const indent = line.search(/\S/);
592
- const trimmed = line.trim();
593
-
594
- if (trimmed.startsWith('judgment:')) {
595
- currentKey = 'judgment';
596
- frontmatter[currentKey] = {};
597
- } else if (trimmed.startsWith('-')) {
598
- // Array item
599
- } else if (trimmed.includes(':')) {
600
- const [key, ...valueParts] = trimmed.split(':');
601
- const value = valueParts.join(':').trim();
602
-
603
- if (currentKey === 'judgment' && indent > 0) {
604
- (frontmatter[currentKey] as Record<string, unknown>)[key] = parseValue(value);
605
- } else {
606
- frontmatter[key.trim()] = parseValue(value);
607
- currentKey = key.trim();
608
- }
609
- }
610
- }
611
-
612
- return frontmatter;
613
- }
614
-
615
- /**
616
- * Extract markdown content (after frontmatter)
617
- */
618
- function extractMarkdownContent(content: string): string {
619
- const match = content.match(/^---\n[\s\S]*?\n---\n([\s\S]*)$/);
620
- return match ? match[1].trim() : content;
621
- }
622
-
623
- /**
624
- * Get judgment statistics
625
- */
626
- export async function getJudgmentStats(): Promise<{
627
- total: number;
628
- byType: Record<JudgmentType, number>;
629
- bySource: Record<JudgmentSource, number>;
630
- averageConfidence: number;
631
- }> {
632
- const judgments = await getAllJudgments();
633
-
634
- const byType: Record<JudgmentType, number> = {
635
- rule: 0,
636
- preference: 0,
637
- trajectory: 0,
638
- reward: 0,
639
- };
640
-
641
- const bySource: Record<JudgmentSource, number> = {
642
- human: 0,
643
- agent: 0,
644
- collaboration: 0,
645
- };
646
-
647
- let totalConfidence = 0;
648
-
649
- for (const j of judgments) {
650
- byType[j.type]++;
651
- bySource[j.source]++;
652
- totalConfidence += j.confidence;
653
- }
654
-
655
- return {
656
- total: judgments.length,
657
- byType,
658
- bySource,
659
- averageConfidence: judgments.length > 0 ? totalConfidence / judgments.length : 0,
660
- };
661
- }
662
-
663
- /**
664
- * Clear judgment cache
665
- */
666
- export function clearCache(): void {
667
- valueFunctionCache = null;
668
- cacheDirty = true;
669
- judgmentCache = new Map();
670
- }
671
-
672
- /**
673
- * Reset judgment store initialization (forces re-initialization on next use)
674
- */
675
- export function resetJudgmentStore(): void {
676
- storeInitialized = false;
677
- clearCache();
678
- }