flock-core 0.4.506__py3-none-any.whl → 0.4.509__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/evaluation/utils.py +85 -2
- flock/core/flock.py +102 -56
- flock/core/flock_agent.py +2 -2
- flock/core/flock_evaluator.py +8 -1
- flock/core/flock_factory.py +4 -0
- flock/core/mixin/dspy_integration.py +7 -6
- flock/evaluators/declarative/declarative_evaluator.py +112 -88
- flock/webapp/app/main.py +25 -19
- {flock_core-0.4.506.dist-info → flock_core-0.4.509.dist-info}/METADATA +28 -10
- {flock_core-0.4.506.dist-info → flock_core-0.4.509.dist-info}/RECORD +13 -16
- flock/core/api/ui/__init__.py +0 -0
- flock/core/api/ui/routes.py +0 -271
- flock/core/api/ui/utils.py +0 -119
- {flock_core-0.4.506.dist-info → flock_core-0.4.509.dist-info}/WHEEL +0 -0
- {flock_core-0.4.506.dist-info → flock_core-0.4.509.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.506.dist-info → flock_core-0.4.509.dist-info}/licenses/LICENSE +0 -0
|
@@ -26,6 +26,8 @@ class DeclarativeEvaluatorConfig(FlockEvaluatorConfig):
|
|
|
26
26
|
use_cache: bool = True
|
|
27
27
|
temperature: float = 0.0
|
|
28
28
|
max_tokens: int = 4096
|
|
29
|
+
max_retries: int = 3
|
|
30
|
+
max_tool_calls: int = 10
|
|
29
31
|
stream: bool = Field(
|
|
30
32
|
default=False,
|
|
31
33
|
description="Enable streaming output from the underlying DSPy program.",
|
|
@@ -51,110 +53,132 @@ class DeclarativeEvaluator(
|
|
|
51
53
|
_cost: float = PrivateAttr(default=0.0)
|
|
52
54
|
_lm_history: list = PrivateAttr(default_factory=list)
|
|
53
55
|
|
|
56
|
+
# def __init__(self, name: str, config: DeclarativeEvaluatorConfig) -> None:
|
|
57
|
+
# super().__init__(name=name, config=config)
|
|
58
|
+
# self._configure_language_model(
|
|
59
|
+
# model=config.model,
|
|
60
|
+
# use_cache=config.use_cache,
|
|
61
|
+
# temperature=config.temperature,
|
|
62
|
+
# max_tokens=config.max_tokens,
|
|
63
|
+
# )
|
|
64
|
+
|
|
54
65
|
async def evaluate(
|
|
55
|
-
self,
|
|
66
|
+
self,
|
|
67
|
+
agent: FlockAgent,
|
|
68
|
+
inputs: dict[str, Any],
|
|
69
|
+
tools: list[Any],
|
|
70
|
+
mcp_tools: list[Any] | None = None,
|
|
56
71
|
) -> dict[str, Any]:
|
|
57
72
|
"""Evaluate using DSPy, with optional asynchronous streaming."""
|
|
58
73
|
# --- Setup Signature and LM ---
|
|
59
|
-
try:
|
|
60
|
-
from rich.console import Console
|
|
61
|
-
|
|
62
|
-
console = Console()
|
|
63
|
-
_dspy_signature = self.create_dspy_signature_class(
|
|
64
|
-
agent.name,
|
|
65
|
-
agent.description,
|
|
66
|
-
f"{agent.input} -> {agent.output}",
|
|
67
|
-
)
|
|
68
|
-
# --- Get output field names ---
|
|
69
|
-
# dspy.Signature holds fields in .output_fields attribute
|
|
70
|
-
output_field_names = list(_dspy_signature.output_fields.keys())
|
|
71
|
-
if not output_field_names:
|
|
72
|
-
logger.warning(
|
|
73
|
-
f"DSPy signature for agent '{agent.name}' has no defined output fields. Streaming might not produce text."
|
|
74
|
-
)
|
|
75
|
-
# -----------------------------
|
|
76
74
|
|
|
77
|
-
|
|
75
|
+
with dspy.context(
|
|
76
|
+
lm=dspy.LM(
|
|
78
77
|
model=self.config.model or agent.model,
|
|
79
|
-
|
|
78
|
+
cache=self.config.use_cache,
|
|
80
79
|
temperature=self.config.temperature,
|
|
81
80
|
max_tokens=self.config.max_tokens,
|
|
81
|
+
num_retries=self.config.max_retries,
|
|
82
82
|
)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
tools=tools,
|
|
87
|
-
mcp_tools=mcp_tools,
|
|
88
|
-
kwargs=self.config.kwargs,
|
|
89
|
-
)
|
|
90
|
-
except Exception as setup_error:
|
|
91
|
-
logger.error(
|
|
92
|
-
f"Error setting up DSPy task for agent '{agent.name}': {setup_error}",
|
|
93
|
-
exc_info=True,
|
|
94
|
-
)
|
|
95
|
-
raise RuntimeError(
|
|
96
|
-
f"DSPy task setup failed: {setup_error}"
|
|
97
|
-
) from setup_error
|
|
98
|
-
|
|
99
|
-
# --- Conditional Evaluation (Stream vs No Stream) ---
|
|
100
|
-
if self.config.stream:
|
|
101
|
-
logger.info(
|
|
102
|
-
f"Evaluating agent '{agent.name}' with async streaming."
|
|
103
|
-
)
|
|
104
|
-
if not callable(agent_task):
|
|
105
|
-
logger.error("agent_task is not callable, cannot stream.")
|
|
106
|
-
raise TypeError(
|
|
107
|
-
"DSPy task could not be created or is not callable."
|
|
108
|
-
)
|
|
83
|
+
):
|
|
84
|
+
try:
|
|
85
|
+
from rich.console import Console
|
|
109
86
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
async for chunk in stream_generator:
|
|
116
|
-
if (
|
|
117
|
-
hasattr(chunk, "choices")
|
|
118
|
-
and chunk.choices
|
|
119
|
-
and hasattr(chunk.choices[0], "delta")
|
|
120
|
-
and chunk.choices[0].delta
|
|
121
|
-
and hasattr(chunk.choices[0].delta, "content")
|
|
122
|
-
):
|
|
123
|
-
delta_content = chunk.choices[0].delta.content
|
|
124
|
-
|
|
125
|
-
if delta_content:
|
|
126
|
-
console.print(delta_content, end="")
|
|
127
|
-
|
|
128
|
-
result_dict, cost, lm_history = self._process_result(
|
|
129
|
-
chunk, inputs
|
|
87
|
+
console = Console()
|
|
88
|
+
_dspy_signature = self.create_dspy_signature_class(
|
|
89
|
+
agent.name,
|
|
90
|
+
agent.description,
|
|
91
|
+
f"{agent.input} -> {agent.output}",
|
|
130
92
|
)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
93
|
+
# --- Get output field names ---
|
|
94
|
+
# dspy.Signature holds fields in .output_fields attribute
|
|
95
|
+
output_field_names = list(_dspy_signature.output_fields.keys())
|
|
96
|
+
if not output_field_names:
|
|
97
|
+
logger.warning(
|
|
98
|
+
f"DSPy signature for agent '{agent.name}' has no defined output fields. Streaming might not produce text."
|
|
99
|
+
)
|
|
100
|
+
# -----------------------------
|
|
101
|
+
|
|
102
|
+
agent_task = self._select_task(
|
|
103
|
+
_dspy_signature,
|
|
104
|
+
override_evaluator_type=self.config.override_evaluator_type,
|
|
105
|
+
tools=tools,
|
|
106
|
+
max_tool_calls=self.config.max_tool_calls,
|
|
107
|
+
mcp_tools=mcp_tools,
|
|
108
|
+
kwargs=self.config.kwargs,
|
|
109
|
+
)
|
|
110
|
+
except Exception as setup_error:
|
|
111
|
+
logger.error(
|
|
112
|
+
f"Error setting up DSPy task for agent '{agent.name}': {setup_error}",
|
|
113
|
+
exc_info=True,
|
|
146
114
|
)
|
|
147
|
-
|
|
148
|
-
|
|
115
|
+
raise RuntimeError(
|
|
116
|
+
f"DSPy task setup failed: {setup_error}"
|
|
117
|
+
) from setup_error
|
|
118
|
+
|
|
119
|
+
# --- Conditional Evaluation (Stream vs No Stream) ---
|
|
120
|
+
if self.config.stream:
|
|
121
|
+
logger.info(
|
|
122
|
+
f"Evaluating agent '{agent.name}' with async streaming."
|
|
123
|
+
)
|
|
124
|
+
if not callable(agent_task):
|
|
125
|
+
logger.error("agent_task is not callable, cannot stream.")
|
|
126
|
+
raise TypeError(
|
|
127
|
+
"DSPy task could not be created or is not callable."
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
streaming_task = dspy.streamify(
|
|
131
|
+
agent_task, is_async_program=True
|
|
132
|
+
)
|
|
133
|
+
stream_generator: Generator = streaming_task(**inputs)
|
|
134
|
+
delta_content = ""
|
|
135
|
+
|
|
136
|
+
console.print("\n")
|
|
137
|
+
async for chunk in stream_generator:
|
|
138
|
+
if (
|
|
139
|
+
hasattr(chunk, "choices")
|
|
140
|
+
and chunk.choices
|
|
141
|
+
and hasattr(chunk.choices[0], "delta")
|
|
142
|
+
and chunk.choices[0].delta
|
|
143
|
+
and hasattr(chunk.choices[0].delta, "content")
|
|
144
|
+
):
|
|
145
|
+
delta_content = chunk.choices[0].delta.content
|
|
146
|
+
|
|
147
|
+
if delta_content:
|
|
148
|
+
console.print(delta_content, end="")
|
|
149
|
+
|
|
150
|
+
result_dict, cost, lm_history = self._process_result(
|
|
151
|
+
chunk, inputs
|
|
152
|
+
)
|
|
153
|
+
self._cost = cost
|
|
154
|
+
self._lm_history = lm_history
|
|
155
|
+
|
|
156
|
+
console.print("\n")
|
|
149
157
|
return self.filter_thought_process(
|
|
150
158
|
result_dict, self.config.include_thought_process
|
|
151
159
|
)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
|
|
161
|
+
else: # Non-streaming path
|
|
162
|
+
logger.info(
|
|
163
|
+
f"Evaluating agent '{agent.name}' without streaming."
|
|
156
164
|
)
|
|
157
|
-
|
|
165
|
+
try:
|
|
166
|
+
# Ensure the call is awaited if the underlying task is async
|
|
167
|
+
result_obj = await agent_task.acall(**inputs)
|
|
168
|
+
result_dict, cost, lm_history = self._process_result(
|
|
169
|
+
result_obj, inputs
|
|
170
|
+
)
|
|
171
|
+
self._cost = cost
|
|
172
|
+
self._lm_history = lm_history
|
|
173
|
+
return self.filter_thought_process(
|
|
174
|
+
result_dict, self.config.include_thought_process
|
|
175
|
+
)
|
|
176
|
+
except Exception as e:
|
|
177
|
+
logger.error(
|
|
178
|
+
f"Error during non-streaming evaluation for agent '{agent.name}': {e}",
|
|
179
|
+
exc_info=True,
|
|
180
|
+
)
|
|
181
|
+
raise RuntimeError(f"Evaluation failed: {e}") from e
|
|
158
182
|
|
|
159
183
|
def filter_thought_process(
|
|
160
184
|
self, result_dict: dict[str, Any], include_thought_process: bool
|
flock/webapp/app/main.py
CHANGED
|
@@ -24,6 +24,7 @@ from fastapi.responses import HTMLResponse, RedirectResponse
|
|
|
24
24
|
from fastapi.staticfiles import StaticFiles
|
|
25
25
|
from fastapi.templating import Jinja2Templates
|
|
26
26
|
from pydantic import BaseModel
|
|
27
|
+
from typing import Any
|
|
27
28
|
|
|
28
29
|
from flock.core.api.endpoints import create_api_router
|
|
29
30
|
from flock.core.api.run_store import RunStore
|
|
@@ -147,23 +148,30 @@ async def lifespan(app: FastAPI):
|
|
|
147
148
|
set_global_shared_link_store(shared_link_store)
|
|
148
149
|
logger.info("SharedLinkStore initialized and set globally.")
|
|
149
150
|
except Exception as e:
|
|
150
|
-
logger.error(f"Failed to initialize SharedLinkStore: {e}", exc_info=True)
|
|
151
|
-
|
|
152
|
-
#
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
151
|
+
logger.error(f"Failed to initialize SharedLinkStore: {e}", exc_info=True) # Configure chat features with clear precedence:
|
|
152
|
+
# 1. Value set by start_unified_server (programmatic)
|
|
153
|
+
# 2. Environment variables (standalone mode)
|
|
154
|
+
programmatic_chat_enabled = getattr(app.state, "chat_enabled", None)
|
|
155
|
+
env_start_mode = os.environ.get("FLOCK_START_MODE")
|
|
156
|
+
env_chat_enabled = os.environ.get("FLOCK_CHAT_ENABLED", "false").lower() == "true"
|
|
157
|
+
|
|
158
|
+
if programmatic_chat_enabled is not None:
|
|
159
|
+
# Programmatic setting takes precedence (from start_unified_server)
|
|
160
|
+
should_enable_chat_routes = programmatic_chat_enabled
|
|
161
|
+
logger.info(f"Using programmatic chat_enabled setting: {should_enable_chat_routes}")
|
|
162
|
+
elif env_start_mode == "chat":
|
|
159
163
|
should_enable_chat_routes = True
|
|
160
|
-
app.state.initial_redirect_to_chat = True
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
app.state.initial_redirect_to_chat = True
|
|
165
|
+
app.state.chat_enabled = True
|
|
166
|
+
logger.info("FLOCK_START_MODE='chat'. Enabling chat routes and setting redirect.")
|
|
167
|
+
elif env_chat_enabled:
|
|
163
168
|
should_enable_chat_routes = True
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
169
|
+
app.state.chat_enabled = True
|
|
170
|
+
logger.info("FLOCK_CHAT_ENABLED='true'. Enabling chat routes.")
|
|
171
|
+
else:
|
|
172
|
+
should_enable_chat_routes = False
|
|
173
|
+
app.state.chat_enabled = False
|
|
174
|
+
logger.info("Chat routes disabled (no programmatic or environment setting).")
|
|
167
175
|
|
|
168
176
|
if should_enable_chat_routes:
|
|
169
177
|
try:
|
|
@@ -171,10 +179,8 @@ async def lifespan(app: FastAPI):
|
|
|
171
179
|
app.include_router(chat_router, tags=["Chat"])
|
|
172
180
|
logger.info("Chat routes included in the application.")
|
|
173
181
|
except Exception as e:
|
|
174
|
-
logger.error(f"Failed to include chat routes during lifespan startup: {e}", exc_info=True)
|
|
175
|
-
|
|
176
|
-
# If in standalone chat mode, strip non-essential UI routes
|
|
177
|
-
if flock_start_mode == "chat":
|
|
182
|
+
logger.error(f"Failed to include chat routes during lifespan startup: {e}", exc_info=True) # If in standalone chat mode, strip non-essential UI routes
|
|
183
|
+
if env_start_mode == "chat":
|
|
178
184
|
from fastapi.routing import APIRoute
|
|
179
185
|
logger.info("FLOCK_START_MODE='chat'. Stripping non-chat UI routes.")
|
|
180
186
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.509
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -9,20 +9,15 @@ Classifier: Operating System :: OS Independent
|
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Requires-Dist: aiosqlite>=0.21.0
|
|
12
|
-
Requires-Dist: chromadb>=0.6.3
|
|
13
12
|
Requires-Dist: cloudpickle>=3.1.1
|
|
14
|
-
Requires-Dist: datasets>=3.2.0
|
|
15
13
|
Requires-Dist: devtools>=0.12.2
|
|
16
14
|
Requires-Dist: dspy==2.6.23
|
|
17
15
|
Requires-Dist: fastapi>=0.115.8
|
|
18
16
|
Requires-Dist: httpx>=0.28.1
|
|
19
|
-
Requires-Dist: inspect-ai>=0.3.88
|
|
20
17
|
Requires-Dist: litellm==1.69.3
|
|
21
18
|
Requires-Dist: loguru>=0.7.3
|
|
22
19
|
Requires-Dist: markdown2>=2.5.3
|
|
23
|
-
Requires-Dist: matplotlib>=3.10.0
|
|
24
20
|
Requires-Dist: mcp>=1.7.1
|
|
25
|
-
Requires-Dist: mem0ai[graph]>=0.1.101
|
|
26
21
|
Requires-Dist: msgpack>=1.1.0
|
|
27
22
|
Requires-Dist: openai==1.75.0
|
|
28
23
|
Requires-Dist: opentelemetry-api>=1.30.0
|
|
@@ -31,6 +26,7 @@ Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
|
|
|
31
26
|
Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
|
|
32
27
|
Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
|
|
33
28
|
Requires-Dist: opentelemetry-sdk>=1.30.0
|
|
29
|
+
Requires-Dist: opik>=1.7.26
|
|
34
30
|
Requires-Dist: pandas>=2.2.3
|
|
35
31
|
Requires-Dist: pillow>=10.4.0
|
|
36
32
|
Requires-Dist: prometheus-client>=0.21.1
|
|
@@ -40,12 +36,9 @@ Requires-Dist: pydantic==2.10.5
|
|
|
40
36
|
Requires-Dist: python-box>=7.3.2
|
|
41
37
|
Requires-Dist: python-decouple>=3.8
|
|
42
38
|
Requires-Dist: python-dotenv>=1.0.1
|
|
43
|
-
Requires-Dist: python-fasthtml>=0.12.6
|
|
44
39
|
Requires-Dist: pyyaml>=6.0
|
|
45
40
|
Requires-Dist: questionary>=2.1.0
|
|
46
41
|
Requires-Dist: rich>=13.9.4
|
|
47
|
-
Requires-Dist: rouge-score>=0.1.2
|
|
48
|
-
Requires-Dist: sentence-transformers>=3.4.1
|
|
49
42
|
Requires-Dist: temporalio>=1.9.0
|
|
50
43
|
Requires-Dist: thefuzz>=0.22.1
|
|
51
44
|
Requires-Dist: tiktoken>=0.8.0
|
|
@@ -53,7 +46,23 @@ Requires-Dist: toml>=0.10.2
|
|
|
53
46
|
Requires-Dist: tqdm>=4.67.1
|
|
54
47
|
Requires-Dist: uvicorn>=0.34.0
|
|
55
48
|
Requires-Dist: wd-di>=0.2.14
|
|
56
|
-
Requires-Dist:
|
|
49
|
+
Requires-Dist: websockets>=15.0.1
|
|
50
|
+
Provides-Extra: all
|
|
51
|
+
Requires-Dist: azure-identity>=1.23.0; extra == 'all'
|
|
52
|
+
Requires-Dist: azure-search-documents>=11.5.2; extra == 'all'
|
|
53
|
+
Requires-Dist: azure-storage-blob>=12.25.1; extra == 'all'
|
|
54
|
+
Requires-Dist: chromadb>=0.6.3; extra == 'all'
|
|
55
|
+
Requires-Dist: datasets>=3.2.0; extra == 'all'
|
|
56
|
+
Requires-Dist: docling>=2.18.0; extra == 'all'
|
|
57
|
+
Requires-Dist: duckduckgo-search>=7.3.2; extra == 'all'
|
|
58
|
+
Requires-Dist: markdownify>=0.14.1; extra == 'all'
|
|
59
|
+
Requires-Dist: matplotlib>=3.10.0; extra == 'all'
|
|
60
|
+
Requires-Dist: mem0ai[graph]>=0.1.101; extra == 'all'
|
|
61
|
+
Requires-Dist: nltk>=3.9.1; extra == 'all'
|
|
62
|
+
Requires-Dist: rouge-score>=0.1.2; extra == 'all'
|
|
63
|
+
Requires-Dist: sentence-transformers>=3.4.1; extra == 'all'
|
|
64
|
+
Requires-Dist: tavily-python>=0.5.0; extra == 'all'
|
|
65
|
+
Requires-Dist: zep-python>=2.0.2; extra == 'all'
|
|
57
66
|
Provides-Extra: all-tools
|
|
58
67
|
Requires-Dist: azure-identity>=1.23.0; extra == 'all-tools'
|
|
59
68
|
Requires-Dist: azure-search-documents>=11.5.2; extra == 'all-tools'
|
|
@@ -72,8 +81,17 @@ Requires-Dist: docling>=2.18.0; extra == 'basic-tools'
|
|
|
72
81
|
Requires-Dist: duckduckgo-search>=7.3.2; extra == 'basic-tools'
|
|
73
82
|
Requires-Dist: markdownify>=0.14.1; extra == 'basic-tools'
|
|
74
83
|
Requires-Dist: tavily-python>=0.5.0; extra == 'basic-tools'
|
|
84
|
+
Provides-Extra: evaluation
|
|
85
|
+
Requires-Dist: datasets>=3.2.0; extra == 'evaluation'
|
|
86
|
+
Requires-Dist: rouge-score>=0.1.2; extra == 'evaluation'
|
|
87
|
+
Requires-Dist: sentence-transformers>=3.4.1; extra == 'evaluation'
|
|
75
88
|
Provides-Extra: llm-tools
|
|
76
89
|
Requires-Dist: nltk>=3.9.1; extra == 'llm-tools'
|
|
90
|
+
Provides-Extra: memory
|
|
91
|
+
Requires-Dist: chromadb>=0.6.3; extra == 'memory'
|
|
92
|
+
Requires-Dist: matplotlib>=3.10.0; extra == 'memory'
|
|
93
|
+
Requires-Dist: mem0ai[graph]>=0.1.101; extra == 'memory'
|
|
94
|
+
Requires-Dist: zep-python>=2.0.2; extra == 'memory'
|
|
77
95
|
Description-Content-Type: text/markdown
|
|
78
96
|
|
|
79
97
|
<p align="center">
|
|
@@ -26,10 +26,10 @@ 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
28
|
flock/core/__init__.py,sha256=juwyNr3QqKXUS5-E3hlMYRhgqHgQBqgtP12OF3tUCAI,1249
|
|
29
|
-
flock/core/flock.py,sha256=
|
|
30
|
-
flock/core/flock_agent.py,sha256=
|
|
31
|
-
flock/core/flock_evaluator.py,sha256=
|
|
32
|
-
flock/core/flock_factory.py,sha256=
|
|
29
|
+
flock/core/flock.py,sha256=iR4i0_z0w2ns_iHbP7FqN--7wlsPIWch1H-BVecPs_I,38205
|
|
30
|
+
flock/core/flock_agent.py,sha256=EHI0p3axr8X364wfHMB2js16MQT7H1Awe6SzJQR7bhw,48573
|
|
31
|
+
flock/core/flock_evaluator.py,sha256=TPy6u6XX3cqkY1r9NW1w2lTwCMNW7pxhFYKLefnEbXg,1820
|
|
32
|
+
flock/core/flock_factory.py,sha256=36eOtha-XG67_kK_VadG7UQ8cMgAcd7y1k5yFkT-pR0,14017
|
|
33
33
|
flock/core/flock_module.py,sha256=ObILimpVaPnaaqYvcBYJJ20lQzfrjgTdADplaNRjHU0,7448
|
|
34
34
|
flock/core/flock_registry.py,sha256=KzdFfc3QC-Dk42G24hdf6Prp3HvGj9ymXR3TTBe-T-A,27161
|
|
35
35
|
flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
|
|
@@ -42,13 +42,10 @@ flock/core/api/models.py,sha256=seqKuzhbN37nCNO7KrcJjI2mWuwiOKCLFcJcTPvTtag,3422
|
|
|
42
42
|
flock/core/api/run_store.py,sha256=bFodJvVyWogzoezVy0cOoWWU3MdEBXf_6_5sBqCRWps,9227
|
|
43
43
|
flock/core/api/runner.py,sha256=3izg6cVk1RoR1hDIDwMAO1gi3lnLcp8DPv7AnJBYx6A,1443
|
|
44
44
|
flock/core/api/service.py,sha256=HRHs4xt-bGeSm5hdN92H1vWQtLzqZalhZxIh6iwww8Y,11381
|
|
45
|
-
flock/core/api/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
flock/core/api/ui/routes.py,sha256=nS-wWO94mshE5ozWfOQZ-HOvtes_1qxDVcqpMZtU5JQ,8885
|
|
47
|
-
flock/core/api/ui/utils.py,sha256=V7PqYHNK519hFJ8jvvwf7bGpbBXCRz_HQG3BDCCqlNA,4802
|
|
48
45
|
flock/core/context/context.py,sha256=zdQuB1YWPJmQVv_2_sm1HK7FSnusa3Jl-83PcTuaLUk,7791
|
|
49
46
|
flock/core/context/context_manager.py,sha256=FANSWa6DEhdhtZ7t_9Gza0v80UdpoDOhHbfVOccmjkA,1181
|
|
50
47
|
flock/core/context/context_vars.py,sha256=ASPA29hpENWub4mgRoG62FtTVakCHQZfn6IhJQKe3C8,347
|
|
51
|
-
flock/core/evaluation/utils.py,sha256=
|
|
48
|
+
flock/core/evaluation/utils.py,sha256=S5M0uTFcClphZsR5EylEzrRNK-1434yImiGYL4pR_5o,15380
|
|
52
49
|
flock/core/execution/batch_executor.py,sha256=mHwCI-DHqApCv_EVCN0ZOUd-LCQLjREpxKbAUPC0pcY,15266
|
|
53
50
|
flock/core/execution/evaluation_executor.py,sha256=D9EO0sU-2qWj3vomjmUUi-DOtHNJNFRf30kGDHuzREE,17702
|
|
54
51
|
flock/core/execution/local_executor.py,sha256=rnIQvaJOs6zZORUcR3vvyS6LPREDJTjaygl_Db0M8ao,952
|
|
@@ -79,7 +76,7 @@ flock/core/mcp/types/handlers.py,sha256=mhAoSS6vA3K7YP_mF9Sb2Zn2RvFM8fXxtbwC4zgU
|
|
|
79
76
|
flock/core/mcp/types/types.py,sha256=NFVFv0BXy4P79SGe8rKBO4VH41xkpF6Y-yvU3Fmzx6w,4872
|
|
80
77
|
flock/core/mcp/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
78
|
flock/core/mcp/util/helpers.py,sha256=Xlf4iKW_lZxsVMTRoOnV29JsJfAppfmEJrb6sIcoCH4,636
|
|
82
|
-
flock/core/mixin/dspy_integration.py,sha256=
|
|
79
|
+
flock/core/mixin/dspy_integration.py,sha256=LQN4cfcG6Myi6kX0-2bKCuK1K_k_lu3SNaTdHHk3lEU,17745
|
|
83
80
|
flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgweoxI,5121
|
|
84
81
|
flock/core/serialization/__init__.py,sha256=CML7fPgG6p4c0CDBlJ_uwV1aZZhJKK9uy3IoIHfO87w,431
|
|
85
82
|
flock/core/serialization/callable_registry.py,sha256=sUZECTZWsM3fJ8FDRQ-FgLNW9hF26nY17AD6fJKADMc,1419
|
|
@@ -96,7 +93,7 @@ flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,224
|
|
|
96
93
|
flock/core/util/spliter.py,sha256=rDLnZX158PWkmW8vi2UfMLAMRXcHQFUIydAABd-lDGw,7154
|
|
97
94
|
flock/evaluators/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
98
95
|
flock/evaluators/declarative/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
99
|
-
flock/evaluators/declarative/declarative_evaluator.py,sha256=
|
|
96
|
+
flock/evaluators/declarative/declarative_evaluator.py,sha256=tulTpUOXhF-wMe5a9ULpsCiS1o2Z-DOXOUTqOSzVYqI,7397
|
|
100
97
|
flock/evaluators/memory/memory_evaluator.py,sha256=ySwz7kcc8suXMJ7gKNSWThW8iOMlE8lUcUzEAHvv8rw,3559
|
|
101
98
|
flock/evaluators/test/test_case_evaluator.py,sha256=3Emcoty0LOLLBIuPGxSpKphuZC9Fu1DTr1vbGg-hd0Q,1233
|
|
102
99
|
flock/evaluators/zep/zep_evaluator.py,sha256=6_5vTdU0yJAH8I8w3-MPXiAZx6iUPhAVCsHjrHzkPLM,2058
|
|
@@ -492,7 +489,7 @@ flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
492
489
|
flock/webapp/app/chat.py,sha256=d5a_mr3H2nuWNFSpSlI_HyqX-J_4krndd4A-8S25EKM,28679
|
|
493
490
|
flock/webapp/app/config.py,sha256=lqmneujnNZk-EFJV5cWpvxkqisxH3T3zT_YOI0JYThE,4809
|
|
494
491
|
flock/webapp/app/dependencies.py,sha256=JUcwY1N6SZplU141lMN2wk9dOC9er5HCedrKTJN9wJk,5533
|
|
495
|
-
flock/webapp/app/main.py,sha256=
|
|
492
|
+
flock/webapp/app/main.py,sha256=g3kjtzJOC0UzWBBT4D9KyBKJxQWM1TkxHgsDaFqNuGs,54247
|
|
496
493
|
flock/webapp/app/models_ui.py,sha256=vrEBLbhEp6FziAgBSFOLT1M7ckwadsTdT7qus5_NduE,329
|
|
497
494
|
flock/webapp/app/theme_mapper.py,sha256=QzWwLWpED78oYp3FjZ9zxv1KxCyj43m8MZ0fhfzz37w,34302
|
|
498
495
|
flock/webapp/app/utils.py,sha256=RF8DMKKAj1XPmm4txUdo2OdswI1ATQ7cqUm6G9JFDzA,2942
|
|
@@ -557,8 +554,8 @@ flock/workflow/agent_execution_activity.py,sha256=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R
|
|
|
557
554
|
flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
|
|
558
555
|
flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
|
|
559
556
|
flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
|
|
560
|
-
flock_core-0.4.
|
|
561
|
-
flock_core-0.4.
|
|
562
|
-
flock_core-0.4.
|
|
563
|
-
flock_core-0.4.
|
|
564
|
-
flock_core-0.4.
|
|
557
|
+
flock_core-0.4.509.dist-info/METADATA,sha256=NI5RWK5HlQZIAxaid8PmUmx-liIfeP64Zg1ptSbEyC4,22584
|
|
558
|
+
flock_core-0.4.509.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
559
|
+
flock_core-0.4.509.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
560
|
+
flock_core-0.4.509.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
561
|
+
flock_core-0.4.509.dist-info/RECORD,,
|
flock/core/api/ui/__init__.py
DELETED
|
File without changes
|