@almadar/std 16.217.0 → 16.219.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 (75) hide show
  1. package/behaviors/lolo/infra/atoms/std-data-import.lolo +56 -5
  2. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +18 -18
  3. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +5 -5
  4. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +17 -18
  5. package/behaviors/lolo/ui/core/atoms/std-gantt-schedule.lolo +215 -0
  6. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +2 -2
  7. package/behaviors/lolo/ui/core/molecules/ui-gantt.lolo +169 -0
  8. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +2 -2
  9. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +2 -2
  10. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +2 -2
  11. package/behaviors/registry/infra/atoms/std-data-import.orb +329 -6
  12. package/behaviors/registry/infra/atoms/std-notification-center.orb +41 -33
  13. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +10 -17
  14. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +198 -195
  15. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +723 -0
  16. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +508 -0
  17. package/canonical-operators.json +46 -1
  18. package/dist/behaviors/exports-reader.js +4455 -4608
  19. package/dist/behaviors/functions/index.d.ts +270 -47
  20. package/dist/behaviors/functions/index.js +4520 -4682
  21. package/dist/behaviors/index.d.ts +1 -1
  22. package/dist/behaviors/index.js +4531 -4684
  23. package/dist/behaviors/query.js +4455 -4608
  24. package/dist/behaviors-embeddings.hash.json +3 -3
  25. package/dist/behaviors-embeddings.json +23 -11
  26. package/dist/behaviors-registry.json +2347 -666
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.js +4580 -4697
  29. package/dist/knob-embeddings.hash.json +3 -3
  30. package/dist/knob-embeddings.json +1 -1
  31. package/dist/modules/anim.d.ts +1 -1
  32. package/dist/modules/array.d.ts +1 -1
  33. package/dist/modules/async.d.ts +1 -1
  34. package/dist/modules/behavior.d.ts +1 -1
  35. package/dist/modules/browser.d.ts +1 -1
  36. package/dist/modules/composition.d.ts +1 -1
  37. package/dist/modules/contract.d.ts +1 -1
  38. package/dist/modules/core.d.ts +1 -1
  39. package/dist/modules/data.d.ts +1 -1
  40. package/dist/modules/ease.d.ts +1 -1
  41. package/dist/modules/format.d.ts +1 -1
  42. package/dist/modules/geo.d.ts +1 -1
  43. package/dist/modules/graph.d.ts +1 -1
  44. package/dist/modules/grid.d.ts +1 -1
  45. package/dist/modules/index.d.ts +2 -1
  46. package/dist/modules/index.js +30 -1
  47. package/dist/modules/integration.d.ts +1 -1
  48. package/dist/modules/json.d.ts +20 -0
  49. package/dist/modules/json.js +30 -0
  50. package/dist/modules/llm.d.ts +1 -1
  51. package/dist/modules/math.d.ts +1 -1
  52. package/dist/modules/memory.d.ts +1 -1
  53. package/dist/modules/nn.d.ts +1 -1
  54. package/dist/modules/noise.d.ts +1 -1
  55. package/dist/modules/object.d.ts +1 -1
  56. package/dist/modules/os.d.ts +1 -1
  57. package/dist/modules/path.d.ts +1 -1
  58. package/dist/modules/prob.d.ts +1 -1
  59. package/dist/modules/session.d.ts +1 -1
  60. package/dist/modules/str.d.ts +1 -1
  61. package/dist/modules/tensor.d.ts +1 -1
  62. package/dist/modules/time.d.ts +1 -1
  63. package/dist/modules/trace.d.ts +1 -1
  64. package/dist/modules/train.d.ts +1 -1
  65. package/dist/modules/validate.d.ts +1 -1
  66. package/dist/modules/vector.d.ts +1 -1
  67. package/dist/modules/workspace.d.ts +1 -1
  68. package/dist/registry/factory-signatures.json +1 -1
  69. package/dist/registry.d.ts +1 -1
  70. package/dist/registry.js +28 -0
  71. package/dist/{types-C-Yerb4-.d.ts → types-DpbKBJu8.d.ts} +3 -3
  72. package/i18n/ar.json +3 -1
  73. package/i18n/en.json +2 -0
  74. package/i18n/sl.json +3 -1
  75. package/package.json +2 -2
