flock-core 0.2.18__tar.gz → 0.3.2__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.2.18 → flock_core-0.3.2}/.github/workflows/deploy-documentation.yml +1 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.github/workflows/deploy-whiteduck-pypi.yml +2 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.gitignore +1 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.vscode/settings.json +15 -1
- {flock_core-0.2.18 → flock_core-0.3.2}/PKG-INFO +49 -2
- {flock_core-0.2.18 → flock_core-0.3.2}/README.md +41 -1
- flock_core-0.3.2/docs/assets/drawio/architecture.drawio +44 -0
- flock_core-0.3.2/docs/assets/images/getting-started/first_agent_00.png +0 -0
- flock_core-0.3.2/docs/assets/images/hummingbird.png +0 -0
- flock_core-0.3.2/docs/assets/images/memory_concepts.png +0 -0
- flock_core-0.3.2/docs/assets/images/memory_flow.png +0 -0
- flock_core-0.3.2/docs/assets/images/memory_flow_chart.png +0 -0
- flock_core-0.3.2/docs/core-concepts/memory.md +355 -0
- flock_core-0.3.2/docs/getting-started/quickstart.md +207 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/index.md +7 -3
- flock_core-0.3.2/docs/release-notes/release_notes.md +120 -0
- flock_core-0.3.2/examples/01_introduction/01_simple_example.py +63 -0
- flock_core-0.3.2/examples/01_introduction/02_typed_output.py +78 -0
- flock_core-0.3.2/examples/01_introduction/03_tool_and_code_agent.py +60 -0
- flock_core-0.3.2/examples/01_introduction/04_descriptions.py +39 -0
- flock_core-0.3.2/examples/01_introduction/05_typed_output2.py +75 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/01_introduction/06_simple_hand_off.py +33 -38
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/flock_without_llms.py +1 -1
- flock_core-0.3.2/examples/02_cook_book/painting_by_numbers.py +86 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/self_improvement_with_memory.py +13 -32
- flock_core-0.3.2/examples/03_misc/multi_hops.py +85 -0
- flock_core-0.3.2/examples/03_misc/use_modules.py +60 -0
- flock_core-0.3.2/examples/README.md +24 -0
- flock_core-0.3.2/examples/documentation/getting-started/first_agent_01.py +26 -0
- flock_core-0.3.2/examples/documentation/getting-started/first_agent_02.py +32 -0
- flock_core-0.3.2/examples/documentation/getting-started/first_agent_03.py +31 -0
- flock_core-0.3.2/examples/notebooks_wip/Untitled-1.ipynb +223 -0
- flock_core-0.3.2/examples/playground/memory.py +261 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/mkdocs.yml +2 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/pyproject.toml +8 -1
- flock_core-0.3.2/src/flock/__init__.py +67 -0
- flock_core-0.3.2/src/flock/cli/assets/release_notes.md +111 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/constants.py +1 -0
- flock_core-0.3.2/src/flock/cli/load_release_notes.py +23 -0
- flock_core-0.3.2/src/flock/core/__init__.py +17 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/context/context.py +10 -5
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/flock.py +61 -21
- flock_core-0.3.2/src/flock/core/flock_agent.py +330 -0
- flock_core-0.3.2/src/flock/core/flock_evaluator.py +49 -0
- flock_core-0.3.2/src/flock/core/flock_factory.py +73 -0
- flock_core-0.3.2/src/flock/core/flock_module.py +77 -0
- {flock_core-0.2.18/src/flock → flock_core-0.3.2/src/flock/core}/interpreter/python_interpreter.py +9 -1
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/formatters/themes.py +1 -1
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/logging.py +119 -15
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/mixin/dspy_integration.py +11 -8
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/registry/agent_registry.py +4 -2
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/tools/basic_tools.py +1 -1
- flock_core-0.3.2/src/flock/core/util/cli_helper.py +87 -0
- flock_core-0.3.2/src/flock/evaluators/declarative/declarative_evaluator.py +52 -0
- flock_core-0.3.2/src/flock/evaluators/natural_language/natural_language_evaluator.py +66 -0
- flock_core-0.3.2/src/flock/evaluators/zep/zep_evaluator.py +55 -0
- flock_core-0.3.2/src/flock/modules/callback/callback_module.py +86 -0
- flock_core-0.3.2/src/flock/modules/memory/memory_module.py +235 -0
- flock_core-0.3.2/src/flock/modules/memory/memory_parser.py +125 -0
- flock_core-0.3.2/src/flock/modules/memory/memory_storage.py +736 -0
- flock_core-0.3.2/src/flock/modules/output/output_module.py +194 -0
- flock_core-0.3.2/src/flock/modules/performance/metrics_module.py +477 -0
- flock_core-0.3.2/src/flock/modules/zep/zep_module.py +177 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/aardvark-blue.toml +1 -1
- {flock_core-0.2.18 → flock_core-0.3.2}/tests/unittests/test_flock.py +0 -2
- flock_core-0.3.2/tests/unittests/test_memory_operations.py +297 -0
- flock_core-0.3.2/tests/unittests/test_memory_store.py +137 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/uv.lock +366 -1
- flock_core-0.2.18/docs/assets/drawio/architecture.drawio +0 -24
- flock_core-0.2.18/docs/getting-started/quickstart.md +0 -3
- flock_core-0.2.18/examples/01_introduction/01_simple_example.py +0 -70
- flock_core-0.2.18/examples/01_introduction/02_typed_output.py +0 -82
- flock_core-0.2.18/examples/01_introduction/03_tool_and_code_agent.py +0 -71
- flock_core-0.2.18/examples/01_introduction/04_descriptions.py +0 -47
- flock_core-0.2.18/examples/01_introduction/05_typed_output2.py +0 -79
- flock_core-0.2.18/examples/README.md +0 -23
- flock_core-0.2.18/examples/notebooks_wip/Untitled-1.ipynb +0 -151
- flock_core-0.2.18/src/flock/__init__.py +0 -57
- flock_core-0.2.18/src/flock/core/__init__.py +0 -6
- flock_core-0.2.18/src/flock/core/flock_agent.py +0 -660
- flock_core-0.2.18/src/flock/core/util/cli_helper.py +0 -49
- {flock_core-0.2.18 → flock_core-0.3.2}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.env_template +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.vscode/launch.json +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/.vscode/tasks.json +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/LICENSE +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/advanced/complex-workflows.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/advanced/custom-agents.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/advanced/performance.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/advanced/testing.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/api/flock-core.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/api/flockagent.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/api/types.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/api/utilities.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/architecture/components.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/architecture/design-decisions.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/architecture/overview.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/flock.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/icon.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/assets/images/logo.png +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/contributing/code-style.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/contributing/development.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/contributing/documentation.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/contributing/testing.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/core-concepts/error-handling.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/core-concepts/type-system.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/deployment/monitoring.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/deployment/production-setup.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/deployment/scalability.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/deployment/security.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/examples/chain-gang.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/examples/hello-flock.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/examples/pydantic.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/examples/type-system.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/features/agent-chaining.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/features/agent-definition.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/features/lifecycle-hooks.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/features/pydantic.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/features/type-safety.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/getting-started/installation.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/integrations/dspy.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/integrations/litellm.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/integrations/tavily.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/integrations/temporal.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/tutorials/blog-generator.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/tutorials/custom-tools.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/tutorials/error-recovery.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/docs/tutorials/multi-agent.md +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/long_research_no_handoff.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/project_manager.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/load_01.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/load_02.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/load_03.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/load_04.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/save_01.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/save_02.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/02_cook_book/save_and_load/save_03.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/examples/notebooks_wip/my_agent.json +0 -0
- {flock_core-0.2.18/examples/03_misc_wip → flock_core-0.3.2/examples/playground}/self_learner.py +0 -0
- {flock_core-0.2.18/examples/03_misc_wip → flock_core-0.3.2/examples/playground}/self_learner2.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/requirements.txt +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/cli/settings.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/config.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/core/util/serializable.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/django.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/github.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/material.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/square.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/src/flock/workflow/workflow.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/tests/integration/test_agent_integration.py +0 -0
- {flock_core-0.2.18 → flock_core-0.3.2}/tests/unittests/test_flock_agent.py +0 -0
|
@@ -13,8 +13,22 @@
|
|
|
13
13
|
"source.organizeImports.ruff": "always",
|
|
14
14
|
"source.fixAll.ruff": "always"
|
|
15
15
|
},
|
|
16
|
-
|
|
16
|
+
"editor.fontFamily": "'Jetbrains Mono', 'FiraCode Nerd Font', 'Hack Nerd Font', 'monospace'",
|
|
17
|
+
"editor.smoothScrolling": true,
|
|
18
|
+
"terminal.integrated.fontFamily": "'Jetbrains Mono', 'FiraCode Nerd Font', 'Hack Nerd Font', 'monospace'",
|
|
19
|
+
"editor.renderIndentGuides": false,
|
|
20
|
+
"editor.renderWhitespace": "none",
|
|
21
|
+
//"terminal.integrated.lineHeight": 1.5,
|
|
22
|
+
"editor.fontSize": 15.5,
|
|
23
|
+
"editor.fontLigatures": true,
|
|
24
|
+
//"editor.lineHeight": 1.5,
|
|
25
|
+
"editor.minimap.enabled": false,
|
|
26
|
+
"editor.tabSize": 2,
|
|
27
|
+
"editor.semanticTokenColorCustomizations": {
|
|
28
|
+
"enabled": true
|
|
29
|
+
},
|
|
17
30
|
"editor.semanticHighlighting.enabled": true,
|
|
31
|
+
// we try to make semantic highlighting look good
|
|
18
32
|
// prevent VSCode from modifying the terminal colors
|
|
19
33
|
"terminal.integrated.minimumContrastRatio": 0,
|
|
20
34
|
"cSpell.words": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.2
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -14,6 +14,7 @@ Requires-Dist: dspy==2.5.42
|
|
|
14
14
|
Requires-Dist: duckduckgo-search>=7.3.2
|
|
15
15
|
Requires-Dist: httpx>=0.28.1
|
|
16
16
|
Requires-Dist: loguru>=0.7.3
|
|
17
|
+
Requires-Dist: matplotlib>=3.10.0
|
|
17
18
|
Requires-Dist: msgpack>=1.1.0
|
|
18
19
|
Requires-Dist: opentelemetry-api>=1.30.0
|
|
19
20
|
Requires-Dist: opentelemetry-exporter-jaeger-proto-grpc>=1.21.0
|
|
@@ -21,13 +22,19 @@ Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
|
|
|
21
22
|
Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
|
|
22
23
|
Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
|
|
23
24
|
Requires-Dist: opentelemetry-sdk>=1.30.0
|
|
25
|
+
Requires-Dist: pillow>=10.4.0
|
|
26
|
+
Requires-Dist: prometheus-client>=0.21.1
|
|
24
27
|
Requires-Dist: pydantic>=2.10.5
|
|
25
28
|
Requires-Dist: python-box>=7.3.2
|
|
26
29
|
Requires-Dist: python-decouple>=3.8
|
|
27
30
|
Requires-Dist: questionary>=2.1.0
|
|
28
31
|
Requires-Dist: rich>=13.9.4
|
|
32
|
+
Requires-Dist: sentence-transformers>=3.4.1
|
|
29
33
|
Requires-Dist: temporalio>=1.9.0
|
|
34
|
+
Requires-Dist: tiktoken>=0.8.0
|
|
30
35
|
Requires-Dist: toml>=0.10.2
|
|
36
|
+
Requires-Dist: tqdm>=4.67.1
|
|
37
|
+
Requires-Dist: zep-python>=2.0.2
|
|
31
38
|
Provides-Extra: all-tools
|
|
32
39
|
Requires-Dist: docling>=2.18.0; extra == 'all-tools'
|
|
33
40
|
Requires-Dist: markdownify>=0.14.1; extra == 'all-tools'
|
|
@@ -350,9 +357,49 @@ Super simple rules to remember:
|
|
|
350
357
|
1. Point the first agent to the next one using `hand_off`
|
|
351
358
|
2. Make sure their inputs and outputs match up
|
|
352
359
|
|
|
360
|
+
### Tools of the trade
|
|
361
|
+
|
|
362
|
+
Of couse no agent framework is complete without using tools.
|
|
363
|
+
Flock enables agents to use any python function you pass as tool or to use one of the plenty default tools
|
|
364
|
+
|
|
365
|
+
```python
|
|
366
|
+
bloggy = FlockAgent(
|
|
367
|
+
name="bloggy",
|
|
368
|
+
input="blog_idea: str|The topic to blog about",
|
|
369
|
+
output=(
|
|
370
|
+
"funny_blog_title: str|A catchy title for the blog, "
|
|
371
|
+
"blog_headers: list[str]|List of section headers for the blog"
|
|
372
|
+
"analysis_results: dict[str,Any] | Result of calculated analysis if necessary"
|
|
373
|
+
)
|
|
374
|
+
tools=[basic_tools.web_search_duckduckgo, basic_tools.code_eval],
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
result = flock.run(
|
|
378
|
+
input={"blog_idea": "A blog about cats, with an analysis how old the oldest cat became in days"},
|
|
379
|
+
start_agent=bloggy
|
|
380
|
+
)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
These tools are available out of the box (needs `flock-core[tools]`):
|
|
384
|
+
|
|
385
|
+
- web_search_tavily
|
|
386
|
+
- web_search_duckduckgo
|
|
387
|
+
- get_web_content_as_markdown
|
|
388
|
+
- get_anything_as_markdown (uses docling and needs `flock-core[all-tools]`)
|
|
389
|
+
- evaluate_math
|
|
390
|
+
- code_eval
|
|
391
|
+
- get_current_time
|
|
392
|
+
- count_words
|
|
393
|
+
- extract_urls
|
|
394
|
+
- extract_numbers
|
|
395
|
+
- json_parse_safe
|
|
396
|
+
- save_to_file
|
|
397
|
+
- read_from_file
|
|
398
|
+
|
|
399
|
+
|
|
353
400
|
That's all there is to it! `bloggy` comes up with amazing headers, and `content_writer` turns them into full blog sections. No more writer's block! 🎉
|
|
354
401
|
|
|
355
|
-
And this is just the beginning - you can chain as many agents as you want. Maybe add a proofreader? Or an SEO optimizer? But let's not get ahead of ourselves! 😉
|
|
402
|
+
And this is just the beginning - you can chain as many agents as you want. Maybe add a proofreader? Or add memory? Or an SEO optimizer? But let's not get ahead of ourselves! 😉
|
|
356
403
|
|
|
357
404
|
So far we've barely scratched the surface of what flock has to offer, and we're currently hard at work building up the documentation for all the other super cool features Flock has up its sleeve! Stay tuned! 🚀
|
|
358
405
|
|
|
@@ -311,9 +311,49 @@ Super simple rules to remember:
|
|
|
311
311
|
1. Point the first agent to the next one using `hand_off`
|
|
312
312
|
2. Make sure their inputs and outputs match up
|
|
313
313
|
|
|
314
|
+
### Tools of the trade
|
|
315
|
+
|
|
316
|
+
Of couse no agent framework is complete without using tools.
|
|
317
|
+
Flock enables agents to use any python function you pass as tool or to use one of the plenty default tools
|
|
318
|
+
|
|
319
|
+
```python
|
|
320
|
+
bloggy = FlockAgent(
|
|
321
|
+
name="bloggy",
|
|
322
|
+
input="blog_idea: str|The topic to blog about",
|
|
323
|
+
output=(
|
|
324
|
+
"funny_blog_title: str|A catchy title for the blog, "
|
|
325
|
+
"blog_headers: list[str]|List of section headers for the blog"
|
|
326
|
+
"analysis_results: dict[str,Any] | Result of calculated analysis if necessary"
|
|
327
|
+
)
|
|
328
|
+
tools=[basic_tools.web_search_duckduckgo, basic_tools.code_eval],
|
|
329
|
+
)
|
|
330
|
+
|
|
331
|
+
result = flock.run(
|
|
332
|
+
input={"blog_idea": "A blog about cats, with an analysis how old the oldest cat became in days"},
|
|
333
|
+
start_agent=bloggy
|
|
334
|
+
)
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
These tools are available out of the box (needs `flock-core[tools]`):
|
|
338
|
+
|
|
339
|
+
- web_search_tavily
|
|
340
|
+
- web_search_duckduckgo
|
|
341
|
+
- get_web_content_as_markdown
|
|
342
|
+
- get_anything_as_markdown (uses docling and needs `flock-core[all-tools]`)
|
|
343
|
+
- evaluate_math
|
|
344
|
+
- code_eval
|
|
345
|
+
- get_current_time
|
|
346
|
+
- count_words
|
|
347
|
+
- extract_urls
|
|
348
|
+
- extract_numbers
|
|
349
|
+
- json_parse_safe
|
|
350
|
+
- save_to_file
|
|
351
|
+
- read_from_file
|
|
352
|
+
|
|
353
|
+
|
|
314
354
|
That's all there is to it! `bloggy` comes up with amazing headers, and `content_writer` turns them into full blog sections. No more writer's block! 🎉
|
|
315
355
|
|
|
316
|
-
And this is just the beginning - you can chain as many agents as you want. Maybe add a proofreader? Or an SEO optimizer? But let's not get ahead of ourselves! 😉
|
|
356
|
+
And this is just the beginning - you can chain as many agents as you want. Maybe add a proofreader? Or add memory? Or an SEO optimizer? But let's not get ahead of ourselves! 😉
|
|
317
357
|
|
|
318
358
|
So far we've barely scratched the surface of what flock has to offer, and we're currently hard at work building up the documentation for all the other super cool features Flock has up its sleeve! Stay tuned! 🚀
|
|
319
359
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram id="iQ7YuHOuaVDECIdskFDT" name="Page-1">
|
|
3
|
+
<mxGraphModel dx="88" dy="620" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #d8cfb1)" math="0" shadow="1">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="2" value="sequenceDiagram
 participant Client
 participant Flock
 participant FlockAgent
 participant Registry
 participant Context
 participant LLM
 
 Client->>Flock: run_async(agent, input)
 Flock->>Registry: get_agent(name)
 Registry-->>Flock: agent instance
 
 Flock->>Context: initialize_context(agent, input)
 
 Flock->>FlockAgent: run(inputs)
 activate FlockAgent
 
 FlockAgent->>FlockAgent: initialize(inputs)
 FlockAgent->>FlockAgent: _evaluate(inputs)
 
 FlockAgent->>LLM: process with tools/prompts
 LLM-->>FlockAgent: response
 
 FlockAgent->>FlockAgent: terminate(inputs, result)
 FlockAgent-->>Flock: result
 deactivate FlockAgent
 
 Flock-->>Client: final result" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
