@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
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Chain Router - Session summary chain injection
|
|
3
|
+
*
|
|
4
|
+
* Integrates with existing ContextRouter and Judgment systems.
|
|
5
|
+
*
|
|
6
|
+
* Architecture:
|
|
7
|
+
* - Session end → extract summary by work_type → store in .boll/state/context-chains/
|
|
8
|
+
* - Session start (Gate 0/3) → lookup related chains → inject summaries
|
|
9
|
+
* - Work type: code_change | review | design | question | planning | debugging
|
|
10
|
+
*
|
|
11
|
+
* Integration points:
|
|
12
|
+
* - Uses existing context-router-judgment.ts pattern (extends, not replaces)
|
|
13
|
+
* - Gate injection via gate-judgment-inject.ts
|
|
14
|
+
* - Storage in .boll/state/context-chains/
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'fs';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
export const CONTEXT_CHAINS_DIR = path.join('.boll', 'state', 'context-chains');
|
|
19
|
+
/**
|
|
20
|
+
* Ensure context-chains directory exists
|
|
21
|
+
*/
|
|
22
|
+
function ensureDir() {
|
|
23
|
+
if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
|
|
24
|
+
fs.mkdirSync(CONTEXT_CHAINS_DIR, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get current month directory path
|
|
29
|
+
*/
|
|
30
|
+
function getMonthDir() {
|
|
31
|
+
const now = new Date();
|
|
32
|
+
const year = now.getFullYear();
|
|
33
|
+
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
34
|
+
return path.join(CONTEXT_CHAINS_DIR, `${year}-${month}`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate session ID
|
|
38
|
+
*/
|
|
39
|
+
function generateSessionId() {
|
|
40
|
+
const now = new Date();
|
|
41
|
+
const year = now.getFullYear();
|
|
42
|
+
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
43
|
+
const day = String(now.getDate()).padStart(2, '0');
|
|
44
|
+
const seq = getTodaySequence() + 1;
|
|
45
|
+
return `${year}${month}${day}-${String(seq).padStart(3, '0')}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get today's sequence number
|
|
49
|
+
*/
|
|
50
|
+
function getTodaySequence() {
|
|
51
|
+
const dir = getMonthDir();
|
|
52
|
+
if (!fs.existsSync(dir))
|
|
53
|
+
return 0;
|
|
54
|
+
const todayPrefix = new Date().toISOString().slice(0, 10).replace(/-/g, '');
|
|
55
|
+
const files = fs.readdirSync(dir)
|
|
56
|
+
.filter(f => f.startsWith(todayPrefix) && f.endsWith('.yaml'));
|
|
57
|
+
return files.length;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Save a context chain summary
|
|
61
|
+
*/
|
|
62
|
+
export function saveContextChain(summary) {
|
|
63
|
+
ensureDir();
|
|
64
|
+
const monthDir = getMonthDir();
|
|
65
|
+
if (!fs.existsSync(monthDir)) {
|
|
66
|
+
fs.mkdirSync(monthDir, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
const filename = `${summary.session_id}-${summary.work_type}-${getTodaySequence() + 1}.yaml`;
|
|
69
|
+
const filepath = path.join(monthDir, filename);
|
|
70
|
+
const yaml = contextChainToYaml(summary);
|
|
71
|
+
fs.writeFileSync(filepath, yaml, 'utf-8');
|
|
72
|
+
return filepath;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert context chain to YAML string
|
|
76
|
+
*/
|
|
77
|
+
function contextChainToYaml(summary) {
|
|
78
|
+
const lines = [
|
|
79
|
+
`session_id: "${summary.session_id}"`,
|
|
80
|
+
`work_type: ${summary.work_type}`,
|
|
81
|
+
`created_at: "${summary.created_at}"`,
|
|
82
|
+
`gate_at_session: ${summary.gate_at_session}`,
|
|
83
|
+
'',
|
|
84
|
+
'关联上下文:',
|
|
85
|
+
];
|
|
86
|
+
for (const ref of summary['关联上下文']) {
|
|
87
|
+
lines.push(` - session_id: "${ref.session_id}"`);
|
|
88
|
+
lines.push(` reason: "${ref.reason}"`);
|
|
89
|
+
lines.push(` relevance: ${ref.relevance}`);
|
|
90
|
+
}
|
|
91
|
+
lines.push('');
|
|
92
|
+
lines.push('核心摘要:');
|
|
93
|
+
const core = summary['核心摘要'];
|
|
94
|
+
for (const [key, value] of Object.entries(core)) {
|
|
95
|
+
if (Array.isArray(value)) {
|
|
96
|
+
lines.push(` ${key}:`);
|
|
97
|
+
for (const item of value) {
|
|
98
|
+
if (typeof item === 'object') {
|
|
99
|
+
for (const [k, v] of Object.entries(item)) {
|
|
100
|
+
lines.push(` - ${k}: ${JSON.stringify(v)}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
lines.push(` - ${JSON.stringify(item)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (typeof value === 'object' && value !== null) {
|
|
109
|
+
lines.push(` ${key}:`);
|
|
110
|
+
for (const [k, v] of Object.entries(value)) {
|
|
111
|
+
lines.push(` ${k}: ${JSON.stringify(v)}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
lines.push(` ${key}: ${JSON.stringify(value)}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (summary['决策缺口'] && summary['决策缺口'].length > 0) {
|
|
119
|
+
lines.push('');
|
|
120
|
+
lines.push('决策缺口:');
|
|
121
|
+
for (const gap of summary['决策缺口']) {
|
|
122
|
+
lines.push(` - 描述: "${gap.描述}"`);
|
|
123
|
+
lines.push(` 影响: "${gap.影响}"`);
|
|
124
|
+
lines.push(` 需要什么才能关闭: "${gap.需要什么才能关闭}"`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (summary['风险点'] && summary['风险点'].length > 0) {
|
|
128
|
+
lines.push('');
|
|
129
|
+
lines.push('风险点:');
|
|
130
|
+
for (const risk of summary['风险点']) {
|
|
131
|
+
lines.push(` - 描述: "${risk.描述}"`);
|
|
132
|
+
lines.push(` 概率: ${risk.概率}`);
|
|
133
|
+
lines.push(` 缓解措施: "${risk.缓解措施}"`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (summary['遗迹'] && summary['遗迹'].length > 0) {
|
|
137
|
+
lines.push('');
|
|
138
|
+
lines.push('遗迹:');
|
|
139
|
+
for (const relic of summary['遗迹']) {
|
|
140
|
+
lines.push(` - "${relic}"`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return lines.join('\n');
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Load a single context chain by session_id
|
|
147
|
+
*/
|
|
148
|
+
export function loadContextChain(sessionId) {
|
|
149
|
+
const pattern = new RegExp(`^${sessionId.replace(/-/g, '.*')}-.*\\.yaml$`);
|
|
150
|
+
const dirs = fs.existsSync(CONTEXT_CHAINS_DIR)
|
|
151
|
+
? fs.readdirSync(CONTEXT_CHAINS_DIR)
|
|
152
|
+
: [];
|
|
153
|
+
for (const dir of dirs) {
|
|
154
|
+
const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
|
|
155
|
+
if (!fs.statSync(dirPath).isDirectory())
|
|
156
|
+
continue;
|
|
157
|
+
const files = fs.readdirSync(dirPath).filter(f => pattern.test(f));
|
|
158
|
+
if (files.length > 0) {
|
|
159
|
+
const content = fs.readFileSync(path.join(dirPath, files[0]), 'utf-8');
|
|
160
|
+
return parseContextChainYaml(content);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parse YAML content to ContextChainSummary
|
|
167
|
+
*/
|
|
168
|
+
function parseContextChainYaml(content) {
|
|
169
|
+
const result = {};
|
|
170
|
+
const lines = content.split('\n');
|
|
171
|
+
let currentKey = '';
|
|
172
|
+
let currentArray = [];
|
|
173
|
+
let inArray = false;
|
|
174
|
+
for (const line of lines) {
|
|
175
|
+
if (line.includes(':') && !line.startsWith(' ')) {
|
|
176
|
+
const [key, ...valueParts] = line.split(':');
|
|
177
|
+
const value = valueParts.join(':').trim();
|
|
178
|
+
if (inArray && currentKey) {
|
|
179
|
+
result[currentKey] = currentArray;
|
|
180
|
+
currentArray = [];
|
|
181
|
+
inArray = false;
|
|
182
|
+
}
|
|
183
|
+
currentKey = key.trim();
|
|
184
|
+
if (value) {
|
|
185
|
+
result[currentKey] = value.replace(/^["']|["']$/g, '');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (line.startsWith(' - ')) {
|
|
189
|
+
inArray = true;
|
|
190
|
+
currentArray.push(line.replace(/^ - /, '').replace(/^["']|["']$/g, ''));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (inArray && currentKey) {
|
|
194
|
+
result[currentKey] = currentArray;
|
|
195
|
+
}
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Find related context chains by work type and relevance
|
|
200
|
+
*/
|
|
201
|
+
export function findRelatedChains(options = {}) {
|
|
202
|
+
const { workType, minRelevance = 0.5, maxTokens = 2000, gate, } = options;
|
|
203
|
+
if (!fs.existsSync(CONTEXT_CHAINS_DIR)) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
const chains = [];
|
|
207
|
+
const dirs = fs.readdirSync(CONTEXT_CHAINS_DIR);
|
|
208
|
+
for (const dir of dirs) {
|
|
209
|
+
const dirPath = path.join(CONTEXT_CHAINS_DIR, dir);
|
|
210
|
+
if (!fs.statSync(dirPath).isDirectory())
|
|
211
|
+
continue;
|
|
212
|
+
const files = fs.readdirSync(dirPath).filter(f => f.endsWith('.yaml'));
|
|
213
|
+
for (const file of files) {
|
|
214
|
+
const content = fs.readFileSync(path.join(dirPath, file), 'utf-8');
|
|
215
|
+
const chain = parseContextChainYaml(content);
|
|
216
|
+
if (workType && chain.work_type !== workType)
|
|
217
|
+
continue;
|
|
218
|
+
if (gate !== undefined && chain.gate_at_session !== gate)
|
|
219
|
+
continue;
|
|
220
|
+
chains.push(chain);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Sort by relevance and recency
|
|
224
|
+
chains.sort((a, b) => {
|
|
225
|
+
const aRecency = new Date(a.created_at).getTime();
|
|
226
|
+
const bRecency = new Date(b.created_at).getTime();
|
|
227
|
+
return bRecency - aRecency;
|
|
228
|
+
});
|
|
229
|
+
// Apply token budget
|
|
230
|
+
let totalTokens = 0;
|
|
231
|
+
const selected = [];
|
|
232
|
+
for (const chain of chains) {
|
|
233
|
+
const estimatedTokens = estimateTokens(chain);
|
|
234
|
+
if (totalTokens + estimatedTokens > maxTokens)
|
|
235
|
+
break;
|
|
236
|
+
selected.push(chain);
|
|
237
|
+
totalTokens += estimatedTokens;
|
|
238
|
+
}
|
|
239
|
+
return selected;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Estimate token count for a chain
|
|
243
|
+
*/
|
|
244
|
+
function estimateTokens(chain) {
|
|
245
|
+
const yaml = contextChainToYaml(chain);
|
|
246
|
+
return Math.ceil(yaml.length / 4);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Generate injection for Gate 0/3
|
|
250
|
+
*/
|
|
251
|
+
export async function generateContextChainInjection(gate, workType) {
|
|
252
|
+
const chains = findRelatedChains({
|
|
253
|
+
workType,
|
|
254
|
+
gate: gate === 0 ? undefined : gate,
|
|
255
|
+
maxTokens: 2000,
|
|
256
|
+
});
|
|
257
|
+
if (chains.length === 0) {
|
|
258
|
+
return '';
|
|
259
|
+
}
|
|
260
|
+
const header = gate === 0
|
|
261
|
+
? '# Context Chains — Recent Session Summaries'
|
|
262
|
+
: `# Context Chains — Gate ${gate} Related Sessions`;
|
|
263
|
+
const lines = [
|
|
264
|
+
header,
|
|
265
|
+
`# Injected at session start — chains from related prior sessions`,
|
|
266
|
+
`# Total chains: ${chains.length} | Token budget: ~2000`,
|
|
267
|
+
'',
|
|
268
|
+
'context_chains:',
|
|
269
|
+
];
|
|
270
|
+
for (const chain of chains) {
|
|
271
|
+
lines.push(` - session_id: "${chain.session_id}"`);
|
|
272
|
+
lines.push(` work_type: ${chain.work_type}`);
|
|
273
|
+
lines.push(` created_at: "${chain.created_at}"`);
|
|
274
|
+
lines.push(` gate_at_session: ${chain.gate_at_session}`);
|
|
275
|
+
if (chain['关联上下文'].length > 0) {
|
|
276
|
+
lines.push(` 关联上下文:`);
|
|
277
|
+
for (const ref of chain['关联上下文']) {
|
|
278
|
+
lines.push(` - session_id: "${ref.session_id}"`);
|
|
279
|
+
lines.push(` relevance: ${ref.relevance}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
lines.push(` 核心摘要:`);
|
|
283
|
+
const core = chain['核心摘要'];
|
|
284
|
+
for (const [key, value] of Object.entries(core)) {
|
|
285
|
+
if (Array.isArray(value)) {
|
|
286
|
+
lines.push(` ${key}:`);
|
|
287
|
+
for (const item of value.slice(0, 3)) {
|
|
288
|
+
if (typeof item === 'object') {
|
|
289
|
+
lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
lines.push(` - ${JSON.stringify(item).slice(0, 100)}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (value.length > 3) {
|
|
296
|
+
lines.push(` ... (${value.length - 3} more)`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
else if (typeof value === 'string' && value.length > 100) {
|
|
300
|
+
lines.push(` ${key}: "${value.slice(0, 100)}..."`);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
lines.push(` ${key}: ${JSON.stringify(value)}`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
lines.push('');
|
|
307
|
+
}
|
|
308
|
+
return lines.join('\n');
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Create a new context chain summary from conversation
|
|
312
|
+
*/
|
|
313
|
+
export function createContextChain(params) {
|
|
314
|
+
const sessionId = generateSessionId();
|
|
315
|
+
const summary = {
|
|
316
|
+
session_id: sessionId,
|
|
317
|
+
work_type: params.workType,
|
|
318
|
+
created_at: new Date().toISOString(),
|
|
319
|
+
gate_at_session: params.gate,
|
|
320
|
+
'关联上下文': (params.relatedSessions || []).map(r => ({
|
|
321
|
+
session_id: r.sessionId,
|
|
322
|
+
reason: r.reason,
|
|
323
|
+
relevance: r.relevance,
|
|
324
|
+
})),
|
|
325
|
+
'核心摘要': extractCoreSummary(params.workType, params.conversationText),
|
|
326
|
+
'决策缺口': [],
|
|
327
|
+
'风险点': [],
|
|
328
|
+
'遗迹': [],
|
|
329
|
+
};
|
|
330
|
+
return summary;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Extract core summary based on work type
|
|
334
|
+
*/
|
|
335
|
+
function extractCoreSummary(workType, text) {
|
|
336
|
+
switch (workType) {
|
|
337
|
+
case 'code_change':
|
|
338
|
+
return extractCodeChangeSummary(text);
|
|
339
|
+
case 'review':
|
|
340
|
+
return extractReviewSummary(text);
|
|
341
|
+
case 'design':
|
|
342
|
+
return extractDesignSummary(text);
|
|
343
|
+
case 'planning':
|
|
344
|
+
return extractPlanningSummary(text);
|
|
345
|
+
case 'debugging':
|
|
346
|
+
return extractDebuggingSummary(text);
|
|
347
|
+
case 'question':
|
|
348
|
+
return extractQuestionSummary(text);
|
|
349
|
+
default:
|
|
350
|
+
return { raw: text.slice(0, 500) };
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
function extractCodeChangeSummary(text) {
|
|
354
|
+
const files = [];
|
|
355
|
+
// Extract file paths from common patterns
|
|
356
|
+
const filePattern = /(?:modified|changed|added|deleted):\s+([^\s]+)/gi;
|
|
357
|
+
let match;
|
|
358
|
+
while ((match = filePattern.exec(text)) !== null) {
|
|
359
|
+
files.push({ path: match[1], change_type: 'modify', reason: '' });
|
|
360
|
+
}
|
|
361
|
+
return { files_changed: files, decisions: [], adr_linked: [] };
|
|
362
|
+
}
|
|
363
|
+
function extractReviewSummary(text) {
|
|
364
|
+
const hasBlock = text.toLowerCase().includes('block') || text.toLowerCase().includes('reject');
|
|
365
|
+
return {
|
|
366
|
+
verdict: hasBlock ? 'BLOCK' : 'PASS',
|
|
367
|
+
reviewed_artifact: '',
|
|
368
|
+
blocking_issues: [],
|
|
369
|
+
non_blocking_observations: [],
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function extractDesignSummary(text) {
|
|
373
|
+
return { design_choices: [], constraints: [], consumers: [] };
|
|
374
|
+
}
|
|
375
|
+
function extractPlanningSummary(text) {
|
|
376
|
+
return { goals: [], dependencies: [], risks: [], decision_gaps: [] };
|
|
377
|
+
}
|
|
378
|
+
function extractDebuggingSummary(text) {
|
|
379
|
+
return { root_cause: '', symptoms_observed: [], fix_applied: [], files_touched: [] };
|
|
380
|
+
}
|
|
381
|
+
function extractQuestionSummary(text) {
|
|
382
|
+
return { question_type: 'unknown', answer_summary: '', source: '' };
|
|
383
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Judgment-Aware Context Router
|
|
4
3
|
*
|
|
@@ -14,14 +13,8 @@
|
|
|
14
13
|
* - Extends with judgment lookup based on fragment context
|
|
15
14
|
* - Injects at Gate 0, Gate 3, and file-edit time
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
exports.getJudgmentsForPath = getJudgmentsForPath;
|
|
20
|
-
exports.getCoreJudgmentsForSession = getCoreJudgmentsForSession;
|
|
21
|
-
exports.getJudgmentsForContextRequest = getJudgmentsForContextRequest;
|
|
22
|
-
exports.generateJudgmentInjection = generateJudgmentInjection;
|
|
23
|
-
const context_router_js_1 = require("./context-router.js");
|
|
24
|
-
const index_js_1 = require("../pi-ecosystem-judgment/index.js");
|
|
16
|
+
import { match as contextMatch, } from './context-router.js';
|
|
17
|
+
import { getCombinedJudgments, getJudgmentsForContext, calculateConfidence, } from '../pi-ecosystem-judgment/index.js';
|
|
25
18
|
const DEFAULT_OPTIONS = {
|
|
26
19
|
minConfidence: 0.7,
|
|
27
20
|
maxJudgments: 5,
|
|
@@ -31,8 +24,8 @@ const DEFAULT_OPTIONS = {
|
|
|
31
24
|
/**
|
|
32
25
|
* Get judgments associated with a fragment name
|
|
33
26
|
*/
|
|
34
|
-
async function getJudgmentsForFragment(fragmentName) {
|
|
35
|
-
const allJudgments = await
|
|
27
|
+
export async function getJudgmentsForFragment(fragmentName) {
|
|
28
|
+
const allJudgments = await getCombinedJudgments();
|
|
36
29
|
// Map fragment to judgment context categories
|
|
37
30
|
const fragmentContextMap = {
|
|
38
31
|
'truth-source-hierarchy': ['truth-source', 'code', 'architecture', 'hierarchy', 'priority'],
|
|
@@ -62,10 +55,10 @@ async function getJudgmentsForFragment(fragmentName) {
|
|
|
62
55
|
/**
|
|
63
56
|
* Get high-confidence judgments for a file path
|
|
64
57
|
*/
|
|
65
|
-
async function getJudgmentsForPath(filePath, options = {}) {
|
|
58
|
+
export async function getJudgmentsForPath(filePath, options = {}) {
|
|
66
59
|
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
67
60
|
// Get associated fragment names
|
|
68
|
-
const fragmentNames = (
|
|
61
|
+
const fragmentNames = contextMatch(filePath);
|
|
69
62
|
const allFragments = fragmentNames.length > 0 ? fragmentNames : ['general-dev-principles'];
|
|
70
63
|
// Get judgments for each fragment
|
|
71
64
|
const allJudgments = [];
|
|
@@ -89,7 +82,7 @@ async function getJudgmentsForPath(filePath, options = {}) {
|
|
|
89
82
|
// Limit count
|
|
90
83
|
const limitedJudgments = filteredJudgments.slice(0, opts.maxJudgments);
|
|
91
84
|
// Calculate overall confidence
|
|
92
|
-
const overallConfidence =
|
|
85
|
+
const overallConfidence = calculateConfidence(limitedJudgments);
|
|
93
86
|
// Format as YAML
|
|
94
87
|
const contextYaml = formatJudgmentsAsYaml(limitedJudgments, opts);
|
|
95
88
|
return {
|
|
@@ -102,8 +95,8 @@ async function getJudgmentsForPath(filePath, options = {}) {
|
|
|
102
95
|
/**
|
|
103
96
|
* Get core judgments for session start (high confidence only)
|
|
104
97
|
*/
|
|
105
|
-
async function getCoreJudgmentsForSession(minConfidence = 0.9) {
|
|
106
|
-
const allJudgments = await
|
|
98
|
+
export async function getCoreJudgmentsForSession(minConfidence = 0.9) {
|
|
99
|
+
const allJudgments = await getCombinedJudgments();
|
|
107
100
|
const highConfidence = allJudgments
|
|
108
101
|
.filter(j => j.confidence >= minConfidence && j.source === 'human')
|
|
109
102
|
.sort((a, b) => b.confidence - a.confidence)
|
|
@@ -130,14 +123,14 @@ async function getCoreJudgmentsForSession(minConfidence = 0.9) {
|
|
|
130
123
|
/**
|
|
131
124
|
* Get judgments for a specific context (e.g., "investment", "code-review")
|
|
132
125
|
*/
|
|
133
|
-
async function getJudgmentsForContextRequest(context, options = {}) {
|
|
126
|
+
export async function getJudgmentsForContextRequest(context, options = {}) {
|
|
134
127
|
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
135
|
-
const judgments = await
|
|
128
|
+
const judgments = await getJudgmentsForContext(context);
|
|
136
129
|
const filtered = judgments
|
|
137
130
|
.filter(j => j.confidence >= opts.minConfidence)
|
|
138
131
|
.sort((a, b) => b.confidence - a.confidence)
|
|
139
132
|
.slice(0, opts.maxJudgments);
|
|
140
|
-
const overallConfidence =
|
|
133
|
+
const overallConfidence = calculateConfidence(filtered);
|
|
141
134
|
const contextYaml = formatJudgmentsAsYaml(filtered, opts);
|
|
142
135
|
return {
|
|
143
136
|
fragments: [],
|
|
@@ -232,7 +225,7 @@ function escapeYamlString(str) {
|
|
|
232
225
|
/**
|
|
233
226
|
* Generate injection prompt for a file path
|
|
234
227
|
*/
|
|
235
|
-
async function generateJudgmentInjection(filePath, gate, options = {}) {
|
|
228
|
+
export async function generateJudgmentInjection(filePath, gate, options = {}) {
|
|
236
229
|
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
237
230
|
// Gate-specific confidence thresholds
|
|
238
231
|
const gateConfidence = {
|
|
@@ -266,4 +259,3 @@ async function generateJudgmentInjection(filePath, gate, options = {}) {
|
|
|
266
259
|
|
|
267
260
|
${result.contextYaml}`;
|
|
268
261
|
}
|
|
269
|
-
//# sourceMappingURL=context-router-judgment.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Context Router - Port of Bollharness context-fragments to Bolloon
|
|
4
3
|
*
|
|
@@ -7,54 +6,15 @@
|
|
|
7
6
|
*
|
|
8
7
|
* Loads fragments from src/bollharness/scripts/context-fragments/
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.CONTEXT_FRAGMENTS = exports.ContextRouter = exports.FALLBACK_FRAGMENTS = exports.CONTEXT_MAP = exports.FRAGMENTS_DIR = exports.BOLLHARNESS_CONTEXT_DIR = void 0;
|
|
45
|
-
exports.loadFragment = loadFragment;
|
|
46
|
-
exports.match = match;
|
|
47
|
-
exports.getFragments = getFragments;
|
|
48
|
-
exports.loadFragments = loadFragments;
|
|
49
|
-
const fs = __importStar(require("fs"));
|
|
50
|
-
const path = __importStar(require("path"));
|
|
51
|
-
exports.BOLLHARNESS_CONTEXT_DIR = path.join('src', 'bollharness', 'scripts', 'context-fragments');
|
|
52
|
-
exports.FRAGMENTS_DIR = exports.BOLLHARNESS_CONTEXT_DIR;
|
|
9
|
+
import * as fs from 'fs';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
export const BOLLHARNESS_CONTEXT_DIR = path.join('src', 'bollharness', 'scripts', 'context-fragments');
|
|
12
|
+
export const FRAGMENTS_DIR = BOLLHARNESS_CONTEXT_DIR;
|
|
53
13
|
/**
|
|
54
14
|
* Context Map - Maps file paths to relevant context fragments
|
|
55
15
|
* Uses actual fragment filenames from src/bollharness/scripts/context-fragments/
|
|
56
16
|
*/
|
|
57
|
-
|
|
17
|
+
export const CONTEXT_MAP = {
|
|
58
18
|
'src/agents/': ['truth-source-hierarchy', 'protocol-consumers'],
|
|
59
19
|
'src/documents/': ['truth-source-hierarchy', 'db-shared-structures'],
|
|
60
20
|
'src/network/': ['truth-source-hierarchy', 'protocol-consumers'],
|
|
@@ -71,17 +31,17 @@ exports.CONTEXT_MAP = {
|
|
|
71
31
|
/**
|
|
72
32
|
* Default fragments to inject when no specific match
|
|
73
33
|
*/
|
|
74
|
-
|
|
34
|
+
export const FALLBACK_FRAGMENTS = ['general-dev-principles', 'code-quality'];
|
|
75
35
|
/**
|
|
76
36
|
* Load a context fragment by name
|
|
77
37
|
*/
|
|
78
|
-
function loadFragment(name) {
|
|
38
|
+
export function loadFragment(name) {
|
|
79
39
|
if (!name)
|
|
80
40
|
return '';
|
|
81
|
-
const candidate = path.join(
|
|
41
|
+
const candidate = path.join(FRAGMENTS_DIR, `${name}.md`);
|
|
82
42
|
try {
|
|
83
43
|
const resolved = path.resolve(candidate);
|
|
84
|
-
const fragmentsDirResolved = path.resolve(
|
|
44
|
+
const fragmentsDirResolved = path.resolve(FRAGMENTS_DIR);
|
|
85
45
|
if (!resolved.startsWith(fragmentsDirResolved))
|
|
86
46
|
return '';
|
|
87
47
|
if (fs.existsSync(resolved) && fs.statSync(resolved).isFile()) {
|
|
@@ -95,7 +55,7 @@ function loadFragment(name) {
|
|
|
95
55
|
* Match file path to context fragments
|
|
96
56
|
* Adapted from bollharness's match() function
|
|
97
57
|
*/
|
|
98
|
-
function match(filePath) {
|
|
58
|
+
export function match(filePath) {
|
|
99
59
|
if (!filePath)
|
|
100
60
|
return [];
|
|
101
61
|
if (path.isAbsolute(filePath))
|
|
@@ -105,10 +65,10 @@ function match(filePath) {
|
|
|
105
65
|
return [];
|
|
106
66
|
}
|
|
107
67
|
const matched = [];
|
|
108
|
-
const sortedPatterns = Object.keys(
|
|
68
|
+
const sortedPatterns = Object.keys(CONTEXT_MAP).sort((a, b) => b.length - a.length);
|
|
109
69
|
for (const pattern of sortedPatterns) {
|
|
110
70
|
if (normalized.startsWith(pattern) || normalized.endsWith(pattern)) {
|
|
111
|
-
matched.push(...
|
|
71
|
+
matched.push(...CONTEXT_MAP[pattern]);
|
|
112
72
|
}
|
|
113
73
|
}
|
|
114
74
|
return [...new Set(matched)];
|
|
@@ -116,17 +76,17 @@ function match(filePath) {
|
|
|
116
76
|
/**
|
|
117
77
|
* Get all fragments for a file
|
|
118
78
|
*/
|
|
119
|
-
function getFragments(filePath) {
|
|
79
|
+
export function getFragments(filePath) {
|
|
120
80
|
let fragments = match(filePath);
|
|
121
81
|
if (!fragments.length) {
|
|
122
|
-
fragments = Array.isArray(
|
|
82
|
+
fragments = Array.isArray(FALLBACK_FRAGMENTS) ? FALLBACK_FRAGMENTS : [FALLBACK_FRAGMENTS];
|
|
123
83
|
}
|
|
124
84
|
return fragments;
|
|
125
85
|
}
|
|
126
86
|
/**
|
|
127
87
|
* Load all fragments for a file
|
|
128
88
|
*/
|
|
129
|
-
function loadFragments(filePath) {
|
|
89
|
+
export function loadFragments(filePath) {
|
|
130
90
|
const fragmentNames = getFragments(filePath);
|
|
131
91
|
const contentParts = [];
|
|
132
92
|
for (const name of fragmentNames) {
|
|
@@ -139,12 +99,12 @@ function loadFragments(filePath) {
|
|
|
139
99
|
/**
|
|
140
100
|
* Context Router class for integration with Bolloon
|
|
141
101
|
*/
|
|
142
|
-
class ContextRouter {
|
|
102
|
+
export class ContextRouter {
|
|
143
103
|
fragmentsDir;
|
|
144
104
|
injectedFile;
|
|
145
105
|
injectedTTL = 3600; // 1 hour
|
|
146
106
|
constructor(fragmentsDir) {
|
|
147
|
-
this.fragmentsDir = fragmentsDir ||
|
|
107
|
+
this.fragmentsDir = fragmentsDir || FRAGMENTS_DIR;
|
|
148
108
|
this.injectedFile = path.join('.boll', 'guard', 'injected.json');
|
|
149
109
|
}
|
|
150
110
|
/**
|
|
@@ -177,7 +137,7 @@ class ContextRouter {
|
|
|
177
137
|
*/
|
|
178
138
|
async getJudgmentsForPath(filePath, minConfidence = 0.7) {
|
|
179
139
|
try {
|
|
180
|
-
const { getJudgmentsForPath } = await
|
|
140
|
+
const { getJudgmentsForPath } = await import('./context-router-judgment.js');
|
|
181
141
|
const result = await getJudgmentsForPath(filePath, { minConfidence });
|
|
182
142
|
return result.contextYaml;
|
|
183
143
|
}
|
|
@@ -190,7 +150,7 @@ class ContextRouter {
|
|
|
190
150
|
*/
|
|
191
151
|
async getCoreJudgments(minConfidence = 0.9) {
|
|
192
152
|
try {
|
|
193
|
-
const { getCoreJudgmentsForSession } = await
|
|
153
|
+
const { getCoreJudgmentsForSession } = await import('./context-router-judgment.js');
|
|
194
154
|
return await getCoreJudgmentsForSession(minConfidence);
|
|
195
155
|
}
|
|
196
156
|
catch {
|
|
@@ -202,7 +162,7 @@ class ContextRouter {
|
|
|
202
162
|
*/
|
|
203
163
|
async getJudgmentsForContext(context, minConfidence = 0.7) {
|
|
204
164
|
try {
|
|
205
|
-
const { getJudgmentsForContextRequest } = await
|
|
165
|
+
const { getJudgmentsForContextRequest } = await import('./context-router-judgment.js');
|
|
206
166
|
const result = await getJudgmentsForContextRequest(context, { minConfidence });
|
|
207
167
|
return result.contextYaml;
|
|
208
168
|
}
|
|
@@ -215,7 +175,7 @@ class ContextRouter {
|
|
|
215
175
|
*/
|
|
216
176
|
async generateJudgmentInjection(filePath, gate) {
|
|
217
177
|
try {
|
|
218
|
-
const { generateJudgmentInjection } = await
|
|
178
|
+
const { generateJudgmentInjection } = await import('./context-router-judgment.js');
|
|
219
179
|
return await generateJudgmentInjection(filePath, gate);
|
|
220
180
|
}
|
|
221
181
|
catch {
|
|
@@ -259,12 +219,11 @@ class ContextRouter {
|
|
|
259
219
|
fs.writeFileSync(this.injectedFile, JSON.stringify(data, null, 2), 'utf-8');
|
|
260
220
|
}
|
|
261
221
|
}
|
|
262
|
-
exports.ContextRouter = ContextRouter;
|
|
263
222
|
/**
|
|
264
223
|
* Context fragments content
|
|
265
224
|
* These can be stored in context-fragments/ directory
|
|
266
225
|
*/
|
|
267
|
-
|
|
226
|
+
export const CONTEXT_FRAGMENTS = {
|
|
268
227
|
'general-dev-principles': `# General Development Principles
|
|
269
228
|
|
|
270
229
|
## Core Values
|
|
@@ -581,4 +540,3 @@ Bolloon is a P2P AI document processing system with multi-agent collaboration.
|
|
|
581
540
|
- Coordinate with peers
|
|
582
541
|
- Monitor performance`,
|
|
583
542
|
};
|
|
584
|
-
//# sourceMappingURL=context-router.js.map
|