@datalayer/agent-runtimes 1.5.16 → 1.5.18
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/dist-embed/chunks/ChatView-Bz0eyWo6.js +32 -0
- package/dist-embed/datalayer-app-main.js +102 -102
- package/lib/apps/apps/appspec.d.ts +36 -4
- package/lib/apps/apps/appspec.js +104 -11
- package/lib/apps/apps/threads.d.ts +20 -0
- package/lib/apps/apps/threads.js +31 -0
- package/lib/apps/plugins/canvas-blocks/index.d.ts +7 -9
- package/lib/apps/plugins/canvas-blocks/index.js +8 -10
- package/lib/apps/plugins/canvas-parts/index.d.ts +4 -1
- package/lib/apps/plugins/canvas-parts/index.js +7 -3
- package/lib/apps/plugins/chat/ChatView.js +32 -7
- package/lib/chat/ChatFloating.js +12 -4
- package/lib/chat/base/ChatBase.js +31 -5
- package/lib/chat/messages/ChatMessageList.js +1 -1
- package/lib/config/AgentConfiguration.d.ts +5 -1
- package/lib/examples/AgentA2ATeamExample.js +6 -5
- package/lib/examples/ChatExample.js +2 -2
- package/lib/examples/VoiceChatExample.js +9 -3
- package/lib/hooks/useBrowserAgent.d.ts +1 -1
- package/lib/hooks/useBrowserAgent.js +1 -1
- package/lib/protocols/AGUIAdapter.d.ts +11 -0
- package/lib/protocols/AGUIAdapter.js +27 -2
- package/lib/specs/agents/agents.js +169 -169
- package/lib/specs/apps.d.ts +32 -32
- package/lib/specs/apps.js +624 -143
- package/lib/specs/appspecSchema.js +30 -2
- package/lib/specs/cogs.js +3 -3
- package/lib/specs/index.d.ts +1 -0
- package/lib/specs/index.js +1 -0
- package/lib/specs/protocols.js +2 -2
- package/lib/specs/sceneSchema.js +2 -0
- package/lib/specs/scenes.js +7 -7
- package/lib/specs/teams/teams.js +11 -11
- package/lib/specs/ui.d.ts +32 -6
- package/lib/specs/ui.js +760 -26
- package/lib/specs/uiRenderers.d.ts +17 -0
- package/lib/specs/uiRenderers.js +40 -0
- package/lib/specs/voices.d.ts +2 -0
- package/lib/specs/voices.js +5 -0
- package/lib/types/agentspecs.d.ts +63 -12
- package/lib/types/chat.d.ts +6 -0
- package/lib/types/protocol.d.ts +17 -0
- package/lib/utils/utils.js +8 -1
- package/lib/voice/ReadAloud.d.ts +35 -0
- package/lib/voice/ReadAloud.js +29 -0
- package/lib/voice/index.d.ts +7 -2
- package/lib/voice/index.js +1 -0
- package/package.json +2 -2
- package/scripts/codegen/generate_agents.py +60 -11
- package/scripts/codegen/generate_ui.py +68 -22
- package/scripts/codegen/generate_ui_renderers.py +176 -0
- package/scripts/codegen/generate_voices.py +5 -1
- package/dist-embed/chunks/ChatView-nnI1-MOR.js +0 -32
package/lib/specs/ui.js
CHANGED
|
@@ -2,13 +2,23 @@
|
|
|
2
2
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
6
|
-
id: 'a2ui',
|
|
5
|
+
export const A2UI_SURFACE_UI_0_0_1 = {
|
|
6
|
+
id: 'a2ui-surface',
|
|
7
7
|
version: '0.0.1',
|
|
8
|
-
name: '
|
|
9
|
-
description: '
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
name: 'Surfaces in the conversation',
|
|
9
|
+
description: 'Forms, tables and cards the agent draws in the conversation; what you fill in goes back to it.',
|
|
10
|
+
emoji: '🪟',
|
|
11
|
+
octicon: 'browser',
|
|
12
|
+
plugin: '@datalayer/loop-plugin-a2ui-surface',
|
|
13
|
+
folder: 'a2ui-surface',
|
|
14
|
+
contributions: {
|
|
15
|
+
slots: ['loop.chatHeader'],
|
|
16
|
+
points: ['reactor.ui.renderer', 'reactor.ui.toolBinding'],
|
|
17
|
+
commands: [],
|
|
18
|
+
},
|
|
19
|
+
contributionPoints: [],
|
|
20
|
+
settings: {},
|
|
21
|
+
renderers: ['a2ui'],
|
|
12
22
|
catalog: 'a2ui/v0.9',
|
|
13
23
|
components: [
|
|
14
24
|
{
|
|
@@ -1055,42 +1065,766 @@ export const A2UI_UI_0_0_1 = {
|
|
|
1055
1065
|
},
|
|
1056
1066
|
],
|
|
1057
1067
|
};
|
|
1058
|
-
export const
|
|
1059
|
-
id: '
|
|
1068
|
+
export const A2UI_VIEW_UI_0_0_1 = {
|
|
1069
|
+
id: 'a2ui-view',
|
|
1060
1070
|
version: '0.0.1',
|
|
1061
|
-
name: '
|
|
1062
|
-
description:
|
|
1063
|
-
|
|
1064
|
-
|
|
1071
|
+
name: 'Surface view',
|
|
1072
|
+
description: 'The last result of the code, shown as a page you can use rather than as raw output.',
|
|
1073
|
+
emoji: '🖼',
|
|
1074
|
+
octicon: 'browser',
|
|
1075
|
+
plugin: '@datalayer/loop-plugin-a2ui',
|
|
1076
|
+
folder: 'a2ui',
|
|
1077
|
+
contributions: {
|
|
1078
|
+
slots: [],
|
|
1079
|
+
points: ['loop.command', 'loop.viewType'],
|
|
1080
|
+
commands: ['a2ui'],
|
|
1081
|
+
},
|
|
1082
|
+
contributionPoints: [],
|
|
1083
|
+
settings: {},
|
|
1084
|
+
renderers: ['a2ui'],
|
|
1065
1085
|
catalog: '',
|
|
1066
1086
|
components: [],
|
|
1067
1087
|
};
|
|
1068
|
-
export const
|
|
1069
|
-
id: '
|
|
1088
|
+
export const AGENTSPECS_UI_0_0_1 = {
|
|
1089
|
+
id: 'agentspecs',
|
|
1070
1090
|
version: '0.0.1',
|
|
1071
|
-
name: '
|
|
1072
|
-
description: '
|
|
1073
|
-
|
|
1074
|
-
|
|
1091
|
+
name: 'Agent picker',
|
|
1092
|
+
description: 'Choose which agent answers in this conversation.',
|
|
1093
|
+
emoji: '🤖',
|
|
1094
|
+
octicon: 'people',
|
|
1095
|
+
plugin: '@datalayer/loop-plugin-agentspecs',
|
|
1096
|
+
folder: 'agentspecs',
|
|
1097
|
+
contributions: {
|
|
1098
|
+
slots: ['loop.header'],
|
|
1099
|
+
points: ['loop.command'],
|
|
1100
|
+
commands: ['agents'],
|
|
1101
|
+
},
|
|
1102
|
+
contributionPoints: [],
|
|
1103
|
+
settings: {},
|
|
1104
|
+
renderers: [],
|
|
1105
|
+
catalog: '',
|
|
1106
|
+
components: [],
|
|
1107
|
+
};
|
|
1108
|
+
export const APP_ACTIVITY_UI_0_0_1 = {
|
|
1109
|
+
id: 'app-activity',
|
|
1110
|
+
version: '0.0.1',
|
|
1111
|
+
name: 'Activity',
|
|
1112
|
+
description: 'What your application did, is doing, and is about to do, beside its page.',
|
|
1113
|
+
emoji: '🕘',
|
|
1114
|
+
octicon: 'pulse',
|
|
1115
|
+
plugin: '@datalayer/loop-plugin-app-activity',
|
|
1116
|
+
folder: 'app-activity',
|
|
1117
|
+
per: 'application',
|
|
1118
|
+
contributions: {
|
|
1119
|
+
slots: ['loop.sidebar'],
|
|
1120
|
+
points: [],
|
|
1121
|
+
commands: [],
|
|
1122
|
+
},
|
|
1123
|
+
contributionPoints: [],
|
|
1124
|
+
settings: {},
|
|
1125
|
+
renderers: [],
|
|
1126
|
+
catalog: '',
|
|
1127
|
+
components: [],
|
|
1128
|
+
};
|
|
1129
|
+
export const APP_COMPONENTS_UI_0_0_1 = {
|
|
1130
|
+
id: 'app-components',
|
|
1131
|
+
version: '0.0.1',
|
|
1132
|
+
name: 'Your own components',
|
|
1133
|
+
description: "The components your application's developer wrote, on its page and in its answers.",
|
|
1134
|
+
emoji: '🧩',
|
|
1135
|
+
octicon: 'apps',
|
|
1136
|
+
plugin: '@datalayer/loop-plugin-app-components',
|
|
1137
|
+
folder: 'app-components',
|
|
1138
|
+
per: 'application',
|
|
1139
|
+
contributions: {
|
|
1140
|
+
slots: [],
|
|
1141
|
+
points: ['loop.a2ui.component', 'loop.canvas.block'],
|
|
1142
|
+
commands: [],
|
|
1143
|
+
},
|
|
1144
|
+
contributionPoints: [],
|
|
1145
|
+
settings: {},
|
|
1146
|
+
renderers: ['a2ui'],
|
|
1147
|
+
catalog: '',
|
|
1148
|
+
components: [],
|
|
1149
|
+
};
|
|
1150
|
+
export const APP_COMPUTER_UI_0_0_1 = {
|
|
1151
|
+
id: 'app-computer',
|
|
1152
|
+
version: '0.0.1',
|
|
1153
|
+
name: 'Computer',
|
|
1154
|
+
description: 'The computer your application works on: what ran there, its files, and taking it over.',
|
|
1155
|
+
emoji: '🖥️',
|
|
1156
|
+
octicon: 'device-desktop',
|
|
1157
|
+
plugin: '@datalayer/loop-plugin-app-computer',
|
|
1158
|
+
folder: 'app-computer',
|
|
1159
|
+
per: 'application',
|
|
1160
|
+
contributions: {
|
|
1161
|
+
slots: ['loop.sidebar'],
|
|
1162
|
+
points: [],
|
|
1163
|
+
commands: [],
|
|
1164
|
+
},
|
|
1165
|
+
contributionPoints: [],
|
|
1166
|
+
settings: {},
|
|
1167
|
+
renderers: [],
|
|
1168
|
+
catalog: '',
|
|
1169
|
+
components: [],
|
|
1170
|
+
};
|
|
1171
|
+
export const APP_ELEMENTS_UI_0_0_1 = {
|
|
1172
|
+
id: 'app-elements',
|
|
1173
|
+
version: '0.0.1',
|
|
1174
|
+
name: 'Side panel and pages',
|
|
1175
|
+
description: 'What your application opens beside the conversation: a side panel, a page of its own, a question for you.',
|
|
1176
|
+
emoji: '🗂️',
|
|
1177
|
+
octicon: 'sidebar-expand',
|
|
1178
|
+
plugin: '@datalayer/loop-plugin-app-elements',
|
|
1179
|
+
folder: 'app-elements',
|
|
1180
|
+
contributions: {
|
|
1181
|
+
slots: ['root'],
|
|
1182
|
+
points: ['reactor.ui.renderer'],
|
|
1183
|
+
commands: [],
|
|
1184
|
+
},
|
|
1185
|
+
contributionPoints: [],
|
|
1186
|
+
settings: {},
|
|
1187
|
+
renderers: ['a2ui'],
|
|
1188
|
+
catalog: '',
|
|
1189
|
+
components: [],
|
|
1190
|
+
};
|
|
1191
|
+
export const APP_PAGE_UI_0_0_1 = {
|
|
1192
|
+
id: 'app-page',
|
|
1193
|
+
version: '0.0.1',
|
|
1194
|
+
name: 'Application page',
|
|
1195
|
+
description: "Your application's page, drawn beside its conversation.",
|
|
1196
|
+
emoji: '📈',
|
|
1197
|
+
octicon: 'browser',
|
|
1198
|
+
plugin: '@datalayer/loop-plugin-app-page',
|
|
1199
|
+
folder: 'app-page',
|
|
1200
|
+
per: 'application',
|
|
1201
|
+
contributions: {
|
|
1202
|
+
slots: [],
|
|
1203
|
+
points: ['loop.chat.surface'],
|
|
1204
|
+
commands: [],
|
|
1205
|
+
},
|
|
1206
|
+
contributionPoints: [],
|
|
1207
|
+
settings: {},
|
|
1208
|
+
renderers: ['a2ui', 'mcp-apps'],
|
|
1209
|
+
catalog: '',
|
|
1210
|
+
components: [],
|
|
1211
|
+
};
|
|
1212
|
+
export const APP_RULES_UI_0_0_1 = {
|
|
1213
|
+
id: 'app-rules',
|
|
1214
|
+
version: '0.0.1',
|
|
1215
|
+
name: 'Rules and approvals',
|
|
1216
|
+
description: 'When your application acts alone, when it asks you, and the approvals waiting for your yes.',
|
|
1217
|
+
emoji: '🛡️',
|
|
1218
|
+
octicon: 'shield-check',
|
|
1219
|
+
plugin: '@datalayer/loop-plugin-app-rules',
|
|
1220
|
+
folder: 'app-rules',
|
|
1221
|
+
per: 'application',
|
|
1222
|
+
contributions: {
|
|
1223
|
+
slots: ['loop.sidebar'],
|
|
1224
|
+
points: [],
|
|
1225
|
+
commands: [],
|
|
1226
|
+
},
|
|
1227
|
+
contributionPoints: [],
|
|
1228
|
+
settings: {},
|
|
1229
|
+
renderers: [],
|
|
1230
|
+
catalog: '',
|
|
1231
|
+
components: [],
|
|
1232
|
+
};
|
|
1233
|
+
export const CANVAS_BLOCKS_UI_0_0_1 = {
|
|
1234
|
+
id: 'canvas-blocks',
|
|
1235
|
+
version: '0.0.1',
|
|
1236
|
+
name: 'Blocks',
|
|
1237
|
+
description: "The blocks you place on your application's page in the visual editor, one set for each part that draws them.",
|
|
1238
|
+
emoji: '🧱',
|
|
1239
|
+
octicon: 'apps',
|
|
1240
|
+
plugin: '@datalayer/loop-plugin-ui',
|
|
1241
|
+
folder: 'canvas-blocks',
|
|
1242
|
+
per: 'ui',
|
|
1243
|
+
contributions: {
|
|
1244
|
+
slots: [],
|
|
1245
|
+
points: ['loop.canvas.block'],
|
|
1246
|
+
commands: [],
|
|
1247
|
+
},
|
|
1248
|
+
contributionPoints: [],
|
|
1249
|
+
settings: {},
|
|
1250
|
+
renderers: [],
|
|
1251
|
+
catalog: '',
|
|
1252
|
+
components: [],
|
|
1253
|
+
};
|
|
1254
|
+
export const CANVAS_PARTS_UI_0_0_1 = {
|
|
1255
|
+
id: 'canvas-parts',
|
|
1256
|
+
version: '0.0.1',
|
|
1257
|
+
name: 'Parts',
|
|
1258
|
+
description: 'What you drop on your agent in the visual editor: connections, skills, models, rules, tests and events.',
|
|
1259
|
+
emoji: '🧰',
|
|
1260
|
+
octicon: 'package',
|
|
1261
|
+
plugin: '@datalayer/loop-plugin-parts',
|
|
1262
|
+
folder: 'canvas-parts',
|
|
1263
|
+
per: 'source',
|
|
1264
|
+
contributions: {
|
|
1265
|
+
slots: [],
|
|
1266
|
+
points: ['loop.canvas.part'],
|
|
1267
|
+
commands: [],
|
|
1268
|
+
},
|
|
1269
|
+
contributionPoints: [],
|
|
1270
|
+
settings: {},
|
|
1271
|
+
renderers: [],
|
|
1272
|
+
catalog: '',
|
|
1273
|
+
components: [],
|
|
1274
|
+
};
|
|
1275
|
+
export const CHAT_EXTRAS_UI_0_0_1 = {
|
|
1276
|
+
id: 'chat-extras',
|
|
1277
|
+
version: '0.0.1',
|
|
1278
|
+
name: 'Banner and status',
|
|
1279
|
+
description: 'A live banner over the conversation and a status line under it, set by the page around it.',
|
|
1280
|
+
emoji: '📣',
|
|
1281
|
+
octicon: 'megaphone',
|
|
1282
|
+
plugin: '@datalayer/loop-plugin-chat-extras',
|
|
1283
|
+
folder: 'chat-extras',
|
|
1284
|
+
contributions: {
|
|
1285
|
+
slots: [],
|
|
1286
|
+
points: ['loop.chat.extras'],
|
|
1287
|
+
commands: [],
|
|
1288
|
+
},
|
|
1289
|
+
contributionPoints: [],
|
|
1290
|
+
settings: {},
|
|
1291
|
+
renderers: [],
|
|
1292
|
+
catalog: '',
|
|
1293
|
+
components: [],
|
|
1294
|
+
};
|
|
1295
|
+
export const CHAT_HEADER_UI_0_0_1 = {
|
|
1296
|
+
id: 'chat-header',
|
|
1297
|
+
version: '0.0.1',
|
|
1298
|
+
name: 'Chat title bar',
|
|
1299
|
+
description: "The conversation's title bar: who answers, what it runs on, and its actions.",
|
|
1300
|
+
emoji: '🏷️',
|
|
1301
|
+
octicon: 'rows',
|
|
1302
|
+
plugin: '@datalayer/loop-plugin-chat-header',
|
|
1303
|
+
folder: 'chat-header',
|
|
1304
|
+
contributions: {
|
|
1305
|
+
slots: [],
|
|
1306
|
+
points: ['loop.chat.header'],
|
|
1307
|
+
commands: [],
|
|
1308
|
+
},
|
|
1309
|
+
contributionPoints: [],
|
|
1310
|
+
settings: {},
|
|
1311
|
+
renderers: [],
|
|
1312
|
+
catalog: '',
|
|
1313
|
+
components: [],
|
|
1314
|
+
};
|
|
1315
|
+
export const CHAT_VIEW_UI_0_0_1 = {
|
|
1316
|
+
id: 'chat-view',
|
|
1317
|
+
version: '0.0.1',
|
|
1318
|
+
name: 'Chat button',
|
|
1319
|
+
description: 'Back to the conversation alone, from under the composer.',
|
|
1320
|
+
emoji: '💬',
|
|
1321
|
+
octicon: 'comment-discussion',
|
|
1322
|
+
plugin: '@datalayer/loop-plugin-chat-view',
|
|
1323
|
+
folder: 'chat-view',
|
|
1324
|
+
contributions: {
|
|
1325
|
+
slots: ['loop.promptAction'],
|
|
1326
|
+
points: [],
|
|
1327
|
+
commands: [],
|
|
1328
|
+
},
|
|
1329
|
+
contributionPoints: [],
|
|
1330
|
+
settings: {},
|
|
1331
|
+
renderers: [],
|
|
1332
|
+
catalog: '',
|
|
1333
|
+
components: [],
|
|
1334
|
+
};
|
|
1335
|
+
export const CHAT_UI_0_0_1 = {
|
|
1336
|
+
id: 'chat',
|
|
1337
|
+
version: '0.0.1',
|
|
1338
|
+
name: 'Chat',
|
|
1339
|
+
description: 'The conversation: what you ask, what it answers, and the work it opens beside it.',
|
|
1340
|
+
emoji: '💬',
|
|
1341
|
+
octicon: 'comment-discussion',
|
|
1342
|
+
plugin: '@datalayer/loop-plugin-chat',
|
|
1343
|
+
folder: 'chat',
|
|
1344
|
+
contributions: {
|
|
1345
|
+
slots: [],
|
|
1346
|
+
points: [
|
|
1347
|
+
'loop.chat.turn',
|
|
1348
|
+
'loop.command',
|
|
1349
|
+
'loop.document.toolbar.item',
|
|
1350
|
+
'loop.notebook.toolbar.item',
|
|
1351
|
+
'loop.viewType',
|
|
1352
|
+
],
|
|
1353
|
+
commands: ['chat'],
|
|
1354
|
+
},
|
|
1355
|
+
contributionPoints: [
|
|
1356
|
+
'loop.agent.available',
|
|
1357
|
+
'loop.chat.composer',
|
|
1358
|
+
'loop.chat.extras',
|
|
1359
|
+
'loop.chat.header',
|
|
1360
|
+
'loop.chat.suggestion',
|
|
1361
|
+
'loop.chat.turn',
|
|
1362
|
+
'loop.frontendTool',
|
|
1363
|
+
],
|
|
1364
|
+
settings: {
|
|
1365
|
+
type: 'object',
|
|
1366
|
+
properties: {
|
|
1367
|
+
placeholder: {
|
|
1368
|
+
type: 'string',
|
|
1369
|
+
title: 'Composer hint',
|
|
1370
|
+
description: "Shown in the composer while it is empty; the agent's own when unsaid.",
|
|
1371
|
+
default: '',
|
|
1372
|
+
},
|
|
1373
|
+
defaultSurface: {
|
|
1374
|
+
type: 'string',
|
|
1375
|
+
title: 'Opens beside it',
|
|
1376
|
+
description: 'What opens beside the conversation: notebook, document, a page, or none.',
|
|
1377
|
+
default: 'notebook',
|
|
1378
|
+
},
|
|
1379
|
+
showSurfaceSelector: {
|
|
1380
|
+
type: 'boolean',
|
|
1381
|
+
title: 'Offers the switcher',
|
|
1382
|
+
description: 'The strip that switches what is open beside the conversation.',
|
|
1383
|
+
default: true,
|
|
1384
|
+
},
|
|
1385
|
+
hideHeader: {
|
|
1386
|
+
type: 'boolean',
|
|
1387
|
+
title: 'Hides its title bar',
|
|
1388
|
+
description: 'The conversation without its own title bar.',
|
|
1389
|
+
default: false,
|
|
1390
|
+
},
|
|
1391
|
+
headerButtons: {
|
|
1392
|
+
type: 'object',
|
|
1393
|
+
title: 'Title bar buttons',
|
|
1394
|
+
description: 'Whether the title bar offers a new chat and clearing this one.',
|
|
1395
|
+
properties: {
|
|
1396
|
+
newChat: {
|
|
1397
|
+
type: 'boolean',
|
|
1398
|
+
title: 'New chat',
|
|
1399
|
+
description: 'Start another conversation.',
|
|
1400
|
+
},
|
|
1401
|
+
clear: {
|
|
1402
|
+
type: 'boolean',
|
|
1403
|
+
title: 'Clear',
|
|
1404
|
+
description: 'Clear this conversation.',
|
|
1405
|
+
},
|
|
1406
|
+
},
|
|
1407
|
+
default: { newChat: false, clear: false },
|
|
1408
|
+
},
|
|
1409
|
+
hidePrompt: {
|
|
1410
|
+
type: 'boolean',
|
|
1411
|
+
title: 'Hides the composer',
|
|
1412
|
+
description: 'The conversation read without being written to.',
|
|
1413
|
+
default: false,
|
|
1414
|
+
},
|
|
1415
|
+
promptPlacement: {
|
|
1416
|
+
type: 'string',
|
|
1417
|
+
title: 'Composer place',
|
|
1418
|
+
description: 'Where the composer sits.',
|
|
1419
|
+
enum: ['top', 'bottom', 'bottom-chat', 'floating'],
|
|
1420
|
+
default: 'bottom',
|
|
1421
|
+
},
|
|
1422
|
+
autoFocusPrompt: {
|
|
1423
|
+
type: 'boolean',
|
|
1424
|
+
title: 'Composer takes the caret',
|
|
1425
|
+
description: 'The composer is ready to type in when the page opens.',
|
|
1426
|
+
default: true,
|
|
1427
|
+
},
|
|
1428
|
+
suggestionLabels: {
|
|
1429
|
+
type: 'boolean',
|
|
1430
|
+
title: 'Openers by the composer',
|
|
1431
|
+
description: 'The openers shown as labels by the composer, not only in its menu.',
|
|
1432
|
+
default: true,
|
|
1433
|
+
},
|
|
1434
|
+
fullScreenTopOffset: {
|
|
1435
|
+
type: ['number', 'string'],
|
|
1436
|
+
title: 'Room kept at the top',
|
|
1437
|
+
description: "What full screen leaves at the top for the page's own header.",
|
|
1438
|
+
default: 0,
|
|
1439
|
+
},
|
|
1440
|
+
},
|
|
1441
|
+
},
|
|
1442
|
+
renderers: [],
|
|
1443
|
+
catalog: '',
|
|
1444
|
+
components: [],
|
|
1445
|
+
};
|
|
1446
|
+
export const COMMANDS_UI_0_0_1 = {
|
|
1447
|
+
id: 'commands',
|
|
1448
|
+
version: '0.0.1',
|
|
1449
|
+
name: 'Command palette',
|
|
1450
|
+
description: 'Every command at hand, with Ctrl-K.',
|
|
1451
|
+
emoji: '⌘',
|
|
1452
|
+
octicon: 'command-palette',
|
|
1453
|
+
plugin: '@datalayer/loop-plugin-commands',
|
|
1454
|
+
folder: 'commands',
|
|
1455
|
+
contributions: {
|
|
1456
|
+
slots: ['loop.status'],
|
|
1457
|
+
points: [],
|
|
1458
|
+
commands: [],
|
|
1459
|
+
},
|
|
1460
|
+
contributionPoints: [],
|
|
1461
|
+
settings: {},
|
|
1462
|
+
renderers: [],
|
|
1463
|
+
catalog: '',
|
|
1464
|
+
components: [],
|
|
1465
|
+
};
|
|
1466
|
+
export const DOCUMENT_TOOLBAR_UI_0_0_1 = {
|
|
1467
|
+
id: 'document-toolbar',
|
|
1468
|
+
version: '0.0.1',
|
|
1469
|
+
name: 'Document toolbar',
|
|
1470
|
+
description: "Shows what the document's code blocks run on.",
|
|
1471
|
+
emoji: '🔵',
|
|
1472
|
+
octicon: 'circle',
|
|
1473
|
+
plugin: '@datalayer/loop-plugin-document-toolbar',
|
|
1474
|
+
folder: 'document-toolbar',
|
|
1475
|
+
contributions: {
|
|
1476
|
+
slots: [],
|
|
1477
|
+
points: ['loop.document.toolbar'],
|
|
1478
|
+
commands: [],
|
|
1479
|
+
},
|
|
1480
|
+
contributionPoints: ['loop.document.toolbar.item'],
|
|
1481
|
+
settings: {},
|
|
1482
|
+
renderers: [],
|
|
1483
|
+
catalog: '',
|
|
1484
|
+
components: [],
|
|
1485
|
+
};
|
|
1486
|
+
export const DOCUMENT_VIEW_UI_0_0_1 = {
|
|
1487
|
+
id: 'document-view',
|
|
1488
|
+
version: '0.0.1',
|
|
1489
|
+
name: 'Document button',
|
|
1490
|
+
description: 'The document beside the conversation, from under the composer.',
|
|
1491
|
+
emoji: '📄',
|
|
1492
|
+
octicon: 'file',
|
|
1493
|
+
plugin: '@datalayer/loop-plugin-document-view',
|
|
1494
|
+
folder: 'document-view',
|
|
1495
|
+
contributions: {
|
|
1496
|
+
slots: ['loop.promptAction'],
|
|
1497
|
+
points: [],
|
|
1498
|
+
commands: [],
|
|
1499
|
+
},
|
|
1500
|
+
contributionPoints: [],
|
|
1501
|
+
settings: {},
|
|
1502
|
+
renderers: [],
|
|
1503
|
+
catalog: '',
|
|
1504
|
+
components: [],
|
|
1505
|
+
};
|
|
1506
|
+
export const DOCUMENT_UI_0_0_1 = {
|
|
1507
|
+
id: 'document',
|
|
1508
|
+
version: '0.0.1',
|
|
1509
|
+
name: 'Document',
|
|
1510
|
+
description: 'A document beside the conversation, written with the agent.',
|
|
1511
|
+
emoji: '📄',
|
|
1512
|
+
octicon: 'file',
|
|
1513
|
+
plugin: '@datalayer/loop-plugin-document',
|
|
1514
|
+
folder: 'document',
|
|
1515
|
+
contributions: {
|
|
1516
|
+
slots: [],
|
|
1517
|
+
points: ['loop.chat.surface', 'loop.command'],
|
|
1518
|
+
commands: ['document'],
|
|
1519
|
+
},
|
|
1520
|
+
contributionPoints: ['loop.document.opening', 'loop.document.toolbar'],
|
|
1521
|
+
settings: {},
|
|
1522
|
+
renderers: [],
|
|
1523
|
+
catalog: '',
|
|
1524
|
+
components: [],
|
|
1525
|
+
};
|
|
1526
|
+
export const INPUT_PROMPT_UI_0_0_1 = {
|
|
1527
|
+
id: 'input-prompt',
|
|
1528
|
+
version: '0.0.1',
|
|
1529
|
+
name: 'Composer',
|
|
1530
|
+
description: 'Where you write to the agent, under or over the conversation.',
|
|
1531
|
+
emoji: '✏️',
|
|
1532
|
+
octicon: 'pencil',
|
|
1533
|
+
plugin: '@datalayer/loop-plugin-input-prompt',
|
|
1534
|
+
folder: 'input-prompt',
|
|
1535
|
+
contributions: {
|
|
1536
|
+
slots: [],
|
|
1537
|
+
points: ['loop.chat.composer'],
|
|
1538
|
+
commands: [],
|
|
1539
|
+
},
|
|
1540
|
+
contributionPoints: ['loop.prompt.panel'],
|
|
1541
|
+
settings: {},
|
|
1542
|
+
renderers: [],
|
|
1543
|
+
catalog: '',
|
|
1544
|
+
components: [],
|
|
1545
|
+
};
|
|
1546
|
+
export const MODELS_UI_0_0_1 = {
|
|
1547
|
+
id: 'models',
|
|
1548
|
+
version: '0.0.1',
|
|
1549
|
+
name: 'Models',
|
|
1550
|
+
description: 'Which model answers, and the models you may choose from.',
|
|
1551
|
+
emoji: '🧠',
|
|
1552
|
+
octicon: 'cpu',
|
|
1553
|
+
plugin: '@datalayer/loop-plugin-models',
|
|
1554
|
+
folder: 'models',
|
|
1555
|
+
contributions: {
|
|
1556
|
+
slots: [],
|
|
1557
|
+
points: ['loop.command'],
|
|
1558
|
+
commands: ['models'],
|
|
1559
|
+
},
|
|
1560
|
+
contributionPoints: [],
|
|
1561
|
+
settings: {},
|
|
1562
|
+
renderers: [],
|
|
1563
|
+
catalog: '',
|
|
1564
|
+
components: [],
|
|
1565
|
+
};
|
|
1566
|
+
export const NOTEBOOK_TOOLBAR_UI_0_0_1 = {
|
|
1567
|
+
id: 'notebook-toolbar',
|
|
1568
|
+
version: '0.0.1',
|
|
1569
|
+
name: 'Notebook toolbar',
|
|
1570
|
+
description: 'Shows what the notebook is running on.',
|
|
1571
|
+
emoji: '🟢',
|
|
1572
|
+
octicon: 'circle',
|
|
1573
|
+
plugin: '@datalayer/loop-plugin-notebook-toolbar',
|
|
1574
|
+
folder: 'notebook-toolbar',
|
|
1575
|
+
contributions: {
|
|
1576
|
+
slots: [],
|
|
1577
|
+
points: ['loop.notebook.toolbar'],
|
|
1578
|
+
commands: [],
|
|
1579
|
+
},
|
|
1580
|
+
contributionPoints: ['loop.notebook.toolbar.item'],
|
|
1581
|
+
settings: {},
|
|
1582
|
+
renderers: [],
|
|
1583
|
+
catalog: '',
|
|
1584
|
+
components: [],
|
|
1585
|
+
};
|
|
1586
|
+
export const NOTEBOOK_VIEW_UI_0_0_1 = {
|
|
1587
|
+
id: 'notebook-view',
|
|
1588
|
+
version: '0.0.1',
|
|
1589
|
+
name: 'Notebook button',
|
|
1590
|
+
description: 'The notebook beside the conversation, from under the composer.',
|
|
1591
|
+
emoji: '📓',
|
|
1592
|
+
octicon: 'rows',
|
|
1593
|
+
plugin: '@datalayer/loop-plugin-notebook-view',
|
|
1594
|
+
folder: 'notebook-view',
|
|
1595
|
+
contributions: {
|
|
1596
|
+
slots: ['loop.promptAction'],
|
|
1597
|
+
points: [],
|
|
1598
|
+
commands: [],
|
|
1599
|
+
},
|
|
1600
|
+
contributionPoints: [],
|
|
1601
|
+
settings: {},
|
|
1602
|
+
renderers: [],
|
|
1603
|
+
catalog: '',
|
|
1604
|
+
components: [],
|
|
1605
|
+
};
|
|
1606
|
+
export const NOTEBOOK_UI_0_0_1 = {
|
|
1607
|
+
id: 'notebook',
|
|
1608
|
+
version: '0.0.1',
|
|
1609
|
+
name: 'Notebook',
|
|
1610
|
+
description: 'A notebook beside the conversation, its code run as you go.',
|
|
1611
|
+
emoji: '📓',
|
|
1612
|
+
octicon: 'rows',
|
|
1613
|
+
plugin: '@datalayer/loop-plugin-notebook',
|
|
1614
|
+
folder: 'notebook',
|
|
1615
|
+
contributions: {
|
|
1616
|
+
slots: [],
|
|
1617
|
+
points: ['loop.chat.surface', 'loop.command'],
|
|
1618
|
+
commands: ['notebook'],
|
|
1619
|
+
},
|
|
1620
|
+
contributionPoints: ['loop.notebook.opening', 'loop.notebook.toolbar'],
|
|
1621
|
+
settings: {},
|
|
1622
|
+
renderers: [],
|
|
1623
|
+
catalog: '',
|
|
1624
|
+
components: [],
|
|
1625
|
+
};
|
|
1626
|
+
export const PAGE_LAYOUT_UI_0_0_1 = {
|
|
1627
|
+
id: 'page-layout',
|
|
1628
|
+
version: '0.0.1',
|
|
1629
|
+
name: 'Page layout',
|
|
1630
|
+
description: 'The work on a centred sheet like a document, the composer above it and the conversation in a panel beside it; or the conversation and the work side by side.',
|
|
1631
|
+
emoji: '📄',
|
|
1632
|
+
octicon: 'file',
|
|
1633
|
+
plugin: '@datalayer/loop-plugin-page-layout',
|
|
1634
|
+
folder: 'page-layout',
|
|
1635
|
+
contributions: {
|
|
1636
|
+
slots: ['loop.header'],
|
|
1637
|
+
points: ['loop.chat.layout', 'loop.prompt.panel'],
|
|
1638
|
+
commands: [],
|
|
1639
|
+
},
|
|
1640
|
+
contributionPoints: [],
|
|
1641
|
+
settings: {
|
|
1642
|
+
type: 'object',
|
|
1643
|
+
properties: {
|
|
1644
|
+
arrangement: {
|
|
1645
|
+
type: 'string',
|
|
1646
|
+
title: 'Arrangement',
|
|
1647
|
+
description: 'The work on a sheet with the conversation in a panel, or both side by side.',
|
|
1648
|
+
enum: ['page', 'split'],
|
|
1649
|
+
default: 'page',
|
|
1650
|
+
},
|
|
1651
|
+
turnPanel: {
|
|
1652
|
+
type: 'string',
|
|
1653
|
+
title: 'Current turn',
|
|
1654
|
+
description: 'Where the current turn hangs on the composer.',
|
|
1655
|
+
enum: ['below', 'above', 'none'],
|
|
1656
|
+
default: 'below',
|
|
1657
|
+
},
|
|
1658
|
+
turnPanelFooter: {
|
|
1659
|
+
type: 'string',
|
|
1660
|
+
title: 'Under the reply',
|
|
1661
|
+
description: 'What is drawn under the reply: everything, its actions, or nothing.',
|
|
1662
|
+
enum: ['full', 'actions', 'none'],
|
|
1663
|
+
default: 'full',
|
|
1664
|
+
},
|
|
1665
|
+
prompt: {
|
|
1666
|
+
type: 'string',
|
|
1667
|
+
title: 'Composer',
|
|
1668
|
+
description: 'Docked above the sheet, or floating over it.',
|
|
1669
|
+
enum: ['docked', 'floating'],
|
|
1670
|
+
default: 'docked',
|
|
1671
|
+
},
|
|
1672
|
+
promptAnchor: {
|
|
1673
|
+
type: 'string',
|
|
1674
|
+
title: 'Floating composer starts',
|
|
1675
|
+
description: 'The edge a floating composer starts at.',
|
|
1676
|
+
enum: ['top', 'bottom'],
|
|
1677
|
+
default: 'top',
|
|
1678
|
+
},
|
|
1679
|
+
pageSize: {
|
|
1680
|
+
type: 'object',
|
|
1681
|
+
title: 'Sheet',
|
|
1682
|
+
description: 'The sheet: free at its reading width when unsaid, or a paper (letter, a4) whose width it takes, with a width or a height of its own over either.',
|
|
1683
|
+
properties: {
|
|
1684
|
+
format: {
|
|
1685
|
+
type: 'string',
|
|
1686
|
+
title: 'Paper',
|
|
1687
|
+
description: 'The paper the sheet is.',
|
|
1688
|
+
enum: ['free', 'letter', 'a4'],
|
|
1689
|
+
},
|
|
1690
|
+
width: {
|
|
1691
|
+
type: 'number',
|
|
1692
|
+
title: 'Width',
|
|
1693
|
+
description: "The sheet's width in pixels; over a paper, it replaces the paper's.",
|
|
1694
|
+
},
|
|
1695
|
+
height: {
|
|
1696
|
+
type: 'number',
|
|
1697
|
+
title: 'Height',
|
|
1698
|
+
description: "The sheet's least height in pixels; what is past it grows the sheet.",
|
|
1699
|
+
},
|
|
1700
|
+
},
|
|
1701
|
+
},
|
|
1702
|
+
},
|
|
1703
|
+
},
|
|
1704
|
+
renderers: [],
|
|
1705
|
+
catalog: '',
|
|
1706
|
+
components: [],
|
|
1707
|
+
};
|
|
1708
|
+
export const PAP_SIGN_IN_UI_0_0_1 = {
|
|
1709
|
+
id: 'pap-sign-in',
|
|
1710
|
+
version: '0.0.1',
|
|
1711
|
+
name: 'Sign in at a company',
|
|
1712
|
+
description: 'Where your agent asks you to sign in at a company: its page, the code, and until when.',
|
|
1713
|
+
emoji: '🔑',
|
|
1714
|
+
octicon: 'sign-in',
|
|
1715
|
+
plugin: '@datalayer/loop-plugin-pap-sign-in',
|
|
1716
|
+
folder: 'pap-sign-in',
|
|
1717
|
+
contributions: {
|
|
1718
|
+
slots: ['loop.chatHeader'],
|
|
1719
|
+
points: ['reactor.ui.renderer', 'reactor.ui.toolBinding'],
|
|
1720
|
+
commands: [],
|
|
1721
|
+
},
|
|
1722
|
+
contributionPoints: [],
|
|
1723
|
+
settings: {},
|
|
1724
|
+
renderers: ['mcp-ui'],
|
|
1725
|
+
catalog: '',
|
|
1726
|
+
components: [],
|
|
1727
|
+
};
|
|
1728
|
+
export const PROMPT_UI_0_0_1 = {
|
|
1729
|
+
id: 'prompt',
|
|
1730
|
+
version: '0.0.1',
|
|
1731
|
+
name: 'Floating composer',
|
|
1732
|
+
description: 'The composer in a card you move over the page, and the commands that bring it back or start over.',
|
|
1733
|
+
emoji: '🪶',
|
|
1734
|
+
octicon: 'paper-airplane',
|
|
1735
|
+
plugin: '@datalayer/loop-plugin-prompt',
|
|
1736
|
+
folder: 'prompt',
|
|
1737
|
+
contributions: {
|
|
1738
|
+
slots: ['loop.promptAction'],
|
|
1739
|
+
points: ['loop.command'],
|
|
1740
|
+
commands: ['new', 'prompt'],
|
|
1741
|
+
},
|
|
1742
|
+
contributionPoints: [],
|
|
1743
|
+
settings: {},
|
|
1744
|
+
renderers: [],
|
|
1745
|
+
catalog: '',
|
|
1746
|
+
components: [],
|
|
1747
|
+
};
|
|
1748
|
+
export const SUBAGENT_ACTIVITY_UI_0_0_1 = {
|
|
1749
|
+
id: 'subagent-activity',
|
|
1750
|
+
version: '0.0.1',
|
|
1751
|
+
name: 'Delegated work',
|
|
1752
|
+
description: 'The face of an agent yours handed work to, pulsing while it works.',
|
|
1753
|
+
emoji: '👥',
|
|
1754
|
+
octicon: 'people',
|
|
1755
|
+
plugin: '@datalayer/loop-plugin-subagent-activity',
|
|
1756
|
+
folder: 'subagent-activity',
|
|
1757
|
+
contributions: {
|
|
1758
|
+
slots: ['loop.inpromptMenu'],
|
|
1759
|
+
points: [],
|
|
1760
|
+
commands: [],
|
|
1761
|
+
},
|
|
1762
|
+
contributionPoints: [],
|
|
1763
|
+
settings: {},
|
|
1764
|
+
renderers: [],
|
|
1765
|
+
catalog: '',
|
|
1766
|
+
components: [],
|
|
1767
|
+
};
|
|
1768
|
+
export const WINDOW_FRAME_UI_0_0_1 = {
|
|
1769
|
+
id: 'window-frame',
|
|
1770
|
+
version: '0.0.1',
|
|
1771
|
+
name: 'Window',
|
|
1772
|
+
description: 'Draws the editor as a window, with room in its title bar for controls and actions.',
|
|
1773
|
+
emoji: '🪟',
|
|
1774
|
+
octicon: 'browser',
|
|
1775
|
+
plugin: '@datalayer/loop-plugin-window-frame',
|
|
1776
|
+
folder: 'window-frame',
|
|
1777
|
+
contributions: {
|
|
1778
|
+
slots: ['loop.header', 'loop.window.controls'],
|
|
1779
|
+
points: [],
|
|
1780
|
+
commands: [],
|
|
1781
|
+
},
|
|
1782
|
+
contributionPoints: [],
|
|
1783
|
+
settings: {},
|
|
1784
|
+
renderers: [],
|
|
1075
1785
|
catalog: '',
|
|
1076
1786
|
components: [],
|
|
1077
1787
|
};
|
|
1078
1788
|
export const UI_CATALOGUE = {
|
|
1079
|
-
a2ui:
|
|
1080
|
-
'
|
|
1081
|
-
|
|
1789
|
+
'a2ui-surface': A2UI_SURFACE_UI_0_0_1,
|
|
1790
|
+
'a2ui-view': A2UI_VIEW_UI_0_0_1,
|
|
1791
|
+
agentspecs: AGENTSPECS_UI_0_0_1,
|
|
1792
|
+
'app-activity': APP_ACTIVITY_UI_0_0_1,
|
|
1793
|
+
'app-components': APP_COMPONENTS_UI_0_0_1,
|
|
1794
|
+
'app-computer': APP_COMPUTER_UI_0_0_1,
|
|
1795
|
+
'app-elements': APP_ELEMENTS_UI_0_0_1,
|
|
1796
|
+
'app-page': APP_PAGE_UI_0_0_1,
|
|
1797
|
+
'app-rules': APP_RULES_UI_0_0_1,
|
|
1798
|
+
'canvas-blocks': CANVAS_BLOCKS_UI_0_0_1,
|
|
1799
|
+
'canvas-parts': CANVAS_PARTS_UI_0_0_1,
|
|
1800
|
+
'chat-extras': CHAT_EXTRAS_UI_0_0_1,
|
|
1801
|
+
'chat-header': CHAT_HEADER_UI_0_0_1,
|
|
1802
|
+
'chat-view': CHAT_VIEW_UI_0_0_1,
|
|
1803
|
+
chat: CHAT_UI_0_0_1,
|
|
1804
|
+
commands: COMMANDS_UI_0_0_1,
|
|
1805
|
+
'document-toolbar': DOCUMENT_TOOLBAR_UI_0_0_1,
|
|
1806
|
+
'document-view': DOCUMENT_VIEW_UI_0_0_1,
|
|
1807
|
+
document: DOCUMENT_UI_0_0_1,
|
|
1808
|
+
'input-prompt': INPUT_PROMPT_UI_0_0_1,
|
|
1809
|
+
models: MODELS_UI_0_0_1,
|
|
1810
|
+
'notebook-toolbar': NOTEBOOK_TOOLBAR_UI_0_0_1,
|
|
1811
|
+
'notebook-view': NOTEBOOK_VIEW_UI_0_0_1,
|
|
1812
|
+
notebook: NOTEBOOK_UI_0_0_1,
|
|
1813
|
+
'page-layout': PAGE_LAYOUT_UI_0_0_1,
|
|
1814
|
+
'pap-sign-in': PAP_SIGN_IN_UI_0_0_1,
|
|
1815
|
+
prompt: PROMPT_UI_0_0_1,
|
|
1816
|
+
'subagent-activity': SUBAGENT_ACTIVITY_UI_0_0_1,
|
|
1817
|
+
'window-frame': WINDOW_FRAME_UI_0_0_1,
|
|
1082
1818
|
};
|
|
1083
|
-
/** The UI an agent
|
|
1819
|
+
/** The UI plugin an agent's or an application's `ui` names, or undefined. */
|
|
1084
1820
|
export function getUI(pluginId) {
|
|
1085
1821
|
return UI_CATALOGUE[pluginId];
|
|
1086
1822
|
}
|
|
1087
1823
|
export function listUI() {
|
|
1088
1824
|
return Object.values(UI_CATALOGUE);
|
|
1089
1825
|
}
|
|
1090
|
-
/** The visual components the
|
|
1091
|
-
export const COMPONENT_CATALOGUE = Object.fromEntries(Object.values(UI_CATALOGUE)
|
|
1092
|
-
.filter(plugin => plugin.enabled)
|
|
1093
|
-
.flatMap(plugin => plugin.components.map(component => [component.id, component])));
|
|
1826
|
+
/** The visual components the UI plugins render, by the name a surface gives them (LOOP C-13). */
|
|
1827
|
+
export const COMPONENT_CATALOGUE = Object.fromEntries(Object.values(UI_CATALOGUE).flatMap(plugin => plugin.components.map(component => [component.id, component])));
|
|
1094
1828
|
/** The component a layout names, or undefined. */
|
|
1095
1829
|
export function getComponent(name) {
|
|
1096
1830
|
return COMPONENT_CATALOGUE[name];
|