flock-core 0.4.0b13__py3-none-any.whl → 0.4.0b15__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.

@@ -495,6 +495,13 @@ def execute_flock_batch(flock: Flock):
495
495
  default="batch_results.csv",
496
496
  ).ask()
497
497
 
498
+ hide_columns = questionary.text(
499
+ "Hide columns (comma-separated - leave blank for hiding no columns):",
500
+ default="",
501
+ ).ask()
502
+
503
+ hide_columns = hide_columns.split(",") if hide_columns else []
504
+
498
505
  # Logging options
499
506
  enable_logging = questionary.confirm(
500
507
  "Enable detailed logging?",
@@ -559,6 +566,7 @@ def execute_flock_batch(flock: Flock):
559
566
  return_errors=True,
560
567
  silent_mode=silent_mode,
561
568
  write_to_csv=write_to_csv,
569
+ hide_columns=hide_columns,
562
570
  )
563
571
 
564
572
  # Display results summary
@@ -165,7 +165,8 @@ def _view_agent_details(agent: FlockAgent):
165
165
  basic_info.add_row("Description", str(agent.description))
166
166
  basic_info.add_row("Input", str(agent.input))
167
167
  basic_info.add_row("Output", str(agent.output))
168
- basic_info.add_row("Use Cache", str(agent.use_cache))
168
+ basic_info.add_row("Write to File", str(agent.write_to_file))
169
+ basic_info.add_row("Wait for input", str(agent.wait_for_input))
169
170
 
170
171
  console.print(Panel(basic_info, title="Basic Information"))
171
172
 
@@ -52,6 +52,8 @@ class BatchProcessor:
52
52
  return_errors: bool = False,
53
53
  silent_mode: bool = False,
54
54
  write_to_csv: str | None = None,
55
+ hide_columns: list[str] | None = None,
56
+ delimiter: str = ",",
55
57
  ) -> list[Box | dict | None | Exception]:
56
58
  """Runs the specified agent/workflow for each item in a batch asynchronously.
57
59
 
@@ -70,6 +72,7 @@ class BatchProcessor:
70
72
  return_errors: If True, return Exception objects for failed runs instead of raising.
71
73
  silent_mode: If True, suppress output and show progress bar instead.
72
74
  write_to_csv: Path to save results as CSV file.
75
+ hide_columns: List of column names to hide from output.
73
76
 
74
77
  Returns:
75
78
  List containing results (Box/dict), None (if error and not return_errors),
@@ -81,7 +84,9 @@ class BatchProcessor:
81
84
  Exception: First exception from a run if return_errors is False.
82
85
  """
83
86
  effective_use_temporal = (
84
- use_temporal if use_temporal is not None else self.enable_temporal
87
+ use_temporal
88
+ if use_temporal is not None
89
+ else self.flock.enable_temporal
85
90
  )
86
91
  exec_mode = (
87
92
  "Temporal"
@@ -268,9 +273,11 @@ class BatchProcessor:
268
273
  if write_to_csv:
269
274
  try:
270
275
  df = pd.DataFrame(results)
276
+ if hide_columns:
277
+ df = df.drop(columns=hide_columns)
271
278
  # create write_to_csv directory if it doesn't exist
272
279
  Path(write_to_csv).parent.mkdir(parents=True, exist_ok=True)
273
- df.to_csv(write_to_csv, index=False)
280
+ df.to_csv(write_to_csv, index=False, sep=delimiter)
274
281
  logger.info(f"Results written to CSV file: {write_to_csv}")
275
282
  except Exception as e:
276
283
  logger.error(f"Failed to write results to CSV: {e}")
@@ -290,6 +297,8 @@ class BatchProcessor:
290
297
  return_errors: bool = False,
291
298
  silent_mode: bool = False,
292
299
  write_to_csv: str | None = None,
300
+ hide_columns: list[str] | None = None,
301
+ delimiter: str = ",",
293
302
  ) -> list[Box | dict | None | Exception]:
294
303
  """Synchronous wrapper for run_batch_async."""
295
304
  # (Standard asyncio run wrapper - same as in previous suggestion)
@@ -313,6 +322,8 @@ class BatchProcessor:
313
322
  return_errors=return_errors,
314
323
  silent_mode=silent_mode,
315
324
  write_to_csv=write_to_csv,
