@vess-id/ai-identity 0.21.0 → 0.22.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/index.js CHANGED
@@ -140,6 +140,7 @@ __export(index_exports, {
140
140
  getKeyIdFromDid: () => getKeyIdFromDid,
141
141
  getRequiredRelations: () => getRequiredRelations,
142
142
  getRequiredScopes: () => getRequiredScopes,
143
+ getRequiredScopesForProvider: () => getRequiredScopesForProvider,
143
144
  getTierLimits: () => getTierLimits,
144
145
  getValidMcpActionNames: () => getValidMcpActionNames,
145
146
  grantConstraintsToPermissionConstraints: () => grantConstraintsToPermissionConstraints,
@@ -4877,6 +4878,19 @@ var actionMetaSchema = {
4877
4878
  minLength: 1
4878
4879
  }
4879
4880
  },
4881
+ // OAuth provider 名 → その provider でのスコープ集合。
4882
+ required_scopes_by_provider: {
4883
+ type: "object",
4884
+ minProperties: 1,
4885
+ additionalProperties: {
4886
+ type: "array",
4887
+ minItems: 1,
4888
+ items: {
4889
+ type: "string",
4890
+ minLength: 1
4891
+ }
4892
+ }
4893
+ },
4880
4894
  capability: {
4881
4895
  type: "string"
4882
4896
  },
@@ -5108,6 +5122,15 @@ function getRequiredScopes(regIndex, action) {
5108
5122
  return regIndex.get(action)?.required_scopes ?? [];
5109
5123
  }
5110
5124
  __name(getRequiredScopes, "getRequiredScopes");
5125
+ function getRequiredScopesForProvider(regIndex, action, provider) {
5126
+ const meta = regIndex.get(action);
5127
+ if (!meta) return [];
5128
+ const map = meta.required_scopes_by_provider;
5129
+ const key = provider?.toLowerCase();
5130
+ const byProvider = map && key && Object.prototype.hasOwnProperty.call(map, key) ? map[key] : void 0;
5131
+ return Array.isArray(byProvider) ? byProvider : meta.required_scopes ?? [];
5132
+ }
5133
+ __name(getRequiredScopesForProvider, "getRequiredScopesForProvider");
5111
5134
  function getRequiredRelations(regIndex, action) {
5112
5135
  return regIndex.get(action)?.required_relations ?? [];
5113
5136
  }
@@ -10043,6 +10066,434 @@ var ACTION_REGISTRY = {
10043
10066
  ],
10044
10067
  version: "1.0.0"
10045
10068
  },
