@almadar/std 16.211.0 → 16.212.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.
- package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +6 -0
- package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-cascade-on-delete.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-cross-reference.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +3 -0
- package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-migration-job.lolo +12 -0
- package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +1 -0
- package/behaviors/lolo/infra/atoms/std-notification-center.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +5 -0
- package/behaviors/lolo/infra/atoms/std-reminder-scheduler.lolo +2 -0
- package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -0
- package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +1 -0
- package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-board.lolo +6 -0
- package/behaviors/lolo/ui/core/atoms/std-browse.lolo +6 -1
- package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +6 -1
- package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +2 -0
- package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-list.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-selection.lolo +8 -1
- package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +1 -0
- package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +16 -0
- package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +36 -0
- package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-button.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +22 -2
- package/behaviors/lolo/ui/core/atoms/ui-game-icon.lolo +1 -1
- package/behaviors/lolo/ui/core/atoms/ui-select.lolo +6 -2
- package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +3 -1
- package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -1
- package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +6 -0
- package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-skinned-mesh.lolo +7 -2
- package/behaviors/lolo/ui/game/atoms/ui-draw-sprite-layer.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +5 -5
- package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-health-bar.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +1 -1
- package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +2 -2
- package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +4 -4
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +56 -18
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +76 -32
- package/behaviors/registry/infra/atoms/std-calendar-sync.orb +46 -0
- package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +20 -0
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +40 -14
- package/behaviors/registry/infra/atoms/std-cross-reference.orb +41 -15
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +52 -0
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +36 -0
- package/behaviors/registry/infra/atoms/std-migration-job.orb +108 -0
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +20 -0
- package/behaviors/registry/infra/atoms/std-notification-center.orb +32 -0
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +70 -0
- package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +36 -0
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +20 -0
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +18 -0
- package/behaviors/registry/ml/atoms/std-ml-infer.orb +18 -0
- package/behaviors/registry/ui/core/atoms/std-board.orb +58 -0
- package/behaviors/registry/ui/core/atoms/std-browse.orb +9 -1
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +9 -1
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +26 -0
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-list.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-selection.orb +35 -1
- package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +20 -0
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +56 -0
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +77 -0
- package/behaviors/registry/ui/core/atoms/ui-badge.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-button.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +78 -2
- package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +4 -1
- package/behaviors/registry/ui/core/atoms/ui-select.orb +28 -0
- package/behaviors/registry/ui/core/atoms/ui-textarea.orb +14 -0
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -28
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -20
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -14
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -24
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +8 -2
- package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +44 -0
- package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-control-button.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +12 -2
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +20 -5
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +4 -1
- package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +8 -2
- package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +8 -2
- package/dist/behaviors/exports-reader.js +1187 -277
- package/dist/behaviors/functions/index.d.ts +38 -7
- package/dist/behaviors/functions/index.js +1187 -277
- package/dist/behaviors/index.d.ts +1 -1
- package/dist/behaviors/index.js +1187 -277
- package/dist/behaviors/query.js +1187 -277
- package/dist/behaviors-embeddings.hash.json +3 -3
- package/dist/behaviors-embeddings.json +15 -15
- package/dist/behaviors-registry.json +535 -182
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1187 -277
- package/dist/knob-embeddings.hash.json +3 -3
- package/dist/knob-embeddings.json +1 -1
- package/dist/registry/factory-signatures.json +1 -1
- package/package.json +2 -2
|
@@ -127,6 +127,7 @@ orbital ApprovalGateOrbital {
|
|
|
127
127
|
})
|
|
128
128
|
ApprovalRequestLoaded -> idle
|
|
129
129
|
ApprovalRequestLoadFailed -> idle
|
|
130
|
+
(notify error (str/concat "Couldn't load the approval request — " ?error))
|
|
130
131
|
;; A replay failure can also arrive while the queue is closed.
|
|
131
132
|
APPROVAL_REPLAY_FAILED -> idle
|
|
132
133
|
(set @entity.id ?requestId)
|
|
@@ -137,6 +138,8 @@ orbital ApprovalGateOrbital {
|
|
|
137
138
|
emit: { failure: ApprovalRequestReviewFailed, success: ApprovalRequestReviewed }
|
|
138
139
|
})
|
|
139
140
|
(notify error "Approval could not be applied — the request was reopened.")
|
|
141
|
+
ApprovalRequestReviewFailed -> idle
|
|
142
|
+
(notify error (str/concat "Couldn't reopen the approval request — " ?error))
|
|
140
143
|
OPEN -> loading when @config.enabled
|
|
141
144
|
(fetch ApprovalRequest {
|
|
142
145
|
filter: ["=", (object/get @entity status), "pending"]
|
|
@@ -158,6 +158,12 @@ orbital CacheEntryOrbital {
|
|
|
158
158
|
gap: md
|
|
159
159
|
type: stack
|
|
160
160
|
})
|
|
161
|
+
CacheEntryUpdateFailed -> loading
|
|
162
|
+
(notify error (str/concat "Couldn't update the cache entry — " ?error))
|
|
163
|
+
CacheEntryUpdated -> loading
|
|
164
|
+
(fetch CacheEntry {
|
|
165
|
+
emit: { failure: CacheEntryLoadFailed, success: CacheEntryLoaded }
|
|
166
|
+
})
|
|
161
167
|
}
|
|
162
168
|
|
|
163
169
|
state cached {
|
|
@@ -69,6 +69,7 @@ orbital CalendarSyncOrbital {
|
|
|
69
69
|
(emit CAL_SYNCED { syncedAt: @entity.lastSyncedAt })
|
|
70
70
|
CAL_SYNC_FAILED -> idle
|
|
71
71
|
(set @entity.lastError ?error)
|
|
72
|
+
(notify error (str/concat "Couldn't sync the calendar — " ?error))
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
state pushing {
|
|
@@ -99,6 +100,7 @@ orbital CalendarSyncOrbital {
|
|
|
99
100
|
} { emit: { failure: CAL_SYNC_FAILED, success: CAL_REMOTE_LISTED } })
|
|
100
101
|
CAL_SYNC_FAILED -> idle
|
|
101
102
|
(set @entity.lastError ?error)
|
|
103
|
+
(notify error (str/concat "Couldn't sync the calendar — " ?error))
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
state pulling {
|
|
@@ -137,6 +139,7 @@ orbital CalendarSyncOrbital {
|
|
|
137
139
|
(emit CAL_SYNCED { syncedAt: @entity.lastSyncedAt })
|
|
138
140
|
CAL_SYNC_FAILED -> idle
|
|
139
141
|
(set @entity.lastError ?error)
|
|
142
|
+
(notify error (str/concat "Couldn't sync the calendar — " ?error))
|
|
140
143
|
}
|
|
141
144
|
|
|
142
145
|
emits {
|
|
@@ -47,6 +47,8 @@ orbital CrossReferenceOrbital {
|
|
|
47
47
|
LinksFetched -> idle
|
|
48
48
|
(set @entity.filteredLinks (array/filter ?data (fn row ["=", (object/get @row leftId), @entity.leftId])))
|
|
49
49
|
(emit LinksLoaded { data: @entity.filteredLinks, leftId: @entity.leftId })
|
|
50
|
+
LinkOpFailed -> idle
|
|
51
|
+
(notify error (str/concat "Couldn't update the link — " ?error))
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
emits {
|
|
@@ -97,6 +97,7 @@ orbital DataErasureOrbital {
|
|
|
97
97
|
})
|
|
98
98
|
ErasureLoaded -> idle
|
|
99
99
|
ErasureLoadFailed -> idle
|
|
100
|
+
(notify error (str/concat "Couldn't load the erasure queue — " ?error))
|
|
100
101
|
OPEN -> loading when @config.enabled
|
|
101
102
|
(fetch ErasureRequest {
|
|
102
103
|
emit: { failure: ErasureLoadFailed, success: ErasureLoaded }
|
|
@@ -127,6 +128,7 @@ orbital DataErasureOrbital {
|
|
|
127
128
|
})
|
|
128
129
|
ExecScanLoaded -> idle when ["=", (array/len ?data), 0]
|
|
129
130
|
ExecScanFailed -> idle
|
|
131
|
+
(notify error (str/concat "Couldn't scan for erasures to execute — " ?error))
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
state execScanning {
|
|
@@ -153,6 +155,7 @@ orbital DataErasureOrbital {
|
|
|
153
155
|
})
|
|
154
156
|
ExecScanLoaded -> idle when ["=", (array/len ?data), 0]
|
|
155
157
|
ExecScanFailed -> idle
|
|
158
|
+
(notify error (str/concat "Couldn't scan for erasures to execute — " ?error))
|
|
156
159
|
}
|
|
157
160
|
|
|
158
161
|
state loading {
|
|
@@ -34,6 +34,7 @@ orbital LifecycleOrbital {
|
|
|
34
34
|
})
|
|
35
35
|
ScanRecordsLoaded -> idle when ["=", (array/len ?data), 0]
|
|
36
36
|
ScanFailed -> idle
|
|
37
|
+
(notify error (str/concat "Couldn't scan for lifecycle transitions — " ?error))
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
state scanning {
|
|
@@ -51,6 +52,7 @@ orbital LifecycleOrbital {
|
|
|
51
52
|
})
|
|
52
53
|
ScanRecordsLoaded -> idle when ["=", (array/len ?data), 0]
|
|
53
54
|
ScanFailed -> idle
|
|
55
|
+
(notify error (str/concat "Couldn't scan for lifecycle transitions — " ?error))
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
emits {
|
|
@@ -68,6 +68,7 @@ orbital MigrationJobOrbital {
|
|
|
68
68
|
target: @entity.target
|
|
69
69
|
})
|
|
70
70
|
(emit MIGRATION_FAILED { error: @entity.error })
|
|
71
|
+
(notify error (str/concat "Couldn't list the source documents — " ?error))
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
state mapping {
|
|
@@ -114,6 +115,7 @@ orbital MigrationJobOrbital {
|
|
|
114
115
|
target: @entity.target
|
|
115
116
|
})
|
|
116
117
|
(emit MIGRATION_FAILED { error: @entity.error })
|
|
118
|
+
(notify error (str/concat "Couldn't fetch the document — " ?error))
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
state reviewing {
|
|
@@ -135,6 +137,15 @@ orbital MigrationJobOrbital {
|
|
|
135
137
|
(set @entity.skipped [])
|
|
136
138
|
(set @entity.validationErrors [])
|
|
137
139
|
(render-ui @config.reviewSlot null)
|
|
140
|
+
CLOSE -> idle
|
|
141
|
+
(set @entity.status idle)
|
|
142
|
+
(set @entity.documents [])
|
|
143
|
+
(set @entity.document {})
|
|
144
|
+
(set @entity.stats {})
|
|
145
|
+
(set @entity.units [])
|
|
146
|
+
(set @entity.skipped [])
|
|
147
|
+
(set @entity.validationErrors [])
|
|
148
|
+
(render-ui @config.reviewSlot null)
|
|
138
149
|
}
|
|
139
150
|
|
|
140
151
|
state committing {
|
|
@@ -162,6 +173,7 @@ orbital MigrationJobOrbital {
|
|
|
162
173
|
target: @entity.target
|
|
163
174
|
})
|
|
164
175
|
(emit MIGRATION_FAILED { error: @entity.error })
|
|
176
|
+
(notify error (str/concat "Couldn't commit the import — " ?error))
|
|
165
177
|
}
|
|
166
178
|
|
|
167
179
|
state done {
|
|
@@ -90,6 +90,7 @@ orbital ModQueueItemOrbital {
|
|
|
90
90
|
})
|
|
91
91
|
ModQueueItemLoaded -> idle
|
|
92
92
|
ModQueueItemLoadFailed -> idle
|
|
93
|
+
(notify error (str/concat "Couldn't load the moderation queue — " ?error))
|
|
93
94
|
OPEN -> loading when @config.enabled
|
|
94
95
|
(fetch ModQueueItem {
|
|
95
96
|
emit: { failure: ModQueueItemLoadFailed, success: ModQueueItemLoaded }
|
|
@@ -190,6 +190,7 @@ orbital NotificationCenterOrbital {
|
|
|
190
190
|
DIGEST_ROWS_LOADED -> idle when ["=", (array/len ?data), 0]
|
|
191
191
|
DIGEST_FAILED -> idle
|
|
192
192
|
(set @entity.lastError ?error)
|
|
193
|
+
(notify error (str/concat "Couldn't send the notification digest — " ?error))
|
|
193
194
|
}
|
|
194
195
|
|
|
195
196
|
state draining {
|
|
@@ -216,6 +217,7 @@ orbital NotificationCenterOrbital {
|
|
|
216
217
|
DIGEST_ROWS_LOADED -> idle when ["=", (array/len ?data), 0]
|
|
217
218
|
DIGEST_FAILED -> idle
|
|
218
219
|
(set @entity.lastError ?error)
|
|
220
|
+
(notify error (str/concat "Couldn't send the notification digest — " ?error))
|
|
219
221
|
}
|
|
220
222
|
|
|
221
223
|
emits {
|
|
@@ -176,6 +176,7 @@ orbital NotifyOnEventOrbital {
|
|
|
176
176
|
recordedAt: @now
|
|
177
177
|
severity: @entity.severity
|
|
178
178
|
})
|
|
179
|
+
(notify error (str/concat "Couldn't send the email notification — " ?error))
|
|
179
180
|
NOTIFY_SMS_SENT -> idle
|
|
180
181
|
(set @entity.dispatched true)
|
|
181
182
|
(persist create NotificationRecord {
|
|
@@ -198,6 +199,7 @@ orbital NotifyOnEventOrbital {
|
|
|
198
199
|
recordedAt: @now
|
|
199
200
|
severity: @entity.severity
|
|
200
201
|
})
|
|
202
|
+
(notify error (str/concat "Couldn't send the text message — " ?error))
|
|
201
203
|
NOTIFY_WEBHOOK_SENT -> idle
|
|
202
204
|
(set @entity.dispatched true)
|
|
203
205
|
(persist create NotificationRecord {
|
|
@@ -220,6 +222,7 @@ orbital NotifyOnEventOrbital {
|
|
|
220
222
|
recordedAt: @now
|
|
221
223
|
severity: @entity.severity
|
|
222
224
|
})
|
|
225
|
+
(notify error (str/concat "Couldn't send the webhook notification — " ?error))
|
|
223
226
|
NOTIFY_PUSH_SENT -> idle
|
|
224
227
|
(set @entity.dispatched true)
|
|
225
228
|
(persist create NotificationRecord {
|
|
@@ -242,6 +245,7 @@ orbital NotifyOnEventOrbital {
|
|
|
242
245
|
recordedAt: @now
|
|
243
246
|
severity: @entity.severity
|
|
244
247
|
})
|
|
248
|
+
(notify error (str/concat "Couldn't send the push notification — " ?error))
|
|
245
249
|
NOTIFY_LOOKUP_FAILED -> idle
|
|
246
250
|
(set @entity.dispatched false)
|
|
247
251
|
(set @entity.error ?error)
|
|
@@ -254,6 +258,7 @@ orbital NotifyOnEventOrbital {
|
|
|
254
258
|
recordedAt: @now
|
|
255
259
|
severity: @entity.severity
|
|
256
260
|
})
|
|
261
|
+
(notify error (str/concat "Couldn't look up notification preferences — " ?error))
|
|
257
262
|
}
|
|
258
263
|
|
|
259
264
|
emits {
|
|
@@ -37,6 +37,7 @@ orbital ReminderSchedulerOrbital {
|
|
|
37
37
|
})
|
|
38
38
|
ScanRecordsLoaded -> idle when ["=", (array/len ?data), 0]
|
|
39
39
|
ScanFailed -> idle
|
|
40
|
+
(notify error (str/concat "Couldn't scan for reminders — " ?error))
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
state scanning {
|
|
@@ -57,6 +58,7 @@ orbital ReminderSchedulerOrbital {
|
|
|
57
58
|
})
|
|
58
59
|
ScanRecordsLoaded -> idle when ["=", (array/len ?data), 0]
|
|
59
60
|
ScanFailed -> idle
|
|
61
|
+
(notify error (str/concat "Couldn't scan for reminders — " ?error))
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
emits {
|
|
@@ -31,6 +31,7 @@ orbital StatusLifecycleOrbital {
|
|
|
31
31
|
StatusPersisted -> idle when ["!=", (str/default ?id ""), ""]
|
|
32
32
|
(emit StatusChanged { entityId: ?id, status: (str/default (object/get @payload @config.statusField) "") })
|
|
33
33
|
StatusChangeFailed -> idle
|
|
34
|
+
(notify error (str/concat "Couldn't change the status — " ?error))
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
emits {
|
|
@@ -87,6 +87,7 @@ orbital MlInferOrbital {
|
|
|
87
87
|
(set @entity.reason "unavailable")
|
|
88
88
|
(set @entity.status resolved)
|
|
89
89
|
(emit INFER_ABSTAINED { reason: "unavailable", violations: @entity.violations, request: @entity.request })
|
|
90
|
+
(notify error (str/concat "Couldn't run inference — " ?error))
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
state resolved {
|
|
@@ -268,6 +268,12 @@ orbital BoardOrbital {
|
|
|
268
268
|
label: (object/get @col label)
|
|
269
269
|
variant: (object/get @col variant default)
|
|
270
270
|
})))
|
|
271
|
+
BoardItemsSaveFailed -> viewing_board
|
|
272
|
+
(set @entity.errorMessage ?error)
|
|
273
|
+
(notify error (str/concat "Couldn't save the board — " ?error))
|
|
274
|
+
BoardItemsLoadFailed -> viewing_board
|
|
275
|
+
(set @entity.errorMessage ?error)
|
|
276
|
+
(notify error (str/concat "Couldn't refresh the board — " ?error))
|
|
271
277
|
}
|
|
272
278
|
|
|
273
279
|
state viewing_card {
|
|
@@ -105,7 +105,7 @@ orbital BrowseItemOrbital {
|
|
|
105
105
|
REFETCH_QUERY -> browsing
|
|
106
106
|
(fetch BrowseItem {
|
|
107
107
|
emit: { failure: BrowseItemLoadFailed, success: BrowseItemLoaded }
|
|
108
|
-
filter: (and (or ["=", @config.scopeField, ""] ["=", (object/get @entity @config.scopeField), @user.id]) (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
108
|
+
filter: (and (or ["=", @config.scopeField, ""] ["=", (object/get @entity @config.scopeField), @user.id]) (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm)))
|
|
109
109
|
include: @config.include
|
|
110
110
|
limit: @config.pageSize
|
|
111
111
|
offset: 0
|
|
@@ -376,6 +376,11 @@ orbital BrowseItemOrbital {
|
|
|
376
376
|
@description "Adds a checkbox column with select-all to the dense table. Enable only when the surface offers bulk actions — checkboxes with nothing to act on are a dead affordance."
|
|
377
377
|
@synonyms "row checkboxes, multi-select, bulk select, selection column"
|
|
378
378
|
@tier "presentation"
|
|
379
|
+
searchField : string = "name"
|
|
380
|
+
@label "Which column does the search box match against?"
|
|
381
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, content) or the search box can never match a row."
|
|
382
|
+
@synonyms "search column, search on field, match field, search key"
|
|
383
|
+
@tier "policy"
|
|
379
384
|
bodySearch : boolean = true
|
|
380
385
|
@label "Show the list's own search box?"
|
|
381
386
|
@description "The dense/feed/gallery looks embed their own search box above the rows. Set false when the page already provides a search affordance (a toolbar Search molecule), so the surface shows one search box instead of two."
|
|
@@ -116,7 +116,7 @@ orbital CalendarEventOrbital {
|
|
|
116
116
|
(fetch CalendarEvent {
|
|
117
117
|
emit: { failure: CalendarEventLoadFailed, success: CalendarEventLoaded }
|
|
118
118
|
include: @config.include
|
|
119
|
-
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
119
|
+
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm))
|
|
120
120
|
})
|
|
121
121
|
REFETCH_FILTER -> loading
|
|
122
122
|
(fetch CalendarEvent {
|
|
@@ -283,6 +283,11 @@ orbital CalendarEventOrbital {
|
|
|
283
283
|
@description "Row field the agenda list groups its day sections by. Rebound hosts point this at their own timestamp column (e.g. startTime, scheduledAt)."
|
|
284
284
|
@synonyms "group field, section field, day field"
|
|
285
285
|
@tier "presentation"
|
|
286
|
+
searchField : string = "name"
|
|
287
|
+
@label "Which column does the search box match against?"
|
|
288
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, description) or the search box can never match a row."
|
|
289
|
+
@synonyms "search column, search on field, match field, search key"
|
|
290
|
+
@tier "policy"
|
|
286
291
|
bodySearch : boolean = false
|
|
287
292
|
@label "Show the calendar's own search box?"
|
|
288
293
|
@description "Embeds a title search box in the toolbar above the calendar body (all three calendarLook trees). Defaults false: std-calendar has never had a search box, so an untouched consumer's surface is unchanged; the primary path is composing std-search beside this atom and wiring XSearch.SEARCH -> REFETCH_QUERY. Set true only for a standalone calendar with no page-level search affordance."
|
|
@@ -256,6 +256,8 @@ orbital EventLogOrbital {
|
|
|
256
256
|
limit: @config.pageSize
|
|
257
257
|
offset: ["*", ["-", ?page, 1], @config.pageSize]
|
|
258
258
|
})
|
|
259
|
+
EventLogLoadFailed -> viewing
|
|
260
|
+
(notify error (str/concat "Couldn't refresh the event log — " ?error))
|
|
259
261
|
EventLogLoaded -> viewing
|
|
260
262
|
(set @entity.filterChips (array/prepend (array/map @config.kindOptions (fn k {
|
|
261
263
|
icon: (object/get @k icon circle)
|
|
@@ -160,7 +160,7 @@ orbital GalleryItemOrbital {
|
|
|
160
160
|
REFETCH_QUERY -> browsing
|
|
161
161
|
(fetch GalleryItem {
|
|
162
162
|
emit: { failure: GalleryItemLoadFailed, success: GalleryItemLoaded }
|
|
163
|
-
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
163
|
+
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm))
|
|
164
164
|
limit: @config.pageSize
|
|
165
165
|
offset: 0
|
|
166
166
|
})
|
|
@@ -177,6 +177,8 @@ orbital GalleryItemOrbital {
|
|
|
177
177
|
limit: @config.pageSize
|
|
178
178
|
offset: ["*", ["-", ?page, 1], @config.pageSize]
|
|
179
179
|
})
|
|
180
|
+
GalleryItemLoadFailed -> browsing
|
|
181
|
+
(notify error (str/concat "Couldn't refresh the gallery — " ?error))
|
|
180
182
|
GalleryItemLoaded -> browsing
|
|
181
183
|
(render-ui main {
|
|
182
184
|
children: [{
|
|
@@ -360,6 +362,11 @@ orbital GalleryItemOrbital {
|
|
|
360
362
|
@description "Entity field holding the image URL shown in the lightbox for the selected item"
|
|
361
363
|
@synonyms "image url field, thumbnail field, src field"
|
|
362
364
|
@tier "presentation"
|
|
365
|
+
searchField : string = "name"
|
|
366
|
+
@label "Which column does the search box match against?"
|
|
367
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, caption) or the search box can never match a row."
|
|
368
|
+
@synonyms "search column, search on field, match field, search key"
|
|
369
|
+
@tier "policy"
|
|
363
370
|
bodySearch : boolean = false
|
|
364
371
|
@label "Show the gallery's own search box?"
|
|
365
372
|
@description "Embeds a search box above the gallery grid. Set false (the default) when the page already provides a search affordance (a toolbar Search molecule), so the surface shows one search box instead of two."
|
|
@@ -179,7 +179,7 @@ orbital ListItemOrbital {
|
|
|
179
179
|
REFETCH_QUERY -> browsing
|
|
180
180
|
(fetch ListItem {
|
|
181
181
|
emit: { failure: ListItemLoadFailed, success: ListItemLoaded }
|
|
182
|
-
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
182
|
+
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm))
|
|
183
183
|
})
|
|
184
184
|
REFETCH_FILTER -> browsing
|
|
185
185
|
(fetch ListItem {
|
|
@@ -193,6 +193,8 @@ orbital ListItemOrbital {
|
|
|
193
193
|
limit: @config.pageSize
|
|
194
194
|
offset: ["*", ["-", ?page, 1], @config.pageSize]
|
|
195
195
|
})
|
|
196
|
+
ListItemLoadFailed -> browsing
|
|
197
|
+
(notify error (str/concat "Couldn't refresh the list — " ?error))
|
|
196
198
|
ListItemLoaded -> browsing
|
|
197
199
|
(render-ui main {
|
|
198
200
|
children: [{
|
|
@@ -354,6 +356,11 @@ orbital ListItemOrbital {
|
|
|
354
356
|
}
|
|
355
357
|
|
|
356
358
|
config {
|
|
359
|
+
searchField : string = "name"
|
|
360
|
+
@label "Which column does the search box match against?"
|
|
361
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, label) or the search box can never match a row."
|
|
362
|
+
@synonyms "search column, search on field, match field, search key"
|
|
363
|
+
@tier "policy"
|
|
357
364
|
bodySearch : boolean = false
|
|
358
365
|
@label "Show the list's own search box?"
|
|
359
366
|
@description "Embeds a search box above the grid. Set true only when the page has no other search affordance (e.g. no page-level std-search), so the surface shows one search box instead of two. False is the default — this atom has never had a search box (0 consumers today)."
|
|
@@ -145,7 +145,7 @@ orbital SelectableItemOrbital {
|
|
|
145
145
|
REFETCH_QUERY -> idle
|
|
146
146
|
(fetch SelectableItem {
|
|
147
147
|
emit: { failure: SelectableItemLoadFailed, success: SelectableItemLoaded }
|
|
148
|
-
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity
|
|
148
|
+
filter: (or ["=", ?searchTerm, ""] (str/includes (object/get @entity @config.searchField) ?searchTerm))
|
|
149
149
|
})
|
|
150
150
|
REFETCH_FILTER -> idle
|
|
151
151
|
(fetch SelectableItem {
|
|
@@ -166,6 +166,8 @@ orbital SelectableItemOrbital {
|
|
|
166
166
|
limit: @config.pageSize
|
|
167
167
|
offset: ["*", ["-", ?page, 1], @config.pageSize]
|
|
168
168
|
})
|
|
169
|
+
SelectableItemLoadFailed -> idle
|
|
170
|
+
(notify error (str/concat "Couldn't refresh the list — " ?error))
|
|
169
171
|
SelectableItemLoaded -> idle
|
|
170
172
|
(render-ui main {
|
|
171
173
|
children: [{
|
|
@@ -429,6 +431,11 @@ orbital SelectableItemOrbital {
|
|
|
429
431
|
@label "Table look"
|
|
430
432
|
@description "Layer 2 visual treatment for the data table rendered by this atom."
|
|
431
433
|
@tier "presentation"
|
|
434
|
+
searchField : string = "name"
|
|
435
|
+
@label "Which column does the search box match against?"
|
|
436
|
+
@description "Name the field on this entity the search box's str/includes filter matches against. Declared, never inferred: an entity with no `name` column must set this to a real field (e.g. title, label) or the search box can never match a row."
|
|
437
|
+
@synonyms "search column, search on field, match field, search key"
|
|
438
|
+
@tier "policy"
|
|
432
439
|
bodySearch : boolean = false
|
|
433
440
|
@label "Show the pick-list's own search box?"
|
|
434
441
|
@description "Embeds a search box above the pick-list. Set true only when the page has no other search affordance (e.g. no page-level std-search), so the surface shows one search box instead of two. False is the default — this atom has never had a search box (0 consumers today)."
|
|
@@ -35,6 +35,7 @@ orbital TagStripOrbital {
|
|
|
35
35
|
;; Pre-scope paint: the store is warm but no record is open yet.
|
|
36
36
|
TagStripOptions -> idle
|
|
37
37
|
TagStripLoadFailed -> idle
|
|
38
|
+
(notify error (str/concat "Couldn't load tags — " ?error))
|
|
38
39
|
SHOW_TAG_STRIP -> loading
|
|
39
40
|
(set @entity.docId ?id)
|
|
40
41
|
(set @entity.docTagIds (array/map ?tagIds (fn t (str/default (object/get @t id) @t))))
|
|
@@ -342,6 +342,22 @@ orbital TagTaxonomyOrbital {
|
|
|
342
342
|
type: stack
|
|
343
343
|
})
|
|
344
344
|
(emit LEVEL_RELOAD { tagId: @entity.id })
|
|
345
|
+
CLOSE -> loading
|
|
346
|
+
(render-ui modal null)
|
|
347
|
+
(render-ui main {
|
|
348
|
+
align: center
|
|
349
|
+
children: [{ type: spinner }, {
|
|
350
|
+
color: muted
|
|
351
|
+
content: "Loading…"
|
|
352
|
+
type: typography
|
|
353
|
+
variant: caption
|
|
354
|
+
}]
|
|
355
|
+
className: py-12
|
|
356
|
+
direction: vertical
|
|
357
|
+
gap: md
|
|
358
|
+
type: stack
|
|
359
|
+
})
|
|
360
|
+
(emit LEVEL_RELOAD { tagId: @entity.id })
|
|
345
361
|
;; Refetch the level the new tag landed on — its own parentId names it.
|
|
346
362
|
TagCreated -> loading
|
|
347
363
|
(render-ui modal null)
|
|
@@ -444,6 +444,42 @@ orbital WizardOrbital {
|
|
|
444
444
|
}
|
|
445
445
|
|
|
446
446
|
state completed {
|
|
447
|
+
WizardSaved -> completed
|
|
448
|
+
(render-ui main {
|
|
449
|
+
align: center
|
|
450
|
+
children: [{
|
|
451
|
+
name: check-circle
|
|
452
|
+
size: lg
|
|
453
|
+
type: icon
|
|
454
|
+
}, {
|
|
455
|
+
align: center
|
|
456
|
+
content: Complete
|
|
457
|
+
type: typography
|
|
458
|
+
variant: h2
|
|
459
|
+
}, {
|
|
460
|
+
align: center
|
|
461
|
+
color: muted
|
|
462
|
+
content: @entity.completionMessage
|
|
463
|
+
type: typography
|
|
464
|
+
variant: body
|
|
465
|
+
}, {
|
|
466
|
+
allowNavigation: false
|
|
467
|
+
currentStep: @entity.totalSteps
|
|
468
|
+
steps: @entity.wizardSteps
|
|
469
|
+
type: wizard-progress
|
|
470
|
+
}, {
|
|
471
|
+
action: RESTART
|
|
472
|
+
icon: rotate-ccw
|
|
473
|
+
label: "Start a new wizard"
|
|
474
|
+
type: button
|
|
475
|
+
variant: secondary
|
|
476
|
+
}]
|
|
477
|
+
direction: vertical
|
|
478
|
+
gap: lg
|
|
479
|
+
type: stack
|
|
480
|
+
})
|
|
481
|
+
WizardSaveFailed -> completed
|
|
482
|
+
(notify error (str/concat "Couldn't save the wizard — " ?error))
|
|
447
483
|
RESTART -> loading
|
|
448
484
|
(set @entity.currentStepIndex 0)
|
|
449
485
|
(set @entity.completionMessage "")
|
|
@@ -9,7 +9,7 @@ orbital BadgeOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -9,7 +9,7 @@ orbital ButtonOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -3,6 +3,7 @@ app ui-checkbox "1.0.0"
|
|
|
3
3
|
orbital CheckboxOrbital {
|
|
4
4
|
entity CheckboxItem [runtime] {
|
|
5
5
|
id : string!
|
|
6
|
+
checked : boolean @intrinsic
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
trait CheckboxRender -> @rebindable CheckboxItem [interaction, instance] {
|
|
@@ -10,9 +11,20 @@ orbital CheckboxOrbital {
|
|
|
10
11
|
|
|
11
12
|
state idle {
|
|
12
13
|
INIT -> idle
|
|
14
|
+
(set @entity.checked @config.checked)
|
|
13
15
|
(render-ui main {
|
|
14
16
|
className: @config.className
|
|
15
|
-
checked: @
|
|
17
|
+
checked: @entity.checked
|
|
18
|
+
defaultChecked: @config.defaultChecked
|
|
19
|
+
label: @config.label
|
|
20
|
+
onChange: @config.onChange
|
|
21
|
+
type: checkbox
|
|
22
|
+
})
|
|
23
|
+
CHANGE -> idle
|
|
24
|
+
(set @entity.checked ?checked)
|
|
25
|
+
(render-ui main {
|
|
26
|
+
className: @config.className
|
|
27
|
+
checked: @entity.checked
|
|
16
28
|
defaultChecked: @config.defaultChecked
|
|
17
29
|
label: @config.label
|
|
18
30
|
onChange: @config.onChange
|
|
@@ -21,11 +33,19 @@ orbital CheckboxOrbital {
|
|
|
21
33
|
}
|
|
22
34
|
|
|
23
35
|
emits {
|
|
24
|
-
@config.onChange -> external {
|
|
36
|
+
@config.onChange -> external {
|
|
37
|
+
checked : boolean!
|
|
38
|
+
}
|
|
25
39
|
@description "onChange handler or declarative event key for trait dispatch"
|
|
26
40
|
@tier "essential"
|
|
27
41
|
}
|
|
28
42
|
|
|
43
|
+
listens {
|
|
44
|
+
CHANGE {
|
|
45
|
+
checked : boolean!
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
29
49
|
config {
|
|
30
50
|
className : string
|
|
31
51
|
@label "Class Name"
|
|
@@ -9,7 +9,7 @@ orbital GameIconOrbital {
|
|
|
9
9
|
style : "pixel" | "vector" | "hd" | "1-bit" | "isometric"
|
|
10
10
|
variant : string
|
|
11
11
|
dimension : "2d" | "3d"
|
|
12
|
-
aspect : "1:1" | "16:9" | "5:7" | "8:1"
|
|
12
|
+
aspect : "1:1" | "16:9" | "5:7" | "8:1" | "4:1" | "5:3" | "1:2"
|
|
13
13
|
atlas : asset
|
|
14
14
|
sprite : string
|
|
15
15
|
name : string
|
|
@@ -46,10 +46,14 @@ orbital SelectOrbital {
|
|
|
46
46
|
}
|
|
47
47
|
@description "Declarative event name for trait dispatch — emits `{ value }` on selection commit (same gestures as `onChange`)."
|
|
48
48
|
@tier "essential"
|
|
49
|
-
@config.onChange -> external {
|
|
49
|
+
@config.onChange -> external {
|
|
50
|
+
value : string!
|
|
51
|
+
}
|
|
50
52
|
@description "onChange handler (native ChangeEvent) or declarative event key for trait dispatch"
|
|
51
53
|
@tier "essential"
|
|
52
|
-
@config.onValueChange -> external {
|
|
54
|
+
@config.onValueChange -> external {
|
|
55
|
+
value : string!
|
|
56
|
+
}
|
|
53
57
|
@description "Value-based change: a React callback (internal use) OR a declarative event key that emits `{ value }` on the bus (render-ui / lolo authoring). Mirrors the `onChange` handler|event convention so it's an event-emitting prop, not a bare callback."
|
|
54
58
|
@tier "essential"
|
|
55
59
|
}
|
|
@@ -25,7 +25,9 @@ orbital TextareaOrbital {
|
|
|
25
25
|
@config.action -> external { }
|
|
26
26
|
@description "Declarative event name for trait dispatch"
|
|
27
27
|
@tier "essential"
|
|
28
|
-
@config.onChange -> external {
|
|
28
|
+
@config.onChange -> external {
|
|
29
|
+
value : string!
|
|
30
|
+
}
|
|
29
31
|
@description "onChange handler or declarative event key for trait dispatch"
|
|
30
32
|
@tier "essential"
|
|
31
33
|
}
|
|
@@ -89,7 +89,7 @@ orbital CommandPaletteOrbital {
|
|
|
89
89
|
@label "On Open Change"
|
|
90
90
|
@description "Called to open/close the overlay (Escape, overlay click, or a selection)"
|
|
91
91
|
@tier "presentation"
|
|
92
|
-
commands : [CommandPaletteCommandsItem] = [
|
|
92
|
+
commands : [CommandPaletteCommandsItem] = []
|
|
93
93
|
@label "Commands"
|
|
94
94
|
@description "Commands listed in the palette, filtered as the user types"
|
|
95
95
|
@tier "presentation"
|
|
@@ -32,7 +32,7 @@ orbital FloatingToolbarOrbital {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
config {
|
|
35
|
-
items : [FloatingToolbarItemsItem] = [
|
|
35
|
+
items : [FloatingToolbarItemsItem] = []
|
|
36
36
|
@label "Items"
|
|
37
37
|
@description "Tool items rendered as icon buttons"
|
|
38
38
|
@tier "presentation"
|