flock-core 0.5.0b28__py3-none-any.whl → 0.5.0b51__py3-none-any.whl
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/__init__.py +12 -217
- flock/agent.py +678 -0
- flock/api/themes.py +71 -0
- flock/artifacts.py +79 -0
- flock/cli.py +75 -0
- flock/components.py +173 -0
- flock/dashboard/__init__.py +28 -0
- flock/dashboard/collector.py +283 -0
- flock/dashboard/events.py +182 -0
- flock/dashboard/launcher.py +230 -0
- flock/dashboard/service.py +537 -0
- flock/dashboard/websocket.py +235 -0
- flock/engines/__init__.py +6 -0
- flock/engines/dspy_engine.py +856 -0
- flock/examples.py +128 -0
- flock/frontend/README.md +678 -0
- flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
- flock/frontend/index.html +12 -0
- flock/frontend/package-lock.json +4347 -0
- flock/frontend/package.json +48 -0
- flock/frontend/src/App.tsx +79 -0
- flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +587 -0
- flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +387 -0
- flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +640 -0
- flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
- flock/frontend/src/components/common/BuildInfo.tsx +39 -0
- flock/frontend/src/components/common/EmptyState.module.css +115 -0
- flock/frontend/src/components/common/EmptyState.tsx +128 -0
- flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
- flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
- flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
- flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
- flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
- flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
- flock/frontend/src/components/controls/PublishControl.css +547 -0
- flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
- flock/frontend/src/components/controls/PublishControl.tsx +432 -0
- flock/frontend/src/components/details/DetailWindowContainer.tsx +62 -0
- flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
- flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
- flock/frontend/src/components/details/MessageHistoryTab.tsx +299 -0
- flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
- flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
- flock/frontend/src/components/details/RunStatusTab.tsx +307 -0
- flock/frontend/src/components/details/tabs.test.tsx +1015 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
- flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
- flock/frontend/src/components/filters/FilterBar.module.css +29 -0
- flock/frontend/src/components/filters/FilterBar.test.tsx +133 -0
- flock/frontend/src/components/filters/FilterBar.tsx +33 -0
- flock/frontend/src/components/filters/FilterPills.module.css +79 -0
- flock/frontend/src/components/filters/FilterPills.test.tsx +173 -0
- flock/frontend/src/components/filters/FilterPills.tsx +67 -0
- flock/frontend/src/components/filters/TimeRangeFilter.module.css +91 -0
- flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
- flock/frontend/src/components/filters/TimeRangeFilter.tsx +105 -0
- flock/frontend/src/components/graph/AgentNode.test.tsx +75 -0
- flock/frontend/src/components/graph/AgentNode.tsx +322 -0
- flock/frontend/src/components/graph/GraphCanvas.tsx +406 -0
- flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
- flock/frontend/src/components/graph/MessageNode.test.tsx +62 -0
- flock/frontend/src/components/graph/MessageNode.tsx +116 -0
- flock/frontend/src/components/graph/MiniMap.tsx +47 -0
- flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
- flock/frontend/src/components/layout/DashboardLayout.css +407 -0
- flock/frontend/src/components/layout/DashboardLayout.tsx +300 -0
- flock/frontend/src/components/layout/Header.module.css +88 -0
- flock/frontend/src/components/layout/Header.tsx +52 -0
- flock/frontend/src/components/modules/EventLogModule.test.tsx +401 -0
- flock/frontend/src/components/modules/EventLogModule.tsx +396 -0
- flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +17 -0
- flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
- flock/frontend/src/components/modules/ModuleRegistry.ts +85 -0
- flock/frontend/src/components/modules/ModuleWindow.tsx +155 -0
- flock/frontend/src/components/modules/registerModules.ts +20 -0
- flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
- flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
- flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
- flock/frontend/src/components/settings/SettingsPanel.css +327 -0
- flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
- flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
- flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
- flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
- flock/frontend/src/hooks/useModulePersistence.ts +154 -0
- flock/frontend/src/hooks/useModules.ts +139 -0
- flock/frontend/src/hooks/usePersistence.ts +139 -0
- flock/frontend/src/main.tsx +13 -0
- flock/frontend/src/services/api.ts +213 -0
- flock/frontend/src/services/indexeddb.test.ts +793 -0
- flock/frontend/src/services/indexeddb.ts +794 -0
- flock/frontend/src/services/layout.test.ts +437 -0
- flock/frontend/src/services/layout.ts +146 -0
- flock/frontend/src/services/themeApplicator.ts +140 -0
- flock/frontend/src/services/themeService.ts +77 -0
- flock/frontend/src/services/websocket.test.ts +595 -0
- flock/frontend/src/services/websocket.ts +685 -0
- flock/frontend/src/store/filterStore.test.ts +242 -0
- flock/frontend/src/store/filterStore.ts +103 -0
- flock/frontend/src/store/graphStore.test.ts +186 -0
- flock/frontend/src/store/graphStore.ts +414 -0
- flock/frontend/src/store/moduleStore.test.ts +253 -0
- flock/frontend/src/store/moduleStore.ts +57 -0
- flock/frontend/src/store/settingsStore.ts +188 -0
- flock/frontend/src/store/streamStore.ts +68 -0
- flock/frontend/src/store/uiStore.test.ts +54 -0
- flock/frontend/src/store/uiStore.ts +110 -0
- flock/frontend/src/store/wsStore.ts +34 -0
- flock/frontend/src/styles/index.css +15 -0
- flock/frontend/src/styles/scrollbar.css +47 -0
- flock/frontend/src/styles/variables.css +488 -0
- flock/frontend/src/test/setup.ts +1 -0
- flock/frontend/src/types/filters.ts +14 -0
- flock/frontend/src/types/graph.ts +55 -0
- flock/frontend/src/types/modules.ts +7 -0
- flock/frontend/src/types/theme.ts +55 -0
- flock/frontend/src/utils/mockData.ts +85 -0
- flock/frontend/src/utils/performance.ts +16 -0
- flock/frontend/src/utils/transforms.test.ts +860 -0
- flock/frontend/src/utils/transforms.ts +323 -0
- flock/frontend/src/vite-env.d.ts +17 -0
- flock/frontend/tsconfig.json +27 -0
- flock/frontend/tsconfig.node.json +11 -0
- flock/frontend/vite.config.ts +25 -0
- flock/frontend/vitest.config.ts +11 -0
- flock/{core/util → helper}/cli_helper.py +4 -3
- flock/{core/logging → logging}/__init__.py +2 -3
- flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
- flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
- flock/{core/logging → logging}/formatters/themed_formatter.py +69 -115
- flock/{core/logging → logging}/logging.py +77 -61
- flock/{core/logging → logging}/telemetry.py +20 -26
- flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
- flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +6 -9
- flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
- flock/{core/logging → logging}/trace_and_logged.py +20 -24
- flock/mcp/__init__.py +91 -0
- flock/{core/mcp/mcp_client.py → mcp/client.py} +103 -154
- flock/{core/mcp/mcp_config.py → mcp/config.py} +62 -117
- flock/mcp/manager.py +255 -0
- flock/mcp/servers/sse/__init__.py +1 -1
- flock/mcp/servers/sse/flock_sse_server.py +11 -53
- flock/mcp/servers/stdio/__init__.py +1 -1
- flock/mcp/servers/stdio/flock_stdio_server.py +8 -48
- flock/mcp/servers/streamable_http/flock_streamable_http_server.py +17 -62
- flock/mcp/servers/websockets/flock_websocket_server.py +7 -40
- flock/{core/mcp/flock_mcp_tool.py → mcp/tool.py} +16 -26
- flock/mcp/types/__init__.py +42 -0
- flock/{core/mcp → mcp}/types/callbacks.py +9 -15
- flock/{core/mcp → mcp}/types/factories.py +7 -6
- flock/{core/mcp → mcp}/types/handlers.py +13 -18
- flock/{core/mcp → mcp}/types/types.py +70 -74
- flock/{core/mcp → mcp}/util/helpers.py +1 -1
- flock/orchestrator.py +645 -0
- flock/registry.py +148 -0
- flock/runtime.py +262 -0
- flock/service.py +140 -0
- flock/store.py +69 -0
- flock/subscription.py +111 -0
- flock/themes/andromeda.toml +1 -1
- flock/themes/apple-system-colors.toml +1 -1
- flock/themes/arcoiris.toml +1 -1
- flock/themes/atomonelight.toml +1 -1
- flock/themes/ayu copy.toml +1 -1
- flock/themes/ayu-light.toml +1 -1
- flock/themes/belafonte-day.toml +1 -1
- flock/themes/belafonte-night.toml +1 -1
- flock/themes/blulocodark.toml +1 -1
- flock/themes/breeze.toml +1 -1
- flock/themes/broadcast.toml +1 -1
- flock/themes/brogrammer.toml +1 -1
- flock/themes/builtin-dark.toml +1 -1
- flock/themes/builtin-pastel-dark.toml +1 -1
- flock/themes/catppuccin-latte.toml +1 -1
- flock/themes/catppuccin-macchiato.toml +1 -1
- flock/themes/catppuccin-mocha.toml +1 -1
- flock/themes/cga.toml +1 -1
- flock/themes/chalk.toml +1 -1
- flock/themes/ciapre.toml +1 -1
- flock/themes/coffee-theme.toml +1 -1
- flock/themes/cyberpunkscarletprotocol.toml +1 -1
- flock/themes/dark+.toml +1 -1
- flock/themes/darkermatrix.toml +1 -1
- flock/themes/darkside.toml +1 -1
- flock/themes/desert.toml +1 -1
- flock/themes/django.toml +1 -1
- flock/themes/djangosmooth.toml +1 -1
- flock/themes/doomone.toml +1 -1
- flock/themes/dotgov.toml +1 -1
- flock/themes/dracula+.toml +1 -1
- flock/themes/duckbones.toml +1 -1
- flock/themes/encom.toml +1 -1
- flock/themes/espresso.toml +1 -1
- flock/themes/everblush.toml +1 -1
- flock/themes/fairyfloss.toml +1 -1
- flock/themes/fideloper.toml +1 -1
- flock/themes/fishtank.toml +1 -1
- flock/themes/flexoki-light.toml +1 -1
- flock/themes/floraverse.toml +1 -1
- flock/themes/framer.toml +1 -1
- flock/themes/galizur.toml +1 -1
- flock/themes/github.toml +1 -1
- flock/themes/grass.toml +1 -1
- flock/themes/grey-green.toml +1 -1
- flock/themes/gruvboxlight.toml +1 -1
- flock/themes/guezwhoz.toml +1 -1
- flock/themes/harper.toml +1 -1
- flock/themes/hax0r-blue.toml +1 -1
- flock/themes/hopscotch.256.toml +1 -1
- flock/themes/ic-green-ppl.toml +1 -1
- flock/themes/iceberg-dark.toml +1 -1
- flock/themes/japanesque.toml +1 -1
- flock/themes/jubi.toml +1 -1
- flock/themes/kibble.toml +1 -1
- flock/themes/kolorit.toml +1 -1
- flock/themes/kurokula.toml +1 -1
- flock/themes/materialdesigncolors.toml +1 -1
- flock/themes/matrix.toml +1 -1
- flock/themes/mellifluous.toml +1 -1
- flock/themes/midnight-in-mojave.toml +1 -1
- flock/themes/monokai-remastered.toml +1 -1
- flock/themes/monokai-soda.toml +1 -1
- flock/themes/neon.toml +1 -1
- flock/themes/neopolitan.toml +1 -1
- flock/themes/nord-light.toml +1 -1
- flock/themes/ocean.toml +1 -1
- flock/themes/onehalfdark.toml +1 -1
- flock/themes/onehalflight.toml +1 -1
- flock/themes/palenighthc.toml +1 -1
- flock/themes/paulmillr.toml +1 -1
- flock/themes/pencildark.toml +1 -1
- flock/themes/pnevma.toml +1 -1
- flock/themes/purple-rain.toml +1 -1
- flock/themes/purplepeter.toml +1 -1
- flock/themes/raycast-dark.toml +1 -1
- flock/themes/red-sands.toml +1 -1
- flock/themes/relaxed.toml +1 -1
- flock/themes/retro.toml +1 -1
- flock/themes/rose-pine.toml +1 -1
- flock/themes/royal.toml +1 -1
- flock/themes/ryuuko.toml +1 -1
- flock/themes/sakura.toml +1 -1
- flock/themes/scarlet-protocol.toml +1 -1
- flock/themes/seoulbones-dark.toml +1 -1
- flock/themes/shades-of-purple.toml +1 -1
- flock/themes/smyck.toml +1 -1
- flock/themes/softserver.toml +1 -1
- flock/themes/solarized-darcula.toml +1 -1
- flock/themes/square.toml +1 -1
- flock/themes/sugarplum.toml +1 -1
- flock/themes/thayer-bright.toml +1 -1
- flock/themes/tokyonight.toml +1 -1
- flock/themes/tomorrow.toml +1 -1
- flock/themes/ubuntu.toml +1 -1
- flock/themes/ultradark.toml +1 -1
- flock/themes/ultraviolent.toml +1 -1
- flock/themes/unikitty.toml +1 -1
- flock/themes/urple.toml +1 -1
- flock/themes/vesper.toml +1 -1
- flock/themes/vimbones.toml +1 -1
- flock/themes/wildcherry.toml +1 -1
- flock/themes/wilmersdorf.toml +1 -1
- flock/themes/wryan.toml +1 -1
- flock/themes/xcodedarkhc.toml +1 -1
- flock/themes/xcodelight.toml +1 -1
- flock/themes/zenbones-light.toml +1 -1
- flock/themes/zenwritten-dark.toml +1 -1
- flock/utilities.py +301 -0
- flock/{components/utility → utility}/output_utility_component.py +68 -53
- flock/visibility.py +107 -0
- flock_core-0.5.0b51.dist-info/METADATA +747 -0
- flock_core-0.5.0b51.dist-info/RECORD +508 -0
- flock_core-0.5.0b51.dist-info/entry_points.txt +2 -0
- {flock_core-0.5.0b28.dist-info → flock_core-0.5.0b51.dist-info}/licenses/LICENSE +1 -1
- flock/adapter/__init__.py +0 -14
- flock/adapter/azure_adapter.py +0 -68
- flock/adapter/chroma_adapter.py +0 -73
- flock/adapter/faiss_adapter.py +0 -97
- flock/adapter/pinecone_adapter.py +0 -51
- flock/adapter/vector_base.py +0 -47
- flock/cli/assets/release_notes.md +0 -140
- flock/cli/config.py +0 -8
- flock/cli/constants.py +0 -36
- flock/cli/create_agent.py +0 -1
- flock/cli/create_flock.py +0 -280
- flock/cli/execute_flock.py +0 -620
- flock/cli/load_agent.py +0 -1
- flock/cli/load_examples.py +0 -1
- flock/cli/load_flock.py +0 -192
- flock/cli/load_release_notes.py +0 -20
- flock/cli/loaded_flock_cli.py +0 -254
- flock/cli/manage_agents.py +0 -459
- flock/cli/registry_management.py +0 -889
- flock/cli/runner.py +0 -41
- flock/cli/settings.py +0 -857
- flock/cli/utils.py +0 -135
- flock/cli/view_results.py +0 -29
- flock/cli/yaml_editor.py +0 -396
- flock/components/__init__.py +0 -30
- flock/components/evaluation/__init__.py +0 -9
- flock/components/evaluation/declarative_evaluation_component.py +0 -606
- flock/components/routing/__init__.py +0 -15
- flock/components/routing/conditional_routing_component.py +0 -494
- flock/components/routing/default_routing_component.py +0 -103
- flock/components/routing/llm_routing_component.py +0 -206
- flock/components/utility/__init__.py +0 -22
- flock/components/utility/example_utility_component.py +0 -250
- flock/components/utility/feedback_utility_component.py +0 -206
- flock/components/utility/memory_utility_component.py +0 -550
- flock/components/utility/metrics_utility_component.py +0 -700
- flock/config.py +0 -61
- flock/core/__init__.py +0 -110
- flock/core/agent/__init__.py +0 -16
- flock/core/agent/default_agent.py +0 -216
- flock/core/agent/flock_agent_components.py +0 -104
- flock/core/agent/flock_agent_execution.py +0 -101
- flock/core/agent/flock_agent_integration.py +0 -260
- flock/core/agent/flock_agent_lifecycle.py +0 -186
- flock/core/agent/flock_agent_serialization.py +0 -381
- flock/core/api/__init__.py +0 -10
- flock/core/api/custom_endpoint.py +0 -45
- flock/core/api/endpoints.py +0 -254
- flock/core/api/main.py +0 -162
- flock/core/api/models.py +0 -97
- flock/core/api/run_store.py +0 -224
- flock/core/api/runner.py +0 -44
- flock/core/api/service.py +0 -214
- flock/core/component/__init__.py +0 -15
- flock/core/component/agent_component_base.py +0 -309
- flock/core/component/evaluation_component.py +0 -62
- flock/core/component/routing_component.py +0 -74
- flock/core/component/utility_component.py +0 -69
- flock/core/config/flock_agent_config.py +0 -58
- flock/core/config/scheduled_agent_config.py +0 -40
- flock/core/context/context.py +0 -213
- flock/core/context/context_manager.py +0 -37
- flock/core/context/context_vars.py +0 -10
- flock/core/evaluation/utils.py +0 -396
- flock/core/execution/batch_executor.py +0 -369
- flock/core/execution/evaluation_executor.py +0 -438
- flock/core/execution/local_executor.py +0 -31
- flock/core/execution/opik_executor.py +0 -103
- flock/core/execution/temporal_executor.py +0 -164
- flock/core/flock.py +0 -634
- flock/core/flock_agent.py +0 -336
- flock/core/flock_factory.py +0 -613
- flock/core/flock_scheduler.py +0 -166
- flock/core/flock_server_manager.py +0 -136
- flock/core/interpreter/python_interpreter.py +0 -689
- flock/core/mcp/__init__.py +0 -1
- flock/core/mcp/flock_mcp_server.py +0 -680
- flock/core/mcp/mcp_client_manager.py +0 -201
- flock/core/mcp/types/__init__.py +0 -1
- flock/core/mixin/dspy_integration.py +0 -403
- flock/core/mixin/prompt_parser.py +0 -125
- flock/core/orchestration/__init__.py +0 -15
- flock/core/orchestration/flock_batch_processor.py +0 -94
- flock/core/orchestration/flock_evaluator.py +0 -113
- flock/core/orchestration/flock_execution.py +0 -295
- flock/core/orchestration/flock_initialization.py +0 -149
- flock/core/orchestration/flock_server_manager.py +0 -67
- flock/core/orchestration/flock_web_server.py +0 -117
- flock/core/registry/__init__.py +0 -45
- flock/core/registry/agent_registry.py +0 -69
- flock/core/registry/callable_registry.py +0 -139
- flock/core/registry/component_discovery.py +0 -142
- flock/core/registry/component_registry.py +0 -64
- flock/core/registry/config_mapping.py +0 -64
- flock/core/registry/decorators.py +0 -137
- flock/core/registry/registry_hub.py +0 -205
- flock/core/registry/server_registry.py +0 -57
- flock/core/registry/type_registry.py +0 -86
- flock/core/serialization/__init__.py +0 -13
- flock/core/serialization/callable_registry.py +0 -52
- flock/core/serialization/flock_serializer.py +0 -832
- flock/core/serialization/json_encoder.py +0 -41
- flock/core/serialization/secure_serializer.py +0 -175
- flock/core/serialization/serializable.py +0 -342
- flock/core/serialization/serialization_utils.py +0 -412
- flock/core/util/file_path_utils.py +0 -223
- flock/core/util/hydrator.py +0 -309
- flock/core/util/input_resolver.py +0 -164
- flock/core/util/loader.py +0 -59
- flock/core/util/splitter.py +0 -219
- flock/di.py +0 -27
- flock/platform/docker_tools.py +0 -49
- flock/platform/jaeger_install.py +0 -86
- flock/webapp/__init__.py +0 -1
- flock/webapp/app/__init__.py +0 -0
- flock/webapp/app/api/__init__.py +0 -0
- flock/webapp/app/api/agent_management.py +0 -241
- flock/webapp/app/api/execution.py +0 -709
- flock/webapp/app/api/flock_management.py +0 -129
- flock/webapp/app/api/registry_viewer.py +0 -30
- flock/webapp/app/chat.py +0 -665
- flock/webapp/app/config.py +0 -104
- flock/webapp/app/dependencies.py +0 -117
- flock/webapp/app/main.py +0 -1070
- flock/webapp/app/middleware.py +0 -113
- flock/webapp/app/models_ui.py +0 -7
- flock/webapp/app/services/__init__.py +0 -0
- flock/webapp/app/services/feedback_file_service.py +0 -363
- flock/webapp/app/services/flock_service.py +0 -337
- flock/webapp/app/services/sharing_models.py +0 -81
- flock/webapp/app/services/sharing_store.py +0 -762
- flock/webapp/app/templates/theme_mapper.html +0 -326
- flock/webapp/app/theme_mapper.py +0 -812
- flock/webapp/app/utils.py +0 -85
- flock/webapp/run.py +0 -215
- flock/webapp/static/css/chat.css +0 -301
- flock/webapp/static/css/components.css +0 -167
- flock/webapp/static/css/header.css +0 -39
- flock/webapp/static/css/layout.css +0 -46
- flock/webapp/static/css/sidebar.css +0 -127
- flock/webapp/static/css/two-pane.css +0 -48
- flock/webapp/templates/base.html +0 -200
- flock/webapp/templates/chat.html +0 -152
- flock/webapp/templates/chat_settings.html +0 -19
- flock/webapp/templates/flock_editor.html +0 -16
- flock/webapp/templates/index.html +0 -12
- flock/webapp/templates/partials/_agent_detail_form.html +0 -93
- flock/webapp/templates/partials/_agent_list.html +0 -18
- flock/webapp/templates/partials/_agent_manager_view.html +0 -51
- flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
- flock/webapp/templates/partials/_chat_container.html +0 -15
- flock/webapp/templates/partials/_chat_messages.html +0 -57
- flock/webapp/templates/partials/_chat_settings_form.html +0 -85
- flock/webapp/templates/partials/_create_flock_form.html +0 -50
- flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
- flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
- flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
- flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
- flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
- flock/webapp/templates/partials/_env_vars_table.html +0 -23
- flock/webapp/templates/partials/_execution_form.html +0 -118
- flock/webapp/templates/partials/_execution_view_container.html +0 -28
- flock/webapp/templates/partials/_flock_file_list.html +0 -23
- flock/webapp/templates/partials/_flock_properties_form.html +0 -52
- flock/webapp/templates/partials/_flock_upload_form.html +0 -16
- flock/webapp/templates/partials/_header_flock_status.html +0 -5
- flock/webapp/templates/partials/_load_manager_view.html +0 -49
- flock/webapp/templates/partials/_registry_table.html +0 -25
- flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
- flock/webapp/templates/partials/_results_display.html +0 -78
- flock/webapp/templates/partials/_settings_env_content.html +0 -9
- flock/webapp/templates/partials/_settings_theme_content.html +0 -14
- flock/webapp/templates/partials/_settings_view.html +0 -36
- flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
- flock/webapp/templates/partials/_share_link_snippet.html +0 -35
- flock/webapp/templates/partials/_sidebar.html +0 -74
- flock/webapp/templates/partials/_streaming_results_container.html +0 -195
- flock/webapp/templates/partials/_structured_data_view.html +0 -40
- flock/webapp/templates/partials/_theme_preview.html +0 -36
- flock/webapp/templates/registry_viewer.html +0 -84
- flock/webapp/templates/shared_run_page.html +0 -140
- flock/workflow/__init__.py +0 -0
- flock/workflow/activities.py +0 -196
- flock/workflow/agent_activities.py +0 -24
- flock/workflow/agent_execution_activity.py +0 -202
- flock/workflow/flock_workflow.py +0 -214
- flock/workflow/temporal_config.py +0 -96
- flock/workflow/temporal_setup.py +0 -68
- flock_core-0.5.0b28.dist-info/METADATA +0 -274
- flock_core-0.5.0b28.dist-info/RECORD +0 -561
- flock_core-0.5.0b28.dist-info/entry_points.txt +0 -2
- /flock/{core/logging → logging}/formatters/themes.py +0 -0
- /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
- /flock/{core/mcp → mcp}/util/__init__.py +0 -0
- {flock_core-0.5.0b28.dist-info → flock_core-0.5.0b51.dist-info}/WHEEL +0 -0
|
@@ -7,19 +7,19 @@ from opentelemetry import trace
|
|
|
7
7
|
from opentelemetry.sdk.resources import Resource
|
|
8
8
|
from opentelemetry.sdk.trace import TracerProvider
|
|
9
9
|
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
|
|
10
|
-
from temporalio import workflow
|
|
11
10
|
|
|
12
|
-
from
|
|
11
|
+
# from temporalio import workflow
|
|
12
|
+
from flock.logging.span_middleware.baggage_span_processor import (
|
|
13
13
|
BaggageAttributeSpanProcessor,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
with workflow.unsafe.imports_passed_through():
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
# with workflow.unsafe.imports_passed_through():
|
|
17
|
+
from flock.logging.telemetry_exporter.file_exporter import (
|
|
18
|
+
FileSpanExporter,
|
|
19
|
+
)
|
|
20
|
+
from flock.logging.telemetry_exporter.sqlite_exporter import (
|
|
21
|
+
SqliteTelemetryExporter,
|
|
22
|
+
)
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class TelemetryConfig:
|
|
@@ -73,7 +73,12 @@ class TelemetryConfig:
|
|
|
73
73
|
|
|
74
74
|
def _should_setup(self) -> bool:
|
|
75
75
|
# Respect explicit disable flag for tests and minimal setups
|
|
76
|
-
if os.environ.get("FLOCK_DISABLE_TELEMETRY_AUTOSETUP", "").lower() in {
|
|
76
|
+
if os.environ.get("FLOCK_DISABLE_TELEMETRY_AUTOSETUP", "").lower() in {
|
|
77
|
+
"1",
|
|
78
|
+
"true",
|
|
79
|
+
"yes",
|
|
80
|
+
"on",
|
|
81
|
+
}:
|
|
77
82
|
return False
|
|
78
83
|
try:
|
|
79
84
|
# If a provider is already installed (typically by user/tests), don't override it
|
|
@@ -122,13 +127,10 @@ class TelemetryConfig:
|
|
|
122
127
|
collector_endpoint=self.jaeger_endpoint,
|
|
123
128
|
)
|
|
124
129
|
else:
|
|
125
|
-
raise ValueError(
|
|
126
|
-
"Invalid JAEGER_TRANSPORT specified. Use 'grpc' or 'http'."
|
|
127
|
-
)
|
|
130
|
+
raise ValueError("Invalid JAEGER_TRANSPORT specified. Use 'grpc' or 'http'.")
|
|
128
131
|
|
|
129
132
|
span_processors.append(SimpleSpanProcessor(jaeger_exporter))
|
|
130
133
|
|
|
131
|
-
|
|
132
134
|
if self.enable_otlp:
|
|
133
135
|
if self.otlp_protocol == "grpc":
|
|
134
136
|
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
|
|
@@ -156,16 +158,12 @@ class TelemetryConfig:
|
|
|
156
158
|
|
|
157
159
|
# If a file path is provided, add the custom file exporter.
|
|
158
160
|
if self.file_export_name and self.enable_file:
|
|
159
|
-
file_exporter = FileSpanExporter(
|
|
160
|
-
self.local_logging_dir, self.file_export_name
|
|
161
|
-
)
|
|
161
|
+
file_exporter = FileSpanExporter(self.local_logging_dir, self.file_export_name)
|
|
162
162
|
span_processors.append(SimpleSpanProcessor(file_exporter))
|
|
163
163
|
|
|
164
164
|
# If a SQLite database path is provided, ensure the DB exists and add the SQLite exporter.
|
|
165
165
|
if self.sqlite_db_name and self.enable_sql:
|
|
166
|
-
sqlite_exporter = SqliteTelemetryExporter(
|
|
167
|
-
self.local_logging_dir, self.sqlite_db_name
|
|
168
|
-
)
|
|
166
|
+
sqlite_exporter = SqliteTelemetryExporter(self.local_logging_dir, self.sqlite_db_name)
|
|
169
167
|
span_processors.append(SimpleSpanProcessor(sqlite_exporter))
|
|
170
168
|
|
|
171
169
|
# Register all span processors with the provider.
|
|
@@ -190,10 +188,6 @@ class TelemetryConfig:
|
|
|
190
188
|
return
|
|
191
189
|
|
|
192
190
|
# Use OpenTelemetry to record the exception
|
|
193
|
-
with self.global_tracer.start_as_current_span(
|
|
194
|
-
"UnhandledException"
|
|
195
|
-
) as span:
|
|
191
|
+
with self.global_tracer.start_as_current_span("UnhandledException") as span:
|
|
196
192
|
span.record_exception(exc_value)
|
|
197
|
-
span.set_status(
|
|
198
|
-
trace.Status(trace.StatusCode.ERROR, str(exc_value))
|
|
199
|
-
)
|
|
193
|
+
span.set_status(trace.Status(trace.StatusCode.ERROR, str(exc_value)))
|
|
@@ -25,14 +25,14 @@ class TelemetryExporter(SpanExporter, ABC):
|
|
|
25
25
|
self.shutdown()
|
|
26
26
|
|
|
27
27
|
@abstractmethod
|
|
28
|
-
def export(self, spans) -> SpanExportResult
|
|
28
|
+
def export(self, spans) -> SpanExportResult: # type: ignore[override]
|
|
29
29
|
"""Export spans to the configured backend.
|
|
30
30
|
|
|
31
31
|
To be implemented by subclasses.
|
|
32
|
+
May return SUCCESS, FAILURE, or None (handled by _export wrapper).
|
|
32
33
|
"""
|
|
33
34
|
raise NotImplementedError("Subclasses must implement the export method")
|
|
34
35
|
|
|
35
36
|
@abstractmethod
|
|
36
37
|
def shutdown(self):
|
|
37
38
|
"""Cleanup resources, if any. Optional for subclasses."""
|
|
38
|
-
pass
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
|
|
5
|
+
# with workflow.unsafe.imports_passed_through():
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
5
8
|
from opentelemetry.sdk.trace.export import SpanExportResult
|
|
6
9
|
from opentelemetry.trace import Status, StatusCode
|
|
7
|
-
from temporalio import workflow
|
|
8
10
|
|
|
9
|
-
from
|
|
11
|
+
# from temporalio import workflow
|
|
12
|
+
from flock.logging.telemetry_exporter.base_exporter import (
|
|
10
13
|
TelemetryExporter,
|
|
11
14
|
)
|
|
12
15
|
|
|
13
|
-
with workflow.unsafe.imports_passed_through():
|
|
14
|
-
from pathlib import Path
|
|
15
|
-
|
|
16
16
|
|
|
17
17
|
class FileSpanExporter(TelemetryExporter):
|
|
18
18
|
"""A simple exporter that writes span data as JSON lines into a file."""
|
|
@@ -63,10 +63,7 @@ class FileSpanExporter(TelemetryExporter):
|
|
|
63
63
|
}
|
|
64
64
|
for link in span.links
|
|
65
65
|
],
|
|
66
|
-
"resource":
|
|
67
|
-
attr_key: attr_value
|
|
68
|
-
for attr_key, attr_value in span.resource.attributes.items()
|
|
69
|
-
},
|
|
66
|
+
"resource": dict(span.resource.attributes.items()),
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
def export(self, spans):
|
|
@@ -7,7 +7,7 @@ from typing import Any
|
|
|
7
7
|
|
|
8
8
|
from opentelemetry.sdk.trace.export import SpanExportResult
|
|
9
9
|
|
|
10
|
-
from flock.
|
|
10
|
+
from flock.logging.telemetry_exporter.base_exporter import (
|
|
11
11
|
TelemetryExporter,
|
|
12
12
|
)
|
|
13
13
|
|
|
@@ -77,7 +77,7 @@ class SqliteTelemetryExporter(TelemetryExporter):
|
|
|
77
77
|
trace_id = format(span.context.trace_id, "032x")
|
|
78
78
|
cursor.execute(
|
|
79
79
|
"""
|
|
80
|
-
INSERT OR REPLACE INTO spans
|
|
80
|
+
INSERT OR REPLACE INTO spans
|
|
81
81
|
(id, name, trace_id, span_id, start_time, end_time, attributes, status)
|
|
82
82
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
83
83
|
""",
|
|
@@ -100,4 +100,3 @@ class SqliteTelemetryExporter(TelemetryExporter):
|
|
|
100
100
|
|
|
101
101
|
def shutdown(self) -> None:
|
|
102
102
|
"""Cleanup resources."""
|
|
103
|
-
pass
|
|
@@ -5,7 +5,8 @@ import inspect
|
|
|
5
5
|
|
|
6
6
|
from opentelemetry import trace
|
|
7
7
|
|
|
8
|
-
from flock.
|
|
8
|
+
from flock.logging.logging import get_logger
|
|
9
|
+
|
|
9
10
|
|
|
10
11
|
logger = get_logger("tools")
|
|
11
12
|
tracer = trace.get_tracer(__name__)
|
|
@@ -27,33 +28,28 @@ def traced_and_logged(func):
|
|
|
27
28
|
try:
|
|
28
29
|
result = await func(*args, **kwargs)
|
|
29
30
|
span.set_attribute("result", str(result))
|
|
30
|
-
logger.debug(
|
|
31
|
-
f"{func.__name__} executed successfully", result=result
|
|
32
|
-
)
|
|
31
|
+
logger.debug(f"{func.__name__} executed successfully", result=result)
|
|
33
32
|
return result
|
|
34
33
|
except Exception as e:
|
|
35
|
-
logger.
|
|
34
|
+
logger.exception(f"Error in {func.__name__}", error=str(e))
|
|
36
35
|
span.record_exception(e)
|
|
37
36
|
raise
|
|
38
37
|
|
|
39
38
|
return async_wrapper
|
|
40
|
-
else:
|
|
41
|
-
|
|
42
|
-
@functools.wraps(func)
|
|
43
|
-
def wrapper(*args, **kwargs):
|
|
44
|
-
with tracer.start_as_current_span(func.__name__) as span:
|
|
45
|
-
span.set_attribute("args", str(args))
|
|
46
|
-
span.set_attribute("kwargs", str(kwargs))
|
|
47
|
-
try:
|
|
48
|
-
result = func(*args, **kwargs)
|
|
49
|
-
span.set_attribute("result", str(result))
|
|
50
|
-
logger.debug(
|
|
51
|
-
f"{func.__name__} executed successfully", result=result
|
|
52
|
-
)
|
|
53
|
-
return result
|
|
54
|
-
except Exception as e:
|
|
55
|
-
logger.error(f"Error in {func.__name__}", error=str(e))
|
|
56
|
-
span.record_exception(e)
|
|
57
|
-
raise
|
|
58
39
|
|
|
59
|
-
|
|
40
|
+
@functools.wraps(func)
|
|
41
|
+
def wrapper(*args, **kwargs):
|
|
42
|
+
with tracer.start_as_current_span(func.__name__) as span:
|
|
43
|
+
span.set_attribute("args", str(args))
|
|
44
|
+
span.set_attribute("kwargs", str(kwargs))
|
|
45
|
+
try:
|
|
46
|
+
result = func(*args, **kwargs)
|
|
47
|
+
span.set_attribute("result", str(result))
|
|
48
|
+
logger.debug(f"{func.__name__} executed successfully", result=result)
|
|
49
|
+
return result
|
|
50
|
+
except Exception as e:
|
|
51
|
+
logger.exception(f"Error in {func.__name__}", error=str(e))
|
|
52
|
+
span.record_exception(e)
|
|
53
|
+
raise
|
|
54
|
+
|
|
55
|
+
return wrapper
|
flock/mcp/__init__.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""MCP (Model Context Protocol) Integration for Flock-Flow.
|
|
2
|
+
|
|
3
|
+
This package provides integration with MCP servers, enabling agents to
|
|
4
|
+
dynamically discover and use external tools following the Model Context Protocol.
|
|
5
|
+
|
|
6
|
+
Architecture Decisions:
|
|
7
|
+
- AD001: Two-Level Architecture (orchestrator + agent)
|
|
8
|
+
- AD003: Tool Namespacing ({server}__{tool})
|
|
9
|
+
- AD004: Per-(agent_id, run_id) Connection Isolation
|
|
10
|
+
- AD005: Lazy Connection Establishment
|
|
11
|
+
- AD007: Graceful Degradation on MCP Failures
|
|
12
|
+
|
|
13
|
+
Key Components:
|
|
14
|
+
- FlockMCPConfiguration: Server configuration
|
|
15
|
+
- FlockMCPClient: Individual server connection
|
|
16
|
+
- FlockMCPClientManager: Connection pooling and lifecycle
|
|
17
|
+
- FlockMCPTool: MCP tool wrapper compatible with DSPy
|
|
18
|
+
|
|
19
|
+
Example Usage:
|
|
20
|
+
```python
|
|
21
|
+
from flock import Flock
|
|
22
|
+
from flock.mcp import StdioServerParameters
|
|
23
|
+
|
|
24
|
+
# Create orchestrator
|
|
25
|
+
orchestrator = Flock()
|
|
26
|
+
|
|
27
|
+
# Register MCP server
|
|
28
|
+
orchestrator.add_mcp(
|
|
29
|
+
name="filesystem",
|
|
30
|
+
connection_params=StdioServerParameters(
|
|
31
|
+
command="uvx",
|
|
32
|
+
args=["mcp-server-filesystem", "/tmp"]
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# Build agent with MCP access
|
|
37
|
+
agent = (
|
|
38
|
+
orchestrator.agent("file_agent")
|
|
39
|
+
.with_mcps(["filesystem"])
|
|
40
|
+
.build()
|
|
41
|
+
)
|
|
42
|
+
```
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
from flock.mcp.client import FlockMCPClient
|
|
46
|
+
from flock.mcp.config import (
|
|
47
|
+
FlockMCPCachingConfiguration,
|
|
48
|
+
FlockMCPCallbackConfiguration,
|
|
49
|
+
FlockMCPConfiguration,
|
|
50
|
+
FlockMCPConnectionConfiguration,
|
|
51
|
+
FlockMCPFeatureConfiguration,
|
|
52
|
+
)
|
|
53
|
+
from flock.mcp.manager import FlockMCPClientManager
|
|
54
|
+
from flock.mcp.tool import FlockMCPTool
|
|
55
|
+
from flock.mcp.types import (
|
|
56
|
+
FlockListRootsMCPCallback,
|
|
57
|
+
FlockLoggingMCPCallback,
|
|
58
|
+
FlockMessageHandlerMCPCallback,
|
|
59
|
+
FlockSamplingMCPCallback,
|
|
60
|
+
MCPRoot,
|
|
61
|
+
ServerParameters,
|
|
62
|
+
SseServerParameters,
|
|
63
|
+
StdioServerParameters,
|
|
64
|
+
StreamableHttpServerParameters,
|
|
65
|
+
WebsocketServerParameters,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
__all__ = [
|
|
70
|
+
"FlockListRootsMCPCallback",
|
|
71
|
+
"FlockLoggingMCPCallback",
|
|
72
|
+
"FlockMCPCachingConfiguration",
|
|
73
|
+
"FlockMCPCallbackConfiguration",
|
|
74
|
+
# Client and Manager
|
|
75
|
+
"FlockMCPClient",
|
|
76
|
+
"FlockMCPClientManager",
|
|
77
|
+
# Configuration
|
|
78
|
+
"FlockMCPConfiguration",
|
|
79
|
+
"FlockMCPConnectionConfiguration",
|
|
80
|
+
"FlockMCPFeatureConfiguration",
|
|
81
|
+
"FlockMCPTool",
|
|
82
|
+
"FlockMessageHandlerMCPCallback",
|
|
83
|
+
"FlockSamplingMCPCallback",
|
|
84
|
+
"MCPRoot",
|
|
85
|
+
# Types
|
|
86
|
+
"ServerParameters",
|
|
87
|
+
"SseServerParameters",
|
|
88
|
+
"StdioServerParameters",
|
|
89
|
+
"StreamableHttpServerParameters",
|
|
90
|
+
"WebsocketServerParameters",
|
|
91
|
+
]
|