@@ -0,0 +1,723 @@
1
+ {
2
+ "description": "std-gantt-schedule — GENERIC view-only Gantt/timeline atom: fetches a task collection on INIT and renders it as bars on a day-scale axis via the gantt pattern, with group headers, dependency arrows, and a today marker. Fully rebindable: a host overrides the linked entity and points the field-mapping configs (labelField/startField/endField/durationField/statusField/groupField) at its own columns; clicking a bar emits the config-named onBarClick event with the row id. No drag-edit, no zoom — schedule viewing only.",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M2M5G80ZEXM0SP6SA5JV6G45": {
6
+ "bakedName": "Task",
7
+ "curName": "Task",
8
+ "id": "ent_01M2M5G80ZEXM0SP6SA5JV6G45",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M2M5G80Z5MV21CQ3KM8QK5WD": {
14
+ "bakedName": "@config.onBarClick",
15
+ "curName": "@config.onBarClick",
16
+ "id": "evt_01M2M5G80Z5MV21CQ3KM8QK5WD",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
20
+ "renames": []
21
+ },
22
+ "evt_01M2M5G80Z95J9AAB577H7J2FY": {
23
+ "bakedName": "TaskLoadFailed",
24
+ "curName": "TaskLoadFailed",
25
+ "id": "evt_01M2M5G80Z95J9AAB577H7J2FY",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
29
+ "renames": []
30
+ },
31
+ "evt_01M2M5G80ZB5N0ZDQGCG54E63E": {
32
+ "bakedName": "INIT",
33
+ "curName": "INIT",
34
+ "id": "evt_01M2M5G80ZB5N0ZDQGCG54E63E",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
38
+ "renames": []
39
+ },
40
+ "evt_01M2M5G80ZHK3TRG4D09CPG3GA": {
41
+ "bakedName": "TaskLoaded",
42
+ "curName": "TaskLoaded",
43
+ "id": "evt_01M2M5G80ZHK3TRG4D09CPG3GA",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
47
+ "renames": []
48
+ },
49
+ "evt_01M2M5G80ZJN33H0Y5G7P8DTEA": {
50
+ "bakedName": "RETRY",
51
+ "curName": "RETRY",
52
+ "id": "evt_01M2M5G80ZJN33H0Y5G7P8DTEA",
53
+ "kind": "event",
54
+ "owner": "workspace",
55
+ "parent": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
56
+ "renames": []
57
+ },
58
+ "orb_01M2M5G80ZJZF2E4Z8K6XYKYZF": {
59
+ "bakedName": "GanttScheduleOrbital",
60
+ "curName": "GanttScheduleOrbital",
61
+ "id": "orb_01M2M5G80ZJZF2E4Z8K6XYKYZF",
62
+ "kind": "orbital",
63
+ "owner": "workspace",
64
+ "renames": []
65
+ },
66
+ "pag_01M2M5G81062W5B5SHP2SM3MW8": {
67
+ "bakedName": "TaskGanttSchedulePage",
68
+ "curName": "TaskGanttSchedulePage",
69
+ "id": "pag_01M2M5G81062W5B5SHP2SM3MW8",
70
+ "kind": "page",
71
+ "owner": "workspace",
72
+ "renames": []
73
+ },
74
+ "trt_01M2M5G80ZT7QV7EQP5CNSAJWG": {
75
+ "bakedName": "TaskGanttSchedule",
76
+ "curName": "TaskGanttSchedule",
77
+ "id": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
78
+ "kind": "trait",
79
+ "owner": "workspace",
80
+ "renames": []
81
+ }
82
+ },
83
+ "schemaVersion": 1
84
+ },
85
+ "name": "std-gantt-schedule",
86
+ "orbitals": [
87
+ {
88
+ "entity": {
89
+ "fields": [
90
+ {
91
+ "name": "id",
92
+ "required": true,
93
+ "type": "string"
94
+ },
95
+ {
96
+ "default": "",
97
+ "description": "task label shown on the bar",
98
+ "name": "title",
99
+ "synonyms": "name, label, summary, subject",
100
+ "type": "string"
101
+ },
102
+ {
103
+ "description": "task start timestamp the bar is placed from",
104
+ "name": "start",
105
+ "synonyms": "starts, begins, start date, from",
106
+ "type": "datetime"
107
+ },
108
+ {
109
+ "description": "task end timestamp the bar is placed to; when absent, duration days are used",
110
+ "name": "end",
111
+ "synonyms": "finish, due, end date, until",
112
+ "type": "datetime"
113
+ },
114
+ {
115
+ "default": "pending",
116
+ "description": "task lifecycle status, drives bar colour",
117
+ "name": "status",
118
+ "synonyms": "state, stage, phase",
119
+ "type": "string",
120
+ "values": [
121
+ "pending",
122
+ "active",
123
+ "complete",
124
+ "blocked"
125
+ ]
126
+ },
127
+ {
128
+ "default": "",
129
+ "description": "group/section the task renders under a header row for",
130
+ "name": "group",
131
+ "synonyms": "team, swimlane, section, project",
132
+ "type": "string"
133
+ }
134
+ ],
135
+ "id": "ent_01M2M5G80ZEXM0SP6SA5JV6G45",
136
+ "name": "Task",
137
+ "persistence": "runtime"
138
+ },
139
+ "id": "orb_01M2M5G80ZJZF2E4Z8K6XYKYZF",
140
+ "name": "GanttScheduleOrbital",
141
+ "pages": [
142
+ {
143
+ "id": "pag_01M2M5G81062W5B5SHP2SM3MW8",
144
+ "name": "TaskGanttSchedulePage",
145
+ "path": "/tasks/gantt",
146
+ "traits": [
147
+ {
148
+ "ref": "TaskGanttSchedule",
149
+ "refId": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG"
150
+ }
151
+ ]
152
+ }
153
+ ],
154
+ "traits": [
155
+ {
156
+ "category": "interaction",
157
+ "config": {
158
+ "dayWidth": {
159
+ "default": 28.0,
160
+ "description": "Pixels per day on the time axis.",
161
+ "label": "Day width",
162
+ "tier": "presentation",
163
+ "type": "number"
164
+ },
165
+ "durationField": {
166
+ "default": "",
167
+ "description": "Row column holding the task length in days, used when the row has no end value. Empty = bars always read endField.",
168
+ "label": "Duration field",
169
+ "synonyms": "duration column, length field, days field",
170
+ "tier": "presentation",
171
+ "type": "string"
172
+ },
173
+ "endField": {
174
+ "default": "end",
175
+ "description": "Row column holding the end timestamp each bar is placed to. When a row has no end, durationField (days) is used instead.",
176
+ "label": "End field",
177
+ "synonyms": "end column, due field, finish field",
178
+ "tier": "presentation",
179
+ "type": "string"
180
+ },
181
+ "groupField": {
182
+ "default": "",
183
+ "description": "Row column rows are grouped under header rows by (e.g. team, project). Empty (default) = flat list, no group headers.",
184
+ "label": "Group field",
185
+ "synonyms": "group column, swimlane field, section field",
186
+ "tier": "presentation",
187
+ "type": "string"
188
+ },
189
+ "include": {
190
+ "default": [],
191
+ "description": "Entity relation field names to hydrate on fetch, so field mappings can use dot-paths like assignee.name. Empty = no hydration, the default.",
192
+ "items": {
193
+ "type": "string"
194
+ },
195
+ "label": "Which relation fields to hydrate?",
196
+ "synonyms": "relation hydration, populate relations, joined fields",
197
+ "tier": "internal",
198
+ "type": "[string]"
199
+ },
200
+ "labelField": {
201
+ "default": "title",
202
+ "description": "Row column holding the bar label. Rebound hosts point this at their own column (e.g. name, summary).",
203
+ "label": "Label field",
204
+ "synonyms": "title field, label column, name field",
205
+ "tier": "presentation",
206
+ "type": "string"
207
+ },
208
+ "links": {
209
+ "default": [],
210
+ "description": "Dependency arrows between task ids ({ from, to }); the host derives them from its own relation field and passes them here.",
211
+ "items": {
212
+ "properties": {
213
+ "from": {
214
+ "name": "from",
215
+ "required": true,
216
+ "type": "string"
217
+ },
218
+ "to": {
219
+ "name": "to",
220
+ "required": true,
221
+ "type": "string"
222
+ }
223
+ },
224
+ "type": "object"
225
+ },
226
+ "label": "Dependency links",
227
+ "synonyms": "dependencies, dependency arrows, precedences",
228
+ "tier": "presentation",
229
+ "type": "[GanttLinkSpec]"
230
+ },
231
+ "onBarClick": {
232
+ "default": "",
233
+ "description": "Event emitted when a bar is clicked: UI:{onBarClick} with { id } carrying the clicked row's id. Empty means bars are not clickable.",
234
+ "label": "On bar click",
235
+ "synonyms": "bar click, task click, select task, open task",
236
+ "tier": "presentation",
237
+ "type": "event"
238
+ },
239
+ "rangeEnd": {
240
+ "default": "",
241
+ "description": "Last visible day (ISO date). Empty (default) = 2 days after the latest task end.",
242
+ "label": "Range end",
243
+ "synonyms": "window end, axis end, to date",
244
+ "tier": "presentation",
245
+ "type": "string"
246
+ },
247
+ "rangeStart": {
248
+ "default": "",
249
+ "description": "First visible day (ISO date). Empty (default) = 2 days before the earliest task.",
250
+ "label": "Range start",
251
+ "synonyms": "window start, axis start, from date",
252
+ "tier": "presentation",
253
+ "type": "string"
254
+ },
255
+ "showToday": {
256
+ "default": true,
257
+ "description": "Paint the today marker line when today falls inside the visible range.",
258
+ "label": "Show today marker",
259
+ "tier": "presentation",
260
+ "type": "boolean"
261
+ },
262
+ "startField": {
263
+ "default": "start",
264
+ "description": "Row column holding the start timestamp each bar is placed from (e.g. startTime, startsAt, beginsAt).",
265
+ "label": "Start field",
266
+ "synonyms": "start column, from field, begin field",
267
+ "tier": "presentation",
268
+ "type": "string"
269
+ },
270
+ "statusField": {
271
+ "default": "status",
272
+ "description": "Row column holding the status value that drives bar colour.",
273
+ "label": "Status field",
274
+ "synonyms": "status column, state field, stage field",
275
+ "tier": "presentation",
276
+ "type": "string"
277
+ },
278
+ "title": {
279
+ "default": "Schedule",
280
+ "description": "Header text shown above the gantt chart.",
281
+ "label": "Title",
282
+ "tier": "presentation",
283
+ "type": "string"
284
+ }
285
+ },
286
+ "effectRow": [
287
+ {
288
+ "kind": "fetch",
289
+ "resource": "Task"
290
+ },
291
+ {
292
+ "kind": "render-ui",
293
+ "resource": "main"
294
+ }
295
+ ],
296
+ "emits": [
297
+ {
298
+ "description": "Indicates that schedule tasks have been successfully retrieved.",
299
+ "event": "TaskLoaded",
300
+ "eventId": "evt_01M2M5G80ZHK3TRG4D09CPG3GA",
301
+ "payloadSchema": [
302
+ {
303
+ "entity": "Task",
304
+ "name": "data",
305
+ "properties": [
306
+ {
307
+ "name": "id",
308
+ "required": true,
309
+ "type": "string"
310
+ },
311
+ {
312
+ "name": "title",
313
+ "type": "string"
314
+ },
315
+ {
316
+ "name": "start",
317
+ "type": "datetime"
318
+ },
319
+ {
320
+ "name": "end",
321
+ "type": "datetime"
322
+ },
323
+ {
324
+ "name": "status",
325
+ "type": "string"
326
+ },
327
+ {
328
+ "name": "group",
329
+ "type": "string"
330
+ }
331
+ ],
332
+ "type": "[object]"
333
+ }
334
+ ],
335
+ "scope": "internal",
336
+ "synonyms": "loaded, fetched, retrieved, populated",
337
+ "tier": "domain"
338
+ },
339
+ {
340
+ "description": "Indicates a failure to load schedule tasks.",
341
+ "event": "TaskLoadFailed",
342
+ "eventId": "evt_01M2M5G80Z95J9AAB577H7J2FY",
343
+ "payloadSchema": [
344
+ {
345
+ "name": "error",
346
+ "type": "string"
347
+ },
348
+ {
349
+ "name": "code",
350
+ "type": "string"
351
+ }
352
+ ],
353
+ "scope": "internal",
354
+ "synonyms": "error, failed, problem, loading issue",
355
+ "tier": "internal"
356
+ },
357
+ {
358
+ "definerKnob": "onBarClick",
359
+ "description": "Emitted when a gantt bar is clicked; { id } carries the clicked task row's id.",
360
+ "event": "@config.onBarClick",
361
+ "eventId": "evt_01M2M5G80Z5MV21CQ3KM8QK5WD",
362
+ "payloadSchema": [
363
+ {
364
+ "name": "id",
365
+ "type": "string"
366
+ }
367
+ ],
368
+ "scope": "external",
369
+ "tier": "presentation"
370
+ }
371
+ ],
372
+ "entityContract": {
373
+ "provides": [],
374
+ "requires": []
375
+ },
376
+ "entityRebindable": true,
377
+ "entityRefIds": {
378
+ "Task": "ent_01M2M5G80ZEXM0SP6SA5JV6G45"
379
+ },
380
+ "id": "trt_01M2M5G80ZT7QV7EQP5CNSAJWG",
381
+ "linkedEntity": "Task",
382
+ "linkedEntityId": "ent_01M2M5G80ZEXM0SP6SA5JV6G45",
383
+ "name": "TaskGanttSchedule",
384
+ "scope": "collection",
385
+ "stateMachine": {
386
+ "events": [
387
+ {
388
+ "id": "evt_01M2M5G80ZB5N0ZDQGCG54E63E",
389
+ "key": "INIT",
390
+ "name": "Initialize"
391
+ },
392
+ {
393
+ "description": "Indicates that schedule tasks have been successfully retrieved.",
394
+ "id": "evt_01M2M5G80ZHK3TRG4D09CPG3GA",
395
+ "key": "TaskLoaded",
396
+ "name": "Task loaded",
397
+ "payloadSchema": [
398
+ {
399
+ "entity": "Task",
400
+ "name": "data",
401
+ "properties": [
402
+ {
403
+ "name": "id",
404
+ "required": true,
405
+ "type": "string"
406
+ },
407
+ {
408
+ "name": "title",
409
+ "type": "string"
410
+ },
411
+ {
412
+ "name": "start",
413
+ "type": "datetime"
414
+ },
415
+ {
416
+ "name": "end",
417
+ "type": "datetime"
418
+ },
419
+ {
420
+ "name": "status",
421
+ "type": "string"
422
+ },
423
+ {
424
+ "name": "group",
425
+ "type": "string"
426
+ }
427
+ ],
428
+ "type": "[object]"
429
+ }
430
+ ],
431
+ "synonyms": "loaded, fetched, retrieved, populated",
432
+ "tier": "domain"
433
+ },
434
+ {
435
+ "description": "Indicates a failure to load schedule tasks.",
436
+ "id": "evt_01M2M5G80Z95J9AAB577H7J2FY",
437
+ "key": "TaskLoadFailed",
438
+ "name": "Task load failed",
439
+ "payloadSchema": [
440
+ {
441
+ "name": "error",
442
+ "type": "string"
443
+ },
444
+ {
445
+ "name": "code",
446
+ "type": "string"
447
+ }
448
+ ],
449
+ "synonyms": "error, failed, problem, loading issue",
450
+ "tier": "internal"
451
+ },
452
+ {
453
+ "id": "evt_01M2M5G80ZJN33H0Y5G7P8DTEA",
454
+ "key": "RETRY",
455
+ "name": "Retry"
456
+ },
457
+ {
458
+ "description": "Emitted when a gantt bar is clicked; { id } carries the clicked task row's id.",
459
+ "id": "evt_01M2M5G80Z5MV21CQ3KM8QK5WD",
460
+ "key": "@config.onBarClick",
461
+ "name": "@config.on bar click",
462
+ "payloadSchema": [
463
+ {
464
+ "name": "id",
465
+ "type": "string"
466
+ }
467
+ ],
468
+ "tier": "presentation"
469
+ }
470
+ ],
471
+ "states": [
472
+ {
473
+ "isInitial": true,
474
+ "name": "loading"
475
+ },
476
+ {
477
+ "name": "chart"
478
+ },
479
+ {
480
+ "name": "error"
481
+ }
482
+ ],
483
+ "transitions": [
484
+ {
485
+ "effects": [
486
+ [
487
+ "fetch",
488
+ "Task",
489
+ {
490
+ "emit": {
491
+ "failure": "TaskLoadFailed",
492
+ "success": "TaskLoaded"
493
+ },
494
+ "include": "@config.include"
495
+ }
496
+ ],
497
+ [
498
+ "render-ui",
499
+ "main",
500
+ {
501
+ "align": "center",
502
+ "children": [
503
+ {
504
+ "type": "spinner"
505
+ },
506
+ {
507
+ "color": "muted",
508
+ "content": "Loading schedule…",
509
+ "type": "typography",
510
+ "variant": "caption"
511
+ }
512
+ ],
513
+ "className": "py-12",
514
+ "direction": "vertical",
515
+ "gap": "md",
516
+ "type": "stack"
517
+ }
518
+ ]
519
+ ],
520
+ "event": "INIT",
521
+ "eventId": "evt_01M2M5G80ZB5N0ZDQGCG54E63E",
522
+ "from": "loading",
523
+ "to": "loading"
524
+ },
525
+ {
526
+ "effects": [
527
+ [
528
+ "render-ui",
529
+ "main",
530
+ {
531
+ "children": [
532
+ {
533
+ "align": "center",
534
+ "children": [
535
+ {
536
+ "name": "gantt-chart",
537
+ "size": "xl",
538
+ "type": "icon"
539
+ },
540
+ {
541
+ "content": "@config.title",
542
+ "type": "typography",
543
+ "variant": "h2"
544
+ }
545
+ ],
546
+ "direction": "horizontal",
547
+ "gap": "sm",
548
+ "type": "stack"
549
+ },
550
+ {
551
+ "barClickEvent": "@config.onBarClick",
552
+ "dayWidth": "@config.dayWidth",
553
+ "durationField": "@config.durationField",
554
+ "endField": "@config.endField",
555
+ "groupField": "@config.groupField",
556
+ "links": "@config.links",
557
+ "rangeEnd": "@config.rangeEnd",
558
+ "rangeStart": "@config.rangeStart",
559
+ "showToday": "@config.showToday",
560
+ "startField": "@config.startField",
561
+ "statusField": "@config.statusField",
562
+ "tasks": "@payload.data",
563
+ "titleField": "@config.labelField",
564
+ "type": "gantt"
565
+ }
566
+ ],
567
+ "direction": "vertical",
568
+ "gap": "lg",
569
+ "type": "stack"
570
+ }
571
+ ]
572
+ ],
573
+ "event": "TaskLoaded",
574
+ "eventId": "evt_01M2M5G80ZHK3TRG4D09CPG3GA",
575
+ "from": "loading",
576
+ "to": "chart"
577
+ },
578
+ {
579
+ "effects": [
580
+ [
581
+ "render-ui",
582
+ "main",
583
+ {
584
+ "align": "center",
585
+ "children": [
586
+ {
587
+ "color": "error",
588
+ "name": "alert-triangle",
589
+ "size": "lg",
590
+ "type": "icon"
591
+ },
592
+ {
593
+ "content": "Failed to load",
594
+ "type": "typography",
595
+ "variant": "h3"
596
+ },
597
+ {
598
+ "color": "muted",
599
+ "content": "@payload.error",
600
+ "type": "typography",
601
+ "variant": "body"
602
+ },
603
+ {
604
+ "action": "RETRY",
605
+ "icon": "rotate-ccw",
606
+ "label": "Retry",
607
+ "type": "button",
608
+ "variant": "primary"
609
+ }
610
+ ],
611
+ "className": "py-12",
612
+ "direction": "vertical",
613
+ "gap": "md",
614
+ "type": "stack"
615
+ }
616
+ ]
617
+ ],
618
+ "event": "TaskLoadFailed",
619
+ "eventId": "evt_01M2M5G80Z95J9AAB577H7J2FY",
620
+ "from": "loading",
621
+ "to": "error"
622
+ },
623
+ {
624
+ "effects": [
625
+ [
626
+ "fetch",
627
+ "Task",
628
+ {
629
+ "emit": {
630
+ "failure": "TaskLoadFailed",
631
+ "success": "TaskLoaded"
632
+ },
633
+ "include": "@config.include"
634
+ }
635
+ ],
636
+ [
637
+ "render-ui",
638
+ "main",
639
+ {
640
+ "type": "spinner"
641
+ }
642
+ ]
643
+ ],
644
+ "event": "INIT",
645
+ "eventId": "evt_01M2M5G80ZB5N0ZDQGCG54E63E",
646
+ "from": "chart",
647
+ "to": "loading"
648
+ },
649
+ {
650
+ "effects": [
651
+ [
652
+ "fetch",
653
+ "Task",
654
+ {
655
+ "emit": {
656
+ "failure": "TaskLoadFailed",
657
+ "success": "TaskLoaded"
658
+ },
659
+ "include": "@config.include"
660
+ }
661
+ ],
662
+ [
663
+ "render-ui",
664
+ "main",
665
+ {
666
+ "type": "spinner"
667
+ }
668
+ ]
669
+ ],
670
+ "event": "INIT",
671
+ "eventId": "evt_01M2M5G80ZB5N0ZDQGCG54E63E",
672
+ "from": "error",
673
+ "to": "loading"
674
+ },
675
+ {
676
+ "effects": [
677
+ [
678
+ "fetch",
679
+ "Task",
680
+ {
681
+ "emit": {
682
+ "failure": "TaskLoadFailed",
683
+ "success": "TaskLoaded"
684
+ },
685
+ "include": "@config.include"
686
+ }
687
+ ],
688
+ [
689
+ "render-ui",
690
+ "main",
691
+ {
692
+ "type": "spinner"
693
+ }
694
+ ]
695
+ ],
696
+ "event": "RETRY",
697
+ "eventId": "evt_01M2M5G80ZJN33H0Y5G7P8DTEA",
698
+ "from": "error",
699
+ "to": "loading"
700
+ }
701
+ ]
702
+ }
703
+ }
704
+ ],
705
+ "types": {
706
+ "GanttLinkSpec": [
707
+ {
708
+ "name": "from",
709
+ "required": true,
710
+ "type": "string"
711
+ },
712
+ {
713
+ "name": "to",
714
+ "required": true,
715
+ "type": "string"
716
+ }
717
+ ]
718
+ }
719
+ }
720
+ ],
721
+ "schemaVersion": 1,
722
+ "version": "1.0.0"
723
+ }