@simon_he/vue-tui 1.1.1 → 1.1.2

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 (66) hide show
  1. package/README.md +68 -28
  2. package/dist/{TMermaidText-CXm_L969.js → TMermaidText-frVr8Ysb.js} +1 -1
  3. package/dist/{TSelect-CiyMvwl-.js → TSelect-tJ87rKPM.js} +6 -168
  4. package/dist/{TTree-DKGiuIcM.js → TTree-CGdE-CYu.js} +12 -13
  5. package/dist/agent.cjs +9 -5
  6. package/dist/agent.js +15 -1197
  7. package/dist/{block-source-5CQp4tF8.js → block-source-CrlmaBM5.js} +7 -601
  8. package/dist/cli/input.d.ts +8 -0
  9. package/dist/cli/video/ffmpeg-frame-source.d.ts +10 -0
  10. package/dist/cli/video/png-frame-parser.d.ts +4 -0
  11. package/dist/cli/video/raw-frame-parser.d.ts +1 -0
  12. package/dist/cli/video/yt-dlp-frame-source.d.ts +11 -0
  13. package/dist/cli.cjs +142 -33
  14. package/dist/cli.d.cts +1 -1
  15. package/dist/cli.d.ts +1 -1
  16. package/dist/cli.js +167 -37
  17. package/dist/core.js +5 -6
  18. package/dist/create-terminal-app.d.ts +24 -1
  19. package/dist/{debug-logger-ChY_PXVk.js → debug-logger-CmsGI4of.js} +1 -1
  20. package/dist/{dom-renderer-DNzmg2As.js → dom-renderer-DXx8fWzD.js} +2 -3
  21. package/dist/experimental/3d/bun/contributor-avatar-atlas.d.ts +12 -0
  22. package/dist/experimental/3d/bun/png.d.ts +1 -0
  23. package/dist/experimental/3d/bun/terminal-badge-scene.d.ts +11 -0
  24. package/dist/experimental/3d/bun/terminal-badge.wgsl.d.ts +1 -0
  25. package/dist/experimental/3d/bun/webgpu-renderer.d.ts +26 -0
  26. package/dist/experimental/3d/bun.cjs +7271 -0
  27. package/dist/experimental/3d/bun.d.cts +4 -0
  28. package/dist/experimental/3d/bun.d.ts +4 -0
  29. package/dist/experimental/3d/bun.js +7390 -0
  30. package/dist/experimental/video/node.cjs +497 -0
  31. package/dist/experimental/video/node.d.cts +4 -0
  32. package/dist/experimental/video/node.d.ts +4 -0
  33. package/dist/experimental/video/node.js +610 -0
  34. package/dist/experimental.cjs +3064 -567
  35. package/dist/experimental.d.cts +5 -0
  36. package/dist/experimental.d.ts +5 -0
  37. package/dist/experimental.js +1524 -9
  38. package/dist/{create-terminal-DXuZ2fci.js → hyperlink-_1FAj7Wq.js} +403 -2
  39. package/dist/index.js +15 -16
  40. package/dist/{linkify-CuuquMQT.js → linkify-D68T7rdW.js} +164 -3
  41. package/dist/markdown.js +8 -8
  42. package/dist/{mermaid-CWto52Wk.js → mermaid-BNhM1jAZ.js} +1 -1
  43. package/dist/mermaid.js +3 -3
  44. package/dist/observability.js +2 -2
  45. package/dist/{path-suggest-fPzRsgPv.js → path-suggest-Dndu4dTi.js} +1 -1
  46. package/dist/renderer/terminal-graphics.d.ts +1 -0
  47. package/dist/renderer-dom.js +3 -4
  48. package/dist/runtime.js +2 -2
  49. package/dist/terminal-graphics-Bbe83wSr.js +597 -0
  50. package/dist/{tlog-theme-CopRt9SC.js → tlog-theme-Bul2Na3u.js} +1206 -12
  51. package/dist/{trace-CYHDKM1m.js → trace-Bh8WnoMo.js} +1 -1
  52. package/dist/vue/components/T3DViewport.d.ts +473 -0
  53. package/dist/vue/components/TAgentTerminalGraphic.d.ts +13 -0
  54. package/dist/vue/components/TVideo.d.ts +291 -0
  55. package/dist/vue/video/types.d.ts +39 -0
  56. package/dist/vue.js +17 -18
  57. package/package.json +38 -1
  58. package/dist/hyperlink-B35-O-cW.js +0 -403
  59. /package/dist/{ansi-palette-CNXqFciC.js → ansi-palette-CH6jc2Z7.js} +0 -0
  60. /package/dist/{env-DNCzvX8b.js → env-Cl8qmNFN.js} +0 -0
  61. /package/dist/{frame-perf-BBhE-iuS.js → frame-perf-CHpWhbC4.js} +0 -0
  62. /package/dist/{path-BI9W15Zt.js → path-mnSgEpCm.js} +0 -0
  63. /package/dist/{rect-Ng-3eKzF.js → rect-DUpeDfBg.js} +0 -0
  64. /package/dist/{runtime-D77C03RM.js → runtime-Byf8XXOT.js} +0 -0
  65. /package/dist/{terminal-selection-CQYr--26.js → terminal-selection-4W1SJj4c.js} +0 -0
  66. /package/dist/{wheel-scroll-CQ22Hcyj.js → wheel-scroll-DASkEZr-.js} +0 -0
