@fulmenhq/tsfulmen 0.1.13 → 0.2.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 (165) hide show
  1. package/CHANGELOG.md +73 -512
  2. package/README.md +111 -28
  3. package/config/crucible-ts/agentic/roles/README.md +76 -0
  4. package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
  5. package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
  6. package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
  7. package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
  8. package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
  9. package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
  10. package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
  11. package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
  12. package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
  13. package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
  14. package/config/crucible-ts/branding/ecosystem.yaml +26 -0
  15. package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
  16. package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
  17. package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
  18. package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
  19. package/config/crucible-ts/library/foundry/signals.yaml +21 -0
  20. package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
  21. package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
  22. package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
  23. package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
  24. package/config/crucible-ts/taxonomy/languages.yaml +2 -2
  25. package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
  26. package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
  27. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  28. package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
  29. package/dist/appidentity/index.d.ts +117 -35
  30. package/dist/appidentity/index.js +752 -592
  31. package/dist/appidentity/index.js.map +1 -1
  32. package/dist/config/index.js +118 -6
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/crucible/index.js +118 -6
  35. package/dist/crucible/index.js.map +1 -1
  36. package/dist/errors/index.js +118 -6
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/foundry/index.d.ts +13 -676
  39. package/dist/foundry/index.js +118 -6
  40. package/dist/foundry/index.js.map +1 -1
  41. package/dist/foundry/similarity/index.d.ts +2 -2
  42. package/dist/fulhash/index.d.ts +64 -12
  43. package/dist/fulhash/index.js +292 -53
  44. package/dist/fulhash/index.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +753 -593
  47. package/dist/index.js.map +1 -1
  48. package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
  49. package/dist/pathfinder/index.js +368 -59
  50. package/dist/pathfinder/index.js.map +1 -1
  51. package/dist/reports/license-inventory.csv +302 -0
  52. package/dist/schema/index.js +118 -6
  53. package/dist/schema/index.js.map +1 -1
  54. package/dist/signals/index.d.ts +675 -0
  55. package/dist/signals/index.js +5790 -0
  56. package/dist/signals/index.js.map +1 -0
  57. package/dist/similarity/index.d.ts +2 -0
  58. package/dist/similarity/index.js +136 -0
  59. package/dist/similarity/index.js.map +1 -0
  60. package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
  61. package/dist/telemetry/http/index.js +704 -591
  62. package/dist/telemetry/http/index.js.map +1 -1
  63. package/dist/telemetry/index.js +118 -6
  64. package/dist/telemetry/index.js.map +1 -1
  65. package/dist/telemetry/prometheus/index.d.ts +1 -1
  66. package/dist/telemetry/prometheus/index.js +175 -11
  67. package/dist/telemetry/prometheus/index.js.map +1 -1
  68. package/package.json +15 -6
  69. package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
  70. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
  71. package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
  72. package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
  73. package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
  74. package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
  75. package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
  76. package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
  77. package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
  78. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
  79. package/schemas/crucible-ts/design/README.md +159 -0
  80. package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
  81. package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
  82. package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
  83. package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
  84. package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
  85. package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
  86. package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
  87. package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
  88. package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
  89. package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
  90. package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
  91. package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
  92. package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
  93. package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
  94. package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
  95. package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
  96. package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
  97. package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
  98. package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
  99. package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
  100. package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
  101. package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
  102. package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
  103. package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
  104. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
  105. package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
  106. package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
  107. package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
  108. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
  109. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
  110. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
  111. package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
  112. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
  113. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
  114. package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
  115. package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
  116. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
  117. package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
  118. package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
  119. package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
  120. package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
  121. package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
  122. package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
  123. package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
  124. package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
  125. package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
  126. package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
  127. package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
  128. package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
  129. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
  130. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
  131. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
  132. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
  133. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
  134. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
  135. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
  136. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
  137. package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
  138. package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
  139. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
  140. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
  141. package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
  142. package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
  143. package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
  144. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
  145. package/schemas/crucible-ts/taxonomy/library/fulhash/algorithms/v1.0.0/algorithms.yaml +16 -0
  146. package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
  147. package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
  148. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
  149. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
  150. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
  151. package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
  152. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
  153. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
  154. package/schemas/crucible-ts/upstream/README.md +50 -0
  155. package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
  156. package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
  157. package/schemas/crucible-ts/config/goneat/README.md +0 -60
  158. package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
  159. package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
  160. package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
  161. package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
  162. package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
  163. package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
  164. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
  165. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
