@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,398 +0,0 @@
1
- /**
2
- * Bollharness Integration Tests - Standalone Component Tests
3
- *
4
- * These tests verify the core bollharness integration components
5
- * without requiring full constraint-runtime dependency chain.
6
- */
7
-
8
- import { describe, it, expect, vi } from 'vitest';
9
-
10
- // ==================== Gate State Machine Tests ====================
11
-
12
- interface GateConfig {
13
- entryCondition: string;
14
- requiredArtifact: string;
15
- requiredNextSkill: string;
16
- requiredReviewSubstrate?: string;
17
- isReviewGate: boolean;
18
- }
19
-
20
- type Gate = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
21
-
22
- const GATE_CONFIGS: Record<Gate, GateConfig> = {
23
- 0: { entryCondition: '用户提出需求', requiredArtifact: '问题陈述', requiredNextSkill: 'arch', isReviewGate: false },
24
- 1: { entryCondition: 'Gate 0 产物存在', requiredArtifact: 'ADR草稿', requiredNextSkill: 'arch', isReviewGate: false },
25
- 2: { entryCondition: 'ADR草稿完成', requiredArtifact: '审查报告', requiredNextSkill: 'review', requiredReviewSubstrate: 'ref-review-sop.md', isReviewGate: true },
26
- 3: { entryCondition: 'Gate 2 PASS', requiredArtifact: 'PLAN文档', requiredNextSkill: 'harness-eng', isReviewGate: false },
27
- 4: { entryCondition: 'PLAN vN-final冻结', requiredArtifact: '审查报告', requiredNextSkill: 'review', requiredReviewSubstrate: 'ref-review-sop.md', isReviewGate: true },
28
- 5: { entryCondition: 'Gate 4 PASS', requiredArtifact: 'WP拆分+TASK.md', requiredNextSkill: 'task-arch', isReviewGate: false },
29
- 6: { entryCondition: '全部TASK.md完成', requiredArtifact: '审查报告', requiredNextSkill: 'review', requiredReviewSubstrate: 'ref-review-sop.md', isReviewGate: true },
30
- 7: { entryCondition: 'Gate 6 PASS', requiredArtifact: '代码+LOG.md', requiredNextSkill: 'harness-eng', isReviewGate: false },
31
- 8: { entryCondition: '全部WP代码+LOG.md存在', requiredArtifact: '审查报告', requiredNextSkill: 'harness-eng-test', requiredReviewSubstrate: 'ref-review-sop.md', isReviewGate: true },
32
- };
33
-
34
- describe('GateStateMachine', () => {
35
- let currentGate: Gate = 0;
36
- let artifacts: Map<string, unknown> = new Map();
37
-
38
- describe('initialization', () => {
39
- it('should start at gate 0', () => {
40
- currentGate = 0;
41
- expect(currentGate).toBe(0);
42
- });
43
-
44
- it('should have correct gate 0 config', () => {
45
- const config = GATE_CONFIGS[0];
46
- expect(config.requiredArtifact).toBeDefined();
47
- expect(config.isReviewGate).toBe(false);
48
- });
49
- });
50
-
51
- describe('gate configs', () => {
52
- it('should have 9 gates defined', () => {
53
- expect(Object.keys(GATE_CONFIGS).length).toBe(9);
54
- });
55
-
56
- it('should have 4 review gates (2,4,6,8)', () => {
57
- expect(GATE_CONFIGS[2].isReviewGate).toBe(true);
58
- expect(GATE_CONFIGS[4].isReviewGate).toBe(true);
59
- expect(GATE_CONFIGS[6].isReviewGate).toBe(true);
60
- expect(GATE_CONFIGS[8].isReviewGate).toBe(true);
61
- });
62
-
63
- it('should have correct next skill for each gate', () => {
64
- expect(GATE_CONFIGS[0].requiredNextSkill).toBe('arch');
65
- expect(GATE_CONFIGS[5].requiredNextSkill).toBe('task-arch');
66
- });
67
- });
68
-
69
- describe('artifacts', () => {
70
- it('should be able to submit artifacts', () => {
71
- artifacts.set('test', { data: 'test' });
72
- expect(artifacts.has('test')).toBe(true);
73
- });
74
-
75
- it('should retrieve submitted artifacts', () => {
76
- artifacts.set('adr', { content: 'ADR draft' });
77
- const artifact = artifacts.get('adr');
78
- expect(artifact).toBeDefined();
79
- });
80
- });
81
- });
82
-
83
- // ==================== Guard Router Tests ====================
84
-
85
- const GUARD_MAP: Record<string, string[]> = {
86
- 'src/agents/': ['check_api_types', 'check_skill_parity'],
87
- 'src/documents/': ['check_doc_freshness', 'check_api_types'],
88
- 'src/network/': ['check_api_types', 'check_versions'],
89
- 'docs/': ['check_doc_freshness', 'check_doc_links'],
90
- 'CLAUDE.md': ['check_doc_freshness', 'check_artifact_link'],
91
- 'docs/decisions/': ['check_artifact_link', 'check_versions'],
92
- 'src/test/': ['check_api_types', 'check_versions'],
93
- };
94
-
95
- function route(filePath: string): string[] {
96
- const matched: string[] = [];
97
- const sortedPatterns = Object.keys(GUARD_MAP).sort((a, b) => b.length - a.length);
98
-
99
- for (const pattern of sortedPatterns) {
100
- if (filePath.startsWith(pattern) || filePath === pattern.replace(/\/$/, '')) {
101
- matched.push(...GUARD_MAP[pattern]);
102
- }
103
- }
104
-
105
- return [...new Set(matched)];
106
- }
107
-
108
- describe('GuardRouter', () => {
109
- describe('routing', () => {
110
- it('should route agents path to check_api_types', () => {
111
- const guards = route('src/agents/pi-sdk.ts');
112
- expect(guards).toContain('check_api_types');
113
- });
114
-
115
- it('should route docs path to doc freshness', () => {
116
- const guards = route('docs/guide.md');
117
- expect(guards).toContain('check_doc_freshness');
118
- });
119
-
120
- it('should route decisions to artifact link check', () => {
121
- const guards = route('docs/decisions/adr-001.md');
122
- expect(guards).toContain('check_artifact_link');
123
- });
124
-
125
- it('should route test files to version check', () => {
126
- const guards = route('src/test/pi-sdk.test.ts');
127
- expect(guards).toContain('check_versions');
128
- });
129
-
130
- it('should return empty array for unknown paths', () => {
131
- const guards = route('src/unknown/file.ts');
132
- expect(guards.length).toBe(0);
133
- });
134
-
135
- it('should handle CLAUDE.md special case', () => {
136
- const guards = route('CLAUDE.md');
137
- expect(guards).toContain('check_doc_freshness');
138
- expect(guards).toContain('check_artifact_link');
139
- });
140
- });
141
-
142
- describe('deduplication', () => {
143
- it('should deduplicate guard names', () => {
144
- const guards = route('src/agents/pi-sdk.ts');
145
- const uniqueGuards = [...new Set(guards)];
146
- expect(guards.length).toBe(uniqueGuards.length);
147
- });
148
- });
149
- });
150
-
151
- // ==================== Context Router Tests ====================
152
-
153
- const CONTEXT_MAP: Record<string, string[]> = {
154
- 'src/agents/': ['agent-architecture', 'multi-agent-patterns'],
155
- 'src/documents/': ['document-processing', 'parser-patterns'],
156
- 'src/network/': ['p2p-protocols', 'connection-patterns'],
157
- 'docs/': ['documentation-standards'],
158
- 'docs/decisions/': ['decision-tracking', 'adr-patterns'],
159
- 'src/test/': ['testing-patterns', 'quality-standards'],
160
- 'CLAUDE.md': ['project-governance', 'truth-source-hierarchy'],
161
- };
162
-
163
- const FALLBACK_FRAGMENTS = ['general-dev-principles', 'code-quality'];
164
-
165
- function match(filePath: string): string[] {
166
- if (!filePath) return [];
167
- const normalized = filePath.replace(/\\/g, '/');
168
- const matched: string[] = [];
169
- const sortedPatterns = Object.keys(CONTEXT_MAP).sort((a, b) => b.length - a.length);
170
-
171
- for (const pattern of sortedPatterns) {
172
- if (normalized.startsWith(pattern) || normalized.endsWith(pattern)) {
173
- matched.push(...CONTEXT_MAP[pattern]);
174
- }
175
- }
176
-
177
- return [...new Set(matched)];
178
- }
179
-
180
- describe('ContextRouter', () => {
181
- describe('matching', () => {
182
- it('should match agents path', () => {
183
- const fragments = match('src/agents/protocol.ts');
184
- expect(fragments).toContain('agent-architecture');
185
- expect(fragments).toContain('multi-agent-patterns');
186
- });
187
-
188
- it('should match docs path', () => {
189
- const fragments = match('docs/api.md');
190
- expect(fragments).toContain('documentation-standards');
191
- });
192
-
193
- it('should match decisions path', () => {
194
- const fragments = match('docs/decisions/adr-001.md');
195
- expect(fragments).toContain('decision-tracking');
196
- expect(fragments).toContain('adr-patterns');
197
- });
198
-
199
- it('should match CLAUDE.md', () => {
200
- const fragments = match('CLAUDE.md');
201
- expect(fragments).toContain('project-governance');
202
- });
203
-
204
- it('should return empty for invalid paths', () => {
205
- const fragments = match('');
206
- expect(fragments.length).toBe(0);
207
- });
208
- });
209
-
210
- describe('fallback fragments', () => {
211
- it('should have fallback fragments defined', () => {
212
- expect(FALLBACK_FRAGMENTS).toContain('general-dev-principles');
213
- expect(FALLBACK_FRAGMENTS).toContain('code-quality');
214
- });
215
- });
216
- });
217
-
218
- // ==================== Skill Tests ====================
219
-
220
- interface Skill {
221
- name: string;
222
- description: string;
223
- execute(params: Record<string, unknown>): Promise<string>;
224
- }
225
-
226
- // Mock skills for testing
227
- const skills: Record<string, Skill> = {
228
- arch: {
229
- name: 'arch',
230
- description: 'Project architect. Architecture decisions and boundary freezing.',
231
- async execute(params) {
232
- const essence = `Core challenge: ${params.task || 'unspecified'}`;
233
- const tensions = ['Simplicity vs Flexibility', 'Performance vs Maintainability'];
234
- const alternatives = [
235
- { name: 'Option A', tradeoffs: ['Fast', 'Limited'], recommendation: 'MVP' },
236
- { name: 'Option B', tradeoffs: ['More work', 'Extensible'], recommendation: 'Long-term' }
237
- ];
238
- return JSON.stringify({ essence, tensions, alternatives }, null, 2);
239
- }
240
- },
241
- lead: {
242
- name: 'lead',
243
- description: 'Development workflow commander. Fail-closed state machine.',
244
- async execute(params) {
245
- const action = params.action as string;
246
- if (action === 'get_gate') {
247
- return JSON.stringify({ current_gate: 0, gate_name: 'Problem Lock', required_artifact: '问题陈述' }, null, 2);
248
- }
249
- if (action === 'classify') {
250
- const desc = params.description as string || '';
251
- const isPolicy = desc.includes('policy');
252
- const isContract = desc.includes('API') || desc.includes('contract');
253
- return JSON.stringify({
254
- classification: isPolicy ? 'policy' : isContract ? 'contract' : 'implementation',
255
- fast_track: !isPolicy && !isContract
256
- }, null, 2);
257
- }
258
- return JSON.stringify({ current_gate: 0 });
259
- }
260
- },
261
- task_arch: {
262
- name: 'task-arch',
263
- description: 'Task decomposition. Breaks down PLAN into work packages.',
264
- async execute(params) {
265
- const workPackages = [
266
- { id: 'WP-1', description: 'Core implementation', files: ['src/agents/*.ts'] },
267
- { id: 'WP-2', description: 'Network layer', files: ['src/network/*.ts'] }
268
- ];
269
- return JSON.stringify({ workPackages }, null, 2);
270
- }
271
- }
272
- };
273
-
274
- describe('Skills', () => {
275
- describe('arch skill', () => {
276
- it('should have correct name and description', () => {
277
- expect(skills.arch.name).toBe('arch');
278
- expect(skills.arch.description).toContain('architect');
279
- });
280
-
281
- it('should execute and return analysis', async () => {
282
- const result = await skills.arch.execute({ task: 'design new feature' });
283
- const parsed = JSON.parse(result);
284
- expect(parsed.essence).toBeDefined();
285
- expect(parsed.tensions).toHaveLength(2);
286
- expect(parsed.alternatives).toHaveLength(2);
287
- });
288
- });
289
-
290
- describe('lead skill', () => {
291
- it('should have correct name', () => {
292
- expect(skills.lead.name).toBe('lead');
293
- });
294
-
295
- it('should get gate pack', async () => {
296
- const result = await skills.lead.execute({ action: 'get_gate' });
297
- const parsed = JSON.parse(result);
298
- expect(parsed.current_gate).toBe(0);
299
- });
300
-
301
- it('should classify policy changes', async () => {
302
- const result = await skills.lead.execute({ action: 'classify', description: 'change policy boundary' });
303
- const parsed = JSON.parse(result);
304
- expect(parsed.classification).toBe('policy');
305
- });
306
-
307
- it('should classify contract changes', async () => {
308
- const result = await skills.lead.execute({ action: 'classify', description: 'change API contract' });
309
- const parsed = JSON.parse(result);
310
- expect(parsed.classification).toBe('contract');
311
- });
312
-
313
- it('should classify implementation changes as fast-track eligible', async () => {
314
- const result = await skills.lead.execute({ action: 'classify', description: 'fix bug' });
315
- const parsed = JSON.parse(result);
316
- expect(parsed.classification).toBe('implementation');
317
- expect(parsed.fast_track).toBe(true);
318
- });
319
- });
320
-
321
- describe('task-arch skill', () => {
322
- it('should decompose plan into work packages', async () => {
323
- const result = await skills.task_arch.execute({ plan: 'implement feature' });
324
- const parsed = JSON.parse(result);
325
- expect(parsed.workPackages).toHaveLength(2);
326
- expect(parsed.workPackages[0].id).toBe('WP-1');
327
- });
328
- });
329
- });
330
-
331
- // ==================== Change Classification Tests ====================
332
-
333
- describe('Change Classification', () => {
334
- function classifyChange(description: string): { classification: string; fast_track: boolean } {
335
- const isPolicy = description.includes('policy') || description.includes('boundary');
336
- const isContract = description.includes('API') || description.includes('contract') || description.includes('schema');
337
- const isImplementation = !isPolicy && !isContract;
338
-
339
- return {
340
- classification: isPolicy ? 'policy' : isContract ? 'contract' : 'implementation',
341
- fast_track: isImplementation
342
- };
343
- }
344
-
345
- it('should classify policy changes', () => {
346
- const result = classifyChange('change policy boundary');
347
- expect(result.classification).toBe('policy');
348
- expect(result.fast_track).toBe(false);
349
- });
350
-
351
- it('should classify contract changes', () => {
352
- const result = classifyChange('change API contract');
353
- expect(result.classification).toBe('contract');
354
- expect(result.fast_track).toBe(false);
355
- });
356
-
357
- it('should classify implementation changes', () => {
358
- const result = classifyChange('fix bug in code');
359
- expect(result.classification).toBe('implementation');
360
- expect(result.fast_track).toBe(true);
361
- });
362
-
363
- it('should classify schema changes as contract', () => {
364
- const result = classifyChange('update database schema');
365
- expect(result.classification).toBe('contract');
366
- });
367
- });
368
-
369
- // ==================== Integration Configuration Tests ====================
370
-
371
- describe('BollharnessConfig', () => {
372
- interface BollharnessConfig {
373
- enabled: boolean;
374
- guardsEnabled: boolean;
375
- contextEnabled: boolean;
376
- skillsEnabled: boolean;
377
- gatesEnabled: boolean;
378
- }
379
-
380
- function createDefaultConfig(): BollharnessConfig {
381
- return {
382
- enabled: true,
383
- guardsEnabled: true,
384
- contextEnabled: true,
385
- skillsEnabled: true,
386
- gatesEnabled: true,
387
- };
388
- }
389
-
390
- it('should have default config with all features enabled', () => {
391
- const config = createDefaultConfig();
392
- expect(config.enabled).toBe(true);
393
- expect(config.guardsEnabled).toBe(true);
394
- expect(config.contextEnabled).toBe(true);
395
- expect(config.skillsEnabled).toBe(true);
396
- expect(config.gatesEnabled).toBe(true);
397
- });
398
- });
@@ -1,265 +0,0 @@
1
- /**
2
- * Channel Agent Multi-Turn Dialogue Test
3
- *
4
- * 测试场景:
5
- * 1. 两个 Channel Agent (Alice/Bob) 之间的多轮对话
6
- * 2. 基于判断力的 Harness 调用 (Gate 1-8)
7
- * 3. 上下文感知的 Gate 选择
8
- * 4. Persona 设计能力
9
- *
10
- * 运行: npx tsx src/test/channel-agent-multi-dialogue.ts
11
- */
12
-
13
- import { config } from 'dotenv';
14
- import { ChannelAgent, createChannelAgent, ChannelAgentRegistry } from '../social/channels/channel-agent-session.js';
15
- import type { PersonaDesignRequest } from '../social/persona/enhanced-persona.js';
16
-
17
- config();
18
-
19
- const PORT_ALICE = 8001;
20
- const PORT_BOB = 8002;
21
-
22
- interface DialogScript {
23
- from: string;
24
- to: string;
25
- content: string;
26
- expectHarness: boolean;
27
- expectGate?: number;
28
- }
29
-
30
- async function testMultiTurnDialogue() {
31
- console.log('\n========================================');
32
- console.log(' Channel Agent 多轮对话测试');
33
- console.log(' 场景: 完成一个用户认证系统的需求讨论');
34
- console.log('========================================\n');
35
-
36
- // 创建 Agent 注册表
37
- const registry = new ChannelAgentRegistry();
38
-
39
- // 创建 Alice
40
- const alice = createChannelAgent({
41
- name: 'Alice',
42
- port: PORT_ALICE,
43
- domain: '架构',
44
- capabilities: ['架构设计', '代码审查', '任务分解']
45
- });
46
-
47
- // 创建 Bob
48
- const bob = createChannelAgent({
49
- name: 'Bob',
50
- port: PORT_BOB,
51
- domain: '开发',
52
- capabilities: ['代码编写', '调试', '测试']
53
- });
54
-
55
- // 注册
56
- registry.register(alice);
57
- registry.register(bob);
58
-
59
- // 设计 persona
60
- alice.designPersona({
61
- name: 'Alice',
62
- type: 'developer',
63
- domain: '架构',
64
- tone: 'professional'
65
- });
66
-
67
- bob.designPersona({
68
- name: 'Bob',
69
- type: 'developer',
70
- domain: '开发',
71
- tone: 'technical'
72
- });
73
-
74
- // 启动
75
- await alice.start();
76
- await bob.start();
77
-
78
- // 对话脚本
79
- const script: DialogScript[] = [
80
- // 第1轮 - 架构讨论
81
- { from: 'Alice', to: 'Bob', content: 'Bob,我们需要设计一个新的用户认证系统。', expectHarness: false },
82
- { from: 'Bob', to: 'Alice', content: '好的,具体需要哪些功能?', expectHarness: false },
83
-
84
- // 第2轮 - 需求讨论
85
- { from: 'Alice', to: 'Bob', content: '需要登录、注册、找回密码,还要支持社交登录。', expectHarness: false },
86
- { from: 'Bob', to: 'Alice', content: '明白了。这个系统需要什么级别的安全性?', expectHarness: false },
87
-
88
- // 第3轮 - 安全讨论 → Gate 4
89
- { from: 'Alice', to: 'Bob', content: '需要处理金融数据,所以安全性很重要。请检查一下架构设计。', expectHarness: true, expectGate: 4 },
90
- { from: 'Bob', to: 'Alice', content: '好的,我来分析一下架构设计,看看有没有安全风险。', expectHarness: true, expectGate: 1 },
91
-
92
- // 第4轮 - 代码审查 → Gate 2
93
- { from: 'Alice', to: 'Bob', content: '架构看起来不错。帮我 review 一下登录模块的实现。', expectHarness: true, expectGate: 2 },
94
- { from: 'Bob', to: 'Alice', content: '好的,让我检查登录模块的代码实现。', expectHarness: true, expectGate: 2 },
95
-
96
- // 第5轮 - 优化讨论
97
- { from: 'Alice', to: 'Bob', content: '代码审查发现了一些问题,需要优化错误处理。', expectHarness: false },
98
- { from: 'Bob', to: 'Alice', content: '同意,错误处理需要改进。', expectHarness: false },
99
-
100
- // 第6轮 - 任务分解 → Gate 5
101
- { from: 'Alice', to: 'Bob', content: '好的,现在我们来分解任务,制定开发计划。', expectHarness: true, expectGate: 5 },
102
- { from: 'Bob', to: 'Alice', content: '我来帮你把任务分解成可执行的小块。', expectHarness: true, expectGate: 5 },
103
-
104
- // 第7轮 - 开始实现
105
- { from: 'Alice', to: 'Bob', content: '任务分解得很好。我们开始实现第一个任务吧。', expectHarness: false },
106
- { from: 'Bob', to: 'Alice', content: '好的,开始实现登录模块。', expectHarness: false },
107
-
108
- // 第8轮 - 代码实现 → Gate 7
109
- { from: 'Alice', to: 'Bob', content: '实现完成,帮我优化一下代码质量。', expectHarness: true, expectGate: 7 },
110
- { from: 'Bob', to: 'Alice', content: '好的,我来进行代码优化。', expectHarness: true, expectGate: 7 },
111
-
112
- // 第9轮 - 测试验证 → Gate 8
113
- { from: 'Alice', to: 'Bob', content: '代码优化完成,帮我验证一下质量。', expectHarness: true, expectGate: 8 },
114
- { from: 'Bob', to: 'Alice', content: '好的,我来运行测试验证。', expectHarness: true, expectGate: 8 },
115
-
116
- // 第10轮 - 完成
117
- { from: 'Alice', to: 'Bob', content: '测试通过了!继续下一个任务。', expectHarness: false },
118
- { from: 'Bob', to: 'Alice', content: '太好了!继续加油。', expectHarness: false },
119
- ];
120
-
121
- console.log('━━━ 开始多轮对话 ━━━\n');
122
-
123
- let harnessCallCount = 0;
124
- const gateStats = new Map<number, number>();
125
-
126
- for (let i = 0; i < script.length; i++) {
127
- const { from, to, content, expectHarness, expectGate } = script[i];
128
- const targetPort = from === 'Alice' ? PORT_BOB : PORT_ALICE;
129
-
130
- console.log(`━━━ 第 ${Math.floor(i / 2) + 1} 轮 ━━━`);
131
- console.log(`[${from}] >>> ${content}`);
132
-
133
- try {
134
- const resp = await fetch(`http://localhost:${targetPort}/receive`, {
135
- method: 'POST',
136
- headers: { 'Content-Type': 'application/json' },
137
- body: JSON.stringify({ fromName: from, content })
138
- });
139
-
140
- const result = await resp.json();
141
-
142
- console.log(`\n[${to}] 处理结果:`);
143
- if (result.harnessCalled) {
144
- console.log(` 🧠 调用 Harness: Gate ${result.gate}`);
145
- console.log(` 📋 Skills: ${result.skills?.join(', ') || '无'}`);
146
- harnessCallCount++;
147
- gateStats.set(result.gate, (gateStats.get(result.gate) || 0) + 1);
148
-
149
- if (expectHarness && result.gate !== expectGate) {
150
- console.log(` ⚠️ 期望 Gate ${expectGate},实际 ${result.gate}`);
151
- }
152
- } else {
153
- console.log(` 🧠 普通对话 (无需 Harness)`);
154
- }
155
-
156
- console.log(` 📤 回复: ${result.response?.substring(0, 80)}...`);
157
-
158
- // 等待一下再继续
159
- await new Promise(r => setTimeout(r, 300));
160
-
161
- } catch (err) {
162
- console.log(` ❌ 发送失败:`, err);
163
- }
164
-
165
- console.log('');
166
- }
167
-
168
- // 结果汇总
169
- console.log('━━━ 结果汇总 ━━━\n');
170
-
171
- console.log(`[Alice] 对话数: ${alice.getDialogHistory().length}`);
172
- console.log(`[Bob] 对话数: ${bob.getDialogHistory().length}`);
173
-
174
- console.log(`\nHarness 调用次数: ${harnessCallCount}`);
175
-
176
- console.log('\nGate 统计:');
177
- for (const [gate, count] of Array.from(gateStats.entries()).sort((a, b) => a[0] - b[0])) {
178
- const gateNames: Record<number, string> = {
179
- 1: '架构设计',
180
- 2: '代码审查',
181
- 4: '安全检查',
182
- 5: '任务分解',
183
- 7: '代码实现',
184
- 8: '测试验证'
185
- };
186
- console.log(` Gate ${gate} (${gateNames[gate] || '未知'}): ${count} 次`);
187
- }
188
-
189
- // 健康检查
190
- console.log('\n━━━ 最终状态 ━━━\n');
191
- const aliceHealth = await fetch(`http://localhost:${PORT_ALICE}/health`).then(r => r.json());
192
- const bobHealth = await fetch(`http://localhost:${PORT_BOB}/health`).then(r => r.json());
193
-
194
- console.log(`[Alice] DID: ${aliceHealth.id.substring(0, 16)}...`);
195
- console.log(`[Bob] DID: ${bobHealth.id.substring(0, 16)}...`);
196
- console.log(`\n对话总数: ${aliceHealth.dialogCount + bobHealth.dialogCount}`);
197
- console.log(`Harness 调用: ${harnessCallCount} 次`);
198
-
199
- const success = harnessCallCount >= 6;
200
- console.log(`\n${success ? '✅' : '⚠️'} ${success ? '测试成功' : '测试部分成功'}`);
201
-
202
- // 清理
203
- registry.clear();
204
-
205
- console.log('\n========================================\n');
206
-
207
- return success;
208
- }
209
-
210
- async function testPersonaDesign() {
211
- console.log('\n========================================');
212
- console.log(' Persona 设计测试');
213
- console.log('========================================\n');
214
-
215
- const agent = createChannelAgent({
216
- name: 'TestAgent',
217
- port: 8010,
218
- domain: '通用'
219
- });
220
-
221
- await agent.start();
222
-
223
- // 设计不同类型的 persona
224
- const personaTypes: PersonaDesignRequest[] = [
225
- { name: 'ArchMaster', type: 'developer', domain: '架构', tone: 'professional' },
226
- { name: 'CodeReviewer', type: 'reviewer', domain: '安全', tone: 'formal' },
227
- { name: 'TaskManager', type: 'manager', domain: '项目管理', tone: 'professional' },
228
- { name: 'CreativeDesigner', type: 'designer', domain: '设计', tone: 'casual' }
229
- ];
230
-
231
- console.log('━━━ 设计 Persona ━━━\n');
232
-
233
- for (const request of personaTypes) {
234
- const persona = agent.designPersona(request);
235
- console.log(`设计 ${request.type} persona:`);
236
- console.log(` 名称: ${persona.name}`);
237
- console.log(` 描述: ${persona.description}`);
238
- console.log(` 性格: ${persona.personality}`);
239
- console.log(` 能力: ${persona.capabilities.join(', ')}`);
240
- console.log(` 兴趣: ${persona.interests.join(', ')}`);
241
- console.log('');
242
- }
243
-
244
- // 获取当前 persona
245
- const currentPersona = agent.getPersona();
246
- console.log('当前 Persona:');
247
- console.log(JSON.stringify(currentPersona, null, 2));
248
-
249
- agent.shutdown();
250
-
251
- console.log('\n========================================\n');
252
- }
253
-
254
- async function main() {
255
- try {
256
- await testMultiTurnDialogue();
257
- await testPersonaDesign();
258
- process.exit(0);
259
- } catch (err) {
260
- console.error('测试失败:', err);
261
- process.exit(1);
262
- }
263
- }
264
-
265
- main();