@@ -0,0 +1,291 @@
1
+ import type { ExtractPublicPropTypes, PropType } from "vue";
2
+ import type { Style } from "../../core/types.js";
3
+ import type { TVideoFrameEvent, TVideoFrameSource, TVideoPlaybackRate } from "../video/types.js";
4
+ export declare const tVideoProps: {
5
+ readonly x: {
6
+ readonly type: NumberConstructor;
7
+ readonly required: true;
8
+ };
9
+ readonly y: {
10
+ readonly type: NumberConstructor;
11
+ readonly required: true;
12
+ };
13
+ readonly w: {
14
+ readonly type: NumberConstructor;
15
+ readonly required: true;
16
+ };
17
+ readonly h: {
18
+ readonly type: NumberConstructor;
19
+ readonly required: true;
20
+ };
21
+ readonly zIndex: {
22
+ readonly type: NumberConstructor;
23
+ readonly default: 0;
24
+ };
25
+ readonly src: {
26
+ readonly type: StringConstructor;
27
+ readonly required: true;
28
+ };
29
+ readonly frameSource: {
30
+ readonly type: PropType<TVideoFrameSource>;
31
+ readonly required: true;
32
+ };
33
+ readonly paused: {
34
+ readonly type: BooleanConstructor;
35
+ readonly default: undefined;
36
+ };
37
+ readonly playbackRate: {
38
+ readonly type: PropType<TVideoPlaybackRate>;
39
+ readonly default: undefined;
40
+ };
41
+ readonly controls: {
42
+ readonly type: BooleanConstructor;
43
+ readonly default: false;
44
+ };
45
+ readonly controlsLayout: {
46
+ readonly type: PropType<TVideoControlsLayout>;
47
+ readonly default: "compact";
48
+ };
49
+ readonly durationMs: {
50
+ readonly type: NumberConstructor;
51
+ readonly default: undefined;
52
+ };
53
+ readonly loop: {
54
+ readonly type: BooleanConstructor;
55
+ readonly default: false;
56
+ };
57
+ readonly maxFps: {
58
+ readonly type: NumberConstructor;
59
+ readonly default: 12;
60
+ };
61
+ readonly pixelWidth: {
62
+ readonly type: NumberConstructor;
63
+ readonly default: undefined;
64
+ };
65
+ readonly pixelHeight: {
66
+ readonly type: NumberConstructor;
67
+ readonly default: undefined;
68
+ };
69
+ readonly fallback: {
70
+ readonly type: StringConstructor;
71
+ readonly default: "[video]";
72
+ };
73
+ readonly style: {
74
+ readonly type: PropType<Style>;
75
+ readonly default: undefined;
76
+ };
77
+ readonly clear: {
78
+ readonly type: BooleanConstructor;
79
+ readonly default: true;
80
+ };
81
+ };
82
+ export type TVideoControlsLayout = "compact" | "cinema";
83
+ export type TVideoProps = ExtractPublicPropTypes<typeof tVideoProps>;
84
+ export type TVideoSeekEvent = Readonly<{
85
+ timestampMs: number;
86
+ durationMs?: number;
87
+ }>;
88
+ export declare const TVideo: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
89
+ readonly x: {
90
+ readonly type: NumberConstructor;
91
+ readonly required: true;
92
+ };
93
+ readonly y: {
94
+ readonly type: NumberConstructor;
95
+ readonly required: true;
96
+ };
97
+ readonly w: {
98
+ readonly type: NumberConstructor;
99
+ readonly required: true;
100
+ };
101
+ readonly h: {
102
+ readonly type: NumberConstructor;
103
+ readonly required: true;
104
+ };
105
+ readonly zIndex: {
106
+ readonly type: NumberConstructor;
107
+ readonly default: 0;
108
+ };
109
+ readonly src: {
110
+ readonly type: StringConstructor;
111
+ readonly required: true;
112
+ };
113
+ readonly frameSource: {
114
+ readonly type: PropType<TVideoFrameSource>;
115
+ readonly required: true;
116
+ };
117
+ readonly paused: {
118
+ readonly type: BooleanConstructor;
119
+ readonly default: undefined;
120
+ };
121
+ readonly playbackRate: {
122
+ readonly type: PropType<TVideoPlaybackRate>;
123
+ readonly default: undefined;
124
+ };
125
+ readonly controls: {
126
+ readonly type: BooleanConstructor;
127
+ readonly default: false;
128
+ };
129
+ readonly controlsLayout: {
130
+ readonly type: PropType<TVideoControlsLayout>;
131
+ readonly default: "compact";
132
+ };
133
+ readonly durationMs: {
134
+ readonly type: NumberConstructor;
135
+ readonly default: undefined;
136
+ };
137
+ readonly loop: {
138
+ readonly type: BooleanConstructor;
139
+ readonly default: false;
140
+ };
141
+ readonly maxFps: {
142
+ readonly type: NumberConstructor;
143
+ readonly default: 12;
144
+ };
145
+ readonly pixelWidth: {
146
+ readonly type: NumberConstructor;
147
+ readonly default: undefined;
148
+ };
149
+ readonly pixelHeight: {
150
+ readonly type: NumberConstructor;
151
+ readonly default: undefined;
152
+ };
153
+ readonly fallback: {
154
+ readonly type: StringConstructor;
155
+ readonly default: "[video]";
156
+ };
157
+ readonly style: {
158
+ readonly type: PropType<Style>;
159
+ readonly default: undefined;
160
+ };
161
+ readonly clear: {
162
+ readonly type: BooleanConstructor;
163
+ readonly default: true;
164
+ };
165
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
166
+ [key: string]: any;
167
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
168
+ frame: (_event: TVideoFrameEvent) => true;
169
+ ended: () => true;
170
+ error: (_error: unknown) => true;
171
+ seek: (_event: TVideoSeekEvent) => true;
172
+ "update:paused": (_paused: boolean) => true;
173
+ "update:playbackRate": (_rate: TVideoPlaybackRate) => true;
174
+ }, string, (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps), Readonly<import("vue").ExtractPropTypes<{
175
+ readonly x: {
176
+ readonly type: NumberConstructor;
177
+ readonly required: true;
178
+ };
179
+ readonly y: {
180
+ readonly type: NumberConstructor;
181
+ readonly required: true;
182
+ };
183
+ readonly w: {
184
+ readonly type: NumberConstructor;
185
+ readonly required: true;
186
+ };
187
+ readonly h: {
188
+ readonly type: NumberConstructor;
189
+ readonly required: true;
190
+ };
191
+ readonly zIndex: {
192
+ readonly type: NumberConstructor;
193
+ readonly default: 0;
194
+ };
195
+ readonly src: {
196
+ readonly type: StringConstructor;
197
+ readonly required: true;
198
+ };
199
+ readonly frameSource: {
200
+ readonly type: PropType<TVideoFrameSource>;
201
+ readonly required: true;
202
+ };
203
+ readonly paused: {
204
+ readonly type: BooleanConstructor;
205
+ readonly default: undefined;
206
+ };
207
+ readonly playbackRate: {
208
+ readonly type: PropType<TVideoPlaybackRate>;
209
+ readonly default: undefined;
210
+ };
211
+ readonly controls: {
212
+ readonly type: BooleanConstructor;
213
+ readonly default: false;
214
+ };
215
+ readonly controlsLayout: {
216
+ readonly type: PropType<TVideoControlsLayout>;
217
+ readonly default: "compact";
218
+ };
219
+ readonly durationMs: {
220
+ readonly type: NumberConstructor;
221
+ readonly default: undefined;
222
+ };
223
+ readonly loop: {
224
+ readonly type: BooleanConstructor;
225
+ readonly default: false;
226
+ };
227
+ readonly maxFps: {
228
+ readonly type: NumberConstructor;
229
+ readonly default: 12;
230
+ };
231
+ readonly pixelWidth: {
232
+ readonly type: NumberConstructor;
233
+ readonly default: undefined;
234
+ };
235
+ readonly pixelHeight: {
236
+ readonly type: NumberConstructor;
237
+ readonly default: undefined;
238
+ };
239
+ readonly fallback: {
240
+ readonly type: StringConstructor;
241
+ readonly default: "[video]";
242
+ };
243
+ readonly style: {
244
+ readonly type: PropType<Style>;
245
+ readonly default: undefined;
246
+ };
247
+ readonly clear: {
248
+ readonly type: BooleanConstructor;
249
+ readonly default: true;
250
+ };
251
+ }>> & Readonly<{
252
+ onEnded?: (() => any) | undefined;
253
+ onError?: ((_error: unknown) => any) | undefined;
254
+ onFrame?: ((_event: Readonly<{
255
+ timestampMs: number;
256
+ pixelWidth: number;
257
+ pixelHeight: number;
258
+ droppedFrames: number;
259
+ durationMs?: number;
260
+ playbackRate?: TVideoPlaybackRate;
261
+ }>) => any) | undefined;
262
+ onSeek?: ((_event: Readonly<{
263
+ timestampMs: number;
264
+ durationMs?: number;
265
+ }>) => any) | undefined;
266
+ "onUpdate:paused"?: ((_paused: boolean) => any) | undefined;
267
+ "onUpdate:playbackRate"?: ((_rate: TVideoPlaybackRate) => any) | undefined;
268
+ }>, {
269
+ readonly style: Readonly<{
270
+ fg?: string;
271
+ bg?: string;
272
+ bold?: boolean;
273
+ dim?: boolean;
274
+ italic?: boolean;
275
+ underline?: boolean;
276
+ inverse?: boolean;
277
+ href?: string;
278
+ }>;
279
+ readonly durationMs: number;
280
+ readonly zIndex: number;
281
+ readonly clear: boolean;
282
+ readonly controls: boolean;
283
+ readonly fallback: string;
284
+ readonly maxFps: number;
285
+ readonly pixelWidth: number;
286
+ readonly pixelHeight: number;
287
+ readonly paused: boolean;
288
+ readonly playbackRate: TVideoPlaybackRate;
289
+ readonly controlsLayout: TVideoControlsLayout;
290
+ readonly loop: boolean;
291
+ }, {}>;
@@ -0,0 +1,39 @@
1
+ export type TVideoFrameFormat = "png" | "gray8";
2
+ export type TVideoPlaybackRate = 1 | 2 | 3;
3
+ export type TVideoFrame = Readonly<{
4
+ format?: "png";
5
+ png: Uint8Array;
6
+ timestampMs?: number;
7
+ durationMs?: number;
8
+ pixelWidth?: number;
9
+ pixelHeight?: number;
10
+ fingerprint?: string | number;
11
+ }> | Readonly<{
12
+ format: "gray8";
13
+ pixels: Uint8Array;
14
+ pixelWidth: number;
15
+ pixelHeight: number;
16
+ timestampMs?: number;
17
+ durationMs?: number;
18
+ fingerprint?: string | number;
19
+ }>;
20
+ export type TVideoFrameSourceContext = Readonly<{
21
+ src: string;
22
+ signal: AbortSignal;
23
+ maxFps: number;
24
+ pixelWidth: number;
25
+ pixelHeight: number;
26
+ startAtMs: number;
27
+ playbackRate: TVideoPlaybackRate;
28
+ loop: boolean;
29
+ preferredFormat: TVideoFrameFormat;
30
+ }>;
31
+ export type TVideoFrameSource = (context: TVideoFrameSourceContext) => AsyncIterable<TVideoFrame> | Promise<AsyncIterable<TVideoFrame>>;
32
+ export type TVideoFrameEvent = Readonly<{
33
+ timestampMs: number;
34
+ pixelWidth: number;
35
+ pixelHeight: number;
36
+ droppedFrames: number;
37
+ durationMs?: number;
38
+ playbackRate?: TVideoPlaybackRate;
39
+ }>;
package/dist/vue.js CHANGED
@@ -1,22 +1,21 @@
1
- import "./create-terminal-DXuZ2fci.js";
1
+ import "./hyperlink-_1FAj7Wq.js";
2
2
  import { charCellWidth } from "./width-GqllnV8C.js";
