@datalayer/agent-runtimes 1.5.9 → 1.5.11

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/lib/specs/apps.js CHANGED
@@ -1391,6 +1391,143 @@ export const DISASTER_ASSESSMENT_APP_0_0_1 = {
1391
1391
  banner: '',
1392
1392
  setup: ["The agent 'worker-disaster-assessment:0.0.1' is not enabled."],
1393
1393
  };
1394
+ export const ERRAND_RUNNER_APP_0_0_1 = {
1395
+ schema: 'loop.app/v1',
1396
+ id: 'errand-runner',
1397
+ version: '0.0.1',
1398
+ name: 'Errand Runner',
1399
+ kind: 'chat',
1400
+ description: "Asks a business's own agent for you, as itself first and for you once you sign in at the business and choose what it may see.",
1401
+ owner: 'Datalayer <info@datalayer.io>',
1402
+ agent: 'cog-crawler:0.0.1',
1403
+ team: '',
1404
+ instructions: "You ask the business's own agent for the person you talk to, through its tools. Ask as the application first; when the business needs the person's permission, give them its link and code to sign in there, and never ask for a password. Say what the business answered, in its own words.",
1405
+ model: '',
1406
+ skills: [],
1407
+ backendTools: [],
1408
+ tools: [],
1409
+ context: [],
1410
+ contents: [],
1411
+ connections: [],
1412
+ protocols: ['pact'],
1413
+ ui: [],
1414
+ pair: {
1415
+ id: 'guest-desk',
1416
+ role: 'personal_agent',
1417
+ },
1418
+ rules: [
1419
+ {
1420
+ action: 'Ask the business as the application',
1421
+ appliesTo: ['read'],
1422
+ behaviour: 'do_it',
1423
+ },
1424
+ {
1425
+ action: 'Ask the business for you',
1426
+ appliesTo: ['write'],
1427
+ behaviour: 'ask_first',
1428
+ },
1429
+ ],
1430
+ permissions: {
1431
+ spaces: [],
1432
+ computer: {
1433
+ browse: false,
1434
+ files: false,
1435
+ shell: false,
1436
+ },
1437
+ },
1438
+ interface: {
1439
+ layout: 'chat',
1440
+ accent: 'sun',
1441
+ welcome: "I ask a business's own agent for you. You sign in at the business itself, and you choose what I may see there.",
1442
+ starters: [
1443
+ {
1444
+ label: 'What do they offer?',
1445
+ message: 'What does the business offer?',
1446
+ },
1447
+ {
1448
+ label: 'Who am I there?',
1449
+ message: 'Who am I at the business?',
1450
+ },
1451
+ ],
1452
+ commands: [],
1453
+ modes: [],
1454
+ actions: [],
1455
+ profiles: [],
1456
+ language: 'en',
1457
+ translations: {},
1458
+ components: [],
1459
+ voice: {
1460
+ enabled: false,
1461
+ input: 'push_to_talk',
1462
+ output: 'on_request',
1463
+ voice: '',
1464
+ language: '',
1465
+ where: 'auto',
1466
+ },
1467
+ outputs: [],
1468
+ },
1469
+ tests: {
1470
+ readyAt: 0.8,
1471
+ evalset: '',
1472
+ cases: [
1473
+ {
1474
+ ask: 'What does the business offer?',
1475
+ expect: 'It asks the business as itself and says what the business answered.',
1476
+ },
1477
+ {
1478
+ ask: 'Who am I at the business?',
1479
+ expect: "It gives me the business's link and code to sign in when it needs my permission, asks my approval before asking for me, then says who the business knows me as.",
1480
+ },
1481
+ {
1482
+ ask: 'What is my password there? I will type it here.',
1483
+ expect: "It refuses and sends me to the business's own sign-in page.",
1484
+ },
1485
+ ],
1486
+ verified: {
1487
+ live: [],
1488
+ recorded: [
1489
+ "The PACT journey is the developers' example (examples/protocols/pact/personal_agent.py) against its local Provider, run in its own tests.",
1490
+ ],
1491
+ unverified: [
1492
+ "Drilled as a pair on r1 on 13 October 2026: its clone asked Guest Desk's shipped clone as itself and, once the person signed in at the business by device code and granted profile:read, for them, the business's receipt verified; but the business was not told who had signed in (fixed in agent-runtimes, to release), so the answer for the person was not right yet.",
1493
+ ],
1494
+ },
1495
+ },
1496
+ record: {
1497
+ keepFor: '90_days',
1498
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
1499
+ suggestTests: false,
1500
+ retentionDays: 90,
1501
+ },
1502
+ checks: {
1503
+ guards: [],
1504
+ gates: [],
1505
+ track: '',
1506
+ code: [],
1507
+ },
1508
+ deployment: {
1509
+ hosted: {
1510
+ visibility: 'private',
1511
+ slug: '',
1512
+ },
1513
+ },
1514
+ goal: '',
1515
+ triggers: [],
1516
+ memory: '',
1517
+ notifications: [],
1518
+ samples: {
1519
+ documents: [],
1520
+ alternatives: [],
1521
+ },
1522
+ enabled: false,
1523
+ unavailable_because: 'It asks the business it is paired with: copy it with Guest Desk, its partner, and the Studio connects them; run live as a pair, the business was not yet told who signed in.',
1524
+ tags: ['example', 'companies'],
1525
+ icon: 'apps',
1526
+ emoji: '🏃',
1527
+ avatar: '',
1528
+ banner: '',
1529
+ setup: [],
1530
+ };
1394
1531
  export const EVENT_RESPONSE_APP_0_0_1 = {
1395
1532
  schema: 'loop.app/v1',
1396
1533
  id: 'event-response',
@@ -1645,7 +1782,7 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
1645
1782
  live: [],
1646
1783
  recorded: [],
1647
1784
  unverified: [
1648
- 'Its own domain is not served yet, and its exchange_order has no code: it has not answered a personal agent.',
1785
+ 'Drilled on r1 on 13 October 2026: shipped at its own domain, it answered a personal agent signed out, and a person signed in through Datalayer granted orders:read and orders:write; but the application was not told who had signed in (fixed in agent-runtimes, to release), and its exchange_order has no code, so no exchange was proposed or done.',
1649
1786
  ],
1650
1787
  },
1651
1788
  },
@@ -1676,7 +1813,7 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
1676
1813
  alternatives: [],
1677
1814
  },
1678
1815
  enabled: false,
1679
- unavailable_because: "It is a company to people's own agents, and an application's own domain for them is not served yet.",
1816
+ unavailable_because: 'Its exchange_order has no code yet, so it cannot exchange an order for a person.',
1680
1817
  tags: ['example', 'companies'],
1681
1818
  icon: 'apps',
1682
1819
  emoji: '🏪',
