@bolloon/bolloon-agent 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/bin/bolloon-cli.cjs +157 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
  152. package/src/cli-entry.ts +304 -0
  153. package/src/heartbeat/DaemonManager.ts +283 -0
  154. package/src/heartbeat/HealthMonitor.ts +316 -0
  155. package/src/heartbeat/StartupVerifier.ts +223 -0
  156. package/src/heartbeat/Watchdog.ts +198 -0
  157. package/src/heartbeat/index.ts +108 -0
  158. package/src/heartbeat/types.ts +82 -0
  159. package/src/llm/config-store.ts +23 -5
  160. package/src/network/iroh-transport.ts +3 -3
  161. package/src/web/client.js +302 -136
  162. package/src/web/components/p2p/P2PModal.tsx +91 -3
  163. package/src/web/components/p2p/index.ts +171 -9
  164. package/src/web/components/p2p/p2p-connection.ts +153 -1
  165. package/src/web/components/p2p/p2p-manager.ts +39 -1
  166. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  167. package/src/web/components/p2p/p2p-tools.ts +315 -0
  168. package/src/web/components/p2p/types.ts +58 -0
  169. package/src/web/index.html +5 -0
  170. package/src/web/server.ts +353 -36
  171. package/src/web/style.css +118 -0
  172. package/tsconfig.cli.json +16 -0
  173. package/tsconfig.electron.json +1 -1
  174. package/tsconfig.json +1 -2
  175. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  176. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  177. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  178. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  179. package/dist/electron-preload.js +0 -15
  180. package/dist/electron-preload.js.map +0 -1
  181. package/dist/electron.js +0 -206
  182. package/dist/electron.js.map +0 -1
  183. package/dist/test/constraint-layer.test.js +0 -164
  184. package/dist/test/global-shared-context.test.js +0 -315
  185. package/dist/test/pi-sdk.test.js +0 -47
  186. package/dist/test/set-persona.test.js +0 -38
  187. package/dist/test/subagent-manager.test.js +0 -276
  188. package/dist/test/workflow-engine.test.js +0 -87
  189. package/dist/web/server.js +0 -1647
  190. package/dist/web/server.js.map +0 -1
  191. package/dist/workflows/collaboration.js +0 -374
  192. package/dist/workflows/index.js +0 -54
  193. package/docs/agent-communication.md +0 -333
  194. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  195. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  196. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  197. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  198. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  199. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  200. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  201. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  202. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  203. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  204. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  205. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  206. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  207. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  208. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  209. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  210. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  211. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  212. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  213. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  214. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  215. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  216. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  217. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  218. package/src/bollharness/.boll/settings.json +0 -180
  219. package/src/bollharness/.boll/settings.json.template +0 -31
  220. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  221. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  222. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  223. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  224. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  225. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  226. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  227. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  228. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  229. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  230. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  231. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  232. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  233. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  234. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  235. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  236. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  237. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  238. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  239. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  240. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  241. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  242. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  243. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  244. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  245. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  246. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  247. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  248. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  249. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  250. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  251. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  252. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  253. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  254. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  255. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  256. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  257. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  258. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  259. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  260. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  261. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  262. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  263. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  264. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  265. package/src/bollharness/.claude/settings.json +0 -157
  266. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  267. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  268. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  269. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  270. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  271. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  272. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  273. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  274. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  275. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  276. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  277. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  278. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  279. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  280. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  281. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  282. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  283. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  284. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  285. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  286. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  287. package/src/bollharness/.githooks/pre-commit +0 -21
  288. package/src/bollharness/.github/workflows/ci.yml +0 -88
  289. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  290. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  291. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  292. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  293. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  294. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  295. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  296. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  297. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  298. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  299. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  300. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  301. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  302. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  303. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  304. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  305. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  306. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  307. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  308. package/src/bollharness/docs/launch-article-en.md +0 -276
  309. package/src/bollharness/docs/launch-article-zh.md +0 -305
  310. package/src/bollharness/docs/practice.html +0 -356
  311. package/src/bollharness/docs/practice.md +0 -82
  312. package/src/bollharness/docs/research/round-1/README.md +0 -11
  313. package/src/bollharness/docs/research/round-2/README.md +0 -11
  314. package/src/bollharness/docs/research/round-3/README.md +0 -11
  315. package/src/bollharness/docs/research/round-4/README.md +0 -11
  316. package/src/bollharness/docs/research/round-5/README.md +0 -11
  317. package/src/bollharness/docs/research/round-6/README.md +0 -11
  318. package/src/bollharness/package-lock.json +0 -48
  319. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  320. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  321. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  322. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  323. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  324. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  325. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  326. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  327. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  328. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  329. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  330. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  331. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  332. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  333. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  334. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  335. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  336. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  337. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  338. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  339. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  340. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  341. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  342. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  343. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  344. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  345. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  346. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  347. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  348. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  349. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  350. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  351. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  352. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  353. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  354. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  355. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  356. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  357. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  358. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  359. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  360. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  361. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  362. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  363. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  364. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  365. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  366. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  367. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  368. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  369. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  370. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  371. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  372. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  373. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  374. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  375. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  376. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  377. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  378. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  379. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  380. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  381. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  382. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  383. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  384. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  385. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  386. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  387. package/src/bollharness/tsconfig.json +0 -26
  388. package/src/constraint-runtime/package-lock.json +0 -48
  389. package/src/constraint-runtime/package.json +0 -34
  390. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  391. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  392. package/src/constraint-runtime/src/agent/index.ts +0 -1
  393. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  394. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  395. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  396. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  397. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  398. package/src/constraint-runtime/src/cli/index.ts +0 -15
  399. package/src/constraint-runtime/src/command_graph.ts +0 -20
  400. package/src/constraint-runtime/src/commands.ts +0 -83
  401. package/src/constraint-runtime/src/components/index.ts +0 -15
  402. package/src/constraint-runtime/src/constants/index.ts +0 -15
  403. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  404. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  405. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  406. package/src/constraint-runtime/src/context.ts +0 -45
  407. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  408. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  409. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  410. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  411. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  412. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  413. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  414. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  415. package/src/constraint-runtime/src/history.ts +0 -16
  416. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  417. package/src/constraint-runtime/src/index.ts +0 -28
  418. package/src/constraint-runtime/src/ink.ts +0 -4
  419. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  420. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  421. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  422. package/src/constraint-runtime/src/models.ts +0 -49
  423. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  424. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  425. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  426. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  427. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  428. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  429. package/src/constraint-runtime/src/prefetch.ts +0 -17
  430. package/src/constraint-runtime/src/query.ts +0 -7
  431. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  432. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  433. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  434. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  435. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  436. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  437. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  438. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  439. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  440. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  441. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  442. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  443. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  444. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  445. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  446. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  447. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  448. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  449. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  450. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  451. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  452. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  453. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  454. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  455. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  456. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  457. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  458. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  459. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  460. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  461. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  462. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  463. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  464. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  465. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  466. package/src/constraint-runtime/src/remote/index.ts +0 -15
  467. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  468. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  469. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  470. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  471. package/src/constraint-runtime/src/screens/index.ts +0 -15
  472. package/src/constraint-runtime/src/server/index.ts +0 -15
  473. package/src/constraint-runtime/src/services/index.ts +0 -15
  474. package/src/constraint-runtime/src/session_store.ts +0 -32
  475. package/src/constraint-runtime/src/setup.ts +0 -50
  476. package/src/constraint-runtime/src/skills/index.ts +0 -1
  477. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  478. package/src/constraint-runtime/src/state/index.ts +0 -15
  479. package/src/constraint-runtime/src/system_init.ts +0 -21
  480. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  481. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  482. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  483. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  484. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  485. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  486. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  487. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  488. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  489. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  490. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  491. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  492. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  493. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  494. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  495. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  496. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  497. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  498. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  499. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  500. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  501. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  502. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  503. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  504. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  505. package/src/constraint-runtime/src/tools.ts +0 -100
  506. package/src/constraint-runtime/src/transcript.ts +0 -23
  507. package/src/constraint-runtime/src/types/index.ts +0 -15
  508. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  509. package/src/constraint-runtime/src/utils/index.ts +0 -15
  510. package/src/constraint-runtime/src/vim/index.ts +0 -15
  511. package/src/constraint-runtime/src/voice/index.ts +0 -15
  512. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  513. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  514. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  515. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  516. package/src/constraint-runtime/tsconfig.json +0 -13
  517. package/src/pi-ecosystem/index.ts +0 -453
  518. package/src/pi-ecosystem-colony/index.ts +0 -482
  519. package/src/pi-ecosystem-goals/index.ts +0 -585
  520. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  521. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  522. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  523. package/src/pi-ecosystem-judgment/index.ts +0 -678
  524. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  525. package/src/pi-ecosystem-mcp/index.ts +0 -427
  526. package/src/pi-ecosystem-subagents/index.ts +0 -408
  527. package/src/test/ai-judgment-test.ts +0 -92
  528. package/src/test/bollharness-integration.test.ts +0 -398
  529. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  530. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  531. package/src/test/constraint-layer.test.ts +0 -191
  532. package/src/test/diap-identity-test.ts +0 -222
  533. package/src/test/diap-quick-test.ts +0 -73
  534. package/src/test/global-shared-context.test.ts +0 -393
  535. package/src/test/harness-judgment-injection.test.ts +0 -353
  536. package/src/test/harness-workflow-integrator-test.ts +0 -285
  537. package/src/test/human-value-store.test.ts +0 -316
  538. package/src/test/hybrid-integration-test.ts +0 -126
  539. package/src/test/hybrid-messenger-verify.ts +0 -68
  540. package/src/test/iroh-bistream-debug.ts +0 -50
  541. package/src/test/iroh-communication.test.ts +0 -81
  542. package/src/test/iroh-debug-test.ts +0 -69
  543. package/src/test/iroh-diap-test.ts +0 -90
  544. package/src/test/iroh-direct-connect.ts +0 -65
  545. package/src/test/iroh-e2e-fixed.ts +0 -106
  546. package/src/test/iroh-e2e-same-process.ts +0 -83
  547. package/src/test/iroh-e2e.ts +0 -83
  548. package/src/test/iroh-final-e2e.ts +0 -84
  549. package/src/test/iroh-relay-test.ts +0 -46
  550. package/src/test/iroh-simple-test.ts +0 -49
  551. package/src/test/iroh-transport-verify.ts +0 -60
  552. package/src/test/iroh-transport.test.ts +0 -47
  553. package/src/test/iroh-two-nodes.ts +0 -87
  554. package/src/test/iroh-verify.ts +0 -55
  555. package/src/test/judgment-decision.test.ts +0 -373
  556. package/src/test/llm-judgment-integration.test.ts +0 -257
  557. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  558. package/src/test/p2p-agent-dialogue.ts +0 -423
  559. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  560. package/src/test/p2p-agent-harness-flow.ts +0 -562
  561. package/src/test/p2p-agent-harness-single.ts +0 -175
  562. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  563. package/src/test/p2p-cid-connect-test.ts +0 -245
  564. package/src/test/p2p-connect-receiver.ts +0 -85
  565. package/src/test/p2p-iroh-test.ts +0 -214
  566. package/src/test/p2p-minimal-test.ts +0 -264
  567. package/src/test/p2p-node-1.ts +0 -172
  568. package/src/test/p2p-node-2.ts +0 -172
  569. package/src/test/p2p-server.ts +0 -335
  570. package/src/test/p2p-two-nodes-test.ts +0 -542
  571. package/src/test/pi-sdk.test.ts +0 -47
  572. package/src/test/set-persona.ts +0 -56
  573. package/src/test/simple.test.ts +0 -11
  574. package/src/test/storage-integration.test.ts +0 -191
  575. package/src/test/subagent-manager.test.ts +0 -392
  576. package/src/test/test-gate-flow.test.ts +0 -92
  577. package/src/test/workflow-engine.test.ts +0 -101
  578. package/src/workflows/collaboration.ts +0 -455
  579. package/src/workflows/index.ts +0 -64
  580. package/vitest.config.ts +0 -12
  581. package//346/203/263/346/263/225.md +0 -79
