flock-core 0.5.11__py3-none-any.whl → 0.5.21__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.

Files changed (94) hide show
  1. flock/__init__.py +1 -1
  2. flock/agent/__init__.py +30 -0
  3. flock/agent/builder_helpers.py +192 -0
  4. flock/agent/builder_validator.py +169 -0
  5. flock/agent/component_lifecycle.py +325 -0
  6. flock/agent/context_resolver.py +141 -0
  7. flock/agent/mcp_integration.py +212 -0
  8. flock/agent/output_processor.py +304 -0
  9. flock/api/__init__.py +20 -0
  10. flock/{api_models.py → api/models.py} +0 -2
  11. flock/{service.py → api/service.py} +3 -3
  12. flock/cli.py +2 -2
  13. flock/components/__init__.py +41 -0
  14. flock/components/agent/__init__.py +22 -0
  15. flock/{components.py → components/agent/base.py} +4 -3
  16. flock/{utility/output_utility_component.py → components/agent/output_utility.py} +12 -7
  17. flock/components/orchestrator/__init__.py +22 -0
  18. flock/{orchestrator_component.py → components/orchestrator/base.py} +5 -293
  19. flock/components/orchestrator/circuit_breaker.py +95 -0
  20. flock/components/orchestrator/collection.py +143 -0
  21. flock/components/orchestrator/deduplication.py +78 -0
  22. flock/core/__init__.py +30 -0
  23. flock/core/agent.py +953 -0
  24. flock/{artifacts.py → core/artifacts.py} +1 -1
  25. flock/{context_provider.py → core/context_provider.py} +3 -3
  26. flock/core/orchestrator.py +1102 -0
  27. flock/{store.py → core/store.py} +99 -454
  28. flock/{subscription.py → core/subscription.py} +1 -1
  29. flock/dashboard/collector.py +5 -5
  30. flock/dashboard/events.py +1 -1
  31. flock/dashboard/graph_builder.py +7 -7
  32. flock/dashboard/routes/__init__.py +21 -0
  33. flock/dashboard/routes/control.py +327 -0
  34. flock/dashboard/routes/helpers.py +340 -0
  35. flock/dashboard/routes/themes.py +76 -0
  36. flock/dashboard/routes/traces.py +521 -0
  37. flock/dashboard/routes/websocket.py +108 -0
  38. flock/dashboard/service.py +43 -1316
  39. flock/engines/dspy/__init__.py +20 -0
  40. flock/engines/dspy/artifact_materializer.py +216 -0
  41. flock/engines/dspy/signature_builder.py +474 -0
  42. flock/engines/dspy/streaming_executor.py +812 -0
  43. flock/engines/dspy_engine.py +45 -1330
  44. flock/engines/examples/simple_batch_engine.py +2 -2
  45. flock/engines/streaming/__init__.py +3 -0
  46. flock/engines/streaming/sinks.py +489 -0
  47. flock/examples.py +7 -7
  48. flock/logging/logging.py +1 -16
  49. flock/models/__init__.py +10 -0
  50. flock/orchestrator/__init__.py +45 -0
  51. flock/{artifact_collector.py → orchestrator/artifact_collector.py} +3 -3
  52. flock/orchestrator/artifact_manager.py +168 -0
  53. flock/{batch_accumulator.py → orchestrator/batch_accumulator.py} +2 -2
  54. flock/orchestrator/component_runner.py +389 -0
  55. flock/orchestrator/context_builder.py +167 -0
  56. flock/{correlation_engine.py → orchestrator/correlation_engine.py} +2 -2
  57. flock/orchestrator/event_emitter.py +167 -0
  58. flock/orchestrator/initialization.py +184 -0
  59. flock/orchestrator/lifecycle_manager.py +226 -0
  60. flock/orchestrator/mcp_manager.py +202 -0
  61. flock/orchestrator/scheduler.py +189 -0
  62. flock/orchestrator/server_manager.py +234 -0
  63. flock/orchestrator/tracing.py +147 -0
  64. flock/storage/__init__.py +10 -0
  65. flock/storage/artifact_aggregator.py +158 -0
  66. flock/storage/in_memory/__init__.py +6 -0
  67. flock/storage/in_memory/artifact_filter.py +114 -0
  68. flock/storage/in_memory/history_aggregator.py +115 -0
  69. flock/storage/sqlite/__init__.py +10 -0
  70. flock/storage/sqlite/agent_history_queries.py +154 -0
  71. flock/storage/sqlite/consumption_loader.py +100 -0
  72. flock/storage/sqlite/query_builder.py +112 -0
  73. flock/storage/sqlite/query_params_builder.py +91 -0
  74. flock/storage/sqlite/schema_manager.py +168 -0
  75. flock/storage/sqlite/summary_queries.py +194 -0
  76. flock/utils/__init__.py +14 -0
  77. flock/utils/async_utils.py +67 -0
  78. flock/{runtime.py → utils/runtime.py} +3 -3
  79. flock/utils/time_utils.py +53 -0
  80. flock/utils/type_resolution.py +38 -0
  81. flock/{utilities.py → utils/utilities.py} +2 -2
  82. flock/utils/validation.py +57 -0
  83. flock/utils/visibility.py +79 -0
  84. flock/utils/visibility_utils.py +134 -0
  85. {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/METADATA +19 -5
  86. {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/RECORD +92 -34
  87. flock/agent.py +0 -1578
  88. flock/orchestrator.py +0 -1983
  89. /flock/{visibility.py → core/visibility.py} +0 -0
  90. /flock/{system_artifacts.py → models/system_artifacts.py} +0 -0
  91. /flock/{helper → utils}/cli_helper.py +0 -0
  92. {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/WHEEL +0 -0
  93. {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/entry_points.txt +0 -0
  94. {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,79 @@
1
+ """Visibility deserialization utilities."""
2
+
3
+ from datetime import timedelta
4
+ from typing import Any
5
+
6
+ from flock.core.visibility import (
7
+ AfterVisibility,
8
+ LabelledVisibility,
9
+ PrivateVisibility,
10
+ PublicVisibility,
11
+ TenantVisibility,
12
+ Visibility,
13
+ )
14
+
15
+
16
+ class VisibilityDeserializer:
17
+ """Deserializes visibility from dict/str representation.
18
+
19
+ This utility eliminates 5+ duplicate visibility deserialization patterns
20
+ scattered across store.py, context_provider.py, and orchestrator.py.
21
+ """
22
+
23
+ @staticmethod
24
+ def deserialize(data: dict[str, Any] | str) -> Visibility:
25
+ """
26
+ Deserialize visibility from various formats.
27
+
28
+ Args:
29
+ data: Dict with 'kind' field or string
30
+
31
+ Returns:
32
+ Visibility instance
33
+
34
+ Raises:
35
+ ValueError: If visibility kind is unknown
36
+
37
+ Example:
38
+ >>> vis = VisibilityDeserializer.deserialize({"kind": "Public"})
39
+ >>> assert isinstance(vis, PublicVisibility)
40
+ """
41
+ if isinstance(data, str):
42
+ kind = data
43
+ props = {}
44
+ else:
45
+ kind = data.get("kind")
46
+ props = data
47
+
48
+ if kind == "Public":
49
+ return PublicVisibility()
50
+
51
+ if kind == "Private":
52
+ agents = set(props.get("agents", []))
53
+ return PrivateVisibility(agents=agents)
54
+
55
+ if kind == "Labelled":
56
+ required_labels = set(props.get("required_labels", []))
57
+ return LabelledVisibility(required_labels=required_labels)
58
+
59
+ if kind == "Tenant":
60
+ tenant_id = props.get("tenant_id")
61
+ return TenantVisibility(tenant_id=tenant_id)
62
+
63
+ if kind == "After":
64
+ ttl_value = props.get("ttl")
65
+ # Handle timedelta or raw seconds
66
+ if isinstance(ttl_value, (int, float)):
67
+ ttl = timedelta(seconds=ttl_value)
68
+ elif isinstance(ttl_value, dict):
69
+ # Pydantic dict representation
70
+ ttl = timedelta(**ttl_value)
71
+ else:
72
+ ttl = ttl_value or timedelta()
73
+
74
+ then_data = props.get("then")
75
+ then = VisibilityDeserializer.deserialize(then_data) if then_data else None
76
+
77
+ return AfterVisibility(ttl=ttl, then=then)
78
+
79
+ raise ValueError(f"Unknown visibility kind: {kind}")
@@ -0,0 +1,134 @@
1
+ """Visibility deserialization utilities.
2
+
3
+ This module handles complex visibility object deserialization from JSON data.
4
+ Extracted from store.py to reduce complexity and improve testability.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import re
10
+ from datetime import timedelta
11
+ from typing import Any
12
+
13
+ from flock.core.visibility import (
14
+ AfterVisibility,
15
+ LabelledVisibility,
16
+ PrivateVisibility,
17
+ PublicVisibility,
18
+ TenantVisibility,
19
+ Visibility,
20
+ )
21
+
22
+
23
+ ISO_DURATION_RE = re.compile(
24
+ r"^P(?:T?(?:(?P<hours>\d+)H)?(?:(?P<minutes>\d+)M)?(?:(?P<seconds>\d+)S)?)$"
25
+ )
26
+
27
+
28
+ def parse_iso_duration(value: str | None) -> timedelta:
29
+ """
30
+ Parse ISO 8601 duration string to timedelta.
31
+
32
+ Args:
33
+ value: ISO 8601 duration string (e.g., "PT1H30M")
34
+
35
+ Returns:
36
+ Parsed timedelta, or zero timedelta if invalid
37
+
38
+ Examples:
39
+ >>> parse_iso_duration("PT1H")
40
+ timedelta(hours=1)
41
+ >>> parse_iso_duration("PT30M")
42
+ timedelta(minutes=30)
43
+ >>> parse_iso_duration(None)
44
+ timedelta(0)
45
+ """
46
+ if not value:
47
+ return timedelta(0)
48
+ match = ISO_DURATION_RE.match(value)
49
+ if not match:
50
+ return timedelta(0)
51
+ hours = int(match.group("hours") or 0)
52
+ minutes = int(match.group("minutes") or 0)
53
+ seconds = int(match.group("seconds") or 0)
54
+ return timedelta(hours=hours, minutes=minutes, seconds=seconds)
55
+
56
+
57
+ def deserialize_visibility(data: Any) -> Visibility:
58
+ """
59
+ Deserialize visibility object from JSON data.
60
+
61
+ Handles all visibility types: Public, Private, Labelled, Tenant, After.
62
+ Uses dictionary dispatch to reduce complexity vs if-elif chain.
63
+
64
+ Args:
65
+ data: JSON data dict or Visibility instance
66
+
67
+ Returns:
68
+ Visibility object (defaults to PublicVisibility if invalid)
69
+
70
+ Examples:
71
+ >>> deserialize_visibility({"kind": "Public"})
72
+ PublicVisibility()
73
+ >>> deserialize_visibility({"kind": "Private", "agents": ["agent1"]})
74
+ PrivateVisibility(agents={"agent1"})
75
+ """
76
+ # Early returns for simple cases
77
+ if isinstance(data, Visibility):
78
+ return data
79
+ if not data:
80
+ return PublicVisibility()
81
+
82
+ # Extract kind
83
+ kind = data.get("kind") if isinstance(data, dict) else None
84
+ if not kind:
85
+ return PublicVisibility()
86
+
87
+ # Dispatch to appropriate deserializer
88
+ return _VISIBILITY_DESERIALIZERS.get(kind, _deserialize_public)(data)
89
+
90
+
91
+ def _deserialize_public(data: dict[str, Any]) -> PublicVisibility:
92
+ """Deserialize PublicVisibility."""
93
+ return PublicVisibility()
94
+
95
+
96
+ def _deserialize_private(data: dict[str, Any]) -> PrivateVisibility:
97
+ """Deserialize PrivateVisibility."""
98
+ return PrivateVisibility(agents=set(data.get("agents", [])))
99
+
100
+
101
+ def _deserialize_labelled(data: dict[str, Any]) -> LabelledVisibility:
102
+ """Deserialize LabelledVisibility."""
103
+ return LabelledVisibility(required_labels=set(data.get("required_labels", [])))
104
+
105
+
106
+ def _deserialize_tenant(data: dict[str, Any]) -> TenantVisibility:
107
+ """Deserialize TenantVisibility."""
108
+ return TenantVisibility(tenant_id=data.get("tenant_id"))
109
+
110
+
111
+ def _deserialize_after(data: dict[str, Any]) -> AfterVisibility:
112
+ """
113
+ Deserialize AfterVisibility with recursive 'then' handling.
114
+
115
+ Args:
116
+ data: JSON data dict with 'ttl' and optional 'then' fields
117
+
118
+ Returns:
119
+ AfterVisibility instance
120
+ """
121
+ ttl = parse_iso_duration(data.get("ttl"))
122
+ then_data = data.get("then") if isinstance(data, dict) else None
123
+ then_visibility = deserialize_visibility(then_data) if then_data else None
124
+ return AfterVisibility(ttl=ttl, then=then_visibility)
125
+
126
+
127
+ # Dispatch table for visibility types
128
+ _VISIBILITY_DESERIALIZERS = {
129
+ "Public": _deserialize_public,
130
+ "Private": _deserialize_private,
131
+ "Labelled": _deserialize_labelled,
132
+ "Tenant": _deserialize_tenant,
133
+ "After": _deserialize_after,
134
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.5.11
3
+ Version: 0.5.21
4
4
  Summary: Flock: A declrative framework for building and orchestrating AI agents.
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License: MIT
@@ -62,6 +62,10 @@ Flock is a production-focused framework for orchestrating AI agents through **de
62
62
  - **[User Guides](https://whiteducksoftware.github.io/flock/guides/)** - In-depth feature documentation
63
63
  - **[API Reference](https://whiteducksoftware.github.io/flock/reference/api/)** - Complete API documentation
64
64
  - **[Roadmap](https://whiteducksoftware.github.io/flock/about/roadmap/)** - What's coming in v1.0
65
+ - **Architecture & Patterns:**
66
+ - [Architecture Overview](docs/architecture.md) - System design and module organization
67
+ - [Error Handling Patterns](docs/patterns/error_handling.md) - Production error handling guide
68
+ - [Async Patterns](docs/patterns/async_patterns.md) - Async/await best practices
65
69
 
66
70
  ---
67
71
 
@@ -688,7 +692,7 @@ class LoggingComponent(AgentComponent):
688
692
  async def on_pre_evaluate(self, agent, ctx, inputs):
689
693
  logger.info(f"Agent {agent.name} evaluating: {inputs}")
690
694
  return inputs # Pass through unchanged
691
-
695
+
692
696
  async def on_post_evaluate(self, agent, ctx, inputs, result):
693
697
  logger.info(f"Agent {agent.name} produced: {result}")
694
698
  return result
@@ -730,7 +734,7 @@ flock = Flock("openai/gpt-4.1")
730
734
  flock.add_component(MaintenanceWindowComponent())
731
735
  ```
732
736
 
733
- **Built-in components**:
737
+ **Built-in components**:
734
738
  - `CircuitBreakerComponent` - Prevent runaway agent execution
735
739
  - `DeduplicationComponent` - Skip duplicate artifact/agent processing
736
740
 
@@ -1067,7 +1071,7 @@ We're building enterprise infrastructure for AI agents and tracking the work pub
1067
1071
  ```python
1068
1072
  import os
1069
1073
  from flock import Flock, flock_type
1070
- from flock.visibility import PrivateVisibility, TenantVisibility, LabelledVisibility
1074
+ from flock.core.visibility import PrivateVisibility, TenantVisibility, LabelledVisibility
1071
1075
  from flock.identity import AgentIdentity
1072
1076
  from pydantic import BaseModel
1073
1077
 
@@ -1235,12 +1239,22 @@ uv run python examples/02-dashboard/01_declarative_pizza.py
1235
1239
  - 📖 [Documentation](https://whiteducksoftware.github.io/flock) - Complete online documentation
1236
1240
  - 📘 [AGENTS.md](AGENTS.md) - Development guide
1237
1241
 
1242
+ **Architecture & Patterns:**
1243
+ - 📐 [Architecture Overview](docs/architecture.md) - Understand the refactored codebase structure
1244
+ - 🔧 [Error Handling](docs/patterns/error_handling.md) - Production-ready error patterns
1245
+ - ⚡ [Async Patterns](docs/patterns/async_patterns.md) - Async/await best practices
1246
+
1238
1247
  ---
1239
1248
 
1240
1249
  ## Contributing
1241
1250
 
1242
1251
  We're building Flock in the open. See **[Contributing Guide](https://whiteducksoftware.github.io/flock/about/contributing/)** for development setup, or check [CONTRIBUTING.md](CONTRIBUTING.md) and [AGENTS.md](AGENTS.md) locally.
1243
1252
 
1253
+ **Before contributing, familiarize yourself with:**
1254
+ - [Architecture Overview](docs/architecture.md) - Codebase organization (Phase 1-7 refactoring)
1255
+ - [Error Handling](docs/patterns/error_handling.md) - Required error patterns
1256
+ - [Async Patterns](docs/patterns/async_patterns.md) - Async/await standards
1257
+
1244
1258
  **We welcome:**
1245
1259
  - Bug reports and feature requests
1246
1260
  - Documentation improvements
@@ -1308,6 +1322,6 @@ We're calling this 0.5 to signal:
1308
1322
 
1309
1323
  ---
1310
1324
 
1311
- **Last Updated:** October 13, 2025
1325
+ **Last Updated:** October 19, 2025
1312
1326
  **Version:** Flock 0.5.0 (Blackboard Edition)
1313
1327
  **Status:** Production-Ready Core, Enterprise Features Roadmapped
@@ -1,41 +1,63 @@
1
- flock/__init__.py,sha256=fvp4ltfaAGmYliShuTY_XVIpOUN6bMXbWiBnwb1NBoM,310
2
- flock/agent.py,sha256=luggPsY2pAnjt4TQ-S-ez1us5R2qk6UC-12ccjP6cMk,62607
3
- flock/api_models.py,sha256=Ot8riWjpf4p94P5IsdGz1vfQOizwLFrqwyzqkZWJDjc,9536
4
- flock/artifact_collector.py,sha256=j9p0qvu9IrmMTvOwdX3PGhEnj1-A3uMx0bMfG9zBdgo,6410
5
- flock/artifacts.py,sha256=QIUlol5hzUZO_8SINCqsN_Xr8fHixsc01QbFV_WIIj0,2527
6
- flock/batch_accumulator.py,sha256=4ZZLERkpH0XzN87-z2b5Tyjubheo_yCxoXz4lsjxUuk,8017
7
- flock/cli.py,sha256=lSx9qvK0AzfnGPjbMh2Jdsr8TlDA44huxUg_8tdlH_c,4564
8
- flock/components.py,sha256=SpqFmYBLNIGkKkVrfGpi-9eFj7jKA0N8VJHL-HiyzRc,8092
9
- flock/context_provider.py,sha256=Le01ZilMobaaPqZVJiBGFWkv1XnN3K6CtnPVD5Ewphk,20245
10
- flock/correlation_engine.py,sha256=pFD1y13bSMZ9HpUpp6RHWr5vb39gd0mf-rRQIFI0R5Q,8055
11
- flock/examples.py,sha256=z83GXjtroxRKplt57ur3v8UJFwf9cCHtZ3gj7QHiigs,3688
12
- flock/orchestrator.py,sha256=UgHL6knHZy6PHRmL_GOL91xDr2wfgFv0yB7SKS8AIj4,78263
13
- flock/orchestrator_component.py,sha256=lBn8WXiLzw3MXcU5JrNC3uH2SruLBCj8bSnSzH9txes,25210
1
+ flock/__init__.py,sha256=RF9yUAbCXr2H2SYqWt46GT33B-nsyVdhDBodUkYF-RU,302
2
+ flock/cli.py,sha256=axEX-UPk5l6lTOwaTpUUsIvjAGSdBcGRgONWZyInIAw,4573
3
+ flock/examples.py,sha256=erw3awf5TyyYZZLl62nf8i77qwmzIZjK-qBaI0ioyFs,3707
14
4
  flock/registry.py,sha256=eCSK1yOgcY53vzaNFG4qnlLP3H9R4NWi9fTq_WUNjus,4846
15
- flock/runtime.py,sha256=DCClW_53ped_M0uMravPXmEGgVn_tOsyynNVYjZyM3c,10771
16
- flock/service.py,sha256=6-j2QPmtWiniZtEAfvAzdsLdEGPAfCPuwcusXFZfs1A,13341
17
- flock/store.py,sha256=hvecQqmx1xov7FyRCTwnyFJTpGb_7LHrHHQhGRWRUIE,46029
18
- flock/subscription.py,sha256=2_0jCxOlk-G1jsD6tiVILmKdmx-Wm1qGYzCZVbz_ktg,5424
19
- flock/system_artifacts.py,sha256=f4O-gErJRy5aMFVDh6ZGcj_5Gr130WnG28m5AfhnbxU,1083
20
- flock/utilities.py,sha256=PNIIBrtvwAkW6cI_OxF2dPS151ZjDNbFOaCfsul2BpE,12473
21
- flock/visibility.py,sha256=uwscg32t6Dp9LuA_EVDT5-_1lotzZWWS9Dl1foyJDxo,2926
5
+ flock/agent/__init__.py,sha256=Fojf07SWgk6GsHaNouKpGQVHf5lH6q8LaWeDUEcI5lI,923
6
+ flock/agent/builder_helpers.py,sha256=S3mPi3-cLZAB061kAKbOyHn2iptIOg74fVoSCrUOKG0,5952
7
+ flock/agent/builder_validator.py,sha256=qQBoWStXKVQysqa1ysCYy2M89AbIfHPQ_ooACKDqbIM,5888
8
+ flock/agent/component_lifecycle.py,sha256=ODZblOFqhEi3dSg-lVFeov-6ya8b4fPkWBi1QSaKMVI,11358
9
+ flock/agent/context_resolver.py,sha256=0m8kCwBv9MDkeq7uvigT6cXI2FnRRk7tErWMz1fAP-0,4804
10
+ flock/agent/mcp_integration.py,sha256=4krvKjtnZH0xegaacrPOnJxVuCXgpYcVe9-OlNvzryc,7817
11
+ flock/agent/output_processor.py,sha256=9YT5q1sJbmqzxrzusiqzrfnIoxrVO3lN1OrHhO18dZA,12441
12
+ flock/api/__init__.py,sha256=r5jHaA_onLMIQCRsSULxQ1eMLxDeTSI77t14_nNsebI,486
13
+ flock/api/models.py,sha256=oZE063FJSRpHRyiNqG6pLld5EIst-wjdn3O-z9nzZSo,9484
14
+ flock/api/service.py,sha256=Ut2qnm16ZRJu0iP0osEJH7VehIfcL6IGzGNq3HaCaew,13338
22
15
  flock/api/themes.py,sha256=7L-Bxhh8N1FXYsyTy7B_n8mSCGl_wDZXrvyY2llkF-A,1938
16
+ flock/components/__init__.py,sha256=fMpjmfsW1eaD7nImyYFqHuJtO-dWSLQxoBQU9Ish6q8,965
17
+ flock/components/agent/__init__.py,sha256=pT098n8PNOkkLjmKZ0Lvtbf7W0xEGm4w1aemAIW8reQ,479
18
+ flock/components/agent/base.py,sha256=FDDTquqdlROFyOjQtXxJHEN95BVOWI79bDF4deFXE68,8144
19
+ flock/components/agent/output_utility.py,sha256=BGlar7EaVjAenboCNOln3IpTTHDJQSnDNXGH0XbjILU,9314
20
+ flock/components/orchestrator/__init__.py,sha256=pdUgs_JSPu058yZ5orCOHMaulS8-17HYhsjmBf1Omwc,697
21
+ flock/components/orchestrator/base.py,sha256=ZL1d3xDdrRsG5cSJCN_GPB8sv2FaqNyo28nknzIcZvQ,14693
22
+ flock/components/orchestrator/circuit_breaker.py,sha256=SH4pNFpe7MnkIRuK5TmRFBBOukp-Xc_BoyuhB5NNNSo,3249
23
+ flock/components/orchestrator/collection.py,sha256=oTXDqNZgliwVqZO8e49mX3yEWxflzeZdD7UnbcHWypk,5572
24
+ flock/components/orchestrator/deduplication.py,sha256=w4fwg3nLmb2TXPSSN3GEq5XPwviEEmmwu3fceSejBXw,2464
25
+ flock/core/__init__.py,sha256=pEE4dbPtSEIC1WQYK8USWbF0EmZhccTfDO7eh7lzD-s,574
26
+ flock/core/agent.py,sha256=mljIoTble2T7fQfT43-DRVPlkrplhOGaKPOLwl_Ge4I,36081
27
+ flock/core/artifacts.py,sha256=dHDjn3DgS0Yo62oFoafQcdYNtqFrqLCzkvUytwm5VGU,2532
28
+ flock/core/context_provider.py,sha256=1RG4lYhDNTshAQA1PwZELtUF2UDdC5NZWcBlE4BKDtc,20260
29
+ flock/core/orchestrator.py,sha256=aoPh1k-vt_JWotXKcJ-I2j25NzLoS5inZPqiMNj4q-I,42276
30
+ flock/core/store.py,sha256=4Zyh73RjjiUTtYTYiZ1pajWVXWKIew0dFERTNgQxRAA,31964
31
+ flock/core/subscription.py,sha256=jIxoET1hvIcRGeLOKfPfLAH0IJvVAUc5_ZZYWPCIjr0,5429
32
+ flock/core/visibility.py,sha256=uwscg32t6Dp9LuA_EVDT5-_1lotzZWWS9Dl1foyJDxo,2926
23
33
  flock/dashboard/__init__.py,sha256=_W6Id_Zb7mkSz0iHY1nfdUqF9p9uV_NyHsU7PFsRnFI,813
24
- flock/dashboard/collector.py,sha256=zMDv1OYWrDz5obNVMrc7uLImUH5yWIYCaMB0h-Uu2kY,21822
25
- flock/dashboard/events.py,sha256=ptKNaeHcgYnIO8rBTEK56ZC5w-dUWakXhNzDep1XaL4,7653
26
- flock/dashboard/graph_builder.py,sha256=jdiaruce5uRybndlA4aiOXW-gKkHeGtnndzYQ1WyU9Y,32006
34
+ flock/dashboard/collector.py,sha256=TiMfp7i0lIJx4HTBKUwSj_vf5feNLyincge03mlWf2o,21843
35
+ flock/dashboard/events.py,sha256=s81sAMQSlwRtwSfjrpauJTdJSYHwYtyvT50xrc7wdc4,7658
36
+ flock/dashboard/graph_builder.py,sha256=EJiebAmbD2s66l7B8QxExN710zvO3lq_RwkvxoDwdlo,32036
27
37
  flock/dashboard/launcher.py,sha256=qnl1sFm9g2dAyzhyLPrfqAfld63G9aTNRHchgNuGnoo,8218
28
- flock/dashboard/service.py,sha256=-ksQ12D--EAi52WPR3PgBpRig0QZL8Fd9mq5PMEDBrI,54791
38
+ flock/dashboard/service.py,sha256=bLusnlQ2LzPy_OZlq6DpEEAn6Ru3Rwg8IXO31YA5lB0,5770
29
39
  flock/dashboard/websocket.py,sha256=qv2cbX9DBhglYgGGPFsD9ryehkBsIcJQGg7tJTIDyMM,9689
30
40
  flock/dashboard/models/__init__.py,sha256=T4Yz8IXMm7lBqa2HLDSv7WJBtaKcdZIlTrz6GHNFZxs,68
31
41
  flock/dashboard/models/graph.py,sha256=mQBzaogaOV1sss4aI3yNK8Kg4SdztPwIu3VQfrB3zLU,5444
42
+ flock/dashboard/routes/__init__.py,sha256=qNg67xqrINSb47EAgmX-S58UCLbg6IGsNZkU6MYM0SY,748
43
+ flock/dashboard/routes/control.py,sha256=kKdbSVj0sKSIFpkEUUnvwpbRjH_4SkRLKuUBJH0b7BU,11546
44
+ flock/dashboard/routes/helpers.py,sha256=bAYrLQE6VNNvTWANnSnEljknPcgmzRLxkxoRMV0zeMk,12238
45
+ flock/dashboard/routes/themes.py,sha256=LJeTAvVY4q1rUGAZWdAy4MRPp0RAtIbsuUZZKFMpyxE,2294
46
+ flock/dashboard/routes/traces.py,sha256=3JzerJmLESFaEQqdonshwafV7xhsmh_7XD-q_3lfwkc,18594
47
+ flock/dashboard/routes/websocket.py,sha256=f7aU9WeWtc4HJzmyw_GGLDO3p71hJp4nbVpg4j7Yzek,3993
32
48
  flock/dashboard/static_v2/index.html,sha256=0KNfWwmpr0JmVNbalnsaQta0y3XlVhOQ_HSts2LuU3A,423
33
49
  flock/dashboard/static_v2/assets/index-DFRnI_mt.js,sha256=qeezaWLISr_EKNBBh8v0jzspd2KRcz8jW1r0p7z0Ht0,764860
34
50
  flock/dashboard/static_v2/assets/index-fPLNdmp1.css,sha256=skpvfkkrlw7WbmBh7HN-rUKAtKP-gpuLUH4klUgFHT4,74529
35
51
  flock/engines/__init__.py,sha256=waNyObJ8PKCLFZL3WUFynxSK-V47m559P3Px-vl_OSc,124
36
- flock/engines/dspy_engine.py,sha256=b3PkeyBzcKI1ijR3ojR4FOisdKrxE_hxZhF5WhxKDmQ,75000
52
+ flock/engines/dspy_engine.py,sha256=tIdNCsQjyzWnTRzQBVLyfY4xP0FKoXHEfV4_4ch_xTQ,20058
53
+ flock/engines/dspy/__init__.py,sha256=ONqJyNfaZaqBno4ggDq092lquZ8KjbloRO9zTZISjoA,734
54
+ flock/engines/dspy/artifact_materializer.py,sha256=ZxcW2eUVt0PknM_qB4tbH4U5SiOrGWiku08joiqygVg,8001
55
+ flock/engines/dspy/signature_builder.py,sha256=4o2zNDCouUxAJOHoONolflnWu5WGrsKSvHuc5Dzetjk,17790
56
+ flock/engines/dspy/streaming_executor.py,sha256=6fERID0QQmhAMg1l2Zvtq65Ah9B0vBcFI5lTdS5UXsY,28437
37
57
  flock/engines/examples/__init__.py,sha256=cDAjF8_NPL7nhpwa_xxgnPYRAXZWppKE2HkxmL8LGAI,126
38
- flock/engines/examples/simple_batch_engine.py,sha256=0zQozoiNFq_UcBU5plAqg1VjtP6g6eib7VKATEjnRf8,2902
58
+ flock/engines/examples/simple_batch_engine.py,sha256=p_4YkQ6PI1q09calMxDDRYOdB8naMxklKEzWPMQyrVE,2914
59
+ flock/engines/streaming/__init__.py,sha256=gyn-GQ538RiRbaE1SpBSejw7x6JNcii91Uw2yF7335E,62
60
+ flock/engines/streaming/sinks.py,sha256=eLboWkBuixiZHyHgU0pSQ9QTL6lcNY9EVmR9sFg4KpE,17079
39
61
  flock/frontend/README.md,sha256=0dEzu4UxacGfSstz9_R0KSeFWJ1vNRi0p-KLIay_TfU,26212
40
62
  flock/frontend/index.html,sha256=BFg1VR_YVAJ_MGN16xa7sT6wTGwtFYUhfJhGuKv89VM,312
41
63
  flock/frontend/package-lock.json,sha256=vNOaISeq3EfEDDEsFYPWFaMsqypDgQIE0P_u6tzE0g4,150798
@@ -159,10 +181,9 @@ flock/frontend/src/types/theme.ts,sha256=bjV2zWxBJilEXeosjSSirw05dL7zICShUDx2H0o
159
181
  flock/frontend/src/utils/artifacts.ts,sha256=JjbNXKgcBaUJdR7VKDi0LK0T3d-ltYt4HHbiQNB3rmI,790
160
182
  flock/frontend/src/utils/mockData.ts,sha256=XysjTPAcq6P7BXD8yHv-zJ5vNsxG1T5TLJjX4phOU_w,2316
161
183
  flock/frontend/src/utils/performance.ts,sha256=ZcZjR8DKwF2ixveng2tKIRiW8wZ-ee_RPZFfi1jm4Zo,507
162
- flock/helper/cli_helper.py,sha256=IfhD0CZzRnhsyLzjzWEZBAFqLIHIFeedYTwW48KfnmM,50476
163
184
  flock/logging/__init__.py,sha256=RyR9jTC0q02Fh0L8easQfki2uCOSTii5MPhrxcqQNsg,163
164
185
  flock/logging/auto_trace.py,sha256=iNx4LZsXjykOQOubBoGpOhldJQeRO94rarS9bFjZ_pM,5562
165
- flock/logging/logging.py,sha256=Jdei9EYMX_4mSQmJu5plETVaqQ8BBu211DAkmqKhRhk,20270
186
+ flock/logging/logging.py,sha256=T1TCNWXnKAnN8E1v6O3Lbh8XBrZhzCJZjo-hs6_FYmI,19726
166
187
  flock/logging/telemetry.py,sha256=KWkqB-aMuD7gv2ABMwRjiiJ_DwDtPcOraLWJCB4jRXI,8324
167
188
  flock/logging/trace_and_logged.py,sha256=uVOFU0iyl0LzrCi3dWjDHTwastCFN2WTMAtaUJeFYn4,11504
168
189
  flock/logging/formatters/enum_builder.py,sha256=y8SjIHPs7ajT9QHR6wjjBmmL7ZrxFzegaBTb5ApOHvY,975
@@ -194,8 +215,36 @@ flock/mcp/types/handlers.py,sha256=MaUNpjfLFi7sozoj-nQDUOCLeoaFD8tdos6XkjBUCzI,7
194
215
  flock/mcp/types/types.py,sha256=EG2YuDlFCHzE4k4XIMur9QPn_6i7N621s90OXeAVRfc,11511
195
216
  flock/mcp/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
217
  flock/mcp/util/helpers.py,sha256=jO8DqqSb_S4dyvsxv5vlMGRoMx92Su_5-Uv17gQNuLU,740
218
+ flock/models/__init__.py,sha256=724PD_4bRX0rFdBDXzP0Pwr-OUntq0LIH48bMmtfcM0,266
219
+ flock/models/system_artifacts.py,sha256=f4O-gErJRy5aMFVDh6ZGcj_5Gr130WnG28m5AfhnbxU,1083
220
+ flock/orchestrator/__init__.py,sha256=u4DDXcwCSGrpHYbkdA4eP4W9Uj9vNMF6qxxUtygwmEU,1728
221
+ flock/orchestrator/artifact_collector.py,sha256=XUB4dmx2tzq0p2CkYfP4NowfBkryp3DNA9jb7PWEIDk,6419
222
+ flock/orchestrator/artifact_manager.py,sha256=fXqyU1pRDLf7MRxK86CMHr7uDOeeom_PEZ-3pVZxTj0,5775
223
+ flock/orchestrator/batch_accumulator.py,sha256=WbIQqQz03LRLPe9yJsf_6TgppofE2tN_7f60P38n2S8,8027
224
+ flock/orchestrator/component_runner.py,sha256=pf068DRGw4unh4K09Y8gt-OLM3FLm6CHQQ3d13jzkmM,14266
225
+ flock/orchestrator/context_builder.py,sha256=Wp7_lzu_F7y-be6uiplur0VGauuP58NSmu1foXFfZc0,6244
226
+ flock/orchestrator/correlation_engine.py,sha256=oVeV8EQpjc0Bt7YVzyUQXlEelOre8hQPUH3Dmh87lyE,8065
227
+ flock/orchestrator/event_emitter.py,sha256=2wWrM_mZ2MwFLVo6FYfp9PrHrfOkzUp96C6U5HnCZAE,6632
228
+ flock/orchestrator/initialization.py,sha256=jjbfGhdxPW6L4o59mwXCXskIPFR_UlTIKvcHMyIhNbE,6349
229
+ flock/orchestrator/lifecycle_manager.py,sha256=mANaJhJ96p_bwDfSn6ieBShAUfantXDyWyDyR6pJ3ZM,9270
230
+ flock/orchestrator/mcp_manager.py,sha256=24nfmf729PjTyQG06UyymRHTp9Zu-qbqFCW6FmeVDuo,7081
231
+ flock/orchestrator/scheduler.py,sha256=SG8BSb00MfYdpbAmBumiP_45UEmSoZLbN2z_LyoM1ko,6368
232
+ flock/orchestrator/server_manager.py,sha256=u_ZD50Yqw-zyxM3PMJexGAQxETpWZrV6aiAixDiC_Lk,8935
233
+ flock/orchestrator/tracing.py,sha256=luL5I5ch98C5riGc5e9xrHl-iE-IwuIAVpDBdNQZ27Y,5099
197
234
  flock/patches/__init__.py,sha256=KfRTpO_rz547iKxJDknymar1P3lS_8AhDh-sR1BkcZ0,194
198
235
  flock/patches/dspy_streaming_patch.py,sha256=OQeLYWmL-7rqudphMwERnpvXhXamnvYn3xNcySajacY,2879
236
+ flock/storage/__init__.py,sha256=9-p-RTpxGJOksfDavbpUsTghSIjDGtWCEC3bpVuYZY0,249
237
+ flock/storage/artifact_aggregator.py,sha256=wMpoXjko9UmfMmQ_qUTzSX-nhb0k8BVRlzRLHlkKEug,5176
238
+ flock/storage/in_memory/__init__.py,sha256=XPYxGNnpDjiv_L1tj8AxfORA_xHP16FV8t5UqrhtFLk,138
239
+ flock/storage/in_memory/artifact_filter.py,sha256=22TQdXdhPHUmpQTBsiIiPE016XaSZlC9Gx_KxqK7Gog,3902
240
+ flock/storage/in_memory/history_aggregator.py,sha256=0zJA6w0bOn0cblfYq19WMR5keUFJ2hXhLzB82MZThzE,3603
241
+ flock/storage/sqlite/__init__.py,sha256=khUvf8X9k9qnJjV_UFltkeoGp7qs9M6vGWCsuyGxfZw,245
242
+ flock/storage/sqlite/agent_history_queries.py,sha256=pXabVwqZrGUBgO_k8mqr7PKuJ2LzfOFHGddSCtuSM4U,5061
243
+ flock/storage/sqlite/consumption_loader.py,sha256=31eyFXXl7igN4ijxIh-uvuGD9DUjrjAQYYczHhG-TXk,3047
244
+ flock/storage/sqlite/query_builder.py,sha256=QjRS35CKT-90ORnwEA7X1SCO65wySVZC1kYpKPXzNns,4065
245
+ flock/storage/sqlite/query_params_builder.py,sha256=Tjq0aGIEwhvNtlAKx3tWhASzEAo48Xiiro72c9CZaX8,2781
246
+ flock/storage/sqlite/schema_manager.py,sha256=F-zDks90V3xwGAuvF3cj3I4xkkgYvJLCC_8QVZ_iPnE,4915
247
+ flock/storage/sqlite/summary_queries.py,sha256=U7rsgWoPRVXcGbS7bN0SQ_r2vERgazjbCZ4nupVQtxM,5940
199
248
  flock/themes/3024-day.toml,sha256=uOVHqEzSyHx0WlUk3D0lne4RBsNBAPCTy3C58yU7kEY,667
200
249
  flock/themes/3024-night.toml,sha256=qsXUwd6ZYz6J-R129_Ao2TKlvvK60svhZJJjB5c8Tfo,1667
201
250
  flock/themes/aardvark-blue.toml,sha256=5ZgsxP3pWLPN3yJ2Wd9ErCo7fy_VJpIfje4kriDKlqo,1667
@@ -532,9 +581,18 @@ flock/themes/zenburn.toml,sha256=NxOAR3cx-Z9PVErEKHFZ6jsjfKBtPmfyN_vGSri5_qo,171
532
581
  flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1664
533
582
  flock/themes/zenwritten-dark.toml,sha256=-dgaUfg1iCr5Dv4UEeHv_cN4GrPUCWAiHSxWK20X1kI,1663
534
583
  flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
535
- flock/utility/output_utility_component.py,sha256=YXzVy4EZXTrz0o6DjlE6tna4N79T5S5b98qDS42KqXM,9316
536
- flock_core-0.5.11.dist-info/METADATA,sha256=r87xPBNRpCHFwDSyKCVDLflsouPrAO5fXPh9BN3HlB0,51253
537
- flock_core-0.5.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
538
- flock_core-0.5.11.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
539
- flock_core-0.5.11.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
540
- flock_core-0.5.11.dist-info/RECORD,,
584
+ flock/utils/__init__.py,sha256=0EPfSUqxPEcgMVl02acwO4rdUsePZSTahxXd1DA4ygo,442
585
+ flock/utils/async_utils.py,sha256=CzVXWXPCK-IP-defXCZ5fsDZaLhRiz2l67_FtMN-TAo,1963
586
+ flock/utils/cli_helper.py,sha256=IfhD0CZzRnhsyLzjzWEZBAFqLIHIFeedYTwW48KfnmM,50476
587
+ flock/utils/runtime.py,sha256=XEIXIXP2jcJsE7I-taI2PVxrUo-EHsxIupYeBt5YFHg,10786
588
+ flock/utils/time_utils.py,sha256=LWRLnJ8kVHmsKcC0FWi4RqWynnKr9B2zXhc6BH7e8OM,1405
589
+ flock/utils/type_resolution.py,sha256=oVIX6r4QencA4faV7JfASMvKrAprjLcpKJnhlsBeZhE,1114
590
+ flock/utils/utilities.py,sha256=E3EQDo5SLU4XeoL3-PCc4lOatJHFEkMHKbZhnGhdMG4,12485
591
+ flock/utils/validation.py,sha256=Vqzd8Qi73ttJNSHdr8EUEonyfzAYWVfEyW0fhLs1bA4,1847
592
+ flock/utils/visibility.py,sha256=riJfHFWH8R2vk3DU7PYNi2LMaE8cy8pnMvxxiqWq-4I,2349
593
+ flock/utils/visibility_utils.py,sha256=eGA28aL8FnGyGzsbVNvqI1UoPauu1Jedl5LUZ5oWZZ0,3874
594
+ flock_core-0.5.21.dist-info/METADATA,sha256=hmjtqBjzTW2b_xq59iqZYSpkhRXVHTZDYBng_8AQuJg,52163
595
+ flock_core-0.5.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
596
+ flock_core-0.5.21.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
597
+ flock_core-0.5.21.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
598
+ flock_core-0.5.21.dist-info/RECORD,,