@grackle-ai/web-components 0.114.0 → 0.115.1

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 (22) hide show
  1. package/.rush/temp/{b1a36bcc314d65fbd843fcff6d3127ebdf827e06.tar.log → 689afee5625b24607e65ba3a6d3b279d5895784d.tar.log} +13 -13
  2. package/.rush/temp/{989dfd9dfc66be6288052dccbf2952ddad9066c6.untar.log → 689afee5625b24607e65ba3a6d3b279d5895784d.untar.log} +2 -2
  3. package/.rush/temp/chunked-rush-logs/web-components._phase_build.chunks.jsonl +4 -4
  4. package/.rush/temp/chunked-rush-logs/web-components._phase_test.chunks.jsonl +27 -26
  5. package/.rush/temp/{989dfd9dfc66be6288052dccbf2952ddad9066c6.tar.log → e12a67384bc67b4cba24253105ba33ed0945c91d.tar.log} +2 -2
  6. package/.rush/temp/{b1a36bcc314d65fbd843fcff6d3127ebdf827e06.untar.log → e12a67384bc67b4cba24253105ba33ed0945c91d.untar.log} +2 -2
  7. package/.rush/temp/operation/_phase_build/all.log +4 -4
  8. package/.rush/temp/operation/_phase_build/log-chunks.jsonl +4 -4
  9. package/.rush/temp/operation/_phase_build/state.json +1 -1
  10. package/.rush/temp/operation/_phase_test/all.log +27 -26
  11. package/.rush/temp/operation/_phase_test/log-chunks.jsonl +27 -26
  12. package/.rush/temp/operation/_phase_test/state.json +1 -1
  13. package/README.md +1 -1
  14. package/dist/index.js +2 -2
  15. package/package.json +2 -2
  16. package/rush-logs/web-components._phase_build.cache.log +1 -1
  17. package/rush-logs/web-components._phase_build.log +4 -4
  18. package/rush-logs/web-components._phase_test.cache.log +1 -1
  19. package/rush-logs/web-components._phase_test.log +27 -26
  20. package/src/components/display/EventRenderer.stories.tsx +44 -0
  21. package/src/components/display/EventRenderer.tsx +8 -2
  22. package/temp/build/lint/_eslint-5eVG3S6w.json +2 -2
@@ -1,5 +1,5 @@
1
- Start time: Sat May 23 2026 08:11:26 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -c -f /home/runner/work/grackle/grackle/common/temp/build-cache/b1a36bcc314d65fbd843fcff6d3127ebdf827e06-565b36fa3df78b4b.temp -z --files-from=-"
1
+ Start time: Sat May 23 2026 14:09:51 GMT+0000 (Coordinated Universal Time)
2
+ Invoking "/usr/bin/tar -c -f /home/runner/work/grackle/grackle/common/temp/build-cache/689afee5625b24607e65ba3a6d3b279d5895784d-15f283e5d09b0e98.temp -z --files-from=-"
3
3
 
4
4
  ======= BEGIN PROCESS INPUT ======
5
5
  .rush/temp/operation/_phase_build/all.log
@@ -27,7 +27,7 @@ storybook-static/assets/Callout-D5tFovqB.css
27
27
  storybook-static/assets/Callout.stories-BBFu9Kut.js
28
28
  storybook-static/assets/ChatInput-Ci5SZXgq.css
29
29
  storybook-static/assets/ChatInput.stories--4BDWKcJ.js
30
- storybook-static/assets/Color-YHDXOIA2-jA7jRkde.js
30
+ storybook-static/assets/Color-YHDXOIA2-CB5Lh7DF.js
31
31
  storybook-static/assets/ConfirmDialog-B_iVdIL1.js
32
32
  storybook-static/assets/ConfirmDialog-Jqq4bffz.css
33
33
  storybook-static/assets/ConfirmDialog.stories-D8W6DL7L.js
@@ -41,7 +41,7 @@ storybook-static/assets/DagView-BZV40eAE.css
41
41
  storybook-static/assets/DagView.stories-CgBF-Yag.js
42
42
  storybook-static/assets/DemoBanner-DVSwhfpb.css
43
43
  storybook-static/assets/DemoBanner.stories-vCkrb_NA.js
44
- storybook-static/assets/DocsRenderer-CFRXHY34-By-ERMQX.js
44
+ storybook-static/assets/DocsRenderer-CFRXHY34-DNRHYEVt.js
45
45
  storybook-static/assets/EditableCheckbox.stories-B8S2-OOA.js
46
46
  storybook-static/assets/EditableField-C3Qf3r87.css
47
47
  storybook-static/assets/EditableField.module-B3_EXsWq.js
@@ -57,11 +57,11 @@ storybook-static/assets/EnvironmentSelect.stories-BWBea2nK.js
57
57
  storybook-static/assets/EventHoverRow-CxddGRVu.css
58
58
  storybook-static/assets/EventHoverRow-ImV92zZd.js
59
59
  storybook-static/assets/EventHoverRow.stories-BK7zYoTs.js
60
- storybook-static/assets/EventRenderer-BOzqBM9b.js
61
60
  storybook-static/assets/EventRenderer-BlNCdNZc.css
62
- storybook-static/assets/EventRenderer.stories-BBoyf7NN.js
61
+ storybook-static/assets/EventRenderer-Duck86gJ.js
62
+ storybook-static/assets/EventRenderer.stories-B6E5gUrT.js
63
63
  storybook-static/assets/EventStream-CfWRUqli.css
64
- storybook-static/assets/EventStream.stories-CBqnid3p.js
64
+ storybook-static/assets/EventStream.stories-C0enYms_.js
65
65
  storybook-static/assets/FileEditCard-HLGBsCbP.js
66
66
  storybook-static/assets/FileEditCard.stories-DtAmBgWl.js
67
67
  storybook-static/assets/FileReadCard-C_-HjDj_.js
@@ -90,7 +90,7 @@ storybook-static/assets/KnowledgeNav.stories-CBOlv9hr.js
90
90
  storybook-static/assets/McpAppWidget-4flrrwkF.js
91
91
  storybook-static/assets/McpAppWidget.stories-DHwsaddN.js
92
92
  storybook-static/assets/McpToolSelector-Aen78-OR.css
93
- storybook-static/assets/McpToolSelector.stories-DpLSFAs-.js
93
+ storybook-static/assets/McpToolSelector.stories-3kqEOdOF.js
94
94
  storybook-static/assets/MetadataCard-DjQjUuXl.js
95
95
  storybook-static/assets/MetadataCard.stories-qKuIZAhH.js
96
96
  storybook-static/assets/PersonaManager-By6uQtUH.css
@@ -132,7 +132,7 @@ storybook-static/assets/TaskCard.stories-Gw2iralM.js
132
132
  storybook-static/assets/TaskEditPanel-Cr1utkBZ.css
133
133
  storybook-static/assets/TaskEditPanel.stories-alkHhj59.js
134
134
  storybook-static/assets/TaskList-BuDIJ0ee.css
