flock-core 0.5.0b58__py3-none-any.whl → 0.5.0b60__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/agent.py CHANGED
@@ -362,6 +362,22 @@ class AgentBuilder:
362
362
  # Fluent configuration -------------------------------------------------
363
363
 
364
364
  def description(self, text: str) -> AgentBuilder:
365
+ """Set the agent's description for documentation and tracing.
366
+
367
+ Args:
368
+ text: Human-readable description of what the agent does
369
+
370
+ Returns:
371
+ self for method chaining
372
+
373
+ Example:
374
+ >>> agent = (
375
+ ... flock.agent("pizza_chef")
376
+ ... .description("Creates authentic Italian pizza recipes")
377
+ ... .consumes(Idea)
378
+ ... .publishes(Recipe)
379
+ ... )
380
+ """
365
381
  self._agent.description = text
366
382
  return self
367
383
 
@@ -379,6 +395,59 @@ class AgentBuilder:
379
395
  mode: str = "both",
380
396
  priority: int = 0,
381
397
  ) -> AgentBuilder:
398
+ """Declare which artifact types this agent processes.
399
+
400
+ Sets up subscription rules that determine when the agent executes.
401
+ Supports type-based matching, conditional filters, batching, and joins.
402
+
403
+ Args:
404
+ *types: Artifact types (Pydantic models) to consume
405
+ where: Optional filter predicate(s). Agent only executes if predicate returns True.
406
+ Can be a single callable or sequence of callables (all must pass).
407
+ text: Optional semantic text filter using embedding similarity
408
+ min_p: Minimum probability threshold for text similarity (0.0-1.0)
409
+ from_agents: Only consume artifacts from specific agents
410
+ channels: Only consume artifacts with matching tags
411
+ join: Join specification for coordinating multiple artifact types
412
+ batch: Batch specification for processing multiple artifacts together
413
+ delivery: Delivery mode - "exclusive" (one agent) or "broadcast" (all matching)
414
+ mode: Processing mode - "both", "streaming", or "batch"
415
+ priority: Execution priority (higher = executes first)
416
+
417
+ Returns:
418
+ self for method chaining
419
+
420
+ Examples:
421
+ >>> # Basic type subscription
422
+ >>> agent.consumes(Task)
423
+
424
+ >>> # Multiple types
425
+ >>> agent.consumes(Task, Event, Command)
426
+
427
+ >>> # Conditional consumption (filtering)
428
+ >>> agent.consumes(Review, where=lambda r: r.score >= 8)
429
+
430
+ >>> # Multiple predicates (all must pass)
431
+ >>> agent.consumes(
432
+ ... Order,
433
+ ... where=[
434
+ ... lambda o: o.total > 100,
435
+ ... lambda o: o.status == "pending"
436
+ ... ]
437
+ ... )
438
+
439
+ >>> # Consume from specific agents
440
+ >>> agent.consumes(Report, from_agents=["analyzer", "validator"])
441
+
442
+ >>> # Channel-based routing
443
+ >>> agent.consumes(Alert, channels={"critical", "security"})
444
+
445
+ >>> # Batch processing
446
+ >>> agent.consumes(
447
+ ... Email,
448
+ ... batch={"size": 10, "timeout": 5.0}
449
+ ... )
450
+ """
382
451
  predicates: Sequence[Callable[[BaseModel], bool]] | None
383
452
  if where is None:
384
453
  predicates = None
@@ -409,6 +478,48 @@ class AgentBuilder:
409
478
  def publishes(
410
479
  self, *types: type[BaseModel], visibility: Visibility | None = None
411
480
  ) -> PublishBuilder:
