agent-borg 3.3.2__tar.gz → 3.3.4__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.
Files changed (315) hide show
  1. {agent_borg-3.3.2 → agent_borg-3.3.4}/LICENSE +1 -1
  2. agent_borg-3.3.4/PKG-INFO +411 -0
  3. agent_borg-3.3.4/README.md +367 -0
  4. agent_borg-3.3.4/agent_borg.egg-info/PKG-INFO +411 -0
  5. agent_borg-3.3.4/agent_borg.egg-info/SOURCES.txt +141 -0
  6. {agent_borg-3.3.2 → agent_borg-3.3.4}/agent_borg.egg-info/entry_points.txt +1 -0
  7. agent_borg-3.3.4/agent_borg.egg-info/requires.txt +30 -0
  8. agent_borg-3.3.4/borg/__init__.py +49 -0
  9. agent_borg-3.3.4/borg/cli/__init__.py +11 -0
  10. agent_borg-3.3.4/borg/cli/__main__.py +11 -0
  11. agent_borg-3.3.4/borg/cli/doctor.py +169 -0
  12. agent_borg-3.3.4/borg/cli/install.py +25 -0
  13. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/cli.py +467 -90
  14. agent_borg-3.3.4/borg/core/__init__.py +29 -0
  15. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/apply.py +4 -57
  16. agent_borg-3.3.4/borg/core/atom_policy.py +84 -0
  17. agent_borg-3.3.4/borg/core/atom_retrieval.py +39 -0
  18. agent_borg-3.3.4/borg/core/atom_store.py +170 -0
  19. agent_borg-3.3.4/borg/core/atom_tenant.py +70 -0
  20. agent_borg-3.3.4/borg/core/confidence_gate.py +261 -0
  21. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/convert.py +21 -6
  22. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/crypto.py +3 -1
  23. agent_borg-3.3.4/borg/core/dirs.py +124 -0
  24. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/embeddings.py +49 -17
  25. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/failure_memory.py +8 -4
  26. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/feedback_loop.py +30 -32
  27. agent_borg-3.3.4/borg/core/first_user_readiness.py +231 -0
  28. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/generate.py +49 -14
  29. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/generator.py +22 -13
  30. agent_borg-3.3.4/borg/core/learning_atoms.py +248 -0
  31. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/mutation_engine.py +23 -125
  32. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/openclaw_converter.py +2 -2
  33. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/pack_taxonomy.py +6 -6
  34. agent_borg-3.3.4/borg/core/privacy.py +224 -0
  35. agent_borg-3.3.4/borg/core/prompt_injection.py +72 -0
  36. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/proof_gates.py +2 -0
  37. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/publish.py +85 -32
  38. agent_borg-3.3.4/borg/core/rescue.py +299 -0
  39. agent_borg-3.3.4/borg/core/runtime_fingerprint.py +172 -0
  40. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/search.py +11 -7
  41. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/session.py +1 -1
  42. agent_borg-3.3.4/borg/core/telemetry.py +114 -0
  43. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/trace_matcher.py +27 -48
  44. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/traces.py +32 -18
  45. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/uri.py +93 -77
  46. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/v3_integration.py +59 -64
  47. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/db/embeddings.py +12 -12
  48. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/db/migrations.py +73 -24
  49. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/db/store.py +41 -14
  50. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/fleet/syncer.py +7 -5
  51. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/integrations/mcp_server.py +262 -291
  52. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/borg/SKILL.md +3 -3
  53. agent_borg-3.3.4/borg/seeds_data/packs/systematic-debugging.workflow.yaml +43 -0
  54. agent_borg-3.3.4/pyproject.toml +80 -0
  55. agent_borg-3.3.2/PKG-INFO +0 -128
  56. agent_borg-3.3.2/README.md +0 -103
  57. agent_borg-3.3.2/agent_borg.egg-info/PKG-INFO +0 -128
  58. agent_borg-3.3.2/agent_borg.egg-info/SOURCES.txt +0 -287
  59. agent_borg-3.3.2/agent_borg.egg-info/requires.txt +0 -7
  60. agent_borg-3.3.2/borg/__init__.py +0 -8
  61. agent_borg-3.3.2/borg/cli/__init__.py +0 -42
  62. agent_borg-3.3.2/borg/cli/doctor.py +0 -111
  63. agent_borg-3.3.2/borg/cli/install.py +0 -151
  64. agent_borg-3.3.2/borg/core/action_policy.py +0 -24
  65. agent_borg-3.3.2/borg/core/canonical_truth.py +0 -66
  66. agent_borg-3.3.2/borg/core/dirs.py +0 -52
  67. agent_borg-3.3.2/borg/core/outcome_ledger.py +0 -68
  68. agent_borg-3.3.2/borg/core/privacy.py +0 -144
  69. agent_borg-3.3.2/borg/core/provider_router.py +0 -19
  70. agent_borg-3.3.2/borg/core/quality_gate.py +0 -60
  71. agent_borg-3.3.2/borg/core/rate_limiter.py +0 -69
  72. agent_borg-3.3.2/borg/core/response_formatter.py +0 -26
  73. agent_borg-3.3.2/borg/core/sanitizer.py +0 -62
  74. agent_borg-3.3.2/borg/core/status.py +0 -27
  75. agent_borg-3.3.2/borg/core/telemetry.py +0 -71
  76. agent_borg-3.3.2/borg/defi/__init__.py +0 -123
  77. agent_borg-3.3.2/borg/defi/alpha_signal.py +0 -1044
  78. agent_borg-3.3.2/borg/defi/api_clients/__init__.py +0 -27
  79. agent_borg-3.3.2/borg/defi/api_clients/alchemy.py +0 -346
  80. agent_borg-3.3.2/borg/defi/api_clients/arkham.py +0 -354
  81. agent_borg-3.3.2/borg/defi/api_clients/base.py +0 -377
  82. agent_borg-3.3.2/borg/defi/api_clients/birdeye.py +0 -224
  83. agent_borg-3.3.2/borg/defi/api_clients/cache.py +0 -282
  84. agent_borg-3.3.2/borg/defi/api_clients/defillama.py +0 -211
  85. agent_borg-3.3.2/borg/defi/api_clients/dexscreener.py +0 -167
  86. agent_borg-3.3.2/borg/defi/api_clients/goplus.py +0 -401
  87. agent_borg-3.3.2/borg/defi/api_clients/helius.py +0 -310
  88. agent_borg-3.3.2/borg/defi/cli.py +0 -161
  89. agent_borg-3.3.2/borg/defi/cron/__init__.py +0 -64
  90. agent_borg-3.3.2/borg/defi/cron/alpha_cron.py +0 -177
  91. agent_borg-3.3.2/borg/defi/cron/delivery.py +0 -215
  92. agent_borg-3.3.2/borg/defi/cron/liquidation_cron.py +0 -66
  93. agent_borg-3.3.2/borg/defi/cron/live_scans.py +0 -442
  94. agent_borg-3.3.2/borg/defi/cron/portfolio_cron.py +0 -106
  95. agent_borg-3.3.2/borg/defi/cron/risk_cron.py +0 -144
  96. agent_borg-3.3.2/borg/defi/cron/state.py +0 -182
  97. agent_borg-3.3.2/borg/defi/cron/whale_cron.py +0 -110
  98. agent_borg-3.3.2/borg/defi/cron/yield_cron.py +0 -106
  99. agent_borg-3.3.2/borg/defi/data_models.py +0 -447
  100. agent_borg-3.3.2/borg/defi/dojo_bridge.py +0 -696
  101. agent_borg-3.3.2/borg/defi/liquidation_watcher.py +0 -682
  102. agent_borg-3.3.2/borg/defi/lp_manager.py +0 -868
  103. agent_borg-3.3.2/borg/defi/mcp_tools.py +0 -158
  104. agent_borg-3.3.2/borg/defi/mev/__init__.py +0 -25
  105. agent_borg-3.3.2/borg/defi/mev/flashbots.py +0 -234
  106. agent_borg-3.3.2/borg/defi/mev/jito.py +0 -169
  107. agent_borg-3.3.2/borg/defi/portfolio_monitor.py +0 -681
  108. agent_borg-3.3.2/borg/defi/risk_engine.py +0 -725
  109. agent_borg-3.3.2/borg/defi/security/__init__.py +0 -36
  110. agent_borg-3.3.2/borg/defi/security/keystore.py +0 -559
  111. agent_borg-3.3.2/borg/defi/security/tx_guard.py +0 -581
  112. agent_borg-3.3.2/borg/defi/strategy_backtester.py +0 -814
  113. agent_borg-3.3.2/borg/defi/strategy_selector.py +0 -702
  114. agent_borg-3.3.2/borg/defi/swap_executor.py +0 -1438
  115. agent_borg-3.3.2/borg/defi/tests/__init__.py +0 -1
  116. agent_borg-3.3.2/borg/defi/tests/test_alchemy.py +0 -426
  117. agent_borg-3.3.2/borg/defi/tests/test_alpha_signal.py +0 -905
  118. agent_borg-3.3.2/borg/defi/tests/test_api_clients.py +0 -558
  119. agent_borg-3.3.2/borg/defi/tests/test_arkham.py +0 -651
  120. agent_borg-3.3.2/borg/defi/tests/test_base_client.py +0 -292
  121. agent_borg-3.3.2/borg/defi/tests/test_cache.py +0 -503
  122. agent_borg-3.3.2/borg/defi/tests/test_cli.py +0 -279
  123. agent_borg-3.3.2/borg/defi/tests/test_cron.py +0 -708
  124. agent_borg-3.3.2/borg/defi/tests/test_cron_delivery.py +0 -246
  125. agent_borg-3.3.2/borg/defi/tests/test_cron_state.py +0 -315
  126. agent_borg-3.3.2/borg/defi/tests/test_data_models.py +0 -754
  127. agent_borg-3.3.2/borg/defi/tests/test_dojo_bridge.py +0 -976
  128. agent_borg-3.3.2/borg/defi/tests/test_e2e_live.py +0 -304
  129. agent_borg-3.3.2/borg/defi/tests/test_goplus.py +0 -469
  130. agent_borg-3.3.2/borg/defi/tests/test_keystore_unit.py +0 -536
  131. agent_borg-3.3.2/borg/defi/tests/test_liquidation_watcher.py +0 -776
  132. agent_borg-3.3.2/borg/defi/tests/test_live_scans.py +0 -1048
  133. agent_borg-3.3.2/borg/defi/tests/test_lp_manager.py +0 -740
  134. agent_borg-3.3.2/borg/defi/tests/test_mcp_tools.py +0 -335
  135. agent_borg-3.3.2/borg/defi/tests/test_mev.py +0 -721
  136. agent_borg-3.3.2/borg/defi/tests/test_portfolio_monitor.py +0 -621
  137. agent_borg-3.3.2/borg/defi/tests/test_risk_engine.py +0 -729
  138. agent_borg-3.3.2/borg/defi/tests/test_strategy_backtester.py +0 -728
  139. agent_borg-3.3.2/borg/defi/tests/test_strategy_selector.py +0 -1009
  140. agent_borg-3.3.2/borg/defi/tests/test_swap_executor.py +0 -1219
  141. agent_borg-3.3.2/borg/defi/tests/test_tx_guard_unit.py +0 -651
  142. agent_borg-3.3.2/borg/defi/tests/test_v2_borg_bridge.py +0 -374
  143. agent_borg-3.3.2/borg/defi/tests/test_v2_circuit_breaker.py +0 -590
  144. agent_borg-3.3.2/borg/defi/tests/test_v2_drift.py +0 -393
  145. agent_borg-3.3.2/borg/defi/tests/test_v2_integration.py +0 -610
  146. agent_borg-3.3.2/borg/defi/tests/test_v2_models.py +0 -537
  147. agent_borg-3.3.2/borg/defi/tests/test_v2_outcome_store.py +0 -364
  148. agent_borg-3.3.2/borg/defi/tests/test_v2_pack_store.py +0 -379
  149. agent_borg-3.3.2/borg/defi/tests/test_v2_recommender.py +0 -859
  150. agent_borg-3.3.2/borg/defi/tests/test_v2_reputation.py +0 -413
  151. agent_borg-3.3.2/borg/defi/tests/test_v2_seed_packs.py +0 -285
  152. agent_borg-3.3.2/borg/defi/tests/test_v2_warnings.py +0 -428
  153. agent_borg-3.3.2/borg/defi/tests/test_whale_tracker.py +0 -515
  154. agent_borg-3.3.2/borg/defi/tests/test_yield_scanner.py +0 -593
  155. agent_borg-3.3.2/borg/defi/v2/__init__.py +0 -27
  156. agent_borg-3.3.2/borg/defi/v2/borg_bridge.py +0 -300
  157. agent_borg-3.3.2/borg/defi/v2/circuit_breaker.py +0 -397
  158. agent_borg-3.3.2/borg/defi/v2/daily_brief.py +0 -129
  159. agent_borg-3.3.2/borg/defi/v2/drift.py +0 -151
  160. agent_borg-3.3.2/borg/defi/v2/models.py +0 -388
  161. agent_borg-3.3.2/borg/defi/v2/outcome_store.py +0 -168
  162. agent_borg-3.3.2/borg/defi/v2/pack_store.py +0 -180
  163. agent_borg-3.3.2/borg/defi/v2/recommender.py +0 -582
  164. agent_borg-3.3.2/borg/defi/v2/reputation.py +0 -216
  165. agent_borg-3.3.2/borg/defi/v2/seed_packs.py +0 -399
  166. agent_borg-3.3.2/borg/defi/v2/warnings.py +0 -216
  167. agent_borg-3.3.2/borg/defi/whale_tracker.py +0 -585
  168. agent_borg-3.3.2/borg/defi/yield_scanner.py +0 -405
  169. agent_borg-3.3.2/borg/integrations/__init__.py +0 -0
  170. agent_borg-3.3.2/borg/tests/__init__.py +0 -0
  171. agent_borg-3.3.2/borg/tests/fixtures/openclaw/quick_validate.py +0 -159
  172. agent_borg-3.3.2/borg/tests/test_agent_hook.py +0 -378
  173. agent_borg-3.3.2/borg/tests/test_aggregator.py +0 -468
  174. agent_borg-3.3.2/borg/tests/test_analytics.py +0 -506
  175. agent_borg-3.3.2/borg/tests/test_apply.py +0 -674
  176. agent_borg-3.3.2/borg/tests/test_change_awareness.py +0 -360
  177. agent_borg-3.3.2/borg/tests/test_classify_error.py +0 -359
  178. agent_borg-3.3.2/borg/tests/test_cli.py +0 -669
  179. agent_borg-3.3.2/borg/tests/test_conditions.py +0 -490
  180. agent_borg-3.3.2/borg/tests/test_contextual_selector.py +0 -957
  181. agent_borg-3.3.2/borg/tests/test_convert.py +0 -353
  182. agent_borg-3.3.2/borg/tests/test_convert_openclaw.py +0 -729
  183. agent_borg-3.3.2/borg/tests/test_dirs.py +0 -55
  184. agent_borg-3.3.2/borg/tests/test_dojo_pipeline.py +0 -1000
  185. agent_borg-3.3.2/borg/tests/test_e2e_learning_loop.py +0 -1122
  186. agent_borg-3.3.2/borg/tests/test_e2e_learning_loop_v3.py +0 -987
  187. agent_borg-3.3.2/borg/tests/test_failure_memory.py +0 -528
  188. agent_borg-3.3.2/borg/tests/test_feedback_loop.py +0 -1175
  189. agent_borg-3.3.2/borg/tests/test_fleet_syncer.py +0 -400
  190. agent_borg-3.3.2/borg/tests/test_generate.py +0 -303
  191. agent_borg-3.3.2/borg/tests/test_generator.py +0 -346
  192. agent_borg-3.3.2/borg/tests/test_golden_queries.py +0 -95
  193. agent_borg-3.3.2/borg/tests/test_invariants.py +0 -98
  194. agent_borg-3.3.2/borg/tests/test_mcp_hardening.py +0 -296
  195. agent_borg-3.3.2/borg/tests/test_mcp_server.py +0 -861
  196. agent_borg-3.3.2/borg/tests/test_mcp_server_extended.py +0 -2073
  197. agent_borg-3.3.2/borg/tests/test_mutation_engine.py +0 -1017
  198. agent_borg-3.3.2/borg/tests/test_nudge.py +0 -481
  199. agent_borg-3.3.2/borg/tests/test_observe_search_roundtrip.py +0 -151
  200. agent_borg-3.3.2/borg/tests/test_openclaw_converter.py +0 -454
  201. agent_borg-3.3.2/borg/tests/test_pack_compatibility.py +0 -359
  202. agent_borg-3.3.2/borg/tests/test_perf_candidate_cache.py +0 -58
  203. agent_borg-3.3.2/borg/tests/test_privacy.py +0 -362
  204. agent_borg-3.3.2/borg/tests/test_proof_gates.py +0 -486
  205. agent_borg-3.3.2/borg/tests/test_publish.py +0 -581
  206. agent_borg-3.3.2/borg/tests/test_publish_flow_debug.py +0 -63
  207. agent_borg-3.3.2/borg/tests/test_publish_flow_integration.py +0 -279
  208. agent_borg-3.3.2/borg/tests/test_publish_sybil.py +0 -428
  209. agent_borg-3.3.2/borg/tests/test_pull_network.py +0 -182
  210. agent_borg-3.3.2/borg/tests/test_reputation.py +0 -430
  211. agent_borg-3.3.2/borg/tests/test_reputation_integration.py +0 -1080
  212. agent_borg-3.3.2/borg/tests/test_safety.py +0 -564
  213. agent_borg-3.3.2/borg/tests/test_schema.py +0 -435
  214. agent_borg-3.3.2/borg/tests/test_search.py +0 -1330
  215. agent_borg-3.3.2/borg/tests/test_semantic_search.py +0 -423
  216. agent_borg-3.3.2/borg/tests/test_session.py +0 -570
  217. agent_borg-3.3.2/borg/tests/test_start_signals.py +0 -375
  218. agent_borg-3.3.2/borg/tests/test_store.py +0 -946
  219. agent_borg-3.3.2/borg/tests/test_store_concurrency.py +0 -344
  220. agent_borg-3.3.2/borg/tests/test_telemetry.py +0 -410
  221. agent_borg-3.3.2/borg/tests/test_uri.py +0 -263
  222. agent_borg-3.3.2/borg/tests/test_v3_integration.py +0 -707
  223. agent_borg-3.3.2/borg/tests/test_version_consistency.py +0 -27
  224. agent_borg-3.3.2/borg/tests/test_wiring.py +0 -312
  225. agent_borg-3.3.2/pyproject.toml +0 -47
  226. agent_borg-3.3.2/tests/test_e2e_verify.py +0 -845
  227. {agent_borg-3.3.2 → agent_borg-3.3.4}/agent_borg.egg-info/dependency_links.txt +0 -0
  228. {agent_borg-3.3.2 → agent_borg-3.3.4}/agent_borg.egg-info/top_level.txt +0 -0
  229. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmark/skills/test_skills.py +0 -0
  230. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/__init__.py +0 -0
  231. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/report.py +0 -0
  232. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/runner.py +0 -0
  233. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/scorer.py +0 -0
  234. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/tasks.py +0 -0
  235. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/tests/__init__.py +0 -0
  236. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/benchmarks/tests/test_benchmarks.py +0 -0
  237. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/agentskills_converter.py +0 -0
  238. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/aggregator.py +0 -0
  239. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/bm25_index.py +0 -0
  240. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/causal.py +0 -0
  241. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/changes.py +0 -0
  242. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/clustering.py +0 -0
  243. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/cold_start.py +0 -0
  244. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/conditions.py +0 -0
  245. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/contextual_selector.py +0 -0
  246. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/negative_traces.py +0 -0
  247. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/safety.py +0 -0
  248. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/schema.py +0 -0
  249. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/seed_loader.py +0 -0
  250. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/seeds.py +0 -0
  251. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/semantic_search.py +0 -0
  252. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/signals.py +0 -0
  253. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/stack.py +0 -0
  254. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/synthesis.py +0 -0
  255. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/core/temporal.py +0 -0
  256. {agent_borg-3.3.2/borg/core → agent_borg-3.3.4/borg/db}/__init__.py +0 -0
  257. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/db/analytics.py +0 -0
  258. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/db/reputation.py +0 -0
  259. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/__init__.py +0 -0
  260. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/auto_fixer.py +0 -0
  261. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/cron_runner.py +0 -0
  262. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/data_models.py +0 -0
  263. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/failure_classifier.py +0 -0
  264. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/learning_curve.py +0 -0
  265. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/pipeline.py +0 -0
  266. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/report_generator.py +0 -0
  267. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/session_reader.py +0 -0
  268. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/skill_gap_detector.py +0 -0
  269. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/__init__.py +0 -0
  270. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_auto_fixer.py +0 -0
  271. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_failure_classifier.py +0 -0
  272. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_learning_curve.py +0 -0
  273. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_pipeline.py +0 -0
  274. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_report_generator.py +0 -0
  275. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_session_reader.py +0 -0
  276. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/dojo/tests/test_skill_gap_detector.py +0 -0
  277. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/eval/__init__.py +0 -0
  278. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/eval/ab_test.py +0 -0
  279. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/eval/e1a_seed_pack_validation.py +0 -0
  280. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/eval/production_smoke_test.py +0 -0
  281. {agent_borg-3.3.2/borg/db → agent_borg-3.3.4/borg/integrations}/__init__.py +0 -0
  282. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/integrations/agent_hook.py +0 -0
  283. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/integrations/http_server.py +0 -0
  284. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/integrations/nudge.py +0 -0
  285. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/borg-autopilot/SKILL.md +0 -0
  286. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/circular-dependency-migration.md +0 -0
  287. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/code-review.md +0 -0
  288. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/collective_seed.json +0 -0
  289. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/configuration-error.md +0 -0
  290. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/defi-risk-check.md +0 -0
  291. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/defi-yield-strategy.md +0 -0
  292. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/extended_seeds.yaml +0 -0
  293. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/import-cycle.md +0 -0
  294. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/migration-state-desync.md +0 -0
  295. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/missing-dependency.md +0 -0
  296. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/missing-foreign-key.md +0 -0
  297. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/null-pointer-chain.md +0 -0
  298. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/bash-permission-denied.yaml +0 -0
  299. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/django-circular-dependency.yaml +0 -0
  300. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/django-migration-state.yaml +0 -0
  301. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/django-null-pointer.yaml +0 -0
  302. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/django-schema-drift.yaml +0 -0
  303. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/docker-no-space.yaml +0 -0
  304. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/git-merge-conflict.yaml +0 -0
  305. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/pytest-flaky-test.yaml +0 -0
  306. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/python-import-cycle.yaml +0 -0
  307. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/packs/python-missing-dependency.yaml +0 -0
  308. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/permission-denied.md +0 -0
  309. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/race-condition.md +0 -0
  310. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/schema-drift.md +0 -0
  311. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/systematic-debugging.md +0 -0
  312. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/test-driven-development.md +0 -0
  313. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/timeout-hang.md +0 -0
  314. {agent_borg-3.3.2 → agent_borg-3.3.4}/borg/seeds_data/type-mismatch.md +0 -0
  315. {agent_borg-3.3.2 → agent_borg-3.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Borg contributors
3
+ Copyright (c) 2026 Borg Contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-borg
3
+ Version: 3.3.4
4
+ Summary: Collective memory MCP server for AI coding agents
5
+ Author: Borg contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/borg-farther/Borg-Directory
8
+ Project-URL: Repository, https://github.com/borg-farther/Borg-Directory
9
+ Project-URL: Documentation, https://github.com/borg-farther/Borg-Directory#readme
10
+ Project-URL: Issues, https://github.com/borg-farther/Borg-Directory/issues
11
+ Keywords: mcp,ai-agents,debugging,agent-tools,collective-memory
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Software Development :: Debuggers
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: pyyaml>=6.0
23
+ Provides-Extra: semantic
24
+ Requires-Dist: sentence-transformers>=2.2.0; extra == "semantic"
25
+ Requires-Dist: numpy>=1.24.0; extra == "semantic"
26
+ Requires-Dist: scikit-learn>=1.3.0; extra == "semantic"
27
+ Provides-Extra: embeddings
28
+ Requires-Dist: sentence-transformers>=2.2.0; extra == "embeddings"
29
+ Requires-Dist: numpy>=1.24.0; extra == "embeddings"
30
+ Requires-Dist: scikit-learn>=1.3.0; extra == "embeddings"
31
+ Provides-Extra: crypto
32
+ Requires-Dist: pynacl>=1.5.0; extra == "crypto"
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
35
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "dev"
36
+ Provides-Extra: all
37
+ Requires-Dist: pytest>=8.0.0; extra == "all"
38
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
39
+ Requires-Dist: sentence-transformers>=2.2.0; extra == "all"
40
+ Requires-Dist: numpy>=1.24.0; extra == "all"
41
+ Requires-Dist: scikit-learn>=1.3.0; extra == "all"
42
+ Requires-Dist: pynacl>=1.5.0; extra == "all"
43
+ Dynamic: license-file
44
+
45
+ # Borg — collective memory for AI agents
46
+
47
+ Borg helps coding agents avoid rediscovering the same fixes and dead ends.
48
+ Give it an error or task; it returns an `ACTION / STOP / VERIFY` packet, or a clear `NO_CONFIDENT_MATCH` when it does not know.
49
+
50
+ **Install package:** `agent-borg`
51
+ **Installed CLI:** `borg`
52
+ **MCP server command:** `borg-mcp`
53
+ **Canonical repo:** https://github.com/borg-farther/Borg-Directory
54
+ **Canonical/no-loss policy:** [`docs/CANONICAL_REPO.md`](docs/CANONICAL_REPO.md)
55
+
56
+ Name warning: Borg is the product name and `borg` is the command, but the package you install is **`agent-borg`**.
57
+ Do **not** run `pip install borg`, `brew install borgbackup`, `apt install borgbackup`, `apt-get install borgbackup`, `dnf install borgbackup`, or `pacman -S borg`; those install unrelated Borg/BorgBackup software and will not provide Borg's AI-agent MCP tools.
58
+
59
+ 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.
60
+
61
+ ## For people running AI agents
62
+
63
+ If you run Claude Code, Hermes Agent, OpenClaw, or any MCP-capable coding agent, connect Borg once as a local MCP server.
64
+ Choose the setup path by the **agent host** you run, not by the model inside it. If you use Hermes with Claude, GPT, OpenRouter, or another provider, follow the **Hermes Agent** path.
65
+
66
+ Why: the agent can check prior fixes and dead ends before burning tool calls. It gets `ACTION / STOP / VERIFY`, can avoid repeated failed loops, and should disclose `NO_CONFIDENT_MATCH` when Borg has no good hit.
67
+
68
+ How:
69
+
70
+ 1. Install `agent-borg` and verify `borg-mcp`.
71
+ 2. Connect your agent host:
72
+ - Claude Code: `borg setup-claude --scope user --verify --fix`
73
+ - Hermes Agent, including Hermes with Claude/GPT models: add `mcp_servers.borg` in `~/.hermes/config.yaml`
74
+ - OpenClaw / generic MCP: add `mcpServers.borg` with `"command": "borg-mcp"`
75
+ 3. Restart the agent and ask: `what MCP tools do you have from Borg?`
76
+
77
+ Details: [`docs/MCP_SETUP.md`](docs/MCP_SETUP.md).
78
+
79
+ ---
80
+
81
+ ## 1. Install `agent-borg`
82
+
83
+ Requires Python 3.10+. For normal users, prefer `pipx`: it installs the CLI cleanly without polluting your system Python.
84
+
85
+ ### macOS
86
+
87
+ ```bash
88
+ python3 --version # must be 3.10+
89
+ brew install pipx
90
+ pipx ensurepath
91
+ pipx install agent-borg
92
+ exec "$SHELL" -l
93
+
94
+ command -v borg
95
+ command -v borg-mcp
96
+ borg version
97
+ borg-doctor --json
98
+ ```
99
+
100
+ No Homebrew?
101
+
102
+ ```bash
103
+ python3 -m pip install --user pipx
104
+ python3 -m pipx ensurepath
105
+ python3 -m pipx install agent-borg
106
+ exec "$SHELL" -l
107
+
108
+ command -v borg
109
+ borg version
110
+ borg-doctor --json
111
+ ```
112
+
113
+ Do not run `brew install borgbackup`; that installs BorgBackup, not this project.
114
+
115
+ ### Linux
116
+
117
+ Debian/Ubuntu:
118
+
119
+ ```bash
120
+ python3 --version # must be 3.10+
121
+ sudo apt update
122
+ sudo apt install -y pipx
123
+ pipx ensurepath
124
+ pipx install agent-borg
125
+ exec "$SHELL" -l
126
+
127
+ command -v borg
128
+ command -v borg-mcp
129
+ borg version
130
+ borg-doctor --json
131
+ ```
132
+
133
+ Fedora/RHEL:
134
+
135
+ ```bash
136
+ sudo dnf install -y pipx
137
+ pipx ensurepath
138
+ pipx install agent-borg
139
+ exec "$SHELL" -l
140
+
141
+ command -v borg
142
+ borg version
143
+ borg-doctor --json
144
+ ```
145
+
146
+ Arch:
147
+
148
+ ```bash
149
+ sudo pacman -Syu --needed python-pipx
150
+ pipx ensurepath
151
+ pipx install agent-borg
152
+ exec "$SHELL" -l
153
+
154
+ command -v borg
155
+ borg version
156
+ borg-doctor --json
157
+ ```
158
+
159
+ If your distro has no `pipx` package:
160
+
161
+ ```bash
162
+ python3 -m pip install --user pipx
163
+ python3 -m pipx ensurepath
164
+ python3 -m pipx install agent-borg
165
+ exec "$SHELL" -l
166
+
167
+ command -v borg
168
+ borg version
169
+ borg-doctor --json
170
+ ```
171
+
172
+ Do not run `apt install borgbackup`, `apt-get install borgbackup`, `dnf install borgbackup`, or `pacman -S borg`; those install BorgBackup/other packages, not this project.
173
+
174
+ ### Windows PowerShell
175
+
176
+ ```powershell
177
+ py -3 --version # must be 3.10+
178
+ py -m pip install --user pipx
179
+ py -m pipx ensurepath
180
+ py -m pipx install agent-borg
181
+ ```
182
+
183
+ Close and reopen PowerShell, then verify:
184
+
185
+ ```powershell
186
+ where.exe borg
187
+ where.exe borg-mcp
188
+ borg version
189
+ borg-doctor --json
190
+ ```
191
+
192
+ If `py` is unavailable, replace `py` with `python`.
193
+
194
+ ### Optional Python-environment install
195
+
196
+ If you intentionally want Borg inside the active Python environment instead of an isolated CLI install:
197
+
198
+ ```bash
199
+ python3 -m pip install agent-borg
200
+ python3 -m pip install 'agent-borg[embeddings]' # optional semantic search
201
+ python3 -m pip install 'agent-borg[crypto]' # optional Ed25519 signing support
202
+ python3 -m pip install 'agent-borg[all]' # optional dev + semantic + crypto
203
+ ```
204
+
205
+ Windows PowerShell:
206
+
207
+ ```powershell
208
+ py -m pip install agent-borg
209
+ py -m pip install "agent-borg[embeddings]"
210
+ py -m pip install "agent-borg[crypto]"
211
+ py -m pip install "agent-borg[all]"
212
+ ```
213
+
214
+ For controlled or offline environments:
215
+
216
+ ```bash
217
+ python -m pip download agent-borg -d ./wheelhouse
218
+ python -m pip install --no-index --find-links ./wheelhouse agent-borg
219
+ borg version
220
+ borg-doctor --json
221
+ ```
222
+
223
+ Full install guide: [`docs/INSTALL.md`](docs/INSTALL.md).
224
+
225
+ ---
226
+
227
+ ## 2. First useful command
228
+
229
+ ```bash
230
+ borg rescue "ModuleNotFoundError: No module named flask"
231
+ ```
232
+
233
+ Expected shape:
234
+
235
+ ```text
236
+ ACTION: what to try next
237
+ STOP: what dead-end to avoid
238
+ VERIFY: exact check to rerun
239
+ CONFIDENCE: tested / observed / inferred / NO_CONFIDENT_MATCH
240
+ ```
241
+
242
+ More day-one commands:
243
+
244
+ ```bash
245
+ pytest -q 2>&1 | borg rescue --json
246
+ borg search "django migration table already exists"
247
+ borg try systematic-debugging
248
+ borg apply systematic-debugging --task "Fix Django migration table already exists error"
249
+ borg first-10 --json
250
+ ```
251
+
252
+ Python API:
253
+
254
+ ```python
255
+ import borg
256
+
257
+ hits = borg.check("TypeError: unsupported operand type(s)", top_k=3)
258
+ for hit in hits:
259
+ print(hit.get("name"), hit.get("tier"))
260
+ ```
261
+
262
+ ---
263
+
264
+ ## 3. Connect an agent with MCP
265
+
266
+ Prerequisite: `borg version` and `borg-doctor --json` pass in the same environment that launches your agent host.
267
+
268
+ Claude Code one-command setup:
269
+
270
+ ```bash
271
+ borg setup-claude --scope user --verify --fix
272
+ ```
273
+
274
+ Expected output includes:
275
+
276
+ ```text
277
+ Verify: PASS (initialize handshake ok)
278
+ ```
279
+
280
+ Then fully quit and restart Claude Code so it reloads PATH and MCP config.
281
+ In a new Claude Code session, ask:
282
+
283
+ ```text
284
+ what MCP tools do you have from Borg?
285
+ ```
286
+
287
+ Expected: Claude lists Borg tools such as `borg_rescue`, `borg_observe`, and `borg_search`, or `/mcp list` shows a `borg` server.
288
+
289
+ Hermes Agent uses `mcp_servers.borg` in `~/.hermes/config.yaml`. OpenClaw and most other MCP-capable agents use an `mcpServers.borg` JSON block.
290
+
291
+ Manual MCP config for any stdio MCP client:
292
+
293
+ ```json
294
+ {
295
+ "mcpServers": {
296
+ "borg": {
297
+ "command": "borg-mcp",
298
+ "args": [],
299
+ "env": { "BORG_HOME": "/absolute/path/to/.borg" }
300
+ }
301
+ }
302
+ }
303
+ ```
304
+
305
+ If the MCP client cannot find `borg-mcp`, first locate it:
306
+
307
+ macOS/Linux:
308
+
309
+ ```bash
310
+ command -v borg-mcp
311
+ ```
312
+
313
+ Windows PowerShell:
314
+
315
+ ```powershell
316
+ where.exe borg-mcp
317
+ ```
318
+
319
+ Then use that absolute path as the MCP `command`. Avoid bare `python`/`python3` in MCP config unless you are certain that exact interpreter has `agent-borg` installed.
320
+ Use absolute paths in MCP env blocks. Do not rely on `~` expansion inside MCP clients.
321
+
322
+ More setup detail: [`docs/MCP_SETUP.md`](docs/MCP_SETUP.md).
323
+
324
+ ---
325
+
326
+ ## 4. Prime the agent
327
+
328
+ Put this in `CLAUDE.md`, an agent system prompt, or the first user message:
329
+
330
+ ```text
331
+ 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, disclose NO_CONFIDENT_MATCH or weak guidance, and verify with the exact failing command or smallest regression test. After the outcome, record it with borg_feedback if you used a pack session, or borg_record_failure if you are recording a concrete error-pattern success/failure.
332
+ ```
333
+
334
+ Why: agents often do not discover optional tools unless explicitly primed.
335
+
336
+ ---
337
+
338
+ ## 5. What is ready now
339
+
340
+ Ready for **controlled first-10 beta sharing**:
341
+
342
+ - Install, CLI, Python API, and MCP entrypoints are present.
343
+ - First-user rescue path returns ACTION / STOP / VERIFY.
344
+ - Security/privacy/prompt-injection surface: PASS.
345
+ - GitHub CI and security gates are green on the current default branch.
346
+ - First-10 beta contract is published: [`docs/FIRST_10_BETA_READINESS.md`](docs/FIRST_10_BETA_READINESS.md).
347
+
348
+ Not yet claimed:
349
+
350
+ - Statistically significant agent-level success lift.
351
+ - Real external-user network effects.
352
+ - Public self-serve launch readiness.
353
+ - Broad non-Python coverage.
354
+ - Global/federated multi-node reliability.
355
+
356
+ Public self-serve launch remains gated by real external-user evidence. Current threshold: At least 6 of the first 10 users get one relevant ACTION/STOP/VERIFY moment without maintainer handholding, and every miss is recorded as NO_CONFIDENT_MATCH or explicit negative feedback instead of being hidden.
357
+
358
+ Current public status: [`docs/READINESS.md`](docs/READINESS.md).
359
+
360
+ ---
361
+
362
+ ## 6. Security and privacy
363
+
364
+ Start here:
365
+
366
+ - [`docs/SECURITY_HARDENING_BASELINE.md`](docs/SECURITY_HARDENING_BASELINE.md)
367
+ - [`docs/PRIVACY_MODEL.md`](docs/PRIVACY_MODEL.md)
368
+ - [`docs/PROMPT_INJECTION_THREAT_MODEL.md`](docs/PROMPT_INJECTION_THREAT_MODEL.md)
369
+ - [`docs/TRUST_AND_PROMOTION.md`](docs/TRUST_AND_PROMOTION.md)
370
+ - [`docs/REVOCATION_AND_DELETION.md`](docs/REVOCATION_AND_DELETION.md)
371
+
372
+ Do not paste API keys, passwords, cookies, tokens, private repo contents, customer data, or unsanitized private stack traces into public issues.
373
+
374
+ ---
375
+
376
+ ## 7. Clean evaluator smoke path
377
+
378
+ Use the package name `agent-borg`; the CLI command after install is `borg`. Do not substitute `borg`, `borgbackup`, Homebrew BorgBackup, or apt/dnf/pacman BorgBackup.
379
+
380
+ ```bash
381
+ python3 -m venv /tmp/borg-smoke
382
+ . /tmp/borg-smoke/bin/activate
383
+ python -m pip install --upgrade pip
384
+ python -m pip install agent-borg
385
+ borg version
386
+ borg-doctor --json
387
+ borg rescue "ModuleNotFoundError: No module named flask" --json
388
+ borg search "django migration table already exists"
389
+ borg first-10 --json
390
+ ```
391
+
392
+ Then connect MCP with `borg setup-claude --scope user --verify --fix`, fully restart Claude Code, and verify Claude lists Borg tools such as `borg_rescue`, `borg_observe`, and `borg_search`.
393
+
394
+ A good first evaluation is whether Borg reduces redundant investigation, not whether it magically solves every bug.
395
+
396
+ ---
397
+
398
+ ## Docs
399
+
400
+ - [`docs/INSTALL.md`](docs/INSTALL.md) — OS-specific install guide and wrong-package troubleshooting
401
+ - [`docs/QUICKSTART.md`](docs/QUICKSTART.md) — short copy-paste path
402
+ - [`docs/TRYING_BORG.md`](docs/TRYING_BORG.md) — detailed first-user setup
403
+ - [`docs/MCP_SETUP.md`](docs/MCP_SETUP.md) — MCP setup details
404
+ - [`docs/READINESS.md`](docs/READINESS.md) — current readiness status
405
+ - [`docs/archive/`](docs/archive/) — historical audits, experiments, and internal planning artifacts; not current product claims
406
+
407
+ ---
408
+
409
+ ## License
410
+
411
+ MIT. See [`LICENSE`](LICENSE).