@datalayer/agent-runtimes 1.5.8 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed/datalayer-app-main.js +3 -3
- package/lib/apps/apps/appspec.js +40 -1
- package/lib/protocols/mcp/client.d.ts +73 -0
- package/lib/protocols/mcp/client.js +136 -0
- package/lib/protocols/mcp/index.d.ts +1 -0
- package/lib/protocols/mcp/index.js +3 -1
- package/lib/protocols/web-bot-auth/tap.d.ts +56 -0
- package/lib/protocols/web-bot-auth/tap.js +185 -0
- package/lib/specs/apps.js +22 -14
- package/lib/specs/appspecSchema.js +105 -3
- package/lib/specs/protocols.js +5 -5
- package/lib/types/agentspecs.d.ts +34 -2
- package/package.json +3 -1
|
@@ -1276,7 +1276,7 @@ export const APPSPEC_SCHEMA = {
|
|
|
1276
1276
|
},
|
|
1277
1277
|
AppPapOperation: {
|
|
1278
1278
|
additionalProperties: false,
|
|
1279
|
-
description: "Something a personal agent may ask the application to do for the person,\ndone only once they confirm its exact terms (PAP_DATALAYER B-04, Operations v1).\n\nAsked by a personal agent, the application's agent does not call `tool`:\nthe call is proposed, its arguments the terms, and the person confirms\nthat revision before the tool runs, with those arguments and only once.",
|
|
1279
|
+
description: "Something a personal agent may ask the application to do for the person,\ndone only once they confirm its exact terms (PAP_DATALAYER B-04, Operations v1).\n\nAsked by a personal agent, the application's agent does not call `tool`:\nthe call is proposed, its arguments the terms, and the person confirms\nthat revision before the tool runs, with those arguments and only once.\nAn operation that `allows` instead gives a standing permission once the\nperson confirms it (R-07): it calls no tool, and is asked for through the\napplication's API or its server for agents.",
|
|
1280
1280
|
properties: {
|
|
1281
1281
|
action: {
|
|
1282
1282
|
description: "The action's name at this company, e.g. `orders.exchange`",
|
|
@@ -1284,9 +1284,29 @@ export const APPSPEC_SCHEMA = {
|
|
|
1284
1284
|
type: 'string',
|
|
1285
1285
|
},
|
|
1286
1286
|
tool: {
|
|
1287
|
+
anyOf: [
|
|
1288
|
+
{
|
|
1289
|
+
type: 'string',
|
|
1290
|
+
},
|
|
1291
|
+
{
|
|
1292
|
+
type: 'null',
|
|
1293
|
+
},
|
|
1294
|
+
],
|
|
1295
|
+
default: null,
|
|
1287
1296
|
description: "The application's tool that does it, called with the terms",
|
|
1288
1297
|
title: 'Tool',
|
|
1289
|
-
|
|
1298
|
+
},
|
|
1299
|
+
allows: {
|
|
1300
|
+
anyOf: [
|
|
1301
|
+
{
|
|
1302
|
+
$ref: '#/$defs/AppPapStanding',
|
|
1303
|
+
},
|
|
1304
|
+
{
|
|
1305
|
+
type: 'null',
|
|
1306
|
+
},
|
|
1307
|
+
],
|
|
1308
|
+
default: null,
|
|
1309
|
+
description: 'Instead of a tool: the standing permission confirming it gives (R-07)',
|
|
1290
1310
|
},
|
|
1291
1311
|
summary: {
|
|
1292
1312
|
description: 'What the person is shown, with `{term}` for each term, e.g. `Exchange order {order_id} for size {size}`; never written by the model',
|
|
@@ -1300,10 +1320,86 @@ export const APPSPEC_SCHEMA = {
|
|
|
1300
1320
|
type: 'boolean',
|
|
1301
1321
|
},
|
|
1302
1322
|
},
|
|
1303
|
-
required: ['action', '
|
|
1323
|
+
required: ['action', 'summary'],
|
|
1304
1324
|
title: 'AppPapOperation',
|
|
1305
1325
|
type: 'object',
|
|
1306
1326
|
},
|
|
1327
|
+
AppPapStanding: {
|
|
1328
|
+
additionalProperties: false,
|
|
1329
|
+
description: "An operation whose effect is a standing permission (PAP_DATALAYER R-07, the Ledgerly pattern).\n\nConfirmed by the person, it is recorded as the approval in advance they\nwould give in Datalayer: this application may confirm, at the company of\none of its own connections and in the person's account there, operations\nof that class whose terms stay within these limits, so many times, for so\nmany days — and the person reads it back and withdraws it there.",
|
|
1330
|
+
properties: {
|
|
1331
|
+
connection: {
|
|
1332
|
+
description: 'The id of its own company connection the permission is used at',
|
|
1333
|
+
title: 'Connection',
|
|
1334
|
+
type: 'string',
|
|
1335
|
+
},
|
|
1336
|
+
action: {
|
|
1337
|
+
$ref: '#/$defs/PapStandingAction',
|
|
1338
|
+
description: 'What confirming there does: `write`, or `buy`',
|
|
1339
|
+
},
|
|
1340
|
+
limits: {
|
|
1341
|
+
description: 'Every term bounded, 1 to 20',
|
|
1342
|
+
items: {
|
|
1343
|
+
$ref: '#/$defs/AppPapStandingLimit',
|
|
1344
|
+
},
|
|
1345
|
+
title: 'Limits',
|
|
1346
|
+
type: 'array',
|
|
1347
|
+
},
|
|
1348
|
+
uses: {
|
|
1349
|
+
description: 'The term of this operation giving how many times, at most',
|
|
1350
|
+
title: 'Uses',
|
|
1351
|
+
type: 'string',
|
|
1352
|
+
},
|
|
1353
|
+
days: {
|
|
1354
|
+
description: 'The term of this operation giving for how many days, at most 90',
|
|
1355
|
+
title: 'Days',
|
|
1356
|
+
type: 'string',
|
|
1357
|
+
},
|
|
1358
|
+
},
|
|
1359
|
+
required: ['connection', 'action', 'limits', 'uses', 'days'],
|
|
1360
|
+
title: 'AppPapStanding',
|
|
1361
|
+
type: 'object',
|
|
1362
|
+
},
|
|
1363
|
+
AppPapStandingLimit: {
|
|
1364
|
+
additionalProperties: false,
|
|
1365
|
+
description: "One bound of a standing permission: a term of the other company's operations,\nbounded by a term of this one — its maximum, or the one value allowed.",
|
|
1366
|
+
properties: {
|
|
1367
|
+
path: {
|
|
1368
|
+
description: "The other company's term, by its dotted path: `amount.amount`, `payee`",
|
|
1369
|
+
title: 'Path',
|
|
1370
|
+
type: 'string',
|
|
1371
|
+
},
|
|
1372
|
+
maximum: {
|
|
1373
|
+
anyOf: [
|
|
1374
|
+
{
|
|
1375
|
+
type: 'string',
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
type: 'null',
|
|
1379
|
+
},
|
|
1380
|
+
],
|
|
1381
|
+
default: null,
|
|
1382
|
+
description: 'The term of this operation giving its maximum',
|
|
1383
|
+
title: 'Maximum',
|
|
1384
|
+
},
|
|
1385
|
+
allowed: {
|
|
1386
|
+
anyOf: [
|
|
1387
|
+
{
|
|
1388
|
+
type: 'string',
|
|
1389
|
+
},
|
|
1390
|
+
{
|
|
1391
|
+
type: 'null',
|
|
1392
|
+
},
|
|
1393
|
+
],
|
|
1394
|
+
default: null,
|
|
1395
|
+
description: 'The term of this operation giving the value allowed',
|
|
1396
|
+
title: 'Allowed',
|
|
1397
|
+
},
|
|
1398
|
+
},
|
|
1399
|
+
required: ['path'],
|
|
1400
|
+
title: 'AppPapStandingLimit',
|
|
1401
|
+
type: 'object',
|
|
1402
|
+
},
|
|
1307
1403
|
AppPermissions: {
|
|
1308
1404
|
additionalProperties: false,
|
|
1309
1405
|
description: 'What the application may reach beside its connections. Nothing, unless said.',
|
|
@@ -2282,6 +2378,12 @@ export const APPSPEC_SCHEMA = {
|
|
|
2282
2378
|
title: 'PapSignIn',
|
|
2283
2379
|
type: 'string',
|
|
2284
2380
|
},
|
|
2381
|
+
PapStandingAction: {
|
|
2382
|
+
description: "What a standing permission lets the application confirm at another company (R-02's classes).",
|
|
2383
|
+
enum: ['write', 'buy'],
|
|
2384
|
+
title: 'PapStandingAction',
|
|
2385
|
+
type: 'string',
|
|
2386
|
+
},
|
|
2285
2387
|
RecordItem: {
|
|
2286
2388
|
description: 'What an application may keep of what it did.',
|
|
2287
2389
|
enum: [
|
package/lib/specs/protocols.js
CHANGED
|
@@ -128,16 +128,16 @@ export const TAP_PROTOCOL_0_0_1 = {
|
|
|
128
128
|
id: 'tap',
|
|
129
129
|
version: '0.0.1',
|
|
130
130
|
name: 'Trusted Agent Protocol',
|
|
131
|
-
description:
|
|
131
|
+
description: "An agent-recognition profile over Web Bot Auth for merchants: a signature tagged agent-browser-auth to browse or agent-payer-auth to pay. Built as a draft from Visa's public Merchant Specifications (2026-10-13) in agent-runtimes; planned for applications until Visa confirms it.",
|
|
132
132
|
publisher: 'Visa',
|
|
133
133
|
layer: 'identity',
|
|
134
|
-
specUrl: 'https://developer.visa.com',
|
|
135
|
-
specVersion: '
|
|
134
|
+
specUrl: 'https://developer.visa.com/capabilities/trusted-agent-protocol/trusted-agent-protocol-specifications',
|
|
135
|
+
specVersion: 'draft (Merchant Specifications, read 2026-10-13)',
|
|
136
136
|
status: 'planned',
|
|
137
137
|
connects: 'Merchants that recognise an agent by its signature',
|
|
138
138
|
packages: {
|
|
139
|
-
python: [],
|
|
140
|
-
typescript: [],
|
|
139
|
+
python: ['agent-runtimes'],
|
|
140
|
+
typescript: ['@datalayer/agent-runtimes', 'http-message-sig'],
|
|
141
141
|
},
|
|
142
142
|
protocolTools: [],
|
|
143
143
|
};
|
|
@@ -499,16 +499,48 @@ export interface AppPapCompanySpec {
|
|
|
499
499
|
*/
|
|
500
500
|
operations: AppPapOperationSpec[];
|
|
501
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* One bound of a standing permission (PAP_DATALAYER R-07): a term of the other
|
|
504
|
+
* company's operations, by its dotted path, bounded by a term of this one —
|
|
505
|
+
* its maximum, or the one value allowed (one of the two).
|
|
506
|
+
*/
|
|
507
|
+
export interface AppPapStandingLimitSpec {
|
|
508
|
+
path: string;
|
|
509
|
+
maximum?: string;
|
|
510
|
+
allowed?: string;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* What an operation gives instead of calling a tool (PAP_DATALAYER R-07, the
|
|
514
|
+
* Ledgerly pattern): once the person confirms it, the application may confirm,
|
|
515
|
+
* at one of its own company connections and in their account there, what stays
|
|
516
|
+
* within these bounds — recorded as the approval in advance they would give in
|
|
517
|
+
* Datalayer.
|
|
518
|
+
*/
|
|
519
|
+
export interface AppPapStandingSpec {
|
|
520
|
+
/** The id of one of its own company connections (`as: user`, `write`). */
|
|
521
|
+
connection: string;
|
|
522
|
+
/** What confirming there does. */
|
|
523
|
+
action: 'write' | 'buy';
|
|
524
|
+
/** Every term bounded, 1 to 20. */
|
|
525
|
+
limits: AppPapStandingLimitSpec[];
|
|
526
|
+
/** The term of this operation giving how many times, at most. */
|
|
527
|
+
uses: string;
|
|
528
|
+
/** The term of this operation giving for how many days, at most 90. */
|
|
529
|
+
days: string;
|
|
530
|
+
}
|
|
502
531
|
/**
|
|
503
532
|
* Something a personal agent may ask the application to do for the person,
|
|
504
533
|
* done only once they confirm its exact terms (PAP_DATALAYER B-04): the call
|
|
505
|
-
* of `tool` is proposed instead of made, its arguments the terms
|
|
534
|
+
* of `tool` is proposed instead of made, its arguments the terms — or, for one
|
|
535
|
+
* that `allows`, a standing permission given (R-07).
|
|
506
536
|
*/
|
|
507
537
|
export interface AppPapOperationSpec {
|
|
508
538
|
/** The action's name at this company: `orders.exchange`. */
|
|
509
539
|
action: string;
|
|
510
|
-
/** The application's tool that does it, called with the terms
|
|
540
|
+
/** The application's tool that does it, called with the terms; `''` for one that `allows`. */
|
|
511
541
|
tool: string;
|
|
542
|
+
/** Instead of a tool: the standing permission confirming it gives (R-07). */
|
|
543
|
+
allows?: AppPapStandingSpec;
|
|
512
544
|
/** What the person is shown, `{term}` for each term; never the model's. */
|
|
513
545
|
summary: string;
|
|
514
546
|
/** Whether only the person may confirm it, never an approval in advance. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datalayer/agent-runtimes",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
".",
|
|
@@ -188,6 +188,7 @@
|
|
|
188
188
|
"@lumino/widgets": "^2.7.3",
|
|
189
189
|
"@mcp-ui/client": "^5.17.1",
|
|
190
190
|
"@modelcontextprotocol/ext-apps": "^0.2.2",
|
|
191
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
191
192
|
"@primer/behaviors": "^1.8.4",
|
|
192
193
|
"@primer/brand-primitives": "^0.51.0",
|
|
193
194
|
"@primer/css": "^21.5.1",
|
|
@@ -242,6 +243,7 @@
|
|
|
242
243
|
"embla-carousel-react": "^8.6.0",
|
|
243
244
|
"fuse.js": "^7.0.0",
|
|
244
245
|
"html2canvas": "^1.4.1",
|
|
246
|
+
"http-message-sig": "0.3.0",
|
|
245
247
|
"input-otp": "^1.4.2",
|
|
246
248
|
"jose": "^6.2.12",
|
|
247
249
|
"jwt-decode": "^2.2.0",
|