@lanes-sh/link 0.6.11 → 0.7.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/README.md +62 -45
- package/instructions/skills/lanes-link/SKILL.md +25 -0
- package/package.json +3 -2
- package/src/audit/conformance.ts +1 -1
- package/src/cli/argv.ts +14 -1
- package/src/cli/commands/connect/acquire.ts +100 -0
- package/src/cli/commands/connect/custom/index.ts +1 -1
- package/src/cli/commands/connect/declare.ts +19 -0
- package/src/cli/commands/connect/index.ts +54 -56
- package/src/cli/commands/connect/requirements.ts +23 -1
- package/src/cli/commands/connect/setup.ts +1 -1
- package/src/cli/commands/connect/variables.ts +220 -0
- package/src/cli/commands/knowledge/index.ts +22 -4
- package/src/cli/commands/knowledge/migrate.ts +61 -43
- package/src/cli/commands/operate/tools.ts +1 -1
- package/src/cli/commands/owner/entities.ts +244 -0
- package/src/cli/commands/owner/shared.ts +14 -0
- package/src/cli/commands/owner/vault.ts +2 -2
- package/src/cli/commands/owner.ts +13 -3
- package/src/cli/commands/setup.ts +12 -0
- package/src/cli/config-edit.ts +16 -6
- package/src/cli/config-repair.ts +10 -0
- package/src/cli/dispatch-owner.ts +30 -1
- package/src/cli/main.ts +2 -1
- package/src/cli/runtime/open.ts +14 -7
- package/src/cli/runtime/registry.ts +6 -1
- package/src/cli/selection.ts +11 -0
- package/src/cli/usage.ts +13 -2
- package/src/connectivity/auth/strategy/index.ts +1 -1
- package/src/connectivity/capability.ts +1 -1
- package/src/connectivity/context.ts +1 -1
- package/src/connectivity/index.ts +1 -1
- package/src/connectivity/mail/attachments.ts +42 -73
- package/src/connectivity/mail/content-type.ts +71 -0
- package/src/connectivity/mail/index.ts +1 -1
- package/src/connectivity/manifest/provider.ts +50 -0
- package/src/connectivity/manifest/variables.ts +173 -0
- package/src/connectivity/transports/factory.ts +74 -1
- package/src/connectivity/transports/http/index.ts +8 -2
- package/src/connectivity/transports/http/keys.ts +83 -0
- package/src/connectivity/transports/imap/attachment.ts +53 -10
- package/src/connectivity/transports/imap/capabilities.ts +28 -0
- package/src/connectivity/transports/imap/download.ts +111 -0
- package/src/connectivity/transports/imap/index.ts +13 -0
- package/src/connectivity/transports/imap/operations.ts +1 -0
- package/src/deployments/adapters/s3.ts +1 -1
- package/src/deployments/gcp/provision.ts +1 -1
- package/src/deployments/knowledge.ts +44 -18
- package/src/deployments/prepare.ts +1 -1
- package/src/deployments/serving.ts +1 -1
- package/src/dispatch/dispatch.ts +17 -10
- package/src/dispatch/staging.ts +76 -1
- package/src/profile/knowledge.ts +19 -11
- package/src/profile/schema.ts +2 -2
- package/src/providers/README.md +189 -0
- package/src/providers/airtable/index.ts +10 -0
- package/src/providers/algolia/index.ts +10 -0
- package/src/providers/amplitude/index.ts +10 -0
- package/src/providers/apify/index.ts +10 -0
- package/src/providers/asana/index.ts +10 -0
- package/src/providers/assets/provider.ts +11 -4
- package/src/providers/atlassian/index.ts +19 -0
- package/src/providers/attio/index.ts +10 -0
- package/src/providers/betterstack/index.ts +10 -0
- package/src/providers/box/index.ts +64 -0
- package/src/providers/brightdata/index.ts +10 -0
- package/src/providers/buildkite/index.ts +10 -0
- package/src/providers/bunq/index.ts +2 -2
- package/src/providers/calendly/index.ts +10 -0
- package/src/providers/canva/index.ts +10 -0
- package/src/providers/circleci/index.ts +10 -0
- package/src/providers/clickup/index.ts +10 -0
- package/src/providers/close/index.ts +10 -0
- package/src/providers/cloudflare_bindings/index.ts +14 -0
- package/src/providers/cloudflare_observability/index.ts +10 -0
- package/src/providers/contentful/index.ts +10 -0
- package/src/providers/custom/load.ts +1 -1
- package/src/providers/datadog/index.ts +10 -0
- package/src/providers/discord/index.ts +1 -1
- package/src/providers/discord/specs/discord.v10.json +0 -88
- package/src/providers/discord/specs/vendor.ts +1 -1
- package/src/providers/dropbox/index.ts +10 -0
- package/src/providers/entities/catalogue.ts +366 -0
- package/src/providers/entities/find.ts +279 -0
- package/src/providers/entities/provider.ts +334 -0
- package/src/providers/entities/render.ts +142 -0
- package/src/providers/entities/store.ts +276 -0
- package/src/providers/entities/writes.ts +279 -0
- package/src/providers/example/provider.ts +1 -1
- package/src/providers/expensify/index.ts +10 -0
- package/src/providers/fastmail/calendar/index.ts +21 -0
- package/src/providers/fastmail/contacts/index.ts +17 -0
- package/src/providers/fastmail/index.ts +4 -0
- package/src/providers/fastmail/mail/index.ts +38 -0
- package/src/providers/fastmail/shared/setup.ts +52 -0
- package/src/providers/figma/index.ts +10 -0
- package/src/providers/fireflies/index.ts +10 -0
- package/src/providers/flagsmith/index.ts +10 -0
- package/src/providers/gamma/index.ts +10 -0
- package/src/providers/github/index.ts +2 -2
- package/src/providers/google/gmail/attachment.ts +16 -1
- package/src/providers/google/gmail-imap/index.ts +7 -2
- package/src/providers/google/shared/oauth.ts +1 -1
- package/src/providers/google/shared/service-account.ts +1 -1
- package/src/providers/google/shared/setup.ts +1 -1
- package/src/providers/google/specs/calendar.v3.json +0 -32
- package/src/providers/google/specs/docs.v1.json +0 -76
- package/src/providers/google/specs/drive.v3.json +0 -32
- package/src/providers/google/specs/gmail.v1.json +0 -76
- package/src/providers/google/specs/people.v1.json +0 -77
- package/src/providers/google/specs/sheets.v4.json +0 -76
- package/src/providers/google/specs/tasks.v1.json +0 -76
- package/src/providers/grafana/index.ts +10 -0
- package/src/providers/heroku/index.ts +10 -0
- package/src/providers/hubspot/index.ts +75 -0
- package/src/providers/hygraph/index.ts +10 -0
- package/src/providers/icloud/mail/index.ts +5 -0
- package/src/providers/icloud/shared/setup.ts +1 -1
- package/src/providers/index.ts +255 -0
- package/src/providers/insightly/index.ts +10 -0
- package/src/providers/jam/index.ts +10 -0
- package/src/providers/klaviyo/index.ts +10 -0
- package/src/providers/mailbox/index.ts +87 -0
- package/src/providers/memory/provider.ts +3 -8
- package/src/providers/mercury/index.ts +10 -0
- package/src/providers/microsoft/calendar/index.ts +49 -0
- package/src/providers/microsoft/contacts/index.ts +50 -0
- package/src/providers/microsoft/drive/index.ts +62 -0
- package/src/providers/microsoft/index.ts +12 -0
- package/src/providers/microsoft/mail/index.ts +76 -0
- package/src/providers/microsoft/shared/oauth.ts +58 -0
- package/src/providers/microsoft/shared/scopes.ts +56 -0
- package/src/providers/microsoft/shared/setup.ts +45 -0
- package/src/providers/microsoft/specs/microsoft-todo.v1.json +755 -0
- package/src/providers/microsoft/specs/onedrive.v1.json +993 -0
- package/src/providers/microsoft/specs/outlook-calendar.v1.json +1743 -0
- package/src/providers/microsoft/specs/outlook-contacts.v1.json +430 -0
- package/src/providers/microsoft/specs/outlook-mail.v1.json +901 -0
- package/src/providers/microsoft/specs/vendor.ts +232 -0
- package/src/providers/microsoft/todo/index.ts +54 -0
- package/src/providers/miro/index.ts +10 -0
- package/src/providers/mixpanel/index.ts +10 -0
- package/src/providers/monday/index.ts +10 -0
- package/src/providers/mux/index.ts +10 -0
- package/src/providers/navan/index.ts +10 -0
- package/src/providers/neon/index.ts +10 -0
- package/src/providers/netlify/index.ts +10 -0
- package/src/providers/nextcloud/calendar/index.ts +28 -0
- package/src/providers/nextcloud/contacts/index.ts +18 -0
- package/src/providers/nextcloud/index.ts +3 -0
- package/src/providers/nextcloud/shared/setup.ts +59 -0
- package/src/providers/owner.ts +15 -3
- package/src/providers/paddle/index.ts +10 -0
- package/src/providers/paypal/index.ts +10 -0
- package/src/providers/posthog/index.ts +10 -0
- package/src/providers/prisma/index.ts +10 -0
- package/src/providers/ramp/index.ts +10 -0
- package/src/providers/recurly/index.ts +10 -0
- package/src/providers/reddit/index.ts +1 -1
- package/src/providers/remote/index.ts +10 -0
- package/src/providers/render/index.ts +35 -0
- package/src/providers/replicate/index.ts +10 -0
- package/src/providers/resend/index.ts +10 -0
- package/src/providers/riverside/index.ts +10 -0
- package/src/providers/rootly/index.ts +10 -0
- package/src/providers/rudderstack/index.ts +10 -0
- package/src/providers/salesloft/index.ts +10 -0
- package/src/providers/sanity/index.ts +10 -0
- package/src/providers/scopes.ts +2 -0
- package/src/providers/sentry/index.ts +10 -0
- package/src/providers/setup/plan.ts +11 -0
- package/src/providers/setup/provider.ts +12 -0
- package/src/providers/shared/openapi.ts +70 -0
- package/src/providers/shared/slug.ts +28 -0
- package/src/providers/shared/vendor-operations.ts +43 -1
- package/src/providers/shared/vendor-spec.ts +98 -17
- package/src/providers/shortcut/index.ts +10 -0
- package/src/providers/slack/index.ts +2 -2
- package/src/providers/square/index.ts +10 -0
- package/src/providers/storyblok/index.ts +10 -0
- package/src/providers/stripe/index.ts +10 -0
- package/src/providers/supabase/index.ts +10 -0
- package/src/providers/tasks/store.ts +2 -7
- package/src/providers/tavily/index.ts +10 -0
- package/src/providers/todoist/index.ts +10 -0
- package/src/providers/untested.ts +105 -0
- package/src/providers/vault/provider.ts +1 -1
- package/src/providers/vercel/index.ts +10 -0
- package/src/providers/vimeo/index.ts +10 -0
- package/src/providers/webflow/index.ts +10 -0
- package/src/providers/whimsical/index.ts +10 -0
- package/src/providers/wix/index.ts +10 -0
- package/src/providers/workable/index.ts +10 -0
- package/src/providers/yahoo_mail/index.ts +73 -0
- package/src/providers/zapier/index.ts +10 -0
- package/src/providers/zoho_mail/index.ts +79 -0
- package/src/secrets/document.ts +1 -1
- package/src/server/attachments.ts +129 -5
- package/src/server/index.ts +3 -3
- package/src/server/mcp/instructions.ts +88 -18
- package/src/server/stdio.ts +1 -1
package/src/providers/index.ts
CHANGED
|
@@ -16,10 +16,94 @@ import { icloudCalendar } from './icloud/calendar/index.ts';
|
|
|
16
16
|
import { icloudContacts } from './icloud/contacts/index.ts';
|
|
17
17
|
import { icloudDrive } from './icloud/drive/index.ts';
|
|
18
18
|
import { icloudMail } from './icloud/mail/index.ts';
|
|
19
|
+
import { microsoftTodo } from './microsoft/todo/index.ts';
|
|
20
|
+
import { onedrive } from './microsoft/drive/index.ts';
|
|
21
|
+
import { outlookCalendar } from './microsoft/calendar/index.ts';
|
|
22
|
+
import { outlookContacts } from './microsoft/contacts/index.ts';
|
|
23
|
+
import { outlookMail } from './microsoft/mail/index.ts';
|
|
24
|
+
import { fastmailCalendar } from './fastmail/calendar/index.ts';
|
|
25
|
+
import { fastmailContacts } from './fastmail/contacts/index.ts';
|
|
26
|
+
import { fastmailMail } from './fastmail/mail/index.ts';
|
|
27
|
+
import { yahooMail } from './yahoo_mail/index.ts';
|
|
28
|
+
import { zohoMail } from './zoho_mail/index.ts';
|
|
29
|
+
import { mailbox } from './mailbox/index.ts';
|
|
30
|
+
import { nextcloudCalendar } from './nextcloud/calendar/index.ts';
|
|
31
|
+
import { nextcloudContacts } from './nextcloud/contacts/index.ts';
|
|
19
32
|
import { linear } from './linear/index.ts';
|
|
20
33
|
import { notion } from './notion/index.ts';
|
|
21
34
|
import { reddit } from './reddit/index.ts';
|
|
22
35
|
import { slack } from './slack/index.ts';
|
|
36
|
+
import { asana } from './asana/index.ts';
|
|
37
|
+
import { stripe } from './stripe/index.ts';
|
|
38
|
+
import { sentry } from './sentry/index.ts';
|
|
39
|
+
import { figma } from './figma/index.ts';
|
|
40
|
+
import { canva } from './canva/index.ts';
|
|
41
|
+
import { dropbox } from './dropbox/index.ts';
|
|
42
|
+
import { todoist } from './todoist/index.ts';
|
|
43
|
+
import { clickup } from './clickup/index.ts';
|
|
44
|
+
import { monday } from './monday/index.ts';
|
|
45
|
+
import { airtable } from './airtable/index.ts';
|
|
46
|
+
import { miro } from './miro/index.ts';
|
|
47
|
+
import { calendly } from './calendly/index.ts';
|
|
48
|
+
import { close } from './close/index.ts';
|
|
49
|
+
import { zapier } from './zapier/index.ts';
|
|
50
|
+
import { paypal } from './paypal/index.ts';
|
|
51
|
+
import { square } from './square/index.ts';
|
|
52
|
+
import { mercury } from './mercury/index.ts';
|
|
53
|
+
import { vercel } from './vercel/index.ts';
|
|
54
|
+
import { netlify } from './netlify/index.ts';
|
|
55
|
+
import { supabase } from './supabase/index.ts';
|
|
56
|
+
import { neon } from './neon/index.ts';
|
|
57
|
+
import { prisma } from './prisma/index.ts';
|
|
58
|
+
import { sanity } from './sanity/index.ts';
|
|
59
|
+
import { webflow } from './webflow/index.ts';
|
|
60
|
+
import { wix } from './wix/index.ts';
|
|
61
|
+
import { datadog } from './datadog/index.ts';
|
|
62
|
+
import { grafana } from './grafana/index.ts';
|
|
63
|
+
import { fireflies } from './fireflies/index.ts';
|
|
64
|
+
import { gamma } from './gamma/index.ts';
|
|
65
|
+
import { jam } from './jam/index.ts';
|
|
66
|
+
import { cloudflareObservability } from './cloudflare_observability/index.ts';
|
|
67
|
+
import { cloudflareBindings } from './cloudflare_bindings/index.ts';
|
|
68
|
+
import { atlassian } from './atlassian/index.ts';
|
|
69
|
+
import { hubspot } from './hubspot/index.ts';
|
|
70
|
+
import { box } from './box/index.ts';
|
|
71
|
+
import { render } from './render/index.ts';
|
|
72
|
+
import { algolia } from './algolia/index.ts';
|
|
73
|
+
import { amplitude } from './amplitude/index.ts';
|
|
74
|
+
import { apify } from './apify/index.ts';
|
|
75
|
+
import { attio } from './attio/index.ts';
|
|
76
|
+
import { betterstack } from './betterstack/index.ts';
|
|
77
|
+
import { brightdata } from './brightdata/index.ts';
|
|
78
|
+
import { buildkite } from './buildkite/index.ts';
|
|
79
|
+
import { circleci } from './circleci/index.ts';
|
|
80
|
+
import { contentful } from './contentful/index.ts';
|
|
81
|
+
import { expensify } from './expensify/index.ts';
|
|
82
|
+
import { flagsmith } from './flagsmith/index.ts';
|
|
83
|
+
import { heroku } from './heroku/index.ts';
|
|
84
|
+
import { hygraph } from './hygraph/index.ts';
|
|
85
|
+
import { insightly } from './insightly/index.ts';
|
|
86
|
+
import { klaviyo } from './klaviyo/index.ts';
|
|
87
|
+
import { mixpanel } from './mixpanel/index.ts';
|
|
88
|
+
import { mux } from './mux/index.ts';
|
|
89
|
+
import { navan } from './navan/index.ts';
|
|
90
|
+
import { paddle } from './paddle/index.ts';
|
|
91
|
+
import { posthog } from './posthog/index.ts';
|
|
92
|
+
import { ramp } from './ramp/index.ts';
|
|
93
|
+
import { recurly } from './recurly/index.ts';
|
|
94
|
+
import { remote } from './remote/index.ts';
|
|
95
|
+
import { replicate } from './replicate/index.ts';
|
|
96
|
+
import { resend } from './resend/index.ts';
|
|
97
|
+
import { riverside } from './riverside/index.ts';
|
|
98
|
+
import { rootly } from './rootly/index.ts';
|
|
99
|
+
import { rudderstack } from './rudderstack/index.ts';
|
|
100
|
+
import { salesloft } from './salesloft/index.ts';
|
|
101
|
+
import { shortcut } from './shortcut/index.ts';
|
|
102
|
+
import { storyblok } from './storyblok/index.ts';
|
|
103
|
+
import { tavily } from './tavily/index.ts';
|
|
104
|
+
import { vimeo } from './vimeo/index.ts';
|
|
105
|
+
import { whimsical } from './whimsical/index.ts';
|
|
106
|
+
import { workable } from './workable/index.ts';
|
|
23
107
|
|
|
24
108
|
/**
|
|
25
109
|
* Every provider, in one list.
|
|
@@ -72,7 +156,94 @@ export const PROVIDERS: readonly (ProviderManifest | ProviderDefinition)[] = [
|
|
|
72
156
|
icloudCalendar,
|
|
73
157
|
icloudContacts,
|
|
74
158
|
icloudDrive,
|
|
159
|
+
outlookMail,
|
|
160
|
+
outlookCalendar,
|
|
161
|
+
outlookContacts,
|
|
162
|
+
onedrive,
|
|
163
|
+
microsoftTodo,
|
|
164
|
+
fastmailMail,
|
|
165
|
+
fastmailCalendar,
|
|
166
|
+
fastmailContacts,
|
|
167
|
+
zohoMail,
|
|
168
|
+
yahooMail,
|
|
169
|
+
nextcloudCalendar,
|
|
170
|
+
nextcloudContacts,
|
|
171
|
+
mailbox,
|
|
75
172
|
bunq,
|
|
173
|
+
|
|
174
|
+
// Vendors running an official MCP server that offers Dynamic Client
|
|
175
|
+
// Registration. Each is a declaration and nothing else; see the header above.
|
|
176
|
+
asana,
|
|
177
|
+
stripe,
|
|
178
|
+
sentry,
|
|
179
|
+
figma,
|
|
180
|
+
canva,
|
|
181
|
+
dropbox,
|
|
182
|
+
todoist,
|
|
183
|
+
clickup,
|
|
184
|
+
monday,
|
|
185
|
+
airtable,
|
|
186
|
+
miro,
|
|
187
|
+
calendly,
|
|
188
|
+
close,
|
|
189
|
+
zapier,
|
|
190
|
+
paypal,
|
|
191
|
+
square,
|
|
192
|
+
mercury,
|
|
193
|
+
vercel,
|
|
194
|
+
netlify,
|
|
195
|
+
supabase,
|
|
196
|
+
neon,
|
|
197
|
+
prisma,
|
|
198
|
+
sanity,
|
|
199
|
+
webflow,
|
|
200
|
+
wix,
|
|
201
|
+
datadog,
|
|
202
|
+
grafana,
|
|
203
|
+
fireflies,
|
|
204
|
+
gamma,
|
|
205
|
+
jam,
|
|
206
|
+
cloudflareObservability,
|
|
207
|
+
cloudflareBindings,
|
|
208
|
+
atlassian,
|
|
209
|
+
hubspot,
|
|
210
|
+
box,
|
|
211
|
+
render,
|
|
212
|
+
algolia,
|
|
213
|
+
amplitude,
|
|
214
|
+
apify,
|
|
215
|
+
attio,
|
|
216
|
+
betterstack,
|
|
217
|
+
brightdata,
|
|
218
|
+
buildkite,
|
|
219
|
+
circleci,
|
|
220
|
+
contentful,
|
|
221
|
+
expensify,
|
|
222
|
+
flagsmith,
|
|
223
|
+
heroku,
|
|
224
|
+
hygraph,
|
|
225
|
+
insightly,
|
|
226
|
+
klaviyo,
|
|
227
|
+
mixpanel,
|
|
228
|
+
mux,
|
|
229
|
+
navan,
|
|
230
|
+
paddle,
|
|
231
|
+
posthog,
|
|
232
|
+
ramp,
|
|
233
|
+
recurly,
|
|
234
|
+
remote,
|
|
235
|
+
replicate,
|
|
236
|
+
resend,
|
|
237
|
+
riverside,
|
|
238
|
+
rootly,
|
|
239
|
+
rudderstack,
|
|
240
|
+
salesloft,
|
|
241
|
+
shortcut,
|
|
242
|
+
storyblok,
|
|
243
|
+
tavily,
|
|
244
|
+
vimeo,
|
|
245
|
+
whimsical,
|
|
246
|
+
workable,
|
|
76
247
|
];
|
|
77
248
|
|
|
78
249
|
/** The manifest half of an entry, whichever shape it arrived in. */
|
|
@@ -101,6 +272,18 @@ export {
|
|
|
101
272
|
sheets,
|
|
102
273
|
} from './google/index.ts';
|
|
103
274
|
export { icloudCalendar, icloudContacts, icloudDrive, icloudMail } from './icloud/index.ts';
|
|
275
|
+
export {
|
|
276
|
+
microsoftTodo,
|
|
277
|
+
onedrive,
|
|
278
|
+
outlookCalendar,
|
|
279
|
+
outlookContacts,
|
|
280
|
+
outlookMail,
|
|
281
|
+
} from './microsoft/index.ts';
|
|
282
|
+
export { fastmailCalendar, fastmailContacts, fastmailMail } from './fastmail/index.ts';
|
|
283
|
+
export { yahooMail } from './yahoo_mail/index.ts';
|
|
284
|
+
export { zohoMail } from './zoho_mail/index.ts';
|
|
285
|
+
export { nextcloudCalendar, nextcloudContacts } from './nextcloud/index.ts';
|
|
286
|
+
export { mailbox } from './mailbox/index.ts';
|
|
104
287
|
export { bunq } from './bunq/index.ts';
|
|
105
288
|
export { discord } from './discord/index.ts';
|
|
106
289
|
export { github } from './github/index.ts';
|
|
@@ -108,4 +291,76 @@ export { linear } from './linear/index.ts';
|
|
|
108
291
|
export { notion } from './notion/index.ts';
|
|
109
292
|
export { reddit } from './reddit/index.ts';
|
|
110
293
|
export { slack } from './slack/index.ts';
|
|
294
|
+
export { asana } from './asana/index.ts';
|
|
295
|
+
export { stripe } from './stripe/index.ts';
|
|
296
|
+
export { sentry } from './sentry/index.ts';
|
|
297
|
+
export { figma } from './figma/index.ts';
|
|
298
|
+
export { canva } from './canva/index.ts';
|
|
299
|
+
export { dropbox } from './dropbox/index.ts';
|
|
300
|
+
export { todoist } from './todoist/index.ts';
|
|
301
|
+
export { clickup } from './clickup/index.ts';
|
|
302
|
+
export { monday } from './monday/index.ts';
|
|
303
|
+
export { airtable } from './airtable/index.ts';
|
|
304
|
+
export { miro } from './miro/index.ts';
|
|
305
|
+
export { calendly } from './calendly/index.ts';
|
|
306
|
+
export { close } from './close/index.ts';
|
|
307
|
+
export { zapier } from './zapier/index.ts';
|
|
308
|
+
export { paypal } from './paypal/index.ts';
|
|
309
|
+
export { square } from './square/index.ts';
|
|
310
|
+
export { mercury } from './mercury/index.ts';
|
|
311
|
+
export { vercel } from './vercel/index.ts';
|
|
312
|
+
export { netlify } from './netlify/index.ts';
|
|
313
|
+
export { supabase } from './supabase/index.ts';
|
|
314
|
+
export { neon } from './neon/index.ts';
|
|
315
|
+
export { prisma } from './prisma/index.ts';
|
|
316
|
+
export { sanity } from './sanity/index.ts';
|
|
317
|
+
export { webflow } from './webflow/index.ts';
|
|
318
|
+
export { wix } from './wix/index.ts';
|
|
319
|
+
export { datadog } from './datadog/index.ts';
|
|
320
|
+
export { grafana } from './grafana/index.ts';
|
|
321
|
+
export { fireflies } from './fireflies/index.ts';
|
|
322
|
+
export { gamma } from './gamma/index.ts';
|
|
323
|
+
export { jam } from './jam/index.ts';
|
|
324
|
+
export { cloudflareObservability } from './cloudflare_observability/index.ts';
|
|
325
|
+
export { cloudflareBindings } from './cloudflare_bindings/index.ts';
|
|
326
|
+
export { atlassian } from './atlassian/index.ts';
|
|
327
|
+
export { hubspot } from './hubspot/index.ts';
|
|
328
|
+
export { box } from './box/index.ts';
|
|
329
|
+
export { render } from './render/index.ts';
|
|
330
|
+
export { algolia } from './algolia/index.ts';
|
|
331
|
+
export { amplitude } from './amplitude/index.ts';
|
|
332
|
+
export { apify } from './apify/index.ts';
|
|
333
|
+
export { attio } from './attio/index.ts';
|
|
334
|
+
export { betterstack } from './betterstack/index.ts';
|
|
335
|
+
export { brightdata } from './brightdata/index.ts';
|
|
336
|
+
export { buildkite } from './buildkite/index.ts';
|
|
337
|
+
export { circleci } from './circleci/index.ts';
|
|
338
|
+
export { contentful } from './contentful/index.ts';
|
|
339
|
+
export { expensify } from './expensify/index.ts';
|
|
340
|
+
export { flagsmith } from './flagsmith/index.ts';
|
|
341
|
+
export { heroku } from './heroku/index.ts';
|
|
342
|
+
export { hygraph } from './hygraph/index.ts';
|
|
343
|
+
export { insightly } from './insightly/index.ts';
|
|
344
|
+
export { klaviyo } from './klaviyo/index.ts';
|
|
345
|
+
export { mixpanel } from './mixpanel/index.ts';
|
|
346
|
+
export { mux } from './mux/index.ts';
|
|
347
|
+
export { navan } from './navan/index.ts';
|
|
348
|
+
export { paddle } from './paddle/index.ts';
|
|
349
|
+
export { posthog } from './posthog/index.ts';
|
|
350
|
+
export { ramp } from './ramp/index.ts';
|
|
351
|
+
export { recurly } from './recurly/index.ts';
|
|
352
|
+
export { remote } from './remote/index.ts';
|
|
353
|
+
export { replicate } from './replicate/index.ts';
|
|
354
|
+
export { resend } from './resend/index.ts';
|
|
355
|
+
export { riverside } from './riverside/index.ts';
|
|
356
|
+
export { rootly } from './rootly/index.ts';
|
|
357
|
+
export { rudderstack } from './rudderstack/index.ts';
|
|
358
|
+
export { salesloft } from './salesloft/index.ts';
|
|
359
|
+
export { shortcut } from './shortcut/index.ts';
|
|
360
|
+
export { storyblok } from './storyblok/index.ts';
|
|
361
|
+
export { tavily } from './tavily/index.ts';
|
|
362
|
+
export { vimeo } from './vimeo/index.ts';
|
|
363
|
+
export { whimsical } from './whimsical/index.ts';
|
|
364
|
+
export { workable } from './workable/index.ts';
|
|
111
365
|
export { SCOPE_MEANINGS, type ScopeMeaning } from './scopes.ts';
|
|
366
|
+
export { UNTESTED_PROVIDERS } from './untested.ts';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Insightly registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const insightly = defineProvider({
|
|
5
|
+
id: 'insightly',
|
|
6
|
+
name: 'Insightly',
|
|
7
|
+
description: 'Contacts, organisations, opportunities, and projects, via Insightly\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.insightly.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Jam registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const jam = defineProvider({
|
|
5
|
+
id: 'jam',
|
|
6
|
+
name: 'Jam',
|
|
7
|
+
description: 'Bug reports, with their console logs, network calls, and repro steps, via Jam\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.jam.dev/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Klaviyo registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const klaviyo = defineProvider({
|
|
5
|
+
id: 'klaviyo',
|
|
6
|
+
name: 'Klaviyo',
|
|
7
|
+
description: 'Profiles, lists, segments, campaigns, and flows, via Klaviyo\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.klaviyo.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
import { HOSTNAME } from '../nextcloud/shared/setup.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Any mailbox, over IMAP and SMTP.
|
|
6
|
+
*
|
|
7
|
+
* The generic one, and the reason connection variables were worth building. Every
|
|
8
|
+
* other mail provider here is the same twenty lines with a different pair of
|
|
9
|
+
* hostnames — `icloud_mail`, `gmail_imap`, `fastmail_mail`, `zoho_mail`,
|
|
10
|
+
* `yahoo_mail` — and each exists because a manifest could hold exactly one
|
|
11
|
+
* address. A named provider is still better where there is one: it can carry the
|
|
12
|
+
* vendor's own setup walkthrough, its message-size limit, and the sentence about
|
|
13
|
+
* app passwords that a generic one cannot. This is for everything else — a
|
|
14
|
+
* company Dovecot, a Migadu, a Mailcow, a host nobody has written a manifest for.
|
|
15
|
+
*
|
|
16
|
+
* Two variables rather than one, because the two hosts genuinely differ:
|
|
17
|
+
* submission is conventionally `smtp.` where retrieval is `imap.`, and plenty of
|
|
18
|
+
* servers do neither.
|
|
19
|
+
*/
|
|
20
|
+
export const mailbox = defineProvider({
|
|
21
|
+
id: 'mailbox',
|
|
22
|
+
name: 'Mailbox (any IMAP server)',
|
|
23
|
+
description:
|
|
24
|
+
'Read, search, and send mail in any IMAP mailbox — a company server, or a host with no provider of its own.',
|
|
25
|
+
connector: {
|
|
26
|
+
kind: 'imap',
|
|
27
|
+
host: '{imap_host}',
|
|
28
|
+
port: 993,
|
|
29
|
+
smtp: { host: '{smtp_host}', port: 587, starttls: true },
|
|
30
|
+
},
|
|
31
|
+
auth: { kind: 'basic' },
|
|
32
|
+
identity: { kind: 'connector' },
|
|
33
|
+
variables: [
|
|
34
|
+
{
|
|
35
|
+
key: 'imap_host',
|
|
36
|
+
label: 'IMAP server',
|
|
37
|
+
description: 'Where mail is read from. Usually imap.<your domain>, on port 993.',
|
|
38
|
+
example: 'imap.example.com',
|
|
39
|
+
pattern: HOSTNAME,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: 'smtp_host',
|
|
43
|
+
label: 'SMTP server',
|
|
44
|
+
description: 'Where mail is sent from. Often the same host, often smtp.<your domain>.',
|
|
45
|
+
example: 'smtp.example.com',
|
|
46
|
+
pattern: HOSTNAME,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
setup: {
|
|
50
|
+
summary:
|
|
51
|
+
'A mailbox on a server this program has no manifest for. It asks for the two hostnames and the ' +
|
|
52
|
+
'login; TLS is required on both, and the ports are the standard 993 and 587. Where your provider ' +
|
|
53
|
+
'has a named entry here — iCloud, Fastmail, Gmail, Zoho, Yahoo — use that instead: it carries the ' +
|
|
54
|
+
'setup steps and the limits this one cannot know.',
|
|
55
|
+
steps: [
|
|
56
|
+
'Find your provider\'s IMAP and SMTP hostnames. They are usually in a page called "IMAP settings" or "Mail client setup".',
|
|
57
|
+
'If the account has two-factor authentication, create an app password for it. Most servers refuse the account password over IMAP once 2FA is on.',
|
|
58
|
+
'This provider assumes IMAP on 993 and SMTP submission on 587 with STARTTLS, which is what almost every host uses. A server on 465, or on a non-standard port, needs a manifest of its own in providers.d/ — see docs/detailed/creating-a-provider.md.',
|
|
59
|
+
],
|
|
60
|
+
troubleshooting:
|
|
61
|
+
'A connection refused is usually the wrong hostname or a server that wants port 465 rather than 587. ' +
|
|
62
|
+
'A rejected login on the right host is usually an account password where an app password belongs.',
|
|
63
|
+
prompts: [
|
|
64
|
+
{
|
|
65
|
+
key: 'username',
|
|
66
|
+
label: 'Username (usually the full email address)',
|
|
67
|
+
secret: false,
|
|
68
|
+
scope: 'connection' as const,
|
|
69
|
+
field: 'username' as const,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
key: 'password',
|
|
73
|
+
label: 'Password or app password',
|
|
74
|
+
secret: true,
|
|
75
|
+
scope: 'connection' as const,
|
|
76
|
+
field: 'password' as const,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
redact: {
|
|
81
|
+
search_messages: ['mailbox', 'limit', 'unseen', 'flagged'],
|
|
82
|
+
get_message: ['mailbox', 'uid', 'include_body'],
|
|
83
|
+
mark_messages: ['mailbox', 'add_flags', 'remove_flags'],
|
|
84
|
+
move_messages: ['mailbox', 'destination', 'destination_flag'],
|
|
85
|
+
send_message: [],
|
|
86
|
+
},
|
|
87
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { splitOptionalFrontmatter, stringList, withFrontmatter } from '#providers/shared/frontmatter.ts';
|
|
3
|
+
import { slugify as slugifyText } from '#providers/shared/slug.ts';
|
|
3
4
|
import {
|
|
4
5
|
defineLocalProvider,
|
|
5
6
|
keepKeys,
|
|
@@ -11,7 +12,7 @@ import {
|
|
|
11
12
|
* `memory` — the owner's accumulated knowledge.
|
|
12
13
|
*
|
|
13
14
|
* **Reading and writing are separate capabilities**, and that separation is the
|
|
14
|
-
* whole security argument for this provider (ADR-012 §2, `docs/
|
|
15
|
+
* whole security argument for this provider (ADR-012 §2, `https://lanes.sh/docs/link/security`).
|
|
15
16
|
* Upstream content is already treated as potentially prompt-injecting and passed
|
|
16
17
|
* through unscreened; memory an agent can *write to* changes the shape of that
|
|
17
18
|
* risk rather than its size, because an injected instruction is stored once and
|
|
@@ -167,13 +168,7 @@ async function allEntries(storage: BlobStore): Promise<Entry[]> {
|
|
|
167
168
|
|
|
168
169
|
/** A stable id from a title, so writing does not demand one be invented. */
|
|
169
170
|
function slugify(title: string): string {
|
|
170
|
-
|
|
171
|
-
.toLowerCase()
|
|
172
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
173
|
-
.replace(/^-+|-+$/g, '')
|
|
174
|
-
.slice(0, 60);
|
|
175
|
-
|
|
176
|
-
return slug.length > 0 ? slug : `entry-${title.length}`;
|
|
171
|
+
return slugifyText(title, 'entry');
|
|
177
172
|
}
|
|
178
173
|
|
|
179
174
|
export const memoryProvider: ProviderDefinition = defineLocalProvider({
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
|
|
3
|
+
/** Mercury registers us at connect time — nothing for an operator to set up. */
|
|
4
|
+
export const mercury = defineProvider({
|
|
5
|
+
id: 'mercury',
|
|
6
|
+
name: 'Mercury',
|
|
7
|
+
description: 'Accounts, balances, transactions, and cards, via Mercury\'s official MCP server.',
|
|
8
|
+
connector: { kind: 'mcp', endpoint: 'https://mcp.mercury.com/mcp' },
|
|
9
|
+
auth: { kind: 'oauth', registration: 'dynamic' },
|
|
10
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
import {
|
|
3
|
+
CALENDAR_SCOPES,
|
|
4
|
+
CONTACTS_SCOPES,
|
|
5
|
+
FILES_SCOPES,
|
|
6
|
+
GRAPH_BASE_URL,
|
|
7
|
+
MAIL_SCOPES,
|
|
8
|
+
MICROSOFT_APP,
|
|
9
|
+
MICROSOFT_AUTHORIZE_URL,
|
|
10
|
+
MICROSOFT_IDENTITY,
|
|
11
|
+
MICROSOFT_TOKEN_URL,
|
|
12
|
+
TODO_SCOPES,
|
|
13
|
+
specPath,
|
|
14
|
+
} from '../shared/oauth.ts';
|
|
15
|
+
import { microsoftSetup } from '../shared/setup.ts';
|
|
16
|
+
|
|
17
|
+
export const outlookCalendar = defineProvider({
|
|
18
|
+
id: 'outlook_calendar',
|
|
19
|
+
name: 'Outlook Calendar',
|
|
20
|
+
description:
|
|
21
|
+
'Read and write events in Outlook calendars — list, search, create, reschedule, and cancel — via Microsoft Graph.',
|
|
22
|
+
connector: { kind: 'http', base_url: GRAPH_BASE_URL, openapi: specPath('outlook-calendar.v1.json') },
|
|
23
|
+
auth: {
|
|
24
|
+
kind: 'oauth',
|
|
25
|
+
registration: 'manual',
|
|
26
|
+
app: MICROSOFT_APP,
|
|
27
|
+
// Declared rather than discovered. An `http` connector has no metadata
|
|
28
|
+
// document to read — a REST API does not announce where its authorization
|
|
29
|
+
// server lives — so the two endpoints are part of the manifest.
|
|
30
|
+
authorize_url: MICROSOFT_AUTHORIZE_URL,
|
|
31
|
+
token_url: MICROSOFT_TOKEN_URL,
|
|
32
|
+
scopes: CALENDAR_SCOPES,
|
|
33
|
+
revoke_url: 'https://account.live.com/consent/Manage',
|
|
34
|
+
},
|
|
35
|
+
identity: MICROSOFT_IDENTITY,
|
|
36
|
+
setup: microsoftSetup('Outlook Calendar', CALENDAR_SCOPES),
|
|
37
|
+
redact: {
|
|
38
|
+
'me.ListCalendars': ['top', 'orderby', 'select'],
|
|
39
|
+
'me.ListEvents': ['top', 'orderby', 'select'],
|
|
40
|
+
// The window is not content; what is in it is.
|
|
41
|
+
'me.ListCalendarView': ['startDateTime', 'endDateTime', 'top', 'orderby', 'select'],
|
|
42
|
+
'me.GetEvents': ['event-id', 'select'],
|
|
43
|
+
// The id says *which* event changed, which is what makes the log worth
|
|
44
|
+
// having; the subject, the location, and the attendees are the content of it.
|
|
45
|
+
'me.CreateEvents': ['isAllDay', 'showAs'],
|
|
46
|
+
'me.UpdateEvents': ['event-id', 'isAllDay', 'showAs'],
|
|
47
|
+
'me.DeleteEvents': ['event-id'],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
import {
|
|
3
|
+
CALENDAR_SCOPES,
|
|
4
|
+
CONTACTS_SCOPES,
|
|
5
|
+
FILES_SCOPES,
|
|
6
|
+
GRAPH_BASE_URL,
|
|
7
|
+
MAIL_SCOPES,
|
|
8
|
+
MICROSOFT_APP,
|
|
9
|
+
MICROSOFT_AUTHORIZE_URL,
|
|
10
|
+
MICROSOFT_IDENTITY,
|
|
11
|
+
MICROSOFT_TOKEN_URL,
|
|
12
|
+
TODO_SCOPES,
|
|
13
|
+
specPath,
|
|
14
|
+
} from '../shared/oauth.ts';
|
|
15
|
+
import { microsoftSetup } from '../shared/setup.ts';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Read-only, deliberately, and the same call as Google's contacts provider.
|
|
19
|
+
*
|
|
20
|
+
* Graph would allow writes and the vendored spec could carry them. What an
|
|
21
|
+
* address book is for here is making "email Bob" resolve, and `Contacts.Read`
|
|
22
|
+
* is a materially smaller grant than `Contacts.ReadWrite` for a surface nobody
|
|
23
|
+
* has asked to write.
|
|
24
|
+
*/
|
|
25
|
+
export const outlookContacts = defineProvider({
|
|
26
|
+
id: 'outlook_contacts',
|
|
27
|
+
name: 'Outlook Contacts',
|
|
28
|
+
description: 'Look up an address in Outlook contacts, so "email Bob" resolves. Read-only.',
|
|
29
|
+
connector: { kind: 'http', base_url: GRAPH_BASE_URL, openapi: specPath('outlook-contacts.v1.json') },
|
|
30
|
+
auth: {
|
|
31
|
+
kind: 'oauth',
|
|
32
|
+
registration: 'manual',
|
|
33
|
+
app: MICROSOFT_APP,
|
|
34
|
+
// Declared rather than discovered. An `http` connector has no metadata
|
|
35
|
+
// document to read — a REST API does not announce where its authorization
|
|
36
|
+
// server lives — so the two endpoints are part of the manifest.
|
|
37
|
+
authorize_url: MICROSOFT_AUTHORIZE_URL,
|
|
38
|
+
token_url: MICROSOFT_TOKEN_URL,
|
|
39
|
+
scopes: CONTACTS_SCOPES,
|
|
40
|
+
revoke_url: 'https://account.live.com/consent/Manage',
|
|
41
|
+
},
|
|
42
|
+
identity: MICROSOFT_IDENTITY,
|
|
43
|
+
setup: microsoftSetup('Outlook Contacts', CONTACTS_SCOPES),
|
|
44
|
+
redact: {
|
|
45
|
+
// Not `search`: a name is content.
|
|
46
|
+
'me.ListContacts': ['top', 'orderby', 'select'],
|
|
47
|
+
'me.GetContacts': ['contact-id', 'select'],
|
|
48
|
+
'me.ListContactFolders': ['top', 'orderby', 'select'],
|
|
49
|
+
},
|
|
50
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { defineProvider } from '#connectivity';
|
|
2
|
+
import {
|
|
3
|
+
CALENDAR_SCOPES,
|
|
4
|
+
CONTACTS_SCOPES,
|
|
5
|
+
FILES_SCOPES,
|
|
6
|
+
GRAPH_BASE_URL,
|
|
7
|
+
MAIL_SCOPES,
|
|
8
|
+
MICROSOFT_APP,
|
|
9
|
+
MICROSOFT_AUTHORIZE_URL,
|
|
10
|
+
MICROSOFT_IDENTITY,
|
|
11
|
+
MICROSOFT_TOKEN_URL,
|
|
12
|
+
TODO_SCOPES,
|
|
13
|
+
specPath,
|
|
14
|
+
} from '../shared/oauth.ts';
|
|
15
|
+
import { microsoftSetup } from '../shared/setup.ts';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* OneDrive, through Graph — a drive reached over HTTPS rather than a folder on
|
|
19
|
+
* this machine.
|
|
20
|
+
*
|
|
21
|
+
* The counterpart to `icloud_drive` and the opposite shape: Apple publishes no
|
|
22
|
+
* protocol, so iCloud Drive is the synced folder on a Mac and nothing else;
|
|
23
|
+
* Microsoft publishes an API, so this works from a deployed endpoint that has no
|
|
24
|
+
* filesystem of the operator's at all.
|
|
25
|
+
*
|
|
26
|
+
* Every item operation names a drive, which `me.GetDrive` reports. That is one
|
|
27
|
+
* extra call before the first read and it is Graph's shape rather than a choice
|
|
28
|
+
* here — the `/me/drive/...` shorthand exists but is not in the published
|
|
29
|
+
* OpenAPI as addressable operations.
|
|
30
|
+
*/
|
|
31
|
+
export const onedrive = defineProvider({
|
|
32
|
+
id: 'onedrive',
|
|
33
|
+
name: 'OneDrive',
|
|
34
|
+
description: 'Browse, search, read, and organise files in OneDrive, via Microsoft Graph.',
|
|
35
|
+
connector: { kind: 'http', base_url: GRAPH_BASE_URL, openapi: specPath('onedrive.v1.json') },
|
|
36
|
+
auth: {
|
|
37
|
+
kind: 'oauth',
|
|
38
|
+
registration: 'manual',
|
|
39
|
+
app: MICROSOFT_APP,
|
|
40
|
+
// Declared rather than discovered. An `http` connector has no metadata
|
|
41
|
+
// document to read — a REST API does not announce where its authorization
|
|
42
|
+
// server lives — so the two endpoints are part of the manifest.
|
|
43
|
+
authorize_url: MICROSOFT_AUTHORIZE_URL,
|
|
44
|
+
token_url: MICROSOFT_TOKEN_URL,
|
|
45
|
+
scopes: FILES_SCOPES,
|
|
46
|
+
revoke_url: 'https://account.live.com/consent/Manage',
|
|
47
|
+
},
|
|
48
|
+
identity: MICROSOFT_IDENTITY,
|
|
49
|
+
setup: microsoftSetup('OneDrive', FILES_SCOPES),
|
|
50
|
+
redact: {
|
|
51
|
+
'me.GetDrive': ['select'],
|
|
52
|
+
'drives.GetRoot': ['drive-id', 'select'],
|
|
53
|
+
'drives.GetItems': ['drive-id', 'driveItem-id', 'select'],
|
|
54
|
+
'drives.items.ListChildren': ['drive-id', 'driveItem-id', 'top', 'orderby', 'select'],
|
|
55
|
+
'drives.GetItemsContent': ['drive-id', 'driveItem-id'],
|
|
56
|
+
// Where a file was created, never what it is called — a filename is content,
|
|
57
|
+
// and "Divorce settlement draft.docx" is the whole document.
|
|
58
|
+
'drives.items.CreateChildren': ['drive-id', 'driveItem-id'],
|
|
59
|
+
// Not `q` or `search`: what someone searched their own drive for is content.
|
|
60
|
+
'drives.drive.items.driveItem.search': ['drive-id', 'driveItem-id', 'top', 'orderby', 'select'],
|
|
61
|
+
},
|
|
62
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft's five providers, sharing one Entra app registration.
|
|
3
|
+
*
|
|
4
|
+
* One API behind all of them, so unlike Google there is one client and one
|
|
5
|
+
* consent screen shape — but the tokens still land per provider, so connecting
|
|
6
|
+
* Outlook mail does not grant OneDrive.
|
|
7
|
+
*/
|
|
8
|
+
export { microsoftTodo } from './todo/index.ts';
|
|
9
|
+
export { onedrive } from './drive/index.ts';
|
|
10
|
+
export { outlookCalendar } from './calendar/index.ts';
|
|
11
|
+
export { outlookContacts } from './contacts/index.ts';
|
|
12
|
+
export { outlookMail } from './mail/index.ts';
|