@jevitate/cli 0.23.0 → 0.25.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 (82) hide show
  1. package/contracts/jevitate-catalog/v1/README.md +10 -0
  2. package/contracts/jevitate-catalog/v1/approval-hash-vectors.json +64 -0
  3. package/contracts/jevitate-catalog/v1/fixtures/invalid/jobs-unknown-field.json +12 -0
  4. package/contracts/jevitate-catalog/v1/fixtures/invalid/journey-unknown-field.json +15 -0
  5. package/contracts/jevitate-catalog/v1/fixtures/valid/jobs.json +11 -0
  6. package/contracts/jevitate-catalog/v1/fixtures/valid/journey.json +14 -0
  7. package/contracts/jevitate-catalog/v1/fixtures/valid/personas.json +7 -0
  8. package/contracts/jevitate-catalog/v1/manifest.json +69 -0
  9. package/contracts/jevitate-catalog/v1/schemas/job.schema.json +605 -0
  10. package/contracts/jevitate-catalog/v1/schemas/jobs.schema.json +28 -0
  11. package/contracts/jevitate-catalog/v1/schemas/journey.schema.json +10871 -0
  12. package/contracts/jevitate-catalog/v1/schemas/personas.schema.json +223 -0
  13. package/contracts/jevitate-catalog/v2/README.md +18 -0
  14. package/contracts/jevitate-catalog/v2/approval-hash-vectors.json +75 -0
  15. package/contracts/jevitate-catalog/v2/fixtures/invalid/jobs-unknown-field.json +12 -0
  16. package/contracts/jevitate-catalog/v2/fixtures/invalid/journey-unknown-field.json +15 -0
  17. package/contracts/jevitate-catalog/v2/fixtures/valid/jobs.json +11 -0
  18. package/contracts/jevitate-catalog/v2/fixtures/valid/journey.json +14 -0
  19. package/contracts/jevitate-catalog/v2/fixtures/valid/personas.json +7 -0
  20. package/contracts/jevitate-catalog/v2/manifest.json +78 -0
  21. package/contracts/jevitate-catalog/v2/schemas/job.schema.json +605 -0
  22. package/contracts/jevitate-catalog/v2/schemas/jobs.schema.json +28 -0
  23. package/contracts/jevitate-catalog/v2/schemas/journey.schema.json +10871 -0
  24. package/contracts/jevitate-catalog/v2/schemas/personas.schema.json +223 -0
  25. package/dist/acceptance-audit-approval-script.d.ts +6 -0
  26. package/dist/acceptance-audit-approval-script.js +20 -0
  27. package/dist/acceptance-audit-approval-script.js.map +1 -0
  28. package/dist/acceptance-audit-cli.d.ts +2 -0
  29. package/dist/acceptance-audit-cli.js +34 -0
  30. package/dist/acceptance-audit-cli.js.map +1 -0
  31. package/dist/acceptance-audit-render.d.ts +4 -0
  32. package/dist/acceptance-audit-render.js +12 -0
  33. package/dist/acceptance-audit-render.js.map +1 -0
  34. package/dist/acceptance-audit-schema.d.ts +32 -0
  35. package/dist/acceptance-audit-schema.js +19 -0
  36. package/dist/acceptance-audit-schema.js.map +1 -0
  37. package/dist/acceptance-audit-suite.d.ts +14 -0
  38. package/dist/acceptance-audit-suite.js +34 -0
  39. package/dist/acceptance-audit-suite.js.map +1 -0
  40. package/dist/acceptance-audit.d.ts +16 -0
  41. package/dist/acceptance-audit.js +36 -0
  42. package/dist/acceptance-audit.js.map +1 -0
  43. package/dist/bin.js +1155 -509
  44. package/dist/build-info.generated.js +3 -3
  45. package/dist/catalog-bundle.d.ts +4 -2
  46. package/dist/catalog-bundle.js +8 -6
  47. package/dist/catalog-bundle.js.map +1 -1
  48. package/dist/catalog-contract-identity.d.ts +5 -0
  49. package/dist/catalog-contract-identity.js +7 -0
  50. package/dist/catalog-contract-identity.js.map +1 -0
  51. package/dist/catalog.js +18 -7
  52. package/dist/catalog.js.map +1 -1
  53. package/dist/explore-goal.d.ts +3 -1
  54. package/dist/explore-goal.js +1 -0
  55. package/dist/explore-goal.js.map +1 -1
  56. package/dist/goal-run-flags.js +2 -2
  57. package/dist/goal-run-flags.js.map +1 -1
  58. package/dist/journeeze-hint.d.ts +35 -0
  59. package/dist/journeeze-hint.js +77 -0
  60. package/dist/journeeze-hint.js.map +1 -0
  61. package/dist/journey-cli/review.js +16 -2
  62. package/dist/journey-cli/review.js.map +1 -1
  63. package/dist/journey-cli/verify.js +33 -7
  64. package/dist/journey-cli/verify.js.map +1 -1
  65. package/dist/journey-review.d.ts +3 -0
  66. package/dist/journey-review.js +13 -2
  67. package/dist/journey-review.js.map +1 -1
  68. package/dist/journey-stale-api.js +4 -4
  69. package/dist/journey-stale-api.js.map +1 -1
  70. package/dist/journey-verify.d.ts +23 -0
  71. package/dist/journey-verify.js +34 -0
  72. package/dist/journey-verify.js.map +1 -1
  73. package/dist/mcp-cli-tools.js +2 -1
  74. package/dist/mcp-cli-tools.js.map +1 -1
  75. package/dist/program.js +2 -0
  76. package/dist/program.js.map +1 -1
  77. package/dist/report-cli.js +21 -2
  78. package/dist/report-cli.js.map +1 -1
  79. package/dist/ux-usability/done-adjudication.d.ts +2 -2
  80. package/package.json +14 -11
  81. package/skills/jevitate-promotion-ready/SKILL.md +5 -1
  82. package/skills/jevitate-record/SKILL.md +3 -2
@@ -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,12 @@
1
+ [
2
+ {
3
+ "id": "review-work",
4
+ "trigger": "work is ready",
5
+ "motivation": "review it",
6
+ "outcome": "ship with confidence",
7
+ "personas": [
8
+ "owner"
9
+ ],
10
+ "typo": true
11
+ }
12
+ ]
@@ -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,11 @@
1
+ [
2
+ {
3
+ "id": "review-work",
4
+ "trigger": "work is ready",
5
+ "motivation": "review it",
6
+ "outcome": "ship with confidence",
7
+ "personas": [
8
+ "owner"
9
+ ]
10
+ }
11
+ ]
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1,7 @@
1
+ [
2
+ {
3
+ "id": "owner",
4
+ "description": "Owns the product",
5
+ "role": "owner"
6
+ }
7
+ ]
@@ -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
+ }