@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.
- package/bin/bolloon-cli.cjs +157 -0
- package/bin/bolloon-daemon.sh +207 -0
- package/bin/bolloon.cmd +11 -0
- package/dist/agents/constraint-layer.js +10 -15
- package/dist/agents/pi-sdk.js +433 -106
- package/dist/agents/protocol.js +82 -1
- package/dist/agents/subagent-manager.js +2 -2
- package/dist/agents/workflow-engine.js +15 -20
- package/dist/agents/workflow-pivot-loop.js +541 -0
- package/dist/bollharness/src/index.js +5 -0
- package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
- package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
- package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
- package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
- package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
- package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
- package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
- package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
- package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
- package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
- package/dist/bollharness/src/scripts/checks/finding.js +13 -0
- package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
- package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
- package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
- package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
- package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
- package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
- package/dist/bollharness/src/scripts/context_router.js +67 -0
- package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
- package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
- package/dist/bollharness/src/scripts/guard_router.js +158 -0
- package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
- package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
- package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
- package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
- package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
- package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
- package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
- package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
- package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
- package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
- package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
- package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
- package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
- package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
- package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
- package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
- package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
- package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
- package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
- package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
- package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
- package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
- package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
- package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
- package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
- package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
- package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
- package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
- package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
- package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
- package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
- package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
- package/dist/bollharness/src/scripts/sanitize.js +6 -0
- package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
- package/dist/bollharness-integration/context-chain-router.js +383 -0
- package/dist/bollharness-integration/context-router-judgment.js +13 -21
- package/dist/bollharness-integration/context-router.js +22 -64
- package/dist/bollharness-integration/gate-state-machine.js +14 -19
- package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
- package/dist/bollharness-integration/guard-checker.js +21 -68
- package/dist/bollharness-integration/index.js +14 -124
- package/dist/bollharness-integration/integration.js +13 -20
- package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
- package/dist/bollharness-integration/skill-adapter.js +18 -64
- package/dist/cli-entry.js +261 -0
- package/dist/constraint-runtime/src/commands.js +17 -7
- package/dist/constraint-runtime/src/constraint/budget.js +1 -6
- package/dist/constraint-runtime/src/constraint/permission.js +1 -6
- package/dist/constraint-runtime/src/models.js +1 -3
- package/dist/constraint-runtime/src/tools.js +17 -7
- package/dist/constraints/index.js +1 -7
- package/dist/documents/reader.js +8 -49
- package/dist/heartbeat/DaemonManager.js +242 -0
- package/dist/heartbeat/HealthMonitor.js +285 -0
- package/dist/heartbeat/StartupVerifier.js +205 -0
- package/dist/heartbeat/Watchdog.js +168 -0
- package/dist/heartbeat/index.js +84 -0
- package/dist/heartbeat/types.js +5 -0
- package/dist/index.js +381 -28
- package/dist/llm/config-store.js +31 -57
- package/dist/llm/llm-judgment-client.js +389 -0
- package/dist/llm/pi-ai.js +9 -52
- package/dist/network/agent-network.js +46 -90
- package/dist/network/hybrid-messenger.js +125 -0
- package/dist/network/iroh-bootstrap.js +38 -0
- package/dist/network/iroh-discovery.js +145 -0
- package/dist/network/iroh-integration.js +9 -16
- package/dist/network/iroh-transport.js +10 -48
- package/dist/network/p2p.js +23 -62
- package/dist/network/storage/adapters/json-adapter.js +4 -42
- package/dist/network/storage/index.js +147 -0
- package/dist/network/storage/types.js +14 -0
- package/dist/pi-ecosystem/index.js +233 -0
- package/dist/pi-ecosystem-colony/index.js +29 -90
- package/dist/pi-ecosystem-goals/index.js +20 -74
- package/dist/pi-ecosystem-judgment/decision.js +29 -47
- package/dist/pi-ecosystem-judgment/distillation.js +16 -29
- package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
- package/dist/pi-ecosystem-judgment/index.js +21 -74
- package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
- package/dist/pi-ecosystem-mcp/index.js +24 -78
- package/dist/pi-ecosystem-subagents/index.js +20 -69
- package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
- package/dist/social/ant-colony/PheromoneEngine.js +11 -49
- package/dist/social/ant-colony/index.js +6 -0
- package/dist/social/ant-colony/types.js +4 -8
- package/dist/social/channels/ChannelManager.js +8 -46
- package/dist/social/channels/DiapChannelBridge.js +9 -47
- package/dist/social/channels/InterestMatcher.js +2 -7
- package/dist/social/channels/channel-agent-session.js +309 -0
- package/dist/social/channels/channel-heartbeat-agent.js +494 -0
- package/dist/social/channels/diap-doc-parser.js +204 -0
- package/dist/social/channels/harness-workflow-integrator.js +446 -0
- package/dist/social/channels/index.js +9 -0
- package/dist/social/channels/types.js +3 -7
- package/dist/social/global-shared-context.js +6 -47
- package/dist/social/heartbeat.js +29 -72
- package/dist/social/persona/enhanced-persona.js +299 -0
- package/dist/web/client.js +302 -136
- package/dist/web/components/p2p/index.js +159 -9
- package/dist/web/components/p2p/p2p-connection.js +136 -0
- package/dist/web/components/p2p/p2p-manager.js +24 -0
- package/dist/web/components/p2p/p2p-store-memory.js +1 -1
- package/dist/web/components/p2p/types.js +7 -0
- package/dist/web/index.html +5 -0
- package/dist/web/style.css +118 -0
- package/package.json +12 -6
- package/scripts/build-cli.js +206 -0
- package/scripts/postinstall.js +153 -0
- package/src/agents/pi-sdk.ts +347 -28
- package/src/agents/protocol.ts +95 -1
- package/src/agents/workflow-pivot-loop.ts +674 -0
- package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
- package/src/cli-entry.ts +304 -0
- package/src/heartbeat/DaemonManager.ts +283 -0
- package/src/heartbeat/HealthMonitor.ts +316 -0
- package/src/heartbeat/StartupVerifier.ts +223 -0
- package/src/heartbeat/Watchdog.ts +198 -0
- package/src/heartbeat/index.ts +108 -0
- package/src/heartbeat/types.ts +82 -0
- package/src/llm/config-store.ts +23 -5
- package/src/network/iroh-transport.ts +3 -3
- package/src/web/client.js +302 -136
- package/src/web/components/p2p/P2PModal.tsx +91 -3
- package/src/web/components/p2p/index.ts +171 -9
- package/src/web/components/p2p/p2p-connection.ts +153 -1
- package/src/web/components/p2p/p2p-manager.ts +39 -1
- package/src/web/components/p2p/p2p-store-memory.ts +1 -1
- package/src/web/components/p2p/p2p-tools.ts +315 -0
- package/src/web/components/p2p/types.ts +58 -0
- package/src/web/index.html +5 -0
- package/src/web/server.ts +353 -36
- package/src/web/style.css +118 -0
- package/tsconfig.cli.json +16 -0
- package/tsconfig.electron.json +1 -1
- package/tsconfig.json +1 -2
- package/dist/constraint-runtime/tests/agent.test.js +0 -16
- package/dist/constraint-runtime/tests/constraint.test.js +0 -41
- package/dist/constraint-runtime/tests/skill.test.js +0 -19
- package/dist/constraint-runtime/tests/thinking.test.js +0 -22
- package/dist/electron-preload.js +0 -15
- package/dist/electron-preload.js.map +0 -1
- package/dist/electron.js +0 -206
- package/dist/electron.js.map +0 -1
- package/dist/test/constraint-layer.test.js +0 -164
- package/dist/test/global-shared-context.test.js +0 -315
- package/dist/test/pi-sdk.test.js +0 -47
- package/dist/test/set-persona.test.js +0 -38
- package/dist/test/subagent-manager.test.js +0 -276
- package/dist/test/workflow-engine.test.js +0 -87
- package/dist/web/server.js +0 -1647
- package/dist/web/server.js.map +0 -1
- package/dist/workflows/collaboration.js +0 -374
- package/dist/workflows/index.js +0 -54
- package/docs/agent-communication.md +0 -333
- package/docs/plans/2026-05-15-document-agent-design.md +0 -479
- package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
- package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
- package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
- package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
- 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
- package/src/bollharness/.boll/CLAUDE.md.template +0 -34
- package/src/bollharness/.boll/MANIFEST.yaml +0 -213
- package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
- package/src/bollharness/.boll/agents/review-base.yaml +0 -108
- package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
- package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
- package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
- package/src/bollharness/.boll/issue-adapter.yaml +0 -31
- package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.boll/rules/backend-routes.md +0 -31
- package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
- package/src/bollharness/.boll/rules/env-vars.md +0 -32
- package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
- package/src/bollharness/.boll/rules/repo-structure.md +0 -42
- package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
- package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
- package/src/bollharness/.boll/settings.json +0 -180
- package/src/bollharness/.boll/settings.json.template +0 -31
- package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
- package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
- package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
- package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
- package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
- package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
- package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
- package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
- package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
- package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
- package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
- package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
- package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
- package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
- package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
- package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
- package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
- package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
- package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.boll/tasks/.gitkeep +0 -0
- package/src/bollharness/.boll/toolkit-index.yaml +0 -112
- package/src/bollharness/.claude/agents/review-base.yaml +0 -108
- package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
- package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
- package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
- package/src/bollharness/.claude/settings.json +0 -157
- package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
- package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
- package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
- package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
- package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
- package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
- package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
- package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
- package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
- package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
- package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
- package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
- package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
- package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
- package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
- package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
- package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
- package/src/bollharness/.githooks/pre-commit +0 -21
- package/src/bollharness/.github/workflows/ci.yml +0 -88
- package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
- package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
- package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
- package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
- package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
- package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
- package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
- package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
- package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
- package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
- package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
- package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
- package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
- package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
- package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
- package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
- package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
- package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
- package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
- package/src/bollharness/docs/launch-article-en.md +0 -276
- package/src/bollharness/docs/launch-article-zh.md +0 -305
- package/src/bollharness/docs/practice.html +0 -356
- package/src/bollharness/docs/practice.md +0 -82
- package/src/bollharness/docs/research/round-1/README.md +0 -11
- package/src/bollharness/docs/research/round-2/README.md +0 -11
- package/src/bollharness/docs/research/round-3/README.md +0 -11
- package/src/bollharness/docs/research/round-4/README.md +0 -11
- package/src/bollharness/docs/research/round-5/README.md +0 -11
- package/src/bollharness/docs/research/round-6/README.md +0 -11
- package/src/bollharness/package-lock.json +0 -48
- package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
- package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
- package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
- package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
- package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
- package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
- package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
- package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
- package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
- package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
- package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
- package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
- package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
- package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
- package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
- package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
- package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
- package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
- package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
- package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
- package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
- package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
- package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
- package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
- package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
- package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
- package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
- package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
- package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
- package/src/bollharness/tsconfig.json +0 -26
- package/src/constraint-runtime/package-lock.json +0 -48
- package/src/constraint-runtime/package.json +0 -34
- package/src/constraint-runtime/src/_archive_helper.ts +0 -16
- package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
- package/src/constraint-runtime/src/agent/index.ts +0 -1
- package/src/constraint-runtime/src/assistant/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
- package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
- package/src/constraint-runtime/src/bridge/index.ts +0 -15
- package/src/constraint-runtime/src/buddy/index.ts +0 -15
- package/src/constraint-runtime/src/cli/index.ts +0 -15
- package/src/constraint-runtime/src/command_graph.ts +0 -20
- package/src/constraint-runtime/src/commands.ts +0 -83
- package/src/constraint-runtime/src/components/index.ts +0 -15
- package/src/constraint-runtime/src/constants/index.ts +0 -15
- package/src/constraint-runtime/src/constraint/budget.ts +0 -25
- package/src/constraint-runtime/src/constraint/index.ts +0 -3
- package/src/constraint-runtime/src/constraint/permission.ts +0 -28
- package/src/constraint-runtime/src/context.ts +0 -45
- package/src/constraint-runtime/src/coordinator/index.ts +0 -15
- package/src/constraint-runtime/src/cost_hook.ts +0 -6
- package/src/constraint-runtime/src/cost_tracker.ts +0 -9
- package/src/constraint-runtime/src/deferred_init.ts +0 -18
- package/src/constraint-runtime/src/direct_modes.ts +0 -13
- package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
- package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
- package/src/constraint-runtime/src/execution_registry.ts +0 -41
- package/src/constraint-runtime/src/history.ts +0 -16
- package/src/constraint-runtime/src/hooks/index.ts +0 -15
- package/src/constraint-runtime/src/index.ts +0 -28
- package/src/constraint-runtime/src/ink.ts +0 -4
- package/src/constraint-runtime/src/keybindings/index.ts +0 -15
- package/src/constraint-runtime/src/memdir/index.ts +0 -15
- package/src/constraint-runtime/src/migrations/index.ts +0 -15
- package/src/constraint-runtime/src/models.ts +0 -49
- package/src/constraint-runtime/src/moreright/index.ts +0 -15
- package/src/constraint-runtime/src/native_ts/index.ts +0 -15
- package/src/constraint-runtime/src/output_styles/index.ts +0 -15
- package/src/constraint-runtime/src/parity_audit.ts +0 -23
- package/src/constraint-runtime/src/plugins/index.ts +0 -15
- package/src/constraint-runtime/src/port_manifest.ts +0 -20
- package/src/constraint-runtime/src/prefetch.ts +0 -17
- package/src/constraint-runtime/src/query.ts +0 -7
- package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
- package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
- package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
- package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
- package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
- package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
- package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
- package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
- package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
- package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
- package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
- package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
- package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
- package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
- package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
- package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
- package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
- package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
- package/src/constraint-runtime/src/remote/index.ts +0 -15
- package/src/constraint-runtime/src/remote_runtime.ts +0 -17
- package/src/constraint-runtime/src/runtime/index.ts +0 -1
- package/src/constraint-runtime/src/runtime/session.ts +0 -42
- package/src/constraint-runtime/src/schemas/index.ts +0 -15
- package/src/constraint-runtime/src/screens/index.ts +0 -15
- package/src/constraint-runtime/src/server/index.ts +0 -15
- package/src/constraint-runtime/src/services/index.ts +0 -15
- package/src/constraint-runtime/src/session_store.ts +0 -32
- package/src/constraint-runtime/src/setup.ts +0 -50
- package/src/constraint-runtime/src/skills/index.ts +0 -1
- package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
- package/src/constraint-runtime/src/state/index.ts +0 -15
- package/src/constraint-runtime/src/system_init.ts +0 -21
- package/src/constraint-runtime/src/thinking/engine.ts +0 -61
- package/src/constraint-runtime/src/thinking/index.ts +0 -1
- package/src/constraint-runtime/src/tool_pool.ts +0 -20
- package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
- package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
- package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
- package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
- package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
- package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
- package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
- package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
- package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
- package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
- package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
- package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
- package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
- package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
- package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
- package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
- package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
- package/src/constraint-runtime/src/tools.ts +0 -100
- package/src/constraint-runtime/src/transcript.ts +0 -23
- package/src/constraint-runtime/src/types/index.ts +0 -15
- package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
- package/src/constraint-runtime/src/utils/index.ts +0 -15
- package/src/constraint-runtime/src/vim/index.ts +0 -15
- package/src/constraint-runtime/src/voice/index.ts +0 -15
- package/src/constraint-runtime/tests/agent.test.ts +0 -20
- package/src/constraint-runtime/tests/constraint.test.ts +0 -47
- package/src/constraint-runtime/tests/skill.test.ts +0 -23
- package/src/constraint-runtime/tests/thinking.test.ts +0 -28
- package/src/constraint-runtime/tsconfig.json +0 -13
- package/src/pi-ecosystem/index.ts +0 -453
- package/src/pi-ecosystem-colony/index.ts +0 -482
- package/src/pi-ecosystem-goals/index.ts +0 -585
- package/src/pi-ecosystem-judgment/decision.ts +0 -431
- package/src/pi-ecosystem-judgment/distillation.ts +0 -398
- package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
- package/src/pi-ecosystem-judgment/index.ts +0 -678
- package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
- package/src/pi-ecosystem-mcp/index.ts +0 -427
- package/src/pi-ecosystem-subagents/index.ts +0 -408
- package/src/test/ai-judgment-test.ts +0 -92
- package/src/test/bollharness-integration.test.ts +0 -398
- package/src/test/channel-agent-multi-dialogue.ts +0 -265
- package/src/test/channel-heartbeat-agent-test.ts +0 -244
- package/src/test/constraint-layer.test.ts +0 -191
- package/src/test/diap-identity-test.ts +0 -222
- package/src/test/diap-quick-test.ts +0 -73
- package/src/test/global-shared-context.test.ts +0 -393
- package/src/test/harness-judgment-injection.test.ts +0 -353
- package/src/test/harness-workflow-integrator-test.ts +0 -285
- package/src/test/human-value-store.test.ts +0 -316
- package/src/test/hybrid-integration-test.ts +0 -126
- package/src/test/hybrid-messenger-verify.ts +0 -68
- package/src/test/iroh-bistream-debug.ts +0 -50
- package/src/test/iroh-communication.test.ts +0 -81
- package/src/test/iroh-debug-test.ts +0 -69
- package/src/test/iroh-diap-test.ts +0 -90
- package/src/test/iroh-direct-connect.ts +0 -65
- package/src/test/iroh-e2e-fixed.ts +0 -106
- package/src/test/iroh-e2e-same-process.ts +0 -83
- package/src/test/iroh-e2e.ts +0 -83
- package/src/test/iroh-final-e2e.ts +0 -84
- package/src/test/iroh-relay-test.ts +0 -46
- package/src/test/iroh-simple-test.ts +0 -49
- package/src/test/iroh-transport-verify.ts +0 -60
- package/src/test/iroh-transport.test.ts +0 -47
- package/src/test/iroh-two-nodes.ts +0 -87
- package/src/test/iroh-verify.ts +0 -55
- package/src/test/judgment-decision.test.ts +0 -373
- package/src/test/llm-judgment-integration.test.ts +0 -257
- package/src/test/p2p-agent-complex-dialogue.ts +0 -490
- package/src/test/p2p-agent-dialogue.ts +0 -423
- package/src/test/p2p-agent-full-bidirectional.ts +0 -686
- package/src/test/p2p-agent-harness-flow.ts +0 -562
- package/src/test/p2p-agent-harness-single.ts +0 -175
- package/src/test/p2p-ai-dialogue-test.ts +0 -374
- package/src/test/p2p-cid-connect-test.ts +0 -245
- package/src/test/p2p-connect-receiver.ts +0 -85
- package/src/test/p2p-iroh-test.ts +0 -214
- package/src/test/p2p-minimal-test.ts +0 -264
- package/src/test/p2p-node-1.ts +0 -172
- package/src/test/p2p-node-2.ts +0 -172
- package/src/test/p2p-server.ts +0 -335
- package/src/test/p2p-two-nodes-test.ts +0 -542
- package/src/test/pi-sdk.test.ts +0 -47
- package/src/test/set-persona.ts +0 -56
- package/src/test/simple.test.ts +0 -11
- package/src/test/storage-integration.test.ts +0 -191
- package/src/test/subagent-manager.test.ts +0 -392
- package/src/test/test-gate-flow.test.ts +0 -92
- package/src/test/workflow-engine.test.ts +0 -101
- package/src/workflows/collaboration.ts +0 -455
- package/src/workflows/index.ts +0 -64
- package/vitest.config.ts +0 -12
- 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,
|
|
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,
|
|
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,
|
|
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,
|
|
135
|
-
resolve({ cid: result.cid
|
|
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,
|
|
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,
|
|
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.
|
|
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
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
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
|
}
|