flock-core 0.4.5__py3-none-any.whl → 0.4.503__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)
@@ -238,6 +254,50 @@ loguru_logger.add(
238
254
  # loguru_logger.add("logs/flock.log", rotation="100 MB", retention="30 days", level="DEBUG")
239
255
 
240
256
 
257
+ def get_default_severity(level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int) -> int:
258
+ """Get the default severity for a given level."""
259
+ if isinstance(level, str):
260
+ level_str = level.upper()
261
+ return LOG_LEVELS.get(level_str, LOG_LEVELS["ERROR"])
262
+ return level
263
+
264
+
265
+ def configure_logging(flock_level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int,
266
+ external_level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int,
267
+ specific_levels: dict[str, Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "NO_LOGS", "SUCCESS"] | int] | None = None) -> None:
268
+ """Configure both external and internal Flock logging systems.
269
+
270
+ Args:
271
+ flock_level (str | int): The default logging level (e.g., "INFO", "ERROR", "DEBUG") or numeric level for Flock logging.
272
+ external_level (str | int): The default logging level (e.g., "INFO", "ERROR", "DEBUG") or numeric level for external logging.
273
+ specific_levels (dict[str, str | int] | None, optional): A dictionary mapping
274
+ logger names to their specific logging levels. Defaults to None.
275
+ """
276
+ # Get default severity
277
+
278
+ external_severity = get_default_severity(external_level)
279
+ logging.basicConfig(level=external_severity)
280
+
281
+
282
+ flock_severity = get_default_severity(flock_level)
283
+
284
+ specific_severities = {}
285
+ if specific_levels:
286
+ for name, logger_level in specific_levels.items():
287
+ severity = get_default_severity(logger_level)
288
+ specific_severities[name] = severity
289
+
290
+ # Apply to all cached loggers
291
+ for logger_name, log_instance in _LOGGER_CACHE.items():
292
+ target_severity = flock_severity
293
+ if logger_name in specific_severities:
294
+ target_severity = specific_severities[logger_name]
295
+
296
+ log_instance.min_level_severity = target_severity
297
+
298
+
299
+
300
+
241
301
  # Define a dummy logger that does nothing
242
302
  class DummyLogger:
243
303
  """A dummy logger that does nothing when called."""
@@ -276,19 +336,17 @@ class FlockLogger:
276
336
  - Otherwise, it uses Loguru.
277
337
  """
278
338
 
279
- def __init__(self, name: str, enable_logging: bool = False):
339
+ def __init__(self, name: str, initial_min_level_severity: int):
280
340
  """Initialize the FlockLogger.
281
341
 
282
342
  Args:
283
343
  name (str): The name of the logger.
284
- enable_logging (bool, optional): Whether to enable logging. Defaults to False.
344
+ initial_min_level_severity (int): The minimum severity level for messages to be logged.
285
345
  """
286
346
  self.name = name
287
- self.enable_logging = enable_logging
347
+ self.min_level_severity = initial_min_level_severity
288
348
 
289
349
  def _get_logger(self):
290
- if not self.enable_logging:
291
- return dummy_logger
292
350
  if in_workflow_context():
293
351
  # Use Temporal's workflow.logger inside a workflow context.
294
352
  return workflow.logger
@@ -316,6 +374,10 @@ class FlockLogger:
316
374
  max_length: int = MAX_LENGTH,
317
375
  **kwargs,
318
376
  ) -> None:
377
+ current_method_severity = LOG_LEVELS["DEBUG"]
378
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
379
+ current_method_severity < self.min_level_severity:
380
+ return
319
381
  """Debug a message.
320
382
 
321
383
  Args:
@@ -334,6 +396,10 @@ class FlockLogger:
334
396
  max_length: int = MAX_LENGTH,
335
397
  **kwargs,
336
398
  ) -> None:
399
+ current_method_severity = LOG_LEVELS["INFO"]
400
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
401
+ current_method_severity < self.min_level_severity:
402
+ return
337
403
  """Info a message.
338
404
 
339
405
  Args:
@@ -352,6 +418,10 @@ class FlockLogger:
352
418
  max_length: int = MAX_LENGTH,
353
419
  **kwargs,
354
420
  ) -> None:
421
+ current_method_severity = LOG_LEVELS["WARNING"]
422
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
423
+ current_method_severity < self.min_level_severity:
424
+ return
355
425
  """Warning a message.