@@ -1,69 +0,0 @@
1
- import { Endpoint } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function testConnection() {
6
- console.log('=== iroh Connection Debug Test ===\n');
7
-
8
- console.log('[1] Starting server...');
9
- const server = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
10
- await server.online();
11
- console.log(` Server ID: ${server.nodeId()}`);
12
- console.log(` Server addr: ${server.addr()}`);
13
-
14
- let acceptResult: any = null;
15
- const acceptPromise = server.accept().then(conn => {
16
- acceptResult = conn;
17
- console.log('[Server] ✅ Connection accepted!');
18
- return conn;
19
- }).catch(e => {
20
- console.log('[Server] ❌ Accept error:', e.message || e);
21
- });
22
-
23
- console.log('\n[2] Starting client...');
24
- const client = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
25
- await client.online();
26
- console.log(` Client ID: ${client.nodeId()}`);
27
-
28
- console.log('\n[3] Client connecting to server...');
29
- const connectPromise = client.connect(server.nodeId(), IROH_ALPN)
30
- .then(conn => {
31
- console.log('[Client] ✅ Connected!');
32
- return conn;
33
- })
34
- .catch(e => {
35
- console.log('[Client] ❌ Connection error:', e.message || e);
36
- return null;
37
- });
38
-
39
- console.log(' Waiting 20s for connection...');
40
-
41
- const timeout = new Promise(r => setTimeout(r, 20000));
42
-
43
- const result = await Promise.race([connectPromise, timeout]);
44
-
45
- if (result && result !== timeout) {
46
- console.log('\n[4] Connection established, testing message...');
47
- const { send, recv } = await result.openBi();
48
- await send.writeAll(Buffer.from('test:hello'));
49
- await send.finish();
50
- console.log(' Message sent');
51
-
52
- await new Promise(r => setTimeout(r, 2000));
53
-
54
- if (acceptResult) {
55
- const data = await recv.readToEnd(1024);
56
- console.log(` ✅ Received: "${new TextDecoder().decode(data)}"`);
57
- console.log('\n✅ TEST PASSED');
58
- }
59
- } else if (!result) {
60
- console.log('\n❌ Connection failed');
61
- } else {
62
- console.log('\n⏳ Connection timed out');
63
- }
64
-
65
- await server.close().catch(() => {});
66
- await client.close().catch(() => {});
67
- }
68
-
69
- testConnection().catch(console.error);
@@ -1,90 +0,0 @@
1
- import { AgentAuthManager, KeyManager } from '@diap/sdk';
2
- import { initIrohIntegration, getIrohIntegration } from '../network/iroh-integration.js';
3
-
4
- const IPFS_API = 'http://127.0.0.1:5001';
5
- const IPFS_GATEWAY = 'http://127.0.0.1:8080';
6
-
7
- async function main() {
8
- console.log('╔═══════════════════════════════════════════╗');
9
- console.log('║ iroh + DIAP Integration Test ║');
10
- console.log('╚═══════════════════════════════════════════╝\n');
11
-
12
- console.log('[1] Generating DIAP identity...');
13
- const keyPair = KeyManager.generate();
14
- console.log(` DID: ${keyPair.did}`);
15
- console.log(` Name: test-agent-${keyPair.did.substring(0, 4)}`);
16
-
17
- console.log('\n[2] Creating AgentAuthManager...');
18
- const authManager = await AgentAuthManager.newWithRemoteIpfs(IPFS_API, IPFS_GATEWAY);
19
- console.log(' AuthManager ready');
20
-
21
- console.log('\n[3] Initializing iroh integration...');
22
- const integration = await initIrohIntegration({
23
- agentAuthManager: authManager,
24
- keyPair: keyPair,
25
- agentName: `test-agent-${keyPair.did.substring(0, 4)}`,
26
- agentDescription: 'Test agent with iroh P2P transport',
27
- agentTags: ['test', 'iroh'],
28
- refreshIntervalMs: 5 * 60 * 1000,
29
- discoveryIntervalMs: 30 * 1000,
30
- });
31
-
32
- const nodeId = integration.getNodeId();
33
- console.log(`\n ✅ Iroh Node ID: ${nodeId}`);
34
-
35
- const registration = integration.getRegistration();
36
- if (registration) {
37
- console.log(` ✅ DIAP CID: ${registration.cid}`);
38
- }
39
-
40
- console.log('\n[4] Setting up message handlers...');
41
-
42
- integration.onMessage('ping', (msg, from) => {
43
- console.log(`\n 📥 Ping from ${from.substring(0, 12)}...`);
44
- console.log(` Payload: "${new TextDecoder().decode(msg.payload)}"`);
45
-
46
- console.log(' 📤 Sending pong...');
47
- integration.sendTo(from, 'pong', new TextEncoder().encode('pong from ' + nodeId?.substring(0, 8)));
48
- });
49
-
50
- integration.onMessage('task', (msg, from) => {
51
- console.log(`\n 📥 Task from ${from.substring(0, 12)}...`);
52
- const taskData = new TextDecoder().decode(msg.payload);
53
- console.log(` Task: ${taskData.substring(0, 80)}...`);
54
- });
55
-
56
- integration.onMessage('response', (msg, from) => {
57
- console.log(`\n 📥 Response from ${from.substring(0, 12)}...`);
58
- console.log(` Response: "${new TextDecoder().decode(msg.payload)}"`);
59
- });
60
-
61
- console.log(' Handlers registered for: ping, task, response');
62
-
63
- console.log('\n[5] Connection info for other peers:');
64
- console.log(' ───────────────────────────────────────');
65
- console.log(` Node ID: ${nodeId}`);
66
- console.log(' ───────────────────────────────────────');
67
- console.log('\n To connect another peer, use this Node ID.');
68
-
69
- console.log('\n[6] Waiting for connections (60s)...');
70
-
71
- let tick = 0;
72
- const ticker = setInterval(() => {
73
- tick++;
74
- const peers = integration.getDiscoveredPeers();
75
- const connected = integration.getConnectedPeers();
76
- process.stdout.write(`\r [${tick}s] Discovered: ${peers.length}, Connected: ${connected.length} `);
77
- }, 1000);
78
-
79
- await new Promise(resolve => setTimeout(resolve, 60000));
80
- clearInterval(ticker);
81
-
82
- console.log('\n\n[7] Shutting down...');
83
- await integration.shutdown();
84
- console.log('Done');
85
- }
86
-
87
- main().catch(e => {
88
- console.error('Error:', e);
89
- process.exit(1);
90
- });
@@ -1,65 +0,0 @@
1
- import { Endpoint } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function testConnection() {
6
- console.log('=== Direct Connection Test ===\n');
7
-
8
- // Server
9
- console.log('[1] Starting server...');
10
- const server = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
11
- await server.online();
12
- const serverId = server.nodeId();
13
- console.log(` Server ID: ${serverId}`);
14
- console.log(` Server addr: ${server.addr()}`);
15
-
16
- // Accept in background
17
- let acceptedConn: any = null;
18
- server.accept().then((conn: any) => {
19
- console.log('[Server] Connection accepted!');
20
- acceptedConn = conn;
21
- });
22
-
23
- // Client
24
- console.log('\n[2] Starting client...');
25
- const client = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
26
- await client.online();
27
- const clientId = client.nodeId();
28
- console.log(` Client ID: ${clientId}`);
29
-
30
- console.log('\n[3] Client connecting to server...');
31
- try {
32
- const conn = await client.connect(serverId, IROH_ALPN);
33
- console.log('[Client] Connected!');
34
- console.log(` Remote: ${conn.remoteNodeId()}`);
35
-
36
- // Send message
37
- console.log('\n[4] Client sending message...');
38
- const { send, recv } = await conn.openBi();
39
- await send.writeAll(Buffer.from('hello:world'));
40
- await send.finish();
41
-
42
- console.log('[5] Waiting for server to receive...');
43
- await new Promise(r => setTimeout(r, 2000));
44
-
45
- if (acceptedConn) {
46
- console.log('[Server] Reading message...');
47
- const data = await recv.readToEnd(1024);
48
- console.log(` Received: "${new TextDecoder().decode(data)}"`);
49
- console.log('✅ CONNECTION TEST PASSED');
50
- } else {
51
- console.log('❌ Server did not accept connection');
52
- }
53
-
54
- conn.close();
55
- } catch (e) {
56
- console.log('[Client] Connection failed:', e);
57
- console.log('❌ CONNECTION TEST FAILED');
58
- }
59
-
60
- await server.close();
61
- await client.close();
62
- console.log('\nDone');
63
- }
64
-
65
- testConnection().catch(console.error);
@@ -1,106 +0,0 @@
1
- import { Endpoint, Connection } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function testConnection() {
6
- console.log('=== iroh E2E Test ===\n');
7
-
8
- console.log('[1] Starting server...');
9
- const server = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
10
- await server.online();
11
- console.log(` Server ID: ${server.nodeId()}`);
12
-
13
- let serverConn: Connection | null = null;
14
-
15
- server.accept().then((conn: Connection) => {
16
- serverConn = conn;
17
- console.log('[Server] ✅ Connection accepted!');
18
- }).catch((e: any) => {
19
- console.log('[Server] ❌ Accept error:', e.message || e);
20
- });
21
-
22
- console.log('\n[2] Starting client...');
23
- const client = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
24
- await client.online();
25
- console.log(` Client ID: ${client.nodeId()}`);
26
-
27
- console.log('\n[3] Client connecting to server...');
28
- let clientConn: any = null;
29
- try {
30
- clientConn = await client.connect(server.nodeId(), IROH_ALPN);
31
- console.log('[Client] ✅ Connected!');
32
- } catch (e: any) {
33
- console.log('[Client] ❌ Connection failed:', e.message || e);
34
- await server.close();
35
- await client.close();
36
- return;
37
- }
38
-
39
- console.log('\n[4] Waiting for server to accept connection...');
40
- let waitCount = 0;
41
- while (!serverConn && waitCount < 20) {
42
- await new Promise(r => setTimeout(r, 500));
43
- waitCount++;
44
- process.stdout.write(` Waiting... ${waitCount}/20\r`);
45
- }
46
- console.log('');
47
-
48
- if (!serverConn) {
49
- console.log('❌ Server did not accept connection');
50
- await server.close();
51
- await client.close();
52
- return;
53
- }
54
-
55
- console.log('[5] Client opening bi-stream...');
56
- const clientStreams = await clientConn.openBi();
57
- console.log(' Bi-stream opened');
58
-
59
- console.log('[6] Server accepting bi-stream...');
60
- let serverStreams: any = null;
61
- try {
62
- serverStreams = await serverConn.acceptBi();
63
- console.log(' Bi-stream accepted');
64
- } catch (e: any) {
65
- console.log('[Server] ❌ Accept bi error:', e.message || e);
66
- }
67
-
68
- if (!serverStreams) {
69
- console.log('❌ Server could not accept bi-stream');
70
- clientConn.close();
71
- await server.close();
72
- await client.close();
73
- return;
74
- }
75
-
76
- console.log('\n[7] Client sending message...');
77
- const { send: clientSend, recv: clientRecv } = clientStreams;
78
- const message = 'hello:this is a test message';
79
- await clientSend.writeAll(Buffer.from(message));
80
- await clientSend.finish();
81
- console.log(` Sent: "${message}"`);
82
-
83
- console.log('[8] Server receiving message...');
84
- const { recv: serverRecv } = serverStreams;
85
- const received = await serverRecv.readToEnd(1024);
86
- console.log(` ✅ Received: "${new TextDecoder().decode(received)}"`);
87
-
88
- console.log('\n[9] Server sending response...');
89
- const { send: serverSend } = serverStreams;
90
- const response = 'response:hello from server';
91
- await serverSend.writeAll(Buffer.from(response));
92
- await serverSend.finish();
93
- console.log(` Sent: "${response}"`);
94
-
95
- console.log('[10] Client receiving response...');
96
- const resp = await clientRecv.readToEnd(1024);
97
- console.log(` ✅ Received: "${new TextDecoder().decode(resp)}"`);
98
-
99
- console.log('\n✅✅✅ FULL E2E TEST PASSED ✅✅✅');
100
-
101
- clientConn.close();
102
- await server.close();
103
- await client.close();
104
- }
105
-
106
- testConnection().catch(console.error);
@@ -1,83 +0,0 @@
1
- import { irohTransport } from '../network/iroh-transport.js';
2
-
3
- async function testTwoNodes() {
4
- console.log('╔═══════════════════════════════════════════╗');
5
- console.log('║ iroh Two-Node E2E Test ║');
6
- console.log('╚═══════════════════════════════════════════╝\n');
7
-
8
- let serverNodeId: string | null = null;
9
- let clientNodeId: string | null = null;
10
- let messagesReceived = 0;
11
-
12
- console.log('[1] Starting server node...');
13
- const server = await irohTransport.start();
14
- serverNodeId = server.nodeId;
15
- console.log(` Server Node ID: ${serverNodeId}`);
16
- console.log('');
17
-
18
- irohTransport.onMessage('ping', (msg) => {
19
- messagesReceived++;
20
- console.log(` [Server] Got ping: "${new TextDecoder().decode(msg.payload)}"`);
21
- irohTransport.sendMessage(msg.from, 'pong', new TextEncoder().encode('pong'));
22
- });
23
-
24
- irohTransport.onMessage('request', async (msg) => {
25
- messagesReceived++;
26
- console.log(` [Server] Got request: "${new TextDecoder().decode(msg.payload)}"`);
27
- const response = await irohTransport.requestResponse(msg.from, 'response', new TextEncoder().encode('response data'));
28
- if (response) {
29
- console.log(` [Server] Response sent`);
30
- }
31
- });
32
-
33
- console.log('[2] Starting client node...');
34
- const clientTransport = new (await import('../network/iroh-transport.js')).IrohTransport();
35
- const client = await clientTransport.start();
36
- clientNodeId = client.node;
37
- console.log(` Client Node ID: ${clientNodeId}`);
38
- console.log('');
39
-
40
- let clientPongs = 0;
41
- let clientResponses = 0;
42
-
43
- clientTransport.onMessage('pong', (msg) => {
44
- clientPongs++;
45
- console.log(` [Client] Got pong: "${new TextDecoder().decode(msg.payload)}"`);
46
- });
47
-
48
- clientTransport.onMessage('response', (msg) => {
49
- clientResponses++;
50
- console.log(` [Client] Got response: "${new TextDecoder().decode(msg.payload)}"`);
51
- });
52
-
53
- await new Promise(r => setTimeout(r, 500));
54
-
55
- console.log('[3] Client sending ping to server...');
56
- await clientTransport.sendMessage(serverNodeId!, 'ping', new TextEncoder().encode('hello'));
57
-
58
- await new Promise(r => setTimeout(r, 500));
59
-
60
- console.log('[4] Client sending request (with response)...');
61
- await clientTransport.sendMessage(serverNodeId!, 'request', new TextEncoder().encode('need data'));
62
-
63
- await new Promise(r => setTimeout(r, 2000));
64
-
65
- console.log('\n[5] Results:');
66
- console.log(` Messages received by server: ${messagesReceived}`);
67
- console.log(` Pongs received by client: ${clientPongs}`);
68
- console.log(` Responses received by client: ${clientResponses}`);
69
-
70
- const success = messagesReceived >= 2 && clientPongs >= 1 && clientResponses >= 1;
71
-
72
- console.log('\n' + (success ? '✅ E2E TEST PASSED' : '❌ E2E TEST FAILED'));
73
-
74
- await clientTransport.shutdown();
75
- await irohTransport.shutdown();
76
-
77
- process.exit(success ? 0 : 1);
78
- }
79
-
80
- testTwoNodes().catch(e => {
81
- console.error('Test failed:', e);
82
- process.exit(1);
83
- });
@@ -1,83 +0,0 @@
1
- import { irohTransport } from '../network/iroh-transport.js';
2
-
3
- const args = process.argv.slice(2);
4
- const role = args[0] as 'server' | 'client';
5
- const targetNodeId = args[1];
6
-
7
- if (!role || !['server', 'client'].includes(role)) {
8
- console.log('Usage:');
9
- console.log(' Server: npx tsx src/test/iroh-e2e.ts server');
10
- console.log(' Client: npx tsx src/test/iroh-e2e.ts client <server-node-id>');
11
- process.exit(1);
12
- }
13
-
14
- async function runServer() {
15
- console.log('[Server] Starting iroh transport...');
16
- const node = await irohTransport.start();
17
- console.log('[Server] Node ID:', node.nodeId);
18
- console.log('[Server] Waiting for connections...\n');
19
-
20
- let msgCount = 0;
21
-
22
- irohTransport.onMessage('ping', (msg) => {
23
- msgCount++;
24
- console.log(`[Server] #${msgCount} Ping from ${msg.from.substring(0, 16)}...`);
25
- console.log(`[Server] Payload: "${new TextDecoder().decode(msg.payload)}"`);
26
- irohTransport.sendMessage(msg.from, 'pong', new TextEncoder().encode('pong from server'));
27
- });
28
-
29
- irohTransport.onMessage('task', (msg) => {
30
- msgCount++;
31
- console.log(`[Server] #${msgCount} Task from ${msg.from.substring(0, 16)}...`);
32
- const task = new TextDecoder().decode(msg.payload);
33
- console.log(`[Server] Task: ${task.substring(0, 60)}...`);
34
- irohTransport.sendMessage(msg.from, 'response', new TextEncoder().encode('task received'));
35
- });
36
-
37
- console.log('[Server] Ready. Press Ctrl+C to stop.');
38
- await new Promise(() => {});
39
- }
40
-
41
- async function runClient(targetId: string) {
42
- if (!targetId) {
43
- console.error('[Client] Error: target node ID required');
44
- process.exit(1);
45
- }
46
-
47
- console.log('[Client] Starting iroh transport...');
48
- const node = await irohTransport.start();
49
- console.log('[Client] Node ID:', node.nodeId);
50
- console.log('[Client] Target:', targetId);
51
- console.log('');
52
-
53
- irohTransport.onMessage('pong', (msg) => {
54
- console.log(`[Client] Pong from ${msg.from.substring(0, 16)}...: "${new TextDecoder().decode(msg.payload)}"`);
55
- });
56
-
57
- irohTransport.onMessage('response', (msg) => {
58
- console.log(`[Client] Response from ${msg.from.substring(0, 16)}...: "${new TextDecoder().decode(msg.payload)}"`);
59
- });
60
-
61
- await new Promise(resolve => setTimeout(resolve, 500));
62
-
63
- console.log('[Client] Sending ping...');
64
- await irohTransport.sendMessage(targetId, 'ping', new TextEncoder().encode('hello server'));
65
-
66
- await new Promise(resolve => setTimeout(resolve, 300));
67
-
68
- console.log('[Client] Sending task...');
69
- const task = JSON.stringify({ id: '123', type: 'summarize', documentPath: '/test.pdf' });
70
- await irohTransport.sendMessage(targetId, 'task', new TextEncoder().encode(task));
71
-
72
- console.log('[Client] Waiting for responses...');
73
- await new Promise(resolve => setTimeout(resolve, 5000));
74
-
75
- await irohTransport.shutdown();
76
- console.log('[Client] Done');
77
- }
78
-
79
- if (role === 'server') {
80
- runServer();
81
- } else {
82
- runClient(targetNodeId!);
83
- }
@@ -1,84 +0,0 @@
1
- import { Endpoint, Connection } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function main() {
6
- console.log('=== iroh E2E Final Test ===\n');
7
-
8
- const serverEndpoint = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
9
- await serverEndpoint.online();
10
- console.log('[Server] Started, ID:', serverEndpoint.nodeId().substring(0, 16) + '...');
11
-
12
- const clientEndpoint = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
13
- await clientEndpoint.online();
14
- console.log('[Client] Started, ID:', clientEndpoint.nodeId().substring(0, 16) + '...');
15
-
16
- let serverConn: Connection | null = null;
17
- let serverConnPromise = serverEndpoint.accept().then(c => { serverConn = c; return c; });
18
-
19
- console.log('[Client] Connecting to server...');
20
- let clientConn: any = null;
21
- try {
22
- clientConn = await clientEndpoint.connect(serverEndpoint.nodeId(), IROH_ALPN);
23
- console.log('[Client] ✅ Connected!');
24
- } catch (e: any) {
25
- console.log('[Client] ❌ Failed:', e.message);
26
- return;
27
- }
28
-
29
- console.log('[Server] Waiting for accept...');
30
- try {
31
- await serverConnPromise;
32
- console.log('[Server] ✅ Connection accepted!');
33
- } catch (e: any) {
34
- console.log('[Server] ❌ Accept failed:', e.message);
35
- return;
36
- }
37
-
38
- console.log('[Client] Opening bi-stream...');
39
- let clientBi: any = null;
40
- try {
41
- clientBi = await clientConn.openBi();
42
- console.log('[Client] ✅ Bi-stream opened');
43
- } catch (e: any) {
44
- console.log('[Client] ❌ openBi failed:', e.message);
45
- return;
46
- }
47
-
48
- console.log('[Server] Accepting bi-stream...');
49
- let serverBi: any = null;
50
- try {
51
- serverBi = await serverConn!.acceptBi();
52
- console.log('[Server] ✅ Bi-stream accepted');
53
- } catch (e: any) {
54
- console.log('[Server] ❌ acceptBi failed:', e.message);
55
- return;
56
- }
57
-
58
- console.log('\n[Test] Sending message client → server...');
59
- const { send: cSend, recv: cRecv } = clientBi;
60
- await cSend.writeAll(Buffer.from('hello from client'));
61
- await cSend.finish();
62
-
63
- const { recv: sRecv, send: sSend } = serverBi;
64
- const msg = await sRecv.readToEnd(1024);
65
- console.log('[Server] ✅ Received:', new TextDecoder().decode(msg));
66
-
67
- console.log('[Server] Sending response...');
68
- await sSend.writeAll(Buffer.from('hello from server'));
69
- await sSend.finish();
70
-
71
- const resp = await cRecv.readToEnd(1024);
72
- console.log('[Client] ✅ Received:', new TextDecoder().decode(resp));
73
-
74
- console.log('\n✅✅✅ E2E TEST PASSED ✅✅✅');
75
-
76
- clientConn.close();
77
- await serverEndpoint.close();
78
- await clientEndpoint.close();
79
- }
80
-
81
- main().catch(e => {
82
- console.error('Error:', e);
83
- process.exit(1);
84
- });
@@ -1,46 +0,0 @@
1
- import { Endpoint } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function testConnection() {
6
- console.log('=== iroh Relay Connection Test ===\n');
7
-
8
- console.log('[1] Starting server...');
9
- const server = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
10
- await server.online();
11
- console.log(` Server ID: ${server.nodeId()}`);
12
- console.log(` Server addr: ${server.addr()}`);
13
-
14
- console.log('\n[2] Starting client...');
15
- const client = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
16
- await client.online();
17
- console.log(` Client ID: ${client.nodeId()}`);
18
-
19
- console.log('\n[3] Client connecting to server via relay...');
20
- try {
21
- console.log(' Waiting for connection (relay may take time)...');
22
- const conn = await client.connect(server.nodeId(), IROH_ALPN);
23
- console.log('[Client] ✅ Connected!');
24
- console.log(` Remote: ${conn.remoteNodeId()}`);
25
-
26
- console.log('\n[4] Client sending message...');
27
- const { send, recv } = await conn.openBi();
28
- await send.writeAll(Buffer.from('hello:test message'));
29
- await send.finish();
30
- console.log(' Message sent');
31
-
32
- console.log('\n[5] Server receiving...');
33
- const data = await recv.readToEnd(1024);
34
- console.log(` ✅ Received: "${new TextDecoder().decode(data)}"`);
35
-
36
- console.log('\n✅ FULL E2E TEST PASSED');
37
- conn.close();
38
- } catch (e: any) {
39
- console.log('[Client] ❌ Connection failed:', e.message || e);
40
- }
41
-
42
- await server.close();
43
- await client.close();
44
- }
45
-
46
- testConnection().catch(console.error);
@@ -1,49 +0,0 @@
1
- import { Endpoint, Connection } from '@rayhanadev/iroh';
2
-
3
- const IROH_ALPN = 'bolloon/iroh/1';
4
-
5
- async function testConnection() {
6
- console.log('=== iroh E2E Test (Simple) ===\n');
7
-
8
- console.log('[1] Starting server...');
9
- const server = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
10
- await server.online();
11
- console.log(` Server ID: ${server.nodeId()}`);
12
-
13
- console.log('[2] Starting client...');
14
- const client = await Endpoint.createWithOptions({ alpns: [IROH_ALPN] });
15
- await client.online();
16
- console.log(` Client ID: ${client.nodeId()}`);
17
-
18
- console.log('\n[3] Client connecting...');
19
- let clientConn: any = null;
20
- try {
21
- clientConn = await client.connect(server.nodeId(), IROH_ALPN);
22
- console.log('[Client] ✅ Connected!');
23
- } catch (e: any) {
24
- console.log('[Client] ❌ Failed:', e.message || e);
25
- await server.close();
26
- await client.close();
27
- return;
28
- }
29
-
30
- console.log('[4] Client sending datagram...');
31
- try {
32
- clientConn.sendDatagram(Buffer.from('hello:test datagram'));
33
- console.log(' Datagram sent');
34
- } catch (e: any) {
35
- console.log('[Client] ❌ Datagram failed:', e.message || e);
36
- }
37
-
38
- console.log('[5] Waiting 3s...');
39
- await new Promise(r => setTimeout(r, 3000));
40
-
41
- console.log('[6] Closing connections...');
42
- clientConn.close();
43
- await server.close();
44
- await client.close();
45
-
46
- console.log('\n✅ Connection test completed');
47
- }
48
-
49
- testConnection().catch(console.error);