|
|
8
|
+
<mxGeometry x="271" y="360" width="300" height="300" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
</root>
|
|
11
|
+
</mxGraphModel>
|
|
12
|
+
</diagram>
|
|
13
|
+
<diagram id="mQwFuZfSuTjpqv4SXbYC" name="Page-2">
|
|
14
|
+
<mxGraphModel dx="354" dy="259" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #ffffde)" math="0" shadow="1">
|
|
15
|
+
<root>
|
|
16
|
+
<mxCell id="0"/>
|
|
17
|
+
<mxCell id="1" parent="0"/>
|
|
18
|
+
<mxCell id="gh-ZxXSGDDD0mwRwWCxR-1" value="graph TD
 subgraph Client Application
 client[Client Code]
 end

 subgraph Flock Framework
 orchestrator[Flock Orchestrator]
 registry[Agent Registry]
 context[Context Manager]
 
 subgraph Agents
 base[FlockAgent Base]

 end
 
 subgraph Execution
 local[Local Executor]
 temporal[Temporal Executor]
 end
 
 subgraph Core Services
 logging[Logging System]
 tools[Tool Registry]
 formatter[Output Formatters]
 end
 end

 subgraph External Services
 llm[Language Models]
 temporal_server[Temporal Server]
 end

 %% Client interactions
 client --> orchestrator
 
 %% Orchestrator relations
 orchestrator --> registry
 orchestrator --> context
 orchestrator --> local
 orchestrator --> temporal
 
 %% Agent relations
 base --> tools
 base --> logging
 base --> formatter

 
 %% Execution relations
 local --> llm
 temporal --> temporal_server
 temporal_server --> llm
 
 %% Registry relations
 registry --> base
 registry --> tools

 %% Style
 classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;
 classDef external fill:#e1f5fe,stroke:#0288d1,stroke-width:2px;
 classDef core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;
 
 class llm,temporal_server external;
 class orchestrator,registry,context,base,local,temporal core;" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" vertex="1" parent="1">
