@xemahq/ui-kernel 0.1.6 → 0.1.8

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 (197) hide show
  1. package/dist/lib/biome-host/agent-validation.d.ts +22 -0
  2. package/dist/lib/biome-host/agent-validation.d.ts.map +1 -0
  3. package/dist/lib/biome-host/agent-validation.js +127 -0
  4. package/dist/lib/biome-host/agent-validation.js.map +1 -0
  5. package/dist/lib/biome-host/create-biome-orval-config.d.ts +14 -0
  6. package/dist/lib/biome-host/create-biome-orval-config.d.ts.map +1 -0
  7. package/dist/lib/biome-host/create-biome-orval-config.js +22 -0
  8. package/dist/lib/biome-host/create-biome-orval-config.js.map +1 -0
  9. package/dist/lib/biome-host/frontend-biome.d.ts +3 -1
  10. package/dist/lib/biome-host/frontend-biome.d.ts.map +1 -1
  11. package/dist/lib/biome-host/host-bridge.d.ts +2 -0
  12. package/dist/lib/biome-host/host-bridge.d.ts.map +1 -1
  13. package/dist/lib/biome-host/host-bridge.js.map +1 -1
  14. package/dist/lib/biome-host/host-sources.d.ts +2 -0
  15. package/dist/lib/biome-host/host-sources.d.ts.map +1 -1
  16. package/dist/lib/biome-host/index.d.ts +2 -1
  17. package/dist/lib/biome-host/index.d.ts.map +1 -1
  18. package/dist/lib/biome-host/index.js +2 -1
  19. package/dist/lib/biome-host/index.js.map +1 -1
  20. package/dist/registry/index.d.ts +1 -1
  21. package/dist/registry/index.d.ts.map +1 -1
  22. package/dist/registry/index.js +1 -1
  23. package/dist/registry/index.js.map +1 -1
  24. package/dist/registry/lib/agent-validation-host.d.ts +3 -0
  25. package/dist/registry/lib/agent-validation-host.d.ts.map +1 -0
  26. package/dist/registry/lib/agent-validation-host.js +10 -0
  27. package/dist/registry/lib/agent-validation-host.js.map +1 -0
  28. package/dist/session-kit/approvals/ApprovalButton.d.ts +14 -0
  29. package/dist/session-kit/approvals/ApprovalButton.d.ts.map +1 -0
  30. package/dist/session-kit/approvals/ApprovalButton.js +45 -0
  31. package/dist/session-kit/approvals/ApprovalButton.js.map +1 -0
  32. package/dist/session-kit/approvals/ApprovalCard.d.ts +12 -0
  33. package/dist/session-kit/approvals/ApprovalCard.d.ts.map +1 -0
  34. package/dist/session-kit/approvals/ApprovalCard.js +117 -0
  35. package/dist/session-kit/approvals/ApprovalCard.js.map +1 -0
  36. package/dist/session-kit/approvals/ApprovalsCenter.d.ts +11 -0
  37. package/dist/session-kit/approvals/ApprovalsCenter.d.ts.map +1 -0
  38. package/dist/session-kit/approvals/ApprovalsCenter.js +127 -0
  39. package/dist/session-kit/approvals/ApprovalsCenter.js.map +1 -0
  40. package/dist/session-kit/approvals/CapabilityApprovalStickyBar.d.ts +12 -0
  41. package/dist/session-kit/approvals/CapabilityApprovalStickyBar.d.ts.map +1 -0
  42. package/dist/session-kit/approvals/CapabilityApprovalStickyBar.js +36 -0
  43. package/dist/session-kit/approvals/CapabilityApprovalStickyBar.js.map +1 -0
  44. package/dist/session-kit/approvals/Obligation.d.ts +15 -0
  45. package/dist/session-kit/approvals/Obligation.d.ts.map +1 -0
  46. package/dist/session-kit/approvals/Obligation.js +42 -0
  47. package/dist/session-kit/approvals/Obligation.js.map +1 -0
  48. package/dist/session-kit/approvals/ScopedBody.d.ts +9 -0
  49. package/dist/session-kit/approvals/ScopedBody.d.ts.map +1 -0
  50. package/dist/session-kit/approvals/ScopedBody.js +145 -0
  51. package/dist/session-kit/approvals/ScopedBody.js.map +1 -0
  52. package/dist/session-kit/approvals/approval-icons.d.ts +15 -0
  53. package/dist/session-kit/approvals/approval-icons.d.ts.map +1 -0
  54. package/dist/session-kit/approvals/approval-icons.js +3 -0
  55. package/dist/session-kit/approvals/approval-icons.js.map +1 -0
  56. package/dist/session-kit/approvals/approval-model.d.ts +83 -0
  57. package/dist/session-kit/approvals/approval-model.d.ts.map +1 -0
  58. package/dist/session-kit/approvals/approval-model.js +25 -0
  59. package/dist/session-kit/approvals/approval-model.js.map +1 -0
  60. package/dist/session-kit/approvals/index.d.ts +12 -0
  61. package/dist/session-kit/approvals/index.d.ts.map +1 -0
  62. package/dist/session-kit/approvals/index.js +28 -0
  63. package/dist/session-kit/approvals/index.js.map +1 -0
  64. package/dist/session-kit/approvals/obligation-display.d.ts +17 -0
  65. package/dist/session-kit/approvals/obligation-display.d.ts.map +1 -0
  66. package/dist/session-kit/approvals/obligation-display.js +58 -0
  67. package/dist/session-kit/approvals/obligation-display.js.map +1 -0
  68. package/dist/session-kit/approvals/risk-accent.d.ts +8 -0
  69. package/dist/session-kit/approvals/risk-accent.d.ts.map +1 -0
  70. package/dist/session-kit/approvals/risk-accent.js +28 -0
  71. package/dist/session-kit/approvals/risk-accent.js.map +1 -0
  72. package/dist/session-kit/approvals/scope-icons.d.ts +12 -0
  73. package/dist/session-kit/approvals/scope-icons.d.ts.map +1 -0
  74. package/dist/session-kit/approvals/scope-icons.js +14 -0
  75. package/dist/session-kit/approvals/scope-icons.js.map +1 -0
  76. package/dist/session-kit/combobox/Combobox.d.ts +46 -0
  77. package/dist/session-kit/combobox/Combobox.d.ts.map +1 -0
  78. package/dist/session-kit/combobox/Combobox.js +113 -0
  79. package/dist/session-kit/combobox/Combobox.js.map +1 -0
  80. package/dist/session-kit/combobox/use-click-outside.d.ts +3 -0
  81. package/dist/session-kit/combobox/use-click-outside.d.ts.map +1 -0
  82. package/dist/session-kit/combobox/use-click-outside.js +18 -0
  83. package/dist/session-kit/combobox/use-click-outside.js.map +1 -0
  84. package/dist/session-kit/display/ContextHeader.d.ts +27 -0
  85. package/dist/session-kit/display/ContextHeader.d.ts.map +1 -0
  86. package/dist/session-kit/display/ContextHeader.js +47 -0
  87. package/dist/session-kit/display/ContextHeader.js.map +1 -0
  88. package/dist/session-kit/display/FileDiffCard.d.ts +18 -0
  89. package/dist/session-kit/display/FileDiffCard.d.ts.map +1 -0
  90. package/dist/session-kit/display/FileDiffCard.js +58 -0
  91. package/dist/session-kit/display/FileDiffCard.js.map +1 -0
  92. package/dist/session-kit/display/MD.d.ts +7 -0
  93. package/dist/session-kit/display/MD.d.ts.map +1 -0
  94. package/dist/session-kit/display/MD.js +89 -0
  95. package/dist/session-kit/display/MD.js.map +1 -0
  96. package/dist/session-kit/display/MessageTurn.d.ts +21 -0
  97. package/dist/session-kit/display/MessageTurn.d.ts.map +1 -0
  98. package/dist/session-kit/display/MessageTurn.js +62 -0
  99. package/dist/session-kit/display/MessageTurn.js.map +1 -0
  100. package/dist/session-kit/display/ThinkingPanel.d.ts +12 -0
  101. package/dist/session-kit/display/ThinkingPanel.d.ts.map +1 -0
  102. package/dist/session-kit/display/ThinkingPanel.js +30 -0
  103. package/dist/session-kit/display/ThinkingPanel.js.map +1 -0
  104. package/dist/session-kit/display/TodoChecklist.d.ts +17 -0
  105. package/dist/session-kit/display/TodoChecklist.d.ts.map +1 -0
  106. package/dist/session-kit/display/TodoChecklist.js +50 -0
  107. package/dist/session-kit/display/TodoChecklist.js.map +1 -0
  108. package/dist/session-kit/display/TokenMeter.d.ts +15 -0
  109. package/dist/session-kit/display/TokenMeter.d.ts.map +1 -0
  110. package/dist/session-kit/display/TokenMeter.js +35 -0
  111. package/dist/session-kit/display/TokenMeter.js.map +1 -0
  112. package/dist/session-kit/display/ToolStrip.d.ts +31 -0
  113. package/dist/session-kit/display/ToolStrip.d.ts.map +1 -0
  114. package/dist/session-kit/display/ToolStrip.js +99 -0
  115. package/dist/session-kit/display/ToolStrip.js.map +1 -0
  116. package/dist/session-kit/display/TypingDots.d.ts +3 -0
  117. package/dist/session-kit/display/TypingDots.d.ts.map +1 -0
  118. package/dist/session-kit/display/TypingDots.js +14 -0
  119. package/dist/session-kit/display/TypingDots.js.map +1 -0
  120. package/dist/session-kit/index.d.ts +21 -0
  121. package/dist/session-kit/index.d.ts.map +1 -0
  122. package/dist/session-kit/index.js +37 -0
  123. package/dist/session-kit/index.js.map +1 -0
  124. package/dist/session-kit/lib/enums.d.ts +34 -0
  125. package/dist/session-kit/lib/enums.d.ts.map +1 -0
  126. package/dist/session-kit/lib/enums.js +44 -0
  127. package/dist/session-kit/lib/enums.js.map +1 -0
  128. package/dist/session-kit/lib/portal-accent.d.ts +3 -0
  129. package/dist/session-kit/lib/portal-accent.d.ts.map +1 -0
  130. package/dist/session-kit/lib/portal-accent.js +9 -0
  131. package/dist/session-kit/lib/portal-accent.js.map +1 -0
  132. package/dist/session-kit/lib/status-dot.d.ts +10 -0
  133. package/dist/session-kit/lib/status-dot.d.ts.map +1 -0
  134. package/dist/session-kit/lib/status-dot.js +43 -0
  135. package/dist/session-kit/lib/status-dot.js.map +1 -0
  136. package/dist/session-kit/primitives/Avatar.d.ts +10 -0
  137. package/dist/session-kit/primitives/Avatar.d.ts.map +1 -0
  138. package/dist/session-kit/primitives/Avatar.js +21 -0
  139. package/dist/session-kit/primitives/Avatar.js.map +1 -0
  140. package/dist/session-kit/primitives/PortalGlyph.d.ts +12 -0
  141. package/dist/session-kit/primitives/PortalGlyph.d.ts.map +1 -0
  142. package/dist/session-kit/primitives/PortalGlyph.js +21 -0
  143. package/dist/session-kit/primitives/PortalGlyph.js.map +1 -0
  144. package/dist/session-kit/primitives/RiskPill.d.ts +12 -0
  145. package/dist/session-kit/primitives/RiskPill.d.ts.map +1 -0
  146. package/dist/session-kit/primitives/RiskPill.js +53 -0
  147. package/dist/session-kit/primitives/RiskPill.js.map +1 -0
  148. package/dist/session-kit/primitives/ScopeDot.d.ts +9 -0
  149. package/dist/session-kit/primitives/ScopeDot.d.ts.map +1 -0
  150. package/dist/session-kit/primitives/ScopeDot.js +23 -0
  151. package/dist/session-kit/primitives/ScopeDot.js.map +1 -0
  152. package/dist/session-kit/primitives/Segmented.d.ts +16 -0
  153. package/dist/session-kit/primitives/Segmented.d.ts.map +1 -0
  154. package/dist/session-kit/primitives/Segmented.js +31 -0
  155. package/dist/session-kit/primitives/Segmented.js.map +1 -0
  156. package/package.json +2 -2
  157. package/src/lib/biome-host/create-biome-orval-config.ts +76 -0
  158. package/src/lib/biome-host/frontend-biome.ts +22 -2
  159. package/src/lib/biome-host/host-bridge.ts +22 -0
  160. package/src/lib/biome-host/host-sources.ts +13 -0
  161. package/src/lib/biome-host/index.ts +2 -1
  162. package/src/registry/index.ts +1 -1
  163. package/src/registry/lib/extension-points.ts +1 -1
  164. package/src/session-kit/approvals/ApprovalButton.tsx +89 -0
  165. package/src/session-kit/approvals/ApprovalCard.tsx +336 -0
  166. package/src/session-kit/approvals/ApprovalsCenter.tsx +327 -0
  167. package/src/session-kit/approvals/CapabilityApprovalStickyBar.tsx +118 -0
  168. package/src/session-kit/approvals/Obligation.tsx +111 -0
  169. package/src/session-kit/approvals/ScopedBody.tsx +392 -0
  170. package/src/session-kit/approvals/approval-icons.ts +31 -0
  171. package/src/session-kit/approvals/approval-model.ts +205 -0
  172. package/src/session-kit/approvals/index.ts +22 -0
  173. package/src/session-kit/approvals/obligation-display.ts +100 -0
  174. package/src/session-kit/approvals/risk-accent.ts +47 -0
  175. package/src/session-kit/approvals/scope-icons.ts +19 -0
  176. package/src/session-kit/combobox/Combobox.tsx +327 -0
  177. package/src/session-kit/combobox/use-click-outside.ts +21 -0
  178. package/src/session-kit/display/ContextHeader.tsx +148 -0
  179. package/src/session-kit/display/FileDiffCard.tsx +140 -0
  180. package/src/session-kit/display/MD.tsx +153 -0
  181. package/src/session-kit/display/MessageTurn.tsx +157 -0
  182. package/src/session-kit/display/ThinkingPanel.tsx +78 -0
  183. package/src/session-kit/display/TodoChecklist.tsx +120 -0
  184. package/src/session-kit/display/TokenMeter.tsx +89 -0
  185. package/src/session-kit/display/ToolStrip.tsx +278 -0
  186. package/src/session-kit/display/TypingDots.tsx +24 -0
  187. package/src/session-kit/index.ts +44 -0
  188. package/src/session-kit/lib/enums.ts +66 -0
  189. package/src/session-kit/lib/portal-accent.ts +30 -0
  190. package/src/session-kit/lib/status-dot.ts +68 -0
  191. package/src/session-kit/primitives/Avatar.tsx +44 -0
  192. package/src/session-kit/primitives/PortalGlyph.tsx +51 -0
  193. package/src/session-kit/primitives/RiskPill.tsx +95 -0
  194. package/src/session-kit/primitives/ScopeDot.tsx +47 -0
  195. package/src/session-kit/primitives/Segmented.tsx +71 -0
  196. /package/src/lib/biome-host/{composition-validation.ts → agent-validation.ts} +0 -0
  197. /package/src/registry/lib/{composition-validation-host.ts → agent-validation-host.ts} +0 -0
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Capability risk-tier pill. Reuses the kernel `CapabilityRiskTier`
3
+ * enum (low / medium / high / critical) — it does NOT define a parallel
4
+ * string union. Critical renders an optional caller-supplied alert icon
5
+ * (the kit carries no icon dependency, matching the rest of ui-kernel).
6
+ *
7
+ * Risk → colour (HANDOFF §6):
8
+ * low → ink / muted
9
+ * medium → --info
10
+ * high → --warning
11
+ * critical → --destructive (always explicit)
12
+ */
13
+ import { CapabilityRiskTier } from '@xemahq/kernel-contracts/capability';
14
+
15
+ import type { CSSProperties, ReactElement, ReactNode } from 'react';
16
+
17
+ export { CapabilityRiskTier };
18
+
19
+ interface RiskStyle {
20
+ readonly label: string;
21
+ readonly fg: string;
22
+ readonly bg: string;
23
+ readonly bd: string;
24
+ }
25
+
26
+ const DANGER = 'var(--destructive, var(--danger))';
27
+
28
+ const RISK: Record<CapabilityRiskTier, RiskStyle> = {
29
+ [CapabilityRiskTier.Low]: {
30
+ label: 'Low',
31
+ fg: 'hsl(var(--ink-3))',
32
+ bg: 'hsl(var(--muted))',
33
+ bd: 'hsl(var(--rule))',
34
+ },
35
+ [CapabilityRiskTier.Medium]: {
36
+ label: 'Medium',
37
+ fg: 'hsl(var(--info))',
38
+ bg: 'hsl(var(--info) / 0.09)',
39
+ bd: 'hsl(var(--info) / 0.28)',
40
+ },
41
+ [CapabilityRiskTier.High]: {
42
+ label: 'High',
43
+ fg: 'hsl(var(--warning))',
44
+ bg: 'hsl(var(--warning) / 0.1)',
45
+ bd: 'hsl(var(--warning) / 0.3)',
46
+ },
47
+ [CapabilityRiskTier.Critical]: {
48
+ label: 'Critical',
49
+ fg: `hsl(${DANGER})`,
50
+ bg: `hsl(${DANGER} / 0.09)`,
51
+ bd: `hsl(${DANGER} / 0.32)`,
52
+ },
53
+ };
54
+
55
+ export type RiskPillSize = 'xs' | 'sm';
56
+
57
+ export interface RiskPillProps {
58
+ readonly tier: CapabilityRiskTier;
59
+ readonly size?: RiskPillSize;
60
+ /** Rendered before the label for the `critical` tier (e.g. an alert glyph). */
61
+ readonly criticalIcon?: ReactNode;
62
+ readonly style?: CSSProperties;
63
+ }
64
+
65
+ export function RiskPill({
66
+ tier,
67
+ size = 'sm',
68
+ criticalIcon,
69
+ style,
70
+ }: RiskPillProps): ReactElement {
71
+ const r = RISK[tier];
72
+ return (
73
+ <span
74
+ className="mono"
75
+ style={{
76
+ display: 'inline-flex',
77
+ alignItems: 'center',
78
+ gap: 4,
79
+ padding: size === 'xs' ? '1px 6px' : '2px 8px',
80
+ fontSize: size === 'xs' ? 9.5 : 10,
81
+ fontWeight: 600,
82
+ textTransform: 'uppercase',
83
+ letterSpacing: '0.06em',
84
+ color: r.fg,
85
+ background: r.bg,
86
+ border: `1px solid ${r.bd}`,
87
+ borderRadius: 5,
88
+ ...style,
89
+ }}
90
+ >
91
+ {tier === CapabilityRiskTier.Critical && criticalIcon}
92
+ {r.label}
93
+ </span>
94
+ );
95
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Biome provenance dot — a tiny colour-coded circle keyed on
3
+ * `BiomeScope` (system / platform / community).
4
+ */
5
+ import { BiomeScope } from '../lib/enums';
6
+
7
+ import type { CSSProperties, ReactElement } from 'react';
8
+
9
+
10
+ interface ScopeStyle {
11
+ readonly color: string;
12
+ readonly label: string;
13
+ }
14
+
15
+ const SCOPE: Record<BiomeScope, ScopeStyle> = {
16
+ [BiomeScope.System]: { color: 'hsl(var(--ink-4))', label: 'System' },
17
+ [BiomeScope.Platform]: { color: 'hsl(var(--primary))', label: 'Platform' },
18
+ [BiomeScope.Community]: { color: 'hsl(var(--p-people))', label: 'Community' },
19
+ };
20
+
21
+ export interface ScopeDotProps {
22
+ readonly scope: BiomeScope;
23
+ readonly size?: number;
24
+ readonly style?: CSSProperties;
25
+ }
26
+
27
+ export function ScopeDot({
28
+ scope,
29
+ size = 7,
30
+ style,
31
+ }: ScopeDotProps): ReactElement {
32
+ const s = SCOPE[scope];
33
+ return (
34
+ <span
35
+ title={s.label}
36
+ style={{
37
+ width: size,
38
+ height: size,
39
+ borderRadius: '50%',
40
+ background: s.color,
41
+ flexShrink: 0,
42
+ display: 'inline-block',
43
+ ...style,
44
+ }}
45
+ />
46
+ );
47
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Small segmented control. Generic over the option value type so a
3
+ * caller can drive it with a closed enum directly.
4
+ */
5
+ import type { CSSProperties, ReactElement, ReactNode } from 'react';
6
+
7
+ export interface SegmentedOption<V extends string> {
8
+ readonly value: V;
9
+ readonly label: ReactNode;
10
+ /** Optional leading icon node (host-supplied). */
11
+ readonly icon?: ReactNode;
12
+ }
13
+
14
+ export type SegmentedSize = 'sm' | 'md';
15
+
16
+ export interface SegmentedProps<V extends string> {
17
+ readonly options: ReadonlyArray<SegmentedOption<V>>;
18
+ readonly value: V;
19
+ readonly onChange: (value: V) => void;
20
+ readonly size?: SegmentedSize;
21
+ readonly style?: CSSProperties;
22
+ }
23
+
24
+ export function Segmented<V extends string>({
25
+ options,
26
+ value,
27
+ onChange,
28
+ size = 'sm',
29
+ style,
30
+ }: SegmentedProps<V>): ReactElement {
31
+ return (
32
+ <div
33
+ style={{
34
+ display: 'inline-flex',
35
+ padding: 2,
36
+ gap: 2,
37
+ background: 'hsl(var(--paper-sunk))',
38
+ border: '1px solid hsl(var(--rule))',
39
+ borderRadius: 8,
40
+ ...style,
41
+ }}
42
+ >
43
+ {options.map((option) => {
44
+ const on = option.value === value;
45
+ return (
46
+ <button
47
+ key={option.value}
48
+ type="button"
49
+ onClick={() => onChange(option.value)}
50
+ style={{
51
+ display: 'inline-flex',
52
+ alignItems: 'center',
53
+ gap: 5,
54
+ padding: size === 'sm' ? '4px 10px' : '6px 12px',
55
+ fontSize: size === 'sm' ? 12 : 13,
56
+ fontWeight: on ? 600 : 450,
57
+ borderRadius: 6,
58
+ color: on ? 'hsl(var(--ink))' : 'hsl(var(--ink-3))',
59
+ background: on ? 'hsl(var(--paper-elev))' : 'transparent',
60
+ boxShadow: on ? 'var(--shadow-2, var(--shadow-1))' : 'none',
61
+ transition: 'background 140ms ease, color 140ms ease, box-shadow 140ms ease',
62
+ }}
63
+ >
64
+ {option.icon}
65
+ {option.label}
66
+ </button>
67
+ );
68
+ })}
69
+ </div>
70
+ );
71
+ }