flock-core 0.5.10__tar.gz → 0.5.11__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.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- flock_core-0.5.11/.github/issue_draft_non_blocking_serve.md +205 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/PKG-INFO +52 -58
- {flock_core-0.5.10 → flock_core-0.5.11}/README.md +51 -57
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/dashboard.md +28 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/index.md +11 -0
- flock_core-0.5.11/docs/guides/rest-api.md +466 -0
- flock_core-0.5.11/examples/02-dashboard/02_non_blocking_serve.py +97 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/pyproject.toml +4 -40
- flock_core-0.5.11/src/flock/api_models.py +285 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/service.py +44 -21
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/orchestrator.py +246 -9
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/service.py +119 -61
- flock_core-0.5.11/src/flock/system_artifacts.py +33 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/integration/test_orchestrator_dashboard.py +241 -0
- flock_core-0.5.11/tests/test_api_models.py +320 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/uv.lock +161 -141
- flock_core-0.5.10/docs/specs/001-sqlite-blackboard-store/PLAN.md +0 -169
- flock_core-0.5.10/docs/specs/001-sqlite-blackboard-store/PRD.md +0 -146
- flock_core-0.5.10/docs/specs/002-ui-optimization-migration/PHASE_4.1_AFTERMATH_AUDIT.md +0 -243
- flock_core-0.5.10/docs/specs/002-ui-optimization-migration/PHASE_4.1_TASK_LIST.md +0 -464
- flock_core-0.5.10/docs/specs/002-ui-optimization-migration/PLAN.md +0 -743
- flock_core-0.5.10/docs/specs/002-ui-optimization-migration/PRD.md +0 -146
- flock_core-0.5.10/docs/specs/003-logic-operations/PLAN.md +0 -1252
- flock_core-0.5.10/docs/specs/004-logic-operations-ux/PLAN.md +0 -630
- flock_core-0.5.10/docs/specs/004-logic-operations-ux/PRD.md +0 -146
- flock_core-0.5.10/docs/specs/004-orchestrator-component/LOGGING_GUIDE.md +0 -652
- flock_core-0.5.10/docs/specs/004-orchestrator-component/PLAN.md +0 -509
- flock_core-0.5.10/docs/specs/004-orchestrator-component/PRD.md +0 -146
- flock_core-0.5.10/docs/specs/004-orchestrator-component/README.md +0 -104
- flock_core-0.5.10/docs/specs/004-orchestrator-component/UNIFIED_IMPLEMENTATION_PLAN.md +0 -1028
- flock_core-0.5.10/docs/specs/005-multi-publishes-fan-out/CHANGES_SUMMARY.md +0 -160
- flock_core-0.5.10/docs/specs/005-multi-publishes-fan-out/CONCURRENCY_FIX.md +0 -304
- flock_core-0.5.10/docs/specs/005-multi-publishes-fan-out/PHASE4_ARCHITECTURAL_PIVOT.md +0 -277
- flock_core-0.5.10/docs/specs/005-multi-publishes-fan-out/PLAN.md +0 -616
- flock_core-0.5.10/docs/specs/005-multi-publishes-fan-out/PRD.md +0 -146
- flock_core-0.5.10/docs/specs/006-dspy-engine-refactor/PLAN.md +0 -1052
- flock_core-0.5.10/docs/specs/007-context-provider-security-fix/PLAN.md +0 -470
- flock_core-0.5.10/docs/specs/007-context-provider-security-fix/PRD.md +0 -146
- {flock_core-0.5.10 → flock_core-0.5.11}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.envtemplate +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.github/workflows/quality.yml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.gitignore +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.pre-commit-config.yaml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.python-version +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/.vscode/settings.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/AGENTS.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/AUTO_TRACING.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/CONTRIBUTING.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/ID_AUDIT_REPORT.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/LICENSE +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/ROADMAP.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/USECASES.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/about/changelog.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/about/contributing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/about/roadmap.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/batch.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/bug_diagnosis.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/flock.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/flock_ui_1.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/flock_ui_agent_view.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/flock_ui_blackboard_view.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/join.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/pattern2.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/pizza.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/trace_1.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/trace_2.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/assets/images/trace_3.png +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/bugfixes/websocket-streaming-deadlock-fix.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/community/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/examples/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/getting-started/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/getting-started/installation.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/getting-started/quick-start.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/agents.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/batch-processing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/blackboard.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/components.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/context-providers.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/dspy-engine.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/fan-out.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/join-operations.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/mcp-roots.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/orchestrator-components.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/patterns.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/persistent-blackboard.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/predicates.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/testing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/auto-tracing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/how_to_use_tracing_effectively.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/trace-module.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/tracing-production.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/tracing-quickstart.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/tracing/unified-tracing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/use-cases.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/guides/visibility.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/javascripts/extra.js +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/reference/api.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/reference/configuration.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/reference/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tags.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/troubleshooting/streaming-freeze-fix.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/troubleshooting/streaming-freeze-with-dashboard-fix.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/advanced-patterns.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/conditional-routing.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/connect_with_ollama.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/custom-agent-components.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/custom-engines.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/index.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/multi-agent-workflow.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/tutorials/your-first-agent.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/docs/whiteducksoftware/versions.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/01-single_publish.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/02-multi_publish.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/03-multi-artifact-multi-publish.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/04-fan-out.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/05-multi-fan-out.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/00-patterns/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/01_declarative_pizza.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/02_input_and_output.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/03_code_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/04_input_and_output.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/05_mcp_and_tools.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/06_mcp_roots.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/07_web_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/08_band_formation.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/09_debate_club.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/10_news_agency.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/11_tracing_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/12_secret_agents.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/13_medical_diagnostics_joinspec.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/14_ecommerce_batch_processing.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/15_iot_sensor_batching.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/01-cli/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/01_declarative_pizza.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/02_input_and_output.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/03_code_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/04_input_and_output.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/05_mcp_and_tools.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/06_mcp_roots.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/07_web_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/08_band_formation.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/09_debate_club.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/10_news_agency.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/11_tracing_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/12_secret_agents.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/13_medical_diagnostics_joinspec.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/14_ecommerce_batch_processing.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/15_iot_sensor_batching.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/16_news_batching.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/02-dashboard/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_01_code_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_02_band_formation.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_03_web_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_04_debate_club.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_05_tracing_detective.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_06_secret_agents.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_07_news_agency.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_08_the_matchmaker.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_09_the_batch_optimizer.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_10_the_smart_factory.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_11_performance_monitor.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_12_confidence_booster.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/03-claudes-workshop/lesson_13_regex_matcher.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/01_persistent_pizza.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/02-dashboard-edge-cases.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/03-scale-test-100-agents.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/04_persistent_pizza_dashboard.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/05_lm_studio.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/04-misc/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/05-engines/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/05-engines/emoji_mood_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/05-engines/potion_batch_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/06-agent-components/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/06-agent-components/cheer_meter_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/06-agent-components/plot_twist_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/07-orchestrator-components/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/07-orchestrator-components/kitchen_monitor_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/07-orchestrator-components/quest_tracker_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/01_basic_visibility.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/02_global_provider.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/02_simple_global_provider.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/03_per_agent_provider.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/04_custom_filtering.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/05_password_redactor.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/08-context-provider/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/examples/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/mkdocs.yml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/requirements.txt +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/build_dashboard.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/bump_version.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/check_version_bump.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/ensure_uv.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/gen_ref_pages.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/scripts/generate_llm_codebase.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/agent.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/api/themes.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/artifact_collector.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/artifacts.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/batch_accumulator.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/cli.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/components.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/context_provider.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/correlation_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/collector.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/events.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/graph_builder.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/launcher.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/models/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/models/graph.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/static_v2/assets/index-DFRnI_mt.js +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/static_v2/assets/index-fPLNdmp1.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/static_v2/index.html +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/dashboard/websocket.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/engines/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/engines/dspy_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/engines/examples/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/engines/examples/simple_batch_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/examples.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/docs/DESIGN_SYSTEM.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/index.html +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/package-lock.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/package.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/App.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/__tests__/integration/graph-snapshot.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/BuildInfo.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/EmptyState.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/EmptyState.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/ErrorBoundary.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/ErrorBoundary.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/LoadingSpinner.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/common/LoadingSpinner.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/controls/PublishControl.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/controls/PublishControl.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/controls/PublishControl.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/DetailWindowContainer.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/LiveOutputTab.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/LiveOutputTab.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/MessageDetailWindow.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/MessageHistoryTab.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/NodeDetailWindow.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/NodeDetailWindow.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/RunStatusTab.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/details/tabs.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/CorrelationIDFilter.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/CorrelationIDFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/FilterFlyout.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/FilterFlyout.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/FilterPills.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/FilterPills.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/FilterPills.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/ProducerFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/SavedFiltersControl.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/SavedFiltersControl.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/TagFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/TimeRangeFilter.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/TimeRangeFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/filters/VisibilityFilter.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/AgentNode.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/AgentNode.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/GraphCanvas.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/LogicOperationsDisplay.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/MessageFlowEdge.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/MessageNode.test.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/MessageNode.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/MiniMap.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/PendingBatchEdge.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/PendingJoinEdge.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/graph/TransformEdge.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/layout/DashboardLayout.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/layout/DashboardLayout.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/layout/Header.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/layout/Header.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/ModuleRegistry.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/ModuleRegistry.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/ModuleWindow.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/TraceModuleJaeger.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/modules/registerModules.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/AdvancedSettings.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/AppearanceSettings.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/GraphSettings.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/MultiSelect.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/SettingsPanel.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/SettingsPanel.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/ThemeSelector.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/components/settings/TracingSettings.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/hooks/useKeyboardShortcuts.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/hooks/useModulePersistence.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/hooks/useModulePersistence.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/hooks/useModules.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/hooks/usePersistence.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/main.tsx +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/api.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/graphService.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/graphService.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/indexeddb.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/indexeddb.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/layout.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/layout.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/themeApplicator.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/themeService.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/services/websocket.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/filterStore.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/filterStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/graphStore.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/graphStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/moduleStore.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/moduleStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/settingsStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/streamStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/uiStore.test.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/uiStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/store/wsStore.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/styles/index.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/styles/scrollbar.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/styles/variables.css +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/test/setup.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/types/filters.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/types/graph.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/types/modules.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/types/theme.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/utils/artifacts.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/utils/mockData.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/utils/performance.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/src/vite-env.d.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/tsconfig.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/tsconfig.node.json +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/vite.config.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/frontend/vitest.config.ts +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/helper/cli_helper.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/auto_trace.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/formatters/themes.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/logging.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/telemetry.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/telemetry_exporter/duckdb_exporter.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/logging/trace_and_logged.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/client.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/config.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/manager.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/sse/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/stdio/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/websockets/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/tool.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/types/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/types/callbacks.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/types/factories.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/types/handlers.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/types/types.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/util/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/mcp/util/helpers.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/orchestrator_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/patches/__init__.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/patches/dspy_streaming_patch.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/registry.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/runtime.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/store.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/subscription.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/django.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/github.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/material.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/square.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/utilities.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/utility/output_utility_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/src/flock/visibility.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/PHASE2_TEST_SUMMARY.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/PHASE3_TEST_SUMMARY.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/TEST_COVERAGE_PHASE2.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/conftest.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/contract/test_agent_payload_selection_contract.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/contract/test_artifact_storage_contract.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/contract/test_type_normalization_contract.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/dashboard/test_logic_operations_api.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/dashboard/test_logic_operations_events.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/e2e/README.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/e2e/TESTING_SUMMARY.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/e2e/test_critical_scenarios.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/integration/test_collector_orchestrator.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/integration/test_sqlite_store_integration.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/integration/test_websocket_protocol.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_agent.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_agent_builder.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_agent_mcp.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_agent_server_specific_mounts.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_artifacts.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_cli.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_cli_helper.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_components.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_context_provider.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_context_security.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dashboard_api.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dashboard_collector.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dashboard_graph.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dashboard_launcher.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dashboard_service.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dspy_engine.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dspy_engine_mcp.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dspy_engine_multioutput.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_dspy_streaming_events.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_engine_context.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_engines.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_filtering_validation.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_logging_config.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_client.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_config.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_coverage_summary.md +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_imports.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_manager.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_server_config_typeddict.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_mcp_tool_handlers.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_and_gate.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_batchspec.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_combined.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_component.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_context_injection.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_joinspec.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_orchestrator_mcp.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_output_groups.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_registry.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_runtime.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_service.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_service_extended.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_store.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_store_graph.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_subscription.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_telemetry.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_trace_clearing.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_unified_tracing.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_utilities.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_version_endpoint.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_visibility.py +0 -0
- {flock_core-0.5.10 → flock_core-0.5.11}/tests/test_websocket_manager.py +0 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# 🚀 [FEATURE] Non-Blocking `serve()` for Dashboard Examples
|
|
2
|
+
|
|
3
|
+
### Is your feature request related to a problem?
|
|
4
|
+
|
|
5
|
+
Dashboard examples currently face a limitation: once `flock.serve(dashboard=True)` is called, execution blocks indefinitely. This makes it impossible to publish messages or perform any setup logic after starting the dashboard server, unlike CLI examples which use `run_until_idle()` for controlled execution.
|
|
6
|
+
|
|
7
|
+
**Current workaround:**
|
|
8
|
+
Users must publish all messages *before* calling `serve()`, which is awkward for demos and prevents realistic workflows where the server runs continuously while processing incoming messages.
|
|
9
|
+
|
|
10
|
+
**Example of the problem:**
|
|
11
|
+
```python
|
|
12
|
+
# This doesn't work - can't execute after serve()
|
|
13
|
+
async def main():
|
|
14
|
+
await flock.serve(dashboard=True) # blocks forever
|
|
15
|
+
|
|
16
|
+
# This code never runs! ❌
|
|
17
|
+
pizza = MyDreamPizza(pizza_idea="pizza with pineapple")
|
|
18
|
+
await flock.publish(pizza)
|
|
19
|
+
await flock.run_until_idle()
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Describe the solution you want to see
|
|
23
|
+
|
|
24
|
+
Add a `blocking` parameter to `serve()` that allows starting the dashboard server as a background task:
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
async def serve(
|
|
28
|
+
self,
|
|
29
|
+
*,
|
|
30
|
+
dashboard: bool = False,
|
|
31
|
+
dashboard_v2: bool = False,
|
|
32
|
+
host: str = "127.0.0.1",
|
|
33
|
+
port: int = 8344,
|
|
34
|
+
blocking: bool = True, # NEW: default True for backwards compatibility
|
|
35
|
+
) -> Task[None] | None:
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Usage example:**
|
|
39
|
+
```python
|
|
40
|
+
async def main():
|
|
41
|
+
# Start dashboard in background
|
|
42
|
+
await flock.serve(dashboard=True, blocking=False)
|
|
43
|
+
|
|
44
|
+
# Now we can publish messages!
|
|
45
|
+
pizza = MyDreamPizza(pizza_idea="pizza with pineapple")
|
|
46
|
+
await flock.publish(pizza)
|
|
47
|
+
await flock.run_until_idle()
|
|
48
|
+
|
|
49
|
+
# Dashboard stays alive for inspection
|
|
50
|
+
print("Check dashboard at http://localhost:8344")
|
|
51
|
+
await asyncio.Event().wait() # Keep running
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Key requirements:**
|
|
55
|
+
- Backwards compatible (`blocking=True` by default)
|
|
56
|
+
- Return `Task[None]` handle when `blocking=False`
|
|
57
|
+
- Proper cleanup of dashboard launcher and server on shutdown or task cancellation
|
|
58
|
+
- Works seamlessly with `run_until_idle()`
|
|
59
|
+
|
|
60
|
+
### Describe alternatives you have considered
|
|
61
|
+
|
|
62
|
+
**Option 1: Startup hook pattern**
|
|
63
|
+
```python
|
|
64
|
+
async def setup():
|
|
65
|
+
await flock.publish(...)
|
|
66
|
+
|
|
67
|
+
await flock.serve(dashboard=True, on_startup=setup)
|
|
68
|
+
```
|
|
69
|
+
❌ Less flexible, doesn't allow continuous message publishing
|
|
70
|
+
|
|
71
|
+
**Option 2: Separate `serve_background()` method**
|
|
72
|
+
```python
|
|
73
|
+
await flock.serve_background(dashboard=True)
|
|
74
|
+
```
|
|
75
|
+
❌ API duplication, less discoverable
|
|
76
|
+
|
|
77
|
+
**Option 3: Always non-blocking**
|
|
78
|
+
```python
|
|
79
|
+
await flock.serve(dashboard=True) # always returns immediately
|
|
80
|
+
```
|
|
81
|
+
❌ Breaking change for existing users
|
|
82
|
+
|
|
83
|
+
### Additional context
|
|
84
|
+
|
|
85
|
+
**Complexity: Medium** (6-9 hours estimated)
|
|
86
|
+
- Core async pattern is straightforward (codebase already uses `asyncio.create_task` extensively)
|
|
87
|
+
- Cleanup coordination requires careful handling (dashboard launcher + server task lifecycle)
|
|
88
|
+
- Backwards compatibility is preserved with default parameter
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 🛠️ Implementation Plan
|
|
93
|
+
|
|
94
|
+
### 1. Core Changes
|
|
95
|
+
|
|
96
|
+
**File: `src/flock/orchestrator.py`**
|
|
97
|
+
|
|
98
|
+
- Add `blocking: bool = True` parameter to `serve()` method (line 753)
|
|
99
|
+
- Add `_server_task: Task[None] | None = None` field to `__init__` (around line 165)
|
|
100
|
+
- Update return type: `-> Task[None] | None`
|
|
101
|
+
- When `blocking=False`:
|
|
102
|
+
- Wrap server execution in `asyncio.create_task()`
|
|
103
|
+
- Add cleanup callback for dashboard launcher on task completion
|
|
104
|
+
- Track task in `_server_task` field
|
|
105
|
+
- Return task handle
|
|
106
|
+
|
|
107
|
+
**Estimated effort:** 2-3 hours
|
|
108
|
+
|
|
109
|
+
### 2. Cleanup Logic
|
|
110
|
+
|
|
111
|
+
**File: `src/flock/orchestrator.py`**
|
|
112
|
+
|
|
113
|
+
- Add server cleanup to `shutdown()` method (line 718)
|
|
114
|
+
- Cancel `_server_task` if running
|
|
115
|
+
- Stop `_dashboard_launcher` if present
|
|
116
|
+
- Handle `asyncio.CancelledError` gracefully
|
|
117
|
+
- Ensure proper resource cleanup on both normal completion and cancellation
|
|
118
|
+
|
|
119
|
+
**Estimated effort:** 1-2 hours
|
|
120
|
+
|
|
121
|
+
### 3. Testing
|
|
122
|
+
|
|
123
|
+
**File: `tests/integration/test_orchestrator_dashboard.py` (or new test file)**
|
|
124
|
+
|
|
125
|
+
Test scenarios:
|
|
126
|
+
- ✅ Non-blocking serve starts successfully and returns task
|
|
127
|
+
- ✅ Can publish messages after non-blocking serve
|
|
128
|
+
- ✅ Server processes messages during `run_until_idle()`
|
|
129
|
+
- ✅ Dashboard launcher cleanup on task completion
|
|
130
|
+
- ✅ Cleanup on explicit `shutdown()` call
|
|
131
|
+
- ✅ Backwards compatibility: `blocking=True` works as before
|
|
132
|
+
- ✅ Task cancellation cleans up resources properly
|
|
133
|
+
|
|
134
|
+
**Estimated effort:** 2-3 hours
|
|
135
|
+
|
|
136
|
+
### 4. Documentation
|
|
137
|
+
|
|
138
|
+
**Files to update:**
|
|
139
|
+
- `src/flock/orchestrator.py` - Update `serve()` docstring with:
|
|
140
|
+
- New `blocking` parameter description
|
|
141
|
+
- Example showing non-blocking usage
|
|
142
|
+
- Return type documentation
|
|
143
|
+
|
|
144
|
+
**Estimated effort:** 30 minutes
|
|
145
|
+
|
|
146
|
+
### 5. Example
|
|
147
|
+
|
|
148
|
+
**File: `examples/02-dashboard/02_non_blocking_serve.py` (new)**
|
|
149
|
+
|
|
150
|
+
Create example demonstrating:
|
|
151
|
+
- Starting dashboard in non-blocking mode
|
|
152
|
+
- Publishing messages after server starts
|
|
153
|
+
- Using `run_until_idle()` to process messages
|
|
154
|
+
- Keeping server alive for inspection
|
|
155
|
+
|
|
156
|
+
**Estimated effort:** 1 hour
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## ✅ Definition of Done
|
|
161
|
+
|
|
162
|
+
- [ ] `blocking` parameter implemented with default `True`
|
|
163
|
+
- [ ] Non-blocking mode returns `Task[None]` handle
|
|
164
|
+
- [ ] Server cleanup logic handles both normal and cancelled completion
|
|
165
|
+
- [ ] All tests passing (new + existing)
|
|
166
|
+
- [ ] Docstring updated with parameter and examples
|
|
167
|
+
- [ ] New example created: `examples/02-dashboard/02_non_blocking_serve.py`
|
|
168
|
+
- [ ] Backwards compatibility verified (existing examples still work)
|
|
169
|
+
- [ ] Manual validation: example runs and dashboard stays accessible
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🧪 Validation Strategy
|
|
174
|
+
|
|
175
|
+
**Automated:**
|
|
176
|
+
- Unit/integration tests for non-blocking behavior
|
|
177
|
+
- Cleanup verification tests
|
|
178
|
+
- Backwards compatibility regression tests
|
|
179
|
+
|
|
180
|
+
**Manual:**
|
|
181
|
+
1. Run new example: `python examples/02-dashboard/02_non_blocking_serve.py`
|
|
182
|
+
2. Verify dashboard accessible at http://localhost:8344
|
|
183
|
+
3. Verify messages appear in dashboard
|
|
184
|
+
4. Verify server stays alive after `run_until_idle()`
|
|
185
|
+
5. Test graceful shutdown (Ctrl+C)
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 📅 Timeline Estimate
|
|
190
|
+
|
|
191
|
+
**Total effort:** 6-9 hours
|
|
192
|
+
|
|
193
|
+
Breakdown:
|
|
194
|
+
- Implementation: 3-5 hours
|
|
195
|
+
- Testing: 2-3 hours
|
|
196
|
+
- Documentation + Example: 1.5 hours
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 🔗 Technical References
|
|
201
|
+
|
|
202
|
+
- `orchestrator.py:753` - Current `serve()` implementation
|
|
203
|
+
- `orchestrator.py:580, 588, 1417` - Existing `asyncio.create_task` usage patterns
|
|
204
|
+
- `orchestrator.py:718` - Existing `shutdown()` method
|
|
205
|
+
- `service.py:279` - `BlackboardHTTPService.run_async()` (blocks on `uvicorn.Server.serve()`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.11
|
|
4
4
|
Summary: Flock: A declrative framework for building and orchestrating AI agents.
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License: MIT
|
|
@@ -287,63 +287,6 @@ asyncio.run(main())
|
|
|
287
287
|
|
|
288
288
|
---
|
|
289
289
|
|
|
290
|
-
## Context Provider Primer (Security + Cost)
|
|
291
|
-
|
|
292
|
-
Context Providers are the security and efficiency layer between agents and the blackboard. They decide what each agent sees in its historical context and always enforce visibility rules.
|
|
293
|
-
|
|
294
|
-
Why use them
|
|
295
|
-
- Enforce access control (visibility is applied before engines see data)
|
|
296
|
-
- Cut context size (often 90%+) by filtering to what matters
|
|
297
|
-
- Specialize per agent or set a global default
|
|
298
|
-
|
|
299
|
-
Copy/paste examples
|
|
300
|
-
```python
|
|
301
|
-
from flock import Flock
|
|
302
|
-
from flock.context_provider import FilteredContextProvider
|
|
303
|
-
from flock.store import FilterConfig
|
|
304
|
-
|
|
305
|
-
# Global: show only urgent items (limit context size)
|
|
306
|
-
flock = Flock(
|
|
307
|
-
"openai/gpt-4.1",
|
|
308
|
-
context_provider=FilteredContextProvider(FilterConfig(tags={"urgent"}), limit=50)
|
|
309
|
-
)
|
|
310
|
-
|
|
311
|
-
# Per-agent: override global for a specific role
|
|
312
|
-
senior = flock.agent("senior").consumes(LogEntry).publishes(Analysis)
|
|
313
|
-
senior.context_provider = FilteredContextProvider(
|
|
314
|
-
FilterConfig(tags={"ERROR", "WARN"}),
|
|
315
|
-
limit=200
|
|
316
|
-
)
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
Learn more: docs/guides/context-providers.md
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## Persistent Blackboard History
|
|
324
|
-
|
|
325
|
-
The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
|
|
326
|
-
|
|
327
|
-
- **Long-lived artifacts** — every field (payload, tags, partition keys, visibility) is stored for replay, audits, and postmortems
|
|
328
|
-
- **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
|
|
329
|
-
- **Dashboard module** — the new **Historical Blackboard** experience preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
|
|
330
|
-
- **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
|
|
331
|
-
|
|
332
|
-
Quick start:
|
|
333
|
-
|
|
334
|
-
```python
|
|
335
|
-
from flock import Flock
|
|
336
|
-
from flock.store import SQLiteBlackboardStore
|
|
337
|
-
|
|
338
|
-
store = SQLiteBlackboardStore(".flock/blackboard.db")
|
|
339
|
-
await store.ensure_schema()
|
|
340
|
-
flock = Flock("openai/gpt-4.1", store=store)
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` and explore previous runs, consumption trails, and retention banners inside the dashboard.
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
290
|
## Core Concepts
|
|
348
291
|
|
|
349
292
|
### Typed Artifacts (The Vocabulary)
|
|
@@ -673,6 +616,28 @@ agent.context_provider = FilteredContextProvider(
|
|
|
673
616
|
|
|
674
617
|
**📖 [Learn more: Context Providers Guide](https://whiteducksoftware.github.io/flock/guides/context-providers/) | [Steal production code →](examples/08-context-provider/)**
|
|
675
618
|
|
|
619
|
+
### Persistent Blackboard History
|
|
620
|
+
|
|
621
|
+
The in-memory store is great for local development, but production teams need durability. The `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
|
|
622
|
+
|
|
623
|
+
**What you get:**
|
|
624
|
+
- **Long-lived artifacts** — Every field (payload, tags, partition keys, visibility) stored for replay, audits, and postmortems
|
|
625
|
+
- **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
|
|
626
|
+
- **Dashboard integration** — The **Historical Blackboard** view preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
|
|
627
|
+
- **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
|
|
628
|
+
|
|
629
|
+
**Quick start:**
|
|
630
|
+
```python
|
|
631
|
+
from flock import Flock
|
|
632
|
+
from flock.store import SQLiteBlackboardStore
|
|
633
|
+
|
|
634
|
+
store = SQLiteBlackboardStore(".flock/blackboard.db")
|
|
635
|
+
await store.ensure_schema()
|
|
636
|
+
flock = Flock("openai/gpt-4.1", store=store)
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
**Try it:** Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` to explore previous runs, consumption trails, and retention banners.
|
|
640
|
+
|
|
676
641
|
### Batching Pattern: Parallel Execution Control
|
|
677
642
|
|
|
678
643
|
**A key differentiator:** The separation of `publish()` and `run_until_idle()` enables parallel execution.
|
|
@@ -800,6 +765,35 @@ agent.best_of(150, ...) # ⚠️ Warns: "best_of(150) is very high - high LLM c
|
|
|
800
765
|
|
|
801
766
|
## Production-Ready Observability
|
|
802
767
|
|
|
768
|
+
### Sophisticated REST API
|
|
769
|
+
|
|
770
|
+
**Production-ready HTTP endpoints with comprehensive OpenAPI documentation:**
|
|
771
|
+
|
|
772
|
+
Flock includes a fully-featured REST API for programmatic access to the blackboard, agents, and workflow orchestration. Perfect for integration with external systems, building custom UIs, or monitoring production deployments.
|
|
773
|
+
|
|
774
|
+
**Key endpoints:**
|
|
775
|
+
- `POST /api/v1/artifacts` - Publish artifacts to the blackboard
|
|
776
|
+
- `GET /api/v1/artifacts` - Query artifacts with filtering, pagination, and consumption metadata
|
|
777
|
+
- `POST /api/v1/agents/{name}/run` - Direct agent invocation
|
|
778
|
+
- `GET /api/v1/correlations/{correlation_id}/status` - Workflow completion tracking
|
|
779
|
+
- `GET /api/v1/agents` - List all registered agents with subscriptions
|
|
780
|
+
- `GET /health` and `GET /metrics` - Production monitoring
|
|
781
|
+
|
|
782
|
+
**Start the API server:**
|
|
783
|
+
```python
|
|
784
|
+
await flock.serve(dashboard=True) # API + Dashboard on port 8344
|
|
785
|
+
# API docs: http://localhost:8344/docs
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
**Features:**
|
|
789
|
+
- ✅ **OpenAPI 3.0** - Interactive documentation at `/docs`
|
|
790
|
+
- ✅ **Pydantic validation** - Type-safe request/response models
|
|
791
|
+
- ✅ **Correlation tracking** - Monitor workflow completion with polling
|
|
792
|
+
- ✅ **Consumption metadata** - Full artifact lineage and agent execution trails
|
|
793
|
+
- ✅ **Production monitoring** - Health checks and Prometheus-compatible metrics
|
|
794
|
+
|
|
795
|
+
**📖 [Explore the API →](http://localhost:8344/docs)** (start the server first!)
|
|
796
|
+
|
|
803
797
|
### Real-Time Dashboard
|
|
804
798
|
|
|
805
799
|
**Start the dashboard with one line:**
|
|
@@ -254,63 +254,6 @@ asyncio.run(main())
|
|
|
254
254
|
|
|
255
255
|
---
|
|
256
256
|
|
|
257
|
-
## Context Provider Primer (Security + Cost)
|
|
258
|
-
|
|
259
|
-
Context Providers are the security and efficiency layer between agents and the blackboard. They decide what each agent sees in its historical context and always enforce visibility rules.
|
|
260
|
-
|
|
261
|
-
Why use them
|
|
262
|
-
- Enforce access control (visibility is applied before engines see data)
|
|
263
|
-
- Cut context size (often 90%+) by filtering to what matters
|
|
264
|
-
- Specialize per agent or set a global default
|
|
265
|
-
|
|
266
|
-
Copy/paste examples
|
|
267
|
-
```python
|
|
268
|
-
from flock import Flock
|
|
269
|
-
from flock.context_provider import FilteredContextProvider
|
|
270
|
-
from flock.store import FilterConfig
|
|
271
|
-
|
|
272
|
-
# Global: show only urgent items (limit context size)
|
|
273
|
-
flock = Flock(
|
|
274
|
-
"openai/gpt-4.1",
|
|
275
|
-
context_provider=FilteredContextProvider(FilterConfig(tags={"urgent"}), limit=50)
|
|
276
|
-
)
|
|
277
|
-
|
|
278
|
-
# Per-agent: override global for a specific role
|
|
279
|
-
senior = flock.agent("senior").consumes(LogEntry).publishes(Analysis)
|
|
280
|
-
senior.context_provider = FilteredContextProvider(
|
|
281
|
-
FilterConfig(tags={"ERROR", "WARN"}),
|
|
282
|
-
limit=200
|
|
283
|
-
)
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
Learn more: docs/guides/context-providers.md
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## Persistent Blackboard History
|
|
291
|
-
|
|
292
|
-
The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
|
|
293
|
-
|
|
294
|
-
- **Long-lived artifacts** — every field (payload, tags, partition keys, visibility) is stored for replay, audits, and postmortems
|
|
295
|
-
- **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
|
|
296
|
-
- **Dashboard module** — the new **Historical Blackboard** experience preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
|
|
297
|
-
- **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
|
|
298
|
-
|
|
299
|
-
Quick start:
|
|
300
|
-
|
|
301
|
-
```python
|
|
302
|
-
from flock import Flock
|
|
303
|
-
from flock.store import SQLiteBlackboardStore
|
|
304
|
-
|
|
305
|
-
store = SQLiteBlackboardStore(".flock/blackboard.db")
|
|
306
|
-
await store.ensure_schema()
|
|
307
|
-
flock = Flock("openai/gpt-4.1", store=store)
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` and explore previous runs, consumption trails, and retention banners inside the dashboard.
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
257
|
## Core Concepts
|
|
315
258
|
|
|
316
259
|
### Typed Artifacts (The Vocabulary)
|
|
@@ -640,6 +583,28 @@ agent.context_provider = FilteredContextProvider(
|
|
|
640
583
|
|
|
641
584
|
**📖 [Learn more: Context Providers Guide](https://whiteducksoftware.github.io/flock/guides/context-providers/) | [Steal production code →](examples/08-context-provider/)**
|
|
642
585
|
|
|
586
|
+
### Persistent Blackboard History
|
|
587
|
+
|
|
588
|
+
The in-memory store is great for local development, but production teams need durability. The `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
|
|
589
|
+
|
|
590
|
+
**What you get:**
|
|
591
|
+
- **Long-lived artifacts** — Every field (payload, tags, partition keys, visibility) stored for replay, audits, and postmortems
|
|
592
|
+
- **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
|
|
593
|
+
- **Dashboard integration** — The **Historical Blackboard** view preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
|
|
594
|
+
- **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
|
|
595
|
+
|
|
596
|
+
**Quick start:**
|
|
597
|
+
```python
|
|
598
|
+
from flock import Flock
|
|
599
|
+
from flock.store import SQLiteBlackboardStore
|
|
600
|
+
|
|
601
|
+
store = SQLiteBlackboardStore(".flock/blackboard.db")
|
|
602
|
+
await store.ensure_schema()
|
|
603
|
+
flock = Flock("openai/gpt-4.1", store=store)
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
**Try it:** Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` to explore previous runs, consumption trails, and retention banners.
|
|
607
|
+
|
|
643
608
|
### Batching Pattern: Parallel Execution Control
|
|
644
609
|
|
|
645
610
|
**A key differentiator:** The separation of `publish()` and `run_until_idle()` enables parallel execution.
|
|
@@ -767,6 +732,35 @@ agent.best_of(150, ...) # ⚠️ Warns: "best_of(150) is very high - high LLM c
|
|
|
767
732
|
|
|
768
733
|
## Production-Ready Observability
|
|
769
734
|
|
|
735
|
+
### Sophisticated REST API
|
|
736
|
+
|
|
737
|
+
**Production-ready HTTP endpoints with comprehensive OpenAPI documentation:**
|
|
738
|
+
|
|
739
|
+
Flock includes a fully-featured REST API for programmatic access to the blackboard, agents, and workflow orchestration. Perfect for integration with external systems, building custom UIs, or monitoring production deployments.
|
|
740
|
+
|
|
741
|
+
**Key endpoints:**
|
|
742
|
+
- `POST /api/v1/artifacts` - Publish artifacts to the blackboard
|
|
743
|
+
- `GET /api/v1/artifacts` - Query artifacts with filtering, pagination, and consumption metadata
|
|
744
|
+
- `POST /api/v1/agents/{name}/run` - Direct agent invocation
|
|
745
|
+
- `GET /api/v1/correlations/{correlation_id}/status` - Workflow completion tracking
|
|
746
|
+
- `GET /api/v1/agents` - List all registered agents with subscriptions
|
|
747
|
+
- `GET /health` and `GET /metrics` - Production monitoring
|
|
748
|
+
|
|
749
|
+
**Start the API server:**
|
|
750
|
+
```python
|
|
751
|
+
await flock.serve(dashboard=True) # API + Dashboard on port 8344
|
|
752
|
+
# API docs: http://localhost:8344/docs
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
**Features:**
|
|
756
|
+
- ✅ **OpenAPI 3.0** - Interactive documentation at `/docs`
|
|
757
|
+
- ✅ **Pydantic validation** - Type-safe request/response models
|
|
758
|
+
- ✅ **Correlation tracking** - Monitor workflow completion with polling
|
|
759
|
+
- ✅ **Consumption metadata** - Full artifact lineage and agent execution trails
|
|
760
|
+
- ✅ **Production monitoring** - Health checks and Prometheus-compatible metrics
|
|
761
|
+
|
|
762
|
+
**📖 [Explore the API →](http://localhost:8344/docs)** (start the server first!)
|
|
763
|
+
|
|
770
764
|
### Real-Time Dashboard
|
|
771
765
|
|
|
772
766
|
**Start the dashboard with one line:**
|
|
@@ -45,6 +45,34 @@ INFO: Uvicorn running on http://127.0.0.1:8344
|
|
|
45
45
|
[Dashboard] Browser launched successfully
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
### Non-Blocking Mode (New!)
|
|
49
|
+
|
|
50
|
+
Need to publish messages **after** starting the dashboard? Use non-blocking mode:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
# Start dashboard in background
|
|
54
|
+
await flock.serve(dashboard=True, blocking=False)
|
|
55
|
+
|
|
56
|
+
# Now you can publish messages and run logic!
|
|
57
|
+
await flock.publish(my_message)
|
|
58
|
+
await flock.run_until_idle()
|
|
59
|
+
|
|
60
|
+
# Dashboard stays alive for inspection
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Perfect for:**
|
|
64
|
+
- 🎯 Demo scripts that populate data after server starts
|
|
65
|
+
- 🧪 Testing scenarios where you control execution flow
|
|
66
|
+
- 📊 Scripts that need to perform setup after dashboard is running
|
|
67
|
+
|
|
68
|
+
**Example:** See [`examples/02-dashboard/02_non_blocking_serve.py`](https://github.com/whiteducksoftware/flock/blob/main/examples/02-dashboard/02_non_blocking_serve.py) for a complete demo that publishes multiple pizza orders after starting the dashboard.
|
|
69
|
+
|
|
70
|
+
**How it works:**
|
|
71
|
+
- `blocking=True` (default): Server runs forever, blocks execution
|
|
72
|
+
- `blocking=False`: Returns immediately, server runs in background
|
|
73
|
+
- Automatic cleanup when task completes or is cancelled
|
|
74
|
+
- Works with both dashboard and non-dashboard modes
|
|
75
|
+
|
|
48
76
|
<p align="center">
|
|
49
77
|
<img alt="Flock Blackboard View" src="../img/flock_ui_blackboard_view.png" width="1000">
|
|
50
78
|
<i>Blackboard View: Track data lineage and transformations across the system</i>
|
|
@@ -40,6 +40,14 @@ Comprehensive guides for building production-ready multi-agent systems with Floc
|
|
|
40
40
|
|
|
41
41
|
[:octicons-arrow-right-24: Dashboard Guide](dashboard.md)
|
|
42
42
|
|
|
43
|
+
- **🌐 REST API**
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
Production-ready HTTP endpoints with OpenAPI documentation for integration.
|
|
48
|
+
|
|
49
|
+
[:octicons-arrow-right-24: REST API Guide](rest-api.md)
|
|
50
|
+
|
|
43
51
|
</div>
|
|
44
52
|
|
|
45
53
|
---
|
|
@@ -124,6 +132,7 @@ Comprehensive observability with OpenTelemetry and DuckDB.
|
|
|
124
132
|
- **[Time-Based Access](visibility.md#5-aftervisibility-time-delayed)** - Temporal constraints
|
|
125
133
|
|
|
126
134
|
### Observability
|
|
135
|
+
- **[REST API](rest-api.md)** - HTTP endpoints for integration and monitoring
|
|
127
136
|
- **[Trace Capture](tracing/auto-tracing.md)** - Automatic trace collection
|
|
128
137
|
- **[Trace Analysis](tracing/how_to_use_tracing_effectively.md)** - Debugging workflows
|
|
129
138
|
- **[Dashboard Viewer](tracing/trace-module.md)** - Visual trace exploration
|
|
@@ -139,6 +148,8 @@ Looking for specific tasks? Here are quick links:
|
|
|
139
148
|
- **Enable parallel execution** → [Batching Pattern](blackboard.md)
|
|
140
149
|
- **Debug agent execution** → [Tracing Effectively](tracing/how_to_use_tracing_effectively.md)
|
|
141
150
|
- **Add real-time monitoring** → [Dashboard Guide](dashboard.md)
|
|
151
|
+
- **Integrate with external systems** → [REST API Guide](rest-api.md)
|
|
152
|
+
- **Track workflow completion** → [Correlation Status](rest-api.md#correlation-status-workflow-tracking)
|
|
142
153
|
- **Implement multi-tenancy** → [Tenant Visibility](visibility.md#3-tenantvisibility-multi-tenancy)
|
|
143
154
|
- **Query artifacts** → [Blackboard Guide](blackboard.md)
|
|
144
155
|
|