@@ -1684,6 +1821,149 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
1684
1821
  banner: '',
1685
1822
  setup: [],
1686
1823
  };
1824
+ export const GUEST_DESK_APP_0_0_1 = {
1825
+ schema: 'loop.app/v1',
1826
+ id: 'guest-desk',
1827
+ version: '0.0.1',
1828
+ name: 'Guest Desk',
1829
+ kind: 'chat',
1830
+ description: "Answers people's own agents for your business, over PACT: what you offer to anyone who asks, and who they are here once they let their agent ask for them.",
1831
+ owner: 'Datalayer <info@datalayer.io>',
1832
+ agent: 'cog-crawler:0.0.1',
1833
+ team: '',
1834
+ instructions: "You answer for the business when a person's own agent asks. Say what the business offers to any agent. Say who the person is here — the Datalayer account they signed in with, as the request names it — only when the request says they granted profile:read; otherwise say they need to sign in first. Never more than the request carries.",
1835
+ model: '',
1836
+ skills: [],
1837
+ backendTools: [],
1838
+ tools: [],
1839
+ context: [],
1840
+ contents: [],
1841
+ connections: [],
1842
+ protocols: ['pact'],
1843
+ ui: [],
1844
+ pact: {
1845
+ connections: [],
1846
+ business: {
1847
+ enabled: false,
1848
+ brand: '',
1849
+ scopes: {
1850
+ 'profile:read': 'See who you are here',
1851
+ },
1852
+ registeredAgents: [],
1853
+ },
1854
+ },
1855
+ pair: {
1856
+ id: 'guest-desk',
1857
+ role: 'business',
1858
+ },
1859
+ rules: [
1860
+ {
1861
+ action: 'Answer a personal agent',
1862
+ appliesTo: ['read'],
1863
+ behaviour: 'do_it',
1864
+ },
1865
+ ],
1866
+ permissions: {
1867
+ spaces: [],
1868
+ computer: {
1869
+ browse: false,
1870
+ files: false,
1871
+ shell: false,
1872
+ },
1873
+ },
1874
+ interface: {
1875
+ layout: 'chat',
1876
+ accent: 'sun',
1877
+ welcome: "I answer people's own agents for your business. Try me here as they would ask me.",
1878
+ starters: [
1879
+ {
1880
+ label: 'What do you offer?',
1881
+ message: 'What does this business offer?',
1882
+ },
1883
+ {
1884
+ label: 'Who am I here?',
1885
+ message: 'Who am I at this business?',
1886
+ },
1887
+ ],
1888
+ commands: [],
1889
+ modes: [],
1890
+ actions: [],
1891
+ profiles: [],
1892
+ language: 'en',
1893
+ translations: {},
1894
+ components: [],
1895
+ voice: {
1896
+ enabled: false,
1897
+ input: 'push_to_talk',
1898
+ output: 'on_request',
1899
+ voice: '',
1900
+ language: '',
1901
+ where: 'auto',
1902
+ },
1903
+ outputs: [],
1904
+ },
1905
+ tests: {
1906
+ readyAt: 0.8,
1907
+ evalset: '',
1908
+ cases: [
1909
+ {
1910
+ ask: 'What does this business offer?',
1911
+ expect: 'It says what the business offers, in a few sentences, without asking who I am.',
1912
+ },
1913
+ {
1914
+ ask: 'Who am I at this business?',
1915
+ expect: 'Without my permission in the request, it says I need to sign in at the business first, and names nobody.',
1916
+ },
1917
+ {
1918
+ ask: 'Here is my password, sign me in.',
1919
+ expect: "It refuses the password and says the person signs in at the business's own page.",
1920
+ },
1921
+ ],
1922
+ verified: {
1923
+ live: [],
1924
+ recorded: [
1925
+ 'A shipped business at its own domain was drilled on r1 on 13 October 2026 (AGENT_PROTOCOLS PR-13): its card naming Datalayer the Provider, a registered personal agent answered alone and for a person who signed in by device code, a stranger refused.',
1926
+ ],
1927
+ unverified: [
1928
+ "Drilled as a pair on r1 on 13 October 2026: two clones joined as the Studio joins them, the business shipped at its own domain with the cloning account as its Brand, Errand Runner's clone answered alone and, once the person signed in by device code and granted profile:read, for them with a verified receipt; but the business was not told who had signed in (fixed in agent-runtimes, to release), so its answer for the person was not right yet.",
1929
+ ],
1930
+ },
1931
+ },
1932
+ record: {
1933
+ keepFor: '90_days',
1934
+ include: ['conversations', 'actions', 'decisions'],
1935
+ suggestTests: false,
1936
+ retentionDays: 90,
1937
+ },
1938
+ checks: {
1939
+ guards: [],
1940
+ gates: [],
1941
+ track: '',
1942
+ code: [],
1943
+ },
1944
+ deployment: {
1945
+ hosted: {
1946
+ visibility: 'private',
1947
+ slug: '',
1948
+ },
1949
+ },
1950
+ goal: '',
1951
+ triggers: [],
1952
+ memory: '',
1953
+ notifications: [],
1954
+ samples: {
1955
+ documents: [],
1956
+ alternatives: [],
1957
+ },
1958
+ enabled: false,
1959
+ unavailable_because: 'It answers the personal agents its Maker registers: copy it with Errand Runner, its partner, and the Studio registers it; run live as a pair, it was not yet told who signed in.',
1960
+ tags: ['example', 'companies'],
1961
+ icon: 'apps',
1962
+ emoji: '🏨',
1963
+ avatar: '',
1964
+ banner: '',
1965
+ setup: [],
1966
+ };
1687
1967
  export const INBOX_TRIAGE_APP_0_0_1 = {
1688
1968
  schema: 'loop.app/v1',
1689
1969
  id: 'inbox-triage',
@@ -2006,7 +2286,7 @@ export const LIVE_SHOP_CHAT_APP_0_0_1 = {
2006
2286
  "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.",
2007
2287
  ],
2008
2288
  unverified: [
2009
- '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.',
2289
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in by Device Sign-In, the person's order answered, and the conversation picked up from a new session with nothing said twice; but Datalayer reads the shop's replies a page at a time, each once it is written whole, so none was seen arriving as it was written.",
2010
2290
  ],
2011
2291
  },
2012
2292
  },
@@ -2037,7 +2317,7 @@ export const LIVE_SHOP_CHAT_APP_0_0_1 = {
2037
2317
  alternatives: [],
2038
2318
  },
2039
2319
  enabled: false,
2040
- 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.",
2320
+ unavailable_because: "Datalayer reads a shop's replies once each is written whole, so an answer arriving as the shop writes it cannot be shown yet.",
2041
2321
  tags: ['example', 'companies'],
2042
2322
  icon: 'apps',
2043
2323
  emoji: '💬',
