@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,7 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ export type MarkdownRender = (text: string) => ReactNode;
3
+ export interface MDProps {
4
+ readonly children: string;
5
+ }
6
+ export declare function MD({ children }: MDProps): ReactElement;
7
+ //# sourceMappingURL=MD.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MD.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/MD.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;AA4CzD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,YAAY,CAsFtD"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MD = MD;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const INLINE_CODE_STYLE = {
7
+ fontSize: 12,
8
+ padding: '1px 5px',
9
+ background: 'hsl(var(--paper-sunk))',
10
+ border: '1px solid hsl(var(--rule))',
11
+ borderRadius: 4,
12
+ color: 'hsl(var(--ink))',
13
+ };
14
+ function renderInline(text) {
15
+ const nodes = [];
16
+ const parts = text.split(/(\*\*[^*]+\*\*|`[^`]+`)/g);
17
+ parts.forEach((part, index) => {
18
+ if (!part)
19
+ return;
20
+ if (part.startsWith('**') && part.endsWith('**')) {
21
+ nodes.push((0, jsx_runtime_1.jsx)("strong", { style: { fontWeight: 600, color: 'hsl(var(--ink))' }, children: part.slice(2, -2) }, index));
22
+ return;
23
+ }
24
+ if (part.startsWith('`') && part.endsWith('`')) {
25
+ nodes.push((0, jsx_runtime_1.jsx)("code", { className: "mono", style: INLINE_CODE_STYLE, children: part.slice(1, -1) }, index));
26
+ return;
27
+ }
28
+ const lines = part.split('\n');
29
+ lines.forEach((line, lineIndex) => {
30
+ if (lineIndex > 0)
31
+ nodes.push((0, jsx_runtime_1.jsx)("br", {}, `${index}-br-${lineIndex}`));
32
+ if (line)
33
+ nodes.push((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: line }, `${index}-t-${lineIndex}`));
34
+ });
35
+ });
36
+ return nodes;
37
+ }
38
+ function MD({ children }) {
39
+ const text = String(children ?? '');
40
+ const blocks = text.split(/\n\n+/);
41
+ return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column', gap: 9 }, children: blocks.map((block, index) => {
42
+ if (block.startsWith('```')) {
43
+ const code = block.replace(/```[a-z]*\n?/i, '').replace(/```$/, '');
44
+ return ((0, jsx_runtime_1.jsx)("pre", { className: "mono", style: {
45
+ margin: 0,
46
+ padding: '11px 13px',
47
+ background: 'hsl(var(--paper-sunk))',
48
+ border: '1px solid hsl(var(--rule))',
49
+ borderRadius: 8,
50
+ fontSize: 12,
51
+ lineHeight: 1.6,
52
+ overflowX: 'auto',
53
+ color: 'hsl(var(--ink-2))',
54
+ whiteSpace: 'pre',
55
+ }, children: code }, index));
56
+ }
57
+ if (/^[-•]\s/m.test(block)) {
58
+ const items = block.split('\n').filter(Boolean);
59
+ return ((0, jsx_runtime_1.jsx)("ul", { style: {
60
+ margin: 0,
61
+ paddingLeft: 2,
62
+ listStyle: 'none',
63
+ display: 'flex',
64
+ flexDirection: 'column',
65
+ gap: 5,
66
+ }, children: items.map((item, itemIndex) => ((0, jsx_runtime_1.jsxs)("li", { style: {
67
+ display: 'flex',
68
+ gap: 9,
69
+ fontSize: 13.5,
70
+ lineHeight: 1.55,
71
+ color: 'hsl(var(--ink-2))',
72
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
73
+ marginTop: 8,
74
+ width: 4,
75
+ height: 4,
76
+ borderRadius: '50%',
77
+ background: 'hsl(var(--ink-4))',
78
+ flexShrink: 0,
79
+ } }), (0, jsx_runtime_1.jsx)("span", { children: renderInline(item.replace(/^[-•]\s/, '')) })] }, itemIndex))) }, index));
80
+ }
81
+ return ((0, jsx_runtime_1.jsx)("p", { style: {
82
+ margin: 0,
83
+ fontSize: 13.5,
84
+ lineHeight: 1.62,
85
+ color: 'hsl(var(--ink-2))',
86
+ }, children: renderInline(block) }, index));
87
+ }) }));
88
+ }
89
+ //# sourceMappingURL=MD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MD.js","sourceRoot":"","sources":["../../../src/session-kit/display/MD.tsx"],"names":[],"mappings":";;AAkEA,gBAsFC;;AAzID,iCAAoE;AAKpE,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,wBAAwB;IACpC,MAAM,EAAE,4BAA4B;IACpC,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,iBAAiB;CAChB,CAAC;AAGX,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CACR,mCAAoB,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,YACrE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IADP,KAAK,CAET,CACV,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CACR,iCAAkB,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,iBAAiB,YACxD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IADT,KAAK,CAET,CACR,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAChC,IAAI,SAAS,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,iCAAS,GAAG,KAAK,OAAO,SAAS,EAAE,CAAI,CAAC,CAAC;YACvE,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,uBAAC,gBAAQ,cAAkC,IAAI,IAAhC,GAAG,KAAK,MAAM,SAAS,EAAE,CAAmB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,SAAgB,EAAE,CAAC,EAAE,QAAQ,EAAW;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CACL,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,CACL,gCAEE,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE;wBACL,MAAM,EAAE,CAAC;wBACT,OAAO,EAAE,WAAW;wBACpB,UAAU,EAAE,wBAAwB;wBACpC,MAAM,EAAE,4BAA4B;wBACpC,YAAY,EAAE,CAAC;wBACf,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,SAAS,EAAE,MAAM;wBACjB,KAAK,EAAE,mBAAmB;wBAC1B,UAAU,EAAE,KAAK;qBAClB,YAEA,IAAI,IAfA,KAAK,CAgBN,CACP,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,CACL,+BAEE,KAAK,EAAE;wBACL,MAAM,EAAE,CAAC;wBACT,WAAW,EAAE,CAAC;wBACd,SAAS,EAAE,MAAM;wBACjB,OAAO,EAAE,MAAM;wBACf,aAAa,EAAE,QAAQ;wBACvB,GAAG,EAAE,CAAC;qBACP,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAC9B,gCAEE,KAAK,EAAE;4BACL,OAAO,EAAE,MAAM;4BACf,GAAG,EAAE,CAAC;4BACN,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;4BAChB,KAAK,EAAE,mBAAmB;yBAC3B,aAED,iCACE,KAAK,EAAE;oCACL,SAAS,EAAE,CAAC;oCACZ,KAAK,EAAE,CAAC;oCACR,MAAM,EAAE,CAAC;oCACT,YAAY,EAAE,KAAK;oCACnB,UAAU,EAAE,mBAAmB;oCAC/B,UAAU,EAAE,CAAC;iCACd,GACD,EACF,2CAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAQ,KAnBnD,SAAS,CAoBX,CACN,CAAC,IAjCG,KAAK,CAkCP,CACN,CAAC;YACJ,CAAC;YACD,OAAO,CACL,8BAEE,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,mBAAmB;iBAC3B,YAEA,YAAY,CAAC,KAAK,CAAC,IARf,KAAK,CASR,CACL,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type MarkdownRender } from './MD';
2
+ import { SessionSkin, TurnRole } from '../lib/enums';
3
+ import { type PortalAccentVar } from '../lib/portal-accent';
4
+ import type { ReactElement, ReactNode } from 'react';
5
+ export interface SessionMessage {
6
+ readonly role: TurnRole;
7
+ readonly content?: string;
8
+ readonly agent?: string;
9
+ readonly phase?: string;
10
+ readonly streaming?: boolean;
11
+ }
12
+ export interface MessageTurnProps {
13
+ readonly msg: SessionMessage;
14
+ readonly skin?: SessionSkin;
15
+ readonly accentVar?: PortalAccentVar;
16
+ readonly renderMarkdown?: MarkdownRender;
17
+ readonly agentIcon?: ReactNode;
18
+ readonly children?: ReactNode;
19
+ }
20
+ export declare function MessageTurn({ msg, skin, accentVar, renderMarkdown, agentIcon, children, }: MessageTurnProps): ReactElement;
21
+ //# sourceMappingURL=MessageTurn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageTurn.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/MessageTurn.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAM,KAAK,cAAc,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAE5B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAErC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEzC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAE/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,IAA0B,EAC1B,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG,YAAY,CA4GjC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageTurn = MessageTurn;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const MD_1 = require("./MD");
6
+ const TypingDots_1 = require("./TypingDots");
7
+ const enums_1 = require("../lib/enums");
8
+ const portal_accent_1 = require("../lib/portal-accent");
9
+ function MessageTurn({ msg, skin = enums_1.SessionSkin.Minimal, accentVar, renderMarkdown, agentIcon, children, }) {
10
+ if (msg.role === enums_1.TurnRole.User) {
11
+ return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', justifyContent: 'flex-end', padding: '2px 0' }, children: (0, jsx_runtime_1.jsx)("div", { style: {
12
+ maxWidth: '78%',
13
+ padding: '9px 13px',
14
+ borderRadius: '12px 12px 4px 12px',
15
+ background: 'hsl(var(--paper-sunk))',
16
+ border: '1px solid hsl(var(--rule))',
17
+ fontSize: 13.5,
18
+ lineHeight: 1.55,
19
+ color: 'hsl(var(--ink))',
20
+ }, children: msg.content }) }));
21
+ }
22
+ const accent = (0, portal_accent_1.portalAccent)(accentVar);
23
+ const renderBody = renderMarkdown ?? ((t) => (0, jsx_runtime_1.jsx)(MD_1.MD, { children: t }));
24
+ const functional = skin === enums_1.SessionSkin.Functional;
25
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: 12, padding: '2px 0' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
26
+ width: 26,
27
+ flexShrink: 0,
28
+ display: 'flex',
29
+ flexDirection: 'column',
30
+ alignItems: 'center',
31
+ gap: 4,
32
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
33
+ width: 26,
34
+ height: 26,
35
+ borderRadius: 8,
36
+ display: 'grid',
37
+ placeItems: 'center',
38
+ background: functional ? (0, portal_accent_1.portalAccent)(accentVar, 0.12) : 'transparent',
39
+ color: accent,
40
+ border: functional ? 'none' : '1px solid hsl(var(--rule-2))',
41
+ }, children: agentIcon }), (0, jsx_runtime_1.jsx)("span", { style: {
42
+ flex: 1,
43
+ width: 1.5,
44
+ background: 'hsl(var(--rule))',
45
+ borderRadius: 1,
46
+ minHeight: 8,
47
+ } })] }), (0, jsx_runtime_1.jsxs)("div", { style: { flex: 1, minWidth: 0, paddingBottom: 6 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: 8, marginBottom: 7 }, children: [(0, jsx_runtime_1.jsx)("span", { className: "cap", style: { color: 'hsl(var(--ink-3))' }, children: msg.agent ?? 'Agent' }), msg.phase && ((0, jsx_runtime_1.jsx)("span", { className: "mono", style: {
48
+ fontSize: 10,
49
+ color: accent,
50
+ padding: '1px 6px',
51
+ background: (0, portal_accent_1.portalAccent)(accentVar, 0.09),
52
+ borderRadius: 5,
53
+ border: `1px solid ${(0, portal_accent_1.portalAccent)(accentVar, 0.2)}`,
54
+ }, children: msg.phase })), msg.streaming && ((0, jsx_runtime_1.jsx)("span", { style: {
55
+ display: 'inline-flex',
56
+ alignItems: 'center',
57
+ gap: 5,
58
+ fontSize: 11,
59
+ color: 'hsl(var(--info))',
60
+ }, children: (0, jsx_runtime_1.jsx)(TypingDots_1.TypingDots, {}) }))] }), msg.content && ((0, jsx_runtime_1.jsx)("div", { className: msg.streaming && !children ? 'xk-caret' : '', style: { display: 'inline' }, children: renderBody(msg.content) })), children] })] }));
61
+ }
62
+ //# sourceMappingURL=MessageTurn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageTurn.js","sourceRoot":"","sources":["../../../src/session-kit/display/MessageTurn.tsx"],"names":[],"mappings":";;AAyCA,kCAmHC;;AAlJD,6BAA+C;AAC/C,6CAA0C;AAC1C,wCAAqD;AACrD,wDAA0E;AA4B1E,SAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,IAAI,GAAG,mBAAW,CAAC,OAAO,EAC1B,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,GACS;IACjB,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,CACL,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,YAC3E,gCACE,KAAK,EAAE;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,UAAU;oBACnB,YAAY,EAAE,oBAAoB;oBAClC,UAAU,EAAE,wBAAwB;oBACpC,MAAM,EAAE,4BAA4B;oBACpC,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,iBAAiB;iBACzB,YAEA,GAAG,CAAC,OAAO,GACR,GACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,4BAAY,EAAC,SAAS,CAAC,CAAC;IACvC,MAAM,UAAU,GAAmB,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAC,OAAE,cAAE,CAAC,GAAM,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,KAAK,mBAAW,CAAC,UAAU,CAAC;IAEnD,OAAO,CACL,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aACxD,iCACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,CAAC;oBACb,OAAO,EAAE,MAAM;oBACf,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;iBACP,aAED,iCACE,KAAK,EAAE;4BACL,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,EAAE;4BACV,YAAY,EAAE,CAAC;4BACf,OAAO,EAAE,MAAM;4BACf,UAAU,EAAE,QAAQ;4BACpB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAA,4BAAY,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa;4BACtE,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,8BAA8B;yBAC7D,YAEA,SAAS,GACL,EACP,iCACE,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,GAAG;4BACV,UAAU,EAAE,kBAAkB;4BAC9B,YAAY,EAAE,CAAC;4BACf,SAAS,EAAE,CAAC;yBACb,GACD,IACE,EACN,iCAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aACpD,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAC5E,iCAAM,SAAS,EAAC,KAAK,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,YACxD,GAAG,CAAC,KAAK,IAAI,OAAO,GAChB,EACN,GAAG,CAAC,KAAK,IAAI,CACZ,iCACE,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,KAAK,EAAE,MAAM;oCACb,OAAO,EAAE,SAAS;oCAClB,UAAU,EAAE,IAAA,4BAAY,EAAC,SAAS,EAAE,IAAI,CAAC;oCACzC,YAAY,EAAE,CAAC;oCACf,MAAM,EAAE,aAAa,IAAA,4BAAY,EAAC,SAAS,EAAE,GAAG,CAAC,EAAE;iCACpD,YAEA,GAAG,CAAC,KAAK,GACL,CACR,EACA,GAAG,CAAC,SAAS,IAAI,CAChB,iCACE,KAAK,EAAE;oCACL,OAAO,EAAE,aAAa;oCACtB,UAAU,EAAE,QAAQ;oCACpB,GAAG,EAAE,CAAC;oCACN,QAAQ,EAAE,EAAE;oCACZ,KAAK,EAAE,kBAAkB;iCAC1B,YAED,uBAAC,uBAAU,KAAG,GACT,CACR,IACG,EACL,GAAG,CAAC,OAAO,IAAI,CACd,gCACE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EACvD,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,YAE3B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GACpB,CACP,EACA,QAAQ,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ import { SessionSkin } from '../lib/enums';
3
+ export interface ThinkingPanelProps {
4
+ readonly text: string;
5
+ readonly skin?: SessionSkin;
6
+ readonly defaultOpen?: boolean;
7
+ readonly collapsedIcon?: ReactNode;
8
+ readonly expandedIcon?: ReactNode;
9
+ readonly leadingIcon?: ReactNode;
10
+ }
11
+ export declare function ThinkingPanel({ text, skin, defaultOpen, collapsedIcon, expandedIcon, leadingIcon, }: ThinkingPanelProps): ReactElement;
12
+ //# sourceMappingURL=ThinkingPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingPanel.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/ThinkingPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAE/B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEnC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;IAElC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAA0B,EAC1B,WAAmB,EACnB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,EAAE,kBAAkB,GAAG,YAAY,CAkDnC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThinkingPanel = ThinkingPanel;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const enums_1 = require("../lib/enums");
7
+ function ThinkingPanel({ text, skin = enums_1.SessionSkin.Minimal, defaultOpen = false, collapsedIcon, expandedIcon, leadingIcon, }) {
8
+ void skin;
9
+ const [open, setOpen] = (0, react_1.useState)(defaultOpen);
10
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { marginTop: 9 }, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => setOpen((v) => !v), style: {
11
+ display: 'inline-flex',
12
+ alignItems: 'center',
13
+ gap: 7,
14
+ fontSize: 12,
15
+ color: 'hsl(var(--ink-3))',
16
+ padding: '3px 2px',
17
+ transition: 'color 140ms ease',
18
+ }, children: [open ? expandedIcon : collapsedIcon, leadingIcon && ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', color: 'hsl(var(--p-people))' }, children: leadingIcon })), (0, jsx_runtime_1.jsx)("span", { style: { fontWeight: 500 }, children: "Thinking" }), (0, jsx_runtime_1.jsxs)("span", { className: "mono", style: { fontSize: 10.5, opacity: 0.6 }, children: [text.length, " chars"] })] }), open && ((0, jsx_runtime_1.jsx)("div", { style: {
19
+ marginTop: 5,
20
+ marginLeft: 6,
21
+ paddingLeft: 12,
22
+ borderLeft: '1.5px dashed hsl(var(--rule-2))',
23
+ fontSize: 12.5,
24
+ lineHeight: 1.6,
25
+ fontStyle: 'italic',
26
+ color: 'hsl(var(--ink-3))',
27
+ whiteSpace: 'pre-wrap',
28
+ }, children: text }))] }));
29
+ }
30
+ //# sourceMappingURL=ThinkingPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingPanel.js","sourceRoot":"","sources":["../../../src/session-kit/display/ThinkingPanel.tsx"],"names":[],"mappings":";;AAoBA,sCAyDC;;AAzED,iCAAoE;AAEpE,wCAA2C;AAc3C,SAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,GAAG,mBAAW,CAAC,OAAO,EAC1B,WAAW,GAAG,KAAK,EACnB,aAAa,EACb,YAAY,EACZ,WAAW,GACQ;IAGnB,KAAK,IAAI,CAAC;IACV,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,CACL,iCAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,aAC1B,oCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,KAAK,EAAE;oBACL,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;oBACN,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,SAAS;oBAClB,UAAU,EAAE,kBAAkB;iBAC/B,aAEA,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EACnC,WAAW,IAAI,CACd,iCAAM,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,sBAAsB,EAAE,YACnE,WAAW,GACP,CACR,EACD,iCAAM,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,yBAAiB,EACjD,kCAAM,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,aAC3D,IAAI,CAAC,MAAM,cACP,IACA,EACR,IAAI,IAAI,CACP,gCACE,KAAK,EAAE;oBACL,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC;oBACb,WAAW,EAAE,EAAE;oBACf,UAAU,EAAE,iCAAiC;oBAC7C,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,mBAAmB;oBAC1B,UAAU,EAAE,UAAU;iBACvB,YAEA,IAAI,GACD,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { SessionSkin, TodoState } from '../lib/enums';
2
+ import type { CSSProperties, ReactElement, ReactNode } from 'react';
3
+ export interface TodoItem {
4
+ readonly label: string;
5
+ readonly state: TodoState;
6
+ }
7
+ export interface TodoChecklistProps {
8
+ readonly items: ReadonlyArray<TodoItem>;
9
+ readonly skin?: SessionSkin;
10
+ readonly title?: string;
11
+ readonly titleIcon?: ReactNode;
12
+ readonly doneIcon?: ReactNode;
13
+ readonly activeIcon?: ReactNode;
14
+ readonly style?: CSSProperties;
15
+ }
16
+ export declare function TodoChecklist({ items, skin, title, titleIcon, doneIcon, activeIcon, style, }: TodoChecklistProps): ReactElement;
17
+ //# sourceMappingURL=TodoChecklist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoChecklist.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/TodoChecklist.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAE/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAE9B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAA0B,EAC1B,KAAc,EACd,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,GACN,EAAE,kBAAkB,GAAG,YAAY,CAmFnC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TodoChecklist = TodoChecklist;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const enums_1 = require("../lib/enums");
6
+ function TodoChecklist({ items, skin = enums_1.SessionSkin.Minimal, title = 'Plan', titleIcon, doneIcon, activeIcon, style, }) {
7
+ const done = items.filter((i) => i.state === enums_1.TodoState.Done).length;
8
+ return ((0, jsx_runtime_1.jsxs)("div", { style: {
9
+ marginTop: 9,
10
+ border: '1px solid hsl(var(--rule))',
11
+ borderRadius: 9,
12
+ background: 'hsl(var(--paper-elev))',
13
+ overflow: 'hidden',
14
+ ...style,
15
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
16
+ display: 'flex',
17
+ alignItems: 'center',
18
+ gap: 8,
19
+ padding: '8px 12px',
20
+ borderBottom: '1px solid hsl(var(--rule))',
21
+ background: skin === enums_1.SessionSkin.Functional ? 'hsl(var(--muted))' : 'transparent',
22
+ }, children: [titleIcon && ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', color: 'hsl(var(--primary))' }, children: titleIcon })), (0, jsx_runtime_1.jsx)("span", { className: "cap", children: title }), (0, jsx_runtime_1.jsx)("span", { style: { flex: 1 } }), (0, jsx_runtime_1.jsxs)("span", { className: "mono", style: { fontSize: 11, color: 'hsl(var(--ink-3))' }, children: [done, "/", items.length] })] }), (0, jsx_runtime_1.jsx)("div", { style: { padding: '6px 0' }, children: items.map((item, index) => {
23
+ const isDone = item.state === enums_1.TodoState.Done;
24
+ const isActive = item.state === enums_1.TodoState.Active;
25
+ return ((0, jsx_runtime_1.jsxs)("div", { style: {
26
+ display: 'flex',
27
+ alignItems: 'center',
28
+ gap: 10,
29
+ padding: '5px 12px',
30
+ }, children: [(0, jsx_runtime_1.jsxs)("span", { style: {
31
+ width: 16,
32
+ height: 16,
33
+ borderRadius: 5,
34
+ flexShrink: 0,
35
+ display: 'grid',
36
+ placeItems: 'center',
37
+ border: isDone
38
+ ? 'none'
39
+ : `1.5px solid ${isActive ? 'hsl(var(--warning))' : 'hsl(var(--rule-2))'}`,
40
+ background: isDone ? 'hsl(var(--success))' : 'transparent',
41
+ color: '#fff',
42
+ }, children: [isDone && doneIcon, isActive && activeIcon] }), (0, jsx_runtime_1.jsx)("span", { style: {
43
+ fontSize: 13,
44
+ color: isDone ? 'hsl(var(--ink-4))' : 'hsl(var(--ink-2))',
45
+ textDecoration: isDone ? 'line-through' : 'none',
46
+ fontWeight: isActive ? 500 : 400,
47
+ }, children: item.label })] }, index));
48
+ }) })] }));
49
+ }
50
+ //# sourceMappingURL=TodoChecklist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoChecklist.js","sourceRoot":"","sources":["../../../src/session-kit/display/TodoChecklist.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SessionSkin } from '../lib/enums';
2
+ import type { CSSProperties, ReactElement } from 'react';
3
+ export interface TokenCounts {
4
+ readonly input: number;
5
+ readonly output: number;
6
+ }
7
+ export interface TokenMeterProps {
8
+ readonly tokens: TokenCounts;
9
+ readonly cost: number;
10
+ readonly skin?: SessionSkin;
11
+ readonly streaming?: boolean;
12
+ readonly style?: CSSProperties;
13
+ }
14
+ export declare function TokenMeter({ tokens, cost, skin, streaming, style, }: TokenMeterProps): ReactElement;
15
+ //# sourceMappingURL=TokenMeter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenMeter.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/TokenMeter.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAK5B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC;AAMD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,IAAI,EACJ,IAA0B,EAC1B,SAAiB,EACjB,KAAK,GACN,EAAE,eAAe,GAAG,YAAY,CAmDhC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenMeter = TokenMeter;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const enums_1 = require("../lib/enums");
6
+ function fmt(n) {
7
+ return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
8
+ }
9
+ function TokenMeter({ tokens, cost, skin = enums_1.SessionSkin.Minimal, streaming = false, style, }) {
10
+ const functional = skin === enums_1.SessionSkin.Functional;
11
+ return ((0, jsx_runtime_1.jsxs)("span", { className: "mono", style: {
12
+ display: 'inline-flex',
13
+ alignItems: 'center',
14
+ gap: 9,
15
+ fontSize: 11,
16
+ color: 'hsl(var(--ink-3))',
17
+ padding: functional ? '3px 9px' : 0,
18
+ background: functional ? 'hsl(var(--muted))' : 'transparent',
19
+ border: functional ? '1px solid hsl(var(--rule))' : 'none',
20
+ borderRadius: 7,
21
+ ...style,
22
+ }, children: [streaming && ((0, jsx_runtime_1.jsx)("span", { className: "xk-pulse-soft", style: {
23
+ width: 5,
24
+ height: 5,
25
+ borderRadius: '50%',
26
+ background: 'hsl(var(--info))',
27
+ flexShrink: 0,
28
+ } })), (0, jsx_runtime_1.jsxs)("span", { title: "input tokens", children: [fmt(tokens.input), (0, jsx_runtime_1.jsx)("span", { style: { opacity: 0.55 }, children: " in" })] }), (0, jsx_runtime_1.jsxs)("span", { title: "output tokens", children: [fmt(tokens.output), (0, jsx_runtime_1.jsx)("span", { style: { opacity: 0.55 }, children: " out" })] }), (0, jsx_runtime_1.jsx)("span", { style: {
29
+ width: 3,
30
+ height: 3,
31
+ borderRadius: '50%',
32
+ background: 'hsl(var(--ink-4))',
33
+ } }), (0, jsx_runtime_1.jsxs)("span", { style: { color: 'hsl(var(--ink-2))', fontWeight: 600 }, children: ["$", cost.toFixed(3)] })] }));
34
+ }
35
+ //# sourceMappingURL=TokenMeter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenMeter.js","sourceRoot":"","sources":["../../../src/session-kit/display/TokenMeter.tsx"],"names":[],"mappings":";;AA+BA,gCAyDC;;AAnFD,wCAA2C;AAsB3C,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,UAAU,CAAC,EACzB,MAAM,EACN,IAAI,EACJ,IAAI,GAAG,mBAAW,CAAC,OAAO,EAC1B,SAAS,GAAG,KAAK,EACjB,KAAK,GACW;IAChB,MAAM,UAAU,GAAG,IAAI,KAAK,mBAAW,CAAC,UAAU,CAAC;IACnD,OAAO,CACL,kCACE,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa;YAC5D,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAM;YAC1D,YAAY,EAAE,CAAC;YACf,GAAG,KAAK;SACT,aAEA,SAAS,IAAI,CACZ,iCACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,YAAY,EAAE,KAAK;oBACnB,UAAU,EAAE,kBAAkB;oBAC9B,UAAU,EAAE,CAAC;iBACd,GACD,CACH,EACD,kCAAM,KAAK,EAAC,cAAc,aACvB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAClB,iCAAM,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAY,IACrC,EACP,kCAAM,KAAK,EAAC,eAAe,aACxB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EACnB,iCAAM,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAa,IACtC,EACP,iCACE,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,YAAY,EAAE,KAAK;oBACnB,UAAU,EAAE,mBAAmB;iBAChC,GACD,EACF,kCAAM,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,kBACxD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IACZ,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ import { SessionSkin, ToolStatus } from '../lib/enums';
3
+ export interface ToolCall {
4
+ readonly label: string;
5
+ readonly icon?: ReactNode;
6
+ readonly arg?: string;
7
+ readonly status: ToolStatus;
8
+ readonly detail?: string;
9
+ readonly count?: number;
10
+ }
11
+ export interface ToolStripIcons {
12
+ readonly summary?: ReactNode;
13
+ readonly chevron?: ReactNode;
14
+ readonly done?: ReactNode;
15
+ readonly pending?: ReactNode;
16
+ readonly error?: ReactNode;
17
+ readonly chipSpinner?: ReactNode;
18
+ }
19
+ export interface ToolStripProps {
20
+ readonly tools: ReadonlyArray<ToolCall>;
21
+ readonly skin?: SessionSkin;
22
+ readonly icons?: ToolStripIcons;
23
+ readonly collapseAbove?: number;
24
+ }
25
+ export declare function ToolChip({ tool, skin, spinnerIcon, }: {
26
+ readonly tool: ToolCall;
27
+ readonly skin?: SessionSkin;
28
+ readonly spinnerIcon?: ReactNode;
29
+ }): ReactElement;
30
+ export declare function ToolStrip({ tools, skin, icons, collapseAbove, }: ToolStripProps): ReactElement;
31
+ //# sourceMappingURL=ToolStrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolStrip.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/ToolStrip.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,WAAW,QAAQ;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAE1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,cAAc;IAE7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAE1B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAEhC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAgCD,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAA0B,EAC1B,WAAW,GACZ,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;CAClC,GAAG,YAAY,CAmGf;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,IAA0B,EAC1B,KAAK,EACL,aAAiB,GAClB,EAAE,cAAc,GAAG,YAAY,CAmF/B"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolChip = ToolChip;
4
+ exports.ToolStrip = ToolStrip;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const enums_1 = require("../lib/enums");
8
+ const status_dot_1 = require("../lib/status-dot");
9
+ function Stat({ icon, n, color, spin, }) {
10
+ return ((0, jsx_runtime_1.jsxs)("span", { className: "mono", style: {
11
+ display: 'inline-flex',
12
+ alignItems: 'center',
13
+ gap: 3,
14
+ fontSize: 11,
15
+ color,
16
+ }, children: [(0, jsx_runtime_1.jsx)("span", { className: spin ? 'xk-spin' : '', style: { display: 'inline-flex' }, children: icon }), n] }));
17
+ }
18
+ function ToolChip({ tool, skin = enums_1.SessionSkin.Minimal, spinnerIcon, }) {
19
+ const [expanded, setExpanded] = (0, react_1.useState)(false);
20
+ const dotColor = (0, status_dot_1.toolStatusColor)(tool.status);
21
+ const tint = skin === enums_1.SessionSkin.Functional;
22
+ const isError = tool.status === enums_1.ToolStatus.Error;
23
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'inline-flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => tool.detail && setExpanded((v) => !v), style: {
24
+ display: 'inline-flex',
25
+ alignItems: 'center',
26
+ gap: 7,
27
+ padding: '5px 10px',
28
+ borderRadius: 8,
29
+ border: `1px solid ${tint && isError ? 'hsl(var(--destructive, var(--danger)) / 0.3)' : 'hsl(var(--rule))'}`,
30
+ background: tint && isError
31
+ ? 'hsl(var(--destructive, var(--danger)) / 0.05)'
32
+ : 'hsl(var(--paper-elev))',
33
+ cursor: tool.detail ? 'pointer' : 'default',
34
+ maxWidth: 320,
35
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
36
+ width: 6,
37
+ height: 6,
38
+ borderRadius: '50%',
39
+ background: dotColor,
40
+ flexShrink: 0,
41
+ } }), tool.icon && ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', color: 'hsl(var(--ink-3))' }, children: tool.icon })), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 12.5, fontWeight: 500, color: 'hsl(var(--ink-2))' }, children: tool.label }), tool.arg && ((0, jsx_runtime_1.jsx)("span", { className: "mono", style: {
42
+ fontSize: 11,
43
+ color: 'hsl(var(--ink-3))',
44
+ overflow: 'hidden',
45
+ textOverflow: 'ellipsis',
46
+ whiteSpace: 'nowrap',
47
+ maxWidth: 180,
48
+ }, children: tool.arg })), tool.status === enums_1.ToolStatus.Pending && spinnerIcon && ((0, jsx_runtime_1.jsx)("span", { className: "xk-spin", style: { display: 'inline-flex', color: 'hsl(var(--warning))' }, children: spinnerIcon })), tool.count !== undefined && tool.count > 1 && ((0, jsx_runtime_1.jsxs)("span", { className: "mono", style: {
49
+ fontSize: 10,
50
+ color: 'hsl(var(--ink-3))',
51
+ padding: '0 5px',
52
+ background: 'hsl(var(--muted))',
53
+ borderRadius: 6,
54
+ }, children: ["\u00D7", tool.count] }))] }), expanded && tool.detail && ((0, jsx_runtime_1.jsx)("pre", { className: "mono", style: {
55
+ margin: '5px 0 0',
56
+ padding: '9px 11px',
57
+ background: 'hsl(var(--paper-sunk))',
58
+ border: '1px solid hsl(var(--rule))',
59
+ borderRadius: 8,
60
+ fontSize: 11,
61
+ lineHeight: 1.55,
62
+ color: 'hsl(var(--ink-2))',
63
+ maxWidth: 460,
64
+ overflowX: 'auto',
65
+ whiteSpace: 'pre-wrap',
66
+ }, children: tool.detail }))] }));
67
+ }
68
+ function ToolStrip({ tools, skin = enums_1.SessionSkin.Minimal, icons, collapseAbove = 4, }) {
69
+ const [open, setOpen] = (0, react_1.useState)(false);
70
+ const many = tools.length > collapseAbove;
71
+ const done = tools.filter((t) => t.status === enums_1.ToolStatus.Done).length;
72
+ const error = tools.filter((t) => t.status === enums_1.ToolStatus.Error).length;
73
+ const pending = tools.filter((t) => t.status === enums_1.ToolStatus.Pending).length;
74
+ if (!many || open) {
75
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexWrap: 'wrap', gap: 6, marginTop: 9 }, children: [many && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => setOpen(false), style: {
76
+ fontSize: 11,
77
+ color: 'hsl(var(--ink-3))',
78
+ padding: '4px 8px',
79
+ borderRadius: 7,
80
+ border: '1px solid hsl(var(--rule))',
81
+ background: 'hsl(var(--paper-elev))',
82
+ }, children: "\u2039 collapse" })), tools.map((tool, index) => ((0, jsx_runtime_1.jsx)(ToolChip, { tool: tool, skin: skin, spinnerIcon: icons?.chipSpinner }, index)))] }));
83
+ }
84
+ return ((0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => setOpen(true), style: {
85
+ marginTop: 9,
86
+ display: 'flex',
87
+ alignItems: 'center',
88
+ gap: 9,
89
+ width: '100%',
90
+ padding: '7px 11px',
91
+ borderRadius: 9,
92
+ border: '1px solid hsl(var(--rule))',
93
+ background: skin === enums_1.SessionSkin.Functional
94
+ ? 'hsl(var(--muted))'
95
+ : 'hsl(var(--paper-elev))',
96
+ textAlign: 'left',
97
+ }, children: [icons?.summary && ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', color: 'hsl(var(--primary))' }, children: icons.summary })), (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: 12.5, fontWeight: 500, color: 'hsl(var(--ink-2))' }, children: [tools.length, " tool calls"] }), (0, jsx_runtime_1.jsx)("span", { style: { flex: 1 } }), done > 0 && icons?.done && ((0, jsx_runtime_1.jsx)(Stat, { icon: icons.done, n: done, color: (0, status_dot_1.toolStatusColor)(enums_1.ToolStatus.Done) })), pending > 0 && icons?.pending && ((0, jsx_runtime_1.jsx)(Stat, { icon: icons.pending, n: pending, color: (0, status_dot_1.toolStatusColor)(enums_1.ToolStatus.Pending), spin: true })), error > 0 && icons?.error && ((0, jsx_runtime_1.jsx)(Stat, { icon: icons.error, n: error, color: (0, status_dot_1.toolStatusColor)(enums_1.ToolStatus.Error) })), icons?.chevron && ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', color: 'hsl(var(--ink-4))' }, children: icons.chevron }))] }));
98
+ }
99
+ //# sourceMappingURL=ToolStrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolStrip.js","sourceRoot":"","sources":["../../../src/session-kit/display/ToolStrip.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ReactElement } from 'react';
2
+ export declare function TypingDots(): ReactElement;
3
+ //# sourceMappingURL=TypingDots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypingDots.d.ts","sourceRoot":"","sources":["../../../src/session-kit/display/TypingDots.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,wBAAgB,UAAU,IAAI,YAAY,CAiBzC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypingDots = TypingDots;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ function TypingDots() {
6
+ return ((0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex', gap: 3, alignItems: 'center' }, children: [0, 1, 2].map((i) => ((0, jsx_runtime_1.jsx)("span", { style: {
7
+ width: 5,
8
+ height: 5,
9
+ borderRadius: '50%',
10
+ background: 'hsl(var(--primary))',
11
+ animation: `xk-dot-bounce 1.1s ${i * 0.15}s infinite`,
12
+ } }, i))) }));
13
+ }
14
+ //# sourceMappingURL=TypingDots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypingDots.js","sourceRoot":"","sources":["../../../src/session-kit/display/TypingDots.tsx"],"names":[],"mappings":";;AAMA,gCAiBC;;AAjBD,SAAgB,UAAU;IACxB,OAAO,CACL,iCAAM,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAClE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,iCAEE,KAAK,EAAE;gBACL,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,YAAY,EAAE,KAAK;gBACnB,UAAU,EAAE,qBAAqB;gBACjC,SAAS,EAAE,sBAAsB,CAAC,GAAG,IAAI,YAAY;aACtD,IAPI,CAAC,CAQN,CACH,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ export * from './lib/enums';
2
+ export * from './lib/status-dot';
3
+ export * from './lib/portal-accent';
4
+ export * from './primitives/RiskPill';
5
+ export * from './primitives/ScopeDot';
6
+ export * from './primitives/PortalGlyph';
7
+ export * from './primitives/Avatar';
8
+ export * from './primitives/Segmented';
9
+ export * from './display/MD';
10
+ export * from './display/TypingDots';
11
+ export * from './display/TokenMeter';
12
+ export * from './display/ContextHeader';
13
+ export * from './display/MessageTurn';
14
+ export * from './display/ToolStrip';
15
+ export * from './display/ThinkingPanel';
16
+ export * from './display/FileDiffCard';
17
+ export * from './display/TodoChecklist';
18
+ export * from './combobox/Combobox';
19
+ export * from './combobox/use-click-outside';
20
+ export * from './approvals';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session-kit/index.ts"],"names":[],"mappings":"AAeA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAI7C,cAAc,aAAa,CAAC"}