@almadar/std 3.2.3 → 3.3.4

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 (163) hide show
  1. package/LICENSE +72 -21
  2. package/README.md +1 -1
  3. package/behaviors/exports/atoms/std-combat-log.orb +12 -12
  4. package/behaviors/exports/atoms/std-dialogue-box.orb +11 -11
  5. package/behaviors/exports/atoms/std-game-audio.orb +9 -9
  6. package/behaviors/exports/atoms/std-game-canvas3d.orb +24 -24
  7. package/behaviors/exports/atoms/std-game-hud.orb +10 -10
  8. package/behaviors/exports/atoms/std-game-menu.orb +12 -12
  9. package/behaviors/exports/atoms/std-game-over-screen.orb +9 -9
  10. package/behaviors/exports/atoms/std-inventory-panel.orb +13 -13
  11. package/behaviors/exports/atoms/std-isometric-canvas.orb +9 -9
  12. package/behaviors/exports/atoms/std-platformer-canvas.orb +9 -9
  13. package/behaviors/exports/atoms/std-score-board.orb +9 -9
  14. package/behaviors/exports/atoms/std-selection.orb +32 -18
  15. package/behaviors/exports/atoms/std-service-custom-bearer.orb +557 -0
  16. package/behaviors/exports/atoms/std-service-custom-header.orb +559 -0
  17. package/behaviors/exports/atoms/std-service-custom-noauth.orb +553 -0
  18. package/behaviors/exports/atoms/std-service-custom-query.orb +559 -0
  19. package/behaviors/exports/atoms/std-service-email.orb +540 -0
  20. package/behaviors/exports/atoms/std-service-github.orb +586 -0
  21. package/behaviors/exports/atoms/std-service-llm.orb +671 -0
  22. package/behaviors/exports/atoms/std-service-oauth.orb +764 -0
  23. package/behaviors/exports/atoms/std-service-redis.orb +580 -0
  24. package/behaviors/exports/atoms/std-service-storage.orb +664 -0
  25. package/behaviors/exports/atoms/std-service-stripe.orb +639 -0
  26. package/behaviors/exports/atoms/std-service-twilio.orb +611 -0
  27. package/behaviors/exports/atoms/std-service-youtube.orb +696 -0
  28. package/behaviors/exports/atoms/std-simulation-canvas.orb +9 -9
  29. package/behaviors/exports/atoms/std-sprite.orb +17 -17
  30. package/behaviors/exports/atoms/std-validate-on-save.orb +623 -0
  31. package/behaviors/exports/molecules/std-quiz.orb +48 -24
  32. package/behaviors/exports/molecules/std-service-content-pipeline.orb +915 -0
  33. package/behaviors/exports/molecules/std-service-custom-api-tester.orb +860 -0
  34. package/behaviors/exports/molecules/std-service-devops-toolkit.orb +1526 -0
  35. package/behaviors/exports/molecules/std-service-notification-hub.orb +696 -0
  36. package/behaviors/exports/molecules/std-service-payment-flow.orb +873 -0
  37. package/behaviors/exports/organisms/std-service-marketplace.orb +5191 -0
  38. package/behaviors/exports/organisms/std-service-research-assistant.orb +3568 -0
  39. package/behaviors/exports/test-schemas/os-trigger-simulation.orb +202 -0
  40. package/behaviors/exports/validation-report.json +2 -2
  41. package/dist/behaviors/exports/atoms/std-combat-log.orb +12 -12
  42. package/dist/behaviors/exports/atoms/std-dialogue-box.orb +11 -11
  43. package/dist/behaviors/exports/atoms/std-game-audio.orb +9 -9
  44. package/dist/behaviors/exports/atoms/std-game-canvas3d.orb +24 -24
  45. package/dist/behaviors/exports/atoms/std-game-hud.orb +10 -10
  46. package/dist/behaviors/exports/atoms/std-game-menu.orb +12 -12
  47. package/dist/behaviors/exports/atoms/std-game-over-screen.orb +9 -9
  48. package/dist/behaviors/exports/atoms/std-inventory-panel.orb +13 -13
  49. package/dist/behaviors/exports/atoms/std-isometric-canvas.orb +9 -9
  50. package/dist/behaviors/exports/atoms/std-platformer-canvas.orb +9 -9
  51. package/dist/behaviors/exports/atoms/std-score-board.orb +9 -9
  52. package/dist/behaviors/exports/atoms/std-selection.orb +32 -18
  53. package/dist/behaviors/exports/atoms/std-service-custom-bearer.orb +557 -0
  54. package/dist/behaviors/exports/atoms/std-service-custom-header.orb +559 -0
  55. package/dist/behaviors/exports/atoms/std-service-custom-noauth.orb +553 -0
  56. package/dist/behaviors/exports/atoms/std-service-custom-query.orb +559 -0
  57. package/dist/behaviors/exports/atoms/std-service-email.orb +540 -0
  58. package/dist/behaviors/exports/atoms/std-service-github.orb +586 -0
  59. package/dist/behaviors/exports/atoms/std-service-llm.orb +671 -0
  60. package/dist/behaviors/exports/atoms/std-service-oauth.orb +764 -0
  61. package/dist/behaviors/exports/atoms/std-service-redis.orb +580 -0
  62. package/dist/behaviors/exports/atoms/std-service-storage.orb +664 -0
  63. package/dist/behaviors/exports/atoms/std-service-stripe.orb +639 -0
  64. package/dist/behaviors/exports/atoms/std-service-twilio.orb +611 -0
  65. package/dist/behaviors/exports/atoms/std-service-youtube.orb +696 -0
  66. package/dist/behaviors/exports/atoms/std-simulation-canvas.orb +9 -9
  67. package/dist/behaviors/exports/atoms/std-sprite.orb +17 -17
  68. package/dist/behaviors/exports/atoms/std-validate-on-save.orb +623 -0
  69. package/dist/behaviors/exports/molecules/std-quiz.orb +48 -24
  70. package/dist/behaviors/exports/molecules/std-service-content-pipeline.orb +915 -0
  71. package/dist/behaviors/exports/molecules/std-service-custom-api-tester.orb +860 -0
  72. package/dist/behaviors/exports/molecules/std-service-devops-toolkit.orb +1526 -0
  73. package/dist/behaviors/exports/molecules/std-service-notification-hub.orb +696 -0
  74. package/dist/behaviors/exports/molecules/std-service-payment-flow.orb +873 -0
  75. package/dist/behaviors/exports/organisms/std-service-marketplace.orb +5191 -0
  76. package/dist/behaviors/exports/organisms/std-service-research-assistant.orb +3568 -0
  77. package/dist/behaviors/exports/test-schemas/os-trigger-simulation.orb +202 -0
  78. package/dist/behaviors/exports/validation-report.json +2 -2
  79. package/dist/behaviors/functions/index.d.ts +662 -1
  80. package/dist/behaviors/functions/index.js +7638 -2117
  81. package/dist/behaviors/functions/index.js.map +1 -1
  82. package/dist/behaviors/index.d.ts +1 -1
  83. package/dist/behaviors/index.js +7638 -2117
  84. package/dist/behaviors/index.js.map +1 -1
  85. package/dist/exports/atoms/std-combat-log.orb +12 -12
  86. package/dist/exports/atoms/std-dialogue-box.orb +11 -11
  87. package/dist/exports/atoms/std-game-audio.orb +9 -9
  88. package/dist/exports/atoms/std-game-canvas3d.orb +24 -24
  89. package/dist/exports/atoms/std-game-hud.orb +10 -10
  90. package/dist/exports/atoms/std-game-menu.orb +12 -12
  91. package/dist/exports/atoms/std-game-over-screen.orb +9 -9
  92. package/dist/exports/atoms/std-inventory-panel.orb +13 -13
  93. package/dist/exports/atoms/std-isometric-canvas.orb +9 -9
  94. package/dist/exports/atoms/std-platformer-canvas.orb +9 -9
  95. package/dist/exports/atoms/std-score-board.orb +9 -9
  96. package/dist/exports/atoms/std-selection.orb +32 -18
  97. package/dist/exports/atoms/std-service-custom-bearer.orb +557 -0
  98. package/dist/exports/atoms/std-service-custom-header.orb +559 -0
  99. package/dist/exports/atoms/std-service-custom-noauth.orb +553 -0
  100. package/dist/exports/atoms/std-service-custom-query.orb +559 -0
  101. package/dist/exports/atoms/std-service-email.orb +540 -0
  102. package/dist/exports/atoms/std-service-github.orb +586 -0
  103. package/dist/exports/atoms/std-service-llm.orb +671 -0
  104. package/dist/exports/atoms/std-service-oauth.orb +764 -0
  105. package/dist/exports/atoms/std-service-redis.orb +580 -0
  106. package/dist/exports/atoms/std-service-storage.orb +664 -0
  107. package/dist/exports/atoms/std-service-stripe.orb +639 -0
  108. package/dist/exports/atoms/std-service-twilio.orb +611 -0
  109. package/dist/exports/atoms/std-service-youtube.orb +696 -0
  110. package/dist/exports/atoms/std-simulation-canvas.orb +9 -9
  111. package/dist/exports/atoms/std-sprite.orb +17 -17
  112. package/dist/exports/atoms/std-validate-on-save.orb +623 -0
  113. package/dist/exports/molecules/std-quiz.orb +48 -24
  114. package/dist/exports/molecules/std-service-content-pipeline.orb +915 -0
  115. package/dist/exports/molecules/std-service-custom-api-tester.orb +860 -0
  116. package/dist/exports/molecules/std-service-devops-toolkit.orb +1526 -0
  117. package/dist/exports/molecules/std-service-notification-hub.orb +696 -0
  118. package/dist/exports/molecules/std-service-payment-flow.orb +873 -0
  119. package/dist/exports/organisms/std-service-marketplace.orb +5191 -0
  120. package/dist/exports/organisms/std-service-research-assistant.orb +3568 -0
  121. package/dist/exports/test-schemas/os-trigger-simulation.orb +202 -0
  122. package/dist/exports/validation-report.json +2 -2
  123. package/dist/index.d.ts +3 -3
  124. package/dist/index.js +7887 -2216
  125. package/dist/index.js.map +1 -1
  126. package/dist/modules/array.d.ts +1 -1
  127. package/dist/modules/async.d.ts +1 -1
  128. package/dist/modules/contract.d.ts +22 -0
  129. package/dist/modules/contract.js +100 -0
  130. package/dist/modules/contract.js.map +1 -0
  131. package/dist/modules/data.d.ts +22 -0
  132. package/dist/modules/data.js +117 -0
  133. package/dist/modules/data.js.map +1 -0
  134. package/dist/modules/format.d.ts +1 -1
  135. package/dist/modules/graph.d.ts +23 -0
  136. package/dist/modules/graph.js +209 -0
  137. package/dist/modules/graph.js.map +1 -0
  138. package/dist/modules/index.d.ts +5 -1
  139. package/dist/modules/index.js +593 -63
  140. package/dist/modules/index.js.map +1 -1
  141. package/dist/modules/math.d.ts +1 -1
  142. package/dist/modules/nn.d.ts +1 -1
  143. package/dist/modules/nn.js +14 -14
  144. package/dist/modules/nn.js.map +1 -1
  145. package/dist/modules/object.d.ts +1 -1
  146. package/dist/modules/os.d.ts +19 -0
  147. package/dist/modules/os.js +116 -0
  148. package/dist/modules/os.js.map +1 -0
  149. package/dist/modules/prob.d.ts +1 -1
  150. package/dist/modules/str.d.ts +1 -1
  151. package/dist/modules/tensor.d.ts +1 -1
  152. package/dist/modules/tensor.js +29 -29
  153. package/dist/modules/tensor.js.map +1 -1
  154. package/dist/modules/time.d.ts +1 -1
  155. package/dist/modules/train.d.ts +1 -1
  156. package/dist/modules/train.js +19 -19
  157. package/dist/modules/train.js.map +1 -1
  158. package/dist/modules/validate.d.ts +1 -1
  159. package/dist/registry.d.ts +2 -2
  160. package/dist/registry.js +184 -65
  161. package/dist/registry.js.map +1 -1
  162. package/dist/{types-CmNM_IbV.d.ts → types-DOeGXRCm.d.ts} +3 -3
  163. package/package.json +2 -2
