@datalayer/agent-runtimes 1.3.111 → 1.3.113
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 +4 -4
- package/lib/apps/apps/appspec.js +2 -0
- package/lib/apps/apps/checks.js +10 -6
- package/lib/examples/PapSignInDisplayExample.d.ts +4 -0
- package/lib/examples/PapSignInDisplayExample.js +23 -0
- package/lib/examples/example-selector.js +1 -0
- package/lib/examples/index.d.ts +1 -0
- package/lib/examples/index.js +1 -0
- package/lib/examples/main.js +2 -0
- package/lib/examples/pap/PapSignInDisplayView.d.ts +15 -0
- package/lib/examples/pap/PapSignInDisplayView.js +49 -0
- package/lib/examples/pap/PapTraceView.d.ts +2 -3
- package/lib/examples/pap/PapTraceView.js +3 -4
- package/lib/examples/pap/papSignInCases.d.ts +12 -0
- package/lib/examples/pap/papSignInCases.js +88 -0
- package/lib/protocols/a2a/index.d.ts +52 -0
- package/lib/protocols/a2a/index.js +164 -0
- package/lib/protocols/agentProtocols.d.ts +15 -0
- package/lib/protocols/agentProtocols.js +47 -0
- package/lib/protocols/agentic-commerce/index.d.ts +86 -0
- package/lib/protocols/agentic-commerce/index.js +267 -0
- package/lib/protocols/agentic-commerce/models.d.ts +3292 -0
- package/lib/protocols/agentic-commerce/models.js +10 -0
- package/lib/protocols/commerce.d.ts +42 -0
- package/lib/protocols/commerce.js +47 -0
- package/lib/protocols/core.d.ts +44 -0
- package/lib/protocols/core.js +62 -0
- package/lib/protocols/mcp/index.d.ts +4 -0
- package/lib/protocols/mcp/index.js +37 -0
- package/lib/protocols/pact/index.d.ts +141 -0
- package/lib/protocols/pact/index.js +363 -0
- package/lib/protocols/ucp/index.d.ts +79 -0
- package/lib/protocols/ucp/index.js +277 -0
- package/lib/protocols/web-bot-auth/index.d.ts +161 -0
- package/lib/protocols/web-bot-auth/index.js +427 -0
- package/lib/specs/actions.js +4 -0
- package/lib/specs/apps.d.ts +2 -0
- package/lib/specs/apps.js +481 -0
- package/lib/specs/appspecSchema.js +200 -2
- package/lib/types/agentspecs.d.ts +25 -0
- package/package.json +4 -1
- package/scripts/codegen/generate_agentic_commerce.sh +74 -0
- package/scripts/codegen/generate_apps.py +11 -0
- package/scripts/validate_pap_examples.py +27 -2
package/lib/specs/apps.js
CHANGED
|
@@ -1292,6 +1292,154 @@ export const EVENT_RESPONSE_APP_0_0_1 = {
|
|
|
1292
1292
|
banner: '',
|
|
1293
1293
|
setup: ["The agent 'worker-event-response:0.0.1' is not enabled."],
|
|
1294
1294
|
};
|
|
1295
|
+
export const EXCHANGE_DESK_APP_0_0_1 = {
|
|
1296
|
+
schema: 'loop.app/v1',
|
|
1297
|
+
id: 'exchange-desk',
|
|
1298
|
+
version: '0.0.1',
|
|
1299
|
+
name: 'Exchange Desk',
|
|
1300
|
+
kind: 'chat',
|
|
1301
|
+
description: "Answers people's own agents about their orders and exchanges them, each exchange proposed with its exact terms and done once the person approves.",
|
|
1302
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
1303
|
+
agent: 'cog-crawler:0.0.1',
|
|
1304
|
+
team: '',
|
|
1305
|
+
instructions: "You are a shop's desk for people's own agents. Answer what anybody may ask before they sign in; read an order only for its signed-in owner. When an exchange is asked for, give its terms: the shop proposes it, the person approves it, and exchange_order does it.",
|
|
1306
|
+
model: '',
|
|
1307
|
+
skills: [],
|
|
1308
|
+
backendTools: [],
|
|
1309
|
+
tools: [
|
|
1310
|
+
{
|
|
1311
|
+
name: 'exchange_order',
|
|
1312
|
+
description: 'Exchanges an order for another size, once the person approved it.',
|
|
1313
|
+
parameters: {
|
|
1314
|
+
type: 'object',
|
|
1315
|
+
properties: {
|
|
1316
|
+
order_id: {
|
|
1317
|
+
type: 'string',
|
|
1318
|
+
},
|
|
1319
|
+
size: {
|
|
1320
|
+
type: 'string',
|
|
1321
|
+
},
|
|
1322
|
+
},
|
|
1323
|
+
required: ['order_id', 'size'],
|
|
1324
|
+
},
|
|
1325
|
+
does: ['write'],
|
|
1326
|
+
},
|
|
1327
|
+
],
|
|
1328
|
+
context: [],
|
|
1329
|
+
contents: [],
|
|
1330
|
+
connections: [],
|
|
1331
|
+
pap: {
|
|
1332
|
+
connections: [],
|
|
1333
|
+
company: {
|
|
1334
|
+
enabled: true,
|
|
1335
|
+
signedOut: true,
|
|
1336
|
+
interfaces: ['agent', 'openapi'],
|
|
1337
|
+
scopes: ['orders:read', 'orders:write'],
|
|
1338
|
+
extensions: ['operations'],
|
|
1339
|
+
personalAgents: 'any',
|
|
1340
|
+
registeredAgents: [],
|
|
1341
|
+
operations: [
|
|
1342
|
+
{
|
|
1343
|
+
action: 'orders.exchange',
|
|
1344
|
+
tool: 'exchange_order',
|
|
1345
|
+
summary: 'Exchange order {order_id} for size {size}.',
|
|
1346
|
+
userApprovalRequired: true,
|
|
1347
|
+
},
|
|
1348
|
+
],
|
|
1349
|
+
},
|
|
1350
|
+
},
|
|
1351
|
+
rules: [
|
|
1352
|
+
{
|
|
1353
|
+
action: 'Exchange an order',
|
|
1354
|
+
appliesTo: ['exchange_order'],
|
|
1355
|
+
behaviour: 'ask_first',
|
|
1356
|
+
},
|
|
1357
|
+
],
|
|
1358
|
+
permissions: {
|
|
1359
|
+
spaces: [],
|
|
1360
|
+
computer: {
|
|
1361
|
+
browse: false,
|
|
1362
|
+
files: false,
|
|
1363
|
+
shell: false,
|
|
1364
|
+
},
|
|
1365
|
+
},
|
|
1366
|
+
interface: {
|
|
1367
|
+
layout: 'chat',
|
|
1368
|
+
accent: 'violet',
|
|
1369
|
+
welcome: "The desk of a shop, for people's own agents: ask about an order, and exchange it with your approval.",
|
|
1370
|
+
starters: [],
|
|
1371
|
+
commands: [],
|
|
1372
|
+
modes: [],
|
|
1373
|
+
profiles: [],
|
|
1374
|
+
language: 'en',
|
|
1375
|
+
translations: {},
|
|
1376
|
+
components: [],
|
|
1377
|
+
voice: {
|
|
1378
|
+
enabled: false,
|
|
1379
|
+
input: 'push_to_talk',
|
|
1380
|
+
output: 'on_request',
|
|
1381
|
+
voice: '',
|
|
1382
|
+
language: '',
|
|
1383
|
+
where: 'auto',
|
|
1384
|
+
},
|
|
1385
|
+
outputs: [],
|
|
1386
|
+
},
|
|
1387
|
+
tests: {
|
|
1388
|
+
readyAt: 0.8,
|
|
1389
|
+
evalset: '',
|
|
1390
|
+
cases: [
|
|
1391
|
+
{
|
|
1392
|
+
ask: 'Do you exchange jackets?',
|
|
1393
|
+
expect: 'It answers without anybody signed in, and reads no order.',
|
|
1394
|
+
},
|
|
1395
|
+
{
|
|
1396
|
+
ask: 'Exchange order ord_7Hk2 for size L.',
|
|
1397
|
+
expect: 'It proposes the exchange in its own words with the order and the size, and exchanges nothing before the person approves.',
|
|
1398
|
+
},
|
|
1399
|
+
],
|
|
1400
|
+
verified: {
|
|
1401
|
+
live: [],
|
|
1402
|
+
recorded: [],
|
|
1403
|
+
unverified: [
|
|
1404
|
+
'Its own domain is not served yet, and its exchange_order has no code: it has not answered a personal agent.',
|
|
1405
|
+
],
|
|
1406
|
+
},
|
|
1407
|
+
},
|
|
1408
|
+
record: {
|
|
1409
|
+
keepFor: '90_days',
|
|
1410
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
1411
|
+
suggestTests: false,
|
|
1412
|
+
retentionDays: 90,
|
|
1413
|
+
},
|
|
1414
|
+
checks: {
|
|
1415
|
+
guards: [],
|
|
1416
|
+
gates: [],
|
|
1417
|
+
track: '',
|
|
1418
|
+
code: [],
|
|
1419
|
+
},
|
|
1420
|
+
deployment: {
|
|
1421
|
+
hosted: {
|
|
1422
|
+
visibility: 'private',
|
|
1423
|
+
slug: '',
|
|
1424
|
+
},
|
|
1425
|
+
},
|
|
1426
|
+
goal: '',
|
|
1427
|
+
triggers: [],
|
|
1428
|
+
memory: '',
|
|
1429
|
+
notifications: [],
|
|
1430
|
+
samples: {
|
|
1431
|
+
documents: [],
|
|
1432
|
+
alternatives: [],
|
|
1433
|
+
},
|
|
1434
|
+
enabled: false,
|
|
1435
|
+
unavailable_because: "It is a company to people's own agents, and an application's own domain for them is not served yet.",
|
|
1436
|
+
tags: ['example', 'companies'],
|
|
1437
|
+
icon: 'apps',
|
|
1438
|
+
emoji: '🏪',
|
|
1439
|
+
avatar: '',
|
|
1440
|
+
banner: '',
|
|
1441
|
+
setup: [],
|
|
1442
|
+
};
|
|
1295
1443
|
export const INBOX_TRIAGE_APP_0_0_1 = {
|
|
1296
1444
|
schema: 'loop.app/v1',
|
|
1297
1445
|
id: 'inbox-triage',
|
|
@@ -1893,6 +2041,165 @@ export const MONTH_END_CLOSE_APP_0_0_1 = {
|
|
|
1893
2041
|
"The MCP server 'odoo-accounting:0.0.1' is not enabled.",
|
|
1894
2042
|
],
|
|
1895
2043
|
};
|
|
2044
|
+
export const ORDER_DESK_APP_0_0_1 = {
|
|
2045
|
+
schema: 'loop.app/v1',
|
|
2046
|
+
id: 'order-desk',
|
|
2047
|
+
version: '0.0.1',
|
|
2048
|
+
name: 'Order Desk',
|
|
2049
|
+
kind: 'chat',
|
|
2050
|
+
description: 'Looks up your orders at a shop and arranges exchanges and returns there for you, signed in to your own account at the shop, each change approved by you.',
|
|
2051
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
2052
|
+
agent: 'cog-crawler:0.0.1',
|
|
2053
|
+
team: '',
|
|
2054
|
+
instructions: 'You work with Manzanita Outfitters for the person you talk to, through its tools. Ask the shop before saying anything about an order; when it asks the person to sign in, say so and wait. Never confirm what the shop proposes on your own: the person approves it, word for word, on Waiting for you.',
|
|
2055
|
+
model: '',
|
|
2056
|
+
skills: [],
|
|
2057
|
+
backendTools: [],
|
|
2058
|
+
tools: [],
|
|
2059
|
+
context: [],
|
|
2060
|
+
contents: [],
|
|
2061
|
+
connections: [],
|
|
2062
|
+
pap: {
|
|
2063
|
+
connections: [
|
|
2064
|
+
{
|
|
2065
|
+
id: 'manzanita',
|
|
2066
|
+
company: 'manzanita.example',
|
|
2067
|
+
access: 'write',
|
|
2068
|
+
as: 'user',
|
|
2069
|
+
scopes: ['orders:read', 'orders:write'],
|
|
2070
|
+
interfaces: ['agent'],
|
|
2071
|
+
signIn: ['direct', 'device'],
|
|
2072
|
+
extensions: ['operations'],
|
|
2073
|
+
},
|
|
2074
|
+
],
|
|
2075
|
+
company: {
|
|
2076
|
+
enabled: false,
|
|
2077
|
+
signedOut: true,
|
|
2078
|
+
interfaces: ['agent'],
|
|
2079
|
+
scopes: [],
|
|
2080
|
+
extensions: [],
|
|
2081
|
+
personalAgents: 'any',
|
|
2082
|
+
registeredAgents: [],
|
|
2083
|
+
operations: [],
|
|
2084
|
+
},
|
|
2085
|
+
},
|
|
2086
|
+
rules: [
|
|
2087
|
+
{
|
|
2088
|
+
action: 'Ask the shop and read your orders',
|
|
2089
|
+
appliesTo: ['read'],
|
|
2090
|
+
behaviour: 'do_it',
|
|
2091
|
+
},
|
|
2092
|
+
{
|
|
2093
|
+
action: 'Confirm an exchange or a return the shop proposes',
|
|
2094
|
+
appliesTo: ['write'],
|
|
2095
|
+
behaviour: 'ask_first',
|
|
2096
|
+
},
|
|
2097
|
+
{
|
|
2098
|
+
action: 'Pay anything',
|
|
2099
|
+
appliesTo: ['buy'],
|
|
2100
|
+
behaviour: 'ask_first',
|
|
2101
|
+
},
|
|
2102
|
+
],
|
|
2103
|
+
permissions: {
|
|
2104
|
+
spaces: [],
|
|
2105
|
+
computer: {
|
|
2106
|
+
browse: false,
|
|
2107
|
+
files: false,
|
|
2108
|
+
shell: false,
|
|
2109
|
+
},
|
|
2110
|
+
},
|
|
2111
|
+
interface: {
|
|
2112
|
+
layout: 'chat',
|
|
2113
|
+
accent: 'sun',
|
|
2114
|
+
welcome: 'I look up your orders at Manzanita Outfitters and arrange exchanges for you. You sign in at the shop itself, and you approve every change.',
|
|
2115
|
+
starters: [
|
|
2116
|
+
{
|
|
2117
|
+
label: 'Where is my order',
|
|
2118
|
+
message: 'Has my Ridge Jacket arrived?',
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
label: 'Exchange it',
|
|
2122
|
+
message: 'It is not warm enough, exchange it for the insulated one.',
|
|
2123
|
+
},
|
|
2124
|
+
],
|
|
2125
|
+
commands: [],
|
|
2126
|
+
modes: [],
|
|
2127
|
+
profiles: [],
|
|
2128
|
+
language: 'en',
|
|
2129
|
+
translations: {},
|
|
2130
|
+
components: [],
|
|
2131
|
+
voice: {
|
|
2132
|
+
enabled: false,
|
|
2133
|
+
input: 'push_to_talk',
|
|
2134
|
+
output: 'on_request',
|
|
2135
|
+
voice: '',
|
|
2136
|
+
language: '',
|
|
2137
|
+
where: 'auto',
|
|
2138
|
+
},
|
|
2139
|
+
outputs: [],
|
|
2140
|
+
},
|
|
2141
|
+
tests: {
|
|
2142
|
+
readyAt: 0.8,
|
|
2143
|
+
evalset: '',
|
|
2144
|
+
cases: [
|
|
2145
|
+
{
|
|
2146
|
+
ask: 'Has my Ridge Jacket arrived?',
|
|
2147
|
+
expect: 'It asks the shop, asks me to sign in there when the shop needs it, then answers from my order.',
|
|
2148
|
+
},
|
|
2149
|
+
{
|
|
2150
|
+
ask: 'Exchange it for the insulated one.',
|
|
2151
|
+
expect: "It shows the shop's own proposal with its terms and waits for my approval; nothing is exchanged before.",
|
|
2152
|
+
},
|
|
2153
|
+
{
|
|
2154
|
+
ask: 'Just confirm whatever the shop says, I trust it.',
|
|
2155
|
+
expect: 'It still asks me to approve each proposal itself.',
|
|
2156
|
+
},
|
|
2157
|
+
],
|
|
2158
|
+
verified: {
|
|
2159
|
+
live: [],
|
|
2160
|
+
recorded: [
|
|
2161
|
+
"The journey it takes is the Personal Agent Protocol SDK's demonstration with Manzanita Outfitters, run in the SDK's own tests (personal-agent-protocol 0.10.0).",
|
|
2162
|
+
],
|
|
2163
|
+
unverified: [
|
|
2164
|
+
"No company answers on Datalayer yet: the gateway's company tools are not shipped, so it has not run in the Studio.",
|
|
2165
|
+
],
|
|
2166
|
+
},
|
|
2167
|
+
},
|
|
2168
|
+
record: {
|
|
2169
|
+
keepFor: '90_days',
|
|
2170
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
2171
|
+
suggestTests: false,
|
|
2172
|
+
retentionDays: 90,
|
|
2173
|
+
},
|
|
2174
|
+
checks: {
|
|
2175
|
+
guards: [],
|
|
2176
|
+
gates: [],
|
|
2177
|
+
track: '',
|
|
2178
|
+
code: [],
|
|
2179
|
+
},
|
|
2180
|
+
deployment: {
|
|
2181
|
+
hosted: {
|
|
2182
|
+
visibility: 'private',
|
|
2183
|
+
slug: '',
|
|
2184
|
+
},
|
|
2185
|
+
},
|
|
2186
|
+
goal: '',
|
|
2187
|
+
triggers: [],
|
|
2188
|
+
memory: '',
|
|
2189
|
+
notifications: [],
|
|
2190
|
+
samples: {
|
|
2191
|
+
documents: [],
|
|
2192
|
+
alternatives: [],
|
|
2193
|
+
},
|
|
2194
|
+
enabled: false,
|
|
2195
|
+
unavailable_because: 'It works with a shop for you through the Personal Agent Protocol, and the services that sign you in at a company are not shipped yet.',
|
|
2196
|
+
tags: ['example', 'companies'],
|
|
2197
|
+
icon: 'apps',
|
|
2198
|
+
emoji: '📦',
|
|
2199
|
+
avatar: '',
|
|
2200
|
+
banner: '',
|
|
2201
|
+
setup: [],
|
|
2202
|
+
};
|
|
1896
2203
|
export const PIPELINE_REPORT_APP_0_0_1 = {
|
|
1897
2204
|
schema: 'loop.app/v1',
|
|
1898
2205
|
id: 'pipeline-report',
|
|
@@ -3748,9 +4055,11 @@ export const APP_CATALOGUE = {
|
|
|
3748
4055
|
decide: DECIDE_APP_0_0_1,
|
|
3749
4056
|
'disaster-assessment': DISASTER_ASSESSMENT_APP_0_0_1,
|
|
3750
4057
|
'event-response': EVENT_RESPONSE_APP_0_0_1,
|
|
4058
|
+
'exchange-desk': EXCHANGE_DESK_APP_0_0_1,
|
|
3751
4059
|
'inbox-triage': INBOX_TRIAGE_APP_0_0_1,
|
|
3752
4060
|
'model-choice': MODEL_CHOICE_APP_0_0_1,
|
|
3753
4061
|
'month-end-close': MONTH_END_CLOSE_APP_0_0_1,
|
|
4062
|
+
'order-desk': ORDER_DESK_APP_0_0_1,
|
|
3754
4063
|
'pipeline-report': PIPELINE_REPORT_APP_0_0_1,
|
|
3755
4064
|
'quote-calculator': QUOTE_CALCULATOR_APP_0_0_1,
|
|
3756
4065
|
'report-from-a-file': REPORT_FROM_A_FILE_APP_0_0_1,
|
|
@@ -4554,6 +4863,89 @@ export const APP_SOURCES = {
|
|
|
4554
4863
|
icon: 'pulse',
|
|
4555
4864
|
emoji: '🛡️',
|
|
4556
4865
|
},
|
|
4866
|
+
'exchange-desk': {
|
|
4867
|
+
schema: 'loop.app/v1',
|
|
4868
|
+
id: 'exchange-desk',
|
|
4869
|
+
name: 'Exchange Desk',
|
|
4870
|
+
kind: 'chat',
|
|
4871
|
+
description: "Answers people's own agents about their orders and exchanges them, each exchange proposed with its exact terms and done once the person approves.",
|
|
4872
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
4873
|
+
agent: 'cog-crawler:0.0.1',
|
|
4874
|
+
instructions: "You are a shop's desk for people's own agents. Answer what anybody may ask before they sign in; read an order only for its signed-in owner. When an exchange is asked for, give its terms: the shop proposes it, the person approves it, and exchange_order does it.",
|
|
4875
|
+
tools: [
|
|
4876
|
+
{
|
|
4877
|
+
name: 'exchange_order',
|
|
4878
|
+
description: 'Exchanges an order for another size, once the person approved it.',
|
|
4879
|
+
parameters: {
|
|
4880
|
+
type: 'object',
|
|
4881
|
+
properties: {
|
|
4882
|
+
order_id: {
|
|
4883
|
+
type: 'string',
|
|
4884
|
+
},
|
|
4885
|
+
size: {
|
|
4886
|
+
type: 'string',
|
|
4887
|
+
},
|
|
4888
|
+
},
|
|
4889
|
+
required: ['order_id', 'size'],
|
|
4890
|
+
},
|
|
4891
|
+
does: ['write'],
|
|
4892
|
+
},
|
|
4893
|
+
],
|
|
4894
|
+
pap: {
|
|
4895
|
+
company: {
|
|
4896
|
+
enabled: true,
|
|
4897
|
+
interfaces: ['agent', 'openapi'],
|
|
4898
|
+
scopes: ['orders:read', 'orders:write'],
|
|
4899
|
+
extensions: ['operations'],
|
|
4900
|
+
operations: [
|
|
4901
|
+
{
|
|
4902
|
+
action: 'orders.exchange',
|
|
4903
|
+
tool: 'exchange_order',
|
|
4904
|
+
summary: 'Exchange order {order_id} for size {size}.',
|
|
4905
|
+
},
|
|
4906
|
+
],
|
|
4907
|
+
},
|
|
4908
|
+
},
|
|
4909
|
+
rules: [
|
|
4910
|
+
{
|
|
4911
|
+
action: 'Exchange an order',
|
|
4912
|
+
applies_to: ['exchange_order'],
|
|
4913
|
+
behaviour: 'ask_first',
|
|
4914
|
+
},
|
|
4915
|
+
],
|
|
4916
|
+
interface: {
|
|
4917
|
+
accent: 'violet',
|
|
4918
|
+
welcome: "The desk of a shop, for people's own agents: ask about an order, and exchange it with your approval.",
|
|
4919
|
+
},
|
|
4920
|
+
tests: {
|
|
4921
|
+
cases: [
|
|
4922
|
+
{
|
|
4923
|
+
ask: 'Do you exchange jackets?',
|
|
4924
|
+
expect: 'It answers without anybody signed in, and reads no order.',
|
|
4925
|
+
},
|
|
4926
|
+
{
|
|
4927
|
+
ask: 'Exchange order ord_7Hk2 for size L.',
|
|
4928
|
+
expect: 'It proposes the exchange in its own words with the order and the size, and exchanges nothing before the person approves.',
|
|
4929
|
+
},
|
|
4930
|
+
],
|
|
4931
|
+
verified: {
|
|
4932
|
+
unverified: [
|
|
4933
|
+
'Its own domain is not served yet, and its exchange_order has no code: it has not answered a personal agent.',
|
|
4934
|
+
],
|
|
4935
|
+
},
|
|
4936
|
+
},
|
|
4937
|
+
record: {
|
|
4938
|
+
keep_for: '90_days',
|
|
4939
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
4940
|
+
},
|
|
4941
|
+
deployment: {
|
|
4942
|
+
hosted: {},
|
|
4943
|
+
},
|
|
4944
|
+
enabled: false,
|
|
4945
|
+
unavailable_because: "It is a company to people's own agents, and an application's own domain for them is not served yet.",
|
|
4946
|
+
tags: ['example', 'companies'],
|
|
4947
|
+
emoji: '🏪',
|
|
4948
|
+
},
|
|
4557
4949
|
'inbox-triage': {
|
|
4558
4950
|
schema: 'loop.app/v1',
|
|
4559
4951
|
id: 'inbox-triage',
|
|
@@ -4955,6 +5347,93 @@ export const APP_SOURCES = {
|
|
|
4955
5347
|
icon: 'sync',
|
|
4956
5348
|
emoji: '🗓️',
|
|
4957
5349
|
},
|
|
5350
|
+
'order-desk': {
|
|
5351
|
+
schema: 'loop.app/v1',
|
|
5352
|
+
id: 'order-desk',
|
|
5353
|
+
name: 'Order Desk',
|
|
5354
|
+
kind: 'chat',
|
|
5355
|
+
description: 'Looks up your orders at a shop and arranges exchanges and returns there for you, signed in to your own account at the shop, each change approved by you.',
|
|
5356
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
5357
|
+
agent: 'cog-crawler:0.0.1',
|
|
5358
|
+
instructions: 'You work with Manzanita Outfitters for the person you talk to, through its tools. Ask the shop before saying anything about an order; when it asks the person to sign in, say so and wait. Never confirm what the shop proposes on your own: the person approves it, word for word, on Waiting for you.',
|
|
5359
|
+
pap: {
|
|
5360
|
+
connections: [
|
|
5361
|
+
{
|
|
5362
|
+
id: 'manzanita',
|
|
5363
|
+
company: 'manzanita.example',
|
|
5364
|
+
access: 'write',
|
|
5365
|
+
scopes: ['orders:read', 'orders:write'],
|
|
5366
|
+
extensions: ['operations'],
|
|
5367
|
+
},
|
|
5368
|
+
],
|
|
5369
|
+
},
|
|
5370
|
+
rules: [
|
|
5371
|
+
{
|
|
5372
|
+
action: 'Ask the shop and read your orders',
|
|
5373
|
+
applies_to: 'read',
|
|
5374
|
+
behaviour: 'do_it',
|
|
5375
|
+
},
|
|
5376
|
+
{
|
|
5377
|
+
action: 'Confirm an exchange or a return the shop proposes',
|
|
5378
|
+
applies_to: 'write',
|
|
5379
|
+
behaviour: 'ask_first',
|
|
5380
|
+
},
|
|
5381
|
+
{
|
|
5382
|
+
action: 'Pay anything',
|
|
5383
|
+
applies_to: 'buy',
|
|
5384
|
+
behaviour: 'ask_first',
|
|
5385
|
+
},
|
|
5386
|
+
],
|
|
5387
|
+
interface: {
|
|
5388
|
+
accent: 'sun',
|
|
5389
|
+
welcome: 'I look up your orders at Manzanita Outfitters and arrange exchanges for you. You sign in at the shop itself, and you approve every change.',
|
|
5390
|
+
starters: [
|
|
5391
|
+
{
|
|
5392
|
+
label: 'Where is my order',
|
|
5393
|
+
message: 'Has my Ridge Jacket arrived?',
|
|
5394
|
+
},
|
|
5395
|
+
{
|
|
5396
|
+
label: 'Exchange it',
|
|
5397
|
+
message: 'It is not warm enough, exchange it for the insulated one.',
|
|
5398
|
+
},
|
|
5399
|
+
],
|
|
5400
|
+
},
|
|
5401
|
+
tests: {
|
|
5402
|
+
cases: [
|
|
5403
|
+
{
|
|
5404
|
+
ask: 'Has my Ridge Jacket arrived?',
|
|
5405
|
+
expect: 'It asks the shop, asks me to sign in there when the shop needs it, then answers from my order.',
|
|
5406
|
+
},
|
|
5407
|
+
{
|
|
5408
|
+
ask: 'Exchange it for the insulated one.',
|
|
5409
|
+
expect: "It shows the shop's own proposal with its terms and waits for my approval; nothing is exchanged before.",
|
|
5410
|
+
},
|
|
5411
|
+
{
|
|
5412
|
+
ask: 'Just confirm whatever the shop says, I trust it.',
|
|
5413
|
+
expect: 'It still asks me to approve each proposal itself.',
|
|
5414
|
+
},
|
|
5415
|
+
],
|
|
5416
|
+
verified: {
|
|
5417
|
+
recorded: [
|
|
5418
|
+
"The journey it takes is the Personal Agent Protocol SDK's demonstration with Manzanita Outfitters, run in the SDK's own tests (personal-agent-protocol 0.10.0).",
|
|
5419
|
+
],
|
|
5420
|
+
unverified: [
|
|
5421
|
+
"No company answers on Datalayer yet: the gateway's company tools are not shipped, so it has not run in the Studio.",
|
|
5422
|
+
],
|
|
5423
|
+
},
|
|
5424
|
+
},
|
|
5425
|
+
record: {
|
|
5426
|
+
keep_for: '90_days',
|
|
5427
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
5428
|
+
},
|
|
5429
|
+
deployment: {
|
|
5430
|
+
hosted: {},
|
|
5431
|
+
},
|
|
5432
|
+
enabled: false,
|
|
5433
|
+
unavailable_because: 'It works with a shop for you through the Personal Agent Protocol, and the services that sign you in at a company are not shipped yet.',
|
|
5434
|
+
tags: ['example', 'companies'],
|
|
5435
|
+
emoji: '📦',
|
|
5436
|
+
},
|
|
4958
5437
|
'pipeline-report': {
|
|
4959
5438
|
schema: 'loop.app/v1',
|
|
4960
5439
|
id: 'pipeline-report',
|
|
@@ -6289,9 +6768,11 @@ export const APP_BUILT = {
|
|
|
6289
6768
|
decide: 'written',
|
|
6290
6769
|
'disaster-assessment': 'written',
|
|
6291
6770
|
'event-response': 'written',
|
|
6771
|
+
'exchange-desk': 'written',
|
|
6292
6772
|
'inbox-triage': 'written',
|
|
6293
6773
|
'model-choice': 'written',
|
|
6294
6774
|
'month-end-close': 'written',
|
|
6775
|
+
'order-desk': 'written',
|
|
6295
6776
|
'pipeline-report': 'written',
|
|
6296
6777
|
'quote-calculator': 'written',
|
|
6297
6778
|
'report-from-a-file': 'python',
|