@almadar/std 16.144.0 → 16.146.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 (124) hide show
  1. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +121 -0
  2. package/behaviors/lolo/ml/atoms/std-ml-exact-check.lolo +90 -0
  3. package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +141 -0
  4. package/behaviors/lolo/ml/atoms/std-ml-label-capture.lolo +75 -0
  5. package/behaviors/lolo/ml/atoms/std-ml-lookup.lolo +83 -0
  6. package/behaviors/lolo/ml/atoms/std-ml-posterior.lolo +104 -0
  7. package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +166 -0
  8. package/behaviors/lolo/ml/molecules/std-escalating-decision.lolo +271 -0
  9. package/behaviors/lolo/ml/molecules/std-knowledge-tracing.lolo +115 -0
  10. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +14 -0
  11. package/behaviors/lolo/ui/core/atoms/std-board.lolo +20 -6
  12. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +23 -6
  13. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +80 -2
  14. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +1 -1
  15. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -3
  16. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +1 -1
  17. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +18 -0
  18. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +2 -0
  19. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +3 -2
  20. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +20 -0
  21. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +7 -2
  22. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +3 -2
  23. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -0
  24. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +2 -0
  25. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -0
  26. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +2 -0
  27. package/behaviors/lolo/ui/game/atoms/std-dungeon-combat.lolo +2 -2
  28. package/behaviors/lolo/ui/game/molecules/std-worldmap-board-2d.lolo +1 -1
  29. package/behaviors/lolo/ui/game/organisms/ui-boardgame-board.lolo +2 -2
  30. package/behaviors/lolo/ui/game/organisms/ui-builder-board.lolo +2 -2
  31. package/behaviors/lolo/ui/game/organisms/ui-debugger-board.lolo +3 -3
  32. package/behaviors/lolo/ui/game/organisms/ui-physics-sandbox-board.lolo +3 -3
  33. package/behaviors/lolo/ui/game/organisms/ui-roguelike-board.lolo +1 -1
  34. package/behaviors/lolo/ui/game/organisms/ui-sequencer-board.lolo +1 -1
  35. package/behaviors/lolo/ui/learning/atoms/std-algo-heapsort.lolo +2 -2
  36. package/behaviors/lolo/ui/learning/atoms/std-algo-mst.lolo +3 -3
  37. package/behaviors/registry/factory-signatures.json +5018 -824
  38. package/behaviors/registry/ml/atoms/std-ml-classify.orb +622 -0
  39. package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +505 -0
  40. package/behaviors/registry/ml/atoms/std-ml-infer.orb +770 -0
  41. package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +367 -0
  42. package/behaviors/registry/ml/atoms/std-ml-lookup.orb +473 -0
  43. package/behaviors/registry/ml/atoms/std-ml-posterior.orb +669 -0
  44. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +917 -0
  45. package/behaviors/registry/ml/molecules/std-escalating-decision.orb +1553 -0
  46. package/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +577 -0
  47. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +33 -1
  48. package/behaviors/registry/ui/core/atoms/std-board.orb +64 -20
  49. package/behaviors/registry/ui/core/atoms/std-browse.orb +83 -48
  50. package/behaviors/registry/ui/core/atoms/std-calendar.orb +213 -3
  51. package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
  52. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +27 -0
  53. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +25 -12
  54. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +26 -13
  55. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +86 -0
  56. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +37 -1
  57. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +25 -12
  58. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +13 -0
  59. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +21 -8
  60. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +13 -0
  61. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +13 -0
  62. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +4 -4
  63. package/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -9
  64. package/behaviors/registry/ui/game/organisms/ui-boardgame-board.orb +4 -4
  65. package/behaviors/registry/ui/game/organisms/ui-builder-board.orb +4 -4
  66. package/behaviors/registry/ui/game/organisms/ui-debugger-board.orb +12 -12
  67. package/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +19 -19
  68. package/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +1 -1
  69. package/behaviors/registry/ui/game/organisms/ui-sequencer-board.orb +2 -2
  70. package/behaviors/registry/ui/learning/atoms/std-algo-heapsort.orb +8 -8
  71. package/canonical-operators.json +30 -6
  72. package/dist/behaviors/behaviors-embeddings.json +267 -267
  73. package/dist/behaviors/exports-reader.js +2462 -2080
  74. package/dist/behaviors/functions/index.d.ts +725 -1
  75. package/dist/behaviors/functions/index.js +2437 -2081
  76. package/dist/behaviors/index.d.ts +1 -1
  77. package/dist/behaviors/index.js +2463 -2081
  78. package/dist/behaviors/knob-embeddings.json +1 -1
  79. package/dist/behaviors/query.js +2462 -2080
  80. package/dist/behaviors/registry/factory-signatures.json +5018 -824
  81. package/dist/behaviors/registry/ml/atoms/std-ml-classify.orb +622 -0
  82. package/dist/behaviors/registry/ml/atoms/std-ml-exact-check.orb +505 -0
  83. package/dist/behaviors/registry/ml/atoms/std-ml-infer.orb +770 -0
  84. package/dist/behaviors/registry/ml/atoms/std-ml-label-capture.orb +367 -0
  85. package/dist/behaviors/registry/ml/atoms/std-ml-lookup.orb +473 -0
  86. package/dist/behaviors/registry/ml/atoms/std-ml-posterior.orb +669 -0
  87. package/dist/behaviors/registry/ml/atoms/std-ml-similarity.orb +917 -0
  88. package/dist/behaviors/registry/ml/molecules/std-escalating-decision.orb +1553 -0
  89. package/dist/behaviors/registry/ml/molecules/std-knowledge-tracing.orb +577 -0
  90. package/dist/behaviors/registry/ui/core/atoms/std-app-layout.orb +33 -1
  91. package/dist/behaviors/registry/ui/core/atoms/std-board.orb +64 -20
  92. package/dist/behaviors/registry/ui/core/atoms/std-browse.orb +83 -48
  93. package/dist/behaviors/registry/ui/core/atoms/std-calendar.orb +213 -3
  94. package/dist/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
  95. package/dist/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +27 -0
  96. package/dist/behaviors/registry/ui/core/molecules/ui-data-grid.orb +25 -12
  97. package/dist/behaviors/registry/ui/core/molecules/ui-data-list.orb +26 -13
  98. package/dist/behaviors/registry/ui/core/molecules/ui-filter-group.orb +86 -0
  99. package/dist/behaviors/registry/ui/core/molecules/ui-search-input.orb +37 -1
  100. package/dist/behaviors/registry/ui/core/molecules/ui-table-view.orb +25 -12
  101. package/dist/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +13 -0
  102. package/dist/behaviors/registry/ui/core/organisms/ui-entity-list.orb +21 -8
  103. package/dist/behaviors/registry/ui/core/organisms/ui-entity-table.orb +13 -0
  104. package/dist/behaviors/registry/ui/core/organisms/ui-timeline.orb +13 -0
  105. package/dist/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +4 -4
  106. package/dist/behaviors/registry/ui/game/molecules/std-worldmap-board-2d.orb +6 -9
  107. package/dist/behaviors/registry/ui/game/organisms/ui-boardgame-board.orb +4 -4
  108. package/dist/behaviors/registry/ui/game/organisms/ui-builder-board.orb +4 -4
  109. package/dist/behaviors/registry/ui/game/organisms/ui-debugger-board.orb +12 -12
  110. package/dist/behaviors/registry/ui/game/organisms/ui-physics-sandbox-board.orb +19 -19
  111. package/dist/behaviors/registry/ui/game/organisms/ui-roguelike-board.orb +1 -1
  112. package/dist/behaviors/registry/ui/game/organisms/ui-sequencer-board.orb +2 -2
  113. package/dist/behaviors/registry/ui/learning/atoms/std-algo-heapsort.orb +8 -8
  114. package/dist/behaviors-embeddings.json +267 -267
  115. package/dist/index.d.ts +1 -1
  116. package/dist/index.js +2498 -2088
  117. package/dist/knob-embeddings.json +1 -1
  118. package/dist/modules/array.js +28 -0
  119. package/dist/modules/contract.js +4 -4
  120. package/dist/modules/data.js +3 -3
  121. package/dist/modules/index.js +35 -7
  122. package/dist/registry/factory-signatures.json +5018 -824
  123. package/dist/registry.js +35 -7
  124. package/package.json +3 -3