@@ -0,0 +1,1526 @@
1
+ {
2
+ "name": "ServiceDevopsToolkitOrbital",
3
+ "orbitals": [
4
+ {
5
+ "name": "ServiceDevopsToolkitOrbital",
6
+ "entity": {
7
+ "name": "ServiceDevopsToolkit",
8
+ "persistence": "runtime",
9
+ "fields": [
10
+ {
11
+ "name": "id",
12
+ "type": "string"
13
+ },
14
+ {
15
+ "name": "name",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "name": "description",
20
+ "type": "string"
21
+ },
22
+ {
23
+ "name": "status",
24
+ "type": "string",
25
+ "default": "active",
26
+ "values": [
27
+ "active",
28
+ "inactive",
29
+ "pending"
30
+ ]
31
+ },
32
+ {
33
+ "name": "createdAt",
34
+ "type": "string"
35
+ },
36
+ {
37
+ "name": "title",
38
+ "type": "string",
39
+ "default": ""
40
+ },
41
+ {
42
+ "name": "body",
43
+ "type": "string",
44
+ "default": ""
45
+ },
46
+ {
47
+ "name": "head",
48
+ "type": "string",
49
+ "default": ""
50
+ },
51
+ {
52
+ "name": "base",
53
+ "type": "string",
54
+ "default": "main"
55
+ },
56
+ {
57
+ "name": "prUrl",
58
+ "type": "string",
59
+ "default": ""
60
+ },
61
+ {
62
+ "name": "cacheKey",
63
+ "type": "string",
64
+ "default": ""
65
+ },
66
+ {
67
+ "name": "cacheValue",
68
+ "type": "string",
69
+ "default": ""
70
+ },
71
+ {
72
+ "name": "bucket",
73
+ "type": "string",
74
+ "default": "uploads"
75
+ },
76
+ {
77
+ "name": "fileKey",
78
+ "type": "string",
79
+ "default": ""
80
+ },
81
+ {
82
+ "name": "result",
83
+ "type": "string",
84
+ "default": ""
85
+ },
86
+ {
87
+ "name": "toolStatus",
88
+ "type": "string",
89
+ "default": "idle"
90
+ },
91
+ {
92
+ "name": "activeTab",
93
+ "type": "string",
94
+ "default": "github"
95
+ },
96
+ {
97
+ "name": "error",
98
+ "type": "string",
99
+ "default": ""
100
+ }
101
+ ]
102
+ },
103
+ "traits": [
104
+ {
105
+ "name": "ServiceDevopsToolkitGithub",
106
+ "linkedEntity": "ServiceDevopsToolkit",
107
+ "category": "interaction",
108
+ "stateMachine": {
109
+ "states": [
110
+ {
111
+ "name": "ghIdle",
112
+ "isInitial": true
113
+ },
114
+ {
115
+ "name": "creatingPR"
116
+ },
117
+ {
118
+ "name": "prCreated"
119
+ },
120
+ {
121
+ "name": "ghError"
122
+ }
123
+ ],
124
+ "events": [
125
+ {
126
+ "key": "INIT",
127
+ "name": "Initialize"
128
+ },
129
+ {
130
+ "key": "CREATE_PR",
131
+ "name": "Create Pull Request"
132
+ },
133
+ {
134
+ "key": "PR_CREATED",
135
+ "name": "PR Created",
136
+ "payload": [
137
+ {
138
+ "name": "url",
139
+ "type": "string",
140
+ "required": true
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "key": "GH_FAILED",
146
+ "name": "GitHub Failed",
147
+ "payload": [
148
+ {
149
+ "name": "error",
150
+ "type": "string",
151
+ "required": true
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "key": "GH_RETRY",
157
+ "name": "GitHub Retry"
158
+ },
159
+ {
160
+ "key": "GH_RESET",
161
+ "name": "GitHub Reset"
162
+ }
163
+ ],
164
+ "transitions": [
165
+ {
166
+ "from": "ghIdle",
167
+ "to": "ghIdle",
168
+ "event": "INIT",
169
+ "effects": [
170
+ [
171
+ "fetch",
172
+ "ServiceDevopsToolkit"
173
+ ],
174
+ [
175
+ "render-ui",
176
+ "main",
177
+ {
178
+ "type": "stack",
179
+ "direction": "vertical",
180
+ "gap": "lg",
181
+ "children": [
182
+ {
183
+ "type": "stack",
184
+ "direction": "horizontal",
185
+ "gap": "md",
186
+ "align": "center",
187
+ "children": [
188
+ {
189
+ "type": "icon",
190
+ "name": "git-pull-request",
191
+ "size": "lg"
192
+ },
193
+ {
194
+ "type": "typography",
195
+ "content": "GitHub: Create PR",
196
+ "variant": "h3"
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ "type": "divider"
202
+ },
203
+ {
204
+ "type": "input",
205
+ "label": "Title",
206
+ "bind": "@entity.title",
207
+ "placeholder": "PR title"
208
+ },
209
+ {
210
+ "type": "textarea",
211
+ "label": "Body",
212
+ "bind": "@entity.body",
213
+ "placeholder": "Describe your changes..."
214
+ },
215
+ {
216
+ "type": "input",
217
+ "label": "Head Branch",
218
+ "bind": "@entity.head",
219
+ "placeholder": "feature-branch"
220
+ },
221
+ {
222
+ "type": "input",
223
+ "label": "Base Branch",
224
+ "bind": "@entity.base",
225
+ "placeholder": "main"
226
+ },
227
+ {
228
+ "type": "button",
229
+ "label": "Create PR",
230
+ "event": "CREATE_PR",
231
+ "variant": "primary",
232
+ "icon": "git-pull-request"
233
+ }
234
+ ]
235
+ }
236
+ ]
237
+ ]
238
+ },
239
+ {
240
+ "from": "ghIdle",
241
+ "to": "creatingPR",
242
+ "event": "CREATE_PR",
243
+ "effects": [
244
+ [
245
+ "render-ui",
246
+ "main",
247
+ {
248
+ "type": "loading-state",
249
+ "title": "Creating pull request...",
250
+ "message": "Submitting your PR to GitHub."
251
+ }
252
+ ],
253
+ [
254
+ "call-service",
255
+ "github",
256
+ "createPR",
257
+ {
258
+ "title": "@entity.title",
259
+ "body": "@entity.body",
260
+ "head": "@entity.head",
261
+ "base": "@entity.base"
262
+ }
263
+ ]
264
+ ]
265
+ },
266
+ {
267
+ "from": "creatingPR",
268
+ "to": "prCreated",
269
+ "event": "PR_CREATED",
270
+ "effects": [
271
+ [
272
+ "set",
273
+ "@entity.prUrl",
274
+ "@payload.url"
275
+ ],
276
+ [
277
+ "set",
278
+ "@entity.toolStatus",
279
+ "pr-created"
280
+ ],
281
+ [
282
+ "render-ui",
283
+ "main",
284
+ {
285
+ "type": "stack",
286
+ "direction": "vertical",
287
+ "gap": "lg",
288
+ "align": "center",
289
+ "children": [
290
+ {
291
+ "type": "icon",
292
+ "name": "check-circle",
293
+ "size": "lg"
294
+ },
295
+ {
296
+ "type": "alert",
297
+ "variant": "success",
298
+ "message": "Pull request created!"
299
+ },
300
+ {
301
+ "type": "typography",
302
+ "variant": "body",
303
+ "color": "muted",
304
+ "content": "@entity.prUrl"
305
+ },
306
+ {
307
+ "type": "button",
308
+ "label": "Create Another",
309
+ "event": "GH_RESET",
310
+ "variant": "ghost",
311
+ "icon": "rotate-ccw"
312
+ }
313
+ ]
314
+ }
315
+ ]
316
+ ]
317
+ },
318
+ {
319
+ "from": "creatingPR",
320
+ "to": "ghError",
321
+ "event": "GH_FAILED",
322
+ "effects": [
323
+ [
324
+ "set",
325
+ "@entity.error",
326
+ "@payload.error"
327
+ ],
328
+ [
329
+ "set",
330
+ "@entity.toolStatus",
331
+ "error"
332
+ ],
333
+ [
334
+ "render-ui",
335
+ "main",
336
+ {
337
+ "type": "error-state",
338
+ "title": "PR Creation Failed",
339
+ "message": "@entity.error",
340
+ "onRetry": "GH_RETRY"
341
+ }
342
+ ]
343
+ ]
344
+ },
345
+ {
346
+ "from": "ghError",
347
+ "to": "ghIdle",
348
+ "event": "GH_RETRY",
349
+ "effects": [
350
+ [
351
+ "set",
352
+ "@entity.toolStatus",
353
+ "idle"
354
+ ],
355
+ [
356
+ "render-ui",
357
+ "main",
358
+ {
359
+ "type": "stack",
360
+ "direction": "vertical",
361
+ "gap": "lg",
362
+ "children": [
363
+ {
364
+ "type": "stack",
365
+ "direction": "horizontal",
366
+ "gap": "md",
367
+ "align": "center",
368
+ "children": [
369
+ {
370
+ "type": "icon",
371
+ "name": "git-pull-request",
372
+ "size": "lg"
373
+ },
374
+ {
375
+ "type": "typography",
376
+ "content": "GitHub: Create PR",
377
+ "variant": "h3"
378
+ }
379
+ ]
380
+ },
381
+ {
382
+ "type": "divider"
383
+ },
384
+ {
385
+ "type": "input",
386
+ "label": "Title",
387
+ "bind": "@entity.title",
388
+ "placeholder": "PR title"
389
+ },
390
+ {
391
+ "type": "textarea",
392
+ "label": "Body",
393
+ "bind": "@entity.body",
394
+ "placeholder": "Describe your changes..."
395
+ },
396
+ {
397
+ "type": "input",
398
+ "label": "Head Branch",
399
+ "bind": "@entity.head",
400
+ "placeholder": "feature-branch"
401
+ },
402
+ {
403
+ "type": "input",
404
+ "label": "Base Branch",
405
+ "bind": "@entity.base",
406
+ "placeholder": "main"
407
+ },
408
+ {
409
+ "type": "button",
410
+ "label": "Create PR",
411
+ "event": "CREATE_PR",
412
+ "variant": "primary",
413
+ "icon": "git-pull-request"
414
+ }
415
+ ]
416
+ }
417
+ ]
418
+ ]
419
+ },
420
+ {
421
+ "from": "prCreated",
422
+ "to": "ghIdle",
423
+ "event": "GH_RESET",
424
+ "effects": [
425
+ [
426
+ "set",
427
+ "@entity.toolStatus",
428
+ "idle"
429
+ ],
430
+ [
431
+ "render-ui",
432
+ "main",
433
+ {
434
+ "type": "stack",
435
+ "direction": "vertical",
436
+ "gap": "lg",
437
+ "children": [
438
+ {
439
+ "type": "stack",
440
+ "direction": "horizontal",
441
+ "gap": "md",
442
+ "align": "center",
443
+ "children": [
444
+ {
445
+ "type": "icon",
446
+ "name": "git-pull-request",
447
+ "size": "lg"
448
+ },
449
+ {
450
+ "type": "typography",
451
+ "content": "GitHub: Create PR",
452
+ "variant": "h3"
453
+ }
454
+ ]
455
+ },
456
+ {
457
+ "type": "divider"
458
+ },
459
+ {
460
+ "type": "input",
461
+ "label": "Title",
462
+ "bind": "@entity.title",
463
+ "placeholder": "PR title"
464
+ },
465
+ {
466
+ "type": "textarea",
467
+ "label": "Body",
468
+ "bind": "@entity.body",
469
+ "placeholder": "Describe your changes..."
470
+ },
471
+ {
472
+ "type": "input",
473
+ "label": "Head Branch",
474
+ "bind": "@entity.head",
475
+ "placeholder": "feature-branch"
476
+ },
477
+ {
478
+ "type": "input",
479
+ "label": "Base Branch",
480
+ "bind": "@entity.base",
481
+ "placeholder": "main"
482
+ },
483
+ {
484
+ "type": "button",
485
+ "label": "Create PR",
486
+ "event": "CREATE_PR",
487
+ "variant": "primary",
488
+ "icon": "git-pull-request"
489
+ }
490
+ ]
491
+ }
492
+ ]
493
+ ]
494
+ }
495
+ ]
496
+ }
497
+ },
498
+ {
499
+ "name": "ServiceDevopsToolkitRedis",
500
+ "linkedEntity": "ServiceDevopsToolkit",
501
+ "category": "interaction",
502
+ "stateMachine": {
503
+ "states": [
504
+ {
505
+ "name": "redisIdle",
506
+ "isInitial": true
507
+ },
508
+ {
509
+ "name": "redisExecuting"
510
+ },
511
+ {
512
+ "name": "redisComplete"
513
+ },
514
+ {
515
+ "name": "redisError"
516
+ }
517
+ ],
518
+ "events": [
519
+ {
520
+ "key": "INIT",
521
+ "name": "Initialize"
522
+ },
523
+ {
524
+ "key": "GET_KEY",
525
+ "name": "Get Key"
526
+ },
527
+ {
528
+ "key": "SET_KEY",
529
+ "name": "Set Key"
530
+ },
531
+ {
532
+ "key": "DELETE_KEY",
533
+ "name": "Delete Key"
534
+ },
535
+ {
536
+ "key": "REDIS_DONE",
537
+ "name": "Redis Done",
538
+ "payload": [
539
+ {
540
+ "name": "data",
541
+ "type": "string",
542
+ "required": true
543
+ }
544
+ ]
545
+ },
546
+ {
547
+ "key": "REDIS_FAILED",
548
+ "name": "Redis Failed",
549
+ "payload": [
550
+ {
551
+ "name": "error",
552
+ "type": "string",
553
+ "required": true
554
+ }
555
+ ]
556
+ },
557
+ {
558
+ "key": "REDIS_RESET",
559
+ "name": "Redis Reset"
560
+ },
561
+ {
562
+ "key": "REDIS_RETRY",
563
+ "name": "Redis Retry"
564
+ }
565
+ ],
566
+ "transitions": [
567
+ {
568
+ "from": "redisIdle",
569
+ "to": "redisIdle",
570
+ "event": "INIT",
571
+ "effects": [
572
+ [
573
+ "fetch",
574
+ "ServiceDevopsToolkit"
575
+ ],
576
+ [
577
+ "render-ui",
578
+ "main",
579
+ {
580
+ "type": "stack",
581
+ "direction": "vertical",
582
+ "gap": "lg",
583
+ "children": [
584
+ {
585
+ "type": "stack",
586
+ "direction": "horizontal",
587
+ "gap": "md",
588
+ "align": "center",
589
+ "children": [
590
+ {
591
+ "type": "icon",
592
+ "name": "database",
593
+ "size": "lg"
594
+ },
595
+ {
596
+ "type": "typography",
597
+ "content": "Redis Cache",
598
+ "variant": "h3"
599
+ }
600
+ ]
601
+ },
602
+ {
603
+ "type": "divider"
604
+ },
605
+ {
606
+ "type": "input",
607
+ "label": "Key",
608
+ "bind": "@entity.cacheKey",
609
+ "placeholder": "cache-key"
610
+ },
611
+ {
612
+ "type": "input",
613
+ "label": "Value",
614
+ "bind": "@entity.cacheValue",
615
+ "placeholder": "cache-value"
616
+ },
617
+ {
618
+ "type": "stack",
619
+ "direction": "horizontal",
620
+ "gap": "sm",
621
+ "justify": "center",
622
+ "children": [
623
+ {
624
+ "type": "button",
625
+ "label": "Get",
626
+ "event": "GET_KEY",
627
+ "variant": "primary",
628
+ "icon": "download"
629
+ },
630
+ {
631
+ "type": "button",
632
+ "label": "Set",
633
+ "event": "SET_KEY",
634
+ "variant": "primary",
635
+ "icon": "upload"
636
+ },
637
+ {
638
+ "type": "button",
639
+ "label": "Delete",
640
+ "event": "DELETE_KEY",
641
+ "variant": "destructive",
642
+ "icon": "trash-2"
643
+ }
644
+ ]
645
+ }
646
+ ]
647
+ }
648
+ ]
649
+ ]
650
+ },
651
+ {
652
+ "from": "redisIdle",
653
+ "to": "redisExecuting",
654
+ "event": "GET_KEY",
655
+ "effects": [
656
+ [
657
+ "render-ui",
658
+ "main",
659
+ {
660
+ "type": "loading-state",
661
+ "title": "Executing...",
662
+ "message": "Running Redis operation..."
663
+ }
664
+ ],
665
+ [
666
+ "call-service",
667
+ "redis",
668
+ "get",
669
+ {
670
+ "key": "@entity.cacheKey"
671
+ }
672
+ ]
673
+ ]
674
+ },
675
+ {
676
+ "from": "redisIdle",
677
+ "to": "redisExecuting",
678
+ "event": "SET_KEY",
679
+ "effects": [
680
+ [
681
+ "render-ui",
682
+ "main",
683
+ {
684
+ "type": "loading-state",
685
+ "title": "Executing...",
686
+ "message": "Running Redis operation..."
687
+ }
688
+ ],
689
+ [
690
+ "call-service",
691
+ "redis",
692
+ "set",
693
+ {
694
+ "key": "@entity.cacheKey",
695
+ "value": "@entity.cacheValue"
696
+ }
697
+ ]
698
+ ]
699
+ },
700
+ {
701
+ "from": "redisIdle",
702
+ "to": "redisExecuting",
703
+ "event": "DELETE_KEY",
704
+ "effects": [
705
+ [
706
+ "render-ui",
707
+ "main",
708
+ {
709
+ "type": "loading-state",
710
+ "title": "Executing...",
711
+ "message": "Running Redis operation..."
712
+ }
713
+ ],
714
+ [
715
+ "call-service",
716
+ "redis",
717
+ "delete",
718
+ {
719
+ "key": "@entity.cacheKey"
720
+ }
721
+ ]
722
+ ]
723
+ },
724
+ {
725
+ "from": "redisExecuting",
726
+ "to": "redisComplete",
727
+ "event": "REDIS_DONE",
728
+ "effects": [
729
+ [
730
+ "set",
731
+ "@entity.result",
732
+ "@payload.data"
733
+ ],
734
+ [
735
+ "set",
736
+ "@entity.toolStatus",
737
+ "redis-complete"
738
+ ],
739
+ [
740
+ "render-ui",
741
+ "main",
742
+ {
743
+ "type": "stack",
744
+ "direction": "vertical",
745
+ "gap": "lg",
746
+ "align": "center",
747
+ "children": [
748
+ {
749
+ "type": "icon",
750
+ "name": "check-circle",
751
+ "size": "lg"
752
+ },
753
+ {
754
+ "type": "alert",
755
+ "variant": "success",
756
+ "message": "Redis operation complete"
757
+ },
758
+ {
759
+ "type": "typography",
760
+ "variant": "body",
761
+ "color": "muted",
762
+ "content": "@entity.result"
763
+ },
764
+ {
765
+ "type": "button",
766
+ "label": "Reset",
767
+ "event": "REDIS_RESET",
768
+ "variant": "ghost",
769
+ "icon": "rotate-ccw"
770
+ }
771
+ ]
772
+ }
773
+ ]
774
+ ]
775
+ },
776
+ {
777
+ "from": "redisExecuting",
778
+ "to": "redisError",
779
+ "event": "REDIS_FAILED",
780
+ "effects": [
781
+ [
782
+ "set",
783
+ "@entity.error",
784
+ "@payload.error"
785
+ ],
786
+ [
787
+ "set",
788
+ "@entity.toolStatus",
789
+ "error"
790
+ ],
791
+ [
792
+ "render-ui",
793
+ "main",
794
+ {
795
+ "type": "error-state",
796
+ "title": "Redis Error",
797
+ "message": "@entity.error",
798
+ "onRetry": "REDIS_RETRY"
799
+ }
800
+ ]
801
+ ]
802
+ },
803
+ {
804
+ "from": "redisComplete",
805
+ "to": "redisIdle",
806
+ "event": "REDIS_RESET",
807
+ "effects": [
808
+ [
809
+ "set",
810
+ "@entity.toolStatus",
811
+ "idle"
812
+ ],
813
+ [
814
+ "render-ui",
815
+ "main",
816
+ {
817
+ "type": "stack",
818
+ "direction": "vertical",
819
+ "gap": "lg",
820
+ "children": [
821
+ {
822
+ "type": "stack",
823
+ "direction": "horizontal",
824
+ "gap": "md",
825
+ "align": "center",
826
+ "children": [
827
+ {
828
+ "type": "icon",
829
+ "name": "database",
830
+ "size": "lg"
831
+ },
832
+ {
833
+ "type": "typography",
834
+ "content": "Redis Cache",
835
+ "variant": "h3"
836
+ }
837
+ ]
838
+ },
839
+ {
840
+ "type": "divider"
841
+ },
842
+ {
843
+ "type": "input",
844
+ "label": "Key",
845
+ "bind": "@entity.cacheKey",
846
+ "placeholder": "cache-key"
847
+ },
848
+ {
849
+ "type": "input",
850
+ "label": "Value",
851
+ "bind": "@entity.cacheValue",
852
+ "placeholder": "cache-value"
853
+ },
854
+ {
855
+ "type": "stack",
856
+ "direction": "horizontal",
857
+ "gap": "sm",
858
+ "justify": "center",
859
+ "children": [
860
+ {
861
+ "type": "button",
862
+ "label": "Get",
863
+ "event": "GET_KEY",
864
+ "variant": "primary",
865
+ "icon": "download"
866
+ },
867
+ {
868
+ "type": "button",
869
+ "label": "Set",
870
+ "event": "SET_KEY",
871
+ "variant": "primary",
872
+ "icon": "upload"
873
+ },
874
+ {
875
+ "type": "button",
876
+ "label": "Delete",
877
+ "event": "DELETE_KEY",
878
+ "variant": "destructive",
879
+ "icon": "trash-2"
880
+ }
881
+ ]
882
+ }
883
+ ]
884
+ }
885
+ ]
886
+ ]
887
+ },
888
+ {
889
+ "from": "redisError",
890
+ "to": "redisIdle",
891
+ "event": "REDIS_RETRY",
892
+ "effects": [
893
+ [
894
+ "set",
895
+ "@entity.toolStatus",
896
+ "idle"
897
+ ],
898
+ [
899
+ "render-ui",
900
+ "main",
901
+ {
902
+ "type": "stack",
903
+ "direction": "vertical",
904
+ "gap": "lg",
905
+ "children": [
906
+ {
907
+ "type": "stack",
908
+ "direction": "horizontal",
909
+ "gap": "md",
910
+ "align": "center",
911
+ "children": [
912
+ {
913
+ "type": "icon",
914
+ "name": "database",
915
+ "size": "lg"
916
+ },
917
+ {
918
+ "type": "typography",
919
+ "content": "Redis Cache",
920
+ "variant": "h3"
921
+ }
922
+ ]
923
+ },
924
+ {
925
+ "type": "divider"
926
+ },
927
+ {
928
+ "type": "input",
929
+ "label": "Key",
930
+ "bind": "@entity.cacheKey",
931
+ "placeholder": "cache-key"
932
+ },
933
+ {
934
+ "type": "input",
935
+ "label": "Value",
936
+ "bind": "@entity.cacheValue",
937
+ "placeholder": "cache-value"
938
+ },
939
+ {
940
+ "type": "stack",
941
+ "direction": "horizontal",
942
+ "gap": "sm",
943
+ "justify": "center",
944
+ "children": [
945
+ {
946
+ "type": "button",
947
+ "label": "Get",
948
+ "event": "GET_KEY",
949
+ "variant": "primary",
950
+ "icon": "download"
951
+ },
952
+ {
953
+ "type": "button",
954
+ "label": "Set",
955
+ "event": "SET_KEY",
956
+ "variant": "primary",
957
+ "icon": "upload"
958
+ },
959
+ {
960
+ "type": "button",
961
+ "label": "Delete",
962
+ "event": "DELETE_KEY",
963
+ "variant": "destructive",
964
+ "icon": "trash-2"
965
+ }
966
+ ]
967
+ }
968
+ ]
969
+ }
970
+ ]
971
+ ]
972
+ }
973
+ ]
974
+ }
975
+ },
976
+ {
977
+ "name": "ServiceDevopsToolkitStorage",
978
+ "linkedEntity": "ServiceDevopsToolkit",
979
+ "category": "interaction",
980
+ "stateMachine": {
981
+ "states": [
982
+ {
983
+ "name": "storageIdle",
984
+ "isInitial": true
985
+ },
986
+ {
987
+ "name": "storageExecuting"
988
+ },
989
+ {
990
+ "name": "storageComplete"
991
+ },
992
+ {
993
+ "name": "storageError"
994
+ }
995
+ ],
996
+ "events": [
997
+ {
998
+ "key": "INIT",
999
+ "name": "Initialize"
1000
+ },
1001
+ {
1002
+ "key": "UPLOAD",
1003
+ "name": "Upload File"
1004
+ },
1005
+ {
1006
+ "key": "DOWNLOAD",
1007
+ "name": "Download File"
1008
+ },
1009
+ {
1010
+ "key": "LIST",
1011
+ "name": "List Files"
1012
+ },
1013
+ {
1014
+ "key": "DELETE_FILE",
1015
+ "name": "Delete File"
1016
+ },
1017
+ {
1018
+ "key": "STORAGE_DONE",
1019
+ "name": "Storage Done",
1020
+ "payload": [
1021
+ {
1022
+ "name": "data",
1023
+ "type": "string",
1024
+ "required": true
1025
+ }
1026
+ ]
1027
+ },
1028
+ {
1029
+ "key": "STORAGE_FAILED",
1030
+ "name": "Storage Failed",
1031
+ "payload": [
1032
+ {
1033
+ "name": "error",
1034
+ "type": "string",
1035
+ "required": true
1036
+ }
1037
+ ]
1038
+ },
1039
+ {
1040
+ "key": "STORAGE_RESET",
1041
+ "name": "Storage Reset"
1042
+ },
1043
+ {
1044
+ "key": "STORAGE_RETRY",
1045
+ "name": "Storage Retry"
1046
+ }
1047
+ ],
1048
+ "transitions": [
1049
+ {
1050
+ "from": "storageIdle",
1051
+ "to": "storageIdle",
1052
+ "event": "INIT",
1053
+ "effects": [
1054
+ [
1055
+ "fetch",
1056
+ "ServiceDevopsToolkit"
1057
+ ],
1058
+ [
1059
+ "render-ui",
1060
+ "main",
1061
+ {
1062
+ "type": "stack",
1063
+ "direction": "vertical",
1064
+ "gap": "lg",
1065
+ "children": [
1066
+ {
1067
+ "type": "stack",
1068
+ "direction": "horizontal",
1069
+ "gap": "md",
1070
+ "align": "center",
1071
+ "children": [
1072
+ {
1073
+ "type": "icon",
1074
+ "name": "hard-drive",
1075
+ "size": "lg"
1076
+ },
1077
+ {
1078
+ "type": "typography",
1079
+ "content": "Storage Files",
1080
+ "variant": "h3"
1081
+ }
1082
+ ]
1083
+ },
1084
+ {
1085
+ "type": "divider"
1086
+ },
1087
+ {
1088
+ "type": "input",
1089
+ "label": "Bucket",
1090
+ "bind": "@entity.bucket",
1091
+ "placeholder": "bucket-name"
1092
+ },
1093
+ {
1094
+ "type": "input",
1095
+ "label": "File Key",
1096
+ "bind": "@entity.fileKey",
1097
+ "placeholder": "path/to/file.txt"
1098
+ },
1099
+ {
1100
+ "type": "stack",
1101
+ "direction": "horizontal",
1102
+ "gap": "sm",
1103
+ "justify": "center",
1104
+ "children": [
1105
+ {
1106
+ "type": "button",
1107
+ "label": "Upload",
1108
+ "event": "UPLOAD",
1109
+ "variant": "primary",
1110
+ "icon": "upload"
1111
+ },
1112
+ {
1113
+ "type": "button",
1114
+ "label": "Download",
1115
+ "event": "DOWNLOAD",
1116
+ "variant": "secondary",
1117
+ "icon": "download"
1118
+ },
1119
+ {
1120
+ "type": "button",
1121
+ "label": "List",
1122
+ "event": "LIST",
1123
+ "variant": "secondary",
1124
+ "icon": "list"
1125
+ },
1126
+ {
1127
+ "type": "button",
1128
+ "label": "Delete",
1129
+ "event": "DELETE_FILE",
1130
+ "variant": "destructive",
1131
+ "icon": "trash-2"
1132
+ }
1133
+ ]
1134
+ }
1135
+ ]
1136
+ }
1137
+ ]
1138
+ ]
1139
+ },
1140
+ {
1141
+ "from": "storageIdle",
1142
+ "to": "storageExecuting",
1143
+ "event": "UPLOAD",
1144
+ "effects": [
1145
+ [
1146
+ "render-ui",
1147
+ "main",
1148
+ {
1149
+ "type": "loading-state",
1150
+ "title": "Processing...",
1151
+ "message": "Executing storage operation..."
1152
+ }
1153
+ ],
1154
+ [
1155
+ "call-service",
1156
+ "storage",
1157
+ "upload",
1158
+ {
1159
+ "bucket": "@entity.bucket",
1160
+ "key": "@entity.fileKey"
1161
+ }
1162
+ ]
1163
+ ]
1164
+ },
1165
+ {
1166
+ "from": "storageIdle",
1167
+ "to": "storageExecuting",
1168
+ "event": "DOWNLOAD",
1169
+ "effects": [
1170
+ [
1171
+ "render-ui",
1172
+ "main",
1173
+ {
1174
+ "type": "loading-state",
1175
+ "title": "Processing...",
1176
+ "message": "Executing storage operation..."
1177
+ }
1178
+ ],
1179
+ [
1180
+ "call-service",
1181
+ "storage",
1182
+ "download",
1183
+ {
1184
+ "bucket": "@entity.bucket",
1185
+ "key": "@entity.fileKey"
1186
+ }
1187
+ ]
1188
+ ]
1189
+ },
1190
+ {
1191
+ "from": "storageIdle",
1192
+ "to": "storageExecuting",
1193
+ "event": "LIST",
1194
+ "effects": [
1195
+ [
1196
+ "render-ui",
1197
+ "main",
1198
+ {
1199
+ "type": "loading-state",
1200
+ "title": "Processing...",
1201
+ "message": "Executing storage operation..."
1202
+ }
1203
+ ],
1204
+ [
1205
+ "call-service",
1206
+ "storage",
1207
+ "list",
1208
+ {
1209
+ "bucket": "@entity.bucket"
1210
+ }
1211
+ ]
1212
+ ]
1213
+ },
1214
+ {
1215
+ "from": "storageIdle",
1216
+ "to": "storageExecuting",
1217
+ "event": "DELETE_FILE",
1218
+ "effects": [
1219
+ [
1220
+ "render-ui",
1221
+ "main",
1222
+ {
1223
+ "type": "loading-state",
1224
+ "title": "Processing...",
1225
+ "message": "Executing storage operation..."
1226
+ }
1227
+ ],
1228
+ [
1229
+ "call-service",
1230
+ "storage",
1231
+ "delete",
1232
+ {
1233
+ "bucket": "@entity.bucket",
1234
+ "key": "@entity.fileKey"
1235
+ }
1236
+ ]
1237
+ ]
1238
+ },
1239
+ {
1240
+ "from": "storageExecuting",
1241
+ "to": "storageComplete",
1242
+ "event": "STORAGE_DONE",
1243
+ "effects": [
1244
+ [
1245
+ "set",
1246
+ "@entity.result",
1247
+ "@payload.data"
1248
+ ],
1249
+ [
1250
+ "set",
1251
+ "@entity.toolStatus",
1252
+ "storage-complete"
1253
+ ],
1254
+ [
1255
+ "render-ui",
1256
+ "main",
1257
+ {
1258
+ "type": "stack",
1259
+ "direction": "vertical",
1260
+ "gap": "lg",
1261
+ "align": "center",
1262
+ "children": [
1263
+ {
1264
+ "type": "icon",
1265
+ "name": "check-circle",
1266
+ "size": "lg"
1267
+ },
1268
+ {
1269
+ "type": "alert",
1270
+ "variant": "success",
1271
+ "message": "Storage operation complete"
1272
+ },
1273
+ {
1274
+ "type": "typography",
1275
+ "variant": "body",
1276
+ "color": "muted",
1277
+ "content": "@entity.result"
1278
+ },
1279
+ {
1280
+ "type": "button",
1281
+ "label": "Back",
1282
+ "event": "STORAGE_RESET",
1283
+ "variant": "ghost",
1284
+ "icon": "rotate-ccw"
1285
+ }
1286
+ ]
1287
+ }
1288
+ ]
1289
+ ]
1290
+ },
1291
+ {
1292
+ "from": "storageExecuting",
1293
+ "to": "storageError",
1294
+ "event": "STORAGE_FAILED",
1295
+ "effects": [
1296
+ [
1297
+ "set",
1298
+ "@entity.error",
1299
+ "@payload.error"
1300
+ ],
1301
+ [
1302
+ "set",
1303
+ "@entity.toolStatus",
1304
+ "error"
1305
+ ],
1306
+ [
1307
+ "render-ui",
1308
+ "main",
1309
+ {
1310
+ "type": "error-state",
1311
+ "title": "Storage Error",
1312
+ "message": "@entity.error",
1313
+ "onRetry": "STORAGE_RETRY"
1314
+ }
1315
+ ]
1316
+ ]
1317
+ },
1318
+ {
1319
+ "from": "storageComplete",
1320
+ "to": "storageIdle",
1321
+ "event": "STORAGE_RESET",
1322
+ "effects": [
1323
+ [
1324
+ "set",
1325
+ "@entity.toolStatus",
1326
+ "idle"
1327
+ ],
1328
+ [
1329
+ "render-ui",
1330
+ "main",
1331
+ {
1332
+ "type": "stack",
1333
+ "direction": "vertical",
1334
+ "gap": "lg",
1335
+ "children": [
1336
+ {
1337
+ "type": "stack",
1338
+ "direction": "horizontal",
1339
+ "gap": "md",
1340
+ "align": "center",
1341
+ "children": [
1342
+ {
1343
+ "type": "icon",
1344
+ "name": "hard-drive",
1345
+ "size": "lg"
1346
+ },
1347
+ {
1348
+ "type": "typography",
1349
+ "content": "Storage Files",
1350
+ "variant": "h3"
1351
+ }
1352
+ ]
1353
+ },
1354
+ {
1355
+ "type": "divider"
1356
+ },
1357
+ {
1358
+ "type": "input",
1359
+ "label": "Bucket",
1360
+ "bind": "@entity.bucket",
1361
+ "placeholder": "bucket-name"
1362
+ },
1363
+ {
1364
+ "type": "input",
1365
+ "label": "File Key",
1366
+ "bind": "@entity.fileKey",
1367
+ "placeholder": "path/to/file.txt"
1368
+ },
1369
+ {
1370
+ "type": "stack",
1371
+ "direction": "horizontal",
1372
+ "gap": "sm",
1373
+ "justify": "center",
1374
+ "children": [
1375
+ {
1376
+ "type": "button",
1377
+ "label": "Upload",
1378
+ "event": "UPLOAD",
1379
+ "variant": "primary",
1380
+ "icon": "upload"
1381
+ },
1382
+ {
1383
+ "type": "button",
1384
+ "label": "Download",
1385
+ "event": "DOWNLOAD",
1386
+ "variant": "secondary",
1387
+ "icon": "download"
1388
+ },
1389
+ {
1390
+ "type": "button",
1391
+ "label": "List",
1392
+ "event": "LIST",
1393
+ "variant": "secondary",
1394
+ "icon": "list"
1395
+ },
1396
+ {
1397
+ "type": "button",
1398
+ "label": "Delete",
1399
+ "event": "DELETE_FILE",
1400
+ "variant": "destructive",
1401
+ "icon": "trash-2"
1402
+ }
1403
+ ]
1404
+ }
1405
+ ]
1406
+ }
1407
+ ]
1408
+ ]
1409
+ },
1410
+ {
1411
+ "from": "storageError",
1412
+ "to": "storageIdle",
1413
+ "event": "STORAGE_RETRY",
1414
+ "effects": [
1415
+ [
1416
+ "set",
1417
+ "@entity.toolStatus",
1418
+ "idle"
1419
+ ],
1420
+ [
1421
+ "render-ui",
1422
+ "main",
1423
+ {
1424
+ "type": "stack",
1425
+ "direction": "vertical",
1426
+ "gap": "lg",
1427
+ "children": [
1428
+ {
1429
+ "type": "stack",
1430
+ "direction": "horizontal",
1431
+ "gap": "md",
1432
+ "align": "center",
1433
+ "children": [
1434
+ {
1435
+ "type": "icon",
1436
+ "name": "hard-drive",
1437
+ "size": "lg"
1438
+ },
1439
+ {
1440
+ "type": "typography",
1441
+ "content": "Storage Files",
1442
+ "variant": "h3"
1443
+ }
1444
+ ]
1445
+ },
1446
+ {
1447
+ "type": "divider"
1448
+ },
1449
+ {
1450
+ "type": "input",
1451
+ "label": "Bucket",
1452
+ "bind": "@entity.bucket",
1453
+ "placeholder": "bucket-name"
1454
+ },
1455
+ {
1456
+ "type": "input",
1457
+ "label": "File Key",
1458
+ "bind": "@entity.fileKey",
1459
+ "placeholder": "path/to/file.txt"
1460
+ },
1461
+ {
1462
+ "type": "stack",
1463
+ "direction": "horizontal",
1464
+ "gap": "sm",
1465
+ "justify": "center",
1466
+ "children": [
1467
+ {
1468
+ "type": "button",
1469
+ "label": "Upload",
1470
+ "event": "UPLOAD",
1471
+ "variant": "primary",
1472
+ "icon": "upload"
1473
+ },
1474
+ {
1475
+ "type": "button",
1476
+ "label": "Download",
1477
+ "event": "DOWNLOAD",
1478
+ "variant": "secondary",
1479
+ "icon": "download"
1480
+ },
1481
+ {
1482
+ "type": "button",
1483
+ "label": "List",
1484
+ "event": "LIST",
1485
+ "variant": "secondary",
1486
+ "icon": "list"
1487
+ },
1488
+ {
1489
+ "type": "button",
1490
+ "label": "Delete",
1491
+ "event": "DELETE_FILE",
1492
+ "variant": "destructive",
1493
+ "icon": "trash-2"
1494
+ }
1495
+ ]
1496
+ }
1497
+ ]
1498
+ }
1499
+ ]
1500
+ ]
1501
+ }
1502
+ ]
1503
+ }
1504
+ }
1505
+ ],
1506
+ "pages": [
1507
+ {
1508
+ "name": "ServiceDevopsToolkitPage",
1509
+ "path": "/servicedevopstoolkits",
1510
+ "traits": [
1511
+ {
1512
+ "ref": "ServiceDevopsToolkitGithub"
1513
+ },
1514
+ {
1515
+ "ref": "ServiceDevopsToolkitRedis"
1516
+ },
1517
+ {
1518
+ "ref": "ServiceDevopsToolkitStorage"
1519
+ }
1520
+ ]
1521
+ }
1522
+ ]
1523
+ }
1524
+ ],
1525
+ "description": "DevOps toolkit molecule. Three independent traits on a single page sharing one entity via the event bus: - GitHubTrait: PR creation flow (ghIdle -> creatingPR -> prCreated / ghError) - RedisTrait: cache get/set/delete (redisIdle -> redisExecuting -> redisComplete / redisError) - StorageTrait: file upload/download/list/delete (storageIdle -> storageExecuting -> storageComplete / storageError) Each trait renders its own UI section. No cross-trait events needed (independent flows)."
1526
+ }