@jevitate/cli 0.22.0 → 0.24.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.
- package/contracts/jevitate-catalog/v1/README.md +10 -0
- package/contracts/jevitate-catalog/v1/approval-hash-vectors.json +64 -0
- package/contracts/jevitate-catalog/v1/fixtures/invalid/jobs-unknown-field.json +12 -0
- package/contracts/jevitate-catalog/v1/fixtures/invalid/journey-unknown-field.json +15 -0
- package/contracts/jevitate-catalog/v1/fixtures/valid/jobs.json +11 -0
- package/contracts/jevitate-catalog/v1/fixtures/valid/journey.json +14 -0
- package/contracts/jevitate-catalog/v1/fixtures/valid/personas.json +7 -0
- package/contracts/jevitate-catalog/v1/manifest.json +69 -0
- package/contracts/jevitate-catalog/v1/schemas/job.schema.json +605 -0
- package/contracts/jevitate-catalog/v1/schemas/jobs.schema.json +28 -0
- package/contracts/jevitate-catalog/v1/schemas/journey.schema.json +10871 -0
- package/contracts/jevitate-catalog/v1/schemas/personas.schema.json +223 -0
- package/contracts/jevitate-catalog/v2/README.md +18 -0
- package/contracts/jevitate-catalog/v2/approval-hash-vectors.json +75 -0
- package/contracts/jevitate-catalog/v2/fixtures/invalid/jobs-unknown-field.json +12 -0
- package/contracts/jevitate-catalog/v2/fixtures/invalid/journey-unknown-field.json +15 -0
- package/contracts/jevitate-catalog/v2/fixtures/valid/jobs.json +11 -0
- package/contracts/jevitate-catalog/v2/fixtures/valid/journey.json +14 -0
- package/contracts/jevitate-catalog/v2/fixtures/valid/personas.json +7 -0
- package/contracts/jevitate-catalog/v2/manifest.json +78 -0
- package/contracts/jevitate-catalog/v2/schemas/job.schema.json +605 -0
- package/contracts/jevitate-catalog/v2/schemas/jobs.schema.json +28 -0
- package/contracts/jevitate-catalog/v2/schemas/journey.schema.json +10871 -0
- package/contracts/jevitate-catalog/v2/schemas/personas.schema.json +223 -0
- package/dist/bin.js +392 -147
- package/dist/build-info.generated.js +3 -3
- package/dist/catalog-bundle.d.ts +4 -2
- package/dist/catalog-bundle.js +8 -6
- package/dist/catalog-bundle.js.map +1 -1
- package/dist/catalog-contract-identity.d.ts +5 -0
- package/dist/catalog-contract-identity.js +7 -0
- package/dist/catalog-contract-identity.js.map +1 -0
- package/dist/catalog.js +18 -7
- package/dist/catalog.js.map +1 -1
- package/dist/journey-review.d.ts +3 -0
- package/dist/journey-review.js +13 -2
- package/dist/journey-review.js.map +1 -1
- package/dist/journey-stale-api.js +4 -4
- package/dist/journey-stale-api.js.map +1 -1
- package/dist/log-correlation.js +10 -2
- package/dist/log-correlation.js.map +1 -1
- package/package.json +9 -6
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://jevitate.com/schemas/catalog/v1/personas.schema.json",
|
|
4
|
+
"title": "Jevitate personas.json v1",
|
|
5
|
+
"oneOf": [
|
|
6
|
+
{
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"anyOf": [
|
|
11
|
+
{
|
|
12
|
+
"required": [
|
|
13
|
+
"id"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"required": [
|
|
18
|
+
"name"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"properties": {
|
|
23
|
+
"id": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
26
|
+
},
|
|
27
|
+
"name": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
30
|
+
},
|
|
31
|
+
"description": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"maxLength": 2000
|
|
34
|
+
},
|
|
35
|
+
"role": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"maxLength": 200
|
|
38
|
+
},
|
|
39
|
+
"storageState": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"maxLength": 1000
|
|
42
|
+
},
|
|
43
|
+
"login": {
|
|
44
|
+
"type": "object"
|
|
45
|
+
},
|
|
46
|
+
"approval": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"required": [
|
|
50
|
+
"contentHash",
|
|
51
|
+
"at"
|
|
52
|
+
],
|
|
53
|
+
"properties": {
|
|
54
|
+
"contentHash": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
57
|
+
},
|
|
58
|
+
"at": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"minLength": 1
|
|
61
|
+
},
|
|
62
|
+
"provenance": {
|
|
63
|
+
"type": "object"
|
|
64
|
+
},
|
|
65
|
+
"acceptedFindings": {
|
|
66
|
+
"type": "object"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"extensions": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"maxProperties": 16
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"additionalProperties": true
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "object",
|
|
80
|
+
"additionalProperties": false,
|
|
81
|
+
"required": [
|
|
82
|
+
"personas"
|
|
83
|
+
],
|
|
84
|
+
"properties": {
|
|
85
|
+
"personas": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"items": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"anyOf": [
|
|
90
|
+
{
|
|
91
|
+
"required": [
|
|
92
|
+
"id"
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"required": [
|
|
97
|
+
"name"
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"properties": {
|
|
102
|
+
"id": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
105
|
+
},
|
|
106
|
+
"name": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
109
|
+
},
|
|
110
|
+
"description": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"maxLength": 2000
|
|
113
|
+
},
|
|
114
|
+
"role": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"maxLength": 200
|
|
117
|
+
},
|
|
118
|
+
"storageState": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"maxLength": 1000
|
|
121
|
+
},
|
|
122
|
+
"login": {
|
|
123
|
+
"type": "object"
|
|
124
|
+
},
|
|
125
|
+
"approval": {
|
|
126
|
+
"type": "object",
|
|
127
|
+
"additionalProperties": false,
|
|
128
|
+
"required": [
|
|
129
|
+
"contentHash",
|
|
130
|
+
"at"
|
|
131
|
+
],
|
|
132
|
+
"properties": {
|
|
133
|
+
"contentHash": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
136
|
+
},
|
|
137
|
+
"at": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"minLength": 1
|
|
140
|
+
},
|
|
141
|
+
"provenance": {
|
|
142
|
+
"type": "object"
|
|
143
|
+
},
|
|
144
|
+
"acceptedFindings": {
|
|
145
|
+
"type": "object"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"extensions": {
|
|
150
|
+
"type": "object",
|
|
151
|
+
"maxProperties": 16
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"additionalProperties": true
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"type": "object",
|
|
161
|
+
"propertyNames": {
|
|
162
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
163
|
+
},
|
|
164
|
+
"additionalProperties": {
|
|
165
|
+
"anyOf": [
|
|
166
|
+
{
|
|
167
|
+
"type": "string",
|
|
168
|
+
"minLength": 1
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"type": "object",
|
|
172
|
+
"properties": {
|
|
173
|
+
"description": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"maxLength": 2000
|
|
176
|
+
},
|
|
177
|
+
"role": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"maxLength": 200
|
|
180
|
+
},
|
|
181
|
+
"storageState": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"maxLength": 1000
|
|
184
|
+
},
|
|
185
|
+
"login": {
|
|
186
|
+
"type": "object"
|
|
187
|
+
},
|
|
188
|
+
"approval": {
|
|
189
|
+
"type": "object",
|
|
190
|
+
"additionalProperties": false,
|
|
191
|
+
"required": [
|
|
192
|
+
"contentHash",
|
|
193
|
+
"at"
|
|
194
|
+
],
|
|
195
|
+
"properties": {
|
|
196
|
+
"contentHash": {
|
|
197
|
+
"type": "string",
|
|
198
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
199
|
+
},
|
|
200
|
+
"at": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"minLength": 1
|
|
203
|
+
},
|
|
204
|
+
"provenance": {
|
|
205
|
+
"type": "object"
|
|
206
|
+
},
|
|
207
|
+
"acceptedFindings": {
|
|
208
|
+
"type": "object"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"extensions": {
|
|
213
|
+
"type": "object",
|
|
214
|
+
"maxProperties": 16
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"additionalProperties": true
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Jevitate repository catalog contract v2
|
|
2
|
+
|
|
3
|
+
This immutable contract release defines the git-backed `.jevitate/` files shared with consumers.
|
|
4
|
+
The JSON Schemas are closed where the runtime schemas are closed. The repository-catalog compatibility
|
|
5
|
+
exception for legacy persona descriptive keys remains: they participate in the persona approval hash.
|
|
6
|
+
|
|
7
|
+
New approval hashes use `jevitate-content-hash-v2` and the vectors in
|
|
8
|
+
`approval-hash-vectors.json`: object keys sort lexicographically by unsigned UTF-16 code units;
|
|
9
|
+
arrays retain order and the encoded JSON has no insignificant whitespace. This writer is not readable
|
|
10
|
+
by consumers of the v1 contract, so it is published as contract major 2. Readers may also recognize
|
|
11
|
+
existing v1 approvals (JavaScript `localeCompare`) during migration, but never write a new v1
|
|
12
|
+
approval. Session paths and login settings are operational and excluded from persona approval hashes.
|
|
13
|
+
A consumer must still run Jevitate's semantic reference and approval checks; JSON Schema validation
|
|
14
|
+
alone is insufficient. The immutable v1.0.0 contract remains available at the sibling `v1/` path.
|
|
15
|
+
|
|
16
|
+
The manifest records the source repository, the full source commit and the package version at that
|
|
17
|
+
commit. Publication is intentionally two commits: first commit source and generator changes, then
|
|
18
|
+
run the generator with that commit's SHA and commit the regenerated immutable contract.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"algorithm": "jevitate-content-hash-v2",
|
|
3
|
+
"canonicalization": "UTF-8 JSON; arrays retain order; object keys sort lexicographically by unsigned UTF-16 code units; no whitespace",
|
|
4
|
+
"vectors": [
|
|
5
|
+
{
|
|
6
|
+
"kind": "persona",
|
|
7
|
+
"input": {
|
|
8
|
+
"id": "owner",
|
|
9
|
+
"description": "Owns the product",
|
|
10
|
+
"role": "owner",
|
|
11
|
+
"extensions": {
|
|
12
|
+
"journeeze": {
|
|
13
|
+
"tier": "private"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"canonical": "{\"description\":\"Owns the product\",\"extensions\":{\"journeeze\":{\"tier\":\"private\"}},\"id\":\"owner\",\"role\":\"owner\"}",
|
|
18
|
+
"sha256": "601ca6c440f5d6d9c4a3bad5cab5b2c4a03e7ae170b49d28333e0a2762ba019e"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"kind": "job",
|
|
22
|
+
"input": {
|
|
23
|
+
"id": "review-work",
|
|
24
|
+
"trigger": "work is ready",
|
|
25
|
+
"motivation": "review it",
|
|
26
|
+
"outcome": "ship with confidence",
|
|
27
|
+
"personas": [
|
|
28
|
+
"owner"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"canonical": "{\"id\":\"review-work\",\"motivation\":\"review it\",\"outcome\":\"ship with confidence\",\"personas\":[\"owner\"],\"trigger\":\"work is ready\"}",
|
|
32
|
+
"sha256": "2d15af87ec10aa0aad33dbc79a20ae761f35eff0ba4db3f099b43c91303463a6"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"kind": "unicode-order",
|
|
36
|
+
"input": {
|
|
37
|
+
"z": 1,
|
|
38
|
+
"ä": 2,
|
|
39
|
+
"a": 3,
|
|
40
|
+
"Å": 4
|
|
41
|
+
},
|
|
42
|
+
"canonical": "{\"a\":3,\"z\":1,\"Å\":4,\"ä\":2}",
|
|
43
|
+
"sha256": "3db95dddd935182a5f842fc08fd53436fbaeac1cfb62e933441643c1920312be"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"kind": "unicode-code-unit-order",
|
|
47
|
+
"input": {
|
|
48
|
+
"": 1,
|
|
49
|
+
"𐀀": 2,
|
|
50
|
+
"é": 3,
|
|
51
|
+
"é": 4
|
|
52
|
+
},
|
|
53
|
+
"canonical": "{\"é\":3,\"é\":4,\"𐀀\":2,\"\":1}",
|
|
54
|
+
"sha256": "e41f068bae10d342a86d2a4354424df7bd5c5b2b216f2a8742a6a02928f5acd2"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"kind": "journey-review",
|
|
58
|
+
"input": {
|
|
59
|
+
"metadata": {
|
|
60
|
+
"id": "review-work",
|
|
61
|
+
"name": "Review work",
|
|
62
|
+
"params": [],
|
|
63
|
+
"createdAtIso": "2026-10-24T00:00:00.000Z"
|
|
64
|
+
},
|
|
65
|
+
"recording": {
|
|
66
|
+
"version": "1.0.0",
|
|
67
|
+
"site": "http://localhost",
|
|
68
|
+
"pages": []
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"canonical": "{\"metadata\":{\"createdAtIso\":\"2026-10-24T00:00:00.000Z\",\"id\":\"review-work\",\"name\":\"Review work\",\"params\":[]},\"recording\":{\"pages\":[],\"site\":\"http://localhost\",\"version\":\"1.0.0\"}}",
|
|
72
|
+
"sha256": "9eeb671979a5ab132877b7a8a4724f62432cac92174e017bcc0cc65870c0388e"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"id": "review-work",
|
|
4
|
+
"name": "Review work",
|
|
5
|
+
"promoted": false,
|
|
6
|
+
"params": [],
|
|
7
|
+
"createdAtIso": "2026-10-24T00:00:00.000Z"
|
|
8
|
+
},
|
|
9
|
+
"recording": {
|
|
10
|
+
"version": "1.0.0",
|
|
11
|
+
"site": "http://localhost",
|
|
12
|
+
"pages": []
|
|
13
|
+
},
|
|
14
|
+
"typo": true
|
|
15
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "jevitate.catalog-contract",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"package": "@jevitate/cli",
|
|
5
|
+
"source": {
|
|
6
|
+
"repository": "https://github.com/matt-cochran/jevitate.git",
|
|
7
|
+
"commit": "58ef64ab8c1e628bc25b3dab973b23b5b69a4488",
|
|
8
|
+
"packageVersionAtCommit": "0.23.0"
|
|
9
|
+
},
|
|
10
|
+
"compatibility": {
|
|
11
|
+
"repositoryCatalogMajor": 1,
|
|
12
|
+
"approvalHash": "jevitate-content-hash-v2",
|
|
13
|
+
"readsApprovalHashes": [
|
|
14
|
+
"jevitate-content-hash-v2",
|
|
15
|
+
"jevitate-content-hash-v1"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"exceptions": [
|
|
19
|
+
"personas.v1.legacy-descriptive-keys"
|
|
20
|
+
],
|
|
21
|
+
"files": [
|
|
22
|
+
{
|
|
23
|
+
"path": "README.md",
|
|
24
|
+
"bytes": 1394,
|
|
25
|
+
"sha256": "91f185e0eb2b81daf94d4cb30709bc63c1aa2c989556a97c95d1cea878fc1055"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"path": "approval-hash-vectors.json",
|
|
29
|
+
"bytes": 2450,
|
|
30
|
+
"sha256": "eff8769d651e6c9c665498006d739918a1702a485209e6bede1315f83e6bf711"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": "fixtures/invalid/jobs-unknown-field.json",
|
|
34
|
+
"bytes": 195,
|
|
35
|
+
"sha256": "119291e1f011ff538623c1c238591d5ee333088a2a7d7d2dee5e403ecaecf8f1"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"path": "fixtures/invalid/journey-unknown-field.json",
|
|
39
|
+
"bytes": 274,
|
|
40
|
+
"sha256": "823c9b86784dfb6cedafa7690f745ad51693f8fbbde046f44dc408255032c4ae"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"path": "fixtures/valid/jobs.json",
|
|
44
|
+
"bytes": 177,
|
|
45
|
+
"sha256": "f041e58590631c0ea23ecc20fc8a03f606e606331afe6c664eb241341dd4b126"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": "fixtures/valid/journey.json",
|
|
49
|
+
"bytes": 258,
|
|
50
|
+
"sha256": "33a9c9a2fb1e839e4f2bf7155b9da71d7cdbace5029f7542f85e79cd65ee0197"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"path": "fixtures/valid/personas.json",
|
|
54
|
+
"bytes": 90,
|
|
55
|
+
"sha256": "396b6916bed042307ab890855ae2dee661e7a79303befb55e33d3c5698c7f9ff"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"path": "schemas/job.schema.json",
|
|
59
|
+
"bytes": 15411,
|
|
60
|
+
"sha256": "2f4608dc6b58494f9e52935b3f5c7037de7d3768cfb334ab5a1cc550861d5eeb"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"path": "schemas/jobs.schema.json",
|
|
64
|
+
"bytes": 555,
|
|
65
|
+
"sha256": "bcd91a8002c24de12c696c31628719e079ffcf821ca48db2b1013660abf509b0"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"path": "schemas/journey.schema.json",
|
|
69
|
+
"bytes": 362358,
|
|
70
|
+
"sha256": "521e0f150967b10e5cc4547cc1401238478b4e2fe04dfb8febaa8dba27ae7f04"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"path": "schemas/personas.schema.json",
|
|
74
|
+
"bytes": 5708,
|
|
75
|
+
"sha256": "74cb8dc071545458823fd164d444c33f161eee8c3fed85e5b3f8d05cd6430afb"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|