flock-core 0.4.519__py3-none-any.whl → 0.5.0b1__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/cli/manage_agents.py +3 -3
- flock/components/__init__.py +28 -0
- flock/components/evaluation/__init__.py +9 -0
- flock/components/evaluation/declarative_evaluation_component.py +198 -0
- flock/components/routing/__init__.py +15 -0
- flock/{routers/conditional/conditional_router.py → components/routing/conditional_routing_component.py} +60 -49
- flock/components/routing/default_routing_component.py +103 -0
- flock/components/routing/llm_routing_component.py +208 -0
- flock/components/utility/__init__.py +15 -0
- flock/{modules/enterprise_memory/enterprise_memory_module.py → components/utility/memory_utility_component.py} +195 -173
- flock/{modules/performance/metrics_module.py → components/utility/metrics_utility_component.py} +101 -86
- flock/{modules/output/output_module.py → components/utility/output_utility_component.py} +49 -49
- flock/core/__init__.py +2 -8
- flock/core/agent/__init__.py +16 -0
- flock/core/agent/flock_agent_components.py +104 -0
- flock/core/agent/flock_agent_execution.py +101 -0
- flock/core/agent/flock_agent_integration.py +147 -0
- flock/core/agent/flock_agent_lifecycle.py +177 -0
- flock/core/agent/flock_agent_serialization.py +378 -0
- flock/core/component/__init__.py +15 -0
- flock/core/{flock_module.py → component/agent_component_base.py} +136 -35
- flock/core/component/evaluation_component_base.py +56 -0
- flock/core/component/routing_component_base.py +75 -0
- flock/core/component/utility_component_base.py +69 -0
- flock/core/config/flock_agent_config.py +49 -2
- flock/core/evaluation/utils.py +1 -1
- flock/core/execution/evaluation_executor.py +1 -1
- flock/core/flock.py +137 -483
- flock/core/flock_agent.py +151 -1018
- flock/core/flock_factory.py +94 -73
- flock/core/{flock_registry.py → flock_registry.py.backup} +3 -17
- flock/core/logging/logging.py +1 -0
- flock/core/mcp/flock_mcp_server.py +42 -37
- flock/core/mixin/dspy_integration.py +5 -5
- flock/core/orchestration/__init__.py +18 -0
- flock/core/orchestration/flock_batch_processor.py +94 -0
- flock/core/orchestration/flock_evaluator.py +113 -0
- flock/core/orchestration/flock_execution.py +288 -0
- flock/core/orchestration/flock_initialization.py +125 -0
- flock/core/orchestration/flock_server_manager.py +65 -0
- flock/core/orchestration/flock_web_server.py +117 -0
- flock/core/registry/__init__.py +39 -0
- flock/core/registry/agent_registry.py +69 -0
- flock/core/registry/callable_registry.py +139 -0
- flock/core/registry/component_discovery.py +142 -0
- flock/core/registry/component_registry.py +64 -0
- flock/core/registry/config_mapping.py +64 -0
- flock/core/registry/decorators.py +137 -0
- flock/core/registry/registry_hub.py +202 -0
- flock/core/registry/server_registry.py +57 -0
- flock/core/registry/type_registry.py +86 -0
- flock/core/serialization/flock_serializer.py +33 -30
- flock/core/serialization/serialization_utils.py +28 -25
- flock/core/util/input_resolver.py +29 -2
- flock/platform/docker_tools.py +3 -3
- flock/tools/markdown_tools.py +1 -2
- flock/tools/text_tools.py +1 -2
- flock/webapp/app/main.py +9 -5
- flock/workflow/activities.py +59 -84
- flock/workflow/activities_unified.py +230 -0
- flock/workflow/agent_execution_activity.py +6 -6
- flock/workflow/flock_workflow.py +1 -1
- {flock_core-0.4.519.dist-info → flock_core-0.5.0b1.dist-info}/METADATA +4 -4
- {flock_core-0.4.519.dist-info → flock_core-0.5.0b1.dist-info}/RECORD +67 -68
- flock/core/flock_evaluator.py +0 -60
- flock/core/flock_router.py +0 -83
- flock/evaluators/__init__.py +0 -1
- flock/evaluators/declarative/__init__.py +0 -1
- flock/evaluators/declarative/declarative_evaluator.py +0 -194
- flock/evaluators/memory/memory_evaluator.py +0 -90
- flock/evaluators/test/test_case_evaluator.py +0 -38
- flock/evaluators/zep/zep_evaluator.py +0 -59
- flock/modules/__init__.py +0 -1
- flock/modules/assertion/__init__.py +0 -1
- flock/modules/assertion/assertion_module.py +0 -286
- flock/modules/callback/__init__.py +0 -1
- flock/modules/callback/callback_module.py +0 -91
- flock/modules/enterprise_memory/README.md +0 -99
- flock/modules/mem0/__init__.py +0 -1
- flock/modules/mem0/mem0_module.py +0 -126
- flock/modules/mem0_async/__init__.py +0 -1
- flock/modules/mem0_async/async_mem0_module.py +0 -126
- flock/modules/memory/__init__.py +0 -1
- flock/modules/memory/memory_module.py +0 -429
- flock/modules/memory/memory_parser.py +0 -125
- flock/modules/memory/memory_storage.py +0 -736
- flock/modules/output/__init__.py +0 -1
- flock/modules/performance/__init__.py +0 -1
- flock/modules/zep/__init__.py +0 -1
- flock/modules/zep/zep_module.py +0 -192
- flock/routers/__init__.py +0 -1
- flock/routers/agent/__init__.py +0 -1
- flock/routers/agent/agent_router.py +0 -236
- flock/routers/agent/handoff_agent.py +0 -58
- flock/routers/default/__init__.py +0 -1
- flock/routers/default/default_router.py +0 -80
- flock/routers/feedback/feedback_router.py +0 -114
- flock/routers/list_generator/list_generator_router.py +0 -166
- flock/routers/llm/__init__.py +0 -1
- flock/routers/llm/llm_router.py +0 -365
- {flock_core-0.4.519.dist-info → flock_core-0.5.0b1.dist-info}/WHEEL +0 -0
- {flock_core-0.4.519.dist-info → flock_core-0.5.0b1.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.519.dist-info → flock_core-0.5.0b1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"""Unified Temporal activities for running a chain of agents with the new component architecture."""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from opentelemetry import trace
|
|
6
|
+
from temporalio import activity
|
|
7
|
+
|
|
8
|
+
from flock.core.context.context import FlockContext
|
|
9
|
+
from flock.core.context.context_vars import FLOCK_CURRENT_AGENT, FLOCK_MODEL
|
|
10
|
+
from flock.core.flock_agent_unified import FlockAgentUnified
|
|
11
|
+
from flock.core.registry import get_registry
|
|
12
|
+
# HandOffRequest removed - using agent.next_agent directly
|
|
13
|
+
from flock.core.logging.logging import get_logger
|
|
14
|
+
from flock.core.util.input_resolver import resolve_inputs
|
|
15
|
+
|
|
16
|
+
logger = get_logger("activities.unified")
|
|
17
|
+
tracer = trace.get_tracer(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@activity.defn
|
|
21
|
+
async def run_agent_unified(context: FlockContext) -> dict:
|
|
22
|
+
"""Runs a chain of agents using the unified component architecture.
|
|
23
|
+
|
|
24
|
+
Key changes from original:
|
|
25
|
+
- Uses FlockAgentUnified with components list
|
|
26
|
+
- Routing decisions come from agent.next_handoff (set during evaluation)
|
|
27
|
+
- Simplified workflow - no separate routing step
|
|
28
|
+
|
|
29
|
+
The context contains state, history, and agent definitions.
|
|
30
|
+
After each agent run, its output is merged into the context.
|
|
31
|
+
"""
|
|
32
|
+
# Start a top-level span for the entire run_agent activity.
|
|
33
|
+
with tracer.start_as_current_span("run_agent_unified") as span:
|
|
34
|
+
registry = get_registry()
|
|
35
|
+
|
|
36
|
+
previous_agent_name = ""
|
|
37
|
+
if isinstance(context, dict):
|
|
38
|
+
context = FlockContext.from_dict(context)
|
|
39
|
+
current_agent_name = context.get_variable(FLOCK_CURRENT_AGENT)
|
|
40
|
+
span.set_attribute("initial.agent", current_agent_name)
|
|
41
|
+
logger.info("Starting unified agent chain", initial_agent=current_agent_name)
|
|
42
|
+
|
|
43
|
+
agent = registry.get_agent(current_agent_name)
|
|
44
|
+
if not agent:
|
|
45
|
+
logger.error("Agent not found", agent=current_agent_name)
|
|
46
|
+
span.record_exception(
|
|
47
|
+
Exception(f"Agent '{current_agent_name}' not found")
|
|
48
|
+
)
|
|
49
|
+
return {"error": f"Agent '{current_agent_name}' not found."}
|
|
50
|
+
|
|
51
|
+
# Set model if not configured
|
|
52
|
+
if agent.model is None:
|
|
53
|
+
model = context.get_variable(FLOCK_MODEL)
|
|
54
|
+
if hasattr(agent, 'evaluator') and agent.evaluator and hasattr(agent.evaluator, 'config'):
|
|
55
|
+
agent.evaluator.config.model = model
|
|
56
|
+
agent.model = model
|
|
57
|
+
|
|
58
|
+
agent.resolve_callables(context=context)
|
|
59
|
+
|
|
60
|
+
# Loop over agents in the chain.
|
|
61
|
+
while agent:
|
|
62
|
+
# Create a nested span for this iteration.
|
|
63
|
+
with tracer.start_as_current_span("agent_iteration_unified") as iter_span:
|
|
64
|
+
iter_span.set_attribute("agent.name", agent.name)
|
|
65
|
+
agent.context = context
|
|
66
|
+
|
|
67
|
+
# Resolve inputs for the agent.
|
|
68
|
+
agent_inputs = resolve_inputs(
|
|
69
|
+
agent.input, context, previous_agent_name
|
|
70
|
+
)
|
|
71
|
+
iter_span.add_event(
|
|
72
|
+
"resolved inputs", attributes={"inputs": str(agent_inputs)}
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# Execute the agent with its own span.
|
|
76
|
+
# NOTE: In unified architecture, routing happens DURING execution
|
|
77
|
+
with tracer.start_as_current_span("execute_agent_unified") as exec_span:
|
|
78
|
+
logger.info("Executing unified agent", agent=agent.name)
|
|
79
|
+
try:
|
|
80
|
+
# This will set agent.next_handoff during evaluation
|
|
81
|
+
result = await agent.run_async(agent_inputs)
|
|
82
|
+
exec_span.set_attribute("result", str(result))
|
|
83
|
+
logger.debug(
|
|
84
|
+
"Unified agent execution completed", agent=agent.name
|
|
85
|
+
)
|
|
86
|
+
except Exception as e:
|
|
87
|
+
logger.error(
|
|
88
|
+
"Unified agent execution failed",
|
|
89
|
+
agent=agent.name,
|
|
90
|
+
error=str(e),
|
|
91
|
+
)
|
|
92
|
+
exec_span.record_exception(e)
|
|
93
|
+
raise
|
|
94
|
+
|
|
95
|
+
# Get routing decision from agent.next_handoff (set during evaluation)
|
|
96
|
+
handoff_data = agent.next_handoff
|
|
97
|
+
|
|
98
|
+
if handoff_data is None:
|
|
99
|
+
# No routing component or router decided to end workflow
|
|
100
|
+
logger.info(
|
|
101
|
+
"No handoff data found, completing chain",
|
|
102
|
+
agent=agent.name,
|
|
103
|
+
)
|
|
104
|
+
context.record(
|
|
105
|
+
agent.name,
|
|
106
|
+
result,
|
|
107
|
+
timestamp=datetime.now().isoformat(),
|
|
108
|
+
hand_off=None,
|
|
109
|
+
called_from=previous_agent_name,
|
|
110
|
+
)
|
|
111
|
+
iter_span.add_event("chain completed - no handoff")
|
|
112
|
+
return result
|
|
113
|
+
|
|
114
|
+
# Process the handoff data
|
|
115
|
+
logger.info(
|
|
116
|
+
f"Processing handoff to: {handoff_data.next_agent}",
|
|
117
|
+
agent=agent.name,
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
# Handle callable handoff functions (if still needed for backward compatibility)
|
|
121
|
+
if callable(handoff_data):
|
|
122
|
+
logger.debug("Executing handoff function", agent=agent.name)
|
|
123
|
+
try:
|
|
124
|
+
handoff_data = handoff_data(context, result)
|
|
125
|
+
if isinstance(handoff_data.next_agent, FlockAgentUnified):
|
|
126
|
+
handoff_data.next_agent = handoff_data.next_agent.name
|
|
127
|
+
except Exception as e:
|
|
128
|
+
logger.error(
|
|
129
|
+
"Handoff function error",
|
|
130
|
+
agent=agent.name,
|
|
131
|
+
error=str(e),
|
|
132
|
+
)
|
|
133
|
+
iter_span.record_exception(e)
|
|
134
|
+
return {"error": f"Handoff function error: {e}"}
|
|
135
|
+
elif isinstance(handoff_data.next_agent, FlockAgentUnified):
|
|
136
|
+
handoff_data.next_agent = handoff_data.next_agent.name
|
|
137
|
+
|
|
138
|
+
# Check if we should end the workflow
|
|
139
|
+
if not handoff_data.next_agent:
|
|
140
|
+
logger.info(
|
|
141
|
+
"Router found no suitable next agent",
|
|
142
|
+
agent=agent.name,
|
|
143
|
+
)
|
|
144
|
+
context.record(
|
|
145
|
+
agent.name,
|
|
146
|
+
result,
|
|
147
|
+
timestamp=datetime.now().isoformat(),
|
|
148
|
+
hand_off=None,
|
|
149
|
+
called_from=previous_agent_name,
|
|
150
|
+
)
|
|
151
|
+
logger.info("Completing chain", agent=agent.name)
|
|
152
|
+
iter_span.add_event("chain completed - no next agent")
|
|
153
|
+
return result
|
|
154
|
+
|
|
155
|
+
# Record the agent run in the context.
|
|
156
|
+
context.record(
|
|
157
|
+
agent.name,
|
|
158
|
+
result,
|
|
159
|
+
timestamp=datetime.now().isoformat(),
|
|
160
|
+
hand_off=handoff_data.model_dump(),
|
|
161
|
+
called_from=previous_agent_name,
|
|
162
|
+
)
|
|
163
|
+
previous_agent_name = agent.name
|
|
164
|
+
previous_agent_output = agent.output
|
|
165
|
+
|
|
166
|
+
if handoff_data.override_context:
|
|
167
|
+
context.update(handoff_data.override_context)
|
|
168
|
+
|
|
169
|
+
# Prepare the next agent.
|
|
170
|
+
try:
|
|
171
|
+
agent = registry.get_agent(handoff_data.next_agent)
|
|
172
|
+
if not agent:
|
|
173
|
+
logger.error(
|
|
174
|
+
"Next agent not found",
|
|
175
|
+
agent=handoff_data.next_agent,
|
|
176
|
+
)
|
|
177
|
+
iter_span.record_exception(
|
|
178
|
+
Exception(
|
|
179
|
+
f"Next agent '{handoff_data.next_agent}' not found"
|
|
180
|
+
)
|
|
181
|
+
)
|
|
182
|
+
return {
|
|
183
|
+
"error": f"Next agent '{handoff_data.next_agent}' not found."
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
# Apply handoff modifications to the next agent
|
|
187
|
+
if handoff_data.output_to_input_merge_strategy == "add":
|
|
188
|
+
agent.input = previous_agent_output + ", " + agent.input
|
|
189
|
+
|
|
190
|
+
if handoff_data.add_input_fields:
|
|
191
|
+
for field in handoff_data.add_input_fields:
|
|
192
|
+
agent.input = field + ", " + agent.input
|
|
193
|
+
|
|
194
|
+
if handoff_data.add_output_fields:
|
|
195
|
+
for field in handoff_data.add_output_fields:
|
|
196
|
+
agent.output = field + ", " + agent.output
|
|
197
|
+
|
|
198
|
+
if handoff_data.add_description:
|
|
199
|
+
if agent.description:
|
|
200
|
+
agent.description = (
|
|
201
|
+
agent.description
|
|
202
|
+
+ "\n"
|
|
203
|
+
+ handoff_data.add_description
|
|
204
|
+
)
|
|
205
|
+
else:
|
|
206
|
+
agent.description = handoff_data.add_description
|
|
207
|
+
|
|
208
|
+
agent.resolve_callables(context=context)
|
|
209
|
+
context.set_variable(FLOCK_CURRENT_AGENT, agent.name)
|
|
210
|
+
|
|
211
|
+
logger.info("Handing off to next agent", next=agent.name)
|
|
212
|
+
iter_span.set_attribute("next.agent", agent.name)
|
|
213
|
+
|
|
214
|
+
except Exception as e:
|
|
215
|
+
logger.error("Error during handoff", error=str(e))
|
|
216
|
+
iter_span.record_exception(e)
|
|
217
|
+
return {"error": f"Error during handoff: {e}"}
|
|
218
|
+
|
|
219
|
+
# If the loop exits unexpectedly, return the initial input.
|
|
220
|
+
return context.get_variable("init_input")
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
# Backward compatibility wrapper
|
|
224
|
+
@activity.defn
|
|
225
|
+
async def run_agent(context: FlockContext) -> dict:
|
|
226
|
+
"""Backward compatibility wrapper for run_agent_unified."""
|
|
227
|
+
logger.warning(
|
|
228
|
+
"Using backward compatibility wrapper. Consider migrating to run_agent_unified."
|
|
229
|
+
)
|
|
230
|
+
return await run_agent_unified(context)
|
|
@@ -12,8 +12,8 @@ from temporalio import activity
|
|
|
12
12
|
from flock.core.context.context import FlockContext
|
|
13
13
|
from flock.core.context.context_vars import FLOCK_MODEL
|
|
14
14
|
from flock.core.flock_agent import FlockAgent # Import concrete class if needed
|
|
15
|
-
from flock.core.
|
|
16
|
-
|
|
15
|
+
from flock.core.registry import get_registry
|
|
16
|
+
# HandOffRequest removed - using agent.next_agent directly
|
|
17
17
|
from flock.core.logging.logging import get_logger
|
|
18
18
|
from flock.core.util.input_resolver import resolve_inputs
|
|
19
19
|
|
|
@@ -133,22 +133,22 @@ async def determine_next_agent(
|
|
|
133
133
|
f"Agent '{current_agent_name}' not found for routing."
|
|
134
134
|
)
|
|
135
135
|
|
|
136
|
-
if not agent.
|
|
136
|
+
if not agent.router:
|
|
137
137
|
logger.info(
|
|
138
|
-
"No
|
|
138
|
+
"No router defined for agent", agent=current_agent_name
|
|
139
139
|
)
|
|
140
140
|
span.add_event("no_router")
|
|
141
141
|
return None # Indicate no handoff
|
|
142
142
|
|
|
143
143
|
logger.debug(
|
|
144
|
-
f"Using router {agent.
|
|
144
|
+
f"Using router {agent.router.__class__.__name__}",
|
|
145
145
|
agent=agent.name,
|
|
146
146
|
)
|
|
147
147
|
try:
|
|
148
148
|
# Execute the routing logic
|
|
149
149
|
handoff_data: (
|
|
150
150
|
HandOffRequest | Callable
|
|
151
|
-
) = await agent.
|
|
151
|
+
) = await agent.router.route(agent, result, context)
|
|
152
152
|
|
|
153
153
|
# Handle callable handoff functions - This is complex in distributed systems.
|
|
154
154
|
# Consider if this pattern should be supported or if routing should always
|
flock/workflow/flock_workflow.py
CHANGED
|
@@ -7,7 +7,7 @@ from temporalio import workflow
|
|
|
7
7
|
with workflow.unsafe.imports_passed_through():
|
|
8
8
|
from flock.core.context.context import AgentDefinition, FlockContext
|
|
9
9
|
from flock.core.context.context_vars import FLOCK_CURRENT_AGENT
|
|
10
|
-
|
|
10
|
+
# HandOffRequest removed - using agent.next_agent directly
|
|
11
11
|
from flock.core.logging.logging import get_logger
|
|
12
12
|
from flock.workflow.agent_execution_activity import (
|
|
13
13
|
determine_next_agent,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0b1
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -55,7 +55,7 @@ Requires-Dist: azure-search-documents>=11.5.2; extra == 'all'
|
|
|
55
55
|
Requires-Dist: azure-storage-blob>=12.25.1; extra == 'all'
|
|
56
56
|
Requires-Dist: chromadb>=0.6.3; extra == 'all'
|
|
57
57
|
Requires-Dist: datasets>=3.2.0; extra == 'all'
|
|
58
|
-
Requires-Dist: docling>=2.
|
|
58
|
+
Requires-Dist: docling>=2.34.0; extra == 'all'
|
|
59
59
|
Requires-Dist: duckduckgo-search>=7.3.2; extra == 'all'
|
|
60
60
|
Requires-Dist: markdownify>=0.14.1; extra == 'all'
|
|
61
61
|
Requires-Dist: matplotlib>=3.10.0; extra == 'all'
|
|
@@ -70,7 +70,7 @@ Requires-Dist: azure-identity>=1.23.0; extra == 'all-tools'
|
|
|
70
70
|
Requires-Dist: azure-search-documents>=11.5.2; extra == 'all-tools'
|
|
71
71
|
Requires-Dist: azure-storage-blob>=12.25.1; extra == 'all-tools'
|
|
72
72
|
Requires-Dist: docker>=7.1.0; extra == 'all-tools'
|
|
73
|
-
Requires-Dist: docling>=2.
|
|
73
|
+
Requires-Dist: docling>=2.34.0; extra == 'all-tools'
|
|
74
74
|
Requires-Dist: duckduckgo-search>=7.3.2; extra == 'all-tools'
|
|
75
75
|
Requires-Dist: markdownify>=0.14.1; extra == 'all-tools'
|
|
76
76
|
Requires-Dist: nltk>=3.9.1; extra == 'all-tools'
|
|
@@ -80,7 +80,7 @@ Requires-Dist: azure-identity>=1.23.0; extra == 'azure-tools'
|
|
|
80
80
|
Requires-Dist: azure-search-documents>=11.5.2; extra == 'azure-tools'
|
|
81
81
|
Requires-Dist: azure-storage-blob>=12.25.1; extra == 'azure-tools'
|
|
82
82
|
Provides-Extra: basic-tools
|
|
83
|
-
Requires-Dist: docling>=2.
|
|
83
|
+
Requires-Dist: docling>=2.34.0; extra == 'basic-tools'
|
|
84
84
|
Requires-Dist: duckduckgo-search>=7.3.2; extra == 'basic-tools'
|
|
85
85
|
Requires-Dist: markdownify>=0.14.1; extra == 'basic-tools'
|
|
86
86
|
Requires-Dist: tavily-python>=0.5.0; extra == 'basic-tools'
|
|
@@ -17,7 +17,7 @@ flock/cli/load_examples.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
|
|
|
17
17
|
flock/cli/load_flock.py,sha256=sfZ9B9aiyC5TCEbn1xR5Yd5SoaVji6MBNYzXlWOpoZ4,7111
|
|
18
18
|
flock/cli/load_release_notes.py,sha256=bkMIjjQFfOngXkDCh2kB404lQYIToeR91LodzI2IUWM,555
|
|
19
19
|
flock/cli/loaded_flock_cli.py,sha256=lGZ9Y2O16v4OEr0dxvPQA8HqreB_bP25C9teg4ViSsA,8202
|
|
20
|
-
flock/cli/manage_agents.py,sha256=
|
|
20
|
+
flock/cli/manage_agents.py,sha256=ZNmG_J31BwfgQgTYB4bCW6_d4vXB4wbI_21BVnCwrSE,13504
|
|
21
21
|
flock/cli/registry_management.py,sha256=mAHy3wT97YgODR0gVOkTXDqR5NIPzM-E-z9dEtw9-tw,29790
|
|
22
22
|
flock/cli/runner.py,sha256=TgiuhRLkpa6dn3C-3eCmWx-bWUlTjaH0sD7Y-O7MrYM,1122
|
|
23
23
|
flock/cli/settings.py,sha256=Z_TXBzCYlCmSaKrJ_CQCdYy-Cj29gpI4kbC_2KzoKqg,27025
|
|
@@ -25,16 +25,30 @@ flock/cli/utils.py,sha256=JJrvM-1D2tbWkicrtkhOgRqVqYb0MdA2XtHYGOYuPRw,4644
|
|
|
25
25
|
flock/cli/view_results.py,sha256=dOzK0O1FHSIDERnx48y-2Xke9BkOHS7pcOhs64AyIg0,781
|
|
26
26
|
flock/cli/yaml_editor.py,sha256=K3N0bh61G1TSDAZDnurqW9e_-hO6CtSQKXQqlDhCjVo,12527
|
|
27
27
|
flock/cli/assets/release_notes.md,sha256=bqnk50jxM3w5uY44Dc7MkdT8XmRREFxrVBAG9XCOSSU,4896
|
|
28
|
-
flock/
|
|
29
|
-
flock/
|
|
30
|
-
flock/
|
|
31
|
-
flock/
|
|
32
|
-
flock/
|
|
33
|
-
flock/
|
|
34
|
-
flock/
|
|
35
|
-
flock/
|
|
28
|
+
flock/components/__init__.py,sha256=ZyTU6-haElMddsgCiL426z9qw2W9AnuFKvKkP3FuVSQ,954
|
|
29
|
+
flock/components/evaluation/__init__.py,sha256=_M3UlRFeNN90fEny6byt5VdLDE5o5khbd0EPT0o9S9k,303
|
|
30
|
+
flock/components/evaluation/declarative_evaluation_component.py,sha256=7VBHRtdcT1FiW6dS8jb1XfraeFmYboKI6PB91WBpIy0,7891
|
|
31
|
+
flock/components/routing/__init__.py,sha256=BH_pFm9T6bUuf8HH4byDJ0dO0fzEVHv9m-ghUdDVdm0,542
|
|
32
|
+
flock/components/routing/conditional_routing_component.py,sha256=Vgx8Cuxxo2LWTWwC_xFsH4-YL3Q9zZ8NaAUFiPbIvjc,21434
|
|
33
|
+
flock/components/routing/default_routing_component.py,sha256=17NZWW0pPMvpOSBvWtkbzouThK1iV_-EgOKaf53AygU,3383
|
|
34
|
+
flock/components/routing/llm_routing_component.py,sha256=patgtmpuF_5RB3FGxGEmXmzAtXffV04fLGon2ZHMRds,7741
|
|
35
|
+
flock/components/utility/__init__.py,sha256=JRj932upddjzZMWs1avOupEFr_GZNu21ac66Rhw_XgY,532
|
|
36
|
+
flock/components/utility/memory_utility_component.py,sha256=3BAH9fcRImwTng9gqn5fRK_OsYUGCkUahkQW2W5ZyFw,20116
|
|
37
|
+
flock/components/utility/metrics_utility_component.py,sha256=SLWjfArtqo6AKeGvkSy_CSHF2fAJLfROQnZA55Bc24Q,24489
|
|
38
|
+
flock/components/utility/output_utility_component.py,sha256=7y6NMjuhUaThqxl0aey2OIw1qkTvfgJPUQNlOrAlKk4,7563
|
|
39
|
+
flock/core/__init__.py,sha256=wYwEurRjtIO5dRhURQlbuFQt-MQ0B3h-FTix0W2oU5g,1070
|
|
40
|
+
flock/core/flock.py,sha256=93vajoVVpJqVP-_8rECIUo76gyBWhaKndIe31PYRTlM,23222
|
|
41
|
+
flock/core/flock_agent.py,sha256=Z_nQ-DgqrTp_oZcuYvh_7tn463emkBTM3Qpjdn79W64,11286
|
|
42
|
+
flock/core/flock_factory.py,sha256=evVKrtLmxLXkhiy-fkAfYDz3Vuv9Dz3ioifzi4Svwy0,19843
|
|
43
|
+
flock/core/flock_registry.py.backup,sha256=f6aapcp1HBzcUjUpTubn7mIdedPdJdup94sa1mX7yj0,26619
|
|
36
44
|
flock/core/flock_scheduler.py,sha256=fu99UXMhs8qkbTLi1q1h4-mR4TxmsyA156EGXuXZ3-Q,8772
|
|
37
45
|
flock/core/flock_server_manager.py,sha256=YU6HOcg_IBXtnkbTIBNBONh3MZkvIjdKWHaiSOo16sE,4555
|
|
46
|
+
flock/core/agent/__init__.py,sha256=l32KFMJnC_gidMXpAXK8-OX228bWOhNc8OY_NzXm59Q,515
|
|
47
|
+
flock/core/agent/flock_agent_components.py,sha256=EflYAN25Uft22HL6uaWRAQbEEg1xfSbWxcqZir0lgtQ,4630
|
|
48
|
+
flock/core/agent/flock_agent_execution.py,sha256=pdOddBGv8y1P89Ix8XFWa1eW9i3bWjOYiQQxeY2K0yo,4217
|
|
49
|
+
flock/core/agent/flock_agent_integration.py,sha256=dazL9BQhuQEy-w74Tah4xLDOzMiD7JhzJIO_iKcA4Wg,5846
|
|
50
|
+
flock/core/agent/flock_agent_lifecycle.py,sha256=msGKSNVRwV70_UvKBFLpdnLkTfvTu5FKJIMVZQC59NE,7292
|
|
51
|
+
flock/core/agent/flock_agent_serialization.py,sha256=fPjFuorJtQVd6abzq2l6W3vUrxtD6DlLNvtrd4Ha9CI,16751
|
|
38
52
|
flock/core/api/__init__.py,sha256=KdzUwBOwhxqqy7lAMLpysKL5GvpIiwOy6CxXELZVWaY,186
|
|
39
53
|
flock/core/api/custom_endpoint.py,sha256=Mbk2owdcXVATaT5FtEWXFzllgursozcmqP8ouG5btc0,1305
|
|
40
54
|
flock/core/api/endpoints.py,sha256=YoqnGscF02OxGXrvOxkn-9hnCwcZD9Vx6YkeHoC8pSk,12187
|
|
@@ -43,20 +57,25 @@ flock/core/api/models.py,sha256=seqKuzhbN37nCNO7KrcJjI2mWuwiOKCLFcJcTPvTtag,3422
|
|
|
43
57
|
flock/core/api/run_store.py,sha256=bFodJvVyWogzoezVy0cOoWWU3MdEBXf_6_5sBqCRWps,9227
|
|
44
58
|
flock/core/api/runner.py,sha256=3izg6cVk1RoR1hDIDwMAO1gi3lnLcp8DPv7AnJBYx6A,1443
|
|
45
59
|
flock/core/api/service.py,sha256=HRHs4xt-bGeSm5hdN92H1vWQtLzqZalhZxIh6iwww8Y,11381
|
|
46
|
-
flock/core/
|
|
60
|
+
flock/core/component/__init__.py,sha256=ZIGygRCsgsYmBtkFKwqZ6NO05wJH1b1wUL__f7tC-pg,490
|
|
61
|
+
flock/core/component/agent_component_base.py,sha256=u3Sztd9J5Q-MoeuPs-d9s66mhJuXfTv2JSjsXeGuimc,10660
|
|
62
|
+
flock/core/component/evaluation_component_base.py,sha256=BW-glQNnRqdEs5-lUpGPjsug9ejWQZ_FE59y9R5Iq2s,2024
|
|
63
|
+
flock/core/component/routing_component_base.py,sha256=BQ_5zCBNrMfeFytDIs0cwyxIcFNjzV5upLUCMf1WxYI,2686
|
|
64
|
+
flock/core/component/utility_component_base.py,sha256=o-1BIiFeGkvu-e12DBj9JKQVZrfrjY2iS60HWK4zwXM,2330
|
|
65
|
+
flock/core/config/flock_agent_config.py,sha256=5Y9vJKYEkhtjU6I-bJAJBh0eLDYjGdPar_sJ9wMP65A,2132
|
|
47
66
|
flock/core/config/scheduled_agent_config.py,sha256=3okCjpggJSKkc1Dp8ZJuQP010tQvN3dk8n_llbTc5aE,1506
|
|
48
67
|
flock/core/context/context.py,sha256=zdQuB1YWPJmQVv_2_sm1HK7FSnusa3Jl-83PcTuaLUk,7791
|
|
49
68
|
flock/core/context/context_manager.py,sha256=FANSWa6DEhdhtZ7t_9Gza0v80UdpoDOhHbfVOccmjkA,1181
|
|
50
69
|
flock/core/context/context_vars.py,sha256=ASPA29hpENWub4mgRoG62FtTVakCHQZfn6IhJQKe3C8,347
|
|
51
|
-
flock/core/evaluation/utils.py,sha256=
|
|
70
|
+
flock/core/evaluation/utils.py,sha256=pz62Jr04C3OWRtjSzbv1BqOh2jGlVbmvGWNFVwfzumY,15365
|
|
52
71
|
flock/core/execution/batch_executor.py,sha256=mHwCI-DHqApCv_EVCN0ZOUd-LCQLjREpxKbAUPC0pcY,15266
|
|
53
|
-
flock/core/execution/evaluation_executor.py,sha256=
|
|
72
|
+
flock/core/execution/evaluation_executor.py,sha256=NZceKhuvTPiLl2wfOYYvEO9VVeSwgg36VxOpR2UV-34,17687
|
|
54
73
|
flock/core/execution/local_executor.py,sha256=rnIQvaJOs6zZORUcR3vvyS6LPREDJTjaygl_Db0M8ao,952
|
|
55
74
|
flock/core/execution/opik_executor.py,sha256=tl2Ti9NM_9WtcjXvJ0c7up-syRNq_OsLmiuYWqkGV4k,3325
|
|
56
75
|
flock/core/execution/temporal_executor.py,sha256=dHcb0xuzPFWU_wbwTgI7glLNyyppei93Txs2sapjhaw,6283
|
|
57
76
|
flock/core/interpreter/python_interpreter.py,sha256=4-wRsxC6-gToEdRr_pp-n2idWwe_Y2zN0o3TbzUPhy0,26632
|
|
58
77
|
flock/core/logging/__init__.py,sha256=xn5fC-8IgsdIv0ywe_cICK1KVhTrVD8t-jYORg0ETUA,155
|
|
59
|
-
flock/core/logging/logging.py,sha256=
|
|
78
|
+
flock/core/logging/logging.py,sha256=y-V4XPxiwtWCjiAN_YoIRAUP1ialMSH_kT_TYircGjQ,19870
|
|
60
79
|
flock/core/logging/telemetry.py,sha256=Trssqx02SBovTL843YwY3L-ZGj3KvcfMHLMU7Syk8L0,6561
|
|
61
80
|
flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
|
|
62
81
|
flock/core/logging/formatters/enum_builder.py,sha256=LgEYXUv84wK5vwHflZ5h8HBGgvLH3sByvUQe8tZiyY0,981
|
|
@@ -68,7 +87,7 @@ flock/core/logging/telemetry_exporter/base_exporter.py,sha256=rQJJzS6q9n2aojoSqw
|
|
|
68
87
|
flock/core/logging/telemetry_exporter/file_exporter.py,sha256=nKAjJSZtA7FqHSTuTiFtYYepaxOq7l1rDvs8U8rSBlA,3023
|
|
69
88
|
flock/core/logging/telemetry_exporter/sqlite_exporter.py,sha256=CDsiMb9QcqeXelZ6ZqPSS56ovMPGqOu6whzBZRK__Vg,3498
|
|
70
89
|
flock/core/mcp/__init__.py,sha256=g3hzM_9ntsr-Af9dE9cCZEjQ9YX2jk7-Jm-0JcHSk1A,25
|
|
71
|
-
flock/core/mcp/flock_mcp_server.py,sha256=
|
|
90
|
+
flock/core/mcp/flock_mcp_server.py,sha256=OctEfFkwN0xgFfMJKD408KsNwMAuqEEy2M5g7rUVgs4,26408
|
|
72
91
|
flock/core/mcp/flock_mcp_tool_base.py,sha256=ZY6bUJEW3FY0Q5W5vNW0F8RqIovzKZU-X0JrVmK0TuA,6804
|
|
73
92
|
flock/core/mcp/mcp_client.py,sha256=Nf-fC5EtX2egeoqgDx02EIWlwEd6aaNuT1n2DEbnvg0,25934
|
|
74
93
|
flock/core/mcp/mcp_client_manager.py,sha256=hn97F9xEpYNbs02ruEbrtQo4PYD7TNKQAC0AwuAh6xw,8061
|
|
@@ -80,27 +99,38 @@ flock/core/mcp/types/handlers.py,sha256=VEpOx5ShvlvOEvgo2Fs5rql-x0obVQYgEpcb8FBr
|
|
|
80
99
|
flock/core/mcp/types/types.py,sha256=2amE-oastGe1GGVI4gbH2ltCX7QvYnJebSArATvttUU,11410
|
|
81
100
|
flock/core/mcp/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
101
|
flock/core/mcp/util/helpers.py,sha256=Xlf4iKW_lZxsVMTRoOnV29JsJfAppfmEJrb6sIcoCH4,636
|
|
83
|
-
flock/core/mixin/dspy_integration.py,sha256=
|
|
102
|
+
flock/core/mixin/dspy_integration.py,sha256=jS_hJvDK3YReyI5Y9tmNQQrVdW1t1zFtnDqjRVQovPo,17720
|
|
84
103
|
flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgweoxI,5121
|
|
104
|
+
flock/core/orchestration/__init__.py,sha256=lu6VgCpza0c34lDVhTdtFBY9gCuXx-sdadGqxLlfHuQ,543
|
|
105
|
+
flock/core/orchestration/flock_batch_processor.py,sha256=2vqSOHd-Zk871UTai3jGXvITgcwSowaCNjvDkSWbkLg,3357
|
|
106
|
+
flock/core/orchestration/flock_evaluator.py,sha256=_Ctub0P5VOnePpaPQgb7Qw-gvJerns8uO8u2QVOyGYA,4082
|
|
107
|
+
flock/core/orchestration/flock_execution.py,sha256=-ffSPnaW4EPiMXNciJDnFGyDQTy7Pen-6ylvEV_Ip7U,11485
|
|
108
|
+
flock/core/orchestration/flock_initialization.py,sha256=IHPUItTtzHGJUwIVOF1NOXg_ymhdDN5iSYmL7o3I2HQ,4575
|
|
109
|
+
flock/core/orchestration/flock_server_manager.py,sha256=hKlL1-XJJJzN9_OEsNFpXrKps8CQOroJzOQGeue8JXU,2579
|
|
110
|
+
flock/core/orchestration/flock_web_server.py,sha256=uLTKW2pLf4vW3MqhrA2bl3K69zHRqRqcx6vkFZHRi70,3827
|
|
111
|
+
flock/core/registry/__init__.py,sha256=rVXiqfnZjiL7ja9tgEyN96WNsYHT9g003PLi65XXmtw,1312
|
|
112
|
+
flock/core/registry/agent_registry.py,sha256=GTRiziP70jT05--_Vn1-hBi4oM2QU7FG5wzbvesExWQ,2681
|
|
113
|
+
flock/core/registry/callable_registry.py,sha256=BpQZJ6VjUOrFqFGMg3EPkHsIigGDO8DIT9zzlpNlorc,6761
|
|
114
|
+
flock/core/registry/component_discovery.py,sha256=8xN00U044sSMRDRav0cGiKOv1yHK327buSiragjVWKo,6627
|
|
115
|
+
flock/core/registry/component_registry.py,sha256=hZF-xNPbPutlxesoXQbPW5BSmssSrcCar7olZvs6DeA,2617
|
|
116
|
+
flock/core/registry/config_mapping.py,sha256=ShSQd9QqNb2hiASsW_6h27aex23G75X2OzYy9SY-uxs,2392
|
|
117
|
+
flock/core/registry/decorators.py,sha256=nKLVHafnH4GQaMW6cRomJpzlAmIhYQfxs5VhtfBizXc,3765
|
|
118
|
+
flock/core/registry/registry_hub.py,sha256=9_1_UeR7p85wIfN1Qt5PQi9DSgH4DMRH1q_XhpLr07M,8046
|
|
119
|
+
flock/core/registry/server_registry.py,sha256=QnjlW68OOQ9VX01jC9ZGASK8J_xCxf6r_wZL3hiz2HU,2127
|
|
120
|
+
flock/core/registry/type_registry.py,sha256=h1DVQH8gWS6u2Lc2MmpzcfXlbhP7U2mZrMIdHrAhq6U,3109
|
|
85
121
|
flock/core/serialization/__init__.py,sha256=CML7fPgG6p4c0CDBlJ_uwV1aZZhJKK9uy3IoIHfO87w,431
|
|
86
122
|
flock/core/serialization/callable_registry.py,sha256=sUZECTZWsM3fJ8FDRQ-FgLNW9hF26nY17AD6fJKADMc,1419
|
|
87
|
-
flock/core/serialization/flock_serializer.py,sha256=
|
|
123
|
+
flock/core/serialization/flock_serializer.py,sha256=yHxZfzj2NhuHcjWHGO17MKbktfXtLV2qKr-LBro2C9M,35430
|
|
88
124
|
flock/core/serialization/json_encoder.py,sha256=gAKj2zU_8wQiNvdkby2hksSA4fbPNwTjup_yz1Le1Vw,1229
|
|
89
125
|
flock/core/serialization/secure_serializer.py,sha256=n5-zRvvXddgJv1FFHsaQ2wuYdL3WUSGPvG_LGaffEJo,6144
|
|
90
126
|
flock/core/serialization/serializable.py,sha256=qlv8TsTqRuklXiNuCMrvro5VKz764xC2i3FlgLJSkdk,12129
|
|
91
|
-
flock/core/serialization/serialization_utils.py,sha256=
|
|
127
|
+
flock/core/serialization/serialization_utils.py,sha256=_TvGJw5zLP-asJxtAGJ65nqWNlLSEzeCSe2N-4JAST8,15283
|
|
92
128
|
flock/core/util/cli_helper.py,sha256=9MiAw8y0IRlWKF7lRYViRFzSwbWSeiiLv0usyhn8XlU,49966
|
|
93
129
|
flock/core/util/file_path_utils.py,sha256=Odf7uU32C-x1KNighbNERSiMtkzW4h8laABIoFK7A5M,6246
|
|
94
130
|
flock/core/util/hydrator.py,sha256=ARg4ufXNlfAESDaxPeU8j6TOJ2ywzfl00KAIfVHGIxo,10699
|
|
95
|
-
flock/core/util/input_resolver.py,sha256=
|
|
131
|
+
flock/core/util/input_resolver.py,sha256=XNQlx0zRyAIkeVY4SSpfDnpyGQThsEwp3aj_ylv1hjo,5765
|
|
96
132
|
flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,2244
|
|
97
133
|
flock/core/util/splitter.py,sha256=rDLnZX158PWkmW8vi2UfMLAMRXcHQFUIydAABd-lDGw,7154
|
|
98
|
-
flock/evaluators/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
99
|
-
flock/evaluators/declarative/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
100
|
-
flock/evaluators/declarative/declarative_evaluator.py,sha256=tulTpUOXhF-wMe5a9ULpsCiS1o2Z-DOXOUTqOSzVYqI,7397
|
|
101
|
-
flock/evaluators/memory/memory_evaluator.py,sha256=ySwz7kcc8suXMJ7gKNSWThW8iOMlE8lUcUzEAHvv8rw,3559
|
|
102
|
-
flock/evaluators/test/test_case_evaluator.py,sha256=3Emcoty0LOLLBIuPGxSpKphuZC9Fu1DTr1vbGg-hd0Q,1233
|
|
103
|
-
flock/evaluators/zep/zep_evaluator.py,sha256=6_5vTdU0yJAH8I8w3-MPXiAZx6iUPhAVCsHjrHzkPLM,2058
|
|
104
134
|
flock/mcp/servers/sse/__init__.py,sha256=r6YtleRSOMJqKhTtKQeFKd3QDaUJVz9R1BGJgOm_PF8,51
|
|
105
135
|
flock/mcp/servers/sse/flock_sse_server.py,sha256=YesBrgdbxOsZO6Lgm8EQ8SsDDqhQGkTUPcEuLcqy89A,4980
|
|
106
136
|
flock/mcp/servers/stdio/__init__.py,sha256=36QMguWwHCklLbISNNe1m2cq-y9klAWRf_QnuYpD2aY,53
|
|
@@ -109,40 +139,8 @@ flock/mcp/servers/streamable_http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
|
109
139
|
flock/mcp/servers/streamable_http/flock_streamable_http_server.py,sha256=3bKxx5zBkVXZIvD9qz31oL1ucsMeEO4kdOpv4S558zo,5818
|
|
110
140
|
flock/mcp/servers/websockets/__init__.py,sha256=KeNgNQRdeCQ9xgpaHB1I0-HyYeBhkifAuZPTIA8eDqM,47
|
|
111
141
|
flock/mcp/servers/websockets/flock_websocket_server.py,sha256=ntDLKMM20xTGd7k2TbNEK3ToJAF14oyW6vwofNzvqtM,4324
|
|
112
|
-
flock/
|
|
113
|
-
flock/modules/assertion/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
114
|
-
flock/modules/assertion/assertion_module.py,sha256=2p9mIj8yBXRGgfe5pUWYXcLT86Ny13KyWHpRhe0Ehtg,12877
|
|
115
|
-
flock/modules/callback/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
116
|
-
flock/modules/callback/callback_module.py,sha256=FnTYQeL828uQgYlpgGUnwCz0OzW_DKdOnQ3nwQCcu5o,2956
|
|
117
|
-
flock/modules/enterprise_memory/README.md,sha256=8xKfUi0mjX8tfVe77E3n9IoM97OuhlaCc1QE7PHSF1s,3111
|
|
118
|
-
flock/modules/enterprise_memory/enterprise_memory_module.py,sha256=XieINLCdRIiybhwmNY1_elIf7uyIut-Pas8Pz6PKR-c,21304
|
|
119
|
-
flock/modules/mem0/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
120
|
-
flock/modules/mem0/mem0_module.py,sha256=EoQcD6OgxLuv1AxdLh76XNXZ_4f9zGPRd9LMCPBfgzk,4818
|
|
121
|
-
flock/modules/mem0_async/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
122
|
-
flock/modules/mem0_async/async_mem0_module.py,sha256=F7RRzKgiOo1iySckTVVzOnqnv8epitVJjwalFWUFjzY,4936
|
|
123
|
-
flock/modules/memory/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
124
|
-
flock/modules/memory/memory_module.py,sha256=RhkiBOB0eOkiLZb3hV2meFUZ95euYoAKUxKkfBaq1V4,15922
|
|
125
|
-
flock/modules/memory/memory_parser.py,sha256=FLH7GL8XThvHiCMfX3eQH7Sz-f62fzhAUmO6_gaDI7U,4372
|
|
126
|
-
flock/modules/memory/memory_storage.py,sha256=CNcLDMmvv0x7Z3YMKr6VveS_VCa7rKPw8l2d-XgqokA,27246
|
|
127
|
-
flock/modules/output/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
128
|
-
flock/modules/output/output_module.py,sha256=gEn1_khPAJp-hqU6Rxdv1sQz0jTLVSzYJvNbK1uVNCY,7402
|
|
129
|
-
flock/modules/performance/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
130
|
-
flock/modules/performance/metrics_module.py,sha256=O-FI6h8kbsrXDLoGYMWYT1Vgbp2S5-U4TMXzBHUfcDU,23987
|
|
131
|
-
flock/modules/zep/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
132
|
-
flock/modules/zep/zep_module.py,sha256=gJXOqdoWIXcWOyzJoyqykgq5gU-Y2Dze3tLuQM_tMQc,6572
|
|
133
|
-
flock/platform/docker_tools.py,sha256=fpA7-6rJBjPOUBLdQP4ny2QPgJ_042nmqRn5GtKnoYw,1445
|
|
142
|
+
flock/platform/docker_tools.py,sha256=2QFZtYhPKJsPgCVrQIANrCcQjHDMyBHGDikV4xPYSao,1463
|
|
134
143
|
flock/platform/jaeger_install.py,sha256=MyOMJQx4TQSMYvdUJxfiGSo3YCtsfkbNXcAcQ9bjETA,2898
|
|
135
|
-
flock/routers/__init__.py,sha256=w9uL34Auuo26-q_EGlE8Z9iHsw6S8qutTAH_ZI7pn7M,39
|
|
136
|
-
flock/routers/agent/__init__.py,sha256=0ZOYpR8BMnR5iCGfcUiv99g7aT_g13xvm2Shl-XzybY,65
|
|
137
|
-
flock/routers/agent/agent_router.py,sha256=d4rberqXguJFmDB_hLTaeaDP_rOvCnVQufPELA-pD6M,8327
|
|
138
|
-
flock/routers/agent/handoff_agent.py,sha256=p-0XEPXIyv1T3DGAhhXg2SYXmrwEaJ5pnuLgRSvbiZg,1903
|
|
139
|
-
flock/routers/conditional/conditional_router.py,sha256=_ETx3GhuS3uYqNz6AYWO0JIPov02l1WqxI7Xq-qyMTY,21261
|
|
140
|
-
flock/routers/default/__init__.py,sha256=DOatGX_aE2DWvf55a0Tv7qDK05QFD-hL3sm7g58hmLU,61
|
|
141
|
-
flock/routers/default/default_router.py,sha256=RgJm6RcS8ah1S49mM9TccfJpenQ0SzzbPCX0K8ZtnHs,2384
|
|
142
|
-
flock/routers/feedback/feedback_router.py,sha256=RODEmPrrNZ-ODdZ0mGfmO8auEnH6KvHN3f5rmFGeq1M,4947
|
|
143
|
-
flock/routers/list_generator/list_generator_router.py,sha256=mofBBZFSfqek_uiYbiC-6avdfhTF8Q8tyEVka1xxALs,7741
|
|
144
|
-
flock/routers/llm/__init__.py,sha256=OV89ebq8RPWZwCJTS2_P46Q0yKD_03rwq_fBOsETd08,63
|
|
145
|
-
flock/routers/llm/llm_router.py,sha256=F2GAKaiJxWCdtvI1G9vLkoLaY6kR_DgJYoRLenVN9FI,12335
|
|
146
144
|
flock/themes/3024-day.toml,sha256=uOVHqEzSyHx0WlUk3D0lne4RBsNBAPCTy3C58yU7kEY,667
|
|
147
145
|
flock/themes/3024-night.toml,sha256=qsXUwd6ZYz6J-R129_Ao2TKlvvK60svhZJJjB5c8Tfo,1667
|
|
148
146
|
flock/themes/aardvark-blue.toml,sha256=5ZgsxP3pWLPN3yJ2Wd9ErCo7fy_VJpIfje4kriDKlqo,1667
|
|
@@ -484,9 +482,9 @@ flock/tools/azure_tools.py,sha256=OTJsb0B4l70GcD1W3ZMDHWd3X8nEnszhhz2sllD2z9E,30
|
|
|
484
482
|
flock/tools/code_tools.py,sha256=xLpuFl84y_GVzmIBe4qrr7h9wI3yWpM-M21GgEUjSjE,5247
|
|
485
483
|
flock/tools/file_tools.py,sha256=VYjT942NqDMTnizHiF41O4Af6ySseSvahRNVVrGMXl8,4850
|
|
486
484
|
flock/tools/github_tools.py,sha256=HH47-4K3HL6tRJhZhUttWDo2aloP9Hs12wRC_f_-Vkc,5329
|
|
487
|
-
flock/tools/markdown_tools.py,sha256=
|
|
485
|
+
flock/tools/markdown_tools.py,sha256=1EZuYyt8LiuEgROfXqW_VQWQ8cxyko4yMP9nrx3CBds,6324
|
|
488
486
|
flock/tools/system_tools.py,sha256=IUB8MiSxtQH5ZfTGOck3vl4TKva8m1lfU4-W5D5b-4w,202
|
|
489
|
-
flock/tools/text_tools.py,sha256=
|
|
487
|
+
flock/tools/text_tools.py,sha256=_FLubHtH4x2-Wn4_SRMV3vYuBls8KCFNuCxqlgfptRM,22470
|
|
490
488
|
flock/tools/web_tools.py,sha256=Wl3qO5lKq4PYtmYahgeFGBQ8tDC0uKY4k9A1Zn-MqFw,2588
|
|
491
489
|
flock/tools/zendesk_tools.py,sha256=e7KMfHVl7wGbstwdz9CvoChyuoZfpS9n4TEtvrxawgI,5162
|
|
492
490
|
flock/webapp/__init__.py,sha256=YtRbbyciN3Z2oMB9fdXZuvM3e49R8m2mY5qHLDoapRA,37
|
|
@@ -495,7 +493,7 @@ flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
495
493
|
flock/webapp/app/chat.py,sha256=d5a_mr3H2nuWNFSpSlI_HyqX-J_4krndd4A-8S25EKM,28679
|
|
496
494
|
flock/webapp/app/config.py,sha256=lqmneujnNZk-EFJV5cWpvxkqisxH3T3zT_YOI0JYThE,4809
|
|
497
495
|
flock/webapp/app/dependencies.py,sha256=JUcwY1N6SZplU141lMN2wk9dOC9er5HCedrKTJN9wJk,5533
|
|
498
|
-
flock/webapp/app/main.py,sha256=
|
|
496
|
+
flock/webapp/app/main.py,sha256=GSCx_trZGSma11BiDCLrdm_zU1VIsIUDbOZuQD1wbMk,58671
|
|
499
497
|
flock/webapp/app/middleware.py,sha256=5gkM-gqD7C6-JrsoTB1_UWpf05JI1N8KIWajn60QZk0,5721
|
|
500
498
|
flock/webapp/app/models_ui.py,sha256=vrEBLbhEp6FziAgBSFOLT1M7ckwadsTdT7qus5_NduE,329
|
|
501
499
|
flock/webapp/app/theme_mapper.py,sha256=QzWwLWpED78oYp3FjZ9zxv1KxCyj43m8MZ0fhfzz37w,34302
|
|
@@ -556,14 +554,15 @@ flock/webapp/templates/partials/_sidebar.html,sha256=yfhEcF3xKI5j1c3iq46mU8mmPvg
|
|
|
556
554
|
flock/webapp/templates/partials/_structured_data_view.html,sha256=TEaXcMGba9ruxEc_MLxygIO1qWcuSTo1FnosFtGSKWI,2101
|
|
557
555
|
flock/webapp/templates/partials/_theme_preview.html,sha256=THeMYTXzgzHJxzWqaTtUhmJyBZT3saLRAa6wzZa4qnk,1347
|
|
558
556
|
flock/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
559
|
-
flock/workflow/activities.py,sha256=
|
|
557
|
+
flock/workflow/activities.py,sha256=q358l0p0zQ8KIdcq_AkcuZ0SX9h5PytV_HmEMd8tzEU,8613
|
|
558
|
+
flock/workflow/activities_unified.py,sha256=kbb_X1p68YJElqM-SIxSekruvHbmdQ-oWvJlJboNReo,10171
|
|
560
559
|
flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
|
|
561
|
-
flock/workflow/agent_execution_activity.py,sha256=
|
|
562
|
-
flock/workflow/flock_workflow.py,sha256=
|
|
560
|
+
flock/workflow/agent_execution_activity.py,sha256=CzTkbjGqrPoAbldaQOS_doesosDK9mT04M8cbtvP5ps,9432
|
|
561
|
+
flock/workflow/flock_workflow.py,sha256=ZhAF82ewNRY2vvDjNpXT1D9lCVQsLOSMTaZVzdcogJc,9674
|
|
563
562
|
flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
|
|
564
563
|
flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
|
|
565
|
-
flock_core-0.
|
|
566
|
-
flock_core-0.
|
|
567
|
-
flock_core-0.
|
|
568
|
-
flock_core-0.
|
|
569
|
-
flock_core-0.
|
|
564
|
+
flock_core-0.5.0b1.dist-info/METADATA,sha256=NvE5RfIwXRdNcx-VVyPHQdy9LubUAStfjYRmKFkijXI,22786
|
|
565
|
+
flock_core-0.5.0b1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
566
|
+
flock_core-0.5.0b1.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
567
|
+
flock_core-0.5.0b1.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
568
|
+
flock_core-0.5.0b1.dist-info/RECORD,,
|
flock/core/flock_evaluator.py
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"""Base classes and implementations for Flock evaluators."""
|
|
2
|
-
|
|
3
|
-
from abc import ABC, abstractmethod
|
|
4
|
-
from typing import Any, TypeVar
|
|
5
|
-
|
|
6
|
-
from pydantic import BaseModel, Field, create_model
|
|
7
|
-
|
|
8
|
-
T = TypeVar("T", bound="FlockEvaluatorConfig")
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class FlockEvaluatorConfig(BaseModel):
|
|
12
|
-
"""Base configuration class for Flock modules.
|
|
13
|
-
|
|
14
|
-
This class serves as the base for all module-specific configurations.
|
|
15
|
-
Each module should define its own config class inheriting from this one.
|
|
16
|
-
|
|
17
|
-
Example:
|
|
18
|
-
class MemoryModuleConfig(FlockModuleConfig):
|
|
19
|
-
file_path: str = Field(default="memory.json")
|
|
20
|
-
save_after_update: bool = Field(default=True)
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
model: str = Field(
|
|
24
|
-
default="", description="The model to use for evaluation"
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
@classmethod
|
|
28
|
-
def with_fields(cls: type[T], **field_definitions) -> type[T]:
|
|
29
|
-
"""Create a new config class with additional fields."""
|
|
30
|
-
return create_model(
|
|
31
|
-
f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class FlockEvaluator(ABC, BaseModel):
|
|
36
|
-
"""Base class for all evaluators in Flock.
|
|
37
|
-
|
|
38
|
-
An evaluator is responsible for taking inputs and producing outputs using
|
|
39
|
-
some evaluation strategy (e.g., DSPy, natural language, etc.).
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
name: str = Field(..., description="Unique identifier for this evaluator")
|
|
43
|
-
config: FlockEvaluatorConfig = Field(
|
|
44
|
-
default_factory=FlockEvaluatorConfig,
|
|
45
|
-
description="Evaluator configuration",
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
def __init__(self, **data):
|
|
49
|
-
super().__init__(**data)
|
|
50
|
-
|
|
51
|
-
@abstractmethod
|
|
52
|
-
async def evaluate(
|
|
53
|
-
self,
|
|
54
|
-
agent: Any,
|
|
55
|
-
inputs: dict[str, Any],
|
|
56
|
-
tools: list[Any],
|
|
57
|
-
mcp_tools: list[Any] | None = None,
|
|
58
|
-
) -> dict[str, Any]:
|
|
59
|
-
"""Evaluate inputs to produce outputs."""
|
|
60
|
-
pass
|