@@ -0,0 +1,577 @@
1
+ {
2
+ "description": "std-knowledge-tracing — turns one true/false observation ('did the learner get this right?') into a tracked belief about mastery, and captures the same observation as a labeled training example in the same motion. Composes std-ml-posterior (the R2 statistical rung — a Beta-Bernoulli belief over an unknown success rate) with std-ml-label-capture: every posterior verdict — MASTERY_REACHED, REMEDIATION_NEEDED, or the abstain EVIDENCE_INSUFFICIENT — becomes a persisted labeled example (the input skill, the posterior's own verdict, and the ground-truth outcome that produced it), so a cheaper rung can later be trained to reproduce the same call without running the statistics. Domain-agnostic: it knows about skills and observations, not students, quizzes, or courses. One instance tracks one belief (e.g. one learner × one skill); the host composes as many instances as it has beliefs to hold.",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3": {
6
+ "bakedName": "KnowledgeState",
7
+ "curName": "KnowledgeState",
8
+ "id": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01KYBPCRSC5KF14SRWR89Z1G7V": {
14
+ "bakedName": "OBSERVE_SKILL",
15
+ "curName": "OBSERVE_SKILL",
16
+ "id": "evt_01KYBPCRSC5KF14SRWR89Z1G7V",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
20
+ "renames": []
21
+ },
22
+ "evt_01KYBPCRSCG3Q7AZ9J37R13ZMD": {
23
+ "bakedName": "INIT",
24
+ "curName": "INIT",
25
+ "id": "evt_01KYBPCRSCG3Q7AZ9J37R13ZMD",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
29
+ "renames": []
30
+ },
31
+ "evt_01KYBPNGX06S803X783YQBBMKK": {
32
+ "bakedName": "CAPTURE_LABEL",
33
+ "curName": "CAPTURE_LABEL",
34
+ "id": "evt_01KYBPNGX06S803X783YQBBMKK",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
38
+ "renames": []
39
+ },
40
+ "evt_01KYBPNGX0R5B88XX3RC2CVAH9": {
41
+ "bakedName": "OBSERVATION_MADE",
42
+ "curName": "OBSERVATION_MADE",
43
+ "id": "evt_01KYBPNGX0R5B88XX3RC2CVAH9",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
47
+ "renames": []
48
+ },
49
+ "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J": {
50
+ "bakedName": "VERDICT_REACHED",
51
+ "curName": "VERDICT_REACHED",
52
+ "id": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J",
53
+ "kind": "event",
54
+ "owner": "workspace",
55
+ "parent": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
56
+ "renames": []
57
+ },
58
+ "orb_01KYBPCRSCMEMPXWZJ1GAJW4NK": {
59
+ "bakedName": "KnowledgeTracingOrbital",
60
+ "curName": "KnowledgeTracingOrbital",
61
+ "id": "orb_01KYBPCRSCMEMPXWZJ1GAJW4NK",
62
+ "kind": "orbital",
63
+ "owner": "workspace",
64
+ "renames": []
65
+ },
66
+ "pag_01KYBPCRSC8M9W90V5F6KT16DC": {
67
+ "bakedName": "KnowledgeTracingPage",
68
+ "curName": "KnowledgeTracingPage",
69
+ "id": "pag_01KYBPCRSC8M9W90V5F6KT16DC",
70
+ "kind": "page",
71
+ "owner": "workspace",
72
+ "renames": []
73
+ },
74
+ "trt_01KYBPCRSCEJWQAM1J6CMXCJRP": {
75
+ "bakedName": "PosteriorTracker",
76
+ "curName": "PosteriorTracker",
77
+ "id": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP",
78
+ "kind": "trait",
79
+ "owner": "workspace",
80
+ "renames": []
81
+ },
82
+ "trt_01KYBPCRSCJHYN6SRGV3FFTF9B": {
83
+ "bakedName": "ObservationRelay",
84
+ "curName": "ObservationRelay",
85
+ "id": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
86
+ "kind": "trait",
87
+ "owner": "workspace",
88
+ "renames": []
89
+ },
90
+ "trt_01KYBPCRSCZ0PK3PM8V8H47V2Y": {
91
+ "bakedName": "Labels",
92
+ "curName": "Labels",
93
+ "id": "trt_01KYBPCRSCZ0PK3PM8V8H47V2Y",
94
+ "kind": "trait",
95
+ "owner": "workspace",
96
+ "renames": []
97
+ }
98
+ },
99
+ "schemaVersion": 1
100
+ },
101
+ "name": "std-knowledge-tracing",
102
+ "orbitals": [
103
+ {
104
+ "entity": {
105
+ "fields": [
106
+ {
107
+ "default": "",
108
+ "name": "skillId",
109
+ "type": "string"
110
+ },
111
+ {
112
+ "default": false,
113
+ "name": "lastOutcome",
114
+ "type": "boolean"
115
+ },
116
+ {
117
+ "default": 1.0,
118
+ "name": "alpha",
119
+ "type": "number"
120
+ },
121
+ {
122
+ "default": 1.0,
123
+ "name": "beta",
124
+ "type": "number"
125
+ },
126
+ {
127
+ "default": 0.0,
128
+ "name": "mean",
129
+ "type": "number"
130
+ },
131
+ {
132
+ "default": 0.0,
133
+ "name": "intervalLow",
134
+ "type": "number"
135
+ },
136
+ {
137
+ "default": 0.0,
138
+ "name": "intervalHigh",
139
+ "type": "number"
140
+ },
141
+ {
142
+ "default": 0.0,
143
+ "name": "observations",
144
+ "type": "number"
145
+ },
146
+ {
147
+ "default": "idle",
148
+ "name": "status",
149
+ "type": "string",
150
+ "values": [
151
+ "idle",
152
+ "insufficient",
153
+ "mastered",
154
+ "remediate"
155
+ ]
156
+ },
157
+ {
158
+ "name": "input",
159
+ "type": "string"
160
+ },
161
+ {
162
+ "name": "verdict",
163
+ "type": "string"
164
+ },
165
+ {
166
+ "default": "",
167
+ "name": "source",
168
+ "type": "string"
169
+ },
170
+ {
171
+ "name": "outcome",
172
+ "type": "string"
173
+ },
174
+ {
175
+ "default": "",
176
+ "name": "sink",
177
+ "type": "string"
178
+ },
179
+ {
180
+ "default": 0.0,
181
+ "name": "recordedAt",
182
+ "type": "number"
183
+ }
184
+ ],
185
+ "id": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3",
186
+ "name": "KnowledgeState",
187
+ "persistence": "runtime",
188
+ "shared": true
189
+ },
190
+ "id": "orb_01KYBPCRSCMEMPXWZJ1GAJW4NK",
191
+ "name": "KnowledgeTracingOrbital",
192
+ "pages": [
193
+ {
194
+ "id": "pag_01KYBPCRSC8M9W90V5F6KT16DC",
195
+ "name": "KnowledgeTracingPage",
196
+ "path": "/knowledge-tracing",
197
+ "traits": [
198
+ {
199
+ "ref": "ObservationRelay",
200
+ "refId": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B"
201
+ },
202
+ {
203
+ "ref": "PosteriorTracker",
204
+ "refId": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP"
205
+ },
206
+ {
207
+ "ref": "Labels",
208
+ "refId": "trt_01KYBPCRSCZ0PK3PM8V8H47V2Y"
209
+ }
210
+ ]
211
+ }
212
+ ],
213
+ "traits": [
214
+ {
215
+ "category": "lifecycle",
216
+ "emits": [
217
+ {
218
+ "description": "Forwards the raw outcome to PosteriorTracker once skillId is recorded on the shared entity.",
219
+ "event": "OBSERVATION_MADE",
220
+ "eventId": "evt_01KYBPNGX0R5B88XX3RC2CVAH9",
221
+ "payloadSchema": [
222
+ {
223
+ "name": "outcome",
224
+ "required": true,
225
+ "type": "boolean"
226
+ }
227
+ ],
228
+ "tier": "secondary"
229
+ },
230
+ {
231
+ "description": "The posterior's verdict reshaped into a labeled example for LabelCaptureListener.",
232
+ "event": "CAPTURE_LABEL",
233
+ "eventId": "evt_01KYBPNGX06S803X783YQBBMKK",
234
+ "payloadSchema": [
235
+ {
236
+ "name": "input",
237
+ "required": true,
238
+ "type": "any"
239
+ },
240
+ {
241
+ "name": "verdict",
242
+ "required": true,
243
+ "type": "any"
244
+ },
245
+ {
246
+ "name": "source",
247
+ "required": true,
248
+ "type": "string"
249
+ },
250
+ {
251
+ "name": "outcome",
252
+ "type": "any"
253
+ }
254
+ ],
255
+ "tier": "secondary"
256
+ }
257
+ ],
258
+ "entityRefIds": {
259
+ "KnowledgeState": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3"
260
+ },
261
+ "id": "trt_01KYBPCRSCJHYN6SRGV3FFTF9B",
262
+ "linkedEntity": "KnowledgeState",
263
+ "linkedEntityId": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3",
264
+ "listens": [
265
+ {
266
+ "event": "MASTERY_REACHED",
267
+ "payloadMapping": {
268
+ "intervalHigh": "@payload.intervalHigh",
269
+ "intervalLow": "@payload.intervalLow",
270
+ "mean": "@payload.mean",
271
+ "status": "mastered"
272
+ },
273
+ "source": {
274
+ "kind": "trait",
275
+ "trait": "PosteriorTracker",
276
+ "traitId": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP"
277
+ },
278
+ "triggers": "VERDICT_REACHED",
279
+ "triggersId": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J"
280
+ },
281
+ {
282
+ "event": "REMEDIATION_NEEDED",
283
+ "payloadMapping": {
284
+ "intervalHigh": "@payload.intervalHigh",
285
+ "intervalLow": "@payload.intervalLow",
286
+ "mean": "@payload.mean",
287
+ "status": "remediate"
288
+ },
289
+ "source": {
290
+ "kind": "trait",
291
+ "trait": "PosteriorTracker",
292
+ "traitId": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP"
293
+ },
294
+ "triggers": "VERDICT_REACHED",
295
+ "triggersId": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J"
296
+ },
297
+ {
298
+ "event": "EVIDENCE_INSUFFICIENT",
299
+ "payloadMapping": {
300
+ "intervalHigh": "@payload.intervalHigh",
301
+ "intervalLow": "@payload.intervalLow",
302
+ "mean": "@payload.mean",
303
+ "status": "insufficient"
304
+ },
305
+ "source": {
306
+ "kind": "trait",
307
+ "trait": "PosteriorTracker",
308
+ "traitId": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP"
309
+ },
310
+ "triggers": "VERDICT_REACHED",
311
+ "triggersId": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J"
312
+ }
313
+ ],
314
+ "name": "ObservationRelay",
315
+ "scope": "instance",
316
+ "stateMachine": {
317
+ "events": [
318
+ {
319
+ "id": "evt_01KYBPCRSCG3Q7AZ9J37R13ZMD",
320
+ "key": "INIT",
321
+ "name": "Initialize"
322
+ },
323
+ {
324
+ "description": "Public entry point — one true/false observation of a learner against one skill.",
325
+ "id": "evt_01KYBPCRSC5KF14SRWR89Z1G7V",
326
+ "key": "OBSERVE_SKILL",
327
+ "name": "Observe Skill",
328
+ "payloadSchema": [
329
+ {
330
+ "name": "skillId",
331
+ "required": true,
332
+ "type": "string"
333
+ },
334
+ {
335
+ "name": "outcome",
336
+ "required": true,
337
+ "type": "boolean"
338
+ }
339
+ ],
340
+ "tier": "primary"
341
+ },
342
+ {
343
+ "description": "Any posterior verdict, tagged with which one it was.",
344
+ "id": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J",
345
+ "key": "VERDICT_REACHED",
346
+ "name": "Verdict Reached",
347
+ "payloadSchema": [
348
+ {
349
+ "name": "status",
350
+ "required": true,
351
+ "type": "string"
352
+ },
353
+ {
354
+ "name": "mean",
355
+ "required": true,
356
+ "type": "float"
357
+ },
358
+ {
359
+ "name": "intervalLow",
360
+ "required": true,
361
+ "type": "float"
362
+ },
363
+ {
364
+ "name": "intervalHigh",
365
+ "required": true,
366
+ "type": "float"
367
+ }
368
+ ],
369
+ "tier": "secondary"
370
+ },
371
+ {
372
+ "description": "Forwards the raw outcome to PosteriorTracker once skillId is recorded on the shared entity.",
373
+ "id": "evt_01KYBPNGX0R5B88XX3RC2CVAH9",
374
+ "key": "OBSERVATION_MADE",
375
+ "name": "Observation Made",
376
+ "payloadSchema": [
377
+ {
378
+ "name": "outcome",
379
+ "required": true,
380
+ "type": "boolean"
381
+ }
382
+ ],
383
+ "tier": "secondary"
384
+ },
385
+ {
386
+ "description": "The posterior's verdict reshaped into a labeled example for LabelCaptureListener.",
387
+ "id": "evt_01KYBPNGX06S803X783YQBBMKK",
388
+ "key": "CAPTURE_LABEL",
389
+ "name": "Capture Label",
390
+ "payloadSchema": [
391
+ {
392
+ "name": "input",
393
+ "required": true,
394
+ "type": "any"
395
+ },
396
+ {
397
+ "name": "verdict",
398
+ "required": true,
399
+ "type": "any"
400
+ },
401
+ {
402
+ "name": "source",
403
+ "required": true,
404
+ "type": "string"
405
+ },
406
+ {
407
+ "name": "outcome",
408
+ "type": "any"
409
+ }
410
+ ],
411
+ "tier": "secondary"
412
+ }
413
+ ],
414
+ "states": [
415
+ {
416
+ "isInitial": true,
417
+ "name": "idle"
418
+ }
419
+ ],
420
+ "transitions": [
421
+ {
422
+ "effects": [
423
+ [
424
+ "set",
425
+ "@entity.skillId",
426
+ ""
427
+ ],
428
+ [
429
+ "set",
430
+ "@entity.lastOutcome",
431
+ false
432
+ ]
433
+ ],
434
+ "event": "INIT",
435
+ "eventId": "evt_01KYBPCRSCG3Q7AZ9J37R13ZMD",
436
+ "from": "idle",
437
+ "to": "idle"
438
+ },
439
+ {
440
+ "effects": [
441
+ [
442
+ "set",
443
+ "@entity.skillId",
444
+ "@payload.skillId"
445
+ ],
446
+ [
447
+ "set",
448
+ "@entity.lastOutcome",
449
+ "@payload.outcome"
450
+ ],
451
+ [
452
+ "emit",
453
+ "OBSERVATION_MADE",
454
+ {
455
+ "outcome": "@payload.outcome"
456
+ }
457
+ ]
458
+ ],
459
+ "event": "OBSERVE_SKILL",
460
+ "eventId": "evt_01KYBPCRSC5KF14SRWR89Z1G7V",
461
+ "from": "idle",
462
+ "to": "idle"
463
+ },
464
+ {
465
+ "effects": [
466
+ [
467
+ "emit",
468
+ "CAPTURE_LABEL",
469
+ {
470
+ "input": {
471
+ "skillId": "@entity.skillId"
472
+ },
473
+ "outcome": "@entity.lastOutcome",
474
+ "source": "posterior",
475
+ "verdict": {
476
+ "intervalHigh": "@payload.intervalHigh",
477
+ "intervalLow": "@payload.intervalLow",
478
+ "mean": "@payload.mean",
479
+ "status": "@payload.status"
480
+ }
481
+ }
482
+ ]
483
+ ],
484
+ "event": "VERDICT_REACHED",
485
+ "eventId": "evt_01KYBPNGX0VJ2TZ37PRV9S8N1J",
486
+ "from": "idle",
487
+ "to": "idle"
488
+ }
489
+ ]
490
+ }
491
+ },
492
+ {
493
+ "config": {
494
+ "intervalWidthMax": {
495
+ "default": 0.25,
496
+ "type": "unknown"
497
+ },
498
+ "masteryFloor": {
499
+ "default": 0.85,
500
+ "type": "unknown"
501
+ },
502
+ "priorAlpha": {
503
+ "default": 1.0,
504
+ "type": "unknown"
505
+ },
506
+ "priorBeta": {
507
+ "default": 1.0,
508
+ "type": "unknown"
509
+ },
510
+ "remediationCeiling": {
511
+ "default": 0.35,
512
+ "type": "unknown"
513
+ },
514
+ "sampleCount": {
515
+ "default": 200.0,
516
+ "type": "unknown"
517
+ }
518
+ },
519
+ "id": "trt_01KYBPCRSCEJWQAM1J6CMXCJRP",
520
+ "linkedEntity": "KnowledgeState",
521
+ "linkedEntityId": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3",
522
+ "listens": [
523
+ {
524
+ "event": "OBSERVATION_MADE",
525
+ "source": {
526
+ "kind": "trait",
527
+ "trait": "ObservationRelay"
528
+ },
529
+ "triggers": "OBSERVE"
530
+ }
531
+ ],
532
+ "name": "PosteriorTracker",
533
+ "ref": "Posterior.traits.PosteriorBelief"
534
+ },
535
+ {
536
+ "config": {
537
+ "sampleRate": {
538
+ "default": 1.0,
539
+ "type": "unknown"
540
+ },
541
+ "sink": {
542
+ "default": "knowledge-tracing",
543
+ "type": "unknown"
544
+ }
545
+ },
546
+ "id": "trt_01KYBPCRSCZ0PK3PM8V8H47V2Y",
547
+ "linkedEntity": "KnowledgeState",
548
+ "linkedEntityId": "ent_01KYBPCRSCQ4W4H3RKZKNA8GE3",
549
+ "listens": [
550
+ {
551
+ "event": "CAPTURE_LABEL",
552
+ "source": {
553
+ "kind": "trait",
554
+ "trait": "ObservationRelay"
555
+ },
556
+ "triggers": "CAPTURE"
557
+ }
558
+ ],
559
+ "name": "Labels",
560
+ "ref": "LabelCap.traits.LabelCaptureListener"
561
+ }
562
+ ],
563
+ "uses": [
564
+ {
565
+ "as": "Posterior",
566
+ "from": "std/behaviors/std-ml-posterior"
567
+ },
568
+ {
569
+ "as": "LabelCap",
570
+ "from": "std/behaviors/std-ml-label-capture"
571
+ }
572
+ ]
573
+ }
574
+ ],
575
+ "schemaVersion": 1,
576
+ "version": "1.0.0"
577
+ }
@@ -300,6 +300,28 @@
300
300
  "synonyms": "toolbar buttons, header actions, shortcut icons, quick actions",