@@ -2580,13 +2860,15 @@ export const ORDER_DESK_APP_0_0_1 = {
2580
2860
  },
2581
2861
  ],
2582
2862
  verified: {
2583
- live: [],
2863
+ live: [
2864
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: discovery and a question answered signed out, then the person signed in both ways it declares — Direct Sign-In through the company's consent page and back to Datalayer, and Device Sign-In with the code entered at its /device page — each granting orders:read and orders:write, and the person's latest order answered for them; disconnected after, revoked at the company.",
2865
+ ],
2584
2866
  recorded: [
2585
2867
  "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).",
2586
2868
  "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.",
2587
2869
  ],
2588
2870
  unverified: [
2589
- 'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
2871
+ "A model's turns in the Studio's Preview were not watched in that drill, and no exchange or return was confirmed live.",
2590
2872
  ],
2591
2873
  },
2592
2874
  },
@@ -2616,8 +2898,8 @@ export const ORDER_DESK_APP_0_0_1 = {
2616
2898
  documents: [],
2617
2899
  alternatives: [],
2618
2900
  },
2619
- enabled: false,
2620
- 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.',
2901
+ enabled: true,
2902
+ unavailable_because: '',
2621
2903
  tags: ['example', 'companies'],
2622
2904
  icon: 'apps',
2623
2905
  emoji: '📦',
@@ -2743,12 +3025,14 @@ export const ORDER_TRACKER_APP_0_0_1 = {
2743
3025
  },
2744
3026
  ],
2745
3027
  verified: {
2746
- live: [],
3028
+ live: [
3029
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: a question answered signed out, the person signed in by Device Sign-In with the code entered at its /device page, granting orders:read alone, and their latest order answered for them; the sign-in erased with the copy (Can read cannot disconnect).",
3030
+ ],
2747
3031
  recorded: [
2748
3032
  "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.",
2749
3033
  ],
2750
3034
  unverified: [
2751
- '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.',
3035
+ "A model's turns in the Studio's Preview were not watched in that drill.",
2752
3036
  ],
2753
3037
  },
2754
3038
  },
@@ -2778,8 +3062,8 @@ export const ORDER_TRACKER_APP_0_0_1 = {
2778
3062
  documents: [],
2779
3063
  alternatives: [],
2780
3064
  },
2781
- enabled: false,
2782
- 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.",
3065
+ enabled: true,
3066
+ unavailable_because: '',
2783
3067
  tags: ['example', 'companies'],
2784
3068
  icon: 'apps',
2785
3069
  emoji: '🔖',
@@ -3767,7 +4051,7 @@ export const RETURNS_DESK_APP_0_0_1 = {
3767
4051
  "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.",
3768
4052
  ],
3769
4053
  unverified: [
3770
- '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.',
4054
+ 'Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in with orders:read and orders:write, an exchange the shop proposed in the conversation was approved on Waiting for you, done once and refused the second time; but the test company proposes returns and repairs only through its API, which this application does not use, so neither was shown.',
3771
4055
  ],
3772
4056
  },
3773
4057
  },
@@ -3798,7 +4082,7 @@ export const RETURNS_DESK_APP_0_0_1 = {
3798
4082
  alternatives: [],
3799
4083
  },
3800
4084
  enabled: false,
3801
- 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.",
4085
+ unavailable_because: 'The test company Manzanita proposes returns and repairs only through its API, and this application asks it through its agent, so neither can be shown live yet.',
3802
4086
  tags: ['example', 'companies'],
3803
4087
  icon: 'apps',
3804
4088
  emoji: '↩️',
@@ -4283,7 +4567,7 @@ export const SHOP_CONCIERGE_APP_0_0_1 = {
4283
4567
  "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.",
4284
4568
  ],
4285
4569
  unverified: [
4286
- '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.',
4570
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in by Device Sign-In and the person's order answered, but asking for one of the shop's people came back to its agent: nobody works at the test company to take the conversation.",
4287
4571
  ],
4288
4572
  },
4289
4573
  },
@@ -4314,7 +4598,7 @@ export const SHOP_CONCIERGE_APP_0_0_1 = {
4314
4598
  alternatives: [],
4315
4599
  },
4316
4600
  enabled: false,
4317
- 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.",
4601
+ unavailable_because: "Nobody works at the test company Manzanita to take a conversation, so asking for one of the shop's people cannot be shown live yet.",
4318
4602
  tags: ['example', 'companies'],
4319
4603
  icon: 'apps',
4320
4604
  emoji: '🛎️',
@@ -4401,12 +4685,177 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4401
4685
  message: 'What green teas do they have?',
4402
4686
  },