@@ -0,0 +1,272 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/tui/v1.0.0/layout.schema.json",
4
+ "title": "TUI Layout",
5
+ "description": "Terminal layout configuration with cell-based dimensions and responsive breakpoints",
6
+ "type": "object",
7
+ "$defs": {
8
+ "cellDimension": {
9
+ "type": "integer",
10
+ "minimum": 0,
11
+ "description": "Dimension in terminal cells (characters/rows)"
12
+ },
13
+ "spacingValue": {
14
+ "type": "object",
15
+ "description": "Spacing value in cells",
16
+ "properties": {
17
+ "cols": {
18
+ "$ref": "#/$defs/cellDimension",
19
+ "description": "Horizontal spacing in columns"
20
+ },
21
+ "rows": {
22
+ "$ref": "#/$defs/cellDimension",
23
+ "description": "Vertical spacing in rows"
24
+ }
25
+ },
26
+ "additionalProperties": false
27
+ },
28
+ "terminalBreakpoint": {
29
+ "type": "object",
30
+ "description": "Terminal size breakpoint",
31
+ "properties": {
32
+ "name": {
33
+ "type": "string",
34
+ "description": "Breakpoint identifier"
35
+ },
36
+ "min_cols": {
37
+ "$ref": "#/$defs/cellDimension",
38
+ "description": "Minimum terminal width in columns"
39
+ },
40
+ "min_rows": {
41
+ "$ref": "#/$defs/cellDimension",
42
+ "description": "Minimum terminal height in rows"
43
+ },
44
+ "tier": {
45
+ "type": "string",
46
+ "enum": [
47
+ "compact",
48
+ "default",
49
+ "comfortable",
50
+ "spacious"
51
+ ],
52
+ "description": "Density tier (references core/spacing-scale)"
53
+ },
54
+ "description": {
55
+ "type": "string",
56
+ "description": "Typical use case for this breakpoint"
57
+ }
58
+ },
59
+ "required": [
60
+ "name",
61
+ "min_cols",
62
+ "tier"
63
+ ]
64
+ },
65
+ "ribbonPosition": {
66
+ "type": "string",
67
+ "enum": [
68
+ "top",
69
+ "bottom",
70
+ "left",
71
+ "right"
72
+ ],
73
+ "description": "Ribbon/chrome position"
74
+ },
75
+ "ribbonDefinition": {
76
+ "type": "object",
77
+ "description": "UI chrome/ribbon area definition",
78
+ "properties": {
79
+ "id": {
80
+ "type": "string",
81
+ "description": "Ribbon identifier"
82
+ },
83
+ "position": {
84
+ "$ref": "#/$defs/ribbonPosition"
85
+ },
86
+ "size": {
87
+ "$ref": "#/$defs/cellDimension",
88
+ "description": "Height (for top/bottom) or width (for left/right)"
89
+ },
90
+ "visible": {
91
+ "type": "boolean",
92
+ "description": "Whether ribbon is visible by default"
93
+ },
94
+ "collapsible": {
95
+ "type": "boolean",
96
+ "description": "Whether ribbon can be collapsed"
97
+ },
98
+ "min_terminal_cols": {
99
+ "$ref": "#/$defs/cellDimension",
100
+ "description": "Minimum terminal width to show this ribbon"
101
+ },
102
+ "min_terminal_rows": {
103
+ "$ref": "#/$defs/cellDimension",
104
+ "description": "Minimum terminal height to show this ribbon"
105
+ }
106
+ },
107
+ "required": [
108
+ "id",
109
+ "position",
110
+ "size"
111
+ ]
112
+ },
113
+ "panelDefinition": {
114
+ "type": "object",
115
+ "description": "Content panel definition",
116
+ "properties": {
117
+ "id": {
118
+ "type": "string",
119
+ "description": "Panel identifier"
120
+ },
121
+ "flex": {
122
+ "type": "number",
123
+ "minimum": 0,
124
+ "description": "Flex grow factor for available space"
125
+ },
126
+ "min_cols": {
127
+ "$ref": "#/$defs/cellDimension",
128
+ "description": "Minimum width in columns"
129
+ },
130
+ "max_cols": {
131
+ "$ref": "#/$defs/cellDimension",
132
+ "description": "Maximum width in columns"
133
+ },
134
+ "min_rows": {
135
+ "$ref": "#/$defs/cellDimension",
136
+ "description": "Minimum height in rows"
137
+ },
138
+ "max_rows": {
139
+ "$ref": "#/$defs/cellDimension",
140
+ "description": "Maximum height in rows"
141
+ },
142
+ "scrollable": {
143
+ "type": "boolean",
144
+ "description": "Whether panel content can scroll"
145
+ }
146
+ },
147
+ "required": [
148
+ "id"
149
+ ]
150
+ },
151
+ "alignmentValue": {
152
+ "type": "string",
153
+ "enum": [
154
+ "start",
155
+ "center",
156
+ "end",
157
+ "stretch"
158
+ ],
159
+ "description": "Alignment value"
160
+ }
161
+ },
162
+ "properties": {
163
+ "$schema": {
164
+ "type": "string",
165
+ "description": "JSON Schema reference"
166
+ },
167
+ "version": {
168
+ "type": "string",
169
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
170
+ "description": "Semantic version of the layout configuration"
171
+ },
172
+ "breakpoints": {
173
+ "type": "array",
174
+ "description": "Terminal size breakpoints (ordered small to large)",
175
+ "items": {
176
+ "$ref": "#/$defs/terminalBreakpoint"
177
+ },
178
+ "minItems": 1
179
+ },
180
+ "spacing": {
181
+ "type": "object",
182
+ "description": "Spacing scale in terminal cells",
183
+ "properties": {
184
+ "none": {
185
+ "$ref": "#/$defs/spacingValue"
186
+ },
187
+ "xs": {
188
+ "$ref": "#/$defs/spacingValue"
189
+ },
190
+ "sm": {
191
+ "$ref": "#/$defs/spacingValue"
192
+ },
193
+ "md": {
194
+ "$ref": "#/$defs/spacingValue"
195
+ },
196
+ "lg": {
197
+ "$ref": "#/$defs/spacingValue"
198
+ },
199
+ "xl": {
200
+ "$ref": "#/$defs/spacingValue"
201
+ }
202
+ },
203
+ "additionalProperties": {
204
+ "$ref": "#/$defs/spacingValue"
205
+ }
206
+ },
207
+ "ribbons": {
208
+ "type": "array",
209
+ "description": "UI chrome areas (status bars, sidebars, etc.)",
210
+ "items": {
211
+ "$ref": "#/$defs/ribbonDefinition"
212
+ }
213
+ },
214
+ "panels": {
215
+ "type": "array",
216
+ "description": "Main content panel definitions",
217
+ "items": {
218
+ "$ref": "#/$defs/panelDefinition"
219
+ }
220
+ },
221
+ "constraints": {
222
+ "type": "object",
223
+ "description": "Layout constraints",
224
+ "properties": {
225
+ "min_content_cols": {
226
+ "$ref": "#/$defs/cellDimension",
227
+ "description": "Minimum usable content width"
228
+ },
229
+ "min_content_rows": {
230
+ "$ref": "#/$defs/cellDimension",
231
+ "description": "Minimum usable content height"
232
+ },
233
+ "max_content_cols": {
234
+ "$ref": "#/$defs/cellDimension",
235
+ "description": "Maximum content width (for readability)"
236
+ },
237
+ "padding": {
238
+ "$ref": "#/$defs/spacingValue",
239
+ "description": "Default content padding"
240
+ },
241
+ "gap": {
242
+ "$ref": "#/$defs/spacingValue",
243
+ "description": "Default gap between elements"
244
+ }
245
+ }
246
+ },
247
+ "responsive_behavior": {
248
+ "type": "object",
249
+ "description": "Behavior at different terminal sizes",
250
+ "properties": {
251
+ "collapse_sidebars_below": {
252
+ "$ref": "#/$defs/cellDimension",
253
+ "description": "Column width below which sidebars collapse"
254
+ },
255
+ "hide_chrome_below": {
256
+ "$ref": "#/$defs/cellDimension",
257
+ "description": "Column width below which chrome is hidden"
258
+ },
259
+ "stack_panels_below": {
260
+ "$ref": "#/$defs/cellDimension",
261
+ "description": "Column width below which panels stack vertically"
262
+ }
263
+ }
264
+ }
265
+ },
266
+ "required": [
267
+ "version",
268
+ "breakpoints",
269
+ "spacing"
270
+ ],
271
+ "additionalProperties": false
272
+ }
@@ -0,0 +1,205 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/tui/v1.0.0/theme.schema.json",
4
+ "title": "TUI Theme",
5
+ "description": "Root composition schema for Terminal UI themes, aggregating color palette, typography, layout, and component patterns",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation"
11
+ },
12
+ "version": {
13
+ "type": "string",
14
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
15
+ "description": "Theme version (SemVer)"
16
+ },
17
+ "schema_version": {
18
+ "type": "string",
19
+ "const": "1.0.0",
20
+ "description": "TUI design system schema version this theme conforms to"
21
+ },
22
+ "metadata": {
23
+ "type": "object",
24
+ "description": "Theme metadata",
25
+ "properties": {
26
+ "name": {
27
+ "type": "string",
28
+ "description": "Theme display name"
29
+ },
30
+ "id": {
31
+ "type": "string",
32
+ "pattern": "^[a-z][a-z0-9-]*$",
33
+ "description": "Theme identifier (kebab-case)"
34
+ },
35
+ "description": {
36
+ "type": "string",
37
+ "description": "Theme description and intended use"
38
+ },
39
+ "author": {
40
+ "type": "string",
41
+ "description": "Theme author or organization"
42
+ },
43
+ "license": {
44
+ "type": "string",
45
+ "description": "Theme license"
46
+ },
47
+ "tags": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Theme tags for categorization"
53
+ },
54
+ "dark_mode": {
55
+ "type": "boolean",
56
+ "description": "Whether this is a dark mode theme"
57
+ },
58
+ "high_contrast": {
59
+ "type": "boolean",
60
+ "description": "Whether this is a high contrast theme"
61
+ }
62
+ },
63
+ "required": [
64
+ "name",
65
+ "id"
66
+ ]
67
+ },
68
+ "requirements": {
69
+ "type": "object",
70
+ "description": "Terminal capability requirements",
71
+ "properties": {
72
+ "min_color_capability": {
73
+ "type": "string",
74
+ "enum": [
75
+ "basic",
76
+ "16",
77
+ "256",
78
+ "truecolor"
79
+ ],
80
+ "description": "Minimum color capability for this theme"
81
+ },
82
+ "min_charset": {
83
+ "type": "string",
84
+ "enum": [
85
+ "ascii",
86
+ "extended-ascii",
87
+ "unicode-basic",
88
+ "unicode-full"
89
+ ],
90
+ "description": "Minimum character set required"
91
+ },
92
+ "nerd_font_recommended": {
93
+ "type": "boolean",
94
+ "description": "Whether Nerd Font is recommended"
95
+ },
96
+ "min_cols": {
97
+ "type": "integer",
98
+ "minimum": 40,
99
+ "description": "Minimum terminal width"
100
+ },
101
+ "min_rows": {
102
+ "type": "integer",
103
+ "minimum": 10,
104
+ "description": "Minimum terminal height"
105
+ }
106
+ }
107
+ },
108
+ "colors": {
109
+ "$ref": "color-palette.schema.json",
110
+ "description": "Color palette configuration"
111
+ },
112
+ "typography": {
113
+ "$ref": "typography.schema.json",
114
+ "description": "Typography configuration"
115
+ },
116
+ "layout": {
117
+ "$ref": "layout.schema.json",
118
+ "description": "Layout configuration"
119
+ },
120
+ "components": {
121
+ "$ref": "component.schema.json",
122
+ "description": "Component pattern configuration"
123
+ },
124
+ "platform_overrides": {
125
+ "type": "object",
126
+ "description": "Platform-specific overrides",
127
+ "properties": {
128
+ "windows_terminal": {
129
+ "type": "object",
130
+ "description": "Windows Terminal specific overrides",
131
+ "additionalProperties": true
132
+ },
133
+ "iterm2": {
134
+ "type": "object",
135
+ "description": "iTerm2 specific overrides",
136
+ "additionalProperties": true
137
+ },
138
+ "ghostty": {
139
+ "type": "object",
140
+ "description": "Ghostty specific overrides",
141
+ "additionalProperties": true
142
+ },
143
+ "apple_terminal": {
144
+ "type": "object",
145
+ "description": "Apple Terminal specific overrides",
146
+ "additionalProperties": true
147
+ },
148
+ "linux_console": {
149
+ "type": "object",
150
+ "description": "Linux console specific overrides",
151
+ "additionalProperties": true
152
+ }
153
+ },
154
+ "additionalProperties": {
155
+ "type": "object",
156
+ "additionalProperties": true
157
+ }
158
+ },
159
+ "accessibility": {
160
+ "type": "object",
161
+ "description": "Accessibility configuration",
162
+ "properties": {
163
+ "wcag_level": {
164
+ "type": "string",
165
+ "enum": [
166
+ "A",
167
+ "AA",
168
+ "AAA"
169
+ ],
170
+ "description": "WCAG conformance target"
171
+ },
172
+ "min_contrast_ratio": {
173
+ "type": "number",
174
+ "minimum": 1,
175
+ "maximum": 21,
176
+ "description": "Minimum contrast ratio for text"
177
+ },
178
+ "focus_visible_required": {
179
+ "type": "boolean",
180
+ "description": "Whether focus indicators must be visible"
181
+ },
182
+ "motion_reduced": {
183
+ "type": "boolean",
184
+ "description": "Whether animations are reduced/disabled"
185
+ },
186
+ "color_blind_safe": {
187
+ "type": "boolean",
188
+ "description": "Whether theme is safe for common color blindness"
189
+ }
190
+ }
191
+ },
192
+ "extensions": {
193
+ "type": "object",
194
+ "description": "Application-specific extensions",
195
+ "additionalProperties": true
196
+ }
197
+ },
198
+ "required": [
199
+ "version",
200
+ "schema_version",
201
+ "metadata",
202
+ "colors"
203
+ ],
204
+ "additionalProperties": false
205
+ }