fluxloop-cli 0.2.23__tar.gz → 0.2.24__tar.gz
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.
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/PKG-INFO +2 -1
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/__init__.py +1 -1
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/record.py +17 -10
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/templates.py +1 -1
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/PKG-INFO +2 -1
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/requires.txt +1 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/pyproject.toml +2 -1
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/README.md +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/arg_binder.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/__init__.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/config.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/doctor.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/evaluate.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/generate.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/init.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/parse.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/run.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/commands/status.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/config_loader.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/config_schema.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/constants.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/conversation_supervisor.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/environment.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/__init__.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/config.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/__init__.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/analysis.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/core.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/__init__.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/html.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/markdown.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/success.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/llm.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/__init__.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/base.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/information_completeness.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/intent_recognition.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/response_clarity.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/response_consistency.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/rules.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/input_generator.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/llm_generator.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/main.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/project_paths.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/runner.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/target_loader.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/validators.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/SOURCES.txt +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/dependency_links.txt +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/entry_points.txt +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli.egg-info/top_level.txt +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/setup.cfg +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_analysis_recommendations.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_arg_binder.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_config_command.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_evaluate_command.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_evaluation_llm.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_input_generator.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_prompt_library.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_run_command.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_success_criteria.py +0 -0
- {fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/tests/test_target_loader.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fluxloop-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.24
|
|
4
4
|
Summary: FluxLoop CLI for running agent simulations
|
|
5
5
|
Author-email: FluxLoop Team <team@fluxloop.dev>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -26,6 +26,7 @@ Requires-Dist: httpx>=0.24.0
|
|
|
26
26
|
Requires-Dist: rich>=13.0
|
|
27
27
|
Requires-Dist: python-dotenv>=1.0.0
|
|
28
28
|
Requires-Dist: fluxloop>=0.1.0
|
|
29
|
+
Requires-Dist: ruamel.yaml>=0.17.0
|
|
29
30
|
Provides-Extra: dev
|
|
30
31
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
32
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -8,6 +8,7 @@ from typing import Dict, Optional
|
|
|
8
8
|
import typer
|
|
9
9
|
from rich.console import Console
|
|
10
10
|
from rich.table import Table
|
|
11
|
+
from ruamel.yaml import YAML, CommentedMap
|
|
11
12
|
|
|
12
13
|
from ..constants import DEFAULT_ROOT_DIR_NAME
|
|
13
14
|
from ..project_paths import (
|
|
@@ -20,6 +21,9 @@ from ..config_schema import CONFIG_SECTION_FILENAMES
|
|
|
20
21
|
|
|
21
22
|
app = typer.Typer()
|
|
22
23
|
console = Console()
|
|
24
|
+
_yaml = YAML()
|
|
25
|
+
_yaml.indent(mapping=2, sequence=4, offset=2)
|
|
26
|
+
_yaml.preserve_quotes = True
|
|
23
27
|
|
|
24
28
|
|
|
25
29
|
def _load_env(env_path: Path) -> Dict[str, str]:
|
|
@@ -44,22 +48,25 @@ def _update_simulation(recording_enabled: bool, project: Optional[str], root: Pa
|
|
|
44
48
|
except KeyError:
|
|
45
49
|
return
|
|
46
50
|
|
|
47
|
-
data: Dict[str, object] = {}
|
|
48
51
|
if simulation_path.exists():
|
|
49
|
-
|
|
52
|
+
with simulation_path.open("r", encoding="utf-8") as handle:
|
|
53
|
+
loaded = _yaml.load(handle) or CommentedMap()
|
|
54
|
+
else:
|
|
55
|
+
loaded = CommentedMap()
|
|
50
56
|
|
|
51
|
-
|
|
57
|
+
if not isinstance(loaded, CommentedMap):
|
|
58
|
+
loaded = CommentedMap(loaded)
|
|
52
59
|
|
|
53
|
-
replay =
|
|
54
|
-
replay
|
|
60
|
+
replay = loaded.get("replay_args")
|
|
61
|
+
if not isinstance(replay, CommentedMap):
|
|
62
|
+
replay = CommentedMap(replay or {})
|
|
63
|
+
loaded["replay_args"] = replay
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
replay["enabled"] = recording_enabled
|
|
57
66
|
|
|
58
67
|
simulation_path.parent.mkdir(parents=True, exist_ok=True)
|
|
59
|
-
simulation_path.
|
|
60
|
-
|
|
61
|
-
encoding="utf-8",
|
|
62
|
-
)
|
|
68
|
+
with simulation_path.open("w", encoding="utf-8") as handle:
|
|
69
|
+
_yaml.dump(loaded, handle)
|
|
63
70
|
|
|
64
71
|
|
|
65
72
|
@app.command()
|
|
@@ -155,7 +155,7 @@ def create_simulation_config(project_name: str) -> str:
|
|
|
155
155
|
When continuing, craft the next user message consistent with the persona.
|
|
156
156
|
When terminating, explain the reason and provide any closing notes.
|
|
157
157
|
metadata:
|
|
158
|
-
scripted_questions: [] #
|
|
158
|
+
scripted_questions: [] # Array of user utterances for sequential playback (e.g., ["First question", "Second question", ...])
|
|
159
159
|
mock_decision: terminate # Fallback when no scripted questions remain
|
|
160
160
|
mock_reason: script_complete # Termination reason for scripted runs
|
|
161
161
|
mock_closing: "Thanks for the help. I have no further questions."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fluxloop-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.24
|
|
4
4
|
Summary: FluxLoop CLI for running agent simulations
|
|
5
5
|
Author-email: FluxLoop Team <team@fluxloop.dev>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -26,6 +26,7 @@ Requires-Dist: httpx>=0.24.0
|
|
|
26
26
|
Requires-Dist: rich>=13.0
|
|
27
27
|
Requires-Dist: python-dotenv>=1.0.0
|
|
28
28
|
Requires-Dist: fluxloop>=0.1.0
|
|
29
|
+
Requires-Dist: ruamel.yaml>=0.17.0
|
|
29
30
|
Provides-Extra: dev
|
|
30
31
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
32
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fluxloop-cli"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.24"
|
|
8
8
|
description = "FluxLoop CLI for running agent simulations"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "FluxLoop Team", email = "team@fluxloop.dev"}
|
|
@@ -32,6 +32,7 @@ dependencies = [
|
|
|
32
32
|
"rich>=13.0",
|
|
33
33
|
"python-dotenv>=1.0.0",
|
|
34
34
|
"fluxloop>=0.1.0",
|
|
35
|
+
"ruamel.yaml>=0.17.0",
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
[project.optional-dependencies]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/__init__.py
RENAMED
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/html.py
RENAMED
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/engine/reporting/markdown.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/intent_recognition.py
RENAMED
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/response_clarity.py
RENAMED
|
File without changes
|
{fluxloop_cli-0.2.23 → fluxloop_cli-0.2.24}/fluxloop_cli/evaluation/prompts/response_consistency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|