devflow-engine 1.2.2__py3-none-any.whl → 1.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.
- devflow_engine/errors/error_solver_dag.py +23 -2
- {devflow_engine-1.2.2.dist-info → devflow_engine-1.2.3.dist-info}/METADATA +1 -1
- {devflow_engine-1.2.2.dist-info → devflow_engine-1.2.3.dist-info}/RECORD +5 -5
- {devflow_engine-1.2.2.dist-info → devflow_engine-1.2.3.dist-info}/WHEEL +0 -0
- {devflow_engine-1.2.2.dist-info → devflow_engine-1.2.3.dist-info}/entry_points.txt +0 -0
|
@@ -244,7 +244,23 @@ def _validate_ui_fix_proof(
|
|
|
244
244
|
return True, normalized, None
|
|
245
245
|
|
|
246
246
|
|
|
247
|
-
def
|
|
247
|
+
def _artifact_under_observability_sandbox(artifact: str, *, error_task_id: str) -> bool:
|
|
248
|
+
normalized = artifact.replace("\\", "/").strip()
|
|
249
|
+
allowed_prefixes = (
|
|
250
|
+
f".devflow/observability/{error_task_id}/",
|
|
251
|
+
".devflow/observability/<id>/",
|
|
252
|
+
)
|
|
253
|
+
if any(normalized.startswith(prefix) for prefix in allowed_prefixes):
|
|
254
|
+
return True
|
|
255
|
+
marker = f"/.devflow/observability/{error_task_id}/"
|
|
256
|
+
return marker in normalized
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def _validate_ui_observability_repro(
|
|
260
|
+
observation: dict[str, Any],
|
|
261
|
+
*,
|
|
262
|
+
error_task_id: str,
|
|
263
|
+
) -> tuple[bool, str | None]:
|
|
248
264
|
artifact = str(observation.get("repro_artifact_path") or "").strip()
|
|
249
265
|
command = str(observation.get("repro_run_command") or "").strip()
|
|
250
266
|
output = str(observation.get("repro_output") or "").strip()
|
|
@@ -256,6 +272,8 @@ def _validate_ui_observability_repro(observation: dict[str, Any]) -> tuple[bool,
|
|
|
256
272
|
return False, "ui_observability_missing_playwright_repro_artifact"
|
|
257
273
|
if "playwright" not in command.lower():
|
|
258
274
|
return False, "ui_observability_requires_playwright_repro_command"
|
|
275
|
+
if not _artifact_under_observability_sandbox(artifact, error_task_id=error_task_id):
|
|
276
|
+
return False, "ui_observability_repro_artifact_outside_sandbox"
|
|
259
277
|
if not output:
|
|
260
278
|
return False, "ui_observability_missing_repro_output"
|
|
261
279
|
if not isinstance(oracles, list) or not any(str(o or "").strip() for o in oracles):
|
|
@@ -876,7 +894,10 @@ class BuildObservabilityNode(Node):
|
|
|
876
894
|
else {}
|
|
877
895
|
)
|
|
878
896
|
if observed_flag and _ui_proof_required({"runtimeContext": user_report_context_for_ui}):
|
|
879
|
-
ui_repro_ok, ui_repro_failure_reason = _validate_ui_observability_repro(
|
|
897
|
+
ui_repro_ok, ui_repro_failure_reason = _validate_ui_observability_repro(
|
|
898
|
+
observation,
|
|
899
|
+
error_task_id=error_task_id,
|
|
900
|
+
)
|
|
880
901
|
|
|
881
902
|
# Split deferred questions via LLM classifier (v1.1.22).
|
|
882
903
|
# An injectable hook is used when present so tests can
|
|
@@ -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=GZXVqssgqUgoqRqA5r7_fnz7noZVKD-g3NS5r0ShBms,60195
|
|
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.3.dist-info/METADATA,sha256=spmTNfOipkpqYWkJx_uOVJjLtfYG_ZZ9PBs6aOWSjDM,7755
|
|
386
|
+
devflow_engine-1.2.3.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
387
|
+
devflow_engine-1.2.3.dist-info/entry_points.txt,sha256=U5Pw4y4v4u4xcRS5DbXfemBg0RKp74kMxcnEoL0MACY,99
|
|
388
|
+
devflow_engine-1.2.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|