@bolloon/bolloon-agent 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/bin/bolloon-cli.cjs +157 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
  152. package/src/cli-entry.ts +304 -0
  153. package/src/heartbeat/DaemonManager.ts +283 -0
  154. package/src/heartbeat/HealthMonitor.ts +316 -0
  155. package/src/heartbeat/StartupVerifier.ts +223 -0
  156. package/src/heartbeat/Watchdog.ts +198 -0
  157. package/src/heartbeat/index.ts +108 -0
  158. package/src/heartbeat/types.ts +82 -0
  159. package/src/llm/config-store.ts +23 -5
  160. package/src/network/iroh-transport.ts +3 -3
  161. package/src/web/client.js +302 -136
  162. package/src/web/components/p2p/P2PModal.tsx +91 -3
  163. package/src/web/components/p2p/index.ts +171 -9
  164. package/src/web/components/p2p/p2p-connection.ts +153 -1
  165. package/src/web/components/p2p/p2p-manager.ts +39 -1
  166. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  167. package/src/web/components/p2p/p2p-tools.ts +315 -0
  168. package/src/web/components/p2p/types.ts +58 -0
  169. package/src/web/index.html +5 -0
  170. package/src/web/server.ts +353 -36
  171. package/src/web/style.css +118 -0
  172. package/tsconfig.cli.json +16 -0
  173. package/tsconfig.electron.json +1 -1
  174. package/tsconfig.json +1 -2
  175. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  176. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  177. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  178. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  179. package/dist/electron-preload.js +0 -15
  180. package/dist/electron-preload.js.map +0 -1
  181. package/dist/electron.js +0 -206
  182. package/dist/electron.js.map +0 -1
  183. package/dist/test/constraint-layer.test.js +0 -164
  184. package/dist/test/global-shared-context.test.js +0 -315
  185. package/dist/test/pi-sdk.test.js +0 -47
  186. package/dist/test/set-persona.test.js +0 -38
  187. package/dist/test/subagent-manager.test.js +0 -276
  188. package/dist/test/workflow-engine.test.js +0 -87
  189. package/dist/web/server.js +0 -1647
  190. package/dist/web/server.js.map +0 -1
  191. package/dist/workflows/collaboration.js +0 -374
  192. package/dist/workflows/index.js +0 -54
  193. package/docs/agent-communication.md +0 -333
  194. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  195. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  196. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  197. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  198. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  199. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  200. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  201. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  202. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  203. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  204. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  205. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  206. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  207. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  208. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  209. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  210. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  211. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  212. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  213. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  214. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  215. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  216. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  217. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  218. package/src/bollharness/.boll/settings.json +0 -180
  219. package/src/bollharness/.boll/settings.json.template +0 -31
  220. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  221. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  222. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  223. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  224. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  225. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  226. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  227. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  228. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  229. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  230. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  231. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  232. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  233. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  234. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  235. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  236. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  237. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  238. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  239. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  240. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  241. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  242. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  243. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  244. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  245. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  246. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  247. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  248. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  249. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  250. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  251. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  252. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  253. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  254. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  255. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  256. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  257. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  258. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  259. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  260. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  261. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  262. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  263. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  264. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  265. package/src/bollharness/.claude/settings.json +0 -157
  266. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  267. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  268. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  269. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  270. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  271. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  272. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  273. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  274. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  275. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  276. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  277. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  278. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  279. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  280. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  281. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  282. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  283. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  284. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  285. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  286. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  287. package/src/bollharness/.githooks/pre-commit +0 -21
  288. package/src/bollharness/.github/workflows/ci.yml +0 -88
  289. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  290. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  291. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  292. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  293. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  294. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  295. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  296. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  297. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  298. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  299. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  300. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  301. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  302. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  303. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  304. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  305. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  306. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  307. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  308. package/src/bollharness/docs/launch-article-en.md +0 -276
  309. package/src/bollharness/docs/launch-article-zh.md +0 -305
  310. package/src/bollharness/docs/practice.html +0 -356
  311. package/src/bollharness/docs/practice.md +0 -82
  312. package/src/bollharness/docs/research/round-1/README.md +0 -11
  313. package/src/bollharness/docs/research/round-2/README.md +0 -11
  314. package/src/bollharness/docs/research/round-3/README.md +0 -11
  315. package/src/bollharness/docs/research/round-4/README.md +0 -11
  316. package/src/bollharness/docs/research/round-5/README.md +0 -11
  317. package/src/bollharness/docs/research/round-6/README.md +0 -11
  318. package/src/bollharness/package-lock.json +0 -48
  319. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  320. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  321. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  322. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  323. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  324. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  325. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  326. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  327. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  328. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  329. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  330. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  331. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  332. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  333. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  334. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  335. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  336. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  337. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  338. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  339. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  340. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  341. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  342. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  343. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  344. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  345. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  346. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  347. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  348. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  349. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  350. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  351. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  352. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  353. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  354. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  355. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  356. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  357. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  358. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  359. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  360. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  361. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  362. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  363. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  364. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  365. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  366. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  367. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  368. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  369. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  370. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  371. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  372. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  373. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  374. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  375. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  376. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  377. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  378. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  379. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  380. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  381. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  382. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  383. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  384. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  385. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  386. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  387. package/src/bollharness/tsconfig.json +0 -26
  388. package/src/constraint-runtime/package-lock.json +0 -48
  389. package/src/constraint-runtime/package.json +0 -34
  390. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  391. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  392. package/src/constraint-runtime/src/agent/index.ts +0 -1
  393. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  394. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  395. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  396. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  397. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  398. package/src/constraint-runtime/src/cli/index.ts +0 -15
  399. package/src/constraint-runtime/src/command_graph.ts +0 -20
  400. package/src/constraint-runtime/src/commands.ts +0 -83
  401. package/src/constraint-runtime/src/components/index.ts +0 -15
  402. package/src/constraint-runtime/src/constants/index.ts +0 -15
  403. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  404. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  405. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  406. package/src/constraint-runtime/src/context.ts +0 -45
  407. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  408. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  409. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  410. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  411. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  412. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  413. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  414. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  415. package/src/constraint-runtime/src/history.ts +0 -16
  416. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  417. package/src/constraint-runtime/src/index.ts +0 -28
  418. package/src/constraint-runtime/src/ink.ts +0 -4
  419. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  420. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  421. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  422. package/src/constraint-runtime/src/models.ts +0 -49
  423. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  424. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  425. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  426. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  427. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  428. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  429. package/src/constraint-runtime/src/prefetch.ts +0 -17
  430. package/src/constraint-runtime/src/query.ts +0 -7
  431. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  432. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  433. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  434. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  435. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  436. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  437. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  438. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  439. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  440. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  441. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  442. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  443. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  444. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  445. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  446. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  447. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  448. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  449. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  450. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  451. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  452. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  453. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  454. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  455. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  456. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  457. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  458. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  459. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  460. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  461. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  462. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  463. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  464. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  465. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  466. package/src/constraint-runtime/src/remote/index.ts +0 -15
  467. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  468. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  469. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  470. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  471. package/src/constraint-runtime/src/screens/index.ts +0 -15
  472. package/src/constraint-runtime/src/server/index.ts +0 -15
  473. package/src/constraint-runtime/src/services/index.ts +0 -15
  474. package/src/constraint-runtime/src/session_store.ts +0 -32
  475. package/src/constraint-runtime/src/setup.ts +0 -50
  476. package/src/constraint-runtime/src/skills/index.ts +0 -1
  477. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  478. package/src/constraint-runtime/src/state/index.ts +0 -15
  479. package/src/constraint-runtime/src/system_init.ts +0 -21
  480. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  481. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  482. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  483. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  484. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  485. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  486. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  487. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  488. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  489. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  490. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  491. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  492. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  493. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  494. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  495. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  496. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  497. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  498. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  499. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  500. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  501. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  502. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  503. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  504. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  505. package/src/constraint-runtime/src/tools.ts +0 -100
  506. package/src/constraint-runtime/src/transcript.ts +0 -23
  507. package/src/constraint-runtime/src/types/index.ts +0 -15
  508. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  509. package/src/constraint-runtime/src/utils/index.ts +0 -15
  510. package/src/constraint-runtime/src/vim/index.ts +0 -15
  511. package/src/constraint-runtime/src/voice/index.ts +0 -15
  512. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  513. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  514. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  515. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  516. package/src/constraint-runtime/tsconfig.json +0 -13
  517. package/src/pi-ecosystem/index.ts +0 -453
  518. package/src/pi-ecosystem-colony/index.ts +0 -482
  519. package/src/pi-ecosystem-goals/index.ts +0 -585
  520. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  521. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  522. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  523. package/src/pi-ecosystem-judgment/index.ts +0 -678
  524. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  525. package/src/pi-ecosystem-mcp/index.ts +0 -427
  526. package/src/pi-ecosystem-subagents/index.ts +0 -408
  527. package/src/test/ai-judgment-test.ts +0 -92
  528. package/src/test/bollharness-integration.test.ts +0 -398
  529. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  530. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  531. package/src/test/constraint-layer.test.ts +0 -191
  532. package/src/test/diap-identity-test.ts +0 -222
  533. package/src/test/diap-quick-test.ts +0 -73
  534. package/src/test/global-shared-context.test.ts +0 -393
  535. package/src/test/harness-judgment-injection.test.ts +0 -353
  536. package/src/test/harness-workflow-integrator-test.ts +0 -285
  537. package/src/test/human-value-store.test.ts +0 -316
  538. package/src/test/hybrid-integration-test.ts +0 -126
  539. package/src/test/hybrid-messenger-verify.ts +0 -68
  540. package/src/test/iroh-bistream-debug.ts +0 -50
  541. package/src/test/iroh-communication.test.ts +0 -81
  542. package/src/test/iroh-debug-test.ts +0 -69
  543. package/src/test/iroh-diap-test.ts +0 -90
  544. package/src/test/iroh-direct-connect.ts +0 -65
  545. package/src/test/iroh-e2e-fixed.ts +0 -106
  546. package/src/test/iroh-e2e-same-process.ts +0 -83
  547. package/src/test/iroh-e2e.ts +0 -83
  548. package/src/test/iroh-final-e2e.ts +0 -84
  549. package/src/test/iroh-relay-test.ts +0 -46
  550. package/src/test/iroh-simple-test.ts +0 -49
  551. package/src/test/iroh-transport-verify.ts +0 -60
  552. package/src/test/iroh-transport.test.ts +0 -47
  553. package/src/test/iroh-two-nodes.ts +0 -87
  554. package/src/test/iroh-verify.ts +0 -55
  555. package/src/test/judgment-decision.test.ts +0 -373
  556. package/src/test/llm-judgment-integration.test.ts +0 -257
  557. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  558. package/src/test/p2p-agent-dialogue.ts +0 -423
  559. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  560. package/src/test/p2p-agent-harness-flow.ts +0 -562
  561. package/src/test/p2p-agent-harness-single.ts +0 -175
  562. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  563. package/src/test/p2p-cid-connect-test.ts +0 -245
  564. package/src/test/p2p-connect-receiver.ts +0 -85
  565. package/src/test/p2p-iroh-test.ts +0 -214
  566. package/src/test/p2p-minimal-test.ts +0 -264
  567. package/src/test/p2p-node-1.ts +0 -172
  568. package/src/test/p2p-node-2.ts +0 -172
  569. package/src/test/p2p-server.ts +0 -335
  570. package/src/test/p2p-two-nodes-test.ts +0 -542
  571. package/src/test/pi-sdk.test.ts +0 -47
  572. package/src/test/set-persona.ts +0 -56
  573. package/src/test/simple.test.ts +0 -11
  574. package/src/test/storage-integration.test.ts +0 -191
  575. package/src/test/subagent-manager.test.ts +0 -392
  576. package/src/test/test-gate-flow.test.ts +0 -92
  577. package/src/test/workflow-engine.test.ts +0 -101
  578. package/src/workflows/collaboration.ts +0 -455
  579. package/src/workflows/index.ts +0 -64
  580. package/vitest.config.ts +0 -12
  581. package//346/203/263/346/263/225.md +0 -79
@@ -1,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();