135
- storybook-static/assets/TaskList.stories-DogHEXSG.js
135
+ storybook-static/assets/TaskList.stories-Dy52qfB3.js
136
136
  storybook-static/assets/TaskNode-C5aJky5a.css
137
137
  storybook-static/assets/TaskNode-DbPTDYLn.js
138
138
  storybook-static/assets/TaskNode.stories-B-aK2Fhu.js
@@ -173,12 +173,12 @@ storybook-static/assets/chunk-XP5HYGXS-BHXC9YeQ.js
173
173
  storybook-static/assets/circle-BkTGUnbi.js
174
174
  storybook-static/assets/classifyTool-DKAAIUjq.js
175
175
  storybook-static/assets/clipboard-oRmom8BR.js
176
- storybook-static/assets/entry-preview-CWcOOa5o.js
176
+ storybook-static/assets/entry-preview-CkSA9dtH.js
177
177
  storybook-static/assets/entry-preview-docs-CAgjVEX9.js
178
- storybook-static/assets/enum-converters-0Fk9LN-x.js
178
+ storybook-static/assets/enum-converters-CR7wmqUG.js
179
179
  storybook-static/assets/format-cBZDFpLA.js
180
180
  storybook-static/assets/iconSize-Dmuhx6ZO.js
181
- storybook-static/assets/iframe-Cg8hh6Sq.js
181
+ storybook-static/assets/iframe-szrxTAQm.js
182
182
  storybook-static/assets/index-B2V9nFGU.js
183
183
  storybook-static/assets/index-BPftEo5x.js
184
184
  storybook-static/assets/index-C5DSJyK4.js
@@ -192,7 +192,7 @@ storybook-static/assets/mockData-2f2DEnLz.js
192
192
  storybook-static/assets/navigation-CgBzMAFl.js
193
193
  storybook-static/assets/preview-DAVcJ_De.css
194
194
  storybook-static/assets/preview-DitdPczW.js
195
- storybook-static/assets/preview-chRj0nfZ.js
195
+ storybook-static/assets/preview-fG0AcpYZ.js
196
196
  storybook-static/assets/proxy-YSrA_aH7.js
197
197
  storybook-static/assets/react-18-ChRu7atC.js
198
198
  storybook-static/assets/search-ELdqPLK3.js
@@ -1,5 +1,5 @@
1
- Start time: Sat May 23 2026 08:14:31 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -x -m -f /home/runner/work/grackle/grackle/common/temp/build-cache/989dfd9dfc66be6288052dccbf2952ddad9066c6"
1
+ Start time: Sat May 23 2026 14:13:00 GMT+0000 (Coordinated Universal Time)
2
+ Invoking "/usr/bin/tar -x -m -f /home/runner/work/grackle/grackle/common/temp/build-cache/689afee5625b24607e65ba3a6d3b279d5895784d"
3
3
 
4
4
  ======= BEGIN PROCESS INPUT ======
5
5
 
@@ -12,8 +12,8 @@
12
12
  {"kind":"O","text":"computing gzip size...\n"}