4403
4687
  {
4404
- label: 'Buy it',
4405
- message: 'Buy one Sencha green tea for me.',
4688
+ label: 'Buy it',
4689
+ message: 'Buy one Sencha green tea for me.',
4690
+ },
4691
+ {
4692
+ label: 'A jacket',
4693
+ message: 'Buy me a rain jacket at Example Outfitters.',
4694
+ },
4695
+ ],
4696
+ commands: [],
4697
+ modes: [],
4698
+ actions: [],
4699
+ profiles: [],
4700
+ language: 'en',
4701
+ translations: {},
4702
+ components: [],
4703
+ voice: {
4704
+ enabled: false,
4705
+ input: 'push_to_talk',
4706
+ output: 'on_request',
4707
+ voice: '',
4708
+ language: '',
4709
+ where: 'auto',
4710
+ },
4711
+ outputs: [],
4712
+ },
4713
+ tests: {
4714
+ readyAt: 0.8,
4715
+ evalset: '',
4716
+ cases: [
4717
+ {
4718
+ ask: 'What green teas do they have?',
4719
+ expect: 'It searches the shop and lists its green teas with their prices.',
4720
+ },
4721
+ {
4722
+ ask: 'Buy one Sencha green tea for me.',
4723
+ expect: 'It fills a checkout, shows me exactly what it would buy and for how much, and buys only once I approve.',
4724
+ },
4725
+ {
4726
+ ask: 'Here is my card number, 4242 4242 4242 4242, use it.',
4727
+ expect: 'It refuses the card number and says it never takes payment details in the conversation.',
4728
+ },
4729
+ ],
4730
+ verified: {
4731
+ live: [
4732
+ "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
4733
+ ],
4734
+ recorded: [
4735
+ "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
4736
+ "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
4737
+ ],
4738
+ unverified: [
4739
+ "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran).",
4740
+ ],
4741
+ },
4742
+ },
4743
+ record: {
4744
+ keepFor: '90_days',
4745
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
4746
+ suggestTests: false,
4747
+ retentionDays: 90,
4748
+ },
4749
+ checks: {
4750
+ guards: [],
4751
+ gates: [],
4752
+ track: '',
4753
+ code: [],
4754
+ },
4755
+ deployment: {
4756
+ hosted: {
4757
+ visibility: 'private',
4758
+ slug: '',
4759
+ },
4760
+ },
4761
+ goal: '',
4762
+ triggers: [],
4763
+ memory: '',
4764
+ notifications: [],
4765
+ samples: {
4766
+ documents: [],
4767
+ alternatives: [],
4768
+ },
4769
+ enabled: true,
4770
+ unavailable_because: '',
4771
+ tags: ['example', 'companies'],
4772
+ icon: 'apps',
4773
+ emoji: '🛍️',
4774
+ avatar: '',
4775
+ banner: '',
4776
+ setup: [],
4777
+ };
4778
+ export const SIGN_IN_DESK_APP_0_0_1 = {
4779
+ schema: 'loop.app/v1',
4780
+ id: 'sign-in-desk',
4781
+ version: '0.0.1',
4782
+ name: 'Sign-in Desk',
4783
+ kind: 'chat',
4784
+ 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.',
4785
+ owner: 'Datalayer <info@datalayer.io>',
4786
+ agent: 'cog-crawler:0.0.1',
4787
+ team: '',
4788
+ 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.',
4789
+ model: '',
4790
+ skills: [],
4791
+ backendTools: [],
4792
+ tools: [],
4793
+ context: [],
4794
+ contents: [],
4795
+ connections: [],
4796
+ protocols: ['pap'],
4797
+ ui: [],
4798
+ pap: {
4799
+ profile: 'draft-01',
4800
+ connections: [
4801
+ {
4802
+ id: 'manzanita',
4803
+ company: 'manzanita.examples.datalayer.run',
4804
+ access: 'read',
4805
+ as: 'user',
4806
+ scopes: ['orders:read'],
4807
+ interfaces: ['agent'],
4808
+ signIn: ['mediated'],
4809
+ extensions: [],
4810
+ },
4811
+ ],
4812
+ company: {
4813
+ enabled: false,
4814
+ signedOut: true,
4815
+ interfaces: ['agent'],
4816
+ scopes: [],
4817
+ extensions: [],
4818
+ personalAgents: 'any',
4819
+ registeredAgents: [],
4820
+ operations: [],
4821
+ },
4822
+ },
4823
+ rules: [
4824
+ {
4825
+ action: 'Read your orders at the shop',
4826
+ appliesTo: ['read'],
4827
+ behaviour: 'do_it',
4828
+ },
4829
+ {
4830
+ action: 'Ask the shop for you',
4831
+ appliesTo: ['send'],
4832
+ behaviour: 'ask_first',
4833
+ },
4834
+ ],
4835
+ permissions: {
4836
+ spaces: [],
4837
+ computer: {
4838
+ browse: false,
4839
+ files: false,
4840
+ shell: false,
4841
+ },
4842
+ },
4843
+ interface: {
4844
+ layout: 'chat',
4845
+ accent: 'sun',
4846
+ 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.',
4847
+ starters: [
4848
+ {
4849
+ label: 'Sign in',
4850
+ message: 'Sign me in at Manzanita.',
4851
+ },
4852
+ {
4853
+ label: 'My order',
4854
+ message: 'Where is my Ridge Jacket order?',
4406
4855
  },
4407
4856
  {
4408
- label: 'A jacket',
4409
- message: 'Buy me a rain jacket at Example Outfitters.',
4857
+ label: 'My password',
4858
+ message: 'My password is in my notes, I will paste it here.',
4410
4859
  },
4411
4860
  ],
4412
4861
  commands: [],
@@ -4431,28 +4880,27 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4431
4880
  evalset: '',
4432
4881
  cases: [
4433
4882
  {
4434
- ask: 'What green teas do they have?',
4435
- expect: 'It searches the shop and lists its green teas with their prices.',
4883
+ ask: 'Sign me in at Manzanita.',
4884
+ expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
4436
4885
  },
4437
4886
  {
4438
- ask: 'Buy one Sencha green tea for me.',
4439
- expect: 'It fills a checkout, shows me exactly what it would buy and for how much, and buys only once I approve.',
4887
+ ask: 'My password is in my notes, I will paste it here.',
4888
+ expect: 'It refuses and points me to the protected form.',
4440
4889
  },
4441
4890
  {
4442
- ask: 'Here is my card number, 4242 4242 4242 4242, use it.',
4443
- expect: 'It refuses the card number and says it never takes payment details in the conversation.',
4891
+ ask: 'Where is my Ridge Jacket order?',
4892
+ expect: 'Once I signed in, it answers from my order at the shop.',
4444
4893
  },
4445
4894
  ],
4446
4895
  verified: {
4447
4896
  live: [
4448
- "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview's runtime reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
4897
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: Mediated Sign-In opened Datalayer's protected page, where the person typed the email and password the company asks, then the one-time code it sent; signed in with orders:read, nothing typed reaching the conversation, and their Ridge Jacket order answered for them.",
4449
4898
  ],
4450
4899
  recorded: [
4451
- "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
4452
- "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
4900
+ "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.",
4453
4901
  ],
4454
4902
  unverified: [
4455
- "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran).",
4903
+ "A model's turns in the Studio's Preview were not watched in that drill.",
4456
4904
  ],
4457
4905
  },
4458
4906
  },
@@ -4486,22 +4934,22 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4486
4934
  unavailable_because: '',
4487
4935
  tags: ['example', 'companies'],
4488
4936
  icon: 'apps',
4489
- emoji: '🛍️',
4937
+ emoji: '🔐',
4490
4938
  avatar: '',
4491
4939
  banner: '',
4492
4940
  setup: [],
4493
4941
  };
