agent-borg 3.3.2__tar.gz → 3.3.3__tar.gz
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.
- {agent_borg-3.3.2 → agent_borg-3.3.3}/LICENSE +1 -1
- agent_borg-3.3.3/PKG-INFO +30 -0
- agent_borg-3.3.3/README.md +259 -0
- agent_borg-3.3.3/agent_borg.egg-info/PKG-INFO +30 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/agent_borg.egg-info/SOURCES.txt +34 -106
- {agent_borg-3.3.2 → agent_borg-3.3.3}/agent_borg.egg-info/entry_points.txt +1 -0
- agent_borg-3.3.3/agent_borg.egg-info/requires.txt +24 -0
- agent_borg-3.3.3/borg/__init__.py +49 -0
- agent_borg-3.3.3/borg/cli/__init__.py +11 -0
- agent_borg-3.3.3/borg/cli/__main__.py +11 -0
- agent_borg-3.3.3/borg/cli/doctor.py +169 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/cli/install.py +16 -44
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/cli.py +467 -90
- agent_borg-3.3.3/borg/core/__init__.py +29 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/apply.py +4 -57
- agent_borg-3.3.3/borg/core/atom_policy.py +84 -0
- agent_borg-3.3.3/borg/core/atom_retrieval.py +39 -0
- agent_borg-3.3.3/borg/core/atom_store.py +170 -0
- agent_borg-3.3.3/borg/core/atom_tenant.py +70 -0
- agent_borg-3.3.3/borg/core/confidence_gate.py +261 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/convert.py +21 -6
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/crypto.py +3 -1
- agent_borg-3.3.3/borg/core/dirs.py +124 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/embeddings.py +49 -17
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/failure_memory.py +8 -4
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/feedback_loop.py +30 -32
- agent_borg-3.3.3/borg/core/first_user_readiness.py +214 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/generate.py +12 -7
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/generator.py +22 -13
- agent_borg-3.3.3/borg/core/learning_atoms.py +248 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/mutation_engine.py +23 -125
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/openclaw_converter.py +2 -2
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/pack_taxonomy.py +1 -1
- agent_borg-3.3.3/borg/core/privacy.py +224 -0
- agent_borg-3.3.3/borg/core/prompt_injection.py +72 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/publish.py +85 -32
- agent_borg-3.3.3/borg/core/rescue.py +299 -0
- agent_borg-3.3.3/borg/core/runtime_fingerprint.py +172 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/search.py +9 -7
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/session.py +1 -1
- agent_borg-3.3.3/borg/core/telemetry.py +114 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/trace_matcher.py +27 -48
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/traces.py +32 -18
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/uri.py +93 -77
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/v3_integration.py +59 -64
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/db/embeddings.py +3 -1
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/fleet/syncer.py +7 -5
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/integrations/mcp_server.py +246 -286
- agent_borg-3.3.3/borg/seeds_data/packs/systematic-debugging.workflow.yaml +41 -0
- agent_borg-3.3.3/borg/tests/test_atom_policy.py +57 -0
- agent_borg-3.3.3/borg/tests/test_atom_retrieval_firewall.py +48 -0
- agent_borg-3.3.3/borg/tests/test_atom_store.py +57 -0
- agent_borg-3.3.3/borg/tests/test_atom_tenant.py +81 -0
- agent_borg-3.3.3/borg/tests/test_borg_observe_confidence_gate.py +170 -0
- agent_borg-3.3.3/borg/tests/test_borg_observe_wrapper.py +238 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_cli.py +170 -9
- agent_borg-3.3.3/borg/tests/test_cli_atom.py +83 -0
- agent_borg-3.3.3/borg/tests/test_confidence_gate.py +178 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_convert_openclaw.py +38 -20
- agent_borg-3.3.3/borg/tests/test_dirs.py +60 -0
- agent_borg-3.3.3/borg/tests/test_distribution_readiness.py +55 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_e2e_learning_loop.py +4 -4
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_e2e_learning_loop_v3.py +27 -41
- agent_borg-3.3.3/borg/tests/test_embeddings_schema_compat.py +62 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_feedback_loop.py +7 -55
- agent_borg-3.3.3/borg/tests/test_first_10_readiness.py +146 -0
- agent_borg-3.3.3/borg/tests/test_first_user_cli_contract.py +182 -0
- agent_borg-3.3.3/borg/tests/test_learning_atom_publish.py +76 -0
- agent_borg-3.3.3/borg/tests/test_learning_atoms.py +111 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_mcp_server.py +22 -9
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_mcp_server_extended.py +38 -25
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_mutation_engine.py +4 -34
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_pack_compatibility.py +18 -3
- agent_borg-3.3.3/borg/tests/test_privacy_structured.py +54 -0
- agent_borg-3.3.3/borg/tests/test_prompt_injection.py +43 -0
- agent_borg-3.3.3/borg/tests/test_public_api_check.py +51 -0
- agent_borg-3.3.3/borg/tests/test_release_packaging_contract.py +43 -0
- agent_borg-3.3.3/borg/tests/test_rescue.py +81 -0
- agent_borg-3.3.3/borg/tests/test_runtime_doctor.py +13 -0
- agent_borg-3.3.3/borg/tests/test_runtime_fingerprint.py +43 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_search.py +3 -2
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_start_signals.py +11 -7
- agent_borg-3.3.3/borg/tests/test_storage_paths.py +91 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_uri.py +15 -5
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_v3_integration.py +11 -6
- agent_borg-3.3.3/borg/tests/test_version_consistency.py +32 -0
- agent_borg-3.3.3/pyproject.toml +63 -0
- agent_borg-3.3.2/PKG-INFO +0 -128
- agent_borg-3.3.2/README.md +0 -103
- agent_borg-3.3.2/agent_borg.egg-info/PKG-INFO +0 -128
- agent_borg-3.3.2/agent_borg.egg-info/requires.txt +0 -7
- agent_borg-3.3.2/borg/__init__.py +0 -8
- agent_borg-3.3.2/borg/cli/__init__.py +0 -42
- agent_borg-3.3.2/borg/cli/doctor.py +0 -111
- agent_borg-3.3.2/borg/core/action_policy.py +0 -24
- agent_borg-3.3.2/borg/core/canonical_truth.py +0 -66
- agent_borg-3.3.2/borg/core/dirs.py +0 -52
- agent_borg-3.3.2/borg/core/outcome_ledger.py +0 -68
- agent_borg-3.3.2/borg/core/privacy.py +0 -144
- agent_borg-3.3.2/borg/core/provider_router.py +0 -19
- agent_borg-3.3.2/borg/core/quality_gate.py +0 -60
- agent_borg-3.3.2/borg/core/rate_limiter.py +0 -69
- agent_borg-3.3.2/borg/core/response_formatter.py +0 -26
- agent_borg-3.3.2/borg/core/sanitizer.py +0 -62
- agent_borg-3.3.2/borg/core/status.py +0 -27
- agent_borg-3.3.2/borg/core/telemetry.py +0 -71
- agent_borg-3.3.2/borg/defi/__init__.py +0 -123
- agent_borg-3.3.2/borg/defi/alpha_signal.py +0 -1044
- agent_borg-3.3.2/borg/defi/api_clients/__init__.py +0 -27
- agent_borg-3.3.2/borg/defi/api_clients/alchemy.py +0 -346
- agent_borg-3.3.2/borg/defi/api_clients/arkham.py +0 -354
- agent_borg-3.3.2/borg/defi/api_clients/base.py +0 -377
- agent_borg-3.3.2/borg/defi/api_clients/birdeye.py +0 -224
- agent_borg-3.3.2/borg/defi/api_clients/cache.py +0 -282
- agent_borg-3.3.2/borg/defi/api_clients/defillama.py +0 -211
- agent_borg-3.3.2/borg/defi/api_clients/dexscreener.py +0 -167
- agent_borg-3.3.2/borg/defi/api_clients/goplus.py +0 -401
- agent_borg-3.3.2/borg/defi/api_clients/helius.py +0 -310
- agent_borg-3.3.2/borg/defi/cli.py +0 -161
- agent_borg-3.3.2/borg/defi/cron/__init__.py +0 -64
- agent_borg-3.3.2/borg/defi/cron/alpha_cron.py +0 -177
- agent_borg-3.3.2/borg/defi/cron/delivery.py +0 -215
- agent_borg-3.3.2/borg/defi/cron/liquidation_cron.py +0 -66
- agent_borg-3.3.2/borg/defi/cron/live_scans.py +0 -442
- agent_borg-3.3.2/borg/defi/cron/portfolio_cron.py +0 -106
- agent_borg-3.3.2/borg/defi/cron/risk_cron.py +0 -144
- agent_borg-3.3.2/borg/defi/cron/state.py +0 -182
- agent_borg-3.3.2/borg/defi/cron/whale_cron.py +0 -110
- agent_borg-3.3.2/borg/defi/cron/yield_cron.py +0 -106
- agent_borg-3.3.2/borg/defi/data_models.py +0 -447
- agent_borg-3.3.2/borg/defi/dojo_bridge.py +0 -696
- agent_borg-3.3.2/borg/defi/liquidation_watcher.py +0 -682
- agent_borg-3.3.2/borg/defi/lp_manager.py +0 -868
- agent_borg-3.3.2/borg/defi/mcp_tools.py +0 -158
- agent_borg-3.3.2/borg/defi/mev/__init__.py +0 -25
- agent_borg-3.3.2/borg/defi/mev/flashbots.py +0 -234
- agent_borg-3.3.2/borg/defi/mev/jito.py +0 -169
- agent_borg-3.3.2/borg/defi/portfolio_monitor.py +0 -681
- agent_borg-3.3.2/borg/defi/risk_engine.py +0 -725
- agent_borg-3.3.2/borg/defi/security/__init__.py +0 -36
- agent_borg-3.3.2/borg/defi/security/keystore.py +0 -559
- agent_borg-3.3.2/borg/defi/security/tx_guard.py +0 -581
- agent_borg-3.3.2/borg/defi/strategy_backtester.py +0 -814
- agent_borg-3.3.2/borg/defi/strategy_selector.py +0 -702
- agent_borg-3.3.2/borg/defi/swap_executor.py +0 -1438
- agent_borg-3.3.2/borg/defi/tests/__init__.py +0 -1
- agent_borg-3.3.2/borg/defi/tests/test_alchemy.py +0 -426
- agent_borg-3.3.2/borg/defi/tests/test_alpha_signal.py +0 -905
- agent_borg-3.3.2/borg/defi/tests/test_api_clients.py +0 -558
- agent_borg-3.3.2/borg/defi/tests/test_arkham.py +0 -651
- agent_borg-3.3.2/borg/defi/tests/test_base_client.py +0 -292
- agent_borg-3.3.2/borg/defi/tests/test_cache.py +0 -503
- agent_borg-3.3.2/borg/defi/tests/test_cli.py +0 -279
- agent_borg-3.3.2/borg/defi/tests/test_cron.py +0 -708
- agent_borg-3.3.2/borg/defi/tests/test_cron_delivery.py +0 -246
- agent_borg-3.3.2/borg/defi/tests/test_cron_state.py +0 -315
- agent_borg-3.3.2/borg/defi/tests/test_data_models.py +0 -754
- agent_borg-3.3.2/borg/defi/tests/test_dojo_bridge.py +0 -976
- agent_borg-3.3.2/borg/defi/tests/test_e2e_live.py +0 -304
- agent_borg-3.3.2/borg/defi/tests/test_goplus.py +0 -469
- agent_borg-3.3.2/borg/defi/tests/test_keystore_unit.py +0 -536
- agent_borg-3.3.2/borg/defi/tests/test_liquidation_watcher.py +0 -776
- agent_borg-3.3.2/borg/defi/tests/test_live_scans.py +0 -1048
- agent_borg-3.3.2/borg/defi/tests/test_lp_manager.py +0 -740
- agent_borg-3.3.2/borg/defi/tests/test_mcp_tools.py +0 -335
- agent_borg-3.3.2/borg/defi/tests/test_mev.py +0 -721
- agent_borg-3.3.2/borg/defi/tests/test_portfolio_monitor.py +0 -621
- agent_borg-3.3.2/borg/defi/tests/test_risk_engine.py +0 -729
- agent_borg-3.3.2/borg/defi/tests/test_strategy_backtester.py +0 -728
- agent_borg-3.3.2/borg/defi/tests/test_strategy_selector.py +0 -1009
- agent_borg-3.3.2/borg/defi/tests/test_swap_executor.py +0 -1219
- agent_borg-3.3.2/borg/defi/tests/test_tx_guard_unit.py +0 -651
- agent_borg-3.3.2/borg/defi/tests/test_v2_borg_bridge.py +0 -374
- agent_borg-3.3.2/borg/defi/tests/test_v2_circuit_breaker.py +0 -590
- agent_borg-3.3.2/borg/defi/tests/test_v2_drift.py +0 -393
- agent_borg-3.3.2/borg/defi/tests/test_v2_integration.py +0 -610
- agent_borg-3.3.2/borg/defi/tests/test_v2_models.py +0 -537
- agent_borg-3.3.2/borg/defi/tests/test_v2_outcome_store.py +0 -364
- agent_borg-3.3.2/borg/defi/tests/test_v2_pack_store.py +0 -379
- agent_borg-3.3.2/borg/defi/tests/test_v2_recommender.py +0 -859
- agent_borg-3.3.2/borg/defi/tests/test_v2_reputation.py +0 -413
- agent_borg-3.3.2/borg/defi/tests/test_v2_seed_packs.py +0 -285
- agent_borg-3.3.2/borg/defi/tests/test_v2_warnings.py +0 -428
- agent_borg-3.3.2/borg/defi/tests/test_whale_tracker.py +0 -515
- agent_borg-3.3.2/borg/defi/tests/test_yield_scanner.py +0 -593
- agent_borg-3.3.2/borg/defi/v2/__init__.py +0 -27
- agent_borg-3.3.2/borg/defi/v2/borg_bridge.py +0 -300
- agent_borg-3.3.2/borg/defi/v2/circuit_breaker.py +0 -397
- agent_borg-3.3.2/borg/defi/v2/daily_brief.py +0 -129
- agent_borg-3.3.2/borg/defi/v2/drift.py +0 -151
- agent_borg-3.3.2/borg/defi/v2/models.py +0 -388
- agent_borg-3.3.2/borg/defi/v2/outcome_store.py +0 -168
- agent_borg-3.3.2/borg/defi/v2/pack_store.py +0 -180
- agent_borg-3.3.2/borg/defi/v2/recommender.py +0 -582
- agent_borg-3.3.2/borg/defi/v2/reputation.py +0 -216
- agent_borg-3.3.2/borg/defi/v2/seed_packs.py +0 -399
- agent_borg-3.3.2/borg/defi/v2/warnings.py +0 -216
- agent_borg-3.3.2/borg/defi/whale_tracker.py +0 -585
- agent_borg-3.3.2/borg/defi/yield_scanner.py +0 -405
- agent_borg-3.3.2/borg/seeds_data/borg/SKILL.md +0 -147
- agent_borg-3.3.2/borg/seeds_data/borg-autopilot/SKILL.md +0 -140
- agent_borg-3.3.2/borg/tests/__init__.py +0 -0
- agent_borg-3.3.2/borg/tests/test_dirs.py +0 -55
- agent_borg-3.3.2/borg/tests/test_invariants.py +0 -98
- agent_borg-3.3.2/borg/tests/test_perf_candidate_cache.py +0 -58
- agent_borg-3.3.2/borg/tests/test_version_consistency.py +0 -27
- agent_borg-3.3.2/pyproject.toml +0 -47
- {agent_borg-3.3.2 → agent_borg-3.3.3}/agent_borg.egg-info/dependency_links.txt +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/agent_borg.egg-info/top_level.txt +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmark/skills/test_skills.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/report.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/runner.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/scorer.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/tasks.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/tests/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/benchmarks/tests/test_benchmarks.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/agentskills_converter.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/aggregator.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/bm25_index.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/causal.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/changes.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/clustering.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/cold_start.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/conditions.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/contextual_selector.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/negative_traces.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/proof_gates.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/safety.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/schema.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/seed_loader.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/seeds.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/semantic_search.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/signals.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/stack.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/synthesis.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/core/temporal.py +0 -0
- {agent_borg-3.3.2/borg/core → agent_borg-3.3.3/borg/db}/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/db/analytics.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/db/migrations.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/db/reputation.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/db/store.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/auto_fixer.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/cron_runner.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/data_models.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/failure_classifier.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/learning_curve.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/pipeline.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/report_generator.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/session_reader.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/skill_gap_detector.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_auto_fixer.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_failure_classifier.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_learning_curve.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_pipeline.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_report_generator.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_session_reader.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/dojo/tests/test_skill_gap_detector.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/eval/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/eval/ab_test.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/eval/e1a_seed_pack_validation.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/eval/production_smoke_test.py +0 -0
- {agent_borg-3.3.2/borg/db → agent_borg-3.3.3/borg/integrations}/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/integrations/agent_hook.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/integrations/http_server.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/integrations/nudge.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/circular-dependency-migration.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/code-review.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/collective_seed.json +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/configuration-error.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/defi-risk-check.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/defi-yield-strategy.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/extended_seeds.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/import-cycle.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/migration-state-desync.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/missing-dependency.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/missing-foreign-key.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/null-pointer-chain.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/bash-permission-denied.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/django-circular-dependency.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/django-migration-state.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/django-null-pointer.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/django-schema-drift.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/docker-no-space.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/git-merge-conflict.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/pytest-flaky-test.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/python-import-cycle.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/packs/python-missing-dependency.yaml +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/permission-denied.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/race-condition.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/schema-drift.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/systematic-debugging.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/test-driven-development.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/timeout-hang.md +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/seeds_data/type-mismatch.md +0 -0
- {agent_borg-3.3.2/borg/integrations → agent_borg-3.3.3/borg/tests}/__init__.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/fixtures/openclaw/quick_validate.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_agent_hook.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_aggregator.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_analytics.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_apply.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_change_awareness.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_classify_error.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_conditions.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_contextual_selector.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_convert.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_dojo_pipeline.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_failure_memory.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_fleet_syncer.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_generate.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_generator.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_golden_queries.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_mcp_hardening.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_nudge.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_observe_search_roundtrip.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_openclaw_converter.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_privacy.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_proof_gates.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_publish.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_publish_flow_debug.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_publish_flow_integration.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_publish_sybil.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_pull_network.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_reputation.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_reputation_integration.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_safety.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_schema.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_semantic_search.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_session.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_store.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_store_concurrency.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_telemetry.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/borg/tests/test_wiring.py +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/setup.cfg +0 -0
- {agent_borg-3.3.2 → agent_borg-3.3.3}/tests/test_e2e_verify.py +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-borg
|
|
3
|
+
Version: 3.3.3
|
|
4
|
+
Summary: Collective memory MCP server for AI coding agents
|
|
5
|
+
Project-URL: Homepage, https://github.com/borg-farther/Borg-Directory
|
|
6
|
+
Project-URL: Repository, https://github.com/borg-farther/Borg-Directory
|
|
7
|
+
Project-URL: Documentation, https://github.com/borg-farther/Borg-Directory#readme
|
|
8
|
+
Project-URL: Issues, https://github.com/borg-farther/Borg-Directory/issues
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: pyyaml>=6.0
|
|
12
|
+
Provides-Extra: semantic
|
|
13
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "semantic"
|
|
14
|
+
Requires-Dist: numpy>=1.24.0; extra == "semantic"
|
|
15
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "semantic"
|
|
16
|
+
Provides-Extra: embeddings
|
|
17
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "embeddings"
|
|
18
|
+
Requires-Dist: numpy>=1.24.0; extra == "embeddings"
|
|
19
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "embeddings"
|
|
20
|
+
Provides-Extra: crypto
|
|
21
|
+
Requires-Dist: pynacl>=1.5.0; extra == "crypto"
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
24
|
+
Provides-Extra: all
|
|
25
|
+
Requires-Dist: pytest>=8.0.0; extra == "all"
|
|
26
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "all"
|
|
27
|
+
Requires-Dist: numpy>=1.24.0; extra == "all"
|
|
28
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "all"
|
|
29
|
+
Requires-Dist: pynacl>=1.5.0; extra == "all"
|
|
30
|
+
Dynamic: license-file
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# Borg — collective memory for AI agents
|
|
2
|
+
|
|
3
|
+
**Install:** `pip install agent-borg`
|
|
4
|
+
**CLI:** `borg`
|
|
5
|
+
**MCP server:** `borg-mcp`
|
|
6
|
+
**Canonical repo:** https://github.com/borg-farther/Borg-Directory
|
|
7
|
+
|
|
8
|
+
Borg helps coding agents avoid rediscovering the same fixes and dead ends. When an agent hits an error, it can check Borg first, get prior guidance, and record whether the guidance helped.
|
|
9
|
+
|
|
10
|
+
Borg is not marketed here as a magic success-rate booster. Current local security/readiness gates are green; statistically significant external agent-level lift is still unproven.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
python3 -m pip install agent-borg
|
|
18
|
+
borg version
|
|
19
|
+
borg-doctor --json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Expected first check:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
borg version # prints the installed version, currently 3.3.3 in this repo
|
|
26
|
+
borg-doctor # returns ok=true / PASS-style checks when the install is healthy
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For isolated installs:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pipx install agent-borg
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For controlled or offline environments, pre-download wheels on a connected machine and install from that local wheelhouse:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
python -m pip download agent-borg -d ./wheelhouse
|
|
39
|
+
python -m pip install --no-index --find-links ./wheelhouse agent-borg
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Optional extras:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install 'agent-borg[embeddings]' # semantic search
|
|
46
|
+
pip install 'agent-borg[crypto]' # Ed25519 signing support
|
|
47
|
+
pip install 'agent-borg[all]' # dev + semantic + crypto
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Requires Python 3.10+.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. One-command Claude setup
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
borg setup-claude --scope user --verify --fix
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
What this does:
|
|
61
|
+
|
|
62
|
+
1. Finds the MCP launch command.
|
|
63
|
+
2. Creates Borg home storage if missing.
|
|
64
|
+
3. Writes user-level Claude MCP config.
|
|
65
|
+
4. Runs an MCP initialize verification.
|
|
66
|
+
5. Prints a binary pass/fail result with remediation if something is wrong.
|
|
67
|
+
|
|
68
|
+
If your agent config needs manual MCP wiring, use this:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"mcpServers": {
|
|
73
|
+
"borg": {
|
|
74
|
+
"command": "borg-mcp",
|
|
75
|
+
"args": [],
|
|
76
|
+
"env": { "BORG_HOME": "/absolute/path/to/.borg" }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Fallback if `borg-mcp` is not on PATH:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"borg": {
|
|
88
|
+
"command": "python3",
|
|
89
|
+
"args": ["-m", "borg.integrations.mcp_server"],
|
|
90
|
+
"env": { "BORG_HOME": "/absolute/path/to/.borg" }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Use absolute paths in MCP env blocks. Do not rely on `~` expansion inside MCP clients.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 3. First useful commands
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Fastest day-one value: paste an error, get ACTION / STOP / VERIFY
|
|
104
|
+
borg rescue "ModuleNotFoundError: No module named flask"
|
|
105
|
+
|
|
106
|
+
# Pipe failing command output into Borg
|
|
107
|
+
pytest -q 2>&1 | borg rescue --json
|
|
108
|
+
|
|
109
|
+
# Interactive onboarding uses the same rescue engine
|
|
110
|
+
borg start
|
|
111
|
+
|
|
112
|
+
# First-10 beta contract / readiness packet
|
|
113
|
+
borg first-10
|
|
114
|
+
borg first-10 --json
|
|
115
|
+
|
|
116
|
+
# Search existing guidance
|
|
117
|
+
borg search "django migration table already exists"
|
|
118
|
+
|
|
119
|
+
# Preview a workflow pack safely
|
|
120
|
+
borg try borg://hermes/systematic-debugging
|
|
121
|
+
|
|
122
|
+
# Pull the pack locally
|
|
123
|
+
borg pull borg://hermes/systematic-debugging
|
|
124
|
+
|
|
125
|
+
# Apply it to a real task
|
|
126
|
+
borg apply systematic-debugging --task "Fix Django migration table already exists error"
|
|
127
|
+
|
|
128
|
+
# After completion, generate feedback
|
|
129
|
+
borg feedback <session_id>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
For Python callers:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
import borg
|
|
136
|
+
|
|
137
|
+
hits = borg.check("TypeError: unsupported operand type(s)", top_k=3)
|
|
138
|
+
for hit in hits:
|
|
139
|
+
print(hit.get("name"), hit.get("tier"))
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 4. Agent instruction / priming
|
|
145
|
+
|
|
146
|
+
Put this in your project `CLAUDE.md`, agent system prompt, or first user message:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
Before attempting technical fixes for errors, bugs, installs, configs, deployments, or tests, call Borg first. Prefer borg_rescue(input="<exact error or failing command output>") when there is a concrete failure; use borg_observe(task="<exact task or error>", context="<tech stack>") at task start. Treat Borg output as advisory: follow ACTION when relevant, avoid STOP/AVOID patterns, and disclose when retrieved guidance is weak or does not fit. After the fix, call borg_rate(helpful=True/False) or record the outcome.
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Why: agents often do not discover optional tools unless explicitly primed.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 5. MCP tools
|
|
157
|
+
|
|
158
|
+
Core tools available through the MCP server include:
|
|
159
|
+
|
|
160
|
+
- `borg_rescue` — agent-ready ACTION / STOP / VERIFY packet for concrete failures
|
|
161
|
+
- `borg_observe` — passive guidance before a technical fix
|
|
162
|
+
- `borg_search` — search packs / traces
|
|
163
|
+
- `borg_try` — preview a pack before saving
|
|
164
|
+
- `borg_pull` — fetch and validate a pack
|
|
165
|
+
- `borg_apply` — phase-by-phase execution
|
|
166
|
+
- `borg_feedback` — structured feedback artifact
|
|
167
|
+
- `borg_suggest` — suggest after repeated failures
|
|
168
|
+
- `borg_convert` — convert skills/rules into Borg-compatible artifacts
|
|
169
|
+
- `borg_publish` — publish artifacts with safety gates
|
|
170
|
+
- `borg_first_10` — first-10 beta gates, smoke path, priming paragraph, feedback fields
|
|
171
|
+
|
|
172
|
+
Use `borg_rescue` for concrete errors/failing command output. Use `borg_observe` first for broader debugging/config/install/deploy/test tasks.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 6. What is proven right now
|
|
177
|
+
|
|
178
|
+
Current local gate snapshot in this repo:
|
|
179
|
+
|
|
180
|
+
- Version consistency: PASS
|
|
181
|
+
- First-user install surface: PASS
|
|
182
|
+
- Security/privacy/prompt-injection surface: PASS
|
|
183
|
+
- Learning-atom safety tests: PASS
|
|
184
|
+
- Local 10/100/1000 logical-user soak: PASS
|
|
185
|
+
- Latest focused verification: source + wheel + PyPI first-user gates must pass; first-user public launch remains gated by real external-user evidence
|
|
186
|
+
|
|
187
|
+
Canonical local artifacts:
|
|
188
|
+
|
|
189
|
+
- [`PROJECT_STATUS.md`](PROJECT_STATUS.md)
|
|
190
|
+
- [`GO_NO_GO_DECISION.md`](GO_NO_GO_DECISION.md)
|
|
191
|
+
- [`docs/20260504-1123_BORG_PRODUCTION_1000_READINESS_STATUS.md`](docs/20260504-1123_BORG_PRODUCTION_1000_READINESS_STATUS.md)
|
|
192
|
+
- [`docs/FIRST_10_BETA_READINESS.md`](docs/FIRST_10_BETA_READINESS.md)
|
|
193
|
+
- [`eval/uat_scoreboard_snapshot.json`](eval/uat_scoreboard_snapshot.json)
|
|
194
|
+
- [`docs/SECURITY_HARDENING_BASELINE.md`](docs/SECURITY_HARDENING_BASELINE.md)
|
|
195
|
+
- [`docs/PRIVACY_MODEL.md`](docs/PRIVACY_MODEL.md)
|
|
196
|
+
- [`docs/PROMPT_INJECTION_THREAT_MODEL.md`](docs/PROMPT_INJECTION_THREAT_MODEL.md)
|
|
197
|
+
- [`docs/TRUST_AND_PROMOTION.md`](docs/TRUST_AND_PROMOTION.md)
|
|
198
|
+
- [`docs/REVOCATION_AND_DELETION.md`](docs/REVOCATION_AND_DELETION.md)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 7. Honest limitations
|
|
203
|
+
|
|
204
|
+
Not yet proven:
|
|
205
|
+
|
|
206
|
+
- Statistically significant agent-level success lift.
|
|
207
|
+
- Real external-user network effects.
|
|
208
|
+
- Global/federated multi-node reliability.
|
|
209
|
+
- Broad non-Python generalization.
|
|
210
|
+
- Navigation cache as a shipped first-user feature.
|
|
211
|
+
|
|
212
|
+
Security boundary:
|
|
213
|
+
|
|
214
|
+
- Learning atoms are signed, privacy-scanned, prompt-injection scanned, and revocable.
|
|
215
|
+
- Ed25519 primitives exist, but do not interpret that as “every pack from every source is cryptographically trusted” unless the specific command reports verified signature state.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 8. For evaluators
|
|
220
|
+
|
|
221
|
+
If you are evaluating Borg, run this exact smoke path from a clean environment:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
python3 -m venv /tmp/borg-smoke
|
|
225
|
+
. /tmp/borg-smoke/bin/activate
|
|
226
|
+
python -m pip install --upgrade pip
|
|
227
|
+
python -m pip install agent-borg
|
|
228
|
+
borg version
|
|
229
|
+
borg-doctor --json
|
|
230
|
+
borg search "django migration table already exists"
|
|
231
|
+
borg first-10 --json
|
|
232
|
+
python - <<'PY'
|
|
233
|
+
import borg
|
|
234
|
+
print(borg.check('TypeError: unsupported operand type(s)', top_k=2))
|
|
235
|
+
PY
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Then connect MCP using `borg setup-claude --scope user --verify --fix` or the manual config above.
|
|
239
|
+
|
|
240
|
+
A good first evaluation is whether Borg reduces redundant investigation, not whether it magically solves every bug.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 9. Development verification
|
|
245
|
+
|
|
246
|
+
From a source checkout:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
python -m pytest -q borg/tests/test_public_api_check.py borg/tests/test_version_consistency.py borg/tests/test_runtime_doctor.py
|
|
250
|
+
python scripts/security_gate_check.py
|
|
251
|
+
BORG_READINESS_SOAK_SECONDS=5 python eval/run_readiness_gates.py
|
|
252
|
+
python eval/uat_scoreboard.py
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## License
|
|
258
|
+
|
|
259
|
+
MIT. See [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-borg
|
|
3
|
+
Version: 3.3.3
|
|
4
|
+
Summary: Collective memory MCP server for AI coding agents
|
|
5
|
+
Project-URL: Homepage, https://github.com/borg-farther/Borg-Directory
|
|
6
|
+
Project-URL: Repository, https://github.com/borg-farther/Borg-Directory
|
|
7
|
+
Project-URL: Documentation, https://github.com/borg-farther/Borg-Directory#readme
|
|
8
|
+
Project-URL: Issues, https://github.com/borg-farther/Borg-Directory/issues
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: pyyaml>=6.0
|
|
12
|
+
Provides-Extra: semantic
|
|
13
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "semantic"
|
|
14
|
+
Requires-Dist: numpy>=1.24.0; extra == "semantic"
|
|
15
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "semantic"
|
|
16
|
+
Provides-Extra: embeddings
|
|
17
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "embeddings"
|
|
18
|
+
Requires-Dist: numpy>=1.24.0; extra == "embeddings"
|
|
19
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "embeddings"
|
|
20
|
+
Provides-Extra: crypto
|
|
21
|
+
Requires-Dist: pynacl>=1.5.0; extra == "crypto"
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
24
|
+
Provides-Extra: all
|
|
25
|
+
Requires-Dist: pytest>=8.0.0; extra == "all"
|
|
26
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "all"
|
|
27
|
+
Requires-Dist: numpy>=1.24.0; extra == "all"
|
|
28
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "all"
|
|
29
|
+
Requires-Dist: pynacl>=1.5.0; extra == "all"
|
|
30
|
+
Dynamic: license-file
|
|
@@ -18,20 +18,24 @@ borg/benchmarks/tasks.py
|
|
|
18
18
|
borg/benchmarks/tests/__init__.py
|
|
19
19
|
borg/benchmarks/tests/test_benchmarks.py
|
|
20
20
|
borg/cli/__init__.py
|
|
21
|
+
borg/cli/__main__.py
|
|
21
22
|
borg/cli/doctor.py
|
|
22
23
|
borg/cli/install.py
|
|
23
24
|
borg/core/__init__.py
|
|
24
|
-
borg/core/action_policy.py
|
|
25
25
|
borg/core/agentskills_converter.py
|
|
26
26
|
borg/core/aggregator.py
|
|
27
27
|
borg/core/apply.py
|
|
28
|
+
borg/core/atom_policy.py
|
|
29
|
+
borg/core/atom_retrieval.py
|
|
30
|
+
borg/core/atom_store.py
|
|
31
|
+
borg/core/atom_tenant.py
|
|
28
32
|
borg/core/bm25_index.py
|
|
29
|
-
borg/core/canonical_truth.py
|
|
30
33
|
borg/core/causal.py
|
|
31
34
|
borg/core/changes.py
|
|
32
35
|
borg/core/clustering.py
|
|
33
36
|
borg/core/cold_start.py
|
|
34
37
|
borg/core/conditions.py
|
|
38
|
+
borg/core/confidence_gate.py
|
|
35
39
|
borg/core/contextual_selector.py
|
|
36
40
|
borg/core/convert.py
|
|
37
41
|
borg/core/crypto.py
|
|
@@ -39,22 +43,21 @@ borg/core/dirs.py
|
|
|
39
43
|
borg/core/embeddings.py
|
|
40
44
|
borg/core/failure_memory.py
|
|
41
45
|
borg/core/feedback_loop.py
|
|
46
|
+
borg/core/first_user_readiness.py
|
|
42
47
|
borg/core/generate.py
|
|
43
48
|
borg/core/generator.py
|
|
49
|
+
borg/core/learning_atoms.py
|
|
44
50
|
borg/core/mutation_engine.py
|
|
45
51
|
borg/core/negative_traces.py
|
|
46
52
|
borg/core/openclaw_converter.py
|
|
47
|
-
borg/core/outcome_ledger.py
|
|
48
53
|
borg/core/pack_taxonomy.py
|
|
49
54
|
borg/core/privacy.py
|
|
55
|
+
borg/core/prompt_injection.py
|
|
50
56
|
borg/core/proof_gates.py
|
|
51
|
-
borg/core/provider_router.py
|
|
52
57
|
borg/core/publish.py
|
|
53
|
-
borg/core/
|
|
54
|
-
borg/core/
|
|
55
|
-
borg/core/response_formatter.py
|
|
58
|
+
borg/core/rescue.py
|
|
59
|
+
borg/core/runtime_fingerprint.py
|
|
56
60
|
borg/core/safety.py
|
|
57
|
-
borg/core/sanitizer.py
|
|
58
61
|
borg/core/schema.py
|
|
59
62
|
borg/core/search.py
|
|
60
63
|
borg/core/seed_loader.py
|
|
@@ -63,7 +66,6 @@ borg/core/semantic_search.py
|
|
|
63
66
|
borg/core/session.py
|
|
64
67
|
borg/core/signals.py
|
|
65
68
|
borg/core/stack.py
|
|
66
|
-
borg/core/status.py
|
|
67
69
|
borg/core/synthesis.py
|
|
68
70
|
borg/core/telemetry.py
|
|
69
71
|
borg/core/temporal.py
|
|
@@ -77,99 +79,6 @@ borg/db/embeddings.py
|
|
|
77
79
|
borg/db/migrations.py
|
|
78
80
|
borg/db/reputation.py
|
|
79
81
|
borg/db/store.py
|
|
80
|
-
borg/defi/__init__.py
|
|
81
|
-
borg/defi/alpha_signal.py
|
|
82
|
-
borg/defi/cli.py
|
|
83
|
-
borg/defi/data_models.py
|
|
84
|
-
borg/defi/dojo_bridge.py
|
|
85
|
-
borg/defi/liquidation_watcher.py
|
|
86
|
-
borg/defi/lp_manager.py
|
|
87
|
-
borg/defi/mcp_tools.py
|
|
88
|
-
borg/defi/portfolio_monitor.py
|
|
89
|
-
borg/defi/risk_engine.py
|
|
90
|
-
borg/defi/strategy_backtester.py
|
|
91
|
-
borg/defi/strategy_selector.py
|
|
92
|
-
borg/defi/swap_executor.py
|
|
93
|
-
borg/defi/whale_tracker.py
|
|
94
|
-
borg/defi/yield_scanner.py
|
|
95
|
-
borg/defi/api_clients/__init__.py
|
|
96
|
-
borg/defi/api_clients/alchemy.py
|
|
97
|
-
borg/defi/api_clients/arkham.py
|
|
98
|
-
borg/defi/api_clients/base.py
|
|
99
|
-
borg/defi/api_clients/birdeye.py
|
|
100
|
-
borg/defi/api_clients/cache.py
|
|
101
|
-
borg/defi/api_clients/defillama.py
|
|
102
|
-
borg/defi/api_clients/dexscreener.py
|
|
103
|
-
borg/defi/api_clients/goplus.py
|
|
104
|
-
borg/defi/api_clients/helius.py
|
|
105
|
-
borg/defi/cron/__init__.py
|
|
106
|
-
borg/defi/cron/alpha_cron.py
|
|
107
|
-
borg/defi/cron/delivery.py
|
|
108
|
-
borg/defi/cron/liquidation_cron.py
|
|
109
|
-
borg/defi/cron/live_scans.py
|
|
110
|
-
borg/defi/cron/portfolio_cron.py
|
|
111
|
-
borg/defi/cron/risk_cron.py
|
|
112
|
-
borg/defi/cron/state.py
|
|
113
|
-
borg/defi/cron/whale_cron.py
|
|
114
|
-
borg/defi/cron/yield_cron.py
|
|
115
|
-
borg/defi/mev/__init__.py
|
|
116
|
-
borg/defi/mev/flashbots.py
|
|
117
|
-
borg/defi/mev/jito.py
|
|
118
|
-
borg/defi/security/__init__.py
|
|
119
|
-
borg/defi/security/keystore.py
|
|
120
|
-
borg/defi/security/tx_guard.py
|
|
121
|
-
borg/defi/tests/__init__.py
|
|
122
|
-
borg/defi/tests/test_alchemy.py
|
|
123
|
-
borg/defi/tests/test_alpha_signal.py
|
|
124
|
-
borg/defi/tests/test_api_clients.py
|
|
125
|
-
borg/defi/tests/test_arkham.py
|
|
126
|
-
borg/defi/tests/test_base_client.py
|
|
127
|
-
borg/defi/tests/test_cache.py
|
|
128
|
-
borg/defi/tests/test_cli.py
|
|
129
|
-
borg/defi/tests/test_cron.py
|
|
130
|
-
borg/defi/tests/test_cron_delivery.py
|
|
131
|
-
borg/defi/tests/test_cron_state.py
|
|
132
|
-
borg/defi/tests/test_data_models.py
|
|
133
|
-
borg/defi/tests/test_dojo_bridge.py
|
|
134
|
-
borg/defi/tests/test_e2e_live.py
|
|
135
|
-
borg/defi/tests/test_goplus.py
|
|
136
|
-
borg/defi/tests/test_keystore_unit.py
|
|
137
|
-
borg/defi/tests/test_liquidation_watcher.py
|
|
138
|
-
borg/defi/tests/test_live_scans.py
|
|
139
|
-
borg/defi/tests/test_lp_manager.py
|
|
140
|
-
borg/defi/tests/test_mcp_tools.py
|
|
141
|
-
borg/defi/tests/test_mev.py
|
|
142
|
-
borg/defi/tests/test_portfolio_monitor.py
|
|
143
|
-
borg/defi/tests/test_risk_engine.py
|
|
144
|
-
borg/defi/tests/test_strategy_backtester.py
|
|
145
|
-
borg/defi/tests/test_strategy_selector.py
|
|
146
|
-
borg/defi/tests/test_swap_executor.py
|
|
147
|
-
borg/defi/tests/test_tx_guard_unit.py
|
|
148
|
-
borg/defi/tests/test_v2_borg_bridge.py
|
|
149
|
-
borg/defi/tests/test_v2_circuit_breaker.py
|
|
150
|
-
borg/defi/tests/test_v2_drift.py
|
|
151
|
-
borg/defi/tests/test_v2_integration.py
|
|
152
|
-
borg/defi/tests/test_v2_models.py
|
|
153
|
-
borg/defi/tests/test_v2_outcome_store.py
|
|
154
|
-
borg/defi/tests/test_v2_pack_store.py
|
|
155
|
-
borg/defi/tests/test_v2_recommender.py
|
|
156
|
-
borg/defi/tests/test_v2_reputation.py
|
|
157
|
-
borg/defi/tests/test_v2_seed_packs.py
|
|
158
|
-
borg/defi/tests/test_v2_warnings.py
|
|
159
|
-
borg/defi/tests/test_whale_tracker.py
|
|
160
|
-
borg/defi/tests/test_yield_scanner.py
|
|
161
|
-
borg/defi/v2/__init__.py
|
|
162
|
-
borg/defi/v2/borg_bridge.py
|
|
163
|
-
borg/defi/v2/circuit_breaker.py
|
|
164
|
-
borg/defi/v2/daily_brief.py
|
|
165
|
-
borg/defi/v2/drift.py
|
|
166
|
-
borg/defi/v2/models.py
|
|
167
|
-
borg/defi/v2/outcome_store.py
|
|
168
|
-
borg/defi/v2/pack_store.py
|
|
169
|
-
borg/defi/v2/recommender.py
|
|
170
|
-
borg/defi/v2/reputation.py
|
|
171
|
-
borg/defi/v2/seed_packs.py
|
|
172
|
-
borg/defi/v2/warnings.py
|
|
173
82
|
borg/dojo/__init__.py
|
|
174
83
|
borg/dojo/auto_fixer.py
|
|
175
84
|
borg/dojo/cron_runner.py
|
|
@@ -217,8 +126,6 @@ borg/seeds_data/systematic-debugging.md
|
|
|
217
126
|
borg/seeds_data/test-driven-development.md
|
|
218
127
|
borg/seeds_data/timeout-hang.md
|
|
219
128
|
borg/seeds_data/type-mismatch.md
|
|
220
|
-
borg/seeds_data/borg/SKILL.md
|
|
221
|
-
borg/seeds_data/borg-autopilot/SKILL.md
|
|
222
129
|
borg/seeds_data/packs/bash-permission-denied.yaml
|
|
223
130
|
borg/seeds_data/packs/django-circular-dependency.yaml
|
|
224
131
|
borg/seeds_data/packs/django-migration-state.yaml
|
|
@@ -229,29 +136,43 @@ borg/seeds_data/packs/git-merge-conflict.yaml
|
|
|
229
136
|
borg/seeds_data/packs/pytest-flaky-test.yaml
|
|
230
137
|
borg/seeds_data/packs/python-import-cycle.yaml
|
|
231
138
|
borg/seeds_data/packs/python-missing-dependency.yaml
|
|
139
|
+
borg/seeds_data/packs/systematic-debugging.workflow.yaml
|
|
232
140
|
borg/tests/__init__.py
|
|
233
141
|
borg/tests/test_agent_hook.py
|
|
234
142
|
borg/tests/test_aggregator.py
|
|
235
143
|
borg/tests/test_analytics.py
|
|
236
144
|
borg/tests/test_apply.py
|
|
145
|
+
borg/tests/test_atom_policy.py
|
|
146
|
+
borg/tests/test_atom_retrieval_firewall.py
|
|
147
|
+
borg/tests/test_atom_store.py
|
|
148
|
+
borg/tests/test_atom_tenant.py
|
|
149
|
+
borg/tests/test_borg_observe_confidence_gate.py
|
|
150
|
+
borg/tests/test_borg_observe_wrapper.py
|
|
237
151
|
borg/tests/test_change_awareness.py
|
|
238
152
|
borg/tests/test_classify_error.py
|
|
239
153
|
borg/tests/test_cli.py
|
|
154
|
+
borg/tests/test_cli_atom.py
|
|
240
155
|
borg/tests/test_conditions.py
|
|
156
|
+
borg/tests/test_confidence_gate.py
|
|
241
157
|
borg/tests/test_contextual_selector.py
|
|
242
158
|
borg/tests/test_convert.py
|
|
243
159
|
borg/tests/test_convert_openclaw.py
|
|
244
160
|
borg/tests/test_dirs.py
|
|
161
|
+
borg/tests/test_distribution_readiness.py
|
|
245
162
|
borg/tests/test_dojo_pipeline.py
|
|
246
163
|
borg/tests/test_e2e_learning_loop.py
|
|
247
164
|
borg/tests/test_e2e_learning_loop_v3.py
|
|
165
|
+
borg/tests/test_embeddings_schema_compat.py
|
|
248
166
|
borg/tests/test_failure_memory.py
|
|
249
167
|
borg/tests/test_feedback_loop.py
|
|
168
|
+
borg/tests/test_first_10_readiness.py
|
|
169
|
+
borg/tests/test_first_user_cli_contract.py
|
|
250
170
|
borg/tests/test_fleet_syncer.py
|
|
251
171
|
borg/tests/test_generate.py
|
|
252
172
|
borg/tests/test_generator.py
|
|
253
173
|
borg/tests/test_golden_queries.py
|
|
254
|
-
borg/tests/
|
|
174
|
+
borg/tests/test_learning_atom_publish.py
|
|
175
|
+
borg/tests/test_learning_atoms.py
|
|
255
176
|
borg/tests/test_mcp_hardening.py
|
|
256
177
|
borg/tests/test_mcp_server.py
|
|
257
178
|
borg/tests/test_mcp_server_extended.py
|
|
@@ -260,22 +181,29 @@ borg/tests/test_nudge.py
|
|
|
260
181
|
borg/tests/test_observe_search_roundtrip.py
|
|
261
182
|
borg/tests/test_openclaw_converter.py
|
|
262
183
|
borg/tests/test_pack_compatibility.py
|
|
263
|
-
borg/tests/test_perf_candidate_cache.py
|
|
264
184
|
borg/tests/test_privacy.py
|
|
185
|
+
borg/tests/test_privacy_structured.py
|
|
186
|
+
borg/tests/test_prompt_injection.py
|
|
265
187
|
borg/tests/test_proof_gates.py
|
|
188
|
+
borg/tests/test_public_api_check.py
|
|
266
189
|
borg/tests/test_publish.py
|
|
267
190
|
borg/tests/test_publish_flow_debug.py
|
|
268
191
|
borg/tests/test_publish_flow_integration.py
|
|
269
192
|
borg/tests/test_publish_sybil.py
|
|
270
193
|
borg/tests/test_pull_network.py
|
|
194
|
+
borg/tests/test_release_packaging_contract.py
|
|
271
195
|
borg/tests/test_reputation.py
|
|
272
196
|
borg/tests/test_reputation_integration.py
|
|
197
|
+
borg/tests/test_rescue.py
|
|
198
|
+
borg/tests/test_runtime_doctor.py
|
|
199
|
+
borg/tests/test_runtime_fingerprint.py
|
|
273
200
|
borg/tests/test_safety.py
|
|
274
201
|
borg/tests/test_schema.py
|
|
275
202
|
borg/tests/test_search.py
|
|
276
203
|
borg/tests/test_semantic_search.py
|
|
277
204
|
borg/tests/test_session.py
|
|
278
205
|
borg/tests/test_start_signals.py
|
|
206
|
+
borg/tests/test_storage_paths.py
|
|
279
207
|
borg/tests/test_store.py
|
|
280
208
|
borg/tests/test_store_concurrency.py
|
|
281
209
|
borg/tests/test_telemetry.py
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
pyyaml>=6.0
|
|
2
|
+
|
|
3
|
+
[all]
|
|
4
|
+
pytest>=8.0.0
|
|
5
|
+
sentence-transformers>=2.2.0
|
|
6
|
+
numpy>=1.24.0
|
|
7
|
+
scikit-learn>=1.3.0
|
|
8
|
+
pynacl>=1.5.0
|
|
9
|
+
|
|
10
|
+
[crypto]
|
|
11
|
+
pynacl>=1.5.0
|
|
12
|
+
|
|
13
|
+
[dev]
|
|
14
|
+
pytest>=8.0.0
|
|
15
|
+
|
|
16
|
+
[embeddings]
|
|
17
|
+
sentence-transformers>=2.2.0
|
|
18
|
+
numpy>=1.24.0
|
|
19
|
+
scikit-learn>=1.3.0
|
|
20
|
+
|
|
21
|
+
[semantic]
|
|
22
|
+
sentence-transformers>=2.2.0
|
|
23
|
+
numpy>=1.24.0
|
|
24
|
+
scikit-learn>=1.3.0
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Borg — collective memory for AI coding agents.
|
|
2
|
+
|
|
3
|
+
The top-level :func:`check` helper is intentionally tiny, but it must be real:
|
|
4
|
+
it is the first API many agents try after ``import borg``. Returning an empty
|
|
5
|
+
placeholder silently destroys first-user value, so this wrapper delegates to the
|
|
6
|
+
same search path used by the CLI/MCP server and fails closed with an empty list
|
|
7
|
+
only when the search layer itself is unavailable.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import json
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
__version__ = "3.3.3"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def check(context: str, constraints: dict | None = None, top_k: int = 3) -> list[dict[str, Any]]:
|
|
19
|
+
"""Return relevant Borg memories/packs for ``context``.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
context: Error text, task description, or debugging context.
|
|
23
|
+
constraints: Optional hints. Supported keys today:
|
|
24
|
+
``mode`` (``text``/``semantic``/``hybrid``), ``agent_id``.
|
|
25
|
+
top_k: Maximum number of results to return.
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
A list of result dictionaries from ``borg.core.search.borg_search``.
|
|
29
|
+
Empty means no confident match or search unavailable; it no longer means
|
|
30
|
+
"API not implemented".
|
|
31
|
+
"""
|
|
32
|
+
if not context or not str(context).strip():
|
|
33
|
+
return []
|
|
34
|
+
hints = constraints or {}
|
|
35
|
+
mode = str(hints.get("mode", "hybrid"))
|
|
36
|
+
agent_id = hints.get("agent_id")
|
|
37
|
+
try:
|
|
38
|
+
from borg.core.search import borg_search
|
|
39
|
+
|
|
40
|
+
raw = borg_search(str(context), mode=mode, requesting_agent_id=agent_id)
|
|
41
|
+
payload = json.loads(raw) if isinstance(raw, str) else raw
|
|
42
|
+
if not isinstance(payload, dict) or not payload.get("success"):
|
|
43
|
+
return []
|
|
44
|
+
matches = payload.get("matches", [])
|
|
45
|
+
if not isinstance(matches, list):
|
|
46
|
+
return []
|
|
47
|
+
return [m for m in matches[: max(0, int(top_k))] if isinstance(m, dict)]
|
|
48
|
+
except Exception:
|
|
49
|
+
return []
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Load legacy CLI implementation into package namespace.
|
|
2
|
+
|
|
3
|
+
This keeps `import borg.cli` patch-friendly for tests that monkeypatch
|
|
4
|
+
symbols like `borg.cli.load_session` and `borg.cli.get_borg_dir`.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
_cli_py_path = Path(__file__).parents[1] / "cli.py"
|
|
10
|
+
_source = _cli_py_path.read_text(encoding="utf-8")
|
|
11
|
+
exec(compile(_source, str(_cli_py_path), "exec"), globals(), globals())
|