|
|
19
|
+
<mxGeometry x="274" y="325" width="300" height="300" as="geometry"/>
|
|
20
|
+
</mxCell>
|
|
21
|
+
</root>
|
|
22
|
+
</mxGraphModel>
|
|
23
|
+
</diagram>
|
|
24
|
+
<diagram id="sh9ImpPZNdK_Mo0HMCRx" name="Page-3">
|
|
25
|
+
<mxGraphModel dx="1237" dy="800" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF,#E8E8E8)" math="0" shadow="0">
|
|
26
|
+
<root>
|
|
27
|
+
<mxCell id="0"/>
|
|
28
|
+
<mxCell id="1" parent="0"/>
|
|
29
|
+
<mxCell id="84CqISvRR4rrSDVKXhkM-1" value="graph TD
 subgraph Memory Storage
 A[New Input/Output] --> B[Create Embedding]
 B --> C[Extract Concepts]
 C --> D[Create Memory Entry]
 D --> E{Store Memory}
 E -->|Recent| F[Short Term Memory]
 E -->|Frequent Use| G[Long Term Memory]
 D --> H[Update Concept Graph]
 end

classDef process fill:#73B7E7,stroke:#333,stroke-width:2px;
classDef storage fill:#90EE90,stroke:#333,stroke-width:2px;
class A,B,C,D process;
class F,G,H storage;" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
|
|
30
|
+
<mxGeometry x="-20" y="10" width="300" height="300" as="geometry"/>
|
|
31
|
+
</mxCell>
|
|
32
|
+
<mxCell id="84CqISvRR4rrSDVKXhkM-2" value="graph TD
 subgraph Memory Retrieval
 A1[Query] --> B1[Create Query Embedding]
 A1 --> C1[Extract Query Concepts]
 B1 --> D1{Similarity Search}
 C1 --> E1{Concept Spreading}
 D1 --> F1[Find Similar Memories]
 E1 --> G1[Find Related Concepts]
 F1 --> H1[Score & Rank Results]
 G1 --> H1
 H1 --> I1[Return Best Matches]
 end

