@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,179 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/core/v1.0.0/semantic-colors.schema.json",
4
+ "title": "Semantic Color Vocabulary",
5
+ "description": "Universal semantic color roles for design systems. Implementation-agnostic vocabulary shared across TUI and web contexts.",
6
+ "type": "object",
7
+ "$defs": {
8
+ "semanticColorRole": {
9
+ "type": "string",
10
+ "enum": [
11
+ "primary",
12
+ "secondary",
13
+ "accent",
14
+ "success",
15
+ "warning",
16
+ "error",
17
+ "info",
18
+ "muted"
19
+ ],
20
+ "description": "Standard semantic color roles"
21
+ },
22
+ "surfaceRole": {
23
+ "type": "string",
24
+ "enum": [
25
+ "background",
26
+ "surface",
27
+ "surface-elevated",
28
+ "surface-sunken",
29
+ "overlay"
30
+ ],
31
+ "description": "Surface/background color roles"
32
+ },
33
+ "textRole": {
34
+ "type": "string",
35
+ "enum": [
36
+ "text-primary",
37
+ "text-secondary",
38
+ "text-muted",
39
+ "text-inverse",
40
+ "text-link",
41
+ "text-on-primary",
42
+ "text-on-secondary",
43
+ "text-on-accent"
44
+ ],
45
+ "description": "Text color roles for different contexts"
46
+ },
47
+ "borderRole": {
48
+ "type": "string",
49
+ "enum": [
50
+ "border-default",
51
+ "border-subtle",
52
+ "border-strong",
53
+ "border-focus",
54
+ "border-error"
55
+ ],
56
+ "description": "Border color roles"
57
+ },
58
+ "interactiveRole": {
59
+ "type": "string",
60
+ "enum": [
61
+ "interactive-default",
62
+ "interactive-hover",
63
+ "interactive-active",
64
+ "interactive-disabled"
65
+ ],
66
+ "description": "Interactive element state colors"
67
+ },
68
+ "contrastRequirement": {
69
+ "type": "object",
70
+ "description": "WCAG contrast ratio requirements",
71
+ "properties": {
72
+ "level": {
73
+ "type": "string",
74
+ "enum": [
75
+ "AA",
76
+ "AAA"
77
+ ],
78
+ "description": "WCAG conformance level"
79
+ },
80
+ "min_ratio": {
81
+ "type": "number",
82
+ "minimum": 1,
83
+ "maximum": 21,
84
+ "description": "Minimum contrast ratio (e.g., 4.5 for AA normal text)"
85
+ },
86
+ "context": {
87
+ "type": "string",
88
+ "enum": [
89
+ "normal-text",
90
+ "large-text",
91
+ "ui-component",
92
+ "graphical"
93
+ ],
94
+ "description": "Context for contrast requirement"
95
+ }
96
+ },
97
+ "required": [
98
+ "level",
99
+ "min_ratio",
100
+ "context"
101
+ ]
102
+ },
103
+ "colorIntent": {
104
+ "type": "object",
105
+ "description": "Semantic intent and accessibility metadata for a color",
106
+ "properties": {
107
+ "role": {
108
+ "type": "string",
109
+ "description": "Semantic role from one of the role enums"
110
+ },
111
+ "description": {
112
+ "type": "string",
113
+ "description": "Human-readable description of when to use this color"
114
+ },
115
+ "pairs_with": {
116
+ "type": "array",
117
+ "items": {
118
+ "type": "string"
119
+ },
120
+ "description": "Recommended color roles to pair with (for contrast)"
121
+ },
122
+ "wcag_contrast": {
123
+ "$ref": "#/$defs/contrastRequirement"
124
+ }
125
+ },
126
+ "required": [
127
+ "role"
128
+ ]
129
+ }
130
+ },
131
+ "properties": {
132
+ "$schema": {
133
+ "type": "string",
134
+ "description": "JSON Schema reference"
135
+ },
136
+ "version": {
137
+ "type": "string",
138
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
139
+ "description": "Semantic version of the color vocabulary"
140
+ },
141
+ "semantic_roles": {
142
+ "type": "array",
143
+ "description": "Defined semantic color roles with metadata",
144
+ "items": {
145
+ "$ref": "#/$defs/colorIntent"
146
+ }
147
+ },
148
+ "surface_roles": {
149
+ "type": "array",
150
+ "description": "Defined surface/background roles",
151
+ "items": {
152
+ "$ref": "#/$defs/colorIntent"
153
+ }
154
+ },
155
+ "text_roles": {
156
+ "type": "array",
157
+ "description": "Defined text color roles",
158
+ "items": {
159
+ "$ref": "#/$defs/colorIntent"
160
+ }
161
+ },
162
+ "border_roles": {
163
+ "type": "array",
164
+ "description": "Defined border color roles",
165
+ "items": {
166
+ "$ref": "#/$defs/colorIntent"
167
+ }
168
+ },
169
+ "extensions": {
170
+ "type": "object",
171
+ "description": "Implementation-specific extensions (TUI, web)",
172
+ "additionalProperties": true
173
+ }
174
+ },
175
+ "required": [
176
+ "version"
177
+ ],
178
+ "additionalProperties": false
179
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/core/v1.0.0/spacing-scale.schema.json",
4
+ "title": "Spacing Scale Vocabulary",
5
+ "description": "Universal spacing and sizing scale for design systems. Implementation-agnostic vocabulary shared across TUI and web contexts.",
6
+ "type": "object",
7
+ "$defs": {
8
+ "spacingToken": {
9
+ "type": "string",
10
+ "enum": [
11
+ "none",
12
+ "3xs",
13
+ "2xs",
14
+ "xs",
15
+ "sm",
16
+ "md",
17
+ "lg",
18
+ "xl",
19
+ "2xl",
20
+ "3xl"
21
+ ],
22
+ "description": "Standard spacing scale tokens"
23
+ },
24
+ "sizeToken": {
25
+ "type": "string",
26
+ "enum": [
27
+ "xs",
28
+ "sm",
29
+ "md",
30
+ "lg",
31
+ "xl",
32
+ "full"
33
+ ],
34
+ "description": "Component size tokens"
35
+ },
36
+ "spacingDefinition": {
37
+ "type": "object",
38
+ "description": "A spacing token definition with semantic meaning",
39
+ "properties": {
40
+ "token": {
41
+ "$ref": "#/$defs/spacingToken"
42
+ },
43
+ "description": {
44
+ "type": "string",
45
+ "description": "When to use this spacing value"
46
+ },
47
+ "use_cases": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Example use cases for this token"
53
+ }
54
+ },
55
+ "required": [
56
+ "token"
57
+ ]
58
+ },
59
+ "responsiveTier": {
60
+ "type": "string",
61
+ "enum": [
62
+ "compact",
63
+ "default",
64
+ "comfortable",
65
+ "spacious"
66
+ ],
67
+ "description": "Responsive density tiers"
68
+ },
69
+ "breakpointDefinition": {
70
+ "type": "object",
71
+ "description": "Abstract breakpoint definition (implementation provides units)",
72
+ "properties": {
73
+ "name": {
74
+ "type": "string",
75
+ "description": "Breakpoint name"
76
+ },
77
+ "tier": {
78
+ "$ref": "#/$defs/responsiveTier"
79
+ },
80
+ "description": {
81
+ "type": "string",
82
+ "description": "When this breakpoint applies"
83
+ }
84
+ },
85
+ "required": [
86
+ "name",
87
+ "tier"
88
+ ]
89
+ }
90
+ },
91
+ "properties": {
92
+ "$schema": {
93
+ "type": "string",
94
+ "description": "JSON Schema reference"
95
+ },
96
+ "version": {
97
+ "type": "string",
98
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
99
+ "description": "Semantic version of the spacing vocabulary"
100
+ },
101
+ "spacing_tokens": {
102
+ "type": "array",
103
+ "description": "Defined spacing tokens with metadata",
104
+ "items": {
105
+ "$ref": "#/$defs/spacingDefinition"
106
+ }
107
+ },
108
+ "size_tokens": {
109
+ "type": "array",
110
+ "description": "Defined size tokens for components",
111
+ "items": {
112
+ "type": "object",
113
+ "properties": {
114
+ "token": {
115
+ "$ref": "#/$defs/sizeToken"
116
+ },
117
+ "description": {
118
+ "type": "string"
119
+ }
120
+ },
121
+ "required": [
122
+ "token"
123
+ ]
124
+ }
125
+ },
126
+ "breakpoints": {
127
+ "type": "array",
128
+ "description": "Responsive breakpoint definitions",
129
+ "items": {
130
+ "$ref": "#/$defs/breakpointDefinition"
131
+ }
132
+ },
133
+ "density_scale": {
134
+ "type": "object",
135
+ "description": "How spacing scales across density tiers",
136
+ "properties": {
137
+ "compact": {
138
+ "type": "number",
139
+ "description": "Multiplier for compact density (e.g., 0.75)"
140
+ },
141
+ "default": {
142
+ "type": "number",
143
+ "description": "Multiplier for default density (1.0)"
144
+ },
145
+ "comfortable": {
146
+ "type": "number",
147
+ "description": "Multiplier for comfortable density (e.g., 1.25)"
148
+ },
149
+ "spacious": {
150
+ "type": "number",
151
+ "description": "Multiplier for spacious density (e.g., 1.5)"
152
+ }
153
+ }
154
+ },
155
+ "extensions": {
156
+ "type": "object",
157
+ "description": "Implementation-specific extensions",
158
+ "additionalProperties": true
159
+ }
160
+ },
161
+ "required": [
162
+ "version"
163
+ ],
164
+ "additionalProperties": false
165
+ }
@@ -0,0 +1,195 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/design/core/v1.0.0/typography-roles.schema.json",
4
+ "title": "Typography Roles Vocabulary",
5
+ "description": "Universal typographic semantic roles for design systems. Implementation-agnostic vocabulary shared across TUI and web contexts.",
6
+ "type": "object",
7
+ "$defs": {
8
+ "textRole": {
9
+ "type": "string",
10
+ "enum": [
11
+ "display",
12
+ "headline",
13
+ "title",
14
+ "subtitle",
15
+ "body",
16
+ "body-emphasis",
17
+ "caption",
18
+ "overline",
19
+ "code",
20
+ "code-block",
21
+ "label",
22
+ "button"
23
+ ],
24
+ "description": "Semantic text roles"
25
+ },
26
+ "fontWeight": {
27
+ "type": "string",
28
+ "enum": [
29
+ "thin",
30
+ "light",
31
+ "regular",
32
+ "medium",
33
+ "semibold",
34
+ "bold",
35
+ "extrabold"
36
+ ],
37
+ "description": "Font weight tokens (implementation maps to numeric values)"
38
+ },
39
+ "textEmphasis": {
40
+ "type": "string",
41
+ "enum": [
42
+ "normal",
43
+ "italic",
44
+ "bold",
45
+ "bold-italic",
46
+ "underline",
47
+ "strikethrough",
48
+ "dim",
49
+ "inverse"
50
+ ],
51
+ "description": "Text emphasis/decoration styles"
52
+ },
53
+ "textAlignment": {
54
+ "type": "string",
55
+ "enum": [
56
+ "start",
57
+ "center",
58
+ "end",
59
+ "justify"
60
+ ],
61
+ "description": "Text alignment (direction-agnostic)"
62
+ },
63
+ "textTransform": {
64
+ "type": "string",
65
+ "enum": [
66
+ "none",
67
+ "uppercase",
68
+ "lowercase",
69
+ "capitalize"
70
+ ],
71
+ "description": "Text transformation"
72
+ },
73
+ "typographyRoleDefinition": {
74
+ "type": "object",
75
+ "description": "A typography role definition with semantic meaning",
76
+ "properties": {
77
+ "role": {
78
+ "$ref": "#/$defs/textRole"
79
+ },
80
+ "description": {
81
+ "type": "string",
82
+ "description": "When to use this typography role"
83
+ },
84
+ "semantic_level": {
85
+ "type": "integer",
86
+ "minimum": 1,
87
+ "maximum": 6,
88
+ "description": "Heading level for accessibility (1-6, optional for non-headings)"
89
+ },
90
+ "default_weight": {
91
+ "$ref": "#/$defs/fontWeight"
92
+ },
93
+ "default_emphasis": {
94
+ "$ref": "#/$defs/textEmphasis"
95
+ },
96
+ "use_cases": {
97
+ "type": "array",
98
+ "items": {
99
+ "type": "string"
100
+ },
101
+ "description": "Example use cases"
102
+ }
103
+ },
104
+ "required": [
105
+ "role"
106
+ ]
107
+ },
108
+ "lineHeightToken": {
109
+ "type": "string",
110
+ "enum": [
111
+ "tight",
112
+ "snug",
113
+ "normal",
114
+ "relaxed",
115
+ "loose"
116
+ ],
117
+ "description": "Line height tokens"
118
+ },
119
+ "letterSpacingToken": {
120
+ "type": "string",
121
+ "enum": [
122
+ "tighter",
123
+ "tight",
124
+ "normal",
125
+ "wide",
126
+ "wider",
127
+ "widest"
128
+ ],
129
+ "description": "Letter spacing tokens"
130
+ }
131
+ },
132
+ "properties": {
133
+ "$schema": {
134
+ "type": "string",
135
+ "description": "JSON Schema reference"
136
+ },
137
+ "version": {
138
+ "type": "string",
139
+ "pattern": "^[vV]?\\d+\\.\\d+\\.\\d+$",
140
+ "description": "Semantic version of the typography vocabulary"
141
+ },
142
+ "text_roles": {
143
+ "type": "array",
144
+ "description": "Defined typography roles with metadata",
145
+ "items": {
146
+ "$ref": "#/$defs/typographyRoleDefinition"
147
+ }
148
+ },
149
+ "font_weights": {
150
+ "type": "array",
151
+ "description": "Available font weights",
152
+ "items": {
153
+ "type": "object",
154
+ "properties": {
155
+ "token": {
156
+ "$ref": "#/$defs/fontWeight"
157
+ },
158
+ "description": {
159
+ "type": "string"
160
+ }
161
+ },
162
+ "required": [
163
+ "token"
164
+ ]
165
+ }
166
+ },
167
+ "line_heights": {
168
+ "type": "array",
169
+ "description": "Line height tokens",
170
+ "items": {
171
+ "type": "object",
172
+ "properties": {
173
+ "token": {
174
+ "$ref": "#/$defs/lineHeightToken"
175
+ },
176
+ "description": {
177
+ "type": "string"
178
+ }
179
+ },
180
+ "required": [
181
+ "token"
182
+ ]
183
+ }
184
+ },
185
+ "extensions": {
186
+ "type": "object",
187
+ "description": "Implementation-specific extensions",
188
+ "additionalProperties": true
189
+ }
190
+ },
191
+ "required": [
192
+ "version"
193
+ ],
194
+ "additionalProperties": false
195
+ }