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.
- flock/__init__.py +1 -1
- flock/agent/__init__.py +30 -0
- flock/agent/builder_helpers.py +192 -0
- flock/agent/builder_validator.py +169 -0
- flock/agent/component_lifecycle.py +325 -0
- flock/agent/context_resolver.py +141 -0
- flock/agent/mcp_integration.py +212 -0
- flock/agent/output_processor.py +304 -0
- flock/api/__init__.py +20 -0
- flock/{api_models.py → api/models.py} +0 -2
- flock/{service.py → api/service.py} +3 -3
- flock/cli.py +2 -2
- flock/components/__init__.py +41 -0
- flock/components/agent/__init__.py +22 -0
- flock/{components.py → components/agent/base.py} +4 -3
- flock/{utility/output_utility_component.py → components/agent/output_utility.py} +12 -7
- flock/components/orchestrator/__init__.py +22 -0
- flock/{orchestrator_component.py → components/orchestrator/base.py} +5 -293
- flock/components/orchestrator/circuit_breaker.py +95 -0
- flock/components/orchestrator/collection.py +143 -0
- flock/components/orchestrator/deduplication.py +78 -0
- flock/core/__init__.py +30 -0
- flock/core/agent.py +953 -0
- flock/{artifacts.py → core/artifacts.py} +1 -1
- flock/{context_provider.py → core/context_provider.py} +3 -3
- flock/core/orchestrator.py +1102 -0
- flock/{store.py → core/store.py} +99 -454
- flock/{subscription.py → core/subscription.py} +1 -1
- flock/dashboard/collector.py +5 -5
- flock/dashboard/events.py +1 -1
- flock/dashboard/graph_builder.py +7 -7
- flock/dashboard/routes/__init__.py +21 -0
- flock/dashboard/routes/control.py +327 -0
- flock/dashboard/routes/helpers.py +340 -0
- flock/dashboard/routes/themes.py +76 -0
- flock/dashboard/routes/traces.py +521 -0
- flock/dashboard/routes/websocket.py +108 -0
- flock/dashboard/service.py +43 -1316
- flock/engines/dspy/__init__.py +20 -0
- flock/engines/dspy/artifact_materializer.py +216 -0
- flock/engines/dspy/signature_builder.py +474 -0
- flock/engines/dspy/streaming_executor.py +812 -0
- flock/engines/dspy_engine.py +45 -1330
- flock/engines/examples/simple_batch_engine.py +2 -2
- flock/engines/streaming/__init__.py +3 -0
- flock/engines/streaming/sinks.py +489 -0
- flock/examples.py +7 -7
- flock/logging/logging.py +1 -16
- flock/models/__init__.py +10 -0
- flock/orchestrator/__init__.py +45 -0
- flock/{artifact_collector.py → orchestrator/artifact_collector.py} +3 -3
- flock/orchestrator/artifact_manager.py +168 -0
- flock/{batch_accumulator.py → orchestrator/batch_accumulator.py} +2 -2
- flock/orchestrator/component_runner.py +389 -0
- flock/orchestrator/context_builder.py +167 -0
- flock/{correlation_engine.py → orchestrator/correlation_engine.py} +2 -2
- flock/orchestrator/event_emitter.py +167 -0
- flock/orchestrator/initialization.py +184 -0
- flock/orchestrator/lifecycle_manager.py +226 -0
- flock/orchestrator/mcp_manager.py +202 -0
- flock/orchestrator/scheduler.py +189 -0
- flock/orchestrator/server_manager.py +234 -0
- flock/orchestrator/tracing.py +147 -0
- flock/storage/__init__.py +10 -0
- flock/storage/artifact_aggregator.py +158 -0
- flock/storage/in_memory/__init__.py +6 -0
- flock/storage/in_memory/artifact_filter.py +114 -0
- flock/storage/in_memory/history_aggregator.py +115 -0
- flock/storage/sqlite/__init__.py +10 -0
- flock/storage/sqlite/agent_history_queries.py +154 -0
- flock/storage/sqlite/consumption_loader.py +100 -0
- flock/storage/sqlite/query_builder.py +112 -0
- flock/storage/sqlite/query_params_builder.py +91 -0
- flock/storage/sqlite/schema_manager.py +168 -0
- flock/storage/sqlite/summary_queries.py +194 -0
- flock/utils/__init__.py +14 -0
- flock/utils/async_utils.py +67 -0
- flock/{runtime.py → utils/runtime.py} +3 -3
- flock/utils/time_utils.py +53 -0
- flock/utils/type_resolution.py +38 -0
- flock/{utilities.py → utils/utilities.py} +2 -2
- flock/utils/validation.py +57 -0
- flock/utils/visibility.py +79 -0
- flock/utils/visibility_utils.py +134 -0
- {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/METADATA +19 -5
- {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/RECORD +92 -34
- flock/agent.py +0 -1578
- flock/orchestrator.py +0 -1983
- /flock/{visibility.py → core/visibility.py} +0 -0
- /flock/{system_artifacts.py → models/system_artifacts.py} +0 -0
- /flock/{helper → utils}/cli_helper.py +0 -0
- {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/WHEEL +0 -0
- {flock_core-0.5.11.dist-info → flock_core-0.5.21.dist-info}/entry_points.txt +0 -0
- {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.
|
|
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
|
|
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=
|
|
2
|
-
flock/
|
|
3
|
-
flock/
|
|
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/
|
|
16
|
-
flock/
|
|
17
|
-
flock/
|
|
18
|
-
flock/
|
|
19
|
-
flock/
|
|
20
|
-
flock/
|
|
21
|
-
flock/
|
|
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=
|
|
25
|
-
flock/dashboard/events.py,sha256=
|
|
26
|
-
flock/dashboard/graph_builder.py,sha256=
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
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,,
|