@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,303 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/tui/v1.0.0/color-palette.schema.json",
4
+ "title": "TUI Color Palette",
5
+ "description": "Terminal color palette with capability-based fallback support (truecolor -> 256 -> 16 -> basic)",
6
+ "type": "object",
7
+ "$defs": {
8
+ "hexColor": {
9
+ "type": "string",
10
+ "pattern": "^#[0-9A-Fa-f]{6}$",
11
+ "description": "6-digit hex color (truecolor capable terminals)"
12
+ },
13
+ "ansi256": {
14
+ "type": "integer",
15
+ "minimum": 0,
16
+ "maximum": 255,
17
+ "description": "ANSI 256-color palette index"
18
+ },
19
+ "ansi16": {
20
+ "type": "string",
21
+ "enum": [
22
+ "black",
23
+ "red",
24
+ "green",
25
+ "yellow",
26
+ "blue",
27
+ "magenta",
28
+ "cyan",
29
+ "white",
30
+ "bright-black",
31
+ "bright-red",
32
+ "bright-green",
33
+ "bright-yellow",
34
+ "bright-blue",
35
+ "bright-magenta",
36
+ "bright-cyan",
37
+ "bright-white"
38
+ ],
39
+ "description": "ANSI 16-color name"
40
+ },
41
+ "basicColor": {
42
+ "type": "string",
43
+ "enum": [
44
+ "default",
45
+ "inverse"
46
+ ],
47
+ "description": "Basic terminal color (no color support)"
48
+ },
49
+ "terminalColor": {
50
+ "type": "object",
51
+ "description": "Terminal color with fallback chain",
52
+ "properties": {
53
+ "truecolor": {
54
+ "$ref": "#/$defs/hexColor",
55
+ "description": "24-bit color for modern terminals"
56
+ },
57
+ "ansi256": {
58
+ "$ref": "#/$defs/ansi256",
59
+ "description": "256-color fallback"
60
+ },
61
+ "ansi16": {
62
+ "$ref": "#/$defs/ansi16",
63
+ "description": "16-color fallback"
64
+ },
65
+ "basic": {
66
+ "$ref": "#/$defs/basicColor",
67
+ "description": "No-color fallback"
68
+ }
69
+ },
70
+ "required": [
71
+ "truecolor",
72
+ "ansi16"
73
+ ],
74
+ "additionalProperties": false
75
+ },
76
+ "semanticColorDefinition": {
77
+ "type": "object",
78
+ "description": "A semantic color with terminal-specific values",
79
+ "properties": {
80
+ "role": {
81
+ "type": "string",
82
+ "description": "Semantic role (references core/semantic-colors)"
83
+ },
84
+ "foreground": {
85
+ "$ref": "#/$defs/terminalColor",
86
+ "description": "Foreground/text color"
87
+ },
88
+ "background": {
89
+ "$ref": "#/$defs/terminalColor",
90
+ "description": "Background color"
91
+ },
92
+ "wcag_contrast_ratio": {
93
+ "type": "number",
94
+ "minimum": 1,
95
+ "maximum": 21,
96
+ "description": "Calculated contrast ratio between fg/bg"
97
+ }
98
+ },
99
+ "required": [
100
+ "role",
101
+ "foreground"
102
+ ]
103
+ },
104
+ "colorCapability": {
105
+ "type": "string",
106
+ "enum": [
107
+ "truecolor",
108
+ "256",
109
+ "16",
110
+ "basic"
111
+ ],
112
+ "description": "Terminal color capability level"
113
+ }
114
+ },
115
+ "properties": {
116
+ "$schema": {
117
+ "type": "string",
118
+ "description": "JSON Schema reference"
119
+ },
120
+ "version": {
121
+ "type": "string",
122
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
123
+ "description": "Semantic version of the color palette"
124
+ },
125
+ "name": {
126
+ "type": "string",
127
+ "description": "Palette name (e.g., 'fulmen-dark', 'high-contrast')"
128
+ },
129
+ "description": {
130
+ "type": "string",
131
+ "description": "Palette description and intended use"
132
+ },
133
+ "min_capability": {
134
+ "$ref": "#/$defs/colorCapability",
135
+ "description": "Minimum terminal capability required for this palette"
136
+ },
137
+ "semantic_colors": {
138
+ "type": "object",
139
+ "description": "Semantic color definitions",
140
+ "properties": {
141
+ "primary": {
142
+ "$ref": "#/$defs/semanticColorDefinition"
143
+ },
144
+ "secondary": {
145
+ "$ref": "#/$defs/semanticColorDefinition"
146
+ },
147
+ "accent": {
148
+ "$ref": "#/$defs/semanticColorDefinition"
149
+ },
150
+ "success": {
151
+ "$ref": "#/$defs/semanticColorDefinition"
152
+ },
153
+ "warning": {
154
+ "$ref": "#/$defs/semanticColorDefinition"
155
+ },
156
+ "error": {
157
+ "$ref": "#/$defs/semanticColorDefinition"
158
+ },
159
+ "info": {
160
+ "$ref": "#/$defs/semanticColorDefinition"
161
+ },
162
+ "muted": {
163
+ "$ref": "#/$defs/semanticColorDefinition"
164
+ }
165
+ },
166
+ "additionalProperties": {
167
+ "$ref": "#/$defs/semanticColorDefinition"
168
+ }
169
+ },
170
+ "surface_colors": {
171
+ "type": "object",
172
+ "description": "Surface/background color definitions",
173
+ "properties": {
174
+ "background": {
175
+ "$ref": "#/$defs/terminalColor"
176
+ },
177
+ "surface": {
178
+ "$ref": "#/$defs/terminalColor"
179
+ },
180
+ "surface_elevated": {
181
+ "$ref": "#/$defs/terminalColor"
182
+ },
183
+ "surface_sunken": {
184
+ "$ref": "#/$defs/terminalColor"
185
+ },
186
+ "overlay": {
187
+ "$ref": "#/$defs/terminalColor"
188
+ }
189
+ },
190
+ "additionalProperties": {
191
+ "$ref": "#/$defs/terminalColor"
192
+ }
193
+ },
194
+ "text_colors": {
195
+ "type": "object",
196
+ "description": "Text color definitions",
197
+ "properties": {
198
+ "primary": {
199
+ "$ref": "#/$defs/terminalColor"
200
+ },
201
+ "secondary": {
202
+ "$ref": "#/$defs/terminalColor"
203
+ },
204
+ "muted": {
205
+ "$ref": "#/$defs/terminalColor"
206
+ },
207
+ "inverse": {
208
+ "$ref": "#/$defs/terminalColor"
209
+ },
210
+ "link": {
211
+ "$ref": "#/$defs/terminalColor"
212
+ }
213
+ },
214
+ "additionalProperties": {
215
+ "$ref": "#/$defs/terminalColor"
216
+ }
217
+ },
218
+ "border_colors": {
219
+ "type": "object",
220
+ "description": "Border color definitions",
221
+ "properties": {
222
+ "default": {
223
+ "$ref": "#/$defs/terminalColor"
224
+ },
225
+ "subtle": {
226
+ "$ref": "#/$defs/terminalColor"
227
+ },
228
+ "strong": {
229
+ "$ref": "#/$defs/terminalColor"
230
+ },
231
+ "focus": {
232
+ "$ref": "#/$defs/terminalColor"
233
+ }
234
+ },
235
+ "additionalProperties": {
236
+ "$ref": "#/$defs/terminalColor"
237
+ }
238
+ },
239
+ "ansi_overrides": {
240
+ "type": "object",
241
+ "description": "Optional overrides for standard ANSI colors (for themed terminals)",
242
+ "properties": {
243
+ "black": {
244
+ "$ref": "#/$defs/hexColor"
245
+ },
246
+ "red": {
247
+ "$ref": "#/$defs/hexColor"
248
+ },
249
+ "green": {
250
+ "$ref": "#/$defs/hexColor"
251
+ },
252
+ "yellow": {
253
+ "$ref": "#/$defs/hexColor"
254
+ },
255
+ "blue": {
256
+ "$ref": "#/$defs/hexColor"
257
+ },
258
+ "magenta": {
259
+ "$ref": "#/$defs/hexColor"
260
+ },
261
+ "cyan": {
262
+ "$ref": "#/$defs/hexColor"
263
+ },
264
+ "white": {
265
+ "$ref": "#/$defs/hexColor"
266
+ },
267
+ "bright_black": {
268
+ "$ref": "#/$defs/hexColor"
269
+ },
270
+ "bright_red": {
271
+ "$ref": "#/$defs/hexColor"
272
+ },
273
+ "bright_green": {
274
+ "$ref": "#/$defs/hexColor"
275
+ },
276
+ "bright_yellow": {
277
+ "$ref": "#/$defs/hexColor"
278
+ },
279
+ "bright_blue": {
280
+ "$ref": "#/$defs/hexColor"
281
+ },
282
+ "bright_magenta": {
283
+ "$ref": "#/$defs/hexColor"
284
+ },
285
+ "bright_cyan": {
286
+ "$ref": "#/$defs/hexColor"
287
+ },
288
+ "bright_white": {
289
+ "$ref": "#/$defs/hexColor"
290
+ }
291
+ },
292
+ "additionalProperties": false
293
+ }
294
+ },
295
+ "required": [
296
+ "version",
297
+ "name",
298
+ "semantic_colors",
299
+ "surface_colors",
300
+ "text_colors"
301
+ ],
302
+ "additionalProperties": false
303
+ }
@@ -0,0 +1,374 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/tui/v1.0.0/component.schema.json",
4
+ "title": "TUI Component Patterns",
5
+ "description": "Terminal UI component/widget patterns with state styling and extensibility",
6
+ "type": "object",
7
+ "$defs": {
8
+ "componentState": {
9
+ "type": "string",
10
+ "enum": [
11
+ "default",
12
+ "hover",
13
+ "focus",
14
+ "active",
15
+ "disabled",
16
+ "selected",
17
+ "error",
18
+ "success",
19
+ "loading"
20
+ ],
21
+ "description": "Component state (references core/component-states)"
22
+ },
23
+ "stateStyle": {
24
+ "type": "object",
25
+ "description": "Styling for a component state",
26
+ "properties": {
27
+ "foreground": {
28
+ "type": "string",
29
+ "description": "Foreground color reference (semantic or literal)"
30
+ },
31
+ "background": {
32
+ "type": "string",
33
+ "description": "Background color reference"
34
+ },
35
+ "border": {
36
+ "type": "string",
37
+ "description": "Border color reference"
38
+ },
39
+ "emphasis": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string",
43
+ "enum": [
44
+ "bold",
45
+ "dim",
46
+ "italic",
47
+ "underline",
48
+ "inverse",
49
+ "strikethrough"
50
+ ]
51
+ },
52
+ "description": "Text emphasis attributes"
53
+ },
54
+ "prefix": {
55
+ "type": "string",
56
+ "description": "State indicator prefix"
57
+ },
58
+ "suffix": {
59
+ "type": "string",
60
+ "description": "State indicator suffix"
61
+ }
62
+ }
63
+ },
64
+ "componentDefinition": {
65
+ "type": "object",
66
+ "description": "A component type definition",
67
+ "properties": {
68
+ "id": {
69
+ "type": "string",
70
+ "pattern": "^[a-z][a-z0-9-]*$",
71
+ "description": "Component type identifier"
72
+ },
73
+ "description": {
74
+ "type": "string",
75
+ "description": "Component purpose and usage"
76
+ },
77
+ "states": {
78
+ "type": "object",
79
+ "description": "Styling for each state",
80
+ "additionalProperties": {
81
+ "$ref": "#/$defs/stateStyle"
82
+ }
83
+ },
84
+ "variants": {
85
+ "type": "object",
86
+ "description": "Component variants (e.g., size, intent)",
87
+ "additionalProperties": {
88
+ "type": "object",
89
+ "properties": {
90
+ "description": {
91
+ "type": "string"
92
+ },
93
+ "states": {
94
+ "type": "object",
95
+ "additionalProperties": {
96
+ "$ref": "#/$defs/stateStyle"
97
+ }
98
+ }
99
+ }
100
+ }
101
+ },
102
+ "anatomy": {
103
+ "type": "object",
104
+ "description": "Component parts/slots",
105
+ "additionalProperties": {
106
+ "type": "object",
107
+ "properties": {
108
+ "description": {
109
+ "type": "string"
110
+ },
111
+ "required": {
112
+ "type": "boolean"
113
+ }
114
+ }
115
+ }
116
+ }
117
+ },
118
+ "required": [
119
+ "id",
120
+ "states"
121
+ ]
122
+ },
123
+ "buttonComponent": {
124
+ "allOf": [
125
+ {
126
+ "$ref": "#/$defs/componentDefinition"
127
+ },
128
+ {
129
+ "type": "object",
130
+ "properties": {
131
+ "min_width": {
132
+ "type": "integer",
133
+ "description": "Minimum button width in columns"
134
+ },
135
+ "padding_horizontal": {
136
+ "type": "integer",
137
+ "description": "Horizontal padding in columns"
138
+ }
139
+ }
140
+ }
141
+ ]
142
+ },
143
+ "inputComponent": {
144
+ "allOf": [
145
+ {
146
+ "$ref": "#/$defs/componentDefinition"
147
+ },
148
+ {
149
+ "type": "object",
150
+ "properties": {
151
+ "cursor_char": {
152
+ "type": "string",
153
+ "maxLength": 1,
154
+ "description": "Cursor character"
155
+ },
156
+ "placeholder_style": {
157
+ "$ref": "#/$defs/stateStyle"
158
+ },
159
+ "selection_style": {
160
+ "$ref": "#/$defs/stateStyle"
161
+ }
162
+ }
163
+ }
164
+ ]
165
+ },
166
+ "listComponent": {
167
+ "allOf": [
168
+ {
169
+ "$ref": "#/$defs/componentDefinition"
170
+ },
171
+ {
172
+ "type": "object",
173
+ "properties": {
174
+ "item_prefix": {
175
+ "type": "string",
176
+ "description": "Prefix for list items"
177
+ },
178
+ "selected_prefix": {
179
+ "type": "string",
180
+ "description": "Prefix for selected item"
181
+ },
182
+ "scrollbar": {
183
+ "type": "object",
184
+ "properties": {
185
+ "track_char": {
186
+ "type": "string",
187
+ "maxLength": 1
188
+ },
189
+ "thumb_char": {
190
+ "type": "string",
191
+ "maxLength": 1
192
+ },
193
+ "position": {
194
+ "type": "string",
195
+ "enum": [
196
+ "left",
197
+ "right"
198
+ ]
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ ]
205
+ },
206
+ "tableComponent": {
207
+ "allOf": [
208
+ {
209
+ "$ref": "#/$defs/componentDefinition"
210
+ },
211
+ {
212
+ "type": "object",
213
+ "properties": {
214
+ "header_style": {
215
+ "$ref": "#/$defs/stateStyle"
216
+ },
217
+ "row_alternate": {
218
+ "type": "boolean",
219
+ "description": "Alternate row styling"
220
+ },
221
+ "row_alternate_style": {
222
+ "$ref": "#/$defs/stateStyle"
223
+ },
224
+ "cell_padding": {
225
+ "type": "integer",
226
+ "description": "Cell padding in columns"
227
+ },
228
+ "border_style": {
229
+ "type": "string",
230
+ "enum": [
231
+ "none",
232
+ "ascii",
233
+ "single",
234
+ "double",
235
+ "rounded"
236
+ ],
237
+ "description": "Table border style"
238
+ }
239
+ }
240
+ }
241
+ ]
242
+ }
243
+ },
244
+ "properties": {
245
+ "$schema": {
246
+ "type": "string",
247
+ "description": "JSON Schema reference"
248
+ },
249
+ "version": {
250
+ "type": "string",
251
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
252
+ "description": "Semantic version of the component patterns"
253
+ },
254
+ "components": {
255
+ "type": "object",
256
+ "description": "Component definitions by type",
257
+ "properties": {
258
+ "button": {
259
+ "$ref": "#/$defs/buttonComponent"
260
+ },
261
+ "input": {
262
+ "$ref": "#/$defs/inputComponent"
263
+ },
264
+ "select": {
265
+ "$ref": "#/$defs/inputComponent"
266
+ },
267
+ "checkbox": {
268
+ "$ref": "#/$defs/componentDefinition"
269
+ },
270
+ "radio": {
271
+ "$ref": "#/$defs/componentDefinition"
272
+ },
273
+ "toggle": {
274
+ "$ref": "#/$defs/componentDefinition"
275
+ },
276
+ "list": {
277
+ "$ref": "#/$defs/listComponent"
278
+ },
279
+ "table": {
280
+ "$ref": "#/$defs/tableComponent"
281
+ },
282
+ "tabs": {
283
+ "$ref": "#/$defs/componentDefinition"
284
+ },
285
+ "modal": {
286
+ "$ref": "#/$defs/componentDefinition"
287
+ },
288
+ "toast": {
289
+ "$ref": "#/$defs/componentDefinition"
290
+ },
291
+ "progress": {
292
+ "$ref": "#/$defs/componentDefinition"
293
+ },
294
+ "spinner": {
295
+ "$ref": "#/$defs/componentDefinition"
296
+ },
297
+ "tooltip": {
298
+ "$ref": "#/$defs/componentDefinition"
299
+ },
300
+ "menu": {
301
+ "$ref": "#/$defs/listComponent"
302
+ },
303
+ "breadcrumb": {
304
+ "$ref": "#/$defs/componentDefinition"
305
+ },
306
+ "panel": {
307
+ "$ref": "#/$defs/componentDefinition"
308
+ },
309
+ "card": {
310
+ "$ref": "#/$defs/componentDefinition"
311
+ }
312
+ },
313
+ "additionalProperties": {
314
+ "$ref": "#/$defs/componentDefinition"
315
+ }
316
+ },
317
+ "focus_ring": {
318
+ "type": "object",
319
+ "description": "Focus indicator styling",
320
+ "properties": {
321
+ "style": {
322
+ "type": "string",
323
+ "enum": [
324
+ "outline",
325
+ "background",
326
+ "underline",
327
+ "bracket"
328
+ ],
329
+ "description": "Focus indicator style"
330
+ },
331
+ "color": {
332
+ "type": "string",
333
+ "description": "Focus ring color reference"
334
+ },
335
+ "char_left": {
336
+ "type": "string",
337
+ "maxLength": 1,
338
+ "description": "Left bracket character (for bracket style)"
339
+ },
340
+ "char_right": {
341
+ "type": "string",
342
+ "maxLength": 1,
343
+ "description": "Right bracket character (for bracket style)"
344
+ }
345
+ }
346
+ },
347
+ "icons": {
348
+ "type": "object",
349
+ "description": "Component icon definitions",
350
+ "additionalProperties": {
351
+ "type": "object",
352
+ "properties": {
353
+ "nerd_font": {
354
+ "type": "string"
355
+ },
356
+ "unicode": {
357
+ "type": "string"
358
+ },
359
+ "ascii": {
360
+ "type": "string"
361
+ }
362
+ },
363
+ "required": [
364
+ "ascii"
365
+ ]
366
+ }
367
+ }
368
+ },
369
+ "required": [
370
+ "version",
371
+ "components"
372
+ ],
373
+ "additionalProperties": true
374
+ }