lastriko 0.1.2 → 0.1.7

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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/integration/ws-flow.integration.test.js +38 -140
  3. package/dist/__tests__/integration/ws-flow.integration.test.js.map +1 -1
  4. package/dist/client/events.js +169 -49
  5. package/dist/client/events.js.map +1 -1
  6. package/dist/client/swap.d.ts +14 -1
  7. package/dist/client/swap.js +185 -7
  8. package/dist/client/swap.js.map +1 -1
  9. package/dist/client/ws.d.ts +1 -0
  10. package/dist/client/ws.js +214 -35
  11. package/dist/client/ws.js.map +1 -1
  12. package/dist/client/ws.test.js +6 -146
  13. package/dist/client/ws.test.js.map +1 -1
  14. package/dist/components/context.d.ts +14 -2
  15. package/dist/components/context.js +330 -5
  16. package/dist/components/context.js.map +1 -1
  17. package/dist/components/context.test.js +74 -56
  18. package/dist/components/context.test.js.map +1 -1
  19. package/dist/components/registry.d.ts +2 -2
  20. package/dist/components/registry.js +52 -4
  21. package/dist/components/registry.js.map +1 -1
  22. package/dist/components/types.d.ts +180 -4
  23. package/dist/engine/code-highlight.d.ts +1 -0
  24. package/dist/engine/code-highlight.js +64 -0
  25. package/dist/engine/code-highlight.js.map +1 -0
  26. package/dist/engine/code-highlight.test.d.ts +1 -0
  27. package/dist/engine/code-highlight.test.js +15 -0
  28. package/dist/engine/code-highlight.test.js.map +1 -0
  29. package/dist/engine/executor.js +16 -0
  30. package/dist/engine/executor.js.map +1 -1
  31. package/dist/engine/executor.test.js +33 -4
  32. package/dist/engine/executor.test.js.map +1 -1
  33. package/dist/engine/messages.d.ts +9 -1
  34. package/dist/engine/messages.js.map +1 -1
  35. package/dist/engine/messages.test.d.ts +1 -0
  36. package/dist/engine/messages.test.js +39 -0
  37. package/dist/engine/messages.test.js.map +1 -0
  38. package/dist/engine/renderer.js +241 -14
  39. package/dist/engine/renderer.js.map +1 -1
  40. package/dist/engine/renderer.test.js +230 -202
  41. package/dist/engine/renderer.test.js.map +1 -1
  42. package/dist/engine/server.d.ts +2 -0
  43. package/dist/engine/server.js +57 -6
  44. package/dist/engine/server.js.map +1 -1
  45. package/dist/engine/server.test.js +105 -4
  46. package/dist/engine/server.test.js.map +1 -1
  47. package/dist/engine/watcher.d.ts +17 -1
  48. package/dist/engine/watcher.js +42 -5
  49. package/dist/engine/watcher.js.map +1 -1
  50. package/dist/engine/watcher.test.d.ts +1 -0
  51. package/dist/engine/watcher.test.js +62 -0
  52. package/dist/engine/watcher.test.js.map +1 -0
  53. package/dist/engine/websocket.d.ts +2 -0
  54. package/dist/engine/websocket.hub.test.js +24 -0
  55. package/dist/engine/websocket.hub.test.js.map +1 -1
  56. package/dist/engine/websocket.js +6 -1
  57. package/dist/engine/websocket.js.map +1 -1
  58. package/dist/index.d.ts +3 -1
  59. package/dist/index.js +1 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/style.css +150 -0
  62. package/dist/theme/lastriko.css +150 -0
  63. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/engine/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/engine/websocket.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,10 +4,12 @@ import type { AppCallback } from './components/types';
4
4
  export interface AppConfig extends RuntimeConfig {
5
5
  plugins?: LastrikoPlugin[];
6
6
  toolbar?: boolean;
7
+ hotReloadPreserve?: boolean;
7
8
  }
8
9
  export interface AppOptions {
9
10
  plugins?: LastrikoPlugin[];
10
11
  server?: RuntimeConfig;
12
+ hotReloadPreserve?: boolean;
11
13
  }
