flock-core 0.5.0b55__tar.gz → 0.5.0b56__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.0b55 → flock_core-0.5.0b56}/PKG-INFO +374 -112
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/README.md +373 -111
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/ROADMAP.md +40 -53
- flock_core-0.5.0b56/docs/img/bug_diagnosis.png +0 -0
- flock_core-0.5.0b56/docs/img/trace_1.png +0 -0
- flock_core-0.5.0b56/docs/img/trace_2.png +0 -0
- flock_core-0.5.0b56/docs/img/trace_3.png +0 -0
- flock_core-0.5.0b56/examples/06-readme/01-BugDiagnosis.py +84 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/pyproject.toml +1 -1
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/telemetry_exporter/duckdb_exporter.py +4 -4
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/uv.lock +1 -1
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.envtemplate +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.github/workflows/quality.yml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.gitignore +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.pre-commit-config.yaml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.python-version +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/.vscode/settings.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/AGENTS.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/CONTRIBUTING.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/LICENSE +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/USECASES.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/AUTO_TRACING.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/IMPLEMENTATION_SUMMARY.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/PRE_COMMIT_HOOKS.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/TRACE_MODULE.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/TRACING_PRODUCTION_READINESS.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/UNIFIED_TRACING.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/UNIFIED_TRACING_DELIVERY.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/VERSIONING.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/design_and_goals/landscape_analysis.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/design_and_goals/motivation.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/design_and_goals/review.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/design_and_goals/technical_design.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/domain/test-improvement-roadmap.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/how_to_use_tracing_effectively.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/img/flock_ui_1.png +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/img/flock_ui_agent_view.png +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/img/flock_ui_blackboard_view.png +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/img/pizza.png +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/patterns/auto-layout-auto-zoom-removal.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/patterns/core-architecture.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/patterns/development-workflow.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/patterns/project-configuration.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/patterns/repository-structure.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/specs/001-test-coverage-improvement/PLAN.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/specs/001-test-coverage-improvement/PRD.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/specs/001-test-coverage-improvement/SDD.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/troubleshooting/codex_bug_analysis.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/docs/troubleshooting/event-log-memory-leak-analysis.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/01-the-declarative-way/01_declarative_pizza.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/01-the-declarative-way/02_input_and_output.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/01-the-declarative-way/03_mcp_and_tools.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/01-the-declarative-way/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/02-the-blackboard/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/03-the-dashboard/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/04-the-api/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_01_code_detective.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_02_band_formation.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_03_web_detective.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_04_debate_club.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_05_tracing_detective.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_06_secret_agents.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/examples/05-claudes-workshop/lesson_07_news_agency.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/requirements.txt +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/scripts/build_dashboard.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/scripts/bump_version.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/scripts/check_version_bump.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/scripts/generate_llm_codebase.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/agent.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/api/themes.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/artifacts.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/cli.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/components.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/collector.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/events.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/launcher.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/service.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/dashboard/websocket.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/engines/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/engines/dspy_engine.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/examples.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/docs/DESIGN_SYSTEM.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/index.html +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/package-lock.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/package.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/App.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/BuildInfo.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/EmptyState.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/EmptyState.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/ErrorBoundary.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/ErrorBoundary.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/LoadingSpinner.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/common/LoadingSpinner.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/controls/PublishControl.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/controls/PublishControl.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/controls/PublishControl.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/DetailWindowContainer.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/LiveOutputTab.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/LiveOutputTab.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/MessageHistoryTab.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/NodeDetailWindow.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/NodeDetailWindow.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/RunStatusTab.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/details/tabs.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/CorrelationIDFilter.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/CorrelationIDFilter.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterBar.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterBar.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterBar.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterPills.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterPills.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/FilterPills.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/TimeRangeFilter.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/filters/TimeRangeFilter.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/AgentNode.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/AgentNode.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/GraphCanvas.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/MessageFlowEdge.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/MessageNode.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/MessageNode.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/MiniMap.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/graph/TransformEdge.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/layout/DashboardLayout.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/layout/DashboardLayout.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/layout/Header.module.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/layout/Header.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/EventLogModule.test.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/EventLogModule.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/ModuleRegistry.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/ModuleRegistry.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/ModuleWindow.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/TraceModuleJaeger.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/modules/registerModules.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/AdvancedSettings.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/AppearanceSettings.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/GraphSettings.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/MultiSelect.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/SettingsPanel.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/SettingsPanel.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/ThemeSelector.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/components/settings/TracingSettings.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/hooks/useKeyboardShortcuts.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/hooks/useModulePersistence.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/hooks/useModulePersistence.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/hooks/useModules.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/hooks/usePersistence.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/main.tsx +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/api.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/indexeddb.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/indexeddb.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/layout.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/layout.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/themeApplicator.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/themeService.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/websocket.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/services/websocket.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/filterStore.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/filterStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/graphStore.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/graphStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/moduleStore.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/moduleStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/settingsStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/streamStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/uiStore.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/uiStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/store/wsStore.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/styles/index.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/styles/scrollbar.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/styles/variables.css +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/test/setup.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/types/filters.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/types/graph.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/types/modules.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/types/theme.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/utils/mockData.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/utils/performance.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/utils/transforms.test.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/utils/transforms.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/src/vite-env.d.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/tsconfig.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/tsconfig.node.json +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/vite.config.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/frontend/vitest.config.ts +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/helper/cli_helper.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/auto_trace.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/formatters/themes.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/logging.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/telemetry.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/logging/trace_and_logged.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/client.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/config.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/manager.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/sse/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/stdio/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/websockets/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/tool.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/types/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/types/callbacks.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/types/factories.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/types/handlers.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/types/types.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/util/__init__.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/mcp/util/helpers.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/orchestrator.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/registry.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/runtime.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/service.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/store.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/subscription.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/django.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/github.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/material.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/square.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/utilities.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/utility/output_utility_component.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/src/flock/visibility.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/conftest.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/contract/test_agent_payload_selection_contract.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/contract/test_artifact_storage_contract.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/contract/test_type_normalization_contract.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/e2e/README.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/e2e/TESTING_SUMMARY.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/e2e/test_critical_scenarios.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/integration/test_collector_orchestrator.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/integration/test_orchestrator_dashboard.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/integration/test_websocket_protocol.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_agent.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_agent_mcp.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_artifacts.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_cli.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_cli_helper.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_components.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dashboard_api.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dashboard_collector.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dashboard_launcher.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dashboard_service.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dspy_engine.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dspy_engine_mcp.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_dspy_streaming_events.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_engines.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_logging_config.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_client.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_config.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_coverage_summary.md +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_imports.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_manager.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_mcp_tool_handlers.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_orchestrator.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_orchestrator_mcp.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_registry.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_runtime.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_service.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_service_extended.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_store.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_subscription.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_telemetry.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_trace_clearing.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_unified_tracing.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_utilities.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_version_endpoint.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_visibility.py +0 -0
- {flock_core-0.5.0b55 → flock_core-0.5.0b56}/tests/test_websocket_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b56
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -34,41 +34,45 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
<p align="center">
|
|
35
35
|
<a href="https://pypi.org/project/flock-core/" target="_blank"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/flock-core?style=for-the-badge&logo=pypi&label=pip%20version"></a>
|
|
36
36
|
<img alt="Python Version" src="https://img.shields.io/badge/python-3.10%2B-blue?style=for-the-badge&logo=python">
|
|
37
|
-
<a href="
|
|
37
|
+
<a href="LICENSE" target="_blank"><img alt="License" src="https://img.shields.io/pypi/l/flock-core?style=for-the-badge"></a>
|
|
38
38
|
<a href="https://whiteduck.de" target="_blank"><img alt="Built by white duck" src="https://img.shields.io/badge/Built%20by-white%20duck%20GmbH-white?style=for-the-badge&labelColor=black"></a>
|
|
39
39
|
</p>
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
43
|
-
# Flock 0.5: Declarative Multi-Agent Orchestration
|
|
43
|
+
# Flock 0.5: Declarative Blackboard Multi-Agent Orchestration
|
|
44
44
|
|
|
45
45
|
> **Stop engineering prompts. Start declaring contracts.**
|
|
46
46
|
|
|
47
|
-
Flock is a production-focused framework for orchestrating AI agents through **declarative type contracts** and **blackboard architecture
|
|
47
|
+
Flock is a production-focused framework for orchestrating AI agents through **declarative type contracts** and **blackboard architecture**, proven patterns from distributed systems, decades of engaging with micro-service landscapes and classical AI, now applied to modern LLMs.
|
|
48
|
+
|
|
48
49
|
|
|
49
|
-
**Version 0.5.0** • Production-Ready Core • 743 Tests • 77% Coverage
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## The Problem With Current
|
|
53
|
+
## The Problem With Current Approaches
|
|
54
54
|
|
|
55
55
|
Building production multi-agent systems today means dealing with:
|
|
56
56
|
|
|
57
57
|
**🔥 Prompt Engineering Hell**
|
|
58
58
|
```python
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
prompt = """You are an expert code reviewer. When you receive code, you should...
|
|
61
61
|
[498 more lines of instructions that the LLM ignores half the time]"""
|
|
62
|
+
|
|
63
|
+
# 500-line prompt that breaks when models update
|
|
64
|
+
|
|
65
|
+
# How do I know that there isn't an even better prompt (you don't) -> proof of 'best possible performane' impossible
|
|
62
66
|
```
|
|
63
67
|
|
|
64
|
-
|
|
68
|
+
**🧪 Testing Nightmares**
|
|
65
69
|
```python
|
|
66
70
|
# How do you unit test this?
|
|
67
71
|
result = llm.invoke(prompt) # Hope for valid JSON
|
|
68
72
|
data = json.loads(result.content) # Crashes in production
|
|
69
73
|
```
|
|
70
74
|
|
|
71
|
-
|
|
75
|
+
**📐 Rigid topology and tight coupling**
|
|
72
76
|
```python
|
|
73
77
|
# Want to add a new agent? Rewrite the entire graph.
|
|
74
78
|
workflow.add_edge("agent_a", "agent_b")
|
|
@@ -76,12 +80,20 @@ workflow.add_edge("agent_b", "agent_c")
|
|
|
76
80
|
# Add agent_d? Start rewiring...
|
|
77
81
|
```
|
|
78
82
|
|
|
79
|
-
|
|
83
|
+
**💀 Single point of failure: Orchestrator dies? Everything dies.**
|
|
80
84
|
```python
|
|
81
|
-
#
|
|
85
|
+
# Orchestrator dies? Everything dies.
|
|
82
86
|
```
|
|
83
87
|
|
|
84
|
-
|
|
88
|
+
**🧠 God object anti-pattern:**
|
|
89
|
+
```python
|
|
90
|
+
# One orchestrator needs domain knowledge of 20+ agents to route correctly
|
|
91
|
+
# Orchestrator 'guesses' next agent based on a natural language description. Hardly fit for critical systems.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
These aren't framework limitations, they're **architectural choices** that don't scale.
|
|
95
|
+
|
|
96
|
+
Most issues are solvable, because decades of experience with micro services taught us hard lessons about decoupling, orchestration and reliability already. Let's use these learnings!
|
|
85
97
|
|
|
86
98
|
---
|
|
87
99
|
|
|
@@ -91,7 +103,7 @@ Flock takes a different path, combining two proven patterns:
|
|
|
91
103
|
|
|
92
104
|
### 1. Declarative Type Contracts (Not Prompts)
|
|
93
105
|
|
|
94
|
-
**
|
|
106
|
+
**Traditional approach:**
|
|
95
107
|
```python
|
|
96
108
|
prompt = "Analyze this bug report and return JSON with severity, category, hypothesis..."
|
|
97
109
|
result = llm.invoke(prompt) # Hope it works
|
|
@@ -110,6 +122,10 @@ class BugDiagnosis(BaseModel):
|
|
|
110
122
|
agent.consumes(BugReport).publishes(BugDiagnosis)
|
|
111
123
|
```
|
|
112
124
|
|
|
125
|
+
<p align="center">
|
|
126
|
+
<img alt="Flock Banner" src="docs/img/bug_diagnosis.png" width="1000">
|
|
127
|
+
</p>
|
|
128
|
+
|
|
113
129
|
**Why this matters:**
|
|
114
130
|
- ✅ **Survives model upgrades** - GPT-6 will still understand Pydantic schemas
|
|
115
131
|
- ✅ **Runtime validation** - Errors caught at parse time, not in production
|
|
@@ -118,7 +134,7 @@ agent.consumes(BugReport).publishes(BugDiagnosis)
|
|
|
118
134
|
|
|
119
135
|
### 2. Blackboard Architecture (Not Directed Graphs)
|
|
120
136
|
|
|
121
|
-
**
|
|
137
|
+
**Graph-based approach:**
|
|
122
138
|
```python
|
|
123
139
|
# Explicit workflow with hardcoded edges
|
|
124
140
|
workflow.add_edge("radiologist", "diagnostician")
|
|
@@ -151,15 +167,17 @@ performance = flock.agent("perf").consumes(Scan).publishes(PerfAnalysis)
|
|
|
151
167
|
## Quick Start (60 Seconds)
|
|
152
168
|
|
|
153
169
|
```bash
|
|
154
|
-
pip install flock-
|
|
170
|
+
pip install flock-core
|
|
155
171
|
export OPENAI_API_KEY="sk-..."
|
|
172
|
+
# Optional: export DEFAULT_MODEL (falls back to hard-coded default if unset)
|
|
173
|
+
export DEFAULT_MODEL="openai/gpt-4.1"
|
|
156
174
|
```
|
|
157
175
|
|
|
158
176
|
```python
|
|
177
|
+
import os
|
|
159
178
|
import asyncio
|
|
160
179
|
from pydantic import BaseModel, Field
|
|
161
|
-
from flock
|
|
162
|
-
from flock.registry import flock_type
|
|
180
|
+
from flock import Flock, flock_type
|
|
163
181
|
|
|
164
182
|
# 1. Define typed artifacts
|
|
165
183
|
@flock_type
|
|
@@ -184,7 +202,7 @@ class FinalReview(BaseModel):
|
|
|
184
202
|
action_items: list[str]
|
|
185
203
|
|
|
186
204
|
# 2. Create the blackboard
|
|
187
|
-
flock = Flock("openai/gpt-4.1")
|
|
205
|
+
flock = Flock(os.getenv("DEFAULT_MODEL", "openai/gpt-4.1"))
|
|
188
206
|
|
|
189
207
|
# 3. Agents subscribe to types (NO graph wiring!)
|
|
190
208
|
bug_detector = flock.agent("bug_detector").consumes(CodeSubmission).publishes(BugAnalysis)
|
|
@@ -290,6 +308,42 @@ agent.publishes(PublicReport, visibility=PublicVisibility())
|
|
|
290
308
|
|
|
291
309
|
**Why this matters:** Financial services, healthcare, defense, SaaS platforms all need this for compliance. Other frameworks make you build it yourself.
|
|
292
310
|
|
|
311
|
+
### Batching Pattern: Parallel Execution Control
|
|
312
|
+
|
|
313
|
+
**A key differentiator:** The separation of `publish()` and `run_until_idle()` enables parallel execution.
|
|
314
|
+
|
|
315
|
+
```python
|
|
316
|
+
# ✅ EFFICIENT: Batch publish, then run in parallel
|
|
317
|
+
for review in customer_reviews:
|
|
318
|
+
await flock.publish(review) # Just scheduling work
|
|
319
|
+
|
|
320
|
+
await flock.run_until_idle() # All sentiment_analyzer agents run concurrently!
|
|
321
|
+
|
|
322
|
+
# Get all results
|
|
323
|
+
analyses = await flock.store.get_by_type(SentimentAnalysis)
|
|
324
|
+
# 100 analyses completed in ~1x single review processing time!
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
**Why this separation matters:**
|
|
328
|
+
- ⚡ **Parallel execution** - Process 100 customer reviews concurrently
|
|
329
|
+
- 🎯 **Batch control** - Publish multiple artifacts, execute once
|
|
330
|
+
- 🔄 **Multi-type workflows** - Publish different types, trigger different agents in parallel
|
|
331
|
+
- 📊 **Better performance** - Process 1000 items in the time it takes to process 1
|
|
332
|
+
|
|
333
|
+
**Comparison to other patterns:**
|
|
334
|
+
```python
|
|
335
|
+
# ❌ If run_until_idle() was automatic (like most frameworks):
|
|
336
|
+
for review in customer_reviews:
|
|
337
|
+
await flock.publish(review) # Would wait for completion each time!
|
|
338
|
+
# Total time: 100x single execution (sequential)
|
|
339
|
+
|
|
340
|
+
# ✅ With explicit batching:
|
|
341
|
+
for review in customer_reviews:
|
|
342
|
+
await flock.publish(review) # Fast: just queuing
|
|
343
|
+
await flock.run_until_idle()
|
|
344
|
+
# Total time: ~1x single execution (parallel)
|
|
345
|
+
```
|
|
346
|
+
|
|
293
347
|
### Production Safety Features
|
|
294
348
|
|
|
295
349
|
**Built-in safeguards prevent common production failures:**
|
|
@@ -317,6 +371,92 @@ agent.best_of(150, ...) # ⚠️ Warns: "best_of(150) is very high - high LLM c
|
|
|
317
371
|
|
|
318
372
|
## Production-Ready Observability
|
|
319
373
|
|
|
374
|
+
### Real-Time Dashboard
|
|
375
|
+
|
|
376
|
+
**Start the dashboard with one line:**
|
|
377
|
+
|
|
378
|
+
```python
|
|
379
|
+
await flock.serve(dashboard=True)
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
The dashboard provides comprehensive real-time visibility into your agent system with professional UI/UX:
|
|
383
|
+
|
|
384
|
+
<p align="center">
|
|
385
|
+
<img alt="Flock Agent View" src="docs/img/flock_ui_agent_view.png" width="1000">
|
|
386
|
+
<i>Agent View: See agent communication patterns and message flows in real-time</i>
|
|
387
|
+
</p>
|
|
388
|
+
|
|
389
|
+
**Key Features:**
|
|
390
|
+
|
|
391
|
+
- **Dual Visualization Modes:**
|
|
392
|
+
- **Agent View** - Agents as nodes with message flows as edges
|
|
393
|
+
- **Blackboard View** - Messages as nodes with data transformations as edges
|
|
394
|
+
|
|
395
|
+
<p align="center">
|
|
396
|
+
<img alt="Flock Blackboard View" src="docs/img/flock_ui_blackboard_view.png" width="1000">
|
|
397
|
+
<i>Blackboard View: Track data lineage and transformations across the system</i>
|
|
398
|
+
</p>
|
|
399
|
+
|
|
400
|
+
- **Real-Time Updates:**
|
|
401
|
+
- WebSocket streaming with 2-minute heartbeat
|
|
402
|
+
- Live agent activation and message publication
|
|
403
|
+
- Auto-layout with Dagre algorithm
|
|
404
|
+
|
|
405
|
+
- **Interactive Graph:**
|
|
406
|
+
- Drag nodes, zoom, pan, and explore topology
|
|
407
|
+
- Double-click nodes to open detail windows
|
|
408
|
+
- Right-click for context menu and modules
|
|
409
|
+
|
|
410
|
+
- **Advanced Filtering:**
|
|
411
|
+
- Correlation ID tracking for workflow tracing
|
|
412
|
+
- Time range filtering (last 5/10/60 minutes or custom)
|
|
413
|
+
- Active filter pills with one-click removal
|
|
414
|
+
- Autocomplete search with metadata preview
|
|
415
|
+
|
|
416
|
+
- **Control Panel:**
|
|
417
|
+
- Publish artifacts from the UI
|
|
418
|
+
- Invoke agents manually
|
|
419
|
+
- Monitor system health
|
|
420
|
+
|
|
421
|
+
- **Keyboard Shortcuts:**
|
|
422
|
+
- `Ctrl+M` - Toggle view mode
|
|
423
|
+
- `Ctrl+F` - Focus filter
|
|
424
|
+
- `Ctrl+/` - Show shortcuts help
|
|
425
|
+
- WCAG 2.1 AA compliant accessibility
|
|
426
|
+
|
|
427
|
+
### Production-Grade Trace Viewer
|
|
428
|
+
|
|
429
|
+
The dashboard includes a **Jaeger-style trace viewer** with 7 powerful visualization modes:
|
|
430
|
+
|
|
431
|
+
<p align="center">
|
|
432
|
+
<img alt="Trace Viewer" src="docs/img/trace_1.png" width="1000">
|
|
433
|
+
<i>Trace Viewer: Timeline view showing span hierarchies and execution flow</i>
|
|
434
|
+
</p>
|
|
435
|
+
|
|
436
|
+
**7 Trace Viewer Modes:**
|
|
437
|
+
|
|
438
|
+
1. **Timeline** - Waterfall visualization with parent-child relationships
|
|
439
|
+
2. **Statistics** - Sortable table view with durations and error tracking
|
|
440
|
+
3. **RED Metrics** - Rate, Errors, Duration monitoring for service health
|
|
441
|
+
4. **Dependencies** - Service-to-service communication analysis
|
|
442
|
+
5. **DuckDB SQL** - Interactive SQL query editor with CSV export
|
|
443
|
+
6. **Configuration** - Real-time service/operation filtering
|
|
444
|
+
7. **Guide** - Built-in documentation and query examples
|
|
445
|
+
|
|
446
|
+
**Additional Features:**
|
|
447
|
+
|
|
448
|
+
- **Full I/O Capture** - Complete input/output data for every operation
|
|
449
|
+
- **JSON Viewer** - Collapsible tree structure with expand all/collapse all
|
|
450
|
+
- **Multi-Trace Support** - Open and compare multiple traces simultaneously
|
|
451
|
+
- **Smart Sorting** - Sort by date, span count, or duration
|
|
452
|
+
- **CSV Export** - Download query results for offline analysis
|
|
453
|
+
|
|
454
|
+
<p align="center">
|
|
455
|
+
<img alt="Trace Viewer" src="docs/img/trace_2.png" width="1000">
|
|
456
|
+
<i>Trace Viewer: Dependency Analysis</i>
|
|
457
|
+
</p>
|
|
458
|
+
|
|
459
|
+
|
|
320
460
|
### OpenTelemetry + DuckDB Tracing
|
|
321
461
|
|
|
322
462
|
**One environment variable enables comprehensive tracing:**
|
|
@@ -365,67 +505,71 @@ AI: [queries DuckDB]
|
|
|
365
505
|
|
|
366
506
|
**Why DuckDB?** 10-100x faster than SQLite for analytical queries. Zero configuration. AI agents can debug your AI agents.
|
|
367
507
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
- **Dual visualization modes:** Agent View vs Blackboard View
|
|
375
|
-
- **WebSocket streaming:** Live updates with 2-minute heartbeat
|
|
376
|
-
- **Control panel:** Publish artifacts and invoke agents from UI
|
|
377
|
-
- **7 trace viewer modes:** Timeline, Statistics, RED metrics, Dependencies, SQL, Config, Guide
|
|
378
|
-
- **Full I/O capture:** Complete input/output data with collapsible JSON viewer
|
|
379
|
-
- **Keyboard shortcuts:** WCAG 2.1 AA compliant accessibility
|
|
508
|
+
<p align="center">
|
|
509
|
+
<img alt="Trace Viewer" src="docs/img/trace_3.png" width="1000">
|
|
510
|
+
<i>Trace Viewer: DuckDB Query</i>
|
|
511
|
+
</p>
|
|
380
512
|
|
|
381
513
|
---
|
|
382
514
|
|
|
383
515
|
## Framework Comparison
|
|
384
516
|
|
|
517
|
+
### Architectural Differences
|
|
518
|
+
|
|
519
|
+
Flock uses a fundamentally different coordination pattern than most multi-agent frameworks:
|
|
520
|
+
|
|
521
|
+
| Dimension | Graph-Based Frameworks | Chat-Based Frameworks | Flock (Blackboard) |
|
|
522
|
+
|-----------|------------------------|----------------------|-------------------|
|
|
523
|
+
| **Core Pattern** | Directed graph with explicit edges | Round-robin conversation | Blackboard subscriptions |
|
|
524
|
+
| **Coordination** | Manual edge wiring | Message passing | Type-based subscriptions |
|
|
525
|
+
| **Parallelism** | Manual (split/join nodes) | Sequential turn-taking | Automatic (concurrent consumers) |
|
|
526
|
+
| **Type Safety** | Varies (often TypedDict) | Text-based messages | Pydantic + runtime validation |
|
|
527
|
+
| **Coupling** | Tight (hardcoded successors) | Medium (conversation context) | Loose (type subscriptions only) |
|
|
528
|
+
| **Adding Agents** | Rewrite graph topology | Update conversation flow | Just subscribe to types |
|
|
529
|
+
| **Testing** | Requires full graph | Requires full group | Individual agent isolation |
|
|
530
|
+
| **Security Model** | DIY implementation | DIY implementation | Built-in (5 visibility types) |
|
|
531
|
+
| **Scalability** | O(n²) edge complexity | Limited by turn-taking | O(n) subscription complexity |
|
|
532
|
+
|
|
385
533
|
### When Flock Wins
|
|
386
534
|
|
|
387
535
|
**✅ Use Flock when you need:**
|
|
388
536
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
| **Security/access control** | 5 visibility types built-in | DIY implementation in most frameworks |
|
|
397
|
-
| **10+ agents** | O(n) complexity, stays clean | Graph-based approaches have O(n²) edge complexity |
|
|
537
|
+
- **Parallel agent execution** - Agents consuming the same type run concurrently automatically
|
|
538
|
+
- **Type-safe outputs** - Pydantic validation catches errors at runtime
|
|
539
|
+
- **Minimal prompt engineering** - Schemas define behavior, not natural language
|
|
540
|
+
- **Dynamic agent addition** - Subscribe new agents without rewiring existing workflows
|
|
541
|
+
- **Testing in isolation** - Unit test individual agents with mock inputs
|
|
542
|
+
- **Built-in security** - 5 visibility types for compliance (HIPAA, SOC2, multi-tenancy)
|
|
543
|
+
- **10+ agents** - Linear complexity stays manageable at scale
|
|
398
544
|
|
|
399
545
|
### When Alternatives Win
|
|
400
546
|
|
|
401
|
-
**⚠️ Consider
|
|
402
|
-
- You need
|
|
403
|
-
- Your workflow is
|
|
404
|
-
- You want
|
|
405
|
-
-
|
|
406
|
-
|
|
407
|
-
**⚠️ Consider
|
|
408
|
-
- You
|
|
409
|
-
-
|
|
410
|
-
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
**Bottom line:** Different architectures for different needs. Flock trades ecosystem maturity for better scalability patterns. Choose based on your priorities.
|
|
547
|
+
**⚠️ Consider graph-based frameworks when:**
|
|
548
|
+
- You need extensive ecosystem integration with existing tools
|
|
549
|
+
- Your workflow is inherently sequential (no parallelism needed)
|
|
550
|
+
- You want battle-tested maturity (larger communities, more documentation)
|
|
551
|
+
- Your team has existing expertise with those frameworks
|
|
552
|
+
|
|
553
|
+
**⚠️ Consider chat-based frameworks when:**
|
|
554
|
+
- You prefer conversation-based development patterns
|
|
555
|
+
- Your use case maps naturally to turn-taking dialogue
|
|
556
|
+
- You need features specific to those ecosystems
|
|
557
|
+
|
|
558
|
+
### Honest Trade-offs
|
|
559
|
+
|
|
560
|
+
**You trade:**
|
|
561
|
+
- Ecosystem maturity (established frameworks have larger communities)
|
|
562
|
+
- Extensive documentation (we're catching up)
|
|
563
|
+
- Battle-tested age (newer architecture means less production history)
|
|
564
|
+
|
|
565
|
+
**You gain:**
|
|
566
|
+
- Better scalability (O(n) vs O(n²) complexity)
|
|
567
|
+
- Type safety (runtime validation vs hope)
|
|
568
|
+
- Cleaner architecture (loose coupling vs tight graphs)
|
|
569
|
+
- Production safety (circuit breakers, feedback prevention built-in)
|
|
570
|
+
- Security model (5 visibility types vs DIY)
|
|
571
|
+
|
|
572
|
+
**Different frameworks for different priorities. Choose based on what matters to your team.**
|
|
429
573
|
|
|
430
574
|
---
|
|
431
575
|
|
|
@@ -434,7 +578,7 @@ await flock.serve(dashboard=True)
|
|
|
434
578
|
### What Works Today (v0.5.0)
|
|
435
579
|
|
|
436
580
|
**✅ Production-ready core:**
|
|
437
|
-
-
|
|
581
|
+
- more than 700 tests, with >75% coverage (>90% on critical paths)
|
|
438
582
|
- Blackboard orchestrator with typed artifacts
|
|
439
583
|
- Parallel + sequential execution (automatic)
|
|
440
584
|
- Zero-trust security (5 visibility types)
|
|
@@ -443,13 +587,16 @@ await flock.serve(dashboard=True)
|
|
|
443
587
|
- Real-time dashboard with 7-mode trace viewer
|
|
444
588
|
- MCP integration (Model Context Protocol)
|
|
445
589
|
- Best-of-N execution, batch processing, join operations
|
|
590
|
+
- Type-safe retrieval API (`get_by_type()`)
|
|
446
591
|
|
|
447
592
|
**⚠️ What's missing for large-scale production:**
|
|
448
|
-
- **Persistent blackboard** - Currently in-memory only
|
|
449
|
-
- **Advanced retry logic** - Basic only
|
|
450
|
-
- **Event replay** - No Kafka integration yet
|
|
451
|
-
- **Kubernetes-native deployment** - No Helm chart yet
|
|
452
|
-
- **OAuth/RBAC** - Dashboard has no auth
|
|
593
|
+
- **Persistent blackboard** - Currently in-memory only
|
|
594
|
+
- **Advanced retry logic** - Basic only
|
|
595
|
+
- **Event replay** - No Kafka integration yet
|
|
596
|
+
- **Kubernetes-native deployment** - No Helm chart yet
|
|
597
|
+
- **OAuth/RBAC** - Dashboard has no auth
|
|
598
|
+
|
|
599
|
+
All planned for v1.0
|
|
453
600
|
|
|
454
601
|
### Recommended Use Cases Today
|
|
455
602
|
|
|
@@ -471,34 +618,94 @@ await flock.serve(dashboard=True)
|
|
|
471
618
|
|
|
472
619
|
## Roadmap to 1.0
|
|
473
620
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
**
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
-
|
|
484
|
-
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
-
|
|
490
|
-
|
|
491
|
-
|
|
621
|
+
We're not building a toy framework. We're building enterprise infrastructure for AI agents.
|
|
622
|
+
|
|
623
|
+
**See [ROADMAP.md](ROADMAP.md) for the complete roadmap with detailed code examples.**
|
|
624
|
+
|
|
625
|
+
### Flock 1.0 - Q4 2025 Release
|
|
626
|
+
|
|
627
|
+
**We're confident to deliver all enterprise features by Q4 2025:**
|
|
628
|
+
|
|
629
|
+
**🏢 Enterprise Persistence**
|
|
630
|
+
- Redis and PostgreSQL backends for durable blackboard state
|
|
631
|
+
- Agent crashes? State persists, agents resume automatically
|
|
632
|
+
- Multi-region deployments with shared blackboard
|
|
633
|
+
- SQL queries on artifact history for analytics and compliance
|
|
634
|
+
|
|
635
|
+
**🔄 Advanced Error Handling**
|
|
636
|
+
- Exponential backoff with jitter for transient failures
|
|
637
|
+
- Dead letter queues for poison messages
|
|
638
|
+
- Per-agent circuit breakers with auto-recovery
|
|
639
|
+
- Full observability of all failure modes
|
|
640
|
+
|
|
641
|
+
**🤝 Aggregation Patterns**
|
|
642
|
+
- Map-reduce pattern for parallel processing → aggregation
|
|
643
|
+
- Voting/consensus for multi-agent decision making
|
|
644
|
+
- Best-result selection with custom scoring functions
|
|
645
|
+
|
|
646
|
+
**📨 Kafka Event Backbone**
|
|
647
|
+
- Event replay for debugging production issues in development
|
|
648
|
+
- Time-travel debugging with checkpoint restoration
|
|
649
|
+
- Immutable audit logs for regulatory compliance
|
|
650
|
+
- Backfill new agents with historical data
|
|
651
|
+
|
|
652
|
+
**☸️ Kubernetes-Native Deployment**
|
|
653
|
+
- Helm charts for production deployments
|
|
654
|
+
- Horizontal auto-scaling based on blackboard queue depth
|
|
655
|
+
- Zero-downtime deployments with health checks
|
|
656
|
+
- Production-grade readiness probes
|
|
657
|
+
|
|
658
|
+
**🔐 OAuth/RBAC**
|
|
659
|
+
- OAuth2/OIDC authentication for multi-tenant SaaS
|
|
660
|
+
- API key authentication for programmatic access
|
|
661
|
+
- Role-based access control with agent-level permissions
|
|
662
|
+
- Complete audit trails for compliance (SOC2, HIPAA)
|
|
663
|
+
|
|
664
|
+
**👤 Human-in-the-Loop**
|
|
665
|
+
- Approval patterns for high-value transactions
|
|
666
|
+
- Dashboard integration for pending approvals
|
|
667
|
+
- Slack/email notifications with audit trails
|
|
668
|
+
- Training mode with review-before-automation
|
|
669
|
+
|
|
670
|
+
**🔀 Fan-Out/Fan-In Patterns**
|
|
671
|
+
- Dynamic work distribution based on runtime data
|
|
672
|
+
- Result collection and aggregation
|
|
673
|
+
- Map-reduce over LLM operations
|
|
674
|
+
- Sharding for horizontal scale
|
|
675
|
+
|
|
676
|
+
**⏰ Time-Based Scheduling**
|
|
677
|
+
- Cron-like triggers for periodic workflows
|
|
678
|
+
- Sliding window patterns for real-time analytics
|
|
679
|
+
- Hybrid event+time based triggers
|
|
680
|
+
- SLA monitoring and data freshness checks
|
|
681
|
+
|
|
682
|
+
### Release Criteria for v1.0
|
|
683
|
+
|
|
684
|
+
**v1.0 will ship when all of these are complete:**
|
|
685
|
+
1. ✅ Production persistence (Redis + Postgres backends stable)
|
|
686
|
+
2. ✅ Advanced error handling (retry, circuit breakers, DLQ working)
|
|
687
|
+
3. ✅ Aggregation patterns (map-reduce, voting, consensus implemented)
|
|
688
|
+
4. ✅ Kafka event backbone (replay and time-travel debugging)
|
|
689
|
+
5. ✅ Kubernetes native (Helm chart with auto-scaling)
|
|
690
|
+
6. ✅ Authentication (OAuth/OIDC + API key auth)
|
|
691
|
+
7. ✅ Human-in-the-loop (approval patterns implemented)
|
|
692
|
+
8. ✅ Fan-out/fan-in (distributed processing patterns)
|
|
693
|
+
9. ✅ Time-based scheduling (cron + sliding windows)
|
|
694
|
+
10. ✅ 85%+ test coverage (1000+ tests passing)
|
|
695
|
+
11. ✅ Production validation (deployed at 3+ companies)
|
|
696
|
+
|
|
697
|
+
**Target Date:** Q4 2025
|
|
492
698
|
|
|
493
699
|
---
|
|
494
700
|
|
|
495
701
|
## Example: Multi-Modal Clinical Decision Support
|
|
496
702
|
|
|
497
703
|
```python
|
|
498
|
-
|
|
499
|
-
from flock
|
|
704
|
+
import os
|
|
705
|
+
from flock import Flock, flock_type
|
|
706
|
+
from flock.visibility import PrivateVisibility, TenantVisibility, LabelledVisibility
|
|
707
|
+
from flock.identity import AgentIdentity
|
|
500
708
|
from pydantic import BaseModel
|
|
501
|
-
from flock.registry import flock_type
|
|
502
709
|
|
|
503
710
|
@flock_type
|
|
504
711
|
class PatientScan(BaseModel):
|
|
@@ -522,7 +729,7 @@ class Diagnosis(BaseModel):
|
|
|
522
729
|
confidence: float
|
|
523
730
|
|
|
524
731
|
# Create HIPAA-compliant blackboard
|
|
525
|
-
flock = Flock("openai/gpt-4.1")
|
|
732
|
+
flock = Flock(os.getenv("DEFAULT_MODEL", "openai/gpt-4.1"))
|
|
526
733
|
|
|
527
734
|
# Radiologist with privacy controls
|
|
528
735
|
radiologist = (
|
|
@@ -575,11 +782,73 @@ async with flock.traced_run("patient_123_diagnosis"):
|
|
|
575
782
|
|
|
576
783
|
---
|
|
577
784
|
|
|
785
|
+
## Production Use Cases
|
|
786
|
+
|
|
787
|
+
Flock's architecture shines in production scenarios requiring parallel execution, security, and observability. Here are common patterns:
|
|
788
|
+
|
|
789
|
+
### Financial Services: Multi-Signal Trading
|
|
790
|
+
|
|
791
|
+
**The Challenge:** Analyze multiple market signals in parallel, correlate them within time windows, maintain SEC-compliant audit trails.
|
|
792
|
+
|
|
793
|
+
**The Solution:** 20+ signal analyzers run concurrently, join operations correlate signals, DuckDB provides complete audit trails.
|
|
794
|
+
|
|
795
|
+
```python
|
|
796
|
+
# Parallel signal analyzers
|
|
797
|
+
volatility = flock.agent("volatility").consumes(MarketData).publishes(VolatilityAlert)
|
|
798
|
+
sentiment = flock.agent("sentiment").consumes(NewsArticle).publishes(SentimentAlert)
|
|
799
|
+
|
|
800
|
+
# Trade execution waits for CORRELATED signals (within 5min window)
|
|
801
|
+
trader = flock.agent("trader").consumes(
|
|
802
|
+
VolatilityAlert, SentimentAlert,
|
|
803
|
+
join=JoinSpec(within=timedelta(minutes=5))
|
|
804
|
+
).publishes(TradeOrder)
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
### Healthcare: HIPAA-Compliant Diagnostics
|
|
808
|
+
|
|
809
|
+
**The Challenge:** Multi-modal data fusion with strict access controls, complete audit trails, zero-trust security.
|
|
810
|
+
|
|
811
|
+
**The Solution:** Built-in visibility controls for HIPAA compliance, automatic parallel execution, full data lineage tracking.
|
|
812
|
+
|
|
813
|
+
```python
|
|
814
|
+
# Privacy controls built-in
|
|
815
|
+
radiology.publishes(XRayAnalysis, visibility=PrivateVisibility(agents={"diagnostician"}))
|
|
816
|
+
lab.publishes(LabResults, visibility=TenantVisibility(tenant_id="patient_123"))
|
|
817
|
+
|
|
818
|
+
# Diagnostician waits for BOTH inputs with role-based access
|
|
819
|
+
diagnostician = flock.agent("diagnostician").consumes(XRayAnalysis, LabResults).publishes(Diagnosis)
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
### E-Commerce: 50-Agent Personalization
|
|
823
|
+
|
|
824
|
+
**The Challenge:** Analyze dozens of independent signals, support dynamic signal addition, process millions of events daily.
|
|
825
|
+
|
|
826
|
+
**The Solution:** O(n) scaling to 50+ analyzers, batch processing for efficiency, zero graph rewiring when adding signals.
|
|
827
|
+
|
|
828
|
+
```python
|
|
829
|
+
# 50+ signal analyzers (all run in parallel!)
|
|
830
|
+
for signal in ["browsing", "purchase", "cart", "reviews", "email", "social"]:
|
|
831
|
+
flock.agent(f"{signal}_analyzer").consumes(UserEvent).publishes(Signal)
|
|
832
|
+
|
|
833
|
+
# Recommender batches signals for efficient LLM calls
|
|
834
|
+
recommender = flock.agent("recommender").consumes(Signal, batch=BatchSpec(size=50))
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
### Multi-Tenant SaaS: Content Moderation
|
|
838
|
+
|
|
839
|
+
**The Challenge:** Complete data isolation between tenants, multi-agent consensus, full audit trails.
|
|
840
|
+
|
|
841
|
+
**The Solution:** Tenant visibility ensures zero cross-tenant leakage, parallel checks provide diverse signals, traces show complete reasoning.
|
|
842
|
+
|
|
843
|
+
**See [USECASES.md](USECASES.md) for complete code examples and production metrics.**
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
578
847
|
## Getting Started
|
|
579
848
|
|
|
580
849
|
```bash
|
|
581
850
|
# Install
|
|
582
|
-
pip install flock-
|
|
851
|
+
pip install flock-core
|
|
583
852
|
|
|
584
853
|
# Set API key
|
|
585
854
|
export OPENAI_API_KEY="sk-..."
|
|
@@ -591,18 +860,16 @@ uv run python examples/05-claudes-workshop/lesson_01_code_detective.py
|
|
|
591
860
|
```
|
|
592
861
|
|
|
593
862
|
**Learn by doing:**
|
|
594
|
-
- 📚 [7-Lesson Workshop](examples/05-claudes-workshop/)
|
|
595
|
-
-
|
|
596
|
-
-
|
|
597
|
-
- 📊 [Dashboard UI](examples/03-the-dashboard/) 🚧 - Real-time visualization *(coming soon)*
|
|
598
|
-
- 🔌 [REST API](examples/04-the-api/) 🚧 - API integration examples *(coming soon)*
|
|
863
|
+
- 📚 [7-Lesson Workshop](examples/05-claudes-workshop/) - Progressive lessons from basics to advanced
|
|
864
|
+
- 🆚 [The Blackboard](examples/02-the-blackboard/) - See data-driven orchestration without graphs
|
|
865
|
+
- 🎯 [Declarative Basics](examples/01-the-declarative-way/) - Understanding declarative programming
|
|
599
866
|
- 📖 [Documentation](AGENTS.md) - Complete development guide
|
|
600
867
|
|
|
601
868
|
---
|
|
602
869
|
|
|
603
870
|
## Contributing
|
|
604
871
|
|
|
605
|
-
We're building Flock in the open. See [AGENTS.md](AGENTS.md) for development setup.
|
|
872
|
+
We're building Flock in the open. See [CONTRIBUTING.md](CONTRIBUTING.md) and [AGENTS.md](AGENTS.md) for development setup.
|
|
606
873
|
|
|
607
874
|
**We welcome:**
|
|
608
875
|
- Bug reports and feature requests
|
|
@@ -611,10 +878,9 @@ We're building Flock in the open. See [AGENTS.md](AGENTS.md) for development set
|
|
|
611
878
|
- Architecture discussions
|
|
612
879
|
|
|
613
880
|
**Quality standards:**
|
|
614
|
-
- All tests must pass
|
|
615
|
-
- Coverage requirements met
|
|
881
|
+
- All tests must pass
|
|
882
|
+
- Coverage requirements met
|
|
616
883
|
- Code formatted with Ruff
|
|
617
|
-
- Type checking passes (mypy)
|
|
618
884
|
|
|
619
885
|
---
|
|
620
886
|
|
|
@@ -622,12 +888,12 @@ We're building Flock in the open. See [AGENTS.md](AGENTS.md) for development set
|
|
|
622
888
|
|
|
623
889
|
We're calling this 0.5 to signal:
|
|
624
890
|
|
|
625
|
-
1. **Core is production-ready** -
|
|
891
|
+
1. **Core is production-ready** - real-world client deployments, comprehensive features
|
|
626
892
|
2. **Ecosystem is evolving** - Documentation growing, community building, features maturing
|
|
627
893
|
3. **Architecture is proven** - Blackboard pattern is 50+ years old, declarative contracts are sound
|
|
628
894
|
4. **Enterprise features are coming** - Persistence, auth, Kubernetes deployment in roadmap
|
|
629
895
|
|
|
630
|
-
**1.0 will arrive** when we've delivered persistence, advanced error handling, and enterprise deployment patterns (targeting
|
|
896
|
+
**1.0 will arrive** when we've delivered persistence, advanced error handling, and enterprise deployment patterns (targeting Q4 2025).
|
|
631
897
|
|
|
632
898
|
---
|
|
633
899
|
|
|
@@ -664,7 +930,7 @@ We're calling this 0.5 to signal:
|
|
|
664
930
|
|
|
665
931
|
**Built with ❤️ by white duck GmbH**
|
|
666
932
|
|
|
667
|
-
**"
|
|
933
|
+
**"Declarative contracts eliminate prompt hell. Blackboard architecture eliminates graph spaghetti. Proven patterns applied to modern LLMs."**
|
|
668
934
|
|
|
669
935
|
[⭐ Star on GitHub](https://github.com/whiteducksoftware/flock-flow) | [📖 Read the Docs](AGENTS.md) | [🚀 Try Examples](examples/) | [💼 Enterprise Support](mailto:support@whiteduck.de)
|
|
670
936
|
|
|
@@ -675,7 +941,3 @@ We're calling this 0.5 to signal:
|
|
|
675
941
|
**Last Updated:** October 8, 2025
|
|
676
942
|
**Version:** Flock 0.5.0 (Blackboard Edition)
|
|
677
943
|
**Status:** Production-Ready Core, Enterprise Features Roadmapped
|
|
678
|
-
|
|
679
|
-
---
|
|
680
|
-
|
|
681
|
-
**"Declarative contracts eliminate prompt hell. Blackboard architecture eliminates graph spaghetti. Proven patterns applied to modern LLMs."**
|