@bolloon/bolloon-agent 0.1.35 → 0.1.37
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/README.md +1 -1
- package/dist/agents/p2p-chat-tools.js +6 -6
- package/dist/agents/permission-mode.js +115 -0
- package/dist/agents/pi-sdk.js +435 -25
- package/dist/agents/pre-tool-validator.js +194 -0
- package/dist/agents/workflow-pivot-loop.js +113 -12
- package/dist/bollharness-integration/context-router.js +2 -2
- package/dist/bollharness-integration/guard-checker.js +1 -1
- package/dist/bootstrap/bootstrap.js +3 -0
- package/dist/bootstrap/context-collector.js +17 -1
- package/dist/bootstrap/context-hierarchy.js +218 -0
- package/dist/bootstrap/lifecycle-hooks.js +86 -24
- package/dist/bootstrap/project-context.js +10 -3
- package/dist/context-compaction/auto-compact.js +144 -0
- package/dist/context-compaction/budget-gate.js +28 -0
- package/dist/context-compaction/budget-reduce.js +35 -0
- package/dist/context-compaction/context-collapse.js +66 -0
- package/dist/context-compaction/index.js +21 -0
- package/dist/context-compaction/microcompact.js +51 -0
- package/dist/context-compaction/pipeline.js +123 -0
- package/dist/context-compaction/snip.js +45 -0
- package/dist/context-compaction/token-estimator.js +35 -0
- package/dist/context-compaction/types.js +19 -0
- package/dist/heartbeat/HealthMonitor.js +3 -2
- package/dist/index.js +38 -2
- package/dist/llm/llm-judgment-client.js +32 -30
- package/dist/llm/pi-ai.js +103 -16
- package/dist/llm/system-prompt/health.js +129 -0
- package/dist/llm/system-prompt/registry.js +246 -0
- package/dist/llm/system-prompt/strip-hibsml.js +51 -0
- package/dist/llm/tool-manifest/ask_user_input.js +35 -0
- package/dist/llm/tool-manifest/bash.js +23 -0
- package/dist/llm/tool-manifest/create_file.js +24 -0
- package/dist/llm/tool-manifest/fetch_sports_data.js +26 -0
- package/dist/llm/tool-manifest/image_search.js +24 -0
- package/dist/llm/tool-manifest/index.js +69 -0
- package/dist/llm/tool-manifest/mcp.js +43 -0
- package/dist/llm/tool-manifest/message_compose.js +31 -0
- package/dist/llm/tool-manifest/places.js +83 -0
- package/dist/llm/tool-manifest/present_files.js +21 -0
- package/dist/llm/tool-manifest/recipe.js +40 -0
- package/dist/llm/tool-manifest/recommend_apps.js +23 -0
- package/dist/llm/tool-manifest/str_replace.js +27 -0
- package/dist/llm/tool-manifest/types.js +7 -0
- package/dist/llm/tool-manifest/view.js +24 -0
- package/dist/llm/tool-manifest/weather.js +27 -0
- package/dist/llm/tool-manifest/web.js +51 -0
- package/dist/network/p2p-direct.js +23 -0
- package/dist/network/source-intent-broadcaster.js +203 -0
- package/dist/network/source-intent.js +100 -0
- package/dist/pi-ecosystem-judgment/adaptive-scan.js +48 -0
- package/dist/pi-ecosystem-judgment/injection-gate.js +54 -12
- package/dist/pi-ecosystem-judgment/value-injection.js +8 -2
- package/dist/security/context-router-tool.js +1 -1
- package/dist/security/input-scanner.js +223 -0
- package/dist/web/client.js +3089 -4458
- package/dist/web/index.html +58 -67
- package/dist/web/server.js +299 -117
- package/dist/web/style.css +531 -249
- package/dist/web/ui/message-renderer.js +352 -0
- package/dist/web/ui/step-timeline.js +279 -0
- package/package.json +2 -2
- package/.auto-evolve-calls +0 -1
- package/.last-auto-evolve-baseline +0 -1
- package/Bolloon.md +0 -103
- package/dist/agents/constraint-layer.js.map +0 -1
- package/dist/agents/pi-sdk.js.map +0 -1
- package/dist/agents/workflow-engine.js.map +0 -1
- package/dist/bollharness/src/index.js +0 -5
- package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_api_types.js +0 -45
- package/dist/bollharness/src/scripts/checks/check_artifact_link.js +0 -146
- package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +0 -135
- package/dist/bollharness/src/scripts/checks/check_doc_links.js +0 -31
- package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +0 -34
- package/dist/bollharness/src/scripts/checks/check_hook_installed.js +0 -63
- package/dist/bollharness/src/scripts/checks/check_issue_closure.js +0 -41
- package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_security.js +0 -48
- package/dist/bollharness/src/scripts/checks/check_skill_parity.js +0 -6
- package/dist/bollharness/src/scripts/checks/check_versions.js +0 -6
- package/dist/bollharness/src/scripts/checks/finding.js +0 -13
- package/dist/bollharness/src/scripts/checks/next_decision_number.js +0 -20
- package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +0 -6
- package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +0 -8
- package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +0 -8
- package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +0 -8
- package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +0 -8
- package/dist/bollharness/src/scripts/context_router.js +0 -67
- package/dist/bollharness/src/scripts/deploy-guard.js +0 -157
- package/dist/bollharness/src/scripts/guard-feedback.js +0 -192
- package/dist/bollharness/src/scripts/guard_router.js +0 -158
- package/dist/bollharness/src/scripts/hooks/_hook_output.js +0 -6
- package/dist/bollharness/src/scripts/hooks/auto-python3.js +0 -6
- package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +0 -6
- package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +0 -6
- package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +0 -92
- package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +0 -63
- package/dist/bollharness/src/scripts/hooks/inbox-ack.js +0 -6
- package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +0 -6
- package/dist/bollharness/src/scripts/hooks/inbox-validate.js +0 -6
- package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +0 -6
- package/dist/bollharness/src/scripts/hooks/initializer-agent.js +0 -6
- package/dist/bollharness/src/scripts/hooks/loop-detection.js +0 -73
- package/dist/bollharness/src/scripts/hooks/owner-guard.js +0 -6
- package/dist/bollharness/src/scripts/hooks/precompact.js +0 -6
- package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +0 -6
- package/dist/bollharness/src/scripts/hooks/risk-tracker.js +0 -108
- package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +0 -6
- package/dist/bollharness/src/scripts/hooks/session-reflection.js +0 -7
- package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +0 -7
- package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +0 -7
- package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +0 -7
- package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +0 -157
- package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +0 -6
- package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +0 -10
- package/dist/bollharness/src/scripts/install/install-trust-token.js +0 -7
- package/dist/bollharness/src/scripts/install/multi_project_registry.js +0 -9
- package/dist/bollharness/src/scripts/install/phase2_auto.js +0 -21
- package/dist/bollharness/src/scripts/install/pre_commit_installer.js +0 -6
- package/dist/bollharness/src/scripts/install/tier_selector.js +0 -7
- package/dist/bollharness/src/scripts/install/transcript_miner.js +0 -7
- package/dist/bollharness/src/scripts/lib/claim_patterns.js +0 -10
- package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +0 -12
- package/dist/bollharness/src/scripts/sanitize.js +0 -6
- package/dist/bollharness-integration/context-router-judgment.js.map +0 -1
- package/dist/bollharness-integration/context-router.js.map +0 -1
- package/dist/bollharness-integration/gate-state-machine.js.map +0 -1
- package/dist/bollharness-integration/gate-transition-hooks.js.map +0 -1
- package/dist/bollharness-integration/guard-checker.js.map +0 -1
- package/dist/bollharness-integration/index.js.map +0 -1
- package/dist/bollharness-integration/integration.js.map +0 -1
- package/dist/bollharness-integration/llm/pi-ai.d.ts +0 -60
- package/dist/bollharness-integration/pi-ecosystem-colony/index.d.ts +0 -153
- package/dist/bollharness-integration/pi-ecosystem-goals/index.d.ts +0 -136
- package/dist/bollharness-integration/pi-ecosystem-judgment/decision.d.ts +0 -117
- package/dist/bollharness-integration/pi-ecosystem-judgment/distillation.d.ts +0 -78
- package/dist/bollharness-integration/pi-ecosystem-judgment/index.d.ts +0 -139
- package/dist/bollharness-integration/pi-ecosystem-mcp/index.d.ts +0 -127
- package/dist/bollharness-integration/pi-ecosystem-subagents/index.d.ts +0 -95
- package/dist/bollharness-integration/skill-adapter.js.map +0 -1
- package/dist/constraint-runtime/src/_archive_helper.js +0 -9
- package/dist/constraint-runtime/src/agent/coordinator.js +0 -48
- package/dist/constraint-runtime/src/agent/index.js +0 -1
- package/dist/constraint-runtime/src/assistant/index.js +0 -12
- package/dist/constraint-runtime/src/bootstrap/index.js +0 -12
- package/dist/constraint-runtime/src/bootstrap_graph.js +0 -13
- package/dist/constraint-runtime/src/bridge/index.js +0 -12
- package/dist/constraint-runtime/src/buddy/index.js +0 -12
- package/dist/constraint-runtime/src/cli/index.js +0 -12
- package/dist/constraint-runtime/src/command_graph.js +0 -10
- package/dist/constraint-runtime/src/commands.js +0 -60
- package/dist/constraint-runtime/src/components/index.js +0 -12
- package/dist/constraint-runtime/src/constants/index.js +0 -12
- package/dist/constraint-runtime/src/constraint/budget.js +0 -22
- package/dist/constraint-runtime/src/constraint/budget.js.map +0 -1
- package/dist/constraint-runtime/src/constraint/index.js +0 -2
- package/dist/constraint-runtime/src/constraint/permission.js +0 -20
- package/dist/constraint-runtime/src/constraint/permission.js.map +0 -1
- package/dist/constraint-runtime/src/context.js +0 -30
- package/dist/constraint-runtime/src/coordinator/index.js +0 -12
- package/dist/constraint-runtime/src/cost_hook.js +0 -4
- package/dist/constraint-runtime/src/cost_tracker.js +0 -8
- package/dist/constraint-runtime/src/deferred_init.js +0 -10
- package/dist/constraint-runtime/src/direct_modes.js +0 -6
- package/dist/constraint-runtime/src/dynamic-tool-loader.js +0 -85
- package/dist/constraint-runtime/src/entrypoints/index.js +0 -12
- package/dist/constraint-runtime/src/execution_registry.js +0 -44
- package/dist/constraint-runtime/src/history.js +0 -9
- package/dist/constraint-runtime/src/hooks/index.js +0 -12
- package/dist/constraint-runtime/src/index.js +0 -26
- package/dist/constraint-runtime/src/ink.js +0 -4
- package/dist/constraint-runtime/src/keybindings/index.js +0 -12
- package/dist/constraint-runtime/src/memdir/index.js +0 -12
- package/dist/constraint-runtime/src/migrations/index.js +0 -12
- package/dist/constraint-runtime/src/models.js +0 -1
- package/dist/constraint-runtime/src/models.js.map +0 -1
- package/dist/constraint-runtime/src/moreright/index.js +0 -12
- package/dist/constraint-runtime/src/native_ts/index.js +0 -12
- package/dist/constraint-runtime/src/output_styles/index.js +0 -12
- package/dist/constraint-runtime/src/parity_audit.js +0 -12
- package/dist/constraint-runtime/src/plugins/index.js +0 -12
- package/dist/constraint-runtime/src/port_manifest.js +0 -11
- package/dist/constraint-runtime/src/prefetch.js +0 -9
- package/dist/constraint-runtime/src/query.js +0 -1
- package/dist/constraint-runtime/src/remote/index.js +0 -12
- package/dist/constraint-runtime/src/remote_runtime.js +0 -9
- package/dist/constraint-runtime/src/runtime/index.js +0 -1
- package/dist/constraint-runtime/src/runtime/session.js +0 -35
- package/dist/constraint-runtime/src/schemas/index.js +0 -12
- package/dist/constraint-runtime/src/screens/index.js +0 -12
- package/dist/constraint-runtime/src/server/index.js +0 -12
- package/dist/constraint-runtime/src/services/index.js +0 -12
- package/dist/constraint-runtime/src/session_store.js +0 -22
- package/dist/constraint-runtime/src/setup.js +0 -30
- package/dist/constraint-runtime/src/skills/index.js +0 -1
- package/dist/constraint-runtime/src/skills/skill-registry.js +0 -28
- package/dist/constraint-runtime/src/state/index.js +0 -12
- package/dist/constraint-runtime/src/system_init.js +0 -20
- package/dist/constraint-runtime/src/thinking/engine.js +0 -42
- package/dist/constraint-runtime/src/thinking/index.js +0 -1
- package/dist/constraint-runtime/src/tool_pool.js +0 -8
- package/dist/constraint-runtime/src/tools/OpenCLI/execAdapter.js +0 -7
- package/dist/constraint-runtime/src/tools/OpenCLI/listAdapters.js +0 -7
- package/dist/constraint-runtime/src/tools/OpenCLI/runCommand.js +0 -7
- package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +0 -6
- package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +0 -6
- package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +0 -5
- package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +0 -6
- package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +0 -4
- package/dist/constraint-runtime/src/tools/SafeSDK/confirmTransaction.js +0 -6
- package/dist/constraint-runtime/src/tools/SafeSDK/createTransaction.js +0 -8
- package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +0 -6
- package/dist/constraint-runtime/src/tools/SafeSDK/executeTransaction.js +0 -6
- package/dist/constraint-runtime/src/tools/SafeSDK/getBalance.js +0 -6
- package/dist/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.js +0 -6
- package/dist/constraint-runtime/src/tools/SafeSDK/proposeTransaction.js +0 -6
- package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +0 -29
- package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +0 -10
- package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +0 -13
- package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +0 -22
- package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +0 -25
- package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +0 -10
- package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +0 -25
- package/dist/constraint-runtime/src/tools.js +0 -80
- package/dist/constraint-runtime/src/transcript.js +0 -19
- package/dist/constraint-runtime/src/types/index.js +0 -12
- package/dist/constraint-runtime/src/upstream_proxy/index.js +0 -12
- package/dist/constraint-runtime/src/utils/index.js +0 -12
- package/dist/constraint-runtime/src/vim/index.js +0 -12
- package/dist/constraint-runtime/src/voice/index.js +0 -12
- package/dist/constraints/index.js.map +0 -1
- package/dist/documents/reader.js.map +0 -1
- package/dist/llm/config-store.js.map +0 -1
- package/dist/llm/pi-ai.js.map +0 -1
- package/dist/network/agent-network.js.map +0 -1
- package/dist/network/iroh-integration.js.map +0 -1
- package/dist/network/iroh-transport.js.map +0 -1
- package/dist/network/p2p.js.map +0 -1
- package/dist/network/storage/adapters/json-adapter.js.map +0 -1
- package/dist/pi-ecosystem-colony/index.js.map +0 -1
- package/dist/pi-ecosystem-goals/index.js.map +0 -1
- package/dist/pi-ecosystem-judgment/decision.js.map +0 -1
- package/dist/pi-ecosystem-judgment/distillation.js.map +0 -1
- package/dist/pi-ecosystem-judgment/human-value-store.js.map +0 -1
- package/dist/pi-ecosystem-judgment/index.js.map +0 -1
- package/dist/pi-ecosystem-judgment/value-injection.js.map +0 -1
- package/dist/pi-ecosystem-mcp/index.js.map +0 -1
- package/dist/pi-ecosystem-subagents/index.js.map +0 -1
- package/dist/social/ant-colony/AdaptiveHeartbeat.js.map +0 -1
- package/dist/social/ant-colony/PheromoneEngine.js.map +0 -1
- package/dist/social/ant-colony/types.js.map +0 -1
- package/dist/social/channels/ChannelManager.js.map +0 -1
- package/dist/social/channels/DiapChannelBridge.js.map +0 -1
- package/dist/social/channels/InterestMatcher.js.map +0 -1
- package/dist/social/channels/types.js.map +0 -1
- package/dist/social/global-shared-context.js.map +0 -1
- package/dist/social/heartbeat.js.map +0 -1
- package/lefthook.yml +0 -29
- package/scripts/auto-evolve-loop.ts +0 -376
- package/scripts/auto-evolve-oneshot.sh +0 -155
- package/scripts/auto-evolve-snapshot.sh +0 -136
- package/scripts/build-cli.js +0 -216
- package/scripts/build-web.ts +0 -82
- package/scripts/detect-schema-changes.sh +0 -48
- package/scripts/diff-reviewer.ts +0 -159
- package/scripts/postinstall.js +0 -153
- package/scripts/weekly-report.ts +0 -364
- package/src/agents/agent-manifest-protocol.ts +0 -117
- package/src/agents/constraint-layer.ts +0 -309
- package/src/agents/iroh-secret.ts +0 -32
- package/src/agents/p2p-chat-tools.ts +0 -383
- package/src/agents/p2p-document-tools.ts +0 -347
- package/src/agents/pi-sdk.ts +0 -2462
- package/src/agents/protocol.ts +0 -398
- package/src/agents/shell-guard.ts +0 -417
- package/src/agents/shell-tool.ts +0 -103
- package/src/agents/skill-loader.ts +0 -202
- package/src/agents/subagent-manager.ts +0 -553
- package/src/agents/workflow-engine.ts +0 -332
- package/src/agents/workflow-pivot-loop.ts +0 -675
- package/src/bollharness/.sanitize-report.json +0 -13
- package/src/bollharness/CLAUDE.md +0 -73
- package/src/bollharness/LICENSE +0 -21
- package/src/bollharness/README.md +0 -143
- package/src/bollharness/README.zh-CN.md +0 -131
- package/src/bollharness/package.json +0 -20
- package/src/bollharness/reference/SOURCE-COMMIT.txt +0 -3
- package/src/bollharness/reference/boll-reference/scripts/hooks/.sanitize-report.json +0 -12
- package/src/bollharness/reference/boll-reference/scripts/hooks/find-boll-root.sh +0 -27
- package/src/bollharness/reference/boll-reference/scripts/hooks/precompact.sh +0 -57
- package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
- package/src/bollharness/schemas/metrics-jsonl-allowlist.json +0 -67
- package/src/bollharness/scripts/checks/next_decision_number.sh +0 -48
- package/src/bollharness/scripts/ci/count-components.sh +0 -65
- package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
- package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
- package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
- package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
- package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
- package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
- package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
- package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
- package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
- package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
- package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -108
- package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
- package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
- package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
- package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
- package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
- package/src/bollharness/scripts/hooks/find-project-root.sh +0 -47
- package/src/bollharness/scripts/hooks/inbox-poll.sh +0 -78
- package/src/bollharness/scripts/hooks/precompact.sh +0 -56
- package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
- package/src/bollharness/scripts/sync-from-upstream.sh +0 -281
- package/src/bollharness/src/index.ts +0 -5
- package/src/bollharness/src/scripts/checks/check_adr_plan_numbering.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_api_types.ts +0 -52
- package/src/bollharness/src/scripts/checks/check_artifact_link.ts +0 -156
- package/src/bollharness/src/scripts/checks/check_bridge_deps.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_bugfix_binding.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_bugfix_binding_ci.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_doc_file_references.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_doc_freshness.ts +0 -141
- package/src/bollharness/src/scripts/checks/check_doc_links.ts +0 -36
- package/src/bollharness/src/scripts/checks/check_file_existence_claims.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_fragment_integrity.ts +0 -40
- package/src/bollharness/src/scripts/checks/check_hook_installed.ts +0 -70
- package/src/bollharness/src/scripts/checks/check_issue_closure.ts +0 -51
- package/src/bollharness/src/scripts/checks/check_mcp_parity.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_security.ts +0 -54
- package/src/bollharness/src/scripts/checks/check_skill_parity.ts +0 -11
- package/src/bollharness/src/scripts/checks/check_versions.ts +0 -11
- package/src/bollharness/src/scripts/checks/finding.ts +0 -35
- package/src/bollharness/src/scripts/checks/next_decision_number.ts +0 -24
- package/src/bollharness/src/scripts/checks/regenerate_magic_docs.ts +0 -11
- package/src/bollharness/src/scripts/ci/detect_rebaseline_triggers.ts +0 -14
- package/src/bollharness/src/scripts/ci/scan_subprocess_cfg.ts +0 -14
- package/src/bollharness/src/scripts/ci/scan_verify_artifacts.ts +0 -14
- package/src/bollharness/src/scripts/ci/scan_yaml_schema.ts +0 -14
- package/src/bollharness/src/scripts/context_router.ts +0 -76
- package/src/bollharness/src/scripts/deploy-guard.ts +0 -182
- package/src/bollharness/src/scripts/guard-feedback.ts +0 -215
- package/src/bollharness/src/scripts/guard_router.ts +0 -194
- package/src/bollharness/src/scripts/hooks/_hook_output.js +0 -3
- package/src/bollharness/src/scripts/hooks/_hook_output.ts +0 -11
- package/src/bollharness/src/scripts/hooks/auto-python3.ts +0 -10
- package/src/bollharness/src/scripts/hooks/deploy-progress-on-session-end.ts +0 -10
- package/src/bollharness/src/scripts/hooks/failure-analyzer.ts +0 -10
- package/src/bollharness/src/scripts/hooks/gate-judgment-inject.ts +0 -111
- package/src/bollharness/src/scripts/hooks/gate-transition-judgment.ts +0 -74
- package/src/bollharness/src/scripts/hooks/inbox-ack.ts +0 -10
- package/src/bollharness/src/scripts/hooks/inbox-inject-on-start.ts +0 -10
- package/src/bollharness/src/scripts/hooks/inbox-validate.ts +0 -10
- package/src/bollharness/src/scripts/hooks/inbox-write-ledger.ts +0 -10
- package/src/bollharness/src/scripts/hooks/initializer-agent.ts +0 -10
- package/src/bollharness/src/scripts/hooks/loop-detection.ts +0 -83
- package/src/bollharness/src/scripts/hooks/owner-guard.ts +0 -10
- package/src/bollharness/src/scripts/hooks/precompact.ts +0 -10
- package/src/bollharness/src/scripts/hooks/review-agent-gatekeeper.ts +0 -10
- package/src/bollharness/src/scripts/hooks/risk-tracker.ts +0 -121
- package/src/bollharness/src/scripts/hooks/sanitize-on-read.ts +0 -10
- package/src/bollharness/src/scripts/hooks/session-reflection.ts +0 -12
- package/src/bollharness/src/scripts/hooks/session-start-magic-docs.ts +0 -12
- package/src/bollharness/src/scripts/hooks/session-start-reset-risk.ts +0 -12
- package/src/bollharness/src/scripts/hooks/session-start-toolkit-reminder.ts +0 -12
- package/src/bollharness/src/scripts/hooks/stop-evaluator.ts +0 -164
- package/src/bollharness/src/scripts/hooks/tool-call-counter.ts +0 -10
- package/src/bollharness/src/scripts/hooks/trace-analyzer.ts +0 -14
- package/src/bollharness/src/scripts/install/install-trust-token.ts +0 -13
- package/src/bollharness/src/scripts/install/multi_project_registry.ts +0 -13
- package/src/bollharness/src/scripts/install/phase2_auto.ts +0 -28
- package/src/bollharness/src/scripts/install/pre_commit_installer.ts +0 -10
- package/src/bollharness/src/scripts/install/tier_selector.ts +0 -10
- package/src/bollharness/src/scripts/install/transcript_miner.ts +0 -13
- package/src/bollharness/src/scripts/lib/claim_patterns.ts +0 -11
- package/src/bollharness/src/scripts/lib/sanitize_patterns.ts +0 -13
- package/src/bollharness/src/scripts/sanitize.ts +0 -9
- package/src/bollharness/templates/persona/default.json +0 -19
- package/src/bollharness/templates/scaffold/.gitignore.append +0 -16
- package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
- package/src/bollharness-integration/channel-judgment-engine.ts +0 -634
- package/src/bollharness-integration/context-chain-router.ts +0 -474
- package/src/bollharness-integration/context-router-judgment.ts +0 -339
- package/src/bollharness-integration/context-router.ts +0 -583
- package/src/bollharness-integration/gate-state-machine.ts +0 -444
- package/src/bollharness-integration/gate-transition-hooks.ts +0 -137
- package/src/bollharness-integration/guard-checker.ts +0 -451
- package/src/bollharness-integration/index.ts +0 -195
- package/src/bollharness-integration/integration.ts +0 -538
- package/src/bollharness-integration/judgment-prompts.yaml +0 -535
- package/src/bollharness-integration/llm-judgment-engine.ts +0 -712
- package/src/bollharness-integration/skill-adapter.ts +0 -646
- package/src/bootstrap/bootstrap.ts +0 -132
- package/src/bootstrap/context-collector.ts +0 -342
- package/src/bootstrap/lifecycle-hooks.ts +0 -176
- package/src/bootstrap/project-context.ts +0 -163
- package/src/cli/interface.ts +0 -211
- package/src/cli-entry.ts +0 -304
- package/src/constraints/index.ts +0 -6
- package/src/documents/reader.ts +0 -85
- package/src/documents/store.ts +0 -252
- package/src/electron-preload.ts +0 -25
- package/src/electron.ts +0 -200
- package/src/heartbeat/DaemonManager.ts +0 -283
- package/src/heartbeat/HealthMonitor.ts +0 -316
- package/src/heartbeat/StartupVerifier.ts +0 -223
- package/src/heartbeat/Watchdog.ts +0 -208
- package/src/heartbeat/index.ts +0 -109
- package/src/heartbeat/self-improve-bus.ts +0 -110
- package/src/heartbeat/types.ts +0 -82
- package/src/index.ts +0 -1690
- package/src/llm/audio-config-store.ts +0 -246
- package/src/llm/config-store.ts +0 -400
- package/src/llm/llm-judgment-client.ts +0 -470
- package/src/llm/pi-ai.ts +0 -558
- package/src/llm/video-config-store.ts +0 -257
- package/src/network/agent-network.ts +0 -800
- package/src/network/hybrid-messenger.ts +0 -199
- package/src/network/iroh-bootstrap.ts +0 -57
- package/src/network/iroh-discovery.ts +0 -208
- package/src/network/iroh-integration.ts +0 -158
- package/src/network/iroh-transport.ts +0 -637
- package/src/network/known-peers.ts +0 -102
- package/src/network/p2p-direct.ts +0 -240
- package/src/network/p2p-secret.ts +0 -153
- package/src/network/p2p.ts +0 -964
- package/src/network/storage/adapters/json-adapter.ts +0 -454
- package/src/network/storage/index.ts +0 -203
- package/src/network/storage/types.ts +0 -166
- package/src/security/builtin-guards.ts +0 -162
- package/src/security/context-router-tool.ts +0 -122
- package/src/security/react-harness.ts +0 -177
- package/src/security/tool-gate.ts +0 -294
- package/src/social/ant-colony/index.js +0 -19
- package/src/social/channels/ChannelManager.ts +0 -485
- package/src/social/channels/DiapChannelBridge.ts +0 -501
- package/src/social/channels/InterestMatcher.ts +0 -189
- package/src/social/channels/agent-workflow-config.json +0 -214
- package/src/social/channels/agent-workflow-config.yaml +0 -334
- package/src/social/channels/channel-agent-session.ts +0 -407
- package/src/social/channels/channel-heartbeat-agent.ts +0 -622
- package/src/social/channels/diap-doc-parser.ts +0 -282
- package/src/social/channels/harness-workflow-integrator.ts +0 -594
- package/src/social/channels/index.ts +0 -22
- package/src/social/channels/types.ts +0 -115
- package/src/social/global-shared-context.ts +0 -506
- package/src/social/heartbeat.ts +0 -1057
- package/src/social/persona/enhanced-persona.ts +0 -359
- package/src/types.d.ts +0 -12
- package/src/utils/auto-evolve-policy.ts +0 -138
- package/src/utils/auto-update.ts +0 -482
- package/src/utils/clamp.ts +0 -5
- package/src/web/agent-delegate-server.ts +0 -148
- package/src/web/api-config.html +0 -520
- package/src/web/client.js +0 -4898
- package/src/web/components/p2p/P2PModal.tsx +0 -416
- package/src/web/components/p2p/index.ts +0 -566
- package/src/web/components/p2p/index.tsx +0 -297
- package/src/web/components/p2p/p2p-connection.ts +0 -338
- package/src/web/components/p2p/p2p-identity.ts +0 -92
- package/src/web/components/p2p/p2p-manager.ts +0 -147
- package/src/web/components/p2p/p2p-messages.ts +0 -219
- package/src/web/components/p2p/p2p-modal.ts +0 -685
- package/src/web/components/p2p/p2p-store-memory.ts +0 -162
- package/src/web/components/p2p/p2p-tools.ts +0 -315
- package/src/web/components/p2p/types.ts +0 -170
- package/src/web/components/wallet-viem.mjs +0 -118
- package/src/web/design.md +0 -99
- package/src/web/icons/apple-touch-icon.png +0 -0
- package/src/web/icons/favicon-16x16.png +0 -0
- package/src/web/icons/favicon-192x192.png +0 -0
- package/src/web/icons/favicon-32x32.png +0 -0
- package/src/web/icons/favicon-48x48.png +0 -0
- package/src/web/icons/favicon-512x512.png +0 -0
- package/src/web/icons/favicon.icns +0 -0
- package/src/web/icons/favicon.ico +0 -0
- package/src/web/icons/icon.png +0 -0
- package/src/web/icons/image.png +0 -0
- package/src/web/index.html +0 -382
- package/src/web/iroh-delegate-transport.ts +0 -139
- package/src/web/manifest.json +0 -21
- package/src/web/server.ts +0 -5571
- package/src/web/style.css +0 -4455
- package/staging/auto-evolve/clean-001/.review-verdict +0 -9
- package/staging/auto-evolve/clean-001/clean-001.patch +0 -14
- package/staging/auto-evolve/e2e-001/.patch-id +0 -1
- package/staging/auto-evolve/e2e-001/.review-verdict +0 -12
- package/staging/auto-evolve/e2e-001/e2e-001.patch +0 -11
- package/staging/auto-evolve/test-bad/.review-verdict +0 -12
- package/staging/auto-evolve/test-bad/test-bad.patch +0 -11
- package/tsconfig.cli.json +0 -16
- package/tsconfig.electron.json +0 -20
- package/tsconfig.json +0 -18
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# count-components.sh — WP-03 AC 1 primary judge + WP-SEC-1 meta-self-check.
|
|
3
|
-
#
|
|
4
|
-
# Emits three lines that WP-SEC-1 CI asserts against MANIFEST.yaml:
|
|
5
|
-
# command_instances=<N> # count of "command": entries in .boll/settings.json
|
|
6
|
-
# unique_scripts=<N> # deduped scripts referenced by those commands
|
|
7
|
-
# physical_files=<N> # hook + root-script files on disk (L1 registry)
|
|
8
|
-
#
|
|
9
|
-
# Meta-self-check (§13.5 INV-4 activation 5):
|
|
10
|
-
# After set -e, the script verifies (a) its own file still exists, and
|
|
11
|
-
# (b) .github/workflows/ci.yml — if present — still references this script
|
|
12
|
-
# by name. If either check fails, exit 2 with the message
|
|
13
|
-
# "count-components.sh meta-self-check failed: the chokepoint itself is vapor".
|
|
14
|
-
#
|
|
15
|
-
# Run from repo root. Reads .boll/settings.json, scripts/hooks/, scripts/.
|
|
16
|
-
|
|
17
|
-
set -e
|
|
18
|
-
|
|
19
|
-
# --- meta-self-check ---------------------------------------------------------
|
|
20
|
-
SELF_PATH="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")"
|
|
21
|
-
test -f "${SELF_PATH}" || {
|
|
22
|
-
echo "count-components.sh meta-self-check failed: the chokepoint itself is vapor" >&2
|
|
23
|
-
exit 2
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
27
|
-
CI_WORKFLOW="${REPO_ROOT}/.github/workflows/ci.yml"
|
|
28
|
-
if [ -f "${CI_WORKFLOW}" ] && ! grep -q 'count-components.sh' "${CI_WORKFLOW}"; then
|
|
29
|
-
echo "count-components.sh meta-self-check failed: the chokepoint itself is vapor" >&2
|
|
30
|
-
exit 2
|
|
31
|
-
fi
|
|
32
|
-
# -----------------------------------------------------------------------------
|
|
33
|
-
|
|
34
|
-
cd "${REPO_ROOT}"
|
|
35
|
-
|
|
36
|
-
# command_instances: every "command" key in settings.json's hooks[]
|
|
37
|
-
# Count the total commands across all hook stages.
|
|
38
|
-
if command -v jq >/dev/null 2>&1; then
|
|
39
|
-
CMD_INSTANCES=$(jq '[
|
|
40
|
-
.hooks.PreToolUse[]?.hooks[]?,
|
|
41
|
-
.hooks.PostToolUse[]?.hooks[]?,
|
|
42
|
-
.hooks.PreCompact[]?.hooks[]?,
|
|
43
|
-
.hooks.SessionStart[]?.hooks[]?,
|
|
44
|
-
.hooks.SessionEnd[]?.hooks[]?,
|
|
45
|
-
.hooks.Stop[]?.hooks[]?,
|
|
46
|
-
.hooks.PostToolUseFailure[]?.hooks[]?
|
|
47
|
-
] | length' .boll/settings.json)
|
|
48
|
-
else
|
|
49
|
-
# Fallback: line-grep. Less precise but works without jq.
|
|
50
|
-
CMD_INSTANCES=$(grep -c '"command":' .boll/settings.json || echo 0)
|
|
51
|
-
fi
|
|
52
|
-
|
|
53
|
-
# unique_scripts: distinct scripts referenced by those commands.
|
|
54
|
-
# Extract the last `npx ts-node scripts/...` or `bash scripts/...` token and dedupe.
|
|
55
|
-
UNIQUE_SCRIPTS=$(grep -oE '(npx ts-node|bash) scripts/[^ "]+' .boll/settings.json \
|
|
56
|
-
| awk '{print $2}' | sort -u | wc -l | tr -d ' ')
|
|
57
|
-
|
|
58
|
-
# physical_files: hooks dir + 2 root scripts
|
|
59
|
-
HOOKS_COUNT=$(ls scripts/hooks/*.ts scripts/hooks/*.sh scripts/hooks/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
60
|
-
ROOT_COUNT=$(ls scripts/guard-feedback.ts scripts/deploy-guard.ts 2>/dev/null | wc -l | tr -d ' ')
|
|
61
|
-
PHYSICAL=$((HOOKS_COUNT + ROOT_COUNT))
|
|
62
|
-
|
|
63
|
-
echo "command_instances=${CMD_INSTANCES}"
|
|
64
|
-
echo "unique_scripts=${UNIQUE_SCRIPTS}"
|
|
65
|
-
echo "physical_files=${PHYSICAL}"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
## 代码变更与 Artifact 关联
|
|
2
|
-
|
|
3
|
-
你正在编辑决策文档。代码变更必须伴随相应的 artifact:
|
|
4
|
-
|
|
5
|
-
| 变更类型 | 必须伴随的 artifact |
|
|
6
|
-
|----------|---------------------|
|
|
7
|
-
| 新功能 | ADR 或 PLAN 文档 |
|
|
8
|
-
| Bug 修复 | Issue 文档(含根因分析) |
|
|
9
|
-
| 架构变更 | ADR + 影响范围分析 |
|
|
10
|
-
| 契约变更 | 消费方清单 + 迁移说明 |
|
|
11
|
-
|
|
12
|
-
**行为约束**: 不得提交无 artifact 关联的重大变更。
|
|
13
|
-
目标态文档不得使用"已完成"语气描述尚未实现的功能(承诺 vs 现实漂移)。
|
|
14
|
-
PLAN 文档中的 WP 状态必须反映实际代码状态,不是计划状态。
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
## 认证消费方与安全约定
|
|
2
|
-
|
|
3
|
-
你正在编辑认证相关代码。以下是认证体系的消费方:
|
|
4
|
-
|
|
5
|
-
| 消费方 | 认证方式 | 入口文件 |
|
|
6
|
-
|--------|----------|----------|
|
|
7
|
-
| Protocol API | session token (Bearer) | `backend/product/auth/middleware.py` |
|
|
8
|
-
| MCP Server (Python) | session token | `mcp-server/boll_mcp/client.py` |
|
|
9
|
-
| MCP Server (Node) | session token | `mcp-server-node/src/client.ts` |
|
|
10
|
-
| SecondMe OAuth | client_id + secret | `backend/product/auth/secondme.py` |
|
|
11
|
-
| Bridge API | bridge API key | `backend/product/routes/bridge.py` |
|
|
12
|
-
| Admin API | admin key | `backend/product/routes/admin.py` |
|
|
13
|
-
| WebSocket | ticket auth | `backend/product/ws/` |
|
|
14
|
-
|
|
15
|
-
**行为约束**: 前端不得暴露任何 API Key。SecondMe OAuth 的 client_secret 不得硬编码。
|
|
16
|
-
修改认证中间件时,必须确认所有消费方的认证链路不受影响。
|
|
17
|
-
session token 必须有 TTL,不得发放永不过期的 token。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
## Bridge 宪法(ADR-026)
|
|
2
|
-
|
|
3
|
-
你正在编辑 Bridge 相关代码。以下 5 条规则约束所有 bridge 改动:
|
|
4
|
-
|
|
5
|
-
1. **Worker 不拥有业务解释权,只上报执行事实。** 如果代码需要理解输出内容的含义,它写错了地方。
|
|
6
|
-
2. **同一个语义只允许有一个定义。** 文件名模式、artifact 类型、event 含义,只能在一个地方定义。
|
|
7
|
-
3. **跑通了就发结果,没跑通就报 failed。** 不做 partial_success 抢救、不生成 placeholder。
|
|
8
|
-
4. **生产不能是第一个集成环境。** 本地必须能用 fake CLI + 真实 HTTP backend 跑完整链。
|
|
9
|
-
5. **新增观测维度或 event 类型,只改 server,不改 worker。**
|
|
10
|
-
|
|
11
|
-
三层职责:`boll-run` 定义成功产物契约 -> `worker` 执行和上报事实 -> `server` 解释事实并生成产品语义。
|
|
12
|
-
|
|
13
|
-
**行为约束**: 你不得在 worker 侧添加任何需要理解业务语义的逻辑。所有解释权必须归 server。
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
## 分布式协商约定
|
|
2
|
-
|
|
3
|
-
你正在编辑 catalyst 相关代码。端侧与平台侧职责严格分离:
|
|
4
|
-
|
|
5
|
-
**平台侧(cloud catalyst)**:
|
|
6
|
-
- 协调协商轮次、管理 deadline、聚合响应
|
|
7
|
-
- 拥有全局视角,决定何时进入下一轮或结束
|
|
8
|
-
|
|
9
|
-
**端侧(bridge worker)**:
|
|
10
|
-
- 执行具体的 LLM 调用、生成响应
|
|
11
|
-
- 只上报执行事实,不判断协商是否成功
|
|
12
|
-
|
|
13
|
-
**BYOK 模式**:用户绑定自己的 API Key(Anthropic / MiniMax / 自定义 base_url)。
|
|
14
|
-
平台侧使用用户 key 调用 LLM,不存储 key 明文(仅 session 级绑定)。
|
|
15
|
-
|
|
16
|
-
**行为约束**: 不得在 worker 侧添加协商策略逻辑(何时结束、何时重试)。
|
|
17
|
-
catalyst coordinator 的状态机变更必须伴随测试覆盖。
|
|
18
|
-
BYOK base_url 必须经过校验,不得接受任意 URL(SSRF 防护)。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
## Issue 闭环检查清单
|
|
2
|
-
|
|
3
|
-
你正在编辑 issue 文档。关闭 issue 前必须逐条确认:
|
|
4
|
-
|
|
5
|
-
1. **prevention_status 是否 closed?** 如果是 open,说明复发路径未关闭,不得标 Fixed
|
|
6
|
-
2. **mechanism_layer 是否声明?** 必须指定防护机制:guard / test / type / convention
|
|
7
|
-
3. **有无具体的防护措施描述?** 不能只写"已修复",必须说明如何防止复发
|
|
8
|
-
4. **Guard > Memory 原则**:如果防护靠"记住规则",则 prevention 不算 closed
|
|
9
|
-
|
|
10
|
-
**行为约束**: 你不得在 prevention_status 为 open 的情况下将 status 改为 fixed。
|
|
11
|
-
如果根因分析表明无法机械化防护,必须显式标注 `mechanism_layer: convention` 并说明原因。
|
|
12
|
-
|
|
13
|
-
检查顺序:根因 -> 复发路径 -> 防护机制 -> 标记状态。不得跳过中间步骤。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## 契约 vs 实现 + 消费方追踪
|
|
2
|
-
|
|
3
|
-
你正在编辑 API 路由代码。区分契约和实现是防止漂移的核心:
|
|
4
|
-
|
|
5
|
-
**契约**(改了必须通知消费方):
|
|
6
|
-
- URL 路径、HTTP method、请求/响应 JSON schema
|
|
7
|
-
- 环境变量名、配置 key
|
|
8
|
-
- 事件类型枚举、artifact 类型枚举
|
|
9
|
-
|
|
10
|
-
**实现**(内部可自由调整):
|
|
11
|
-
- 函数签名、内部数据结构、算法细节
|
|
12
|
-
|
|
13
|
-
**行为约束**: 修改契约时,必须先列出所有消费方,逐一确认兼容性。
|
|
14
|
-
消费方列表不靠记忆维护——必须 grep 代码确认谁在调用。
|
|
15
|
-
新增 API 字段必须是 optional;删除字段必须走废弃流程,不得直接移除。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## DB 共享结构与迁移约定
|
|
2
|
-
|
|
3
|
-
你正在编辑数据库相关代码。以下表被多个模块共享:
|
|
4
|
-
|
|
5
|
-
| 表 | 主要写入方 | 读取消费方 |
|
|
6
|
-
|----|-----------|-----------|
|
|
7
|
-
| users | auth 模块 | protocol, dashboard, admin |
|
|
8
|
-
| demands | formulation | matching, runs, dashboard |
|
|
9
|
-
| runs | catalyst, bridge | status API, result API, admin, WS |
|
|
10
|
-
| run_events | bridge, catalyst | 6 个消费方(见 run-events-consumers) |
|
|
11
|
-
| agents | protocol | discovery, federation, MCP |
|
|
12
|
-
|
|
13
|
-
**行为约束**: SQLAlchemy `create_all()` 不会 ALTER 已有表——新增列必须用迁移脚本。
|
|
14
|
-
修改表结构时,必须检查所有读取消费方的查询是否兼容。
|
|
15
|
-
不得在不同模块中对同一表定义不同的 ORM model(一个表一个 model 定义)。
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
## Fixed 三层定义
|
|
2
|
-
|
|
3
|
-
你正在编辑 issue 文档。"Fixed" 不等于"症状消失":
|
|
4
|
-
|
|
5
|
-
| 层级 | 含义 | 标准 | 标记 |
|
|
6
|
-
|------|------|------|------|
|
|
7
|
-
| Level 1 | 症状消失 | 生产不报错了 | Runtime Fixed |
|
|
8
|
-
| Level 2 | 复发路径关闭 | 有机制防止同类问题再次发生 | **Fixed**(最低标准) |
|
|
9
|
-
| Level 3 | 机制消灭 | 有 guard 自动检测 | Fixed + Guarded |
|
|
10
|
-
|
|
11
|
-
issue doc YAML frontmatter 必须包含:
|
|
12
|
-
```yaml
|
|
13
|
-
status: fixed|open|wont_fix
|
|
14
|
-
prevention_status: open|closed|not_applicable
|
|
15
|
-
mechanism_layer: guard|test|type|convention
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**行为约束**: 如果标 `status: fixed` 但 `prevention_status` 是 `open`,则不合格。必须先分析复发路径。
|
|
19
|
-
Guard: `check_issue_closure.py`
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
## 通用开发原则
|
|
2
|
-
|
|
3
|
-
以下原则适用于所有代码变更:
|
|
4
|
-
|
|
5
|
-
1. **Guard > Memory**: 如果一件事靠"记住规则"维护,它一定会出错。能机械化检测的,必须写 guard。
|
|
6
|
-
2. **一个事实一个定义**: 同一信息不得在多处重复定义。其余位置必须自动派生或引用。
|
|
7
|
-
3. **验证看最后一公里**: "服务启动了"不等于"功能正常"。验证必须到达用户可观测的终点。
|
|
8
|
-
4. **先分层再动手**: 区分 policy / contract / implementation 三层,搞清楚问题在哪层再修。
|
|
9
|
-
|
|
10
|
-
**行为约束**: 不得引入新的重复定义。如果发现已有重复,应在本次变更中收口为单一来源。
|
|
11
|
-
不得跳过测试直接部署。不得用 `--no-verify` 绕过 pre-commit hook。
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
## MCP 双端一致性约定
|
|
2
|
-
|
|
3
|
-
你正在编辑 MCP 相关代码。Python 和 Node 两端必须保持一致:
|
|
4
|
-
|
|
5
|
-
- **工具数量**:两端都是 54 个 @mcp.tool() / registerTool()
|
|
6
|
-
- **工具名称**:必须完全相同(boll_xxx)
|
|
7
|
-
- **行为语义**:相同输入必须产生相同输出结构
|
|
8
|
-
- **版本号**:pyproject.toml 和 package.json 版本必须一致
|
|
9
|
-
|
|
10
|
-
对应文件映射:
|
|
11
|
-
- Python: `mcp-server/boll_mcp/server.py` <-> Node: `mcp-server-node/src/index.ts`
|
|
12
|
-
- Python: `mcp-server/boll_mcp/client.py` <-> Node: `mcp-server-node/src/client.ts`
|
|
13
|
-
- Python: `mcp-server/boll_mcp/config.py` <-> Node: `mcp-server-node/src/config.ts`
|
|
14
|
-
|
|
15
|
-
**行为约束**: 改了一端后,你必须检查另一端是否需要同步。不得单独修改一端的工具签名或行为。
|
|
16
|
-
Guard: `check_mcp_parity.py`
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "src/agents/**"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Pi Agent 操作与工具定义
|
|
7
|
-
|
|
8
|
-
> 来源: pi-sdk.ts TOOL_DEFINITIONS + getDefaultResponse
|
|
9
|
-
> 关联: src/agents/constraint-layer.ts(工具注册)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 核心操作
|
|
14
|
-
|
|
15
|
-
| 操作 | 描述 | 方法签名 |
|
|
16
|
-
|------|------|----------|
|
|
17
|
-
| 读取文档 | 读取并分析文档内容,支持 .txt, .md, .pdf, .docx | `read_document(path)` |
|
|
18
|
-
| 总结文档 | 总结文档内容,可选提供上下文 | `summarize_document(path, context?)` |
|
|
19
|
-
| 改进文档 | 改进文档,需提供文件路径和改进要求 | `improve_document(path, requirements)` |
|
|
20
|
-
| 查看节点 | 查看已连接的对等节点 | `list_peers()` |
|
|
21
|
-
| 发送消息 | 向指定对等节点发送消息 | `send_message(peer_id, message)` |
|
|
22
|
-
| 广播消息 | 广播消息到所有节点 | `broadcast_message(message)` |
|
|
23
|
-
| 查看身份 | 查看当前智能体身份 | `get_identity()` |
|
|
24
|
-
| 设置 Persona | 更新智能体 persona 信息 | `set_persona(persona_json)` |
|
|
25
|
-
| 执行工作流 | 执行预定义工作流 | `run_workflow(steps)` |
|
|
26
|
-
| 查看日志 | 查看最近操作日志 | `get_operation_logs()` |
|
|
27
|
-
| 列出文件 | 列出目录中的文件 | `list_files(path?)` |
|
|
28
|
-
| 读取目录 | 读取目录内容,返回文件列表和目录结构 | `read_directory(path?)` |
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## 自主循环机制
|
|
33
|
-
|
|
34
|
-
智能体基于 ReAct (Reasoning + Acting) 模式工作,具备自动评估质量和错误恢复能力:
|
|
35
|
-
|
|
36
|
-
### 质量评估与自动改进
|
|
37
|
-
- **质量阈值**: `0.6` (6/10)
|
|
38
|
-
- **最大改进次数**: `3` 次
|
|
39
|
-
- 当回复或工具执行结果质量低于阈值时,自动触发改进循环
|
|
40
|
-
- 改进时在 system prompt 中添加质量提示,让 LLM 重新生成更优回答
|
|
41
|
-
|
|
42
|
-
### 错误处理与自动恢复
|
|
43
|
-
- **连续错误上限**: `3` 次
|
|
44
|
-
- 工具执行失败时增加错误计数
|
|
45
|
-
- 达到连续错误上限时,添加错误上下文让 LLM 换一种方式处理
|
|
46
|
-
- 工具执行异常会被捕获并记录,不中断循环
|
|
47
|
-
|
|
48
|
-
### 循环继续条件
|
|
49
|
-
当 LLM 返回不是 tool call 格式时,判断是否需要继续循环:
|
|
50
|
-
1. 包含错误/失败信息(不存在、找不到、错误、failed 等)
|
|
51
|
-
2. 回复太短(<100 字符且无换行),可能是中间回复
|
|
52
|
-
3. 包含问号,可能是需要更多信息
|
|
53
|
-
4. 不包含明确结论(完成、结果、答案等)
|
|
54
|
-
|
|
55
|
-
满足以上任一条件且循环未达上限,则继续处理。
|
|
56
|
-
|
|
57
|
-
### 重试机制
|
|
58
|
-
- 工具调用失败时重试(最多 3 次)
|
|
59
|
-
- 汇报发送失败时重试(最多 2 次,指数退避)
|
|
60
|
-
- 失败的汇报会进入待重试队列
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## 示例请求格式
|
|
65
|
-
|
|
66
|
-
### 文档操作
|
|
67
|
-
```
|
|
68
|
-
"读取 README.md"
|
|
69
|
-
"总结一下 src/index.ts"
|
|
70
|
-
"改进文档,按照更清晰的错误处理要求"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### P2P 网络操作
|
|
74
|
-
```
|
|
75
|
-
"查看当前连接了哪些节点"
|
|
76
|
-
"向 QmABC... 发送测试消息"
|
|
77
|
-
"广播消息:系统将在 10 分钟后维护"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 身份与状态
|
|
81
|
-
```
|
|
82
|
-
"查看身份"
|
|
83
|
-
"查看日志"
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 工具注册位置
|
|
89
|
-
|
|
90
|
-
工具在 `pi-sdk.ts` 的 `PiAgent` 类构造函数中注册,映射到:
|
|
91
|
-
- `src/agents/constraint-layer.ts` — ConstraintLayer 基类提供的基础能力
|
|
92
|
-
- `src/network/p2p.ts` — P2P 网络模块
|
|
93
|
-
- `src/documents/reader.ts` — 文档读取模块
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## 自然语言指令映射
|
|
98
|
-
|
|
99
|
-
| 自然语言指令 | 解析关键词 | 执行方法 |
|
|
100
|
-
|-------------|-----------|----------|
|
|
101
|
-
| 读取 X | `读取`、`read_document`、`read` | `readDocument(path)` |
|
|
102
|
-
| 总结文档 | `总结`、`summarize_document` | `summarizeDocument(path, context?)` |
|
|
103
|
-
| 改进文档 | `改进`、`improve_document` | `improveDocument(request)` |
|
|
104
|
-
| 查看节点 | `查看节点`、`list_peers` | `listPeers()` |
|
|
105
|
-
| 发送消息 | `向 X 发送消息`、`send_message` | `sendMessage(peerId, message)` |
|
|
106
|
-
| 广播消息 | `广播消息`、`broadcast_message` | `broadcast(message)` |
|
|
107
|
-
| 查看身份 | `查看身份`、`get_identity` | `getIdentity()` |
|
|
108
|
-
| 查看日志 | `查看日志`、`get_operation_logs` | `getOperationLogs()` |
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## Protocol API 消费方
|
|
2
|
-
|
|
3
|
-
你正在编辑 /protocol/ 相关代码。以下是 Protocol API 的消费方列表:
|
|
4
|
-
|
|
5
|
-
| 消费方 | 入口 | 认证方式 |
|
|
6
|
-
|--------|------|----------|
|
|
7
|
-
| MCP Server (Python) | `mcp-server/boll_mcp/client.py` | session token |
|
|
8
|
-
| MCP Server (Node) | `mcp-server-node/src/client.ts` | session token |
|
|
9
|
-
| 前端 website | `website/` fetch 调用 | session token (cookie) |
|
|
10
|
-
| Bridge Agent | `bridge_agent/` | bridge API key |
|
|
11
|
-
| 外部 A2A 调用方 | federation endpoint | DID 签名 |
|
|
12
|
-
|
|
13
|
-
**行为约束**: 修改任何 /protocol/ 路由的请求/响应结构时,必须检查上述所有消费方是否兼容。
|
|
14
|
-
不得在不更新消费方的情况下修改返回字段名或删除字段。
|
|
15
|
-
新增字段必须是 optional,避免破坏现有消费方。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## run_events 消费方(共享结构)
|
|
2
|
-
|
|
3
|
-
你正在编辑 run_events 相关代码。此表有 6 个消费方,各自角色不同:
|
|
4
|
-
|
|
5
|
-
| 消费方 | 读/写 | 用途 | 关键依赖 |
|
|
6
|
-
|--------|-------|------|----------|
|
|
7
|
-
| Bridge events 路由 | 写 | 接收 worker 上报的事件 | event_type 枚举 |
|
|
8
|
-
| Catalyst coordinator | 写 | 记录协商轮次事件 | round_number, role |
|
|
9
|
-
| Run status API | 读 | 前端展示进度 | 按 run_id 查询 + 时间排序 |
|
|
10
|
-
| Run result API | 读 | 提取最终产物 | artifact 类型过滤 |
|
|
11
|
-
| Admin event log | 读 | 运维审计 | 全字段 |
|
|
12
|
-
| WebSocket hub | 读 | 实时推送 | 增量查询(last_id) |
|
|
13
|
-
|
|
14
|
-
**行为约束**: 修改 run_events 表结构或写入逻辑时,必须逐一确认 6 个消费方不受影响。
|
|
15
|
-
不得假设"只有一个地方读"。读模型截断会导致长 run 状态不正确。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
## 场景保真度分级
|
|
2
|
-
|
|
3
|
-
你正在编辑场景相关代码。每个场景有明确的保真度等级:
|
|
4
|
-
|
|
5
|
-
| 等级 | 含义 | 数据来源 | 示例 |
|
|
6
|
-
|------|------|----------|------|
|
|
7
|
-
| **real** | 接真实 Protocol API | 生产后端 | startup-hub |
|
|
8
|
-
| **demo** | 有独立后端但非协议链路 | demo 专用 API | ai-gig-market |
|
|
9
|
-
| **shell** | 纯前端展示,无后端 | 静态/mock 数据 | 其他展示页 |
|
|
10
|
-
|
|
11
|
-
**行为约束**: 文档和代码中声明的保真度必须与运行时实际行为一致。
|
|
12
|
-
不得在文档中声称"真实协议"而代码跑 demo fallback(承诺 vs 现实漂移)。
|
|
13
|
-
修改场景接入方式时,必须同步更新场景配置中的 fidelity 字段。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## 真相源优先级
|
|
2
|
-
|
|
3
|
-
你正在编辑核心文档。boll 的真相源有明确的优先级:
|
|
4
|
-
|
|
5
|
-
| 优先级 | 来源 | 说明 |
|
|
6
|
-
|--------|------|------|
|
|
7
|
-
| 1 | 运行中的代码 | 实际行为是最终真相 |
|
|
8
|
-
| 2 | 数据库 schema + 测试 | 可执行的约束 |
|
|
9
|
-
| 3 | ADR / TECH / PLAN 文档 | 设计决策记录 |
|
|
10
|
-
| 4 | CLAUDE.md | 开发指导(派生自上层) |
|
|
11
|
-
| 5 | MEMORY.md | 会话间记忆(最易过期) |
|
|
12
|
-
|
|
13
|
-
**行为约束**: 当不同层级的信息冲突时,必须以高优先级来源为准并修正低优先级来源。
|
|
14
|
-
CLAUDE.md 中的信息必须可以从代码或 ADR 中验证——不得包含无法溯源的断言。
|
|
15
|
-
修改真相源文件时,必须检查下游是否需要同步更新。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## 两套语言体系
|
|
2
|
-
|
|
3
|
-
你正在编辑面向用户的代码。协议术语和用户语言必须严格分离:
|
|
4
|
-
|
|
5
|
-
**协议层**(仅开发者/文档可见):
|
|
6
|
-
formulation, crystallization, catalyst, nomination, intent field, operator, resonance
|
|
7
|
-
|
|
8
|
-
**用户层**(UI/文案/帮助文本):
|
|
9
|
-
需求澄清, 多方协商, 协调, 推荐, 能力匹配
|
|
10
|
-
|
|
11
|
-
**行为约束**: 前端 UI、用户提示、错误消息中不得出现协议内部术语。
|
|
12
|
-
用户永远不需要知道"结晶"是什么——他们只知道"多方协商"。
|
|
13
|
-
比喻:酒店管家不会跟客人说"我现在执行 housekeeping protocol"。
|
|
14
|
-
|
|
15
|
-
禁词(用户可见文本): "播种意图"、"共振"、"场域"、"结晶"等诗意表达。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
## 版本号来源清单
|
|
2
|
-
|
|
3
|
-
你正在编辑版本相关文件。一个事实只允许有一个定义:
|
|
4
|
-
|
|
5
|
-
| 版本号 | 权威来源 | 必须同步的位置 |
|
|
6
|
-
|--------|----------|----------------|
|
|
7
|
-
| MCP Python | `mcp-server/pyproject.toml` | CLAUDE.md 引用 |
|
|
8
|
-
| MCP Node | `mcp-server-node/package.json` | 必须与 Python 版本一致 |
|
|
9
|
-
| 后端 API | `backend/product/protocol/service.py` | /protocol 元数据返回 |
|
|
10
|
-
| 前端 | `website/package.json` | 部署产物 BUILD_ID |
|
|
11
|
-
|
|
12
|
-
**行为约束**: 修改任何版本号时,必须同步所有关联位置。
|
|
13
|
-
Python MCP 和 Node MCP 版本号必须完全一致,不得出现 0.x.y vs 0.x.z 的漂移。
|
|
14
|
-
"一个事实一个定义"——如果两个地方都写死版本号,其中一个必须是自动派生的。
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Walks up from $PWD to find the bollharness-installed project root.
|
|
3
|
-
#
|
|
4
|
-
# Anchor priority:
|
|
5
|
-
# 1. .bollharness/MANIFEST.yaml (primary — declared by installer)
|
|
6
|
-
# 2. CLAUDE.md (fallback — older projects or pre-install)
|
|
7
|
-
#
|
|
8
|
-
# Why not scripts/guard-feedback.ts like the old boll-specific script?
|
|
9
|
-
# Because that created a circular dependency: guard-feedback.ts was both
|
|
10
|
-
# the anchor AND the target invoked by the hook. Projects that don't ship
|
|
11
|
-
# guard-feedback.ts (because they disabled it via issue-adapter.yaml) would
|
|
12
|
-
# fail to locate their own root. The MANIFEST anchor is independent of any
|
|
13
|
-
# specific hook installation.
|
|
14
|
-
#
|
|
15
|
-
# Prints absolute project root to stdout. Exits 1 if not found.
|
|
16
|
-
set -e
|
|
17
|
-
d="${PWD}"
|
|
18
|
-
while [ "$d" != "/" ] && [ -n "$d" ]; do
|
|
19
|
-
if [ -f "$d/.bollharness/MANIFEST.yaml" ]; then
|
|
20
|
-
echo "$d"
|
|
21
|
-
exit 0
|
|
22
|
-
fi
|
|
23
|
-
d="$(dirname "$d")"
|
|
24
|
-
done
|
|
25
|
-
|
|
26
|
-
# Fallback 1: walk up again looking for CLAUDE.md alone
|
|
27
|
-
d="${PWD}"
|
|
28
|
-
while [ "$d" != "/" ] && [ -n "$d" ]; do
|
|
29
|
-
if [ -f "$d/CLAUDE.md" ]; then
|
|
30
|
-
echo "$d"
|
|
31
|
-
exit 0
|
|
32
|
-
fi
|
|
33
|
-
d="$(dirname "$d")"
|
|
34
|
-
done
|
|
35
|
-
|
|
36
|
-
# Fallback 2: CLAUDE_PROJECT_DIR env var set by Claude Code
|
|
37
|
-
if [ -n "${CLAUDE_PROJECT_DIR:-}" ]; then
|
|
38
|
-
if [ -f "${CLAUDE_PROJECT_DIR}/.bollharness/MANIFEST.yaml" ] || [ -f "${CLAUDE_PROJECT_DIR}/CLAUDE.md" ]; then
|
|
39
|
-
echo "${CLAUDE_PROJECT_DIR}"
|
|
40
|
-
exit 0
|
|
41
|
-
fi
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
# Fail-closed: no hardcoded machine-specific path. If you reach here the
|
|
45
|
-
# project is either not yet installed or CLAUDE_PROJECT_DIR is unset —
|
|
46
|
-
# both cases should surface as an error to the hook caller.
|
|
47
|
-
exit 1
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# H9 inbox poll:状态检查 + 下次 wake 间隔推荐(PLAN-H9 §4.5 WP-05)。
|
|
3
|
-
#
|
|
4
|
-
# Spec letter 工程修订(disclosure):
|
|
5
|
-
# PLAN-H9 §4.5 原文写"shell 脚本 ... 内部调用 ScheduleWakeup MCP"。落地阶段
|
|
6
|
-
# 发现 ScheduleWakeup 是 CC agent loop 内部 tool API,shell 进程没有合法 RPC
|
|
7
|
-
# 入口直接调用——必须由 CC agent(主窗口)调用。本脚本因此切分为:
|
|
8
|
-
# [shell 层] inbox-poll.sh = 状态检查 + 推荐间隔 → stdout 状态
|
|
9
|
-
# [agent 层] 主 agent 读 stdout 后自行决定下一次 ScheduleWakeup 时机
|
|
10
|
-
# 切分边界已在 PLAN-H9 §4.5 + §11 letter 对齐时点明,记入 ADR-H9 修订建议。
|
|
11
|
-
#
|
|
12
|
-
# 输出:纯 KV 文本(不是 hook IO JSON),主 agent 解读后调度。
|
|
13
|
-
# unread_count=<int>
|
|
14
|
-
# p0_exists=<true|false>
|
|
15
|
-
# oldest_unread_age_seconds=<int|0>
|
|
16
|
-
# recommended_wake_seconds=<int>
|
|
17
|
-
#
|
|
18
|
-
# Hook IO 红线:本文件**不是** CC hook(不在 .boll/settings.json 注册),
|
|
19
|
-
# 是主 agent 用 Bash tool 主动调用的检查脚本。无 print(json.dumps) / echo
|
|
20
|
-
# permissionDecision / echo systemMessage 等 banned form——由 PLAN-H9 §8 显式
|
|
21
|
-
# grep DoD 物理校验。
|
|
22
|
-
|
|
23
|
-
set -euo pipefail
|
|
24
|
-
|
|
25
|
-
# 主仓 root 检测(与 find-project-root.sh 语义对齐)
|
|
26
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
28
|
-
INBOX_ROOT="${REPO_ROOT}/.boll/inbox"
|
|
29
|
-
MAIN_UNREAD="${INBOX_ROOT}/main/unread"
|
|
30
|
-
|
|
31
|
-
# 默认间隔常量(见 ADR-H9 §6.3 ScheduleWakeup 边界)
|
|
32
|
-
NORMAL_WAKE_SECONDS="${INBOX_POLL_NORMAL_WAKE:-1200}" # 20 分钟(cache 友好)
|
|
33
|
-
P0_WAKE_SECONDS="${INBOX_POLL_P0_WAKE:-300}" # 5 分钟(CC ScheduleWakeup 最短允许下限)
|
|
34
|
-
|
|
35
|
-
# unread 计数
|
|
36
|
-
unread_count=0
|
|
37
|
-
if [ -d "${MAIN_UNREAD}" ]; then
|
|
38
|
-
unread_count="$(find "${MAIN_UNREAD}" -maxdepth 1 -type f -name '*.md' 2>/dev/null | wc -l | tr -d ' ')"
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
# 是否存在 priority=P0 消息
|
|
42
|
-
p0_exists=false
|
|
43
|
-
if [ "${unread_count}" -gt 0 ]; then
|
|
44
|
-
if grep -lE '^priority:[[:space:]]*P0[[:space:]]*$' "${MAIN_UNREAD}"/*.md 2>/dev/null | head -1 | grep -q .; then
|
|
45
|
-
p0_exists=true
|
|
46
|
-
fi
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
# 最旧 unread 的 mtime delta(秒)
|
|
50
|
-
oldest_age=0
|
|
51
|
-
if [ "${unread_count}" -gt 0 ]; then
|
|
52
|
-
oldest_file="$(ls -1tr "${MAIN_UNREAD}"/*.md 2>/dev/null | head -1 || true)"
|
|
53
|
-
if [ -n "${oldest_file}" ] && [ -f "${oldest_file}" ]; then
|
|
54
|
-
if stat --version >/dev/null 2>&1; then
|
|
55
|
-
# GNU stat (Linux)
|
|
56
|
-
oldest_mtime="$(stat -c %Y "${oldest_file}" 2>/dev/null || echo 0)"
|
|
57
|
-
else
|
|
58
|
-
# BSD stat (macOS)
|
|
59
|
-
oldest_mtime="$(stat -f %m "${oldest_file}" 2>/dev/null || echo 0)"
|
|
60
|
-
fi
|
|
61
|
-
now="$(date +%s)"
|
|
62
|
-
oldest_age="$((now - oldest_mtime))"
|
|
63
|
-
fi
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
# 推荐 wake 间隔
|
|
67
|
-
if [ "${p0_exists}" = "true" ]; then
|
|
68
|
-
recommended="${P0_WAKE_SECONDS}"
|
|
69
|
-
else
|
|
70
|
-
recommended="${NORMAL_WAKE_SECONDS}"
|
|
71
|
-
fi
|
|
72
|
-
|
|
73
|
-
# 输出(KV 纯文本,主 agent 用 grep / awk 解读)
|
|
74
|
-
printf 'unread_count=%s\n' "${unread_count}"
|
|
75
|
-
printf 'p0_exists=%s\n' "${p0_exists}"
|
|
76
|
-
printf 'oldest_unread_age_seconds=%s\n' "${oldest_age}"
|
|
77
|
-
printf 'recommended_wake_seconds=%s\n' "${recommended}"
|
|
78
|
-
printf 'note=ScheduleWakeup MCP must be invoked by main agent (shell cannot reach CC internal tool API)\n'
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# PreCompact hook: 注入必须在 context compaction 中保留的关键信息
|
|
3
|
-
# [来源: ADR-038 D2.3 + D9 (v4 Objective Recitation), CC PreCompact hook — exit 0 追加为 compact 指令]
|
|
4
|
-
|
|
5
|
-
# 读取当前活跃的 PLAN/TASK/Issue 状态
|
|
6
|
-
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
7
|
-
|
|
8
|
-
cat <<'PRESERVE'
|
|
9
|
-
## 必须保留的关键信息
|
|
10
|
-
|
|
11
|
-
### 当前工作上下文
|
|
12
|
-
- 保留当前正在进行的 PLAN/TASK/Issue 的完整状态和进度
|
|
13
|
-
- 保留 Sprint Contract(如果有)的全部验收标准
|
|
14
|
-
- 保留当前 WP 的 scope 和验收条件
|
|
15
|
-
|
|
16
|
-
### 不可降级规则 (ADR-030 核心)
|
|
17
|
-
- Guard > Memory: 能机械化检测的必须写 guard
|
|
18
|
-
- 一个事实一个定义: 同一信息不得在多处重复定义
|
|
19
|
-
- 验证看最后一公里: 验证必须到达用户可观测的终点
|
|
20
|
-
|
|
21
|
-
### 行为约束
|
|
22
|
-
- 所有 commit message 必须中英双语
|
|
23
|
-
- 所有 subagent 必须使用 claude-opus-4-6
|
|
24
|
-
- 不得跳过 Gate 2/4/6/8 审查
|
|
25
|
-
- Issue 先于代码: 改代码前必须先创建 issue 文档
|
|
26
|
-
PRESERVE
|
|
27
|
-
|
|
28
|
-
# ── v4 D9: Objective Recitation ──
|
|
29
|
-
# [来源: Manus/IMPACT — recite objectives at end of context after ~50 tool calls]
|
|
30
|
-
# [来源: Cursor — 丢失 reasoning traces 导致 30% 性能下降]
|
|
31
|
-
# 在 compact 后的新上下文末尾追加原始目标,防止注意力漂移。
|
|
32
|
-
# KV cache 友好——只追加到末尾,不重排前文。
|
|
33
|
-
PROGRESS_FILE="$REPO_ROOT/.boll/progress/current.json"
|
|
34
|
-
if [ -f "$PROGRESS_FILE" ]; then
|
|
35
|
-
echo ""
|
|
36
|
-
echo "## Objective Recitation (v4 D9)"
|
|
37
|
-
echo ""
|
|
38
|
-
echo "**原始目标**(不可漂移,由 D8 Initializer Agent 写入后 read-only):"
|
|
39
|
-
npx ts-node -e "
|
|
40
|
-
import * as fs from 'fs';
|
|
41
|
-
const data = JSON.parse(fs.readFileSync(process.env.PROGRESS_FILE!, 'utf-8'));
|
|
42
|
-
console.log(' ' + (data.objective || '<未设置>'));
|
|
43
|
-
console.log();
|
|
44
|
-
const pending = (data.features || []).filter((f: { status: string }) => f.status !== 'passing');
|
|
45
|
-
if (pending.length) {
|
|
46
|
-
console.log('**未完成 features**:');
|
|
47
|
-
pending.forEach((f: { status: string; id: string; subject: string }) => {
|
|
48
|
-
console.log(' - [' + f.status + '] ' + f.id + ': ' + f.subject);
|
|
49
|
-
});
|
|
50
|
-
} else {
|
|
51
|
-
console.log('**所有 features 已 passing**,可以进入 Stop 流程。');
|
|
52
|
-
}
|
|
53
|
-
" 2>&1
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
exit 0
|