chimera-agent 0.4.1__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.
- chimera_agent-0.4.1/.dockerignore +24 -0
- chimera_agent-0.4.1/.env.example +148 -0
- chimera_agent-0.4.1/.gitattributes +5 -0
- chimera_agent-0.4.1/.github/FUNDING.yml +3 -0
- chimera_agent-0.4.1/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- chimera_agent-0.4.1/.github/ISSUE_TEMPLATE/config.yml +8 -0
- chimera_agent-0.4.1/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- chimera_agent-0.4.1/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- chimera_agent-0.4.1/.github/workflows/ci.yml +68 -0
- chimera_agent-0.4.1/.github/workflows/publish.yml +35 -0
- chimera_agent-0.4.1/.github/workflows/quality-bench.yml +39 -0
- chimera_agent-0.4.1/.gitignore +48 -0
- chimera_agent-0.4.1/CHANGELOG.md +606 -0
- chimera_agent-0.4.1/CODE_OF_CONDUCT.md +57 -0
- chimera_agent-0.4.1/CONTRIBUTING.md +35 -0
- chimera_agent-0.4.1/Dockerfile +32 -0
- chimera_agent-0.4.1/LICENSE +201 -0
- chimera_agent-0.4.1/PKG-INFO +311 -0
- chimera_agent-0.4.1/README.de.md +248 -0
- chimera_agent-0.4.1/README.es.md +247 -0
- chimera_agent-0.4.1/README.fr.md +248 -0
- chimera_agent-0.4.1/README.ja.md +241 -0
- chimera_agent-0.4.1/README.md +253 -0
- chimera_agent-0.4.1/README.pt-BR.md +247 -0
- chimera_agent-0.4.1/README.zh-CN.md +236 -0
- chimera_agent-0.4.1/SECURITY.md +108 -0
- chimera_agent-0.4.1/VISION.md +64 -0
- chimera_agent-0.4.1/assets/favicon.ico +0 -0
- chimera_agent-0.4.1/assets/favicon.png +0 -0
- chimera_agent-0.4.1/assets/icon.png +0 -0
- chimera_agent-0.4.1/assets/logo-wide.png +0 -0
- chimera_agent-0.4.1/assets/logo.png +0 -0
- chimera_agent-0.4.1/bench/local_lift/README.md +44 -0
- chimera_agent-0.4.1/bench/local_lift/RESULTS.md +84 -0
- chimera_agent-0.4.1/bench/local_lift/run_ab.py +171 -0
- chimera_agent-0.4.1/bench/local_lift/run_ci.py +121 -0
- chimera_agent-0.4.1/bench/local_lift/tasks.py +199 -0
- chimera_agent-0.4.1/bench/terminal_bench/README.md +90 -0
- chimera_agent-0.4.1/bench/terminal_bench/chimera_agent.py +25 -0
- chimera_agent-0.4.1/bench/terminal_bench/chimera_installed_agent.py +120 -0
- chimera_agent-0.4.1/bench/terminal_bench/collect.py +73 -0
- chimera_agent-0.4.1/bench/terminal_bench/run_ab.sh +69 -0
- chimera_agent-0.4.1/bench/terminal_bench/setup.sh +37 -0
- chimera_agent-0.4.1/chimera/__init__.py +19 -0
- chimera_agent-0.4.1/chimera/cli/__init__.py +1 -0
- chimera_agent-0.4.1/chimera/cli/main.py +3239 -0
- chimera_agent-0.4.1/chimera/config.py +281 -0
- chimera_agent-0.4.1/chimera/core/__init__.py +90 -0
- chimera_agent-0.4.1/chimera/core/agent.py +194 -0
- chimera_agent-0.4.1/chimera/core/autonomous.py +585 -0
- chimera_agent-0.4.1/chimera/core/checklist.py +115 -0
- chimera_agent-0.4.1/chimera/core/checkpoint.py +98 -0
- chimera_agent-0.4.1/chimera/core/contract.py +122 -0
- chimera_agent-0.4.1/chimera/core/events.py +53 -0
- chimera_agent-0.4.1/chimera/core/explorer.py +197 -0
- chimera_agent-0.4.1/chimera/core/ledger.py +135 -0
- chimera_agent-0.4.1/chimera/core/planner.py +53 -0
- chimera_agent-0.4.1/chimera/core/repomap.py +101 -0
- chimera_agent-0.4.1/chimera/core/runstate.py +88 -0
- chimera_agent-0.4.1/chimera/core/spine.py +85 -0
- chimera_agent-0.4.1/chimera/core/strong_verify.py +63 -0
- chimera_agent-0.4.1/chimera/core/subagent.py +96 -0
- chimera_agent-0.4.1/chimera/core/supervisor.py +104 -0
- chimera_agent-0.4.1/chimera/core/verify.py +60 -0
- chimera_agent-0.4.1/chimera/core/worktree.py +124 -0
- chimera_agent-0.4.1/chimera/deliver.py +41 -0
- chimera_agent-0.4.1/chimera/ecosystem/__init__.py +64 -0
- chimera_agent-0.4.1/chimera/ecosystem/change_queue.py +58 -0
- chimera_agent-0.4.1/chimera/ecosystem/events.py +53 -0
- chimera_agent-0.4.1/chimera/ecosystem/evolution.py +258 -0
- chimera_agent-0.4.1/chimera/ecosystem/loop.py +216 -0
- chimera_agent-0.4.1/chimera/ecosystem/meta_agent.py +119 -0
- chimera_agent-0.4.1/chimera/ecosystem/spec.py +100 -0
- chimera_agent-0.4.1/chimera/ecosystem/trajectory.py +119 -0
- chimera_agent-0.4.1/chimera/eval/__init__.py +137 -0
- chimera_agent-0.4.1/chimera/eval/anytime.py +58 -0
- chimera_agent-0.4.1/chimera/eval/bench_ab.py +110 -0
- chimera_agent-0.4.1/chimera/eval/chained.py +72 -0
- chimera_agent-0.4.1/chimera/eval/continuous.py +293 -0
- chimera_agent-0.4.1/chimera/eval/evoclaw.py +126 -0
- chimera_agent-0.4.1/chimera/eval/fusion_ab.py +109 -0
- chimera_agent-0.4.1/chimera/eval/hard.py +88 -0
- chimera_agent-0.4.1/chimera/eval/injection.py +154 -0
- chimera_agent-0.4.1/chimera/eval/memory_bench.py +109 -0
- chimera_agent-0.4.1/chimera/eval/rubric.py +95 -0
- chimera_agent-0.4.1/chimera/eval/rubric_grade.py +131 -0
- chimera_agent-0.4.1/chimera/eval/sandbox.py +151 -0
- chimera_agent-0.4.1/chimera/eval/scenarios.py +99 -0
- chimera_agent-0.4.1/chimera/eval/schema_ab.py +139 -0
- chimera_agent-0.4.1/chimera/eval/skillcard_ab.py +165 -0
- chimera_agent-0.4.1/chimera/eval/spec_tuning.py +28 -0
- chimera_agent-0.4.1/chimera/eval/swe_bench.py +157 -0
- chimera_agent-0.4.1/chimera/eval/terminal_bench.py +143 -0
- chimera_agent-0.4.1/chimera/evolution/__init__.py +79 -0
- chimera_agent-0.4.1/chimera/evolution/attribution.py +67 -0
- chimera_agent-0.4.1/chimera/evolution/auto_evolve.py +185 -0
- chimera_agent-0.4.1/chimera/evolution/card_retrieval.py +114 -0
- chimera_agent-0.4.1/chimera/evolution/collective.py +90 -0
- chimera_agent-0.4.1/chimera/evolution/edit_diagnostic.py +70 -0
- chimera_agent-0.4.1/chimera/evolution/evolver.py +196 -0
- chimera_agent-0.4.1/chimera/evolution/experience.py +109 -0
- chimera_agent-0.4.1/chimera/evolution/gepa.py +305 -0
- chimera_agent-0.4.1/chimera/evolution/learned_skill.py +146 -0
- chimera_agent-0.4.1/chimera/evolution/playbook.py +282 -0
- chimera_agent-0.4.1/chimera/evolution/skill_nudges.py +63 -0
- chimera_agent-0.4.1/chimera/evolution/skill_store.py +152 -0
- chimera_agent-0.4.1/chimera/evolution/stagnation.py +150 -0
- chimera_agent-0.4.1/chimera/features.py +109 -0
- chimera_agent-0.4.1/chimera/fusion/__init__.py +33 -0
- chimera_agent-0.4.1/chimera/fusion/consistency.py +154 -0
- chimera_agent-0.4.1/chimera/fusion/engine.py +356 -0
- chimera_agent-0.4.1/chimera/fusion/router.py +213 -0
- chimera_agent-0.4.1/chimera/fusion/verifier_select.py +98 -0
- chimera_agent-0.4.1/chimera/governance/__init__.py +90 -0
- chimera_agent-0.4.1/chimera/governance/actors.py +90 -0
- chimera_agent-0.4.1/chimera/governance/allowlist.py +65 -0
- chimera_agent-0.4.1/chimera/governance/audit.py +40 -0
- chimera_agent-0.4.1/chimera/governance/drift.py +118 -0
- chimera_agent-0.4.1/chimera/governance/governed_tool.py +52 -0
- chimera_agent-0.4.1/chimera/governance/kernel.py +78 -0
- chimera_agent-0.4.1/chimera/governance/ledger.py +240 -0
- chimera_agent-0.4.1/chimera/governance/ledger_tool.py +157 -0
- chimera_agent-0.4.1/chimera/governance/policy.py +91 -0
- chimera_agent-0.4.1/chimera/governance/precedent.py +99 -0
- chimera_agent-0.4.1/chimera/governance/quarantine.py +153 -0
- chimera_agent-0.4.1/chimera/governance/validator.py +79 -0
- chimera_agent-0.4.1/chimera/integrations/__init__.py +54 -0
- chimera_agent-0.4.1/chimera/integrations/a2a.py +243 -0
- chimera_agent-0.4.1/chimera/integrations/connectors.py +59 -0
- chimera_agent-0.4.1/chimera/integrations/mcp_client.py +204 -0
- chimera_agent-0.4.1/chimera/integrations/messaging.py +75 -0
- chimera_agent-0.4.1/chimera/integrations/openapi.py +245 -0
- chimera_agent-0.4.1/chimera/interface/__init__.py +10 -0
- chimera_agent-0.4.1/chimera/interface/session.py +103 -0
- chimera_agent-0.4.1/chimera/kanban/__init__.py +26 -0
- chimera_agent-0.4.1/chimera/kanban/board.py +72 -0
- chimera_agent-0.4.1/chimera/kanban/dispatch.py +66 -0
- chimera_agent-0.4.1/chimera/kanban/lanes.py +67 -0
- chimera_agent-0.4.1/chimera/kanban/models.py +24 -0
- chimera_agent-0.4.1/chimera/memory/__init__.py +35 -0
- chimera_agent-0.4.1/chimera/memory/consolidate.py +73 -0
- chimera_agent-0.4.1/chimera/memory/gate.py +52 -0
- chimera_agent-0.4.1/chimera/memory/graph.py +152 -0
- chimera_agent-0.4.1/chimera/memory/manager.py +236 -0
- chimera_agent-0.4.1/chimera/memory/models.py +27 -0
- chimera_agent-0.4.1/chimera/memory/nudges.py +70 -0
- chimera_agent-0.4.1/chimera/memory/semantic.py +68 -0
- chimera_agent-0.4.1/chimera/memory/sqlite_store.py +110 -0
- chimera_agent-0.4.1/chimera/memory/store.py +63 -0
- chimera_agent-0.4.1/chimera/memory/value.py +55 -0
- chimera_agent-0.4.1/chimera/migration/__init__.py +23 -0
- chimera_agent-0.4.1/chimera/migration/base.py +203 -0
- chimera_agent-0.4.1/chimera/migration/importers.py +48 -0
- chimera_agent-0.4.1/chimera/orchestration/__init__.py +57 -0
- chimera_agent-0.4.1/chimera/orchestration/comms.py +58 -0
- chimera_agent-0.4.1/chimera/orchestration/crew.py +255 -0
- chimera_agent-0.4.1/chimera/orchestration/isolation.py +184 -0
- chimera_agent-0.4.1/chimera/orchestration/lifecycle.py +139 -0
- chimera_agent-0.4.1/chimera/orchestration/roles.py +78 -0
- chimera_agent-0.4.1/chimera/pet.py +92 -0
- chimera_agent-0.4.1/chimera/providers/__init__.py +19 -0
- chimera_agent-0.4.1/chimera/providers/cache.py +69 -0
- chimera_agent-0.4.1/chimera/providers/gateway.py +439 -0
- chimera_agent-0.4.1/chimera/sandbox/__init__.py +34 -0
- chimera_agent-0.4.1/chimera/sandbox/base.py +25 -0
- chimera_agent-0.4.1/chimera/sandbox/docker.py +86 -0
- chimera_agent-0.4.1/chimera/sandbox/local.py +53 -0
- chimera_agent-0.4.1/chimera/scheduler/__init__.py +21 -0
- chimera_agent-0.4.1/chimera/scheduler/daemon.py +111 -0
- chimera_agent-0.4.1/chimera/scheduler/engine.py +179 -0
- chimera_agent-0.4.1/chimera/scheduler/learner.py +101 -0
- chimera_agent-0.4.1/chimera/scheduler/models.py +32 -0
- chimera_agent-0.4.1/chimera/scheduler/store.py +72 -0
- chimera_agent-0.4.1/chimera/server/__init__.py +39 -0
- chimera_agent-0.4.1/chimera/server/discord_adapter.py +139 -0
- chimera_agent-0.4.1/chimera/server/gateway.py +89 -0
- chimera_agent-0.4.1/chimera/server/http.py +156 -0
- chimera_agent-0.4.1/chimera/server/mcp_server.py +126 -0
- chimera_agent-0.4.1/chimera/server/signal_adapter.py +96 -0
- chimera_agent-0.4.1/chimera/server/slack_adapter.py +114 -0
- chimera_agent-0.4.1/chimera/server/telegram_adapter.py +112 -0
- chimera_agent-0.4.1/chimera/server/whatsapp.py +104 -0
- chimera_agent-0.4.1/chimera/skills/__init__.py +28 -0
- chimera_agent-0.4.1/chimera/skills/base.py +86 -0
- chimera_agent-0.4.1/chimera/skills/builtin/__init__.py +39 -0
- chimera_agent-0.4.1/chimera/skills/builtin/code_skills.py +76 -0
- chimera_agent-0.4.1/chimera/skills/builtin/echo_skill.py +26 -0
- chimera_agent-0.4.1/chimera/skills/llm_skill.py +46 -0
- chimera_agent-0.4.1/chimera/skills/registry.py +62 -0
- chimera_agent-0.4.1/chimera/skills/retrieval.py +46 -0
- chimera_agent-0.4.1/chimera/telemetry.py +45 -0
- chimera_agent-0.4.1/chimera/tools/__init__.py +41 -0
- chimera_agent-0.4.1/chimera/tools/base.py +42 -0
- chimera_agent-0.4.1/chimera/tools/browser.py +134 -0
- chimera_agent-0.4.1/chimera/tools/browser_playwright.py +88 -0
- chimera_agent-0.4.1/chimera/tools/builtin.py +102 -0
- chimera_agent-0.4.1/chimera/tools/calendar.py +70 -0
- chimera_agent-0.4.1/chimera/tools/code.py +99 -0
- chimera_agent-0.4.1/chimera/tools/documents.py +68 -0
- chimera_agent-0.4.1/chimera/tools/edit.py +153 -0
- chimera_agent-0.4.1/chimera/tools/email.py +88 -0
- chimera_agent-0.4.1/chimera/tools/files.py +77 -0
- chimera_agent-0.4.1/chimera/tools/http.py +37 -0
- chimera_agent-0.4.1/chimera/tools/media.py +113 -0
- chimera_agent-0.4.1/chimera/tools/registry.py +66 -0
- chimera_agent-0.4.1/chimera/tools/research.py +99 -0
- chimera_agent-0.4.1/chimera/tools/schema_compact.py +93 -0
- chimera_agent-0.4.1/chimera/tools/search.py +106 -0
- chimera_agent-0.4.1/chimera/tools/shell.py +80 -0
- chimera_agent-0.4.1/chimera/tools/web.py +57 -0
- chimera_agent-0.4.1/chimera/tools/workspace.py +26 -0
- chimera_agent-0.4.1/chimera/tui/__init__.py +1 -0
- chimera_agent-0.4.1/chimera/tui/app.py +78 -0
- chimera_agent-0.4.1/chimera/workflow/__init__.py +40 -0
- chimera_agent-0.4.1/chimera/workflow/executors.py +82 -0
- chimera_agent-0.4.1/chimera/workflow/models.py +35 -0
- chimera_agent-0.4.1/chimera/workflow/runner.py +91 -0
- chimera_agent-0.4.1/docker/Dockerfile.sandbox +20 -0
- chimera_agent-0.4.1/docker/README.md +39 -0
- chimera_agent-0.4.1/docker-compose.yml +29 -0
- chimera_agent-0.4.1/docs/architecture.md +121 -0
- chimera_agent-0.4.1/docs/benchmarks.md +85 -0
- chimera_agent-0.4.1/docs/deploy.md +178 -0
- chimera_agent-0.4.1/docs/index.md +53 -0
- chimera_agent-0.4.1/docs/mcp.md +143 -0
- chimera_agent-0.4.1/docs/recipes.md +74 -0
- chimera_agent-0.4.1/docs/security.md +45 -0
- chimera_agent-0.4.1/docs/usage.md +603 -0
- chimera_agent-0.4.1/examples/README.md +19 -0
- chimera_agent-0.4.1/examples/email_triage/README.md +73 -0
- chimera_agent-0.4.1/examples/email_triage/triage.yaml +34 -0
- chimera_agent-0.4.1/examples/mcp_github.py +57 -0
- chimera_agent-0.4.1/examples/repo_watchdog/README.md +39 -0
- chimera_agent-0.4.1/examples/repo_watchdog/watch.yaml +22 -0
- chimera_agent-0.4.1/examples/research_brief/README.md +30 -0
- chimera_agent-0.4.1/examples/research_brief/brief.yaml +29 -0
- chimera_agent-0.4.1/examples/spec.yaml +20 -0
- chimera_agent-0.4.1/examples/workflow.yaml +21 -0
- chimera_agent-0.4.1/install.sh +37 -0
- chimera_agent-0.4.1/mkdocs.yml +46 -0
- chimera_agent-0.4.1/pyproject.toml +129 -0
- chimera_agent-0.4.1/tests/conftest.py +25 -0
- chimera_agent-0.4.1/tests/integration/test_live_smoke.py +34 -0
- chimera_agent-0.4.1/tests/mcp_demo_server.py +28 -0
- chimera_agent-0.4.1/tests/test_a2a.py +92 -0
- chimera_agent-0.4.1/tests/test_a2a_stream.py +67 -0
- chimera_agent-0.4.1/tests/test_actors.py +43 -0
- chimera_agent-0.4.1/tests/test_agent.py +156 -0
- chimera_agent-0.4.1/tests/test_agreement_routing.py +75 -0
- chimera_agent-0.4.1/tests/test_allowlist.py +104 -0
- chimera_agent-0.4.1/tests/test_anytime.py +42 -0
- chimera_agent-0.4.1/tests/test_attribution.py +56 -0
- chimera_agent-0.4.1/tests/test_auto_evolve.py +142 -0
- chimera_agent-0.4.1/tests/test_autonomous.py +455 -0
- chimera_agent-0.4.1/tests/test_bench_ab.py +109 -0
- chimera_agent-0.4.1/tests/test_browser.py +104 -0
- chimera_agent-0.4.1/tests/test_card_retrieval.py +90 -0
- chimera_agent-0.4.1/tests/test_checklist.py +179 -0
- chimera_agent-0.4.1/tests/test_checkpoint.py +60 -0
- chimera_agent-0.4.1/tests/test_checkpoint_resume.py +127 -0
- chimera_agent-0.4.1/tests/test_cli.py +314 -0
- chimera_agent-0.4.1/tests/test_collective_skill.py +101 -0
- chimera_agent-0.4.1/tests/test_config.py +39 -0
- chimera_agent-0.4.1/tests/test_contract.py +121 -0
- chimera_agent-0.4.1/tests/test_cron_daemon.py +113 -0
- chimera_agent-0.4.1/tests/test_cron_learner.py +52 -0
- chimera_agent-0.4.1/tests/test_curation_recipes.py +35 -0
- chimera_agent-0.4.1/tests/test_degradation_ci.py +35 -0
- chimera_agent-0.4.1/tests/test_deliver.py +34 -0
- chimera_agent-0.4.1/tests/test_discord_adapter.py +48 -0
- chimera_agent-0.4.1/tests/test_documents.py +70 -0
- chimera_agent-0.4.1/tests/test_drift.py +71 -0
- chimera_agent-0.4.1/tests/test_ecosystem.py +141 -0
- chimera_agent-0.4.1/tests/test_edit_diagnostic.py +43 -0
- chimera_agent-0.4.1/tests/test_edit_tool.py +116 -0
- chimera_agent-0.4.1/tests/test_eval_chained.py +70 -0
- chimera_agent-0.4.1/tests/test_eval_continuous.py +173 -0
- chimera_agent-0.4.1/tests/test_eval_sandbox.py +80 -0
- chimera_agent-0.4.1/tests/test_evoclaw.py +60 -0
- chimera_agent-0.4.1/tests/test_evolution.py +64 -0
- chimera_agent-0.4.1/tests/test_explorer.py +79 -0
- chimera_agent-0.4.1/tests/test_features.py +46 -0
- chimera_agent-0.4.1/tests/test_fusion.py +300 -0
- chimera_agent-0.4.1/tests/test_fusion_ab.py +79 -0
- chimera_agent-0.4.1/tests/test_gateway.py +136 -0
- chimera_agent-0.4.1/tests/test_gepa.py +195 -0
- chimera_agent-0.4.1/tests/test_governance.py +159 -0
- chimera_agent-0.4.1/tests/test_hard_bench.py +64 -0
- chimera_agent-0.4.1/tests/test_injection.py +51 -0
- chimera_agent-0.4.1/tests/test_integrations.py +187 -0
- chimera_agent-0.4.1/tests/test_interface_session.py +118 -0
- chimera_agent-0.4.1/tests/test_interrupt.py +92 -0
- chimera_agent-0.4.1/tests/test_isolated_crew.py +137 -0
- chimera_agent-0.4.1/tests/test_isolation.py +103 -0
- chimera_agent-0.4.1/tests/test_kanban.py +88 -0
- chimera_agent-0.4.1/tests/test_ledger.py +279 -0
- chimera_agent-0.4.1/tests/test_lifecycle.py +80 -0
- chimera_agent-0.4.1/tests/test_mcp_live.py +45 -0
- chimera_agent-0.4.1/tests/test_mcp_server.py +60 -0
- chimera_agent-0.4.1/tests/test_memory.py +181 -0
- chimera_agent-0.4.1/tests/test_memory_bench.py +57 -0
- chimera_agent-0.4.1/tests/test_memory_gate.py +36 -0
- chimera_agent-0.4.1/tests/test_memory_graph.py +45 -0
- chimera_agent-0.4.1/tests/test_memory_value.py +36 -0
- chimera_agent-0.4.1/tests/test_messaging.py +53 -0
- chimera_agent-0.4.1/tests/test_migration.py +121 -0
- chimera_agent-0.4.1/tests/test_native_tools.py +101 -0
- chimera_agent-0.4.1/tests/test_openapi_live.py +77 -0
- chimera_agent-0.4.1/tests/test_orchestration.py +141 -0
- chimera_agent-0.4.1/tests/test_pet.py +61 -0
- chimera_agent-0.4.1/tests/test_planner_supervisor.py +78 -0
- chimera_agent-0.4.1/tests/test_playbook.py +219 -0
- chimera_agent-0.4.1/tests/test_precedent.py +62 -0
- chimera_agent-0.4.1/tests/test_process_filter.py +58 -0
- chimera_agent-0.4.1/tests/test_progress_ledger.py +99 -0
- chimera_agent-0.4.1/tests/test_providers.py +281 -0
- chimera_agent-0.4.1/tests/test_quarantine.py +113 -0
- chimera_agent-0.4.1/tests/test_reference_tools.py +104 -0
- chimera_agent-0.4.1/tests/test_repomap.py +83 -0
- chimera_agent-0.4.1/tests/test_research_code_tools.py +92 -0
- chimera_agent-0.4.1/tests/test_rft_loop.py +153 -0
- chimera_agent-0.4.1/tests/test_rubric.py +43 -0
- chimera_agent-0.4.1/tests/test_rubric_grade.py +126 -0
- chimera_agent-0.4.1/tests/test_sandbox.py +174 -0
- chimera_agent-0.4.1/tests/test_scenarios.py +40 -0
- chimera_agent-0.4.1/tests/test_scheduler.py +106 -0
- chimera_agent-0.4.1/tests/test_schema_ab.py +46 -0
- chimera_agent-0.4.1/tests/test_schema_compact.py +101 -0
- chimera_agent-0.4.1/tests/test_search_tools.py +50 -0
- chimera_agent-0.4.1/tests/test_self_consistency.py +71 -0
- chimera_agent-0.4.1/tests/test_semantic_memory.py +88 -0
- chimera_agent-0.4.1/tests/test_signal_adapter.py +63 -0
- chimera_agent-0.4.1/tests/test_skill_cards.py +62 -0
- chimera_agent-0.4.1/tests/test_skill_evolution.py +142 -0
- chimera_agent-0.4.1/tests/test_skill_nudges.py +43 -0
- chimera_agent-0.4.1/tests/test_skill_stats.py +128 -0
- chimera_agent-0.4.1/tests/test_skillcard_ab.py +54 -0
- chimera_agent-0.4.1/tests/test_skills.py +52 -0
- chimera_agent-0.4.1/tests/test_slack_adapter.py +97 -0
- chimera_agent-0.4.1/tests/test_smoke.py +24 -0
- chimera_agent-0.4.1/tests/test_spec_search.py +47 -0
- chimera_agent-0.4.1/tests/test_spec_tuning.py +39 -0
- chimera_agent-0.4.1/tests/test_spine_experience.py +70 -0
- chimera_agent-0.4.1/tests/test_sqlite_memory.py +60 -0
- chimera_agent-0.4.1/tests/test_stagnation.py +157 -0
- chimera_agent-0.4.1/tests/test_stateful_tools.py +108 -0
- chimera_agent-0.4.1/tests/test_streaming.py +102 -0
- chimera_agent-0.4.1/tests/test_strong_verify.py +122 -0
- chimera_agent-0.4.1/tests/test_subagent.py +55 -0
- chimera_agent-0.4.1/tests/test_swe_bench.py +118 -0
- chimera_agent-0.4.1/tests/test_taint_provenance.py +196 -0
- chimera_agent-0.4.1/tests/test_task_ledger.py +90 -0
- chimera_agent-0.4.1/tests/test_telegram_adapter.py +62 -0
- chimera_agent-0.4.1/tests/test_tier1_skills.py +68 -0
- chimera_agent-0.4.1/tests/test_tools.py +52 -0
- chimera_agent-0.4.1/tests/test_tui.py +90 -0
- chimera_agent-0.4.1/tests/test_verifier_select.py +80 -0
- chimera_agent-0.4.1/tests/test_vision.py +28 -0
- chimera_agent-0.4.1/tests/test_whatsapp.py +115 -0
- chimera_agent-0.4.1/tests/test_workflow.py +87 -0
- chimera_agent-0.4.1/tests/test_worktree.py +85 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Keep the build context small and secrets out of the image.
|
|
2
|
+
.git
|
|
3
|
+
.github
|
|
4
|
+
.venv
|
|
5
|
+
venv
|
|
6
|
+
__pycache__
|
|
7
|
+
*.pyc
|
|
8
|
+
*.pyo
|
|
9
|
+
.pytest_cache
|
|
10
|
+
.mypy_cache
|
|
11
|
+
.ruff_cache
|
|
12
|
+
.chimera
|
|
13
|
+
dist
|
|
14
|
+
build
|
|
15
|
+
*.egg-info
|
|
16
|
+
.env
|
|
17
|
+
.env.*
|
|
18
|
+
!.env.example
|
|
19
|
+
tests
|
|
20
|
+
benchmarks
|
|
21
|
+
docs
|
|
22
|
+
assets
|
|
23
|
+
*.md
|
|
24
|
+
!README.md
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Chimera configuration (copy to .env and fill what you use).
|
|
2
|
+
# All variables are optional at import time — the agent only needs a key
|
|
3
|
+
# for the providers you actually call.
|
|
4
|
+
|
|
5
|
+
# --- Provider keys (use whichever you have) ---
|
|
6
|
+
# Recommended: a single OpenRouter key unlocks 100+ models for the fusion panel.
|
|
7
|
+
OPENROUTER_API_KEY=
|
|
8
|
+
OPENAI_API_KEY=
|
|
9
|
+
ANTHROPIC_API_KEY=
|
|
10
|
+
GEMINI_API_KEY=
|
|
11
|
+
DEEPSEEK_API_KEY=
|
|
12
|
+
|
|
13
|
+
# --- Credential pools (optional): multiple keys per provider, rotated round-robin ---
|
|
14
|
+
# Spreads load and fails over to the next key if one is rate-limited / invalid.
|
|
15
|
+
# When set, the pool replaces the single key above for that provider.
|
|
16
|
+
# e.g. CHIMERA_OPENROUTER_KEYS=sk-or-key1,sk-or-key2,sk-or-key3
|
|
17
|
+
CHIMERA_OPENROUTER_KEYS=
|
|
18
|
+
CHIMERA_OPENAI_KEYS=
|
|
19
|
+
CHIMERA_ANTHROPIC_KEYS=
|
|
20
|
+
CHIMERA_GEMINI_KEYS=
|
|
21
|
+
CHIMERA_DEEPSEEK_KEYS=
|
|
22
|
+
|
|
23
|
+
# --- Default models (LiteLLM-style "provider/model" slugs) ---
|
|
24
|
+
# Single fast model used for Tier 1 and cheap tasks. Any LiteLLM slug works
|
|
25
|
+
# (openai/..., anthropic/..., gemini/..., ollama/..., openrouter/..., etc.).
|
|
26
|
+
CHIMERA_DEFAULT_MODEL=openrouter/openai/gpt-5.5
|
|
27
|
+
|
|
28
|
+
# Custom endpoint for self-hosted / OpenAI-compatible servers (Ollama, vLLM, ...).
|
|
29
|
+
# e.g. CHIMERA_API_BASE=http://localhost:11434 with CHIMERA_DEFAULT_MODEL=ollama/llama3
|
|
30
|
+
CHIMERA_API_BASE=
|
|
31
|
+
|
|
32
|
+
# Comma-separated fallback chain: if the primary model errors, the next is tried.
|
|
33
|
+
# e.g. CHIMERA_FALLBACK_MODELS=openrouter/openai/gpt-4o-mini,ollama/llama3
|
|
34
|
+
CHIMERA_FALLBACK_MODELS=
|
|
35
|
+
|
|
36
|
+
# Execution sandbox for the shell tool: local (host, default) or docker (isolated).
|
|
37
|
+
# docker runs each command in an ephemeral, network-off container; see docker/README.md.
|
|
38
|
+
CHIMERA_SANDBOX=local
|
|
39
|
+
CHIMERA_SANDBOX_IMAGE=python:3.12-slim
|
|
40
|
+
# Optional hardened OCI runtime for the docker sandbox. Set to runsc to run under gVisor
|
|
41
|
+
# (userspace kernel; intercepts syscalls, shrinks host-kernel attack surface). Requires
|
|
42
|
+
# gVisor installed on the host. Empty = the daemon default (runc).
|
|
43
|
+
CHIMERA_SANDBOX_RUNTIME=
|
|
44
|
+
|
|
45
|
+
# Per-session tool allowlist/denylist (comma-separated tool names). An allowlist grants
|
|
46
|
+
# ONLY those tools (everything else is dropped, not just gated); empty = no restriction.
|
|
47
|
+
# The denylist removes tools even if allowed. CLI --allow-tools/--deny-tools override these.
|
|
48
|
+
CHIMERA_TOOL_ALLOWLIST=
|
|
49
|
+
CHIMERA_TOOL_DENYLIST=
|
|
50
|
+
|
|
51
|
+
# Cache identical tool-free completions (HORIZON prompt caching): on | off (default off).
|
|
52
|
+
# Saves cost/latency for repeated reasoning turns (fusion, planner, benchmarks).
|
|
53
|
+
CHIMERA_CACHE=off
|
|
54
|
+
|
|
55
|
+
# Long-term memory backend: json (default, zero-dependency) or sqlite (SQLite + FTS5
|
|
56
|
+
# full-text recall that scales past the JSON store). Both persist under CHIMERA_HOME.
|
|
57
|
+
CHIMERA_MEMORY_BACKEND=json
|
|
58
|
+
|
|
59
|
+
# Discord bot token — only needed for `chimera serve --discord` (install the extra:
|
|
60
|
+
# `uv sync --extra messaging`). Create a bot at https://discord.com/developers, enable the
|
|
61
|
+
# Message Content intent, and paste its token here. Leave empty if you don't use Discord.
|
|
62
|
+
CHIMERA_DISCORD_BOT_TOKEN=
|
|
63
|
+
|
|
64
|
+
# Telegram bot token — only needed for `chimera serve --telegram` (no extra dependency).
|
|
65
|
+
# Create a bot with @BotFather, then paste the token here. Leave empty if unused.
|
|
66
|
+
CHIMERA_TELEGRAM_BOT_TOKEN=
|
|
67
|
+
|
|
68
|
+
# Slack tokens — only needed for `chimera serve --slack` (install `uv sync --extra
|
|
69
|
+
# messaging`). Enable Socket Mode on your app: the bot token is xoxb-... and the
|
|
70
|
+
# app-level token is xapp-... . Leave empty if unused.
|
|
71
|
+
CHIMERA_SLACK_BOT_TOKEN=
|
|
72
|
+
CHIMERA_SLACK_APP_TOKEN=
|
|
73
|
+
|
|
74
|
+
# WhatsApp Cloud API — lets the agent SEND WhatsApp messages via the send_message tool
|
|
75
|
+
# (works in any `chimera serve` mode). Create a Meta app + WhatsApp product to get these.
|
|
76
|
+
# Two-way (receiving) needs a public Meta webhook wired to your endpoint; see the docs.
|
|
77
|
+
CHIMERA_WHATSAPP_ACCESS_TOKEN=
|
|
78
|
+
CHIMERA_WHATSAPP_PHONE_NUMBER_ID=
|
|
79
|
+
# For two-way WhatsApp: point the Meta app webhook at https://<host>/whatsapp and set the
|
|
80
|
+
# same verify token here (any string you choose). `chimera serve` then serves it.
|
|
81
|
+
CHIMERA_WHATSAPP_VERIFY_TOKEN=
|
|
82
|
+
|
|
83
|
+
# Signal — two-way via a signal-cli-rest-api bridge you run (Docker:
|
|
84
|
+
# bbernhard/signal-cli-rest-api), linked to your number. `chimera serve --signal`.
|
|
85
|
+
CHIMERA_SIGNAL_API_URL= # e.g. http://localhost:8080
|
|
86
|
+
CHIMERA_SIGNAL_NUMBER= # this bot's Signal number, E.164
|
|
87
|
+
|
|
88
|
+
# Auto-fuse error-sensitive turns in solve/crew without passing --fuse: on | off (default
|
|
89
|
+
# off, since fusion costs 2-3x). When on, the cost-aware router still keeps cheap/tool
|
|
90
|
+
# turns single-model and only fuses deep or exact-answer turns (arithmetic, counting, ...).
|
|
91
|
+
CHIMERA_AUTO_FUSE=off
|
|
92
|
+
|
|
93
|
+
# --- Fusion engine (panel -> judge -> synthesizer) ---
|
|
94
|
+
# Comma-separated panel of models. Diversity (frontier + open) helps,
|
|
95
|
+
# but the synthesis step is what drives the lift. The default below is a frontier
|
|
96
|
+
# panel — best quality, but it costs real money on every fused turn.
|
|
97
|
+
#
|
|
98
|
+
# Budget tip: for cheap-but-reliable fusion, this panel works well and stays fast:
|
|
99
|
+
# CHIMERA_FUSION_PANEL=openrouter/deepseek/deepseek-chat,openrouter/openai/gpt-4o-mini,openrouter/meta-llama/llama-3.3-70b-instruct
|
|
100
|
+
# Avoid OpenRouter ":free" model slugs in a panel: they rate-limit (HTTP 429) under
|
|
101
|
+
# real load, so fusion silently degrades to whatever paid model is left in the panel.
|
|
102
|
+
CHIMERA_FUSION_PANEL=openrouter/anthropic/claude-opus-4-8,openrouter/openai/gpt-5.5,openrouter/google/gemini-3.1-pro
|
|
103
|
+
CHIMERA_FUSION_JUDGE=openrouter/anthropic/claude-opus-4-8
|
|
104
|
+
CHIMERA_FUSION_SYNTHESIZER=openrouter/anthropic/claude-opus-4-8
|
|
105
|
+
|
|
106
|
+
# Selective fusion (ON by default). Probe the first CHIMERA_FUSION_PROBE_K panel models;
|
|
107
|
+
# if they agree closely (a cheap LOCAL text-similarity check, no extra model call), skip
|
|
108
|
+
# the rest of the panel + the judge and synthesize from the agreeing answers. If they
|
|
109
|
+
# disagree, escalate to the full pipeline — which costs exactly the same as full fusion,
|
|
110
|
+
# so hard turns are never penalized. In 3 runs of `chimera fusion-bench --tasks hard` this
|
|
111
|
+
# cut tokens ~20-28% and was correct on every turn it short-circuited (16/16). Set to
|
|
112
|
+
# "full" to always run the whole panel + judge.
|
|
113
|
+
CHIMERA_FUSION_MODE=selective
|
|
114
|
+
CHIMERA_FUSION_PROBE_K=2
|
|
115
|
+
CHIMERA_FUSION_AGREEMENT=0.8
|
|
116
|
+
|
|
117
|
+
# --- Optional feature credentials (pre-set slots; set only what you use) ---
|
|
118
|
+
# Run `chimera features` to see which are active. Fill a slot and the matching
|
|
119
|
+
# capability lights up. Vision / Deliverable / Pets are built in (no key).
|
|
120
|
+
TAVILY_API_KEY= # Web Search & Extract -> the web_search tool auto-registers
|
|
121
|
+
BRAVE_API_KEY= # (alternative web search provider; same pattern)
|
|
122
|
+
SERPAPI_API_KEY= # (alternative web search provider; same pattern)
|
|
123
|
+
X_BEARER_TOKEN= # X (Twitter) search
|
|
124
|
+
STABILITY_API_KEY= # (reserved) alternative image provider
|
|
125
|
+
ELEVENLABS_API_KEY= # lights up the text_to_speech reference tool
|
|
126
|
+
SPOTIFY_CLIENT_ID= # Spotify (OAuth app); import its OpenAPI spec as tools
|
|
127
|
+
SPOTIFY_CLIENT_SECRET=
|
|
128
|
+
# OPENAI_API_KEY (above) lights up the generate_image reference tool.
|
|
129
|
+
# SMTP lights up the send_email reference tool (all three must be set):
|
|
130
|
+
CHIMERA_SMTP_HOST= # e.g. smtp.gmail.com
|
|
131
|
+
CHIMERA_SMTP_PORT=587
|
|
132
|
+
CHIMERA_SMTP_USER= # your SMTP username / email
|
|
133
|
+
CHIMERA_SMTP_PASSWORD= # your SMTP password / app password
|
|
134
|
+
CHIMERA_SMTP_FROM= # optional From address (defaults to SMTP_USER)
|
|
135
|
+
# IMAP lights up the read_email reference tool:
|
|
136
|
+
CHIMERA_IMAP_HOST= # e.g. imap.gmail.com
|
|
137
|
+
CHIMERA_IMAP_PORT=993
|
|
138
|
+
CHIMERA_IMAP_USER=
|
|
139
|
+
CHIMERA_IMAP_PASSWORD=
|
|
140
|
+
# An iCalendar (.ics) feed URL lights up the calendar_events reference tool:
|
|
141
|
+
CHIMERA_CALENDAR_ICS_URL=
|
|
142
|
+
# Browser automation needs `pip install playwright && playwright install`.
|
|
143
|
+
# Computer use (desktop control) is advanced and off the server path.
|
|
144
|
+
|
|
145
|
+
# --- Behaviour ---
|
|
146
|
+
CHIMERA_LOG_LEVEL=INFO
|
|
147
|
+
# Where Chimera keeps its externalized state (memory, experience buffer).
|
|
148
|
+
CHIMERA_HOME=.chimera
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a problem so we can fix it
|
|
4
|
+
title: "[bug] "
|
|
5
|
+
labels: bug
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Describe the bug
|
|
9
|
+
A clear and concise description of what went wrong.
|
|
10
|
+
|
|
11
|
+
## To reproduce
|
|
12
|
+
Steps or the exact command(s):
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
chimera ...
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Expected behavior
|
|
19
|
+
What you expected to happen.
|
|
20
|
+
|
|
21
|
+
## Environment
|
|
22
|
+
- Chimera version: `uv run chimera version`
|
|
23
|
+
- OS:
|
|
24
|
+
- Python: `python --version`
|
|
25
|
+
- Provider(s): (OpenRouter / OpenAI / Anthropic / ...)
|
|
26
|
+
|
|
27
|
+
## Logs / output
|
|
28
|
+
Paste any relevant output (redact secrets).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Questions & ideas
|
|
4
|
+
url: https://github.com/brcampidelli/chimera-agent/discussions
|
|
5
|
+
about: Ask a question, share what you built, or float an idea in Discussions.
|
|
6
|
+
- name: Security vulnerability
|
|
7
|
+
url: https://github.com/brcampidelli/chimera-agent/security/advisories/new
|
|
8
|
+
about: Please report security issues privately (see SECURITY.md), not as public issues.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea or capability
|
|
4
|
+
title: "[feat] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Problem / motivation
|
|
9
|
+
What are you trying to do, and why is it hard today?
|
|
10
|
+
|
|
11
|
+
## Proposed solution
|
|
12
|
+
What you'd like to see. Which tier/subsystem does it touch (fusion, core, evolution,
|
|
13
|
+
governance, orchestration, ecosystem, integrations, ...)?
|
|
14
|
+
|
|
15
|
+
## Alternatives considered
|
|
16
|
+
Other approaches you thought about.
|
|
17
|
+
|
|
18
|
+
## Additional context
|
|
19
|
+
Links, references, or papers.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## What & why
|
|
2
|
+
Briefly describe the change and the motivation.
|
|
3
|
+
|
|
4
|
+
## How to test
|
|
5
|
+
Commands or steps to verify the change.
|
|
6
|
+
|
|
7
|
+
## Checklist
|
|
8
|
+
- [ ] `uv run ruff check .` passes
|
|
9
|
+
- [ ] `uv run mypy chimera` passes (strict)
|
|
10
|
+
- [ ] `uv run pytest -q` passes
|
|
11
|
+
- [ ] New logic has tests
|
|
12
|
+
- [ ] Docs/README updated if behavior changed
|
|
13
|
+
- [ ] Commit messages follow Conventional Commits
|
|
14
|
+
|
|
15
|
+
## Related issues
|
|
16
|
+
Closes #
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ci-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
quality:
|
|
15
|
+
name: lint · type-check · test
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.11", "3.12"]
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v5
|
|
26
|
+
with:
|
|
27
|
+
enable-cache: true
|
|
28
|
+
|
|
29
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
30
|
+
run: uv python install ${{ matrix.python-version }}
|
|
31
|
+
|
|
32
|
+
- name: Install dependencies
|
|
33
|
+
run: uv sync --extra dev
|
|
34
|
+
|
|
35
|
+
- name: Ruff (lint)
|
|
36
|
+
run: uv run ruff check .
|
|
37
|
+
|
|
38
|
+
- name: Mypy (strict type-check)
|
|
39
|
+
run: uv run mypy chimera
|
|
40
|
+
|
|
41
|
+
- name: Pytest
|
|
42
|
+
run: uv run pytest -q
|
|
43
|
+
|
|
44
|
+
integration:
|
|
45
|
+
name: live integration (real provider)
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
needs: quality
|
|
48
|
+
# Only on direct pushes to main (not fork PRs), where the secret is available.
|
|
49
|
+
# The test self-skips when the secret is unset, so this job is green either way.
|
|
50
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Install uv
|
|
55
|
+
uses: astral-sh/setup-uv@v5
|
|
56
|
+
with:
|
|
57
|
+
enable-cache: true
|
|
58
|
+
|
|
59
|
+
- name: Set up Python
|
|
60
|
+
run: uv python install 3.12
|
|
61
|
+
|
|
62
|
+
- name: Install dependencies
|
|
63
|
+
run: uv sync --extra dev --extra mcp
|
|
64
|
+
|
|
65
|
+
- name: Integration smoke test
|
|
66
|
+
env:
|
|
67
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
68
|
+
run: uv run pytest -m integration -q
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# Publishes the package to PyPI using OIDC Trusted Publishing — there is NO API
|
|
4
|
+
# token stored in the repo or entered by anyone. PyPI verifies the workflow's
|
|
5
|
+
# short-lived OIDC identity instead. One-time setup on PyPI (pending publisher):
|
|
6
|
+
# https://pypi.org/manage/account/publishing/
|
|
7
|
+
# Owner: brcampidelli · Repo: chimera-agent · Workflow: publish.yml · Env: (blank)
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
release:
|
|
11
|
+
types: [published]
|
|
12
|
+
workflow_dispatch: {}
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
pypi-publish:
|
|
19
|
+
name: Build and publish to PyPI
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
id-token: write # mint the OIDC token PyPI checks — this is the whole point
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.12"
|
|
30
|
+
|
|
31
|
+
- name: Build wheel + sdist
|
|
32
|
+
run: uv build
|
|
33
|
+
|
|
34
|
+
- name: Publish to PyPI (Trusted Publishing — no token)
|
|
35
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: quality-bench
|
|
2
|
+
|
|
3
|
+
# A quality gauge, not a build gate: runs `chimera solve` on the local pytest-graded task set with a
|
|
4
|
+
# cheap/free model and reports the pass-rate (does a change move the number?). Manual-trigger only so
|
|
5
|
+
# it never spends API on a routine push — add a `schedule:` block if you want it periodic.
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
model:
|
|
10
|
+
description: "OpenRouter model slug (a free one to avoid cost)"
|
|
11
|
+
default: "openrouter/qwen/qwen3-coder:free"
|
|
12
|
+
timeout:
|
|
13
|
+
description: "Per-solve timeout in seconds"
|
|
14
|
+
default: "300"
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
bench:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
timeout-minutes: 45
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- uses: astral-sh/setup-uv@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
- name: Install (with dev extras for pytest)
|
|
26
|
+
run: uv sync --extra dev
|
|
27
|
+
- name: Run the quality gauge
|
|
28
|
+
env:
|
|
29
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
30
|
+
BENCH_MODEL: ${{ github.event.inputs.model }}
|
|
31
|
+
BENCH_TIMEOUT: ${{ github.event.inputs.timeout }}
|
|
32
|
+
run: uv run --no-sync python bench/local_lift/run_ci.py
|
|
33
|
+
- name: Upload results
|
|
34
|
+
if: always()
|
|
35
|
+
uses: actions/upload-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: quality-bench-results
|
|
38
|
+
path: bench/local_lift/results/ci.json
|
|
39
|
+
if-no-files-found: ignore
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
*.egg
|
|
9
|
+
|
|
10
|
+
# Virtual envs / uv
|
|
11
|
+
.venv/
|
|
12
|
+
.uv/
|
|
13
|
+
uv.lock
|
|
14
|
+
|
|
15
|
+
# Env / secrets
|
|
16
|
+
.env
|
|
17
|
+
.env.local
|
|
18
|
+
*.key
|
|
19
|
+
|
|
20
|
+
# Caches
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.mypy_cache/
|
|
23
|
+
.ruff_cache/
|
|
24
|
+
.cache/
|
|
25
|
+
|
|
26
|
+
# Chimera runtime data (state lives outside the LLM context)
|
|
27
|
+
.chimera/
|
|
28
|
+
data/
|
|
29
|
+
*.sqlite
|
|
30
|
+
*.sqlite3
|
|
31
|
+
*.db
|
|
32
|
+
|
|
33
|
+
# OS / editors
|
|
34
|
+
.DS_Store
|
|
35
|
+
Thumbs.db
|
|
36
|
+
.idea/
|
|
37
|
+
.vscode/
|
|
38
|
+
|
|
39
|
+
# mkdocs build output
|
|
40
|
+
site/
|
|
41
|
+
|
|
42
|
+
# Local benchmark run outputs (harness + tasks are tracked; per-run results are not)
|
|
43
|
+
bench/local_lift/results/
|
|
44
|
+
|
|
45
|
+
# Terminal-Bench official runner: local venv, built wheel, run outputs (tracked: scripts only)
|
|
46
|
+
bench/terminal_bench/.venv/
|
|
47
|
+
bench/terminal_bench/dist/
|
|
48
|
+
bench/terminal_bench/results/
|