@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,542 +0,0 @@
1
- /**
2
- * P2P Two-Node Discovery Test
3
- * 测试两个不同端口的节点能否发现彼此并进行 P2P 交流
4
- *
5
- * 运行方式: npx tsx src/test/p2p-two-nodes-test.ts
6
- */
7
-
8
- import { config } from 'dotenv';
9
- import * as fs from 'fs/promises';
10
- import * as path from 'path';
11
- import { createServer } from 'http';
12
- import express from 'express';
13
- import crypto from 'crypto';
14
-
15
- config();
16
-
17
- const CONFIG_DIR = path.join(process.env.HOME || '/tmp', '.bolloon', 'p2p-test');
18
- const NODES_FILE = path.join(CONFIG_DIR, 'nodes.json');
19
-
20
- interface NodeInfo {
21
- id: string;
22
- port: number;
23
- name: string;
24
- publicKey: string;
25
- lastSeen: number;
26
- topic: string;
27
- }
28
-
29
- class NodeRegistry {
30
- private nodes: Map<string, NodeInfo> = new Map();
31
-
32
- async init(): Promise<void> {
33
- await fs.mkdir(CONFIG_DIR, { recursive: true });
34
- try {
35
- const data = await fs.readFile(NODES_FILE, 'utf-8');
36
- const nodes: NodeInfo[] = JSON.parse(data);
37
- for (const n of nodes) {
38
- this.nodes.set(n.id, n);
39
- }
40
- console.log(`[Registry] Loaded ${nodes.length} nodes`);
41
- } catch {
42
- console.log('[Registry] Starting fresh');
43
- }
44
- }
45
-
46
- async registerNode(node: NodeInfo): Promise<void> {
47
- node.lastSeen = Date.now();
48
- this.nodes.set(node.id, node);
49
- await this.save();
50
- }
51
-
52
- async unregisterNode(id: string): Promise<void> {
53
- this.nodes.delete(id);
54
- await this.save();
55
- }
56
-
57
- getNodes(): NodeInfo[] {
58
- return Array.from(this.nodes.values()).filter(
59
- n => Date.now() - n.lastSeen < 60000
60
- );
61
- }
62
-
63
- getNodeById(id: string): NodeInfo | undefined {
64
- return this.nodes.get(id);
65
- }
66
-
67
- getOtherNodes(myId: string): NodeInfo[] {
68
- return this.getNodes().filter(n => n.id !== myId);
69
- }
70
-
71
- private async save(): Promise<void> {
72
- const nodes = Array.from(this.nodes.values());
73
- await fs.writeFile(NODES_FILE, JSON.stringify(nodes, null, 2));
74
- }
75
- }
76
-
77
- interface TestMessage {
78
- type: 'ping' | 'pong' | 'chat' | 'harness-sync';
79
- from: string;
80
- to?: string;
81
- content: string;
82
- timestamp: number;
83
- id: string;
84
- }
85
-
86
- class P2PNode {
87
- id: string;
88
- name: string;
89
- port: number;
90
- topic: string;
91
- privateKey: Uint8Array;
92
- publicKey: string;
93
- private server: any = null;
94
- private registry: NodeRegistry;
95
- private connectedPeers: Set<string> = new Set();
96
- private messageHandlers: Map<string, (msg: TestMessage, from: string) => void> = new Map();
97
- private heartbeatInterval: ReturnType<typeof setInterval> | null = null;
98
-
99
- constructor(name: string, port: number, registry: NodeRegistry) {
100
- this.id = crypto.randomUUID();
101
- this.name = name;
102
- this.port = port;
103
- this.topic = 'bolloon-p2p-test';
104
- this.privateKey = crypto.getRandomValues(new Uint8Array(32));
105
- this.publicKey = Buffer.from(this.privateKey.slice(0, 16)).toString('hex');
106
- this.registry = registry;
107
- }
108
-
109
- async start(): Promise<void> {
110
- const app = express();
111
- app.use(express.json());
112
-
113
- // 健康检查
114
- app.get('/health', (req, res) => {
115
- res.json({
116
- id: this.id,
117
- name: this.name,
118
- port: this.port,
119
- peers: Array.from(this.connectedPeers),
120
- publicKey: this.publicKey.substring(0, 16) + '...'
121
- });
122
- });
123
-
124
- // 发现端点 - 广播自己的存在
125
- app.get('/discovery', (req, res) => {
126
- res.json({
127
- id: this.id,
128
- name: this.name,
129
- port: this.port,
130
- topic: this.topic,
131
- publicKey: this.publicKey
132
- });
133
- });
134
-
135
- // 发现所有节点
136
- app.get('/nodes', async (req, res) => {
137
- // 先尝试发现本地网络上的其他节点
138
- const localNodes = await this.discoverLocalNodes();
139
- const registeredNodes = this.registry.getOtherNodes(this.id);
140
-
141
- const allNodes = [...localNodes, ...registeredNodes];
142
- const uniqueNodes = new Map<string, NodeInfo>();
143
- for (const n of allNodes) {
144
- uniqueNodes.set(n.id, n);
145
- }
146
-
147
- res.json(Array.from(uniqueNodes.values()));
148
- });
149
-
150
- // 消息端点
151
- app.post('/message', (req, res) => {
152
- const { type, to, content } = req.body;
153
- const msg: TestMessage = {
154
- type,
155
- from: this.id,
156
- to,
157
- content,
158
- timestamp: Date.now(),
159
- id: crypto.randomUUID()
160
- };
161
-
162
- this.handleMessage(msg, 'local');
163
- res.json({ ok: true, msgId: msg.id });
164
- });
165
-
166
- // 接收其他节点的消息
167
- app.post('/relay', async (req, res) => {
168
- const { type, from, content } = req.body;
169
- const msg: TestMessage = {
170
- type,
171
- from,
172
- to: this.id,
173
- content,
174
- timestamp: Date.now(),
175
- id: crypto.randomUUID()
176
- };
177
-
178
- this.handleMessage(msg, 'relay');
179
- res.json({ ok: true });
180
- });
181
-
182
- this.server = app.listen(this.port, () => {
183
- console.log(`✓ [${this.name}] 启动成功 on port ${this.port}`);
184
- console.log(` ID: ${this.id}`);
185
- console.log(` Public Key: ${this.publicKey.substring(0, 16)}...`);
186
- });
187
-
188
- // 注册到中心注册表
189
- await this.registry.registerNode({
190
- id: this.id,
191
- port: this.port,
192
- name: this.name,
193
- publicKey: this.publicKey,
194
- lastSeen: Date.now(),
195
- topic: this.topic
196
- });
197
-
198
- // 启动心跳
199
- this.startHeartbeat();
200
- }
201
-
202
- private async discoverLocalNodes(): Promise<NodeInfo[]> {
203
- const nodes: NodeInfo[] = [];
204
- const ports = [3001, 3002, 3003, 3004, 3005];
205
-
206
- for (const p of ports) {
207
- if (p === this.port) continue;
208
-
209
- try {
210
- const resp = await fetch(`http://localhost:${p}/discovery`, {
211
- signal: AbortSignal.timeout(1000)
212
- });
213
-
214
- if (resp.ok) {
215
- const info = await resp.json();
216
- if (info.topic === this.topic) {
217
- nodes.push({
218
- id: info.id,
219
- port: info.port,
220
- name: info.name,
221
- publicKey: info.publicKey,
222
- lastSeen: Date.now(),
223
- topic: info.topic
224
- });
225
- }
226
- }
227
- } catch {
228
- // 节点不存在
229
- }
230
- }
231
-
232
- return nodes;
233
- }
234
-
235
- private startHeartbeat(): void {
236
- // 每 5 秒更新注册表并尝试发现新节点
237
- this.heartbeatInterval = setInterval(async () => {
238
- await this.registry.registerNode({
239
- id: this.id,
240
- port: this.port,
241
- name: this.name,
242
- publicKey: this.publicKey,
243
- lastSeen: Date.now(),
244
- topic: this.topic
245
- });
246
-
247
- // 发现邻居
248
- const neighbors = this.registry.getOtherNodes(this.id);
249
- for (const n of neighbors) {
250
- if (!this.connectedPeers.has(n.id)) {
251
- await this.connectToPeer(n);
252
- }
253
- }
254
-
255
- // 广播存在到本地网络
256
- this.broadcastPresence();
257
- }, 5000);
258
- }
259
-
260
- private async connectToPeer(peer: NodeInfo): Promise<void> {
261
- try {
262
- // 尝试直接连接
263
- const resp = await fetch(`http://localhost:${peer.port}/discovery`, {
264
- signal: AbortSignal.timeout(1000)
265
- });
266
-
267
- if (resp.ok) {
268
- this.connectedPeers.add(peer.id);
269
- console.log(`✓ [${this.name}] 连接成功: ${peer.name} (${peer.id.substring(0, 8)}...)`);
270
- }
271
- } catch {
272
- // 连接失败
273
- }
274
- }
275
-
276
- private async broadcastPresence(): Promise<void> {
277
- // 广播自己的存在到本地网络
278
- const ports = [3001, 3002, 3003, 3004, 3005];
279
- for (const p of ports) {
280
- if (p === this.port) continue;
281
-
282
- try {
283
- await fetch(`http://localhost:${p}/relay`, {
284
- method: 'POST',
285
- headers: { 'Content-Type': 'application/json' },
286
- body: JSON.stringify({
287
- type: 'presence',
288
- from: this.id,
289
- content: JSON.stringify({
290
- name: this.name,
291
- port: this.port,
292
- publicKey: this.publicKey
293
- })
294
- }),
295
- signal: AbortSignal.timeout(500)
296
- });
297
- } catch {
298
- // 节点不存在
299
- }
300
- }
301
- }
302
-
303
- onMessage(type: string, handler: (msg: TestMessage, from: string) => void): void {
304
- this.messageHandlers.set(type, handler);
305
- }
306
-
307
- private handleMessage(msg: TestMessage, source: string): void {
308
- const handler = this.messageHandlers.get(msg.type);
309
- if (handler) {
310
- handler(msg, source === 'local' ? msg.from : source);
311
- }
312
- }
313
-
314
- async sendMessage(toId: string, type: string, content: string): Promise<void> {
315
- const peer = this.registry.getNodeById(toId);
316
- if (!peer) {
317
- console.log(`[${this.name}] Unknown peer: ${toId}`);
318
- return;
319
- }
320
-
321
- try {
322
- await fetch(`http://localhost:${peer.port}/message`, {
323
- method: 'POST',
324
- headers: { 'Content-Type': 'application/json' },
325
- body: JSON.stringify({ type, to: toId, content })
326
- });
327
- } catch (err) {
328
- console.log(`[${this.name}] Failed to send message to ${toId}:`, err);
329
- }
330
- }
331
-
332
- async broadcast(type: string, content: string): Promise<void> {
333
- const msg: TestMessage = {
334
- type,
335
- from: this.id,
336
- content,
337
- timestamp: Date.now(),
338
- id: crypto.randomUUID()
339
- };
340
-
341
- // 广播到本地网络
342
- const ports = [3001, 3002, 3003, 3004, 3005];
343
- for (const p of ports) {
344
- if (p === this.port) continue;
345
-
346
- try {
347
- await fetch(`http://localhost:${p}/relay`, {
348
- method: 'POST',
349
- headers: { 'Content-Type': 'application/json' },
350
- body: JSON.stringify({
351
- type,
352
- from: this.id,
353
- content: JSON.stringify(msg)
354
- }),
355
- signal: AbortSignal.timeout(500)
356
- });
357
- } catch {
358
- // 节点不存在
359
- }
360
- }
361
- }
362
-
363
- getPeers(): string[] {
364
- return Array.from(this.connectedPeers);
365
- }
366
-
367
- async stop(): Promise<void> {
368
- if (this.heartbeatInterval) {
369
- clearInterval(this.heartbeatInterval);
370
- }
371
- if (this.server) {
372
- await new Promise(resolve => this.server.close(resolve));
373
- }
374
- await this.registry.unregisterNode(this.id);
375
- }
376
- }
377
-
378
- // 模拟 Harness 的同步消息
379
- interface HarnessSyncMessage {
380
- gate: number;
381
- skills: string[];
382
- agents: string[];
383
- timestamp: number;
384
- }
385
-
386
- // ============================================================================
387
- // 测试场景
388
- // ============================================================================
389
-
390
- async function runTest() {
391
- console.log('\n========================================');
392
- console.log(' P2P Two-Node Discovery & Harness Test');
393
- console.log('========================================\n');
394
-
395
- const registry = new NodeRegistry();
396
- await registry.init();
397
-
398
- // 清理旧数据
399
- try {
400
- await fs.unlink(NODES_FILE);
401
- } catch {}
402
-
403
- // 创建两个节点
404
- const node1 = new P2PNode('Alice-Node', 3001, registry);
405
- const node2 = new P2PNode('Bob-Node', 3002, registry);
406
-
407
- console.log('━━━ 步骤 1: 启动两个节点 ━━━\n');
408
-
409
- await node1.start();
410
- await node2.start();
411
-
412
- console.log('\n━━━ 步骤 2: 等待节点发现 (3秒) ━━━\n');
413
- await new Promise(resolve => setTimeout(resolve, 3000));
414
-
415
- // 列出发现的节点
416
- console.log('━━━ 步骤 3: 检查节点发现 ━━━\n');
417
-
418
- const node1Peers = node1.getPeers();
419
- const node2Peers = node2.getPeers();
420
-
421
- console.log(`[Alice] 发现 ${node1Peers.length} 个邻居: ${node1Peers.map(p => p.substring(0, 8)).join(', ') || '无'}`);
422
- console.log(`[Bob] 发现 ${node2Peers.length} 个邻居: ${node2Peers.map(p => p.substring(0, 8)).join(', ') || '无'}`);
423
-
424
- // 如果没有发现,尝试手动连接
425
- if (node1Peers.length === 0 && node2Peers.length === 0) {
426
- console.log('\n⚠️ 节点未自动发现,手动连接...\n');
427
-
428
- // 模拟手动连接
429
- node1.connectedPeers.add(node2.id);
430
- node2.connectedPeers.add(node1.id);
431
-
432
- console.log(`✓ [Alice] 手动连接到 Bob`);
433
- console.log(`✓ [Bob] 手动连接到 Alice`);
434
- }
435
-
436
- console.log('\n━━━ 步骤 4: 测试消息发送 ━━━\n');
437
-
438
- // 设置消息处理器
439
- node2.onMessage('ping', (msg, from) => {
440
- console.log(`[Bob] 收到来自 ${msg.from.substring(0, 8)}... 的消息: ${msg.content}`);
441
- // 回复 pong
442
- node2.sendMessage(msg.from, 'pong', 'Pong from Bob!');
443
- });
444
-
445
- node1.onMessage('pong', (msg, from) => {
446
- console.log(`[Alice] 收到回复: ${msg.content}`);
447
- });
448
-
449
- node1.onMessage('presence', (msg, from) => {
450
- const info = JSON.parse(msg.content);
451
- console.log(`[Alice] 发现新节点: ${info.name} on port ${info.port}`);
452
- node1.connectedPeers.add(msg.from);
453
- });
454
-
455
- node2.onMessage('presence', (msg, from) => {
456
- const info = JSON.parse(msg.content);
457
- console.log(`[Bob] 发现新节点: ${info.name} on port ${info.port}`);
458
- node2.connectedPeers.add(msg.from);
459
- });
460
-
461
- // Alice 发送 ping 给 Bob
462
- await node1.sendMessage(node2.id, 'ping', 'Hello Bob, this is Alice!');
463
-
464
- console.log('[Alice] 发送 ping 给 Bob...');
465
-
466
- await new Promise(resolve => setTimeout(resolve, 1000));
467
-
468
- console.log('\n━━━ 步骤 5: 测试 Harness 同步 ━━━\n');
469
-
470
- // 模拟 Harness 同步消息
471
- const harnessSync: HarnessSyncMessage = {
472
- gate: 3,
473
- skills: ['arch', 'lead', 'harness-eng'],
474
- agents: [node1.id, node2.id],
475
- timestamp: Date.now()
476
- };
477
-
478
- console.log(`[Harness Sync] Gate: ${harnessSync.gate}`);
479
- console.log(`[Harness Sync] Skills: ${harnessSync.skills.join(', ')}`);
480
- console.log(`[Harness Sync] Agents: ${harnessSync.agents.map(a => a.substring(0, 8)).join(', ')}...`);
481
-
482
- // 设置 harness 消息处理器
483
- node1.onMessage('harness-sync', (msg, from) => {
484
- console.log(`\n[Alice] 收到 Harness 同步消息:`);
485
- const sync = JSON.parse(msg.content);
486
- console.log(` Gate: ${sync.gate}`);
487
- console.log(` Skills: ${sync.skills.join(', ')}`);
488
- });
489
-
490
- node2.onMessage('harness-sync', (msg, from) => {
491
- console.log(`\n[Bob] 收到 Harness 同步消息:`);
492
- const sync = JSON.parse(msg.content);
493
- console.log(` Gate: ${sync.gate}`);
494
- console.log(` Skills: ${sync.skills.join(', ')}`);
495
- });
496
-
497
- // 广播 Harness 同步消息
498
- await node1.broadcast('harness-sync', JSON.stringify(harnessSync));
499
-
500
- console.log('\n[Alice] 广播 Harness 同步消息到网络...\n');
501
-
502
- await new Promise(resolve => setTimeout(resolve, 1000));
503
-
504
- console.log('\n━━━ 步骤 6: 最终状态检查 ━━━\n');
505
-
506
- const finalNode1Peers = node1.getPeers();
507
- const finalNode2Peers = node2.getPeers();
508
-
509
- console.log(`[Alice] 最终邻居数: ${finalNode1Peers.length}`);
510
- console.log(`[Bob] 最终邻居数: ${finalNode2Peers.length}`);
511
-
512
- // 获取节点健康信息
513
- try {
514
- const aliceHealth = await fetch('http://localhost:3001/health').then(r => r.json());
515
- const bobHealth = await fetch('http://localhost:3002/health').then(r => r.json());
516
-
517
- console.log('\n[Alice Health]');
518
- console.log(` ID: ${aliceHealth.id.substring(0, 16)}...`);
519
- console.log(` Peers: ${aliceHealth.peers.length}`);
520
-
521
- console.log('\n[Bob Health]');
522
- console.log(` ID: ${bobHealth.id.substring(0, 16)}...`);
523
- console.log(` Peers: ${bobHealth.peers.length}`);
524
- } catch (err) {
525
- console.log('Health check failed:', err);
526
- }
527
-
528
- // 清理
529
- console.log('\n━━━ 清理资源 ━━━\n');
530
- await node1.stop();
531
- await node2.stop();
532
-
533
- console.log('✓ 两个节点已停止');
534
- console.log('\n========================================');
535
- console.log(' 测试完成');
536
- console.log('========================================\n');
537
- }
538
-
539
- runTest().catch(err => {
540
- console.error('Test failed:', err);
541
- process.exit(1);
542
- });
@@ -1,47 +0,0 @@
1
- import { config } from 'dotenv';
2
- import { describe, it, expect } from 'vitest';
3
- import { createAgentSession } from '../agents/pi-sdk.js';
4
- import { initMinimax, getMinimax } from '../constraints/index.js';
5
- import * as path from 'path';
6
-
7
- config();
8
-
9
- async function isMinimaxAvailable(): Promise<boolean> {
10
- const apiKey = process.env.MINIMAX_API_KEY;
11
- if (!apiKey) return false;
12
- try {
13
- initMinimax({ apiKey });
14
- return true;
15
- } catch {
16
- return false;
17
- }
18
- }
19
-
20
- describe('Pi SDK', () => {
21
- it('basic agent session', async () => {
22
- const session = await createAgentSession({ cwd: process.cwd() });
23
- const result = await session.prompt('简单问候');
24
- expect(result).toContain('我是一个文档处理智能体');
25
- });
26
-
27
- it('document analysis', async () => {
28
- const available = await isMinimaxAvailable();
29
- if (!available) {
30
- return;
31
- }
32
- const testFile = path.join(process.cwd(), 'README.md');
33
- const session = await createAgentSession({ cwd: process.cwd() });
34
- const result = await session.summarizeDocument(testFile, '测试文档分析');
35
- expect(result.summary).toBeDefined();
36
- });
37
-
38
- it('minimax LLM integration', { timeout: 30000 }, async () => {
39
- const available = await isMinimaxAvailable();
40
- if (!available) {
41
- return;
42
- }
43
- const session = await createAgentSession({ cwd: process.cwd() });
44
- const result = await session.prompt('总结: 这是一个测试文档,用于验证LLM摘要功能。');
45
- expect(result).toBeDefined();
46
- });
47
- });
@@ -1,56 +0,0 @@
1
- import { config } from 'dotenv';
2
- import * as path from 'path';
3
- import * as fs from 'fs/promises';
4
- import type { PersonaDoc } from '../social/heartbeat.js';
5
-
6
- config();
7
-
8
- const PERSONA_TEMPLATE_PATH = path.join('src', 'bollharness', 'templates', 'persona', 'default.json');
9
- const PERSONA_PATH = path.join(process.env.HOME || '/tmp', '.bolloon', 'persona.json');
10
-
11
- async function loadPersonaTemplate(): Promise<PersonaDoc> {
12
- const content = await fs.readFile(PERSONA_TEMPLATE_PATH, 'utf-8');
13
- const persona = JSON.parse(content) as PersonaDoc;
14
- persona.createdAt = new Date().toISOString();
15
- persona.updatedAt = new Date().toISOString();
16
- return persona;
17
- }
18
-
19
- async function testSetPersona() {
20
- console.log('=== 测试 set_persona 功能 ===\n');
21
-
22
- const { createAgentSession } = await import('../agents/pi-sdk.js');
23
-
24
- const session = await createAgentSession({ cwd: process.cwd() });
25
-
26
- const originalIdentity = session.getIdentity();
27
- console.log('原始身份:', originalIdentity.name);
28
-
29
- const originalPersona = session.getPersona();
30
- console.log('原始 persona:', originalPersona ? JSON.stringify(originalPersona, null, 2) : 'null');
31
-
32
- const newPersona = await loadPersonaTemplate();
33
- console.log('\n📄 从模板加载 persona:', JSON.stringify(newPersona, null, 2));
34
-
35
- await session.setPersona(newPersona);
36
- console.log('\n✅ 已设置新 persona');
37
-
38
- const updatedIdentity = session.getIdentity();
39
- console.log('更新后身份:', updatedIdentity.name);
40
-
41
- const updatedPersona = session.getPersona();
42
- console.log('更新后 persona:', updatedPersona ? JSON.stringify(updatedPersona, null, 2) : 'null');
43
-
44
- console.log('\n📁 persona.json 路径:', PERSONA_PATH);
45
-
46
- try {
47
- const fileContent = await fs.readFile(PERSONA_PATH, 'utf-8');
48
- console.log('📄 文件内容:', fileContent);
49
- } catch (e) {
50
- console.log('读取文件失败:', e);
51
- }
52
-
53
- console.log('\n=== 测试完成 ===');
54
- }
55
-
56
- testSetPersona().catch(console.error);
@@ -1,11 +0,0 @@
1
- /**
2
- * Simple Test - Just to verify vitest works
3
- */
4
-
5
- import { describe, it, expect } from 'vitest';
6
-
7
- describe('Simple', () => {
8
- it('should pass', () => {
9
- expect(1 + 1).toBe(2);
10
- });
11
- });