356
426
 
357
427
  Args:
@@ -370,6 +440,10 @@ class FlockLogger:
370
440
  max_length: int = MAX_LENGTH,
371
441
  **kwargs,
372
442
  ) -> None:
443
+ current_method_severity = LOG_LEVELS["ERROR"]
444
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
445
+ current_method_severity < self.min_level_severity:
446
+ return
373
447
  """Error a message.
374
448
 
375
449
  Args:
@@ -388,6 +462,10 @@ class FlockLogger:
388
462
  max_length: int = MAX_LENGTH,
389
463
  **kwargs,
390
464
  ) -> None:
465
+ current_method_severity = LOG_LEVELS["ERROR"] # Exception implies ERROR level
466
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
467
+ current_method_severity < self.min_level_severity:
468
+ return
391
469
  """Exception a message.
392
470
 
393
471
  Args:
@@ -406,6 +484,10 @@ class FlockLogger:
406
484
  max_length: int = MAX_LENGTH,
407
485
  **kwargs,
408
486
  ) -> None:
487
+ current_method_severity = LOG_LEVELS["SUCCESS"]
488
+ if self.min_level_severity == LOG_LEVELS["NO_LOGS"] or \
489
+ current_method_severity < self.min_level_severity:
490
+ return
409
491
  """Success a message.
410
492
 
411
493
  Args:
@@ -420,16 +502,21 @@ class FlockLogger:
420
502
  _LOGGER_CACHE: dict[str, FlockLogger] = {}
421
503
 
422
504
 
423
- def get_logger(name: str = "flock", enable_logging: bool = True) -> FlockLogger:
505
+ def get_logger(name: str = "flock") -> FlockLogger:
424
506
  """Return a cached FlockLogger instance for the given name.
425
507
 
426
- If the logger doesn't exist, create it.
427
- If it does exist, update 'enable_logging' if a new value is passed.
508
+ If the logger doesn't exist, it is created with 'enable_logging' set to False
509
+ by default (i.e., errors-only mode). Its state can then be changed by calling
510
+ the `configure_logging()` function.
511
+ If a logger with the given name already exists in the cache, its 'min_level_severity'
512
+ state is NOT modified by this function; it's simply returned.
428
513
  """
429
514
  if name not in _LOGGER_CACHE:
430
- _LOGGER_CACHE[name] = FlockLogger(name, enable_logging)
431
- else:
432
- _LOGGER_CACHE[name].enable_logging = enable_logging
515
+ # New loggers default to errors-only (min_level_severity = ERROR_SEVERITY)
516
+ # until explicitly configured by configure_logging()
517
+ _LOGGER_CACHE[name] = FlockLogger(name, LOG_LEVELS["NO_LOGS"])
518
+ # The min_level_severity state of existing or newly created loggers
519
+ # should be managed by the configure_logging() function.
433
520
  return _LOGGER_CACHE[name]
434
521
 
435
522
 
@@ -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.503
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=zurkhu1SKOkTGz9iBUB6f5_7kB6PSKPIbV5k7WxpQR4,19457
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
@@ -90,7 +90,7 @@ flock/core/serialization/serializable.py,sha256=qlv8TsTqRuklXiNuCMrvro5VKz764xC2
90
90
  flock/core/serialization/serialization_utils.py,sha256=AHRf90trgnj2Q6aaGaq5eja5PRcuJANUsp2wafGUeig,15257
91
91
  flock/core/util/cli_helper.py,sha256=YxTktsPiA7xmV_RCI7vfgtwSYrKl2XrNgQn5c5ye1o8,49972
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.503.dist-info/METADATA,sha256=_wEmHySkEiRLzW-OS3yjdzwK93F0eVssh1JBTJ7ZIuc,23806
561
+ flock_core-0.4.503.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
562
+ flock_core-0.4.503.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
563
+ flock_core-0.4.503.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
564
+ flock_core-0.4.503.dist-info/RECORD,,