flock-core 0.4.5__py3-none-any.whl → 0.4.504__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of flock-core might be problematic. Click here for more details.

flock/cli/create_flock.py CHANGED
@@ -74,19 +74,12 @@ def create_flock():
74
74
  # ).ask()
75
75
  enable_temporal = False
76
76
 
77
- # Logging configuration
78
- enable_logging = questionary.confirm(
79
- "Enable logging?",
80
- default=True,
81
- ).ask()
82
-
83
77
  # Create the Flock instance
84
78
  flock = Flock(
85
79
  name=flock_name,
86
80
  model=model,
87
81
  description=description,
88
82
  enable_temporal=enable_temporal,
89
- enable_logging=enable_logging,
90
83
  )
91
84
 
92
85
  console.print("\n[green]✓[/] Flock created successfully!")
@@ -12,6 +12,7 @@ from rich.console import Console
12
12
  from rich.panel import Panel
13
13
 
14
14
  from flock.core.flock import Flock
15
+ from flock.core.logging.logging import configure_logging
15
16
  from flock.core.util.cli_helper import init_console
16
17
 
17
18
  # Create console instance
@@ -109,9 +110,16 @@ def execute_flock(flock: Flock):
109
110
 
110
111
  # Logging options
111
112
  enable_logging = questionary.confirm(
112
- "Enable detailed logging?",
113
+ "Enable logging?",
113
114
  default=False,
114
115
  ).ask()
116
+ if enable_logging:
117
+ log_level = questionary.select(
118
+ "Minimum log level:",
119
+ choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
120
+ default="ERROR",
121
+ ).ask()
122
+ configure_logging(flock_level=log_level, external_level=log_level)
115
123
 
116
124
  # Preview input
117
125
  console.print("\n[bold]Input Preview:[/]")
@@ -130,10 +138,7 @@ def execute_flock(flock: Flock):
130
138
  console.print("\n[bold]Executing Flock...[/]")
131
139
 
132
140
  try:
133
- # Handle logging settings
134
- if enable_logging:
135
- # Enable logging through the logging configuration method
136
- flock._configure_logging(True)
141
+ # Logging was configured earlier if enabled
137
142
 
138
143
  # Run the Flock