3
- import "./hyperlink-B35-O-cW.js";
4
- import "./ansi-palette-CNXqFciC.js";
5
- import "./dom-renderer-DNzmg2As.js";
6
- import { EventZIndexContextKey, LayoutContextKey, RenderStackKey, TInputPluginsContextKey, TPathPickerProviderContextKey, VisibilityContextKey, injectionKey, intersectRect, padEndByCells$1 as padEndByCells, repeatChar, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, textCellWidth$1 as textCellWidth, translateRect, useLayout, useRenderNode, useRenderStack, useTerminal, useTerminalNode, useVisibility, wrapByCells } from "./rect-Ng-3eKzF.js";
7
- import { TView, clamp, createTheme, fitCellText, linkifyTextSegments, mergeStyle, tuiDefaultTheme } from "./linkify-CuuquMQT.js";
8
- import "./runtime-D77C03RM.js";
9
- import "./frame-perf-BBhE-iuS.js";
10
- import "./trace-CYHDKM1m.js";
11
- import "./env-DNCzvX8b.js";
12
- import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-DKGiuIcM.js";
13
- import "./terminal-selection-CQYr--26.js";
14
- import "./debug-logger-ChY_PXVk.js";
15
- import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, TText, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-CiyMvwl-.js";
16
- import { normalizePath, stripTrailingSlash } from "./path-BI9W15Zt.js";
17
- import { applyWheelScroll, createWheelScrollState } from "./wheel-scroll-CQ22Hcyj.js";
18
- import { parsePathQuery, resolveUserPath, suggestPaths } from "./path-suggest-fPzRsgPv.js";
19
- import { TMermaid$1 as TMermaid, TMermaidText$1 as TMermaidText, isSimpleMermaidFlowchartSource, markMermaidRenderErrorFatal } from "./TMermaidText-CXm_L969.js";
3
+ import "./ansi-palette-CH6jc2Z7.js";
4
+ import "./dom-renderer-DXx8fWzD.js";
5
+ import { EventZIndexContextKey, LayoutContextKey, RenderStackKey, TInputPluginsContextKey, TPathPickerProviderContextKey, VisibilityContextKey, injectionKey, intersectRect, padEndByCells$1 as padEndByCells, repeatChar, sanitizeInlineText, sanitizeTextBlock, sliceByCells, sliceByCellsRange, spaces, textCellWidth$1 as textCellWidth, translateRect, useLayout, useRenderNode, useRenderStack, useTerminal, useTerminalNode, useVisibility, wrapByCells } from "./rect-DUpeDfBg.js";
6
+ import { TText, TView, clamp, createTheme, fitCellText, linkifyTextSegments, mergeStyle, tuiDefaultTheme } from "./linkify-D68T7rdW.js";
7
+ import "./runtime-Byf8XXOT.js";
8
+ import "./frame-perf-CHpWhbC4.js";
9
+ import "./trace-Bh8WnoMo.js";
10
+ import "./env-Cl8qmNFN.js";
11
+ import { TAutocompleteInput, TBadge, TCheckbox, TCode, TDataTable, TDivider, TForm, TFormContextKey, TFormField, TLink, TLinkifyText, TList, TPasswordInput, TProgress, TRadioGroup, TSlider, TSpinner, TSwitch, TTable, TTag, TToastViewport, TTree, TerminalProvider, createTInputHostPlugin, useTForm } from "./TTree-CGdE-CYu.js";
12
+ import "./terminal-selection-4W1SJj4c.js";
13
+ import "./debug-logger-CmsGI4of.js";
14
+ import { TBox, TCommandPalette, TDialog, TInput, TRenderPlane, TSelect, clamp$1, computeCommandPaletteMatchRanges, createOverlayFocusStack, isCommitMention, isWhitespace, mentionChipStyle, padEndByCells as padEndByCells$1, resolveOverlayPlacement, sliceByCellsWindow, textCellWidth as textCellWidth$1 } from "./TSelect-tJ87rKPM.js";
15
+ import { normalizePath, stripTrailingSlash } from "./path-mnSgEpCm.js";
16
+ import { applyWheelScroll, createWheelScrollState } from "./wheel-scroll-DASkEZr-.js";
17
+ import { parsePathQuery, resolveUserPath, suggestPaths } from "./path-suggest-Dndu4dTi.js";
18
+ import { TMermaid$1 as TMermaid, TMermaidText$1 as TMermaidText, isSimpleMermaidFlowchartSource, markMermaidRenderErrorFatal } from "./TMermaidText-frVr8Ysb.js";
20
19
  import { Comment, Fragment, computed, defineComponent, h, inject, onBeforeUnmount, onMounted, onUnmounted, provide, reactive, ref, shallowReactive, shallowRef, watch, watchEffect } from "vue";
