forked from 1b-agent/opencadstudio-upstream
Complete Dimension host model coverage for all nine subtypes
Adds a hand-written flat Dimension model to the adapter (manifest manual_kinds hook) and a synthetic-property section to the host coverage policy. The host derives actual_measurement and the base definition point on scripted create/edit. staged_python_dimension_lifecycle_over_real_ipc passes the full gate for every subtype including DWG and DXF reopen. Python ints are now accepted for coordinates and angles. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a86d5bc727
commit
6b4c86fd7a
13 files changed
+1281
-49
No files matched your search
@@ -21,6 +21,13 @@ use entity_coverage_schema::{
|
||||
EntityCoverageCatalog, EntityKindCoverage, EntityScope, ModelAccess, PropertyCoverage,
|
||||
};
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct SyntheticProperty {
|
||||
name: String,
|
||||
type_id: String,
|
||||
access: String,
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct EntityCoveragePolicy {
|
||||
internal_kinds: Vec<String>,
|
||||
@@ -28,6 +35,10 @@ struct EntityCoveragePolicy {
|
||||
editable: BTreeMap<String, Vec<String>>,
|
||||
readable: BTreeMap<String, Vec<String>>,
|
||||
aliases: BTreeMap<String, BTreeMap<String, String>>,
|
||||
/// Properties for kinds whose payload is a nested enum (Dimension), where
|
||||
/// the traced variant has no single field list to map.
|
||||
#[serde(default)]
|
||||
synthetic: BTreeMap<String, Vec<SyntheticProperty>>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
@@ -802,6 +813,19 @@ fn generate_entity_coverage(out_dir: &Path, registry: &TypeRegistry) {
|
||||
model_access: access,
|
||||
});
|
||||
}
|
||||
for synthetic in policy.synthetic.get(kind).into_iter().flatten() {
|
||||
let writable = synthetic.access == "read_write";
|
||||
properties.push(PropertyCoverage {
|
||||
name: synthetic.name.clone(),
|
||||
source_path: format!("<subtype>.{}", synthetic.name),
|
||||
type_id: synthetic.type_id.clone(),
|
||||
optional: false,
|
||||
is_sequence: false,
|
||||
snapshot_readable: true,
|
||||
validation: if writable { "transaction_geometry" } else { "none" }.into(),
|
||||
model_access: if writable { ModelAccess::ReadWrite } else { ModelAccess::ReadOnly },
|
||||
});
|
||||
}
|
||||
assert!(
|
||||
unresolved.is_empty(),
|
||||
"{kind} has coverage keys absent from registry: {unresolved:?}"
|
||||
|
||||
Reference in new issue
Block a user