@datalayer/agent-runtimes 1.3.113 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed/chunks/{ChatView-D41Nx5rC.js → ChatView-BpKZPdcp.js} +4 -4
- package/dist-embed/datalayer-app-main.js +150 -150
- package/lib/apps/apps/appspec.d.ts +13 -0
- package/lib/apps/apps/appspec.js +125 -0
- package/lib/apps/apps/checks.d.ts +1 -1
- package/lib/apps/apps/checks.js +2 -2
- package/lib/apps/apps/customComponents.js +1 -1
- package/lib/apps/core/canvasBlocks.d.ts +3 -3
- package/lib/apps/core/canvasParts.d.ts +6 -4
- package/lib/apps/embed/AppEmbed.js +3 -7
- package/lib/apps/embed/embedSession.d.ts +8 -4
- package/lib/apps/embed/embedSession.js +16 -9
- package/lib/apps/plugins/a2ui-surface/AnswerShows.d.ts +21 -0
- package/lib/apps/plugins/a2ui-surface/AnswerShows.js +29 -0
- package/lib/apps/plugins/a2ui-surface/SurfaceToolResult.js +4 -7
- package/lib/apps/plugins/a2ui-surface/index.d.ts +2 -1
- package/lib/apps/plugins/a2ui-surface/index.js +10 -1
- package/lib/apps/plugins/a2ui-surface/toolResult.d.ts +20 -11
- package/lib/apps/plugins/a2ui-surface/toolResult.js +27 -11
- package/lib/apps/plugins/app-components/index.d.ts +1 -1
- package/lib/apps/plugins/app-components/index.js +2 -2
- package/lib/apps/plugins/app-elements/AppElements.d.ts +3 -3
- package/lib/apps/plugins/app-elements/AppElements.js +5 -20
- package/lib/apps/plugins/app-elements/QuestionView.d.ts +28 -0
- package/lib/apps/plugins/app-elements/QuestionView.js +57 -0
- package/lib/apps/plugins/app-elements/index.d.ts +7 -4
- package/lib/apps/plugins/app-elements/index.js +14 -5
- package/lib/apps/plugins/canvas-blocks/index.d.ts +13 -13
- package/lib/apps/plugins/canvas-blocks/index.js +24 -24
- package/lib/apps/plugins/canvas-parts/index.d.ts +7 -1
- package/lib/apps/plugins/canvas-parts/index.js +36 -0
- package/lib/apps/plugins/chat/ChatView.js +7 -0
- package/lib/chat/base/ChatBase.js +234 -43
- package/lib/chat/base/loopElement.d.ts +16 -17
- package/lib/chat/base/loopElement.js +11 -27
- package/lib/chat/base/loopStep.d.ts +15 -15
- package/lib/chat/base/loopStep.js +10 -13
- package/lib/chat/base/loopWindow.d.ts +15 -20
- package/lib/chat/base/loopWindow.js +26 -27
- package/lib/chat/base/uiOps.d.ts +96 -0
- package/lib/chat/base/uiOps.js +251 -0
- package/lib/chat/messages/ChatMessageList.d.ts +8 -1
- package/lib/chat/messages/ChatMessageList.js +4 -4
- package/lib/components/a2ui/datalayer/Chart.d.ts +1 -1
- package/lib/components/a2ui/datalayer/schema.js +1 -1
- package/lib/components/teams/AnswerSurfaces.d.ts +3 -2
- package/lib/components/teams/AnswerSurfaces.js +7 -7
- package/lib/components/teams/useA2ATeam.d.ts +1 -1
- package/lib/config/AgentConfiguration.d.ts +1 -1
- package/lib/protocols/AGUIAdapter.d.ts +7 -0
- package/lib/protocols/AGUIAdapter.js +43 -3
- package/lib/protocols/agentic-commerce/index.d.ts +5 -9
- package/lib/protocols/agentic-commerce/index.js +6 -10
- package/lib/protocols/commerce.d.ts +8 -9
- package/lib/protocols/commerce.js +29 -0
- package/lib/protocols/ucp/index.d.ts +5 -10
- package/lib/protocols/ucp/index.js +6 -11
- package/lib/specs/actions.d.ts +8 -0
- package/lib/specs/actions.js +56 -0
- package/lib/specs/agents/agents.js +338 -169
- package/lib/specs/apps.d.ts +1 -0
- package/lib/specs/apps.js +272 -0
- package/lib/specs/appspecSchema.js +125 -0
- package/lib/specs/cogs.js +6 -3
- package/lib/specs/index.d.ts +2 -1
- package/lib/specs/index.js +2 -1
- package/lib/specs/protocols.d.ts +24 -0
- package/lib/specs/protocols.js +197 -0
- package/lib/specs/ui.d.ts +21 -0
- package/lib/specs/{uiPlugins.js → ui.js} +14 -14
- package/lib/types/agentspecs.d.ts +72 -5
- package/lib/types/messages.d.ts +7 -0
- package/lib/types/protocol.d.ts +8 -0
- package/package.json +2 -2
- package/scripts/codegen/generate_agents.py +43 -8
- package/scripts/codegen/generate_apps.py +38 -1
- package/scripts/codegen/generate_protocols.py +207 -0
- package/scripts/codegen/generate_sandbox_agents.py +1 -1
- package/scripts/codegen/{generate_ui_plugins.py → generate_ui.py} +40 -40
- package/scripts/gen_workers.py +2 -2
- package/lib/chat/base/loopMessage.d.ts +0 -37
- package/lib/chat/base/loopMessage.js +0 -37
- package/lib/specs/uiPlugins.d.ts +0 -21
package/lib/specs/apps.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare const SALES_APP_0_0_1: AppSpec;
|
|
|
28
28
|
export declare const SHIP_OR_FIX_APP_0_0_1: AppSpec;
|
|
29
29
|
export declare const SUPPLIER_COMPARISON_APP_0_0_1: AppSpec;
|
|
30
30
|
export declare const SUPPORT_DESK_APP_0_0_1: AppSpec;
|
|
31
|
+
export declare const TRAVEL_DESK_APP_0_0_1: AppSpec;
|
|
31
32
|
export declare const WEB_RESEARCH_APP_0_0_1: AppSpec;
|
|
32
33
|
export declare const APP_CATALOGUE: Record<string, AppSpec>;
|
|
33
34
|
/** An application, by `id` or `id:version`, or undefined. */
|
package/lib/specs/apps.js
CHANGED
|
@@ -27,6 +27,8 @@ export const ACCOUNTING_APP_0_0_1 = {
|
|
|
27
27
|
only: [],
|
|
28
28
|
},
|
|
29
29
|
],
|
|
30
|
+
protocols: [],
|
|
31
|
+
ui: [],
|
|
30
32
|
rules: [
|
|
31
33
|
{
|
|
32
34
|
action: 'Read the books',
|
|
@@ -180,6 +182,8 @@ export const CHANGE_DETECTION_APP_0_0_1 = {
|
|
|
180
182
|
only: [],
|
|
181
183
|
},
|
|
182
184
|
],
|
|
185
|
+
protocols: [],
|
|
186
|
+
ui: [],
|
|
183
187
|
rules: [
|
|
184
188
|
{
|
|
185
189
|
action: 'Search and read the imagery',
|
|
@@ -336,6 +340,8 @@ export const CROP_MONITORING_APP_0_0_1 = {
|
|
|
336
340
|
only: [],
|
|
337
341
|
},
|
|
338
342
|
],
|
|
343
|
+
protocols: [],
|
|
344
|
+
ui: [],
|
|
339
345
|
rules: [
|
|
340
346
|
{
|
|
341
347
|
action: 'Search and read the imagery',
|
|
@@ -489,6 +495,8 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
|
|
|
489
495
|
context: ['customer-research:0.0.1'],
|
|
490
496
|
contents: [],
|
|
491
497
|
connections: [],
|
|
498
|
+
protocols: [],
|
|
499
|
+
ui: [],
|
|
492
500
|
rules: [
|
|
493
501
|
{
|
|
494
502
|
action: 'Send the summary by email',
|
|
@@ -697,6 +705,8 @@ export const DATA_QUALITY_APP_0_0_1 = {
|
|
|
697
705
|
context: [],
|
|
698
706
|
contents: ['The dataset under investigation'],
|
|
699
707
|
connections: [],
|
|
708
|
+
protocols: [],
|
|
709
|
+
ui: [],
|
|
700
710
|
rules: [],
|
|
701
711
|
permissions: {
|
|
702
712
|
spaces: [],
|
|
@@ -888,6 +898,8 @@ export const DECIDE_APP_0_0_1 = {
|
|
|
888
898
|
context: [],
|
|
889
899
|
contents: [],
|
|
890
900
|
connections: [],
|
|
901
|
+
protocols: [],
|
|
902
|
+
ui: [],
|
|
891
903
|
rules: [
|
|
892
904
|
{
|
|
893
905
|
action: 'Ask a decision',
|
|
@@ -1023,6 +1035,8 @@ export const DISASTER_ASSESSMENT_APP_0_0_1 = {
|
|
|
1023
1035
|
only: [],
|
|
1024
1036
|
},
|
|
1025
1037
|
],
|
|
1038
|
+
protocols: [],
|
|
1039
|
+
ui: [],
|
|
1026
1040
|
rules: [
|
|
1027
1041
|
{
|
|
1028
1042
|
action: 'Search and read the imagery',
|
|
@@ -1172,6 +1186,8 @@ export const EVENT_RESPONSE_APP_0_0_1 = {
|
|
|
1172
1186
|
context: [],
|
|
1173
1187
|
contents: [],
|
|
1174
1188
|
connections: [],
|
|
1189
|
+
protocols: [],
|
|
1190
|
+
ui: [],
|
|
1175
1191
|
rules: [],
|
|
1176
1192
|
permissions: {
|
|
1177
1193
|
spaces: [],
|
|
@@ -1328,6 +1344,8 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
|
|
|
1328
1344
|
context: [],
|
|
1329
1345
|
contents: [],
|
|
1330
1346
|
connections: [],
|
|
1347
|
+
protocols: ['pap'],
|
|
1348
|
+
ui: [],
|
|
1331
1349
|
pap: {
|
|
1332
1350
|
connections: [],
|
|
1333
1351
|
company: {
|
|
@@ -1465,6 +1483,8 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
|
|
|
1465
1483
|
only: ['*gmail*'],
|
|
1466
1484
|
},
|
|
1467
1485
|
],
|
|
1486
|
+
protocols: [],
|
|
1487
|
+
ui: [],
|
|
1468
1488
|
rules: [
|
|
1469
1489
|
{
|
|
1470
1490
|
action: 'Label and archive a message',
|
|
@@ -1657,6 +1677,8 @@ export const MODEL_CHOICE_APP_0_0_1 = {
|
|
|
1657
1677
|
'The Models page: how each model is billed (standard or credits) and who hosts it',
|
|
1658
1678
|
],
|
|
1659
1679
|
connections: [],
|
|
1680
|
+
protocols: [],
|
|
1681
|
+
ui: [],
|
|
1660
1682
|
rules: [],
|
|
1661
1683
|
permissions: {
|
|
1662
1684
|
spaces: [],
|
|
@@ -1906,6 +1928,8 @@ export const MONTH_END_CLOSE_APP_0_0_1 = {
|
|
|
1906
1928
|
only: [],
|
|
1907
1929
|
},
|
|
1908
1930
|
],
|
|
1931
|
+
protocols: [],
|
|
1932
|
+
ui: [],
|
|
1909
1933
|
rules: [
|
|
1910
1934
|
{
|
|
1911
1935
|
action: 'Read the books',
|
|
@@ -2059,6 +2083,8 @@ export const ORDER_DESK_APP_0_0_1 = {
|
|
|
2059
2083
|
context: [],
|
|
2060
2084
|
contents: [],
|
|
2061
2085
|
connections: [],
|
|
2086
|
+
protocols: ['pap'],
|
|
2087
|
+
ui: [],
|
|
2062
2088
|
pap: {
|
|
2063
2089
|
connections: [
|
|
2064
2090
|
{
|
|
@@ -2218,6 +2244,8 @@ export const PIPELINE_REPORT_APP_0_0_1 = {
|
|
|
2218
2244
|
context: ['datalayer:0.0.1'],
|
|
2219
2245
|
contents: ['Sales pipeline export'],
|
|
2220
2246
|
connections: [],
|
|
2247
|
+
protocols: [],
|
|
2248
|
+
ui: [],
|
|
2221
2249
|
rules: [
|
|
2222
2250
|
{
|
|
2223
2251
|
action: 'Send the report',
|
|
@@ -2512,6 +2540,8 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
|
|
|
2512
2540
|
context: [],
|
|
2513
2541
|
contents: ['Price list'],
|
|
2514
2542
|
connections: [],
|
|
2543
|
+
protocols: [],
|
|
2544
|
+
ui: [],
|
|
2515
2545
|
rules: [],
|
|
2516
2546
|
permissions: {
|
|
2517
2547
|
spaces: [],
|
|
@@ -2782,6 +2812,8 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
|
|
|
2782
2812
|
context: [],
|
|
2783
2813
|
contents: [],
|
|
2784
2814
|
connections: [],
|
|
2815
|
+
protocols: [],
|
|
2816
|
+
ui: [],
|
|
2785
2817
|
rules: [
|
|
2786
2818
|
{
|
|
2787
2819
|
action: 'Send the report by email',
|
|
@@ -3056,6 +3088,8 @@ export const SALES_APP_0_0_1 = {
|
|
|
3056
3088
|
context: [],
|
|
3057
3089
|
contents: [],
|
|
3058
3090
|
connections: [],
|
|
3091
|
+
protocols: [],
|
|
3092
|
+
ui: [],
|
|
3059
3093
|
rules: [],
|
|
3060
3094
|
permissions: {
|
|
3061
3095
|
spaces: [],
|
|
@@ -3189,6 +3223,8 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
|
|
|
3189
3223
|
context: [],
|
|
3190
3224
|
contents: ['The benchmark run: task results, traces, cost and latency'],
|
|
3191
3225
|
connections: [],
|
|
3226
|
+
protocols: [],
|
|
3227
|
+
ui: [],
|
|
3192
3228
|
rules: [],
|
|
3193
3229
|
permissions: {
|
|
3194
3230
|
spaces: [],
|
|
@@ -3404,6 +3440,8 @@ export const SUPPLIER_COMPARISON_APP_0_0_1 = {
|
|
|
3404
3440
|
context: [],
|
|
3405
3441
|
contents: ['Order history', 'Supplier price lists', 'Delivery records'],
|
|
3406
3442
|
connections: [],
|
|
3443
|
+
protocols: [],
|
|
3444
|
+
ui: [],
|
|
3407
3445
|
rules: [],
|
|
3408
3446
|
permissions: {
|
|
3409
3447
|
spaces: [],
|
|
@@ -3606,6 +3644,8 @@ export const SUPPORT_DESK_APP_0_0_1 = {
|
|
|
3606
3644
|
context: [],
|
|
3607
3645
|
contents: ['Product documentation', 'Returns policy'],
|
|
3608
3646
|
connections: [],
|
|
3647
|
+
protocols: [],
|
|
3648
|
+
ui: [],
|
|
3609
3649
|
rules: [],
|
|
3610
3650
|
permissions: {
|
|
3611
3651
|
spaces: [],
|
|
@@ -3904,6 +3944,149 @@ export const SUPPORT_DESK_APP_0_0_1 = {
|
|
|
3904
3944
|
banner: '',
|
|
3905
3945
|
setup: [],
|
|
3906
3946
|
};
|
|
3947
|
+
export const TRAVEL_DESK_APP_0_0_1 = {
|
|
3948
|
+
schema: 'loop.app/v1',
|
|
3949
|
+
id: 'travel-desk',
|
|
3950
|
+
version: '0.0.1',
|
|
3951
|
+
name: 'Travel Desk',
|
|
3952
|
+
kind: 'chat',
|
|
3953
|
+
description: 'Asks your airline about your bookings and changes them for you, signed in to your own account at the airline, with only the permissions you grant.',
|
|
3954
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
3955
|
+
agent: 'cog-crawler:0.0.1',
|
|
3956
|
+
team: '',
|
|
3957
|
+
instructions: "You ask Example Air's own agent for the person you talk to, through its tools. Ask as the application first; when the airline needs the person's permission, give them its link and code to sign in at the airline itself, and never ask for a password. Change a booking only when the person asked.",
|
|
3958
|
+
model: '',
|
|
3959
|
+
skills: [],
|
|
3960
|
+
backendTools: [],
|
|
3961
|
+
tools: [],
|
|
3962
|
+
context: [],
|
|
3963
|
+
contents: [],
|
|
3964
|
+
connections: [],
|
|
3965
|
+
protocols: ['pact'],
|
|
3966
|
+
ui: [],
|
|
3967
|
+
pact: {
|
|
3968
|
+
connections: [
|
|
3969
|
+
{
|
|
3970
|
+
id: 'example-air',
|
|
3971
|
+
brand: 'air.example',
|
|
3972
|
+
audience: 'https://provider.example/a2a',
|
|
3973
|
+
access: 'write',
|
|
3974
|
+
scopes: ['bookings:read', 'bookings:change'],
|
|
3975
|
+
},
|
|
3976
|
+
],
|
|
3977
|
+
},
|
|
3978
|
+
rules: [
|
|
3979
|
+
{
|
|
3980
|
+
action: 'Ask the airline and read your bookings',
|
|
3981
|
+
appliesTo: ['read'],
|
|
3982
|
+
behaviour: 'do_it',
|
|
3983
|
+
},
|
|
3984
|
+
{
|
|
3985
|
+
action: 'Change a booking for you',
|
|
3986
|
+
appliesTo: ['write'],
|
|
3987
|
+
behaviour: 'ask_first',
|
|
3988
|
+
},
|
|
3989
|
+
],
|
|
3990
|
+
permissions: {
|
|
3991
|
+
spaces: [],
|
|
3992
|
+
computer: {
|
|
3993
|
+
browse: false,
|
|
3994
|
+
files: false,
|
|
3995
|
+
shell: false,
|
|
3996
|
+
},
|
|
3997
|
+
},
|
|
3998
|
+
interface: {
|
|
3999
|
+
layout: 'chat',
|
|
4000
|
+
accent: 'sky',
|
|
4001
|
+
welcome: 'I ask Example Air about your bookings and change them for you. You sign in at the airline itself, and you choose what I may do there.',
|
|
4002
|
+
starters: [
|
|
4003
|
+
{
|
|
4004
|
+
label: 'When do I fly',
|
|
4005
|
+
message: 'When is my flight to Lisbon?',
|
|
4006
|
+
},
|
|
4007
|
+
{
|
|
4008
|
+
label: 'Change it',
|
|
4009
|
+
message: 'Move my flight to the following week.',
|
|
4010
|
+
},
|
|
4011
|
+
],
|
|
4012
|
+
commands: [],
|
|
4013
|
+
modes: [],
|
|
4014
|
+
profiles: [],
|
|
4015
|
+
language: 'en',
|
|
4016
|
+
translations: {},
|
|
4017
|
+
components: [],
|
|
4018
|
+
voice: {
|
|
4019
|
+
enabled: false,
|
|
4020
|
+
input: 'push_to_talk',
|
|
4021
|
+
output: 'on_request',
|
|
4022
|
+
voice: '',
|
|
4023
|
+
language: '',
|
|
4024
|
+
where: 'auto',
|
|
4025
|
+
},
|
|
4026
|
+
outputs: [],
|
|
4027
|
+
},
|
|
4028
|
+
tests: {
|
|
4029
|
+
readyAt: 0.8,
|
|
4030
|
+
evalset: '',
|
|
4031
|
+
cases: [
|
|
4032
|
+
{
|
|
4033
|
+
ask: 'When is my flight to Lisbon?',
|
|
4034
|
+
expect: "It asks the airline, gives me the airline's link and code to sign in when it needs my permission, then answers from my booking.",
|
|
4035
|
+
},
|
|
4036
|
+
{
|
|
4037
|
+
ask: 'Move my flight to the following week.',
|
|
4038
|
+
expect: 'It asks my approval before the airline changes anything, and says what changed.',
|
|
4039
|
+
},
|
|
4040
|
+
{
|
|
4041
|
+
ask: 'What is my password at the airline? I will type it here.',
|
|
4042
|
+
expect: "It refuses and sends me to the airline's own sign-in page.",
|
|
4043
|
+
},
|
|
4044
|
+
],
|
|
4045
|
+
verified: {
|
|
4046
|
+
live: [],
|
|
4047
|
+
recorded: [
|
|
4048
|
+
"The journey is agent-runtimes' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its tests (agent-runtimes 1.3.112).",
|
|
4049
|
+
],
|
|
4050
|
+
unverified: [
|
|
4051
|
+
"No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
|
|
4052
|
+
],
|
|
4053
|
+
},
|
|
4054
|
+
},
|
|
4055
|
+
record: {
|
|
4056
|
+
keepFor: '90_days',
|
|
4057
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
4058
|
+
suggestTests: false,
|
|
4059
|
+
retentionDays: 90,
|
|
4060
|
+
},
|
|
4061
|
+
checks: {
|
|
4062
|
+
guards: [],
|
|
4063
|
+
gates: [],
|
|
4064
|
+
track: '',
|
|
4065
|
+
code: [],
|
|
4066
|
+
},
|
|
4067
|
+
deployment: {
|
|
4068
|
+
hosted: {
|
|
4069
|
+
visibility: 'private',
|
|
4070
|
+
slug: '',
|
|
4071
|
+
},
|
|
4072
|
+
},
|
|
4073
|
+
goal: '',
|
|
4074
|
+
triggers: [],
|
|
4075
|
+
memory: '',
|
|
4076
|
+
notifications: [],
|
|
4077
|
+
samples: {
|
|
4078
|
+
documents: [],
|
|
4079
|
+
alternatives: [],
|
|
4080
|
+
},
|
|
4081
|
+
enabled: false,
|
|
4082
|
+
unavailable_because: 'It asks an airline for you over PACT, and the services that reach a business for you are not shipped yet.',
|
|
4083
|
+
tags: ['example', 'companies'],
|
|
4084
|
+
icon: 'apps',
|
|
4085
|
+
emoji: '✈️',
|
|
4086
|
+
avatar: '',
|
|
4087
|
+
banner: '',
|
|
4088
|
+
setup: [],
|
|
4089
|
+
};
|
|
3907
4090
|
export const WEB_RESEARCH_APP_0_0_1 = {
|
|
3908
4091
|
schema: 'loop.app/v1',
|
|
3909
4092
|
id: 'web-research',
|
|
@@ -3929,6 +4112,8 @@ export const WEB_RESEARCH_APP_0_0_1 = {
|
|
|
3929
4112
|
only: [],
|
|
3930
4113
|
},
|
|
3931
4114
|
],
|
|
4115
|
+
protocols: [],
|
|
4116
|
+
ui: [],
|
|
3932
4117
|
rules: [],
|
|
3933
4118
|
permissions: {
|
|
3934
4119
|
spaces: [],
|
|
@@ -4067,6 +4252,7 @@ export const APP_CATALOGUE = {
|
|
|
4067
4252
|
'ship-or-fix': SHIP_OR_FIX_APP_0_0_1,
|
|
4068
4253
|
'supplier-comparison': SUPPLIER_COMPARISON_APP_0_0_1,
|
|
4069
4254
|
'support-desk': SUPPORT_DESK_APP_0_0_1,
|
|
4255
|
+
'travel-desk': TRAVEL_DESK_APP_0_0_1,
|
|
4070
4256
|
'web-research': WEB_RESEARCH_APP_0_0_1,
|
|
4071
4257
|
};
|
|
4072
4258
|
/** An application, by `id` or `id:version`, or undefined. */
|
|
@@ -4891,6 +5077,7 @@ export const APP_SOURCES = {
|
|
|
4891
5077
|
does: ['write'],
|
|
4892
5078
|
},
|
|
4893
5079
|
],
|
|
5080
|
+
protocols: ['pap'],
|
|
4894
5081
|
pap: {
|
|
4895
5082
|
company: {
|
|
4896
5083
|
enabled: true,
|
|
@@ -5356,6 +5543,7 @@ export const APP_SOURCES = {
|
|
|
5356
5543
|
owner: 'Datalayer <info@datalayer.io>',
|
|
5357
5544
|
agent: 'cog-crawler:0.0.1',
|
|
5358
5545
|
instructions: 'You work with Manzanita Outfitters for the person you talk to, through its tools. Ask the shop before saying anything about an order; when it asks the person to sign in, say so and wait. Never confirm what the shop proposes on your own: the person approves it, word for word, on Waiting for you.',
|
|
5546
|
+
protocols: ['pap'],
|
|
5359
5547
|
pap: {
|
|
5360
5548
|
connections: [
|
|
5361
5549
|
{
|
|
@@ -6675,6 +6863,89 @@ export const APP_SOURCES = {
|
|
|
6675
6863
|
icon: 'question',
|
|
6676
6864
|
emoji: '🛟',
|
|
6677
6865
|
},
|
|
6866
|
+
'travel-desk': {
|
|
6867
|
+
schema: 'loop.app/v1',
|
|
6868
|
+
id: 'travel-desk',
|
|
6869
|
+
name: 'Travel Desk',
|
|
6870
|
+
kind: 'chat',
|
|
6871
|
+
description: 'Asks your airline about your bookings and changes them for you, signed in to your own account at the airline, with only the permissions you grant.',
|
|
6872
|
+
owner: 'Datalayer <info@datalayer.io>',
|
|
6873
|
+
agent: 'cog-crawler:0.0.1',
|
|
6874
|
+
instructions: "You ask Example Air's own agent for the person you talk to, through its tools. Ask as the application first; when the airline needs the person's permission, give them its link and code to sign in at the airline itself, and never ask for a password. Change a booking only when the person asked.",
|
|
6875
|
+
protocols: ['pact'],
|
|
6876
|
+
pact: {
|
|
6877
|
+
connections: [
|
|
6878
|
+
{
|
|
6879
|
+
id: 'example-air',
|
|
6880
|
+
brand: 'air.example',
|
|
6881
|
+
audience: 'https://provider.example/a2a',
|
|
6882
|
+
access: 'write',
|
|
6883
|
+
scopes: ['bookings:read', 'bookings:change'],
|
|
6884
|
+
},
|
|
6885
|
+
],
|
|
6886
|
+
},
|
|
6887
|
+
rules: [
|
|
6888
|
+
{
|
|
6889
|
+
action: 'Ask the airline and read your bookings',
|
|
6890
|
+
applies_to: 'read',
|
|
6891
|
+
behaviour: 'do_it',
|
|
6892
|
+
},
|
|
6893
|
+
{
|
|
6894
|
+
action: 'Change a booking for you',
|
|
6895
|
+
applies_to: 'write',
|
|
6896
|
+
behaviour: 'ask_first',
|
|
6897
|
+
},
|
|
6898
|
+
],
|
|
6899
|
+
interface: {
|
|
6900
|
+
accent: 'sky',
|
|
6901
|
+
welcome: 'I ask Example Air about your bookings and change them for you. You sign in at the airline itself, and you choose what I may do there.',
|
|
6902
|
+
starters: [
|
|
6903
|
+
{
|
|
6904
|
+
label: 'When do I fly',
|
|
6905
|
+
message: 'When is my flight to Lisbon?',
|
|
6906
|
+
},
|
|
6907
|
+
{
|
|
6908
|
+
label: 'Change it',
|
|
6909
|
+
message: 'Move my flight to the following week.',
|
|
6910
|
+
},
|
|
6911
|
+
],
|
|
6912
|
+
},
|
|
6913
|
+
tests: {
|
|
6914
|
+
cases: [
|
|
6915
|
+
{
|
|
6916
|
+
ask: 'When is my flight to Lisbon?',
|
|
6917
|
+
expect: "It asks the airline, gives me the airline's link and code to sign in when it needs my permission, then answers from my booking.",
|
|
6918
|
+
},
|
|
6919
|
+
{
|
|
6920
|
+
ask: 'Move my flight to the following week.',
|
|
6921
|
+
expect: 'It asks my approval before the airline changes anything, and says what changed.',
|
|
6922
|
+
},
|
|
6923
|
+
{
|
|
6924
|
+
ask: 'What is my password at the airline? I will type it here.',
|
|
6925
|
+
expect: "It refuses and sends me to the airline's own sign-in page.",
|
|
6926
|
+
},
|
|
6927
|
+
],
|
|
6928
|
+
verified: {
|
|
6929
|
+
recorded: [
|
|
6930
|
+
"The journey is agent-runtimes' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its tests (agent-runtimes 1.3.112).",
|
|
6931
|
+
],
|
|
6932
|
+
unverified: [
|
|
6933
|
+
"No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
|
|
6934
|
+
],
|
|
6935
|
+
},
|
|
6936
|
+
},
|
|
6937
|
+
record: {
|
|
6938
|
+
keep_for: '90_days',
|
|
6939
|
+
include: ['conversations', 'actions', 'decisions', 'approvals'],
|
|
6940
|
+
},
|
|
6941
|
+
deployment: {
|
|
6942
|
+
hosted: {},
|
|
6943
|
+
},
|
|
6944
|
+
enabled: false,
|
|
6945
|
+
unavailable_because: 'It asks an airline for you over PACT, and the services that reach a business for you are not shipped yet.',
|
|
6946
|
+
tags: ['example', 'companies'],
|
|
6947
|
+
emoji: '✈️',
|
|
6948
|
+
},
|
|
6678
6949
|
'web-research': {
|
|
6679
6950
|
schema: 'loop.app/v1',
|
|
6680
6951
|
id: 'web-research',
|
|
@@ -6780,6 +7051,7 @@ export const APP_BUILT = {
|
|
|
6780
7051
|
'ship-or-fix': 'written',
|
|
6781
7052
|
'supplier-comparison': 'written',
|
|
6782
7053
|
'support-desk': 'canvas',
|
|
7054
|
+
'travel-desk': 'written',
|
|
6783
7055
|
'web-research': 'written',
|
|
6784
7056
|
};
|
|
6785
7057
|
/** Every application of the catalogue, or those of a kind. */
|
|
@@ -28,6 +28,54 @@ export const APPSPEC_SCHEMA = {
|
|
|
28
28
|
title: 'ActsAs',
|
|
29
29
|
type: 'string',
|
|
30
30
|
},
|
|
31
|
+
AppA2A: {
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
description: "A2A: what the application's Agent Card says beside its name and skill (AGENT_PROTOCOLS PR-02).",
|
|
34
|
+
properties: {
|
|
35
|
+
extensions: {
|
|
36
|
+
description: "Extensions its card advertises, besides the runtime's own",
|
|
37
|
+
items: {
|
|
38
|
+
$ref: '#/$defs/AppA2AExtension',
|
|
39
|
+
},
|
|
40
|
+
title: 'Extensions',
|
|
41
|
+
type: 'array',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
title: 'AppA2A',
|
|
45
|
+
type: 'object',
|
|
46
|
+
},
|
|
47
|
+
AppA2AExtension: {
|
|
48
|
+
additionalProperties: false,
|
|
49
|
+
description: "An A2A extension the application's Agent Card advertises (A2A 1.0\n*Extensions*, AGENT_PROTOCOLS PR-02), beside the runtime's own.\n\nNamed by its URI, as `capabilities.extensions` writes it; its params are\npublished on the card as they are, so they never hold a credential.\nDatalayer's own extensions (orchestration, the face) are the runtime's,\nnever declared here.",
|
|
50
|
+
properties: {
|
|
51
|
+
uri: {
|
|
52
|
+
description: "The extension's URI: `https://example.com/ext/gift-wrap/v1`",
|
|
53
|
+
title: 'Uri',
|
|
54
|
+
type: 'string',
|
|
55
|
+
},
|
|
56
|
+
description: {
|
|
57
|
+
default: '',
|
|
58
|
+
description: 'What it adds, for whoever reads the card',
|
|
59
|
+
title: 'Description',
|
|
60
|
+
type: 'string',
|
|
61
|
+
},
|
|
62
|
+
required: {
|
|
63
|
+
default: false,
|
|
64
|
+
description: 'Whether a client must support it to talk to the application at all',
|
|
65
|
+
title: 'Required',
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
},
|
|
68
|
+
params: {
|
|
69
|
+
additionalProperties: true,
|
|
70
|
+
description: 'Its parameters on the card, as the extension defines them; public',
|
|
71
|
+
title: 'Params',
|
|
72
|
+
type: 'object',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
required: ['uri'],
|
|
76
|
+
title: 'AppA2AExtension',
|
|
77
|
+
type: 'object',
|
|
78
|
+
},
|
|
31
79
|
AppChecks: {
|
|
32
80
|
additionalProperties: false,
|
|
33
81
|
description: "Optional: checks from the catalogue, for a builder who wants them — and its code's own.",
|
|
@@ -772,6 +820,59 @@ export const APPSPEC_SCHEMA = {
|
|
|
772
820
|
title: 'AppOptionTranslation',
|
|
773
821
|
type: 'object',
|
|
774
822
|
},
|
|
823
|
+
AppPact: {
|
|
824
|
+
additionalProperties: false,
|
|
825
|
+
description: 'PACT: the businesses it asks for each person (AGENT_PROTOCOLS PI-01).',
|
|
826
|
+
properties: {
|
|
827
|
+
connections: {
|
|
828
|
+
description: 'Businesses, over PACT',
|
|
829
|
+
items: {
|
|
830
|
+
$ref: '#/$defs/AppPactConnection',
|
|
831
|
+
},
|
|
832
|
+
title: 'Connections',
|
|
833
|
+
type: 'array',
|
|
834
|
+
},
|
|
835
|
+
},
|
|
836
|
+
title: 'AppPact',
|
|
837
|
+
type: 'object',
|
|
838
|
+
},
|
|
839
|
+
AppPactConnection: {
|
|
840
|
+
additionalProperties: false,
|
|
841
|
+
description: "A business the application asks for each person, over PACT 1.0 (AGENT_PROTOCOLS PI-01).\n\nThe Brand is named by its domain — its Agent Card is at\n`https://<brand>/.well-known/agent-card.json` (PACT §2.1) — and its\nProvider's `audience`, which the Provider assigns at registration and\nthe personal-agent JWT carries (§3.1). Always in each person's own name:\nPACT acts for a person. No credential is ever part of a spec.",
|
|
842
|
+
properties: {
|
|
843
|
+
id: {
|
|
844
|
+
description: 'Stable within the application: `support`',
|
|
845
|
+
title: 'Id',
|
|
846
|
+
type: 'string',
|
|
847
|
+
},
|
|
848
|
+
brand: {
|
|
849
|
+
description: "The business's domain: `example.com`",
|
|
850
|
+
title: 'Brand',
|
|
851
|
+
type: 'string',
|
|
852
|
+
},
|
|
853
|
+
audience: {
|
|
854
|
+
description: 'The audience its Provider assigned (PACT §3.1)',
|
|
855
|
+
title: 'Audience',
|
|
856
|
+
type: 'string',
|
|
857
|
+
},
|
|
858
|
+
access: {
|
|
859
|
+
$ref: '#/$defs/Access',
|
|
860
|
+
default: 'read',
|
|
861
|
+
description: 'How far: `read` (asks as the application alone), or `write` (also for the person, delegated)',
|
|
862
|
+
},
|
|
863
|
+
scopes: {
|
|
864
|
+
description: "The Brand's scopes it may ask the person for: `orders:read`",
|
|
865
|
+
items: {
|
|
866
|
+
type: 'string',
|
|
867
|
+
},
|
|
868
|
+
title: 'Scopes',
|
|
869
|
+
type: 'array',
|
|
870
|
+
},
|
|
871
|
+
},
|
|
872
|
+
required: ['id', 'brand', 'audience'],
|
|
873
|
+
title: 'AppPactConnection',
|
|
874
|
+
type: 'object',
|
|
875
|
+
},
|
|
775
876
|
AppPage: {
|
|
776
877
|
additionalProperties: false,
|
|
777
878
|
description: "A widget's page written in its code (LOOP P-05): `@app.page`.\n\nIts inputs are a form, drawn on the page; as one changes, the function\nof its code runs again on them and the page shows what it returned, in\nplace. Without its file nothing runs it, and validation says so.",
|
|
@@ -2166,10 +2267,34 @@ export const APPSPEC_SCHEMA = {
|
|
|
2166
2267
|
title: 'Connections',
|
|
2167
2268
|
type: 'array',
|
|
2168
2269
|
},
|
|
2270
|
+
protocols: {
|
|
2271
|
+
description: 'The agent protocols it speaks, ids of the protocols catalogue (AGENT_PROTOCOLS PS-02): its `pap`, `pact` and `a2a` blocks are refused unless their protocol is listed, and a planned protocol only while it is not offered',
|
|
2272
|
+
items: {
|
|
2273
|
+
type: 'string',
|
|
2274
|
+
},
|
|
2275
|
+
title: 'Protocols',
|
|
2276
|
+
type: 'array',
|
|
2277
|
+
},
|
|
2278
|
+
ui: {
|
|
2279
|
+
description: 'The UI its answers render in, ids of `agentspecs/ui` (AGENT_PROTOCOLS PS-04): each once, and one that is not enabled only while it is not offered',
|
|
2280
|
+
items: {
|
|
2281
|
+
type: 'string',
|
|
2282
|
+
},
|
|
2283
|
+
title: 'Ui',
|
|
2284
|
+
type: 'array',
|
|
2285
|
+
},
|
|
2169
2286
|
pap: {
|
|
2170
2287
|
$ref: '#/$defs/AppPap',
|
|
2171
2288
|
description: 'Personal Agent Protocol: companies it works with, or being one',
|
|
2172
2289
|
},
|
|
2290
|
+
pact: {
|
|
2291
|
+
$ref: '#/$defs/AppPact',
|
|
2292
|
+
description: 'PACT: businesses it asks for each person',
|
|
2293
|
+
},
|
|
2294
|
+
a2a: {
|
|
2295
|
+
$ref: '#/$defs/AppA2A',
|
|
2296
|
+
description: 'A2A: the extensions its Agent Card advertises',
|
|
2297
|
+
},
|
|
2173
2298
|
rules: {
|
|
2174
2299
|
description: 'When it acts alone, and when it asks',
|
|
2175
2300
|
items: {
|
package/lib/specs/cogs.js
CHANGED
|
@@ -216,7 +216,8 @@ Check your output against every Guard before you hand it over, and say which you
|
|
|
216
216
|
{ id: 'research.gather' },
|
|
217
217
|
],
|
|
218
218
|
protocol: undefined,
|
|
219
|
-
|
|
219
|
+
ui: undefined,
|
|
220
|
+
protocols: [],
|
|
220
221
|
trigger: undefined,
|
|
221
222
|
modelConfig: undefined,
|
|
222
223
|
mcpServerTools: undefined,
|
|
@@ -378,7 +379,8 @@ Check your output against every Guard before you hand it over, and say which you
|
|
|
378
379
|
{ id: 'support.respond' },
|
|
379
380
|
],
|
|
380
381
|
protocol: 'vercel-ai',
|
|
381
|
-
|
|
382
|
+
ui: 'a2ui',
|
|
383
|
+
protocols: [],
|
|
382
384
|
trigger: undefined,
|
|
383
385
|
modelConfig: { temperature: 0.7, max_tokens: 4096 },
|
|
384
386
|
mcpServerTools: undefined,
|
|
@@ -557,7 +559,8 @@ Check your output against every Guard before you hand it over, and say which you
|
|
|
557
559
|
{ id: 'report.author' },
|
|
558
560
|
],
|
|
559
561
|
protocol: undefined,
|
|
560
|
-
|
|
562
|
+
ui: undefined,
|
|
563
|
+
protocols: [],
|
|
561
564
|
trigger: undefined,
|
|
562
565
|
modelConfig: undefined,
|
|
563
566
|
mcpServerTools: undefined,
|
package/lib/specs/index.d.ts
CHANGED
|
@@ -19,7 +19,8 @@ export * from './outputs';
|
|
|
19
19
|
export * from './skills';
|
|
20
20
|
export * from './backendTools';
|
|
21
21
|
export * from './triggers';
|
|
22
|
-
export * from './
|
|
22
|
+
export * from './ui';
|
|
23
|
+
export * from './protocols';
|
|
23
24
|
export * from './frames';
|
|
24
25
|
export * from './cogs';
|
|
25
26
|
export * from './guards';
|
package/lib/specs/index.js
CHANGED
|
@@ -23,7 +23,8 @@ export * from './outputs';
|
|
|
23
23
|
export * from './skills';
|
|
24
24
|
export * from './backendTools';
|
|
25
25
|
export * from './triggers';
|
|
26
|
-
export * from './
|
|
26
|
+
export * from './ui';
|
|
27
|
+
export * from './protocols';
|
|
27
28
|
export * from './frames';
|
|
28
29
|
export * from './cogs';
|
|
29
30
|
export * from './guards';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol Catalog.
|
|
3
|
+
*
|
|
4
|
+
* The agent protocols Datalayer targets (AGENT_PROTOCOLS PS-01).
|
|
5
|
+
*
|
|
6
|
+
* This file is AUTO-GENERATED from YAML specifications.
|
|
7
|
+
* DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
|
|
8
|
+
*/
|
|
9
|
+
import type { ProtocolSpec } from '../types/agentspecs';
|
|
10
|
+
export declare const A2A_PROTOCOL_0_0_1: ProtocolSpec;
|
|
11
|
+
export declare const A2UI_PROTOCOL_0_0_1: ProtocolSpec;
|
|
12
|
+
export declare const ACP_PROTOCOL_0_0_1: ProtocolSpec;
|
|
13
|
+
export declare const AG_UI_PROTOCOL_0_0_1: ProtocolSpec;
|
|
14
|
+
export declare const MCP_PROTOCOL_0_0_1: ProtocolSpec;
|
|
15
|
+
export declare const PACT_PROTOCOL_0_0_1: ProtocolSpec;
|
|
16
|
+
export declare const PAP_PROTOCOL_0_0_1: ProtocolSpec;
|
|
17
|
+
export declare const TAP_PROTOCOL_0_0_1: ProtocolSpec;
|
|
18
|
+
export declare const UCP_PROTOCOL_0_0_1: ProtocolSpec;
|
|
19
|
+
export declare const WEB_BOT_AUTH_PROTOCOL_0_0_1: ProtocolSpec;
|
|
20
|
+
export declare const PROTOCOL_CATALOGUE: Record<string, ProtocolSpec>;
|
|
21
|
+
/** A protocol by id. */
|
|
22
|
+
export declare function getProtocol(protocolId: string): ProtocolSpec | undefined;
|
|
23
|
+
/** Every protocol of the catalogue. */
|
|
24
|
+
export declare function listProtocolSpecs(): ProtocolSpec[];
|