maestro-care 0.0.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.
- maestro_care-0.0.1/.env.example +337 -0
- maestro_care-0.0.1/.gitignore +43 -0
- maestro_care-0.0.1/Makefile +49 -0
- maestro_care-0.0.1/PKG-INFO +263 -0
- maestro_care-0.0.1/README.md +209 -0
- maestro_care-0.0.1/TODO.md +4619 -0
- maestro_care-0.0.1/care/__init__.py +222 -0
- maestro_care-0.0.1/care/app.py +1780 -0
- maestro_care-0.0.1/care/assets/__init__.py +12 -0
- maestro_care-0.0.1/care/assets/airi_logo.png +0 -0
- maestro_care-0.0.1/care/assets/airi_logo_10.png +0 -0
- maestro_care-0.0.1/care/assets/airi_logo_12.png +0 -0
- maestro_care-0.0.1/care/assets/airi_logo_16.png +0 -0
- maestro_care-0.0.1/care/assets/airi_logo_8.png +0 -0
- maestro_care-0.0.1/care/builtin_tools.py +736 -0
- maestro_care-0.0.1/care/bulk_import.py +334 -0
- maestro_care-0.0.1/care/capability_priming.py +370 -0
- maestro_care-0.0.1/care/carl_summary.py +209 -0
- maestro_care-0.0.1/care/catalog.py +418 -0
- maestro_care-0.0.1/care/chain_export.py +231 -0
- maestro_care-0.0.1/care/cli.py +3208 -0
- maestro_care-0.0.1/care/config.py +1130 -0
- maestro_care-0.0.1/care/conflict.py +358 -0
- maestro_care-0.0.1/care/context_md.py +215 -0
- maestro_care-0.0.1/care/dotenv.py +166 -0
- maestro_care-0.0.1/care/evolution_session.py +410 -0
- maestro_care-0.0.1/care/first_run.py +502 -0
- maestro_care-0.0.1/care/generation.py +317 -0
- maestro_care-0.0.1/care/help.py +463 -0
- maestro_care-0.0.1/care/intermediate_artifacts.py +376 -0
- maestro_care-0.0.1/care/logging_setup.py +111 -0
- maestro_care-0.0.1/care/mage_summary.py +299 -0
- maestro_care-0.0.1/care/marketplace.py +216 -0
- maestro_care-0.0.1/care/memory.py +752 -0
- maestro_care-0.0.1/care/memory_ltm.py +310 -0
- maestro_care-0.0.1/care/micro_evolution.py +526 -0
- maestro_care-0.0.1/care/platform.py +233 -0
- maestro_care-0.0.1/care/preflight.py +277 -0
- maestro_care-0.0.1/care/profiling.py +321 -0
- maestro_care-0.0.1/care/replay.py +460 -0
- maestro_care-0.0.1/care/runtime/__init__.py +641 -0
- maestro_care-0.0.1/care/runtime/agent_diff.py +671 -0
- maestro_care-0.0.1/care/runtime/artifacts.py +193 -0
- maestro_care-0.0.1/care/runtime/bulk_ops.py +543 -0
- maestro_care-0.0.1/care/runtime/cancellation.py +313 -0
- maestro_care-0.0.1/care/runtime/carl_streamer.py +384 -0
- maestro_care-0.0.1/care/runtime/chain_edit_view.py +88 -0
- maestro_care-0.0.1/care/runtime/chain_title.py +171 -0
- maestro_care-0.0.1/care/runtime/clipboard.py +135 -0
- maestro_care-0.0.1/care/runtime/collections.py +475 -0
- maestro_care-0.0.1/care/runtime/command_palette.py +619 -0
- maestro_care-0.0.1/care/runtime/cost_rollups.py +196 -0
- maestro_care-0.0.1/care/runtime/deck_builder.py +176 -0
- maestro_care-0.0.1/care/runtime/doctor.py +262 -0
- maestro_care-0.0.1/care/runtime/draft.py +251 -0
- maestro_care-0.0.1/care/runtime/edit_draft.py +622 -0
- maestro_care-0.0.1/care/runtime/empty_state.py +287 -0
- maestro_care-0.0.1/care/runtime/executor.py +387 -0
- maestro_care-0.0.1/care/runtime/fitness_plot.py +187 -0
- maestro_care-0.0.1/care/runtime/global_bindings.py +372 -0
- maestro_care-0.0.1/care/runtime/human_input.py +332 -0
- maestro_care-0.0.1/care/runtime/keystore.py +604 -0
- maestro_care-0.0.1/care/runtime/library_bundle.py +823 -0
- maestro_care-0.0.1/care/runtime/library_run.py +347 -0
- maestro_care-0.0.1/care/runtime/library_view.py +766 -0
- maestro_care-0.0.1/care/runtime/library_watcher.py +260 -0
- maestro_care-0.0.1/care/runtime/lineage.py +442 -0
- maestro_care-0.0.1/care/runtime/llm_client.py +302 -0
- maestro_care-0.0.1/care/runtime/local_run_history.py +572 -0
- maestro_care-0.0.1/care/runtime/log_discovery.py +207 -0
- maestro_care-0.0.1/care/runtime/mage_poster.py +287 -0
- maestro_care-0.0.1/care/runtime/pareto_plot.py +246 -0
- maestro_care-0.0.1/care/runtime/pricing.py +140 -0
- maestro_care-0.0.1/care/runtime/profiles.py +149 -0
- maestro_care-0.0.1/care/runtime/provenance.py +320 -0
- maestro_care-0.0.1/care/runtime/row_actions.py +540 -0
- maestro_care-0.0.1/care/runtime/run_context_draft.py +564 -0
- maestro_care-0.0.1/care/runtime/run_history.py +448 -0
- maestro_care-0.0.1/care/runtime/run_recorder.py +288 -0
- maestro_care-0.0.1/care/runtime/run_state.py +232 -0
- maestro_care-0.0.1/care/runtime/save_agent_form.py +719 -0
- maestro_care-0.0.1/care/runtime/session_artifacts.py +633 -0
- maestro_care-0.0.1/care/runtime/session_persistence.py +275 -0
- maestro_care-0.0.1/care/runtime/skill_runtime_adapter.py +406 -0
- maestro_care-0.0.1/care/runtime/status_bar.py +593 -0
- maestro_care-0.0.1/care/runtime/task_registry.py +439 -0
- maestro_care-0.0.1/care/runtime/telemetry.py +331 -0
- maestro_care-0.0.1/care/runtime/theme.py +476 -0
- maestro_care-0.0.1/care/runtime/user_paths.py +229 -0
- maestro_care-0.0.1/care/sandbox/__init__.py +136 -0
- maestro_care-0.0.1/care/sandbox/audit.py +307 -0
- maestro_care-0.0.1/care/sandbox/backend.py +227 -0
- maestro_care-0.0.1/care/sandbox/docker.py +444 -0
- maestro_care-0.0.1/care/sandbox/e2b.py +436 -0
- maestro_care-0.0.1/care/sandbox/firejail.py +497 -0
- maestro_care-0.0.1/care/sandbox/local.py +255 -0
- maestro_care-0.0.1/care/sandbox/network_policy.py +181 -0
- maestro_care-0.0.1/care/sandbox/output_mediation.py +401 -0
- maestro_care-0.0.1/care/sandbox/resources.py +352 -0
- maestro_care-0.0.1/care/sandbox/trust.py +284 -0
- maestro_care-0.0.1/care/screens/__init__.py +164 -0
- maestro_care-0.0.1/care/screens/artifacts.py +1380 -0
- maestro_care-0.0.1/care/screens/catalog.py +487 -0
- maestro_care-0.0.1/care/screens/chat.py +13021 -0
- maestro_care-0.0.1/care/screens/command_palette.py +252 -0
- maestro_care-0.0.1/care/screens/confirm.py +118 -0
- maestro_care-0.0.1/care/screens/conflict.py +202 -0
- maestro_care-0.0.1/care/screens/cost.py +306 -0
- maestro_care-0.0.1/care/screens/demo.py +90 -0
- maestro_care-0.0.1/care/screens/diff.py +304 -0
- maestro_care-0.0.1/care/screens/edit_agent.py +373 -0
- maestro_care-0.0.1/care/screens/evolution.py +1340 -0
- maestro_care-0.0.1/care/screens/evolution_compare.py +343 -0
- maestro_care-0.0.1/care/screens/evolution_dashboard.py +612 -0
- maestro_care-0.0.1/care/screens/evolution_launch.py +288 -0
- maestro_care-0.0.1/care/screens/execution.py +366 -0
- maestro_care-0.0.1/care/screens/export.py +247 -0
- maestro_care-0.0.1/care/screens/export_chain.py +279 -0
- maestro_care-0.0.1/care/screens/generation.py +368 -0
- maestro_care-0.0.1/care/screens/help.py +313 -0
- maestro_care-0.0.1/care/screens/human_input.py +245 -0
- maestro_care-0.0.1/care/screens/import_bundle.py +365 -0
- maestro_care-0.0.1/care/screens/inspection.py +1629 -0
- maestro_care-0.0.1/care/screens/library.py +1531 -0
- maestro_care-0.0.1/care/screens/lineage.py +273 -0
- maestro_care-0.0.1/care/screens/logs.py +309 -0
- maestro_care-0.0.1/care/screens/marketplace.py +562 -0
- maestro_care-0.0.1/care/screens/multi_compose.py +141 -0
- maestro_care-0.0.1/care/screens/profile.py +239 -0
- maestro_care-0.0.1/care/screens/query.py +284 -0
- maestro_care-0.0.1/care/screens/replay.py +253 -0
- maestro_care-0.0.1/care/screens/resume.py +153 -0
- maestro_care-0.0.1/care/screens/run_context.py +341 -0
- maestro_care-0.0.1/care/screens/runs.py +328 -0
- maestro_care-0.0.1/care/screens/sandbox_trust.py +353 -0
- maestro_care-0.0.1/care/screens/save_agent.py +353 -0
- maestro_care-0.0.1/care/screens/save_report.py +290 -0
- maestro_care-0.0.1/care/screens/settings.py +532 -0
- maestro_care-0.0.1/care/screens/tag_editor.py +298 -0
- maestro_care-0.0.1/care/screens/task_list.py +271 -0
- maestro_care-0.0.1/care/screens/use_it_now.py +390 -0
- maestro_care-0.0.1/care/screens/welcome.py +384 -0
- maestro_care-0.0.1/care/skill_enforcement.py +215 -0
- maestro_care-0.0.1/care/skills.py +180 -0
- maestro_care-0.0.1/care/stage_regeneration.py +211 -0
- maestro_care-0.0.1/care/styles/demo.tcss +25 -0
- maestro_care-0.0.1/care/tool_planning.py +322 -0
- maestro_care-0.0.1/care/tool_synthesis.py +667 -0
- maestro_care-0.0.1/care/tools.py +107 -0
- maestro_care-0.0.1/care/widgets/__init__.py +23 -0
- maestro_care-0.0.1/care/widgets/chat_input.py +284 -0
- maestro_care-0.0.1/care/widgets/context_menu.py +103 -0
- maestro_care-0.0.1/care/widgets/empty_state.py +178 -0
- maestro_care-0.0.1/care/widgets/footer.py +154 -0
- maestro_care-0.0.1/care/widgets/header.py +267 -0
- maestro_care-0.0.1/care/widgets/library_sidebar.py +530 -0
- maestro_care-0.0.1/care/widgets/pipeline_preview.py +267 -0
- maestro_care-0.0.1/care/widgets/status_bar.py +246 -0
- maestro_care-0.0.1/care/widgets/task_setup.py +306 -0
- maestro_care-0.0.1/care/widgets/toast.py +172 -0
- maestro_care-0.0.1/docs/screens/README.md +110 -0
- maestro_care-0.0.1/examples/financier/README.md +111 -0
- maestro_care-0.0.1/examples/weather/README.md +87 -0
- maestro_care-0.0.1/pyproject.toml +146 -0
- maestro_care-0.0.1/tests/conftest.py +36 -0
- maestro_care-0.0.1/tests/test_agent_diff.py +574 -0
- maestro_care-0.0.1/tests/test_app_global_keys.py +266 -0
- maestro_care-0.0.1/tests/test_app_shell.py +516 -0
- maestro_care-0.0.1/tests/test_app_theme.py +242 -0
- maestro_care-0.0.1/tests/test_architecture_doc.py +145 -0
- maestro_care-0.0.1/tests/test_artifacts.py +172 -0
- maestro_care-0.0.1/tests/test_asciicast_harness.py +227 -0
- maestro_care-0.0.1/tests/test_builtin_tools.py +309 -0
- maestro_care-0.0.1/tests/test_bulk_import.py +309 -0
- maestro_care-0.0.1/tests/test_bulk_ops.py +541 -0
- maestro_care-0.0.1/tests/test_cancellation.py +329 -0
- maestro_care-0.0.1/tests/test_capability_memory_recall.py +88 -0
- maestro_care-0.0.1/tests/test_capability_priming.py +307 -0
- maestro_care-0.0.1/tests/test_carl_streamer.py +415 -0
- maestro_care-0.0.1/tests/test_carl_summary.py +215 -0
- maestro_care-0.0.1/tests/test_catalog.py +429 -0
- maestro_care-0.0.1/tests/test_chain_edit_view.py +90 -0
- maestro_care-0.0.1/tests/test_chain_export.py +210 -0
- maestro_care-0.0.1/tests/test_chain_title.py +237 -0
- maestro_care-0.0.1/tests/test_chat_record_local_run.py +343 -0
- maestro_care-0.0.1/tests/test_chat_revise.py +294 -0
- maestro_care-0.0.1/tests/test_chat_slash_command_manifest.py +323 -0
- maestro_care-0.0.1/tests/test_ci_workflows.py +190 -0
- maestro_care-0.0.1/tests/test_cli.py +3176 -0
- maestro_care-0.0.1/tests/test_cli_record_run.py +145 -0
- maestro_care-0.0.1/tests/test_collections.py +479 -0
- maestro_care-0.0.1/tests/test_command_palette.py +517 -0
- maestro_care-0.0.1/tests/test_config.py +696 -0
- maestro_care-0.0.1/tests/test_config_project_overrides.py +185 -0
- maestro_care-0.0.1/tests/test_conflict.py +403 -0
- maestro_care-0.0.1/tests/test_context_md.py +196 -0
- maestro_care-0.0.1/tests/test_cost_rollups.py +143 -0
- maestro_care-0.0.1/tests/test_deck_builder.py +124 -0
- maestro_care-0.0.1/tests/test_doctor.py +267 -0
- maestro_care-0.0.1/tests/test_draft.py +298 -0
- maestro_care-0.0.1/tests/test_edit_draft.py +546 -0
- maestro_care-0.0.1/tests/test_empty_state.py +259 -0
- maestro_care-0.0.1/tests/test_env_example.py +176 -0
- maestro_care-0.0.1/tests/test_evolution_session.py +316 -0
- maestro_care-0.0.1/tests/test_example_financier.py +200 -0
- maestro_care-0.0.1/tests/test_example_weather.py +171 -0
- maestro_care-0.0.1/tests/test_executor.py +550 -0
- maestro_care-0.0.1/tests/test_first_run.py +415 -0
- maestro_care-0.0.1/tests/test_fitness_plot.py +148 -0
- maestro_care-0.0.1/tests/test_generation.py +257 -0
- maestro_care-0.0.1/tests/test_global_bindings.py +318 -0
- maestro_care-0.0.1/tests/test_help.py +403 -0
- maestro_care-0.0.1/tests/test_human_input.py +372 -0
- maestro_care-0.0.1/tests/test_intermediate_artifacts.py +399 -0
- maestro_care-0.0.1/tests/test_keystore.py +440 -0
- maestro_care-0.0.1/tests/test_library_bundle.py +614 -0
- maestro_care-0.0.1/tests/test_library_revise.py +71 -0
- maestro_care-0.0.1/tests/test_library_run.py +555 -0
- maestro_care-0.0.1/tests/test_library_view.py +706 -0
- maestro_care-0.0.1/tests/test_library_watcher.py +338 -0
- maestro_care-0.0.1/tests/test_lineage.py +520 -0
- maestro_care-0.0.1/tests/test_llm_client.py +371 -0
- maestro_care-0.0.1/tests/test_local_run_history.py +395 -0
- maestro_care-0.0.1/tests/test_log_discovery.py +245 -0
- maestro_care-0.0.1/tests/test_mage_poster.py +235 -0
- maestro_care-0.0.1/tests/test_mage_summary.py +391 -0
- maestro_care-0.0.1/tests/test_marketplace.py +298 -0
- maestro_care-0.0.1/tests/test_memory.py +704 -0
- maestro_care-0.0.1/tests/test_memory_ltm.py +220 -0
- maestro_care-0.0.1/tests/test_micro_evolution.py +487 -0
- maestro_care-0.0.1/tests/test_migrate_secrets.py +329 -0
- maestro_care-0.0.1/tests/test_network_policy.py +226 -0
- maestro_care-0.0.1/tests/test_output_mediation.py +365 -0
- maestro_care-0.0.1/tests/test_packaging.py +309 -0
- maestro_care-0.0.1/tests/test_pareto.py +283 -0
- maestro_care-0.0.1/tests/test_pareto_plot.py +164 -0
- maestro_care-0.0.1/tests/test_platform.py +283 -0
- maestro_care-0.0.1/tests/test_preflight.py +285 -0
- maestro_care-0.0.1/tests/test_pricing.py +115 -0
- maestro_care-0.0.1/tests/test_profiles.py +126 -0
- maestro_care-0.0.1/tests/test_profiling.py +500 -0
- maestro_care-0.0.1/tests/test_provenance.py +358 -0
- maestro_care-0.0.1/tests/test_replay.py +430 -0
- maestro_care-0.0.1/tests/test_row_actions.py +557 -0
- maestro_care-0.0.1/tests/test_run_context_draft.py +500 -0
- maestro_care-0.0.1/tests/test_run_edit.py +82 -0
- maestro_care-0.0.1/tests/test_run_history.py +484 -0
- maestro_care-0.0.1/tests/test_run_history_aggregate.py +215 -0
- maestro_care-0.0.1/tests/test_run_recorder.py +348 -0
- maestro_care-0.0.1/tests/test_run_state.py +306 -0
- maestro_care-0.0.1/tests/test_sandbox_audit.py +308 -0
- maestro_care-0.0.1/tests/test_sandbox_docker.py +538 -0
- maestro_care-0.0.1/tests/test_sandbox_e2b.py +528 -0
- maestro_care-0.0.1/tests/test_sandbox_firejail.py +504 -0
- maestro_care-0.0.1/tests/test_sandbox_local.py +391 -0
- maestro_care-0.0.1/tests/test_sandbox_resources.py +270 -0
- maestro_care-0.0.1/tests/test_sandbox_trust.py +320 -0
- maestro_care-0.0.1/tests/test_save_agent_form.py +666 -0
- maestro_care-0.0.1/tests/test_screen_artifacts.py +1640 -0
- maestro_care-0.0.1/tests/test_screen_catalog.py +1856 -0
- maestro_care-0.0.1/tests/test_screen_chat.py +19659 -0
- maestro_care-0.0.1/tests/test_screen_command_palette.py +236 -0
- maestro_care-0.0.1/tests/test_screen_confirm.py +182 -0
- maestro_care-0.0.1/tests/test_screen_conflict.py +236 -0
- maestro_care-0.0.1/tests/test_screen_cost.py +279 -0
- maestro_care-0.0.1/tests/test_screen_demo.py +71 -0
- maestro_care-0.0.1/tests/test_screen_diff.py +261 -0
- maestro_care-0.0.1/tests/test_screen_edit_agent.py +334 -0
- maestro_care-0.0.1/tests/test_screen_evolution.py +1493 -0
- maestro_care-0.0.1/tests/test_screen_evolution_compare.py +283 -0
- maestro_care-0.0.1/tests/test_screen_evolution_dashboard.py +592 -0
- maestro_care-0.0.1/tests/test_screen_evolution_launch.py +393 -0
- maestro_care-0.0.1/tests/test_screen_execution.py +380 -0
- maestro_care-0.0.1/tests/test_screen_export.py +256 -0
- maestro_care-0.0.1/tests/test_screen_export_chain.py +309 -0
- maestro_care-0.0.1/tests/test_screen_generation.py +395 -0
- maestro_care-0.0.1/tests/test_screen_help.py +341 -0
- maestro_care-0.0.1/tests/test_screen_human_input.py +230 -0
- maestro_care-0.0.1/tests/test_screen_import.py +304 -0
- maestro_care-0.0.1/tests/test_screen_import_bundle.py +128 -0
- maestro_care-0.0.1/tests/test_screen_inspection.py +1035 -0
- maestro_care-0.0.1/tests/test_screen_inspection_artifacts.py +148 -0
- maestro_care-0.0.1/tests/test_screen_inspection_run_history.py +385 -0
- maestro_care-0.0.1/tests/test_screen_library.py +1172 -0
- maestro_care-0.0.1/tests/test_screen_library_bulk_select.py +453 -0
- maestro_care-0.0.1/tests/test_screen_library_collections.py +236 -0
- maestro_care-0.0.1/tests/test_screen_library_row_actions.py +436 -0
- maestro_care-0.0.1/tests/test_screen_library_sort.py +296 -0
- maestro_care-0.0.1/tests/test_screen_lineage.py +323 -0
- maestro_care-0.0.1/tests/test_screen_logs.py +362 -0
- maestro_care-0.0.1/tests/test_screen_marketplace.py +518 -0
- maestro_care-0.0.1/tests/test_screen_multi_compose.py +109 -0
- maestro_care-0.0.1/tests/test_screen_profile.py +225 -0
- maestro_care-0.0.1/tests/test_screen_query.py +316 -0
- maestro_care-0.0.1/tests/test_screen_replay.py +248 -0
- maestro_care-0.0.1/tests/test_screen_resume.py +229 -0
- maestro_care-0.0.1/tests/test_screen_run_context.py +287 -0
- maestro_care-0.0.1/tests/test_screen_runs.py +352 -0
- maestro_care-0.0.1/tests/test_screen_sandbox_trust.py +348 -0
- maestro_care-0.0.1/tests/test_screen_save_agent.py +335 -0
- maestro_care-0.0.1/tests/test_screen_save_report.py +549 -0
- maestro_care-0.0.1/tests/test_screen_settings.py +503 -0
- maestro_care-0.0.1/tests/test_screen_tag_editor.py +441 -0
- maestro_care-0.0.1/tests/test_screen_task_list.py +240 -0
- maestro_care-0.0.1/tests/test_screen_use_it_now.py +371 -0
- maestro_care-0.0.1/tests/test_screen_welcome.py +304 -0
- maestro_care-0.0.1/tests/test_screen_welcome_recents.py +219 -0
- maestro_care-0.0.1/tests/test_screens_demo_pilot.py +261 -0
- maestro_care-0.0.1/tests/test_screens_index_doc.py +236 -0
- maestro_care-0.0.1/tests/test_session_artifacts.py +387 -0
- maestro_care-0.0.1/tests/test_session_persistence.py +222 -0
- maestro_care-0.0.1/tests/test_skill_enforcement.py +126 -0
- maestro_care-0.0.1/tests/test_skill_runtime_adapter.py +343 -0
- maestro_care-0.0.1/tests/test_skills_promotion.py +314 -0
- maestro_care-0.0.1/tests/test_stage_regeneration.py +369 -0
- maestro_care-0.0.1/tests/test_status_bar.py +516 -0
- maestro_care-0.0.1/tests/test_task_registry.py +444 -0
- maestro_care-0.0.1/tests/test_telemetry.py +289 -0
- maestro_care-0.0.1/tests/test_theme.py +369 -0
- maestro_care-0.0.1/tests/test_token_counter_wiring.py +182 -0
- maestro_care-0.0.1/tests/test_tool_planning.py +186 -0
- maestro_care-0.0.1/tests/test_tool_synthesis.py +403 -0
- maestro_care-0.0.1/tests/test_tools_loader.py +187 -0
- maestro_care-0.0.1/tests/test_user_paths.py +195 -0
- maestro_care-0.0.1/tests/test_uvx_smoke.py +178 -0
- maestro_care-0.0.1/tests/test_widget_context_menu.py +260 -0
- maestro_care-0.0.1/tests/test_widget_empty_state.py +490 -0
- maestro_care-0.0.1/tests/test_widget_footer.py +263 -0
- maestro_care-0.0.1/tests/test_widget_header.py +333 -0
- maestro_care-0.0.1/tests/test_widget_library_sidebar.py +449 -0
- maestro_care-0.0.1/tests/test_widget_status_bar.py +414 -0
- maestro_care-0.0.1/tests/test_widget_toast.py +171 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# CARE environment-variable overrides (TODO §2 P1).
|
|
2
|
+
#
|
|
3
|
+
# Every setting in `CareConfig` has a `CARE_*` env var equivalent.
|
|
4
|
+
# Nested sections use double-underscores (so `[mage] mode = "fast"`
|
|
5
|
+
# in TOML is `CARE_MAGE__MODE=fast` here). Env vars override values
|
|
6
|
+
# from both `~/.config/care/config.toml` and per-project
|
|
7
|
+
# `./care.toml`; defaults from `care.config` apply for anything
|
|
8
|
+
# you leave unset.
|
|
9
|
+
#
|
|
10
|
+
# Precedence: defaults < ~/.config/care/config.toml < ./care.toml < env.
|
|
11
|
+
#
|
|
12
|
+
# Copy this file to `.env` (or export the vars in your shell) and
|
|
13
|
+
# fill in only the values you need to override.
|
|
14
|
+
|
|
15
|
+
# ---------------------------------------------------------------------------
|
|
16
|
+
# [mage] — MAGE generator
|
|
17
|
+
# ---------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
# Generation mode. `deep` does the full multi-stage pipeline; `fast`
|
|
20
|
+
# is single-shot.
|
|
21
|
+
# CARE_MAGE__MODE=deep
|
|
22
|
+
|
|
23
|
+
# Base URL of the OpenAI-compatible HTTP endpoint MAGE / CARL
|
|
24
|
+
# should talk to. Any provider with an OpenAI-shaped API works
|
|
25
|
+
# (OpenAI, OpenRouter, Groq, DeepSeek, Together, a local
|
|
26
|
+
# Ollama / llama.cpp server, etc.). Examples:
|
|
27
|
+
# https://api.openai.com/v1
|
|
28
|
+
# https://openrouter.ai/api/v1
|
|
29
|
+
# http://localhost:11434/v1
|
|
30
|
+
# REQUIRED.
|
|
31
|
+
# CARE_MAGE__BASE_URL=https://openrouter.ai/api/v1
|
|
32
|
+
|
|
33
|
+
# API key sent as `Authorization: Bearer …`. REQUIRED.
|
|
34
|
+
# CARE_MAGE__API_KEY=
|
|
35
|
+
|
|
36
|
+
# Model id the endpoint understands. REQUIRED.
|
|
37
|
+
# CARE_MAGE__MODEL=anthropic/claude-3.5-sonnet
|
|
38
|
+
|
|
39
|
+
# Whether MAGE recalls relevant past chains/knowledge from Memory during
|
|
40
|
+
# generation (stage 0a) and feeds a digest to the planner — generation
|
|
41
|
+
# gets smarter as Memory fills. On by default; costs ~one extra sub-query
|
|
42
|
+
# LLM call per generation. Set to false for the lowest-latency path.
|
|
43
|
+
# Accepts `true` / `false` / `1` / `0`.
|
|
44
|
+
# CARE_MAGE__ENABLE_MEMORY_RESEARCH=true
|
|
45
|
+
|
|
46
|
+
# Strategy for Memory recall during generation. `bm25` (default) suits the
|
|
47
|
+
# bundled Memory deployment, which ships with vector search OFF — `hybrid`
|
|
48
|
+
# /`vector` silently fall back to bm25 with a per-search warning. Flip to
|
|
49
|
+
# `hybrid` once Memory has vector search + sentence-transformers enabled.
|
|
50
|
+
# CARE_MAGE__MEMORY_SEARCH_MODE=bm25
|
|
51
|
+
|
|
52
|
+
# Minimum relevance score for a recalled chain to be kept. Default 0.0 —
|
|
53
|
+
# bm25 scores are small (~0.1), so a higher gate silently drops every real
|
|
54
|
+
# hit (perpetual cold-start). MAGE's applicability gate (an LLM judge)
|
|
55
|
+
# still filters quality downstream.
|
|
56
|
+
# CARE_MAGE__MEMORY_RELEVANCE_THRESHOLD=0.0
|
|
57
|
+
|
|
58
|
+
# Whether MAGE may issue web-search queries. Off by default to keep
|
|
59
|
+
# generation deterministic + cheap.
|
|
60
|
+
# CARE_MAGE__ENABLE_WEB_RESEARCH=false
|
|
61
|
+
|
|
62
|
+
# Web-search engine MAGE uses (tavily / serpapi / brave). Mirrors
|
|
63
|
+
# CARE_TOOLS__WEB_SEARCH_PROVIDER so generation + the runtime
|
|
64
|
+
# web_search tool share one engine.
|
|
65
|
+
# CARE_MAGE__WEB_SEARCH_PROVIDER=tavily
|
|
66
|
+
|
|
67
|
+
# API key for the web-search provider. Only consulted when
|
|
68
|
+
# `enable_web_research=true`.
|
|
69
|
+
# CARE_MAGE__WEB_SEARCH_API_KEY=
|
|
70
|
+
|
|
71
|
+
# --- MAGE planning-stage discovery (forwarded to mmar_mage) ---
|
|
72
|
+
# CARE normally INJECTS capabilities into generation, which bypasses MAGE's
|
|
73
|
+
# own discovery agents — so all three default OFF. Flip them only for
|
|
74
|
+
# deployments where MAGE should discover tools/skills itself.
|
|
75
|
+
|
|
76
|
+
# Run MAGE's CapabilityLookupAgent at plan time.
|
|
77
|
+
# CARE_MAGE__ENABLE_CAPABILITY_LOOKUP=false
|
|
78
|
+
|
|
79
|
+
# Let MAGE query Memory for `agent_skill` entities during capability lookup
|
|
80
|
+
# (needs MAGE's memory client working — Phase C).
|
|
81
|
+
# CARE_MAGE__ENABLE_MEMORY_SKILL_LOOKUP=false
|
|
82
|
+
|
|
83
|
+
# Surface packaged AgentSkills via MAGE's built-in SkillRegistry.
|
|
84
|
+
# CARE_MAGE__ENABLE_SKILL_DISCOVERY=false
|
|
85
|
+
|
|
86
|
+
# --- Chain topology + depth ---
|
|
87
|
+
# MAGE's own defaults bias hard toward short LINEAR chains (it halves the
|
|
88
|
+
# analyzer's suggested step count and never varies the shape), which
|
|
89
|
+
# collapses most generations to a 2-step tool→llm chain. CARE overrides them
|
|
90
|
+
# so generation can pick richer shapes (diamond / map_reduce / tree_of_thought
|
|
91
|
+
# / hierarchical / …) with appropriate depth. Steps whose type the installed
|
|
92
|
+
# CARL can't run are downgraded to `llm` at run time (the DAG shape survives).
|
|
93
|
+
|
|
94
|
+
# Hint the planner toward a task-appropriate topology instead of always a
|
|
95
|
+
# linear pipeline. One extra LLM call per generation. Set false to force
|
|
96
|
+
# linear chains (MAGE's stock behaviour).
|
|
97
|
+
# CARE_MAGE__ENABLE_TOPOLOGY_SELECTION=true
|
|
98
|
+
|
|
99
|
+
# How many ranked topology candidates the selector keeps (1–8).
|
|
100
|
+
# CARE_MAGE__TOPOLOGY_MAX_CANDIDATES=3
|
|
101
|
+
|
|
102
|
+
# Scales the analyzer's suggested step count by (1 - bias), floored at 2.
|
|
103
|
+
# MAGE defaults to 0.5 (aggressive shortening); CARE uses 0.2 so non-trivial
|
|
104
|
+
# tasks keep enough steps to form a real topology. 0.0 = fully trust the
|
|
105
|
+
# analyzer; 0.5+ = force short chains.
|
|
106
|
+
# CARE_MAGE__SIMPLICITY_BIAS=0.2
|
|
107
|
+
|
|
108
|
+
# Hard cap on plan length (2–30) — a longer plan without a filled rationale
|
|
109
|
+
# is truncated. Raise for deliberately long pipelines.
|
|
110
|
+
# CARE_MAGE__SIMPLICITY_MAX_STEPS=7
|
|
111
|
+
|
|
112
|
+
# ---------------------------------------------------------------------------
|
|
113
|
+
# [memory] — GigaEvo Memory connection
|
|
114
|
+
# ---------------------------------------------------------------------------
|
|
115
|
+
|
|
116
|
+
# Base URL for the GigaEvo Memory server.
|
|
117
|
+
# CARE_MEMORY__BASE_URL=http://localhost:8000
|
|
118
|
+
|
|
119
|
+
# API key (sent as `X-API-Key`). Only required when Memory has
|
|
120
|
+
# `AUTH_REQUIRED=true`; dev installs leave it empty.
|
|
121
|
+
# CARE_MEMORY__API_KEY=
|
|
122
|
+
|
|
123
|
+
# Per-request HTTP timeout in seconds.
|
|
124
|
+
# CARE_MEMORY__TIMEOUT=30.0
|
|
125
|
+
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# [platform] — GigaEvo Platform connection
|
|
128
|
+
# ---------------------------------------------------------------------------
|
|
129
|
+
|
|
130
|
+
# Base URL for the GigaEvo Platform `master_api`.
|
|
131
|
+
# CARE_PLATFORM__BASE_URL=http://localhost:8001
|
|
132
|
+
|
|
133
|
+
# API key. Same convention as `CARE_MEMORY__API_KEY`.
|
|
134
|
+
# CARE_PLATFORM__API_KEY=
|
|
135
|
+
|
|
136
|
+
# Per-request HTTP timeout.
|
|
137
|
+
# CARE_PLATFORM__TIMEOUT=30.0
|
|
138
|
+
|
|
139
|
+
# ---------------------------------------------------------------------------
|
|
140
|
+
# [upload] — External chain-upload target (Phase 3 P2)
|
|
141
|
+
# ---------------------------------------------------------------------------
|
|
142
|
+
|
|
143
|
+
# POST endpoint that receives a saved chain when the user runs
|
|
144
|
+
# `/upload <chain_id>` in chat. Empty disables the slash
|
|
145
|
+
# command. Body shape: {"chain_id": "...", "chain": {...}}.
|
|
146
|
+
# CARE_UPLOAD__URL=
|
|
147
|
+
|
|
148
|
+
# Optional credential sent in `auth_header`. With the default
|
|
149
|
+
# `Authorization` header, value rides as `Bearer <key>`; with a
|
|
150
|
+
# different header name (e.g. `X-API-Key`) the value is sent
|
|
151
|
+
# raw.
|
|
152
|
+
# CARE_UPLOAD__API_KEY=
|
|
153
|
+
|
|
154
|
+
# Header name to carry the credential. Default fits the
|
|
155
|
+
# canonical OAuth-style `Authorization: Bearer <key>`.
|
|
156
|
+
# CARE_UPLOAD__AUTH_HEADER=Authorization
|
|
157
|
+
|
|
158
|
+
# Per-request HTTP timeout in seconds.
|
|
159
|
+
# CARE_UPLOAD__TIMEOUT=30.0
|
|
160
|
+
|
|
161
|
+
# ---------------------------------------------------------------------------
|
|
162
|
+
# [sandbox] — AgentSkill sandbox backend
|
|
163
|
+
# ---------------------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
# Backend kind. `local` is unsafe — appropriate only for CARE-internal
|
|
166
|
+
# testing. Choose `docker`, `e2b`, or `firejail` for real runs.
|
|
167
|
+
# CARE_SANDBOX__KIND=docker
|
|
168
|
+
|
|
169
|
+
# CPU limit (cores). Float; passed as the `--cpus` argument to
|
|
170
|
+
# DockerSandboxBackend.
|
|
171
|
+
# CARE_SANDBOX__CPU_LIMIT=2.0
|
|
172
|
+
|
|
173
|
+
# Memory limit. Docker-style suffix: `512k`, `512m`, `1g`, etc.
|
|
174
|
+
# CARE_SANDBOX__MEM_LIMIT=1g
|
|
175
|
+
|
|
176
|
+
# Network policy. `none` = isolated; `skill_declared` = allow the
|
|
177
|
+
# domains the AgentSkill manifest lists; `open` = unrestricted.
|
|
178
|
+
# CARE_SANDBOX__NETWORK_POLICY=skill_declared
|
|
179
|
+
|
|
180
|
+
# Container image (only consulted by DockerSandboxBackend).
|
|
181
|
+
# CARE_SANDBOX__IMAGE=python:3.12-slim
|
|
182
|
+
|
|
183
|
+
# `--pids-limit` for the container.
|
|
184
|
+
# CARE_SANDBOX__PIDS_LIMIT=256
|
|
185
|
+
|
|
186
|
+
# ---------------------------------------------------------------------------
|
|
187
|
+
# [tools] — Tools: user `@carl_tool` registry + bundled builtins + synthesis
|
|
188
|
+
# ---------------------------------------------------------------------------
|
|
189
|
+
|
|
190
|
+
# Directory the loader scans for `*.py` files with
|
|
191
|
+
# `@carl_tool`-decorated callables.
|
|
192
|
+
# CARE_TOOLS__PATH=~/.config/care/tools
|
|
193
|
+
|
|
194
|
+
# Optional tag whitelist — only tools whose
|
|
195
|
+
# `@carl_tool(tags=[...])` intersect this set get registered.
|
|
196
|
+
# Env vars don't support lists natively; use TOML for this.
|
|
197
|
+
# (Setting it via env will be parsed as a single-item list.)
|
|
198
|
+
# CARE_TOOLS__TAG_FILTER=
|
|
199
|
+
|
|
200
|
+
# Optional prefix prepended to every registered tool name. Handy
|
|
201
|
+
# when sourcing third-party tools so they don't collide with
|
|
202
|
+
# built-ins.
|
|
203
|
+
# CARE_TOOLS__NAME_PREFIX=
|
|
204
|
+
|
|
205
|
+
# --- Bundled standard tools (see care.builtin_tools) ---
|
|
206
|
+
|
|
207
|
+
# Register CARE's bundled tools (web_search, fetch_url, http_request,
|
|
208
|
+
# calculator, current_datetime, run_python) into every execution context so
|
|
209
|
+
# MAGE-generated chains that reference them actually run. Set false for a
|
|
210
|
+
# bring-your-own-tools deployment.
|
|
211
|
+
# CARE_TOOLS__ENABLE_BUILTINS=true
|
|
212
|
+
|
|
213
|
+
# Backend for the bundled web_search tool. One of: tavily, serpapi, brave.
|
|
214
|
+
# CARE_TOOLS__WEB_SEARCH_PROVIDER=tavily
|
|
215
|
+
|
|
216
|
+
# API key for the web_search provider. Without it web_search stays
|
|
217
|
+
# registered but inert (returns a "not configured" line, never raises).
|
|
218
|
+
# Tavily keys look like `tvly-...`. REQUIRED for live web search.
|
|
219
|
+
# CARE_TOOLS__WEB_SEARCH_API_KEY=
|
|
220
|
+
|
|
221
|
+
# How many results web_search returns per call (1–20).
|
|
222
|
+
# CARE_TOOLS__WEB_SEARCH_MAX_RESULTS=5
|
|
223
|
+
|
|
224
|
+
# Character cap on text returned by fetch_url / http_request / run_python —
|
|
225
|
+
# keeps one page from blowing the downstream LLM step's context (200–200000).
|
|
226
|
+
# CARE_TOOLS__FETCH_URL_MAX_CHARS=4000
|
|
227
|
+
|
|
228
|
+
# Register the run_python builtin (runs in the [sandbox] Docker sandbox,
|
|
229
|
+
# never in CARE's process). Set false to drop the code-exec surface while
|
|
230
|
+
# keeping the web/http tools.
|
|
231
|
+
# CARE_TOOLS__ENABLE_CODE_EXEC=true
|
|
232
|
+
|
|
233
|
+
# Wall-clock seconds a single run_python sandbox call may run (5–600).
|
|
234
|
+
# CARE_TOOLS__CODE_EXEC_TIMEOUT=60
|
|
235
|
+
|
|
236
|
+
# --- On-the-fly tool synthesis (see care.tool_synthesis) ---
|
|
237
|
+
|
|
238
|
+
# Self-healing synthesis: before a generated chain runs, scan it for tool
|
|
239
|
+
# steps whose tool_name isn't registered and have the LLM write + register
|
|
240
|
+
# a sandboxed implementation. Requires ENABLE_CODE_EXEC.
|
|
241
|
+
# CARE_TOOLS__AUTO_SYNTHESIZE_TOOLS=true
|
|
242
|
+
|
|
243
|
+
# Disk cache for synthesised tools (one <name>.json each; re-registered +
|
|
244
|
+
# advertised to MAGE every run, so a tool is generated once and reused).
|
|
245
|
+
# CARE_TOOLS__SYNTHESIZED_TOOLS_PATH=~/.config/care/synthesized_tools
|
|
246
|
+
|
|
247
|
+
# Also persist each synthesised tool to GigaEvo Memory (as an agent_skill)
|
|
248
|
+
# and check Memory for an existing impl before generating. Best-effort — a
|
|
249
|
+
# Memory outage never blocks a run.
|
|
250
|
+
# CARE_TOOLS__SAVE_SYNTHESIZED_TO_MEMORY=true
|
|
251
|
+
|
|
252
|
+
# At generation time, search Memory for previously-saved tools relevant to
|
|
253
|
+
# the task and advertise them to MAGE (so a tool from an earlier session is
|
|
254
|
+
# reused by name, not re-invented). Best-effort.
|
|
255
|
+
# CARE_TOOLS__RECALL_TOOLS_FROM_MEMORY=true
|
|
256
|
+
|
|
257
|
+
# Before running an all-LLM chain, ask the model whether any step needs
|
|
258
|
+
# live/external data (date, weather, news, prices, web facts) and rewrite it
|
|
259
|
+
# into a tool call if so — the "google anything" routing.
|
|
260
|
+
# CARE_TOOLS__ROUTE_LIVE_DATA_TO_TOOLS=true
|
|
261
|
+
|
|
262
|
+
# Before synthesising a missing tool, web_search for a REAL keyless public
|
|
263
|
+
# API and feed it into codegen — so the tool hits a live endpoint instead of
|
|
264
|
+
# one the LLM guessed. Needs WEB_SEARCH_API_KEY; degrades to ungrounded.
|
|
265
|
+
# CARE_TOOLS__GROUND_SYNTHESIS_WITH_WEB_SEARCH=true
|
|
266
|
+
|
|
267
|
+
# After synthesising a tool, run it once with the model's own sample inputs;
|
|
268
|
+
# on a runtime error (e.g. wrong endpoint) regenerate once with the failure
|
|
269
|
+
# fed back. Costs one extra sandbox run per newly-synthesised tool.
|
|
270
|
+
# CARE_TOOLS__SELF_TEST_SYNTHESIZED_TOOLS=true
|
|
271
|
+
|
|
272
|
+
# ---------------------------------------------------------------------------
|
|
273
|
+
# [telemetry] — Opt-in event-stream recording
|
|
274
|
+
# ---------------------------------------------------------------------------
|
|
275
|
+
|
|
276
|
+
# Master switch. Defaults to `false`; flip to `true` to ship
|
|
277
|
+
# generation/run/evolution events to the configured backend.
|
|
278
|
+
# CARE_TELEMETRY__ENABLED=false
|
|
279
|
+
|
|
280
|
+
# Backend identifier. Built-ins: `null` (no-op, for debugging the
|
|
281
|
+
# pipeline without a remote sink), `langfuse`. Custom backends
|
|
282
|
+
# register via `care.runtime.register_telemetry_backend()`.
|
|
283
|
+
# CARE_TELEMETRY__BACKEND=null
|
|
284
|
+
|
|
285
|
+
# Langfuse host. Defaults to Langfuse cloud; point at a self-
|
|
286
|
+
# hosted deployment for on-prem.
|
|
287
|
+
# CARE_TELEMETRY__HOST=https://cloud.langfuse.com
|
|
288
|
+
|
|
289
|
+
# Langfuse public + secret keys. Required only when
|
|
290
|
+
# `backend=langfuse` and `enabled=true`.
|
|
291
|
+
# CARE_TELEMETRY__PUBLIC_KEY=
|
|
292
|
+
# CARE_TELEMETRY__SECRET_KEY=
|
|
293
|
+
|
|
294
|
+
# ---------------------------------------------------------------------------
|
|
295
|
+
# [defaults] — UI defaults
|
|
296
|
+
# ---------------------------------------------------------------------------
|
|
297
|
+
|
|
298
|
+
# TUI language. Currently `en` or `ru`.
|
|
299
|
+
# CARE_DEFAULTS__LANGUAGE=en
|
|
300
|
+
|
|
301
|
+
# How many entries the history widgets retain. 1–10000.
|
|
302
|
+
# CARE_DEFAULTS__MAX_HISTORY_ENTRIES=50
|
|
303
|
+
|
|
304
|
+
# ---------------------------------------------------------------------------
|
|
305
|
+
# [chat] — ChatScreen (the primary chat surface)
|
|
306
|
+
# ---------------------------------------------------------------------------
|
|
307
|
+
|
|
308
|
+
# Which mode the chat boots into.
|
|
309
|
+
# ad_hoc — generate-and-execute on the spot, ReAct-style loop.
|
|
310
|
+
# Nothing is persisted to Memory.
|
|
311
|
+
# production — generate, save to Memory under a stable chain_id,
|
|
312
|
+
# seed a dataset card, and (when Platform is wired)
|
|
313
|
+
# kick off evolution.
|
|
314
|
+
# Accepted aliases: ad-hoc / adhoc / prod. Default: ad_hoc.
|
|
315
|
+
# CARE_CHAT__DEFAULT_MODE=ad_hoc
|
|
316
|
+
|
|
317
|
+
# ── Context / memory (CARE.md + CARL LTM) ────────────────────────────────
|
|
318
|
+
# Persistent user/project context (CARE.md) injected into generation, plus
|
|
319
|
+
# CARL's long-term memory injected into every answer + planner prompt.
|
|
320
|
+
# CARE_CONTEXT__ENABLED=true
|
|
321
|
+
# CARE_CONTEXT__GLOBAL_PATH=~/.config/care/CARE.md
|
|
322
|
+
# CARE_CONTEXT__PROJECT_FILENAME=CARE.md
|
|
323
|
+
# CARE_CONTEXT__MAX_CHARS=8000
|
|
324
|
+
# Post-turn: extract durable user facts into CARE.md (one extra LLM call).
|
|
325
|
+
# CARE_CONTEXT__AUTO_LEARN_FACTS=false
|
|
326
|
+
# CARL long-term memory: attach + inject + post-turn save-decision.
|
|
327
|
+
# CARE_CONTEXT__LTM_ENABLED=true
|
|
328
|
+
# CARE_CONTEXT__LTM_DIR=~/.config/care/ltm
|
|
329
|
+
# CARE_CONTEXT__LTM_SESSION_ID=default
|
|
330
|
+
# CARE_CONTEXT__LTM_INJECT_MAX_CHARS=2000
|
|
331
|
+
# CARE_CONTEXT__LTM_AUTOSAVE=true
|
|
332
|
+
|
|
333
|
+
# ── Artifacts (P6.5) ─────────────────────────────────────────────────────
|
|
334
|
+
# Root directory for files a chain/skill produces (.pptx/.xlsx/.docx/…).
|
|
335
|
+
# Unset → defaults to ~/.care/artifacts (cross-platform, under your home).
|
|
336
|
+
# Each saved file is surfaced in the TUI as a `📄 saved: <path>` line.
|
|
337
|
+
# CARE_ARTIFACTS__DIR=~/.care/artifacts
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
*.egg
|
|
7
|
+
*.egg-info/
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
|
|
17
|
+
# IDE
|
|
18
|
+
.idea/
|
|
19
|
+
.vscode/
|
|
20
|
+
*.swp
|
|
21
|
+
*.swo
|
|
22
|
+
|
|
23
|
+
# Environment files
|
|
24
|
+
deploy/.env
|
|
25
|
+
.env
|
|
26
|
+
|
|
27
|
+
# Docker
|
|
28
|
+
docker-compose.override.yml
|
|
29
|
+
|
|
30
|
+
# Testing
|
|
31
|
+
.pytest_cache/
|
|
32
|
+
.coverage
|
|
33
|
+
htmlcov/
|
|
34
|
+
.mypy_cache/
|
|
35
|
+
.ruff_cache
|
|
36
|
+
|
|
37
|
+
# OS
|
|
38
|
+
.DS_Store
|
|
39
|
+
Thumbs.db
|
|
40
|
+
uv.lock
|
|
41
|
+
.claude
|
|
42
|
+
logs/*
|
|
43
|
+
!logs/.gitkeep
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.PHONY: run sync help test lint
|
|
2
|
+
|
|
3
|
+
LOG_DIR := logs
|
|
4
|
+
TIMESTAMP := $(shell date +%Y%m%d-%H%M%S)
|
|
5
|
+
UI_LOG := $(LOG_DIR)/care-ui-$(TIMESTAMP).log
|
|
6
|
+
APP_LOG := $(LOG_DIR)/care-app-$(TIMESTAMP).log
|
|
7
|
+
|
|
8
|
+
# `make run` launches the TUI. Pass `LOG=1` to also capture
|
|
9
|
+
# debug logs to `./logs`:
|
|
10
|
+
#
|
|
11
|
+
# * care-ui-<timestamp>.log — Textual UI events (compose,
|
|
12
|
+
# mount, dispatch, render)
|
|
13
|
+
# driven by TEXTUAL_LOG.
|
|
14
|
+
# * care-app-<timestamp>.log — Python app/client log
|
|
15
|
+
# (care.* modules, httpx Memory
|
|
16
|
+
# / Platform calls, MAGE / CARL
|
|
17
|
+
# workers) driven by CARE_LOG_FILE
|
|
18
|
+
# / CARE_LOG_LEVEL.
|
|
19
|
+
#
|
|
20
|
+
# Pass `LOG_LEVEL=DEBUG` to widen the app-log channel (default INFO).
|
|
21
|
+
# `PYTHONIOENCODING=utf-8` keeps non-ASCII output safe when LC_*
|
|
22
|
+
# is unset or set to `C`.
|
|
23
|
+
LOG_LEVEL ?= INFO
|
|
24
|
+
|
|
25
|
+
run: sync
|
|
26
|
+
ifeq ($(LOG),1)
|
|
27
|
+
@mkdir -p $(LOG_DIR)
|
|
28
|
+
@echo "UI log -> $(UI_LOG)"
|
|
29
|
+
@echo "App log -> $(APP_LOG) (level=$(LOG_LEVEL))"
|
|
30
|
+
PYTHONIOENCODING=utf-8 \
|
|
31
|
+
TEXTUAL_LOG=$(UI_LOG) \
|
|
32
|
+
CARE_LOG_FILE=$(APP_LOG) \
|
|
33
|
+
CARE_LOG_LEVEL=$(LOG_LEVEL) \
|
|
34
|
+
uv run care
|
|
35
|
+
else
|
|
36
|
+
PYTHONIOENCODING=utf-8 uv run care
|
|
37
|
+
endif
|
|
38
|
+
|
|
39
|
+
sync:
|
|
40
|
+
uv sync
|
|
41
|
+
|
|
42
|
+
help:
|
|
43
|
+
uv run care --help
|
|
44
|
+
|
|
45
|
+
test:
|
|
46
|
+
uv run pytest
|
|
47
|
+
|
|
48
|
+
lint:
|
|
49
|
+
uv run ruff check .
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: maestro-care
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Collaborative Agent Reasoning Ecosystem — Textual TUI demo
|
|
5
|
+
Project-URL: Homepage, https://github.com/AIRI-Institute/care
|
|
6
|
+
Project-URL: Repository, https://github.com/AIRI-Institute/care
|
|
7
|
+
Project-URL: Issues, https://github.com/AIRI-Institute/care/issues
|
|
8
|
+
Keywords: agents,care,carl,evolution,llm,mage,textual,tui
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development
|
|
18
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
19
|
+
Classifier: Topic :: Terminals
|
|
20
|
+
Requires-Python: >=3.12
|
|
21
|
+
Requires-Dist: gigaevo-client>=0.3.0
|
|
22
|
+
Requires-Dist: httpx>=0.27
|
|
23
|
+
Requires-Dist: mmar-mage>=0.1
|
|
24
|
+
Requires-Dist: pydantic>=2.11
|
|
25
|
+
Requires-Dist: pypdf>=4.0
|
|
26
|
+
Requires-Dist: python-pptx>=0.6.21
|
|
27
|
+
Requires-Dist: rich-pixels>=3.0
|
|
28
|
+
Requires-Dist: textual>=8.2.6
|
|
29
|
+
Provides-Extra: anthropic
|
|
30
|
+
Requires-Dist: anthropic>=0.20; extra == 'anthropic'
|
|
31
|
+
Provides-Extra: carl
|
|
32
|
+
Requires-Dist: mmar-carl>=0.2; extra == 'carl'
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
37
|
+
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
38
|
+
Provides-Extra: docker
|
|
39
|
+
Requires-Dist: docker>=7.0; extra == 'docker'
|
|
40
|
+
Provides-Extra: e2b
|
|
41
|
+
Requires-Dist: e2b>=0.17; extra == 'e2b'
|
|
42
|
+
Provides-Extra: full
|
|
43
|
+
Requires-Dist: anthropic>=0.20; extra == 'full'
|
|
44
|
+
Requires-Dist: docker>=7.0; extra == 'full'
|
|
45
|
+
Requires-Dist: e2b>=0.17; extra == 'full'
|
|
46
|
+
Requires-Dist: mmar-carl>=0.2; extra == 'full'
|
|
47
|
+
Requires-Dist: openai>=1.0; extra == 'full'
|
|
48
|
+
Requires-Dist: plotext>=5.2; extra == 'full'
|
|
49
|
+
Provides-Extra: openai
|
|
50
|
+
Requires-Dist: openai>=1.0; extra == 'openai'
|
|
51
|
+
Provides-Extra: plots
|
|
52
|
+
Requires-Dist: plotext>=5.2; extra == 'plots'
|
|
53
|
+
Description-Content-Type: text/markdown
|
|
54
|
+
|
|
55
|
+
# CARE — Collaborative Agent Reasoning Ecosystem
|
|
56
|
+
|
|
57
|
+
A Textual TUI + CLI for generating, running, and evolving CARL agent
|
|
58
|
+
chains. CARE is the user-facing consumer on top of a four-module stack —
|
|
59
|
+
**MAGE** for chain generation, **CARL** for execution, **GigaEvo Memory**
|
|
60
|
+
for persistence, and **GigaEvo Platform** for evolution.
|
|
61
|
+
|
|
62
|
+
## Run
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
uv sync
|
|
66
|
+
uv run care init # one-shot: write a minimal .env with MAGE creds
|
|
67
|
+
uv run care # launch the TUI
|
|
68
|
+
uv run care --help # list CLI subcommands
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`care init` walks the minimum MAGE credentials (base URL, API key,
|
|
72
|
+
model) and writes a `./.env` so a fresh checkout can boot. Use
|
|
73
|
+
`--non-interactive` with explicit flags for CI / scripted setup:
|
|
74
|
+
`care init --non-interactive --api-key sk-... --base-url ... --model ...`.
|
|
75
|
+
|
|
76
|
+
The TUI opens directly into the **chat surface** — a Claude-Code-style
|
|
77
|
+
transcript with a prompt at the bottom and a mode toggle above it.
|
|
78
|
+
Type a task in natural language to generate + run an agent chain;
|
|
79
|
+
type a slash command (`/help`, `/mode`, `/library`, `/dataset`,
|
|
80
|
+
`/evolution`, `/tour`, …) for the non-chat affordances. First-time
|
|
81
|
+
users see a one-line offer to type `/tour` for a 5-step walkthrough.
|
|
82
|
+
|
|
83
|
+
### Chat modes
|
|
84
|
+
|
|
85
|
+
The toggle above the prompt picks one of two modes; `/mode` switches
|
|
86
|
+
the same setting via the keyboard. Default is **Ad-Hoc** —
|
|
87
|
+
configurable per-deployment with `CARE_CHAT__DEFAULT_MODE`.
|
|
88
|
+
|
|
89
|
+
| Mode | What happens on every prompt |
|
|
90
|
+
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
91
|
+
| **Ad-Hoc** | MAGE generates a chain, CARL runs it on the spot, the answer prints inline. The agent may loop (ReAct) until it decides the task is done. **Nothing is saved.** |
|
|
92
|
+
| **Production** | MAGE generates a _reproducible_ chain, CARE saves it to Memory under a stable `chain_id`, runs one baseline to seed a dataset entry, and (when Platform is wired) kicks off an evolution run. Use `/dataset list <chain_id>` / `/dataset run <chain_id>` / `/evolution watch <run_id>` to follow up. |
|
|
93
|
+
|
|
94
|
+
Production requires `CARE_MEMORY__BASE_URL` (and `CARE_MEMORY__API_KEY`
|
|
95
|
+
when the deployment enforces auth). Without Memory configured,
|
|
96
|
+
selecting Production auto-falls back to Ad-Hoc with a warning line —
|
|
97
|
+
the toggle's tooltip explains why.
|
|
98
|
+
|
|
99
|
+
First boot (no `~/.config/care/config.toml` on disk) lands on the
|
|
100
|
+
**Settings** screen so you can configure Memory / Platform base URLs +
|
|
101
|
+
the MAGE LLM credentials before doing anything else. Returning users
|
|
102
|
+
land on the chat surface; `/library` opens the saved-agents table
|
|
103
|
+
(last-run time, favourite status, fitness scores, row-action keys
|
|
104
|
+
below).
|
|
105
|
+
|
|
106
|
+
## Canonical user flow
|
|
107
|
+
|
|
108
|
+
Generate Agent A → save it → generate B and C → return to A from the
|
|
109
|
+
library → re-run from the same task + context files → optionally
|
|
110
|
+
evolve A and accept the best individual back into the stable channel.
|
|
111
|
+
|
|
112
|
+
## Screens
|
|
113
|
+
|
|
114
|
+
CARE ships **18+ screens** covering the full lifecycle:
|
|
115
|
+
|
|
116
|
+
| Screen | Purpose |
|
|
117
|
+
| --------------------- | ------------------------------------------------ |
|
|
118
|
+
| `WelcomeScreen` | Boot splash + recents sidebar |
|
|
119
|
+
| `LibraryScreen` | Saved-agent table, row actions, search |
|
|
120
|
+
| `QueryScreen` | + New agent — task description + context files |
|
|
121
|
+
| `GenerationScreen` | Live MAGE progress |
|
|
122
|
+
| `InspectionScreen` | Saved-chain detail + run history |
|
|
123
|
+
| `EditAgentScreen` | Inline edit + Save / Promote-to-stable |
|
|
124
|
+
| `ExecutionScreen` | Live CARL run + token streaming |
|
|
125
|
+
| `EvolutionScreen` | GA + Pareto picker + accept-winner |
|
|
126
|
+
| `ReplayScreen` | Step through a saved ReasoningResult |
|
|
127
|
+
| `CatalogScreen` | Browse installed capabilities (skills/MCP/tools) |
|
|
128
|
+
| `MarketplaceScreen` | Search shared agent_skill listings on Memory |
|
|
129
|
+
| `HelpScreen` | Tutorial + key cheat-sheet |
|
|
130
|
+
| `SettingsScreen` | Edit MAGE / Memory / Platform / theme |
|
|
131
|
+
| `TaskListDrawer` | In-flight tasks panel |
|
|
132
|
+
| `CommandPaletteModal` | Fuzzy palette over commands + saved entities |
|
|
133
|
+
| `DiffModal` | Side-by-side compare two chains |
|
|
134
|
+
| `LineageModal` | Walk a chain's ancestry DAG |
|
|
135
|
+
| `ConflictModal` | Resolve a name collision on save |
|
|
136
|
+
|
|
137
|
+
## Global keys
|
|
138
|
+
|
|
139
|
+
- `Ctrl+P` — Command palette (search commands + chains + skills)
|
|
140
|
+
- `Ctrl+B` — Task list drawer
|
|
141
|
+
- `Ctrl+K` — Capability catalog
|
|
142
|
+
- `Ctrl+S` — Save current artifact
|
|
143
|
+
- `Ctrl+R` — Re-run current chain
|
|
144
|
+
- `?` — Help (tutorial + every binding)
|
|
145
|
+
- `Esc` — Back / cancel
|
|
146
|
+
- `Ctrl+Q` — Quit
|
|
147
|
+
|
|
148
|
+
Each screen layers its own bindings — see `?` (Help) for the full set
|
|
149
|
+
filtered by the active screen.
|
|
150
|
+
|
|
151
|
+
A single-page reference table covering every screen + modal lives at
|
|
152
|
+
[`docs/screens/README.md`](docs/screens/README.md). It maps each
|
|
153
|
+
surface to its slash command + status (M0/M1) + primary purpose so a
|
|
154
|
+
new contributor can locate the right module from one click.
|
|
155
|
+
|
|
156
|
+
## Demo
|
|
157
|
+
|
|
158
|
+
A short asciicast walks the three CLI surfaces against a
|
|
159
|
+
hermetic seed directory. Reproduce or re-record with:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
scripts/record_demo.sh
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
See [`examples/asciicast/recording_script.md`](examples/asciicast/recording_script.md)
|
|
166
|
+
for the per-act keystroke list. The output lands at
|
|
167
|
+
`docs/asciicasts/care-tour.cast` and can be embedded in this
|
|
168
|
+
README once recorded (`asciinema upload` for a hosted player or
|
|
169
|
+
a local relative link for offline reading).
|
|
170
|
+
|
|
171
|
+
## Architecture
|
|
172
|
+
|
|
173
|
+
CARE is the consumer at the top of a four-module stack — see
|
|
174
|
+
[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for the layer-by-layer
|
|
175
|
+
walk-through (generation / execution / persistence / evolution) with
|
|
176
|
+
cross-links to the upstream modules and CARE's internal module
|
|
177
|
+
boundaries.
|
|
178
|
+
|
|
179
|
+
## Configuration
|
|
180
|
+
|
|
181
|
+
CARE reads its configuration from three sources, in increasing precedence:
|
|
182
|
+
|
|
183
|
+
1. Defaults baked into `care.config.CareConfig`.
|
|
184
|
+
2. `~/.config/care/config.toml` (user-global TOML).
|
|
185
|
+
3. `./care.toml` in the current working directory (per-project overrides).
|
|
186
|
+
4. `CARE_*` environment variables.
|
|
187
|
+
|
|
188
|
+
Nested fields use double-underscores in env-var form, mirroring how the
|
|
189
|
+
TOML sections nest. For example, `[mage] mode = "fast"` in TOML is
|
|
190
|
+
`CARE_MAGE__MODE=fast` in the environment.
|
|
191
|
+
|
|
192
|
+
See [`.env.example`](.env.example) for the complete list of supported
|
|
193
|
+
variables with descriptions and defaults. Copy it to `.env` (or export the
|
|
194
|
+
vars in your shell) and override only what you need.
|
|
195
|
+
|
|
196
|
+
### Quick reference
|
|
197
|
+
|
|
198
|
+
| Section | Env-var prefix | Purpose |
|
|
199
|
+
| ----------- | ------------------- | -------------------------------------- |
|
|
200
|
+
| `mage` | `CARE_MAGE__*` | MAGE generator (provider, API key, …) |
|
|
201
|
+
| `memory` | `CARE_MEMORY__*` | GigaEvo Memory connection |
|
|
202
|
+
| `platform` | `CARE_PLATFORM__*` | GigaEvo Platform connection |
|
|
203
|
+
| `sandbox` | `CARE_SANDBOX__*` | AgentSkill sandbox backend + limits |
|
|
204
|
+
| `tools` | `CARE_TOOLS__*` | `@carl_tool` registry + bundled builtins (web_search, …) + on-the-fly synthesis |
|
|
205
|
+
| `telemetry` | `CARE_TELEMETRY__*` | Opt-in event-stream sink (Langfuse, …) |
|
|
206
|
+
| `defaults` | `CARE_DEFAULTS__*` | UI defaults (language, history size) |
|
|
207
|
+
|
|
208
|
+
## CLI
|
|
209
|
+
|
|
210
|
+
`care` (no subcommand) launches the TUI. The headless subcommands share
|
|
211
|
+
the `CareConfig` and data layers the TUI uses — every screen's primary
|
|
212
|
+
affordance has a terminal twin.
|
|
213
|
+
|
|
214
|
+
**Setup**
|
|
215
|
+
|
|
216
|
+
- `care init [--non-interactive] [--api-key X] [--base-url Y] [--model Z] [--mode ad_hoc|production] [--force]` —
|
|
217
|
+
one-shot quick-start: writes a minimal `.env` with the four MAGE +
|
|
218
|
+
chat keys a fresh checkout needs. Refuses to overwrite an existing
|
|
219
|
+
`.env` without `--force`.
|
|
220
|
+
|
|
221
|
+
**Discovery & validation**
|
|
222
|
+
|
|
223
|
+
- `care catalog [--json] [--kind ...]` — list installed AgentSkills,
|
|
224
|
+
MCP servers, tools, capability memory cards.
|
|
225
|
+
- `care validate <chain.json>` — parse + preflight a CARL chain.
|
|
226
|
+
- `care import <pattern>... [--apply]` — batch-validate (dry-run
|
|
227
|
+
default) or import chain JSON files.
|
|
228
|
+
|
|
229
|
+
**Generate / run / replay**
|
|
230
|
+
|
|
231
|
+
- `care generate "<task>" [--mode fast|deep] [--save NAME] [--output PATH]` —
|
|
232
|
+
one-shot MAGE generation.
|
|
233
|
+
- `care run <chain_id> [--execute] [--task TEXT] [--input KEY=VAL] [--save-result NAME]` —
|
|
234
|
+
fetch a saved chain, preflight, and optionally execute via CARL.
|
|
235
|
+
- `care replay <run.json>` — step through a saved
|
|
236
|
+
`ReasoningResult` / `RunRecord` JSON.
|
|
237
|
+
|
|
238
|
+
**Memory browse**
|
|
239
|
+
|
|
240
|
+
- `care memory ls [--entity-type ...] [--tag ...] [--q ...]` —
|
|
241
|
+
list saved entities.
|
|
242
|
+
- `care memory show <entity_id> [--content-only]` — drill down on
|
|
243
|
+
a single entity.
|
|
244
|
+
- `care memory history <chain_id>` — list recorded runs for a
|
|
245
|
+
chain.
|
|
246
|
+
- `care search "<query>" [--search-type bm25|vector|hybrid]` —
|
|
247
|
+
BM25 / vector / hybrid search across saved entities.
|
|
248
|
+
- `care diff <left_id> <right_id>` — side-by-side chain compare.
|
|
249
|
+
- `care lineage <chain_id>` — walk the ancestry DAG.
|
|
250
|
+
- `care favourite <entity_id> [--off]` — star / unstar a library
|
|
251
|
+
entity.
|
|
252
|
+
|
|
253
|
+
**Capabilities & evolution**
|
|
254
|
+
|
|
255
|
+
- `care marketplace "<query>"` — search shared agent_skill listings.
|
|
256
|
+
- `care evolve <chain_id> [--wait] [--accept]` — submit + watch +
|
|
257
|
+
accept an evolution run.
|
|
258
|
+
|
|
259
|
+
**UX**
|
|
260
|
+
|
|
261
|
+
- `care help [--markdown]` — render the tutorial + cheat-sheet.
|
|
262
|
+
|
|
263
|
+
Run `care <subcommand> --help` for the full flag set on each.
|