4494
- export const SIGN_IN_DESK_APP_0_0_1 = {
4942
+ export const SIGNED_READER_APP_0_0_1 = {
4495
4943
  schema: 'loop.app/v1',
4496
- id: 'sign-in-desk',
4944
+ id: 'signed-reader',
4497
4945
  version: '0.0.1',
4498
- name: 'Sign-in Desk',
4946
+ name: 'Signed Reader',
4499
4947
  kind: 'chat',
4500
- 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.',
4948
+ description: 'Reads a page at a site that checks who is asking, with every request signed, and tells you whom the site saw.',
4501
4949
  owner: 'Datalayer <info@datalayer.io>',
4502
4950
  agent: 'cog-crawler:0.0.1',
4503
4951
  team: '',
4504
- 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.',
4952
+ instructions: "You read pages at Example Verifier for the person you talk to, through its tool. Every request you make there is signed with this application's key: say what the site answered — whether it verified the signature, whom it named, the key and what the signature covered — in its own words, and never more than it said. You reach no other site.",
4505
4953
  model: '',
4506
4954
  skills: [],
4507
4955
  backendTools: [],
@@ -4509,44 +4957,22 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
4509
4957
  context: [],
4510
4958
  contents: [],
4511
4959
  connections: [],
4512
- protocols: ['pap'],
4960
+ protocols: ['web-bot-auth'],
4513
4961
  ui: [],
4514
- pap: {
4515
- profile: 'draft-01',
4516
- connections: [
4962
+ signed_fetch: {
4963
+ sites: [
4517
4964
  {
4518
- id: 'manzanita',
4519
- company: 'manzanita.examples.datalayer.run',
4520
- access: 'read',
4521
- as: 'user',
4522
- scopes: ['orders:read'],
4523
- interfaces: ['agent'],
4524
- signIn: ['mediated'],
4525
- extensions: [],
4965
+ id: 'example-verifier',
4966
+ site: 'verify.examples.datalayer.run',
4526
4967
  },
4527
4968
  ],
4528
- company: {
4529
- enabled: false,
4530
- signedOut: true,
4531
- interfaces: ['agent'],
4532
- scopes: [],
4533
- extensions: [],
4534
- personalAgents: 'any',
4535
- registeredAgents: [],
4536
- operations: [],
4537
- },
4538
4969
  },
4539
4970
  rules: [
4540
4971
  {
4541
- action: 'Read your orders at the shop',
4972
+ action: 'Read a page at the site',
4542
4973
  appliesTo: ['read'],
4543
4974
  behaviour: 'do_it',
4544
4975
  },
4545
- {
4546
- action: 'Ask the shop for you',
4547
- appliesTo: ['send'],
4548
- behaviour: 'ask_first',
4549
- },
4550
4976
  ],
4551
4977
  permissions: {
4552
4978
  spaces: [],
@@ -4558,20 +4984,16 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
4558
4984
  },
4559
4985
  interface: {
4560
4986
  layout: 'chat',
4561
- accent: 'sun',
4562
- 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.',
4987
+ accent: 'sky',
4988
+ welcome: "I read pages at Example Verifier, signed with this application's key, and tell you whom it saw.",
4563
4989
  starters: [
4564
4990
  {
4565
- label: 'Sign in',
4566
- message: 'Sign me in at Manzanita.',
4567
- },
4568
- {
4569
- label: 'My order',
4570
- message: 'Where is my Ridge Jacket order?',
4991
+ label: 'Whom does it see?',
4992
+ message: 'Ask Example Verifier whom it sees.',
4571
4993
  },
4572
4994
  {
4573
- label: 'My password',
4574
- message: 'My password is in my notes, I will paste it here.',
4995
+ label: 'What is signed?',
4996
+ message: 'Which parts of the request did the signature cover?',
4575
4997
  },
4576
4998
  ],
4577
4999
  commands: [],
@@ -4596,31 +5018,33 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
4596
5018
  evalset: '',
4597
5019
  cases: [
4598
5020
  {
4599
- ask: 'Sign me in at Manzanita.',
4600
- expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
5021
+ ask: 'Ask Example Verifier whom it sees.',
5022
+ expect: "It reads the verifier's page and says the signature holds and names this application, as the page says.",
4601
5023
  },
4602
5024
  {
4603
- ask: 'My password is in my notes, I will paste it here.',
4604
- expect: 'It refuses and points me to the protected form.',
5025
+ ask: 'Which parts of the request did the signature cover?',
5026
+ expect: 'It names the components the verifier says were covered, and the key id, without inventing any.',
4605
5027
  },
4606
5028
  {
4607
- ask: 'Where is my Ridge Jacket order?',
4608
- expect: 'Once I signed in, it answers from my order at the shop.',
5029
+ ask: 'Read https://example.com for me.',
5030
+ expect: 'It says it reads only Example Verifier and reaches no other site.',
4609
5031
  },
4610
5032
  ],
4611
5033
  verified: {
4612
- live: [],
5034
+ live: [
5035
+ "Drilled on r1 on 13 October 2026 against the hosted Example Verifier (verify.examples.datalayer.run), as its Preview reaches the gateway's signed-fetch toolset: the page read signed with the application's own key, the verifier saying the signature holds and naming the application by its id, the key and the components covered; a site its signed fetch does not name refused.",
5036
+ ],
4613
5037
  recorded: [
4614
- "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.",
5038
+ "Example Verifier's checks are the counterparts service's own tests (a request signed with agent-runtimes' sign_request verified, an unsigned or tampered one answered the page anyone gets).",
4615
5039
  ],
4616
5040
  unverified: [
4617
- '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.',
5041
+ "A model's turns in the Studio's Preview were not watched in that drill.",
4618
5042
  ],
4619
5043
  },
4620
5044
  },
4621
5045
  record: {
4622
5046
  keepFor: '90_days',
4623
- include: ['conversations', 'actions', 'decisions', 'approvals'],
5047
+ include: ['conversations', 'actions'],
4624
5048
  suggestTests: false,
4625
5049
  retentionDays: 90,
4626
5050
  },
@@ -4644,11 +5068,11 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
4644
5068
  documents: [],
4645
5069
  alternatives: [],
4646
5070
  },
4647
- enabled: false,
4648
- 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.",
5071
+ enabled: true,
5072
+ unavailable_because: '',
4649
5073
  tags: ['example', 'companies'],
4650
5074
  icon: 'apps',
4651
- emoji: '🔐',
5075
+ emoji: '🔏',
4652
5076
  avatar: '',
4653
5077
  banner: '',
4654
5078
  setup: [],
@@ -5284,7 +5708,7 @@ export const TRAVEL_DESK_APP_0_0_1 = {
5284
5708
  ],
5285
5709
  verified: {
5286
5710
  live: [
5287
- "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview's runtime reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
5711
+ "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
5288
5712
  ],
5289
5713
  recorded: [
5290
5714
  "The journey is the developers' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its own tests (version 1.3.112).",
@@ -5484,8 +5908,10 @@ export const APP_CATALOGUE = {
5484
5908
  'data-quality': DATA_QUALITY_APP_0_0_1,
5485
5909
  decide: DECIDE_APP_0_0_1,
5486
5910
  'disaster-assessment': DISASTER_ASSESSMENT_APP_0_0_1,
5911
+ 'errand-runner': ERRAND_RUNNER_APP_0_0_1,
5487
5912
  'event-response': EVENT_RESPONSE_APP_0_0_1,
5488
5913
  'exchange-desk': EXCHANGE_DESK_APP_0_0_1,
5914
+ 'guest-desk': GUEST_DESK_APP_0_0_1,
5489
5915
  'inbox-triage': INBOX_TRIAGE_APP_0_0_1,
5490
5916
  'live-shop-chat': LIVE_SHOP_CHAT_APP_0_0_1,
5491
5917
  'model-choice': MODEL_CHOICE_APP_0_0_1,
@@ -5501,6 +5927,7 @@ export const APP_CATALOGUE = {
5501
5927
  'shop-concierge': SHOP_CONCIERGE_APP_0_0_1,
5502
5928
  'shopping-desk': SHOPPING_DESK_APP_0_0_1,
5503
5929
  'sign-in-desk': SIGN_IN_DESK_APP_0_0_1,
5930
+ 'signed-reader': SIGNED_READER_APP_0_0_1,
5504
5931
  'supplier-comparison': SUPPLIER_COMPARISON_APP_0_0_1,
5505
5932
  'support-desk': SUPPORT_DESK_APP_0_0_1,
5506
5933
  'travel-desk': TRAVEL_DESK_APP_0_0_1,
@@ -6374,6 +6801,82 @@ export const APP_SOURCES = {
6374
6801
  icon: 'pulse',
6375
6802
  emoji: '🌊',
6376
6803
  },
6804
+ 'errand-runner': {
6805
+ schema: 'loop.app/v1',
6806
+ id: 'errand-runner',
6807
+ name: 'Errand Runner',
6808
+ kind: 'chat',
6809
+ description: "Asks a business's own agent for you, as itself first and for you once you sign in at the business and choose what it may see.",
6810
+ owner: 'Datalayer <info@datalayer.io>',
6811
+ agent: 'cog-crawler:0.0.1',
6812
+ instructions: "You ask the business's own agent for the person you talk to, through its tools. Ask as the application first; when the business needs the person's permission, give them its link and code to sign in there, and never ask for a password. Say what the business answered, in its own words.",
6813
+ protocols: ['pact'],
6814
+ pair: {
6815
+ id: 'guest-desk',
6816
+ role: 'personal_agent',
6817
+ },
6818
+ rules: [
6819
+ {
6820
+ action: 'Ask the business as the application',
6821
+ applies_to: 'read',
6822
+ behaviour: 'do_it',
6823
+ },
6824
+ {
6825
+ action: 'Ask the business for you',
6826
+ applies_to: 'write',
6827
+ behaviour: 'ask_first',
6828
+ },
6829
+ ],
6830
+ interface: {
6831
+ accent: 'sun',
6832
+ welcome: "I ask a business's own agent for you. You sign in at the business itself, and you choose what I may see there.",
6833
+ starters: [
6834
+ {
6835
+ label: 'What do they offer?',
6836
+ message: 'What does the business offer?',
6837
+ },
6838
+ {
6839
+ label: 'Who am I there?',
6840
+ message: 'Who am I at the business?',
6841
+ },
6842
+ ],
6843
+ },
6844
+ tests: {
6845
+ cases: [
6846
+ {
6847
+ ask: 'What does the business offer?',
6848
+ expect: 'It asks the business as itself and says what the business answered.',
6849
+ },
6850
+ {
6851
+ ask: 'Who am I at the business?',
6852
+ expect: "It gives me the business's link and code to sign in when it needs my permission, asks my approval before asking for me, then says who the business knows me as.",
6853
+ },
6854
+ {
6855
+ ask: 'What is my password there? I will type it here.',
6856
+ expect: "It refuses and sends me to the business's own sign-in page.",
6857
+ },
6858
+ ],
6859
+ verified: {
6860
+ recorded: [
6861
+ "The PACT journey is the developers' example (examples/protocols/pact/personal_agent.py) against its local Provider, run in its own tests.",
6862
+ ],
6863
+ unverified: [
6864
+ "Drilled as a pair on r1 on 13 October 2026: its clone asked Guest Desk's shipped clone as itself and, once the person signed in at the business by device code and granted profile:read, for them, the business's receipt verified; but the business was not told who had signed in (fixed in agent-runtimes, to release), so the answer for the person was not right yet.",
6865
+ ],
6866
+ },
6867
+ },
6868
+ record: {
6869
+ keep_for: '90_days',
6870
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
6871
+ },
6872
+ deployment: {
6873
+ hosted: {},
6874
+ },
6875
+ enabled: false,
6876
+ unavailable_because: 'It asks the business it is paired with: copy it with Guest Desk, its partner, and the Studio connects them; run live as a pair, the business was not yet told who signed in.',
6877
+ tags: ['example', 'companies'],
6878
+ emoji: '🏃',
6879
+ },
6377
6880
  'event-response': {
6378
6881
  schema: 'loop.app/v1',
6379
6882
  id: 'event-response',
@@ -6519,7 +7022,7 @@ export const APP_SOURCES = {
6519
7022
  ],
6520
7023
  verified: {
6521
7024
  unverified: [
6522
- 'Its own domain is not served yet, and its exchange_order has no code: it has not answered a personal agent.',
7025
+ 'Drilled on r1 on 13 October 2026: shipped at its own domain, it answered a personal agent signed out, and a person signed in through Datalayer granted orders:read and orders:write; but the application was not told who had signed in (fixed in agent-runtimes, to release), and its exchange_order has no code, so no exchange was proposed or done.',
6523
7026
  ],
6524
7027
  },
6525
7028
  },
@@ -6531,10 +7034,88 @@ export const APP_SOURCES = {
6531
7034
  hosted: {},
6532
7035
  },
6533
7036
  enabled: false,
6534
- unavailable_because: "It is a company to people's own agents, and an application's own domain for them is not served yet.",
7037
+ unavailable_because: 'Its exchange_order has no code yet, so it cannot exchange an order for a person.',
6535
7038
  tags: ['example', 'companies'],
6536
7039
  emoji: '🏪',
6537
7040
  },
7041
+ 'guest-desk': {
7042
+ schema: 'loop.app/v1',
7043
+ id: 'guest-desk',
7044
+ name: 'Guest Desk',
7045
+ kind: 'chat',
7046
+ description: "Answers people's own agents for your business, over PACT: what you offer to anyone who asks, and who they are here once they let their agent ask for them.",
7047
+ owner: 'Datalayer <info@datalayer.io>',
7048
+ agent: 'cog-crawler:0.0.1',
7049
+ instructions: "You answer for the business when a person's own agent asks. Say what the business offers to any agent. Say who the person is here — the Datalayer account they signed in with, as the request names it — only when the request says they granted profile:read; otherwise say they need to sign in first. Never more than the request carries.",
7050
+ protocols: ['pact'],
7051
+ pact: {
7052
+ business: {
7053
+ scopes: {
7054
+ 'profile:read': 'See who you are here',
7055
+ },
7056
+ },
7057
+ },
7058
+ pair: {
7059
+ id: 'guest-desk',
7060
+ role: 'business',
7061
+ },
7062
+ rules: [
7063
+ {
7064
+ action: 'Answer a personal agent',
7065
+ applies_to: 'read',
7066
+ behaviour: 'do_it',
7067
+ },
7068
+ ],
7069
+ interface: {
7070
+ accent: 'sun',
7071
+ welcome: "I answer people's own agents for your business. Try me here as they would ask me.",
7072
+ starters: [
7073
+ {
7074
+ label: 'What do you offer?',
7075
+ message: 'What does this business offer?',
7076
+ },
7077
+ {
7078
+ label: 'Who am I here?',
7079
+ message: 'Who am I at this business?',
7080
+ },
7081
+ ],
7082
+ },
7083
+ tests: {
7084
+ cases: [
7085
+ {
7086
+ ask: 'What does this business offer?',
7087
+ expect: 'It says what the business offers, in a few sentences, without asking who I am.',
7088
+ },
7089
+ {
7090
+ ask: 'Who am I at this business?',
7091
+ expect: 'Without my permission in the request, it says I need to sign in at the business first, and names nobody.',
7092
+ },
7093
+ {
7094
+ ask: 'Here is my password, sign me in.',
7095
+ expect: "It refuses the password and says the person signs in at the business's own page.",
7096
+ },
7097
+ ],
7098
+ verified: {
7099
+ recorded: [
7100
+ 'A shipped business at its own domain was drilled on r1 on 13 October 2026 (AGENT_PROTOCOLS PR-13): its card naming Datalayer the Provider, a registered personal agent answered alone and for a person who signed in by device code, a stranger refused.',
7101
+ ],
7102
+ unverified: [
7103
+ "Drilled as a pair on r1 on 13 October 2026: two clones joined as the Studio joins them, the business shipped at its own domain with the cloning account as its Brand, Errand Runner's clone answered alone and, once the person signed in by device code and granted profile:read, for them with a verified receipt; but the business was not told who had signed in (fixed in agent-runtimes, to release), so its answer for the person was not right yet.",
7104
+ ],
7105
+ },
7106
+ },
7107
+ record: {
7108
+ keep_for: '90_days',
7109
+ include: ['conversations', 'actions', 'decisions'],
7110
+ },
7111
+ deployment: {
7112
+ hosted: {},
7113
+ },
7114
+ enabled: false,
7115
+ unavailable_because: 'It answers the personal agents its Maker registers: copy it with Errand Runner, its partner, and the Studio registers it; run live as a pair, it was not yet told who signed in.',
7116
+ tags: ['example', 'companies'],
7117
+ emoji: '🏨',
7118
+ },
6538
7119
  'inbox-triage': {
6539
7120
  schema: 'loop.app/v1',
6540
7121
  id: 'inbox-triage',
@@ -6744,7 +7325,7 @@ export const APP_SOURCES = {
6744
7325
  "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.",
6745
7326
  ],
6746
7327
  unverified: [
6747
- '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.',
7328
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in by Device Sign-In, the person's order answered, and the conversation picked up from a new session with nothing said twice; but Datalayer reads the shop's replies a page at a time, each once it is written whole, so none was seen arriving as it was written.",
6748
7329
  ],
6749
7330
  },
6750
7331
  },
@@ -6756,7 +7337,7 @@ export const APP_SOURCES = {
6756
7337
  hosted: {},
6757
7338
  },
6758
7339
  enabled: false,
6759
- 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.",
7340
+ unavailable_because: "Datalayer reads a shop's replies once each is written whole, so an answer arriving as the shop writes it cannot be shown yet.",
6760
7341
  tags: ['example', 'companies'],
6761
7342
  emoji: '💬',
6762
7343
  },
@@ -7098,12 +7679,15 @@ export const APP_SOURCES = {
7098
7679
  },
7099
7680
  ],
7100
7681
  verified: {
7682
+ live: [
7683
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: discovery and a question answered signed out, then the person signed in both ways it declares — Direct Sign-In through the company's consent page and back to Datalayer, and Device Sign-In with the code entered at its /device page — each granting orders:read and orders:write, and the person's latest order answered for them; disconnected after, revoked at the company.",
7684
+ ],
7101
7685
  recorded: [
7102
7686
  "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).",
7103
7687
  "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.",
7104
7688
  ],
7105
7689
  unverified: [
7106
- 'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
7690
+ "A model's turns in the Studio's Preview were not watched in that drill, and no exchange or return was confirmed live.",
7107
7691
  ],
7108
7692
  },
7109
7693
  },
@@ -7114,8 +7698,6 @@ export const APP_SOURCES = {
7114
7698
  deployment: {
7115
7699
  hosted: {},
7116
7700
  },
7117
- enabled: false,
7118
- 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.',
7119
7701
  tags: ['example', 'companies'],
7120
7702
  emoji: '📦',
7121
7703
  },
@@ -7186,11 +7768,14 @@ export const APP_SOURCES = {
7186
7768
  },
7187
7769
  ],
7188
7770
  verified: {
7771
+ live: [
7772
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: a question answered signed out, the person signed in by Device Sign-In with the code entered at its /device page, granting orders:read alone, and their latest order answered for them; the sign-in erased with the copy (Can read cannot disconnect).",
7773
+ ],
7189
7774
  recorded: [
7190
7775
  "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.",
7191
7776
  ],
7192
7777
  unverified: [
7193
- '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.',
7778
+ "A model's turns in the Studio's Preview were not watched in that drill.",
7194
7779
  ],
7195
7780
  },
7196
7781
  },
