@assistant-ui/react-generative-ui 0.0.23 → 0.1.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 (338) hide show
  1. package/README.md +2 -0
  2. package/dist/a2ui.d.ts +1 -4
  3. package/dist/a2ui.d.ts.map +1 -1
  4. package/dist/a2ui.js +1 -4
  5. package/dist/index.d.ts +1 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -10
  8. package/dist/index.server.d.ts +1 -2
  9. package/dist/index.server.d.ts.map +1 -1
  10. package/dist/index.server.js +1 -10
  11. package/dist/ir.d.ts +1 -111
  12. package/dist/ir.d.ts.map +1 -1
  13. package/dist/ir.js +1 -175
  14. package/dist/slack.d.ts +1 -4
  15. package/dist/slack.d.ts.map +1 -1
  16. package/dist/slack.js +1 -4
  17. package/dist/teams.d.ts +1 -4
  18. package/dist/teams.d.ts.map +1 -1
  19. package/dist/teams.js +1 -4
  20. package/package.json +5 -5
  21. package/src/a2ui.ts +1 -22
  22. package/src/index.server.ts +1 -2
  23. package/src/index.test.ts +75 -0
  24. package/src/index.ts +1 -2
  25. package/src/ir.ts +1 -279
  26. package/src/slack.ts +1 -39
  27. package/src/teams.ts +1 -35
  28. package/dist/JSONGenerativeUI.client.d.ts +0 -28
  29. package/dist/JSONGenerativeUI.client.d.ts.map +0 -1
  30. package/dist/JSONGenerativeUI.client.js +0 -101
  31. package/dist/JSONGenerativeUI.client.js.map +0 -1
  32. package/dist/JSONGenerativeUI.server.d.ts +0 -21
  33. package/dist/JSONGenerativeUI.server.d.ts.map +0 -1
  34. package/dist/JSONGenerativeUI.server.js +0 -32
  35. package/dist/JSONGenerativeUI.server.js.map +0 -1
  36. package/dist/JSONGenerativeUI.shared.d.ts +0 -63
  37. package/dist/JSONGenerativeUI.shared.d.ts.map +0 -1
  38. package/dist/JSONGenerativeUI.shared.js +0 -31
  39. package/dist/JSONGenerativeUI.shared.js.map +0 -1
  40. package/dist/RadioGroupScope.d.ts +0 -6
  41. package/dist/RadioGroupScope.d.ts.map +0 -1
  42. package/dist/RadioGroupScope.js +0 -25
  43. package/dist/RadioGroupScope.js.map +0 -1
  44. package/dist/a2ui/BindingContext.d.ts +0 -11
  45. package/dist/a2ui/BindingContext.d.ts.map +0 -1
  46. package/dist/a2ui/BindingContext.js +0 -12
  47. package/dist/a2ui/BindingContext.js.map +0 -1
  48. package/dist/a2ui/PresentRenderer.d.ts +0 -11
  49. package/dist/a2ui/PresentRenderer.d.ts.map +0 -1
  50. package/dist/a2ui/PresentRenderer.js +0 -39
  51. package/dist/a2ui/PresentRenderer.js.map +0 -1
  52. package/dist/a2ui/convert.d.ts +0 -15
  53. package/dist/a2ui/convert.d.ts.map +0 -1
  54. package/dist/a2ui/convert.js +0 -728
  55. package/dist/a2ui/convert.js.map +0 -1
  56. package/dist/a2ui/dataModel.d.ts +0 -9
  57. package/dist/a2ui/dataModel.d.ts.map +0 -1
  58. package/dist/a2ui/dataModel.js +0 -44
  59. package/dist/a2ui/dataModel.js.map +0 -1
  60. package/dist/a2ui/reducer.d.ts +0 -8
  61. package/dist/a2ui/reducer.d.ts.map +0 -1
  62. package/dist/a2ui/reducer.js +0 -242
  63. package/dist/a2ui/reducer.js.map +0 -1
  64. package/dist/a2ui/snapshot.d.ts +0 -3
  65. package/dist/a2ui/snapshot.d.ts.map +0 -1
  66. package/dist/a2ui/snapshot.js +0 -33
  67. package/dist/a2ui/snapshot.js.map +0 -1
  68. package/dist/a2ui/types.d.ts +0 -88
  69. package/dist/a2ui/types.d.ts.map +0 -1
  70. package/dist/a2ui/types.js +0 -6
  71. package/dist/a2ui/types.js.map +0 -1
  72. package/dist/a2ui/valueFunctions.d.ts +0 -16
  73. package/dist/a2ui/valueFunctions.d.ts.map +0 -1
  74. package/dist/a2ui/valueFunctions.js +0 -332
  75. package/dist/a2ui/valueFunctions.js.map +0 -1
  76. package/dist/actionRegistry.d.ts +0 -29
  77. package/dist/actionRegistry.d.ts.map +0 -1
  78. package/dist/actionRegistry.js +0 -41
  79. package/dist/actionRegistry.js.map +0 -1
  80. package/dist/answeredValues.d.ts +0 -16
  81. package/dist/answeredValues.d.ts.map +0 -1
  82. package/dist/answeredValues.js +0 -37
  83. package/dist/answeredValues.js.map +0 -1
  84. package/dist/buildPresentParameters.d.ts +0 -21
  85. package/dist/buildPresentParameters.d.ts.map +0 -1
  86. package/dist/buildPresentParameters.js +0 -95
  87. package/dist/buildPresentParameters.js.map +0 -1
  88. package/dist/constants.d.ts +0 -15
  89. package/dist/constants.d.ts.map +0 -1
  90. package/dist/constants.js +0 -19
  91. package/dist/constants.js.map +0 -1
  92. package/dist/convert/boundSpec.d.ts +0 -48
  93. package/dist/convert/boundSpec.d.ts.map +0 -1
  94. package/dist/convert/boundSpec.js +0 -108
  95. package/dist/convert/boundSpec.js.map +0 -1
  96. package/dist/convert/copyBounded.d.ts +0 -25
  97. package/dist/convert/copyBounded.d.ts.map +0 -1
  98. package/dist/convert/copyBounded.js +0 -38
  99. package/dist/convert/copyBounded.js.map +0 -1
  100. package/dist/convert/isElement.d.ts +0 -3
  101. package/dist/convert/isElement.d.ts.map +0 -1
  102. package/dist/convert/isElement.js +0 -6
  103. package/dist/convert/isElement.js.map +0 -1
  104. package/dist/convert/takeRun.d.ts +0 -6
  105. package/dist/convert/takeRun.d.ts.map +0 -1
  106. package/dist/convert/takeRun.js +0 -20
  107. package/dist/convert/takeRun.js.map +0 -1
  108. package/dist/defineGenerativeComponents.d.ts +0 -29
  109. package/dist/defineGenerativeComponents.d.ts.map +0 -1
  110. package/dist/defineGenerativeComponents.js +0 -34
  111. package/dist/defineGenerativeComponents.js.map +0 -1
  112. package/dist/fieldReferences.d.ts +0 -9
  113. package/dist/fieldReferences.d.ts.map +0 -1
  114. package/dist/fieldReferences.js +0 -53
  115. package/dist/fieldReferences.js.map +0 -1
  116. package/dist/generativeUIToJSX.d.ts +0 -18
  117. package/dist/generativeUIToJSX.d.ts.map +0 -1
  118. package/dist/generativeUIToJSX.js +0 -76
  119. package/dist/generativeUIToJSX.js.map +0 -1
  120. package/dist/index.shared.d.ts +0 -15
  121. package/dist/index.shared.d.ts.map +0 -1
  122. package/dist/index.shared.js +0 -9
  123. package/dist/ir.js.map +0 -1
  124. package/dist/renderGenerativeUI.d.ts +0 -14
  125. package/dist/renderGenerativeUI.d.ts.map +0 -1
  126. package/dist/renderGenerativeUI.js +0 -83
  127. package/dist/renderGenerativeUI.js.map +0 -1
  128. package/dist/scopeSchema.d.ts +0 -6
  129. package/dist/scopeSchema.d.ts.map +0 -1
  130. package/dist/scopeSchema.js +0 -56
  131. package/dist/scopeSchema.js.map +0 -1
  132. package/dist/slack/constants.d.ts +0 -93
  133. package/dist/slack/constants.d.ts.map +0 -1
  134. package/dist/slack/constants.js +0 -146
  135. package/dist/slack/constants.js.map +0 -1
  136. package/dist/slack/decodeBlockAction.d.ts +0 -10
  137. package/dist/slack/decodeBlockAction.d.ts.map +0 -1
  138. package/dist/slack/decodeBlockAction.js +0 -129
  139. package/dist/slack/decodeBlockAction.js.map +0 -1
  140. package/dist/slack/fromSlackBlocks.d.ts +0 -27
  141. package/dist/slack/fromSlackBlocks.d.ts.map +0 -1
  142. package/dist/slack/fromSlackBlocks.js +0 -483
  143. package/dist/slack/fromSlackBlocks.js.map +0 -1
  144. package/dist/slack/toSlackBlocks.d.ts +0 -4
  145. package/dist/slack/toSlackBlocks.d.ts.map +0 -1
  146. package/dist/slack/toSlackBlocks.js +0 -901
  147. package/dist/slack/toSlackBlocks.js.map +0 -1
  148. package/dist/slack/types.d.ts +0 -204
  149. package/dist/slack/types.d.ts.map +0 -1
  150. package/dist/slack/types.js +0 -0
  151. package/dist/teams/constants.d.ts +0 -34
  152. package/dist/teams/constants.d.ts.map +0 -1
  153. package/dist/teams/constants.js +0 -68
  154. package/dist/teams/constants.js.map +0 -1
  155. package/dist/teams/decodeSubmitData.d.ts +0 -26
  156. package/dist/teams/decodeSubmitData.d.ts.map +0 -1
  157. package/dist/teams/decodeSubmitData.js +0 -70
  158. package/dist/teams/decodeSubmitData.js.map +0 -1
  159. package/dist/teams/temporalId.d.ts +0 -5
  160. package/dist/teams/temporalId.d.ts.map +0 -1
  161. package/dist/teams/temporalId.js +0 -28
  162. package/dist/teams/temporalId.js.map +0 -1
  163. package/dist/teams/toAdaptiveCard.d.ts +0 -45
  164. package/dist/teams/toAdaptiveCard.d.ts.map +0 -1
  165. package/dist/teams/toAdaptiveCard.js +0 -642
  166. package/dist/teams/toAdaptiveCard.js.map +0 -1
  167. package/dist/teams/toTeamsAttachments.d.ts +0 -10
  168. package/dist/teams/toTeamsAttachments.d.ts.map +0 -1
  169. package/dist/teams/toTeamsAttachments.js +0 -99
  170. package/dist/teams/toTeamsAttachments.js.map +0 -1
  171. package/dist/teams/types.d.ts +0 -224
  172. package/dist/teams/types.d.ts.map +0 -1
  173. package/dist/teams/types.js +0 -0
  174. package/dist/temporal.d.ts +0 -33
  175. package/dist/temporal.d.ts.map +0 -1
  176. package/dist/temporal.js +0 -152
  177. package/dist/temporal.js.map +0 -1
  178. package/dist/types.d.ts +0 -99
  179. package/dist/types.d.ts.map +0 -1
  180. package/dist/types.js +0 -0
  181. package/dist/vocabulary/alert.d.ts +0 -32
  182. package/dist/vocabulary/alert.d.ts.map +0 -1
  183. package/dist/vocabulary/alert.js +0 -160
  184. package/dist/vocabulary/alert.js.map +0 -1
  185. package/dist/vocabulary/collectFormValues.d.ts +0 -23
  186. package/dist/vocabulary/collectFormValues.d.ts.map +0 -1
  187. package/dist/vocabulary/collectFormValues.js +0 -44
  188. package/dist/vocabulary/collectFormValues.js.map +0 -1
  189. package/dist/vocabulary/data.d.ts +0 -66
  190. package/dist/vocabulary/data.d.ts.map +0 -1
  191. package/dist/vocabulary/data.js +0 -503
  192. package/dist/vocabulary/data.js.map +0 -1
  193. package/dist/vocabulary/dispatch.d.ts +0 -9
  194. package/dist/vocabulary/dispatch.d.ts.map +0 -1
  195. package/dist/vocabulary/dispatch.js +0 -50
  196. package/dist/vocabulary/dispatch.js.map +0 -1
  197. package/dist/vocabulary/fact.d.ts +0 -19
  198. package/dist/vocabulary/fact.d.ts.map +0 -1
  199. package/dist/vocabulary/fact.js +0 -51
  200. package/dist/vocabulary/fact.js.map +0 -1
  201. package/dist/vocabulary/form.d.ts +0 -11
  202. package/dist/vocabulary/form.d.ts.map +0 -1
  203. package/dist/vocabulary/form.js +0 -23
  204. package/dist/vocabulary/form.js.map +0 -1
  205. package/dist/vocabulary/formatValue.d.ts +0 -7
  206. package/dist/vocabulary/formatValue.d.ts.map +0 -1
  207. package/dist/vocabulary/formatValue.js +0 -76
  208. package/dist/vocabulary/formatValue.js.map +0 -1
  209. package/dist/vocabulary/icon.d.ts +0 -41
  210. package/dist/vocabulary/icon.d.ts.map +0 -1
  211. package/dist/vocabulary/icon.js +0 -272
  212. package/dist/vocabulary/icon.js.map +0 -1
  213. package/dist/vocabulary/index.d.ts +0 -12
  214. package/dist/vocabulary/index.d.ts.map +0 -1
  215. package/dist/vocabulary/index.js +0 -36
  216. package/dist/vocabulary/index.js.map +0 -1
  217. package/dist/vocabulary/interactive.d.ts +0 -230
  218. package/dist/vocabulary/interactive.d.ts.map +0 -1
  219. package/dist/vocabulary/interactive.js +0 -530
  220. package/dist/vocabulary/interactive.js.map +0 -1
  221. package/dist/vocabulary/layout.d.ts +0 -79
  222. package/dist/vocabulary/layout.d.ts.map +0 -1
  223. package/dist/vocabulary/layout.js +0 -139
  224. package/dist/vocabulary/layout.js.map +0 -1
  225. package/dist/vocabulary/list.d.ts +0 -14
  226. package/dist/vocabulary/list.d.ts.map +0 -1
  227. package/dist/vocabulary/list.js +0 -50
  228. package/dist/vocabulary/list.js.map +0 -1
  229. package/dist/vocabulary/media.d.ts +0 -25
  230. package/dist/vocabulary/media.d.ts.map +0 -1
  231. package/dist/vocabulary/media.js +0 -42
  232. package/dist/vocabulary/media.js.map +0 -1
  233. package/dist/vocabulary/text.d.ts +0 -57
  234. package/dist/vocabulary/text.d.ts.map +0 -1
  235. package/dist/vocabulary/text.js +0 -49
  236. package/dist/vocabulary/text.js.map +0 -1
  237. package/dist/vocabulary/toTextContent.d.ts +0 -2
  238. package/dist/vocabulary/toTextContent.d.ts.map +0 -1
  239. package/dist/vocabulary/toTextContent.js +0 -6
  240. package/dist/vocabulary/toTextContent.js.map +0 -1
  241. package/src/JSONGenerativeUI.client.tsx +0 -168
  242. package/src/JSONGenerativeUI.server.tsx +0 -39
  243. package/src/JSONGenerativeUI.shared.ts +0 -90
  244. package/src/JSONGenerativeUI.test.tsx +0 -1298
  245. package/src/RadioGroupScope.server.test.tsx +0 -24
  246. package/src/RadioGroupScope.tsx +0 -34
  247. package/src/a2ui/BindingContext.ts +0 -26
  248. package/src/a2ui/PresentRenderer.tsx +0 -83
  249. package/src/a2ui/convert.test.ts +0 -2923
  250. package/src/a2ui/convert.ts +0 -1207
  251. package/src/a2ui/dataModel.ts +0 -69
  252. package/src/a2ui/reducer.test.ts +0 -422
  253. package/src/a2ui/reducer.ts +0 -363
  254. package/src/a2ui/snapshot.test.ts +0 -52
  255. package/src/a2ui/snapshot.ts +0 -52
  256. package/src/a2ui/types.ts +0 -114
  257. package/src/a2ui/valueFunctions.test.ts +0 -271
  258. package/src/a2ui/valueFunctions.ts +0 -523
  259. package/src/actionRegistry.test.ts +0 -90
  260. package/src/actionRegistry.ts +0 -88
  261. package/src/answeredValues.test.ts +0 -33
  262. package/src/answeredValues.tsx +0 -70
  263. package/src/buildPresentParameters.test.ts +0 -246
  264. package/src/buildPresentParameters.ts +0 -130
  265. package/src/constants.ts +0 -17
  266. package/src/convert/boundSpec.test.ts +0 -192
  267. package/src/convert/boundSpec.ts +0 -134
  268. package/src/convert/copyBounded.test.ts +0 -131
  269. package/src/convert/copyBounded.ts +0 -38
  270. package/src/convert/isElement.ts +0 -6
  271. package/src/convert/takeRun.test.ts +0 -64
  272. package/src/convert/takeRun.ts +0 -19
  273. package/src/defineGenerativeComponents.ts +0 -38
  274. package/src/fieldReferences.test.ts +0 -66
  275. package/src/fieldReferences.ts +0 -83
  276. package/src/generativeUIToJSX.test.ts +0 -268
  277. package/src/generativeUIToJSX.ts +0 -152
  278. package/src/index.server.test.ts +0 -106
  279. package/src/index.shared.ts +0 -61
  280. package/src/ir.test.ts +0 -203
  281. package/src/renderGenerativeUI.test.tsx +0 -373
  282. package/src/renderGenerativeUI.tsx +0 -165
  283. package/src/scopeSchema.test.ts +0 -72
  284. package/src/scopeSchema.ts +0 -71
  285. package/src/slack/a2uiSlack.test.ts +0 -198
  286. package/src/slack/constants.ts +0 -194
  287. package/src/slack/datePicker.test.ts +0 -612
  288. package/src/slack/decodeBlockAction.test.ts +0 -233
  289. package/src/slack/decodeBlockAction.ts +0 -232
  290. package/src/slack/fromSlackBlocks.test.ts +0 -1465
  291. package/src/slack/fromSlackBlocks.ts +0 -789
  292. package/src/slack/toSlackBlocks.test.ts +0 -3065
  293. package/src/slack/toSlackBlocks.ts +0 -1818
  294. package/src/slack/types.ts +0 -264
  295. package/src/teams/constants.ts +0 -93
  296. package/src/teams/decodeSubmitData.test.ts +0 -397
  297. package/src/teams/decodeSubmitData.ts +0 -110
  298. package/src/teams/temporal.test.ts +0 -766
  299. package/src/teams/temporalId.ts +0 -56
  300. package/src/teams/toAdaptiveCard.test.ts +0 -1897
  301. package/src/teams/toAdaptiveCard.ts +0 -1057
  302. package/src/teams/toTeamsAttachments.test.ts +0 -74
  303. package/src/teams/toTeamsAttachments.ts +0 -133
  304. package/src/teams/types.ts +0 -266
  305. package/src/temporal.test.ts +0 -319
  306. package/src/temporal.ts +0 -259
  307. package/src/types.ts +0 -119
  308. package/src/vocabulary/alert.test.tsx +0 -427
  309. package/src/vocabulary/alert.tsx +0 -217
  310. package/src/vocabulary/collectFormValues.test.ts +0 -389
  311. package/src/vocabulary/collectFormValues.ts +0 -116
  312. package/src/vocabulary/data.test.tsx +0 -858
  313. package/src/vocabulary/data.tsx +0 -819
  314. package/src/vocabulary/datepicker.dom.test.tsx +0 -1148
  315. package/src/vocabulary/dispatch.ts +0 -83
  316. package/src/vocabulary/fact.test.tsx +0 -94
  317. package/src/vocabulary/fact.tsx +0 -54
  318. package/src/vocabulary/form.test.tsx +0 -113
  319. package/src/vocabulary/form.tsx +0 -39
  320. package/src/vocabulary/formatValue.test.ts +0 -72
  321. package/src/vocabulary/formatValue.ts +0 -127
  322. package/src/vocabulary/icon.test.tsx +0 -64
  323. package/src/vocabulary/icon.tsx +0 -174
  324. package/src/vocabulary/index.test.ts +0 -65
  325. package/src/vocabulary/index.ts +0 -33
  326. package/src/vocabulary/interactive.dispatch.test.tsx +0 -454
  327. package/src/vocabulary/interactive.dom.test.tsx +0 -1747
  328. package/src/vocabulary/interactive.test.tsx +0 -377
  329. package/src/vocabulary/interactive.tsx +0 -1048
  330. package/src/vocabulary/layout.test.tsx +0 -323
  331. package/src/vocabulary/layout.tsx +0 -247
  332. package/src/vocabulary/list.test.tsx +0 -222
  333. package/src/vocabulary/list.tsx +0 -50
  334. package/src/vocabulary/media.test.tsx +0 -85
  335. package/src/vocabulary/media.tsx +0 -56
  336. package/src/vocabulary/text.test.tsx +0 -102
  337. package/src/vocabulary/text.tsx +0 -60
  338. package/src/vocabulary/toTextContent.ts +0 -2
