fix: tolerate Velociraptor 0.75.6 orgs() shape + ArtifactsResponse.success bool (#863)
* fix: drop dead ClientConfig schema; tolerate Velociraptor 0.75.6 orgs() shape Velociraptor 0.75.6 changed `SELECT * FROM orgs()` to return `_client_config` as a YAML string instead of a structured dict, which made Pydantic 2 reject the response on agent sync: 1 validation error for VelociraptorOrganizations organizations.0._client_config Input should be a valid dictionary or instance of ClientConfig [type=model_type, input_value='version:\n name: veloci...', input_type=str] The structured `ClientConfig`/`Version`/`Installer`/`LocalBuffer` chain was dead — nothing in CoPilot read `Organization.client_config` or any of its sub-fields. Drop them entirely. Pydantic 2's default `extra='ignore'` then silently drops the unknown `_client_config` key on parse, so any future shape change to that field is also tolerated. pyvelociraptor / gRPC transport layer is unaffected — this is purely a parse-side schema cleanup. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix: ArtifactsResponse.success typed bool (matches every caller) Same Pydantic 2 strictness regression as the orgs() fix: every callsite of ArtifactsResponse passes success=True/False, but the field was typed str. Pydantic 1 silently coerced bool→"True"; Pydantic 2 rejects with `Input should be a valid string [type=string_type, input_value=True, input_type=bool]`, which 500'd the GET /api/artifacts endpoint. Sibling ArtifactParametersResponse.success was already bool. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: taylor_socfortress <taylor.walton@socfortress.co> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>