yarramate 0.1.0

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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/adapter-mapping.d.ts +40 -0
  4. package/dist/adapter-mapping.js +200 -0
  5. package/dist/adapters/graphify-cli.d.ts +3 -0
  6. package/dist/adapters/graphify-cli.js +127 -0
  7. package/dist/adapters/graphify-entry.d.ts +1 -0
  8. package/dist/adapters/graphify-entry.js +1 -0
  9. package/dist/adapters/graphify.d.ts +23 -0
  10. package/dist/adapters/graphify.js +47 -0
  11. package/dist/adapters/likec4-cli.d.ts +3 -0
  12. package/dist/adapters/likec4-cli.js +662 -0
  13. package/dist/adapters/likec4-export.d.ts +25 -0
  14. package/dist/adapters/likec4-export.js +204 -0
  15. package/dist/adapters/likec4-kind-mapping.d.ts +22 -0
  16. package/dist/adapters/likec4-kind-mapping.js +60 -0
  17. package/dist/adapters/likec4-prepare.d.ts +28 -0
  18. package/dist/adapters/likec4-prepare.js +154 -0
  19. package/dist/adapters/likec4-project.d.ts +58 -0
  20. package/dist/adapters/likec4-project.js +176 -0
  21. package/dist/adapters/likec4.d.ts +4 -0
  22. package/dist/adapters/likec4.js +4 -0
  23. package/dist/architecture-state.d.ts +22 -0
  24. package/dist/architecture-state.js +63 -0
  25. package/dist/check-command.d.ts +2 -0
  26. package/dist/check-command.js +232 -0
  27. package/dist/cli-support.d.ts +24 -0
  28. package/dist/cli-support.js +81 -0
  29. package/dist/cli.d.ts +4 -0
  30. package/dist/cli.js +575 -0
  31. package/dist/compiler.d.ts +66 -0
  32. package/dist/compiler.js +940 -0
  33. package/dist/core-contract.d.ts +43 -0
  34. package/dist/core-contract.js +162 -0
  35. package/dist/evidence.d.ts +58 -0
  36. package/dist/evidence.js +161 -0
  37. package/dist/graph.d.ts +2 -0
  38. package/dist/graph.js +37 -0
  39. package/dist/index.d.ts +11 -0
  40. package/dist/index.js +9 -0
  41. package/dist/profile.d.ts +30 -0
  42. package/dist/profile.js +162 -0
  43. package/dist/projection.d.ts +42 -0
  44. package/dist/projection.js +183 -0
  45. package/dist/reconciliation.d.ts +26 -0
  46. package/dist/reconciliation.js +47 -0
  47. package/dist/source-document.d.ts +24 -0
  48. package/dist/source-document.js +80 -0
  49. package/dist/workspace.d.ts +29 -0
  50. package/dist/workspace.js +114 -0
  51. package/docs/CONSUMING-YARRAMATE.md +145 -0
  52. package/package.json +110 -0
  53. package/schema/yarramate-adapter-mapping.schema.json +59 -0
  54. package/schema/yarramate-check-result.schema.json +92 -0
  55. package/schema/yarramate-core-contract.schema.json +132 -0
  56. package/schema/yarramate-diagnostic-result.schema.json +64 -0
  57. package/schema/yarramate-document.schema.json +168 -0
  58. package/schema/yarramate-evidence-report.schema.json +73 -0
  59. package/schema/yarramate-evidence.schema.json +92 -0
  60. package/schema/yarramate-graph-v2.schema.json +170 -0
  61. package/schema/yarramate-likec4-check-result.schema.json +50 -0
  62. package/schema/yarramate-likec4-diagnostic-result.schema.json +69 -0
  63. package/schema/yarramate-likec4-generated-project-v2.schema.json +100 -0
  64. package/schema/yarramate-likec4-generated-project.schema.json +76 -0
  65. package/schema/yarramate-likec4-kind-mapping.schema.json +65 -0
  66. package/schema/yarramate-likec4-project.schema.json +160 -0
  67. package/schema/yarramate-profile.schema.json +113 -0
  68. package/schema/yarramate-projection-result.schema.json +177 -0
  69. package/schema/yarramate-projection.schema.json +126 -0
  70. package/schema/yarramate-reconciliation-report.schema.json +90 -0
  71. package/schema/yarramate-state-comparison.schema.json +61 -0
  72. package/schema/yarramate-workspace.schema.json +55 -0
  73. package/skills/yarramate-architecture/SKILL.md +135 -0
  74. package/skills/yarramate-architecture/agents/openai.yaml +4 -0
  75. package/skills/yarramate-architecture/references/journey-checklists.md +57 -0
  76. package/skills/yarramate-architecture/references/native-authoring.md +167 -0
