@datalayer/agent-runtimes 1.3.114 → 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 +71 -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/specs/agents/agents.js +338 -169
- package/lib/specs/apps.js +47 -0
- package/lib/specs/appspecSchema.js +16 -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 +51 -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_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.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: [],
|
|
@@ -3922,6 +3962,8 @@ export const TRAVEL_DESK_APP_0_0_1 = {
|
|
|
3922
3962
|
context: [],
|
|
3923
3963
|
contents: [],
|
|
3924
3964
|
connections: [],
|
|
3965
|
+
protocols: ['pact'],
|
|
3966
|
+
ui: [],
|
|
3925
3967
|
pact: {
|
|
3926
3968
|
connections: [
|
|
3927
3969
|
{
|
|
@@ -4070,6 +4112,8 @@ export const WEB_RESEARCH_APP_0_0_1 = {
|
|
|
4070
4112
|
only: [],
|
|
4071
4113
|
},
|
|
4072
4114
|
],
|
|
4115
|
+
protocols: [],
|
|
4116
|
+
ui: [],
|
|
4073
4117
|
rules: [],
|
|
4074
4118
|
permissions: {
|
|
4075
4119
|
spaces: [],
|
|
@@ -5033,6 +5077,7 @@ export const APP_SOURCES = {
|
|
|
5033
5077
|
does: ['write'],
|
|
5034
5078
|
},
|
|
5035
5079
|
],
|
|
5080
|
+
protocols: ['pap'],
|
|
5036
5081
|
pap: {
|
|
5037
5082
|
company: {
|
|
5038
5083
|
enabled: true,
|
|
@@ -5498,6 +5543,7 @@ export const APP_SOURCES = {
|
|
|
5498
5543
|
owner: 'Datalayer <info@datalayer.io>',
|
|
5499
5544
|
agent: 'cog-crawler:0.0.1',
|
|
5500
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'],
|
|
5501
5547
|
pap: {
|
|
5502
5548
|
connections: [
|
|
5503
5549
|
{
|
|
@@ -6826,6 +6872,7 @@ export const APP_SOURCES = {
|
|
|
6826
6872
|
owner: 'Datalayer <info@datalayer.io>',
|
|
6827
6873
|
agent: 'cog-crawler:0.0.1',
|
|
6828
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'],
|
|
6829
6876
|
pact: {
|
|
6830
6877
|
connections: [
|
|
6831
6878
|
{
|
|
@@ -2267,6 +2267,22 @@ export const APPSPEC_SCHEMA = {
|
|
|
2267
2267
|
title: 'Connections',
|
|
2268
2268
|
type: 'array',
|
|
2269
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
|
+
},
|
|
2270
2286
|
pap: {
|
|
2271
2287
|
$ref: '#/$defs/AppPap',
|
|
2272
2288
|
description: 'Personal Agent Protocol: companies it works with, or being one',
|
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[];
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
export const A2A_PROTOCOL_0_0_1 = {
|
|
6
|
+
id: 'a2a',
|
|
7
|
+
version: '0.0.1',
|
|
8
|
+
name: 'Agent2Agent',
|
|
9
|
+
description: "How agents talk to agents: teams and scenes talk over it, an application's route serves it, and its Agent Card advertises its extensions.",
|
|
10
|
+
publisher: 'Google, now the Linux Foundation',
|
|
11
|
+
layer: 'transport',
|
|
12
|
+
specUrl: 'https://a2a-protocol.org',
|
|
13
|
+
specVersion: '1.0',
|
|
14
|
+
status: 'shipped',
|
|
15
|
+
connects: 'Other agents, each at its address with its Agent Card',
|
|
16
|
+
packages: {
|
|
17
|
+
python: ['fasta2a', 'a2a-sdk'],
|
|
18
|
+
typescript: ['@a2a-js/sdk'],
|
|
19
|
+
},
|
|
20
|
+
protocolTools: [],
|
|
21
|
+
appspecBlock: 'a2a',
|
|
22
|
+
};
|
|
23
|
+
export const A2UI_PROTOCOL_0_0_1 = {
|
|
24
|
+
id: 'a2ui',
|
|
25
|
+
version: '0.0.1',
|
|
26
|
+
name: 'A2UI',
|
|
27
|
+
description: "How an agent's answer becomes an interface: components the host renders from a declarative surface.",
|
|
28
|
+
publisher: 'Google',
|
|
29
|
+
layer: 'ui',
|
|
30
|
+
specUrl: 'https://a2ui.org',
|
|
31
|
+
specVersion: '0.9',
|
|
32
|
+
status: 'shipped',
|
|
33
|
+
connects: 'The person, through components an answer draws',
|
|
34
|
+
packages: {
|
|
35
|
+
python: ['agent-runtimes'],
|
|
36
|
+
typescript: ['@a2ui/react', '@a2ui/web_core'],
|
|
37
|
+
},
|
|
38
|
+
protocolTools: [],
|
|
39
|
+
};
|
|
40
|
+
export const ACP_PROTOCOL_0_0_1 = {
|
|
41
|
+
id: 'acp',
|
|
42
|
+
version: '0.0.1',
|
|
43
|
+
name: 'Agentic Commerce Protocol',
|
|
44
|
+
description: 'Checkout sessions at a seller, completed with a delegated payment token the model never sees. Planned in applications: the client exists, purchases wait on a source of payment tokens.',
|
|
45
|
+
publisher: 'OpenAI, Stripe',
|
|
46
|
+
layer: 'commerce',
|
|
47
|
+
specUrl: 'https://github.com/agentic-commerce-protocol/agentic-commerce-protocol',
|
|
48
|
+
specVersion: '2026-04-17',
|
|
49
|
+
status: 'planned',
|
|
50
|
+
connects: 'Sellers, to check out with a delegated payment',
|
|
51
|
+
packages: {
|
|
52
|
+
python: ['agent-runtimes'],
|
|
53
|
+
typescript: ['@datalayer/agent-runtimes'],
|
|
54
|
+
},
|
|
55
|
+
protocolTools: ['agentic-commerce'],
|
|
56
|
+
};
|
|
57
|
+
export const AG_UI_PROTOCOL_0_0_1 = {
|
|
58
|
+
id: 'ag-ui',
|
|
59
|
+
version: '0.0.1',
|
|
60
|
+
name: 'AG-UI',
|
|
61
|
+
description: 'How an agent streams its run to a page: messages, tool calls and state as events.',
|
|
62
|
+
publisher: 'CopilotKit',
|
|
63
|
+
layer: 'ui',
|
|
64
|
+
specUrl: 'https://docs.ag-ui.com',
|
|
65
|
+
specVersion: '0.0.57 (@ag-ui/core)',
|
|
66
|
+
status: 'shipped',
|
|
67
|
+
connects: 'The page a person talks to the agent on',
|
|
68
|
+
packages: {
|
|
69
|
+
python: ['ag-ui-protocol'],
|
|
70
|
+
typescript: ['@ag-ui/client', '@ag-ui/core'],
|
|
71
|
+
},
|
|
72
|
+
protocolTools: [],
|
|
73
|
+
};
|
|
74
|
+
export const MCP_PROTOCOL_0_0_1 = {
|
|
75
|
+
id: 'mcp',
|
|
76
|
+
version: '0.0.1',
|
|
77
|
+
name: 'Model Context Protocol',
|
|
78
|
+
description: 'How an agent calls tools and reads resources: clients and servers in both languages, and the MCP gateway every connection goes through.',
|
|
79
|
+
publisher: 'Anthropic',
|
|
80
|
+
layer: 'transport',
|
|
81
|
+
specUrl: 'https://modelcontextprotocol.io/specification',
|
|
82
|
+
specVersion: '2026-07-28 (Python), 2025-11-25 (TypeScript)',
|
|
83
|
+
status: 'shipped',
|
|
84
|
+
connects: 'Tools, resources and prompts served by MCP servers',
|
|
85
|
+
packages: {
|
|
86
|
+
python: ['mcp'],
|
|
87
|
+
typescript: ['@modelcontextprotocol/sdk', '@mcp-ui/client'],
|
|
88
|
+
},
|
|
89
|
+
protocolTools: [],
|
|
90
|
+
};
|
|
91
|
+
export const PACT_PROTOCOL_0_0_1 = {
|
|
92
|
+
id: 'pact',
|
|
93
|
+
version: '0.0.1',
|
|
94
|
+
name: 'Personal Agent Consent & Trust',
|
|
95
|
+
description: "A personal agent asking a business's agent over A2A, first as itself, then for a person who delegated some of their permissions.",
|
|
96
|
+
publisher: 'Decagon, Instinct',
|
|
97
|
+
layer: 'consent',
|
|
98
|
+
specUrl: 'https://openpactprotocol.org',
|
|
99
|
+
specVersion: '1.0',
|
|
100
|
+
status: 'shipped',
|
|
101
|
+
connects: "Businesses' agents, asked for a person with their delegation",
|
|
102
|
+
packages: {
|
|
103
|
+
python: ['agent-runtimes'],
|
|
104
|
+
typescript: ['@datalayer/agent-runtimes'],
|
|
105
|
+
},
|
|
106
|
+
protocolTools: ['pact'],
|
|
107
|
+
appspecBlock: 'pact',
|
|
108
|
+
};
|
|
109
|
+
export const PAP_PROTOCOL_0_0_1 = {
|
|
110
|
+
id: 'pap',
|
|
111
|
+
version: '0.0.1',
|
|
112
|
+
name: 'Personal Agent Protocol',
|
|
113
|
+
description: "A person's agent working with a company for them — signed out, then signed in at the company, its changes confirmed by the person — and an application being a company personal agents reach.",
|
|
114
|
+
publisher: 'Sierra, Meta',
|
|
115
|
+
layer: 'consent',
|
|
116
|
+
specUrl: 'https://poppy.md',
|
|
117
|
+
specVersion: 'draft 0.1',
|
|
118
|
+
status: 'shipped',
|
|
119
|
+
connects: "Companies, as a person's agent there, or being one",
|
|
120
|
+
packages: {
|
|
121
|
+
python: ['personal-agent-protocol'],
|
|
122
|
+
typescript: ['@datalayer/personal-agent-protocol'],
|
|
123
|
+
},
|
|
124
|
+
protocolTools: ['pap'],
|
|
125
|
+
appspecBlock: 'pap',
|
|
126
|
+
};
|
|
127
|
+
export const TAP_PROTOCOL_0_0_1 = {
|
|
128
|
+
id: 'tap',
|
|
129
|
+
version: '0.0.1',
|
|
130
|
+
name: 'Trusted Agent Protocol',
|
|
131
|
+
description: 'An agent-recognition profile over Web Bot Auth for merchants. Planned: nothing is built until its profile is confirmed.',
|
|
132
|
+
publisher: 'Visa',
|
|
133
|
+
layer: 'identity',
|
|
134
|
+
specUrl: 'https://developer.visa.com',
|
|
135
|
+
specVersion: 'none yet',
|
|
136
|
+
status: 'planned',
|
|
137
|
+
connects: 'Merchants that recognise an agent by its signature',
|
|
138
|
+
packages: {
|
|
139
|
+
python: [],
|
|
140
|
+
typescript: [],
|
|
141
|
+
},
|
|
142
|
+
protocolTools: [],
|
|
143
|
+
};
|
|
144
|
+
export const UCP_PROTOCOL_0_0_1 = {
|
|
145
|
+
id: 'ucp',
|
|
146
|
+
version: '0.0.1',
|
|
147
|
+
name: 'Universal Commerce Protocol',
|
|
148
|
+
description: 'Shopping at a merchant: catalogue, checkout and orders, every purchase an exact proposal the person approves. Planned in applications: the client exists, purchases wait on a source of payment tokens.',
|
|
149
|
+
publisher: 'Google, with Shopify and retailers',
|
|
150
|
+
layer: 'commerce',
|
|
151
|
+
specUrl: 'https://github.com/Universal-Commerce-Protocol/ucp',
|
|
152
|
+
specVersion: '2026-08-25',
|
|
153
|
+
status: 'planned',
|
|
154
|
+
connects: 'Merchants, to search, check out and follow orders',
|
|
155
|
+
packages: {
|
|
156
|
+
python: ['ucp-sdk', 'agent-runtimes'],
|
|
157
|
+
typescript: ['@ucp-js/sdk', '@datalayer/agent-runtimes'],
|
|
158
|
+
},
|
|
159
|
+
protocolTools: ['ucp'],
|
|
160
|
+
};
|
|
161
|
+
export const WEB_BOT_AUTH_PROTOCOL_0_0_1 = {
|
|
162
|
+
id: 'web-bot-auth',
|
|
163
|
+
version: '0.0.1',
|
|
164
|
+
name: 'Web Bot Auth',
|
|
165
|
+
description: 'Signed outbound requests (RFC 9421) and the key directory a website checks them against.',
|
|
166
|
+
publisher: 'Cloudflare (IETF draft)',
|
|
167
|
+
layer: 'identity',
|
|
168
|
+
specUrl: 'https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/',
|
|
169
|
+
specVersion: 'draft-ietf-webbotauth-httpsig-protocol-00',
|
|
170
|
+
status: 'shipped',
|
|
171
|
+
connects: "Websites, which can tell the application's requests from someone pretending",
|
|
172
|
+
packages: {
|
|
173
|
+
python: ['agent-runtimes'],
|
|
174
|
+
typescript: ['@datalayer/agent-runtimes', 'web-bot-auth'],
|
|
175
|
+
},
|
|
176
|
+
protocolTools: [],
|
|
177
|
+
};
|
|
178
|
+
export const PROTOCOL_CATALOGUE = {
|
|
179
|
+
a2a: A2A_PROTOCOL_0_0_1,
|
|
180
|
+
a2ui: A2UI_PROTOCOL_0_0_1,
|
|
181
|
+
acp: ACP_PROTOCOL_0_0_1,
|
|
182
|
+
'ag-ui': AG_UI_PROTOCOL_0_0_1,
|
|
183
|
+
mcp: MCP_PROTOCOL_0_0_1,
|
|
184
|
+
pact: PACT_PROTOCOL_0_0_1,
|
|
185
|
+
pap: PAP_PROTOCOL_0_0_1,
|
|
186
|
+
tap: TAP_PROTOCOL_0_0_1,
|
|
187
|
+
ucp: UCP_PROTOCOL_0_0_1,
|
|
188
|
+
'web-bot-auth': WEB_BOT_AUTH_PROTOCOL_0_0_1,
|
|
189
|
+
};
|
|
190
|
+
/** A protocol by id. */
|
|
191
|
+
export function getProtocol(protocolId) {
|
|
192
|
+
return PROTOCOL_CATALOGUE[protocolId];
|
|
193
|
+
}
|
|
194
|
+
/** Every protocol of the catalogue. */
|
|
195
|
+
export function listProtocolSpecs() {
|
|
196
|
+
return Object.values(PROTOCOL_CATALOGUE);
|
|
197
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Catalog.
|
|
3
|
+
*
|
|
4
|
+
* How an agent's answer becomes an interface: the protocols a host renders.
|
|
5
|
+
*
|
|
6
|
+
* This file is AUTO-GENERATED from YAML specifications.
|
|
7
|
+
* DO NOT EDIT MANUALLY - run 'make specs' to regenerate.
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentSpec, UISpec } from '../types/agentspecs';
|
|
10
|
+
export declare const A2UI_UI_0_0_1: UISpec;
|
|
11
|
+
export declare const MCP_APPS_UI_0_0_1: UISpec;
|
|
12
|
+
export declare const MCP_UI_UI_0_0_1: UISpec;
|
|
13
|
+
export declare const UI_CATALOGUE: Record<string, UISpec>;
|
|
14
|
+
/** The UI an agent spec's `ui` names, or undefined. */
|
|
15
|
+
export declare function getUI(pluginId: string): UISpec | undefined;
|
|
16
|
+
export declare function listUI(): UISpec[];
|
|
17
|
+
/** The visual components the enabled UI specs render, by the name a surface gives them (LOOP C-13). */
|
|
18
|
+
export declare const COMPONENT_CATALOGUE: Record<string, ComponentSpec>;
|
|
19
|
+
/** The component a layout names, or undefined. */
|
|
20
|
+
export declare function getComponent(name: string): ComponentSpec | undefined;
|
|
21
|
+
export declare function listComponents(): ComponentSpec[];
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
3
|
* Distributed under the terms of the Modified BSD License.
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
5
|
+
export const A2UI_UI_0_0_1 = {
|
|
6
6
|
id: 'a2ui',
|
|
7
7
|
version: '0.0.1',
|
|
8
8
|
name: 'A2UI',
|
|
@@ -1055,7 +1055,7 @@ export const A2UI_UI_PLUGIN_0_0_1 = {
|
|
|
1055
1055
|
},
|
|
1056
1056
|
],
|
|
1057
1057
|
};
|
|
1058
|
-
export const
|
|
1058
|
+
export const MCP_APPS_UI_0_0_1 = {
|
|
1059
1059
|
id: 'mcp-apps',
|
|
1060
1060
|
version: '0.0.1',
|
|
1061
1061
|
name: 'MCP Apps',
|
|
@@ -1065,7 +1065,7 @@ export const MCP_APPS_UI_PLUGIN_0_0_1 = {
|
|
|
1065
1065
|
catalog: '',
|
|
1066
1066
|
components: [],
|
|
1067
1067
|
};
|
|
1068
|
-
export const
|
|
1068
|
+
export const MCP_UI_UI_0_0_1 = {
|
|
1069
1069
|
id: 'mcp-ui',
|
|
1070
1070
|
version: '0.0.1',
|
|
1071
1071
|
name: 'MCP UI',
|
|
@@ -1075,20 +1075,20 @@ export const MCP_UI_UI_PLUGIN_0_0_1 = {
|
|
|
1075
1075
|
catalog: '',
|
|
1076
1076
|
components: [],
|
|
1077
1077
|
};
|
|
1078
|
-
export const
|
|
1079
|
-
a2ui:
|
|
1080
|
-
'mcp-apps':
|
|
1081
|
-
'mcp-ui':
|
|
1078
|
+
export const UI_CATALOGUE = {
|
|
1079
|
+
a2ui: A2UI_UI_0_0_1,
|
|
1080
|
+
'mcp-apps': MCP_APPS_UI_0_0_1,
|
|
1081
|
+
'mcp-ui': MCP_UI_UI_0_0_1,
|
|
1082
1082
|
};
|
|
1083
|
-
/** The
|
|
1084
|
-
export function
|
|
1085
|
-
return
|
|
1083
|
+
/** The UI an agent spec's `ui` names, or undefined. */
|
|
1084
|
+
export function getUI(pluginId) {
|
|
1085
|
+
return UI_CATALOGUE[pluginId];
|
|
1086
1086
|
}
|
|
1087
|
-
export function
|
|
1088
|
-
return Object.values(
|
|
1087
|
+
export function listUI() {
|
|
1088
|
+
return Object.values(UI_CATALOGUE);
|
|
1089
1089
|
}
|
|
1090
|
-
/** The visual components the enabled UI
|
|
1091
|
-
export const COMPONENT_CATALOGUE = Object.fromEntries(Object.values(
|
|
1090
|
+
/** The visual components the enabled UI specs render, by the name a surface gives them (LOOP C-13). */
|
|
1091
|
+
export const COMPONENT_CATALOGUE = Object.fromEntries(Object.values(UI_CATALOGUE)
|
|
1092
1092
|
.filter(plugin => plugin.enabled)
|
|
1093
1093
|
.flatMap(plugin => plugin.components.map(component => [component.id, component])));
|
|
1094
1094
|
/** The component a layout names, or undefined. */
|
|
@@ -107,10 +107,10 @@ export interface ComponentSpec {
|
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* How an agent's answer becomes an interface: a protocol the host renders
|
|
110
|
-
* (`agentspecs/ui
|
|
110
|
+
* (`agentspecs/ui`). An agent spec's `ui` names one.
|
|
111
111
|
*/
|
|
112
|
-
export interface
|
|
113
|
-
/** What an agent spec's `
|
|
112
|
+
export interface UISpec {
|
|
113
|
+
/** What an agent spec's `ui` names (e.g. 'a2ui'). */
|
|
114
114
|
id: string;
|
|
115
115
|
version: string;
|
|
116
116
|
name: string;
|
|
@@ -125,6 +125,39 @@ export interface UIPluginSpec {
|
|
|
125
125
|
/** The visual components it renders (LOOP C-13). */
|
|
126
126
|
components: ComponentSpec[];
|
|
127
127
|
}
|
|
128
|
+
/** The layer of an agent's visit a protocol answers (AGENT_PROTOCOLS §1). */
|
|
129
|
+
export type ProtocolLayer = 'transport' | 'consent' | 'identity' | 'commerce' | 'ui';
|
|
130
|
+
/**
|
|
131
|
+
* An agent protocol Datalayer targets (`agentspecs/protocols`, AGENT_PROTOCOLS
|
|
132
|
+
* PS-01). An agent spec's or an application's `protocols` names the ones it speaks.
|
|
133
|
+
*/
|
|
134
|
+
export interface ProtocolSpec {
|
|
135
|
+
/** What `protocols` lists (e.g. 'pap'). */
|
|
136
|
+
id: string;
|
|
137
|
+
version: string;
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
/** Who publishes the specification. */
|
|
141
|
+
publisher: string;
|
|
142
|
+
layer: ProtocolLayer;
|
|
143
|
+
/** The specification. */
|
|
144
|
+
specUrl: string;
|
|
145
|
+
/** The version implemented. */
|
|
146
|
+
specVersion: string;
|
|
147
|
+
/** Implemented by agent-runtimes today, or only planned: an application cannot ship a planned one. */
|
|
148
|
+
status: 'shipped' | 'planned';
|
|
149
|
+
/** What it connects an agent to. */
|
|
150
|
+
connects: string;
|
|
151
|
+
/** The packages implementing it, by language. */
|
|
152
|
+
packages: {
|
|
153
|
+
python: string[];
|
|
154
|
+
typescript: string[];
|
|
155
|
+
};
|
|
156
|
+
/** Its tools' action-class tables (`agentspecs/protocol-tools`). */
|
|
157
|
+
protocolTools: string[];
|
|
158
|
+
/** The Appspec block it configures, if any: refused unless `protocols` lists it. */
|
|
159
|
+
appspecBlock?: 'pap' | 'pact' | 'a2a';
|
|
160
|
+
}
|
|
128
161
|
/** A check a Frame requires of the output of work done under it. */
|
|
129
162
|
export interface FrameGuardSpec {
|
|
130
163
|
id: string;
|
|
@@ -1082,6 +1115,14 @@ export interface AppSpec {
|
|
|
1082
1115
|
/** The documents and datasets it answers from. */
|
|
1083
1116
|
contents: string[];
|
|
1084
1117
|
connections: AppConnectionSpec[];
|
|
1118
|
+
/**
|
|
1119
|
+
* The agent protocols it speaks, ids of `agentspecs/protocols` (AGENT_PROTOCOLS
|
|
1120
|
+
* PS-02): its `pap`, `pact` and `a2a` blocks are refused unless their protocol
|
|
1121
|
+
* is listed, and a planned one only while it is not offered.
|
|
1122
|
+
*/
|
|
1123
|
+
protocols: string[];
|
|
1124
|
+
/** The UI its answers render in, ids of `agentspecs/ui` (AGENT_PROTOCOLS PS-04). */
|
|
1125
|
+
ui: string[];
|
|
1085
1126
|
/** Personal Agent Protocol; absent, the application has none. */
|
|
1086
1127
|
pap?: AppPapSpec;
|
|
1087
1128
|
/** PACT: the businesses it asks for each person (AGENT_PROTOCOLS PI-01). */
|
|
@@ -1208,8 +1249,13 @@ export interface Agentspec {
|
|
|
1208
1249
|
delegable?: AgentCapability[];
|
|
1209
1250
|
/** Communication protocol (e.g., 'ag-ui', 'acp', 'a2a', 'vercel-ai') */
|
|
1210
1251
|
protocol?: string;
|
|
1211
|
-
/**
|
|
1212
|
-
|
|
1252
|
+
/**
|
|
1253
|
+
* The agent protocols it speaks, ids of `agentspecs/protocols` (AGENT_PROTOCOLS
|
|
1254
|
+
* PS-02). `protocol` says how a page reaches it; this, what it speaks to the world.
|
|
1255
|
+
*/
|
|
1256
|
+
protocols?: string[];
|
|
1257
|
+
/** The UI its answers render in (e.g., 'a2ui', 'mcp-apps'), one of the `UI_CATALOGUE`. */
|
|
1258
|
+
ui?: string;
|
|
1213
1259
|
/** Trigger configuration (type, cron, event source, prompt) */
|
|
1214
1260
|
trigger?: AgentTriggerConfig;
|
|
1215
1261
|
/** Model configuration (temperature, max_tokens) */
|