1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Copyright (c) 2024-2026 Nervosys LLC
// SPDX-License-Identifier: AGPL-3.0-only
//! # Schema Registry & Ontology
//!
//! Persistent, versioned database schemas for every AI chat provider and format
//! version, plus an ontology layer that makes schemas discoverable by AI agents.
//!
//! ## Architecture
//!
//! ```text
//! ┌─────────────────────────────────────────────────────────────┐
//! │ Schema Registry │
//! │ ┌─────────────┐ ┌────────────-─┐ ┌─────────────┐ │
//! │ │ Copilot v3 │ │ Copilot JSONL│ │ Cursor v1 │ ... │
//! │ │ (JSON) │ │ (0.37+) │ │ │ │
//! │ └─────────────┘ └──────────────┘ └─────────────┘ │
//! ├─────────────────────────────────────────────────────────────┤
//! │ Ontology Layer │
//! │ • Entity types, relationships, field semantics │
//! │ • Cross-provider mappings (field A in X ≡ field B in Y) │
//! │ • Version migration paths │
//! │ • Machine-readable capability descriptors │
//! └─────────────────────────────────────────────────────────────┘
//! ```
//!
//! ## Usage
//!
//! ```rust,ignore
//! use csm::schema::{SchemaRegistry, SchemaVersion};
//!
//! let registry = SchemaRegistry::new();
//!
//! // List all known schemas
//! for schema in registry.list_schemas() {
//! println!("{}: {} fields", schema.id(), schema.field_count());
//! }
//!
//! // Detect schema for a workspace
//! let detected = registry.detect_schema("/path/to/workspace")?;
//!
//! // Query the ontology
//! let ontology = registry.ontology();
//! let mappings = ontology.cross_provider_mappings("copilot-jsonl-v1", "cursor-v1");
//! ```
pub use ;
pub use ;
pub use ;
pub use ;