21
20
 
22
21
  //#region src/observability/cli-latency.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simon_he/vue-tui",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Vue 3 terminal UI components and renderers for browser DOM, CLI stdout, logs, markdown transcripts, and agent consoles",
5
5
  "keywords": [
6
6
  "agent-console",
@@ -85,6 +85,12 @@
85
85
  "experimental": [
86
86
  "./dist/experimental.d.ts"
87
87
  ],
88
+ "experimental/video/node": [
89
+ "./dist/experimental/video/node.d.ts"
90
+ ],
91
+ "experimental/3d/bun": [
92
+ "./dist/experimental/3d/bun.d.ts"
93
+ ],
88
94
  "agent": [
89
95
  "./dist/agent.d.ts"
90
96
  ],
@@ -184,6 +190,26 @@
184
190
  "default": "./dist/experimental.cjs"
185
191
  }
186
192
  },
193
+ "./experimental/video/node": {
194
+ "import": {
195
+ "types": "./dist/experimental/video/node.d.ts",
196
+ "default": "./dist/experimental/video/node.js"
197
+ },
198
+ "require": {
199
+ "types": "./dist/experimental/video/node.d.cts",
200
+ "default": "./dist/experimental/video/node.cjs"
201
+ }
202
+ },
203
+ "./experimental/3d/bun": {
204
+ "import": {
205
+ "types": "./dist/experimental/3d/bun.d.ts",
206
+ "default": "./dist/experimental/3d/bun.js"
207
+ },
208
+ "require": {
209
+ "types": "./dist/experimental/3d/bun.d.cts",
210
+ "default": "./dist/experimental/3d/bun.cjs"
211
+ }
212
+ },
187
213
  "./agent": {
188
214
  "import": {
189
215
  "types": "./dist/agent.d.ts",
@@ -230,6 +256,7 @@
230
256
  "@vitest/coverage-v8": "^4.1.9",
231
257
  "beautiful-mermaid": "^1.1.3",
232
258
  "bumpp": "^8.2.1",
259
+ "bun-webgpu": "0.1.7",
233
260
  "esbuild": "^0.20.2",
234
261
  "happy-dom": "^17.6.3",
235
262
  "lint-staged": "^13.3.0",
@@ -249,11 +276,15 @@
249
276
  },
250
277
  "peerDependencies": {
251
278
  "beautiful-mermaid": "^1.1.3",
279
+ "bun-webgpu": "^0.1.7",
252
280
  "vue": ">=3.3.0 <4"
253
281
  },
254
282
  "peerDependenciesMeta": {
255
283
  "beautiful-mermaid": {
256
284
  "optional": true
285
+ },
286
+ "bun-webgpu": {
287
+ "optional": true
257
288
  }
258
289
  },
259
290
  "lint-staged": {
@@ -294,6 +325,12 @@
294
325
  "run:component:terminal:list": "tsx scripts/run-component-terminal.ts --list",
295
326
  "run:github-contribution-card": "pnpm -C apps/simon-terminal-card dev",
296
327
  "run:logo:terminal": "tsx examples/vue-tui-logo-terminal.ts",
328
+ "run:3d:terminal": "bun examples/t3d-terminal-badge.ts",
329
+ "run:repo-3d-badge": "bun repo-3d-badge/src/cli.ts",
330
+ "example:3d:smoke": "VT_SMOKE=1 bun examples/t3d-terminal-badge.ts",
331
+ "run:flappy:terminal": "tsx examples/flappy-bird-terminal.ts",
332
+ "example:flappy:smoke": "VT_SMOKE=1 tsx examples/flappy-bird-terminal.ts",
333
+ "test:3d:bun": "bun scripts/smoke-bun-3d.ts",
297
334
  "run:image-showcase:terminal": "tsx examples/image-showcase.ts",
298
335
  "run:katex-showcase:terminal": "tsx examples/katex-showcase.ts",
299
336
  "trace:terminal-resize": "node scripts/trace-terminal-resize.mjs",