325
+ hide_columns=hide_columns,
326
+ delimiter=delimiter,
316
327
  )
317
328
 
318
329
  if asyncio.get_event_loop() is loop and not loop.is_running():
flock/core/flock.py CHANGED
@@ -442,6 +442,8 @@ class Flock(BaseModel, Serializable):
442
442
  return_errors: bool = False,
443
443
  silent_mode: bool = False,
444
444
  write_to_csv: str | None = None,
445
+ hide_columns: list[str] | None = None,
446
+ delimiter: str = ",",
445
447
  ) -> list[Box | dict | None | Exception]:
446
448
  """Runs the specified agent/workflow for each item in a batch asynchronously (delegated)."""
447
449
  # Import processor locally
@@ -460,6 +462,8 @@ class Flock(BaseModel, Serializable):
460
462
  return_errors=return_errors,
461
463
  silent_mode=silent_mode,
462
464
  write_to_csv=write_to_csv,
465
+ hide_columns=hide_columns,
466
+ delimiter=delimiter,
463
467
  )
464
468
 
465
469
  def run_batch(
@@ -475,6 +479,8 @@ class Flock(BaseModel, Serializable):
475
479
  return_errors: bool = False,
476
480
  silent_mode: bool = False,
477
481
  write_to_csv: str | None = None,
482
+ hide_columns: list[str] | None = None,
483
+ delimiter: str = ",",
478
484
  ) -> list[Box | dict | None | Exception]:
479
485
  """Synchronous wrapper for run_batch_async."""
480
486
  # (Standard asyncio run wrapper logic)
@@ -498,6 +504,8 @@ class Flock(BaseModel, Serializable):
498
504
  return_errors=return_errors,
499
505
  silent_mode=silent_mode,
500
506
  write_to_csv=write_to_csv,
507
+ hide_columns=hide_columns,
508
+ delimiter=delimiter,
501
509
  )
502
510
 
503
511
  if asyncio.get_event_loop() is loop and not loop.is_running():
flock/core/flock_agent.py CHANGED
@@ -2,10 +2,15 @@
2
2
  """FlockAgent is the core, declarative base class for all agents in the Flock framework."""
3
3
 
4
4
  import asyncio
5
+ import json
6
+ import os
5
7
  from abc import ABC
6
8
  from collections.abc import Callable
9
+ from datetime import datetime
7
10
  from typing import TYPE_CHECKING, Any, TypeVar
8
11
 
12
+ from flock.core.serialization.json_encoder import FlockJSONEncoder
13
+
9
14
  if TYPE_CHECKING:
10
15
  from flock.core.context.context import FlockContext
11
16
  from flock.core.flock_evaluator import FlockEvaluator
@@ -14,6 +19,7 @@ if TYPE_CHECKING:
14
19
 
15
20
  from opentelemetry import trace
16
21
  from pydantic import BaseModel, Field
22
+ from rich.console import Console
17
23
 
18
24
  # Core Flock components (ensure these are importable)
19
25
  from flock.core.context.context import FlockContext
@@ -32,6 +38,8 @@ from flock.core.serialization.serialization_utils import (
32
38
  serialize_item,
33
39
  )
34
40
 
41
+ console = Console()
42
+
35
43
  logger = get_logger("agent")
36
44
  tracer = trace.get_tracer(__name__)
37
45
  T = TypeVar("T", bound="FlockAgent")
@@ -73,9 +81,13 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
73
81
  description="List of callable tools the agent can use. These must be registered.",
74
82
  )
75
83
  )
