flock-core 0.4.0b21__py3-none-any.whl → 0.4.0b23__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/core/flock_agent.py +60 -70
- flock/core/flock_factory.py +1 -1
- flock/core/flock_registry.py +77 -45
- flock/core/flock_router.py +19 -6
- flock/core/mixin/dspy_integration.py +1 -1
- flock/core/serialization/serialization_utils.py +85 -19
- flock/core/util/input_resolver.py +5 -0
- flock/evaluators/declarative/declarative_evaluator.py +23 -13
- flock/modules/assertion/assertion_module.py +286 -0
- flock/routers/agent/agent_router.py +5 -5
- flock/routers/conditional/conditional_router.py +482 -0
- flock/routers/default/default_router.py +3 -1
- flock/routers/feedback/feedback_router.py +114 -0
- flock/routers/list_generator/list_generator_router.py +166 -0
- flock/routers/llm/llm_router.py +1 -1
- flock/workflow/activities.py +20 -1
- {flock_core-0.4.0b21.dist-info → flock_core-0.4.0b23.dist-info}/METADATA +2 -1
- {flock_core-0.4.0b21.dist-info → flock_core-0.4.0b23.dist-info}/RECORD +21 -17
- {flock_core-0.4.0b21.dist-info → flock_core-0.4.0b23.dist-info}/WHEEL +0 -0
- {flock_core-0.4.0b21.dist-info → flock_core-0.4.0b23.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.0b21.dist-info → flock_core-0.4.0b23.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# src/flock/routers/list_generator/iterative_list_router.py (New File)
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from pydantic import Field
|
|
6
|
+
|
|
7
|
+
from flock.core.context.context import FlockContext
|
|
8
|
+
from flock.core.flock_agent import FlockAgent
|
|
9
|
+
from flock.core.flock_registry import flock_component
|
|
10
|
+
from flock.core.flock_router import (
|
|
11
|
+
FlockRouter,
|
|
12
|
+
FlockRouterConfig,
|
|
13
|
+
HandOffRequest,
|
|
14
|
+
)
|
|
15
|
+
from flock.core.logging.logging import get_logger
|
|
16
|
+
|
|
17
|
+
# Need signature utils
|
|
18
|
+
|
|
19
|
+
logger = get_logger("router.list_generator")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class IterativeListGeneratorRouterConfig(FlockRouterConfig):
|
|
23
|
+
target_list_field: str = Field(
|
|
24
|
+
...,
|
|
25
|
+
description="Name of the final list output field (e.g., 'chapters').",
|
|
26
|
+
)
|
|
27
|
+
item_output_field: str = Field(
|
|
28
|
+
...,
|
|
29
|
+
description="Name of the single item output field for each iteration (e.g., 'chapter').",
|
|
30
|
+
)
|
|
31
|
+
context_input_field: str = Field(
|
|
32
|
+
default="previous_items",
|
|
33
|
+
description="Input field name for passing back generated items (e.g., 'existing_chapters').",
|
|
34
|
+
)
|
|
35
|
+
max_iterations: int = Field(
|
|
36
|
+
default=10, description="Maximum number of items to generate."
|
|
37
|
+
)
|
|
38
|
+
# More advanced: termination_condition: Optional[Callable] = None
|
|
39
|
+
# Store iteration state in context under this prefix
|
|
40
|
+
context_state_prefix: str = Field(
|
|
41
|
+
default="flock.iterator_state_",
|
|
42
|
+
description="Prefix for context keys storing iteration state.",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Field to extract item type from target_list_field signature
|
|
46
|
+
# This might require parsing the original agent's output signature
|
|
47
|
+
# item_type_str: Optional[str] = None # e.g., 'dict[str, str]' or 'MyChapterType'
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@flock_component
|
|
51
|
+
class IterativeListGeneratorRouter(FlockRouter):
|
|
52
|
+
name: str = "iterative_list_generator"
|
|
53
|
+
config: IterativeListGeneratorRouterConfig = Field(
|
|
54
|
+
default_factory=IterativeListGeneratorRouterConfig
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Helper to get state keys
|
|
58
|
+
def _get_state_keys(self, agent_name: str) -> tuple[str, str]:
|
|
59
|
+
prefix = self.config.context_state_prefix
|
|
60
|
+
list_key = f"{prefix}{agent_name}_{self.config.target_list_field}"
|
|
61
|
+
count_key = f"{prefix}{agent_name}_iteration_count"
|
|
62
|
+
return list_key, count_key
|
|
63
|
+
|
|
64
|
+
async def route(
|
|
65
|
+
self,
|
|
66
|
+
current_agent: FlockAgent,
|
|
67
|
+
result: dict[str, Any],
|
|
68
|
+
context: FlockContext,
|
|
69
|
+
) -> HandOffRequest:
|
|
70
|
+
list_key, count_key = self._get_state_keys(current_agent.name)
|
|
71
|
+
|
|
72
|
+
# --- State Initialization (First Run) ---
|
|
73
|
+
if count_key not in context.state:
|
|
74
|
+
logger.debug(
|
|
75
|
+
f"Initializing iterative list generation for '{self.config.target_list_field}' in agent '{current_agent.name}'."
|
|
76
|
+
)
|
|
77
|
+
context.set_variable(count_key, 0)
|
|
78
|
+
context.set_variable(list_key, [])
|
|
79
|
+
# Modify agent signature for the *first* iteration (remove context_input_field, use item_output_field)
|
|
80
|
+
# This requires modifying the agent's internal state or creating a temporary one.
|
|
81
|
+
# Let's try modifying the context passed to the *next* run instead.
|
|
82
|
+
context.set_variable(
|
|
83
|
+
f"{current_agent.name}.next_run_output_field",
|
|
84
|
+
self.config.item_output_field,
|
|
85
|
+
)
|
|
86
|
+
context.set_variable(
|
|
87
|
+
f"{current_agent.name}.next_run_input_fields_to_exclude",
|
|
88
|
+
{self.config.context_input_field},
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# --- Process Result of Previous Iteration ---
|
|
92
|
+
iteration_count = context.get_variable(count_key, 0)
|
|
93
|
+
generated_items = context.get_variable(list_key, [])
|
|
94
|
+
|
|
95
|
+
# Get the single item generated in the *last* run
|
|
96
|
+
# The result dict should contain the 'item_output_field' if it wasn't the very first run
|
|
97
|
+
new_item = result.get(self.config.item_output_field)
|
|
98
|
+
|
|
99
|
+
if (
|
|
100
|
+
new_item is not None and iteration_count > 0
|
|
101
|
+
): # Add item from previous run (not the init run)
|
|
102
|
+
generated_items.append(new_item)
|
|
103
|
+
context.set_variable(list_key, generated_items) # Update context
|
|
104
|
+
logger.info(
|
|
105
|
+
f"Added item #{iteration_count} to list '{self.config.target_list_field}' for agent '{current_agent.name}'."
|
|
106
|
+
)
|
|
107
|
+
elif iteration_count > 0:
|
|
108
|
+
logger.warning(
|
|
109
|
+
f"Iteration {iteration_count} for agent '{current_agent.name}' did not produce expected output field '{self.config.item_output_field}'."
|
|
110
|
+
)
|
|
111
|
+
# Decide how to handle: stop, retry, continue? Let's continue for now.
|
|
112
|
+
|
|
113
|
+
# Increment iteration count *after* processing the result of the previous one
|
|
114
|
+
current_iteration = iteration_count + 1
|
|
115
|
+
context.set_variable(count_key, current_iteration)
|
|
116
|
+
|
|
117
|
+
# --- Termination Check ---
|
|
118
|
+
if current_iteration > self.config.max_iterations:
|
|
119
|
+
logger.info(
|
|
120
|
+
f"Max iterations ({self.config.max_iterations}) reached for '{self.config.target_list_field}' in agent '{current_agent.name}'. Finalizing."
|
|
121
|
+
)
|
|
122
|
+
# Clean up state
|
|
123
|
+
del context.state[count_key]
|
|
124
|
+
# Final result should be the list itself under the target_list_field key
|
|
125
|
+
final_result = {self.config.target_list_field: generated_items}
|
|
126
|
+
# Handoff with empty next_agent to stop, but potentially override the *result*
|
|
127
|
+
# This is tricky. Routers usually decide the *next agent*, not the *final output*.
|
|
128
|
+
# Maybe the router should just signal termination, and the Flock run loop handles assembling the final output?
|
|
129
|
+
# Let's assume the router signals termination by returning next_agent=""
|
|
130
|
+
# The final list is already in the context under list_key.
|
|
131
|
+
# A final "AssemblerAgent" could read this context variable.
|
|
132
|
+
# OR we modify the HandOffRequest:
|
|
133
|
+
return HandOffRequest(
|
|
134
|
+
next_agent="", final_output_override=final_result
|
|
135
|
+
) # Needs HandOffRequest modification
|
|
136
|
+
|
|
137
|
+
# --- Prepare for Next Iteration ---
|
|
138
|
+
logger.info(
|
|
139
|
+
f"Routing back to agent '{current_agent.name}' for item #{current_iteration} of '{self.config.target_list_field}'."
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# The agent needs the context (previously generated items) and the original inputs again.
|
|
143
|
+
# We will pass the generated items via the context_input_field.
|
|
144
|
+
# The original inputs (like story_outline) should still be in the context.
|
|
145
|
+
next_input_override = {
|
|
146
|
+
self.config.context_input_field: generated_items # Pass the list back
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Modify agent signature for the *next* iteration (add context_input_field, use item_output_field)
|
|
150
|
+
# This is the trickiest part - how to modify the agent's perceived signature for the next run?
|
|
151
|
+
# Option 1: Pass overrides via HandOffRequest (cleanest)
|
|
152
|
+
next_signature_input = f"{current_agent.input}, {self.config.context_input_field}: list | Previously generated items" # Needs smarter joining
|
|
153
|
+
next_signature_output = (
|
|
154
|
+
self.config.item_output_field
|
|
155
|
+
) # Only ask for one item
|
|
156
|
+
|
|
157
|
+
# This requires HandOffRequest and Flock execution loop to support signature overrides
|
|
158
|
+
return HandOffRequest(
|
|
159
|
+
next_agent=current_agent.name,
|
|
160
|
+
output_to_input_merge_strategy="add", # Add the context_input_field to existing context
|
|
161
|
+
input_override=next_input_override, # Provide the actual list data
|
|
162
|
+
# --- Hypothetical Overrides ---
|
|
163
|
+
next_run_input_signature_override=next_signature_input,
|
|
164
|
+
next_run_output_signature_override=next_signature_output,
|
|
165
|
+
# -----------------------------
|
|
166
|
+
)
|
flock/routers/llm/llm_router.py
CHANGED
flock/workflow/activities.py
CHANGED
|
@@ -171,8 +171,27 @@ async def run_agent(context: FlockContext) -> dict:
|
|
|
171
171
|
# Prepare the next agent.
|
|
172
172
|
try:
|
|
173
173
|
agent = registry.get_agent(handoff_data.next_agent)
|
|
174
|
-
if handoff_data.
|
|
174
|
+
if handoff_data.output_to_input_merge_strategy == "add":
|
|
175
175
|
agent.input = previous_agent_output + ", " + agent.input
|
|
176
|
+
|
|
177
|
+
if handoff_data.add_input_fields:
|
|
178
|
+
for field in handoff_data.add_input_fields:
|
|
179
|
+
agent.input = field + ", " + agent.input
|
|
180
|
+
|
|
181
|
+
if handoff_data.add_output_fields:
|
|
182
|
+
for field in handoff_data.add_output_fields:
|
|
183
|
+
agent.output = field + ", " + agent.output
|
|
184
|
+
|
|
185
|
+
if handoff_data.add_description:
|
|
186
|
+
if agent.description:
|
|
187
|
+
agent.description = (
|
|
188
|
+
agent.description
|
|
189
|
+
+ "\n"
|
|
190
|
+
+ handoff_data.add_description
|
|
191
|
+
)
|
|
192
|
+
else:
|
|
193
|
+
agent.description = handoff_data.add_description
|
|
194
|
+
|
|
176
195
|
agent.resolve_callables(context=context)
|
|
177
196
|
if not agent:
|
|
178
197
|
logger.error(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0b23
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -17,6 +17,7 @@ Requires-Dist: dspy==2.6.16
|
|
|
17
17
|
Requires-Dist: duckduckgo-search>=7.3.2
|
|
18
18
|
Requires-Dist: fastapi>=0.115.8
|
|
19
19
|
Requires-Dist: httpx>=0.28.1
|
|
20
|
+
Requires-Dist: inspect-ai>=0.3.88
|
|
20
21
|
Requires-Dist: litellm==1.63.7
|
|
21
22
|
Requires-Dist: loguru>=0.7.3
|
|
22
23
|
Requires-Dist: matplotlib>=3.10.0
|
|
@@ -20,12 +20,12 @@ flock/cli/yaml_editor.py,sha256=K3N0bh61G1TSDAZDnurqW9e_-hO6CtSQKXQqlDhCjVo,1252
|
|
|
20
20
|
flock/cli/assets/release_notes.md,sha256=bqnk50jxM3w5uY44Dc7MkdT8XmRREFxrVBAG9XCOSSU,4896
|
|
21
21
|
flock/core/__init__.py,sha256=p7lmQULRu9ejIAELfanZiyMhW0CougIPvyFHW2nqBFQ,847
|
|
22
22
|
flock/core/flock.py,sha256=RcDUc__ukjUy9aSA_n0t8SxXCex4BV_nagTcg22peJ0,25116
|
|
23
|
-
flock/core/flock_agent.py,sha256=
|
|
23
|
+
flock/core/flock_agent.py,sha256=Hqh9jh_m-8hc9n9qE34XvTiOx92s7Xu_yR87M0n7GPU,33187
|
|
24
24
|
flock/core/flock_evaluator.py,sha256=dOXZeDOGZcAmJ9ahqq_2bdGUU1VOXY4skmwTVpAjiVw,1685
|
|
25
|
-
flock/core/flock_factory.py,sha256=
|
|
25
|
+
flock/core/flock_factory.py,sha256=38cq0kovBhjulEecdnNk3MWSklX5lcdg0brhx49ixfQ,2993
|
|
26
26
|
flock/core/flock_module.py,sha256=96aFVYAgwpKN53xGbivQDUpikOYGFCxK5mqhclOcxY0,3003
|
|
27
|
-
flock/core/flock_registry.py,sha256=
|
|
28
|
-
flock/core/flock_router.py,sha256=
|
|
27
|
+
flock/core/flock_registry.py,sha256=KjLqJrCpCuvk4Ot5ASbRAWXwy5gHBneS_8IjttRPRnQ,22292
|
|
28
|
+
flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
|
|
29
29
|
flock/core/api/__init__.py,sha256=OKlhzDWZJfA6ddBwxQUmATY0TSzESsH032u00iVGvdA,228
|
|
30
30
|
flock/core/api/endpoints.py,sha256=qQnJmtcYGkjdKtLllVpyJVjc-iZrvu5EEeVIryyt4tc,12987
|
|
31
31
|
flock/core/api/main.py,sha256=glu9ThsYNTt35Ogjx732SGYJ9-aFftpvzLMQEJ7VuvQ,19189
|
|
@@ -56,7 +56,7 @@ flock/core/logging/span_middleware/baggage_span_processor.py,sha256=gJfRl8FeB6jd
|
|
|
56
56
|
flock/core/logging/telemetry_exporter/base_exporter.py,sha256=rQJJzS6q9n2aojoSqwCnl7ZtHrh5LZZ-gkxUuI5WfrQ,1124
|
|
57
57
|
flock/core/logging/telemetry_exporter/file_exporter.py,sha256=nKAjJSZtA7FqHSTuTiFtYYepaxOq7l1rDvs8U8rSBlA,3023
|
|
58
58
|
flock/core/logging/telemetry_exporter/sqlite_exporter.py,sha256=CDsiMb9QcqeXelZ6ZqPSS56ovMPGqOu6whzBZRK__Vg,3498
|
|
59
|
-
flock/core/mixin/dspy_integration.py,sha256=
|
|
59
|
+
flock/core/mixin/dspy_integration.py,sha256=JlGtakuy_lXXEEXBycd7ygmdUBKS-4qPWNqx3Wqfy78,17187
|
|
60
60
|
flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgweoxI,5121
|
|
61
61
|
flock/core/serialization/__init__.py,sha256=CML7fPgG6p4c0CDBlJ_uwV1aZZhJKK9uy3IoIHfO87w,431
|
|
62
62
|
flock/core/serialization/callable_registry.py,sha256=sUZECTZWsM3fJ8FDRQ-FgLNW9hF26nY17AD6fJKADMc,1419
|
|
@@ -64,7 +64,7 @@ flock/core/serialization/flock_serializer.py,sha256=TEePKaJqU-_XWHTMWyMHloDNwmkK
|
|
|
64
64
|
flock/core/serialization/json_encoder.py,sha256=gAKj2zU_8wQiNvdkby2hksSA4fbPNwTjup_yz1Le1Vw,1229
|
|
65
65
|
flock/core/serialization/secure_serializer.py,sha256=n5-zRvvXddgJv1FFHsaQ2wuYdL3WUSGPvG_LGaffEJo,6144
|
|
66
66
|
flock/core/serialization/serializable.py,sha256=qlv8TsTqRuklXiNuCMrvro5VKz764xC2i3FlgLJSkdk,12129
|
|
67
|
-
flock/core/serialization/serialization_utils.py,sha256=
|
|
67
|
+
flock/core/serialization/serialization_utils.py,sha256=AHRf90trgnj2Q6aaGaq5eja5PRcuJANUsp2wafGUeig,15257
|
|
68
68
|
flock/core/tools/azure_tools.py,sha256=hwLnI2gsEq6QzUoWj5eCGDKTdXY1XUf6K-H5Uwva2MY,17093
|
|
69
69
|
flock/core/tools/basic_tools.py,sha256=Ye7nlI4RRkqWRy8nH9CKuItBmh_ZXxUpouGnCOfx0s0,9050
|
|
70
70
|
flock/core/tools/llm_tools.py,sha256=Bdt4Dpur5dGpxd2KFEQyxjfZazvW1HCDKY6ydMj6UgQ,21811
|
|
@@ -74,14 +74,15 @@ flock/core/tools/dev_tools/github.py,sha256=a2OTPXS7kWOVA4zrZHynQDcsmEi4Pac5MfSj
|
|
|
74
74
|
flock/core/util/cli_helper.py,sha256=EnK4X-FgaO71JsSXLdy0R-cxE3UctlFZtzldursw-Bw,49845
|
|
75
75
|
flock/core/util/file_path_utils.py,sha256=Odf7uU32C-x1KNighbNERSiMtkzW4h8laABIoFK7A5M,6246
|
|
76
76
|
flock/core/util/hydrator.py,sha256=QJvCA8F4nkSP5akp3yg0cT6oaajOr1n7sldW5dCs6Lo,10733
|
|
77
|
-
flock/core/util/input_resolver.py,sha256=
|
|
77
|
+
flock/core/util/input_resolver.py,sha256=ttFiz5L_uzSvxEhWOPL09WfLF--RlLOikLP5hrgE7Mo,6138
|
|
78
78
|
flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,2244
|
|
79
|
-
flock/evaluators/declarative/declarative_evaluator.py,sha256=
|
|
79
|
+
flock/evaluators/declarative/declarative_evaluator.py,sha256=gdB1w6_stRhU91D21O9sxqkMbF9VRvaiV6-trwjYLpM,6107
|
|
80
80
|
flock/evaluators/memory/azure_search_evaluator.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
81
|
flock/evaluators/memory/memory_evaluator.py,sha256=SmerXyNaqm8DTV0yw-WqWkn9DXIf6x-nPG1eyTV6NY8,3452
|
|
82
82
|
flock/evaluators/natural_language/natural_language_evaluator.py,sha256=6nVEeh8_uwv_h-d3FWlA0GbzDzRtdhvxCGKirHtyvOU,2012
|
|
83
83
|
flock/evaluators/test/test_case_evaluator.py,sha256=9vVhYbRrq68TNn8wo9z_yFD4UydhPKlygzy0mDmLLJU,1124
|
|
84
84
|
flock/evaluators/zep/zep_evaluator.py,sha256=9NOELl7JAuUcx_FQrxY6b-_vN3MjwDyW7ZppPIGeCFc,1954
|
|
85
|
+
flock/modules/assertion/assertion_module.py,sha256=f4hUxqB-KsDXJF2FQJ7hIv-0jJZ_g2Sa0scdgozW1Js,12824
|
|
85
86
|
flock/modules/azure-search/azure_search_module.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
87
|
flock/modules/callback/callback_module.py,sha256=volGGgHtY19qj1wHR6m5a_hmXSbV3Ca3uY6I76YmcfU,2833
|
|
87
88
|
flock/modules/memory/memory_module.py,sha256=bSkdFBW-Pp5ldHhXi8v4kfRM7zknfLR2fsOtbTosucI,14916
|
|
@@ -94,12 +95,15 @@ flock/platform/docker_tools.py,sha256=fpA7-6rJBjPOUBLdQP4ny2QPgJ_042nmqRn5GtKnoY
|
|
|
94
95
|
flock/platform/jaeger_install.py,sha256=MyOMJQx4TQSMYvdUJxfiGSo3YCtsfkbNXcAcQ9bjETA,2898
|
|
95
96
|
flock/routers/__init__.py,sha256=w9uL34Auuo26-q_EGlE8Z9iHsw6S8qutTAH_ZI7pn7M,39
|
|
96
97
|
flock/routers/agent/__init__.py,sha256=0ZOYpR8BMnR5iCGfcUiv99g7aT_g13xvm2Shl-XzybY,65
|
|
97
|
-
flock/routers/agent/agent_router.py,sha256=
|
|
98
|
+
flock/routers/agent/agent_router.py,sha256=uSLWlVTGNspp1WZf1rut-58Yxit6ud33aNT3mqbbVJc,8224
|
|
98
99
|
flock/routers/agent/handoff_agent.py,sha256=p-0XEPXIyv1T3DGAhhXg2SYXmrwEaJ5pnuLgRSvbiZg,1903
|
|
100
|
+
flock/routers/conditional/conditional_router.py,sha256=G4zulYBVo4xd6ExJrszmqYa5pyOsE6GXoD5MugNQa78,21223
|
|
99
101
|
flock/routers/default/__init__.py,sha256=DOatGX_aE2DWvf55a0Tv7qDK05QFD-hL3sm7g58hmLU,61
|
|
100
|
-
flock/routers/default/default_router.py,sha256=
|
|
102
|
+
flock/routers/default/default_router.py,sha256=wKbZFBSL9VhHjm5fzEVMwGkyRtmO3_lfmRnZ02BFeQ8,2279
|
|
103
|
+
flock/routers/feedback/feedback_router.py,sha256=fFHUGnmKBAfdzgIh7EzjHOdEntgTN59JWpc_GsHAawo,4907
|
|
104
|
+
flock/routers/list_generator/list_generator_router.py,sha256=OWnZJNfYCL-V78WxyUNlb8S48xj0-VE59d8XOpppvzk,7692
|
|
101
105
|
flock/routers/llm/__init__.py,sha256=OV89ebq8RPWZwCJTS2_P46Q0yKD_03rwq_fBOsETd08,63
|
|
102
|
-
flock/routers/llm/llm_router.py,sha256=
|
|
106
|
+
flock/routers/llm/llm_router.py,sha256=k2nxWxkBZaOPByiwUIYjN7N5jcFNAmqhSZm0LcF0tok,12234
|
|
103
107
|
flock/themes/3024-day.toml,sha256=uOVHqEzSyHx0WlUk3D0lne4RBsNBAPCTy3C58yU7kEY,667
|
|
104
108
|
flock/themes/3024-night.toml,sha256=qsXUwd6ZYz6J-R129_Ao2TKlvvK60svhZJJjB5c8Tfo,1667
|
|
105
109
|
flock/themes/aardvark-blue.toml,sha256=5ZgsxP3pWLPN3yJ2Wd9ErCo7fy_VJpIfje4kriDKlqo,1667
|
|
@@ -437,12 +441,12 @@ flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1
|
|
|
437
441
|
flock/themes/zenwritten-dark.toml,sha256=To5l6520_3UqAGiEumpzGWsHhXxqu9ThrMildXKgIO0,1669
|
|
438
442
|
flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
|
|
439
443
|
flock/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
440
|
-
flock/workflow/activities.py,sha256=
|
|
444
|
+
flock/workflow/activities.py,sha256=Rcgcepa-RzaEjKo2aNuI14O_sX8ij0RrqeyPa0oSw8M,9910
|
|
441
445
|
flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
|
|
442
446
|
flock/workflow/temporal_setup.py,sha256=VWBgmBgfTBjwM5ruS_dVpA5AVxx6EZ7oFPGw4j3m0l0,1091
|
|
443
447
|
flock/workflow/workflow.py,sha256=I9MryXW_bqYVTHx-nl2epbTqeRy27CAWHHA7ZZA0nAk,1696
|
|
444
|
-
flock_core-0.4.
|
|
445
|
-
flock_core-0.4.
|
|
446
|
-
flock_core-0.4.
|
|
447
|
-
flock_core-0.4.
|
|
448
|
-
flock_core-0.4.
|
|
448
|
+
flock_core-0.4.0b23.dist-info/METADATA,sha256=jiZmPSrAwNEiyugjNKF63f0qloquD8CFWb8SWodU588,13004
|
|
449
|
+
flock_core-0.4.0b23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
450
|
+
flock_core-0.4.0b23.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
451
|
+
flock_core-0.4.0b23.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
452
|
+
flock_core-0.4.0b23.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|