@almadar/std 16.239.0 → 16.242.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 (167) hide show
  1. package/behaviors/behaviors-registry.json +4814 -553
  2. package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +38 -1
  3. package/behaviors/lolo/agent/atoms/std-agent-session.lolo +1074 -47
  4. package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +8 -7
  5. package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +56 -37
  6. package/behaviors/lolo/infra/atoms/std-page-open.lolo +59 -0
  7. package/behaviors/lolo/infra/atoms/std-page-search.lolo +134 -0
  8. package/behaviors/lolo/infra/atoms/std-page-treat.lolo +59 -0
  9. package/behaviors/lolo/infra/atoms/std-page-watch.lolo +86 -0
  10. package/behaviors/lolo/ui/core/atoms/std-board.lolo +53 -6
  11. package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +25 -1
  12. package/behaviors/lolo/ui/core/atoms/std-card-grid.lolo +9 -0
  13. package/behaviors/lolo/ui/core/atoms/std-doc-page.lolo +153 -0
  14. package/behaviors/lolo/ui/core/atoms/std-site-header.lolo +15 -3
  15. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +2 -2
  16. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +7 -7
  17. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +1 -1
  18. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +5 -0
  19. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +124 -92
  20. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +114 -55
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-compare.lolo +40 -14
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +363 -123
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +93 -48
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +60 -28
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +193 -96
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +75 -32
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +142 -86
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +266 -98
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +103 -65
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +223 -109
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-measure.lolo +232 -64
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-param-explorer.lolo +69 -29
  33. package/behaviors/lolo/ui/learning/atoms/std-learn-perturb.lolo +363 -123
  34. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +73 -41
  35. package/behaviors/lolo/ui/learning/atoms/std-learn-sample-accumulator.lolo +96 -38
  36. package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +65 -45
  37. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +243 -117
  38. package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +76 -28
  39. package/behaviors/lolo/ui/learning/atoms/std-learn-sim-3d.lolo +228 -109
  40. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +95 -44
  41. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +199 -125
  42. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +92 -48
  43. package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +239 -78
  44. package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +147 -38
  45. package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +123 -58
  46. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +22 -0
  47. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +26 -0
  48. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +26 -0
  49. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +27 -1
  50. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +27 -1
  51. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +29 -9
  52. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +26 -0
  53. package/behaviors/lolo-behavior-contracts.json +1 -1
  54. package/behaviors/registry/agent/atoms/std-agent-memory.orb +372 -2
  55. package/behaviors/registry/agent/atoms/std-agent-session.orb +4752 -348
  56. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +54 -42
  57. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +356 -122
  58. package/behaviors/registry/factory-signatures.json +1 -1
  59. package/behaviors/registry/infra/atoms/std-page-open.orb +435 -0
  60. package/behaviors/registry/infra/atoms/std-page-search.orb +867 -0
  61. package/behaviors/registry/infra/atoms/std-page-treat.orb +494 -0
  62. package/behaviors/registry/infra/atoms/std-page-watch.orb +554 -0
  63. package/behaviors/registry/ui/core/atoms/std-board.orb +110 -14
  64. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +119 -0
  65. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +61 -0
  66. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +594 -0
  67. package/behaviors/registry/ui/core/atoms/std-site-header.orb +40 -2
  68. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +2 -0
  69. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +24 -0
  70. package/behaviors/registry/ui/core/atoms/std-version-history.orb +8 -1
  71. package/behaviors/registry/ui/core/molecules/ui-header.orb +7 -0
  72. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +903 -369
  73. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1002 -232
  74. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +253 -74
  75. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +3624 -921
  76. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +685 -144
  77. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +404 -52
  78. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1787 -210
  79. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +699 -71
  80. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1102 -578
  81. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +2760 -872
  82. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +689 -152
  83. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1431 -633
  84. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +2485 -512
  85. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +501 -197
  86. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +3642 -928
  87. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +705 -125
  88. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +624 -114
  89. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +405 -153
  90. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1911 -611
  91. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +436 -128
  92. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +2482 -485
  93. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +896 -192
  94. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +2001 -759
  95. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +734 -228
  96. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +2501 -764
  97. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1591 -173
  98. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +883 -122
  99. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +176 -0
  100. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +211 -0
  101. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +211 -0
  102. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +212 -1
  103. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +212 -1
  104. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +203 -9
  105. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +211 -0
  106. package/behaviors/signatures.lolo +325 -655
  107. package/canonical-operators.json +35 -1
  108. package/dist/behaviors/exports-reader.js +41980 -35508
  109. package/dist/behaviors/functions/index.d.ts +1063 -140
  110. package/dist/behaviors/functions/index.js +41951 -35506
  111. package/dist/behaviors/index.d.ts +1 -1
  112. package/dist/behaviors/index.js +41981 -35509
  113. package/dist/behaviors/query.js +41980 -35508
  114. package/dist/behaviors-embeddings.hash.json +3 -3
  115. package/dist/behaviors-embeddings.json +47 -27
  116. package/dist/behaviors-registry.json +4814 -553
  117. package/dist/index.d.ts +4 -4
  118. package/dist/index.js +42019 -35509
  119. package/dist/knob-embeddings.hash.json +3 -3
  120. package/dist/knob-embeddings.json +623 -263
  121. package/dist/modules/anim.d.ts +1 -1
  122. package/dist/modules/array.d.ts +1 -1
  123. package/dist/modules/async.d.ts +1 -1
  124. package/dist/modules/behavior.d.ts +1 -1
  125. package/dist/modules/browser.d.ts +1 -1
  126. package/dist/modules/composition.d.ts +1 -1
  127. package/dist/modules/contract.d.ts +1 -1
  128. package/dist/modules/core.d.ts +1 -1
  129. package/dist/modules/core.js +2 -0
  130. package/dist/modules/data.d.ts +1 -1
  131. package/dist/modules/ease.d.ts +1 -1
  132. package/dist/modules/format.d.ts +1 -1
  133. package/dist/modules/geo.d.ts +1 -1
  134. package/dist/modules/graph.d.ts +1 -1
  135. package/dist/modules/grid.d.ts +1 -1
  136. package/dist/modules/i18n.d.ts +17 -0
  137. package/dist/modules/i18n.js +22 -0
  138. package/dist/modules/index.d.ts +2 -1
  139. package/dist/modules/index.js +24 -1
  140. package/dist/modules/integration.d.ts +1 -1
  141. package/dist/modules/json.d.ts +1 -1
  142. package/dist/modules/llm.d.ts +1 -1
  143. package/dist/modules/math.d.ts +1 -1
  144. package/dist/modules/memory.d.ts +1 -1
  145. package/dist/modules/nn.d.ts +1 -1
  146. package/dist/modules/noise.d.ts +1 -1
  147. package/dist/modules/object.d.ts +1 -1
  148. package/dist/modules/os.d.ts +1 -1
  149. package/dist/modules/path.d.ts +1 -1
  150. package/dist/modules/prob.d.ts +1 -1
  151. package/dist/modules/session.d.ts +1 -1
  152. package/dist/modules/str.d.ts +1 -1
  153. package/dist/modules/tensor.d.ts +1 -1
  154. package/dist/modules/time.d.ts +1 -1
  155. package/dist/modules/trace.d.ts +1 -1
  156. package/dist/modules/train.d.ts +1 -1
  157. package/dist/modules/validate.d.ts +1 -1
  158. package/dist/modules/vector.d.ts +1 -1
  159. package/dist/modules/workspace.d.ts +1 -1
  160. package/dist/registry/factory-signatures.json +1 -1
  161. package/dist/registry.d.ts +10 -3
  162. package/dist/registry.js +31 -1
  163. package/dist/{types-DLx38UFZ.d.ts → types-Cdb321uM.d.ts} +9 -3
  164. package/i18n/ar.json +1 -0
  165. package/i18n/en.json +1 -0
  166. package/i18n/sl.json +1 -0
  167. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "std-agent-assistant — an in-app assistant that operates the running app for the signed-in user. A floating button opens it in a side panel docked beside the page (std-panel-launcher; a side sheet on small screens), where the conversation shows every step the assistant takes live as it works. List AssistantDock with the assistant's traits on each page that should carry the button. One request flows down a chain of std agent atoms on the bus: the conversation (std-agent-session) SENDs → CONVERSE → std-agent-context bounds it → std-agent-memory adds what it recalls → std-agent-tool-loop answers it through `call-service llm call-tools`, firing only the inputs and reading only the entities the `tools` allowlist names, as the signed-in user → REPLIED goes back to the conversation, to memory (remembered) and to std-agent-trace (the run record). Import the orbital and supply the allowlist: `orbital Assistant = Agent.orbitals.AgentAssistantOrbital { config { tools: [{ event: TaskOrbital.TaskPersistor.DO_CREATE }, { read: Task }], instructions: \"…\" } }`. The conversation, memory and run records live in AgentRecordsOrbital; retarget them onto your own owner-scoped entities (`ownerId` a relation to your [identity] roster, with @read/@create) with `entities { AgentMessage: …, AgentMemory: …, AgentRun: … }`.",