481
+ """Declare which artifact types this agent produces.
482
+
483
+ Configures the output types and default visibility controls for artifacts
484
+ published by this agent. Can chain with .where() for conditional publishing.
485
+
486
+ Args:
487
+ *types: Artifact types (Pydantic models) to publish
488
+ visibility: Default visibility control for all outputs. Defaults to PublicVisibility.
489
+ Can be overridden per-publish or with .where() chaining.
490
+
491
+ Returns:
492
+ PublishBuilder for conditional publishing configuration
493
+
494
+ Examples:
495
+ >>> # Basic output declaration
496
+ >>> agent.publishes(Report)
497
+
498
+ >>> # Multiple output types
499
+ >>> agent.publishes(Summary, DetailedReport, Alert)
500
+
501
+ >>> # Private outputs (only specific agents can see)
502
+ >>> agent.publishes(
503
+ ... SecretData,
504
+ ... visibility=PrivateVisibility(agents={"admin", "auditor"})
505
+ ... )
506
+
507
+ >>> # Tenant-isolated outputs
508
+ >>> agent.publishes(
509
+ ... Invoice,
510
+ ... visibility=TenantVisibility()
511
+ ... )
512
+
513
+ >>> # Conditional publishing with chaining
514
+ >>> (agent.publishes(Alert)
515
+ ... .where(lambda result: result.severity == "critical"))
516
+
517
+ See Also:
518
+ - PublicVisibility: Default, visible to all agents
519
+ - PrivateVisibility: Allowlist-based access control
520
+ - TenantVisibility: Multi-tenant isolation
521
+ - LabelledVisibility: Role-based access control
522
+ """
412
523
  outputs = []
413
524
  for model in types:
414
525
  spec = ArtifactSpec.from_model(model)
@@ -420,10 +531,80 @@ class AgentBuilder:
420
531
  return PublishBuilder(self, outputs)
421
532
 
422
533
  def with_utilities(self, *components: AgentComponent) -> AgentBuilder:
534
+ """Add utility components to customize agent lifecycle and behavior.
535
+
536
+ Components are hooks that run at specific points in the agent execution
537
+ lifecycle. Common uses include rate limiting, budgets, metrics, caching,
538
+ and custom preprocessing/postprocessing.
539
+
540
+ Args:
541
+ *components: AgentComponent instances with lifecycle hooks
542
+
543
+ Returns:
544
+ self for method chaining
545
+
546
+ Examples:
547
+ >>> # Rate limiting
548
+ >>> agent.with_utilities(
549
+ ... RateLimiter(max_calls=10, window=60)
550
+ ... )
551
+
552
+ >>> # Budget control
553
+ >>> agent.with_utilities(
554
+ ... TokenBudget(max_tokens=10000)
555
+ ... )
556
+
557
+ >>> # Multiple components (executed in order)
558
+ >>> agent.with_utilities(
559
+ ... RateLimiter(max_calls=5),
560
+ ... MetricsCollector(),
561
+ ... CacheLayer(ttl=3600)
562
+ ... )
563
+
564
+ See Also:
565
+ - AgentComponent: Base class for custom components
566
+ - Lifecycle hooks: on_initialize, on_pre_consume, on_post_publish, etc.
567
+ """
423
568
  self._agent.utilities.extend(components)
424
569
  return self
425
570
 
426
571
  def with_engines(self, *engines: EngineComponent) -> AgentBuilder:
572
+ """Configure LLM engines for agent evaluation.
573
+
574
+ Engines determine how agents process inputs. Default is DSPy with the
575
+ orchestrator's model. Custom engines enable different LLM backends,
576
+ non-LLM logic, or hybrid approaches.
577
+
578
+ Args:
579
+ *engines: EngineComponent instances for evaluation
580
+
581
+ Returns:
582
+ self for method chaining
583
+
584
+ Examples:
585
+ >>> # DSPy engine with specific model
586
+ >>> agent.with_engines(
587
+ ... DSPyEngine(model="openai/gpt-4o")
588
+ ... )
589
+
590
+ >>> # Custom non-LLM engine
591
+ >>> agent.with_engines(
592
+ ... RuleBasedEngine(rules=my_rules)
593
+ ... )
594
+
595
+ >>> # Hybrid approach (multiple engines)
596
+ >>> agent.with_engines(
597
+ ... DSPyEngine(model="openai/gpt-4o-mini"),
598
+ ... FallbackEngine()
599
+ ... )
600
+
601
+ Note:
602
+ If no engines specified, agent uses DSPy with the orchestrator's default model.
603
+
604
+ See Also:
605
+ - DSPyEngine: Default LLM-based evaluation
606
+ - EngineComponent: Base class for custom engines
607
+ """
427
608
  self._agent.engines.extend(engines)
