flock-core 0.5.8__py3-none-any.whl → 0.5.10__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 (52) hide show
  1. flock/agent.py +149 -62
  2. flock/api/themes.py +6 -2
  3. flock/artifact_collector.py +6 -3
  4. flock/batch_accumulator.py +3 -1
  5. flock/cli.py +3 -1
  6. flock/components.py +45 -56
  7. flock/context_provider.py +531 -0
  8. flock/correlation_engine.py +8 -4
  9. flock/dashboard/collector.py +48 -29
  10. flock/dashboard/events.py +10 -4
  11. flock/dashboard/launcher.py +3 -1
  12. flock/dashboard/models/graph.py +9 -3
  13. flock/dashboard/service.py +143 -72
  14. flock/dashboard/websocket.py +17 -4
  15. flock/engines/dspy_engine.py +174 -98
  16. flock/engines/examples/simple_batch_engine.py +9 -3
  17. flock/examples.py +6 -2
  18. flock/frontend/src/services/indexeddb.test.ts +4 -4
  19. flock/frontend/src/services/indexeddb.ts +1 -1
  20. flock/helper/cli_helper.py +14 -1
  21. flock/logging/auto_trace.py +6 -1
  22. flock/logging/formatters/enum_builder.py +3 -1
  23. flock/logging/formatters/theme_builder.py +32 -17
  24. flock/logging/formatters/themed_formatter.py +38 -22
  25. flock/logging/logging.py +21 -7
  26. flock/logging/telemetry.py +9 -3
  27. flock/logging/telemetry_exporter/duckdb_exporter.py +27 -25
  28. flock/logging/trace_and_logged.py +14 -5
  29. flock/mcp/__init__.py +3 -6
  30. flock/mcp/client.py +49 -19
  31. flock/mcp/config.py +12 -6
  32. flock/mcp/manager.py +6 -2
  33. flock/mcp/servers/sse/flock_sse_server.py +9 -3
  34. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +6 -2
  35. flock/mcp/tool.py +18 -6
  36. flock/mcp/types/handlers.py +3 -1
  37. flock/mcp/types/types.py +9 -3
  38. flock/orchestrator.py +204 -50
  39. flock/orchestrator_component.py +15 -5
  40. flock/patches/dspy_streaming_patch.py +12 -4
  41. flock/registry.py +9 -3
  42. flock/runtime.py +69 -18
  43. flock/service.py +19 -6
  44. flock/store.py +29 -10
  45. flock/subscription.py +6 -4
  46. flock/utilities.py +41 -13
  47. flock/utility/output_utility_component.py +31 -11
  48. {flock_core-0.5.8.dist-info → flock_core-0.5.10.dist-info}/METADATA +134 -4
  49. {flock_core-0.5.8.dist-info → flock_core-0.5.10.dist-info}/RECORD +52 -51
  50. {flock_core-0.5.8.dist-info → flock_core-0.5.10.dist-info}/WHEEL +0 -0
  51. {flock_core-0.5.8.dist-info → flock_core-0.5.10.dist-info}/entry_points.txt +0 -0
  52. {flock_core-0.5.8.dist-info → flock_core-0.5.10.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.5.8
3
+ Version: 0.5.10
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
@@ -37,11 +37,11 @@ Description-Content-Type: text/markdown
37
37
  <p align="center">
38
38
  <a href="https://whiteducksoftware.github.io/flock/" target="_blank"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-blue?style=for-the-badge&logo=readthedocs"></a>
39
39
  <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>
40
- <img alt="Python Version" src="https://img.shields.io/badge/python-3.10%2B-blue?style=for-the-badge&logo=python">
40
+ <img alt="Python Version" src="https://img.shields.io/badge/python-3.12%2B-blue?style=for-the-badge&logo=python">
41
41
  <a href="LICENSE" target="_blank"><img alt="License" src="https://img.shields.io/github/license/whiteducksoftware/flock?style=for-the-badge"></a>
42
42
  <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>
43
- <img alt="Test Coverage" src="https://img.shields.io/badge/coverage-77%25-green?style=for-the-badge">
44
- <img alt="Tests" src="https://img.shields.io/badge/tests-743%20passing-brightgreen?style=for-the-badge">
43
+ <a href="https://codecov.io/gh/whiteducksoftware/flock" target="_blank"><img alt="Test Coverage" src="https://codecov.io/gh/whiteducksoftware/flock/branch/main/graph/badge.svg?token=YOUR_TOKEN_HERE&style=for-the-badge"></a>
44
+ <img alt="Tests" src="https://img.shields.io/badge/tests-1300+-brightgreen?style=for-the-badge">
45
45
  </p>
46
46
 
47
47
  ---
@@ -287,6 +287,39 @@ asyncio.run(main())
287
287
 
288
288
  ---
289
289
 
290
+ ## Context Provider Primer (Security + Cost)
291
+
292
+ Context Providers are the security and efficiency layer between agents and the blackboard. They decide what each agent sees in its historical context and always enforce visibility rules.
293
+
294
+ Why use them
295
+ - Enforce access control (visibility is applied before engines see data)
296
+ - Cut context size (often 90%+) by filtering to what matters
297
+ - Specialize per agent or set a global default
298
+
299
+ Copy/paste examples
300
+ ```python
301
+ from flock import Flock
302
+ from flock.context_provider import FilteredContextProvider
303
+ from flock.store import FilterConfig
304
+
305
+ # Global: show only urgent items (limit context size)
306
+ flock = Flock(
307
+ "openai/gpt-4.1",
308
+ context_provider=FilteredContextProvider(FilterConfig(tags={"urgent"}), limit=50)
309
+ )
310
+
311
+ # Per-agent: override global for a specific role
312
+ senior = flock.agent("senior").consumes(LogEntry).publishes(Analysis)
313
+ senior.context_provider = FilteredContextProvider(
314
+ FilterConfig(tags={"ERROR", "WARN"}),
315
+ limit=200
316
+ )
317
+ ```
318
+
319
+ Learn more: docs/guides/context-providers.md
320
+
321
+ ---
322
+
290
323
  ## Persistent Blackboard History
291
324
 
292
325
  The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
@@ -541,8 +574,105 @@ artifact.visibility = AfterVisibility(ttl=timedelta(hours=24), then=PublicVisibi
541
574
  agent.publishes(PublicReport, visibility=PublicVisibility())
542
575
  ```
543
576
 
577
+ **Visibility has a dual purpose:** It controls both which agents can be **triggered** by an artifact AND which artifacts agents can **see** in their context. This ensures consistent security across agent execution and data access—agents cannot bypass visibility controls through subscription filters or context providers.
578
+
544
579
  **Why this matters:** Financial services, healthcare, defense, SaaS platforms all need this for compliance. Other frameworks make you build it yourself.
545
580
 
581
+ ---
582
+
583
+ ### 🔒 Architecturally Impossible to Bypass Security
584
+
585
+ **Here's what makes Flock different:** In most frameworks, security is something you remember to add. In Flock, **it's architecturally impossible to forget.**
586
+
587
+ Every context provider in Flock inherits from `BaseContextProvider`, which enforces visibility filtering **automatically**. You literally cannot create a provider that forgets to check permissions—the security logic is baked into the base class and executes before your custom code even runs.
588
+
589
+ **What this means in practice:**
590
+
591
+ ```python
592
+ # ❌ Other frameworks: Security is your responsibility (easy to forget!)
593
+ class MyProvider:
594
+ async def get_context(self, agent):
595
+ artifacts = store.get_all() # OOPS! Forgot to check visibility!
596
+ return artifacts # 🔥 Security vulnerability
597
+
598
+ # ✅ Flock: Security is enforced automatically (impossible to bypass!)
599
+ class MyProvider(BaseContextProvider):
600
+ async def get_artifacts(self, request):
601
+ artifacts = await store.query_artifacts(...)
602
+ return artifacts # ✨ Visibility filtering happens automatically!
603
+ # BaseContextProvider calls .visibility.allows() for you
604
+ # You CANNOT bypass this - it's enforced by the architecture
605
+ ```
606
+
607
+ **Built-in providers (all inherit BaseContextProvider):**
608
+ - `DefaultContextProvider` - Full blackboard access (visibility-filtered)
609
+ - `CorrelatedContextProvider` - Workflow isolation (visibility-filtered)
610
+ - `RecentContextProvider` - Token cost control (visibility-filtered)
611
+ - `TimeWindowContextProvider` - Time-based filtering (visibility-filtered)
612
+ - `EmptyContextProvider` - Stateless agents (zero context)
613
+ - `FilteredContextProvider` - Custom filtering (visibility-filtered)
614
+
615
+ **Every single one enforces visibility automatically. Zero chance of accidentally leaking data.**
616
+
617
+ This isn't just convenient—it's **security by design**. When you're building HIPAA-compliant healthcare systems or SOC2-certified SaaS platforms, "impossible to bypass even by accident" is the only acceptable standard.
618
+
619
+ ---
620
+
621
+ ### Context Providers (The Smart Filter)
622
+
623
+ **Control what agents see with custom Context Providers:**
624
+
625
+ ```python
626
+ from flock.context_provider import FilteredContextProvider, PasswordRedactorProvider
627
+ from flock.store import FilterConfig
628
+
629
+ # Global filtering - all agents see only urgent items
630
+ flock = Flock(
631
+ "openai/gpt-4.1",
632
+ context_provider=FilteredContextProvider(FilterConfig(tags={"urgent"}))
633
+ )
634
+
635
+ # Per-agent overrides - specialized context per agent
636
+ error_agent = flock.agent("errors").consumes(Log).publishes(Alert)
637
+ error_agent.context_provider = FilteredContextProvider(FilterConfig(tags={"ERROR"}))
638
+
639
+ # Production-ready password filtering
640
+ from examples.context_provider import PasswordRedactorProvider
641
+ flock = Flock(
642
+ "openai/gpt-4.1",
643
+ context_provider=PasswordRedactorProvider() # Auto-redacts sensitive data!
644
+ )
645
+ ```
646
+
647
+ **What just happened:**
648
+ - ✅ **Filtered context** - Agents see only relevant artifacts (save tokens, improve performance)
649
+ - ✅ **Security boundary** - Visibility enforcement + custom filtering (mandatory, cannot bypass)
650
+ - ✅ **Sensitive data protection** - Auto-redact passwords, API keys, credit cards, SSN, JWT tokens
651
+ - ✅ **Per-agent specialization** - Different agents, different context rules
652
+
653
+ **Production patterns:**
654
+ ```python
655
+ # Password/secret redaction (copy-paste ready!)
656
+ provider = PasswordRedactorProvider(
657
+ custom_patterns={"internal_id": r"ID-\d{6}"},
658
+ redaction_text="[REDACTED]"
659
+ )
660
+
661
+ # Role-based access control
662
+ junior_agent.context_provider = FilteredContextProvider(FilterConfig(tags={"ERROR"}))
663
+ senior_agent.context_provider = FilteredContextProvider(FilterConfig(tags={"ERROR", "WARN"}))
664
+ admin_agent.context_provider = None # See everything (uses default)
665
+
666
+ # Multi-tenant isolation
667
+ agent.context_provider = FilteredContextProvider(
668
+ FilterConfig(tags={"tenant:customer_123"})
669
+ )
670
+ ```
671
+
672
+ **Why this matters:** Reduce token costs (90%+ with smart filtering), protect sensitive data (auto-redact secrets), improve performance (agents see only what they need).
673
+
674
+ **📖 [Learn more: Context Providers Guide](https://whiteducksoftware.github.io/flock/guides/context-providers/) | [Steal production code →](examples/08-context-provider/)**
675
+
546
676
  ### Batching Pattern: Parallel Execution Control
547
677
 
548
678
  **A key differentiator:** The separation of `publish()` and `run_until_idle()` enables parallel execution.
@@ -1,38 +1,39 @@
1
1
  flock/__init__.py,sha256=fvp4ltfaAGmYliShuTY_XVIpOUN6bMXbWiBnwb1NBoM,310
2
- flock/agent.py,sha256=wGSbqND9e4CxPxnkJk2r5z30nfpmd5JWebS3L0PGflo,59815
3
- flock/artifact_collector.py,sha256=8rsg5NzmXeXKNT07TqX1_Z6aAGud2dXKzvS0jhjX3gQ,6372
2
+ flock/agent.py,sha256=luggPsY2pAnjt4TQ-S-ez1us5R2qk6UC-12ccjP6cMk,62607
3
+ flock/artifact_collector.py,sha256=j9p0qvu9IrmMTvOwdX3PGhEnj1-A3uMx0bMfG9zBdgo,6410
4
4
  flock/artifacts.py,sha256=QIUlol5hzUZO_8SINCqsN_Xr8fHixsc01QbFV_WIIj0,2527
5
- flock/batch_accumulator.py,sha256=YcZSpdYMhm8wAGqKEF49NJ_Jl2HZX78NrJYqfyHqTuE,8003
6
- flock/cli.py,sha256=lPtKxEXnGtyuTh0gyG3ixEIFS4Ty6Y0xsPd6SpUTD3U,4526
7
- flock/components.py,sha256=BvNa5E3mXYdB1wTFw5YGbdWil3bA0-I5qDkgxTnFDao,8358
8
- flock/correlation_engine.py,sha256=vvcBC43LWafq4ocT2WxrExJjMJ_B9Xags_6u_c6alDg,8005
9
- flock/examples.py,sha256=7_OkEx6hPfaj4rE2mxpGzb1ZcbHlsXTpWaMNBZ1tOqA,3660
10
- flock/orchestrator.py,sha256=lVxou7BnRwM9LyFMeG4DeGoFrUSkIFj2UekV6O3erwA,62886
11
- flock/orchestrator_component.py,sha256=jHYKv-58Rsu3Qsa6QYEx4iMWyJfpSqjowGZWfv-BKDI,25017
12
- flock/registry.py,sha256=s0-H-TMtOsDZiZQCc7T1tYiWQg3OZHn5T--jaI_INIc,4786
13
- flock/runtime.py,sha256=uEq_zpCd--zqVAGU95uQt9QXqp2036iWo2lRr1JGlM8,8651
14
- flock/service.py,sha256=JDdjjPTPH6NFezAr8x6svtqxIGXA7-AyHS11GF57g9Q,11041
15
- flock/store.py,sha256=3uPTF0Mp7nses9ICBtyrY25SryOx2H0tL9fyzO0c1qM,45779
16
- flock/subscription.py,sha256=0fqjGVAr-3u1azSsXJ-xVjnUgSSYVO2a0Gd_zln2tZA,5422
17
- flock/utilities.py,sha256=TiwGugN6jpRn2LdRLq1thU2vANcLXrzMXa_zZ9FCc7Y,12101
5
+ flock/batch_accumulator.py,sha256=4ZZLERkpH0XzN87-z2b5Tyjubheo_yCxoXz4lsjxUuk,8017
6
+ flock/cli.py,sha256=lSx9qvK0AzfnGPjbMh2Jdsr8TlDA44huxUg_8tdlH_c,4564
7
+ flock/components.py,sha256=SpqFmYBLNIGkKkVrfGpi-9eFj7jKA0N8VJHL-HiyzRc,8092
8
+ flock/context_provider.py,sha256=Le01ZilMobaaPqZVJiBGFWkv1XnN3K6CtnPVD5Ewphk,20245
9
+ flock/correlation_engine.py,sha256=pFD1y13bSMZ9HpUpp6RHWr5vb39gd0mf-rRQIFI0R5Q,8055
10
+ flock/examples.py,sha256=z83GXjtroxRKplt57ur3v8UJFwf9cCHtZ3gj7QHiigs,3688
11
+ flock/orchestrator.py,sha256=g9Vv0Dhd1Ls_Nm_MiTFL7si4LH14owzTiM6fccX9umA,68645
12
+ flock/orchestrator_component.py,sha256=lBn8WXiLzw3MXcU5JrNC3uH2SruLBCj8bSnSzH9txes,25210
13
+ flock/registry.py,sha256=eCSK1yOgcY53vzaNFG4qnlLP3H9R4NWi9fTq_WUNjus,4846
14
+ flock/runtime.py,sha256=DCClW_53ped_M0uMravPXmEGgVn_tOsyynNVYjZyM3c,10771
15
+ flock/service.py,sha256=lwOIlm-nSOHDnjvWFKL7vrAmk6MdGmSJVAihK0wcia4,11287
16
+ flock/store.py,sha256=hvecQqmx1xov7FyRCTwnyFJTpGb_7LHrHHQhGRWRUIE,46029
17
+ flock/subscription.py,sha256=2_0jCxOlk-G1jsD6tiVILmKdmx-Wm1qGYzCZVbz_ktg,5424
18
+ flock/utilities.py,sha256=PNIIBrtvwAkW6cI_OxF2dPS151ZjDNbFOaCfsul2BpE,12473
18
19
  flock/visibility.py,sha256=uwscg32t6Dp9LuA_EVDT5-_1lotzZWWS9Dl1foyJDxo,2926
19
- flock/api/themes.py,sha256=BOj1e0LHx6BDLdnVdXh1LKsbQ_ZeubH9UCoj08dC1yc,1886
20
+ flock/api/themes.py,sha256=7L-Bxhh8N1FXYsyTy7B_n8mSCGl_wDZXrvyY2llkF-A,1938
20
21
  flock/dashboard/__init__.py,sha256=_W6Id_Zb7mkSz0iHY1nfdUqF9p9uV_NyHsU7PFsRnFI,813
21
- flock/dashboard/collector.py,sha256=kCfhu8opZdboqBpOCGsQ_eJdA8mohWgkDIKe5MKs9Gk,21688
22
- flock/dashboard/events.py,sha256=yeg_gfRE7TmDk0IBYdrgyvSuHa5zS64W-Jed0vi5gjQ,7611
22
+ flock/dashboard/collector.py,sha256=zMDv1OYWrDz5obNVMrc7uLImUH5yWIYCaMB0h-Uu2kY,21822
23
+ flock/dashboard/events.py,sha256=ptKNaeHcgYnIO8rBTEK56ZC5w-dUWakXhNzDep1XaL4,7653
23
24
  flock/dashboard/graph_builder.py,sha256=jdiaruce5uRybndlA4aiOXW-gKkHeGtnndzYQ1WyU9Y,32006
24
- flock/dashboard/launcher.py,sha256=dCfwaeMLtyIkik3aVSEsbBdABS5ADRlKWYkih7sF5hM,8196
25
- flock/dashboard/service.py,sha256=mFkDl_tXyIkxRdEDOy4SAq4RvpEMvcs2039yQM0tWTs,52351
26
- flock/dashboard/websocket.py,sha256=_DCZApJPXc8OQnxFDFS9TA9ozq7kM73QByRj-_a8n-8,9508
25
+ flock/dashboard/launcher.py,sha256=qnl1sFm9g2dAyzhyLPrfqAfld63G9aTNRHchgNuGnoo,8218
26
+ flock/dashboard/service.py,sha256=iEhI9W7Z1Z9UHq9DLjAzvDmgaWUr0qac2FPJiu9IcDI,53607
27
+ flock/dashboard/websocket.py,sha256=qv2cbX9DBhglYgGGPFsD9ryehkBsIcJQGg7tJTIDyMM,9689
27
28
  flock/dashboard/models/__init__.py,sha256=T4Yz8IXMm7lBqa2HLDSv7WJBtaKcdZIlTrz6GHNFZxs,68
28
- flock/dashboard/models/graph.py,sha256=oQAGAVMV32tim8xscUxZ9nFOci0RvryjdPf1sJgiGxQ,5402
29
+ flock/dashboard/models/graph.py,sha256=mQBzaogaOV1sss4aI3yNK8Kg4SdztPwIu3VQfrB3zLU,5444
29
30
  flock/dashboard/static_v2/index.html,sha256=0KNfWwmpr0JmVNbalnsaQta0y3XlVhOQ_HSts2LuU3A,423
30
31
  flock/dashboard/static_v2/assets/index-DFRnI_mt.js,sha256=qeezaWLISr_EKNBBh8v0jzspd2KRcz8jW1r0p7z0Ht0,764860
31
32
  flock/dashboard/static_v2/assets/index-fPLNdmp1.css,sha256=skpvfkkrlw7WbmBh7HN-rUKAtKP-gpuLUH4klUgFHT4,74529
32
33
  flock/engines/__init__.py,sha256=waNyObJ8PKCLFZL3WUFynxSK-V47m559P3Px-vl_OSc,124
33
- flock/engines/dspy_engine.py,sha256=z6OEWcoGrizSK0dO34nJUJz_JQg6vftlhocRI394HYk,73295
34
+ flock/engines/dspy_engine.py,sha256=b3PkeyBzcKI1ijR3ojR4FOisdKrxE_hxZhF5WhxKDmQ,75000
34
35
  flock/engines/examples/__init__.py,sha256=cDAjF8_NPL7nhpwa_xxgnPYRAXZWppKE2HkxmL8LGAI,126
35
- flock/engines/examples/simple_batch_engine.py,sha256=XgbOQZmHvNl-0QQEc4Wg-CxK2p4m6LOK6HJxV6zLrto,2844
36
+ flock/engines/examples/simple_batch_engine.py,sha256=0zQozoiNFq_UcBU5plAqg1VjtP6g6eib7VKATEjnRf8,2902
36
37
  flock/frontend/README.md,sha256=0dEzu4UxacGfSstz9_R0KSeFWJ1vNRi0p-KLIay_TfU,26212
37
38
  flock/frontend/index.html,sha256=BFg1VR_YVAJ_MGN16xa7sT6wTGwtFYUhfJhGuKv89VM,312
38
39
  flock/frontend/package-lock.json,sha256=vNOaISeq3EfEDDEsFYPWFaMsqypDgQIE0P_u6tzE0g4,150798
@@ -127,8 +128,8 @@ flock/frontend/src/hooks/usePersistence.ts,sha256=_fHxWLCwNunESIeJVqGB3Z-ANosRGw
127
128
  flock/frontend/src/services/api.ts,sha256=kNHBHvbSk50M3pUtwDMNYwco5Cd4AbQbGGHkpROYHhw,8529
128
129
  flock/frontend/src/services/graphService.test.ts,sha256=wftS4QX-Bw6hogTWXVYaV3F7z6AN94d7iI8jrMVwwkg,11493
129
130
  flock/frontend/src/services/graphService.ts,sha256=MaFdj8S2l7UOkQBkACDv29BuroMy1vJEhliVnsYkmwM,1964
130
- flock/frontend/src/services/indexeddb.test.ts,sha256=lY1JzyKRd4Kaw135JlO7njy5rpaAsRRXLM8SwYxDhAc,27452
131
- flock/frontend/src/services/indexeddb.ts,sha256=2sXodUZAp3jSiS-3a7Bwvkjdjp_Tc47bk5eR_1f9qqw,28703
131
+ flock/frontend/src/services/indexeddb.test.ts,sha256=KMKtBcliXIaVHAZRxwbcip329shJ0g5AysEAj4VULpw,27436
132
+ flock/frontend/src/services/indexeddb.ts,sha256=0tqiyFa-G1P-TctIeV1PUPMOCv5gWvfdJDmLi1hLon0,28699
132
133
  flock/frontend/src/services/layout.test.ts,sha256=-KwUxWCum_Rsyc5NIpk99UB3prfAkMO5ksJULhjOiwA,16174
133
134
  flock/frontend/src/services/layout.ts,sha256=5WzlOv7OBlQXiUxrv4l1JwaAfHbUK1C99JOT0fQCNRY,9503
134
135
  flock/frontend/src/services/themeApplicator.ts,sha256=utRFw-45e1IEOrI6lHkB_E_-5kc2kFKbN-veAUdXiOM,5802
@@ -156,43 +157,43 @@ flock/frontend/src/types/theme.ts,sha256=bjV2zWxBJilEXeosjSSirw05dL7zICShUDx2H0o
156
157
  flock/frontend/src/utils/artifacts.ts,sha256=JjbNXKgcBaUJdR7VKDi0LK0T3d-ltYt4HHbiQNB3rmI,790
157
158
  flock/frontend/src/utils/mockData.ts,sha256=XysjTPAcq6P7BXD8yHv-zJ5vNsxG1T5TLJjX4phOU_w,2316
158
159
  flock/frontend/src/utils/performance.ts,sha256=ZcZjR8DKwF2ixveng2tKIRiW8wZ-ee_RPZFfi1jm4Zo,507
159
- flock/helper/cli_helper.py,sha256=9Tv_uZY43zzJj36NxCdg10kbidvjV8N7BQkbhWz82b4,50066
160
+ flock/helper/cli_helper.py,sha256=IfhD0CZzRnhsyLzjzWEZBAFqLIHIFeedYTwW48KfnmM,50476
160
161
  flock/logging/__init__.py,sha256=RyR9jTC0q02Fh0L8easQfki2uCOSTii5MPhrxcqQNsg,163
161
- flock/logging/auto_trace.py,sha256=XN7_8iRO46FOHiy23F5_Iw7KFYAbALDmau6HOZAM2XY,5543
162
- flock/logging/logging.py,sha256=hYq4Il1ApRytARQfJUsMqnjGJiLW2Y5Ou7s2zHRlns4,20128
163
- flock/logging/telemetry.py,sha256=oLVGARUyYqXfeZjh9CPlnPHnvadUxUs8V5NWHWg7l4U,8226
164
- flock/logging/trace_and_logged.py,sha256=oEMr60Mh2nACiupaIKmWtRkYlqmoWAUUZFxD4UYqHdY,11358
165
- flock/logging/formatters/enum_builder.py,sha256=JMZCxZxm7TX2uVD9l4nIeSPKmSFZV-5v7omXS1Qu1cI,969
166
- flock/logging/formatters/theme_builder.py,sha256=RubV95MY04zB5MIK7814dFoLsTU_wpS7in-GcEjN14o,17007
167
- flock/logging/formatters/themed_formatter.py,sha256=mUOR1BWBvgRkVjDA1aUaKj--MJ02POcGi1psMkcA2E0,20117
162
+ flock/logging/auto_trace.py,sha256=iNx4LZsXjykOQOubBoGpOhldJQeRO94rarS9bFjZ_pM,5562
163
+ flock/logging/logging.py,sha256=Jdei9EYMX_4mSQmJu5plETVaqQ8BBu211DAkmqKhRhk,20270
164
+ flock/logging/telemetry.py,sha256=KWkqB-aMuD7gv2ABMwRjiiJ_DwDtPcOraLWJCB4jRXI,8324
165
+ flock/logging/trace_and_logged.py,sha256=uVOFU0iyl0LzrCi3dWjDHTwastCFN2WTMAtaUJeFYn4,11504
166
+ flock/logging/formatters/enum_builder.py,sha256=y8SjIHPs7ajT9QHR6wjjBmmL7ZrxFzegaBTb5ApOHvY,975
167
+ flock/logging/formatters/theme_builder.py,sha256=i4PjknUKvFAXCAg2NwSE3qi_IOqObUVTWzD5f7HBqdM,17165
168
+ flock/logging/formatters/themed_formatter.py,sha256=-UXx-Z0XcZ1oRXXLr380S8tbjhzaG3nn2OV7mVqEK6Y,20295
168
169
  flock/logging/formatters/themes.py,sha256=80BRJJB0LZr11N0yQw2f8vdb_9179qjQO8PoeBaLMN0,10680
169
170
  flock/logging/span_middleware/baggage_span_processor.py,sha256=gJfRl8FeB6jdtghTaRHCrOaTo4fhPMRKgjqtZj-8T48,1118
170
171
  flock/logging/telemetry_exporter/base_exporter.py,sha256=T8l7GwjIulc2KbkgmhJbQ_psrLNwTGNSi23jvw6MKVA,1205
171
- flock/logging/telemetry_exporter/duckdb_exporter.py,sha256=MoFFsAb-twZF9ZAB0s8TOJ8nwxtoLGmbp7m_YCWQ4AA,8522
172
+ flock/logging/telemetry_exporter/duckdb_exporter.py,sha256=Fu-tuXb1HtTvYMui3GpMpjcQl0H77KtLq1uPAMJjJ-E,8488
172
173
  flock/logging/telemetry_exporter/file_exporter.py,sha256=uTgQZSKfbLjzypirBbiVnccaKBDkiRzhFvUdV26pKEY,3126
173
174
  flock/logging/telemetry_exporter/sqlite_exporter.py,sha256=754G8s4X-JHHpCdoNydJnPX4NZijZk9URutfPWFIT7s,3479
174
- flock/mcp/__init__.py,sha256=QuANhTz09E2fFhtp2yJ716WxXKwEpCMTGqHj54VRs2Q,2512
175
- flock/mcp/client.py,sha256=FRkuWNohFhzAzv-8aLz8Nd3CxkCf_SgHpfbPGTjRbMg,25790
176
- flock/mcp/config.py,sha256=Bk8V2NdbUKwoOvOYdRw-FmEqug2jMjTuGftMUu7tNkI,14821
177
- flock/mcp/manager.py,sha256=X54Ph5CtcIIZNuWndSH2sZijVjVBpPCNHS4M-B1bViU,10942
178
- flock/mcp/tool.py,sha256=rp4iMMnEu6xxEFxjX6In4rmBFwFAtmhPDzNGMsm56Qw,5368
175
+ flock/mcp/__init__.py,sha256=B-8CKTOxC4-i348EEdkwtJlS0AmYqHJZ3dRZ_c8F6Rc,2483
176
+ flock/mcp/client.py,sha256=WVqod_eYHKKxjueRvcM32_fSNct6c6bQ37ZGyz0794A,26334
177
+ flock/mcp/config.py,sha256=1SPgSjkyoUDHGcfu2id1Z4mNO37xtPBUK54kTq5YtJ8,14911
178
+ flock/mcp/manager.py,sha256=FmpJubEvG3QrUG7Yc_QJK_Gs61IbCL348lNEaAf5efA,10976
179
+ flock/mcp/tool.py,sha256=9v_EQEYC5b8a6VONFjuHxgGl4DGwTmVVECd821hcQQA,5476
179
180
  flock/mcp/servers/sse/__init__.py,sha256=qyfDdkZkgscHOkFREvsvoNtzA-CCnXPNma5w9uaIUCo,51
180
- flock/mcp/servers/sse/flock_sse_server.py,sha256=dbkRAcn11V9bBEoPlCMuuzuErTjHigqsnvGYJL4v2ts,3685
181
+ flock/mcp/servers/sse/flock_sse_server.py,sha256=CT7QVCmFj_53cTceQHbqr6bNsoudRw5gtSMlOkrIBA0,3783
181
182
  flock/mcp/servers/stdio/__init__.py,sha256=jgWpJAJ3cV1klZ70gasXrdrpUCsMkVtEAeX0QoVhMGQ,53
182
183
  flock/mcp/servers/stdio/flock_stdio_server.py,sha256=TuJXRqd5nGQk0_DgxLrnIAd8qDZsKYCmFnpeVhO8szE,3551
183
184
  flock/mcp/servers/streamable_http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- flock/mcp/servers/streamable_http/flock_streamable_http_server.py,sha256=qPAypNiFjPwJIFtqYU98dbnKDgEzHG72qUS0dXBKIm4,4391
185
+ flock/mcp/servers/streamable_http/flock_streamable_http_server.py,sha256=KknMXbw3tVRMDRMsyXaLuze7czF19uvTFIZlcVz_KXA,4475
185
186
  flock/mcp/servers/websockets/__init__.py,sha256=KeNgNQRdeCQ9xgpaHB1I0-HyYeBhkifAuZPTIA8eDqM,47
186
187
  flock/mcp/servers/websockets/flock_websocket_server.py,sha256=UywSLftw3stbg_b-3Ygn_tNMo5Btm6I3bmSebcprfjk,3118
187
188
  flock/mcp/types/__init__.py,sha256=iwO7MXRjA-WhIyHSCI9fR6KF_UhzjqXJWT13f_8w4HM,1274
188
189
  flock/mcp/types/callbacks.py,sha256=8S-ZhWTnR7dzUtxTc9nFcKCDbNyhnE3Bsm1QpA_ArEg,2607
189
190
  flock/mcp/types/factories.py,sha256=B7h8apMDT2nR6POOj7aWWn39UbELt6nxHluPhRmemGw,3424
190
- flock/mcp/types/handlers.py,sha256=6ukkSMv1VZSfk2QDUiJnm8xifHnQvWZsxWXqN21BYSg,7804
191
- flock/mcp/types/types.py,sha256=ZbzbVihABFnfmZz2X-CCN7hQDzaSY0T-en43PFbFwQQ,11469
191
+ flock/mcp/types/handlers.py,sha256=MaUNpjfLFi7sozoj-nQDUOCLeoaFD8tdos6XkjBUCzI,7820
192
+ flock/mcp/types/types.py,sha256=EG2YuDlFCHzE4k4XIMur9QPn_6i7N621s90OXeAVRfc,11511
192
193
  flock/mcp/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
194
  flock/mcp/util/helpers.py,sha256=jO8DqqSb_S4dyvsxv5vlMGRoMx92Su_5-Uv17gQNuLU,740
194
195
  flock/patches/__init__.py,sha256=KfRTpO_rz547iKxJDknymar1P3lS_8AhDh-sR1BkcZ0,194
195
- flock/patches/dspy_streaming_patch.py,sha256=4v24wweqSP6r9GGIijMJgvZ_HgV92e10aPq7kaYNYDs,2763
196
+ flock/patches/dspy_streaming_patch.py,sha256=OQeLYWmL-7rqudphMwERnpvXhXamnvYn3xNcySajacY,2879
196
197
  flock/themes/3024-day.toml,sha256=uOVHqEzSyHx0WlUk3D0lne4RBsNBAPCTy3C58yU7kEY,667
197
198
  flock/themes/3024-night.toml,sha256=qsXUwd6ZYz6J-R129_Ao2TKlvvK60svhZJJjB5c8Tfo,1667
198
199
  flock/themes/aardvark-blue.toml,sha256=5ZgsxP3pWLPN3yJ2Wd9ErCo7fy_VJpIfje4kriDKlqo,1667
@@ -529,9 +530,9 @@ flock/themes/zenburn.toml,sha256=NxOAR3cx-Z9PVErEKHFZ6jsjfKBtPmfyN_vGSri5_qo,171
529
530
  flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1664
530
531
  flock/themes/zenwritten-dark.toml,sha256=-dgaUfg1iCr5Dv4UEeHv_cN4GrPUCWAiHSxWK20X1kI,1663
531
532
  flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
532
- flock/utility/output_utility_component.py,sha256=yVHhlIIIoYKziI5UyT_zvQb4G-NsxCTgLwA1wXXTTj4,9047
533
- flock_core-0.5.8.dist-info/METADATA,sha256=-YTxJyohimdEDkoYR2aSsuts3WQ4WC-uW68MSzQJSxo,45182
534
- flock_core-0.5.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
535
- flock_core-0.5.8.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
536
- flock_core-0.5.8.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
537
- flock_core-0.5.8.dist-info/RECORD,,
533
+ flock/utility/output_utility_component.py,sha256=YXzVy4EZXTrz0o6DjlE6tna4N79T5S5b98qDS42KqXM,9316
534
+ flock_core-0.5.10.dist-info/METADATA,sha256=STc1MF57LI48929-B1uzmvLQACqRnTQLtpz-4iXgybQ,50917
535
+ flock_core-0.5.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
536
+ flock_core-0.5.10.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
537
+ flock_core-0.5.10.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
538
+ flock_core-0.5.10.dist-info/RECORD,,