@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
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { createHyperswarmCommunicator, createTopic, KeyManager, AgentAuthManager, createVerificationManager, } from '@diap/sdk';
2
+ import { irohTransport } from './network/iroh-transport.js';
3
+ import { HybridMessenger } from './network/hybrid-messenger.js';
2
4
  import * as ed25519 from '@noble/ed25519';
3
5
  import { sha512 } from '@noble/hashes/sha2.js';
4
6
  import * as fs from 'fs/promises';
@@ -7,6 +9,7 @@ import { initMinimax } from './constraints/index.js';
7
9
  import { createAgentSession } from './agents/pi-sdk.js';
8
10
  import { createSubAgentManager } from './agents/subagent-manager.js';
9
11
  import { getGlobalSharedContext } from './social/global-shared-context.js';
12
+ import { createBollharnessIntegration } from './bollharness-integration/index.js';
10
13
  import * as readline from 'readline';
11
14
  const RESET = '\x1b[0m';
12
15
  const BOLD = '\x1b[1m';
@@ -111,7 +114,7 @@ function getUserName() {
111
114
  return user.toLowerCase().replace(/[^a-z0-9]/g, '');
112
115
  }
113
116
  async function bootstrapIdentity() {
114
- s.step(1, 4, '生成 DIAP 身份', 'loading');
117
+ s.step(1, 5, '生成 DIAP 身份', 'loading');
115
118
  const kp = KeyManager.generate();
116
119
  const did = kp.did;
117
120
  const username = getUserName();
@@ -119,11 +122,11 @@ async function bootstrapIdentity() {
119
122
  const name = `blln-${username}-${suffix}`;
120
123
  console.log(` ${GRAY}DID:${RESET} ${did}`);
121
124
  console.log(` ${GRAY}名称:${RESET} ${name}`);
122
- s.step(1, 4, '生成 DIAP 身份', 'ok');
125
+ s.step(1, 5, '生成 DIAP 身份', 'ok');
123
126
  return { keypair: kp, did, name };
124
127
  }
125
128
  function publishDID(name, kp) {
126
- s.step(2, 4, '发布 DID → IPFS (后台)', 'loading');
129
+ s.step(2, 5, '发布 DID → IPFS (后台)', 'loading');
127
130
  return new Promise((resolve) => {
128
131
  const attempt = async () => {
129
132
  let lastLogTime = 0;
@@ -131,8 +134,8 @@ function publishDID(name, kp) {
131
134
  try {
132
135
  const auth = await AgentAuthManager.newWithRemoteIpfs('http://127.0.0.1:5001', 'http://127.0.0.1:8080');
133
136
  const result = await auth.registerAgent({ name, services: [] }, kp, '');
134
- s.step(2, 4, '发布 DID → IPFS', 'ok');
135
- resolve({ cid: result.cid, ipnsName: result.ipnsName });
137
+ s.step(2, 5, '发布 DID → IPFS', 'ok');
138
+ resolve({ cid: result.cid });
136
139
  }
137
140
  catch (e) {
138
141
  const now = Date.now();
@@ -158,7 +161,7 @@ function publishDID(name, kp) {
158
161
  // P2P 节点初始化
159
162
  // ---------------------------------------------------------------------------
160
163
  async function bootstrapP2P(verifier) {
161
- s.step(3, 4, '启动 P2P 网络', 'loading');
164
+ s.step(3, 5, '启动 P2P 网络', 'loading');
162
165
  const rawSeed = crypto.getRandomValues(new Uint8Array(32));
163
166
  const seed = rawSeed;
164
167
  const comm = createHyperswarmCommunicator({ server: true, client: true, autoConnect: true, maxConnections: 50, seed });
@@ -173,10 +176,6 @@ async function bootstrapP2P(verifier) {
173
176
  }
174
177
  }
175
178
  });
176
- comm.on('disconnection', (conn) => {
177
- const shortId = conn.publicKey.substring(0, 8);
178
- s.warn(`🔌 断开: ${shortId}...`);
179
- });
180
179
  comm.on('message', async (msg, conn) => {
181
180
  const content = new TextDecoder().decode(msg.content);
182
181
  const shortId = conn.publicKey.substring(0, 8);
@@ -188,13 +187,48 @@ async function bootstrapP2P(verifier) {
188
187
  const topic = createTopic('bolloon-agent-harness');
189
188
  await comm.joinTopic(topic);
190
189
  console.log(` ${GRAY}主题:${RESET} ${topic.slice(0, 8).toString('hex')}...`);
191
- s.step(3, 4, '启动 P2P 网络', 'ok');
190
+ s.step(3, 5, '启动 P2P 网络', 'ok');
192
191
  return comm;
193
192
  }
194
193
  // ---------------------------------------------------------------------------
194
+ // iroh/Hybrid P2P 初始化
195
+ // ---------------------------------------------------------------------------
196
+ async function bootstrapIroh(keypair, name) {
197
+ s.step(4, 5, '启动 iroh P2P', 'loading');
198
+ try {
199
+ const node = await irohTransport.start();
200
+ console.log(` ${GRAY}iroh:${RESET} ${node.nodeId.substring(0, 16)}...`);
201
+ hybridMessenger = new HybridMessenger({
202
+ preferIrohForLarge: true,
203
+ largeThresholdBytes: 64 * 1024,
204
+ enableRelay: true,
205
+ });
206
+ hybridMessenger.onMessage('task', async (msg) => {
207
+ console.log(`[iroh] Task from ${msg.from.substring(0, 12)}...: ${new TextDecoder().decode(msg.payload).substring(0, 50)}...`);
208
+ });
209
+ hybridMessenger.onMessage('blob', async (msg) => {
210
+ console.log(`[iroh] Blob from ${msg.from.substring(0, 12)}...: ${msg.payload.length} bytes`);
211
+ });
212
+ hybridMessenger.onMessage('response', async (msg) => {
213
+ console.log(`[iroh] Response from ${msg.from.substring(0, 12)}...`);
214
+ });
215
+ if (agentIdentity) {
216
+ agentIdentity.irohNodeId = node.nodeId;
217
+ }
218
+ s.step(4, 5, '启动 iroh P2P', 'ok');
219
+ }
220
+ catch (e) {
221
+ s.step(4, 5, '启动 iroh P2P', 'warn');
222
+ console.log(` ${YELLOW}iroh 启动失败: ${e.message}${RESET}`);
223
+ console.log(` ${GRAY}继续使用 Hyperswarm P2P${RESET}`);
224
+ }
225
+ }
226
+ // ---------------------------------------------------------------------------
195
227
  // Agent 懒加载
196
228
  // ---------------------------------------------------------------------------
197
229
  let agent = null;
230
+ let harness = null;
231
+ let hybridMessenger = null;
198
232
  let agentIdentity = null;
199
233
  async function getAgent() {
200
234
  if (!agent) {
@@ -324,11 +358,15 @@ function startCLI(comm) {
324
358
  process.stdin.setRawMode(true);
325
359
  }
326
360
  catch {
327
- console.log('Warning: Raw mode not available, using fallback input');
328
361
  }
329
362
  readline.emitKeypressEvents(process.stdin);
330
363
  process.stdout.write(CLEAR_LINE);
331
364
  showBottomPrompt();
365
+ const promptTimer = setInterval(() => {
366
+ if (isRunning && promptVisible) {
367
+ showBottomPrompt();
368
+ }
369
+ }, 500);
332
370
  const handleInput = (chunk, key) => {
333
371
  if (!isRunning)
334
372
  return;
@@ -339,6 +377,7 @@ function startCLI(comm) {
339
377
  process.stdin.setRawMode(false);
340
378
  }
341
379
  catch { }
380
+ clearInterval(promptTimer);
342
381
  process.exit(0);
343
382
  return;
344
383
  }
@@ -402,6 +441,19 @@ async function processInput(input, comm) {
402
441
  }
403
442
  return;
404
443
  }
444
+ if (trimmed.toLowerCase() === 'iroh') {
445
+ const nodeId = irohTransport.getNodeId();
446
+ const running = irohTransport.isRunning();
447
+ const peers = irohTransport.getPeers();
448
+ process.stdout.write(`${GRAY}iroh 状态:${RESET}\n`);
449
+ process.stdout.write(` ${GRAY}运行中:${RESET} ${running ? '是' : '否'}\n`);
450
+ process.stdout.write(` ${GRAY}Node ID:${RESET} ${nodeId ? nodeId.substring(0, 24) + '...' : 'N/A'}\n`);
451
+ process.stdout.write(` ${GRAY}已知节点:${RESET} ${peers.length}\n`);
452
+ if (hybridMessenger) {
453
+ process.stdout.write(` ${GRAY}HybridMessenger:${RESET} 就绪\n`);
454
+ }
455
+ return;
456
+ }
405
457
  try {
406
458
  const a = await getAgent();
407
459
  const thinking = setInterval(() => {
@@ -437,6 +489,13 @@ const AVAILABLE_TOOLS = [
437
489
  { name: 'global_context', description: '显示全局共享上下文', example: '--context' },
438
490
  { name: 'global_agents', description: '显示全局 Agent 注册表', example: '--global-agents' },
439
491
  { name: 'add_action', description: '添加用户行动到共享上下文', example: '--add-action <content> [importance]' },
492
+ { name: 'harness_init', description: '初始化 Bollharness 治理框架', example: '--harness-init' },
493
+ { name: 'harness_gate', description: '显示当前 Gate 状态', example: '--harness-gate' },
494
+ { name: 'harness_transition', description: '执行 Gate 转移', example: '--harness-transition [PASS|BLOCK]' },
495
+ { name: 'harness_skill', description: '执行 Harness Skill', example: '--harness-skill <name> [action]' },
496
+ { name: 'harness_classify', description: '分类变更类型', example: '--harness-classify <description>' },
497
+ { name: 'harness_context', description: '获取文件上下文', example: '--harness-context <file>' },
498
+ { name: 'harness_check', description: '执行 Guard 检查', example: '--harness-check <file>' },
440
499
  ];
441
500
  async function runToolCommand(tool, args, outputJson, comm) {
442
501
  const a = await getAgent();
@@ -519,6 +578,18 @@ async function runToolCommand(tool, args, outputJson, comm) {
519
578
  }
520
579
  break;
521
580
  }
581
+ case 'iroh': {
582
+ const nodeId = irohTransport.getNodeId();
583
+ const running = irohTransport.isRunning();
584
+ const irohPeers = irohTransport.getPeers();
585
+ const messenger = hybridMessenger ? 'HybridMessenger 就绪' : 'HybridMessenger 未初始化';
586
+ response = `iroh P2P 状态:
587
+ 运行中: ${running ? '是' : '否'}
588
+ Node ID: ${nodeId ? nodeId.substring(0, 32) + '...' : 'N/A'}
589
+ 已知节点: ${irohPeers.length}
590
+ ${messenger}`;
591
+ break;
592
+ }
522
593
  case 'identity': {
523
594
  const identity = a.getIdentity();
524
595
  response = JSON.stringify(identity, null, 2);
@@ -577,6 +648,165 @@ async function runToolCommand(tool, args, outputJson, comm) {
577
648
  response = '🛠️ 可用工具:\n\n' + AVAILABLE_TOOLS.map(t => ` ${t.name}\n ${t.description}\n 示例: ${t.example}`).join('\n\n');
578
649
  break;
579
650
  }
651
+ // ==================== Bollharness Commands ====================
652
+ case 'harness-init': {
653
+ harness = createBollharnessIntegration();
654
+ const skills = harness.listSkills();
655
+ const harnessSkills = harness.listHarnessSkills();
656
+ response = `✅ Bollharness 初始化成功\n\n` +
657
+ `已加载 Skills: ${skills.length}\n` +
658
+ `已加载 Harness Skills: ${harnessSkills.length}\n\n` +
659
+ `Skills:\n${skills.map(s => ` - ${s.name}: ${s.description}`).join('\n')}\n\n` +
660
+ `Gates: 0-8 (8-Gate 工作流)`;
661
+ break;
662
+ }
663
+ case 'harness-gate': {
664
+ if (!harness) {
665
+ harness = createBollharnessIntegration();
666
+ }
667
+ const gate = harness.getCurrentGate();
668
+ const gatePack = harness.getGatePack();
669
+ const blockers = gatePack.blockers || [];
670
+ response = `🚪 当前 Gate: ${gate}\n\n` +
671
+ `Entry: ${gatePack.entry_satisfied ? '✅ 满足' : '❌ 未满足'}\n` +
672
+ `要求产物: ${gatePack.required_artifact}\n` +
673
+ `下一步 Skill: ${gatePack.required_next_skill}\n` +
674
+ `Blockers: ${blockers.length > 0 ? blockers.join(', ') : '无'}`;
675
+ break;
676
+ }
677
+ case 'harness-transition': {
678
+ if (!harness) {
679
+ harness = createBollharnessIntegration();
680
+ }
681
+ const [verdict] = args;
682
+ const result = await harness.transitionGate(verdict ? { verdict: verdict, details: '' } : undefined);
683
+ const transitionBlockers = result.transition?.blockers || [];
684
+ response = `🔄 Gate 转移: ${result.success ? '✅ 成功' : '❌ 失败'}\n` +
685
+ `Blockers: ${transitionBlockers.length > 0 ? transitionBlockers.join(', ') : '无'}`;
686
+ break;
687
+ }
688
+ case 'harness-skill': {
689
+ if (!harness) {
690
+ harness = createBollharnessIntegration();
691
+ }
692
+ const [skillName, action] = args;
693
+ if (!skillName) {
694
+ const skills = harness.listSkills();
695
+ response = `📋 可用 Skills (${skills.length}):\n\n` +
696
+ skills.map(s => ` ${s.name}: ${s.description}`).join('\n');
697
+ break;
698
+ }
699
+ const result = await harness.executeSkill(skillName, { action: action || 'get_gate' });
700
+ response = `🎯 Skill '${skillName}' 执行结果:\n\n${result.result || result.error}`;
701
+ break;
702
+ }
703
+ case 'harness-classify': {
704
+ if (!harness) {
705
+ harness = createBollharnessIntegration();
706
+ }
707
+ const [description] = args;
708
+ if (!description) {
709
+ response = '用法: --harness-classify <变更描述>';
710
+ error = response;
711
+ break;
712
+ }
713
+ const result = harness.classifyChange(description);
714
+ response = `📊 变更分类: ${result.classification}\n` +
715
+ `最小路径: ${result.minimum_gates}\n` +
716
+ `快速通道: ${result.fast_track ? '✅ 可用' : '❌ 不可用'}`;
717
+ break;
718
+ }
719
+ case 'harness-context': {
720
+ if (!harness) {
721
+ harness = createBollharnessIntegration();
722
+ }
723
+ const [filePath] = args;
724
+ if (!filePath) {
725
+ response = '用法: --harness-context <文件路径>';
726
+ error = response;
727
+ break;
728
+ }
729
+ const context = harness.getContext(filePath);
730
+ response = `📄 文件: ${filePath}\n\n上下文:\n${context || '无匹配上下文'}`;
731
+ break;
732
+ }
733
+ case 'harness-check': {
734
+ if (!harness) {
735
+ harness = createBollharnessIntegration();
736
+ }
737
+ const [filePath] = args;
738
+ if (!filePath) {
739
+ response = '用法: --harness-check <文件路径>';
740
+ error = response;
741
+ break;
742
+ }
743
+ const result = await harness.processFileEdit(filePath);
744
+ response = `🔍 Guard 检查: ${filePath}\n\n` +
745
+ `通过: ${result.success ? '✅' : '❌'}\n` +
746
+ `错误: ${result.errors.length > 0 ? result.errors.join('\n') : '无'}`;
747
+ break;
748
+ }
749
+ case 'harness-archive': {
750
+ const a = await getAgent();
751
+ const sessionHarness = a.getHarness?.();
752
+ if (sessionHarness) {
753
+ a.archiveToHarness?.();
754
+ response = `📦 Session 已归档到 Pi SDK Harness`;
755
+ }
756
+ else {
757
+ if (!harness) {
758
+ harness = createBollharnessIntegration();
759
+ }
760
+ const logs = a.getOperationLogs?.() || [];
761
+ const archive = harness.archiveSession(logs);
762
+ response = `📦 Session 已归档:\n` +
763
+ `ID: ${archive.id}\n` +
764
+ `Gate: ${archive.gate}\n` +
765
+ `动作数: ${archive.actionCount}\n` +
766
+ `摘要: ${archive.summary}`;
767
+ }
768
+ break;
769
+ }
770
+ case 'harness-sessions': {
771
+ const a = await getAgent();
772
+ const sessionHarness = a.getHarness?.();
773
+ if (sessionHarness) {
774
+ harness = sessionHarness;
775
+ }
776
+ if (!harness) {
777
+ harness = createBollharnessIntegration();
778
+ }
779
+ const archives = harness.getSessionArchives();
780
+ if (archives.length === 0) {
781
+ response = '暂无 Session 归档记录';
782
+ break;
783
+ }
784
+ response = `📜 Session 归档记录 (${archives.length}):\n\n`;
785
+ for (const archive of archives.slice(-10)) {
786
+ response += `### ${archive.id}\n`;
787
+ response += `Gate: ${archive.gate} | 动作: ${archive.actionCount}\n`;
788
+ response += `摘要: ${archive.summary}\n\n`;
789
+ }
790
+ break;
791
+ }
792
+ case 'harness-session-context': {
793
+ const a = await getAgent();
794
+ const sessionHarness = a.getHarness?.();
795
+ if (sessionHarness) {
796
+ const [sessionId] = args;
797
+ const context = sessionHarness.getSessionContext(sessionId || undefined);
798
+ response = `📄 Pi SDK Session 上下文:\n\n${context}`;
799
+ }
800
+ else {
801
+ if (!harness) {
802
+ harness = createBollharnessIntegration();
803
+ }
804
+ const [sessionId] = args;
805
+ const context = harness.getSessionContext(sessionId || undefined);
806
+ response = `📄 Session 上下文:\n\n${context}`;
807
+ }
808
+ break;
809
+ }
580
810
  case 'agents': {
581
811
  const manager = await createSubAgentManager();
582
812
  const agents = await manager.getAllAgents();
@@ -657,7 +887,7 @@ async function runToolCommand(tool, args, outputJson, comm) {
657
887
  break;
658
888
  }
659
889
  const ctx = await getGlobalSharedContext();
660
- await ctx.addUserAction(content, parseInt(importance || '5', 10));
890
+ await ctx.addUserAction(content, undefined, undefined, parseInt(importance || '5', 10));
661
891
  response = `✅ 已添加用户行动: ${content.substring(0, 50)}...`;
662
892
  break;
663
893
  }
@@ -795,6 +1025,10 @@ function parseArgs() {
795
1025
  result.peers = true;
796
1026
  result.tool = 'peers';
797
1027
  break;
1028
+ case '--iroh':
1029
+ result.iroh = true;
1030
+ result.tool = 'iroh';
1031
+ break;
798
1032
  case '--identity':
799
1033
  result.identity = true;
800
1034
  result.tool = 'identity';
@@ -861,6 +1095,69 @@ function parseArgs() {
861
1095
  }
862
1096
  result.toolArgs = actionArgs;
863
1097
  break;
1098
+ case '--harness-init':
1099
+ result.tool = 'harness-init';
1100
+ break;
1101
+ case '--harness-gate':
1102
+ result.tool = 'harness-gate';
1103
+ break;
1104
+ case '--harness-transition':
1105
+ result.tool = 'harness-transition';
1106
+ const transitionArgs = [];
1107
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1108
+ transitionArgs.push(args[++i]);
1109
+ }
1110
+ result.toolArgs = transitionArgs;
1111
+ break;
1112
+ case '--harness-skill':
1113
+ result.tool = 'harness-skill';
1114
+ const skillArgs = [];
1115
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1116
+ skillArgs.push(args[++i]);
1117
+ }
1118
+ result.toolArgs = skillArgs;
1119
+ break;
1120
+ case '--harness-classify':
1121
+ result.tool = 'harness-classify';
1122
+ const classifyArgs = [];
1123
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1124
+ classifyArgs.push(args[++i]);
1125
+ }
1126
+ result.toolArgs = classifyArgs;
1127
+ break;
1128
+ case '--harness-context':
1129
+ result.tool = 'harness-context';
1130
+ const contextArgs = [];
1131
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1132
+ contextArgs.push(args[++i]);
1133
+ }
1134
+ result.toolArgs = contextArgs;
1135
+ break;
1136
+ case '--harness-check':
1137
+ result.tool = 'harness-check';
1138
+ const checkArgs = [];
1139
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1140
+ checkArgs.push(args[++i]);
1141
+ }
1142
+ result.toolArgs = checkArgs;
1143
+ break;
1144
+ case '--harness-archive':
1145
+ result.tool = 'harness-archive';
1146
+ break;
1147
+ case '--harness-sessions':
1148
+ result.tool = 'harness-sessions';
1149
+ break;
1150
+ case '--harness-session-context':
1151
+ result.tool = 'harness-session-context';
1152
+ const sessionArgs = [];
1153
+ while (i + 1 < args.length && !args[i + 1].startsWith('-')) {
1154
+ sessionArgs.push(args[++i]);
1155
+ }
1156
+ result.toolArgs = sessionArgs;
1157
+ break;
1158
+ case '--tui':
1159
+ result.tui = true;
1160
+ break;
864
1161
  case '--model':
865
1162
  result.model = args[++i];
866
1163
  break;
@@ -915,6 +1212,18 @@ function printHelp() {
915
1212
  --global-agents 显示全局 Agent 注册表
916
1213
  --add-action <内容> [重要性] 添加用户行动到共享上下文
917
1214
 
1215
+ # Bollharness 治理框架
1216
+ --harness-init 初始化 Bollharness 治理框架
1217
+ --harness-gate 显示当前 Gate 状态
1218
+ --harness-transition [PASS|BLOCK] 执行 Gate 转移
1219
+ --harness-skill <name> [action] 执行 Harness Skill
1220
+ --harness-classify <描述> 分类变更类型
1221
+ --harness-context <file> 获取文件上下文
1222
+ --harness-check <file> 执行 Guard 检查
1223
+ --harness-archive 归档当前 Session 到 Harness
1224
+ --harness-sessions 列出 Session 归档记录
1225
+ --harness-session-context [id] 获取 Session 上下文
1226
+
918
1227
  # AI 对话
919
1228
  --prompt, -p <text> 通用 AI 对话(默认)
920
1229
  --model <name> 指定使用的模型
@@ -965,6 +1274,33 @@ async function main() {
965
1274
  }
966
1275
  const mode = args.web ? 'web' : 'cli';
967
1276
  const isNonInteractive = !!(args.tool || args.prompt);
1277
+ const isTuiMode = mode === 'cli' && !isNonInteractive && args.tui;
1278
+ const originalLog = console.log;
1279
+ const originalInfo = console.info;
1280
+ const originalStdoutWrite = process.stdout.write.bind(process.stdout);
1281
+ const isSdkLog = (msg) => {
1282
+ return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(msg);
1283
+ };
1284
+ if (isTuiMode) {
1285
+ console.log = (...args) => {
1286
+ const msg = args.join(' ');
1287
+ if (isSdkLog(msg))
1288
+ return;
1289
+ originalLog.apply(console, args);
1290
+ };
1291
+ console.info = (...args) => {
1292
+ const msg = args.join(' ');
1293
+ if (isSdkLog(msg))
1294
+ return;
1295
+ originalInfo.apply(console, args);
1296
+ };
1297
+ process.stdout.write = (chunk, ...args) => {
1298
+ const msg = String(chunk);
1299
+ if (isSdkLog(msg))
1300
+ return true;
1301
+ return originalStdoutWrite(chunk, ...args);
1302
+ };
1303
+ }
968
1304
  if (isNonInteractive) {
969
1305
  console.error = () => { };
970
1306
  }
@@ -993,7 +1329,7 @@ async function main() {
993
1329
  }
994
1330
  }
995
1331
  const { keypair, did, name } = await bootstrapIdentity();
996
- agentIdentity = { did, name, publicKey: keypair.publicKeyHex };
1332
+ agentIdentity = { did, name, publicKey: Buffer.from(keypair.publicKey).toString('hex') };
997
1333
  publishDID(name, keypair).then(({ cid, ipnsName }) => {
998
1334
  if (cid)
999
1335
  agentIdentity.cid = cid;
@@ -1002,26 +1338,33 @@ async function main() {
1002
1338
  }).catch(() => { });
1003
1339
  const verifier = createVerificationManager();
1004
1340
  let comm = null;
1005
- if (mode === 'web') {
1006
- bootstrapP2P(verifier).then(c => {
1007
- comm = c;
1008
- const connections = c.getConnections();
1341
+ try {
1342
+ if (mode === 'web') {
1343
+ bootstrapP2P(verifier).then(c => {
1344
+ comm = c;
1345
+ const connections = c.getConnections();
1346
+ if (connections.length > 0) {
1347
+ agentIdentity.peerId = connections[0].publicKey;
1348
+ agentIdentity.p2pChannel = 'bolloon-agent-harness';
1349
+ }
1350
+ }).catch(err => {
1351
+ s.warn(`P2P Web 模式启动失败: ${err.message}`);
1352
+ });
1353
+ }
1354
+ else {
1355
+ comm = await bootstrapP2P(verifier);
1356
+ const connections = comm.getConnections();
1009
1357
  if (connections.length > 0) {
1010
1358
  agentIdentity.peerId = connections[0].publicKey;
1011
1359
  agentIdentity.p2pChannel = 'bolloon-agent-harness';
1012
1360
  }
1013
- }).catch(err => {
1014
- s.warn(`P2P 连接失败: ${err.message}`);
1015
- });
1016
- }
1017
- else {
1018
- comm = await bootstrapP2P(verifier);
1019
- const connections = comm.getConnections();
1020
- if (connections.length > 0) {
1021
- agentIdentity.peerId = connections[0].publicKey;
1022
- agentIdentity.p2pChannel = 'bolloon-agent-harness';
1023
1361
  }
1024
1362
  }
1363
+ catch (err) {
1364
+ s.warn(`P2P 初始化失败: ${err.message}`);
1365
+ s.warn('将使用无 P2P 模式运行');
1366
+ }
1367
+ await bootstrapIroh(keypair, name);
1025
1368
  s.divider();
1026
1369
  if (mode === 'web') {
1027
1370
  const port = parseInt(process.env.PORT || '54188');
@@ -1032,6 +1375,9 @@ async function main() {
1032
1375
  openBrowser(`http://localhost:${port}`);
1033
1376
  }
1034
1377
  else if (isNonInteractive) {
1378
+ console.log = originalLog;
1379
+ console.info = originalInfo;
1380
+ process.stdout.write = originalStdoutWrite;
1035
1381
  s.info('执行命令...');
1036
1382
  console.log();
1037
1383
  await runNonInteractive(args, comm);
@@ -1046,7 +1392,14 @@ async function main() {
1046
1392
  console.log(` ${CYAN}--agents${RESET} ${GRAY}- 查看 SubAgent${RESET}`);
1047
1393
  console.log(` ${CYAN}--context${RESET} ${GRAY}- 查看全局上下文${RESET}`);
1048
1394
  console.log(` ${CYAN}--delegate 任务 coding${RESET} ${GRAY}- 委派任务${RESET}`);
1395
+ console.log(` ${CYAN}peers${RESET} ${GRAY}- 查看 P2P 节点${RESET}`);
1396
+ console.log(` ${CYAN}iroh${RESET} ${GRAY}- 查看 iroh 状态${RESET}`);
1049
1397
  console.log(` ${CYAN}退出${RESET} ${GRAY}- 结束对话${RESET}\n`);
1398
+ if (!isTuiMode) {
1399
+ console.log = originalLog;
1400
+ console.info = originalInfo;
1401
+ process.stdout.write = originalStdoutWrite;
1402
+ }
1050
1403
  startCLI(comm);
1051
1404
  }
1052
1405
  }