76
- use_cache: bool = Field(
77
- default=True,
78
- description="Enable caching for the agent's evaluator (if supported).",
84
+ write_to_file: bool = Field(
85
+ default=False,
86
+ description="Write the agent's output to a file.",
87
+ )
88
+ wait_for_input: bool = Field(
89
+ default=False,
90
+ description="Wait for user input after the agent's output is displayed.",
79
91
  )
80
92
 
81
93
  # --- Components ---
@@ -169,6 +181,11 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
169
181
  try:
170
182
  for module in self.get_enabled_modules():
171
183
  await module.terminate(self, inputs, result, self.context)
184
+
185
+ if self.write_to_file:
186
+ self._save_output(self.name, result)
187
+ if self.wait_for_input:
188
+ console.input(prompt="Press Enter to continue...")
172
189
  except Exception as module_error:
173
190
  logger.error(
174
191
  "Error during terminate",
@@ -356,6 +373,28 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
356
373
 
357
374
  # --- Serialization Implementation ---
358
375
 
376
+ def _save_output(self, agent_name: str, result: dict[str, Any]) -> None:
377
+ """Save output to file if configured."""
378
+ if not self.write_to_file:
379
+ return
380
+
381
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
382
+ filename = f"{agent_name}_output_{timestamp}.json"
383
+ filepath = os.path.join("output/", filename)
384
+ os.makedirs("output/", exist_ok=True)
385
+
386
+ output_data = {
387
+ "agent": agent_name,
388
+ "timestamp": timestamp,
389
+ "output": result,
390
+ }
391
+
392
+ try:
393
+ with open(filepath, "w") as f:
394
+ json.dump(output_data, f, indent=2, cls=FlockJSONEncoder)
395
+ except Exception as e:
396
+ logger.warning(f"Failed to save output to file: {e}")
397
+
359
398
  def to_dict(self) -> dict[str, Any]:
360
399
  """Convert instance to dictionary representation suitable for serialization."""
361
400
  from flock.core.flock_registry import get_registry
@@ -63,14 +63,14 @@ class FlockFactory:
63
63
  model=model,
64
64
  description=description,
65
65
  evaluator=evaluator,
66
+ write_to_file=write_to_file,
67
+ wait_for_input=wait_for_input,
66
68
  )
67
69
  output_config = OutputModuleConfig(
68
70
  render_table=enable_rich_tables,
69
71
  theme=output_theme,
70
- wait_for_input=wait_for_input,
71
72
  no_output=no_output,
72
73
  print_context=print_context,
73
- write_to_file=write_to_file,
74
74
  )
75
75
  output_module = OutputModule("output", config=output_config)
76
76
 
@@ -415,14 +415,12 @@ class ThemedAgentResultFormatter:
415
415
  theme: OutputTheme = OutputTheme.afterglow,
416
416
  max_length: int = -1,
417
417
  render_table: bool = True,
418
- wait_for_input: bool = False,
419
418
  ):
420
419
  """Initialize the formatter with a theme and optional max length."""
421
420
  self.theme = theme
422
421
  self.styles = None
423
422
  self.max_length = max_length
424
423
  self.render_table = render_table
425
- self.wait_for_input = wait_for_input
426
424
 
427
425
  def format_result(
428
426
  self,
@@ -546,5 +544,3 @@ class ThemedAgentResultFormatter:
546
544
  styles=styles,
547
545
  )
548
546
  console.print(panel)