301
301
  "tier": "presentation",
302
302
  "type": "[ItemAction]"
303
+ },
304
+ "viewerAvatar": {
305
+ "default": "",
306
+ "description": "Avatar image URL for the account menu.",
307
+ "label": "Signed-in avatar",
308
+ "tier": "presentation",
309
+ "type": "string"
310
+ },
311
+ "viewerEmail": {
312
+ "default": "",
313
+ "description": "Email shown under the name in the account menu — typically @user.email.",
314
+ "label": "Signed-in email",
315
+ "tier": "presentation",
316
+ "type": "string"
317
+ },
318
+ "viewerName": {
319
+ "default": "",
320
+ "description": "Display name of the signed-in viewer, shown in the app bar's account menu — typically @user.name. Blank renders no account menu, so people can see which account (and which persona) they are viewing the app as only when it is actually known.",
321
+ "label": "Who is signed in",
322
+ "synonyms": "signed in user, current user, account, profile, persona, who am i",
323
+ "tier": "presentation",
324
+ "type": "string"
303
325
  }
304
326
  },
305
327
  "emits": [
@@ -489,7 +511,17 @@
489
511
  "notifications": "@config.notifications",
490
512
  "searchEvent": "@config.searchEvent",
491
513
  "topBarActions": "@config.topBarActions",
492
- "type": "@config.layoutPattern"
514
+ "type": "@config.layoutPattern",
515
+ "user": [
516
+ "if",
517
+ "@config.viewerName",
518
+ {
519
+ "avatar": "@config.viewerAvatar",
520
+ "email": "@config.viewerEmail",
521
+ "name": "@config.viewerName"
522
+ },
523
+ null
524
+ ]
493
525
  }
494
526
  ],
495
527
  "className": "min-h-screen w-full",