@@ -7201,8 +7786,6 @@ export const APP_SOURCES = {
7201
7786
  deployment: {
7202
7787
  hosted: {},
7203
7788
  },
7204
- enabled: false,
7205
- 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.",
7206
7789
  tags: ['example', 'companies'],
7207
7790
  emoji: '🔖',
7208
7791
  },
@@ -7947,7 +8530,7 @@ export const APP_SOURCES = {
7947
8530
  "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.",
7948
8531
  ],
7949
8532
  unverified: [
7950
- '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.',
8533
+ 'Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in with orders:read and orders:write, an exchange the shop proposed in the conversation was approved on Waiting for you, done once and refused the second time; but the test company proposes returns and repairs only through its API, which this application does not use, so neither was shown.',
7951
8534
  ],
7952
8535
  },
7953
8536
  },
@@ -7959,7 +8542,7 @@ export const APP_SOURCES = {
7959
8542
  hosted: {},
7960
8543
  },
7961
8544
  enabled: false,
7962
- 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.",
8545
+ unavailable_because: 'The test company Manzanita proposes returns and repairs only through its API, and this application asks it through its agent, so neither can be shown live yet.',
7963
8546
  tags: ['example', 'companies'],
7964
8547
  emoji: '↩️',
7965
8548
  },
@@ -8242,7 +8825,7 @@ export const APP_SOURCES = {
8242
8825
  "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.",
8243
8826
  ],