13
13
  {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[35mindex.css \u001b[39m\u001b[1m\u001b[2m 159.65 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m │ gzip: 20.78 kB\u001b[22m\n"}
14
14
  {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mMcpAppWidget-CSX2W2Vb.js \u001b[39m\u001b[1m\u001b[2m 205.28 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m │ gzip: 47.19 kB\u001b[22m\n"}
15
- {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mindex.js \u001b[39m\u001b[1m\u001b[33m1,392.78 kB\u001b[39m\u001b[22m\u001b[2m │ gzip: 356.09 kB\u001b[22m\n"}
16
- {"kind":"O","text":"\u001b[32m✓ built in 5.94s\u001b[39m\n"}
15
+ {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mindex.js \u001b[39m\u001b[1m\u001b[33m1,392.84 kB\u001b[39m\u001b[22m\u001b[2m │ gzip: 356.12 kB\u001b[22m\n"}
16
+ {"kind":"O","text":"\u001b[32m✓ built in 5.74s\u001b[39m\n"}
17
17
  {"kind":"O","text":"[build:vite-build] Vite build completed.\n"}
18
- {"kind":"O","text":" ---- build finished (75.104s) ---- \n"}
19
- {"kind":"O","text":"-------------------- Finished (75.107s) --------------------\n"}
18
+ {"kind":"O","text":" ---- build finished (75.038s) ---- \n"}
19
+ {"kind":"O","text":"-------------------- Finished (75.045s) --------------------\n"}
@@ -5,31 +5,32 @@
5
5
  {"kind":"O","text":"\n"}
6
6
  {"kind":"O","text":"\u001b[1m\u001b[46m RUN \u001b[49m\u001b[22m \u001b[36mv3.2.4 \u001b[39m\u001b[90m/home/runner/work/grackle/grackle/packages/web-components\u001b[39m\n"}
7
7
  {"kind":"O","text":"\n"}
8
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/sessionEvents.test.ts \u001b[2m(\u001b[22m\u001b[2m14 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 67\u001b[2mms\u001b[22m\u001b[39m\n"}
9
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/eventContent.test.ts \u001b[2m(\u001b[22m\u001b[2m38 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 187\u001b[2mms\u001b[22m\u001b[39m\n"}
10
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/dashboard.test.ts \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 38\u001b[2mms\u001b[22m\u001b[39m\n"}
11
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/route-config.test.ts \u001b[2m(\u001b[22m\u001b[2m23 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 90\u001b[2mms\u001b[22m\u001b[39m\n"}
12
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/streamCoordination.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 29\u001b[2mms\u001b[22m\u001b[39m\n"}
13
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/breadcrumbs.test.ts \u001b[2m(\u001b[22m\u001b[2m18 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 41\u001b[2mms\u001b[22m\u001b[39m\n"}
14
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/scrollUtils.test.ts \u001b[2m(\u001b[22m\u001b[2m11 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 41\u001b[2mms\u001b[22m\u001b[39m\n"}
15
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/classifyTool.test.ts \u001b[2m(\u001b[22m\u001b[2m6 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 19\u001b[2mms\u001b[22m\u001b[39m\n"}
16
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/toolCardHelpers.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 14\u001b[2mms\u001b[22m\u001b[39m\n"}
8
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/sessionEvents.test.ts \u001b[2m(\u001b[22m\u001b[2m14 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 45\u001b[2mms\u001b[22m\u001b[39m\n"}
9
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/eventContent.test.ts \u001b[2m(\u001b[22m\u001b[2m38 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 118\u001b[2mms\u001b[22m\u001b[39m\n"}
10
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/dashboard.test.ts \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 23\u001b[2mms\u001b[22m\u001b[39m\n"}
11
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/route-config.test.ts \u001b[2m(\u001b[22m\u001b[2m23 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 53\u001b[2mms\u001b[22m\u001b[39m\n"}
12
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/streamCoordination.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 26\u001b[2mms\u001b[22m\u001b[39m\n"}
13
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/breadcrumbs.test.ts \u001b[2m(\u001b[22m\u001b[2m18 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 43\u001b[2mms\u001b[22m\u001b[39m\n"}
14
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/scrollUtils.test.ts \u001b[2m(\u001b[22m\u001b[2m11 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 39\u001b[2mms\u001b[22m\u001b[39m\n"}
15
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/classifyTool.test.ts \u001b[2m(\u001b[22m\u001b[2m6 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 17\u001b[2mms\u001b[22m\u001b[39m\n"}
17
16
  {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/assetUrl.test.ts \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 11\u001b[2mms\u001b[22m\u001b[39m\n"}
18
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/extractText.test.tsx \u001b[2m(\u001b[22m\u001b[2m8 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 12\u001b[2mms\u001b[22m\u001b[39m\n"}
19
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/hooks/useEventSelection.test.ts \u001b[2m(\u001b[22m\u001b[2m13 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 244\u001b[2mms\u001b[22m\u001b[39m\n"}
20
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/editable/useEditableField.test.tsx \u001b[2m(\u001b[22m\u001b[2m17 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 231\u001b[2mms\u001b[22m\u001b[39m\n"}
21
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/notifications/UpdateBanner.test.tsx \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 169\u001b[2mms\u001b[22m\u001b[39m\n"}
22
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/McpAppWidget.test.tsx \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 234\u001b[2mms\u001b[22m\u001b[39m\n"}
23
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/grackleHostStyleVariables.test.ts \u001b[2m(\u001b[22m\u001b[2m2 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 477\u001b[2mms\u001b[22m\u001b[39m\n"}
24
- {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m grackleHostStyleVariables\u001b[2m > \u001b[22malways returns the MCP-standard fallback variables \u001b[33m 467\u001b[2mms\u001b[22m\u001b[39m\n"}
17
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/toolCardHelpers.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 18\u001b[2mms\u001b[22m\u001b[39m\n"}
18
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/extractText.test.tsx \u001b[2m(\u001b[22m\u001b[2m8 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 33\u001b[2mms\u001b[22m\u001b[39m\n"}
19
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/editable/useEditableField.test.tsx \u001b[2m(\u001b[22m\u001b[2m17 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 159\u001b[2mms\u001b[22m\u001b[39m\n"}
20
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/hooks/useEventSelection.test.ts \u001b[2m(\u001b[22m\u001b[2m13 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 175\u001b[2mms\u001b[22m\u001b[39m\n"}
21
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/McpAppWidget.test.tsx \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 594\u001b[2mms\u001b[22m\u001b[39m\n"}
22
+ {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m McpAppWidget\u001b[2m > \u001b[22mmounts an iframe host for the widget \u001b[33m 399\u001b[2mms\u001b[22m\u001b[39m\n"}
23
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/notifications/UpdateBanner.test.tsx \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 124\u001b[2mms\u001b[22m\u001b[39m\n"}
24
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/grackleHostStyleVariables.test.ts \u001b[2m(\u001b[22m\u001b[2m2 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 465\u001b[2mms\u001b[22m\u001b[39m\n"}
25
+ {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m grackleHostStyleVariables\u001b[2m > \u001b[22malways returns the MCP-standard fallback variables \u001b[33m 443\u001b[2mms\u001b[22m\u001b[39m\n"}
25
26
  {"kind":"O","text":"\n"}
26
27
  {"kind":"O","text":"\u001b[2m Test Files \u001b[22m \u001b[1m\u001b[32m16 passed\u001b[39m\u001b[22m\u001b[90m (16)\u001b[39m\n"}
27
28
  {"kind":"O","text":"\u001b[2m Tests \u001b[22m \u001b[1m\u001b[32m184 passed\u001b[39m\u001b[22m\u001b[90m (184)\u001b[39m\n"}
28
- {"kind":"O","text":"\u001b[2m Start at \u001b[22m 08:12:34\n"}
29
- {"kind":"O","text":"\u001b[2m Duration \u001b[22m 15.79s\u001b[2m (transform 2.74s, setup 0ms, collect 15.85s, tests 1.90s, environment 10.61s, prepare 6.00s)\u001b[22m\n"}
29
+ {"kind":"O","text":"\u001b[2m Start at \u001b[22m 14:11:00\n"}
30
+ {"kind":"O","text":"\u001b[2m Duration \u001b[22m 16.59s\u001b[2m (transform 2.42s, setup 0ms, collect 18.42s, tests 1.94s, environment 11.64s, prepare 5.10s)\u001b[22m\n"}
30
31
  {"kind":"O","text":"\n"}
31
32
  {"kind":"O","text":"[test:vitest] Vitest completed.\n"}
32
- {"kind":"O","text":"[test:storybook-test] Starting Storybook static server on port 45781...\n"}
33
+ {"kind":"O","text":"[test:storybook-test] Starting Storybook static server on port 34877...\n"}
33
34
  {"kind":"O","text":"[test:storybook-test] Storybook server ready. Running interaction tests...\n"}
34
35
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: adapter-manager\n"}
35
36
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
@@ -96,16 +97,16 @@
96
97
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-hub.js\n"}
97
98
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-hub.ts\n"}
98
99
  {"kind":"O","text":"\n"}
99
- {"kind":"O","text":"jest-haste-map: duplicate manual mock found: stream-registry\n"}
100
- {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
101
- {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-registry.js\n"}
102
- {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-registry.ts\n"}
103
- {"kind":"O","text":"\n"}
104
100
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: token-push\n"}
105
101
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
106
102
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/token-push.js\n"}
107
103
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/token-push.ts\n"}
108
104
  {"kind":"O","text":"\n"}
105
+ {"kind":"O","text":"jest-haste-map: duplicate manual mock found: stream-registry\n"}
106
+ {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
107
+ {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-registry.js\n"}
108
+ {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-registry.ts\n"}
109
+ {"kind":"O","text":"\n"}
109
110
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: utils/exec\n"}
110
111
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
111
112
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/utils/exec.js\n"}
@@ -122,5 +123,5 @@
122
123
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/utils/network.ts\n"}
123
124
  {"kind":"O","text":"\n"}
124
125
  {"kind":"O","text":"[test:storybook-test] Storybook interaction tests completed.\n"}
125
- {"kind":"O","text":" ---- test finished (111.929s) ---- \n"}
126
- {"kind":"O","text":"-------------------- Finished (111.943s) --------------------\n"}
126
+ {"kind":"O","text":" ---- test finished (115.192s) ---- \n"}
127
+ {"kind":"O","text":"-------------------- Finished (115.202s) --------------------\n"}
@@ -1,5 +1,5 @@
1
- Start time: Sat May 23 2026 08:14:25 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -c -f /home/runner/work/grackle/grackle/common/temp/build-cache/989dfd9dfc66be6288052dccbf2952ddad9066c6-37ab3f45edad08dc.temp -z --files-from=-"
1
+ Start time: Sat May 23 2026 14:12:54 GMT+0000 (Coordinated Universal Time)
2
+ Invoking "/usr/bin/tar -c -f /home/runner/work/grackle/grackle/common/temp/build-cache/e12a67384bc67b4cba24253105ba33ed0945c91d-51eae3866dc14bc6.temp -z --files-from=-"
3
3
 
4
4
  ======= BEGIN PROCESS INPUT ======
5
5
  .rush/temp/operation/_phase_test/all.log
@@ -1,5 +1,5 @@
1
- Start time: Sat May 23 2026 08:14:31 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -x -m -f /home/runner/work/grackle/grackle/common/temp/build-cache/b1a36bcc314d65fbd843fcff6d3127ebdf827e06"
1
+ Start time: Sat May 23 2026 14:13:00 GMT+0000 (Coordinated Universal Time)
2
+ Invoking "/usr/bin/tar -x -m -f /home/runner/work/grackle/grackle/common/temp/build-cache/e12a67384bc67b4cba24253105ba33ed0945c91d"
3
3
 
4
4
  ======= BEGIN PROCESS INPUT ======
5
5
 
@@ -12,8 +12,8 @@ rendering chunks...
12
12
  computing gzip size...
13
13
  dist/index.css 159.65 kB │ gzip: 20.78 kB
14
14
  dist/McpAppWidget-CSX2W2Vb.js 205.28 kB │ gzip: 47.19 kB
15
- dist/index.js 1,392.78 kB │ gzip: 356.09 kB
16
- ✓ built in 5.94s
15
+ dist/index.js 1,392.84 kB │ gzip: 356.12 kB
16
+ ✓ built in 5.74s
17
17
  [build:vite-build] Vite build completed.
18
- ---- build finished (75.104s) ----
19
- -------------------- Finished (75.107s) --------------------
18
+ ---- build finished (75.038s) ----
19
+ -------------------- Finished (75.045s) --------------------
@@ -12,8 +12,8 @@
12
12
  {"kind":"O","text":"computing gzip size...\n"}
13
13
  {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[35mindex.css \u001b[39m\u001b[1m\u001b[2m 159.65 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m │ gzip: 20.78 kB\u001b[22m\n"}
14
14
  {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mMcpAppWidget-CSX2W2Vb.js \u001b[39m\u001b[1m\u001b[2m 205.28 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m │ gzip: 47.19 kB\u001b[22m\n"}
15
- {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mindex.js \u001b[39m\u001b[1m\u001b[33m1,392.78 kB\u001b[39m\u001b[22m\u001b[2m │ gzip: 356.09 kB\u001b[22m\n"}
16
- {"kind":"O","text":"\u001b[32m✓ built in 5.94s\u001b[39m\n"}
15
+ {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mindex.js \u001b[39m\u001b[1m\u001b[33m1,392.84 kB\u001b[39m\u001b[22m\u001b[2m │ gzip: 356.12 kB\u001b[22m\n"}
16
+ {"kind":"O","text":"\u001b[32m✓ built in 5.74s\u001b[39m\n"}
17
17
  {"kind":"O","text":"[build:vite-build] Vite build completed.\n"}
18
- {"kind":"O","text":" ---- build finished (75.104s) ---- \n"}
19
- {"kind":"O","text":"-------------------- Finished (75.107s) --------------------\n"}
18
+ {"kind":"O","text":" ---- build finished (75.038s) ---- \n"}
19
+ {"kind":"O","text":"-------------------- Finished (75.045s) --------------------\n"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 75889.199465
2
+ "nonCachedDurationMs": 75793.988472
3
3
  }
@@ -5,31 +5,32 @@ The provided list of phases does not contain all phase dependencies. You may nee
5
5
 
6
6
  RUN v3.2.4 /home/runner/work/grackle/grackle/packages/web-components
7
7
 
8
- ✓ src/utils/sessionEvents.test.ts (14 tests) 67ms
9
- ✓ src/utils/eventContent.test.ts (38 tests) 187ms
10
- ✓ src/utils/dashboard.test.ts (4 tests) 38ms
11
- ✓ src/utils/route-config.test.ts (23 tests) 90ms
12
- ✓ src/utils/streamCoordination.test.ts (10 tests) 29ms
13
- ✓ src/utils/breadcrumbs.test.ts (18 tests) 41ms
14
- ✓ src/utils/scrollUtils.test.ts (11 tests) 41ms
15
- ✓ src/components/tools/classifyTool.test.ts (6 tests) 19ms
16
- ✓ src/components/tools/toolCardHelpers.test.ts (10 tests) 14ms
8
+ ✓ src/utils/sessionEvents.test.ts (14 tests) 45ms
9
+ ✓ src/utils/eventContent.test.ts (38 tests) 118ms
10
+ ✓ src/utils/dashboard.test.ts (4 tests) 23ms
11
+ ✓ src/utils/route-config.test.ts (23 tests) 53ms
12
+ ✓ src/utils/streamCoordination.test.ts (10 tests) 26ms
13
+ ✓ src/utils/breadcrumbs.test.ts (18 tests) 43ms
14
+ ✓ src/utils/scrollUtils.test.ts (11 tests) 39ms
15
+ ✓ src/components/tools/classifyTool.test.ts (6 tests) 17ms
17
16
  ✓ src/utils/assetUrl.test.ts (3 tests) 11ms
18
- ✓ src/components/display/extractText.test.tsx (8 tests) 12ms
19
- ✓ src/hooks/useEventSelection.test.ts (13 tests) 244ms
20
- ✓ src/components/editable/useEditableField.test.tsx (17 tests) 231ms
21
- ✓ src/components/notifications/UpdateBanner.test.tsx (4 tests) 169ms
22
- ✓ src/components/display/McpAppWidget.test.tsx (3 tests) 234ms
23
- src/utils/grackleHostStyleVariables.test.ts (2 tests) 477ms
24
- grackleHostStyleVariables > always returns the MCP-standard fallback variables 467ms
17
+ ✓ src/components/tools/toolCardHelpers.test.ts (10 tests) 18ms
18
+ ✓ src/components/display/extractText.test.tsx (8 tests) 33ms
19
+ ✓ src/components/editable/useEditableField.test.tsx (17 tests) 159ms
20
+ ✓ src/hooks/useEventSelection.test.ts (13 tests) 175ms
21
+ ✓ src/components/display/McpAppWidget.test.tsx (3 tests) 594ms
22
+ McpAppWidget > mounts an iframe host for the widget 399ms
23
+ src/components/notifications/UpdateBanner.test.tsx (4 tests) 124ms
24
+ ✓ src/utils/grackleHostStyleVariables.test.ts (2 tests) 465ms
25
+ ✓ grackleHostStyleVariables > always returns the MCP-standard fallback variables 443ms
25
26
 
26
27
  Test Files 16 passed (16)
27
28
  Tests 184 passed (184)
28
- Start at 08:12:34
29
- Duration 15.79s (transform 2.74s, setup 0ms, collect 15.85s, tests 1.90s, environment 10.61s, prepare 6.00s)
29
+ Start at 14:11:00
30
+ Duration 16.59s (transform 2.42s, setup 0ms, collect 18.42s, tests 1.94s, environment 11.64s, prepare 5.10s)
30
31
 
31
32
  [test:vitest] Vitest completed.
32
- [test:storybook-test] Starting Storybook static server on port 45781...
33
+ [test:storybook-test] Starting Storybook static server on port 34877...
33
34
  [test:storybook-test] Storybook server ready. Running interaction tests...
34
35
  jest-haste-map: duplicate manual mock found: adapter-manager
35
36
  The following files share their name; please delete one of them:
@@ -96,16 +97,16 @@ jest-haste-map: duplicate manual mock found: stream-hub
96
97
  * <rootDir>/packages/server/dist/__mocks__/stream-hub.js
97
98
  * <rootDir>/packages/server/src/__mocks__/stream-hub.ts
98
99
 
99
- jest-haste-map: duplicate manual mock found: stream-registry
100
- The following files share their name; please delete one of them:
101
- * <rootDir>/packages/server/dist/__mocks__/stream-registry.js
102
- * <rootDir>/packages/server/src/__mocks__/stream-registry.ts
103
-
104
100
  jest-haste-map: duplicate manual mock found: token-push
105
101
  The following files share their name; please delete one of them:
106
102
  * <rootDir>/packages/server/dist/__mocks__/token-push.js
107
103
  * <rootDir>/packages/server/src/__mocks__/token-push.ts
108
104
 
105
+ jest-haste-map: duplicate manual mock found: stream-registry
106
+ The following files share their name; please delete one of them:
107
+ * <rootDir>/packages/server/dist/__mocks__/stream-registry.js
108
+ * <rootDir>/packages/server/src/__mocks__/stream-registry.ts
109
+
109
110
  jest-haste-map: duplicate manual mock found: utils/exec
110
111
  The following files share their name; please delete one of them:
111
112
  * <rootDir>/packages/server/dist/__mocks__/utils/exec.js
@@ -122,5 +123,5 @@ jest-haste-map: duplicate manual mock found: utils/network
122
123
  * <rootDir>/packages/server/src/__mocks__/utils/network.ts
123
124
 
124
125
  [test:storybook-test] Storybook interaction tests completed.
125
- ---- test finished (111.929s) ----
126
- -------------------- Finished (111.943s) --------------------
126
+ ---- test finished (115.192s) ----
127
+ -------------------- Finished (115.202s) --------------------
@@ -5,31 +5,32 @@
5
5
  {"kind":"O","text":"\n"}
6
6
  {"kind":"O","text":"\u001b[1m\u001b[46m RUN \u001b[49m\u001b[22m \u001b[36mv3.2.4 \u001b[39m\u001b[90m/home/runner/work/grackle/grackle/packages/web-components\u001b[39m\n"}
7
7
  {"kind":"O","text":"\n"}
8
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/sessionEvents.test.ts \u001b[2m(\u001b[22m\u001b[2m14 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 67\u001b[2mms\u001b[22m\u001b[39m\n"}
9
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/eventContent.test.ts \u001b[2m(\u001b[22m\u001b[2m38 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 187\u001b[2mms\u001b[22m\u001b[39m\n"}
10
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/dashboard.test.ts \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 38\u001b[2mms\u001b[22m\u001b[39m\n"}
11
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/route-config.test.ts \u001b[2m(\u001b[22m\u001b[2m23 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 90\u001b[2mms\u001b[22m\u001b[39m\n"}
12
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/streamCoordination.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 29\u001b[2mms\u001b[22m\u001b[39m\n"}
13
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/breadcrumbs.test.ts \u001b[2m(\u001b[22m\u001b[2m18 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 41\u001b[2mms\u001b[22m\u001b[39m\n"}
14
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/scrollUtils.test.ts \u001b[2m(\u001b[22m\u001b[2m11 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 41\u001b[2mms\u001b[22m\u001b[39m\n"}
15
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/classifyTool.test.ts \u001b[2m(\u001b[22m\u001b[2m6 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 19\u001b[2mms\u001b[22m\u001b[39m\n"}
16
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/toolCardHelpers.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 14\u001b[2mms\u001b[22m\u001b[39m\n"}
8
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/sessionEvents.test.ts \u001b[2m(\u001b[22m\u001b[2m14 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 45\u001b[2mms\u001b[22m\u001b[39m\n"}
9
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/eventContent.test.ts \u001b[2m(\u001b[22m\u001b[2m38 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 118\u001b[2mms\u001b[22m\u001b[39m\n"}
10
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/dashboard.test.ts \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 23\u001b[2mms\u001b[22m\u001b[39m\n"}
11
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/route-config.test.ts \u001b[2m(\u001b[22m\u001b[2m23 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 53\u001b[2mms\u001b[22m\u001b[39m\n"}
12
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/streamCoordination.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 26\u001b[2mms\u001b[22m\u001b[39m\n"}
13
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/breadcrumbs.test.ts \u001b[2m(\u001b[22m\u001b[2m18 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 43\u001b[2mms\u001b[22m\u001b[39m\n"}
14
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/scrollUtils.test.ts \u001b[2m(\u001b[22m\u001b[2m11 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 39\u001b[2mms\u001b[22m\u001b[39m\n"}
15
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/classifyTool.test.ts \u001b[2m(\u001b[22m\u001b[2m6 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 17\u001b[2mms\u001b[22m\u001b[39m\n"}
17
16
  {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/assetUrl.test.ts \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 11\u001b[2mms\u001b[22m\u001b[39m\n"}
18
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/extractText.test.tsx \u001b[2m(\u001b[22m\u001b[2m8 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 12\u001b[2mms\u001b[22m\u001b[39m\n"}
19
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/hooks/useEventSelection.test.ts \u001b[2m(\u001b[22m\u001b[2m13 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 244\u001b[2mms\u001b[22m\u001b[39m\n"}
20
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/editable/useEditableField.test.tsx \u001b[2m(\u001b[22m\u001b[2m17 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 231\u001b[2mms\u001b[22m\u001b[39m\n"}
21
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/notifications/UpdateBanner.test.tsx \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 169\u001b[2mms\u001b[22m\u001b[39m\n"}
22
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/McpAppWidget.test.tsx \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 234\u001b[2mms\u001b[22m\u001b[39m\n"}
23
- {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/grackleHostStyleVariables.test.ts \u001b[2m(\u001b[22m\u001b[2m2 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 477\u001b[2mms\u001b[22m\u001b[39m\n"}
24
- {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m grackleHostStyleVariables\u001b[2m > \u001b[22malways returns the MCP-standard fallback variables \u001b[33m 467\u001b[2mms\u001b[22m\u001b[39m\n"}
17
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/tools/toolCardHelpers.test.ts \u001b[2m(\u001b[22m\u001b[2m10 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 18\u001b[2mms\u001b[22m\u001b[39m\n"}
18
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/extractText.test.tsx \u001b[2m(\u001b[22m\u001b[2m8 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 33\u001b[2mms\u001b[22m\u001b[39m\n"}
19
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/editable/useEditableField.test.tsx \u001b[2m(\u001b[22m\u001b[2m17 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 159\u001b[2mms\u001b[22m\u001b[39m\n"}
20
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/hooks/useEventSelection.test.ts \u001b[2m(\u001b[22m\u001b[2m13 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 175\u001b[2mms\u001b[22m\u001b[39m\n"}
21
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/display/McpAppWidget.test.tsx \u001b[2m(\u001b[22m\u001b[2m3 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 594\u001b[2mms\u001b[22m\u001b[39m\n"}
22
+ {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m McpAppWidget\u001b[2m > \u001b[22mmounts an iframe host for the widget \u001b[33m 399\u001b[2mms\u001b[22m\u001b[39m\n"}
23
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/components/notifications/UpdateBanner.test.tsx \u001b[2m(\u001b[22m\u001b[2m4 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[32m 124\u001b[2mms\u001b[22m\u001b[39m\n"}
24
+ {"kind":"O","text":" \u001b[32m✓\u001b[39m src/utils/grackleHostStyleVariables.test.ts \u001b[2m(\u001b[22m\u001b[2m2 tests\u001b[22m\u001b[2m)\u001b[22m\u001b[33m 465\u001b[2mms\u001b[22m\u001b[39m\n"}
25
+ {"kind":"O","text":" \u001b[33m\u001b[2m✓\u001b[22m\u001b[39m grackleHostStyleVariables\u001b[2m > \u001b[22malways returns the MCP-standard fallback variables \u001b[33m 443\u001b[2mms\u001b[22m\u001b[39m\n"}
25
26
  {"kind":"O","text":"\n"}
26
27
  {"kind":"O","text":"\u001b[2m Test Files \u001b[22m \u001b[1m\u001b[32m16 passed\u001b[39m\u001b[22m\u001b[90m (16)\u001b[39m\n"}
27
28
  {"kind":"O","text":"\u001b[2m Tests \u001b[22m \u001b[1m\u001b[32m184 passed\u001b[39m\u001b[22m\u001b[90m (184)\u001b[39m\n"}
28
- {"kind":"O","text":"\u001b[2m Start at \u001b[22m 08:12:34\n"}
29
- {"kind":"O","text":"\u001b[2m Duration \u001b[22m 15.79s\u001b[2m (transform 2.74s, setup 0ms, collect 15.85s, tests 1.90s, environment 10.61s, prepare 6.00s)\u001b[22m\n"}
29
+ {"kind":"O","text":"\u001b[2m Start at \u001b[22m 14:11:00\n"}
30
+ {"kind":"O","text":"\u001b[2m Duration \u001b[22m 16.59s\u001b[2m (transform 2.42s, setup 0ms, collect 18.42s, tests 1.94s, environment 11.64s, prepare 5.10s)\u001b[22m\n"}
30
31
  {"kind":"O","text":"\n"}
31
32
  {"kind":"O","text":"[test:vitest] Vitest completed.\n"}
32
- {"kind":"O","text":"[test:storybook-test] Starting Storybook static server on port 45781...\n"}
33
+ {"kind":"O","text":"[test:storybook-test] Starting Storybook static server on port 34877...\n"}
33
34
  {"kind":"O","text":"[test:storybook-test] Storybook server ready. Running interaction tests...\n"}
34
35
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: adapter-manager\n"}
35
36
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
@@ -96,16 +97,16 @@
96
97
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-hub.js\n"}
97
98
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-hub.ts\n"}
98
99
  {"kind":"O","text":"\n"}
99
- {"kind":"O","text":"jest-haste-map: duplicate manual mock found: stream-registry\n"}
100
- {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
101
- {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-registry.js\n"}
102
- {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-registry.ts\n"}
103
- {"kind":"O","text":"\n"}
104
100
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: token-push\n"}
105
101
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
106
102
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/token-push.js\n"}
107
103
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/token-push.ts\n"}
108
104
  {"kind":"O","text":"\n"}
105
+ {"kind":"O","text":"jest-haste-map: duplicate manual mock found: stream-registry\n"}
106
+ {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
107
+ {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/stream-registry.js\n"}
108
+ {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/stream-registry.ts\n"}
109
+ {"kind":"O","text":"\n"}
109
110
  {"kind":"O","text":"jest-haste-map: duplicate manual mock found: utils/exec\n"}
110
111
  {"kind":"O","text":" The following files share their name; please delete one of them:\n"}
111
112
  {"kind":"O","text":" * <rootDir>/packages/server/dist/__mocks__/utils/exec.js\n"}
@@ -122,5 +123,5 @@
122
123
  {"kind":"O","text":" * <rootDir>/packages/server/src/__mocks__/utils/network.ts\n"}
123
124
  {"kind":"O","text":"\n"}
124
125
  {"kind":"O","text":"[test:storybook-test] Storybook interaction tests completed.\n"}
125
- {"kind":"O","text":" ---- test finished (111.929s) ---- \n"}
126
- {"kind":"O","text":"-------------------- Finished (111.943s) --------------------\n"}
126
+ {"kind":"O","text":" ---- test finished (115.192s) ---- \n"}
127
+ {"kind":"O","text":"-------------------- Finished (115.202s) --------------------\n"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 113168.951837
2
+ "nonCachedDurationMs": 116195.40690900001
3
3
  }
package/README.md CHANGED
@@ -34,7 +34,7 @@ Components are grouped by area under `src/components/`:
34
34
  |----------|----------|
35
35
  | **Display primitives** | `Button`, `SplitButton`, `CopyButton`, `Tooltip`, `Breadcrumbs`, `ConfirmDialog`, `Skeleton`, `Spinner`, `SplashScreen`, `FloatingActionBar` |
36
36
  | **Event stream** | `EventStream`, `EventRenderer`, `EventHoverRow`, `SessionPicker`, `SessionAttemptSelector` |
37
- | **MCP Apps widgets** | `widget` events render in a sandboxed iframe via `EventRenderer`/`EventStream` — pass `sandboxProxyUrl`. The host renderer `McpAppWidget` is loaded internally (lazy/code-split) and is **not** a value export; only its prop types (`McpAppWidgetProps`) and `grackleHostStyleVariables` are exported. |
37
+ | **MCP Apps widgets** | `widget` events render in a sandboxed iframe via `EventRenderer`/`EventStream` — pass `sandboxProxyUrl`. `EventRenderer` dispatches on the event's `rendererKind` (v1: `mcp-app-html` → `McpAppWidget`; unknown kinds fall back to the default card), so declarative renderers can be added without changing the contract. The host renderer `McpAppWidget` is loaded internally (lazy/code-split) and is **not** a value export; only its prop types (`McpAppWidgetProps`) and `grackleHostStyleVariables` are exported. |
38
38
  | **Tool cards** | `ToolCard`, `FileEditCard`, `FileReadCard`, `ShellCard`, `SearchCard`, `TodoCard`, `MetadataCard`, `AgentToolCard`, `GenericToolCard` |
39
39
  | **Layout** | `AppNav`, `Sidebar`, `StatusBar`, `BottomStatusBar` |
40
40
  | **Lists** | `TaskList`, `EnvironmentNav`, `FindingsNav` |
package/dist/index.js CHANGED
@@ -24386,7 +24386,7 @@ function x4({ event: e, toolUseCtx: t, settled: n, sandboxProxyUrl: r }) {
24386
24386
  s = JSON.parse(e.content);
24387
24387
  } catch {
24388
24388
  }
24389
- return s.html ? /* @__PURE__ */ m(r_, { fallback: /* @__PURE__ */ m(Ro, { content: "Loading widget..." }), children: /* @__PURE__ */ m(
24389
+ return (s.rendererKind ?? "mcp-app-html") !== "mcp-app-html" || !s.html ? /* @__PURE__ */ m(Ro, { content: e.content }) : /* @__PURE__ */ m(r_, { fallback: /* @__PURE__ */ m(Ro, { content: "Loading widget..." }), children: /* @__PURE__ */ m(
24390
24390
  f4,
24391
24391
  {
24392
24392
  widgetHtml: s.html,
@@ -24395,7 +24395,7 @@ function x4({ event: e, toolUseCtx: t, settled: n, sandboxProxyUrl: r }) {
24395
24395
  toolInput: s.toolInput,
24396
24396
  toolResult: s.toolResult
24397
24397
  }
24398
- ) }) : /* @__PURE__ */ m(Ro, { content: e.content });
24398
+ ) });
24399
24399
  }
24400
24400
  case "system": {
24401
24401
  if (e.raw)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/web-components",
3
- "version": "0.114.0",
3
+ "version": "0.115.1",
4
4
  "description": "Presentational React component library for the Grackle web UI",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -46,7 +46,7 @@
46
46
  "remark-gfm": "^4.0.0",
47
47
  "lucide-react": "~0.474.0",
48
48
  "react-router": "^7.0.0",
49
- "@grackle-ai/common": "0.114.0"
49
+ "@grackle-ai/common": "0.115.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@rushstack/heft": "1.2.7",
@@ -1,4 +1,4 @@
1
1
  Build cache hit.
2
- Cache key: b1a36bcc314d65fbd843fcff6d3127ebdf827e06
2
+ Cache key: 689afee5625b24607e65ba3a6d3b279d5895784d
3
3
  Clearing cached folders: dist, storybook-static, .rush/temp/operation/_phase_build
4
4
  Successfully restored output from the build cache.
@@ -12,8 +12,8 @@ rendering chunks...
12
12
  computing gzip size...
13
13
  dist/index.css 159.65 kB │ gzip: 20.78 kB
14
14
  dist/McpAppWidget-CSX2W2Vb.js 205.28 kB │ gzip: 47.19 kB
15
- dist/index.js 1,392.78 kB │ gzip: 356.09 kB
16
- ✓ built in 5.94s
15
+ dist/index.js 1,392.84 kB │ gzip: 356.12 kB
16
+ ✓ built in 5.74s
17
17
  [build:vite-build] Vite build completed.
18
- ---- build finished (75.104s) ----
19
- -------------------- Finished (75.107s) --------------------
18
+ ---- build finished (75.038s) ----
19
+ -------------------- Finished (75.045s) --------------------
@@ -1,4 +1,4 @@
1
1
  Build cache hit.
2
- Cache key: 989dfd9dfc66be6288052dccbf2952ddad9066c6
2
+ Cache key: e12a67384bc67b4cba24253105ba33ed0945c91d
3
3
  Clearing cached folders: .rush/temp/operation/_phase_test
4
4
  Successfully restored output from the build cache.
@@ -5,31 +5,32 @@ The provided list of phases does not contain all phase dependencies. You may nee
5
5
 
6
6
  RUN v3.2.4 /home/runner/work/grackle/grackle/packages/web-components
7
7
 
8
- ✓ src/utils/sessionEvents.test.ts (14 tests) 67ms
9
- ✓ src/utils/eventContent.test.ts (38 tests) 187ms
10
- ✓ src/utils/dashboard.test.ts (4 tests) 38ms
11
- ✓ src/utils/route-config.test.ts (23 tests) 90ms
12
- ✓ src/utils/streamCoordination.test.ts (10 tests) 29ms
13
- ✓ src/utils/breadcrumbs.test.ts (18 tests) 41ms
14
- ✓ src/utils/scrollUtils.test.ts (11 tests) 41ms
15
- ✓ src/components/tools/classifyTool.test.ts (6 tests) 19ms
16
- ✓ src/components/tools/toolCardHelpers.test.ts (10 tests) 14ms
8
+ ✓ src/utils/sessionEvents.test.ts (14 tests) 45ms
9
+ ✓ src/utils/eventContent.test.ts (38 tests) 118ms
10
+ ✓ src/utils/dashboard.test.ts (4 tests) 23ms
11
+ ✓ src/utils/route-config.test.ts (23 tests) 53ms
12
+ ✓ src/utils/streamCoordination.test.ts (10 tests) 26ms
13
+ ✓ src/utils/breadcrumbs.test.ts (18 tests) 43ms
14
+ ✓ src/utils/scrollUtils.test.ts (11 tests) 39ms
15
+ ✓ src/components/tools/classifyTool.test.ts (6 tests) 17ms
17
16
  ✓ src/utils/assetUrl.test.ts (3 tests) 11ms
18
- ✓ src/components/display/extractText.test.tsx (8 tests) 12ms
19
- ✓ src/hooks/useEventSelection.test.ts (13 tests) 244ms
20
- ✓ src/components/editable/useEditableField.test.tsx (17 tests) 231ms
21
- ✓ src/components/notifications/UpdateBanner.test.tsx (4 tests) 169ms
22
- ✓ src/components/display/McpAppWidget.test.tsx (3 tests) 234ms
23
- src/utils/grackleHostStyleVariables.test.ts (2 tests) 477ms
24
- grackleHostStyleVariables > always returns the MCP-standard fallback variables 467ms
17
+ ✓ src/components/tools/toolCardHelpers.test.ts (10 tests) 18ms
18
+ ✓ src/components/display/extractText.test.tsx (8 tests) 33ms
19
+ ✓ src/components/editable/useEditableField.test.tsx (17 tests) 159ms
20
+ ✓ src/hooks/useEventSelection.test.ts (13 tests) 175ms
21
+ ✓ src/components/display/McpAppWidget.test.tsx (3 tests) 594ms
22
+ McpAppWidget > mounts an iframe host for the widget 399ms
23
+ src/components/notifications/UpdateBanner.test.tsx (4 tests) 124ms
24
+ ✓ src/utils/grackleHostStyleVariables.test.ts (2 tests) 465ms
25
+ ✓ grackleHostStyleVariables > always returns the MCP-standard fallback variables 443ms
25
26
 
26
27
  Test Files 16 passed (16)
27
28
  Tests 184 passed (184)
28
- Start at 08:12:34
29
- Duration 15.79s (transform 2.74s, setup 0ms, collect 15.85s, tests 1.90s, environment 10.61s, prepare 6.00s)
29
+ Start at 14:11:00
30
+ Duration 16.59s (transform 2.42s, setup 0ms, collect 18.42s, tests 1.94s, environment 11.64s, prepare 5.10s)
30
31
 
31
32
  [test:vitest] Vitest completed.
32
- [test:storybook-test] Starting Storybook static server on port 45781...
33
+ [test:storybook-test] Starting Storybook static server on port 34877...
33
34
  [test:storybook-test] Storybook server ready. Running interaction tests...
34
35
  jest-haste-map: duplicate manual mock found: adapter-manager
35
36
  The following files share their name; please delete one of them:
@@ -96,16 +97,16 @@ jest-haste-map: duplicate manual mock found: stream-hub
96
97
  * <rootDir>/packages/server/dist/__mocks__/stream-hub.js
97
98
  * <rootDir>/packages/server/src/__mocks__/stream-hub.ts
98
99
 
99
- jest-haste-map: duplicate manual mock found: stream-registry
100
- The following files share their name; please delete one of them:
101
- * <rootDir>/packages/server/dist/__mocks__/stream-registry.js
102
- * <rootDir>/packages/server/src/__mocks__/stream-registry.ts
103
-
104
100
  jest-haste-map: duplicate manual mock found: token-push
105
101
  The following files share their name; please delete one of them:
106
102
  * <rootDir>/packages/server/dist/__mocks__/token-push.js
107
103
  * <rootDir>/packages/server/src/__mocks__/token-push.ts
108
104
 
105
+ jest-haste-map: duplicate manual mock found: stream-registry
106
+ The following files share their name; please delete one of them:
107
+ * <rootDir>/packages/server/dist/__mocks__/stream-registry.js
108
+ * <rootDir>/packages/server/src/__mocks__/stream-registry.ts
109
+
109
110
  jest-haste-map: duplicate manual mock found: utils/exec
110
111
  The following files share their name; please delete one of them:
111
112
  * <rootDir>/packages/server/dist/__mocks__/utils/exec.js
@@ -122,5 +123,5 @@ jest-haste-map: duplicate manual mock found: utils/network
122
123
  * <rootDir>/packages/server/src/__mocks__/utils/network.ts
123
124
 
124
125
  [test:storybook-test] Storybook interaction tests completed.
125
- ---- test finished (111.929s) ----
126
- -------------------- Finished (111.943s) --------------------
126
+ ---- test finished (115.192s) ----
127
+ -------------------- Finished (115.202s) --------------------
@@ -192,6 +192,50 @@ export const WidgetEvent: Story = {
192
192
  },
193
193
  };
194
194
 
195
+ /** Agent-authored widget (#1239): dynamic rendererKind + inline-script body + props. */
196
+ export const AgentWidgetEvent: Story = {
197
+ args: {
198
+ event: makeEvent({
199
+ eventType: "widget",
200
+ content: JSON.stringify({
201
+ resourceUri: "ui://grackle/abc123",
202
+ toolName: "widget_render",
203
+ rendererKind: "mcp-app-html",
204
+ widgetId: "abc123",
205
+ version: 2,
206
+ html: "<!doctype html><html><body><div class=\"card\">agent widget</div><script>void 0;</script></body></html>",
207
+ csp: { resourceDomains: ["http://localhost:6007"], connectDomains: ["http://localhost:6007"], allowInlineScripts: true },
208
+ toolInput: { count: 3 },
209
+ toolResult: { content: [{ type: "text", text: "ok" }] },
210
+ }),
211
+ }),
212
+ sandboxProxyUrl: "http://localhost:6007/sandbox.html",
213
+ },
214
+ play: async ({ canvas }) => {
215
+ await expect(await canvas.findByTestId("mcp-app-widget")).toBeInTheDocument();
216
+ },
217
+ };
218
+
219
+ /** An unknown rendererKind falls back to the default event card (no crash). */
220
+ export const UnknownRendererKindWidget: Story = {
221
+ args: {
222
+ event: makeEvent({
223
+ eventType: "widget",
224
+ content: JSON.stringify({
225
+ resourceUri: "",
226
+ toolName: "widget_show",
227
+ rendererKind: "adaptive-card",
228
+ html: "<div>future</div>",
229
+ }),
230
+ }),
231
+ sandboxProxyUrl: "http://localhost:6007/sandbox.html",
232
+ },
233
+ play: async ({ canvas }) => {
234
+ // Unsupported renderer: McpAppWidget is NOT mounted; the raw content shows instead.
235
+ await expect(canvas.queryByTestId("mcp-app-widget")).toBeNull();
236
+ },
237
+ };
238
+
195
239
  /** User input events render as markdown (bold, lists, inline code) inside the bubble. */
196
240
  export const UserMessageMarkdown: Story = {
197
241
  args: {
@@ -225,14 +225,20 @@ export function EventRenderer({ event, toolUseCtx, settled, sandboxProxyUrl }: P
225
225
  }
226
226
  let payload: {
227
227
  html?: string;
228
- csp?: McpUiResourceCsp;
228
+ rendererKind?: string;
229
+ // `allowInlineScripts` is a Grackle extension to the upstream CSP type
230
+ // (agent-authored widgets, #1239); it is forwarded verbatim to the sandbox.
231
+ csp?: McpUiResourceCsp & { allowInlineScripts?: boolean };
229
232
  toolInput?: Record<string, unknown>;
230
233
  toolResult?: CallToolResult;
231
234
  } = {};
232
235
  try {
233
236
  payload = JSON.parse(event.content) as typeof payload;
234
237
  } catch { /* malformed widget payload — fall back */ }
235
- if (!payload.html) {
238
+ // Dispatch on rendererKind (default "mcp-app-html" for back-compat). This
239
+ // switch is the seam for future declarative renderers (e.g. adaptive-card).
240
+ const rendererKind: string = payload.rendererKind ?? "mcp-app-html";
241
+ if (rendererKind !== "mcp-app-html" || !payload.html) {
236
242
  return <DefaultEvent content={event.content} />;
237
243
  }
238
244
  return (
@@ -155,7 +155,7 @@
155
155
  ],
156
156
  [
157
157
  "components/display/EventRenderer.tsx",
158
- "PHybhj9WzoyCcHMrbT8OHMiXuQI=_7W3TvvwZxl0TGST6/dyQa8DKDDc="
158
+ "gezM0fuun/x3AxO8ftjhNIYySUI=_7W3TvvwZxl0TGST6/dyQa8DKDDc="
159
159
  ],
160
160
  [
161
161
  "components/display/ConfirmDialog.tsx",
@@ -535,7 +535,7 @@
535
535
  ],
536
536
  [
537
537
  "components/display/EventRenderer.stories.tsx",
538
- "vwvW6L580d9RGMBXR6UIB78YLAg=_7W3TvvwZxl0TGST6/dyQa8DKDDc="
538
+ "IHG2XMzYHwhC8ZSq4jhuqyExkIM=_7W3TvvwZxl0TGST6/dyQa8DKDDc="
539
539
  ],
540
540
  [
541
541
  "components/display/EventStream.stories.tsx",