@bolloon/bolloon-agent 0.1.0 → 0.1.1

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 (431) hide show
  1. package/package.json +1 -1
  2. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  3. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  4. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  5. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  6. package/dist/electron-preload.js +0 -15
  7. package/dist/electron-preload.js.map +0 -1
  8. package/dist/electron.js +0 -206
  9. package/dist/electron.js.map +0 -1
  10. package/dist/test/constraint-layer.test.js +0 -164
  11. package/dist/test/global-shared-context.test.js +0 -315
  12. package/dist/test/pi-sdk.test.js +0 -47
  13. package/dist/test/set-persona.test.js +0 -38
  14. package/dist/test/subagent-manager.test.js +0 -276
  15. package/dist/test/workflow-engine.test.js +0 -87
  16. package/dist/workflows/collaboration.js +0 -374
  17. package/dist/workflows/index.js +0 -54
  18. package/docs/agent-communication.md +0 -333
  19. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  20. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  21. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  22. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  23. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  24. 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
  25. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  26. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  27. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  28. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  29. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  30. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  31. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  32. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  33. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  34. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  35. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  36. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  37. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  38. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  39. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  40. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  41. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  42. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  43. package/src/bollharness/.boll/settings.json +0 -180
  44. package/src/bollharness/.boll/settings.json.template +0 -31
  45. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  46. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  47. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  48. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  49. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  50. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  51. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  52. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  53. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  54. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  55. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  56. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  57. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  58. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  59. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  60. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  61. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  62. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  63. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  64. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  65. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  66. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  67. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  68. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  69. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  70. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  71. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  72. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  73. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  74. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  75. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  76. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  77. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  78. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  79. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  80. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  81. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  82. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  83. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  84. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  85. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  86. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  87. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  88. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  89. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  90. package/src/bollharness/.claude/settings.json +0 -157
  91. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  92. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  93. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  94. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  95. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  96. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  97. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  98. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  99. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  100. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  101. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  102. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  103. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  104. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  105. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  106. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  107. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  108. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  109. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  110. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  111. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  112. package/src/bollharness/.githooks/pre-commit +0 -21
  113. package/src/bollharness/.github/workflows/ci.yml +0 -88
  114. package/src/bollharness/CLAUDE.md +0 -73
  115. package/src/bollharness/README.md +0 -143
  116. package/src/bollharness/README.zh-CN.md +0 -131
  117. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  118. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  119. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  120. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  121. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  122. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  123. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  124. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  125. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  126. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  127. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  128. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  129. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  130. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  131. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  132. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  133. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  134. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  135. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  136. package/src/bollharness/docs/launch-article-en.md +0 -276
  137. package/src/bollharness/docs/launch-article-zh.md +0 -305
  138. package/src/bollharness/docs/practice.html +0 -356
  139. package/src/bollharness/docs/practice.md +0 -82
  140. package/src/bollharness/docs/research/round-1/README.md +0 -11
  141. package/src/bollharness/docs/research/round-2/README.md +0 -11
  142. package/src/bollharness/docs/research/round-3/README.md +0 -11
  143. package/src/bollharness/docs/research/round-4/README.md +0 -11
  144. package/src/bollharness/docs/research/round-5/README.md +0 -11
  145. package/src/bollharness/docs/research/round-6/README.md +0 -11
  146. package/src/bollharness/package-lock.json +0 -48
  147. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  148. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  149. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  150. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  151. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  152. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  153. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  154. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  155. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  156. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  157. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  158. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  159. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  160. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  161. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  162. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  163. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  164. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  165. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  166. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  167. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  168. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  169. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  170. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  171. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  172. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  173. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  174. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  175. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  176. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  177. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  178. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  179. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  180. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  181. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  182. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  183. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  184. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  185. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  186. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  187. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  188. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  189. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  190. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  191. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  192. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  193. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  194. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  195. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  196. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  197. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  198. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  199. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  200. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  201. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  202. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  203. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  204. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  205. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  206. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  207. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  208. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  209. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  210. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  211. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  212. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  213. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  214. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  215. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  216. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  217. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -74
  218. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  219. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  220. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  221. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  222. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  223. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  224. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  225. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  226. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  227. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  228. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  229. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  230. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  231. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  232. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  233. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  234. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  235. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  236. package/src/bollharness/tsconfig.json +0 -26
  237. package/src/constraint-runtime/package-lock.json +0 -48
  238. package/src/constraint-runtime/package.json +0 -34
  239. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  240. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  241. package/src/constraint-runtime/src/agent/index.ts +0 -1
  242. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  243. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  244. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  245. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  246. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  247. package/src/constraint-runtime/src/cli/index.ts +0 -15
  248. package/src/constraint-runtime/src/command_graph.ts +0 -20
  249. package/src/constraint-runtime/src/commands.ts +0 -83
  250. package/src/constraint-runtime/src/components/index.ts +0 -15
  251. package/src/constraint-runtime/src/constants/index.ts +0 -15
  252. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  253. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  254. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  255. package/src/constraint-runtime/src/context.ts +0 -45
  256. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  257. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  258. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  259. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  260. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  261. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  262. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  263. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  264. package/src/constraint-runtime/src/history.ts +0 -16
  265. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  266. package/src/constraint-runtime/src/index.ts +0 -28
  267. package/src/constraint-runtime/src/ink.ts +0 -4
  268. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  269. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  270. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  271. package/src/constraint-runtime/src/models.ts +0 -49
  272. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  273. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  274. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  275. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  276. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  277. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  278. package/src/constraint-runtime/src/prefetch.ts +0 -17
  279. package/src/constraint-runtime/src/query.ts +0 -7
  280. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  281. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  282. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  283. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  284. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  285. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  286. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  287. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  288. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  289. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  290. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  291. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  292. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  293. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  294. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  295. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  296. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  297. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  298. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  299. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  300. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  301. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  302. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  303. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  304. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  305. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  306. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  307. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  308. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  309. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  310. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  311. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  312. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  313. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  314. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  315. package/src/constraint-runtime/src/remote/index.ts +0 -15
  316. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  317. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  318. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  319. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  320. package/src/constraint-runtime/src/screens/index.ts +0 -15
  321. package/src/constraint-runtime/src/server/index.ts +0 -15
  322. package/src/constraint-runtime/src/services/index.ts +0 -15
  323. package/src/constraint-runtime/src/session_store.ts +0 -32
  324. package/src/constraint-runtime/src/setup.ts +0 -50
  325. package/src/constraint-runtime/src/skills/index.ts +0 -1
  326. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  327. package/src/constraint-runtime/src/state/index.ts +0 -15
  328. package/src/constraint-runtime/src/system_init.ts +0 -21
  329. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  330. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  331. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  332. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  333. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  334. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  335. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  336. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  337. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  338. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  339. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  340. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  341. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  342. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  343. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  344. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  345. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  346. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  347. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  348. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  349. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  350. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  351. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  352. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  353. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  354. package/src/constraint-runtime/src/tools.ts +0 -100
  355. package/src/constraint-runtime/src/transcript.ts +0 -23
  356. package/src/constraint-runtime/src/types/index.ts +0 -15
  357. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  358. package/src/constraint-runtime/src/utils/index.ts +0 -15
  359. package/src/constraint-runtime/src/vim/index.ts +0 -15
  360. package/src/constraint-runtime/src/voice/index.ts +0 -15
  361. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  362. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  363. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  364. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  365. package/src/constraint-runtime/tsconfig.json +0 -13
  366. package/src/pi-ecosystem/index.ts +0 -453
  367. package/src/pi-ecosystem-colony/index.ts +0 -482
  368. package/src/pi-ecosystem-goals/index.ts +0 -585
  369. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  370. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  371. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  372. package/src/pi-ecosystem-judgment/index.ts +0 -678
  373. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  374. package/src/pi-ecosystem-mcp/index.ts +0 -427
  375. package/src/pi-ecosystem-subagents/index.ts +0 -408
  376. package/src/test/ai-judgment-test.ts +0 -92
  377. package/src/test/bollharness-integration.test.ts +0 -398
  378. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  379. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  380. package/src/test/constraint-layer.test.ts +0 -191
  381. package/src/test/diap-identity-test.ts +0 -222
  382. package/src/test/diap-quick-test.ts +0 -73
  383. package/src/test/global-shared-context.test.ts +0 -393
  384. package/src/test/harness-judgment-injection.test.ts +0 -353
  385. package/src/test/harness-workflow-integrator-test.ts +0 -285
  386. package/src/test/human-value-store.test.ts +0 -316
  387. package/src/test/hybrid-integration-test.ts +0 -126
  388. package/src/test/hybrid-messenger-verify.ts +0 -68
  389. package/src/test/iroh-bistream-debug.ts +0 -50
  390. package/src/test/iroh-communication.test.ts +0 -81
  391. package/src/test/iroh-debug-test.ts +0 -69
  392. package/src/test/iroh-diap-test.ts +0 -90
  393. package/src/test/iroh-direct-connect.ts +0 -65
  394. package/src/test/iroh-e2e-fixed.ts +0 -106
  395. package/src/test/iroh-e2e-same-process.ts +0 -83
  396. package/src/test/iroh-e2e.ts +0 -83
  397. package/src/test/iroh-final-e2e.ts +0 -84
  398. package/src/test/iroh-relay-test.ts +0 -46
  399. package/src/test/iroh-simple-test.ts +0 -49
  400. package/src/test/iroh-transport-verify.ts +0 -60
  401. package/src/test/iroh-transport.test.ts +0 -47
  402. package/src/test/iroh-two-nodes.ts +0 -87
  403. package/src/test/iroh-verify.ts +0 -55
  404. package/src/test/judgment-decision.test.ts +0 -373
  405. package/src/test/llm-judgment-integration.test.ts +0 -257
  406. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  407. package/src/test/p2p-agent-dialogue.ts +0 -423
  408. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  409. package/src/test/p2p-agent-harness-flow.ts +0 -562
  410. package/src/test/p2p-agent-harness-single.ts +0 -175
  411. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  412. package/src/test/p2p-cid-connect-test.ts +0 -245
  413. package/src/test/p2p-connect-receiver.ts +0 -85
  414. package/src/test/p2p-iroh-test.ts +0 -214
  415. package/src/test/p2p-minimal-test.ts +0 -264
  416. package/src/test/p2p-node-1.ts +0 -172
  417. package/src/test/p2p-node-2.ts +0 -172
  418. package/src/test/p2p-server.ts +0 -335
  419. package/src/test/p2p-two-nodes-test.ts +0 -542
  420. package/src/test/pi-sdk.test.ts +0 -47
  421. package/src/test/set-persona.ts +0 -56
  422. package/src/test/simple.test.ts +0 -11
  423. package/src/test/storage-integration.test.ts +0 -191
  424. package/src/test/subagent-manager.test.ts +0 -392
  425. package/src/test/test-gate-flow.test.ts +0 -92
  426. package/src/test/workflow-engine.test.ts +0 -101
  427. package/src/web/design.md +0 -99
  428. package/src/workflows/collaboration.ts +0 -455
  429. package/src/workflows/index.ts +0 -64
  430. package/vitest.config.ts +0 -12
  431. 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
- }