12
14
  export interface RunningApp {
13
15
  stop: () => Promise<void>;
@@ -15,7 +17,7 @@ export interface RunningApp {
15
17
  }
16
18
  export declare function defineConfig(config: AppConfig): AppConfig;
17
19
  export declare function app(title: string, callback: AppCallback, opts?: AppOptions): Promise<RunningApp>;
18
- export type { ConnectionScope as Connection, ComponentHandle, ButtonHandle, ButtonCallbackHandle, InputHandle, TextHandle, TextInputHandle, NumberInputHandle, SliderHandle, ToggleHandle, SelectHandle, FileUploadHandle, UploadedFile, SelectOption, ButtonOpts, TextInputOpts, NumberInputOpts, SliderOpts, ToggleOpts, SelectOpts, FileUploadOpts, TableHandle, TableRow, TableRowHandle as RowHandle, MetricHandle, MetricOpts, ProgressHandle, ProgressOpts, StreamHandle, StreamTextOpts, ChatHandle, ChatUIOptions, PromptEditorHandle, PromptEditorOpts, ShellRegions, ShellOpts, GridOpts, TabsOpts, TabDef, ToastOpts, AlertOpts, LoadingOpts, UIContext, AppCallback, } from './components/types';
20
+ export type { ConnectionScope as Connection, ComponentHandle, ButtonHandle, ButtonCallbackHandle, InputHandle, TextHandle, TextInputHandle, NumberInputHandle, SliderHandle, ToggleHandle, SelectHandle, MultiSelectHandle, ColorPickerHandle, DateInputHandle, FileUploadHandle, UploadedFile, SelectOption, ButtonOpts, TextInputOpts, NumberInputOpts, SliderOpts, ToggleOpts, SelectOpts, MultiSelectOpts, ColorPickerOpts, DateInputOpts, FileUploadOpts, VideoProps, AudioProps, DiffProps, AccordionSection, AccordionOpts, FullscreenHandle, FullscreenOpts, TableHandle, TableRow, TableRowHandle as RowHandle, MetricHandle, MetricOpts, ProgressHandle, ProgressOpts, StreamHandle, StreamTextOpts, ChatHandle, ChatUIOptions, PromptEditorHandle, PromptEditorOpts, ModelSpec, ModelCompareOpts, ModelCompareResults, ModelCompareHandle, ParameterDef, ParameterSchema, ParameterPanelOpts, ParameterPanelHandle, FilmStripItem, FilmStripOpts, BeforeAfterOpts, ShellRegions, ShellOpts, GridOpts, TabsOpts, TabDef, ToastOpts, AlertOpts, LoadingOpts, UIContext, AppCallback, } from './components/types';
19
21
  export type { LastrikoPlugin } from './plugins/types';
20
22
  export { createWebSocketHub } from './engine/websocket';
21
23
  export { createWatcher, startWatcher } from './engine/watcher';
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export async function app(title, callback, opts = {}) {
10
10
  plugins,
11
11
  app: callback,
12
12
  ...(opts.server ?? {}),
13
+ hotReloadPreserve: opts.hotReloadPreserve ?? true,
13
14
  });