139
144
  result = flock.run(
@@ -509,9 +514,16 @@ def execute_flock_batch(flock: Flock):
509
514
 
510
515
  # Logging options
511
516
  enable_logging = questionary.confirm(
512
- "Enable detailed logging?",
517
+ "Enable logging?",
513
518
  default=False,
514
519
  ).ask()
520
+ if enable_logging:
521
+ log_level = questionary.select(
522
+ "Minimum log level:",
523
+ choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
524
+ default="ERROR",
525
+ ).ask()
526
+ configure_logging(log_level)
515
527
 
516
528
  # Preview configuration
517
529
  console.print("\n[bold]Batch Configuration Preview:[/]")
@@ -554,9 +566,7 @@ def execute_flock_batch(flock: Flock):
554
566
  console.print("\n[bold]Executing Batch...[/]")
555
567
 
556
568
  try:
557
- # Handle logging settings
558
- if enable_logging:
559
- flock._configure_logging(True)
569
+ # Logging was already configured above if enabled
560
570
 
561
571
  # Run the batch
562
572
  results = flock.run_batch(
flock/core/flock.py CHANGED
@@ -48,7 +48,7 @@ from flock.core.context.context_manager import initialize_context
48
48
  # Assuming run_temporal_workflow is correctly placed and importable
49
49
  from flock.core.execution.temporal_executor import run_temporal_workflow
50
50
  from flock.core.flock_evaluator import FlockEvaluator # For type hint
51
- from flock.core.logging.logging import LOGGERS, get_logger, get_module_loggers
51
+ from flock.core.logging.logging import get_logger
52
52
  from flock.core.serialization.serializable import Serializable
53
53
  from flock.core.util.cli_helper import init_console
54
54
  from flock.workflow.temporal_config import TemporalWorkflowConfig
@@ -103,10 +103,6 @@ class Flock(BaseModel, Serializable):
103
103
  default=False,
104
104
  description="If True, execute workflows via Temporal; otherwise, run locally.",
105
105
  )
106
- enable_logging: bool = Field(
107
- default=False,
108
- description="If True, enable logging for the Flock instance.",
109
- )
110
106
  show_flock_banner: bool = Field(
111
107
  default=True,
112
108
  description="If True, show the Flock banner on console interactions.",
@@ -183,7 +179,6 @@ class Flock(BaseModel, Serializable):
183
179
  description: str | None = None,
184
180
  show_flock_banner: bool = True,
185
181
  enable_temporal: bool = False,
186
- enable_logging: bool | list[str] = False,
187
182
  agents: list[FlockAgent] | None = None,
188
183
  servers: list[FlockMCPServerBase] | None = None,
189
184
  temporal_config: TemporalWorkflowConfig | None = None,
@@ -200,7 +195,6 @@ class Flock(BaseModel, Serializable):
200
195
  model=model,
201
196
  description=description,
202
197
  enable_temporal=enable_temporal,
203
- enable_logging=bool(enable_logging), # Store as bool, specific loggers handled by _configure
204
198
  show_flock_banner=show_flock_banner,
205
199
  temporal_config=temporal_config,
206
200
  temporal_start_in_process_worker=temporal_start_in_process_worker,
@@ -214,8 +208,6 @@ class Flock(BaseModel, Serializable):
214
208
  self._start_input = {}
215
209
  self._mgr = FlockServerManager()
216
210
 
217
- # Set up logging based on the enable_logging flag
218
- self._configure_logging(enable_logging) # Pass original value to _configure_logging
219
211
 
220
212
  # Register passed servers
221
213
  # (need to be registered first so that agents can retrieve them from the registry)
@@ -307,35 +299,6 @@ class Flock(BaseModel, Serializable):
307
299
 
308
300
  return run
309
301
 
310
- def _configure_logging(self, enable_logging_config: bool | list[str]):
311
- """Configure logging levels based on the enable_logging flag."""
312
- is_enabled_globally = False
313
- specific_loggers_to_enable = []
314
-
315
- if isinstance(enable_logging_config, bool):
316
- is_enabled_globally = enable_logging_config
317
- elif isinstance(enable_logging_config, list):
318
- is_enabled_globally = bool(enable_logging_config) # True if list is not empty
319
- specific_loggers_to_enable = enable_logging_config
320
-
321
- # Configure core loggers
322
- for log_name in LOGGERS: # Assuming LOGGERS is a list of known logger names
323
- log_instance = get_logger(log_name)
324
- if is_enabled_globally or log_name in specific_loggers_to_enable:
325
- log_instance.enable_logging = True
326
- else:
327
- log_instance.enable_logging = False
328
-
329
- # Configure module loggers (existing ones)
330
- module_loggers = get_module_loggers() # Assuming this returns list of FlockLogger instances
331
- for mod_log in module_loggers:
332
- if is_enabled_globally or mod_log.name in specific_loggers_to_enable:
333
- mod_log.enable_logging = True
334
- else:
335
- mod_log.enable_logging = False
336
-
337
- # Update the instance's Pydantic field
338
- self.enable_logging = is_enabled_globally or bool(specific_loggers_to_enable)
339
302
 
340
303
 
341
304
  def _set_temporal_debug_flag(self):
@@ -392,7 +392,7 @@ class FlockRegistry:
392
392
  else:
393
393
  # Consider adding dynamic import attempts for types if needed,
394
394
  # but explicit registration is generally safer for types.
395
- logger.error(f"Type '{type_name}' not found in registry.")
395
+ logger.warning(f"Type '{type_name}' not found in registry. Will attempt to build it from builtins.")
396
396
  raise KeyError(
397
397
  f"Type '{type_name}' not found. Ensure it is registered."
398
398
  )
@@ -1,2 +1,6 @@
1
1
  """Flock logging system with Rich integration and structured logging support."""
2
2
 
3
+ from .logging import configure_logging
4
+
5
+ __all__ = ["configure_logging"]
6
+
@@ -10,7 +10,9 @@ Key points:
10
10
  - Outside workflows, we use Loguru with rich formatting.
11
11
  """
12
12
 
13
+ import logging
13
14
  import sys
15
+ from typing import Literal
14
16
 
15
17
  from opentelemetry import trace
16
18
 
@@ -20,6 +22,19 @@ from temporalio import workflow
20
22
  with workflow.unsafe.imports_passed_through():
21
23
  from loguru import logger as loguru_logger
22
24
 
25
+ # ENABLED_FLOCK_LOGGER_LEVELS constant removed
26
+
27
+ # Mapping from level names to numeric values
28
+ LOG_LEVELS: dict[str, int] = {
29
+ "CRITICAL": logging.CRITICAL,
30
+ "ERROR": logging.ERROR,
31
+ "WARNING": logging.WARNING,
32
+ "INFO": logging.INFO,
33
+ "DEBUG": logging.DEBUG,
34
+ "SUCCESS": 35, # Custom success level
35
+ "NO_LOGS": 100, # Special level to disable logging
36
+ }
37
+
23
38
 
24
39
  def in_workflow_context() -> bool:
25
40
  """Returns True if this code is running inside a Temporal workflow context.
@@ -85,6 +100,7 @@ COLOR_MAP = {
85
100
 
86
101
  LOGGERS = [
87
102
  "flock", # Core Flock orchestration
103
+ "flock.api", # Flock API specific logs
88
104
  "agent", # General agent operations
89
105
  "context", # Context management
90
106
  "registry", # Unified registry operations (new)
@@ -234,10 +250,55 @@ loguru_logger.add(
234
250
  colorize=True,
235
251
  format=custom_format,
236
252
  )
253
+ logging.basicConfig(level=LOG_LEVELS["NO_LOGS"])
237
254
  # Optionally add a file handler, e.g.:
238
255
  # loguru_logger.add("logs/flock.log", rotation="100 MB", retention="30 days", level="DEBUG")
239
256
 
240
257
 
258
+ def get_default_severity(level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int) -> int:
259
+ """Get the default severity for a given level."""
260
+ if isinstance(level, str):
261
+ level_str = level.upper()
262
+ return LOG_LEVELS.get(level_str, LOG_LEVELS["ERROR"])
263
+ return level
264
+
265
+
266
+ def configure_logging(flock_level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int,
267
+ external_level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int,
268
+ specific_levels: dict[str, Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int] | None = None) -> None:
269
+ """Configure both external and internal Flock logging systems.
270
+
271
+ Args:
272
+ flock_level (str | int): The default logging level (e.g., "INFO", "ERROR", "DEBUG") or numeric level for Flock logging.
273
+ external_level (str | int): The default logging level (e.g., "INFO", "ERROR", "DEBUG") or numeric level for external logging.
274
+ specific_levels (dict[str, str | int] | None, optional): A dictionary mapping
275
+ logger names to their specific logging levels. Defaults to None.
276
+ """
277
+ # Get default severity
278
+
279
+ external_severity = get_default_severity(external_level)
280
+ logging.basicConfig(level=external_severity)
281
+
282
+
283
+ flock_severity = get_default_severity(flock_level)
284
+
285
+ specific_severities = {}
286
+ if specific_levels:
287
+ for name, logger_level in specific_levels.items():
288
+ severity = get_default_severity(logger_level)
289
+ specific_severities[name] = severity
290
+
291
+ # Apply to all cached loggers
292
+ for logger_name, log_instance in _LOGGER_CACHE.items():
293
+ target_severity = flock_severity
294
+ if logger_name in specific_severities:
295
+ target_severity = specific_severities[logger_name]
296
+
297
+ log_instance.min_level_severity = target_severity
298
+
299
+
300
+
301
+
241
302
  # Define a dummy logger that does nothing
242
303
  class DummyLogger:
243
304
  """A dummy logger that does nothing when called."""
@@ -276,19 +337,17 @@ class FlockLogger:
276
337
  - Otherwise, it uses Loguru.
277
338
  """
278
339
 
279
- def __init__(self, name: str, enable_logging: bool = False):
340
+ def __init__(self, name: str, initial_min_level_severity: int):
280
341
  """Initialize the FlockLogger.
281
342
 
282
343
  Args:
283
344
  name (str): The name of the logger.
284
- enable_logging (bool, optional): Whether to enable logging. Defaults to False.
345
+ initial_min_level_severity (int): The minimum severity level for messages to be logged.
285
346
  """
286
347
  self.name = name
287
- self.enable_logging = enable_logging
348
+ self.min_level_severity = initial_min_level_severity
288
349
 
289
350
  def _get_logger(self):
290
- if not self.enable_logging:
291
- return dummy_logger
292
351
  if in_workflow_context():
293
352
  # Use Temporal's workflow.logger inside a workflow context.
294
353
  return workflow.logger
@@ -316,6 +375,10 @@ class FlockLogger:
316
375
  max_length: int = MAX_LENGTH,
317
376
  **kwargs,
318
377
  ) -> None:
378
+ current_method_severity = LOG_LEVELS["DEBUG"]
379
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
380
+ current_method_severity < self.min_level_severity:
381
+ return
319
382
  """Debug a message.
320
383
 
321
384
  Args:
@@ -334,6 +397,10 @@ class FlockLogger:
334
397
  max_length: int = MAX_LENGTH,
335
398
  **kwargs,
336
399
  ) -> None:
400
+ current_method_severity = LOG_LEVELS["INFO"]
401
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
402
+ current_method_severity < self.min_level_severity:
403
+ return
337
404
  """Info a message.
338
405
 
339
406
  Args:
@@ -352,6 +419,10 @@ class FlockLogger:
352
419
  max_length: int = MAX_LENGTH,
353
420
  **kwargs,
354
421
  ) -> None:
422
+ current_method_severity = LOG_LEVELS["WARNING"]
423
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
424
+ current_method_severity < self.min_level_severity:
425
+ return
355
426
  """Warning a message.
356
427
 
357
428
  Args:
@@ -370,6 +441,10 @@ class FlockLogger:
370
441
  max_length: int = MAX_LENGTH,
371
442
  **kwargs,
372
443
  ) -> None:
444
+ current_method_severity = LOG_LEVELS["ERROR"]
445
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
446
+ current_method_severity < self.min_level_severity:
447
+ return
373
448
  """Error a message.
374
449
 
375
450
  Args:
@@ -388,6 +463,10 @@ class FlockLogger:
388
463
  max_length: int = MAX_LENGTH,
389
464
  **kwargs,
390
465
  ) -> None:
466
+ current_method_severity = LOG_LEVELS["ERROR"] # Exception implies ERROR level
467
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
468
+ current_method_severity < self.min_level_severity:
469
+ return
391
470
  """Exception a message.
392
471
 
393
472
  Args:
@@ -406,6 +485,10 @@ class FlockLogger:
406
485
  max_length: int = MAX_LENGTH,
407
486
  **kwargs,
408
487
  ) -> None:
488
+ current_method_severity = LOG_LEVELS["SUCCESS"]
489
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
490
+ current_method_severity < self.min_level_severity:
491
+ return
409
492
  """Success a message.
410
493
 
411
494
  Args:
@@ -420,16 +503,21 @@ class FlockLogger:
420
503
  _LOGGER_CACHE: dict[str, FlockLogger] = {}
421
504
 
422
505
 
423
- def get_logger(name: str = "flock", enable_logging: bool = True) -> FlockLogger:
506
+ def get_logger(name: str = "flock") -> FlockLogger:
424
507
  """Return a cached FlockLogger instance for the given name.
425
508
 
426
- If the logger doesn't exist, create it.
427
- If it does exist, update 'enable_logging' if a new value is passed.
509
+ If the logger doesn't exist, it is created with 'enable_logging' set to False
510
+ by default (i.e., errors-only mode). Its state can then be changed by calling
511
+ the `configure_logging()` function.
512
+ If a logger with the given name already exists in the cache, its 'min_level_severity'
513
+ state is NOT modified by this function; it's simply returned.
428
514
  """
429
515
  if name not in _LOGGER_CACHE:
430
- _LOGGER_CACHE[name] = FlockLogger(name, enable_logging)
431
- else:
432
- _LOGGER_CACHE[name].enable_logging = enable_logging
516
+ # New loggers default to errors-only (min_level_severity = ERROR_SEVERITY)
517
+ # until explicitly configured by configure_logging()
518
+ _LOGGER_CACHE[name] = FlockLogger(name, LOG_LEVELS["NO_LOGS"])
519
+ # The min_level_severity state of existing or newly created loggers
520
+ # should be managed by the configure_logging() function.
433
521
  return _LOGGER_CACHE[name]
434
522
 
435
523
 
@@ -51,7 +51,7 @@ def init_console(clear_screen: bool = True, show_banner: bool = True):
51
51
  │ ▒█▀▀▀ █░░ █▀▀█ █▀▀ █░█ │
52
52
  │ ▒█▀▀▀ █░░ █░░█ █░░ █▀▄ │
53
53
  │ ▒█░░░ ▀▀▀ ▀▀▀▀ ▀▀▀ ▀░▀ │
54
- ╰━━━━━━━━━━v{__version__}━━━━━━━━╯
54
+ ╰━━━━━━━━━v{__version__}━━━━━━━━╯
55
55
  🦆 🐤 🐧 🐓
56
56
  """,
57
57
  justify="center",
@@ -244,7 +244,6 @@ async def _run_hydration_agent(
244
244
  temp_flock = Flock(
245
245
  name=f"temp_hydrator_flock_{agent_name}",
246
246
  model=hydration_model,
247
- enable_logging=False,
248
247
  show_flock_banner=False,
249
248
  )
250
249
  temp_flock.add_agent(dynamic_agent)
flock/webapp/app/main.py CHANGED
@@ -970,7 +970,7 @@ if __name__ == "__main__":
970
970
  temp_run_store = RunStore()
971
971
  # Create a default/dummy Flock instance for standalone UI testing
972
972
  # This allows the UI to function without being started by `Flock.start_api()`
973
- dev_flock_instance = Flock(name="DevStandaloneFlock", model="test/dummy", enable_logging=True, show_flock_banner=False)
973
+ dev_flock_instance = Flock(name="DevStandaloneFlock", model="test/dummy", show_flock_banner=False)
974
974
 
975
975
  set_global_flock_services(dev_flock_instance, temp_run_store)
976
976
  app.state.flock_instance = dev_flock_instance
@@ -84,7 +84,6 @@ def create_new_flock_service(
84
84
  model=effective_model,
85
85
  description=description,
86
86
  show_flock_banner=False,
87
- enable_logging=True,
88
87
  )
89
88
  default_filename = f"{name.replace(' ', '_').lower()}.flock.yaml"
90
89
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.5
3
+ Version: 0.4.504
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -36,7 +36,7 @@ Requires-Dist: pillow>=10.4.0
36
36
  Requires-Dist: prometheus-client>=0.21.1
37
37
  Requires-Dist: psutil>=6.1.1
38
38
  Requires-Dist: pydantic-settings>=2.7.1
39
- Requires-Dist: pydantic>=2.10.5
39
+ Requires-Dist: pydantic==2.10.5
40
40
  Requires-Dist: python-box>=7.3.2
41
41
  Requires-Dist: python-decouple>=3.8
42
42
  Requires-Dist: python-dotenv>=1.0.1
@@ -252,6 +252,43 @@ if __name__ == "__main__":
252
252
  <img width="300" alt="image" src="https://github.com/user-attachments/assets/34c2fe2f-6dd2-498c-a826-1687cb158755" />
253
253
  </p>
254
254
 
255
+ ### MCP Support - Declaratively connect to 1000s of different tools!
256
+
257
+ Create a server
258
+
259
+ ```python
260
+ ws_fetch_server = FlockFactory.create_mcp_server(
261
+ name="fetch_server",
262
+ enable_tools_feature=True,
263
+ connection_params=FlockFactory.WebsocketParams(
264
+ url="ws://localhost:4001/message"
265
+ ),
266
+ ```
267
+
268
+ Add it to Flock
269
+
270
+ ```python
271
+ flock = Flock(
272
+ name="mcp_testbed",
273
+ servers=[
274
+ ws_fetch_server
275
+ ]
276
+ )
277
+ ```
278
+
279
+ And tell the flock agents which server to use
280
+
281
+ ```python
282
+ webcrawler_agent = FlockFactory.create_default_agent(
283
+ name="webcrawler_agent",
284
+ description="Expert for looking up and retrieving web content",
285
+ input="query: str | User-Query, initial_url: Optional[str] | Optional url to start search from.",
286
+ output="answer: str | Answer to user-query, page_url: str | The url of the page where the answer was found on, page_content: str | Markdown content of the page where the answer was found.",
287
+ servers=[ws_fetch_server], # servers are passed here.
288
+ )
289
+ ```
290
+
291
+ Done! The Flock agent has now access to every tool the server offers.
255
292
 
256
293
 
257
294
  ### 🚀 REST API – Deploy Flock Agents as REST API Endpoints
@@ -327,7 +364,6 @@ Take note how even custom types like `FantasyCharacter` are serialized so the ta
327
364
  name: pydantic_example
328
365
  model: openai/gpt-4o
329
366
  enable_temporal: false
330
- enable_logging: false
331
367
  show_flock_banner: false
332
368
  temporal_start_in_process_worker: true
333
369
  agents:
@@ -10,8 +10,8 @@ flock/adapter/vector_base.py,sha256=3qcIuc4MumYUmhHMqNmNBUkzxV_yG03MCnQrP7iQnYI,
10
10
  flock/cli/config.py,sha256=5DvFLObOx3ObisHnc9JfnUBnK83y0CBsUQzXfxPZve0,138
11
11
  flock/cli/constants.py,sha256=ZA5YbLcKXlfiT5h1zCZrAvBWywv3HcuWZqoHWTPdAM0,973
12
12
  flock/cli/create_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
13
- flock/cli/create_flock.py,sha256=wGS3azisS0QWYIDKQswoKDDJ7B0udU2o5b2IwacMN84,8634
14
- flock/cli/execute_flock.py,sha256=yFn5D_qrNclNW8JofoBfr8UrUzWgs4wUHBeoU1pNigk,18734
13
+ flock/cli/create_flock.py,sha256=nrz4URy9boSAaKUKxNTBzNcHc6RBqCvmrR7xS8wKq5k,8463
14
+ flock/cli/execute_flock.py,sha256=-_DQ8zLGoj2YWHXyY_1kDadEyasb8Zxggau3RZMpeXk,19143
15
15
  flock/cli/load_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
16
16
  flock/cli/load_examples.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
17
17
  flock/cli/load_flock.py,sha256=sfZ9B9aiyC5TCEbn1xR5Yd5SoaVji6MBNYzXlWOpoZ4,7111
@@ -26,12 +26,12 @@ 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=r1KNGyc4R3O6xV9yRfUQUDtCHP10atGZb43sPrcTvwU,38999
29
+ flock/core/flock.py,sha256=M7nk_GncnqPj8pHI4N-3R4hlPRR6BKsLGvoj6sJE89M,37108
30
30
  flock/core/flock_agent.py,sha256=0AzRr5xLM9cIpOUz6LGMjFeqDMun9wmcj2nc-HFl3Z4,48559
31
31
  flock/core/flock_evaluator.py,sha256=onbU6r146QVfdrHITF8AMH2U79enAls4QE2gJfpAYVw,1721
32
32
  flock/core/flock_factory.py,sha256=AXQzecI0fhbJxdDDP7VckqheYX77OJ6ohG0ZU6SxgE4,13873
33
33
  flock/core/flock_module.py,sha256=ObILimpVaPnaaqYvcBYJJ20lQzfrjgTdADplaNRjHU0,7448
34
- flock/core/flock_registry.py,sha256=Ub-TjbT1nx5gRq2nEEtAnCQl4Mnm3RupRf1RYDbONSs,27119
34
+ flock/core/flock_registry.py,sha256=KzdFfc3QC-Dk42G24hdf6Prp3HvGj9ymXR3TTBe-T-A,27161
35
35
  flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
36
36
  flock/core/flock_server_manager.py,sha256=YU6HOcg_IBXtnkbTIBNBONh3MZkvIjdKWHaiSOo16sE,4555
37
37
  flock/core/api/__init__.py,sha256=KdzUwBOwhxqqy7lAMLpysKL5GvpIiwOy6CxXELZVWaY,186
@@ -54,8 +54,8 @@ flock/core/execution/evaluation_executor.py,sha256=D9EO0sU-2qWj3vomjmUUi-DOtHNJN
54
54
  flock/core/execution/local_executor.py,sha256=rnIQvaJOs6zZORUcR3vvyS6LPREDJTjaygl_Db0M8ao,952
55
55
  flock/core/execution/temporal_executor.py,sha256=dHcb0xuzPFWU_wbwTgI7glLNyyppei93Txs2sapjhaw,6283
56
56
  flock/core/interpreter/python_interpreter.py,sha256=RaUMZuufsKBNQ4FAeSaOgUuxzs8VYu5TgUUs-xwaxxM,26376
57
- flock/core/logging/__init__.py,sha256=Q8hp9-1ilPIUIV0jLgJ3_cP7COrea32cVwL7dicPnlM,82
58
- flock/core/logging/logging.py,sha256=JcgABQ8QJU1hhzhfF93eqnE0jhyXGZ2oObZst68sKR8,15409
57
+ flock/core/logging/__init__.py,sha256=xn5fC-8IgsdIv0ywe_cICK1KVhTrVD8t-jYORg0ETUA,155
58
+ flock/core/logging/logging.py,sha256=Tgbyu_Ah2g9keD_uQZXNeGsEQuCapGBBKvLiF7L2UrE,19506
59
59
  flock/core/logging/telemetry.py,sha256=Trssqx02SBovTL843YwY3L-ZGj3KvcfMHLMU7Syk8L0,6561
60
60
  flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
61
61
  flock/core/logging/formatters/enum_builder.py,sha256=LgEYXUv84wK5vwHflZ5h8HBGgvLH3sByvUQe8tZiyY0,981
@@ -88,9 +88,9 @@ flock/core/serialization/json_encoder.py,sha256=gAKj2zU_8wQiNvdkby2hksSA4fbPNwTj
88
88
  flock/core/serialization/secure_serializer.py,sha256=n5-zRvvXddgJv1FFHsaQ2wuYdL3WUSGPvG_LGaffEJo,6144
89
89
  flock/core/serialization/serializable.py,sha256=qlv8TsTqRuklXiNuCMrvro5VKz764xC2i3FlgLJSkdk,12129
90
90
  flock/core/serialization/serialization_utils.py,sha256=AHRf90trgnj2Q6aaGaq5eja5PRcuJANUsp2wafGUeig,15257
91
- flock/core/util/cli_helper.py,sha256=YxTktsPiA7xmV_RCI7vfgtwSYrKl2XrNgQn5c5ye1o8,49972
91
+ flock/core/util/cli_helper.py,sha256=PeqBXKRva2dygBQkI1bTLZNgKLBoF0rfWkaI7LlGpEU,49969
92
92
  flock/core/util/file_path_utils.py,sha256=Odf7uU32C-x1KNighbNERSiMtkzW4h8laABIoFK7A5M,6246
93
- flock/core/util/hydrator.py,sha256=QJvCA8F4nkSP5akp3yg0cT6oaajOr1n7sldW5dCs6Lo,10733
93
+ flock/core/util/hydrator.py,sha256=ARg4ufXNlfAESDaxPeU8j6TOJ2ywzfl00KAIfVHGIxo,10699
94
94
  flock/core/util/input_resolver.py,sha256=KPoPSpklyCoiR2t5r6J6GJHegmPLFZ0YE126VcKBewM,4703
95
95
  flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,2244
96
96
  flock/core/util/spliter.py,sha256=rDLnZX158PWkmW8vi2UfMLAMRXcHQFUIydAABd-lDGw,7154
@@ -492,7 +492,7 @@ flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
492
492
  flock/webapp/app/chat.py,sha256=d5a_mr3H2nuWNFSpSlI_HyqX-J_4krndd4A-8S25EKM,28679
493
493
  flock/webapp/app/config.py,sha256=lqmneujnNZk-EFJV5cWpvxkqisxH3T3zT_YOI0JYThE,4809
494
494
  flock/webapp/app/dependencies.py,sha256=JUcwY1N6SZplU141lMN2wk9dOC9er5HCedrKTJN9wJk,5533
495
- flock/webapp/app/main.py,sha256=489cZ_N8ZACRSGjY2PQomXM7bKYZL1_6s4BLRl4XSkM,53828
495
+ flock/webapp/app/main.py,sha256=n5cTAFyuLXayolYAN_UnmiMAKoEE6_G4tmfSEc0Poog,53807
496
496
  flock/webapp/app/models_ui.py,sha256=vrEBLbhEp6FziAgBSFOLT1M7ckwadsTdT7qus5_NduE,329
497
497
  flock/webapp/app/theme_mapper.py,sha256=QzWwLWpED78oYp3FjZ9zxv1KxCyj43m8MZ0fhfzz37w,34302
498
498
  flock/webapp/app/utils.py,sha256=RF8DMKKAj1XPmm4txUdo2OdswI1ATQ7cqUm6G9JFDzA,2942
@@ -502,7 +502,7 @@ flock/webapp/app/api/execution.py,sha256=sVBBaIQAt6xp9sorYdId3j6-2cuCCfe8-QbTZVf
502
502
  flock/webapp/app/api/flock_management.py,sha256=1o-6-36kTnUjI3am_BqLpdrcz0aqFXrxE-hQHIFcCsg,4869
503
503
  flock/webapp/app/api/registry_viewer.py,sha256=IoInxJiRR0yFlecG_l2_eRc6l35RQQyEDMG9BcBkipY,1020
504
504
  flock/webapp/app/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
505
- flock/webapp/app/services/flock_service.py,sha256=G4JQBC6WFO4ajjvZSbedZvlgczsD5fKdbMHVzhG_IaY,14970
505
+ flock/webapp/app/services/flock_service.py,sha256=olU1My3YYkrTCVIOYPgRted-8YgAop-Yi7G4gbRHTrg,14941
506
506
  flock/webapp/app/services/sharing_models.py,sha256=XeJk1akILV_1l-cIUaG8k_eYhjV3EWBCWZ2kpwbdImA,3609
507
507
  flock/webapp/app/services/sharing_store.py,sha256=lcamERCXfmDnLObdukXI4TWeJPAP7-2gm4IsN6R4DjI,9409
508
508
  flock/webapp/app/templates/theme_mapper.html,sha256=z8ZY7nmk6PiUGzD_-px7wSXcEnuBM121rMq6u-2oaCo,14249
@@ -557,8 +557,8 @@ flock/workflow/agent_execution_activity.py,sha256=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R
557
557
  flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
558
558
  flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
559
559
  flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
560
- flock_core-0.4.5.dist-info/METADATA,sha256=Bp_Edg5t5KFgs6k8Kg-N0rAmTHRQL1lI9GcQhtMNVTE,22758
561
- flock_core-0.4.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
562
- flock_core-0.4.5.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
563
- flock_core-0.4.5.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
564
- flock_core-0.4.5.dist-info/RECORD,,
560
+ flock_core-0.4.504.dist-info/METADATA,sha256=Bo_8iexxz5Wc83XxYw0Rt_6CvsMlDYKLK5wu3XmeGJU,23806
561
+ flock_core-0.4.504.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
562
+ flock_core-0.4.504.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
563
+ flock_core-0.4.504.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
564
+ flock_core-0.4.504.dist-info/RECORD,,