devflow-engine 1.2.3__py3-none-any.whl → 1.2.4__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.
- devflow_engine/errors/error_solver_dag.py +33 -0
- {devflow_engine-1.2.3.dist-info → devflow_engine-1.2.4.dist-info}/METADATA +1 -1
- {devflow_engine-1.2.3.dist-info → devflow_engine-1.2.4.dist-info}/RECORD +5 -5
- {devflow_engine-1.2.3.dist-info → devflow_engine-1.2.4.dist-info}/WHEEL +0 -0
- {devflow_engine-1.2.3.dist-info → devflow_engine-1.2.4.dist-info}/entry_points.txt +0 -0
|
@@ -256,6 +256,32 @@ def _artifact_under_observability_sandbox(artifact: str, *, error_task_id: str)
|
|
|
256
256
|
return marker in normalized
|
|
257
257
|
|
|
258
258
|
|
|
259
|
+
def _command_targets_observability_sandbox(command: str, *, error_task_id: str) -> bool:
|
|
260
|
+
normalized = command.replace("\\", "/").strip()
|
|
261
|
+
allowed_fragments = (
|
|
262
|
+
f".devflow/observability/{error_task_id}/",
|
|
263
|
+
".devflow/observability/<id>/",
|
|
264
|
+
f"/.devflow/observability/{error_task_id}/",
|
|
265
|
+
)
|
|
266
|
+
return any(fragment in normalized for fragment in allowed_fragments)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def _repro_tests_under_observability_sandbox(
|
|
270
|
+
repro_tests: object,
|
|
271
|
+
*,
|
|
272
|
+
error_task_id: str,
|
|
273
|
+
) -> bool:
|
|
274
|
+
if not isinstance(repro_tests, list):
|
|
275
|
+
return True
|
|
276
|
+
for test in repro_tests:
|
|
277
|
+
if not isinstance(test, dict):
|
|
278
|
+
continue
|
|
279
|
+
path = str(test.get("file") or test.get("path") or "").strip()
|
|
280
|
+
if path and not _artifact_under_observability_sandbox(path, error_task_id=error_task_id):
|
|
281
|
+
return False
|
|
282
|
+
return True
|
|
283
|
+
|
|
284
|
+
|
|
259
285
|
def _validate_ui_observability_repro(
|
|
260
286
|
observation: dict[str, Any],
|
|
261
287
|
*,
|
|
@@ -274,6 +300,13 @@ def _validate_ui_observability_repro(
|
|
|
274
300
|
return False, "ui_observability_requires_playwright_repro_command"
|
|
275
301
|
if not _artifact_under_observability_sandbox(artifact, error_task_id=error_task_id):
|
|
276
302
|
return False, "ui_observability_repro_artifact_outside_sandbox"
|
|
303
|
+
if not _command_targets_observability_sandbox(command, error_task_id=error_task_id):
|
|
304
|
+
return False, "ui_observability_repro_command_outside_sandbox"
|
|
305
|
+
if not _repro_tests_under_observability_sandbox(
|
|
306
|
+
observation.get("repro_tests"),
|
|
307
|
+
error_task_id=error_task_id,
|
|
308
|
+
):
|
|
309
|
+
return False, "ui_observability_repro_test_outside_sandbox"
|
|
277
310
|
if not output:
|
|
278
311
|
return False, "ui_observability_missing_repro_output"
|
|
279
312
|
if not isinstance(oracles, list) or not any(str(o or "").strip() for o in oracles):
|
|
@@ -32,7 +32,7 @@ devflow_engine/devin2/agent_definition.py,sha256=pCp915tojwPlepRpvjlU1DoPuT_anxR
|
|
|
32
32
|
devflow_engine/devin2/pi_runner.py,sha256=xRl-qA3RgMFgiR5fnG6fTwwL95PMk6zVdRdFa-fXy2E,7466
|
|
33
33
|
devflow_engine/error/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
devflow_engine/error/remediation.py,sha256=Z4LJQzZPzb7_6tea_XtasDvFYQiEdpkFlyxoCEO1I2k,548
|
|
35
|
-
devflow_engine/errors/error_solver_dag.py,sha256=
|
|
35
|
+
devflow_engine/errors/error_solver_dag.py,sha256=jwFewUFxZPUurHrT2WGk85antB5w2S5TEMCUq9sy3k0,61429
|
|
36
36
|
devflow_engine/errors/question_classifier.py,sha256=oBJ29hszG--TUna62BQHnNmi6hPwf-wEE8eGLmgS624,9729
|
|
37
37
|
devflow_engine/errors/repo_quality_judge.py,sha256=LVBaXN6AsID-x8qb-IriQKYY1c9AMMRNo-tWMeiuMaA,9962
|
|
38
38
|
devflow_engine/errors/runtime_observability.py,sha256=Do93Ah3vxLEocYtC0JpnRIRQN6uNAOkYjBz0pmOqg5g,29719
|
|
@@ -382,7 +382,7 @@ devflow_engine/prompts/source_doc_mutation/source_doc_enrichment_coherence/promp
|
|
|
382
382
|
devflow_engine/prompts/source_doc_mutation/user_workflows/prompt.md,sha256=2Bv-EkZwzxtPSsDGdw9YuuuzT1c_2R9c6HPSMdP-MD0,406
|
|
383
383
|
devflow_engine/prompts/source_scope/doctrine/prompt.md,sha256=AJk1gfePTdaBSw5DHvCr7Sigsk2orGaRVNZ3Dj3NdcQ,837
|
|
384
384
|
devflow_engine/prompts/ui_grounding/doctrine/prompt.md,sha256=0L5y-QjjquPABqxAHZNPkcjyHMZQSDRVncNDQa2app0,409
|
|
385
|
-
devflow_engine-1.2.
|
|
386
|
-
devflow_engine-1.2.
|
|
387
|
-
devflow_engine-1.2.
|
|
388
|
-
devflow_engine-1.2.
|
|
385
|
+
devflow_engine-1.2.4.dist-info/METADATA,sha256=6RFdShXKS6HOlHJ7MWGIukO1KPwM--VG8Bz8TSx-3fU,7755
|
|
386
|
+
devflow_engine-1.2.4.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
387
|
+
devflow_engine-1.2.4.dist-info/entry_points.txt,sha256=U5Pw4y4v4u4xcRS5DbXfemBg0RKp74kMxcnEoL0MACY,99
|
|
388
|
+
devflow_engine-1.2.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|