2
+ "description": "std-agent-assistant — an in-app assistant that operates the running app for the signed-in user. Each section's floating button opens it in a side panel docked beside the page (std-panel-launcher; a side sheet on small screens), where the conversation shows every step the assistant takes live as it works; /assistant is the same conversation as a full page, in the app's own shell (pass `appName` and `navItems`); past conversations and what the assistant remembers open in place from its toolbar (Back returns to the chat), on either surface. One request flows down a chain of std agent atoms on the bus: the conversation (std-agent-session) SENDs → CONVERSE → std-agent-context bounds it → std-agent-memory adds what it recalls → std-agent-tool-loop answers it through `call-service llm call-tools`, firing only the inputs and reading only the entities its `tools` allow, as the signed-in user → ASSISTANT_REPLIED goes back to the conversation, to memory (remembered) and to std-agent-trace (the run record). By default the tools are the program's own declarations: every `-> external` input (its @description is the tool text) and a read over every persisted entity, so composing building blocks composes the assistant's abilities. Any section's page gets the assistant with two traits, `XAssistant = AgentSession.traits.AgentConversation` and a std-panel-launcher dock: the conversation speaks the ASSISTANT_* contract from any orbital, so the assistant needs no per-section wiring. Import the orbital once per app: `orbital Assistant = Agent.orbitals.AgentAssistantOrbital { config { instructions: \"…\" } }`. The conversation, memory and run records live in AgentRecordsOrbital; retarget them onto your own owner-scoped entities (`ownerId` a relation to your [identity] roster, with @read/@create) with `entities { AgentMessage: …, AgentMemory: …, AgentRun: …, AgentChat: … }`. The conversation is kept across pages and reloads (each person's most recently used conversation is the current one);",
3
3
  "ledger": {
4
4
  "entries": {
5
5
  "ent_01M3TZ0DZDY909P5HZH4V2D7MY": {
@@ -34,6 +34,14 @@
34
34
  "owner": "workspace",
35
35
  "renames": []
36
36
  },
37
+ "ent_01M42AFPPPHTXB167C0TSN3YMG": {
38
+ "bakedName": "AgentChat",
39
+ "curName": "AgentChat",
40
+ "id": "ent_01M42AFPPPHTXB167C0TSN3YMG",
41
+ "kind": "entity",
42
+ "owner": "workspace",
43
+ "renames": []
44
+ },
37
45
  "orb_01M3TZ0DZDJS90708ZRDH25S9C": {
38
46
  "bakedName": "AgentAssistantOrbital",
39
47
  "curName": "AgentAssistantOrbital",
@@ -66,14 +74,6 @@
66
74
  "owner": "workspace",
67
75
  "renames": []
68
76
  },
69
- "pag_01M3V71WRKMMBWKNQ7768PP579": {
70
- "bakedName": "AssistantMemoryPage",
71
- "curName": "AssistantMemoryPage",
72
- "id": "pag_01M3V71WRKMMBWKNQ7768PP579",
73
- "kind": "page",
74
- "owner": "workspace",
75
- "renames": []
76
- },
77
77
  "trt_01M3TZ0DZD2Q7ZQVBTW902F1CE": {
78
78
  "bakedName": "AssistantLoop",
79
79
  "curName": "AssistantLoop",
@@ -114,14 +114,6 @@
114
114
  "owner": "workspace",
115
115
  "renames": []
116
116
  },
117
- "trt_01M3V71WRKAPCPAVW5XM7T3BW5": {
118
- "bakedName": "AgentMemoryList",
119
- "curName": "AgentMemoryList",
120
- "id": "trt_01M3V71WRKAPCPAVW5XM7T3BW5",
121
- "kind": "trait",
122
- "owner": "workspace",
123
- "renames": []
124
- },
125
117
  "trt_01M3V71WRKRBWAZMCGX5EQD8X6": {
126
118
  "bakedName": "AgentRunHistory",
127
119
  "curName": "AgentRunHistory",
@@ -130,14 +122,6 @@
130
122
  "owner": "workspace",
131
123
  "renames": []
132
124
  },
133
- "trt_01M3WD0HMAAMMG2VCZ9KXKYC0V": {
134
- "bakedName": "AssistantDock",
135
- "curName": "AssistantDock",
136
- "id": "trt_01M3WD0HMAAMMG2VCZ9KXKYC0V",
137
- "kind": "trait",
138
- "owner": "workspace",
139
- "renames": []
140
- },
141
125
  "trt_01M3WD0HMAF5RY9APZS2H3AJ46": {
142
126
  "bakedName": "AssistantConversation",
143
127
  "curName": "AssistantConversation",
@@ -145,6 +129,22 @@
145
129
  "kind": "trait",
146
130
  "owner": "workspace",
147
131
  "renames": []
132
+ },
133
+ "trt_01M42AFPPP9XF9WNB1Q2DJVYEX": {
134
+ "bakedName": "AssistantLayout",
135
+ "curName": "AssistantLayout",
136
+ "id": "trt_01M42AFPPP9XF9WNB1Q2DJVYEX",
137
+ "kind": "trait",
138
+ "owner": "workspace",
139
+ "renames": []
140
+ },
141
+ "trt_01M42B9X7M5BB02V920EWW4HYD": {
142
+ "bakedName": "AssistantChatKeeper",
143
+ "curName": "AssistantChatKeeper",
144
+ "id": "trt_01M42B9X7M5BB02V920EWW4HYD",
145
+ "kind": "trait",
146
+ "owner": "workspace",
147
+ "renames": []
148
148
  }
149
149
  },
150
150
  "schemaVersion": 1
@@ -153,10 +153,10 @@
153
153
  "orbitals": [
154
154
  {
155
155
  "config": {
156
- "buttonLabel": {
157
- "default": "Open the assistant",
158
- "description": "What the floating button does, read to screen readers and shown as its tooltip.",
159
- "label": "Button label",
156
+ "appName": {
157
+ "default": "Assistant",
158
+ "description": "Pass the app's own name so the assistant page matches the rest of the app.",
159
+ "label": "App name in the assistant page's header",
160
160
  "tier": "presentation",
161
161
  "type": "string"
162
162
  },
@@ -179,13 +179,9 @@
179
179
  {
180
180
  "href": "/assistant/runs",
181
181
  "label": "Run history"
182
- },
183
- {
184
- "href": "/assistant/memory",
185
- "label": "What I remember"
186
182
  }
187
183
  ],
188
- "description": "The pages showing the assistant's run history and memory.",
184
+ "description": "Related pages, e.g. the assistant's run history.",
189
185
  "items": {
190
186
  "properties": {
191
187
  "href": {
@@ -211,21 +207,70 @@
211
207
  "tier": "policy",
212
208
  "type": "number"
213
209
  },
210
+ "navItems": {
211
+ "default": [],
212
+ "description": "Pass the app's own navItems so the assistant page keeps the app's sidebar.",
213
+ "items": {
214
+ "properties": {
215
+ "badge": {
216
+ "name": "badge",
217
+ "required": false,
218
+ "type": "string"
219
+ },
220
+ "children": {
221
+ "items": {
222
+ "type": "union",
223
+ "values": [
224
+ "NavItem"
225
+ ]
226
+ },
227
+ "name": "children",
228
+ "required": false,
229
+ "type": "array"
230
+ },
231
+ "href": {
232
+ "name": "href",
233
+ "required": true,
234
+ "type": "string"
235
+ },
236
+ "icon": {
237
+ "name": "icon",
238
+ "required": false,
239
+ "type": "string"
240
+ },
241
+ "label": {
242
+ "name": "label",
243
+ "required": true,
244
+ "type": "string"
245
+ },
246
+ "roles": {
247
+ "items": {
248
+ "type": "string"
249
+ },
250
+ "name": "roles",
251
+ "required": false,
252
+ "type": "array"
253
+ }
254
+ },
255
+ "type": "object"
256
+ },
257
+ "label": "Sidebar navigation on the assistant page",
258
+ "tier": "presentation",
259
+ "type": "[NavItem]"
260
+ },
214
261
  "recallLimit": {
215
262
  "default": 3.0,
216
263
  "label": "Memories recalled per request",
217
264
  "tier": "policy",
218
265
  "type": "number"
219
266
  },
220
- "title": {
221
- "default": "Assistant",
222
- "label": "Panel title",
223
- "tier": "presentation",
224
- "type": "string"
225
- },
226
267
  "tools": {
227
- "default": [],
228
- "description": "The declared inputs it may fire (`{ event: Trait.EVENT }` / `{ event: Orbital.Trait.EVENT }`) and the entities it may read (`{ read: Entity }`), as the signed-in user.",
268
+ "default": [
269
+ {
270
+ "scope": "declared"
271
+ }
272
+ ],
273
+ "description": "As the signed-in user: `{ scope: declared }` (the default) gives it every external input the program declares and a read over every persisted entity, so each building block's declared inputs become its abilities; or list them — `{ event: Orbital.Trait.EVENT }` for one input, `{ read: Entity }` for one entity.",
229
274
  "items": {
230
275
  "properties": {
231
276
  "event": {
@@ -237,6 +282,14 @@
237
282
  "name": "read",
238
283
  "required": false,
239
284
  "type": "string"
285
+ },
286
+ "scope": {
287
+ "name": "scope",
288
+ "required": false,
289
+ "type": "string",
290
+ "values": [
291
+ "declared"
292
+ ]
240
293
  }
241
294
  },
242
295
  "type": "object"
@@ -245,6 +298,13 @@
245
298
  "synonyms": "allowlist, abilities, actions, permissions",
246
299
  "tier": "domain",
247
300
  "type": "[AgentTool]"
301
+ },
302
+ "viewerRole": {
303
+ "default": "",
304
+ "description": "The role the assistant page's sidebar items and their `roles` are checked against. Bind `@user.role` in an app whose identity carries a role; left empty, only items with no `roles` show.",
305
+ "label": "Viewer role on the assistant page",
306
+ "tier": "policy",
307
+ "type": "string"
248
308
  }
249
309
  },
250
310
  "entity": {
@@ -268,13 +328,17 @@
268
328
  "path": "/assistant",
269
329
  "traits": [
270
330
  {
271
- "ref": "AssistantDock",
272
- "refId": "trt_01M3WD0HMAAMMG2VCZ9KXKYC0V"
331
+ "ref": "AssistantLayout",
332
+ "refId": "trt_01M42AFPPP9XF9WNB1Q2DJVYEX"
273
333
  },
274
334
  {
275
335
  "ref": "AssistantThread",
276
336
  "refId": "trt_01M3TZ0DZDK3ZYFHBSBZMWW4V7"
277
337
  },
338
+ {
339
+ "ref": "AssistantChatKeeper",
340
+ "refId": "trt_01M42B9X7M5BB02V920EWW4HYD"
341
+ },
278
342
  {
279
343
  "ref": "AssistantContext",
280
344
  "refId": "trt_01M3TZ0DZDA49NXYE56JV7SZH9"
@@ -303,100 +367,129 @@
303
367
  "linkedEntity": "AgentMessage",
304
368
  "listens": [
305
369
  {
306
- "event": "SEND",
370
+ "event": "ASSISTANT_CHAT_OPENED",
307
371
  "source": {
308
372
  "kind": "trait",
309
- "trait": "AssistantConversation"
373
+ "trait": "AssistantChatKeeper"
310
374
  },
311
- "triggers": "SEND"
375
+ "triggers": "OPEN_CHAT"
312
376
  },
313
377
  {
314
- "event": "REPLIED",
378
+ "event": "ASSISTANT_SEND_IN_CHAT",
315
379
  "source": {
316
380
  "kind": "trait",
317
- "trait": "AssistantLoop"
381
+ "trait": "AssistantChatKeeper"
318
382
  },
319
- "triggers": "REPLIED"
383
+ "triggers": "SEND_IN_CHAT"
384
+ },
385
+ {
386
+ "event": "ASSISTANT_REPLY_IN_CHAT",
387
+ "source": {
388
+ "kind": "trait",
389
+ "trait": "AssistantChatKeeper"
390
+ },
391
+ "triggers": "REPLY_IN_CHAT"
320
392
  }
321
393
  ],
322
394
  "name": "AssistantThread",
323
395
  "ref": "Session.traits.AgentThread"
324
396
  },
325
397
  {
326
- "config": {
327
- "links": {
328
- "default": "@config.links",
329
- "type": "unknown"
330
- }
331
- },
332
- "id": "trt_01M3WD0HMAF5RY9APZS2H3AJ46",
398
+ "id": "trt_01M42B9X7M5BB02V920EWW4HYD",
399
+ "linkedEntity": "AgentChat",
333
400
  "listens": [
334
401
  {
335
- "event": "AgentMessagesLoaded",
402
+ "event": "ASSISTANT_SEND",
336
403
  "source": {
337
- "kind": "trait",
338
- "trait": "AssistantThread"
404
+ "kind": "any"
339
405
  },
340
- "triggers": "THREAD_LOADED"
406
+ "triggers": "SEND"
341
407
  },
342
408
  {
343
- "event": "THREAD_FAILED",
409
+ "event": "ASSISTANT_HISTORY_REQUESTED",
344
410
  "source": {
345
- "kind": "trait",
346
- "trait": "AssistantThread"
411
+ "kind": "any"
347
412
  },
348
- "triggers": "REPLY_FAILED"
413
+ "triggers": "LOAD_HISTORY"
349
414
  },
350
415
  {
351
- "event": "STEP",
416
+ "event": "ASSISTANT_NEW_CHAT",
352
417
  "source": {
353
- "kind": "trait",
354
- "trait": "AssistantLoop"
418
+ "kind": "any"
355
419
  },
356
- "triggers": "STEP"
420
+ "triggers": "NEW_CHAT"
357
421
  },
358
422
  {
359
- "event": "REPLIED",
423
+ "event": "ASSISTANT_CHAT_SELECTED",
360
424
  "source": {
361
- "kind": "trait",
362
- "trait": "AssistantLoop"
425
+ "kind": "any"
363
426
  },
364
- "triggers": "REPLIED"
427
+ "triggers": "SELECT_CHAT"
428
+ },
429
+ {
430
+ "event": "ASSISTANT_CHATS_REQUESTED",
431
+ "source": {
432
+ "kind": "any"
433
+ },
434
+ "triggers": "LIST_CHATS"
365
435
  },
366
436
  {
367
- "event": "REPLY_FAILED",
437
+ "event": "ASSISTANT_REPLIED",
368
438
  "source": {
369
439
  "kind": "trait",
370
440
  "trait": "AssistantLoop"
371
441
  },
372
- "triggers": "REPLY_FAILED"
442
+ "triggers": "REPLIED"
373
443
  }
374
444
  ],
445
+ "name": "AssistantChatKeeper",
446
+ "ref": "Session.traits.AgentChatKeeper"
447
+ },
448
+ {
449
+ "config": {
450
+ "links": {
451
+ "default": "@config.links",
452
+ "type": "unknown"
453
+ }
454
+ },
455
+ "id": "trt_01M3WD0HMAF5RY9APZS2H3AJ46",
375
456
  "name": "AssistantConversation",
376
457
  "ref": "Session.traits.AgentConversation"
377
458
  },
378
459
  {
379
460
  "config": {
461
+ "appName": {
462
+ "default": "@config.appName",
463
+ "type": "unknown"
464
+ },
465
+ "contentClassName": {
466
+ "default": "mx-auto flex w-full max-w-3xl flex-col h-[calc(100vh-9rem)] min-h-0",
467
+ "type": "unknown"
468
+ },
380
469
  "contentTrait": {
381
470
  "default": "@trait.AssistantConversation",
382
471
  "type": "unknown"
383
472
  },
384
- "icon": {
385
- "default": "message-circle",
473
+ "navItems": {
474
+ "default": "@config.navItems",
386
475
  "type": "unknown"
387
476
  },
388
- "label": {
389
- "default": "@config.buttonLabel",
477
+ "viewerEmail": {
478
+ "default": "@user.email",
390
479
  "type": "unknown"
391
480
  },
392
- "title": {
393
- "default": "@config.title",
481
+ "viewerName": {
482
+ "default": "@user.name",
483
+ "type": "unknown"
484
+ },
485
+ "viewerRole": {
486
+ "default": "@config.viewerRole",
394
487
  "type": "unknown"
395
488
  }
396
489
  },
397
- "id": "trt_01M3WD0HMAAMMG2VCZ9KXKYC0V",
398
- "name": "AssistantDock",
399
- "ref": "Launcher.traits.PanelLauncher"
490
+ "id": "trt_01M42AFPPP9XF9WNB1Q2DJVYEX",
491
+ "name": "AssistantLayout",
492
+ "ref": "Shell.traits.AppLayout"
400
493
  },
401
494
  {
402
495
  "config": {
@@ -438,12 +531,19 @@
438
531
  "triggers": "RECALL"
439
532
  },
440
533
  {
441
- "event": "REPLIED",
534
+ "event": "ASSISTANT_REPLIED",
442
535
  "source": {
443
536
  "kind": "trait",
444
537
  "trait": "AssistantLoop"
445
538
  },
446
539
  "triggers": "REMEMBER"
540
+ },
541
+ {
542
+ "event": "ASSISTANT_MEMORIES_REQUESTED",
543
+ "source": {
544
+ "kind": "any"
545
+ },
546
+ "triggers": "LIST"
447
547
  }
448
548
  ],
449
549
  "name": "AssistantMemory",
@@ -483,7 +583,7 @@
483
583
  "linkedEntity": "AgentRun",
484
584
  "listens": [
485
585
  {
486
- "event": "REPLIED",
586
+ "event": "ASSISTANT_REPLIED",
487
587
  "source": {
488
588
  "kind": "trait",
489
589
  "trait": "AssistantLoop"
@@ -491,7 +591,7 @@
491
591
  "triggers": "REPLIED"
492
592
  },
493
593
  {
494
- "event": "REPLY_FAILED",
594
+ "event": "ASSISTANT_REPLY_FAILED",
495
595
  "source": {
496
596
  "kind": "trait",
497
597
  "trait": "AssistantLoop"
@@ -524,6 +624,67 @@
524
624
  {
525
625
  "name": "read",
526
626
  "type": "string"
627
+ },
628
+ {
629
+ "name": "scope",
630
+ "type": "string"
631
+ }
632
+ ],
633
+ "NavItem": [
634
+ {
635
+ "name": "label",
636
+ "required": true,
637
+ "type": "string"
638
+ },
639
+ {
640
+ "name": "href",
641
+ "required": true,
642
+ "type": "string"
643
+ },
644
+ {
645
+ "name": "icon",
646
+ "type": "string"
647
+ },
648
+ {
649
+ "name": "badge",
650
+ "type": "string"
651
+ },
652
+ {
653
+ "name": "children",
654
+ "properties": [
655
+ {
656
+ "name": "label",
657
+ "required": true,
658
+ "type": "string"
659
+ },
660
+ {
661
+ "name": "href",
662
+ "required": true,
663
+ "type": "string"
664
+ },
665
+ {
666
+ "name": "icon",
667
+ "type": "string"
668
+ },
669
+ {
670
+ "name": "badge",
671
+ "type": "string"
672
+ },
673
+ {
674
+ "name": "children",
675
+ "properties": [],
676
+ "type": "[NavItem]"
677
+ },
678
+ {
679
+ "name": "roles",
680
+ "type": "[string]"
681
+ }
682
+ ],
683
+ "type": "[object]"
684
+ },
685
+ {
686
+ "name": "roles",
687
+ "type": "[string]"
527
688
  }
528
689
  ]
529
690
  },
@@ -549,8 +710,8 @@
549
710
  "from": "std/behaviors/std-agent-trace"
550
711
  },
551
712
  {
552
- "as": "Launcher",
553
- "from": "std/behaviors/std-panel-launcher"
713
+ "as": "Shell",
714
+ "from": "std/behaviors/std-app-layout"
554
715
  }
555
716
  ]
556
717
  },
@@ -581,6 +742,51 @@
581
742
  "id": "ent_01M3V71WRK9FF6XANDFRRXF24C",
582
743
  "name": "AgentMemory",
583
744
  "persistence": "persistent"
745
+ },
746
+ {
747
+ "collection": "agentChats",
748
+ "fields": [
749
+ {
750
+ "name": "id",
751
+ "required": true,
752
+ "type": "string"
753
+ },
754
+ {
755
+ "name": "ownerId",
756
+ "required": true,
757
+ "type": "string"
758
+ },
759
+ {
760
+ "default": "",
761
+ "name": "title",
762
+ "type": "string"
763
+ },
764
+ {
765
+ "default": 0.0,
766
+ "name": "startedAt",
767
+ "type": "number"
768
+ },
769
+ {
770
+ "default": 0.0,
771
+ "name": "lastActiveAt",
772
+ "type": "number"
773
+ },
774
+ {
775
+ "default": "",
776
+ "intrinsic": true,
777
+ "name": "pendingMessage",
778
+ "type": "string"
779
+ },
780
+ {
781
+ "default": "",
782
+ "intrinsic": true,
783
+ "name": "pendingReply",
784
+ "type": "string"
785
+ }
786
+ ],
787
+ "id": "ent_01M42AFPPPHTXB167C0TSN3YMG",
788
+ "name": "AgentChat",
789
+ "persistence": "persistent"
584
790
  }
585
791
  ],
586
792
  "entity": {
@@ -609,17 +815,6 @@
609
815
  "refId": "trt_01M3V71WRKRBWAZMCGX5EQD8X6"
610
816
  }
611
817
  ]
612
- },
613
- {
614
- "id": "pag_01M3V71WRKMMBWKNQ7768PP579",
615
- "name": "AssistantMemoryPage",
616
- "path": "/assistant/memory",
617
- "traits": [
618
- {
619
- "ref": "AgentMemoryList",
620
- "refId": "trt_01M3V71WRKAPCPAVW5XM7T3BW5"
621
- }
622
- ]
623
818
  }
624
819
  ],
625
820
  "traits": [
@@ -640,24 +835,6 @@
640
835
  ],
641
836
  "name": "AgentRunHistory",
642
837
  "ref": "Trace.traits.AgentRunBrowse"
643
- },
644
- {
645
- "id": "trt_01M3V71WRKAPCPAVW5XM7T3BW5",
646
- "linkedEntity": "AgentMemory",
647
- "linkedEntityId": "ent_01M3V71WRK9FF6XANDFRRXF24C",
648
- "listens": [
649
- {
650
- "event": "MEMORY_STORED",
651
- "source": {
652
- "kind": "orbital",
653
- "orbital": "AgentAssistantOrbital",
654
- "trait": "AssistantMemory"
655
- },
656
- "triggers": "MEMORY_STORED"
657
- }
658
- ],
659
- "name": "AgentMemoryList",
660
- "ref": "Memory.traits.AgentMemoryBrowse"
661
838
  }
662
839
  ],
663
840
  "types": {
@@ -681,14 +858,71 @@
681
858
  {
682
859
  "name": "read",
683
860
  "type": "string"
861
+ },
862
+ {
863
+ "name": "scope",
864
+ "type": "string"
865
+ }
866
+ ],
867
+ "NavItem": [
868
+ {
869
+ "name": "label",
870
+ "required": true,
871
+ "type": "string"
872
+ },
873
+ {
874
+ "name": "href",
875
+ "required": true,
876
+ "type": "string"
877
+ },
878
+ {
879
+ "name": "icon",
880
+ "type": "string"
881
+ },
882
+ {
883
+ "name": "badge",
884
+ "type": "string"
885
+ },
886
+ {
887
+ "name": "children",
888
+ "properties": [
889
+ {
890
+ "name": "label",
891
+ "required": true,
892
+ "type": "string"
893
+ },
894
+ {
895
+ "name": "href",
896
+ "required": true,
897
+ "type": "string"
898
+ },
899
+ {
900
+ "name": "icon",
901
+ "type": "string"
902
+ },
903
+ {
904
+ "name": "badge",
905
+ "type": "string"
906
+ },
907
+ {
908
+ "name": "children",
909
+ "properties": [],
910
+ "type": "[NavItem]"
911
+ },
912
+ {
913
+ "name": "roles",
914
+ "type": "[string]"
915
+ }
916
+ ],
917
+ "type": "[object]"
918
+ },
919
+ {
920
+ "name": "roles",
921
+ "type": "[string]"
684
922
  }
685
923
  ]
686
924
  },
687
925
  "uses": [
688
- {
689
- "as": "Memory",
690
- "from": "std/behaviors/std-agent-memory"
691
- },
692
926
  {
693
927
  "as": "Trace",
694
928
  "from": "std/behaviors/std-agent-trace"