@@ -1,264 +0,0 @@
1
- import type { UIElement } from "../ir";
2
-
3
- export type FieldMapping = {
4
- readonly actionId: string;
5
- readonly name: string;
6
- readonly component: string;
7
- readonly inputType?: "time" | "datetime";
8
- readonly offset?: string;
9
- readonly part?: "date" | "time";
10
- readonly pairId?: number;
11
- };
12
-
13
- /** A Slack plain-text composition object. */
14
- export interface SlackPlainText {
15
- readonly type: "plain_text";
16
- readonly text: string;
17
- }
18
-
19
- /** A Slack mrkdwn composition object. */
20
- export interface SlackMrkdwnText {
21
- readonly type: "mrkdwn";
22
- readonly text: string;
23
- }
24
-
25
- /** A text composition object accepted by card and alert text fields. */
26
- export type SlackTextObject = SlackPlainText | SlackMrkdwnText;
27
-
28
- /** A selectable Slack option. */
29
- export interface SlackOption {
30
- readonly text: SlackPlainText;
31
- readonly value: string;
32
- }
33
-
34
- /** A Slack button element. */
35
- export interface SlackButtonElement {
36
- readonly type: "button";
37
- readonly text: SlackPlainText;
38
- readonly action_id: string;
39
- readonly value?: string;
40
- readonly style?: "primary" | "danger";
41
- }
42
-
43
- /** A Slack static-select element. */
44
- export interface SlackStaticSelectElement {
45
- readonly type: "static_select";
46
- readonly action_id: string;
47
- readonly options: readonly SlackOption[];
48
- readonly initial_option?: SlackOption;
49
- readonly placeholder?: SlackPlainText;
50
- }
51
-
52
- /** A Slack date-picker element. */
53
- export interface SlackDatePickerElement {
54
- readonly type: "datepicker";
55
- readonly action_id: string;
56
- readonly initial_date?: string;
57
- }
58
-
59
- export interface SlackTimePickerElement {
60
- readonly type: "timepicker";
61
- readonly action_id: string;
62
- readonly initial_time?: string;
63
- }
64
-
65
- export interface SlackDateTimePickerElement {
66
- readonly type: "datetimepicker";
67
- readonly action_id: string;
68
- readonly initial_date_time?: number;
69
- }
70
-
71
- /** A Slack checkbox-group element. */
72
- export interface SlackCheckboxesElement {
73
- readonly type: "checkboxes";
74
- readonly action_id: string;
75
- readonly options: readonly SlackOption[];
76
- readonly initial_options?: readonly SlackOption[];
77
- }
78
-
79
- /** A Slack radio-button element. */
80
- export interface SlackRadioButtonsElement {
81
- readonly type: "radio_buttons";
82
- readonly action_id: string;
83
- readonly options: readonly SlackOption[];
84
- readonly initial_option?: SlackOption;
85
- }
86
-
87
- /** A Slack plain-text input element. */
88
- export interface SlackPlainTextInputElement {
89
- readonly type: "plain_text_input";
90
- readonly action_id: string;
91
- readonly multiline?: boolean;
92
- readonly initial_value?: string;
93
- readonly placeholder?: SlackPlainText;
94
- }
95
-
96
- /** An element accepted by a Slack actions block. */
97
- export type SlackActionElement =
98
- | SlackButtonElement
99
- | SlackStaticSelectElement
100
- | SlackDatePickerElement
101
- | SlackTimePickerElement
102
- | SlackDateTimePickerElement
103
- | SlackCheckboxesElement
104
- | SlackRadioButtonsElement;
105
-
106
- /** A Slack header block. */
107
- export interface SlackHeaderBlock {
108
- readonly type: "header";
109
- readonly text: SlackPlainText;
110
- }
111
-
112
- /** A Slack section block. */
113
- export interface SlackSectionBlock {
114
- readonly type: "section";
115
- readonly text?: SlackMrkdwnText;
116
- readonly fields?: readonly SlackMrkdwnText[];
117
- readonly accessory?: SlackButtonElement;
118
- }
119
-
120
- /** A Slack context block. */
121
- export interface SlackContextBlock {
122
- readonly type: "context";
123
- readonly elements: readonly SlackMrkdwnText[];
124
- }
125
-
126
- /** A Slack image block. */
127
- export interface SlackImageBlock {
128
- readonly type: "image";
129
- readonly image_url: string;
130
- readonly alt_text: string;
131
- }
132
-
133
- /** A Slack divider block. */
134
- export interface SlackDividerBlock {
135
- readonly type: "divider";
136
- }
137
-
138
- /** A Slack actions block. */
139
- export interface SlackActionsBlock {
140
- readonly type: "actions";
141
- readonly block_id?: string;
142
- readonly elements: readonly SlackActionElement[];
143
- }
144
-
145
- /** A Slack input block. */
146
- export interface SlackInputBlock {
147
- readonly type: "input";
148
- readonly block_id?: string;
149
- readonly label: SlackPlainText;
150
- readonly element: SlackPlainTextInputElement;
151
- }
152
-
153
- /** A text cell in a Slack data-table block. */
154
- export interface SlackDataTableRawTextCell {
155
- readonly type: "raw_text";
156
- readonly text: string;
157
- }
158
-
159
- /** A numeric cell in a Slack data-table block. */
160
- export interface SlackDataTableRawNumberCell {
161
- readonly type: "raw_number";
162
- readonly text: string;
163
- }
164
-
165
- /** A cell value in a Slack data-table block. */
166
- export type SlackDataTableCell =
167
- | SlackDataTableRawTextCell
168
- | SlackDataTableRawNumberCell;
169
-
170
- /**
171
- * A Slack card block. A card does not nest arbitrary blocks: content is
172
- * limited to a hero image, title, subtitle, body, subtext, and up to three
173
- * action buttons. At least one of `hero_image`, `title`, `actions`, or `body`
174
- * is required.
175
- */
176
- export interface SlackCardBlock {
177
- readonly type: "card";
178
- readonly hero_image?: SlackImageBlock;
179
- readonly title?: SlackTextObject;
180
- readonly subtitle?: SlackTextObject;
181
- readonly body?: SlackTextObject;
182
- readonly subtext?: SlackTextObject;
183
- readonly actions?: readonly SlackButtonElement[];
184
- }
185
-
186
- /** A Slack carousel block: a horizontally scrollable group of card blocks. */
187
- export interface SlackCarouselBlock {
188
- readonly type: "carousel";
189
- readonly elements: readonly SlackCardBlock[];
190
- }
191
-
192
- /** A Slack data-table block. The first entry in `rows` is the header row. */
193
- export interface SlackDataTableBlock {
194
- readonly type: "data_table";
195
- readonly caption: string;
196
- readonly rows: readonly (readonly SlackDataTableCell[])[];
197
- readonly page_size?: number;
198
- }
199
-
200
- /** A Slack markdown block. */
201
- export interface SlackMarkdownBlock {
202
- readonly type: "markdown";
203
- readonly text: string;
204
- }
205
-
206
- /** The severity level accepted by a Slack alert block. */
207
- export type SlackAlertLevel =
208
- | "default"
209
- | "info"
210
- | "warning"
211
- | "error"
212
- | "success";
213
-
214
- /** A Slack alert block. Alert blocks are only supported in modals. */
215
- export interface SlackAlertBlock {
216
- readonly type: "alert";
217
- readonly text: SlackTextObject;
218
- readonly level?: SlackAlertLevel;
219
- }
220
-
221
- /** A block emitted by the Slack converter. */
222
- export type SlackBlock =
223
- | SlackHeaderBlock
224
- | SlackSectionBlock
225
- | SlackContextBlock
226
- | SlackImageBlock
227
- | SlackDividerBlock
228
- | SlackActionsBlock
229
- | SlackInputBlock
230
- | SlackCardBlock
231
- | SlackCarouselBlock
232
- | SlackDataTableBlock
233
- | SlackMarkdownBlock
234
- | SlackAlertBlock;
235
-
236
- /** Options that select the target Slack surface. */
237
- export interface ToSlackBlocksOptions {
238
- readonly surface?: "message" | "modal";
239
- }
240
-
241
- /**
242
- * A non-fatal note reported during Slack conversion.
243
- *
244
- * `clamped` removed content to fit a limit, `dropped` discarded a node or one
245
- * of its props and may leave a placeholder note behind, and `fallback` emitted
246
- * the node in a different form than requested.
247
- */
248
- export interface SlackConversionWarning {
249
- readonly code: "clamped" | "dropped" | "fallback";
250
- readonly component: string;
251
- readonly detail: string;
252
- }
253
-
254
- /** The blocks and non-fatal warnings produced by Slack conversion. */
255
- export interface SlackBlocksResult {
256
- readonly blocks: SlackBlock[];
257
- readonly warnings: SlackConversionWarning[];
258
- }
259
-
260
- /** The IR nodes and non-fatal warnings produced by converting Slack Block Kit JSON back into generative UI. */
261
- export interface FromSlackBlocksResult {
262
- readonly nodes: UIElement[];
263
- readonly warnings: SlackConversionWarning[];
264
- }
@@ -1,93 +0,0 @@
1
- import type {
2
- TeamsAdaptiveCard,
3
- TeamsCardAttachment,
4
- TeamsCardElement,
5
- TeamsSubmitAction,
6
- TeamsSubmitData,
7
- } from "./types";
8
-
9
- /** The Adaptive Card schema version emitted by {@link toAdaptiveCard}: the Teams desktop/web cap (mobile clients cap at 1.2). */
10
- export const AC_VERSION = "1.5";
11
-
12
- /** The `$schema` URL stamped on every emitted card. */
13
- export const ADAPTIVE_CARD_SCHEMA =
14
- "http://adaptivecards.io/schemas/adaptive-card.json";
15
-
16
- /** The `contentType` stamped on every emitted attachment. */
17
- export const ATTACHMENT_CONTENT_TYPE =
18
- "application/vnd.microsoft.card.adaptive";
19
-
20
- /** The maximum number of attachments produced from a root-level Carousel. */
21
- export const CAROUSEL_ATTACHMENT_CAP = 10;
22
-
23
- /** The maximum number of primary-mode actions in one ActionSet; extras are set to secondary mode instead of being dropped. */
24
- export const PRIMARY_ACTION_CAP = 6;
25
-
26
- /** The maximum number of data rows in a Table. */
27
- export const TABLE_ROW_CAP = 100;
28
-
29
- /** The maximum number of columns in a Table. */
30
- export const TABLE_COLUMN_CAP = 20;
31
-
32
- /** The maximum number of choices in a Select, RadioGroup, or CheckboxGroup. */
33
- export const CHOICE_OPTION_CAP = 100;
34
-
35
- /** The soft byte-count budget for a serialized card, past which a warning notes Teams' 100 KB bot message limit (the card is never truncated to fit it). */
36
- export const PAYLOAD_SOFT_CAP = 80000;
37
-
38
- const textEncoder = new TextEncoder();
39
-
40
- /** Measures the wire size of `value` in UTF-8 bytes rather than UTF-16 code units. */
41
- export function utf8ByteLength(value: string): number {
42
- return textEncoder.encode(value).byteLength;
43
- }
44
-
45
- /** Builds the fixed-shape Adaptive Card envelope around a converted body. */
46
- export function buildCard(body: TeamsCardElement[]): TeamsAdaptiveCard {
47
- return {
48
- $schema: ADAPTIVE_CARD_SCHEMA,
49
- type: "AdaptiveCard",
50
- version: AC_VERSION,
51
- body,
52
- actions: [],
53
- };
54
- }
55
-
56
- /** Wraps a card as a bot-framework message attachment. */
57
- export function buildAttachment(card: TeamsAdaptiveCard): TeamsCardAttachment {
58
- return { contentType: ATTACHMENT_CONTENT_TYPE, content: card };
59
- }
60
-
61
- const isRecord = (value: unknown): value is Record<string, unknown> =>
62
- typeof value === "object" && value !== null && !Array.isArray(value);
63
-
64
- /**
65
- * Nests an IR action under an `aui` key so `decodeSubmitData` can invert it
66
- * back out of the merged `activity.value` object a Teams bot receives,
67
- * alongside whatever other named inputs shared the card.
68
- */
69
- export function buildSubmitData(action: unknown): TeamsSubmitData {
70
- if (!isRecord(action)) return { aui: { type: "action" } };
71
- const { type: rawType, ...payload } = action;
72
- const type = typeof rawType === "string" ? rawType : "action";
73
- return {
74
- aui: {
75
- type,
76
- ...(Object.keys(payload).length > 0 ? { payload } : {}),
77
- },
78
- };
79
- }
80
-
81
- /** Builds an Action.Submit carrying `action` in the `aui` envelope. */
82
- export function buildSubmitAction(
83
- title: string,
84
- action: unknown,
85
- mode?: "secondary",
86
- ): TeamsSubmitAction {
87
- return {
88
- type: "Action.Submit",
89
- title,
90
- data: buildSubmitData(action),
91
- ...(mode !== undefined ? { mode } : {}),
92
- };
93
- }