classDef query fill:#FFB6C1,stroke:#333,stroke-width:2px;
classDef process fill:#73B7E7,stroke:#333,stroke-width:2px;
classDef result fill:#90EE90,stroke:#333,stroke-width:2px;
class A1,B1,C1 query;
class D1,E1,F1,G1 process;
class H1,I1 result;
" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
|
|
33
|
+
<mxGeometry x="240" y="10" width="300" height="300" as="geometry"/>
|
|
34
|
+
</mxCell>
|
|
35
|
+
<mxCell id="84CqISvRR4rrSDVKXhkM-3" value="graph LR
 subgraph Concept Graph
 A2[Space] --> B2[Rockets]
 B2 --> C2[Physics]
 C2 --> D2[Energy]
 B2 --> E2[Engineering]
 A2 --> F2[Astronomy]
 F2 --> G2[Planets]
 end

classDef concept fill:#FFE4B5,stroke:#333,stroke-width:2px;
class A2,B2,C2,D2,E2,F2,G2 concept;" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
|
|
36
|
+
<mxGeometry x="520" y="-60" width="300" height="300" as="geometry"/>
|
|
37
|
+
</mxCell>
|
|
38
|
+
<mxCell id="84CqISvRR4rrSDVKXhkM-4" value="sequenceDiagram
 participant Q as Query
 participant M as Memory System
 participant ST as Short Term
 participant LT as Long Term
 participant CG as Concept Graph

 Q->>M: Search Request
 activate M
 M->>ST: Check Recent Memories
 M->>LT: Check Important Memories
 M->>CG: Spread Activation
 CG-->>M: Related Concepts
 ST-->>M: Similar Recent Memories
 LT-->>M: Similar Important Memories
 M->>M: Score & Rank Results
 M-->>Q: Return Best Matches
 deactivate M" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