10069
+ // ─── 🔴 #1209 Outlook Mail Actions (Graph; peer of the Gmail block) ───
10070
+ // provider = microsoft; scopes = Mail.ReadWrite (read/draft) + Mail.Send
10071
+ // (send). Shapes mirror the Gmail entries above so the policy / approval /
10072
+ // target-binding engine treats Outlook mail identically.
10073
+ {
10074
+ action: "outlook.message.search",
10075
+ resource_type: "outlook:message",
10076
+ required_relations: [
10077
+ "viewer",
10078
+ "editor",
10079
+ "admin",
10080
+ "owner"
10081
+ ],
10082
+ required_scopes: [
10083
+ "Mail.ReadWrite"
10084
+ ],
10085
+ capability: "outlook.read.basic",
10086
+ input_schema: {
10087
+ type: "object",
10088
+ properties: {
10089
+ query: {
10090
+ type: "string",
10091
+ minLength: 1
10092
+ },
10093
+ maxResults: {
10094
+ type: "integer",
10095
+ minimum: 1,
10096
+ maximum: 50
10097
+ }
10098
+ },
10099
+ required: [
10100
+ "query"
10101
+ ],
10102
+ additionalProperties: false
10103
+ },
10104
+ constraints: {
10105
+ rate_bucket: "outlook.read"
10106
+ },
10107
+ effects: [
10108
+ "Read:MessageList"
10109
+ ],
10110
+ risk: "low",
10111
+ target_bindings: {
10112
+ resource_id: {
10113
+ source: "param",
10114
+ param: "query",
10115
+ required: false
10116
+ }
10117
+ },
10118
+ version: "1.0.0"
10119
+ },
10120
+ {
10121
+ action: "outlook.message.read",
10122
+ resource_type: "outlook:message",
10123
+ required_relations: [
10124
+ "viewer",
10125
+ "editor",
10126
+ "admin",
10127
+ "owner"
10128
+ ],
10129
+ required_scopes: [
10130
+ "Mail.ReadWrite"
10131
+ ],
10132
+ capability: "outlook.read.basic",
10133
+ input_schema: {
10134
+ type: "object",
10135
+ properties: {
10136
+ messageId: {
10137
+ type: "string",
10138
+ minLength: 1
10139
+ }
10140
+ },
10141
+ required: [
10142
+ "messageId"
10143
+ ],
10144
+ additionalProperties: false
10145
+ },
10146
+ constraints: {
10147
+ rate_bucket: "outlook.read"
10148
+ },
10149
+ effects: [
10150
+ "Read:Message"
10151
+ ],
10152
+ risk: "low",
10153
+ target_bindings: {
10154
+ resource_id: {
10155
+ source: "param",
10156
+ param: "messageId"
10157
+ }
10158
+ },
10159
+ version: "1.0.0"
10160
+ },
10161
+ {
10162
+ action: "outlook.message.send",
10163
+ resource_type: "outlook:message",
10164
+ required_relations: [
10165
+ "editor",
10166
+ "act_as"
10167
+ ],
10168
+ required_scopes: [
10169
+ "Mail.Send"
10170
+ ],
10171
+ capability: "outlook.compose",
10172
+ input_schema: {
10173
+ type: "object",
10174
+ properties: {
10175
+ to: {
10176
+ type: "string",
10177
+ minLength: 1
10178
+ },
10179
+ subject: {
10180
+ type: "string",
10181
+ minLength: 1
10182
+ },
10183
+ body: {
10184
+ type: "string",
10185
+ minLength: 1
10186
+ },
10187
+ cc: {
10188
+ type: "string"
10189
+ },
10190
+ bcc: {
10191
+ type: "string"
10192
+ }
10193
+ },
10194
+ required: [
10195
+ "to",
10196
+ "subject",
10197
+ "body"
10198
+ ],
10199
+ additionalProperties: false
10200
+ },
10201
+ constraints: {
10202
+ rate_bucket: "outlook.write"
10203
+ },
10204
+ effects: [
10205
+ "Create:Email"
10206
+ ],
10207
+ risk: "high",
10208
+ target_bindings: {
10209
+ resource_id: {
10210
+ source: "param",
10211
+ param: "to",
10212
+ multi: true,
10213
+ separator: ","
10214
+ },
10215
+ secondary: [
10216
+ {
10217
+ name: "cc",
10218
+ source: {
10219
+ source: "param",
10220
+ param: "cc"
10221
+ },
10222
+ type: "recipient"
10223
+ },
10224
+ {
10225
+ name: "bcc",
10226
+ source: {
10227
+ source: "param",
10228
+ param: "bcc"
10229
+ },
10230
+ type: "recipient"
10231
+ }
10232
+ ]
10233
+ },
10234
+ approval_salient_fields: [
10235
+ "to",
10236
+ "cc",
10237
+ "bcc",
10238
+ "subject",
10239
+ "body"
10240
+ ],
10241
+ version: "1.0.0"
10242
+ },
10243
+ {
10244
+ action: "outlook.draft.create",
10245
+ resource_type: "outlook:message",
10246
+ required_relations: [
10247
+ "editor",
10248
+ "act_as"
10249
+ ],
10250
+ required_scopes: [
10251
+ "Mail.ReadWrite"
10252
+ ],
10253
+ capability: "outlook.compose",
10254
+ input_schema: {
10255
+ type: "object",
10256
+ properties: {
10257
+ to: {
10258
+ type: "string",
10259
+ minLength: 1
10260
+ },
10261
+ subject: {
10262
+ type: "string",
10263
+ minLength: 1
10264
+ },
10265
+ body: {
10266
+ type: "string",
10267
+ minLength: 1
10268
+ },
10269
+ cc: {
10270
+ type: "string"
10271
+ },
10272
+ bcc: {
10273
+ type: "string"
10274
+ }
10275
+ },
10276
+ required: [
10277
+ "to",
10278
+ "subject",
10279
+ "body"
10280
+ ],
10281
+ additionalProperties: false
10282
+ },
10283
+ constraints: {
10284
+ rate_bucket: "outlook.write"
10285
+ },
10286
+ effects: [
10287
+ "Create:Draft"
10288
+ ],
10289
+ risk: "high",
10290
+ target_bindings: {
10291
+ resource_id: {
10292
+ source: "param",
10293
+ param: "to",
10294
+ multi: true,
10295
+ separator: ","
10296
+ },
10297
+ secondary: [
10298
+ {
10299
+ name: "cc",
10300
+ source: {
10301
+ source: "param",
10302
+ param: "cc"
10303
+ },
10304
+ type: "recipient"
10305
+ },
10306
+ {
10307
+ name: "bcc",
10308
+ source: {
10309
+ source: "param",
10310
+ param: "bcc"
10311
+ },
10312
+ type: "recipient"
10313
+ }
10314
+ ]
10315
+ },
10316
+ approval_salient_fields: [
10317
+ "to",
10318
+ "cc",
10319
+ "bcc",
10320
+ "subject",
10321
+ "body"
10322
+ ],
10323
+ version: "1.0.0"
10324
+ },
10325
+ {
10326
+ action: "outlook.folder.read",
10327
+ resource_type: "outlook:folder",
10328
+ required_relations: [
10329
+ "viewer",
10330
+ "editor",
10331
+ "admin",
10332
+ "owner"
10333
+ ],
10334
+ required_scopes: [
10335
+ "Mail.ReadWrite"
10336
+ ],
10337
+ capability: "outlook.read.basic",
10338
+ input_schema: {
10339
+ type: "object",
10340
+ properties: {
10341
+ // Optional scope: a specific folder id, else the full folder list.
10342
+ // Declared so the target_binding below references a real param.
10343
+ folderId: {
10344
+ type: "string"
10345
+ }
10346
+ },
10347
+ additionalProperties: false
10348
+ },
10349
+ constraints: {
10350
+ rate_bucket: "outlook.read"
10351
+ },
10352
+ effects: [
10353
+ "Read:FolderList"
10354
+ ],
10355
+ risk: "low",
10356
+ target_bindings: {
10357
+ resource_id: {
10358
+ source: "param",
10359
+ param: "folderId",
10360
+ required: false
10361
+ }
10362
+ },
10363
+ version: "1.0.0"
10364
+ },
10365
+ {
10366
+ action: "outlook.batch.read",
10367
+ resource_type: "outlook:message",
10368
+ required_relations: [
10369
+ "viewer",
10370
+ "editor",
10371
+ "admin",
10372
+ "owner"
10373
+ ],
10374
+ required_scopes: [
10375
+ "Mail.ReadWrite"
10376
+ ],
10377
+ capability: "outlook.read.basic",
10378
+ input_schema: {
10379
+ type: "object",
10380
+ properties: {
10381
+ messageIds: {
10382
+ type: "array",
10383
+ items: {
10384
+ type: "string",
10385
+ minLength: 1
10386
+ },
10387
+ minItems: 1,
10388
+ maxItems: 20
10389
+ }
10390
+ },
10391
+ required: [
10392
+ "messageIds"
10393
+ ],
10394
+ additionalProperties: false
10395
+ },
10396
+ constraints: {
10397
+ rate_bucket: "outlook.read"
10398
+ },
10399
+ effects: [
10400
+ "Read:MessageBatch"
10401
+ ],
10402
+ risk: "low",
10403
+ target_bindings: {
10404
+ resource_id: {
10405
+ source: "param",
10406
+ param: "messageIds",
10407
+ required: false
10408
+ }
10409
+ },
10410
+ version: "1.0.0"
10411
+ },
10412
+ {
10413
+ action: "outlook.message.trash",
10414
+ resource_type: "outlook:message",
10415
+ required_relations: [
10416
+ "editor",
10417
+ "act_as"
10418
+ ],
10419
+ required_scopes: [
10420
+ "Mail.ReadWrite"
10421
+ ],
10422
+ capability: "outlook.manage",
10423
+ input_schema: {
10424
+ type: "object",
10425
+ properties: {
10426
+ messageId: {
10427
+ type: "string",
10428
+ minLength: 1
10429
+ }
10430
+ },
10431
+ required: [
10432
+ "messageId"
10433
+ ],
10434
+ additionalProperties: false
10435
+ },
10436
+ constraints: {
10437
+ rate_bucket: "outlook.write"
10438
+ },
10439
+ effects: [
10440
+ "Update:Message"
10441
+ ],
10442
+ risk: "high",
10443
+ target_bindings: {
10444
+ resource_id: {
10445
+ source: "param",
10446
+ param: "messageId"
10447
+ }
10448
+ },
10449
+ approval_salient_fields: [
10450
+ "messageId"
10451
+ ],
10452
+ version: "1.0.0"
10453
+ },
10454
+ {
10455
+ action: "outlook.message.delete",
10456
+ resource_type: "outlook:message",
10457
+ required_relations: [
10458
+ "admin",
10459
+ "owner",
10460
+ "act_as"
10461
+ ],
10462
+ required_scopes: [
10463
+ "Mail.ReadWrite"
10464
+ ],
10465
+ capability: "outlook.manage",
10466
+ input_schema: {
10467
+ type: "object",
10468
+ properties: {
10469
+ messageId: {
10470
+ type: "string",
10471
+ minLength: 1
10472
+ }
10473
+ },
10474
+ required: [
10475
+ "messageId"
10476
+ ],
10477
+ additionalProperties: false
10478
+ },
10479
+ constraints: {
10480
+ rate_bucket: "outlook.write"
10481
+ },
10482
+ effects: [
10483
+ "Delete:Message"
10484
+ ],
10485
+ risk: "high",
10486
+ target_bindings: {
10487
+ resource_id: {
10488
+ source: "param",
10489
+ param: "messageId"
10490
+ }
10491
+ },
10492
+ approval_salient_fields: [
10493
+ "messageId"
10494
+ ],
10495
+ version: "1.0.0"
10496
+ },
10046
10497
  // ─── Calendar Actions ───
