@datalayer/agent-runtimes 1.5.4 → 1.5.7
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/datalayer-app-main.js +58 -58
- package/lib/apps/apps/appspec.d.ts +1 -1
- package/lib/apps/apps/appspec.js +46 -0
- package/lib/apps/apps/sceneYaml.js +4 -0
- package/lib/examples/ScenesExample.js +2 -1
- package/lib/protocols/commerce.js +11 -3
- package/lib/protocols/ucp/index.d.ts +4 -0
- package/lib/protocols/ucp/index.js +31 -1
- package/lib/protocols/ucp/merchant.js +27 -2
- package/lib/specs/actions.js +28 -15
- package/lib/specs/apps.d.ts +7 -0
- package/lib/specs/apps.js +2046 -185
- package/lib/specs/appspecSchema.js +86 -1
- package/lib/specs/protocols.js +4 -4
- package/lib/specs/sceneSchema.js +185 -1
- package/lib/specs/scenes.d.ts +6 -0
- package/lib/specs/scenes.js +1034 -0
- package/lib/types/agentspecs.d.ts +29 -0
- package/lib/types/scenes.d.ts +52 -0
- package/package.json +1 -1
- package/scripts/codegen/generate_apps.py +2 -2
- package/scripts/codegen/generate_scenes.py +11 -4
package/lib/specs/scenes.js
CHANGED
|
@@ -11,6 +11,7 @@ export const CROP_MONITORING_SCENE_0_0_1 = {
|
|
|
11
11
|
tags: ['example', 'scene', 'earthdata', 'agriculture', 'a2a'],
|
|
12
12
|
icon: 'globe',
|
|
13
13
|
emoji: '🛰️',
|
|
14
|
+
kind: 'team',
|
|
14
15
|
team: 'crop-monitoring:0.0.1',
|
|
15
16
|
entry: 'crop-monitoring',
|
|
16
17
|
cast: [
|
|
@@ -276,6 +277,9 @@ export const CROP_MONITORING_SCENE_0_0_1 = {
|
|
|
276
277
|
'crop-monitoring': 'DATALAYER_DEMO_SCENE_CROP_MONITORING_CROP_MONITORING_A2A_URL',
|
|
277
278
|
},
|
|
278
279
|
},
|
|
280
|
+
actors: [],
|
|
281
|
+
lines: [],
|
|
282
|
+
live: '',
|
|
279
283
|
setup: ["The agent 'worker-crop-monitoring:0.0.1' is not enabled."],
|
|
280
284
|
played: {
|
|
281
285
|
at: '2026-10-09T17:40:33+00:00',
|
|
@@ -320,6 +324,7 @@ export const DISASTER_ASSESSMENT_SCENE_0_0_1 = {
|
|
|
320
324
|
tags: ['example', 'scene', 'earthdata', 'disaster', 'insurance', 'a2a'],
|
|
321
325
|
icon: 'alert',
|
|
322
326
|
emoji: '🚨',
|
|
327
|
+
kind: 'team',
|
|
323
328
|
team: 'disaster-assessment:0.0.1',
|
|
324
329
|
entry: 'event-response',
|
|
325
330
|
cast: [
|
|
@@ -693,6 +698,9 @@ export const DISASTER_ASSESSMENT_SCENE_0_0_1 = {
|
|
|
693
698
|
'change-detection': 'DATALAYER_DEMO_SCENE_DISASTER_ASSESSMENT_CHANGE_DETECTION_A2A_URL',
|
|
694
699
|
},
|
|
695
700
|
},
|
|
701
|
+
actors: [],
|
|
702
|
+
lines: [],
|
|
703
|
+
live: '',
|
|
696
704
|
setup: [
|
|
697
705
|
"The agent 'worker-event-response:0.0.1' is not enabled.",
|
|
698
706
|
"The agent 'worker-disaster-assessment:0.0.1' is not enabled.",
|
|
@@ -741,6 +749,7 @@ export const MONTH_END_CLOSE_SCENE_0_0_1 = {
|
|
|
741
749
|
tags: ['example', 'scene', 'odoo', 'finance', 'a2a'],
|
|
742
750
|
icon: 'calendar',
|
|
743
751
|
emoji: '📒',
|
|
752
|
+
kind: 'team',
|
|
744
753
|
team: 'month-end-close:0.0.1',
|
|
745
754
|
entry: 'month-end-close',
|
|
746
755
|
cast: [
|
|
@@ -1003,6 +1012,9 @@ export const MONTH_END_CLOSE_SCENE_0_0_1 = {
|
|
|
1003
1012
|
'month-end-close': 'DATALAYER_DEMO_SCENE_MONTH_END_CLOSE_MONTH_END_CLOSE_A2A_URL',
|
|
1004
1013
|
},
|
|
1005
1014
|
},
|
|
1015
|
+
actors: [],
|
|
1016
|
+
lines: [],
|
|
1017
|
+
live: '',
|
|
1006
1018
|
setup: [
|
|
1007
1019
|
"The agent 'worker-month-end-close:0.0.1' is not enabled.",
|
|
1008
1020
|
"The MCP server 'odoo-accounting:0.0.1' is not enabled.",
|
|
@@ -1041,6 +1053,850 @@ export const MONTH_END_CLOSE_SCENE_0_0_1 = {
|
|
|
1041
1053
|
runtime: '1.3.93',
|
|
1042
1054
|
},
|
|
1043
1055
|
};
|
|
1056
|
+
export const PACT_A_PERSONAL_AGENT_AT_A_BUSINESS_SCENE_0_0_1 = {
|
|
1057
|
+
schema: 'loop.scene/v1',
|
|
1058
|
+
id: 'pact-a-personal-agent-at-a-business',
|
|
1059
|
+
version: '0.0.1',
|
|
1060
|
+
name: 'A Personal Agent at a Business',
|
|
1061
|
+
description: 'Ada’s Travel Desk asks an airline about her flight, and she allows it to read her bookings, not to change them.',
|
|
1062
|
+
tags: ['stage', 'pact'],
|
|
1063
|
+
icon: 'people',
|
|
1064
|
+
emoji: '✈️',
|
|
1065
|
+
kind: 'scripted',
|
|
1066
|
+
team: '',
|
|
1067
|
+
entry: '',
|
|
1068
|
+
cast: [],
|
|
1069
|
+
setting: {
|
|
1070
|
+
systems: [],
|
|
1071
|
+
period: '',
|
|
1072
|
+
language: '',
|
|
1073
|
+
assumes: '',
|
|
1074
|
+
},
|
|
1075
|
+
script: [],
|
|
1076
|
+
stage: {
|
|
1077
|
+
positions: {},
|
|
1078
|
+
opensFirst: '',
|
|
1079
|
+
transcript: {
|
|
1080
|
+
tools: true,
|
|
1081
|
+
narration: true,
|
|
1082
|
+
},
|
|
1083
|
+
inspectors: [],
|
|
1084
|
+
restsAfter: '',
|
|
1085
|
+
pace: 'steady',
|
|
1086
|
+
},
|
|
1087
|
+
audience: {
|
|
1088
|
+
who: 'signed-in',
|
|
1089
|
+
ceilingPerAsk: 0.0,
|
|
1090
|
+
asksADay: 0,
|
|
1091
|
+
},
|
|
1092
|
+
rehearsal: {
|
|
1093
|
+
beats: [],
|
|
1094
|
+
within: '',
|
|
1095
|
+
verified: {
|
|
1096
|
+
live: [],
|
|
1097
|
+
recorded: [],
|
|
1098
|
+
unverified: [],
|
|
1099
|
+
},
|
|
1100
|
+
},
|
|
1101
|
+
deployment: {
|
|
1102
|
+
account: '',
|
|
1103
|
+
page: '',
|
|
1104
|
+
addresses: {},
|
|
1105
|
+
},
|
|
1106
|
+
actors: [
|
|
1107
|
+
{
|
|
1108
|
+
id: 'ada',
|
|
1109
|
+
name: 'Ada',
|
|
1110
|
+
face: '🧑',
|
|
1111
|
+
is: 'the person',
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
id: 'agent',
|
|
1115
|
+
name: 'Travel Desk',
|
|
1116
|
+
face: '🤖',
|
|
1117
|
+
is: 'an application on Datalayer, working for Ada',
|
|
1118
|
+
},
|
|
1119
|
+
{
|
|
1120
|
+
id: 'air',
|
|
1121
|
+
name: 'Example Air Support',
|
|
1122
|
+
face: '🛫',
|
|
1123
|
+
is: 'a business, at air.examples.datalayer.run',
|
|
1124
|
+
},
|
|
1125
|
+
],
|
|
1126
|
+
lines: [
|
|
1127
|
+
{
|
|
1128
|
+
from: 'ada',
|
|
1129
|
+
to: 'agent',
|
|
1130
|
+
says: '“When is my flight?”',
|
|
1131
|
+
how: '',
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
from: 'agent',
|
|
1135
|
+
to: '',
|
|
1136
|
+
says: 'Finds Example Air Support by its domain and checks who answers for it.',
|
|
1137
|
+
card: {
|
|
1138
|
+
kind: 'found',
|
|
1139
|
+
title: 'Example Air Support',
|
|
1140
|
+
rows: [
|
|
1141
|
+
['Its domain', 'air.examples.datalayer.run'],
|
|
1142
|
+
['Answered for it by', 'Example Provider'],
|
|
1143
|
+
['How a person signs in', 'With a code, on the airline’s page'],
|
|
1144
|
+
[
|
|
1145
|
+
'It may ask',
|
|
1146
|
+
'See your bookings and their status · Change the date of a booking',
|
|
1147
|
+
],
|
|
1148
|
+
],
|
|
1149
|
+
lines: [],
|
|
1150
|
+
},
|
|
1151
|
+
how: 'The application reads the card the business publishes for agents, at its own domain.',
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
from: 'agent',
|
|
1155
|
+
to: 'air',
|
|
1156
|
+
says: 'Asks the airline’s agent about Ada’s bookings, as Travel Desk.',
|
|
1157
|
+
how: 'Each request says which application asks, signed by Datalayer; nobody is signed in yet.',
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
from: 'air',
|
|
1161
|
+
to: 'agent',
|
|
1162
|
+
says: '“Happy to help. Please sign in so I can see your bookings.”',
|
|
1163
|
+
how: 'The business asks for a sign-in and names what it may ask for.',
|
|
1164
|
+
},
|
|
1165
|
+
{
|
|
1166
|
+
from: 'agent',
|
|
1167
|
+
to: 'ada',
|
|
1168
|
+
says: 'Asks Ada to sign in at Example Air, on the airline’s own page.',
|
|
1169
|
+
card: {
|
|
1170
|
+
kind: 'sign-in',
|
|
1171
|
+
title: 'Sign in at Example Air',
|
|
1172
|
+
rows: [],
|
|
1173
|
+
lines: [
|
|
1174
|
+
'Travel Desk asks for: See your bookings and their status; Change the date of a booking.',
|
|
1175
|
+
'You sign in on the airline’s page, and choose what it may do there.',
|
|
1176
|
+
'You can allow fewer permissions than it asks for.',
|
|
1177
|
+
],
|
|
1178
|
+
},
|
|
1179
|
+
how: '',
|
|
1180
|
+
turn: {
|
|
1181
|
+
yes: 'Sign in, and allow only “See your bookings”',
|
|
1182
|
+
no: '',
|
|
1183
|
+
declined: '',
|
|
1184
|
+
},
|
|
1185
|
+
},
|
|
1186
|
+
{
|
|
1187
|
+
from: 'ada',
|
|
1188
|
+
to: 'air',
|
|
1189
|
+
says: 'Signs in on the airline’s page and allows “See your bookings and their status” only.',
|
|
1190
|
+
how: 'The airline gives Travel Desk a permission of its own, for Ada and for this application only; Datalayer keeps it, out of the agent’s reach.',
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
from: 'air',
|
|
1194
|
+
to: 'agent',
|
|
1195
|
+
says: '“Your booking AB123 flies on 2026-11-02.”',
|
|
1196
|
+
how: 'The airline signs a receipt of what it did with the permission.',
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
from: 'agent',
|
|
1200
|
+
to: 'ada',
|
|
1201
|
+
says: '“Your flight, booking AB123, is on 2 November 2026.”',
|
|
1202
|
+
how: '',
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
from: 'agent',
|
|
1206
|
+
to: '',
|
|
1207
|
+
says: 'Keeps the airline’s receipt with its record, for Ada and for whoever built it.',
|
|
1208
|
+
card: {
|
|
1209
|
+
kind: 'record',
|
|
1210
|
+
title: 'Activity',
|
|
1211
|
+
rows: [
|
|
1212
|
+
['Signed in at', 'Example Air, for Ada'],
|
|
1213
|
+
['Allowed', 'See your bookings and their status'],
|
|
1214
|
+
['Receipt', 'Looked up booking AB123, signed by the airline'],
|
|
1215
|
+
],
|
|
1216
|
+
lines: [],
|
|
1217
|
+
},
|
|
1218
|
+
how: 'Ada sees the permission under In your name, and ends it there with Disconnect.',
|
|
1219
|
+
},
|
|
1220
|
+
],
|
|
1221
|
+
live: 'Working with a business over PACT is built in the Studio and its services; asking a business through Datalayer waits for them to be shipped.',
|
|
1222
|
+
setup: [],
|
|
1223
|
+
};
|
|
1224
|
+
export const PAP_A_PERSON_AND_A_COMPANY_SCENE_0_0_1 = {
|
|
1225
|
+
schema: 'loop.scene/v1',
|
|
1226
|
+
id: 'pap-a-person-and-a-company',
|
|
1227
|
+
version: '0.0.1',
|
|
1228
|
+
name: 'A Person and a Company',
|
|
1229
|
+
description: 'Ada’s agent asks a shop about her order, and she signs in at the shop itself.',
|
|
1230
|
+
tags: ['stage', 'pap', 'slice-1'],
|
|
1231
|
+
icon: 'people',
|
|
1232
|
+
emoji: '🧥',
|
|
1233
|
+
kind: 'scripted',
|
|
1234
|
+
team: '',
|
|
1235
|
+
entry: '',
|
|
1236
|
+
cast: [],
|
|
1237
|
+
setting: {
|
|
1238
|
+
systems: [],
|
|
1239
|
+
period: '',
|
|
1240
|
+
language: '',
|
|
1241
|
+
assumes: '',
|
|
1242
|
+
},
|
|
1243
|
+
script: [],
|
|
1244
|
+
stage: {
|
|
1245
|
+
positions: {},
|
|
1246
|
+
opensFirst: '',
|
|
1247
|
+
transcript: {
|
|
1248
|
+
tools: true,
|
|
1249
|
+
narration: true,
|
|
1250
|
+
},
|
|
1251
|
+
inspectors: [],
|
|
1252
|
+
restsAfter: '',
|
|
1253
|
+
pace: 'steady',
|
|
1254
|
+
},
|
|
1255
|
+
audience: {
|
|
1256
|
+
who: 'signed-in',
|
|
1257
|
+
ceilingPerAsk: 0.0,
|
|
1258
|
+
asksADay: 0,
|
|
1259
|
+
},
|
|
1260
|
+
rehearsal: {
|
|
1261
|
+
beats: [],
|
|
1262
|
+
within: '',
|
|
1263
|
+
verified: {
|
|
1264
|
+
live: [],
|
|
1265
|
+
recorded: [],
|
|
1266
|
+
unverified: [],
|
|
1267
|
+
},
|
|
1268
|
+
},
|
|
1269
|
+
deployment: {
|
|
1270
|
+
account: '',
|
|
1271
|
+
page: '',
|
|
1272
|
+
addresses: {},
|
|
1273
|
+
},
|
|
1274
|
+
actors: [
|
|
1275
|
+
{
|
|
1276
|
+
id: 'ada',
|
|
1277
|
+
name: 'Ada',
|
|
1278
|
+
face: '🧑',
|
|
1279
|
+
is: 'the person',
|
|
1280
|
+
},
|
|
1281
|
+
{
|
|
1282
|
+
id: 'agent',
|
|
1283
|
+
name: 'Her agent',
|
|
1284
|
+
face: '🤖',
|
|
1285
|
+
is: 'an application on Datalayer, working for Ada',
|
|
1286
|
+
},
|
|
1287
|
+
{
|
|
1288
|
+
id: 'manzanita',
|
|
1289
|
+
name: 'Manzanita Outfitters',
|
|
1290
|
+
face: '🧥',
|
|
1291
|
+
is: 'a company, at manzanita.example',
|
|
1292
|
+
},
|
|
1293
|
+
],
|
|
1294
|
+
lines: [
|
|
1295
|
+
{
|
|
1296
|
+
from: 'ada',
|
|
1297
|
+
to: 'agent',
|
|
1298
|
+
says: '“Has my Ridge Jacket from Manzanita arrived?”',
|
|
1299
|
+
how: '',
|
|
1300
|
+
},
|
|
1301
|
+
{
|
|
1302
|
+
from: 'agent',
|
|
1303
|
+
to: '',
|
|
1304
|
+
says: 'Finds Manzanita Outfitters by its domain and checks it is who it says.',
|
|
1305
|
+
card: {
|
|
1306
|
+
kind: 'found',
|
|
1307
|
+
title: 'Manzanita Outfitters',
|
|
1308
|
+
rows: [
|
|
1309
|
+
['Its domain', 'manzanita.example'],
|
|
1310
|
+
['Signs its sign-ins as', 'manzanita.example'],
|
|
1311
|
+
['How a person signs in', 'With a code, or in a protected form'],
|
|
1312
|
+
['It offers', 'See your orders · Exchange and return items'],
|
|
1313
|
+
],
|
|
1314
|
+
lines: [],
|
|
1315
|
+
},
|
|
1316
|
+
how: 'The agent reads the page every company publishes for personal agents and checks that the domain and who signs its sign-ins belong together.',
|
|
1317
|
+
},
|
|
1318
|
+
{
|
|
1319
|
+
from: 'agent',
|
|
1320
|
+
to: 'manzanita',
|
|
1321
|
+
says: 'Asks, before anybody signed in: “Where is Ada’s Ridge Jacket order?”',
|
|
1322
|
+
how: 'A conversation starts with the company’s own agent; nobody is signed in yet, so it answers only what anybody may ask.',
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
from: 'manzanita',
|
|
1326
|
+
to: 'agent',
|
|
1327
|
+
says: '“I can look that up once you sign in to your Manzanita account.”',
|
|
1328
|
+
how: 'The company asks for a sign-in and names what it needs: See your orders.',
|
|
1329
|
+
},
|
|
1330
|
+
{
|
|
1331
|
+
from: 'agent',
|
|
1332
|
+
to: 'ada',
|
|
1333
|
+
says: 'Asks Ada to sign in at Manzanita, on Manzanita’s own page.',
|
|
1334
|
+
card: {
|
|
1335
|
+
kind: 'sign-in',
|
|
1336
|
+
title: 'Sign in at Manzanita Outfitters',
|
|
1337
|
+
rows: [],
|
|
1338
|
+
lines: [
|
|
1339
|
+
'Your agent asks to see your orders.',
|
|
1340
|
+
'You sign in on manzanita.example: your agent never sees your password.',
|
|
1341
|
+
'You can keep fewer permissions than it asks for.',
|
|
1342
|
+
],
|
|
1343
|
+
},
|
|
1344
|
+
how: '',
|
|
1345
|
+
turn: {
|
|
1346
|
+
yes: 'Sign in at Manzanita',
|
|
1347
|
+
no: '',
|
|
1348
|
+
declined: '',
|
|
1349
|
+
},
|
|
1350
|
+
},
|
|
1351
|
+
{
|
|
1352
|
+
from: 'ada',
|
|
1353
|
+
to: 'manzanita',
|
|
1354
|
+
says: 'Signs in on Manzanita’s page and allows “See your orders”.',
|
|
1355
|
+
how: 'The company gives the agent a sign-in of its own, for Ada and for this agent only; Datalayer keeps it, out of the agent’s reach.',
|
|
1356
|
+
},
|
|
1357
|
+
{
|
|
1358
|
+
from: 'manzanita',
|
|
1359
|
+
to: 'agent',
|
|
1360
|
+
says: '“Your order ord_7Hk2: Ridge Jacket, size M, delivered.”',
|
|
1361
|
+
how: '',
|
|
1362
|
+
},
|
|
1363
|
+
{
|
|
1364
|
+
from: 'agent',
|
|
1365
|
+
to: 'ada',
|
|
1366
|
+
says: '“Yes: your Ridge Jacket, size M, was delivered.”',
|
|
1367
|
+
how: '',
|
|
1368
|
+
},
|
|
1369
|
+
{
|
|
1370
|
+
from: 'agent',
|
|
1371
|
+
to: '',
|
|
1372
|
+
says: 'Keeps a record of what it did, for Ada and for whoever built it.',
|
|
1373
|
+
card: {
|
|
1374
|
+
kind: 'record',
|
|
1375
|
+
title: 'Activity',
|
|
1376
|
+
rows: [
|
|
1377
|
+
['Signed in at', 'Manzanita Outfitters, for Ada'],
|
|
1378
|
+
['Allowed', 'See your orders'],
|
|
1379
|
+
['Read', 'Order ord_7Hk2'],
|
|
1380
|
+
],
|
|
1381
|
+
lines: [],
|
|
1382
|
+
},
|
|
1383
|
+
how: 'Ada sees it under In your name, and ends it there with Disconnect.',
|
|
1384
|
+
},
|
|
1385
|
+
],
|
|
1386
|
+
live: 'Connecting an application to a company is built in the Studio (its Connections card); signing in at a company through Datalayer waits for the services to be shipped.',
|
|
1387
|
+
setup: [],
|
|
1388
|
+
};
|
|
1389
|
+
export const PAP_APPROVE_ONCE_SCENE_0_0_1 = {
|
|
1390
|
+
schema: 'loop.scene/v1',
|
|
1391
|
+
id: 'pap-approve-once',
|
|
1392
|
+
version: '0.0.1',
|
|
1393
|
+
name: 'A Change, Approved Once',
|
|
1394
|
+
description: 'The shop proposes an exchange; Ada approves its exact terms, and it is done once.',
|
|
1395
|
+
tags: ['stage', 'pap', 'slice-2'],
|
|
1396
|
+
icon: 'people',
|
|
1397
|
+
emoji: '🔁',
|
|
1398
|
+
kind: 'scripted',
|
|
1399
|
+
team: '',
|
|
1400
|
+
entry: '',
|
|
1401
|
+
cast: [],
|
|
1402
|
+
setting: {
|
|
1403
|
+
systems: [],
|
|
1404
|
+
period: '',
|
|
1405
|
+
language: '',
|
|
1406
|
+
assumes: '',
|
|
1407
|
+
},
|
|
1408
|
+
script: [],
|
|
1409
|
+
stage: {
|
|
1410
|
+
positions: {},
|
|
1411
|
+
opensFirst: '',
|
|
1412
|
+
transcript: {
|
|
1413
|
+
tools: true,
|
|
1414
|
+
narration: true,
|
|
1415
|
+
},
|
|
1416
|
+
inspectors: [],
|
|
1417
|
+
restsAfter: '',
|
|
1418
|
+
pace: 'steady',
|
|
1419
|
+
},
|
|
1420
|
+
audience: {
|
|
1421
|
+
who: 'signed-in',
|
|
1422
|
+
ceilingPerAsk: 0.0,
|
|
1423
|
+
asksADay: 0,
|
|
1424
|
+
},
|
|
1425
|
+
rehearsal: {
|
|
1426
|
+
beats: [],
|
|
1427
|
+
within: '',
|
|
1428
|
+
verified: {
|
|
1429
|
+
live: [],
|
|
1430
|
+
recorded: [],
|
|
1431
|
+
unverified: [],
|
|
1432
|
+
},
|
|
1433
|
+
},
|
|
1434
|
+
deployment: {
|
|
1435
|
+
account: '',
|
|
1436
|
+
page: '',
|
|
1437
|
+
addresses: {},
|
|
1438
|
+
},
|
|
1439
|
+
actors: [
|
|
1440
|
+
{
|
|
1441
|
+
id: 'ada',
|
|
1442
|
+
name: 'Ada',
|
|
1443
|
+
face: '🧑',
|
|
1444
|
+
is: 'the person',
|
|
1445
|
+
},
|
|
1446
|
+
{
|
|
1447
|
+
id: 'agent',
|
|
1448
|
+
name: 'Her agent',
|
|
1449
|
+
face: '🤖',
|
|
1450
|
+
is: 'an application on Datalayer, working for Ada',
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
id: 'manzanita',
|
|
1454
|
+
name: 'Manzanita Outfitters',
|
|
1455
|
+
face: '🧥',
|
|
1456
|
+
is: 'a company, at manzanita.example',
|
|
1457
|
+
},
|
|
1458
|
+
],
|
|
1459
|
+
lines: [
|
|
1460
|
+
{
|
|
1461
|
+
from: 'ada',
|
|
1462
|
+
to: 'agent',
|
|
1463
|
+
says: '“It is not warm enough: exchange it for the insulated one.”',
|
|
1464
|
+
how: '',
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
from: 'agent',
|
|
1468
|
+
to: 'manzanita',
|
|
1469
|
+
says: 'Asks for the exchange, signed in as Ada.',
|
|
1470
|
+
how: '',
|
|
1471
|
+
},
|
|
1472
|
+
{
|
|
1473
|
+
from: 'manzanita',
|
|
1474
|
+
to: 'agent',
|
|
1475
|
+
says: '“The insulated Ridge Jacket is in stock. Here is the exchange.”',
|
|
1476
|
+
how: 'The company does not do it yet: it proposes it, with its exact terms and a version.',
|
|
1477
|
+
},
|
|
1478
|
+
{
|
|
1479
|
+
from: 'agent',
|
|
1480
|
+
to: 'ada',
|
|
1481
|
+
says: 'Its rule says Ask me first: it waits for Ada.',
|
|
1482
|
+
card: {
|
|
1483
|
+
kind: 'approval',
|
|
1484
|
+
title: 'Manzanita Outfitters asks you to confirm',
|
|
1485
|
+
rows: [
|
|
1486
|
+
['Order', 'ord_7Hk2'],
|
|
1487
|
+
['Price difference', 'USD 70.00'],
|
|
1488
|
+
['Version', '1'],
|
|
1489
|
+
],
|
|
1490
|
+
lines: [
|
|
1491
|
+
'Exchange the Ridge Jacket (M) from order ord_7Hk2 for the insulated Ridge Jacket (M), USD 70.00 more.',
|
|
1492
|
+
],
|
|
1493
|
+
},
|
|
1494
|
+
how: 'The summary is the company’s own sentence, never the model’s; approving version 1 never approves a version 2.',
|
|
1495
|
+
turn: {
|
|
1496
|
+
yes: 'Approve',
|
|
1497
|
+
no: 'Decline',
|
|
1498
|
+
declined: 'Ada declined: her agent tells Manzanita no, and nothing is exchanged.',
|
|
1499
|
+
},
|
|
1500
|
+
},
|
|
1501
|
+
{
|
|
1502
|
+
from: 'agent',
|
|
1503
|
+
to: 'manzanita',
|
|
1504
|
+
says: 'Confirms version 1, exactly as Ada approved it.',
|
|
1505
|
+
how: 'Datalayer writes down that it confirms before it does: asked again, it reads the outcome back instead of sending it twice.',
|
|
1506
|
+
},
|
|
1507
|
+
{
|
|
1508
|
+
from: 'manzanita',
|
|
1509
|
+
to: 'agent',
|
|
1510
|
+
says: '“Exchanged the Ridge Jacket (M) for the insulated Ridge Jacket (M). USD 70.00 charged to the card ending 4242; a return label was emailed.”',
|
|
1511
|
+
how: '',
|
|
1512
|
+
},
|
|
1513
|
+
{
|
|
1514
|
+
from: 'agent',
|
|
1515
|
+
to: 'ada',
|
|
1516
|
+
says: 'Tells Ada what the company says it did, in its words.',
|
|
1517
|
+
card: {
|
|
1518
|
+
kind: 'done',
|
|
1519
|
+
title: 'Done, once',
|
|
1520
|
+
rows: [],
|
|
1521
|
+
lines: [
|
|
1522
|
+
'Exchanged the Ridge Jacket (M) for the insulated Ridge Jacket (M). USD 70.00 charged to the card ending 4242; a return label was emailed.',
|
|
1523
|
+
],
|
|
1524
|
+
},
|
|
1525
|
+
how: '',
|
|
1526
|
+
},
|
|
1527
|
+
],
|
|
1528
|
+
live: 'The approval card on Waiting for you is built in the Studio; a company’s exchange approved through Datalayer waits for the services to be shipped.',
|
|
1529
|
+
setup: [],
|
|
1530
|
+
};
|
|
1531
|
+
export const PAP_TWO_COMPANIES_SCENE_0_0_1 = {
|
|
1532
|
+
schema: 'loop.scene/v1',
|
|
1533
|
+
id: 'pap-two-companies',
|
|
1534
|
+
version: '0.0.1',
|
|
1535
|
+
name: 'Two Companies Together',
|
|
1536
|
+
description: 'An accounting firm pays a bill at Ada’s bank, and every payment is Ada’s approval.',
|
|
1537
|
+
tags: ['stage', 'pap', 'slice-4'],
|
|
1538
|
+
icon: 'people',
|
|
1539
|
+
emoji: '🏦',
|
|
1540
|
+
kind: 'scripted',
|
|
1541
|
+
team: '',
|
|
1542
|
+
entry: '',
|
|
1543
|
+
cast: [],
|
|
1544
|
+
setting: {
|
|
1545
|
+
systems: [],
|
|
1546
|
+
period: '',
|
|
1547
|
+
language: '',
|
|
1548
|
+
assumes: '',
|
|
1549
|
+
},
|
|
1550
|
+
script: [],
|
|
1551
|
+
stage: {
|
|
1552
|
+
positions: {},
|
|
1553
|
+
opensFirst: '',
|
|
1554
|
+
transcript: {
|
|
1555
|
+
tools: true,
|
|
1556
|
+
narration: true,
|
|
1557
|
+
},
|
|
1558
|
+
inspectors: [],
|
|
1559
|
+
restsAfter: '',
|
|
1560
|
+
pace: 'steady',
|
|
1561
|
+
},
|
|
1562
|
+
audience: {
|
|
1563
|
+
who: 'signed-in',
|
|
1564
|
+
ceilingPerAsk: 0.0,
|
|
1565
|
+
asksADay: 0,
|
|
1566
|
+
},
|
|
1567
|
+
rehearsal: {
|
|
1568
|
+
beats: [],
|
|
1569
|
+
within: '',
|
|
1570
|
+
verified: {
|
|
1571
|
+
live: [],
|
|
1572
|
+
recorded: [],
|
|
1573
|
+
unverified: [],
|
|
1574
|
+
},
|
|
1575
|
+
},
|
|
1576
|
+
deployment: {
|
|
1577
|
+
account: '',
|
|
1578
|
+
page: '',
|
|
1579
|
+
addresses: {},
|
|
1580
|
+
},
|
|
1581
|
+
actors: [
|
|
1582
|
+
{
|
|
1583
|
+
id: 'ada',
|
|
1584
|
+
name: 'Ada',
|
|
1585
|
+
face: '🧑',
|
|
1586
|
+
is: 'the person',
|
|
1587
|
+
},
|
|
1588
|
+
{
|
|
1589
|
+
id: 'atlas',
|
|
1590
|
+
name: 'Atlas',
|
|
1591
|
+
face: '🤖',
|
|
1592
|
+
is: 'Ada’s agent',
|
|
1593
|
+
},
|
|
1594
|
+
{
|
|
1595
|
+
id: 'ledgerly',
|
|
1596
|
+
name: 'Ledgerly',
|
|
1597
|
+
face: '📒',
|
|
1598
|
+
is: 'an accounting firm: a company to Ada, an agent at her bank',
|
|
1599
|
+
},
|
|
1600
|
+
{
|
|
1601
|
+
id: 'northwind',
|
|
1602
|
+
name: 'Northwind Bank',
|
|
1603
|
+
face: '🏦',
|
|
1604
|
+
is: 'Ada’s bank',
|
|
1605
|
+
},
|
|
1606
|
+
],
|
|
1607
|
+
lines: [
|
|
1608
|
+
{
|
|
1609
|
+
from: 'ada',
|
|
1610
|
+
to: 'atlas',
|
|
1611
|
+
says: '“Ask Ledgerly to pay invoice INV-0042.”',
|
|
1612
|
+
how: '',
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
from: 'atlas',
|
|
1616
|
+
to: 'ledgerly',
|
|
1617
|
+
says: 'Asks Ledgerly, signed in as Ada.',
|
|
1618
|
+
how: 'To Atlas, Ledgerly is a company like any other.',
|
|
1619
|
+
},
|
|
1620
|
+
{
|
|
1621
|
+
from: 'ledgerly',
|
|
1622
|
+
to: 'ada',
|
|
1623
|
+
says: 'Needs Ada’s Northwind account first: Ada approves Ledgerly on Northwind’s own page.',
|
|
1624
|
+
card: {
|
|
1625
|
+
kind: 'sign-in',
|
|
1626
|
+
title: 'Let Ledgerly connect to your Northwind account',
|
|
1627
|
+
rows: [],
|
|
1628
|
+
lines: [
|
|
1629
|
+
'On northwind.example, with a code Ledgerly shows you: Ledgerly never sees your bank password.',
|
|
1630
|
+
],
|
|
1631
|
+
},
|
|
1632
|
+
how: 'To Northwind, Ledgerly is a personal agent acting for Ada, with an identity of its own.',
|
|
1633
|
+
turn: {
|
|
1634
|
+
yes: 'Approve at Northwind',
|
|
1635
|
+
no: '',
|
|
1636
|
+
declined: '',
|
|
1637
|
+
},
|
|
1638
|
+
},
|
|
1639
|
+
{
|
|
1640
|
+
from: 'northwind',
|
|
1641
|
+
to: 'ledgerly',
|
|
1642
|
+
says: '“Ready to pay INV-0042.”',
|
|
1643
|
+
how: 'The bank proposes the payment; it does not make it yet.',
|
|
1644
|
+
},
|
|
1645
|
+
{
|
|
1646
|
+
from: 'ledgerly',
|
|
1647
|
+
to: 'ada',
|
|
1648
|
+
says: 'Passes the bank’s proposal on, quoting it as written.',
|
|
1649
|
+
card: {
|
|
1650
|
+
kind: 'approval',
|
|
1651
|
+
title: 'Ledgerly asks you to confirm',
|
|
1652
|
+
rows: [
|
|
1653
|
+
['Amount', 'EUR 1250.00'],
|
|
1654
|
+
['To', 'Acme GmbH'],
|
|
1655
|
+
['Invoice', 'INV-0042'],
|
|
1656
|
+
],
|
|
1657
|
+
lines: [
|
|
1658
|
+
'At Northwind Bank: Pay EUR 1250.00 to Acme GmbH for INV-0042 from the current account DE89 3704 0044 0532 0130 00, today. Payments cannot be recalled once sent.',
|
|
1659
|
+
],
|
|
1660
|
+
},
|
|
1661
|
+
how: '',
|
|
1662
|
+
turn: {
|
|
1663
|
+
yes: 'Approve',
|
|
1664
|
+
no: 'Decline',
|
|
1665
|
+
declined: 'Ada declined: Ledgerly tells the bank no, and nothing is paid.',
|
|
1666
|
+
},
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
from: 'ledgerly',
|
|
1670
|
+
to: 'northwind',
|
|
1671
|
+
says: 'Confirms at the bank the exact version Ada approved, as approved by Ada.',
|
|
1672
|
+
how: '',
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
from: 'northwind',
|
|
1676
|
+
to: 'ledgerly',
|
|
1677
|
+
says: '“Sent EUR 1250.00 to Acme GmbH for INV-0042 from DE89 3704 0044 0532 0130 00. Bank reference NW-0001.”',
|
|
1678
|
+
how: '',
|
|
1679
|
+
},
|
|
1680
|
+
{
|
|
1681
|
+
from: 'ada',
|
|
1682
|
+
to: 'atlas',
|
|
1683
|
+
says: '“Allow Ledgerly to pay Acme without asking, within limits.”',
|
|
1684
|
+
how: '',
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
from: 'ledgerly',
|
|
1688
|
+
to: 'ada',
|
|
1689
|
+
says: 'Even a permission given in advance is something Ada approves.',
|
|
1690
|
+
card: {
|
|
1691
|
+
kind: 'approval',
|
|
1692
|
+
title: 'Ledgerly asks you to confirm',
|
|
1693
|
+
rows: [
|
|
1694
|
+
['Up to', 'EUR 2000.00 each'],
|
|
1695
|
+
['At most', '5 payments'],
|
|
1696
|
+
['For', '30 days'],
|
|
1697
|
+
],
|
|
1698
|
+
lines: [
|
|
1699
|
+
'Let Ledgerly pay Acme GmbH from your Northwind account without asking, up to EUR 2000.00 each, at most 5 payments, for 30 days.',
|
|
1700
|
+
],
|
|
1701
|
+
},
|
|
1702
|
+
how: '',
|
|
1703
|
+
turn: {
|
|
1704
|
+
yes: 'Approve',
|
|
1705
|
+
no: 'Decline',
|
|
1706
|
+
declined: 'Ada declined: Ledgerly asks her again for every payment.',
|
|
1707
|
+
},
|
|
1708
|
+
},
|
|
1709
|
+
{
|
|
1710
|
+
from: 'ledgerly',
|
|
1711
|
+
to: 'ada',
|
|
1712
|
+
says: 'INV-0043, EUR 980.00, is within the limits: Ledgerly pays it and tells Ada what was done.',
|
|
1713
|
+
how: 'Approved in advance: the bank is told it was, never that Ada approved this one.',
|
|
1714
|
+
},
|
|
1715
|
+
{
|
|
1716
|
+
from: 'ledgerly',
|
|
1717
|
+
to: 'ada',
|
|
1718
|
+
says: 'INV-0044, EUR 3400.00, is beyond them: Ledgerly asks Ada again.',
|
|
1719
|
+
card: {
|
|
1720
|
+
kind: 'done',
|
|
1721
|
+
title: 'Within limits, done; beyond them, asked',
|
|
1722
|
+
rows: [],
|
|
1723
|
+
lines: [
|
|
1724
|
+
'INV-0043 paid under your permission (1 of 5 used).',
|
|
1725
|
+
'INV-0044 waits for your approval.',
|
|
1726
|
+
],
|
|
1727
|
+
},
|
|
1728
|
+
how: '',
|
|
1729
|
+
},
|
|
1730
|
+
],
|
|
1731
|
+
live: 'Two companies working together is the open-source SDK’s demonstration; on Datalayer it waits for both roles to be shipped.',
|
|
1732
|
+
setup: [],
|
|
1733
|
+
};
|
|
1734
|
+
export const PAP_YOUR_APPLICATION_A_COMPANY_SCENE_0_0_1 = {
|
|
1735
|
+
schema: 'loop.scene/v1',
|
|
1736
|
+
id: 'pap-your-application-a-company',
|
|
1737
|
+
version: '0.0.1',
|
|
1738
|
+
name: 'Your Application, a Company',
|
|
1739
|
+
description: 'An application built in the Studio answers people’s own agents as a company does.',
|
|
1740
|
+
tags: ['stage', 'pap', 'slice-3'],
|
|
1741
|
+
icon: 'people',
|
|
1742
|
+
emoji: '🏪',
|
|
1743
|
+
kind: 'scripted',
|
|
1744
|
+
team: '',
|
|
1745
|
+
entry: '',
|
|
1746
|
+
cast: [],
|
|
1747
|
+
setting: {
|
|
1748
|
+
systems: [],
|
|
1749
|
+
period: '',
|
|
1750
|
+
language: '',
|
|
1751
|
+
assumes: '',
|
|
1752
|
+
},
|
|
1753
|
+
script: [],
|
|
1754
|
+
stage: {
|
|
1755
|
+
positions: {},
|
|
1756
|
+
opensFirst: '',
|
|
1757
|
+
transcript: {
|
|
1758
|
+
tools: true,
|
|
1759
|
+
narration: true,
|
|
1760
|
+
},
|
|
1761
|
+
inspectors: [],
|
|
1762
|
+
restsAfter: '',
|
|
1763
|
+
pace: 'steady',
|
|
1764
|
+
},
|
|
1765
|
+
audience: {
|
|
1766
|
+
who: 'signed-in',
|
|
1767
|
+
ceilingPerAsk: 0.0,
|
|
1768
|
+
asksADay: 0,
|
|
1769
|
+
},
|
|
1770
|
+
rehearsal: {
|
|
1771
|
+
beats: [],
|
|
1772
|
+
within: '',
|
|
1773
|
+
verified: {
|
|
1774
|
+
live: [],
|
|
1775
|
+
recorded: [],
|
|
1776
|
+
unverified: [],
|
|
1777
|
+
},
|
|
1778
|
+
},
|
|
1779
|
+
deployment: {
|
|
1780
|
+
account: '',
|
|
1781
|
+
page: '',
|
|
1782
|
+
addresses: {},
|
|
1783
|
+
},
|
|
1784
|
+
actors: [
|
|
1785
|
+
{
|
|
1786
|
+
id: 'maker',
|
|
1787
|
+
name: 'Maker',
|
|
1788
|
+
face: '🛠️',
|
|
1789
|
+
is: 'who builds the application',
|
|
1790
|
+
},
|
|
1791
|
+
{
|
|
1792
|
+
id: 'app',
|
|
1793
|
+
name: 'Exchange desk',
|
|
1794
|
+
face: '🏪',
|
|
1795
|
+
is: 'an application on Datalayer',
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
id: 'visitor-agent',
|
|
1799
|
+
name: 'Sam’s agent',
|
|
1800
|
+
face: '🤖',
|
|
1801
|
+
is: 'somebody’s personal agent',
|
|
1802
|
+
},
|
|
1803
|
+
{
|
|
1804
|
+
id: 'sam',
|
|
1805
|
+
name: 'Sam',
|
|
1806
|
+
face: '🧑',
|
|
1807
|
+
is: 'a customer',
|
|
1808
|
+
},
|
|
1809
|
+
],
|
|
1810
|
+
lines: [
|
|
1811
|
+
{
|
|
1812
|
+
from: 'maker',
|
|
1813
|
+
to: 'app',
|
|
1814
|
+
says: 'Turns on Lets personal agents work with it, offers orders:read and orders:write, and names what it does once a person confirms: orders.exchange.',
|
|
1815
|
+
card: {
|
|
1816
|
+
kind: 'found',
|
|
1817
|
+
title: 'What becomes public at Ship',
|
|
1818
|
+
rows: [],
|
|
1819
|
+
lines: [
|
|
1820
|
+
'Its own domain, exchange-desk.apps.datalayer.ai, with the page personal agents read first.',
|
|
1821
|
+
'How personal agents reach it: its agent, its API and its server for agents.',
|
|
1822
|
+
'What changes something is proposed to the person and done only with their approval.',
|
|
1823
|
+
],
|
|
1824
|
+
},
|
|
1825
|
+
how: '',
|
|
1826
|
+
},
|
|
1827
|
+
{
|
|
1828
|
+
from: 'visitor-agent',
|
|
1829
|
+
to: 'app',
|
|
1830
|
+
says: 'Finds Exchange desk by its domain and asks, before Sam signed in: “Do you exchange jackets?”',
|
|
1831
|
+
how: 'The application answers what anybody may ask, as its Maker allowed.',
|
|
1832
|
+
},
|
|
1833
|
+
{
|
|
1834
|
+
from: 'app',
|
|
1835
|
+
to: 'visitor-agent',
|
|
1836
|
+
says: '“Yes. Sign in to see your orders.”',
|
|
1837
|
+
how: '',
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
from: 'visitor-agent',
|
|
1841
|
+
to: 'sam',
|
|
1842
|
+
says: 'Asks Sam to sign in at Exchange desk, with his Datalayer account.',
|
|
1843
|
+
card: {
|
|
1844
|
+
kind: 'sign-in',
|
|
1845
|
+
title: 'Sign in at Exchange desk',
|
|
1846
|
+
rows: [],
|
|
1847
|
+
lines: [
|
|
1848
|
+
'With your Datalayer account, on Datalayer’s page: the agent never sees your password.',
|
|
1849
|
+
],
|
|
1850
|
+
},
|
|
1851
|
+
how: '',
|
|
1852
|
+
turn: {
|
|
1853
|
+
yes: 'Sign in with Datalayer',
|
|
1854
|
+
no: '',
|
|
1855
|
+
declined: '',
|
|
1856
|
+
},
|
|
1857
|
+
},
|
|
1858
|
+
{
|
|
1859
|
+
from: 'app',
|
|
1860
|
+
to: 'visitor-agent',
|
|
1861
|
+
says: 'Proposes the exchange in the Maker’s own words: “Exchange order ord_7Hk2 for size L.”',
|
|
1862
|
+
card: {
|
|
1863
|
+
kind: 'approval',
|
|
1864
|
+
title: 'Exchange desk asks you to confirm',
|
|
1865
|
+
rows: [
|
|
1866
|
+
['Order', 'ord_7Hk2'],
|
|
1867
|
+
['Size', 'L'],
|
|
1868
|
+
['Version', '1'],
|
|
1869
|
+
],
|
|
1870
|
+
lines: ['Exchange order ord_7Hk2 for size L.'],
|
|
1871
|
+
},
|
|
1872
|
+
how: 'The model gives the terms; the sentence is the Maker’s, written once in the Studio.',
|
|
1873
|
+
turn: {
|
|
1874
|
+
yes: 'Approve',
|
|
1875
|
+
no: 'Decline',
|
|
1876
|
+
declined: 'Sam declined: Exchange desk does nothing.',
|
|
1877
|
+
},
|
|
1878
|
+
},
|
|
1879
|
+
{
|
|
1880
|
+
from: 'app',
|
|
1881
|
+
to: '',
|
|
1882
|
+
says: 'Does it once, with its own code, with exactly the terms Sam approved.',
|
|
1883
|
+
card: {
|
|
1884
|
+
kind: 'record',
|
|
1885
|
+
title: 'Activity of Exchange desk',
|
|
1886
|
+
rows: [
|
|
1887
|
+
['Personal agent', 'Sam’s agent'],
|
|
1888
|
+
['Proposed', 'orders.exchange, version 1'],
|
|
1889
|
+
['Approved by', 'Sam'],
|
|
1890
|
+
['Done', 'Once'],
|
|
1891
|
+
],
|
|
1892
|
+
lines: [],
|
|
1893
|
+
},
|
|
1894
|
+
how: '',
|
|
1895
|
+
},
|
|
1896
|
+
],
|
|
1897
|
+
live: 'The Studio’s card to make an application a company is built; its own domain and the company answering on Datalayer wait for the services to be shipped.',
|
|
1898
|
+
setup: [],
|
|
1899
|
+
};
|
|
1044
1900
|
export const SALES_AND_ACCOUNTING_SCENE_0_0_1 = {
|
|
1045
1901
|
schema: 'loop.scene/v1',
|
|
1046
1902
|
id: 'sales-and-accounting',
|
|
@@ -1050,6 +1906,7 @@ export const SALES_AND_ACCOUNTING_SCENE_0_0_1 = {
|
|
|
1050
1906
|
tags: ['example', 'scene', 'odoo', 'finance', 'a2a'],
|
|
1051
1907
|
icon: 'people',
|
|
1052
1908
|
emoji: '🤝',
|
|
1909
|
+
kind: 'team',
|
|
1053
1910
|
team: 'sales-and-accounting:0.0.1',
|
|
1054
1911
|
entry: 'sales',
|
|
1055
1912
|
cast: [
|
|
@@ -1377,6 +2234,9 @@ export const SALES_AND_ACCOUNTING_SCENE_0_0_1 = {
|
|
|
1377
2234
|
accounting: 'DATALAYER_DEMO_TEAM_ACCOUNTING_A2A_URL',
|
|
1378
2235
|
},
|
|
1379
2236
|
},
|
|
2237
|
+
actors: [],
|
|
2238
|
+
lines: [],
|
|
2239
|
+
live: '',
|
|
1380
2240
|
setup: [
|
|
1381
2241
|
"The agent 'worker-sales-pipeline-board-report:0.0.1' is not enabled.",
|
|
1382
2242
|
"The agent 'worker-accountant:0.0.1' is not enabled.",
|
|
@@ -1416,11 +2276,185 @@ export const SALES_AND_ACCOUNTING_SCENE_0_0_1 = {
|
|
|
1416
2276
|
runtime: '1.3.93',
|
|
1417
2277
|
},
|
|
1418
2278
|
};
|
|
2279
|
+
export const UCP_A_PURCHASE_APPROVED_SCENE_0_0_1 = {
|
|
2280
|
+
schema: 'loop.scene/v1',
|
|
2281
|
+
id: 'ucp-a-purchase-approved',
|
|
2282
|
+
version: '0.0.1',
|
|
2283
|
+
name: 'A Purchase, Approved',
|
|
2284
|
+
description: 'Ada’s Shopping Desk fills a basket at a test shop, and buys only once she approves the exact purchase.',
|
|
2285
|
+
tags: ['stage', 'ucp', 'commerce'],
|
|
2286
|
+
icon: 'people',
|
|
2287
|
+
emoji: '🛍️',
|
|
2288
|
+
kind: 'scripted',
|
|
2289
|
+
team: '',
|
|
2290
|
+
entry: '',
|
|
2291
|
+
cast: [],
|
|
2292
|
+
setting: {
|
|
2293
|
+
systems: [],
|
|
2294
|
+
period: '',
|
|
2295
|
+
language: '',
|
|
2296
|
+
assumes: '',
|
|
2297
|
+
},
|
|
2298
|
+
script: [],
|
|
2299
|
+
stage: {
|
|
2300
|
+
positions: {},
|
|
2301
|
+
opensFirst: '',
|
|
2302
|
+
transcript: {
|
|
2303
|
+
tools: true,
|
|
2304
|
+
narration: true,
|
|
2305
|
+
},
|
|
2306
|
+
inspectors: [],
|
|
2307
|
+
restsAfter: '',
|
|
2308
|
+
pace: 'steady',
|
|
2309
|
+
},
|
|
2310
|
+
audience: {
|
|
2311
|
+
who: 'signed-in',
|
|
2312
|
+
ceilingPerAsk: 0.0,
|
|
2313
|
+
asksADay: 0,
|
|
2314
|
+
},
|
|
2315
|
+
rehearsal: {
|
|
2316
|
+
beats: [],
|
|
2317
|
+
within: '',
|
|
2318
|
+
verified: {
|
|
2319
|
+
live: [],
|
|
2320
|
+
recorded: [],
|
|
2321
|
+
unverified: [],
|
|
2322
|
+
},
|
|
2323
|
+
},
|
|
2324
|
+
deployment: {
|
|
2325
|
+
account: '',
|
|
2326
|
+
page: '',
|
|
2327
|
+
addresses: {},
|
|
2328
|
+
},
|
|
2329
|
+
actors: [
|
|
2330
|
+
{
|
|
2331
|
+
id: 'ada',
|
|
2332
|
+
name: 'Ada',
|
|
2333
|
+
face: '🧑',
|
|
2334
|
+
is: 'the person',
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
id: 'agent',
|
|
2338
|
+
name: 'Shopping Desk',
|
|
2339
|
+
face: '🤖',
|
|
2340
|
+
is: 'an application on Datalayer, shopping for Ada',
|
|
2341
|
+
},
|
|
2342
|
+
{
|
|
2343
|
+
id: 'store',
|
|
2344
|
+
name: 'Example Store',
|
|
2345
|
+
face: '🍵',
|
|
2346
|
+
is: 'a test shop, at store.examples.datalayer.run',
|
|
2347
|
+
},
|
|
2348
|
+
],
|
|
2349
|
+
lines: [
|
|
2350
|
+
{
|
|
2351
|
+
from: 'ada',
|
|
2352
|
+
to: 'agent',
|
|
2353
|
+
says: '“Buy me a stoneware mug.”',
|
|
2354
|
+
how: '',
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
from: 'agent',
|
|
2358
|
+
to: 'store',
|
|
2359
|
+
says: 'Searches the shop for a mug.',
|
|
2360
|
+
how: 'The application reads the page every shop publishes for agents, then its catalogue; reading changes nothing, so its rule lets it do it.',
|
|
2361
|
+
},
|
|
2362
|
+
{
|
|
2363
|
+
from: 'store',
|
|
2364
|
+
to: 'agent',
|
|
2365
|
+
says: '“Stoneware mug: USD 24.00.”',
|
|
2366
|
+
how: '',
|
|
2367
|
+
},
|
|
2368
|
+
{
|
|
2369
|
+
from: 'agent',
|
|
2370
|
+
to: 'store',
|
|
2371
|
+
says: 'Fills a checkout with one stoneware mug, for Ada.',
|
|
2372
|
+
how: 'A checkout the shop can cancel; nothing is bought yet.',
|
|
2373
|
+
},
|
|
2374
|
+
{
|
|
2375
|
+
from: 'store',
|
|
2376
|
+
to: 'agent',
|
|
2377
|
+
says: '“Your checkout is ready to complete.”',
|
|
2378
|
+
how: '',
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
from: 'agent',
|
|
2382
|
+
to: 'ada',
|
|
2383
|
+
says: 'Every purchase is asked first, whatever its rule says: it waits for Ada.',
|
|
2384
|
+
card: {
|
|
2385
|
+
kind: 'approval',
|
|
2386
|
+
title: 'Shopping Desk asks you to approve a purchase',
|
|
2387
|
+
rows: [
|
|
2388
|
+
['Shop', 'Example Store'],
|
|
2389
|
+
['What', 'Stoneware mug × 1'],
|
|
2390
|
+
['Tax', 'USD 1.92'],
|
|
2391
|
+
['Total', 'USD 25.92'],
|
|
2392
|
+
['The most one purchase may cost', 'USD 50.00'],
|
|
2393
|
+
],
|
|
2394
|
+
lines: ['Buy 1 Stoneware mug at Example Store for USD 25.92.'],
|
|
2395
|
+
},
|
|
2396
|
+
how: 'The purchase is the shop’s own checkout, read again before it is shown; approving this one never approves a changed basket.',
|
|
2397
|
+
turn: {
|
|
2398
|
+
yes: 'Approve',
|
|
2399
|
+
no: 'Decline',
|
|
2400
|
+
declined: 'Ada declined: the checkout is cancelled, and nothing is bought.',
|
|
2401
|
+
},
|
|
2402
|
+
},
|
|
2403
|
+
{
|
|
2404
|
+
from: 'agent',
|
|
2405
|
+
to: 'store',
|
|
2406
|
+
says: 'Completes the checkout, exactly as Ada approved it, with a test payment.',
|
|
2407
|
+
how: 'Datalayer writes down that it buys before it does: asked again, it reads the order back instead of paying twice. No card is ever in the conversation.',
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
from: 'store',
|
|
2411
|
+
to: 'agent',
|
|
2412
|
+
says: '“Your order is placed.”',
|
|
2413
|
+
how: '',
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
from: 'agent',
|
|
2417
|
+
to: 'ada',
|
|
2418
|
+
says: 'Tells Ada what the shop says it did.',
|
|
2419
|
+
card: {
|
|
2420
|
+
kind: 'done',
|
|
2421
|
+
title: 'Bought, once',
|
|
2422
|
+
rows: [],
|
|
2423
|
+
lines: ['1 Stoneware mug, USD 25.92, at Example Store.'],
|
|
2424
|
+
},
|
|
2425
|
+
how: '',
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
from: 'agent',
|
|
2429
|
+
to: '',
|
|
2430
|
+
says: 'Keeps a record of the purchase, for Ada and for whoever built it.',
|
|
2431
|
+
card: {
|
|
2432
|
+
kind: 'record',
|
|
2433
|
+
title: 'Activity',
|
|
2434
|
+
rows: [
|
|
2435
|
+
['Bought at', 'Example Store, for Ada'],
|
|
2436
|
+
['Amount', 'USD 25.92'],
|
|
2437
|
+
['Approved by', 'Ada, once'],
|
|
2438
|
+
],
|
|
2439
|
+
lines: [],
|
|
2440
|
+
},
|
|
2441
|
+
how: 'The purchase shows in the application’s Activity with its amount.',
|
|
2442
|
+
},
|
|
2443
|
+
],
|
|
2444
|
+
live: 'Buying at a test shop is built in the Studio and its services, always asked first, under a limit, with no real payment; the test shops answering on Datalayer wait for them to be shipped.',
|
|
2445
|
+
setup: [],
|
|
2446
|
+
};
|
|
1419
2447
|
export const SCENE_CATALOGUE = {
|
|
1420
2448
|
'crop-monitoring': CROP_MONITORING_SCENE_0_0_1,
|
|
1421
2449
|
'disaster-assessment': DISASTER_ASSESSMENT_SCENE_0_0_1,
|
|
1422
2450
|
'month-end-close': MONTH_END_CLOSE_SCENE_0_0_1,
|
|
2451
|
+
'pact-a-personal-agent-at-a-business': PACT_A_PERSONAL_AGENT_AT_A_BUSINESS_SCENE_0_0_1,
|
|
2452
|
+
'pap-a-person-and-a-company': PAP_A_PERSON_AND_A_COMPANY_SCENE_0_0_1,
|
|
2453
|
+
'pap-approve-once': PAP_APPROVE_ONCE_SCENE_0_0_1,
|
|
2454
|
+
'pap-two-companies': PAP_TWO_COMPANIES_SCENE_0_0_1,
|
|
2455
|
+
'pap-your-application-a-company': PAP_YOUR_APPLICATION_A_COMPANY_SCENE_0_0_1,
|
|
1423
2456
|
'sales-and-accounting': SALES_AND_ACCOUNTING_SCENE_0_0_1,
|
|
2457
|
+
'ucp-a-purchase-approved': UCP_A_PURCHASE_APPROVED_SCENE_0_0_1,
|
|
1424
2458
|
};
|
|
1425
2459
|
/** A scene, by `id` or `id:version`, or undefined. */
|
|
1426
2460
|
export function getSceneSpec(ref) {
|