@@ -0,0 +1,100 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/likec4-generated-project/v2",
4
+ "title": "YarraMate generated multi-view LikeC4 project marker",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["format", "project", "mapping", "views", "files", "digests"],
8
+ "properties": {
9
+ "format": {
10
+ "const": "yarramate/likec4-generated-project/v2"
11
+ },
12
+ "project": {
13
+ "$ref": "#/$defs/versionedIdentity"
14
+ },
15
+ "mapping": {
16
+ "$ref": "#/$defs/versionedIdentity"
17
+ },
18
+ "kindMapping": {
19
+ "$ref": "#/$defs/versionedIdentity"
20
+ },
21
+ "views": {
22
+ "type": "array",
23
+ "minItems": 1,
24
+ "items": {
25
+ "$ref": "#/$defs/view"
26
+ }
27
+ },
28
+ "digests": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": [
32
+ "likec4.config.json",
33
+ "model.likec4",
34
+ "specification.likec4"
35
+ ],
36
+ "properties": {
37
+ "likec4.config.json": {
38
+ "$ref": "#/$defs/sha256"
39
+ },
40
+ "model.likec4": {
41
+ "$ref": "#/$defs/sha256"
42
+ },
43
+ "specification.likec4": {
44
+ "$ref": "#/$defs/sha256"
45
+ }
46
+ }
47
+ },
48
+ "files": {
49
+ "const": [
50
+ "likec4.config.json",
51
+ "model.likec4",
52
+ "specification.likec4"
53
+ ]
54
+ }
55
+ },
56
+ "$defs": {
57
+ "id": {
58
+ "type": "string",
59
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
60
+ },
61
+ "versionedIdentity": {
62
+ "type": "string",
63
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*@[0-9]+\\.[0-9]+$"
64
+ },
65
+ "subjectIdentity": {
66
+ "type": "string",
67
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*#[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
68
+ },
69
+ "view": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "required": ["projection"],
73
+ "properties": {
74
+ "id": {
75
+ "$ref": "#/$defs/id"
76
+ },
77
+ "projection": {
78
+ "$ref": "#/$defs/versionedIdentity"
79
+ },
80
+ "comparison": {
81
+ "type": "object",
82
+ "additionalProperties": false,
83
+ "required": ["from", "to"],
84
+ "properties": {
85
+ "from": {
86
+ "$ref": "#/$defs/subjectIdentity"
87
+ },
88
+ "to": {
89
+ "$ref": "#/$defs/subjectIdentity"
90
+ }
91
+ }
92
+ }
93
+ }
94
+ },
95
+ "sha256": {
96
+ "type": "string",
97
+ "pattern": "^[a-f0-9]{64}$"
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/likec4-generated-project/v1",
4
+ "title": "YarraMate generated LikeC4 project marker",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["format", "projection", "mapping", "files"],
8
+ "properties": {
9
+ "format": {
10
+ "const": "yarramate/likec4-generated-project/v1"
11
+ },
12
+ "projection": {
13
+ "$ref": "#/$defs/versionedIdentity"
14
+ },
15
+ "mapping": {
16
+ "$ref": "#/$defs/versionedIdentity"
17
+ },
18
+ "kindMapping": {
19
+ "$ref": "#/$defs/versionedIdentity"
20
+ },
21
+ "comparison": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": ["from", "to"],
25
+ "properties": {
26
+ "from": {
27
+ "$ref": "#/$defs/subjectIdentity"
28
+ },
29
+ "to": {
30
+ "$ref": "#/$defs/subjectIdentity"
31
+ }
32
+ }
33
+ },
34
+ "digests": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": [
38
+ "likec4.config.json",
39
+ "model.likec4",
40
+ "specification.likec4"
41
+ ],
42
+ "properties": {
43
+ "likec4.config.json": {
44
+ "$ref": "#/$defs/sha256"
45
+ },
46
+ "model.likec4": {
47
+ "$ref": "#/$defs/sha256"
48
+ },
49
+ "specification.likec4": {
50
+ "$ref": "#/$defs/sha256"
51
+ }
52
+ }
53
+ },
54
+ "files": {
55
+ "const": [
56
+ "likec4.config.json",
57
+ "model.likec4",
58
+ "specification.likec4"
59
+ ]
60
+ }
61
+ },
62
+ "$defs": {
63
+ "versionedIdentity": {
64
+ "type": "string",
65
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*@[0-9]+\\.[0-9]+$"
66
+ },
67
+ "subjectIdentity": {
68
+ "type": "string",
69
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*#[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
70
+ },
71
+ "sha256": {
72
+ "type": "string",
73
+ "pattern": "^[a-f0-9]{64}$"
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/likec4-kind-mapping/v1",
4
+ "title": "YarraMate LikeC4 kind mapping",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "format",
9
+ "id",
10
+ "version",
11
+ "conceptKinds",
12
+ "relationshipKinds"
13
+ ],
14
+ "properties": {
15
+ "format": {
16
+ "const": "yarramate/likec4-kind-mapping/v1"
17
+ },
18
+ "id": {
19
+ "$ref": "#/$defs/id"
20
+ },
21
+ "version": {
22
+ "type": "string",
23
+ "pattern": "^[0-9]+\\.[0-9]+$"
24
+ },
25
+ "conceptKinds": {
26
+ "type": "array",
27
+ "items": {
28
+ "$ref": "#/$defs/kindMapping"
29
+ }
30
+ },
31
+ "relationshipKinds": {
32
+ "type": "array",
33
+ "items": {
34
+ "$ref": "#/$defs/kindMapping"
35
+ }
36
+ }
37
+ },
38
+ "$defs": {
39
+ "id": {
40
+ "type": "string",
41
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
42
+ },
43
+ "qualifiedKind": {
44
+ "type": "string",
45
+ "pattern": "^[a-z][a-z0-9-]*(?:/[a-z][a-z0-9-]*)+@[0-9]+\\.[0-9]+#[a-z][A-Za-z0-9-]*$"
46
+ },
47
+ "likec4Identifier": {
48
+ "type": "string",
49
+ "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
50
+ },
51
+ "kindMapping": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": ["native", "external"],
55
+ "properties": {
56
+ "native": {
57
+ "$ref": "#/$defs/qualifiedKind"
58
+ },
59
+ "external": {
60
+ "$ref": "#/$defs/likec4Identifier"
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,160 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/likec4-project/v1",
4
+ "title": "YarraMate LikeC4 project definition",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["format", "id", "version", "title", "mapping", "views"],
8
+ "properties": {
9
+ "format": {
10
+ "const": "yarramate/likec4-project/v1"
11
+ },
12
+ "id": {
13
+ "$ref": "#/$defs/id"
14
+ },
15
+ "version": {
16
+ "type": "string",
17
+ "pattern": "^[0-9]+\\.[0-9]+$"
18
+ },
19
+ "title": {
20
+ "type": "string",
21
+ "minLength": 1
22
+ },
23
+ "mapping": {
24
+ "$ref": "#/$defs/path"
25
+ },
26
+ "kindMapping": {
27
+ "$ref": "#/$defs/path"
28
+ },
29
+ "views": {
30
+ "type": "array",
31
+ "minItems": 1,
32
+ "items": {
33
+ "$ref": "#/$defs/view"
34
+ }
35
+ }
36
+ },
37
+ "$defs": {
38
+ "id": {
39
+ "type": "string",
40
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
41
+ },
42
+ "path": {
43
+ "type": "string",
44
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\).+$"
45
+ },
46
+ "subjectIdentity": {
47
+ "type": "string",
48
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*#[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
49
+ },
50
+ "comparison": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["from", "to"],
54
+ "properties": {
55
+ "from": {
56
+ "$ref": "#/$defs/subjectIdentity"
57
+ },
58
+ "to": {
59
+ "$ref": "#/$defs/subjectIdentity"
60
+ }
61
+ }
62
+ },
63
+ "view": {
64
+ "type": "object",
65
+ "additionalProperties": false,
66
+ "required": ["projection"],
67
+ "properties": {
68
+ "id": {
69
+ "$ref": "#/$defs/id"
70
+ },
71
+ "projection": {
72
+ "$ref": "#/$defs/path"
73
+ },
74
+ "compare": {
75
+ "$ref": "#/$defs/comparison"
76
+ },
77
+ "dynamic": {
78
+ "$ref": "#/$defs/dynamic"
79
+ },
80
+ "deployment": {
81
+ "$ref": "#/$defs/deployment"
82
+ }
83
+ },
84
+ "not": {
85
+ "required": ["dynamic", "deployment"]
86
+ }
87
+ },
88
+ "dynamic": {
89
+ "type": "object",
90
+ "additionalProperties": false,
91
+ "required": ["steps"],
92
+ "properties": {
93
+ "steps": {
94
+ "type": "array",
95
+ "minItems": 1,
96
+ "items": {
97
+ "$ref": "#/$defs/dynamicStep"
98
+ }
99
+ }
100
+ }
101
+ },
102
+ "dynamicStep": {
103
+ "type": "object",
104
+ "additionalProperties": false,
105
+ "required": ["relationship"],
106
+ "properties": {
107
+ "relationship": {
108
+ "$ref": "#/$defs/subjectIdentity"
109
+ },
110
+ "title": {
111
+ "type": "string",
112
+ "minLength": 1
113
+ }
114
+ }
115
+ },
116
+ "deployment": {
117
+ "type": "object",
118
+ "additionalProperties": false,
119
+ "required": ["nodes", "instances"],
120
+ "properties": {
121
+ "nodes": {
122
+ "type": "array",
123
+ "minItems": 1,
124
+ "items": { "$ref": "#/$defs/deploymentNode" }
125
+ },
126
+ "instances": {
127
+ "type": "array",
128
+ "minItems": 1,
129
+ "items": { "$ref": "#/$defs/deploymentInstance" }
130
+ }
131
+ }
132
+ },
133
+ "deploymentNode": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": ["id", "kind", "name"],
137
+ "properties": {
138
+ "id": { "$ref": "#/$defs/id" },
139
+ "kind": {
140
+ "enum": ["environment", "zone", "host", "runtime"]
141
+ },
142
+ "name": {
143
+ "type": "string",
144
+ "minLength": 1
145
+ },
146
+ "parent": { "$ref": "#/$defs/id" }
147
+ }
148
+ },
149
+ "deploymentInstance": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "required": ["id", "subject", "node"],
153
+ "properties": {
154
+ "id": { "$ref": "#/$defs/id" },
155
+ "subject": { "$ref": "#/$defs/subjectIdentity" },
156
+ "node": { "$ref": "#/$defs/id" }
157
+ }
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/profile/v1",
4
+ "title": "YarraMate extension profile",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "format",
9
+ "id",
10
+ "version",
11
+ "extends",
12
+ "conceptKinds",
13
+ "relationshipKinds"
14
+ ],
15
+ "properties": {
16
+ "format": {
17
+ "const": "yarramate/profile/v1"
18
+ },
19
+ "id": {
20
+ "type": "string",
21
+ "pattern": "^[a-z][a-z0-9-]*(?:/[a-z][a-z0-9-]*)+$"
22
+ },
23
+ "version": {
24
+ "type": "string",
25
+ "pattern": "^[0-9]+\\.[0-9]+$"
26
+ },
27
+ "extends": {
28
+ "type": "string",
29
+ "pattern": "^[a-z][a-z0-9-]*(?:/[a-z][a-z0-9-]*)+@[0-9]+\\.[0-9]+$"
30
+ },
31
+ "conceptKinds": {
32
+ "type": "array",
33
+ "items": {
34
+ "$ref": "#/$defs/conceptKind"
35
+ }
36
+ },
37
+ "relationshipKinds": {
38
+ "type": "array",
39
+ "items": {
40
+ "$ref": "#/$defs/relationshipKind"
41
+ }
42
+ }
43
+ },
44
+ "$defs": {
45
+ "localKindId": {
46
+ "type": "string",
47
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
48
+ },
49
+ "qualifiedKindId": {
50
+ "type": "string",
51
+ "pattern": "^[a-z][a-z0-9-]*(?:/[a-z][a-z0-9-]*)+@[0-9]+\\.[0-9]+#[a-z][A-Za-z0-9-]*$"
52
+ },
53
+ "aspect": {
54
+ "enum": [
55
+ "motivation",
56
+ "active-structure",
57
+ "behavior",
58
+ "passive-structure",
59
+ "composite"
60
+ ]
61
+ },
62
+ "conceptKind": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": ["id", "name", "parent"],
66
+ "properties": {
67
+ "id": {
68
+ "$ref": "#/$defs/localKindId"
69
+ },
70
+ "name": {
71
+ "type": "string",
72
+ "minLength": 1
73
+ },
74
+ "parent": {
75
+ "$ref": "#/$defs/qualifiedKindId"
76
+ }
77
+ }
78
+ },
79
+ "relationshipKind": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": ["id", "name", "parent"],
83
+ "properties": {
84
+ "id": {
85
+ "$ref": "#/$defs/localKindId"
86
+ },
87
+ "name": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ "parent": {
92
+ "$ref": "#/$defs/qualifiedKindId"
93
+ },
94
+ "sourceAspects": {
95
+ "type": "array",
96
+ "minItems": 1,
97
+ "uniqueItems": true,
98
+ "items": {
99
+ "$ref": "#/$defs/aspect"
100
+ }
101
+ },
102
+ "targetAspects": {
103
+ "type": "array",
104
+ "minItems": 1,
105
+ "uniqueItems": true,
106
+ "items": {
107
+ "$ref": "#/$defs/aspect"
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yarramate.org/schema/projection-result/v1",
4
+ "title": "YarraMate projection result",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["format", "projection", "documents", "subjects", "claims"],
8
+ "properties": {
9
+ "format": {
10
+ "const": "yarramate/projection-result/v1"
11
+ },
12
+ "projection": {
13
+ "type": "string",
14
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*@[0-9]+\\.[0-9]+$"
15
+ },
16
+ "presentation": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "title": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "description": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ }
28
+ }
29
+ },
30
+ "documents": {
31
+ "type": "array",
32
+ "uniqueItems": true,
33
+ "items": {
34
+ "$ref": "#/$defs/document"
35
+ }
36
+ },
37
+ "subjects": {
38
+ "type": "array",
39
+ "uniqueItems": true,
40
+ "items": {
41
+ "$ref": "#/$defs/subject"
42
+ }
43
+ },
44
+ "claims": {
45
+ "type": "array",
46
+ "uniqueItems": true,
47
+ "items": {
48
+ "$ref": "#/$defs/claim"
49
+ }
50
+ }
51
+ },
52
+ "$defs": {
53
+ "localId": {
54
+ "type": "string",
55
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
56
+ },
57
+ "subjectIdentity": {
58
+ "type": "string",
59
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*#[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
60
+ },
61
+ "claimIdentity": {
62
+ "type": "string",
63
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*#[a-z][a-z0-9]*(?:-[a-z0-9]+)*(?:~[a-z][a-z0-9-]*)?$"
64
+ },
65
+ "document": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": ["id", "source"],
69
+ "properties": {
70
+ "id": {
71
+ "$ref": "#/$defs/localId"
72
+ },
73
+ "source": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ }
77
+ }
78
+ },
79
+ "subject": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": ["id", "type"],
83
+ "properties": {
84
+ "id": {
85
+ "$ref": "#/$defs/subjectIdentity"
86
+ },
87
+ "type": {
88
+ "enum": ["concept", "relationship"]
89
+ }
90
+ }
91
+ },
92
+ "claimObject": {
93
+ "oneOf": [
94
+ {
95
+ "type": "object",
96
+ "additionalProperties": false,
97
+ "required": ["ref"],
98
+ "properties": {
99
+ "ref": {
100
+ "$ref": "#/$defs/subjectIdentity"
101
+ }
102
+ }
103
+ },
104
+ {
105
+ "type": "object",
106
+ "additionalProperties": false,
107
+ "required": ["value"],
108
+ "properties": {
109
+ "value": {
110
+ "type": "string",
111
+ "minLength": 1
112
+ }
113
+ }
114
+ }
115
+ ]
116
+ },
117
+ "source": {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "required": ["document", "path", "pointer", "line", "column"],
121
+ "properties": {
122
+ "document": {
123
+ "$ref": "#/$defs/localId"
124
+ },
125
+ "path": {
126
+ "type": "string",
127
+ "minLength": 1
128
+ },
129
+ "pointer": {
130
+ "type": "string",
131
+ "pattern": "^/"
132
+ },
133
+ "line": {
134
+ "type": "integer",
135
+ "minimum": 1
136
+ },
137
+ "column": {
138
+ "type": "integer",
139
+ "minimum": 1
140
+ }
141
+ }
142
+ },
143
+ "claim": {
144
+ "type": "object",
145
+ "additionalProperties": false,
146
+ "required": [
147
+ "id",
148
+ "subject",
149
+ "predicate",
150
+ "object",
151
+ "origin",
152
+ "source"
153
+ ],
154
+ "properties": {
155
+ "id": {
156
+ "$ref": "#/$defs/claimIdentity"
157
+ },
158
+ "subject": {
159
+ "$ref": "#/$defs/subjectIdentity"
160
+ },
161
+ "predicate": {
162
+ "type": "string",
163
+ "pattern": "^\\S+$"
164
+ },
165
+ "object": {
166
+ "$ref": "#/$defs/claimObject"
167
+ },
168
+ "origin": {
169
+ "const": "declared"
170
+ },
171
+ "source": {
172
+ "$ref": "#/$defs/source"
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }