flock-core 0.4.520__py3-none-any.whl → 0.5.0b2__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.

Files changed (103) hide show
  1. flock/cli/manage_agents.py +3 -3
  2. flock/components/__init__.py +28 -0
  3. flock/components/evaluation/__init__.py +9 -0
  4. flock/components/evaluation/declarative_evaluation_component.py +198 -0
  5. flock/components/routing/__init__.py +15 -0
  6. flock/{routers/conditional/conditional_router.py → components/routing/conditional_routing_component.py} +60 -49
  7. flock/components/routing/default_routing_component.py +103 -0
  8. flock/components/routing/llm_routing_component.py +208 -0
  9. flock/components/utility/__init__.py +15 -0
  10. flock/{modules/enterprise_memory/enterprise_memory_module.py → components/utility/memory_utility_component.py} +195 -173
  11. flock/{modules/performance/metrics_module.py → components/utility/metrics_utility_component.py} +101 -86
  12. flock/{modules/output/output_module.py → components/utility/output_utility_component.py} +49 -49
  13. flock/core/__init__.py +2 -8
  14. flock/core/agent/__init__.py +16 -0
  15. flock/core/agent/flock_agent_components.py +104 -0
  16. flock/core/agent/flock_agent_execution.py +101 -0
  17. flock/core/agent/flock_agent_integration.py +147 -0
  18. flock/core/agent/flock_agent_lifecycle.py +177 -0
  19. flock/core/agent/flock_agent_serialization.py +378 -0
  20. flock/core/component/__init__.py +15 -0
  21. flock/core/{flock_module.py → component/agent_component_base.py} +136 -35
  22. flock/core/component/evaluation_component_base.py +56 -0
  23. flock/core/component/routing_component_base.py +75 -0
  24. flock/core/component/utility_component_base.py +69 -0
  25. flock/core/config/flock_agent_config.py +49 -2
  26. flock/core/evaluation/utils.py +1 -1
  27. flock/core/execution/evaluation_executor.py +1 -1
  28. flock/core/flock.py +137 -483
  29. flock/core/flock_agent.py +151 -1018
  30. flock/core/flock_factory.py +94 -73
  31. flock/core/{flock_registry.py → flock_registry.py.backup} +3 -17
  32. flock/core/logging/logging.py +1 -0
  33. flock/core/mcp/flock_mcp_server.py +42 -37
  34. flock/core/mixin/dspy_integration.py +5 -5
  35. flock/core/orchestration/__init__.py +18 -0
  36. flock/core/orchestration/flock_batch_processor.py +94 -0
  37. flock/core/orchestration/flock_evaluator.py +113 -0
  38. flock/core/orchestration/flock_execution.py +288 -0
  39. flock/core/orchestration/flock_initialization.py +125 -0
  40. flock/core/orchestration/flock_server_manager.py +65 -0
  41. flock/core/orchestration/flock_web_server.py +117 -0
  42. flock/core/registry/__init__.py +39 -0
  43. flock/core/registry/agent_registry.py +69 -0
  44. flock/core/registry/callable_registry.py +139 -0
  45. flock/core/registry/component_discovery.py +142 -0
  46. flock/core/registry/component_registry.py +64 -0
  47. flock/core/registry/config_mapping.py +64 -0
  48. flock/core/registry/decorators.py +137 -0
  49. flock/core/registry/registry_hub.py +202 -0
  50. flock/core/registry/server_registry.py +57 -0
  51. flock/core/registry/type_registry.py +86 -0
  52. flock/core/serialization/flock_serializer.py +33 -30
  53. flock/core/serialization/serialization_utils.py +28 -25
  54. flock/core/util/input_resolver.py +29 -2
  55. flock/platform/docker_tools.py +3 -3
  56. flock/tools/markdown_tools.py +1 -2
  57. flock/tools/text_tools.py +1 -2
  58. flock/webapp/app/main.py +9 -5
  59. flock/workflow/activities.py +59 -84
  60. flock/workflow/activities_unified.py +230 -0
  61. flock/workflow/agent_execution_activity.py +6 -6
  62. flock/workflow/flock_workflow.py +1 -1
  63. {flock_core-0.4.520.dist-info → flock_core-0.5.0b2.dist-info}/METADATA +2 -2
  64. {flock_core-0.4.520.dist-info → flock_core-0.5.0b2.dist-info}/RECORD +67 -68
  65. flock/core/flock_evaluator.py +0 -60
  66. flock/core/flock_router.py +0 -83
  67. flock/evaluators/__init__.py +0 -1
  68. flock/evaluators/declarative/__init__.py +0 -1
  69. flock/evaluators/declarative/declarative_evaluator.py +0 -194
  70. flock/evaluators/memory/memory_evaluator.py +0 -90
  71. flock/evaluators/test/test_case_evaluator.py +0 -38
  72. flock/evaluators/zep/zep_evaluator.py +0 -59
  73. flock/modules/__init__.py +0 -1
  74. flock/modules/assertion/__init__.py +0 -1
  75. flock/modules/assertion/assertion_module.py +0 -286
  76. flock/modules/callback/__init__.py +0 -1
  77. flock/modules/callback/callback_module.py +0 -91
  78. flock/modules/enterprise_memory/README.md +0 -99
  79. flock/modules/mem0/__init__.py +0 -1
  80. flock/modules/mem0/mem0_module.py +0 -126
  81. flock/modules/mem0_async/__init__.py +0 -1
  82. flock/modules/mem0_async/async_mem0_module.py +0 -126
  83. flock/modules/memory/__init__.py +0 -1
  84. flock/modules/memory/memory_module.py +0 -429
  85. flock/modules/memory/memory_parser.py +0 -125
  86. flock/modules/memory/memory_storage.py +0 -736
  87. flock/modules/output/__init__.py +0 -1
  88. flock/modules/performance/__init__.py +0 -1
  89. flock/modules/zep/__init__.py +0 -1
  90. flock/modules/zep/zep_module.py +0 -192
  91. flock/routers/__init__.py +0 -1
  92. flock/routers/agent/__init__.py +0 -1
  93. flock/routers/agent/agent_router.py +0 -236
  94. flock/routers/agent/handoff_agent.py +0 -58
  95. flock/routers/default/__init__.py +0 -1
  96. flock/routers/default/default_router.py +0 -80
  97. flock/routers/feedback/feedback_router.py +0 -114
  98. flock/routers/list_generator/list_generator_router.py +0 -166
  99. flock/routers/llm/__init__.py +0 -1
  100. flock/routers/llm/llm_router.py +0 -365
  101. {flock_core-0.4.520.dist-info → flock_core-0.5.0b2.dist-info}/WHEEL +0 -0
  102. {flock_core-0.4.520.dist-info → flock_core-0.5.0b2.dist-info}/entry_points.txt +0 -0
  103. {flock_core-0.4.520.dist-info → flock_core-0.5.0b2.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.flock_registry import get_registry
16
- from flock.core.flock_router import HandOffRequest
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.handoff_router:
136
+ if not agent.router:
137
137
  logger.info(
138
- "No handoff router defined for agent", agent=current_agent_name
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.handoff_router.__class__.__name__}",
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.handoff_router.route(agent, result, context)
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
@@ -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
- from flock.core.flock_router import HandOffRequest
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.4.520
3
+ Version: 0.5.0b2
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -45,7 +45,7 @@ Requires-Dist: temporalio>=1.9.0
45
45
  Requires-Dist: thefuzz>=0.22.1
46
46
  Requires-Dist: tiktoken>=0.8.0
47
47
  Requires-Dist: toml>=0.10.2
48
- Requires-Dist: tqdm>=4.60.1
48
+ Requires-Dist: tqdm>=4.67.1
49
49
  Requires-Dist: uvicorn>=0.34.0
50
50
  Requires-Dist: wd-di>=0.2.14
51
51
  Requires-Dist: websockets>=15.0.1
@@ -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=cWEHNPDaEAOYaxFhGbt1jmWvIhxmUNjZ24lMP8gH2y8,13506
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/core/__init__.py,sha256=juwyNr3QqKXUS5-E3hlMYRhgqHgQBqgtP12OF3tUCAI,1249
29
- flock/core/flock.py,sha256=iR4i0_z0w2ns_iHbP7FqN--7wlsPIWch1H-BVecPs_I,38205
30
- flock/core/flock_agent.py,sha256=Hl6TONSiJi2I-N_49-1hkW2q_hyPXMebMr-5oZLI-PY,48842
31
- flock/core/flock_evaluator.py,sha256=TPy6u6XX3cqkY1r9NW1w2lTwCMNW7pxhFYKLefnEbXg,1820
32
- flock/core/flock_factory.py,sha256=siCShld0mHPzjsw2_TUhg_nesMYhocJympt1M8ch6p8,18724
33
- flock/core/flock_module.py,sha256=ObILimpVaPnaaqYvcBYJJ20lQzfrjgTdADplaNRjHU0,7448
34
- flock/core/flock_registry.py,sha256=KzdFfc3QC-Dk42G24hdf6Prp3HvGj9ymXR3TTBe-T-A,27161
35
- flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
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/config/flock_agent_config.py,sha256=XP96-Ceh4CfVsHFHXT-YxyRnX_URvabz1xlwdHkD8go,282
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=S5M0uTFcClphZsR5EylEzrRNK-1434yImiGYL4pR_5o,15380
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=D9EO0sU-2qWj3vomjmUUi-DOtHNJNFRf30kGDHuzREE,17702
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=VyBsin-3q8UQ0DY-K72t8FtrGJQbUwIfzxaC7rIWMvQ,19820
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=WgvQDMq5qFj-PzuTXght0uFsztodYEkcIUXQ5TC4Q4M,25852
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=rsZ9bkCKlT3jJRncnwwngTtffKcF2WloFvSleaZ0QRk,17746
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=mpBHGPlYrm6QOchOnw8v4l10unb4TXqO9_G60yMutEs,35461
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=AHRf90trgnj2Q6aaGaq5eja5PRcuJANUsp2wafGUeig,15257
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=QE3EjP7xTRNHuH6o77O3YhlhiCWOcnDg8cnSXzngKnM,4704
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/modules/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
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=94fjGAJ5DEutoioD0ke-YRbxF6IWJQKuPVBLkNqdBo4,6345
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=mMQ8tkyYDxIorqqzl9ccGyWYjrSynYiYFIeP9qypfdg,22491
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=J3NiwW4fFTrp_YKa-HFXs3gLtLC6qu9LjIb_i-jJHMk,58426
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=fyvefDOWZhhj5gCYIHR9Aqm2DbE6XI6-sXESFnnYRuc,9911
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=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R3pmwMq47NYW3U,9462
562
- flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
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.4.520.dist-info/METADATA,sha256=0dDV8IbiheDnn0O-Tm6c0poo7h7kAq7U4vMzcrRk8dc,22786
566
- flock_core-0.4.520.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
567
- flock_core-0.4.520.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
568
- flock_core-0.4.520.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
569
- flock_core-0.4.520.dist-info/RECORD,,
564
+ flock_core-0.5.0b2.dist-info/METADATA,sha256=iCBqog-kUvzyq94ZlHmJSaWdTHNYc71rSqQ2m03ppbQ,22786
565
+ flock_core-0.5.0b2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
566
+ flock_core-0.5.0b2.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
567
+ flock_core-0.5.0b2.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
568
+ flock_core-0.5.0b2.dist-info/RECORD,,
@@ -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