14
15
  if (process.env.NODE_ENV !== 'test') {
15
16
  console.info(`[lastriko] Ready at http://${server.host}:${server.port}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,YAAY,EAA0C,MAAM,iBAAiB,CAAC;AAkBvF,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,KAAa,EAAE,QAAqB,EAAE,OAAmB,EAAE;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6E,CAAC;IACnG,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,KAAK;QACL,OAAO;QACP,GAAG,EAAE,QAAQ;QACb,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAiDD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,YAAY,EAA0C,MAAM,iBAAiB,CAAC;AAoBvF,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,KAAa,EAAE,QAAqB,EAAE,OAAmB,EAAE;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6E,CAAC;IACnG,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,KAAK;QACL,OAAO;QACP,GAAG,EAAE,QAAQ;QACb,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACtB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;KAClD,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAyED,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/style.css CHANGED
@@ -147,6 +147,50 @@ body {
147
147
  align-items: start;
148
148
  }
149
149
 
150
+ .lk-shell-mobile-toggle {
151
+ position: absolute;
152
+ width: 1px;
153
+ height: 1px;
154
+ margin: -1px;
155
+ padding: 0;
156
+ border: 0;
157
+ overflow: hidden;
158
+ clip: rect(0 0 0 0);
159
+ clip-path: inset(50%);
160
+ white-space: nowrap;
161
+ }
162
+
163
+ .lk-shell-mobile-button {
164
+ display: none;
165
+ align-items: center;
166
+ justify-content: center;
167
+ width: 2.25rem;
168
+ height: 2.25rem;
169
+ border: 1px solid var(--lk-border);
170
+ border-radius: 999px;
171
+ background: var(--lk-surface);
172
+ color: var(--lk-text);
173
+ cursor: pointer;
174
+ }
175
+
176
+ .lk-shell-mobile-button::before {
177
+ content: '☰';
178
+ font-size: 1rem;
179
+ line-height: 1;
180
+ }
181
+
182
+ .lk-shell-mobile-button--floating {
183
+ position: fixed;
184
+ left: 1rem;
185
+ top: 4.25rem;
186
+ z-index: 46;
187
+ box-shadow: var(--lk-shadow);
188
+ }
189
+
190
+ .lk-shell-backdrop {
191
+ display: none;
192
+ }
193
+
150
194
  .lk-shell--sidebar-right {
151
195
  grid-template-columns: minmax(0, 1fr) var(--lk-sidebar-width, 260px);
152
196
  grid-template-areas:
@@ -228,6 +272,62 @@ body {
228
272
  }
229
273
  }
230
274
 
275
+ @media (max-width: 767px) {
276
+ .lk-shell {
277
+ position: relative;
278
+ }
279
+
280
+ .lk-shell-mobile-button {
281
+ display: inline-flex;
282
+ }
283
+
284
+ .lk-shell-header .lk-shell-mobile-button {
285
+ margin-right: 0.25rem;
286
+ }
287
+
288
+ .lk-shell-sidebar {
289
+ position: fixed;
290
+ top: 0;
291
+ bottom: 0;
292
+ left: 0;
293
+ width: min(86vw, var(--lk-sidebar-width, 280px));
294
+ max-height: none;
295
+ margin: 0;
296
+ padding: 1rem 0.9rem 1.2rem;
297
+ border-right: 1px solid var(--lk-border);
298
+ border-left: none;
299
+ border-bottom: none;
300
+ border-radius: 0;
301
+ transform: translateX(-105%);
302
+ transition: transform 0.2s ease;
303
+ z-index: 45;
304
+ }
305
+
306
+ .lk-shell--sidebar-right .lk-shell-sidebar {
307
+ left: auto;
308
+ right: 0;
309
+ border-left: 1px solid var(--lk-border);
310
+ border-right: none;
311
+ transform: translateX(105%);
312
+ }
313
+
314
+ .lk-shell-mobile-toggle:checked ~ .lk-shell-sidebar {
315
+ transform: translateX(0);
316
+ }
317
+
318
+ .lk-shell-backdrop {
319
+ display: none;
320
+ position: fixed;
321
+ inset: 0;
322
+ z-index: 44;
323
+ background: rgba(2, 6, 23, 0.35);
324
+ }
325
+
326
+ .lk-shell-mobile-toggle:checked ~ .lk-shell-backdrop {
327
+ display: block;
328
+ }
329
+ }
330
+
231
331
  .lk-grid {
232
332
  width: 100%;
233
333
  }
@@ -409,6 +509,33 @@ body {
409
509
  font-size: 0.875rem;
410
510
  }
411
511
 
512
+ .lk-code-wrap {
513
+ display: flex;
514
+ flex-direction: column;
515
+ gap: 0.35rem;
516
+ }
517
+
518
+ .lk-code-copy {
519
+ align-self: flex-end;
520
+ border: 1px solid var(--lk-border);
521
+ border-radius: 8px;
522
+ padding: 0.3rem 0.6rem;
523
+ font: inherit;
524
+ font-size: 0.75rem;
525
+ color: var(--lk-text);
526
+ background: var(--lk-surface);
527
+ cursor: pointer;
528
+ }
529
+
530
+ .lk-code-copy.is-copied {
531
+ background: color-mix(in srgb, var(--lk-primary) 20%, var(--lk-surface));
532
+ border-color: var(--lk-primary);
533
+ }
534
+
535
+ .lk-code-source {
536
+ display: none;
537
+ }
538
+
412
539
  .lk-json {
413
540
  border: 1px solid var(--lk-border);
414
541
  border-radius: var(--lk-radius);
@@ -429,6 +556,29 @@ body {
429
556
  overflow: auto;
430
557
  }
431
558
 
559
+ .lk-json details {
560
+ border: 1px solid var(--lk-border);
561
+ border-radius: 8px;
562
+ background: var(--lk-surface-2);
563
+ padding: 0.4rem 0.5rem;
564
+ }
565
+
566
+ .lk-json summary {
567
+ cursor: pointer;
568
+ font-size: 0.75rem;
569
+ font-weight: 700;
570
+ color: var(--lk-muted);
571
+ list-style: none;
572
+ }
573
+
574
+ .lk-json summary::before {
575
+ content: '▸ ';
576
+ }
577
+
578
+ .lk-json details[open] > summary::before {
579
+ content: '▾ ';
580
+ }
581
+
432
582
  /* —— Table —— */
433
583
  .lk-table-wrap {
434
584
  border: 1px solid var(--lk-border);
@@ -147,6 +147,50 @@ body {
147
147
  align-items: start;
148
148
  }
149
149
 
150
+ .lk-shell-mobile-toggle {
151
+ position: absolute;
152
+ width: 1px;
153
+ height: 1px;
154
+ margin: -1px;
155
+ padding: 0;
156
+ border: 0;
157
+ overflow: hidden;
158
+ clip: rect(0 0 0 0);
159
+ clip-path: inset(50%);
160
+ white-space: nowrap;
161
+ }
162
+
163
+ .lk-shell-mobile-button {
164
+ display: none;
165
+ align-items: center;
166
+ justify-content: center;
167
+ width: 2.25rem;
168
+ height: 2.25rem;
169
+ border: 1px solid var(--lk-border);
170
+ border-radius: 999px;
171
+ background: var(--lk-surface);
172
+ color: var(--lk-text);
173
+ cursor: pointer;
174
+ }
175
+
176
+ .lk-shell-mobile-button::before {
177
+ content: '☰';
178
+ font-size: 1rem;
179
+ line-height: 1;
180
+ }
181
+
182
+ .lk-shell-mobile-button--floating {
183
+ position: fixed;
184
+ left: 1rem;
185
+ top: 4.25rem;
186
+ z-index: 46;
187
+ box-shadow: var(--lk-shadow);
188
+ }
189
+
190
+ .lk-shell-backdrop {
191
+ display: none;
192
+ }
193
+
150
194
  .lk-shell--sidebar-right {
151
195
  grid-template-columns: minmax(0, 1fr) var(--lk-sidebar-width, 260px);
152
196
  grid-template-areas:
@@ -228,6 +272,62 @@ body {
228
272
  }
229
273
  }
230
274
 
275
+ @media (max-width: 767px) {
276
+ .lk-shell {
277
+ position: relative;
278
+ }
279
+
280
+ .lk-shell-mobile-button {
281
+ display: inline-flex;
282
+ }
283
+
284
+ .lk-shell-header .lk-shell-mobile-button {
285
+ margin-right: 0.25rem;
286
+ }
287
+
288
+ .lk-shell-sidebar {
289
+ position: fixed;
290
+ top: 0;
291
+ bottom: 0;
292
+ left: 0;
293
+ width: min(86vw, var(--lk-sidebar-width, 280px));
294
+ max-height: none;
295
+ margin: 0;
296
+ padding: 1rem 0.9rem 1.2rem;
297
+ border-right: 1px solid var(--lk-border);
298
+ border-left: none;
299
+ border-bottom: none;
300
+ border-radius: 0;
301
+ transform: translateX(-105%);
302
+ transition: transform 0.2s ease;
303
+ z-index: 45;
304
+ }
305
+
306
+ .lk-shell--sidebar-right .lk-shell-sidebar {
307
+ left: auto;
308
+ right: 0;
309
+ border-left: 1px solid var(--lk-border);
310
+ border-right: none;
311
+ transform: translateX(105%);
312
+ }
313
+
314
+ .lk-shell-mobile-toggle:checked ~ .lk-shell-sidebar {
315
+ transform: translateX(0);
316
+ }
317
+
318
+ .lk-shell-backdrop {
319
+ display: none;
320
+ position: fixed;
321
+ inset: 0;
322
+ z-index: 44;
323
+ background: rgba(2, 6, 23, 0.35);
324
+ }
325
+
326
+ .lk-shell-mobile-toggle:checked ~ .lk-shell-backdrop {
327
+ display: block;
328
+ }
329
+ }
330
+
231
331
  .lk-grid {
232
332
  width: 100%;
233
333
  }
@@ -409,6 +509,33 @@ body {
409
509
  font-size: 0.875rem;
410
510
  }
411
511
 
512
+ .lk-code-wrap {
513
+ display: flex;
514
+ flex-direction: column;
515
+ gap: 0.35rem;
516
+ }
517
+
518
+ .lk-code-copy {
519
+ align-self: flex-end;
520
+ border: 1px solid var(--lk-border);
521
+ border-radius: 8px;
522
+ padding: 0.3rem 0.6rem;
523
+ font: inherit;
524
+ font-size: 0.75rem;
525
+ color: var(--lk-text);
526
+ background: var(--lk-surface);
527
+ cursor: pointer;
528
+ }
529
+
530
+ .lk-code-copy.is-copied {
531
+ background: color-mix(in srgb, var(--lk-primary) 20%, var(--lk-surface));
532
+ border-color: var(--lk-primary);
533
+ }
534
+
535
+ .lk-code-source {
536
+ display: none;
537
+ }
538
+
412
539
  .lk-json {
413
540
  border: 1px solid var(--lk-border);
414
541
  border-radius: var(--lk-radius);
@@ -429,6 +556,29 @@ body {
429
556
  overflow: auto;
430
557
  }
431
558
 
559
+ .lk-json details {
560
+ border: 1px solid var(--lk-border);
561
+ border-radius: 8px;
562
+ background: var(--lk-surface-2);
563
+ padding: 0.4rem 0.5rem;
564
+ }
565
+
566
+ .lk-json summary {
567
+ cursor: pointer;
568
+ font-size: 0.75rem;
569
+ font-weight: 700;
570
+ color: var(--lk-muted);
571
+ list-style: none;
572
+ }
573
+
574
+ .lk-json summary::before {
575
+ content: '▸ ';
576
+ }
577
+
578
+ .lk-json details[open] > summary::before {
579
+ content: '▾ ';
580
+ }
581
+
432
582
  /* —— Table —— */
433
583
  .lk-table-wrap {
434
584
  border: 1px solid var(--lk-border);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lastriko",
3
- "version": "0.1.2",
3
+ "version": "0.1.7",
4
4
  "description": "TypeScript UI toolkit for AI demos and rapid prototyping (server-rendered HTML + WebSocket).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,9 +51,13 @@
51
51
  "check:bundle": "node ../../scripts/check-client-size.mjs"
52
52
  },
53
53
  "dependencies": {
54
+ "@shikijs/langs": "^4.0.2",
55
+ "@shikijs/themes": "^4.0.2",
56
+ "chokidar": "^5.0.0",
54
57
  "marked": "^18.0.0",
55
58
  "nanostores": "^1.1.0",
56
59
  "sanitize-html": "^2.17.2",
60
+ "shiki": "^4.0.2",
57
61
  "ws": "^8.20.0"
58
62
  },
59
63
  "devDependencies": {