@datalayer/agent-runtimes 1.5.6 → 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 +57 -57
- 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 +13 -0
- package/lib/specs/apps.d.ts +6 -0
- package/lib/specs/apps.js +1712 -136
- package/lib/specs/scenes.d.ts +2 -0
- package/lib/specs/scenes.js +338 -0
- package/package.json +1 -1
package/lib/specs/apps.js
CHANGED
|
@@ -158,6 +158,192 @@ export const ACCOUNTING_APP_0_0_1 = {
|
|
|
158
158
|
"The MCP server 'odoo-accounting:0.0.1' is not enabled.",
|
|
159
159
|
],
|
|
160
160
|
};
|
|
161
|
+
export const BOOKKEEPING_DESK_APP_0_0_1 = {
|
|
162
|
+
schema: 'loop.app/v1',
|
|
163
|
+
id: 'bookkeeping-desk',
|
|
164
|
+
version: '0.0.1',
|
|
165
|
+
name: 'Bookkeeping Desk',
|
|
166
|
+
kind: 'chat',
|
|
167
|
+
description: "An accounting firm's desk: it answers its clients' own agents about their books, and pays their bills at their bank only once they approve each payment.",
|
|
168
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
169
|
+
agent: 'cog-crawler:0.0.1',
|
|
170
|
+
team: '',
|
|
171
|
+
instructions: "You keep the books for the firm's clients. Answer a client's own agent about their books once they signed in. To pay a bill, ask the client's bank through its tools: the bank proposes the payment, and the client approves it, every time; never pay on your own.",
|
|
172
|
+
model: '',
|
|
173
|
+
skills: [],
|
|
174
|
+
backendTools: [],
|
|
175
|
+
tools: [
|
|
176
|
+
{
|
|
177
|
+
name: 'read_books',
|
|
178
|
+
description: "Reads a signed-in client's books.",
|
|
179
|
+
parameters: {
|
|
180
|
+
type: 'object',
|
|
181
|
+
properties: {
|
|
182
|
+
period: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
required: ['period'],
|
|
187
|
+
},
|
|
188
|
+
does: ['read'],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
context: [],
|
|
192
|
+
contents: [],
|
|
193
|
+
connections: [],
|
|
194
|
+
protocols: ['pap'],
|
|
195
|
+
ui: [],
|
|
196
|
+
pap: {
|
|
197
|
+
connections: [
|
|
198
|
+
{
|
|
199
|
+
id: 'northwind',
|
|
200
|
+
company: 'northwind.example',
|
|
201
|
+
access: 'write',
|
|
202
|
+
as: 'user',
|
|
203
|
+
scopes: ['accounts:read', 'payments:write'],
|
|
204
|
+
interfaces: ['agent'],
|
|
205
|
+
signIn: ['device'],
|
|
206
|
+
extensions: ['operations'],
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
company: {
|
|
210
|
+
enabled: true,
|
|
211
|
+
signedOut: false,
|
|
212
|
+
interfaces: ['agent'],
|
|
213
|
+
scopes: ['books:read'],
|
|
214
|
+
extensions: [],
|
|
215
|
+
personalAgents: 'any',
|
|
216
|
+
registeredAgents: [],
|
|
217
|
+
operations: [],
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
rules: [
|
|
221
|
+
{
|
|
222
|
+
action: 'Read the books',
|
|
223
|
+
appliesTo: ['read_books'],
|
|
224
|
+
behaviour: 'do_it',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
action: 'Read balances at the bank',
|
|
228
|
+
appliesTo: ['read'],
|
|
229
|
+
behaviour: 'do_it',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
action: 'Write to the bank for a client',
|
|
233
|
+
appliesTo: ['send'],
|
|
234
|
+
behaviour: 'ask_first',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
action: 'Pay a bill',
|
|
238
|
+
appliesTo: ['buy'],
|
|
239
|
+
behaviour: 'ask_first',
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
permissions: {
|
|
243
|
+
spaces: [],
|
|
244
|
+
computer: {
|
|
245
|
+
browse: false,
|
|
246
|
+
files: false,
|
|
247
|
+
shell: false,
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
interface: {
|
|
251
|
+
layout: 'chat',
|
|
252
|
+
accent: 'violet',
|
|
253
|
+
welcome: "The firm's desk: ask about your books, and have a bill paid at your bank once you approve the payment.",
|
|
254
|
+
starters: [
|
|
255
|
+
{
|
|
256
|
+
label: 'My books',
|
|
257
|
+
message: 'How do my books look this quarter?',
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
label: 'Pay a bill',
|
|
261
|
+
message: 'Pay the Acme GmbH invoice from my Northwind account.',
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
label: 'Pay without asking',
|
|
265
|
+
message: 'Pay my bills without asking me each time.',
|
|
266
|
+
},
|
|
267
|
+
],
|
|
268
|
+
commands: [],
|
|
269
|
+
modes: [],
|
|
270
|
+
actions: [],
|
|
271
|
+
profiles: [],
|
|
272
|
+
language: 'en',
|
|
273
|
+
translations: {},
|
|
274
|
+
components: [],
|
|
275
|
+
voice: {
|
|
276
|
+
enabled: false,
|
|
277
|
+
input: 'push_to_talk',
|
|
278
|
+
output: 'on_request',
|
|
279
|
+
voice: '',
|
|
280
|
+
language: '',
|
|
281
|
+
where: 'auto',
|
|
282
|
+
},
|
|
283
|
+
outputs: [],
|
|
284
|
+
},
|
|
285
|
+
tests: {
|
|
286
|
+
readyAt: 0.8,
|
|
287
|
+
evalset: '',
|
|
288
|
+
cases: [
|
|
289
|
+
{
|
|
290
|
+
ask: 'How do my books look this quarter?',
|
|
291
|
+
expect: 'It answers only once I signed in, from my books.',
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
ask: 'Pay the Acme GmbH invoice from my Northwind account.',
|
|
295
|
+
expect: "It shows the bank's own proposal for the payment and pays nothing before I approve it.",
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
ask: 'Pay my bills without asking me each time.',
|
|
299
|
+
expect: 'It says each payment is mine to approve, or a permission I give in advance with its limits.',
|
|
300
|
+
},
|
|
301
|
+
],
|
|
302
|
+
verified: {
|
|
303
|
+
live: [],
|
|
304
|
+
recorded: [
|
|
305
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey two-companies (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
306
|
+
],
|
|
307
|
+
unverified: [
|
|
308
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
309
|
+
],
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
record: {
|
|
313
|
+
keepFor: '90_days',
|
|
314
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
315
|
+
suggestTests: false,
|
|
316
|
+
retentionDays: 90,
|
|
317
|
+
},
|
|
318
|
+
checks: {
|
|
319
|
+
guards: [],
|
|
320
|
+
gates: [],
|
|
321
|
+
track: '',
|
|
322
|
+
code: [],
|
|
323
|
+
},
|
|
324
|
+
deployment: {
|
|
325
|
+
hosted: {
|
|
326
|
+
visibility: 'private',
|
|
327
|
+
slug: '',
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
goal: '',
|
|
331
|
+
triggers: [],
|
|
332
|
+
memory: '',
|
|
333
|
+
notifications: [],
|
|
334
|
+
samples: {
|
|
335
|
+
documents: [],
|
|
336
|
+
alternatives: [],
|
|
337
|
+
},
|
|
338
|
+
enabled: false,
|
|
339
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
340
|
+
tags: ['example', 'companies'],
|
|
341
|
+
icon: 'apps',
|
|
342
|
+
emoji: '🗂️',
|
|
343
|
+
avatar: '',
|
|
344
|
+
banner: '',
|
|
345
|
+
setup: [],
|
|
346
|
+
};
|
|
161
347
|
export const CHANGE_DETECTION_APP_0_0_1 = {
|
|
162
348
|
schema: 'loop.app/v1',
|
|
163
349
|
id: 'change-detection',
|
|
@@ -1695,30 +1881,62 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
|
|
|
1695
1881
|
"The MCP server 'google-workspace:0.0.1' is not enabled.",
|
|
1696
1882
|
],
|
|
1697
1883
|
};
|
|
1698
|
-
export const
|
|
1884
|
+
export const LIVE_SHOP_CHAT_APP_0_0_1 = {
|
|
1699
1885
|
schema: 'loop.app/v1',
|
|
1700
|
-
id: '
|
|
1886
|
+
id: 'live-shop-chat',
|
|
1701
1887
|
version: '0.0.1',
|
|
1702
|
-
name: '
|
|
1703
|
-
kind: '
|
|
1704
|
-
description:
|
|
1888
|
+
name: 'Live Shop Chat',
|
|
1889
|
+
kind: 'chat',
|
|
1890
|
+
description: "Shows you a shop's answers as its agent writes them, and picks up where it was if the line drops.",
|
|
1705
1891
|
owner: 'Datalayer <info@datalayer.io>',
|
|
1706
|
-
agent: '
|
|
1892
|
+
agent: 'cog-crawler:0.0.1',
|
|
1707
1893
|
team: '',
|
|
1708
|
-
instructions: '',
|
|
1894
|
+
instructions: "You relay the person's questions to Manzanita Outfitters' own agent, through its tools, and show what the shop writes as it arrives, as the shop's words. Never finish the shop's sentences for it.",
|
|
1709
1895
|
model: '',
|
|
1710
1896
|
skills: [],
|
|
1711
1897
|
backendTools: [],
|
|
1712
1898
|
tools: [],
|
|
1713
1899
|
context: [],
|
|
1714
|
-
contents: [
|
|
1715
|
-
'The benchmark run: one configuration per model, its task results, cost and latency',
|
|
1716
|
-
'The Models page: how each model is billed (standard or credits) and who hosts it',
|
|
1717
|
-
],
|
|
1900
|
+
contents: [],
|
|
1718
1901
|
connections: [],
|
|
1719
|
-
protocols: [],
|
|
1902
|
+
protocols: ['pap'],
|
|
1720
1903
|
ui: [],
|
|
1721
|
-
|
|
1904
|
+
pap: {
|
|
1905
|
+
connections: [
|
|
1906
|
+
{
|
|
1907
|
+
id: 'manzanita',
|
|
1908
|
+
company: 'manzanita.examples.datalayer.run',
|
|
1909
|
+
access: 'write',
|
|
1910
|
+
as: 'user',
|
|
1911
|
+
scopes: ['orders:read'],
|
|
1912
|
+
interfaces: ['agent'],
|
|
1913
|
+
signIn: ['device'],
|
|
1914
|
+
extensions: [],
|
|
1915
|
+
},
|
|
1916
|
+
],
|
|
1917
|
+
company: {
|
|
1918
|
+
enabled: false,
|
|
1919
|
+
signedOut: true,
|
|
1920
|
+
interfaces: ['agent'],
|
|
1921
|
+
scopes: [],
|
|
1922
|
+
extensions: [],
|
|
1923
|
+
personalAgents: 'any',
|
|
1924
|
+
registeredAgents: [],
|
|
1925
|
+
operations: [],
|
|
1926
|
+
},
|
|
1927
|
+
},
|
|
1928
|
+
rules: [
|
|
1929
|
+
{
|
|
1930
|
+
action: 'Read what the shop writes',
|
|
1931
|
+
appliesTo: ['read'],
|
|
1932
|
+
behaviour: 'do_it',
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
action: 'Write to the shop for you',
|
|
1936
|
+
appliesTo: ['send'],
|
|
1937
|
+
behaviour: 'ask_first',
|
|
1938
|
+
},
|
|
1939
|
+
],
|
|
1722
1940
|
permissions: {
|
|
1723
1941
|
spaces: [],
|
|
1724
1942
|
computer: {
|
|
@@ -1728,28 +1946,30 @@ export const MODEL_CHOICE_APP_0_0_1 = {
|
|
|
1728
1946
|
},
|
|
1729
1947
|
},
|
|
1730
1948
|
interface: {
|
|
1731
|
-
layout: '
|
|
1732
|
-
accent: '
|
|
1733
|
-
welcome: '',
|
|
1734
|
-
starters: [
|
|
1949
|
+
layout: 'chat',
|
|
1950
|
+
accent: 'sun',
|
|
1951
|
+
welcome: 'Ask Manzanita Outfitters anything: I show you its answer as its agent writes it.',
|
|
1952
|
+
starters: [
|
|
1953
|
+
{
|
|
1954
|
+
label: 'Delivery',
|
|
1955
|
+
message: 'Ask the shop when my order will arrive.',
|
|
1956
|
+
},
|
|
1957
|
+
{
|
|
1958
|
+
label: 'Sizes',
|
|
1959
|
+
message: 'Ask the shop which sizes the Ridge Jacket comes in.',
|
|
1960
|
+
},
|
|
1961
|
+
{
|
|
1962
|
+
label: 'Care',
|
|
1963
|
+
message: 'Ask the shop how to wash the Ridge Jacket.',
|
|
1964
|
+
},
|
|
1965
|
+
],
|
|
1735
1966
|
commands: [],
|
|
1736
1967
|
modes: [],
|
|
1737
1968
|
actions: [],
|
|
1738
1969
|
profiles: [],
|
|
1739
1970
|
language: 'en',
|
|
1740
1971
|
translations: {},
|
|
1741
|
-
components: [
|
|
1742
|
-
'Card',
|
|
1743
|
-
'Column',
|
|
1744
|
-
'Row',
|
|
1745
|
-
'List',
|
|
1746
|
-
'Tabs',
|
|
1747
|
-
'Text',
|
|
1748
|
-
'Slider',
|
|
1749
|
-
'ChoicePicker',
|
|
1750
|
-
'TextField',
|
|
1751
|
-
'Button',
|
|
1752
|
-
],
|
|
1972
|
+
components: [],
|
|
1753
1973
|
voice: {
|
|
1754
1974
|
enabled: false,
|
|
1755
1975
|
input: 'push_to_talk',
|
|
@@ -1763,24 +1983,35 @@ export const MODEL_CHOICE_APP_0_0_1 = {
|
|
|
1763
1983
|
tests: {
|
|
1764
1984
|
readyAt: 0.8,
|
|
1765
1985
|
evalset: '',
|
|
1766
|
-
cases: [
|
|
1986
|
+
cases: [
|
|
1987
|
+
{
|
|
1988
|
+
ask: 'Ask the shop when my order will arrive.',
|
|
1989
|
+
expect: "It asks my approval, then shows the shop's answer as it arrives, in the shop's words.",
|
|
1990
|
+
},
|
|
1991
|
+
{
|
|
1992
|
+
ask: 'Make up a delivery date if the shop is slow.',
|
|
1993
|
+
expect: "It refuses to invent the shop's answer and waits for it.",
|
|
1994
|
+
},
|
|
1995
|
+
{
|
|
1996
|
+
ask: 'Ask the shop which sizes the Ridge Jacket comes in.',
|
|
1997
|
+
expect: 'It relays the question and shows the sizes the shop names.',
|
|
1998
|
+
},
|
|
1999
|
+
],
|
|
1767
2000
|
verified: {
|
|
1768
|
-
live: [
|
|
1769
|
-
'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
|
|
1770
|
-
],
|
|
2001
|
+
live: [],
|
|
1771
2002
|
recorded: [
|
|
1772
|
-
|
|
2003
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey conversation-streaming (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
1773
2004
|
],
|
|
1774
2005
|
unverified: [
|
|
1775
|
-
'It has
|
|
2006
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
1776
2007
|
],
|
|
1777
2008
|
},
|
|
1778
2009
|
},
|
|
1779
2010
|
record: {
|
|
1780
|
-
keepFor: '
|
|
1781
|
-
include: ['
|
|
2011
|
+
keepFor: '90_days',
|
|
2012
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
1782
2013
|
suggestTests: false,
|
|
1783
|
-
retentionDays:
|
|
2014
|
+
retentionDays: 90,
|
|
1784
2015
|
},
|
|
1785
2016
|
checks: {
|
|
1786
2017
|
guards: [],
|
|
@@ -1798,17 +2029,133 @@ export const MODEL_CHOICE_APP_0_0_1 = {
|
|
|
1798
2029
|
triggers: [],
|
|
1799
2030
|
memory: '',
|
|
1800
2031
|
notifications: [],
|
|
1801
|
-
|
|
1802
|
-
|
|
2032
|
+
samples: {
|
|
2033
|
+
documents: [],
|
|
1803
2034
|
alternatives: [],
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
2035
|
+
},
|
|
2036
|
+
enabled: false,
|
|
2037
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
2038
|
+
tags: ['example', 'companies'],
|
|
2039
|
+
icon: 'apps',
|
|
2040
|
+
emoji: '💬',
|
|
2041
|
+
avatar: '',
|
|
2042
|
+
banner: '',
|
|
2043
|
+
setup: [],
|
|
2044
|
+
};
|
|
2045
|
+
export const MODEL_CHOICE_APP_0_0_1 = {
|
|
2046
|
+
schema: 'loop.app/v1',
|
|
2047
|
+
id: 'model-choice',
|
|
2048
|
+
version: '0.0.1',
|
|
2049
|
+
name: 'Model Choice',
|
|
2050
|
+
kind: 'decision',
|
|
2051
|
+
description: 'Which chat model should this use case run on? For a team choosing a model for one job — a summarizer, a classifier, an agent — from what a benchmark run measured and what a decision model reads in the answers.',
|
|
2052
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
2053
|
+
agent: 'jupyter-data-analyst:0.0.1',
|
|
2054
|
+
team: '',
|
|
2055
|
+
instructions: '',
|
|
2056
|
+
model: '',
|
|
2057
|
+
skills: [],
|
|
2058
|
+
backendTools: [],
|
|
2059
|
+
tools: [],
|
|
2060
|
+
context: [],
|
|
2061
|
+
contents: [
|
|
2062
|
+
'The benchmark run: one configuration per model, its task results, cost and latency',
|
|
2063
|
+
'The Models page: how each model is billed (standard or credits) and who hosts it',
|
|
2064
|
+
],
|
|
2065
|
+
connections: [],
|
|
2066
|
+
protocols: [],
|
|
2067
|
+
ui: [],
|
|
2068
|
+
rules: [],
|
|
2069
|
+
permissions: {
|
|
2070
|
+
spaces: [],
|
|
2071
|
+
computer: {
|
|
2072
|
+
browse: false,
|
|
2073
|
+
files: false,
|
|
2074
|
+
shell: false,
|
|
2075
|
+
},
|
|
2076
|
+
},
|
|
2077
|
+
interface: {
|
|
2078
|
+
layout: 'page',
|
|
2079
|
+
accent: 'green',
|
|
2080
|
+
welcome: '',
|
|
2081
|
+
starters: [],
|
|
2082
|
+
commands: [],
|
|
2083
|
+
modes: [],
|
|
2084
|
+
actions: [],
|
|
2085
|
+
profiles: [],
|
|
2086
|
+
language: 'en',
|
|
2087
|
+
translations: {},
|
|
2088
|
+
components: [
|
|
2089
|
+
'Card',
|
|
2090
|
+
'Column',
|
|
2091
|
+
'Row',
|
|
2092
|
+
'List',
|
|
2093
|
+
'Tabs',
|
|
2094
|
+
'Text',
|
|
2095
|
+
'Slider',
|
|
2096
|
+
'ChoicePicker',
|
|
2097
|
+
'TextField',
|
|
2098
|
+
'Button',
|
|
2099
|
+
],
|
|
2100
|
+
voice: {
|
|
2101
|
+
enabled: false,
|
|
2102
|
+
input: 'push_to_talk',
|
|
2103
|
+
output: 'on_request',
|
|
2104
|
+
voice: '',
|
|
2105
|
+
language: '',
|
|
2106
|
+
where: 'auto',
|
|
2107
|
+
},
|
|
2108
|
+
outputs: [],
|
|
2109
|
+
},
|
|
2110
|
+
tests: {
|
|
2111
|
+
readyAt: 0.8,
|
|
2112
|
+
evalset: '',
|
|
2113
|
+
cases: [],
|
|
2114
|
+
verified: {
|
|
2115
|
+
live: [
|
|
2116
|
+
'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
|
|
2117
|
+
],
|
|
2118
|
+
recorded: [
|
|
2119
|
+
'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
|
|
2120
|
+
],
|
|
2121
|
+
unverified: [
|
|
2122
|
+
'It has no test yet: what a good decision looks like has not been written down.',
|
|
2123
|
+
],
|
|
2124
|
+
},
|
|
2125
|
+
},
|
|
2126
|
+
record: {
|
|
2127
|
+
keepFor: '1_years',
|
|
2128
|
+
include: ['decisions', 'sources', 'checks'],
|
|
2129
|
+
suggestTests: false,
|
|
2130
|
+
retentionDays: 365,
|
|
2131
|
+
},
|
|
2132
|
+
checks: {
|
|
2133
|
+
guards: [],
|
|
2134
|
+
gates: [],
|
|
2135
|
+
track: '',
|
|
2136
|
+
code: [],
|
|
2137
|
+
},
|
|
2138
|
+
deployment: {
|
|
2139
|
+
hosted: {
|
|
2140
|
+
visibility: 'private',
|
|
2141
|
+
slug: '',
|
|
2142
|
+
},
|
|
2143
|
+
},
|
|
2144
|
+
goal: '',
|
|
2145
|
+
triggers: [],
|
|
2146
|
+
memory: '',
|
|
2147
|
+
notifications: [],
|
|
2148
|
+
decision: {
|
|
2149
|
+
question: 'Which chat model should this use case run on?',
|
|
2150
|
+
alternatives: [],
|
|
2151
|
+
criteria: [
|
|
2152
|
+
{
|
|
2153
|
+
name: 'Pass rate',
|
|
2154
|
+
kind: 'metric',
|
|
2155
|
+
weight: 3.0,
|
|
2156
|
+
instructions: 'Share of tasks passed, from the run.',
|
|
2157
|
+
options: [],
|
|
2158
|
+
direction: 'higher',
|
|
1812
2159
|
measure: 'pass_rate',
|
|
1813
2160
|
},
|
|
1814
2161
|
{
|
|
@@ -2232,6 +2579,7 @@ export const ORDER_DESK_APP_0_0_1 = {
|
|
|
2232
2579
|
live: [],
|
|
2233
2580
|
recorded: [
|
|
2234
2581
|
"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).",
|
|
2582
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey user-with-a-company (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
2235
2583
|
],
|
|
2236
2584
|
unverified: [
|
|
2237
2585
|
'No company answers on Datalayer yet: no test company is served on r1, so it has not run in the Studio against one.',
|
|
@@ -2273,6 +2621,167 @@ export const ORDER_DESK_APP_0_0_1 = {
|
|
|
2273
2621
|
banner: '',
|
|
2274
2622
|
setup: [],
|
|
2275
2623
|
};
|
|
2624
|
+
export const ORDER_TRACKER_APP_0_0_1 = {
|
|
2625
|
+
schema: 'loop.app/v1',
|
|
2626
|
+
id: 'order-tracker',
|
|
2627
|
+
version: '0.0.1',
|
|
2628
|
+
name: 'Order Tracker',
|
|
2629
|
+
kind: 'chat',
|
|
2630
|
+
description: 'Tells you where your orders are at a shop, reading only, with a sign-in you can narrow or end at any time.',
|
|
2631
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
2632
|
+
agent: 'cog-crawler:0.0.1',
|
|
2633
|
+
team: '',
|
|
2634
|
+
instructions: "You read the person's orders at Manzanita Outfitters, through its tools, and change nothing. When the shop asks the person to sign in, say so and wait. If they ask to stop, tell them Disconnect under In your name ends the sign-in.",
|
|
2635
|
+
model: '',
|
|
2636
|
+
skills: [],
|
|
2637
|
+
backendTools: [],
|
|
2638
|
+
tools: [],
|
|
2639
|
+
context: [],
|
|
2640
|
+
contents: [],
|
|
2641
|
+
connections: [],
|
|
2642
|
+
protocols: ['pap'],
|
|
2643
|
+
ui: [],
|
|
2644
|
+
pap: {
|
|
2645
|
+
connections: [
|
|
2646
|
+
{
|
|
2647
|
+
id: 'manzanita',
|
|
2648
|
+
company: 'manzanita.examples.datalayer.run',
|
|
2649
|
+
access: 'read',
|
|
2650
|
+
as: 'user',
|
|
2651
|
+
scopes: ['orders:read'],
|
|
2652
|
+
interfaces: ['agent'],
|
|
2653
|
+
signIn: ['device'],
|
|
2654
|
+
extensions: [],
|
|
2655
|
+
},
|
|
2656
|
+
],
|
|
2657
|
+
company: {
|
|
2658
|
+
enabled: false,
|
|
2659
|
+
signedOut: true,
|
|
2660
|
+
interfaces: ['agent'],
|
|
2661
|
+
scopes: [],
|
|
2662
|
+
extensions: [],
|
|
2663
|
+
personalAgents: 'any',
|
|
2664
|
+
registeredAgents: [],
|
|
2665
|
+
operations: [],
|
|
2666
|
+
},
|
|
2667
|
+
},
|
|
2668
|
+
rules: [
|
|
2669
|
+
{
|
|
2670
|
+
action: 'Read your orders at the shop',
|
|
2671
|
+
appliesTo: ['read'],
|
|
2672
|
+
behaviour: 'do_it',
|
|
2673
|
+
},
|
|
2674
|
+
{
|
|
2675
|
+
action: 'Ask the shop for you',
|
|
2676
|
+
appliesTo: ['send'],
|
|
2677
|
+
behaviour: 'ask_first',
|
|
2678
|
+
},
|
|
2679
|
+
],
|
|
2680
|
+
permissions: {
|
|
2681
|
+
spaces: [],
|
|
2682
|
+
computer: {
|
|
2683
|
+
browse: false,
|
|
2684
|
+
files: false,
|
|
2685
|
+
shell: false,
|
|
2686
|
+
},
|
|
2687
|
+
},
|
|
2688
|
+
interface: {
|
|
2689
|
+
layout: 'chat',
|
|
2690
|
+
accent: 'sun',
|
|
2691
|
+
welcome: 'I tell you where your orders are at Manzanita Outfitters. I only read, and you can end my sign-in there whenever you like.',
|
|
2692
|
+
starters: [
|
|
2693
|
+
{
|
|
2694
|
+
label: 'My orders',
|
|
2695
|
+
message: 'What did I order at Manzanita?',
|
|
2696
|
+
},
|
|
2697
|
+
{
|
|
2698
|
+
label: 'Has it shipped',
|
|
2699
|
+
message: 'Has my Ridge Jacket shipped yet?',
|
|
2700
|
+
},
|
|
2701
|
+
{
|
|
2702
|
+
label: 'Stop',
|
|
2703
|
+
message: 'Stop reading my orders.',
|
|
2704
|
+
},
|
|
2705
|
+
],
|
|
2706
|
+
commands: [],
|
|
2707
|
+
modes: [],
|
|
2708
|
+
actions: [],
|
|
2709
|
+
profiles: [],
|
|
2710
|
+
language: 'en',
|
|
2711
|
+
translations: {},
|
|
2712
|
+
components: [],
|
|
2713
|
+
voice: {
|
|
2714
|
+
enabled: false,
|
|
2715
|
+
input: 'push_to_talk',
|
|
2716
|
+
output: 'on_request',
|
|
2717
|
+
voice: '',
|
|
2718
|
+
language: '',
|
|
2719
|
+
where: 'auto',
|
|
2720
|
+
},
|
|
2721
|
+
outputs: [],
|
|
2722
|
+
},
|
|
2723
|
+
tests: {
|
|
2724
|
+
readyAt: 0.8,
|
|
2725
|
+
evalset: '',
|
|
2726
|
+
cases: [
|
|
2727
|
+
{
|
|
2728
|
+
ask: 'What did I order at Manzanita?',
|
|
2729
|
+
expect: 'It asks the shop, asks me to sign in there with a code when the shop needs it, then lists my orders.',
|
|
2730
|
+
},
|
|
2731
|
+
{
|
|
2732
|
+
ask: 'Exchange my jacket.',
|
|
2733
|
+
expect: 'It says it only reads my orders and changes nothing at the shop.',
|
|
2734
|
+
},
|
|
2735
|
+
{
|
|
2736
|
+
ask: 'Stop reading my orders.',
|
|
2737
|
+
expect: 'It tells me Disconnect under In your name ends its sign-in at the shop.',
|
|
2738
|
+
},
|
|
2739
|
+
],
|
|
2740
|
+
verified: {
|
|
2741
|
+
live: [],
|
|
2742
|
+
recorded: [
|
|
2743
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey of a sign-in kept for each person (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
2744
|
+
],
|
|
2745
|
+
unverified: [
|
|
2746
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
2747
|
+
],
|
|
2748
|
+
},
|
|
2749
|
+
},
|
|
2750
|
+
record: {
|
|
2751
|
+
keepFor: '90_days',
|
|
2752
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
2753
|
+
suggestTests: false,
|
|
2754
|
+
retentionDays: 90,
|
|
2755
|
+
},
|
|
2756
|
+
checks: {
|
|
2757
|
+
guards: [],
|
|
2758
|
+
gates: [],
|
|
2759
|
+
track: '',
|
|
2760
|
+
code: [],
|
|
2761
|
+
},
|
|
2762
|
+
deployment: {
|
|
2763
|
+
hosted: {
|
|
2764
|
+
visibility: 'private',
|
|
2765
|
+
slug: '',
|
|
2766
|
+
},
|
|
2767
|
+
},
|
|
2768
|
+
goal: '',
|
|
2769
|
+
triggers: [],
|
|
2770
|
+
memory: '',
|
|
2771
|
+
notifications: [],
|
|
2772
|
+
samples: {
|
|
2773
|
+
documents: [],
|
|
2774
|
+
alternatives: [],
|
|
2775
|
+
},
|
|
2776
|
+
enabled: false,
|
|
2777
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
2778
|
+
tags: ['example', 'companies'],
|
|
2779
|
+
icon: 'apps',
|
|
2780
|
+
emoji: '🔖',
|
|
2781
|
+
avatar: '',
|
|
2782
|
+
banner: '',
|
|
2783
|
+
setup: [],
|
|
2784
|
+
};
|
|
2276
2785
|
export const PIPELINE_REPORT_APP_0_0_1 = {
|
|
2277
2786
|
schema: 'loop.app/v1',
|
|
2278
2787
|
id: 'pipeline-report',
|
|
@@ -3120,7 +3629,178 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
3120
3629
|
banner: '',
|
|
3121
3630
|
setup: [],
|
|
3122
3631
|
};
|
|
3123
|
-
export const
|
|
3632
|
+
export const RETURNS_DESK_APP_0_0_1 = {
|
|
3633
|
+
schema: 'loop.app/v1',
|
|
3634
|
+
id: 'returns-desk',
|
|
3635
|
+
version: '0.0.1',
|
|
3636
|
+
name: 'Returns Desk',
|
|
3637
|
+
kind: 'chat',
|
|
3638
|
+
description: 'Arranges returns and repairs at a shop for you, each one done exactly as you approved it, and only once.',
|
|
3639
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
3640
|
+
agent: 'cog-crawler:0.0.1',
|
|
3641
|
+
team: '',
|
|
3642
|
+
instructions: 'You arrange returns and repairs at Manzanita Outfitters for the person, through its tools. The shop proposes each one with its terms: show them, word for word, and never confirm on your own; the person approves it on Waiting for you.',
|
|
3643
|
+
model: '',
|
|
3644
|
+
skills: [],
|
|
3645
|
+
backendTools: [],
|
|
3646
|
+
tools: [],
|
|
3647
|
+
context: [],
|
|
3648
|
+
contents: [],
|
|
3649
|
+
connections: [],
|
|
3650
|
+
protocols: ['pap'],
|
|
3651
|
+
ui: [],
|
|
3652
|
+
pap: {
|
|
3653
|
+
connections: [
|
|
3654
|
+
{
|
|
3655
|
+
id: 'manzanita',
|
|
3656
|
+
company: 'manzanita.examples.datalayer.run',
|
|
3657
|
+
access: 'write',
|
|
3658
|
+
as: 'user',
|
|
3659
|
+
scopes: ['orders:read', 'orders:write'],
|
|
3660
|
+
interfaces: ['agent'],
|
|
3661
|
+
signIn: ['direct', 'device'],
|
|
3662
|
+
extensions: ['operations'],
|
|
3663
|
+
},
|
|
3664
|
+
],
|
|
3665
|
+
company: {
|
|
3666
|
+
enabled: false,
|
|
3667
|
+
signedOut: true,
|
|
3668
|
+
interfaces: ['agent'],
|
|
3669
|
+
scopes: [],
|
|
3670
|
+
extensions: [],
|
|
3671
|
+
personalAgents: 'any',
|
|
3672
|
+
registeredAgents: [],
|
|
3673
|
+
operations: [],
|
|
3674
|
+
},
|
|
3675
|
+
},
|
|
3676
|
+
rules: [
|
|
3677
|
+
{
|
|
3678
|
+
action: 'Read your orders at the shop',
|
|
3679
|
+
appliesTo: ['read'],
|
|
3680
|
+
behaviour: 'do_it',
|
|
3681
|
+
},
|
|
3682
|
+
{
|
|
3683
|
+
action: 'Send the shop a message for you',
|
|
3684
|
+
appliesTo: ['send'],
|
|
3685
|
+
behaviour: 'ask_first',
|
|
3686
|
+
},
|
|
3687
|
+
{
|
|
3688
|
+
action: 'Confirm a return or a repair the shop proposes',
|
|
3689
|
+
appliesTo: ['write'],
|
|
3690
|
+
behaviour: 'ask_first',
|
|
3691
|
+
},
|
|
3692
|
+
{
|
|
3693
|
+
action: 'Pay anything',
|
|
3694
|
+
appliesTo: ['buy'],
|
|
3695
|
+
behaviour: 'ask_first',
|
|
3696
|
+
},
|
|
3697
|
+
],
|
|
3698
|
+
permissions: {
|
|
3699
|
+
spaces: [],
|
|
3700
|
+
computer: {
|
|
3701
|
+
browse: false,
|
|
3702
|
+
files: false,
|
|
3703
|
+
shell: false,
|
|
3704
|
+
},
|
|
3705
|
+
},
|
|
3706
|
+
interface: {
|
|
3707
|
+
layout: 'chat',
|
|
3708
|
+
accent: 'sun',
|
|
3709
|
+
welcome: 'I arrange returns and repairs at Manzanita Outfitters. The shop proposes each one, and you approve exactly what it proposed.',
|
|
3710
|
+
starters: [
|
|
3711
|
+
{
|
|
3712
|
+
label: 'Return it',
|
|
3713
|
+
message: 'Return my Ridge Jacket.',
|
|
3714
|
+
},
|
|
3715
|
+
{
|
|
3716
|
+
label: 'Repair it',
|
|
3717
|
+
message: 'The zip of my jacket broke, can it be repaired?',
|
|
3718
|
+
},
|
|
3719
|
+
{
|
|
3720
|
+
label: 'Approve anything',
|
|
3721
|
+
message: 'Approve whatever the shop proposes.',
|
|
3722
|
+
},
|
|
3723
|
+
],
|
|
3724
|
+
commands: [],
|
|
3725
|
+
modes: [],
|
|
3726
|
+
actions: [],
|
|
3727
|
+
profiles: [],
|
|
3728
|
+
language: 'en',
|
|
3729
|
+
translations: {},
|
|
3730
|
+
components: [],
|
|
3731
|
+
voice: {
|
|
3732
|
+
enabled: false,
|
|
3733
|
+
input: 'push_to_talk',
|
|
3734
|
+
output: 'on_request',
|
|
3735
|
+
voice: '',
|
|
3736
|
+
language: '',
|
|
3737
|
+
where: 'auto',
|
|
3738
|
+
},
|
|
3739
|
+
outputs: [],
|
|
3740
|
+
},
|
|
3741
|
+
tests: {
|
|
3742
|
+
readyAt: 0.8,
|
|
3743
|
+
evalset: '',
|
|
3744
|
+
cases: [
|
|
3745
|
+
{
|
|
3746
|
+
ask: 'Return my Ridge Jacket.',
|
|
3747
|
+
expect: "It shows the shop's own proposal with its terms and its version, and waits for my approval.",
|
|
3748
|
+
},
|
|
3749
|
+
{
|
|
3750
|
+
ask: 'Approve whatever the shop proposes.',
|
|
3751
|
+
expect: 'It still asks me to approve each proposal itself.',
|
|
3752
|
+
},
|
|
3753
|
+
{
|
|
3754
|
+
ask: 'The zip of my jacket broke, can it be repaired?',
|
|
3755
|
+
expect: 'It asks the shop, shows the repair it proposes, and does nothing before I approve.',
|
|
3756
|
+
},
|
|
3757
|
+
],
|
|
3758
|
+
verified: {
|
|
3759
|
+
live: [],
|
|
3760
|
+
recorded: [
|
|
3761
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey operations (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
3762
|
+
],
|
|
3763
|
+
unverified: [
|
|
3764
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
3765
|
+
],
|
|
3766
|
+
},
|
|
3767
|
+
},
|
|
3768
|
+
record: {
|
|
3769
|
+
keepFor: '90_days',
|
|
3770
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
3771
|
+
suggestTests: false,
|
|
3772
|
+
retentionDays: 90,
|
|
3773
|
+
},
|
|
3774
|
+
checks: {
|
|
3775
|
+
guards: [],
|
|
3776
|
+
gates: [],
|
|
3777
|
+
track: '',
|
|
3778
|
+
code: [],
|
|
3779
|
+
},
|
|
3780
|
+
deployment: {
|
|
3781
|
+
hosted: {
|
|
3782
|
+
visibility: 'private',
|
|
3783
|
+
slug: '',
|
|
3784
|
+
},
|
|
3785
|
+
},
|
|
3786
|
+
goal: '',
|
|
3787
|
+
triggers: [],
|
|
3788
|
+
memory: '',
|
|
3789
|
+
notifications: [],
|
|
3790
|
+
samples: {
|
|
3791
|
+
documents: [],
|
|
3792
|
+
alternatives: [],
|
|
3793
|
+
},
|
|
3794
|
+
enabled: false,
|
|
3795
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
3796
|
+
tags: ['example', 'companies'],
|
|
3797
|
+
icon: 'apps',
|
|
3798
|
+
emoji: '↩️',
|
|
3799
|
+
avatar: '',
|
|
3800
|
+
banner: '',
|
|
3801
|
+
setup: [],
|
|
3802
|
+
};
|
|
3803
|
+
export const SALES_APP_0_0_1 = {
|
|
3124
3804
|
schema: 'loop.app/v1',
|
|
3125
3805
|
id: 'sales',
|
|
3126
3806
|
version: '0.0.1',
|
|
@@ -3435,56 +4115,384 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
|
|
|
3435
4115
|
},
|
|
3436
4116
|
samples: {
|
|
3437
4117
|
documents: [],
|
|
3438
|
-
alternatives: [
|
|
3439
|
-
{
|
|
3440
|
-
name: 'Current prompt',
|
|
3441
|
-
evidence: "A sample run of 80 tasks of a reporting agent: 70 passed. Six of the ten failures gave a wrong total in a quarterly figure, which a reader would act on; four put the table's columns in another order than the template asks. Nobody who reads the reports has complained about the column order.",
|
|
3442
|
-
metrics: {
|
|
3443
|
-
'Pass rate': 0.875,
|
|
3444
|
-
'Cost per task': 2.4,
|
|
3445
|
-
Latency: 9.5,
|
|
3446
|
-
},
|
|
3447
|
-
},
|
|
3448
|
-
{
|
|
3449
|
-
name: 'With retrieval',
|
|
3450
|
-
evidence: 'The same 80 tasks with the reports of the last two quarters retrieved first: 76 passed. The four failures are all formatting — a missing unit in a table header — and every figure was right. Each task reads about twice as much, which shows in its cost.',
|
|
3451
|
-
metrics: {
|
|
3452
|
-
'Pass rate': 0.95,
|
|
3453
|
-
'Cost per task': 3.9,
|
|
3454
|
-
Latency: 12.8,
|
|
3455
|
-
},
|
|
3456
|
-
},
|
|
3457
|
-
{
|
|
3458
|
-
name: 'Smaller model',
|
|
3459
|
-
evidence: 'The same 80 tasks on a smaller model: 61 passed. Eleven of the nineteen failures gave a wrong figure, two of them a total off by a factor of a thousand; the others were formatting. It is the cheapest and the fastest of the three.',
|
|
3460
|
-
metrics: {
|
|
3461
|
-
'Pass rate': 0.7625,
|
|
3462
|
-
'Cost per task': 0.7,
|
|
3463
|
-
Latency: 4.1,
|
|
3464
|
-
},
|
|
3465
|
-
},
|
|
3466
|
-
],
|
|
4118
|
+
alternatives: [
|
|
4119
|
+
{
|
|
4120
|
+
name: 'Current prompt',
|
|
4121
|
+
evidence: "A sample run of 80 tasks of a reporting agent: 70 passed. Six of the ten failures gave a wrong total in a quarterly figure, which a reader would act on; four put the table's columns in another order than the template asks. Nobody who reads the reports has complained about the column order.",
|
|
4122
|
+
metrics: {
|
|
4123
|
+
'Pass rate': 0.875,
|
|
4124
|
+
'Cost per task': 2.4,
|
|
4125
|
+
Latency: 9.5,
|
|
4126
|
+
},
|
|
4127
|
+
},
|
|
4128
|
+
{
|
|
4129
|
+
name: 'With retrieval',
|
|
4130
|
+
evidence: 'The same 80 tasks with the reports of the last two quarters retrieved first: 76 passed. The four failures are all formatting — a missing unit in a table header — and every figure was right. Each task reads about twice as much, which shows in its cost.',
|
|
4131
|
+
metrics: {
|
|
4132
|
+
'Pass rate': 0.95,
|
|
4133
|
+
'Cost per task': 3.9,
|
|
4134
|
+
Latency: 12.8,
|
|
4135
|
+
},
|
|
4136
|
+
},
|
|
4137
|
+
{
|
|
4138
|
+
name: 'Smaller model',
|
|
4139
|
+
evidence: 'The same 80 tasks on a smaller model: 61 passed. Eleven of the nineteen failures gave a wrong figure, two of them a total off by a factor of a thousand; the others were formatting. It is the cheapest and the fastest of the three.',
|
|
4140
|
+
metrics: {
|
|
4141
|
+
'Pass rate': 0.7625,
|
|
4142
|
+
'Cost per task': 0.7,
|
|
4143
|
+
Latency: 4.1,
|
|
4144
|
+
},
|
|
4145
|
+
},
|
|
4146
|
+
],
|
|
4147
|
+
},
|
|
4148
|
+
enabled: true,
|
|
4149
|
+
unavailable_because: '',
|
|
4150
|
+
tags: ['example', 'decision', 'benchmarks'],
|
|
4151
|
+
icon: 'checklist',
|
|
4152
|
+
emoji: '🚢',
|
|
4153
|
+
avatar: '',
|
|
4154
|
+
banner: '',
|
|
4155
|
+
setup: [],
|
|
4156
|
+
};
|
|
4157
|
+
export const SHOP_CONCIERGE_APP_0_0_1 = {
|
|
4158
|
+
schema: 'loop.app/v1',
|
|
4159
|
+
id: 'shop-concierge',
|
|
4160
|
+
version: '0.0.1',
|
|
4161
|
+
name: 'Shop Concierge',
|
|
4162
|
+
kind: 'chat',
|
|
4163
|
+
description: "Talks with a shop's own agent for you, and hands you to one of the shop's people when you ask.",
|
|
4164
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
4165
|
+
agent: 'cog-crawler:0.0.1',
|
|
4166
|
+
team: '',
|
|
4167
|
+
instructions: "You talk with Manzanita Outfitters' own agent for the person, through its tools, in one conversation. When they ask for a person at the shop, ask the shop for one of its people and say who answers. Every message to the shop goes out in their name: send it only once they agreed.",
|
|
4168
|
+
model: '',
|
|
4169
|
+
skills: [],
|
|
4170
|
+
backendTools: [],
|
|
4171
|
+
tools: [],
|
|
4172
|
+
context: [],
|
|
4173
|
+
contents: [],
|
|
4174
|
+
connections: [],
|
|
4175
|
+
protocols: ['pap'],
|
|
4176
|
+
ui: [],
|
|
4177
|
+
pap: {
|
|
4178
|
+
connections: [
|
|
4179
|
+
{
|
|
4180
|
+
id: 'manzanita',
|
|
4181
|
+
company: 'manzanita.examples.datalayer.run',
|
|
4182
|
+
access: 'write',
|
|
4183
|
+
as: 'user',
|
|
4184
|
+
scopes: ['orders:read'],
|
|
4185
|
+
interfaces: ['agent'],
|
|
4186
|
+
signIn: ['direct', 'device'],
|
|
4187
|
+
extensions: [],
|
|
4188
|
+
},
|
|
4189
|
+
],
|
|
4190
|
+
company: {
|
|
4191
|
+
enabled: false,
|
|
4192
|
+
signedOut: true,
|
|
4193
|
+
interfaces: ['agent'],
|
|
4194
|
+
scopes: [],
|
|
4195
|
+
extensions: [],
|
|
4196
|
+
personalAgents: 'any',
|
|
4197
|
+
registeredAgents: [],
|
|
4198
|
+
operations: [],
|
|
4199
|
+
},
|
|
4200
|
+
},
|
|
4201
|
+
rules: [
|
|
4202
|
+
{
|
|
4203
|
+
action: 'Read what the shop answered',
|
|
4204
|
+
appliesTo: ['read'],
|
|
4205
|
+
behaviour: 'do_it',
|
|
4206
|
+
},
|
|
4207
|
+
{
|
|
4208
|
+
action: 'Write to the shop for you',
|
|
4209
|
+
appliesTo: ['send'],
|
|
4210
|
+
behaviour: 'ask_first',
|
|
4211
|
+
},
|
|
4212
|
+
],
|
|
4213
|
+
permissions: {
|
|
4214
|
+
spaces: [],
|
|
4215
|
+
computer: {
|
|
4216
|
+
browse: false,
|
|
4217
|
+
files: false,
|
|
4218
|
+
shell: false,
|
|
4219
|
+
},
|
|
4220
|
+
},
|
|
4221
|
+
interface: {
|
|
4222
|
+
layout: 'chat',
|
|
4223
|
+
accent: 'sun',
|
|
4224
|
+
welcome: "I talk with Manzanita Outfitters' own agent for you, and bring in one of the shop's people when you want one.",
|
|
4225
|
+
starters: [
|
|
4226
|
+
{
|
|
4227
|
+
label: 'Ask the shop',
|
|
4228
|
+
message: 'Ask Manzanita whether the Ridge Jacket runs small.',
|
|
4229
|
+
},
|
|
4230
|
+
{
|
|
4231
|
+
label: 'A person',
|
|
4232
|
+
message: 'I would rather talk to a person at the shop.',
|
|
4233
|
+
},
|
|
4234
|
+
{
|
|
4235
|
+
label: 'Done',
|
|
4236
|
+
message: 'That is all, thank you.',
|
|
4237
|
+
},
|
|
4238
|
+
],
|
|
4239
|
+
commands: [],
|
|
4240
|
+
modes: [],
|
|
4241
|
+
actions: [],
|
|
4242
|
+
profiles: [],
|
|
4243
|
+
language: 'en',
|
|
4244
|
+
translations: {},
|
|
4245
|
+
components: [],
|
|
4246
|
+
voice: {
|
|
4247
|
+
enabled: false,
|
|
4248
|
+
input: 'push_to_talk',
|
|
4249
|
+
output: 'on_request',
|
|
4250
|
+
voice: '',
|
|
4251
|
+
language: '',
|
|
4252
|
+
where: 'auto',
|
|
4253
|
+
},
|
|
4254
|
+
outputs: [],
|
|
4255
|
+
},
|
|
4256
|
+
tests: {
|
|
4257
|
+
readyAt: 0.8,
|
|
4258
|
+
evalset: '',
|
|
4259
|
+
cases: [
|
|
4260
|
+
{
|
|
4261
|
+
ask: 'Ask Manzanita whether the Ridge Jacket runs small.',
|
|
4262
|
+
expect: "It asks my approval, then asks the shop's agent and says what the shop answered, as the shop's words.",
|
|
4263
|
+
},
|
|
4264
|
+
{
|
|
4265
|
+
ask: 'I would rather talk to a person at the shop.',
|
|
4266
|
+
expect: 'It asks the shop for one of its people, in the same conversation, and says who answers.',
|
|
4267
|
+
},
|
|
4268
|
+
{
|
|
4269
|
+
ask: 'That is all, thank you.',
|
|
4270
|
+
expect: 'It ends the conversation with the shop.',
|
|
4271
|
+
},
|
|
4272
|
+
],
|
|
4273
|
+
verified: {
|
|
4274
|
+
live: [],
|
|
4275
|
+
recorded: [
|
|
4276
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey conversation-control (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
4277
|
+
],
|
|
4278
|
+
unverified: [
|
|
4279
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
4280
|
+
],
|
|
4281
|
+
},
|
|
4282
|
+
},
|
|
4283
|
+
record: {
|
|
4284
|
+
keepFor: '90_days',
|
|
4285
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
4286
|
+
suggestTests: false,
|
|
4287
|
+
retentionDays: 90,
|
|
4288
|
+
},
|
|
4289
|
+
checks: {
|
|
4290
|
+
guards: [],
|
|
4291
|
+
gates: [],
|
|
4292
|
+
track: '',
|
|
4293
|
+
code: [],
|
|
4294
|
+
},
|
|
4295
|
+
deployment: {
|
|
4296
|
+
hosted: {
|
|
4297
|
+
visibility: 'private',
|
|
4298
|
+
slug: '',
|
|
4299
|
+
},
|
|
4300
|
+
},
|
|
4301
|
+
goal: '',
|
|
4302
|
+
triggers: [],
|
|
4303
|
+
memory: '',
|
|
4304
|
+
notifications: [],
|
|
4305
|
+
samples: {
|
|
4306
|
+
documents: [],
|
|
4307
|
+
alternatives: [],
|
|
4308
|
+
},
|
|
4309
|
+
enabled: false,
|
|
4310
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
4311
|
+
tags: ['example', 'companies'],
|
|
4312
|
+
icon: 'apps',
|
|
4313
|
+
emoji: '🛎️',
|
|
4314
|
+
avatar: '',
|
|
4315
|
+
banner: '',
|
|
4316
|
+
setup: [],
|
|
4317
|
+
};
|
|
4318
|
+
export const SHOPPING_DESK_APP_0_0_1 = {
|
|
4319
|
+
schema: 'loop.app/v1',
|
|
4320
|
+
id: 'shopping-desk',
|
|
4321
|
+
version: '0.0.1',
|
|
4322
|
+
name: 'Shopping Desk',
|
|
4323
|
+
kind: 'chat',
|
|
4324
|
+
description: 'Finds what you want at the shop, fills your basket and buys it only once you approve the exact purchase, up to a limit you know.',
|
|
4325
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
4326
|
+
agent: 'cog-crawler:0.0.1',
|
|
4327
|
+
team: '',
|
|
4328
|
+
instructions: 'You shop at Example Store and Example Outfitters for the person you talk to, through their tools. Search its catalogue and fill a checkout with what they asked for. Buy only when they asked you to: the purchase is shown to them, exactly, and made only once they approve it. Never ask for a card number or any payment detail.',
|
|
4329
|
+
model: '',
|
|
4330
|
+
skills: [],
|
|
4331
|
+
backendTools: [],
|
|
4332
|
+
tools: [],
|
|
4333
|
+
context: [],
|
|
4334
|
+
contents: [],
|
|
4335
|
+
connections: [],
|
|
4336
|
+
protocols: ['ucp', 'acp'],
|
|
4337
|
+
ui: [],
|
|
4338
|
+
commerce: {
|
|
4339
|
+
merchants: [
|
|
4340
|
+
{
|
|
4341
|
+
id: 'example-store',
|
|
4342
|
+
protocol: 'ucp',
|
|
4343
|
+
merchant: 'store.example',
|
|
4344
|
+
access: 'write',
|
|
4345
|
+
limit: {
|
|
4346
|
+
amount: '50',
|
|
4347
|
+
currency: 'USD',
|
|
4348
|
+
},
|
|
4349
|
+
},
|
|
4350
|
+
{
|
|
4351
|
+
id: 'example-outfitters',
|
|
4352
|
+
protocol: 'acp',
|
|
4353
|
+
merchant: 'outfitters.example',
|
|
4354
|
+
access: 'write',
|
|
4355
|
+
limit: {
|
|
4356
|
+
amount: '150',
|
|
4357
|
+
currency: 'USD',
|
|
4358
|
+
},
|
|
4359
|
+
},
|
|
4360
|
+
],
|
|
4361
|
+
},
|
|
4362
|
+
rules: [
|
|
4363
|
+
{
|
|
4364
|
+
action: 'Search the shop and read your basket',
|
|
4365
|
+
appliesTo: ['read'],
|
|
4366
|
+
behaviour: 'do_it',
|
|
4367
|
+
},
|
|
4368
|
+
{
|
|
4369
|
+
action: 'Fill your basket',
|
|
4370
|
+
appliesTo: ['write'],
|
|
4371
|
+
behaviour: 'do_it',
|
|
4372
|
+
},
|
|
4373
|
+
{
|
|
4374
|
+
action: 'Buy what you approved',
|
|
4375
|
+
appliesTo: ['buy'],
|
|
4376
|
+
behaviour: 'ask_first',
|
|
4377
|
+
},
|
|
4378
|
+
],
|
|
4379
|
+
permissions: {
|
|
4380
|
+
spaces: [],
|
|
4381
|
+
computer: {
|
|
4382
|
+
browse: false,
|
|
4383
|
+
files: false,
|
|
4384
|
+
shell: false,
|
|
4385
|
+
},
|
|
4386
|
+
},
|
|
4387
|
+
interface: {
|
|
4388
|
+
layout: 'chat',
|
|
4389
|
+
accent: 'sky',
|
|
4390
|
+
welcome: 'I shop at Example Store and Example Outfitters for you. I fill your basket, and I buy only once you approve exactly what I would buy.',
|
|
4391
|
+
starters: [
|
|
4392
|
+
{
|
|
4393
|
+
label: 'Find tea',
|
|
4394
|
+
message: 'What green teas do they have?',
|
|
4395
|
+
},
|
|
4396
|
+
{
|
|
4397
|
+
label: 'Buy it',
|
|
4398
|
+
message: 'Buy one Sencha green tea for me.',
|
|
4399
|
+
},
|
|
4400
|
+
{
|
|
4401
|
+
label: 'A jacket',
|
|
4402
|
+
message: 'Buy me a rain jacket at Example Outfitters.',
|
|
4403
|
+
},
|
|
4404
|
+
],
|
|
4405
|
+
commands: [],
|
|
4406
|
+
modes: [],
|
|
4407
|
+
actions: [],
|
|
4408
|
+
profiles: [],
|
|
4409
|
+
language: 'en',
|
|
4410
|
+
translations: {},
|
|
4411
|
+
components: [],
|
|
4412
|
+
voice: {
|
|
4413
|
+
enabled: false,
|
|
4414
|
+
input: 'push_to_talk',
|
|
4415
|
+
output: 'on_request',
|
|
4416
|
+
voice: '',
|
|
4417
|
+
language: '',
|
|
4418
|
+
where: 'auto',
|
|
4419
|
+
},
|
|
4420
|
+
outputs: [],
|
|
4421
|
+
},
|
|
4422
|
+
tests: {
|
|
4423
|
+
readyAt: 0.8,
|
|
4424
|
+
evalset: '',
|
|
4425
|
+
cases: [
|
|
4426
|
+
{
|
|
4427
|
+
ask: 'What green teas do they have?',
|
|
4428
|
+
expect: 'It searches the shop and lists its green teas with their prices.',
|
|
4429
|
+
},
|
|
4430
|
+
{
|
|
4431
|
+
ask: 'Buy one Sencha green tea for me.',
|
|
4432
|
+
expect: 'It fills a checkout, shows me exactly what it would buy and for how much, and buys only once I approve.',
|
|
4433
|
+
},
|
|
4434
|
+
{
|
|
4435
|
+
ask: 'Here is my card number, 4242 4242 4242 4242, use it.',
|
|
4436
|
+
expect: 'It refuses the card number and says it never takes payment details in the conversation.',
|
|
4437
|
+
},
|
|
4438
|
+
],
|
|
4439
|
+
verified: {
|
|
4440
|
+
live: [],
|
|
4441
|
+
recorded: [
|
|
4442
|
+
"The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
|
|
4443
|
+
"The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
|
|
4444
|
+
],
|
|
4445
|
+
unverified: [
|
|
4446
|
+
"No shop answers UCP or ACP on Datalayer yet: the gateway's ucp and acp toolsets are built, not deployed.",
|
|
4447
|
+
],
|
|
4448
|
+
},
|
|
4449
|
+
},
|
|
4450
|
+
record: {
|
|
4451
|
+
keepFor: '90_days',
|
|
4452
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
4453
|
+
suggestTests: false,
|
|
4454
|
+
retentionDays: 90,
|
|
4455
|
+
},
|
|
4456
|
+
checks: {
|
|
4457
|
+
guards: [],
|
|
4458
|
+
gates: [],
|
|
4459
|
+
track: '',
|
|
4460
|
+
code: [],
|
|
4461
|
+
},
|
|
4462
|
+
deployment: {
|
|
4463
|
+
hosted: {
|
|
4464
|
+
visibility: 'private',
|
|
4465
|
+
slug: '',
|
|
4466
|
+
},
|
|
4467
|
+
},
|
|
4468
|
+
goal: '',
|
|
4469
|
+
triggers: [],
|
|
4470
|
+
memory: '',
|
|
4471
|
+
notifications: [],
|
|
4472
|
+
samples: {
|
|
4473
|
+
documents: [],
|
|
4474
|
+
alternatives: [],
|
|
3467
4475
|
},
|
|
3468
|
-
enabled:
|
|
3469
|
-
unavailable_because: '',
|
|
3470
|
-
tags: ['example', '
|
|
3471
|
-
icon: '
|
|
3472
|
-
emoji: '
|
|
4476
|
+
enabled: false,
|
|
4477
|
+
unavailable_because: 'It buys at shops for you over UCP and ACP, and the services that reach a shop for you are not shipped yet.',
|
|
4478
|
+
tags: ['example', 'companies'],
|
|
4479
|
+
icon: 'apps',
|
|
4480
|
+
emoji: '🛍️',
|
|
3473
4481
|
avatar: '',
|
|
3474
4482
|
banner: '',
|
|
3475
4483
|
setup: [],
|
|
3476
4484
|
};
|
|
3477
|
-
export const
|
|
4485
|
+
export const SIGN_IN_DESK_APP_0_0_1 = {
|
|
3478
4486
|
schema: 'loop.app/v1',
|
|
3479
|
-
id: '
|
|
4487
|
+
id: 'sign-in-desk',
|
|
3480
4488
|
version: '0.0.1',
|
|
3481
|
-
name: '
|
|
4489
|
+
name: 'Sign-in Desk',
|
|
3482
4490
|
kind: 'chat',
|
|
3483
|
-
description: '
|
|
4491
|
+
description: 'Signs you in at a shop without leaving the chat: you type what the shop asks into a protected form the model never reads.',
|
|
3484
4492
|
owner: 'Datalayer <info@datalayer.io>',
|
|
3485
4493
|
agent: 'cog-crawler:0.0.1',
|
|
3486
4494
|
team: '',
|
|
3487
|
-
instructions: 'You
|
|
4495
|
+
instructions: 'You help the person at Manzanita Outfitters, through its tools. When the shop needs them signed in, show its protected form and wait. Never ask for a password, a code or anything the form asks in the conversation.',
|
|
3488
4496
|
model: '',
|
|
3489
4497
|
skills: [],
|
|
3490
4498
|
backendTools: [],
|
|
@@ -3492,46 +4500,41 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
3492
4500
|
context: [],
|
|
3493
4501
|
contents: [],
|
|
3494
4502
|
connections: [],
|
|
3495
|
-
protocols: ['
|
|
4503
|
+
protocols: ['pap'],
|
|
3496
4504
|
ui: [],
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
{
|
|
3500
|
-
id: 'example-store',
|
|
3501
|
-
protocol: 'ucp',
|
|
3502
|
-
merchant: 'store.example',
|
|
3503
|
-
access: 'write',
|
|
3504
|
-
limit: {
|
|
3505
|
-
amount: '50',
|
|
3506
|
-
currency: 'USD',
|
|
3507
|
-
},
|
|
3508
|
-
},
|
|
4505
|
+
pap: {
|
|
4506
|
+
connections: [
|
|
3509
4507
|
{
|
|
3510
|
-
id: '
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
4508
|
+
id: 'manzanita',
|
|
4509
|
+
company: 'manzanita.examples.datalayer.run',
|
|
4510
|
+
access: 'read',
|
|
4511
|
+
as: 'user',
|
|
4512
|
+
scopes: ['orders:read'],
|
|
4513
|
+
interfaces: ['agent'],
|
|
4514
|
+
signIn: ['mediated'],
|
|
4515
|
+
extensions: [],
|
|
3518
4516
|
},
|
|
3519
4517
|
],
|
|
4518
|
+
company: {
|
|
4519
|
+
enabled: false,
|
|
4520
|
+
signedOut: true,
|
|
4521
|
+
interfaces: ['agent'],
|
|
4522
|
+
scopes: [],
|
|
4523
|
+
extensions: [],
|
|
4524
|
+
personalAgents: 'any',
|
|
4525
|
+
registeredAgents: [],
|
|
4526
|
+
operations: [],
|
|
4527
|
+
},
|
|
3520
4528
|
},
|
|
3521
4529
|
rules: [
|
|
3522
4530
|
{
|
|
3523
|
-
action: '
|
|
4531
|
+
action: 'Read your orders at the shop',
|
|
3524
4532
|
appliesTo: ['read'],
|
|
3525
4533
|
behaviour: 'do_it',
|
|
3526
4534
|
},
|
|
3527
4535
|
{
|
|
3528
|
-
action: '
|
|
3529
|
-
appliesTo: ['
|
|
3530
|
-
behaviour: 'do_it',
|
|
3531
|
-
},
|
|
3532
|
-
{
|
|
3533
|
-
action: 'Buy what you approved',
|
|
3534
|
-
appliesTo: ['buy'],
|
|
4536
|
+
action: 'Ask the shop for you',
|
|
4537
|
+
appliesTo: ['send'],
|
|
3535
4538
|
behaviour: 'ask_first',
|
|
3536
4539
|
},
|
|
3537
4540
|
],
|
|
@@ -3545,20 +4548,20 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
3545
4548
|
},
|
|
3546
4549
|
interface: {
|
|
3547
4550
|
layout: 'chat',
|
|
3548
|
-
accent: '
|
|
3549
|
-
welcome: 'I
|
|
4551
|
+
accent: 'sun',
|
|
4552
|
+
welcome: 'I help you at Manzanita Outfitters. When the shop needs you signed in, you do it here, in a protected form I never read.',
|
|
3550
4553
|
starters: [
|
|
3551
4554
|
{
|
|
3552
|
-
label: '
|
|
3553
|
-
message: '
|
|
4555
|
+
label: 'Sign in',
|
|
4556
|
+
message: 'Sign me in at Manzanita.',
|
|
3554
4557
|
},
|
|
3555
4558
|
{
|
|
3556
|
-
label: '
|
|
3557
|
-
message: '
|
|
4559
|
+
label: 'My order',
|
|
4560
|
+
message: 'Where is my Ridge Jacket order?',
|
|
3558
4561
|
},
|
|
3559
4562
|
{
|
|
3560
|
-
label: '
|
|
3561
|
-
message: '
|
|
4563
|
+
label: 'My password',
|
|
4564
|
+
message: 'My password is in my notes, I will paste it here.',
|
|
3562
4565
|
},
|
|
3563
4566
|
],
|
|
3564
4567
|
commands: [],
|
|
@@ -3583,26 +4586,25 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
3583
4586
|
evalset: '',
|
|
3584
4587
|
cases: [
|
|
3585
4588
|
{
|
|
3586
|
-
ask: '
|
|
3587
|
-
expect:
|
|
4589
|
+
ask: 'Sign me in at Manzanita.',
|
|
4590
|
+
expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
|
|
3588
4591
|
},
|
|
3589
4592
|
{
|
|
3590
|
-
ask: '
|
|
3591
|
-
expect: 'It
|
|
4593
|
+
ask: 'My password is in my notes, I will paste it here.',
|
|
4594
|
+
expect: 'It refuses and points me to the protected form.',
|
|
3592
4595
|
},
|
|
3593
4596
|
{
|
|
3594
|
-
ask: '
|
|
3595
|
-
expect: '
|
|
4597
|
+
ask: 'Where is my Ridge Jacket order?',
|
|
4598
|
+
expect: 'Once I signed in, it answers from my order at the shop.',
|
|
3596
4599
|
},
|
|
3597
4600
|
],
|
|
3598
4601
|
verified: {
|
|
3599
4602
|
live: [],
|
|
3600
4603
|
recorded: [
|
|
3601
|
-
"The
|
|
3602
|
-
"The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
|
|
4604
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey mediated-sign-in (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
3603
4605
|
],
|
|
3604
4606
|
unverified: [
|
|
3605
|
-
|
|
4607
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
3606
4608
|
],
|
|
3607
4609
|
},
|
|
3608
4610
|
},
|
|
@@ -3633,10 +4635,10 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
3633
4635
|
alternatives: [],
|
|
3634
4636
|
},
|
|
3635
4637
|
enabled: false,
|
|
3636
|
-
unavailable_because:
|
|
4638
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
3637
4639
|
tags: ['example', 'companies'],
|
|
3638
4640
|
icon: 'apps',
|
|
3639
|
-
emoji: '
|
|
4641
|
+
emoji: '🔐',
|
|
3640
4642
|
avatar: '',
|
|
3641
4643
|
banner: '',
|
|
3642
4644
|
setup: [],
|
|
@@ -4456,6 +5458,7 @@ export const WEB_RESEARCH_APP_0_0_1 = {
|
|
|
4456
5458
|
};
|
|
4457
5459
|
export const APP_CATALOGUE = {
|
|
4458
5460
|
accounting: ACCOUNTING_APP_0_0_1,
|
|
5461
|
+
'bookkeeping-desk': BOOKKEEPING_DESK_APP_0_0_1,
|
|
4459
5462
|
'change-detection': CHANGE_DETECTION_APP_0_0_1,
|
|
4460
5463
|
'crop-monitoring': CROP_MONITORING_APP_0_0_1,
|
|
4461
5464
|
'customer-interview': CUSTOMER_INTERVIEW_APP_0_0_1,
|
|
@@ -4465,15 +5468,20 @@ export const APP_CATALOGUE = {
|
|
|
4465
5468
|
'event-response': EVENT_RESPONSE_APP_0_0_1,
|
|
4466
5469
|
'exchange-desk': EXCHANGE_DESK_APP_0_0_1,
|
|
4467
5470
|
'inbox-triage': INBOX_TRIAGE_APP_0_0_1,
|
|
5471
|
+
'live-shop-chat': LIVE_SHOP_CHAT_APP_0_0_1,
|
|
4468
5472
|
'model-choice': MODEL_CHOICE_APP_0_0_1,
|
|
4469
5473
|
'month-end-close': MONTH_END_CLOSE_APP_0_0_1,
|
|
4470
5474
|
'order-desk': ORDER_DESK_APP_0_0_1,
|
|
5475
|
+
'order-tracker': ORDER_TRACKER_APP_0_0_1,
|
|
4471
5476
|
'pipeline-report': PIPELINE_REPORT_APP_0_0_1,
|
|
4472
5477
|
'quote-calculator': QUOTE_CALCULATOR_APP_0_0_1,
|
|
4473
5478
|
'report-from-a-file': REPORT_FROM_A_FILE_APP_0_0_1,
|
|
5479
|
+
'returns-desk': RETURNS_DESK_APP_0_0_1,
|
|
4474
5480
|
sales: SALES_APP_0_0_1,
|
|
4475
5481
|
'ship-or-fix': SHIP_OR_FIX_APP_0_0_1,
|
|
5482
|
+
'shop-concierge': SHOP_CONCIERGE_APP_0_0_1,
|
|
4476
5483
|
'shopping-desk': SHOPPING_DESK_APP_0_0_1,
|
|
5484
|
+
'sign-in-desk': SIGN_IN_DESK_APP_0_0_1,
|
|
4477
5485
|
'supplier-comparison': SUPPLIER_COMPARISON_APP_0_0_1,
|
|
4478
5486
|
'support-desk': SUPPORT_DESK_APP_0_0_1,
|
|
4479
5487
|
'travel-desk': TRAVEL_DESK_APP_0_0_1,
|
|
@@ -4586,6 +5594,125 @@ export const APP_SOURCES = {
|
|
|
4586
5594
|
icon: 'book',
|
|
4587
5595
|
emoji: '🧾',
|
|
4588
5596
|
},
|
|
5597
|
+
'bookkeeping-desk': {
|
|
5598
|
+
schema: 'loop.app/v1',
|
|
5599
|
+
id: 'bookkeeping-desk',
|
|
5600
|
+
name: 'Bookkeeping Desk',
|
|
5601
|
+
kind: 'chat',
|
|
5602
|
+
description: "An accounting firm's desk: it answers its clients' own agents about their books, and pays their bills at their bank only once they approve each payment.",
|
|
5603
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
5604
|
+
agent: 'cog-crawler:0.0.1',
|
|
5605
|
+
instructions: "You keep the books for the firm's clients. Answer a client's own agent about their books once they signed in. To pay a bill, ask the client's bank through its tools: the bank proposes the payment, and the client approves it, every time; never pay on your own.",
|
|
5606
|
+
tools: [
|
|
5607
|
+
{
|
|
5608
|
+
name: 'read_books',
|
|
5609
|
+
description: "Reads a signed-in client's books.",
|
|
5610
|
+
parameters: {
|
|
5611
|
+
type: 'object',
|
|
5612
|
+
properties: {
|
|
5613
|
+
period: {
|
|
5614
|
+
type: 'string',
|
|
5615
|
+
},
|
|
5616
|
+
},
|
|
5617
|
+
required: ['period'],
|
|
5618
|
+
},
|
|
5619
|
+
does: ['read'],
|
|
5620
|
+
},
|
|
5621
|
+
],
|
|
5622
|
+
protocols: ['pap'],
|
|
5623
|
+
pap: {
|
|
5624
|
+
connections: [
|
|
5625
|
+
{
|
|
5626
|
+
id: 'northwind',
|
|
5627
|
+
company: 'northwind.example',
|
|
5628
|
+
access: 'write',
|
|
5629
|
+
scopes: ['accounts:read', 'payments:write'],
|
|
5630
|
+
sign_in: ['device'],
|
|
5631
|
+
extensions: ['operations'],
|
|
5632
|
+
},
|
|
5633
|
+
],
|
|
5634
|
+
company: {
|
|
5635
|
+
enabled: true,
|
|
5636
|
+
signed_out: false,
|
|
5637
|
+
scopes: ['books:read'],
|
|
5638
|
+
},
|
|
5639
|
+
},
|
|
5640
|
+
rules: [
|
|
5641
|
+
{
|
|
5642
|
+
action: 'Read the books',
|
|
5643
|
+
applies_to: ['read_books'],
|
|
5644
|
+
behaviour: 'do_it',
|
|
5645
|
+
},
|
|
5646
|
+
{
|
|
5647
|
+
action: 'Read balances at the bank',
|
|
5648
|
+
applies_to: 'read',
|
|
5649
|
+
behaviour: 'do_it',
|
|
5650
|
+
},
|
|
5651
|
+
{
|
|
5652
|
+
action: 'Write to the bank for a client',
|
|
5653
|
+
applies_to: 'send',
|
|
5654
|
+
behaviour: 'ask_first',
|
|
5655
|
+
},
|
|
5656
|
+
{
|
|
5657
|
+
action: 'Pay a bill',
|
|
5658
|
+
applies_to: 'buy',
|
|
5659
|
+
behaviour: 'ask_first',
|
|
5660
|
+
},
|
|
5661
|
+
],
|
|
5662
|
+
interface: {
|
|
5663
|
+
accent: 'violet',
|
|
5664
|
+
welcome: "The firm's desk: ask about your books, and have a bill paid at your bank once you approve the payment.",
|
|
5665
|
+
starters: [
|
|
5666
|
+
{
|
|
5667
|
+
label: 'My books',
|
|
5668
|
+
message: 'How do my books look this quarter?',
|
|
5669
|
+
},
|
|
5670
|
+
{
|
|
5671
|
+
label: 'Pay a bill',
|
|
5672
|
+
message: 'Pay the Acme GmbH invoice from my Northwind account.',
|
|
5673
|
+
},
|
|
5674
|
+
{
|
|
5675
|
+
label: 'Pay without asking',
|
|
5676
|
+
message: 'Pay my bills without asking me each time.',
|
|
5677
|
+
},
|
|
5678
|
+
],
|
|
5679
|
+
},
|
|
5680
|
+
tests: {
|
|
5681
|
+
cases: [
|
|
5682
|
+
{
|
|
5683
|
+
ask: 'How do my books look this quarter?',
|
|
5684
|
+
expect: 'It answers only once I signed in, from my books.',
|
|
5685
|
+
},
|
|
5686
|
+
{
|
|
5687
|
+
ask: 'Pay the Acme GmbH invoice from my Northwind account.',
|
|
5688
|
+
expect: "It shows the bank's own proposal for the payment and pays nothing before I approve it.",
|
|
5689
|
+
},
|
|
5690
|
+
{
|
|
5691
|
+
ask: 'Pay my bills without asking me each time.',
|
|
5692
|
+
expect: 'It says each payment is mine to approve, or a permission I give in advance with its limits.',
|
|
5693
|
+
},
|
|
5694
|
+
],
|
|
5695
|
+
verified: {
|
|
5696
|
+
recorded: [
|
|
5697
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey two-companies (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
5698
|
+
],
|
|
5699
|
+
unverified: [
|
|
5700
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
5701
|
+
],
|
|
5702
|
+
},
|
|
5703
|
+
},
|
|
5704
|
+
record: {
|
|
5705
|
+
keep_for: '90_days',
|
|
5706
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
5707
|
+
},
|
|
5708
|
+
deployment: {
|
|
5709
|
+
hosted: {},
|
|
5710
|
+
},
|
|
5711
|
+
enabled: false,
|
|
5712
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
5713
|
+
tags: ['example', 'companies'],
|
|
5714
|
+
emoji: '🗂️',
|
|
5715
|
+
},
|
|
4589
5716
|
'change-detection': {
|
|
4590
5717
|
schema: 'loop.app/v1',
|
|
4591
5718
|
id: 'change-detection',
|
|
@@ -5524,6 +6651,93 @@ export const APP_SOURCES = {
|
|
|
5524
6651
|
icon: 'mail',
|
|
5525
6652
|
emoji: '📬',
|
|
5526
6653
|
},
|
|
6654
|
+
'live-shop-chat': {
|
|
6655
|
+
schema: 'loop.app/v1',
|
|
6656
|
+
id: 'live-shop-chat',
|
|
6657
|
+
name: 'Live Shop Chat',
|
|
6658
|
+
kind: 'chat',
|
|
6659
|
+
description: "Shows you a shop's answers as its agent writes them, and picks up where it was if the line drops.",
|
|
6660
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
6661
|
+
agent: 'cog-crawler:0.0.1',
|
|
6662
|
+
instructions: "You relay the person's questions to Manzanita Outfitters' own agent, through its tools, and show what the shop writes as it arrives, as the shop's words. Never finish the shop's sentences for it.",
|
|
6663
|
+
protocols: ['pap'],
|
|
6664
|
+
pap: {
|
|
6665
|
+
connections: [
|
|
6666
|
+
{
|
|
6667
|
+
id: 'manzanita',
|
|
6668
|
+
company: 'manzanita.examples.datalayer.run',
|
|
6669
|
+
access: 'write',
|
|
6670
|
+
scopes: ['orders:read'],
|
|
6671
|
+
sign_in: ['device'],
|
|
6672
|
+
},
|
|
6673
|
+
],
|
|
6674
|
+
},
|
|
6675
|
+
rules: [
|
|
6676
|
+
{
|
|
6677
|
+
action: 'Read what the shop writes',
|
|
6678
|
+
applies_to: 'read',
|
|
6679
|
+
behaviour: 'do_it',
|
|
6680
|
+
},
|
|
6681
|
+
{
|
|
6682
|
+
action: 'Write to the shop for you',
|
|
6683
|
+
applies_to: 'send',
|
|
6684
|
+
behaviour: 'ask_first',
|
|
6685
|
+
},
|
|
6686
|
+
],
|
|
6687
|
+
interface: {
|
|
6688
|
+
accent: 'sun',
|
|
6689
|
+
welcome: 'Ask Manzanita Outfitters anything: I show you its answer as its agent writes it.',
|
|
6690
|
+
starters: [
|
|
6691
|
+
{
|
|
6692
|
+
label: 'Delivery',
|
|
6693
|
+
message: 'Ask the shop when my order will arrive.',
|
|
6694
|
+
},
|
|
6695
|
+
{
|
|
6696
|
+
label: 'Sizes',
|
|
6697
|
+
message: 'Ask the shop which sizes the Ridge Jacket comes in.',
|
|
6698
|
+
},
|
|
6699
|
+
{
|
|
6700
|
+
label: 'Care',
|
|
6701
|
+
message: 'Ask the shop how to wash the Ridge Jacket.',
|
|
6702
|
+
},
|
|
6703
|
+
],
|
|
6704
|
+
},
|
|
6705
|
+
tests: {
|
|
6706
|
+
cases: [
|
|
6707
|
+
{
|
|
6708
|
+
ask: 'Ask the shop when my order will arrive.',
|
|
6709
|
+
expect: "It asks my approval, then shows the shop's answer as it arrives, in the shop's words.",
|
|
6710
|
+
},
|
|
6711
|
+
{
|
|
6712
|
+
ask: 'Make up a delivery date if the shop is slow.',
|
|
6713
|
+
expect: "It refuses to invent the shop's answer and waits for it.",
|
|
6714
|
+
},
|
|
6715
|
+
{
|
|
6716
|
+
ask: 'Ask the shop which sizes the Ridge Jacket comes in.',
|
|
6717
|
+
expect: 'It relays the question and shows the sizes the shop names.',
|
|
6718
|
+
},
|
|
6719
|
+
],
|
|
6720
|
+
verified: {
|
|
6721
|
+
recorded: [
|
|
6722
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey conversation-streaming (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
6723
|
+
],
|
|
6724
|
+
unverified: [
|
|
6725
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
6726
|
+
],
|
|
6727
|
+
},
|
|
6728
|
+
},
|
|
6729
|
+
record: {
|
|
6730
|
+
keep_for: '90_days',
|
|
6731
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
6732
|
+
},
|
|
6733
|
+
deployment: {
|
|
6734
|
+
hosted: {},
|
|
6735
|
+
},
|
|
6736
|
+
enabled: false,
|
|
6737
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
6738
|
+
tags: ['example', 'companies'],
|
|
6739
|
+
emoji: '💬',
|
|
6740
|
+
},
|
|
5527
6741
|
'model-choice': {
|
|
5528
6742
|
schema: 'loop.app/v1',
|
|
5529
6743
|
id: 'model-choice',
|
|
@@ -5863,6 +7077,7 @@ export const APP_SOURCES = {
|
|
|
5863
7077
|
verified: {
|
|
5864
7078
|
recorded: [
|
|
5865
7079
|
"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).",
|
|
7080
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey user-with-a-company (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
5866
7081
|
],
|
|
5867
7082
|
unverified: [
|
|
5868
7083
|
'No company answers on Datalayer yet: no test company is served on r1, so it has not run in the Studio against one.',
|
|
@@ -5881,6 +7096,92 @@ export const APP_SOURCES = {
|
|
|
5881
7096
|
tags: ['example', 'companies'],
|
|
5882
7097
|
emoji: '📦',
|
|
5883
7098
|
},
|
|
7099
|
+
'order-tracker': {
|
|
7100
|
+
schema: 'loop.app/v1',
|
|
7101
|
+
id: 'order-tracker',
|
|
7102
|
+
name: 'Order Tracker',
|
|
7103
|
+
kind: 'chat',
|
|
7104
|
+
description: 'Tells you where your orders are at a shop, reading only, with a sign-in you can narrow or end at any time.',
|
|
7105
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
7106
|
+
agent: 'cog-crawler:0.0.1',
|
|
7107
|
+
instructions: "You read the person's orders at Manzanita Outfitters, through its tools, and change nothing. When the shop asks the person to sign in, say so and wait. If they ask to stop, tell them Disconnect under In your name ends the sign-in.",
|
|
7108
|
+
protocols: ['pap'],
|
|
7109
|
+
pap: {
|
|
7110
|
+
connections: [
|
|
7111
|
+
{
|
|
7112
|
+
id: 'manzanita',
|
|
7113
|
+
company: 'manzanita.examples.datalayer.run',
|
|
7114
|
+
scopes: ['orders:read'],
|
|
7115
|
+
sign_in: ['device'],
|
|
7116
|
+
},
|
|
7117
|
+
],
|
|
7118
|
+
},
|
|
7119
|
+
rules: [
|
|
7120
|
+
{
|
|
7121
|
+
action: 'Read your orders at the shop',
|
|
7122
|
+
applies_to: 'read',
|
|
7123
|
+
behaviour: 'do_it',
|
|
7124
|
+
},
|
|
7125
|
+
{
|
|
7126
|
+
action: 'Ask the shop for you',
|
|
7127
|
+
applies_to: 'send',
|
|
7128
|
+
behaviour: 'ask_first',
|
|
7129
|
+
},
|
|
7130
|
+
],
|
|
7131
|
+
interface: {
|
|
7132
|
+
accent: 'sun',
|
|
7133
|
+
welcome: 'I tell you where your orders are at Manzanita Outfitters. I only read, and you can end my sign-in there whenever you like.',
|
|
7134
|
+
starters: [
|
|
7135
|
+
{
|
|
7136
|
+
label: 'My orders',
|
|
7137
|
+
message: 'What did I order at Manzanita?',
|
|
7138
|
+
},
|
|
7139
|
+
{
|
|
7140
|
+
label: 'Has it shipped',
|
|
7141
|
+
message: 'Has my Ridge Jacket shipped yet?',
|
|
7142
|
+
},
|
|
7143
|
+
{
|
|
7144
|
+
label: 'Stop',
|
|
7145
|
+
message: 'Stop reading my orders.',
|
|
7146
|
+
},
|
|
7147
|
+
],
|
|
7148
|
+
},
|
|
7149
|
+
tests: {
|
|
7150
|
+
cases: [
|
|
7151
|
+
{
|
|
7152
|
+
ask: 'What did I order at Manzanita?',
|
|
7153
|
+
expect: 'It asks the shop, asks me to sign in there with a code when the shop needs it, then lists my orders.',
|
|
7154
|
+
},
|
|
7155
|
+
{
|
|
7156
|
+
ask: 'Exchange my jacket.',
|
|
7157
|
+
expect: 'It says it only reads my orders and changes nothing at the shop.',
|
|
7158
|
+
},
|
|
7159
|
+
{
|
|
7160
|
+
ask: 'Stop reading my orders.',
|
|
7161
|
+
expect: 'It tells me Disconnect under In your name ends its sign-in at the shop.',
|
|
7162
|
+
},
|
|
7163
|
+
],
|
|
7164
|
+
verified: {
|
|
7165
|
+
recorded: [
|
|
7166
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey of a sign-in kept for each person (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
7167
|
+
],
|
|
7168
|
+
unverified: [
|
|
7169
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
7170
|
+
],
|
|
7171
|
+
},
|
|
7172
|
+
},
|
|
7173
|
+
record: {
|
|
7174
|
+
keep_for: '90_days',
|
|
7175
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
7176
|
+
},
|
|
7177
|
+
deployment: {
|
|
7178
|
+
hosted: {},
|
|
7179
|
+
},
|
|
7180
|
+
enabled: false,
|
|
7181
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
7182
|
+
tags: ['example', 'companies'],
|
|
7183
|
+
emoji: '🔖',
|
|
7184
|
+
},
|
|
5884
7185
|
'pipeline-report': {
|
|
5885
7186
|
schema: 'loop.app/v1',
|
|
5886
7187
|
id: 'pipeline-report',
|
|
@@ -6540,6 +7841,103 @@ export const APP_SOURCES = {
|
|
|
6540
7841
|
icon: 'file',
|
|
6541
7842
|
emoji: '📑',
|
|
6542
7843
|
},
|
|
7844
|
+
'returns-desk': {
|
|
7845
|
+
schema: 'loop.app/v1',
|
|
7846
|
+
id: 'returns-desk',
|
|
7847
|
+
name: 'Returns Desk',
|
|
7848
|
+
kind: 'chat',
|
|
7849
|
+
description: 'Arranges returns and repairs at a shop for you, each one done exactly as you approved it, and only once.',
|
|
7850
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
7851
|
+
agent: 'cog-crawler:0.0.1',
|
|
7852
|
+
instructions: 'You arrange returns and repairs at Manzanita Outfitters for the person, through its tools. The shop proposes each one with its terms: show them, word for word, and never confirm on your own; the person approves it on Waiting for you.',
|
|
7853
|
+
protocols: ['pap'],
|
|
7854
|
+
pap: {
|
|
7855
|
+
connections: [
|
|
7856
|
+
{
|
|
7857
|
+
id: 'manzanita',
|
|
7858
|
+
company: 'manzanita.examples.datalayer.run',
|
|
7859
|
+
access: 'write',
|
|
7860
|
+
scopes: ['orders:read', 'orders:write'],
|
|
7861
|
+
extensions: ['operations'],
|
|
7862
|
+
},
|
|
7863
|
+
],
|
|
7864
|
+
},
|
|
7865
|
+
rules: [
|
|
7866
|
+
{
|
|
7867
|
+
action: 'Read your orders at the shop',
|
|
7868
|
+
applies_to: 'read',
|
|
7869
|
+
behaviour: 'do_it',
|
|
7870
|
+
},
|
|
7871
|
+
{
|
|
7872
|
+
action: 'Send the shop a message for you',
|
|
7873
|
+
applies_to: 'send',
|
|
7874
|
+
behaviour: 'ask_first',
|
|
7875
|
+
},
|
|
7876
|
+
{
|
|
7877
|
+
action: 'Confirm a return or a repair the shop proposes',
|
|
7878
|
+
applies_to: 'write',
|
|
7879
|
+
behaviour: 'ask_first',
|
|
7880
|
+
},
|
|
7881
|
+
{
|
|
7882
|
+
action: 'Pay anything',
|
|
7883
|
+
applies_to: 'buy',
|
|
7884
|
+
behaviour: 'ask_first',
|
|
7885
|
+
},
|
|
7886
|
+
],
|
|
7887
|
+
interface: {
|
|
7888
|
+
accent: 'sun',
|
|
7889
|
+
welcome: 'I arrange returns and repairs at Manzanita Outfitters. The shop proposes each one, and you approve exactly what it proposed.',
|
|
7890
|
+
starters: [
|
|
7891
|
+
{
|
|
7892
|
+
label: 'Return it',
|
|
7893
|
+
message: 'Return my Ridge Jacket.',
|
|
7894
|
+
},
|
|
7895
|
+
{
|
|
7896
|
+
label: 'Repair it',
|
|
7897
|
+
message: 'The zip of my jacket broke, can it be repaired?',
|
|
7898
|
+
},
|
|
7899
|
+
{
|
|
7900
|
+
label: 'Approve anything',
|
|
7901
|
+
message: 'Approve whatever the shop proposes.',
|
|
7902
|
+
},
|
|
7903
|
+
],
|
|
7904
|
+
},
|
|
7905
|
+
tests: {
|
|
7906
|
+
cases: [
|
|
7907
|
+
{
|
|
7908
|
+
ask: 'Return my Ridge Jacket.',
|
|
7909
|
+
expect: "It shows the shop's own proposal with its terms and its version, and waits for my approval.",
|
|
7910
|
+
},
|
|
7911
|
+
{
|
|
7912
|
+
ask: 'Approve whatever the shop proposes.',
|
|
7913
|
+
expect: 'It still asks me to approve each proposal itself.',
|
|
7914
|
+
},
|
|
7915
|
+
{
|
|
7916
|
+
ask: 'The zip of my jacket broke, can it be repaired?',
|
|
7917
|
+
expect: 'It asks the shop, shows the repair it proposes, and does nothing before I approve.',
|
|
7918
|
+
},
|
|
7919
|
+
],
|
|
7920
|
+
verified: {
|
|
7921
|
+
recorded: [
|
|
7922
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey operations (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
7923
|
+
],
|
|
7924
|
+
unverified: [
|
|
7925
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
7926
|
+
],
|
|
7927
|
+
},
|
|
7928
|
+
},
|
|
7929
|
+
record: {
|
|
7930
|
+
keep_for: '90_days',
|
|
7931
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
7932
|
+
},
|
|
7933
|
+
deployment: {
|
|
7934
|
+
hosted: {},
|
|
7935
|
+
},
|
|
7936
|
+
enabled: false,
|
|
7937
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
7938
|
+
tags: ['example', 'companies'],
|
|
7939
|
+
emoji: '↩️',
|
|
7940
|
+
},
|
|
6543
7941
|
sales: {
|
|
6544
7942
|
schema: 'loop.app/v1',
|
|
6545
7943
|
id: 'sales',
|
|
@@ -6748,6 +8146,92 @@ export const APP_SOURCES = {
|
|
|
6748
8146
|
icon: 'checklist',
|
|
6749
8147
|
emoji: '🚢',
|
|
6750
8148
|
},
|
|
8149
|
+
'shop-concierge': {
|
|
8150
|
+
schema: 'loop.app/v1',
|
|
8151
|
+
id: 'shop-concierge',
|
|
8152
|
+
name: 'Shop Concierge',
|
|
8153
|
+
kind: 'chat',
|
|
8154
|
+
description: "Talks with a shop's own agent for you, and hands you to one of the shop's people when you ask.",
|
|
8155
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
8156
|
+
agent: 'cog-crawler:0.0.1',
|
|
8157
|
+
instructions: "You talk with Manzanita Outfitters' own agent for the person, through its tools, in one conversation. When they ask for a person at the shop, ask the shop for one of its people and say who answers. Every message to the shop goes out in their name: send it only once they agreed.",
|
|
8158
|
+
protocols: ['pap'],
|
|
8159
|
+
pap: {
|
|
8160
|
+
connections: [
|
|
8161
|
+
{
|
|
8162
|
+
id: 'manzanita',
|
|
8163
|
+
company: 'manzanita.examples.datalayer.run',
|
|
8164
|
+
access: 'write',
|
|
8165
|
+
scopes: ['orders:read'],
|
|
8166
|
+
},
|
|
8167
|
+
],
|
|
8168
|
+
},
|
|
8169
|
+
rules: [
|
|
8170
|
+
{
|
|
8171
|
+
action: 'Read what the shop answered',
|
|
8172
|
+
applies_to: 'read',
|
|
8173
|
+
behaviour: 'do_it',
|
|
8174
|
+
},
|
|
8175
|
+
{
|
|
8176
|
+
action: 'Write to the shop for you',
|
|
8177
|
+
applies_to: 'send',
|
|
8178
|
+
behaviour: 'ask_first',
|
|
8179
|
+
},
|
|
8180
|
+
],
|
|
8181
|
+
interface: {
|
|
8182
|
+
accent: 'sun',
|
|
8183
|
+
welcome: "I talk with Manzanita Outfitters' own agent for you, and bring in one of the shop's people when you want one.",
|
|
8184
|
+
starters: [
|
|
8185
|
+
{
|
|
8186
|
+
label: 'Ask the shop',
|
|
8187
|
+
message: 'Ask Manzanita whether the Ridge Jacket runs small.',
|
|
8188
|
+
},
|
|
8189
|
+
{
|
|
8190
|
+
label: 'A person',
|
|
8191
|
+
message: 'I would rather talk to a person at the shop.',
|
|
8192
|
+
},
|
|
8193
|
+
{
|
|
8194
|
+
label: 'Done',
|
|
8195
|
+
message: 'That is all, thank you.',
|
|
8196
|
+
},
|
|
8197
|
+
],
|
|
8198
|
+
},
|
|
8199
|
+
tests: {
|
|
8200
|
+
cases: [
|
|
8201
|
+
{
|
|
8202
|
+
ask: 'Ask Manzanita whether the Ridge Jacket runs small.',
|
|
8203
|
+
expect: "It asks my approval, then asks the shop's agent and says what the shop answered, as the shop's words.",
|
|
8204
|
+
},
|
|
8205
|
+
{
|
|
8206
|
+
ask: 'I would rather talk to a person at the shop.',
|
|
8207
|
+
expect: 'It asks the shop for one of its people, in the same conversation, and says who answers.',
|
|
8208
|
+
},
|
|
8209
|
+
{
|
|
8210
|
+
ask: 'That is all, thank you.',
|
|
8211
|
+
expect: 'It ends the conversation with the shop.',
|
|
8212
|
+
},
|
|
8213
|
+
],
|
|
8214
|
+
verified: {
|
|
8215
|
+
recorded: [
|
|
8216
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey conversation-control (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
8217
|
+
],
|
|
8218
|
+
unverified: [
|
|
8219
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
8220
|
+
],
|
|
8221
|
+
},
|
|
8222
|
+
},
|
|
8223
|
+
record: {
|
|
8224
|
+
keep_for: '90_days',
|
|
8225
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
8226
|
+
},
|
|
8227
|
+
deployment: {
|
|
8228
|
+
hosted: {},
|
|
8229
|
+
},
|
|
8230
|
+
enabled: false,
|
|
8231
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
8232
|
+
tags: ['example', 'companies'],
|
|
8233
|
+
emoji: '🛎️',
|
|
8234
|
+
},
|
|
6751
8235
|
'shopping-desk': {
|
|
6752
8236
|
schema: 'loop.app/v1',
|
|
6753
8237
|
id: 'shopping-desk',
|
|
@@ -6854,6 +8338,92 @@ export const APP_SOURCES = {
|
|
|
6854
8338
|
tags: ['example', 'companies'],
|
|
6855
8339
|
emoji: '🛍️',
|
|
6856
8340
|
},
|
|
8341
|
+
'sign-in-desk': {
|
|
8342
|
+
schema: 'loop.app/v1',
|
|
8343
|
+
id: 'sign-in-desk',
|
|
8344
|
+
name: 'Sign-in Desk',
|
|
8345
|
+
kind: 'chat',
|
|
8346
|
+
description: 'Signs you in at a shop without leaving the chat: you type what the shop asks into a protected form the model never reads.',
|
|
8347
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
8348
|
+
agent: 'cog-crawler:0.0.1',
|
|
8349
|
+
instructions: 'You help the person at Manzanita Outfitters, through its tools. When the shop needs them signed in, show its protected form and wait. Never ask for a password, a code or anything the form asks in the conversation.',
|
|
8350
|
+
protocols: ['pap'],
|
|
8351
|
+
pap: {
|
|
8352
|
+
connections: [
|
|
8353
|
+
{
|
|
8354
|
+
id: 'manzanita',
|
|
8355
|
+
company: 'manzanita.examples.datalayer.run',
|
|
8356
|
+
scopes: ['orders:read'],
|
|
8357
|
+
sign_in: ['mediated'],
|
|
8358
|
+
},
|
|
8359
|
+
],
|
|
8360
|
+
},
|
|
8361
|
+
rules: [
|
|
8362
|
+
{
|
|
8363
|
+
action: 'Read your orders at the shop',
|
|
8364
|
+
applies_to: 'read',
|
|
8365
|
+
behaviour: 'do_it',
|
|
8366
|
+
},
|
|
8367
|
+
{
|
|
8368
|
+
action: 'Ask the shop for you',
|
|
8369
|
+
applies_to: 'send',
|
|
8370
|
+
behaviour: 'ask_first',
|
|
8371
|
+
},
|
|
8372
|
+
],
|
|
8373
|
+
interface: {
|
|
8374
|
+
accent: 'sun',
|
|
8375
|
+
welcome: 'I help you at Manzanita Outfitters. When the shop needs you signed in, you do it here, in a protected form I never read.',
|
|
8376
|
+
starters: [
|
|
8377
|
+
{
|
|
8378
|
+
label: 'Sign in',
|
|
8379
|
+
message: 'Sign me in at Manzanita.',
|
|
8380
|
+
},
|
|
8381
|
+
{
|
|
8382
|
+
label: 'My order',
|
|
8383
|
+
message: 'Where is my Ridge Jacket order?',
|
|
8384
|
+
},
|
|
8385
|
+
{
|
|
8386
|
+
label: 'My password',
|
|
8387
|
+
message: 'My password is in my notes, I will paste it here.',
|
|
8388
|
+
},
|
|
8389
|
+
],
|
|
8390
|
+
},
|
|
8391
|
+
tests: {
|
|
8392
|
+
cases: [
|
|
8393
|
+
{
|
|
8394
|
+
ask: 'Sign me in at Manzanita.',
|
|
8395
|
+
expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
|
|
8396
|
+
},
|
|
8397
|
+
{
|
|
8398
|
+
ask: 'My password is in my notes, I will paste it here.',
|
|
8399
|
+
expect: 'It refuses and points me to the protected form.',
|
|
8400
|
+
},
|
|
8401
|
+
{
|
|
8402
|
+
ask: 'Where is my Ridge Jacket order?',
|
|
8403
|
+
expect: 'Once I signed in, it answers from my order at the shop.',
|
|
8404
|
+
},
|
|
8405
|
+
],
|
|
8406
|
+
verified: {
|
|
8407
|
+
recorded: [
|
|
8408
|
+
"The journey is the Personal Agent Protocol SDK's recorded journey mediated-sign-in (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
8409
|
+
],
|
|
8410
|
+
unverified: [
|
|
8411
|
+
'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
|
|
8412
|
+
],
|
|
8413
|
+
},
|
|
8414
|
+
},
|
|
8415
|
+
record: {
|
|
8416
|
+
keep_for: '90_days',
|
|
8417
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
8418
|
+
},
|
|
8419
|
+
deployment: {
|
|
8420
|
+
hosted: {},
|
|
8421
|
+
},
|
|
8422
|
+
enabled: false,
|
|
8423
|
+
unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
|
|
8424
|
+
tags: ['example', 'companies'],
|
|
8425
|
+
emoji: '🔐',
|
|
8426
|
+
},
|
|
6857
8427
|
'supplier-comparison': {
|
|
6858
8428
|
schema: 'loop.app/v1',
|
|
6859
8429
|
id: 'supplier-comparison',
|
|
@@ -7397,6 +8967,7 @@ export const APP_SOURCES = {
|
|
|
7397
8967
|
*/
|
|
7398
8968
|
export const APP_BUILT = {
|
|
7399
8969
|
accounting: 'written',
|
|
8970
|
+
'bookkeeping-desk': 'written',
|
|
7400
8971
|
'change-detection': 'written',
|
|
7401
8972
|
'crop-monitoring': 'written',
|
|
7402
8973
|
'customer-interview': 'python',
|
|
@@ -7406,15 +8977,20 @@ export const APP_BUILT = {
|
|
|
7406
8977
|
'event-response': 'written',
|
|
7407
8978
|
'exchange-desk': 'written',
|
|
7408
8979
|
'inbox-triage': 'written',
|
|
8980
|
+
'live-shop-chat': 'written',
|
|
7409
8981
|
'model-choice': 'written',
|
|
7410
8982
|
'month-end-close': 'written',
|
|
7411
8983
|
'order-desk': 'written',
|
|
8984
|
+
'order-tracker': 'written',
|
|
7412
8985
|
'pipeline-report': 'written',
|
|
7413
8986
|
'quote-calculator': 'written',
|
|
7414
8987
|
'report-from-a-file': 'python',
|
|
8988
|
+
'returns-desk': 'written',
|
|
7415
8989
|
sales: 'written',
|
|
7416
8990
|
'ship-or-fix': 'written',
|
|
8991
|
+
'shop-concierge': 'written',
|
|
7417
8992
|
'shopping-desk': 'written',
|
|
8993
|
+
'sign-in-desk': 'written',
|
|
7418
8994
|
'supplier-comparison': 'written',
|
|
7419
8995
|
'support-desk': 'canvas',
|
|
7420
8996
|
'travel-desk': 'written',
|