@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.
@@ -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
- type: 'string',
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', 'tool', 'summary'],
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: [
@@ -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: 'An agent-recognition profile over Web Bot Auth for merchants. Planned: nothing is built until its profile is confirmed.',
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: 'none yet',
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.8",
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",