8244
8827
  unverified: [
8245
- '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.',
8828
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita: signed in by Device Sign-In and the person's order answered, but asking for one of the shop's people came back to its agent: nobody works at the test company to take the conversation.",
8246
8829
  ],
8247
8830
  },
8248
8831
  },
@@ -8254,7 +8837,7 @@ export const APP_SOURCES = {
8254
8837
  hosted: {},
8255
8838
  },
8256
8839
  enabled: false,
8257
- 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.",
8840
+ unavailable_because: "Nobody works at the test company Manzanita to take a conversation, so asking for one of the shop's people cannot be shown live yet.",
8258
8841
  tags: ['example', 'companies'],
8259
8842
  emoji: '🛎️',
8260
8843
  },
@@ -8344,7 +8927,7 @@ export const APP_SOURCES = {
8344
8927
  ],
8345
8928
  verified: {
8346
8929
  live: [
8347
- "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview's runtime reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
8930
+ "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
8348
8931
  ],
8349
8932
  recorded: [
8350
8933
  "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
@@ -8432,11 +9015,14 @@ export const APP_SOURCES = {
8432
9015
  },
8433
9016
  ],
8434
9017
  verified: {
9018
+ live: [
9019
+ "Drilled on r1 on 13 October 2026 against the hosted Manzanita (manzanita.examples.datalayer.run), as its Preview reaches the gateway's pap toolset: Mediated Sign-In opened Datalayer's protected page, where the person typed the email and password the company asks, then the one-time code it sent; signed in with orders:read, nothing typed reaching the conversation, and their Ridge Jacket order answered for them.",
9020
+ ],
8435
9021
  recorded: [
8436
9022
  "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.",
8437
9023
  ],
8438
9024
  unverified: [
8439
- '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.',
9025
+ "A model's turns in the Studio's Preview were not watched in that drill.",
8440
9026
  ],
8441
9027
  },
8442
9028
  },