|
|
39
|
+
<mxGeometry y="290" width="820" height="650" as="geometry"/>
|
|
40
|
+
</mxCell>
|
|
41
|
+
</root>
|
|
42
|
+
</mxGraphModel>
|
|
43
|
+
</diagram>
|
|
44
|
+
</mxfile>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# Flock Memory System: How It Works
|
|
2
|
+
|
|
3
|
+
Ever wondered how AI can remember and learn from past interactions? Flock's memory system works a lot like human memory, but with some cool technical tricks! Let's break it down.
|
|
4
|
+
|
|
5
|
+
## 🧠 The Big Picture
|
|
6
|
+
|
|
7
|
+
Imagine you're organizing a huge library of experiences. This library has:
|
|
8
|
+
|
|
9
|
+
- Recent memories (short-term)
|
|
10
|
+
- Important, well-used memories (long-term)
|
|
11
|
+
- Connections between related topics
|
|
12
|
+
- A smart way to find relevant information
|
|
13
|
+
|
|
14
|
+
That's basically what Flock's memory system does!
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 💭 How Memories Are Stored
|
|
19
|
+
|
|
20
|
+
### 1. Memory Entries
|
|
21
|
+
|
|
22
|
+
Each memory is stored with:
|
|
23
|
+
|
|
24
|
+
- What went in (inputs)
|
|
25
|
+
- What came out (outputs)
|
|
26
|
+
- When it happened (timestamp)
|
|
27
|
+
- How often it's used (access count)
|
|
28
|
+
- Special "embedding" (think of it as the memory's fingerprint)
|
|
29
|
+
- Related concepts (like tags or keywords)
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
memory = {
|
|
33
|
+
"inputs": {"question": "How do rockets work?"},
|
|
34
|
+
"outputs": {"answer": "Rockets work by..."},
|
|
35
|
+
"timestamp": "2025-02-20",
|
|
36
|
+
"access_count": 3,
|
|
37
|
+
"concepts": ["rockets", "space", "physics"]
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Smart Fingerprinting (Embeddings)
|
|
42
|
+
|
|
43
|
+
- Every memory gets a special "fingerprint" (a list of numbers)
|
|
44
|
+
- Similar memories have similar fingerprints
|
|
45
|
+
- This helps find related memories quickly
|
|
46
|
+
- Uses a smart AI model (Sentence Transformers) to create these fingerprints
|
|
47
|
+
|
|
48
|
+
{ width="600" }
|
|
49
|
+
|
|
50
|
+
### 3. Concept Graph
|
|
51
|
+
|
|
52
|
+
- Maintains a network of connected concepts
|
|
53
|
+
- Like how your brain connects "rocket" with "space" and "physics"
|
|
54
|
+
- The more often concepts appear together, the stronger their connection
|
|
55
|
+
- Helps find related memories even if they use different words
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
{ width="600" }
|
|
59
|
+
|
|
60
|
+
## 🔍 How Memories Are Retrieved
|
|
61
|
+
|
|
62
|
+
{ width="600" }
|
|
63
|
+
|
|
64
|
+
### 1. Similarity Search
|
|
65
|
+
|
|
66
|
+
When looking for memories, the system:
|
|
67
|
+
|
|
68
|
+
1. Creates a fingerprint of your query
|
|
69
|
+
2. Compares it with stored memory fingerprints
|
|
70
|
+
3. Finds the closest matches
|
|
71
|
+
|
|
72
|
+
Like finding books in a library by topic, not just exact title matches!
|
|
73
|
+
|
|
74
|
+
### 2. Memory Scoring
|
|
75
|
+
|
|
76
|
+
Each memory gets a score based on:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Final Score = Similarity × Decay × Reinforcement × Decay Factor
|
|
80
|
+
|
|
81
|
+
Where:
|
|
82
|
+
|
|
83
|
+
- Similarity: How well it matches your query (0-1)
|
|
84
|
+
- Decay: Newer memories score higher
|
|
85
|
+
- Reinforcement: Frequently used memories score higher
|
|
86
|
+
- Decay Factor: Adjusts based on usefulness
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 3. Memory Evolution
|
|
90
|
+
|
|
91
|
+
Memories change over time:
|
|
92
|
+
|
|
93
|
+
- Frequently used memories get stronger (higher decay factor)
|
|
94
|
+
- Unused memories fade (lower decay factor)
|
|
95
|
+
- Very frequently used memories move to long-term storage
|
|
96
|
+
- Just like how human memories work!
|
|
97
|
+
|
|
98
|
+
## 🎯 Memory Operations
|
|
99
|
+
|
|
100
|
+
You can interact with memory in different ways:
|
|
101
|
+
|
|
102
|
+
### 1. Semantic Search
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
"topic -> memory.semantic(threshold=0.8)"
|
|
106
|
+
# Finds memories that are conceptually similar
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 2. Exact Match
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
"topic -> memory.exact"
|
|
113
|
+
# Finds memories that match precisely
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3. Combined Search
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
"topic -> memory.semantic | memory.exact | memory.combine"
|
|
120
|
+
# Uses both similarity and exact matching
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 🌟 Cool Features
|
|
124
|
+
|
|
125
|
+
### 1. Clustering
|
|
126
|
+
|
|
127
|
+
- Similar memories are grouped together
|
|
128
|
+
- Makes retrieval faster
|
|
129
|
+
- Helps identify patterns in the knowledge
|
|
130
|
+
|
|
131
|
+
### 2. Spreading Activation
|
|
132
|
+
|
|
133
|
+
- When finding related concepts, activation "spreads" through the concept network
|
|
134
|
+
- Like how thinking about "rockets" might lead to "space travel" then "astronauts"
|
|
135
|
+
- Helps discover relevant but not obvious connections
|
|
136
|
+
|
|
137
|
+
### 3. Automatic Promotion
|
|
138
|
+
|
|
139
|
+
- Frequently used memories automatically move to long-term storage
|
|
140
|
+
- Like how you remember important things better than one-off events
|
|
141
|
+
- Helps maintain a balance between fresh and important memories
|
|
142
|
+
|
|
143
|
+
## 📈 Memory Over Time
|
|
144
|
+
|
|
145
|
+
As the system is used:
|
|
146
|
+
|
|
147
|
+
1. Short-term memory collects recent interactions
|
|
148
|
+
2. Important memories move to long-term storage
|
|
149
|
+
3. The concept graph grows and strengthens connections
|
|
150
|
+
4. Clustering helps organize growing knowledge
|
|
151
|
+
5. Search becomes smarter with more context
|
|
152
|
+
|
|
153
|
+
## 🔧 Under The Hood Example
|
|
154
|
+
|
|
155
|
+
Let's say you ask about rockets:
|
|
156
|
+
|
|
157
|
+
1. **Storage**
|
|
158
|
+
```python
|
|
159
|
+
Entry(
|
|
160
|
+
id="mem_123",
|
|
161
|
+
inputs={"query": "How do rockets work?"},
|
|
162
|
+
embedding=[0.1, 0.2, ...], # Fingerprint
|
|
163
|
+
concepts={"rockets", "physics", "space"}
|
|
164
|
+
)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
2. **Retrieval**
|
|
168
|
+
```python
|
|
169
|
+
# When you ask about "space travel":
|
|
170
|
+
query_embedding = compute_embedding("space travel")
|
|
171
|
+
similar_memories = find_similar(query_embedding)
|
|
172
|
+
concept_memories = spread_activation({"space", "travel"})
|
|
173
|
+
results = combine_and_rank(similar_memories, concept_memories)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
3. **Learning**
|
|
177
|
+
```python
|
|
178
|
+
# After using a memory:
|
|
179
|
+
memory.access_count += 1
|
|
180
|
+
memory.decay_factor *= 1.1 # Gets stronger
|
|
181
|
+
if memory.access_count > 10:
|
|
182
|
+
promote_to_long_term(memory)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 🎓 Why This Matters
|
|
186
|
+
|
|
187
|
+
This system gives Flock:
|
|
188
|
+
|
|
189
|
+
1. Better context awareness
|
|
190
|
+
2. More consistent responses
|
|
191
|
+
3. Learning from interactions
|
|
192
|
+
4. Efficient knowledge retrieval
|
|
193
|
+
5. Natural knowledge evolution
|
|
194
|
+
|
|
195
|
+
Just like a human assistant would remember past conversations and learn from experience!
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
In addition to the memory there is a declarative memory mapping system in which you define what memory you want to extract. Let's look at it!
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## 🗺️ Memory Mapping System
|
|
203
|
+
|
|
204
|
+
## 🔗 Basic Syntax
|
|
205
|
+
|
|
206
|
+
Memory mappings use this pattern:
|
|
207
|
+
```python
|
|
208
|
+
"input -> operation1 | operation2 | operation3 -> output"
|
|
209
|
+
```
|
|
210
|
+
Where:
|
|
211
|
+
- `->` points to where data should flow
|
|
212
|
+
- `|` chains operations together (like pipes in Unix)
|
|
213
|
+
- Operations can have parameters in parentheses
|
|
214
|
+
|
|
215
|
+
## 🧪 Available Operations
|
|
216
|
+
|
|
217
|
+
### 1. Semantic Search
|
|
218
|
+
```python
|
|
219
|
+
"query -> memory.semantic(threshold=0.8)"
|
|
220
|
+
```
|
|
221
|
+
Parameters:
|
|
222
|
+
- `threshold`: Similarity cutoff (0-1)
|
|
223
|
+
- `max_results`: Maximum number of results
|
|
224
|
+
- `scope`: 'local', 'global', or 'both'
|
|
225
|
+
|
|
226
|
+
### 2. Exact Match
|
|
227
|
+
```python
|
|
228
|
+
"topic -> memory.exact"
|
|
229
|
+
```
|
|
230
|
+
Looks for exact matches in memory entries. Good for when you need precise matching.
|
|
231
|
+
|
|
232
|
+
### 3. Filter
|
|
233
|
+
```python
|
|
234
|
+
"memory.filter(recency='7d', relevance=0.5)"
|
|
235
|
+
```
|
|
236
|
+
Parameters:
|
|
237
|
+
- `recency`: Time window ('24h', '7d', etc.)
|
|
238
|
+
- `relevance`: Minimum relevance score
|
|
239
|
+
- `metadata`: Custom metadata filters
|
|
240
|
+
|
|
241
|
+
### 4. Sort
|
|
242
|
+
```python
|
|
243
|
+
"memory.sort(by='relevance', ascending=False)"
|
|
244
|
+
```
|
|
245
|
+
Parameters:
|
|
246
|
+
- `by`: 'relevance', 'recency', or 'access_count'
|
|
247
|
+
- `ascending`: Sort direction
|
|
248
|
+
|
|
249
|
+
### 5. Combine
|
|
250
|
+
```python
|
|
251
|
+
"memory.combine(weights={'semantic': 0.7, 'exact': 0.3})"
|
|
252
|
+
```
|
|
253
|
+
Merges results from different operations.
|
|
254
|
+
|
|
255
|
+
## Examples
|
|
256
|
+
|
|
257
|
+
### Simple Query
|
|
258
|
+
```python
|
|
259
|
+
"topic -> memory.semantic(threshold=0.8) -> result"
|
|
260
|
+
```
|
|
261
|
+
Just finds semantically similar memories.
|
|
262
|
+
|
|
263
|
+
### Complex Research
|
|
264
|
+
```python
|
|
265
|
+
memory_mapping = """
|
|
266
|
+
topic -> memory.semantic(threshold=0.9) |
|
|
267
|
+
memory.filter(recency='7d') |
|
|
268
|
+
memory.sort(by='relevance')
|
|
269
|
+
-> research_results
|
|
270
|
+
"""
|
|
271
|
+
```
|
|
272
|
+
Finds recent, highly relevant memories.
|
|
273
|
+
|
|
274
|
+
### Multi-path Search
|
|
275
|
+
```python
|
|
276
|
+
memory_mapping = """
|
|
277
|
+
topic -> memory.semantic(threshold=0.8) |
|
|
278
|
+
style -> memory.exact |
|
|
279
|
+
memory.combine(weights={'semantic': 0.6, 'exact': 0.4}) |
|
|
280
|
+
memory.filter(recency='24h')
|
|
281
|
+
-> final_results
|
|
282
|
+
"""
|
|
283
|
+
```
|
|
284
|
+
This:
|
|
285
|
+
1. Does semantic search on topic
|
|
286
|
+
2. Does exact match on style
|
|
287
|
+
3. Combines both results with weights
|
|
288
|
+
4. Filters to last 24 hours
|
|
289
|
+
|
|
290
|
+
### Real-world Example
|
|
291
|
+
```python
|
|
292
|
+
researcher = FlockAgent(
|
|
293
|
+
name="researcher",
|
|
294
|
+
input="query: str | Research query",
|
|
295
|
+
output="findings: str | Research findings",
|
|
296
|
+
memory_mapping="""
|
|
297
|
+
query -> memory.semantic(threshold=0.9, scope='global') |
|
|
298
|
+
memory.filter(recency='7d') |
|
|
299
|
+
memory.enrich(tools=['web_search']) |
|
|
300
|
+
memory.sort(by='relevance') |
|
|
301
|
+
memory.combine
|
|
302
|
+
-> findings
|
|
303
|
+
"""
|
|
304
|
+
)
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## How It Works Internally
|
|
308
|
+
|
|
309
|
+
1. **Parsing**:
|
|
310
|
+
```python
|
|
311
|
+
mapping = "topic -> memory.semantic(0.8) | memory.filter(recency='7d')"
|
|
312
|
+
# Gets parsed into:
|
|
313
|
+
operations = [
|
|
314
|
+
SemanticOperation(threshold=0.8),
|
|
315
|
+
FilterOperation(recency='7d')
|
|
316
|
+
]
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
2. **Execution**:
|
|
320
|
+
- Each operation is executed in sequence
|
|
321
|
+
- Results flow from one operation to the next
|
|
322
|
+
- Final results are returned
|
|
323
|
+
|
|
324
|
+
3. **Error Handling**:
|
|
325
|
+
- Invalid operations are caught during parsing
|
|
326
|
+
- Runtime errors are caught during execution
|
|
327
|
+
- Clear error messages help debugging
|
|
328
|
+
|
|
329
|
+
## Tips for Writing Mappings
|
|
330
|
+
|
|
331
|
+
1. **Start Simple**
|
|
332
|
+
```python
|
|
333
|
+
"query -> memory.semantic -> result"
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
2. **Add Refinements**
|
|
337
|
+
```python
|
|
338
|
+
"query -> memory.semantic | memory.filter -> result"
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
3. **Fine-tune Parameters**
|
|
342
|
+
```python
|
|
343
|
+
"query -> memory.semantic(threshold=0.9) | memory.filter(recency='7d') -> result"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
4. **Complex Flows**
|
|
347
|
+
```python
|
|
348
|
+
"""
|
|
349
|
+
query -> memory.semantic |
|
|
350
|
+
memory.filter |
|
|
351
|
+
memory.sort |
|
|
352
|
+
memory.combine
|
|
353
|
+
-> result
|
|
354
|
+
"""
|
|
355
|
+
```
|