wip: preserve local engine and agent workflow changes before ganjihong refactor integration

This commit is contained in:
2026-09-09 17:08:24 +08:00
parent a5c3ec1f36
commit 387b99e255
112 changed files with 3543 additions and 12177 deletions
+22 -2
View File
@@ -1041,10 +1041,15 @@ class LoweringTests(unittest.TestCase):
cap_extrude = features["f_F5"]
self.assertEqual(cap_extrude["atomic_id"], "extrude_from_face")
self.assertNotIn("sketch_id", cap_extrude)
self.assertEqual(cap_extrude["selectors"], [{
selector = cap_extrude["selectors"][0]
self.assertEqual({key: selector[key] for key in (
"kind", "owner_feature_id", "output_role", "source", "confidence",
)}, {
"kind": "face", "owner_feature_id": "f_F3", "output_role": "extrude.start",
"source": "runtime_snapshot", "confidence": 1.0,
}])
})
self.assertEqual(selector["selector_intent_version"], "1.0")
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
from engine.cdsl_engine.runtime import rebuild_cdsl
with tempfile.TemporaryDirectory() as directory:
@@ -1691,6 +1696,21 @@ class LoweringTests(unittest.TestCase):
self.assertEqual(result.diagnostics[0]["code"], "unsupported_engine_capability")
self.assertIn("extrude_profile_topology:cap_face", result.diagnostics[0]["capability"])
def test_cap_face_selector_retains_versioned_provenance_intent(self):
source = SOURCE.replace(
'\n});\n',
'\n extrude(context, id + "F2", {"entities":makeQuery(id + "F1.opExtrude", "CAP_FACE", FACE, {"isStart":false}), "depth":10 * mm});\n});\n',
)
result = lower_model(parse_featurescript(source, "cap-intent"), {})
self.assertEqual(result.status, "converted_complete")
selector = next(item for item in result.cdsl["features"] if item["id"] == "f_F2")["selectors"][0]
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
self.assertEqual(selector["selector_intent_version"], "1.0")
self.assertEqual(selector["selector_intent"]["source_query"]["featurescript_version"], "1511")
self.assertEqual(selector["selector_intent"]["evidence"], "operation_role")
from engine.cdsl_engine.semantic_validation import validate_semantic_cdsl
self.assertTrue(validate_semantic_cdsl(result.cdsl)["future_rebuild_ready"])
def test_conversion_writes_status_and_sidecars(self):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp); source = root / "00000173.txt"; source.write_text(SOURCE)
+10
View File
@@ -52,6 +52,16 @@ class ParserTests(unittest.TestCase):
value = parse_query(query)
self.assertEqual((value.owner_feature, value.source_sketch, value.source_entity), ("F1", "F0", "E0"))
self.assertFalse(value.is_start)
self.assertEqual(value.ast["call"], "makeQuery")
self.assertEqual(value.ast["args"][0]["call"], "__binary__")
def test_source_version_and_standard_library_are_retained(self):
source = '''FeatureScript 1511;
import(path : "onshape/std/geometry.fs", version : "1511.0");
export const f = defineFeature(function(context, id, definition) {});'''
model = parse_featurescript(source, "versioned")
self.assertEqual(model.featurescript_version, "1511")
self.assertEqual(model.standard_library, "onshape/std/geometry.fs")
def test_block_scoped_query_aliases_do_not_use_the_last_assignment(self):
source = r'''
+10 -2
View File
@@ -123,10 +123,14 @@ class SelectorBindingTests(unittest.TestCase):
bound, evidence = bind_candidate_selectors(candidate.cdsl)
selector = next(item for item in bound["features"] if item["id"] == "f_F3")["selectors"][0]
self.assertEqual(selector, {
self.assertEqual({key: selector[key] for key in (
"kind", "owner_feature_id", "output_role", "source", "confidence",
)}, {
"kind": "face", "owner_feature_id": "f_F1", "output_role": "extrude.end",
"source": "runtime_snapshot", "confidence": 1.0,
})
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
self.assertEqual(selector["selector_intent"]["evidence"], "operation_role")
self.assertNotIn("stable_id", selector)
self.assertNotIn("snapshot_id", selector)
self.assertNotIn("geometry", selector)
@@ -155,11 +159,15 @@ class SelectorBindingTests(unittest.TestCase):
self.assertEqual(first["snapshot_id"], "body:f_F2:face:1")
self.assertEqual(first["source"], "runtime_snapshot")
self.assertEqual(first["confidence"], 1.0)
self.assertEqual(offset, {
self.assertEqual({key: offset[key] for key in (
"kind", "owner_feature_id", "output_role", "output_role_source", "source", "confidence",
)}, {
"kind": "face", "owner_feature_id": "f_F2", "output_role": "shell.offset_face",
"output_role_source": {"owner_feature_id": "f_F1", "output_role": "extrude.start"},
"source": "runtime_snapshot", "confidence": 1.0,
})
self.assertEqual(offset["selector_intent"]["query_family"], "OFFSET_FACE")
self.assertEqual(offset["selector_intent"]["disambiguation"]["type"], "true_dependency")
binding = next(item for item in evidence if item["feature_id"] == "f_F3")
self.assertEqual(binding["resolved"][0]["snapshot_id"], "body:f_F2:face:1")
self.assertEqual(binding["resolved"][1]["record_id"], "body:f_F2:face:5")