549
- if self.wait_for_input:
550
- console.input(prompt="Press Enter to continue...")
@@ -93,6 +93,7 @@ class DeclarativeEvaluator(
93
93
 
94
94
  streaming_task = dspy.streamify(agent_task)
95
95
  stream_generator: Generator = streaming_task(**inputs)
96
+ delta_content = ""
96
97
 
97
98
  console.print("\n")
98
99
  async for chunk in stream_generator:
@@ -117,7 +118,7 @@ class DeclarativeEvaluator(
117
118
  logger.info(f"Evaluating agent '{agent.name}' without streaming.")
118
119
  try:
119
120
  # Ensure the call is awaited if the underlying task is async
120
- result_obj = await agent_task(**inputs)
121
+ result_obj = agent_task(**inputs)
121
122
  result_dict = self._process_result(result_obj, inputs)
122
123
  return result_dict
123
124
  except Exception as e:
@@ -0,0 +1,36 @@
1
+ from typing import Any
2
+
3
+ from pydantic import Field
4
+
5
+ from flock.core.flock_agent import FlockAgent
6
+ from flock.core.flock_evaluator import FlockEvaluator, FlockEvaluatorConfig
7
+ from flock.core.mixin.dspy_integration import DSPyIntegrationMixin
8
+
9
+
10
+ class TestCaseEvaluatorConfig(FlockEvaluatorConfig):
11
+ """Configuration for the TestCaseEvaluator."""
12
+
13
+ pass
14
+
15
+
16
+ class TestCaseEvaluator(FlockEvaluator, DSPyIntegrationMixin):
17
+ """Evaluator for test cases."""
18
+
19
+ config: TestCaseEvaluatorConfig = Field(
20
+ default_factory=TestCaseEvaluatorConfig,
21
+ description="Evaluator configuration",
22
+ )
23
+
24
+ async def evaluate(
25
+ self, agent: FlockAgent, inputs: dict[str, Any], tools: list[Any]
26
+ ) -> dict[str, Any]:
27
+ _dspy_signature = self.create_dspy_signature_class(
28
+ agent.name,
29
+ agent.description,
30
+ f"{agent.input} -> {agent.output}",
31
+ )
32
+ output_field_names = list(_dspy_signature.output_fields.keys())
33
+ result = {}
34
+ for output_field_name in output_field_names:
35
+ result[output_field_name] = "Test Result"
36
+ return result
@@ -1,8 +1,6 @@
1
1
  """Output formatting and display functionality for agents."""
2
2
 
3
- import json
4
3
  import os
5
- from datetime import datetime
6
4
  from typing import TYPE_CHECKING, Any
7
5
 
8
6
  from pydantic import Field
@@ -19,7 +17,6 @@ from flock.core.logging.formatters.themed_formatter import (
19
17
  )
20
18
  from flock.core.logging.formatters.themes import OutputTheme
21
19
  from flock.core.logging.logging import get_logger
22
- from flock.core.serialization.json_encoder import FlockJSONEncoder
23
20
 
24
21
  # from flock.core.logging.formatters.themes import OutputTheme
25
22
  # from flock.core.logging.logging import get_logger
@@ -40,13 +37,6 @@ class OutputModuleConfig(FlockModuleConfig):
40
37
  max_length: int = Field(
41
38
  default=1000, description="Maximum length for displayed output"
42
39
  )
43
- wait_for_input: bool = Field(
44
- default=False,
45
- description="Whether to wait for user input after display",
46
- )
47
- write_to_file: bool = Field(
48
- default=False, description="Whether to save output to file"
49
- )
50
40
  output_dir: str = Field(
51
41
  default="output/", description="Directory for saving output files"
52
42
  )
@@ -84,13 +74,10 @@ class OutputModule(FlockModule):
84
74
 
85
75
  def __init__(self, name: str, config: OutputModuleConfig):
86
76
  super().__init__(name=name, config=config)
87
- if self.config.write_to_file:
88
- os.makedirs(self.config.output_dir, exist_ok=True)
89
77
  self._formatter = ThemedAgentResultFormatter(
90
78
  theme=self.config.theme,
91
79
  max_length=self.config.max_length,
92
80
  render_table=self.config.render_table,
93
- wait_for_input=self.config.wait_for_input,
94
81
  )
95
82
 
96
83
  def _format_value(self, value: Any, key: str) -> str:
@@ -146,34 +133,6 @@ class OutputModule(FlockModule):
146
133
  )
147
134
  return text
148
135
 
149
- def _save_output(self, agent_name: str, result: dict[str, Any]) -> None:
150
- """Save output to file if configured."""
151
- if not self.config.write_to_file:
152
- return
153
-
154
- timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
155
- filename = f"{agent_name}_output_{timestamp}.json"
156
- filepath = os.path.join(self.config.output_dir, filename)
157
-
158
- output_data = {
159
- "agent": agent_name,
160
- "timestamp": timestamp,
161
- "output": result,
162
- }
163
-
164
- if self.config.show_metadata:
165
- output_data["metadata"] = {
166
- "formatted_at": datetime.now().isoformat(),
167
- "theme": self.config.theme.value,
168
- "max_length": self.config.max_length,
169
- }
170
-
171
- try:
172
- with open(filepath, "w") as f:
173
- json.dump(output_data, f, indent=2, cls=FlockJSONEncoder)
174
- except Exception as e:
175
- logger.warning(f"Failed to save output to file: {e}")
176
-
177
136
  async def post_evaluate(
178
137
  self,
179
138
  agent: "FlockAgent",
@@ -191,8 +150,6 @@ class OutputModule(FlockModule):
191
150
 
192
151
  if is_silent:
193
152
  logger.debug("Output suppressed (config or batch silent mode).")
194
- # Still save to file if configured, even in silent mode
195
- self._save_output(agent.name, result)
196
153
  return result # Skip console output
197
154
 
198
155
  logger.debug("Formatting and displaying output to console.")
@@ -223,9 +180,6 @@ class OutputModule(FlockModule):
223
180
  )
224
181
  self._formatter.display_result(result_to_display, agent.name)
225
182
 
226
- # Save to file if configured
227
- self._save_output(agent.name, result) # Save the original result
228
-
229
183
  return result # Return the original, unmodified result
230
184
 
231
185
  def update_theme(self, new_theme: OutputTheme) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.0b13
3
+ Version: 0.4.0b15
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -4,13 +4,13 @@ flock/cli/config.py,sha256=5DvFLObOx3ObisHnc9JfnUBnK83y0CBsUQzXfxPZve0,138
4
4
  flock/cli/constants.py,sha256=ZyXtTW91P1hUMkbMwmOwp_JEL5e9-YkcuM3vHM5glP4,978
5
5
  flock/cli/create_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
6
6
  flock/cli/create_flock.py,sha256=wGS3azisS0QWYIDKQswoKDDJ7B0udU2o5b2IwacMN84,8634
7
- flock/cli/execute_flock.py,sha256=-rujYj_gLvmtf8Xiax2Ih631ibPw_-nyZIyraKzPvUc,18300
7
+ flock/cli/execute_flock.py,sha256=udR0kze_E_dOybT7BC-HbfEfRZVrz3BwIMirM_WI6jE,18576
8
8
  flock/cli/load_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
9
9
  flock/cli/load_examples.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
10
10
  flock/cli/load_flock.py,sha256=sfZ9B9aiyC5TCEbn1xR5Yd5SoaVji6MBNYzXlWOpoZ4,7111
11
11
  flock/cli/load_release_notes.py,sha256=qFcgUrMddAE_TP6x1P-6ZywTUjTknfhTDW5LTxtg1yk,599
12
12
  flock/cli/loaded_flock_cli.py,sha256=IkeYvw52Bh3uFIm2O5xgppJ9KaY7jfh0VSFkiI46tTg,6855
13
- flock/cli/manage_agents.py,sha256=wkNF0IqNFfePrFueR57SILPW885IPqs3U8Cp-fcPPmo,12710
13
+ flock/cli/manage_agents.py,sha256=Psl014LCrJmBgwrjsp7O3WNlWvQmVd_IDud3rd0lnLI,12786
14
14
  flock/cli/registry_management.py,sha256=mAHy3wT97YgODR0gVOkTXDqR5NIPzM-E-z9dEtw9-tw,29790
15
15
  flock/cli/runner.py,sha256=TebsqwAfc_bTGzr-id6frgZXPCDJ5Xu1pBd9bZnqIDg,1120
16
16
  flock/cli/settings.py,sha256=Z_TXBzCYlCmSaKrJ_CQCdYy-Cj29gpI4kbC_2KzoKqg,27025
@@ -18,10 +18,10 @@ flock/cli/view_results.py,sha256=dOzK0O1FHSIDERnx48y-2Xke9BkOHS7pcOhs64AyIg0,781
18
18
  flock/cli/yaml_editor.py,sha256=K3N0bh61G1TSDAZDnurqW9e_-hO6CtSQKXQqlDhCjVo,12527
19
19
  flock/cli/assets/release_notes.md,sha256=bqnk50jxM3w5uY44Dc7MkdT8XmRREFxrVBAG9XCOSSU,4896
20
20
  flock/core/__init__.py,sha256=p7lmQULRu9ejIAELfanZiyMhW0CougIPvyFHW2nqBFQ,847
21
- flock/core/flock.py,sha256=zQUpITLx_CMhJRnft4AWQDfYj85FhUlT-Ank5c-fSko,25146
22
- flock/core/flock_agent.py,sha256=uFVr8eVWZ4uowH659fdOvVuBD4fx695Zm9UB9pOQKDU,32223
21
+ flock/core/flock.py,sha256=g67jyWozK52ymqGEmYxMgXSkiL9ZpTXoDZMxwtWmRo4,25444
22
+ flock/core/flock_agent.py,sha256=ZmkiHd2oLao_263b7nmf26TQfyevX9_HNlhHPIkd3UM,33497
23
23
  flock/core/flock_evaluator.py,sha256=dOXZeDOGZcAmJ9ahqq_2bdGUU1VOXY4skmwTVpAjiVw,1685
24
- flock/core/flock_factory.py,sha256=ym2ZIdDXzV_Ym5JdRUvFJRIkLIVCj017M6-AXQ7VkW8,2885
24
+ flock/core/flock_factory.py,sha256=qfeuAr6e028gbkxjj5jsq_HHqrWsmKHreJD6-QT8ets,2885
25
25
  flock/core/flock_module.py,sha256=96aFVYAgwpKN53xGbivQDUpikOYGFCxK5mqhclOcxY0,3003
26
26
  flock/core/flock_registry.py,sha256=ekYpQgSkZVnbyPbl8gA7nf54brt94rYZZBe2RwEGtUc,20828
27
27
  flock/core/flock_router.py,sha256=A5GaxcGvtiFlRLHBTW7okh5RDm3BdKam2uXvRHRaj7k,2187
@@ -38,7 +38,7 @@ flock/core/context/context.py,sha256=8bjRLZ74oacRNBaHmDNXdQKfB-95poF7Pp03n2k0zcQ
38
38
  flock/core/context/context_manager.py,sha256=FANSWa6DEhdhtZ7t_9Gza0v80UdpoDOhHbfVOccmjkA,1181
39
39
  flock/core/context/context_vars.py,sha256=ASPA29hpENWub4mgRoG62FtTVakCHQZfn6IhJQKe3C8,347
40
40
  flock/core/evaluation/utils.py,sha256=ZJkIMC9YT-HA2SPCZ4_bQ98isW1i6nbltVEYbjze-b0,12827
41
- flock/core/execution/batch_executor.py,sha256=0WnC33bs_gw9EYq9iDkrPdrgPkjYECfyeO7oLZvEGmI,13318
41
+ flock/core/execution/batch_executor.py,sha256=nvsFOVaH4c4uPw_gwZ5jCIULpK59EL1kmcoPTja5kko,13745
42
42
  flock/core/execution/evaluation_executor.py,sha256=D9EO0sU-2qWj3vomjmUUi-DOtHNJNFRf30kGDHuzREE,17702
43
43
  flock/core/execution/local_executor.py,sha256=rnIQvaJOs6zZORUcR3vvyS6LPREDJTjaygl_Db0M8ao,952
44
44
  flock/core/execution/temporal_executor.py,sha256=OF_uXgQsoUGp6U1ZkcuaidAEKyH7XDtbfrtdF10XQ_4,1675
@@ -49,7 +49,7 @@ flock/core/logging/telemetry.py,sha256=3E9Tyj6AUR6A5RlIufcdCdWm5BAA7tbOsCa7lHoUQ
49
49
  flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
50
50
  flock/core/logging/formatters/enum_builder.py,sha256=LgEYXUv84wK5vwHflZ5h8HBGgvLH3sByvUQe8tZiyY0,981
51
51
  flock/core/logging/formatters/theme_builder.py,sha256=Wnaal3HuUDA4HFg9tdql1BxYwK83ACOZBBQy-DXnxcA,17342
52
- flock/core/logging/formatters/themed_formatter.py,sha256=kCmGXLD8yzhfzENJUQOsqX3Sdo2PuN8JIZvBBWO22JI,20834
52
+ flock/core/logging/formatters/themed_formatter.py,sha256=f9BiIBUk3cLma6eAPbW8BnvUqTzPzcPhjLNQoia7pI4,20656
53
53
  flock/core/logging/formatters/themes.py,sha256=80BRJJB0LZr11N0yQw2f8vdb_9179qjQO8PoeBaLMN0,10680
54
54
  flock/core/logging/span_middleware/baggage_span_processor.py,sha256=gJfRl8FeB6jdtghTaRHCrOaTo4fhPMRKgjqtZj-8T48,1118
55
55
  flock/core/logging/telemetry_exporter/base_exporter.py,sha256=rQJJzS6q9n2aojoSqwCnl7ZtHrh5LZZ-gkxUuI5WfrQ,1124
@@ -75,17 +75,18 @@ flock/core/util/file_path_utils.py,sha256=Odf7uU32C-x1KNighbNERSiMtkzW4h8laABIoF
75
75
  flock/core/util/hydrator.py,sha256=6qNwOwCZB7r6y25BZ--0PGofrAlfMaXbDKFQeP5NLts,11196
76
76
  flock/core/util/input_resolver.py,sha256=g9vDPdY4OH-G7qjas5ksGEHueokHGFPMoLOvC-ngeLo,5984
77
77
  flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,2244
78
- flock/evaluators/declarative/declarative_evaluator.py,sha256=kGhxkFJx8T0JXsr27rdqmB4nwq28yMDCOwPRJ-C2DOA,4778
78
+ flock/evaluators/declarative/declarative_evaluator.py,sha256=j3xCEOhKHMvYtI43K2uqqJk068Lw94ch8GtWOmmJX7g,4803
79
79
  flock/evaluators/memory/azure_search_evaluator.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  flock/evaluators/memory/memory_evaluator.py,sha256=SmerXyNaqm8DTV0yw-WqWkn9DXIf6x-nPG1eyTV6NY8,3452
81
81
  flock/evaluators/natural_language/natural_language_evaluator.py,sha256=6nVEeh8_uwv_h-d3FWlA0GbzDzRtdhvxCGKirHtyvOU,2012
82
+ flock/evaluators/test/test_case_evaluator.py,sha256=9vVhYbRrq68TNn8wo9z_yFD4UydhPKlygzy0mDmLLJU,1124
82
83
  flock/evaluators/zep/zep_evaluator.py,sha256=9NOELl7JAuUcx_FQrxY6b-_vN3MjwDyW7ZppPIGeCFc,1954
83
84
  flock/modules/azure-search/azure_search_module.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
85
  flock/modules/callback/callback_module.py,sha256=volGGgHtY19qj1wHR6m5a_hmXSbV3Ca3uY6I76YmcfU,2833
85
86
  flock/modules/memory/memory_module.py,sha256=bSkdFBW-Pp5ldHhXi8v4kfRM7zknfLR2fsOtbTosucI,14916
86
87
  flock/modules/memory/memory_parser.py,sha256=FLH7GL8XThvHiCMfX3eQH7Sz-f62fzhAUmO6_gaDI7U,4372
87
88
  flock/modules/memory/memory_storage.py,sha256=CNcLDMmvv0x7Z3YMKr6VveS_VCa7rKPw8l2d-XgqokA,27246
88
- flock/modules/output/output_module.py,sha256=lcQGQgwRl8luJs2gQ7SoPcXVMkrdFOJRxN33dShYS24,9424
89
+ flock/modules/output/output_module.py,sha256=2yKC2jBPmWIVPSSolYg8UuJ1VMm-Wd9ncrIl-EIG29s,7697
89
90
  flock/modules/performance/metrics_module.py,sha256=UD9OjY4-zAvauMD7YyDYqE1gyIhzpdr3JkBT8j9knxY,16790
90
91
  flock/modules/zep/zep_module.py,sha256=x7JG6O6xnwwum0RETIqKYbA3xzdcvX2aUuns0Cl0c2Q,6014
91
92
  flock/platform/docker_tools.py,sha256=fpA7-6rJBjPOUBLdQP4ny2QPgJ_042nmqRn5GtKnoYw,1445
@@ -439,8 +440,8 @@ flock/workflow/activities.py,sha256=eVZDnxGJl_quNO-UTV3YgvTV8LrRaHN3QDAA1ANKzac,
439
440
  flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
440
441
  flock/workflow/temporal_setup.py,sha256=VWBgmBgfTBjwM5ruS_dVpA5AVxx6EZ7oFPGw4j3m0l0,1091
441
442
  flock/workflow/workflow.py,sha256=I9MryXW_bqYVTHx-nl2epbTqeRy27CAWHHA7ZZA0nAk,1696
442
- flock_core-0.4.0b13.dist-info/METADATA,sha256=-oZxxLDqjStFoVTtT5Ss9sk-EFpgsyINBBBJYYq7i6I,21101
443
- flock_core-0.4.0b13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
444
- flock_core-0.4.0b13.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
445
- flock_core-0.4.0b13.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
446
- flock_core-0.4.0b13.dist-info/RECORD,,
443
+ flock_core-0.4.0b15.dist-info/METADATA,sha256=JpQYGvSIRTmUQYKmPhe4uhDLhVr7-ZvdsPH0KGy0tbc,21101
444
+ flock_core-0.4.0b15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
445
+ flock_core-0.4.0b15.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
446
+ flock_core-0.4.0b15.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
447
+ flock_core-0.4.0b15.dist-info/RECORD,,