@vev-software/atlas-contracts 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -0
- package/dist/index.d.ts +1 -0
- package/package.json +5 -2
- package/schemas/v1/asset.schema.json +21 -0
- package/schemas/v1/common.schema.json +23 -2
- package/schemas/v1/import.schema.json +8 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @vev-software/atlas-contracts
|
|
2
|
+
|
|
3
|
+
Public, versioned **data model and interop contracts** for VEV Atlas — the portability and
|
|
4
|
+
interoperability surface that the Atlas runtime and third-party importers/exporters all build
|
|
5
|
+
against, without reaching into anyone's internals.
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm i @vev-software/atlas-contracts
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import type { LandscapeDocument, Asset } from "@vev-software/atlas-contracts";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## What's inside
|
|
16
|
+
|
|
17
|
+
- **Asset data model** — the catalogue of systems, applications, servers and infrastructure,
|
|
18
|
+
plus the manual **relationships** and **tags** that connect and classify them.
|
|
19
|
+
- **Landscape import/export document** — the schema that carries a whole landscape across a
|
|
20
|
+
boundary (customer-owned export; community importers/exporters).
|
|
21
|
+
- **Authoritative JSON Schemas** — shipped under `schemas/` in the package, so you can validate
|
|
22
|
+
payloads against the exact same contracts the TypeScript types describe.
|
|
23
|
+
|
|
24
|
+
Ships type declarations (`dist/index.d.ts`) and ESM; no runtime dependencies.
|
|
25
|
+
|
|
26
|
+
## Versioning
|
|
27
|
+
|
|
28
|
+
[SemVer](https://semver.org), derived from the git tag (`vX.Y.Z`) at release. Pre-1.0, the v1
|
|
29
|
+
contract evolves additively across minor/patch versions.
|
|
30
|
+
|
|
31
|
+
## Links
|
|
32
|
+
|
|
33
|
+
- **Source & issues:** https://github.com/Vev-software/atlas-contracts
|
|
34
|
+
- **.NET SDK (NuGet):** [`Vev.Atlas.Contracts`](https://www.nuget.org/packages/Vev.Atlas.Contracts)
|
|
35
|
+
|
|
36
|
+
## Licence
|
|
37
|
+
|
|
38
|
+
[Apache-2.0](https://github.com/Vev-software/atlas-contracts/blob/main/LICENSE).
|
package/dist/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vev-software/atlas-contracts",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Public, versioned data model and interop contracts for VEV Atlas — the catalogue asset model plus manual relationships, tags and the landscape import/export document.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
|
-
"files": [
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"schemas"
|
|
12
|
+
],
|
|
10
13
|
"repository": {
|
|
11
14
|
"type": "git",
|
|
12
15
|
"url": "https://github.com/Vev-software/atlas-contracts"
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
"required": ["id", "kind", "name", "lifecycle"],
|
|
9
9
|
"properties": {
|
|
10
10
|
"id": { "$ref": "common.schema.json#/$defs/AssetId" },
|
|
11
|
+
"numericId": {
|
|
12
|
+
"type": "integer",
|
|
13
|
+
"minimum": 1,
|
|
14
|
+
"description": "Stable numeric identifier assigned by Atlas when the asset is created. Immutable, and independent of the editable name and human-readable id."
|
|
15
|
+
},
|
|
11
16
|
"kind": { "$ref": "common.schema.json#/$defs/AssetKind" },
|
|
12
17
|
"name": {
|
|
13
18
|
"type": "string",
|
|
@@ -73,6 +78,22 @@
|
|
|
73
78
|
"column": { "$ref": "common.schema.json#/$defs/ColumnDetails" }
|
|
74
79
|
}
|
|
75
80
|
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"if": { "properties": { "kind": { "const": "ai-service" } } },
|
|
84
|
+
"then": {
|
|
85
|
+
"properties": {
|
|
86
|
+
"aiService": { "$ref": "common.schema.json#/$defs/AiServiceDetails" }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"if": { "properties": { "kind": { "const": "ai-model" } } },
|
|
92
|
+
"then": {
|
|
93
|
+
"properties": {
|
|
94
|
+
"aiModel": { "$ref": "common.schema.json#/$defs/AiModelDetails" }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
76
97
|
}
|
|
77
98
|
]
|
|
78
99
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"$defs": {
|
|
7
7
|
"AssetKind": {
|
|
8
8
|
"type": "string",
|
|
9
|
-
"description": "The kind of asset held in the catalogue. The data-layer kinds (data-area, dataset, column) model the data architecture beneath a system, down to the column.",
|
|
10
|
-
"enum": ["system", "application", "server", "infrastructure", "data-area", "dataset", "column"]
|
|
9
|
+
"description": "The kind of asset held in the catalogue. The data-layer kinds (data-area, dataset, column) model the data architecture beneath a system, down to the column. The AI kinds (ai-service, ai-model) catalogue AI platforms and models as first-class assets.",
|
|
10
|
+
"enum": ["system", "application", "server", "infrastructure", "data-area", "dataset", "column", "ai-service", "ai-model"]
|
|
11
11
|
},
|
|
12
12
|
"Lifecycle": {
|
|
13
13
|
"type": "string",
|
|
@@ -124,6 +124,27 @@
|
|
|
124
124
|
"dataType": { "type": ["string", "null"], "maxLength": 128 },
|
|
125
125
|
"nullable": { "type": ["boolean", "null"] }
|
|
126
126
|
}
|
|
127
|
+
},
|
|
128
|
+
"AiServiceDetails": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"description": "Held AI service metadata. Cataloguing only: provider, endpoint and environment are recorded facts, never analysis.",
|
|
131
|
+
"additionalProperties": false,
|
|
132
|
+
"properties": {
|
|
133
|
+
"provider": { "type": ["string", "null"], "maxLength": 128 },
|
|
134
|
+
"endpoint": { "type": ["string", "null"], "maxLength": 512 },
|
|
135
|
+
"environment": { "type": ["string", "null"], "maxLength": 64 }
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"AiModelDetails": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"description": "Held AI model metadata. Cataloguing only: model name, version, provider and embedding dimensions are recorded facts, never analysis.",
|
|
141
|
+
"additionalProperties": false,
|
|
142
|
+
"properties": {
|
|
143
|
+
"modelName": { "type": ["string", "null"], "maxLength": 128 },
|
|
144
|
+
"version": { "type": ["string", "null"], "maxLength": 64 },
|
|
145
|
+
"provider": { "type": ["string", "null"], "maxLength": 128 },
|
|
146
|
+
"embeddingDimensions": { "type": ["integer", "null"] }
|
|
147
|
+
}
|
|
127
148
|
}
|
|
128
149
|
}
|
|
129
150
|
}
|
|
@@ -80,6 +80,14 @@
|
|
|
80
80
|
{
|
|
81
81
|
"if": { "properties": { "kind": { "const": "column" } } },
|
|
82
82
|
"then": { "properties": { "column": { "$ref": "common.schema.json#/$defs/ColumnDetails" } } }
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"if": { "properties": { "kind": { "const": "ai-service" } } },
|
|
86
|
+
"then": { "properties": { "aiService": { "$ref": "common.schema.json#/$defs/AiServiceDetails" } } }
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"if": { "properties": { "kind": { "const": "ai-model" } } },
|
|
90
|
+
"then": { "properties": { "aiModel": { "$ref": "common.schema.json#/$defs/AiModelDetails" } } }
|
|
83
91
|
}
|
|
84
92
|
]
|
|
85
93
|
},
|