forked from 1b-agent/opencadstudio-upstream
Add audited, versioned MCP save workflow (#1452)
- `--export ... --target-version`, and explicit target_format / target_version on automation and protocol saves; a conversion that would drop unsupported records is refused unless allow_lossy is set. - `audit` read op: dangling layers/blocks, duplicate handles, non-finite bounds, serialization, lossy records and the source DXF handle graph. - `save_verified`: writes the requested version from the same snapshot a normal save writes, reopens it, checks the version and the entity manifest, audits the ASCII DXF handle graph and returns a SHA-256. - ZOOM EXTENTS includes SDF text glyphs. - Live MCP acceptance script and an optional reference-console audit runner under docs/automation. Squashed from the PR with review fixes: merged with the DWT save path, the save snapshot, the tool lists added since, and vendor-neutral harness names; the dated verification record is left out. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
0f99b77004
commit
dddf60d79e
16 files changed
+1102
-22
No files matched your search
@@ -1360,6 +1360,25 @@ pub fn parse_save_format(format: &str) -> (&'static str, acadrust::DxfVersion) {
|
||||
(ext, version)
|
||||
}
|
||||
|
||||
/// Parse an explicit automation/CLI target version without silently falling
|
||||
/// back to a newer format. Accepts either release names (`R14`, `2000`, …)
|
||||
/// or their DXF codes (`AC1014`, `AC1015`, …).
|
||||
pub fn parse_target_version(value: &str) -> Result<acadrust::DxfVersion, String> {
|
||||
use acadrust::DxfVersion;
|
||||
match value.trim().to_ascii_uppercase().as_str() {
|
||||
"R14" | "14" | "AC1014" => Ok(DxfVersion::AC1014),
|
||||
"2000" | "AC1015" => Ok(DxfVersion::AC1015),
|
||||
"2004" | "AC1018" => Ok(DxfVersion::AC1018),
|
||||
"2007" | "AC1021" => Ok(DxfVersion::AC1021),
|
||||
"2010" | "AC1024" => Ok(DxfVersion::AC1024),
|
||||
"2013" | "AC1027" => Ok(DxfVersion::AC1027),
|
||||
"2018" | "AC1032" => Ok(DxfVersion::AC1032),
|
||||
_ => Err(format!(
|
||||
"unsupported target version {value:?}; use R14, 2000, 2004, 2007, 2010, 2013 or 2018"
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
/// Reverse of [`parse_save_format`]: the Save-dialog format string for a
|
||||
/// version + DXF/DWG choice (e.g. `AC1018, is_dxf=false` -> `"DWG 2004"`).
|
||||
/// Used to default the Save-As dropdown to the loaded file's version so a
|
||||
|
||||
Reference in new issue
Block a user