fluxloop-cli 0.2.2__py3-none-any.whl → 0.2.3__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.
fluxloop_cli/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  FluxLoop CLI - Command-line interface for running agent simulations.
3
3
  """
4
4
 
5
- __version__ = "0.2.2"
5
+ __version__ = "0.2.3"
6
6
 
7
7
  from .main import app
8
8
 
@@ -253,11 +253,35 @@ def _normalize_variation_strategies(payload: Dict[str, Any]) -> None:
253
253
  if not candidate:
254
254
  continue
255
255
 
256
- normalized.append(
257
- candidate.strip().lower().replace(" ", "_").replace("-", "_")
256
+ canonical = (
257
+ candidate.strip()
258
+ .lower()
259
+ .replace(" ", "_")
260
+ .replace("-", "_")
258
261
  )
259
262
 
260
- payload["variation_strategies"] = normalized
263
+ alias_map = {
264
+ "error_prone": (
265
+ VariationStrategy.ERROR_PRONE.value
266
+ if hasattr(VariationStrategy, "ERROR_PRONE")
267
+ else VariationStrategy.TYPO.value
268
+ ),
269
+ }
270
+
271
+ canonical = alias_map.get(canonical, canonical)
272
+
273
+ normalized.append(canonical)
274
+
275
+ # Remove duplicates while preserving order
276
+ seen = set()
277
+ deduped = []
278
+ for item in normalized:
279
+ if item in seen:
280
+ continue
281
+ seen.add(item)
282
+ deduped.append(item)
283
+
284
+ payload["variation_strategies"] = deduped
261
285
 
262
286
 
263
287
  def _detect_config_context(resolved_path: Path) -> tuple[str, Path, Path]:
@@ -13,11 +13,21 @@ def parse_variation_strategies(values: Iterable[str]) -> List[VariationStrategy]
13
13
  """Parse CLI-provided variation strategy names."""
14
14
 
15
15
  strategies: List[VariationStrategy] = []
16
+ alias_map = {
17
+ "error_prone": (
18
+ VariationStrategy.ERROR_PRONE.value
19
+ if hasattr(VariationStrategy, "ERROR_PRONE")
20
+ else VariationStrategy.TYPO.value
21
+ )
22
+ }
23
+
16
24
  for value in values:
17
25
  normalized = value.strip().lower().replace("-", "_")
18
26
  if not normalized:
19
27
  continue
20
28
 
29
+ normalized = alias_map.get(normalized, normalized)
30
+
21
31
  try:
22
32
  strategies.append(VariationStrategy(normalized))
23
33
  except ValueError as exc: # pragma: no cover - exercised via Typer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fluxloop-cli
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: FluxLoop CLI for running agent simulations
5
5
  Author-email: FluxLoop Team <team@fluxloop.dev>
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
- fluxloop_cli/__init__.py,sha256=Dt2rOSQnnfVKTAgaaXWrhMb5qq6x-Bk8S58KCmkdfBc,142
1
+ fluxloop_cli/__init__.py,sha256=4xwGwbCKXAH0urdnCLWhCwTBEuntha_81SWQG_voNys,142
2
2
  fluxloop_cli/arg_binder.py,sha256=oluHrwe1nNVq7alxBhBEoZrLrYop-cRgXgSu59LJcw4,7827
3
- fluxloop_cli/config_loader.py,sha256=KC2zgqlctNRzXA8PgkTrXGkrgQjAraVss734fg4nP0c,8876
3
+ fluxloop_cli/config_loader.py,sha256=IoOY39KxDWNjSWyN5a8n89ym7jiUDTmy7Id-o4E0Usk,9450
4
4
  fluxloop_cli/config_schema.py,sha256=JZJRcMFun5hp3vKLAyek7W3NvISyzRzZt0BZAeSU38I,2415
5
5
  fluxloop_cli/constants.py,sha256=oMYCkUUqy2LORNY99gDRCOkgLOPrT1FY_Vrylo-QSSw,719
6
6
  fluxloop_cli/input_generator.py,sha256=ldlVdPSDfGsP9zO2RALk7QmZjkIvUzTaxDgwOjuPB-0,4043
@@ -10,7 +10,7 @@ fluxloop_cli/project_paths.py,sha256=FoHp-g3aY1nytxGys85Oy3wJ6gmiKU6FVOwkgTtlHNA
10
10
  fluxloop_cli/runner.py,sha256=Aqd5Gkqn3XqzteAOU4C7-5k3wjoiBVMNBln1fGGNI1o,22545
11
11
  fluxloop_cli/target_loader.py,sha256=F8fTxf-Jfu8rxK7-3Y_uPPxa6GBkCbQpXPaorQNqF6g,3220
12
12
  fluxloop_cli/templates.py,sha256=_QJxAq3JnylGryRjFwLVzaPmYMLsIl5eyVBNfkgGOeA,11207
13
- fluxloop_cli/validators.py,sha256=8cOCLSqvkQDSHRuty9-s5WJ70uvHGT_BEcXtxdlnX78,884
13
+ fluxloop_cli/validators.py,sha256=_bLXmxUSzVrDtLjqyTba0bDqamRIaOUHhV4xZ7K36Xw,1155
14
14
  fluxloop_cli/commands/__init__.py,sha256=sxJX1mJoOSJnH_iIuCqYT8tjh7_yxlJB702j_B_GPUw,164
15
15
  fluxloop_cli/commands/config.py,sha256=xVpBv9D1zCTz3rABl1F1Pm1YMOx6r7B9AICy0-_9kao,11418
16
16
  fluxloop_cli/commands/generate.py,sha256=6tBanI8gj5Zzwz2cv1YeW60bYiO7iWivD0AgOcJ-GUU,7172
@@ -19,8 +19,8 @@ fluxloop_cli/commands/parse.py,sha256=AVPYi59ejFWx4TYyM7JuI69koxDVkIBxy4LBRDMMbF
19
19
  fluxloop_cli/commands/record.py,sha256=56ASu3Np6TX8_F8caMBJArv10ag5M96kJ-sII8df-5Q,4803
20
20
  fluxloop_cli/commands/run.py,sha256=NLkBN2puqDLdHhKhilLriXsZnm7pMDMcoWeBSEXPM-o,9660
21
21
  fluxloop_cli/commands/status.py,sha256=ERZrWoSP3V7dz5A_TEE5b8E0nGwsPggP4nXw4tLOzxE,7841
22
- fluxloop_cli-0.2.2.dist-info/METADATA,sha256=ewOQY0n03-FdwJOpSwS73D5tgYmZWwRFmMfklofjb6s,3062
23
- fluxloop_cli-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
- fluxloop_cli-0.2.2.dist-info/entry_points.txt,sha256=NxOEMku4yLMY5kp_Qcd3JcevfXP6A98FsSf9xHcwkyE,51
25
- fluxloop_cli-0.2.2.dist-info/top_level.txt,sha256=ahLkaxzwhmVU4z-YhkmQVzAbW3-wez9cKnwPiDK7uKM,13
26
- fluxloop_cli-0.2.2.dist-info/RECORD,,
22
+ fluxloop_cli-0.2.3.dist-info/METADATA,sha256=n8OBXteqpnxl72uzEXJTn1gK7YlslqyL1L8yY4wkbSA,3062
23
+ fluxloop_cli-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
+ fluxloop_cli-0.2.3.dist-info/entry_points.txt,sha256=NxOEMku4yLMY5kp_Qcd3JcevfXP6A98FsSf9xHcwkyE,51
25
+ fluxloop_cli-0.2.3.dist-info/top_level.txt,sha256=ahLkaxzwhmVU4z-YhkmQVzAbW3-wez9cKnwPiDK7uKM,13
26
+ fluxloop_cli-0.2.3.dist-info/RECORD,,