428
609
  return self
429
610
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flock-ui",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Flock Flow Real-Time Dashboard Frontend",
5
5
  "type": "module",
6
6
  "scripts": {
flock/orchestrator.py CHANGED
@@ -84,6 +84,31 @@ class Flock(metaclass=AutoTracedMeta):
84
84
  store: BlackboardStore | None = None,
85
85
  max_agent_iterations: int = 1000,
86
86
  ) -> None:
87
+ """Initialize the Flock orchestrator for blackboard-based agent coordination.
88
+
89
+ Args:
90
+ model: Default LLM model for agents (e.g., "openai/gpt-4o-mini").
91
+ Can be overridden per-agent. If None, uses DEFAULT_MODEL env var.
92
+ store: Custom blackboard storage backend. Defaults to InMemoryBlackboardStore.
93
+ max_agent_iterations: Circuit breaker limit to prevent runaway agent loops.
94
+ Defaults to 1000 iterations per agent before reset.
95
+
96
+ Examples:
97
+ >>> # Basic initialization with default model
98
+ >>> flock = Flock("openai/gpt-4o-mini")
99
+
100
+ >>> # Custom storage backend
101
+ >>> flock = Flock(
102
+ ... "openai/gpt-4o",
103
+ ... store=CustomBlackboardStore()
104
+ ... )
105
+
106
+ >>> # Circuit breaker configuration
107
+ >>> flock = Flock(
108
+ ... "openai/gpt-4o-mini",
109
+ ... max_agent_iterations=500
110
+ ... )
111
+ """
87
112
  self._patch_litellm_proxy_imports()
88
113
  self.model = model
89
114
  self.store: BlackboardStore = store or InMemoryBlackboardStore()
@@ -113,6 +138,34 @@ class Flock(metaclass=AutoTracedMeta):
113
138
  # Agent management -----------------------------------------------------
114
139
 
115
140
  def agent(self, name: str) -> AgentBuilder:
141
+ """Create a new agent using the fluent builder API.
142
+
143
+ Args:
144
+ name: Unique identifier for the agent. Used for visibility controls and metrics.
145
+
146
+ Returns:
147
+ AgentBuilder for fluent configuration
148
+
149
+ Raises:
150
+ ValueError: If an agent with this name already exists
151
+
152
+ Examples:
153
+ >>> # Basic agent
154
+ >>> pizza_agent = (
155
+ ... flock.agent("pizza_master")
156
+ ... .description("Creates delicious pizza recipes")
157
+ ... .consumes(DreamPizza)
158
+ ... .publishes(Pizza)
159
+ ... )
160
+
161
+ >>> # Advanced agent with filtering
162
+ >>> critic = (
163
+ ... flock.agent("critic")
164
+ ... .consumes(Movie, where=lambda m: m.rating >= 8)
165
+ ... .publishes(Review)
166
+ ... .with_utilities(RateLimiter(max_calls=10))
167
+ ... )
168
+ """
116
169
  if name in self._agents:
117
170
  raise ValueError(f"Agent '{name}' already registered.")
118
171
  return AgentBuilder(self, name)
@@ -346,6 +399,32 @@ class Flock(metaclass=AutoTracedMeta):
346
399
  # Runtime --------------------------------------------------------------
347
400
 
348
401
  async def run_until_idle(self) -> None:
402
+ """Wait for all scheduled agent tasks to complete.
403
+
404
+ This method blocks until the blackboard reaches a stable state where no
405
+ agents are queued for execution. Essential for batch processing and ensuring
406
+ all agent cascades complete before continuing.
407
+
408
+ Note:
409
+ Automatically resets circuit breaker counters and shuts down MCP connections
410
+ when idle. Used with publish() for event-driven workflows.
411
+
412
+ Examples:
413
+ >>> # Event-driven workflow (recommended)
414
+ >>> await flock.publish(task1)
415
+ >>> await flock.publish(task2)
416
+ >>> await flock.run_until_idle() # Wait for all cascades
417
+ >>> # All agents have finished processing
418
+
419
+ >>> # Parallel batch processing
420
+ >>> await flock.publish_many([task1, task2, task3])
421
+ >>> await flock.run_until_idle() # All tasks processed in parallel
422
+
423
+ See Also:
424
+ - publish(): Event-driven artifact publishing
425
+ - publish_many(): Batch publishing for parallel execution
426
+ - invoke(): Direct agent invocation without cascade
427
+ """
349
428
  while self._tasks:
350
429
  await asyncio.sleep(0.01)
351
430
  pending = {task for task in self._tasks if not task.done()}
@@ -368,11 +447,59 @@ class Flock(metaclass=AutoTracedMeta):
368
447
  return await agent.execute(ctx, artifacts)
369
448
 
370
449
  async def arun(self, agent_builder: AgentBuilder, *inputs: BaseModel) -> list[Artifact]:
450
+ """Execute an agent with inputs and wait for all cascades to complete (async).
451
+
452
+ Convenience method that combines direct agent invocation with run_until_idle().
453
+ Useful for testing and synchronous request-response patterns.
454
+
455
+ Args:
456
+ agent_builder: Agent to execute (from flock.agent())
457
+ *inputs: Input objects (BaseModel instances)
458
+
459
+ Returns:
460
+ Artifacts produced by the agent and any triggered cascades
461
+
462
+ Examples:
463
+ >>> # Test a single agent
464
+ >>> flock = Flock("openai/gpt-4o-mini")
465
+ >>> pizza_agent = flock.agent("pizza").consumes(Idea).publishes(Pizza)
466
+ >>> results = await flock.arun(pizza_agent, Idea(topic="Margherita"))
467
+
468
+ >>> # Multiple inputs
469
+ >>> results = await flock.arun(
470
+ ... task_agent,
471
+ ... Task(name="deploy"),
472
+ ... Task(name="test")
473
+ ... )
474
+
475
+ Note:
476
+ For event-driven workflows, prefer publish() + run_until_idle() for better
477
+ control over execution timing and parallel processing.
478
+ """
371
479
  artifacts = await self.direct_invoke(agent_builder.agent, list(inputs))
372
480
  await self.run_until_idle()
373
481
  return artifacts
374
482
 
375
483
  def run(self, agent_builder: AgentBuilder, *inputs: BaseModel) -> list[Artifact]:
484
+ """Synchronous wrapper for arun() - executes agent and waits for completion.
485
+
486
+ Args:
487
+ agent_builder: Agent to execute (from flock.agent())
488
+ *inputs: Input objects (BaseModel instances)
489
+
490
+ Returns:
491
+ Artifacts produced by the agent and any triggered cascades
492
+
493
+ Examples:
494
+ >>> # Synchronous execution (blocks until complete)
495
+ >>> flock = Flock("openai/gpt-4o-mini")
496
+ >>> agent = flock.agent("analyzer").consumes(Data).publishes(Report)
497
+ >>> results = flock.run(agent, Data(value=42))
498
+
499
+ Warning:
500
+ Cannot be called from within an async context. Use arun() instead
501
+ if already in an async function.
502
+ """
376
503
  return asyncio.run(self.arun(agent_builder, *inputs))
377
504
 