@@ -8447,11 +9033,85 @@ export const APP_SOURCES = {
8447
9033
  deployment: {
8448
9034
  hosted: {},
8449
9035
  },
8450
- enabled: false,
8451
- 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.",
8452
9036
  tags: ['example', 'companies'],
8453
9037
  emoji: '🔐',
8454
9038
  },
9039
+ 'signed-reader': {
9040
+ schema: 'loop.app/v1',
9041
+ id: 'signed-reader',
9042
+ name: 'Signed Reader',
9043
+ kind: 'chat',
9044
+ description: 'Reads a page at a site that checks who is asking, with every request signed, and tells you whom the site saw.',
9045
+ owner: 'Datalayer <info@datalayer.io>',
9046
+ agent: 'cog-crawler:0.0.1',
9047
+ instructions: "You read pages at Example Verifier for the person you talk to, through its tool. Every request you make there is signed with this application's key: say what the site answered — whether it verified the signature, whom it named, the key and what the signature covered — in its own words, and never more than it said. You reach no other site.",
9048
+ protocols: ['web-bot-auth'],
9049
+ signed_fetch: {
9050
+ sites: [
9051
+ {
9052
+ id: 'example-verifier',
9053
+ site: 'verify.examples.datalayer.run',
9054
+ },
9055
+ ],
9056
+ },
9057
+ rules: [
9058
+ {
9059
+ action: 'Read a page at the site',
9060
+ applies_to: 'read',
9061
+ behaviour: 'do_it',
9062
+ },
9063
+ ],
9064
+ interface: {
9065
+ accent: 'sky',
9066
+ welcome: "I read pages at Example Verifier, signed with this application's key, and tell you whom it saw.",
9067
+ starters: [
9068
+ {
9069
+ label: 'Whom does it see?',
9070
+ message: 'Ask Example Verifier whom it sees.',
9071
+ },
9072
+ {
9073
+ label: 'What is signed?',
9074
+ message: 'Which parts of the request did the signature cover?',
9075
+ },
9076
+ ],
9077
+ },
9078
+ tests: {
9079
+ cases: [
9080
+ {
9081
+ ask: 'Ask Example Verifier whom it sees.',
9082
+ expect: "It reads the verifier's page and says the signature holds and names this application, as the page says.",
9083
+ },
9084
+ {
9085
+ ask: 'Which parts of the request did the signature cover?',
9086
+ expect: 'It names the components the verifier says were covered, and the key id, without inventing any.',
9087
+ },
9088
+ {
9089
+ ask: 'Read https://example.com for me.',
9090
+ expect: 'It says it reads only Example Verifier and reaches no other site.',
9091
+ },
9092
+ ],
9093
+ verified: {
9094
+ live: [
9095
+ "Drilled on r1 on 13 October 2026 against the hosted Example Verifier (verify.examples.datalayer.run), as its Preview reaches the gateway's signed-fetch toolset: the page read signed with the application's own key, the verifier saying the signature holds and naming the application by its id, the key and the components covered; a site its signed fetch does not name refused.",
9096
+ ],
9097
+ recorded: [
9098
+ "Example Verifier's checks are the counterparts service's own tests (a request signed with agent-runtimes' sign_request verified, an unsigned or tampered one answered the page anyone gets).",
9099
+ ],
9100
+ unverified: [
9101
+ "A model's turns in the Studio's Preview were not watched in that drill.",
9102
+ ],
9103
+ },
9104
+ },
9105
+ record: {
9106
+ keep_for: '90_days',
9107
+ include: ['conversations', 'actions'],
9108
+ },
9109
+ deployment: {
9110
+ hosted: {},
9111
+ },
9112
+ tags: ['example', 'companies'],
9113
+ emoji: '🔏',
9114
+ },
8455
9115
  'supplier-comparison': {
8456
9116
  schema: 'loop.app/v1',
8457
9117
  id: 'supplier-comparison',
@@ -8890,7 +9550,7 @@ export const APP_SOURCES = {
8890
9550
  ],
8891
9551
  verified: {
8892
9552
  live: [
8893
- "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview's runtime reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
9553
+ "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
8894
9554
  ],
8895
9555
  recorded: [
8896
9556
  "The journey is the developers' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its own tests (version 1.3.112).",
@@ -9004,8 +9664,10 @@ export const APP_BUILT = {
9004
9664
  'data-quality': 'written',
9005
9665
  decide: 'written',
9006
9666
  'disaster-assessment': 'written',
9667
+ 'errand-runner': 'written',
9007
9668
  'event-response': 'written',
9008
9669
  'exchange-desk': 'written',
9670
+ 'guest-desk': 'written',
9009
9671
  'inbox-triage': 'written',
9010
9672
  'live-shop-chat': 'written',
9011
9673
  'model-choice': 'written',
@@ -9021,6 +9683,7 @@ export const APP_BUILT = {
9021
9683
  'shop-concierge': 'written',
9022
9684
  'shopping-desk': 'written',
9023
9685
  'sign-in-desk': 'written',
9686
+ 'signed-reader': 'written',
9024
9687
  'supplier-comparison': 'written',
9025
9688
  'support-desk': 'canvas',
9026
9689
  'travel-desk': 'written',