10047
10498
  {
10048
10499
  action: "calendar.event.list",
@@ -10056,6 +10507,16 @@ var ACTION_REGISTRY = {
10056
10507
  required_scopes: [
10057
10508
  "https://www.googleapis.com/auth/calendar.readonly"
10058
10509
  ],
10510
+ // Microsoft 接続で同じ action を実行するときのスコープ。Calendars.Read は
10511
+ // Calendars.ReadWrite に含意されるため、write 権限だけを付与された接続でも満たされる。
10512
+ required_scopes_by_provider: {
10513
+ google: [
10514
+ "https://www.googleapis.com/auth/calendar.readonly"
10515
+ ],
10516
+ microsoft: [
10517
+ "Calendars.Read"
10518
+ ]
10519
+ },
10059
10520
  capability: "calendar.read.basic",
10060
10521
  input_schema: {
10061
10522
  type: "object",
@@ -10110,6 +10571,16 @@ var ACTION_REGISTRY = {
10110
10571
  required_scopes: [
10111
10572
  "https://www.googleapis.com/auth/calendar.readonly"
10112
10573
  ],
10574
+ // Microsoft 接続で同じ action を実行するときのスコープ。Calendars.Read は
10575
+ // Calendars.ReadWrite に含意されるため、write 権限だけを付与された接続でも満たされる。
10576
+ required_scopes_by_provider: {
10577
+ google: [
10578
+ "https://www.googleapis.com/auth/calendar.readonly"
10579
+ ],
10580
+ microsoft: [
10581
+ "Calendars.Read"
10582
+ ]
10583
+ },
10113
10584
  capability: "calendar.read.basic",
10114
10585
  input_schema: {
10115
10586
  type: "object",
@@ -10154,6 +10625,16 @@ var ACTION_REGISTRY = {
10154
10625
  required_scopes: [
10155
10626
  "https://www.googleapis.com/auth/calendar.readonly"
10156
10627
  ],
10628
+ // Microsoft 接続で同じ action を実行するときのスコープ。Calendars.Read は
10629
+ // Calendars.ReadWrite に含意されるため、write 権限だけを付与された接続でも満たされる。
10630
+ required_scopes_by_provider: {
10631
+ google: [
10632
+ "https://www.googleapis.com/auth/calendar.readonly"
10633
+ ],
10634
+ microsoft: [
10635
+ "Calendars.Read"
10636
+ ]
10637
+ },
10157
10638
  capability: "calendar.read.basic",
10158
10639
  // Availability probe used to check a calendar's busy/free intervals before
10159
10640
  // proposing meeting slots. Returns only busy time ranges — never event
@@ -10207,6 +10688,14 @@ var ACTION_REGISTRY = {
10207
10688
  required_scopes: [
10208
10689
  "https://www.googleapis.com/auth/calendar"
10209
10690
  ],
10691
+ required_scopes_by_provider: {
10692
+ google: [
10693
+ "https://www.googleapis.com/auth/calendar"
10694
+ ],
10695
+ microsoft: [
10696
+ "Calendars.ReadWrite"
10697
+ ]
10698
+ },
10210
10699
  capability: "calendar.write",
10211
10700
  input_schema: {
10212
10701
  type: "object",
@@ -10278,11 +10767,11 @@ var ACTION_REGISTRY = {
10278
10767
  },
10279
10768
  addMeet: {
10280
10769
  type: "boolean",
10281
- description: "Opt-in: attach a Google Meet link (default: false)"
10770
+ description: "Opt-in: attach an online-meeting link (default: false). Google Meet on a Google connection, Microsoft Teams on an Outlook one \u2014 the join URL comes back as conferenceUrl either way."
10282
10771
  },
10283
10772
  meetRequestId: {
10284
10773
  type: "string",
10285
- description: "Stable idempotency key for the Meet request (used only when addMeet is true)"
10774
+ description: "Stable idempotency key for the online-meeting request (used only when addMeet is true)"
10286
10775
  }
10287
10776
  },
10288
10777
  required: [
@@ -10340,6 +10829,14 @@ var ACTION_REGISTRY = {
10340
10829
  required_scopes: [
10341
10830
  "https://www.googleapis.com/auth/calendar"
10342
10831
  ],
10832
+ required_scopes_by_provider: {
10833
+ google: [
10834
+ "https://www.googleapis.com/auth/calendar"
10835
+ ],
10836
+ microsoft: [
10837
+ "Calendars.ReadWrite"
10838
+ ]
10839
+ },
10343
10840
  capability: "calendar.write",
10344
10841
  input_schema: {
10345
10842
  type: "object",
@@ -10415,11 +10912,11 @@ var ACTION_REGISTRY = {
10415
10912
  },
10416
10913
  addMeet: {
10417
10914
  type: "boolean",
10418
- description: "Opt-in: attach a Google Meet link (default: false)"
10915
+ description: "Opt-in: attach an online-meeting link (default: false). Google Meet on a Google connection, Microsoft Teams on an Outlook one \u2014 the join URL comes back as conferenceUrl either way."
10419
10916
  },
10420
10917
  meetRequestId: {
10421
10918
  type: "string",
10422
- description: "Stable idempotency key for the Meet request (used only when addMeet is true)"
10919
+ description: "Stable idempotency key for the online-meeting request (used only when addMeet is true)"
10423
10920
  }
10424
10921
  },
10425
10922
  required: [
@@ -10477,6 +10974,14 @@ var ACTION_REGISTRY = {
10477
10974
  required_scopes: [
10478
10975
  "https://www.googleapis.com/auth/calendar"
10479
10976
  ],
10977
+ required_scopes_by_provider: {
10978
+ google: [
10979
+ "https://www.googleapis.com/auth/calendar"
10980
+ ],
10981
+ microsoft: [
10982
+ "Calendars.ReadWrite"
10983
+ ]
10984
+ },
10480
10985
  capability: "calendar.write",
10481
10986
  input_schema: {
10482
10987
  type: "object",
@@ -15068,7 +15573,7 @@ var ACTION_REGISTRY = {
15068
15573
  type: "array",
15069
15574
  minItems: 1,
15070
15575
  maxItems: 10,
15071
- description: "Explicit candidate slots computed by the agent from the user calendar. The server validates them AND (when Google Calendar is connected) filters out any that conflict with the sender's calendar. Mutually exclusive with candidateWindow \u2014 supply exactly one.",
15576
+ description: "Explicit candidate slots computed by the agent from the user calendar. The server validates them AND (when a calendar is connected) filters out any that conflict with the sender's calendar. Mutually exclusive with candidateWindow \u2014 supply exactly one.",
15072
15577
  items: {
15073
15578
  type: "object",
15074
15579
  properties: {
@@ -15105,7 +15610,7 @@ var ACTION_REGISTRY = {
15105
15610
  "object",
15106
15611
  "array"
15107
15612
  ],
15108
- description: 'A search window OR an ARRAY of search windows the server fills with busy-free candidate slots from the sender\'s Google Calendar. Each range is `{ start, end }` (ISO 8601) \u2014 an independent contiguous interval the server searches within, spreading candidates across ranges. "\u5E73\u65E5\u5348\u5F8C" = one range per business day (Mon 13-18 / Tue 13-18 / \u2026); "\u6708\u66DC\u5348\u524D or \u6728\u66DC\u5348\u5F8C" = two ranges. A single contiguous span = one range. Max 5 ranges, total span \u2264 62 days. Mutually exclusive with candidates \u2014 supply exactly one. Requires a connected Google Calendar.',
15613
+ description: 'A search window OR an ARRAY of search windows the server fills with busy-free candidate slots from the sender\'s connected calendar(s) (Google Calendar or Microsoft Outlook; busy time is the union of all of them). Each range is `{ start, end }` (ISO 8601) \u2014 an independent contiguous interval the server searches within, spreading candidates across ranges. "\u5E73\u65E5\u5348\u5F8C" = one range per business day (Mon 13-18 / Tue 13-18 / \u2026); "\u6708\u66DC\u5348\u524D or \u6728\u66DC\u5348\u5F8C" = two ranges. A single contiguous span = one range. Max 5 ranges, total span \u2264 62 days. Mutually exclusive with candidates \u2014 supply exactly one. Requires at least one connected calendar.',
15109
15614
  properties: {
15110
15615
  start: {
15111
15616
  type: "string",
@@ -15989,9 +16494,39 @@ var ACTION_REGISTRY = {
15989
16494
  ],
15990
16495
  version: "1.0.0"
15991
16496
  },
16497
+ // 🔴 #1209 Outlook mail capabilities (peer of the three Gmail ones above).
16498
+ {
16499
+ capability: "outlook.read.basic",
16500
+ description: "Read and search Outlook mail messages and folders",
16501
+ includes: [
16502
+ "outlook.message.search",
16503
+ "outlook.message.read",
16504
+ "outlook.folder.read",
16505
+ "outlook.batch.read"
16506
+ ],
16507
+ version: "1.0.0"
16508
+ },
16509
+ {
16510
+ capability: "outlook.compose",
16511
+ description: "Send emails and create drafts via Outlook",
16512
+ includes: [
16513
+ "outlook.message.send",
16514
+ "outlook.draft.create"
16515
+ ],
16516
+ version: "1.0.0"
16517
+ },
16518
+ {
16519
+ capability: "outlook.manage",
16520
+ description: "Trash and permanently delete Outlook messages",
16521
+ includes: [
16522
+ "outlook.message.trash",
16523
+ "outlook.message.delete"
16524
+ ],
16525
+ version: "1.0.0"
16526
+ },
15992
16527
  {
15993
16528
  capability: "calendar.read.basic",
15994
- description: "Read and list Google Calendar events, and check free/busy availability",
16529
+ description: "Read and list calendar events (Google Calendar or Microsoft Outlook), and check free/busy availability",
15995
16530
  includes: [
15996
16531
  "calendar.event.list",
15997
16532
  "calendar.event.read",
@@ -16001,7 +16536,7 @@ var ACTION_REGISTRY = {
16001
16536
  },
16002
16537
  {
16003
16538
  capability: "calendar.write",
16004
- description: "Create, update, and delete Google Calendar events",
16539
+ description: "Create, update, and delete calendar events (Google Calendar or Microsoft Outlook)",
16005
16540
  includes: [
16006
16541
  "calendar.event.create",
16007
16542
  "calendar.event.update",
@@ -18951,6 +19486,7 @@ __name(isDecision, "isDecision");
18951
19486
  getKeyIdFromDid,
18952
19487
  getRequiredRelations,
18953
19488
  getRequiredScopes,
19489
+ getRequiredScopesForProvider,
18954
19490
  getTierLimits,
18955
19491
  getValidMcpActionNames,
18956
19492
  grantConstraintsToPermissionConstraints,