378
505
  async def shutdown(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.5.0b58
3
+ Version: 0.5.0b60
4
4
  Summary: Add your description here
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -32,10 +32,13 @@ Description-Content-Type: text/markdown
32
32
  <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="800">
33
33
  </p>
34
34
  <p align="center">
35
+ <a href="https://docs.flock.whiteduck.de" target="_blank"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-blue?style=for-the-badge&logo=readthedocs"></a>
35
36
  <a href="https://pypi.org/project/flock-core/" target="_blank"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/flock-core?style=for-the-badge&logo=pypi&label=pip%20version"></a>
36
37
  <img alt="Python Version" src="https://img.shields.io/badge/python-3.10%2B-blue?style=for-the-badge&logo=python">
37
38
  <a href="LICENSE" target="_blank"><img alt="License" src="https://img.shields.io/pypi/l/flock-core?style=for-the-badge"></a>
38
39
  <a href="https://whiteduck.de" target="_blank"><img alt="Built by white duck" src="https://img.shields.io/badge/Built%20by-white%20duck%20GmbH-white?style=for-the-badge&labelColor=black"></a>
40
+ <img alt="Test Coverage" src="https://img.shields.io/badge/coverage-77%25-green?style=for-the-badge">
41
+ <img alt="Tests" src="https://img.shields.io/badge/tests-743%20passing-brightgreen?style=for-the-badge">
39
42
  </p>
40
43
 
41
44
  ---
@@ -44,9 +47,16 @@ Description-Content-Type: text/markdown
44
47
 
45
48
  > **Stop engineering prompts. Start declaring contracts.**
46
49
 
47
- Flock is a production-focused framework for orchestrating AI agents through **declarative type contracts** and **blackboard architecture**, proven patterns from distributed systems, decades of engaging with micro-service landscapes and classical AI, now applied to modern LLMs.
50
+ Flock is a production-focused framework for orchestrating AI agents through **declarative type contracts** and **blackboard architecture**—proven patterns from distributed systems, decades of experience with microservice architectures, and classical AInow applied to modern LLMs.
48
51
 
52
+ **📖 [Read the full documentation →](https://docs.flock.whiteduck.de)**
49
53
 
54
+ **Quick links:**
55
+ - **[Getting Started](https://docs.flock.whiteduck.de/getting-started/installation/)** - Installation and first steps
56
+ - **[Tutorials](https://docs.flock.whiteduck.de/tutorials/)** - Step-by-step learning path
57
+ - **[User Guides](https://docs.flock.whiteduck.de/guides/)** - In-depth feature documentation
58
+ - **[API Reference](https://docs.flock.whiteduck.de/reference/api/)** - Complete API documentation
59
+ - **[Roadmap](https://docs.flock.whiteduck.de/about/roadmap/)** - What's coming in v1.0
50
60
 
51
61
  ---
52
62
 
@@ -62,8 +72,8 @@ prompt = """You are an expert code reviewer. When you receive code, you should..
62
72
 
63
73
  # 500-line prompt that breaks when models update
64
74
 
65
- # How do I know that there isn't an even better prompt (you don't)
66
- # -> proof of 'best possible performane' impossible
75
+ # How do I know that there isn't an even better prompt? (you don't)
76
+ # -> proving 'best possible performance' is impossible
67
77
  ```
68
78
 
69
79
  **🧪 Testing Nightmares**
@@ -90,12 +100,12 @@ workflow.add_edge("agent_b", "agent_c")
90
100
  ```python
91
101
  # One orchestrator needs domain knowledge of 20+ agents to route correctly
92
102
  # Orchestrator 'guesses' next agent based on a natural language description.
93
- # Hardly fit for critical systems.
103
+ # Not suitable for critical systems.
94
104
  ```
95
105
 
96
106
  These aren't framework limitations, they're **architectural choices** that don't scale.
97
107
 
98
- Most issues are solvable, because decades of experience with micro services taught us hard lessons about decoupling, orchestration and reliability already. Let's use these learnings!
108
+ These challenges are solvabledecades of experience with microservices have taught us hard lessons about decoupling, orchestration, and reliability. Let's apply those lessons!
99
109
 
100
110
  ---
101
111
 
@@ -205,7 +215,7 @@ performance = flock.agent("perf").consumes(Scan).publishes(PerfAnalysis)
205
215
  - ✅ **Loose coupling** - Agents don't know about each other, just data types
206
216
  - ✅ **Scalable** - O(n) complexity, not O(n²) edges
207
217
 
208
- **This is not a new idea.** Blackboard architecture powered groundbreaking AI systems since the 1970s (Hearsay-II, HASP/SIAP, BB1). We're applying proven patterns to modern LLMs.
218
+ **This is not a new idea.** Blackboard architecture has powered groundbreaking AI systems since the 1970s (Hearsay-II, HASP/SIAP, BB1). We're applying proven patterns to modern LLMs.
209
219
 
210
220
  ---
211
221
 
@@ -627,7 +637,7 @@ Flock uses a fundamentally different coordination pattern than most multi-agent
627
637
  ### What Works Today (v0.5.0)
628
638
 
629
639
  **✅ Production-ready core:**
630
- - more than 700 tests, with >75% coverage (>90% on critical paths)
640
+ - More than 700 tests, with >75% coverage (>90% on critical paths)
631
641
  - Blackboard orchestrator with typed artifacts
632
642
  - Parallel + sequential execution (automatic)
633
643
  - Zero-trust security (5 visibility types)
@@ -673,7 +683,7 @@ We're not building a toy framework. We're building enterprise infrastructure for
673
683
 
674
684
  ### Flock 1.0 - Q4 2025 Release
675
685
 
676
- **We're confident to deliver all enterprise features by Q4 2025:**
686
+ **We're confident we can deliver all enterprise features by Q4 2025:**
677
687
 
678
688
  **🏢 Enterprise Persistence**
679
689
  - Redis and PostgreSQL backends for durable blackboard state
@@ -912,13 +922,14 @@ uv run python examples/05-claudes-workshop/lesson_01_code_detective.py
912
922
  - 📚 [7-Lesson Workshop](examples/05-claudes-workshop/) - Progressive lessons from basics to advanced
913
923
  - 🆚 [The Blackboard](examples/02-the-blackboard/) - See data-driven orchestration without graphs
914
924
  - 🎯 [Declarative Basics](examples/01-the-declarative-way/) - Understanding declarative programming
915
- - 📖 [Documentation](AGENTS.md) - Complete development guide
925
+ - 📖 [Documentation](https://docs.flock.whiteduck.de) - Complete online documentation
926
+ - 📘 [AGENTS.md](AGENTS.md) - Development guide
916
927
 
917
928
  ---
918
929
 
919
930
  ## Contributing
920
931
 
921
- We're building Flock in the open. See [CONTRIBUTING.md](CONTRIBUTING.md) and [AGENTS.md](AGENTS.md) for development setup.
932
+ We're building Flock in the open. See **[Contributing Guide](https://docs.flock.whiteduck.de/about/contributing/)** for development setup, or check [CONTRIBUTING.md](CONTRIBUTING.md) and [AGENTS.md](AGENTS.md) locally.
922
933
 
923
934
  **We welcome:**
924
935
  - Bug reports and feature requests
@@ -981,7 +992,7 @@ We're calling this 0.5 to signal:
981
992
 
982
993
  **"Declarative contracts eliminate prompt hell. Blackboard architecture eliminates graph spaghetti. Proven patterns applied to modern LLMs."**
983
994
 
984
- [⭐ Star on GitHub](https://github.com/whiteducksoftware/flock-flow) | [📖 Read the Docs](AGENTS.md) | [🚀 Try Examples](examples/) | [💼 Enterprise Support](mailto:support@whiteduck.de)
995
+ [⭐ Star on GitHub](https://github.com/whiteducksoftware/flock-flow) | [📖 Documentation](https://docs.flock.whiteduck.de) | [🚀 Try Examples](examples/) | [💼 Enterprise Support](mailto:support@whiteduck.de)
985
996
 
986
997
  </div>
987
998
 
@@ -1,10 +1,10 @@
1
1
  flock/__init__.py,sha256=fvp4ltfaAGmYliShuTY_XVIpOUN6bMXbWiBnwb1NBoM,310
2
- flock/agent.py,sha256=vNvfn6UzIyjGLdRwPutoWUJQETnPpX4K8Y2H8lMEFXM,25341
2
+ flock/agent.py,sha256=V8fnLxE7vtTf5R7A-oCAY8Tq_LVf63i2EyZOf5e-gq4,31977
3
3
  flock/artifacts.py,sha256=Xnizu0V4Jbwd1yV_FhXjUZG8Em-5GYsLt7sMX0V2OKI,2222
4
4
  flock/cli.py,sha256=Ay_Z4KDd5wnnF1fLr0NqjMF7kRm_9X_1RXyv5GETDAY,2126
5
5
  flock/components.py,sha256=17vhNMHKc3VUruEbSdb9YNKcDziIe0coS9jpfWBmX4o,6259
6
6
  flock/examples.py,sha256=61xkD48yCW-aDrUXIrqrvxLtV8Vn4DrraQrHrrEUnWA,3530
7
- flock/orchestrator.py,sha256=u5OOyB49kTd8lHyI4gprGk_YyNhQ3nZgYSKz45LpZiQ,28761
7
+ flock/orchestrator.py,sha256=FJGsK9YU0J8KhLdSJU9dkDKiWs6gktniafLwUIxi_x0,33729
8
8
  flock/registry.py,sha256=s0-H-TMtOsDZiZQCc7T1tYiWQg3OZHn5T--jaI_INIc,4786
9
9
  flock/runtime.py,sha256=3C8AYzwwQEwFvwAsIoFN9QSQDWT8l8KzgekhPEsdUM0,8508
10
10
  flock/service.py,sha256=cfvcsqZw9xOsEggncZ08zmiDxFiZpxsBYDSji5OIQQ8,5256
@@ -24,7 +24,7 @@ flock/engines/dspy_engine.py,sha256=Q2gPYLW_f8f-JuBYOMtjtoCZH8Fc447zWF8cHpJl4ew,
24
24
  flock/frontend/README.md,sha256=OFdOItV8FGifmUDb694rV2xLC0vl1HlR5KBEtYv5AB0,25054
25
25
  flock/frontend/index.html,sha256=BFg1VR_YVAJ_MGN16xa7sT6wTGwtFYUhfJhGuKv89VM,312
26
26
  flock/frontend/package-lock.json,sha256=F-KmPhq6IbHXzxtmHL0S7dt6DGs4fWrOkrfKeXaSx6U,150998
27
- flock/frontend/package.json,sha256=X5mMewghkW5K03Y4CI6unF2GIGbV0QoS-kZ04RNtQ3k,1258
27
+ flock/frontend/package.json,sha256=8cpupeJo0xlJgHiEHpBYCU-nHFiiNGJ73NfZLr5-FSg,1258
28
28
  flock/frontend/tsconfig.json,sha256=B9p9jXohg_jrCZAq5_yIHvznpeXHiHQkwUZrVE2oMRA,705
29
29
  flock/frontend/tsconfig.node.json,sha256=u5_YWSqeNkZBRBIZ8Q2E2q6bospcyF23mO-taRO7glc,233
30
30
  flock/frontend/vite.config.ts,sha256=OQOr6Hl75iW7EvEm2_GXFdicYWthgdLhp4lz3d7RkJA,566
@@ -508,8 +508,8 @@ flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1
508
508
  flock/themes/zenwritten-dark.toml,sha256=-dgaUfg1iCr5Dv4UEeHv_cN4GrPUCWAiHSxWK20X1kI,1663
509
509
  flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
510
510
  flock/utility/output_utility_component.py,sha256=yVHhlIIIoYKziI5UyT_zvQb4G-NsxCTgLwA1wXXTTj4,9047
511
- flock_core-0.5.0b58.dist-info/METADATA,sha256=1frs-b0VPrAk3XwsqCa6pG03VeE0cDID7WtFsMeeezQ,34719
512
- flock_core-0.5.0b58.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
513
- flock_core-0.5.0b58.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
514
- flock_core-0.5.0b58.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
515
- flock_core-0.5.0b58.dist-info/RECORD,,
511
+ flock_core-0.5.0b60.dist-info/METADATA,sha256=BFJPOOq0FFHMUP4FdjcGQO8rl5-fi0ItNfZTPhF9vlU,35901
512
+ flock_core-0.5.0b60.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
513
+ flock_core-0.5.0b60.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
514
+ flock_core-0.5.0b60.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
515
+ flock_core-0.5.0b60.dist-info/RECORD,,