flock-core 0.4.2__py3-none-any.whl → 0.4.5__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/core/__init__.py +11 -0
- flock/core/flock.py +144 -42
- flock/core/flock_agent.py +117 -4
- flock/core/flock_evaluator.py +1 -1
- flock/core/flock_factory.py +290 -2
- flock/core/flock_module.py +101 -0
- flock/core/flock_registry.py +39 -2
- flock/core/flock_server_manager.py +136 -0
- flock/core/logging/telemetry.py +1 -1
- flock/core/mcp/__init__.py +1 -0
- flock/core/mcp/flock_mcp_server.py +614 -0
- flock/core/mcp/flock_mcp_tool_base.py +201 -0
- flock/core/mcp/mcp_client.py +658 -0
- flock/core/mcp/mcp_client_manager.py +201 -0
- flock/core/mcp/mcp_config.py +237 -0
- flock/core/mcp/types/__init__.py +1 -0
- flock/core/mcp/types/callbacks.py +86 -0
- flock/core/mcp/types/factories.py +111 -0
- flock/core/mcp/types/handlers.py +240 -0
- flock/core/mcp/types/types.py +157 -0
- flock/core/mcp/util/__init__.py +0 -0
- flock/core/mcp/util/helpers.py +23 -0
- flock/core/mixin/dspy_integration.py +45 -12
- flock/core/serialization/flock_serializer.py +52 -1
- flock/core/util/spliter.py +4 -0
- flock/evaluators/declarative/declarative_evaluator.py +4 -3
- flock/mcp/servers/sse/__init__.py +1 -0
- flock/mcp/servers/sse/flock_sse_server.py +139 -0
- flock/mcp/servers/stdio/__init__.py +1 -0
- flock/mcp/servers/stdio/flock_stdio_server.py +138 -0
- flock/mcp/servers/websockets/__init__.py +1 -0
- flock/mcp/servers/websockets/flock_websocket_server.py +119 -0
- flock/modules/performance/metrics_module.py +159 -1
- {flock_core-0.4.2.dist-info → flock_core-0.4.5.dist-info}/METADATA +278 -64
- {flock_core-0.4.2.dist-info → flock_core-0.4.5.dist-info}/RECORD +38 -18
- {flock_core-0.4.2.dist-info → flock_core-0.4.5.dist-info}/WHEEL +0 -0
- {flock_core-0.4.2.dist-info → flock_core-0.4.5.dist-info}/entry_points.txt +0 -0
- {flock_core-0.4.2.dist-info → flock_core-0.4.5.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -21,9 +21,9 @@ Requires-Dist: litellm==1.69.3
|
|
|
21
21
|
Requires-Dist: loguru>=0.7.3
|
|
22
22
|
Requires-Dist: markdown2>=2.5.3
|
|
23
23
|
Requires-Dist: matplotlib>=3.10.0
|
|
24
|
+
Requires-Dist: mcp>=1.7.1
|
|
24
25
|
Requires-Dist: mem0ai[graph]>=0.1.101
|
|
25
26
|
Requires-Dist: msgpack>=1.1.0
|
|
26
|
-
Requires-Dist: notion-client>=2.3.0
|
|
27
27
|
Requires-Dist: openai==1.75.0
|
|
28
28
|
Requires-Dist: opentelemetry-api>=1.30.0
|
|
29
29
|
Requires-Dist: opentelemetry-exporter-jaeger-proto-grpc>=1.21.0
|
|
@@ -44,8 +44,10 @@ Requires-Dist: python-fasthtml>=0.12.6
|
|
|
44
44
|
Requires-Dist: pyyaml>=6.0
|
|
45
45
|
Requires-Dist: questionary>=2.1.0
|
|
46
46
|
Requires-Dist: rich>=13.9.4
|
|
47
|
+
Requires-Dist: rouge-score>=0.1.2
|
|
47
48
|
Requires-Dist: sentence-transformers>=3.4.1
|
|
48
49
|
Requires-Dist: temporalio>=1.9.0
|
|
50
|
+
Requires-Dist: thefuzz>=0.22.1
|
|
49
51
|
Requires-Dist: tiktoken>=0.8.0
|
|
50
52
|
Requires-Dist: toml>=0.10.2
|
|
51
53
|
Requires-Dist: tqdm>=4.67.1
|
|
@@ -246,71 +248,299 @@ if __name__ == "__main__":
|
|
|
246
248
|
```
|
|
247
249
|
|
|
248
250
|
## 🐤 New in Flock 0.4.0 `Magpie` 🐤
|
|
251
|
+
<p align="center">
|
|
252
|
+
<img width="300" alt="image" src="https://github.com/user-attachments/assets/34c2fe2f-6dd2-498c-a826-1687cb158755" />
|
|
253
|
+
</p>
|
|
249
254
|
|
|
250
|
-
Version 0.4.0 brings significant enhancements focused on usability, deployment, and robustness:
|
|
251
255
|
|
|
252
256
|
|
|
253
|
-
### 🚀 REST API
|
|
257
|
+
### 🚀 REST API – Deploy Flock Agents as REST API Endpoints
|
|
254
258
|
|
|
255
259
|
Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
|
|
256
260
|
|
|
257
|
-
|
|
261
|
+
The all-in-one `flock.serve()` method turns your Flock into a proper REST API!
|
|
258
262
|
|
|
259
|
-
|
|
263
|
+
<img width="1135" alt="image" src="https://github.com/user-attachments/assets/95a58e96-d866-4fd1-aca3-c7635843503c" />
|
|
260
264
|
|
|
261
|
-
|
|
265
|
+
Need custom endpoints to wrap abstract agent logic or add business logic? We've got you.
|
|
266
|
+
Define them. Declaratively.
|
|
262
267
|
|
|
263
|
-
|
|
268
|
+
```python
|
|
269
|
+
word_count_route = FlockEndpoint(
|
|
270
|
+
path="/api/word_count",
|
|
271
|
+
methods=["GET"],
|
|
272
|
+
callback=word_count,
|
|
273
|
+
query_model=WordCountParams,
|
|
274
|
+
response_model=WordCountResponse,
|
|
275
|
+
summary="Counts words in a text",
|
|
276
|
+
description="Takes a text and returns the number of words in it.",
|
|
277
|
+
)
|
|
264
278
|
|
|
265
|
-
|
|
279
|
+
flock.serve(custom_endpoints=[img_url_route, word_count_route, yoda_route])
|
|
280
|
+
```
|
|
266
281
|
|
|
267
|
-
|
|
282
|
+
<img width="1135" alt="image" src="https://github.com/user-attachments/assets/d9315648-ac10-4129-aca4-1cb4c8835672" />
|
|
268
283
|
|
|
269
|
-
|
|
284
|
+
Want chat and UI too? Just turn them on.
|
|
270
285
|
|
|
271
|
-
|
|
286
|
+
```python
|
|
287
|
+
flock.serve(ui=True, chat=True)
|
|
288
|
+
```
|
|
272
289
|
|
|
273
|
-
|
|
290
|
+
---
|
|
274
291
|
|
|
275
|
-
|
|
292
|
+
### 🖥️ Web UI – Test Flock Agents in the Browser
|
|
276
293
|
|
|
277
|
-
|
|
294
|
+
Test and interact with your Flock agents directly in your browser using an integrated web interface.
|
|
278
295
|
|
|
279
|
-
|
|
296
|
+

|
|
280
297
|
|
|
281
|
-
|
|
298
|
+
Highlights of this feature-rich interface:
|
|
282
299
|
|
|
283
|
-
|
|
300
|
+
* Run all your agents and agent flows
|
|
301
|
+
* Chat with your agents
|
|
302
|
+
* Create sharable links – these freeze agent config so testers can focus on evaluation
|
|
303
|
+
* Send direct feedback – includes everything needed to reproduce issues
|
|
304
|
+
* Switch modes – like standalone chat mode, which hides all but the chat
|
|
284
305
|
|
|
285
|
-
|
|
306
|
+
<img width="1135" alt="image" src="https://github.com/user-attachments/assets/398337ee-e56e-4bce-8bd8-d258c261cb64" />
|
|
286
307
|
|
|
287
|
-
|
|
288
|
-
* **Retries:** Configure automatic retries for activities (like LLM calls or tool usage) with exponential backoff.
|
|
289
|
-
* **Scalability:** Distribute workflow and activity execution across multiple worker processes using Task Queues.
|
|
290
|
-
* **Observability:** Gain deep insights into workflow execution history via the Temporal UI.
|
|
308
|
+
And much, much more... All features are based on real-world client feedback and serve actual business needs.
|
|
291
309
|
|
|
292
|
-
|
|
310
|
+
---
|
|
293
311
|
|
|
294
|
-
|
|
295
|
-
* **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
|
|
296
|
-
* **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
|
|
312
|
+
### ⌨️ CLI Tool – Manage Flock Agents via Command Line
|
|
297
313
|
|
|
298
|
-
|
|
314
|
+
Manage configurations, run agents, and inspect results – all from your terminal. A quick way to test and validate serialized flocks.
|
|
299
315
|
|
|
300
|
-
|
|
316
|
+

|
|
301
317
|
|
|
302
|
-
|
|
318
|
+
---
|
|
303
319
|
|
|
304
|
-
|
|
305
|
-
|
|
320
|
+
### 💾 Enhanced Serialization – Share, Deploy, and Run Flocks from YAML
|
|
321
|
+
|
|
322
|
+
Define and share entire Flock configurations using readable YAML files. Perfect for versioning, deployment, and portability.
|
|
323
|
+
|
|
324
|
+
Take note how even custom types like `FantasyCharacter` are serialized so the target system doesn't even need your code! Everything portable!
|
|
325
|
+
|
|
326
|
+
```yaml
|
|
327
|
+
name: pydantic_example
|
|
328
|
+
model: openai/gpt-4o
|
|
329
|
+
enable_temporal: false
|
|
330
|
+
enable_logging: false
|
|
331
|
+
show_flock_banner: false
|
|
332
|
+
temporal_start_in_process_worker: true
|
|
333
|
+
agents:
|
|
334
|
+
character_agent:
|
|
335
|
+
name: character_agent
|
|
336
|
+
model: openai/gpt-4o
|
|
337
|
+
description: Generates fantasy RPG character profiles for a specified number of
|
|
338
|
+
characters.
|
|
339
|
+
input: 'number_of_characters: int | The number of fantasy character profiles to
|
|
340
|
+
generate.'
|
|
341
|
+
output: 'character_list: list[FantasyCharacter] | A list containing the generated
|
|
342
|
+
character profiles.'
|
|
343
|
+
write_to_file: false
|
|
344
|
+
wait_for_input: false
|
|
345
|
+
evaluator:
|
|
346
|
+
name: default
|
|
347
|
+
config:
|
|
348
|
+
model: openai/gpt-4o
|
|
349
|
+
use_cache: true
|
|
350
|
+
temperature: 0.8
|
|
351
|
+
max_tokens: 8192
|
|
352
|
+
stream: false
|
|
353
|
+
include_thought_process: false
|
|
354
|
+
kwargs: {}
|
|
355
|
+
type: DeclarativeEvaluator
|
|
356
|
+
modules:
|
|
357
|
+
output:
|
|
358
|
+
name: output
|
|
359
|
+
config:
|
|
360
|
+
enabled: true
|
|
361
|
+
theme: abernathy
|
|
362
|
+
render_table: false
|
|
363
|
+
max_length: 1000
|
|
364
|
+
truncate_long_values: true
|
|
365
|
+
show_metadata: true
|
|
366
|
+
format_code_blocks: true
|
|
367
|
+
custom_formatters: {}
|
|
368
|
+
no_output: false
|
|
369
|
+
print_context: false
|
|
370
|
+
type: OutputModule
|
|
371
|
+
metrics:
|
|
372
|
+
name: metrics
|
|
373
|
+
config:
|
|
374
|
+
enabled: true
|
|
375
|
+
collect_timing: true
|
|
376
|
+
collect_memory: true
|
|
377
|
+
collect_token_usage: true
|
|
378
|
+
collect_cpu: true
|
|
379
|
+
storage_type: json
|
|
380
|
+
metrics_dir: metrics/
|
|
381
|
+
aggregation_interval: 1h
|
|
382
|
+
retention_days: 30
|
|
383
|
+
alert_on_high_latency: true
|
|
384
|
+
latency_threshold_ms: 30000
|
|
385
|
+
type: MetricsModule
|
|
386
|
+
types:
|
|
387
|
+
FantasyCharacter:
|
|
388
|
+
module_path: __main__
|
|
389
|
+
type: pydantic.BaseModel
|
|
390
|
+
schema:
|
|
391
|
+
description: 'Data model for fantasy RPG character information.
|
|
392
|
+
|
|
393
|
+
Docstrings and Field descriptions can help guide the LLM.'
|
|
394
|
+
properties:
|
|
395
|
+
name:
|
|
396
|
+
description: A creative fantasy character name.
|
|
397
|
+
title: Name
|
|
398
|
+
type: string
|
|
399
|
+
race:
|
|
400
|
+
description: The character's race.
|
|
401
|
+
enum:
|
|
402
|
+
- human
|
|
403
|
+
- elf
|
|
404
|
+
- dwarf
|
|
405
|
+
- orc
|
|
406
|
+
- halfling
|
|
407
|
+
title: Race
|
|
408
|
+
type: string
|
|
409
|
+
class_type:
|
|
410
|
+
description: The character's class.
|
|
411
|
+
enum:
|
|
412
|
+
- warrior
|
|
413
|
+
- mage
|
|
414
|
+
- rogue
|
|
415
|
+
- cleric
|
|
416
|
+
- ranger
|
|
417
|
+
title: Class Type
|
|
418
|
+
type: string
|
|
419
|
+
level:
|
|
420
|
+
description: Character level
|
|
421
|
+
title: Level
|
|
422
|
+
type: integer
|
|
423
|
+
strength:
|
|
424
|
+
description: Strength stat
|
|
425
|
+
title: Strength
|
|
426
|
+
type: integer
|
|
427
|
+
dexterity:
|
|
428
|
+
description: Dexterity stat
|
|
429
|
+
title: Dexterity
|
|
430
|
+
type: integer
|
|
431
|
+
constitution:
|
|
432
|
+
description: Constitution stat
|
|
433
|
+
title: Constitution
|
|
434
|
+
type: integer
|
|
435
|
+
intelligence:
|
|
436
|
+
description: Intelligence stat
|
|
437
|
+
title: Intelligence
|
|
438
|
+
type: integer
|
|
439
|
+
wisdom:
|
|
440
|
+
description: Wisdom stat
|
|
441
|
+
title: Wisdom
|
|
442
|
+
type: integer
|
|
443
|
+
charisma:
|
|
444
|
+
description: Charisma stat
|
|
445
|
+
title: Charisma
|
|
446
|
+
type: integer
|
|
447
|
+
weapons:
|
|
448
|
+
description: A list of weapons the character carries.
|
|
449
|
+
items:
|
|
450
|
+
type: string
|
|
451
|
+
title: Weapons
|
|
452
|
+
type: array
|
|
453
|
+
backstory:
|
|
454
|
+
description: A brief, engaging backstory (2-3 sentences).
|
|
455
|
+
title: Backstory
|
|
456
|
+
type: string
|
|
457
|
+
motivation:
|
|
458
|
+
description: The character's motivation for their adventuring.
|
|
459
|
+
title: Motivation
|
|
460
|
+
type: string
|
|
461
|
+
alignment:
|
|
462
|
+
description: Character's moral alignment
|
|
463
|
+
title: Alignment
|
|
464
|
+
type: string
|
|
465
|
+
required:
|
|
466
|
+
- name
|
|
467
|
+
- race
|
|
468
|
+
- class_type
|
|
469
|
+
- level
|
|
470
|
+
- strength
|
|
471
|
+
- dexterity
|
|
472
|
+
- constitution
|
|
473
|
+
- intelligence
|
|
474
|
+
- wisdom
|
|
475
|
+
- charisma
|
|
476
|
+
- weapons
|
|
477
|
+
- backstory
|
|
478
|
+
- motivation
|
|
479
|
+
- alignment
|
|
480
|
+
type: object
|
|
481
|
+
components:
|
|
482
|
+
DeclarativeEvaluator:
|
|
483
|
+
type: flock_component
|
|
484
|
+
module_path: flock.evaluators.declarative.declarative_evaluator
|
|
485
|
+
file_path: src\\flock\\evaluators\\declarative\\declarative_evaluator.py
|
|
486
|
+
description: Evaluator that uses DSPy for generation.
|
|
487
|
+
OutputModule:
|
|
488
|
+
type: flock_component
|
|
489
|
+
module_path: flock.modules.output.output_module
|
|
490
|
+
file_path: src\\flock\\modules\\output\\output_module.py
|
|
491
|
+
description: Module that handles output formatting and display.
|
|
492
|
+
MetricsModule:
|
|
493
|
+
type: flock_component
|
|
494
|
+
module_path: flock.modules.performance.metrics_module
|
|
495
|
+
file_path: src\\flock\\modules\\performance\\metrics_module.py
|
|
496
|
+
description: Module for collecting and analyzing agent performance metrics.
|
|
497
|
+
dependencies:
|
|
498
|
+
- pydantic>=2.0.0
|
|
499
|
+
- flock-core>=0.4.0
|
|
500
|
+
metadata:
|
|
501
|
+
path_type: relative
|
|
502
|
+
flock_version: 0.4.0
|
|
503
|
+
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
Why is text-based serialization cool? Because agents can manipulate their own config – go wild with meta agents and experiments.
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
### 🌀 New Execution Flows – Batch and Evaluation Modes
|
|
511
|
+
|
|
512
|
+
Run Flock in batch mode to process multiple inputs or in evaluation mode to benchmark agents against question/answer pairs.
|
|
306
513
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
514
|
+
```python
|
|
515
|
+
batch_data = [
|
|
516
|
+
{"topic": "Robot Kittens", "audience": "Tech Enthusiasts"},
|
|
517
|
+
{"topic": "AI in Gardening", "audience": "Homeowners"},
|
|
518
|
+
...
|
|
519
|
+
]
|
|
520
|
+
|
|
521
|
+
static_data = {"number_of_slides": 6}
|
|
522
|
+
|
|
523
|
+
silent_results = flock.run_batch(
|
|
524
|
+
start_agent=presentation_agent,
|
|
525
|
+
batch_inputs=batch_data,
|
|
526
|
+
static_inputs=static_data,
|
|
527
|
+
parallel=True,
|
|
528
|
+
max_workers=5,
|
|
529
|
+
silent_mode=True,
|
|
530
|
+
return_errors=True,
|
|
531
|
+
write_to_csv=".flock/batch_results.csv",
|
|
311
532
|
)
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Supports CSV in and out. Combine with `.evaluate()` to benchmark Flock with known Q/A sets.
|
|
312
536
|
|
|
313
|
-
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
### ⏱️ First-Class Temporal Integration
|
|
540
|
+
|
|
541
|
+
Flock 0.4.0 brings seamless integration with Temporal.io. Build production-grade, reliable, and scalable agent workflows.
|
|
542
|
+
|
|
543
|
+
```python
|
|
314
544
|
flock = Flock(
|
|
315
545
|
enable_temporal=True,
|
|
316
546
|
temporal_config=TemporalWorkflowConfig(
|
|
@@ -321,56 +551,40 @@ flock = Flock(
|
|
|
321
551
|
),
|
|
322
552
|
),
|
|
323
553
|
)
|
|
324
|
-
|
|
325
|
-
# Agent-scoped temporal config
|
|
326
|
-
content_agent = FlockFactory.create_default_agent(
|
|
327
|
-
name="content_agent",
|
|
328
|
-
input="funny_title, funny_slide_headers",
|
|
329
|
-
output="funny_slide_content",
|
|
330
|
-
temporal_activity_config=TemporalActivityConfig(
|
|
331
|
-
start_to_close_timeout=timedelta(minutes=1),
|
|
332
|
-
retry_policy=TemporalRetryPolicyConfig(
|
|
333
|
-
maximum_attempts=4,
|
|
334
|
-
initial_interval=timedelta(seconds=2),
|
|
335
|
-
non_retryable_error_types=["ValueError"],
|
|
336
|
-
),
|
|
337
|
-
),
|
|
338
|
-
)
|
|
339
554
|
```
|
|
340
555
|
|
|
341
|
-
|
|
556
|
+
Just set a flag. Add your constraints. Now you've got retry policies, timeout control, and error handling baked in.
|
|
342
557
|
|
|
343
|
-
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
### ✨ Utility – @flockclass Hydrator
|
|
344
561
|
|
|
345
|
-
Flock also
|
|
562
|
+
Flock also adds conveniences. With `@flockclass`, you can turn any Pydantic model into a self-hydrating agent.
|
|
346
563
|
|
|
347
564
|
```python
|
|
348
565
|
from pydantic import BaseModel
|
|
349
|
-
from flock.util.hydrator import flockclass
|
|
350
|
-
import asyncio
|
|
566
|
+
from flock.util.hydrator import flockclass
|
|
351
567
|
|
|
352
|
-
@flockclass(model="openai/gpt-4o")
|
|
568
|
+
@flockclass(model="openai/gpt-4o")
|
|
353
569
|
class CharacterIdea(BaseModel):
|
|
354
570
|
name: str
|
|
355
571
|
char_class: str
|
|
356
572
|
race: str
|
|
357
|
-
backstory_hook: str | None = None
|
|
358
|
-
personality_trait: str | None = None
|
|
573
|
+
backstory_hook: str | None = None
|
|
574
|
+
personality_trait: str | None = None
|
|
359
575
|
|
|
360
576
|
async def create_character():
|
|
361
|
-
# Create with minimal data
|
|
362
577
|
char = CharacterIdea(name="Gorok", char_class="Barbarian", race="Orc")
|
|
363
578
|
print(f"Before Hydration: {char}")
|
|
364
579
|
|
|
365
|
-
# Call hydrate to fill in the None fields using the LLM
|
|
366
580
|
hydrated_char = await char.hydrate()
|
|
367
581
|
|
|
368
582
|
print(f"\nAfter Hydration: {hydrated_char}")
|
|
369
583
|
print(f"Backstory Hook: {hydrated_char.backstory_hook}")
|
|
370
|
-
|
|
371
|
-
# asyncio.run(create_character())
|
|
372
584
|
```
|
|
373
585
|
|
|
586
|
+
|
|
587
|
+
|
|
374
588
|
--------------------------------
|
|
375
589
|
|
|
376
590
|
## 📚 Examples & Tutorials
|
|
@@ -25,14 +25,15 @@ flock/cli/utils.py,sha256=JJrvM-1D2tbWkicrtkhOgRqVqYb0MdA2XtHYGOYuPRw,4644
|
|
|
25
25
|
flock/cli/view_results.py,sha256=dOzK0O1FHSIDERnx48y-2Xke9BkOHS7pcOhs64AyIg0,781
|
|
26
26
|
flock/cli/yaml_editor.py,sha256=K3N0bh61G1TSDAZDnurqW9e_-hO6CtSQKXQqlDhCjVo,12527
|
|
27
27
|
flock/cli/assets/release_notes.md,sha256=bqnk50jxM3w5uY44Dc7MkdT8XmRREFxrVBAG9XCOSSU,4896
|
|
28
|
-
flock/core/__init__.py,sha256=
|
|
29
|
-
flock/core/flock.py,sha256=
|
|
30
|
-
flock/core/flock_agent.py,sha256=
|
|
31
|
-
flock/core/flock_evaluator.py,sha256=
|
|
32
|
-
flock/core/flock_factory.py,sha256=
|
|
33
|
-
flock/core/flock_module.py,sha256=
|
|
34
|
-
flock/core/flock_registry.py,sha256=
|
|
28
|
+
flock/core/__init__.py,sha256=juwyNr3QqKXUS5-E3hlMYRhgqHgQBqgtP12OF3tUCAI,1249
|
|
29
|
+
flock/core/flock.py,sha256=r1KNGyc4R3O6xV9yRfUQUDtCHP10atGZb43sPrcTvwU,38999
|
|
30
|
+
flock/core/flock_agent.py,sha256=0AzRr5xLM9cIpOUz6LGMjFeqDMun9wmcj2nc-HFl3Z4,48559
|
|
31
|
+
flock/core/flock_evaluator.py,sha256=onbU6r146QVfdrHITF8AMH2U79enAls4QE2gJfpAYVw,1721
|
|
32
|
+
flock/core/flock_factory.py,sha256=AXQzecI0fhbJxdDDP7VckqheYX77OJ6ohG0ZU6SxgE4,13873
|
|
33
|
+
flock/core/flock_module.py,sha256=ObILimpVaPnaaqYvcBYJJ20lQzfrjgTdADplaNRjHU0,7448
|
|
34
|
+
flock/core/flock_registry.py,sha256=Ub-TjbT1nx5gRq2nEEtAnCQl4Mnm3RupRf1RYDbONSs,27119
|
|
35
35
|
flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
|
|
36
|
+
flock/core/flock_server_manager.py,sha256=YU6HOcg_IBXtnkbTIBNBONh3MZkvIjdKWHaiSOo16sE,4555
|
|
36
37
|
flock/core/api/__init__.py,sha256=KdzUwBOwhxqqy7lAMLpysKL5GvpIiwOy6CxXELZVWaY,186
|
|
37
38
|
flock/core/api/custom_endpoint.py,sha256=Mbk2owdcXVATaT5FtEWXFzllgursozcmqP8ouG5btc0,1305
|
|
38
39
|
flock/core/api/endpoints.py,sha256=YoqnGscF02OxGXrvOxkn-9hnCwcZD9Vx6YkeHoC8pSk,12187
|
|
@@ -55,7 +56,7 @@ flock/core/execution/temporal_executor.py,sha256=dHcb0xuzPFWU_wbwTgI7glLNyyppei9
|
|
|
55
56
|
flock/core/interpreter/python_interpreter.py,sha256=RaUMZuufsKBNQ4FAeSaOgUuxzs8VYu5TgUUs-xwaxxM,26376
|
|
56
57
|
flock/core/logging/__init__.py,sha256=Q8hp9-1ilPIUIV0jLgJ3_cP7COrea32cVwL7dicPnlM,82
|
|
57
58
|
flock/core/logging/logging.py,sha256=JcgABQ8QJU1hhzhfF93eqnE0jhyXGZ2oObZst68sKR8,15409
|
|
58
|
-
flock/core/logging/telemetry.py,sha256=
|
|
59
|
+
flock/core/logging/telemetry.py,sha256=Trssqx02SBovTL843YwY3L-ZGj3KvcfMHLMU7Syk8L0,6561
|
|
59
60
|
flock/core/logging/trace_and_logged.py,sha256=5vNrK1kxuPMoPJ0-QjQg-EDJL1oiEzvU6UNi6X8FiMs,2117
|
|
60
61
|
flock/core/logging/formatters/enum_builder.py,sha256=LgEYXUv84wK5vwHflZ5h8HBGgvLH3sByvUQe8tZiyY0,981
|
|
61
62
|
flock/core/logging/formatters/theme_builder.py,sha256=Wnaal3HuUDA4HFg9tdql1BxYwK83ACOZBBQy-DXnxcA,17342
|
|
@@ -65,11 +66,24 @@ flock/core/logging/span_middleware/baggage_span_processor.py,sha256=gJfRl8FeB6jd
|
|
|
65
66
|
flock/core/logging/telemetry_exporter/base_exporter.py,sha256=rQJJzS6q9n2aojoSqwCnl7ZtHrh5LZZ-gkxUuI5WfrQ,1124
|
|
66
67
|
flock/core/logging/telemetry_exporter/file_exporter.py,sha256=nKAjJSZtA7FqHSTuTiFtYYepaxOq7l1rDvs8U8rSBlA,3023
|
|
67
68
|
flock/core/logging/telemetry_exporter/sqlite_exporter.py,sha256=CDsiMb9QcqeXelZ6ZqPSS56ovMPGqOu6whzBZRK__Vg,3498
|
|
68
|
-
flock/core/
|
|
69
|
+
flock/core/mcp/__init__.py,sha256=g3hzM_9ntsr-Af9dE9cCZEjQ9YX2jk7-Jm-0JcHSk1A,25
|
|
70
|
+
flock/core/mcp/flock_mcp_server.py,sha256=-rdIRwRoEqdxxd-pd_m4G5ySanFCr4EwedEUrNT_rnk,24732
|
|
71
|
+
flock/core/mcp/flock_mcp_tool_base.py,sha256=pMxyHPRc2qx6bt38jq2VYBarZLVxhK2TpvK32EmdS8s,6814
|
|
72
|
+
flock/core/mcp/mcp_client.py,sha256=LiX3TRnwBaV01_fNS9pZpBpjOARs0RD7fk_x1cY1_p0,24666
|
|
73
|
+
flock/core/mcp/mcp_client_manager.py,sha256=YCNWgGMG8Va5AYfOmbG3s83EBzIrPGRrdPywUevqnT4,8075
|
|
74
|
+
flock/core/mcp/mcp_config.py,sha256=knKywvyNPvYkQqaKFBLb3WayupSd5mt7KNrxx_ZjBco,7325
|
|
75
|
+
flock/core/mcp/types/__init__.py,sha256=YgEJvTXe5VfSMfJNlpefdBYJOmMbMWQsXzc_qmOAybg,25
|
|
76
|
+
flock/core/mcp/types/callbacks.py,sha256=kD5PnuL-oMYhHjKU-l1pAk8NkJ7RmeDDLu0pjMgK7oU,2547
|
|
77
|
+
flock/core/mcp/types/factories.py,sha256=fgdbZUlZPwn-HH3Q3ljh-DsB7lcR6u5qFnzhC-jAM3I,3528
|
|
78
|
+
flock/core/mcp/types/handlers.py,sha256=mhAoSS6vA3K7YP_mF9Sb2Zn2RvFM8fXxtbwC4zgU2JQ,7888
|
|
79
|
+
flock/core/mcp/types/types.py,sha256=NFVFv0BXy4P79SGe8rKBO4VH41xkpF6Y-yvU3Fmzx6w,4872
|
|
80
|
+
flock/core/mcp/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
+
flock/core/mcp/util/helpers.py,sha256=Xlf4iKW_lZxsVMTRoOnV29JsJfAppfmEJrb6sIcoCH4,636
|
|
82
|
+
flock/core/mixin/dspy_integration.py,sha256=iJLKyMyebQ-gMKGgw9v1FokLRe4J2vUFm1qJYp2x1-U,17685
|
|
69
83
|
flock/core/mixin/prompt_parser.py,sha256=eOqI-FK3y17gVqpc_y5GF-WmK1Jv8mFlkZxTcgweoxI,5121
|
|
70
84
|
flock/core/serialization/__init__.py,sha256=CML7fPgG6p4c0CDBlJ_uwV1aZZhJKK9uy3IoIHfO87w,431
|
|
71
85
|
flock/core/serialization/callable_registry.py,sha256=sUZECTZWsM3fJ8FDRQ-FgLNW9hF26nY17AD6fJKADMc,1419
|
|
72
|
-
flock/core/serialization/flock_serializer.py,sha256=
|
|
86
|
+
flock/core/serialization/flock_serializer.py,sha256=mpBHGPlYrm6QOchOnw8v4l10unb4TXqO9_G60yMutEs,35461
|
|
73
87
|
flock/core/serialization/json_encoder.py,sha256=gAKj2zU_8wQiNvdkby2hksSA4fbPNwTjup_yz1Le1Vw,1229
|
|
74
88
|
flock/core/serialization/secure_serializer.py,sha256=n5-zRvvXddgJv1FFHsaQ2wuYdL3WUSGPvG_LGaffEJo,6144
|
|
75
89
|
flock/core/serialization/serializable.py,sha256=qlv8TsTqRuklXiNuCMrvro5VKz764xC2i3FlgLJSkdk,12129
|
|
@@ -79,13 +93,19 @@ flock/core/util/file_path_utils.py,sha256=Odf7uU32C-x1KNighbNERSiMtkzW4h8laABIoF
|
|
|
79
93
|
flock/core/util/hydrator.py,sha256=QJvCA8F4nkSP5akp3yg0cT6oaajOr1n7sldW5dCs6Lo,10733
|
|
80
94
|
flock/core/util/input_resolver.py,sha256=KPoPSpklyCoiR2t5r6J6GJHegmPLFZ0YE126VcKBewM,4703
|
|
81
95
|
flock/core/util/loader.py,sha256=j3q2qem5bFMP2SmMuYjb-ISxsNGNZd1baQmpvAnRUUk,2244
|
|
82
|
-
flock/core/util/spliter.py,sha256=
|
|
96
|
+
flock/core/util/spliter.py,sha256=rDLnZX158PWkmW8vi2UfMLAMRXcHQFUIydAABd-lDGw,7154
|
|
83
97
|
flock/evaluators/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
84
98
|
flock/evaluators/declarative/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
85
|
-
flock/evaluators/declarative/declarative_evaluator.py,sha256=
|
|
99
|
+
flock/evaluators/declarative/declarative_evaluator.py,sha256=KOdZcQcezb-3cBBCH-d75tDTdaf4MJxFmsomC92oQRE,6436
|
|
86
100
|
flock/evaluators/memory/memory_evaluator.py,sha256=ySwz7kcc8suXMJ7gKNSWThW8iOMlE8lUcUzEAHvv8rw,3559
|
|
87
101
|
flock/evaluators/test/test_case_evaluator.py,sha256=3Emcoty0LOLLBIuPGxSpKphuZC9Fu1DTr1vbGg-hd0Q,1233
|
|
88
102
|
flock/evaluators/zep/zep_evaluator.py,sha256=6_5vTdU0yJAH8I8w3-MPXiAZx6iUPhAVCsHjrHzkPLM,2058
|
|
103
|
+
flock/mcp/servers/sse/__init__.py,sha256=r6YtleRSOMJqKhTtKQeFKd3QDaUJVz9R1BGJgOm_PF8,51
|
|
104
|
+
flock/mcp/servers/sse/flock_sse_server.py,sha256=mtFW4JlOZFRA9uGXUTSRv4iTMXvFnyRV-ztxfujsuEE,4764
|
|
105
|
+
flock/mcp/servers/stdio/__init__.py,sha256=36QMguWwHCklLbISNNe1m2cq-y9klAWRf_QnuYpD2aY,53
|
|
106
|
+
flock/mcp/servers/stdio/flock_stdio_server.py,sha256=E78F7iJ6hDyiHREZqNvou5-31NOBRGAYnpeEcRUF5VA,4921
|
|
107
|
+
flock/mcp/servers/websockets/__init__.py,sha256=KeNgNQRdeCQ9xgpaHB1I0-HyYeBhkifAuZPTIA8eDqM,47
|
|
108
|
+
flock/mcp/servers/websockets/flock_websocket_server.py,sha256=uxgCNOHQdlK_ZrWlWKyNt440BxJSwtwey2fm4bQ5J4I,4315
|
|
89
109
|
flock/modules/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
90
110
|
flock/modules/assertion/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
91
111
|
flock/modules/assertion/assertion_module.py,sha256=2p9mIj8yBXRGgfe5pUWYXcLT86Ny13KyWHpRhe0Ehtg,12877
|
|
@@ -104,7 +124,7 @@ flock/modules/memory/memory_storage.py,sha256=CNcLDMmvv0x7Z3YMKr6VveS_VCa7rKPw8l
|
|
|
104
124
|
flock/modules/output/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
105
125
|
flock/modules/output/output_module.py,sha256=gEn1_khPAJp-hqU6Rxdv1sQz0jTLVSzYJvNbK1uVNCY,7402
|
|
106
126
|
flock/modules/performance/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
107
|
-
flock/modules/performance/metrics_module.py,sha256=
|
|
127
|
+
flock/modules/performance/metrics_module.py,sha256=O-FI6h8kbsrXDLoGYMWYT1Vgbp2S5-U4TMXzBHUfcDU,23987
|
|
108
128
|
flock/modules/zep/__init__.py,sha256=Y0cEkx0dujRmy--TDpKoTqFSLzbyFz8BwEOv8kdSUhg,22
|
|
109
129
|
flock/modules/zep/zep_module.py,sha256=gJXOqdoWIXcWOyzJoyqykgq5gU-Y2Dze3tLuQM_tMQc,6572
|
|
110
130
|
flock/platform/docker_tools.py,sha256=fpA7-6rJBjPOUBLdQP4ny2QPgJ_042nmqRn5GtKnoYw,1445
|
|
@@ -537,8 +557,8 @@ flock/workflow/agent_execution_activity.py,sha256=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R
|
|
|
537
557
|
flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
|
|
538
558
|
flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
|
|
539
559
|
flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
|
|
540
|
-
flock_core-0.4.
|
|
541
|
-
flock_core-0.4.
|
|
542
|
-
flock_core-0.4.
|
|
543
|
-
flock_core-0.4.
|
|
544
|
-
flock_core-0.4.
|
|
560
|
+
flock_core-0.4.5.dist-info/METADATA,sha256=Bp_Edg5t5KFgs6k8Kg-N0rAmTHRQL1lI9GcQhtMNVTE,22758
|
|
561
|
+
flock_core-0.4.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
562
|
+
flock_core-0.4.5.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
|
|
563
|
+
flock_core-0.4.5.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
|
|
564
|
+
flock_core-0.4.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|