@tangle-network/agent-integrations 0.33.0 → 0.33.2
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 +2 -7
- package/dist/catalog.d.ts +2 -2
- package/dist/catalog.js +9 -7
- package/dist/{chunk-7T5YTVER.js → chunk-53NQJZAT.js} +8 -318
- package/dist/chunk-53NQJZAT.js.map +1 -0
- package/dist/chunk-7P2LN4VT.js +318 -0
- package/dist/chunk-7P2LN4VT.js.map +1 -0
- package/dist/{chunk-XO2RSS6Y.js → chunk-C4CGT5JE.js} +52 -669
- package/dist/chunk-C4CGT5JE.js.map +1 -0
- package/dist/{chunk-YPZORI3G.js → chunk-CR35IEKW.js} +2 -2
- package/dist/{chunk-43VQSANC.js → chunk-D57YS6XC.js} +2 -2
- package/dist/{chunk-6N23S4JY.js → chunk-DT3H3NIW.js} +532 -5
- package/dist/chunk-DT3H3NIW.js.map +1 -0
- package/dist/{chunk-RF3RH374.js → chunk-O553GSCX.js} +2 -2
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/{chunk-NQ7OPDUM.js → chunk-ZDK7Y4QG.js} +12 -1
- package/dist/chunk-ZDK7Y4QG.js.map +1 -0
- package/dist/connect/index.d.ts +2 -2
- package/dist/connect/index.js +3 -2
- package/dist/connectors/adapters/index.d.ts +2 -2
- package/dist/connectors/adapters/index.js +3 -2
- package/dist/connectors/index.d.ts +2 -2
- package/dist/connectors/index.js +3 -2
- package/dist/{consumer-CzJgntej.d.ts → consumer-yV4NtH2h.d.ts} +1 -1
- package/dist/consumer.d.ts +3 -3
- package/dist/consumer.js +3 -2
- package/dist/{core-types-D5Dc65Ud.d.ts → core-types-CjWifQOf.d.ts} +2 -2
- package/dist/coverage-catalog.d.ts +26 -0
- package/dist/coverage-catalog.js +12 -0
- package/dist/coverage-catalog.js.map +1 -0
- package/dist/index.d.ts +74 -58
- package/dist/index.js +16 -47
- package/dist/middleware/index.d.ts +2 -2
- package/dist/middleware/index.js +3 -2
- package/dist/registry.d.ts +2 -2
- package/dist/registry.js +9 -7
- package/dist/runtime.d.ts +2 -2
- package/dist/runtime.js +9 -7
- package/dist/specs.d.ts +2 -2
- package/dist/specs.js +3 -1
- package/dist/stripe/index.js +1 -0
- package/dist/stripe/index.js.map +1 -1
- package/dist/{tangle-id-DA_qj-O_.d.ts → tangle-id-hDDWP-2f.d.ts} +1 -1
- package/dist/{types-XdpvaIzW.d.ts → types-Bxg-wJkW.d.ts} +12 -3
- package/dist/webhooks/index.js +1 -0
- package/dist/webhooks/index.js.map +1 -1
- package/docs/adapter-triage.md +9 -42
- package/docs/external-product-integration.md +3 -4
- package/docs/integration-execution-audit.md +134 -70
- package/docs/integration-execution-matrix.json +3062 -1823
- package/package.json +14 -25
- package/dist/bin/tangle-catalog-runtime.d.ts +0 -1
- package/dist/bin/tangle-catalog-runtime.js +0 -82
- package/dist/bin/tangle-catalog-runtime.js.map +0 -1
- package/dist/chunk-6N23S4JY.js.map +0 -1
- package/dist/chunk-7T5YTVER.js.map +0 -1
- package/dist/chunk-NQ7OPDUM.js.map +0 -1
- package/dist/chunk-XO2RSS6Y.js.map +0 -1
- package/dist/tangle-catalog-runtime-2HddXxoM.d.ts +0 -242
- package/dist/tangle-catalog-runtime.d.ts +0 -3
- package/dist/tangle-catalog-runtime.js +0 -32
- /package/dist/{chunk-YPZORI3G.js.map → chunk-CR35IEKW.js.map} +0 -0
- /package/dist/{chunk-43VQSANC.js.map → chunk-D57YS6XC.js.map} +0 -0
- /package/dist/{chunk-RF3RH374.js.map → chunk-O553GSCX.js.map} +0 -0
- /package/dist/{tangle-catalog-runtime.js.map → chunk-PZ5AY32C.js.map} +0 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
// src/coverage-catalog.ts
|
|
2
|
+
var DEFAULT_PROVIDER_KINDS = ["first_party", "nango", "pipedream", "tangle_catalog", "custom"];
|
|
3
|
+
var COVERAGE_SPECS = [
|
|
4
|
+
["gmail", "Gmail", "email", "email", "tier_0", "email,google,workspace,inbox"],
|
|
5
|
+
["outlook-mail", "Outlook Mail", "email", "email", "tier_0", "email,microsoft,office,inbox"],
|
|
6
|
+
["google-calendar", "Google Calendar", "calendar", "calendar", "tier_0", "calendar,google,workspace,scheduling"],
|
|
7
|
+
["outlook-calendar", "Outlook Calendar", "calendar", "calendar", "tier_0", "calendar,microsoft,office,scheduling"],
|
|
8
|
+
["slack", "Slack", "chat", "chat", "tier_0", "chat,collaboration,internal-comms"],
|
|
9
|
+
["microsoft-teams", "Microsoft Teams", "chat", "chat", "tier_0", "chat,microsoft,collaboration"],
|
|
10
|
+
["google-drive", "Google Drive", "storage", "storage", "tier_0", "files,google,workspace,storage"],
|
|
11
|
+
["onedrive", "OneDrive", "storage", "storage", "tier_0", "files,microsoft,office,storage"],
|
|
12
|
+
["dropbox", "Dropbox", "storage", "storage", "tier_1", "files,storage"],
|
|
13
|
+
["box", "Box", "storage", "storage", "tier_1", "files,enterprise,storage"],
|
|
14
|
+
["google-docs", "Google Docs", "docs", "docs", "tier_0", "docs,google,workspace"],
|
|
15
|
+
["google-sheets", "Google Sheets", "database", "database", "tier_0", "sheets,spreadsheet,google,database"],
|
|
16
|
+
["microsoft-excel", "Microsoft Excel", "database", "database", "tier_0", "sheets,spreadsheet,microsoft,database"],
|
|
17
|
+
["notion", "Notion", "docs", "docs", "tier_0", "docs,wiki,knowledge"],
|
|
18
|
+
["airtable", "Airtable", "database", "database", "tier_0", "database,spreadsheet,ops"],
|
|
19
|
+
["coda", "Coda", "docs", "docs", "tier_1", "docs,wiki,ops"],
|
|
20
|
+
["confluence", "Confluence", "docs", "docs", "tier_1", "docs,wiki,atlassian"],
|
|
21
|
+
["sharepoint", "SharePoint", "storage", "storage", "tier_1", "files,microsoft,enterprise"],
|
|
22
|
+
["hubspot", "HubSpot", "crm", "crm", "tier_0", "crm,sales,marketing"],
|
|
23
|
+
["salesforce", "Salesforce", "crm", "crm", "tier_0", "crm,sales,enterprise"],
|
|
24
|
+
["pipedrive", "Pipedrive", "crm", "crm", "tier_1", "crm,sales"],
|
|
25
|
+
["zoho-crm", "Zoho CRM", "crm", "crm", "tier_1", "crm,sales"],
|
|
26
|
+
["close", "Close", "crm", "crm", "tier_1", "crm,sales"],
|
|
27
|
+
["attio", "Attio", "crm", "crm", "tier_1", "crm,sales,startups"],
|
|
28
|
+
["linear", "Linear", "workflow", "project", "tier_0", "project,engineering,tickets"],
|
|
29
|
+
["jira", "Jira", "workflow", "project", "tier_0", "project,engineering,tickets,atlassian"],
|
|
30
|
+
["github", "GitHub", "workflow", "dev", "tier_0", "code,dev,issues,git"],
|
|
31
|
+
["gitlab", "GitLab", "workflow", "dev", "tier_1", "code,dev,issues,git"],
|
|
32
|
+
["bitbucket", "Bitbucket", "workflow", "dev", "tier_2", "code,dev,git,atlassian"],
|
|
33
|
+
["asana", "Asana", "workflow", "project", "tier_1", "project,tasks"],
|
|
34
|
+
["trello", "Trello", "workflow", "project", "tier_1", "project,tasks,atlassian"],
|
|
35
|
+
["monday", "monday.com", "workflow", "project", "tier_1", "project,tasks,ops"],
|
|
36
|
+
["clickup", "ClickUp", "workflow", "project", "tier_1", "project,tasks,ops"],
|
|
37
|
+
["basecamp", "Basecamp", "workflow", "project", "tier_2", "project,tasks"],
|
|
38
|
+
["zendesk", "Zendesk", "crm", "support", "tier_0", "support,tickets,customer-success"],
|
|
39
|
+
["intercom", "Intercom", "crm", "support", "tier_0", "support,chat,customer-success"],
|
|
40
|
+
["freshdesk", "Freshdesk", "crm", "support", "tier_1", "support,tickets"],
|
|
41
|
+
["helpscout", "Help Scout", "crm", "support", "tier_1", "support,tickets"],
|
|
42
|
+
["front", "Front", "email", "support", "tier_1", "support,email,shared-inbox"],
|
|
43
|
+
["gorgias", "Gorgias", "crm", "support", "tier_1", "support,ecommerce"],
|
|
44
|
+
["stripe", "Stripe", "workflow", "finance", "tier_0", "payments,billing,finance"],
|
|
45
|
+
["quickbooks", "QuickBooks", "workflow", "finance", "tier_0", "accounting,finance"],
|
|
46
|
+
["xero", "Xero", "workflow", "finance", "tier_1", "accounting,finance"],
|
|
47
|
+
["netsuite", "NetSuite", "workflow", "finance", "tier_1", "erp,finance,enterprise"],
|
|
48
|
+
["sage", "Sage", "workflow", "finance", "tier_2", "accounting,finance"],
|
|
49
|
+
["plaid", "Plaid", "workflow", "finance", "tier_1", "banking,finance"],
|
|
50
|
+
["shopify", "Shopify", "workflow", "commerce", "tier_0", "ecommerce,orders,commerce"],
|
|
51
|
+
["woocommerce", "WooCommerce", "workflow", "commerce", "tier_1", "ecommerce,orders,wordpress"],
|
|
52
|
+
["bigcommerce", "BigCommerce", "workflow", "commerce", "tier_1", "ecommerce,orders"],
|
|
53
|
+
["amazon-seller-central", "Amazon Seller Central", "workflow", "commerce", "tier_1", "marketplace,ecommerce"],
|
|
54
|
+
["ebay", "eBay", "workflow", "commerce", "tier_2", "marketplace,ecommerce"],
|
|
55
|
+
["etsy", "Etsy", "workflow", "commerce", "tier_2", "marketplace,ecommerce"],
|
|
56
|
+
["mailchimp", "Mailchimp", "workflow", "marketing", "tier_0", "email-marketing,marketing"],
|
|
57
|
+
["klaviyo", "Klaviyo", "workflow", "marketing", "tier_0", "email-marketing,ecommerce,marketing"],
|
|
58
|
+
["marketo", "Marketo", "workflow", "marketing", "tier_1", "marketing,enterprise"],
|
|
59
|
+
["braze", "Braze", "workflow", "marketing", "tier_1", "marketing,lifecycle"],
|
|
60
|
+
["customer-io", "Customer.io", "workflow", "marketing", "tier_1", "marketing,lifecycle"],
|
|
61
|
+
["sendgrid", "SendGrid", "email", "email", "tier_1", "email,transactional"],
|
|
62
|
+
["postmark", "Postmark", "email", "email", "tier_1", "email,transactional"],
|
|
63
|
+
["twilio", "Twilio", "chat", "chat", "tier_0", "sms,voice,communications"],
|
|
64
|
+
["phony", "ph0ny", "chat", "chat", "tier_1", "voice,telephony,communications", "api_key"],
|
|
65
|
+
["discord", "Discord", "chat", "chat", "tier_1", "chat,community"],
|
|
66
|
+
["telegram", "Telegram", "chat", "chat", "tier_1", "chat,community"],
|
|
67
|
+
["whatsapp-business", "WhatsApp Business", "chat", "chat", "tier_1", "chat,meta,customer-comms"],
|
|
68
|
+
["facebook-pages", "Facebook Pages", "workflow", "marketing", "tier_1", "social,meta,marketing"],
|
|
69
|
+
["instagram-business", "Instagram Business", "workflow", "marketing", "tier_1", "social,meta,marketing"],
|
|
70
|
+
["linkedin", "LinkedIn", "workflow", "sales", "tier_1", "social,sales,gtm"],
|
|
71
|
+
["x-twitter", "X / Twitter", "workflow", "marketing", "tier_1", "social,marketing"],
|
|
72
|
+
["youtube", "YouTube", "storage", "storage", "tier_1", "video,content"],
|
|
73
|
+
["tiktok", "TikTok", "workflow", "marketing", "tier_2", "social,video,marketing"],
|
|
74
|
+
["google-analytics", "Google Analytics", "database", "analytics", "tier_0", "analytics,web,marketing"],
|
|
75
|
+
["mixpanel", "Mixpanel", "database", "analytics", "tier_1", "analytics,product"],
|
|
76
|
+
["amplitude", "Amplitude", "database", "analytics", "tier_1", "analytics,product"],
|
|
77
|
+
["segment", "Segment", "database", "analytics", "tier_1", "analytics,cdp"],
|
|
78
|
+
["snowflake", "Snowflake", "database", "database", "tier_0", "warehouse,data"],
|
|
79
|
+
["bigquery", "BigQuery", "database", "database", "tier_0", "warehouse,google,data"],
|
|
80
|
+
["redshift", "Redshift", "database", "database", "tier_1", "warehouse,aws,data"],
|
|
81
|
+
["postgres", "Postgres", "database", "database", "tier_0", "database,sql"],
|
|
82
|
+
["mysql", "MySQL", "database", "database", "tier_1", "database,sql"],
|
|
83
|
+
["mongodb", "MongoDB", "database", "database", "tier_1", "database,nosql"],
|
|
84
|
+
["supabase", "Supabase", "database", "database", "tier_1", "database,postgres"],
|
|
85
|
+
["firebase", "Firebase", "database", "database", "tier_1", "database,google,app"],
|
|
86
|
+
["redis", "Redis", "database", "database", "tier_2", "database,cache"],
|
|
87
|
+
["aws-s3", "Amazon S3", "storage", "storage", "tier_0", "files,aws,storage"],
|
|
88
|
+
["aws-lambda", "AWS Lambda", "workflow", "dev", "tier_1", "aws,serverless,dev"],
|
|
89
|
+
["aws-cloudwatch", "AWS CloudWatch", "database", "analytics", "tier_1", "aws,logs,observability"],
|
|
90
|
+
["google-cloud-storage", "Google Cloud Storage", "storage", "storage", "tier_1", "files,gcp,storage"],
|
|
91
|
+
["azure-blob-storage", "Azure Blob Storage", "storage", "storage", "tier_1", "files,azure,storage"],
|
|
92
|
+
["vercel", "Vercel", "workflow", "dev", "tier_1", "deployments,dev"],
|
|
93
|
+
["netlify", "Netlify", "workflow", "dev", "tier_2", "deployments,dev"],
|
|
94
|
+
["cloudflare", "Cloudflare", "workflow", "dev", "tier_1", "edge,dev,dns"],
|
|
95
|
+
["sentry", "Sentry", "workflow", "dev", "tier_1", "errors,observability,dev"],
|
|
96
|
+
["datadog", "Datadog", "database", "analytics", "tier_1", "observability,logs,metrics"],
|
|
97
|
+
["new-relic", "New Relic", "database", "analytics", "tier_2", "observability,logs,metrics"],
|
|
98
|
+
["pagerduty", "PagerDuty", "workflow", "project", "tier_1", "incident,on-call"],
|
|
99
|
+
["opsgenie", "Opsgenie", "workflow", "project", "tier_2", "incident,on-call,atlassian"],
|
|
100
|
+
["okta", "Okta", "internal", "workflow", "tier_1", "identity,security"],
|
|
101
|
+
["auth0", "Auth0", "internal", "workflow", "tier_1", "identity,security"],
|
|
102
|
+
["workday", "Workday", "workflow", "hr", "tier_1", "hr,finance,enterprise"],
|
|
103
|
+
["bamboohr", "BambooHR", "workflow", "hr", "tier_1", "hr,people"],
|
|
104
|
+
["greenhouse", "Greenhouse", "workflow", "hr", "tier_1", "recruiting,hr"],
|
|
105
|
+
["lever", "Lever", "workflow", "hr", "tier_1", "recruiting,hr"],
|
|
106
|
+
["gusto", "Gusto", "workflow", "hr", "tier_1", "payroll,hr"],
|
|
107
|
+
["rippling", "Rippling", "workflow", "hr", "tier_1", "hr,it,identity"],
|
|
108
|
+
["docusign", "DocuSign", "docs", "docs", "tier_1", "contracts,signature,legal"],
|
|
109
|
+
["pandadoc", "PandaDoc", "docs", "docs", "tier_1", "contracts,signature,sales"],
|
|
110
|
+
["hellosign", "Dropbox Sign", "docs", "docs", "tier_2", "contracts,signature"],
|
|
111
|
+
["clio", "Clio", "workflow", "project", "tier_1", "legal,practice-management"],
|
|
112
|
+
["ironclad", "Ironclad", "docs", "docs", "tier_1", "legal,contracts"],
|
|
113
|
+
["lexisnexis", "LexisNexis", "docs", "docs", "tier_2", "legal,research"],
|
|
114
|
+
["calendly", "Calendly", "calendar", "calendar", "tier_0", "scheduling,calendar"],
|
|
115
|
+
["cal-com", "Cal.com", "calendar", "calendar", "tier_1", "scheduling,calendar"],
|
|
116
|
+
["zoom", "Zoom", "calendar", "calendar", "tier_0", "meetings,video,calendar"],
|
|
117
|
+
["google-meet", "Google Meet", "calendar", "calendar", "tier_1", "meetings,google,video"],
|
|
118
|
+
["microsoft-graph", "Microsoft Graph", "internal", "workflow", "tier_0", "microsoft,enterprise,identity"],
|
|
119
|
+
["openai", "OpenAI", "workflow", "ai", "tier_0", "ai,llm"],
|
|
120
|
+
["anthropic", "Anthropic", "workflow", "ai", "tier_1", "ai,llm"],
|
|
121
|
+
["gemini", "Google Gemini", "workflow", "ai", "tier_1", "ai,llm,google"],
|
|
122
|
+
["huggingface", "Hugging Face", "workflow", "ai", "tier_1", "ai,models"],
|
|
123
|
+
["pinecone", "Pinecone", "database", "database", "tier_1", "vector,database,ai"],
|
|
124
|
+
["weaviate", "Weaviate", "database", "database", "tier_1", "vector,database,ai"],
|
|
125
|
+
["qdrant", "Qdrant", "database", "database", "tier_1", "vector,database,ai"],
|
|
126
|
+
["zapier", "Zapier", "workflow", "workflow", "tier_1", "automation,workflow"],
|
|
127
|
+
["make", "Make", "workflow", "workflow", "tier_1", "automation,workflow"],
|
|
128
|
+
["nango", "Nango", "workflow", "workflow", "tier_1", "integration-platform,oauth"],
|
|
129
|
+
["pipedream", "Pipedream", "workflow", "workflow", "tier_1", "integration-platform,workflow"],
|
|
130
|
+
["open-automation-catalog", "Open Automation Catalog", "workflow", "workflow", "tier_1", "automation,workflow,open-source"],
|
|
131
|
+
["webhook", "Generic Webhook", "webhook", "webhook", "tier_0", "webhook,http,events", "none"],
|
|
132
|
+
["http", "HTTP Request", "workflow", "webhook", "tier_0", "http,api,webhook", "none"],
|
|
133
|
+
["rss", "RSS", "webhook", "webhook", "tier_1", "feeds,content", "none"],
|
|
134
|
+
["zapier-transfer", "Zapier Transfer", "workflow", "workflow", "long_tail", "automation,migration"],
|
|
135
|
+
["typeform", "Typeform", "workflow", "marketing", "tier_1", "forms,marketing"],
|
|
136
|
+
["google-forms", "Google Forms", "workflow", "marketing", "tier_1", "forms,google"],
|
|
137
|
+
["jotform", "Jotform", "workflow", "marketing", "tier_2", "forms"],
|
|
138
|
+
["webflow", "Webflow", "workflow", "marketing", "tier_1", "cms,website"],
|
|
139
|
+
["wordpress", "WordPress", "workflow", "marketing", "tier_1", "cms,website"],
|
|
140
|
+
["contentful", "Contentful", "docs", "docs", "tier_1", "cms,content"],
|
|
141
|
+
["sanity", "Sanity", "docs", "docs", "tier_1", "cms,content"],
|
|
142
|
+
["figma", "Figma", "docs", "docs", "tier_0", "design,creative"],
|
|
143
|
+
["canva", "Canva", "docs", "docs", "tier_1", "design,creative"],
|
|
144
|
+
["adobe-creative-cloud", "Adobe Creative Cloud", "storage", "storage", "tier_1", "design,creative,files"],
|
|
145
|
+
["miro", "Miro", "docs", "docs", "tier_1", "whiteboard,collaboration"],
|
|
146
|
+
["figjam", "FigJam", "docs", "docs", "tier_2", "whiteboard,design"]
|
|
147
|
+
];
|
|
148
|
+
function listIntegrationCoverageSpecs() {
|
|
149
|
+
return COVERAGE_SPECS.map(([id, title, category, actionPack2, priority, domains, auth = "oauth2"]) => ({
|
|
150
|
+
id,
|
|
151
|
+
title,
|
|
152
|
+
category,
|
|
153
|
+
actionPack: actionPack2,
|
|
154
|
+
priority,
|
|
155
|
+
auth,
|
|
156
|
+
providerKinds: providerKindsFor(auth),
|
|
157
|
+
domains: domains.split(",").map((domain) => domain.trim()).filter(Boolean),
|
|
158
|
+
scopes: scopesFor(id, actionPack2)
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
function buildIntegrationCoverageConnectors(options = {}) {
|
|
162
|
+
const providerId = options.providerId ?? "coverage";
|
|
163
|
+
return listIntegrationCoverageSpecs().filter((spec) => !options.priorities || options.priorities.includes(spec.priority)).filter((spec) => !options.categories || options.categories.includes(spec.category)).filter((spec) => !options.actionPacks || options.actionPacks.includes(spec.actionPack)).map((spec) => specToConnector(spec, providerId));
|
|
164
|
+
}
|
|
165
|
+
function integrationCoverageChecklistMarkdown() {
|
|
166
|
+
const specs = listIntegrationCoverageSpecs();
|
|
167
|
+
const lines = [
|
|
168
|
+
"# Agent Integrations Coverage Checklist",
|
|
169
|
+
"",
|
|
170
|
+
"Generated from `listIntegrationCoverageSpecs()`. Catalog presence means the product can plan/request/connect the integration; native adapters and runtime backends execute behind the same provider contract.",
|
|
171
|
+
"",
|
|
172
|
+
"## Summary",
|
|
173
|
+
"",
|
|
174
|
+
`- Total cataloged integrations: ${specs.length}`,
|
|
175
|
+
`- Tier 0: ${specs.filter((spec) => spec.priority === "tier_0").length}`,
|
|
176
|
+
`- Tier 1: ${specs.filter((spec) => spec.priority === "tier_1").length}`,
|
|
177
|
+
`- Tier 2: ${specs.filter((spec) => spec.priority === "tier_2").length}`,
|
|
178
|
+
`- Long tail: ${specs.filter((spec) => spec.priority === "long_tail").length}`,
|
|
179
|
+
"",
|
|
180
|
+
"## Checklist",
|
|
181
|
+
""
|
|
182
|
+
];
|
|
183
|
+
for (const spec of specs) {
|
|
184
|
+
lines.push(`- [ ] ${spec.priority} / ${spec.category} / ${spec.title} (${spec.id}) - ${spec.domains.join(", ")}`);
|
|
185
|
+
}
|
|
186
|
+
return `${lines.join("\n")}
|
|
187
|
+
`;
|
|
188
|
+
}
|
|
189
|
+
function specToConnector(spec, providerId) {
|
|
190
|
+
const actions = actionPack(spec.actionPack, spec.scopes ?? []);
|
|
191
|
+
return {
|
|
192
|
+
id: spec.id,
|
|
193
|
+
providerId,
|
|
194
|
+
title: spec.title,
|
|
195
|
+
category: spec.category,
|
|
196
|
+
auth: spec.auth,
|
|
197
|
+
scopes: spec.scopes ?? [],
|
|
198
|
+
actions,
|
|
199
|
+
triggers: triggersFor(spec.actionPack, spec.scopes ?? []),
|
|
200
|
+
metadata: {
|
|
201
|
+
source: "coverage-catalog",
|
|
202
|
+
priority: spec.priority,
|
|
203
|
+
domains: spec.domains,
|
|
204
|
+
providerKinds: spec.providerKinds,
|
|
205
|
+
executable: false
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function actionPack(pack, scopes) {
|
|
210
|
+
const readScope = scopes.find((scope2) => scope2.endsWith(".read")) ?? scopes[0];
|
|
211
|
+
const writeScope = scopes.find((scope2) => scope2.endsWith(".write")) ?? scopes[1] ?? readScope;
|
|
212
|
+
const scope = (value) => value ? [value] : [];
|
|
213
|
+
const read = (id, title, description) => ({
|
|
214
|
+
id,
|
|
215
|
+
title,
|
|
216
|
+
description,
|
|
217
|
+
risk: "read",
|
|
218
|
+
requiredScopes: scope(readScope),
|
|
219
|
+
dataClass: dataClassFor(pack),
|
|
220
|
+
inputSchema: objectSchema()
|
|
221
|
+
});
|
|
222
|
+
const write = (id, title, description) => ({
|
|
223
|
+
id,
|
|
224
|
+
title,
|
|
225
|
+
description,
|
|
226
|
+
risk: "write",
|
|
227
|
+
requiredScopes: scope(writeScope),
|
|
228
|
+
dataClass: dataClassFor(pack),
|
|
229
|
+
approvalRequired: true,
|
|
230
|
+
inputSchema: objectSchema()
|
|
231
|
+
});
|
|
232
|
+
const destructive = (id, title, description) => ({
|
|
233
|
+
id,
|
|
234
|
+
title,
|
|
235
|
+
description,
|
|
236
|
+
risk: "destructive",
|
|
237
|
+
requiredScopes: scope(writeScope),
|
|
238
|
+
dataClass: dataClassFor(pack),
|
|
239
|
+
approvalRequired: true,
|
|
240
|
+
inputSchema: objectSchema()
|
|
241
|
+
});
|
|
242
|
+
switch (pack) {
|
|
243
|
+
case "email":
|
|
244
|
+
return [read("messages.search", "Search messages", "Search messages and threads."), read("messages.read", "Read message", "Read a message by id."), write("drafts.create", "Create draft", "Create an email draft."), write("messages.send", "Send message", "Send or reply to an email message.")];
|
|
245
|
+
case "calendar":
|
|
246
|
+
return [read("events.search", "Search events", "Search calendar events."), read("availability.read", "Read availability", "Read availability windows."), write("events.create", "Create event", "Create a calendar event."), write("events.update", "Update event", "Update a calendar event."), destructive("events.cancel", "Cancel event", "Cancel a calendar event.")];
|
|
247
|
+
case "chat":
|
|
248
|
+
return [read("messages.search", "Search messages", "Search channel or direct messages."), read("channels.list", "List channels", "List channels or rooms."), write("messages.post", "Send message", "Send a message to a channel or direct message."), write("threads.reply", "Reply in thread", "Reply to a thread or conversation.")];
|
|
249
|
+
case "crm":
|
|
250
|
+
return [read("records.search", "Search records", "Search contacts, companies, and deals."), read("records.read", "Read record", "Read a CRM record."), write("records.upsert", "Upsert record", "Create or update a CRM record."), write("notes.create", "Create note", "Add a note or activity.")];
|
|
251
|
+
case "storage":
|
|
252
|
+
return [read("files.search", "Search files", "Search files and folders."), read("files.read", "Read file", "Read file metadata or content."), write("files.upload", "Upload file", "Upload a file."), write("files.update", "Update file", "Update file metadata or content.")];
|
|
253
|
+
case "docs":
|
|
254
|
+
return [read("documents.search", "Search documents", "Search documents or pages."), read("documents.read", "Read document", "Read a document."), write("documents.create", "Create document", "Create a document or page."), write("documents.update", "Update document", "Update a document or page.")];
|
|
255
|
+
case "database":
|
|
256
|
+
return [read("records.query", "Query records", "Query rows, records, or objects."), read("records.read", "Read record", "Read one row, record, or object."), write("records.upsert", "Upsert record", "Create or update a row, record, or object."), destructive("records.delete", "Delete record", "Delete a row, record, or object.")];
|
|
257
|
+
case "project":
|
|
258
|
+
return [read("tasks.search", "Search tasks", "Search tasks, tickets, or issues."), read("tasks.read", "Read task", "Read a task, ticket, or issue."), write("tasks.create", "Create task", "Create a task, ticket, or issue."), write("tasks.update", "Update task", "Update a task, ticket, or issue.")];
|
|
259
|
+
case "support":
|
|
260
|
+
return [read("tickets.search", "Search tickets", "Search support tickets or conversations."), read("customers.read", "Read customer", "Read a customer profile."), write("tickets.reply", "Reply to ticket", "Reply to a support ticket."), write("tickets.update", "Update ticket", "Update ticket status, tags, or assignee.")];
|
|
261
|
+
case "marketing":
|
|
262
|
+
return [read("contacts.search", "Search contacts", "Search marketing contacts or audiences."), read("campaigns.read", "Read campaign", "Read campaign metadata and performance."), write("contacts.upsert", "Upsert contact", "Create or update a contact."), write("campaigns.create", "Create campaign", "Create a campaign draft.")];
|
|
263
|
+
case "sales":
|
|
264
|
+
return [read("prospects.search", "Search prospects", "Search prospects, leads, or accounts."), read("activities.read", "Read activities", "Read sales activity history."), write("prospects.upsert", "Upsert prospect", "Create or update a prospect."), write("sequence.enqueue", "Enroll in sequence", "Enroll a prospect in a sales sequence.")];
|
|
265
|
+
case "commerce":
|
|
266
|
+
return [read("orders.search", "Search orders", "Search orders."), read("customers.read", "Read customer", "Read customer and purchase history."), write("orders.update", "Update order", "Update order metadata or fulfillment state."), write("products.update", "Update product", "Update product metadata.")];
|
|
267
|
+
case "finance":
|
|
268
|
+
return [read("transactions.search", "Search transactions", "Search transactions, invoices, or payments."), read("accounts.read", "Read account", "Read account or customer financial record."), write("invoices.create", "Create invoice", "Create an invoice or payment object."), write("records.sync", "Sync record", "Sync a finance or accounting record.")];
|
|
269
|
+
case "hr":
|
|
270
|
+
return [read("people.search", "Search people", "Search employees, candidates, or contractors."), read("people.read", "Read person", "Read a person profile."), write("people.update", "Update person", "Update a person profile."), write("events.create", "Create HR event", "Create a recruiting or HR event.")];
|
|
271
|
+
case "dev":
|
|
272
|
+
return [read("resources.search", "Search resources", "Search issues, repos, deployments, logs, or incidents."), read("resources.read", "Read resource", "Read a developer resource."), write("resources.create", "Create resource", "Create an issue, deployment, incident, or config."), write("resources.update", "Update resource", "Update a developer resource.")];
|
|
273
|
+
case "ai":
|
|
274
|
+
return [read("models.list", "List models", "List available models or endpoints."), write("responses.create", "Create response", "Create an AI response or job."), write("embeddings.create", "Create embeddings", "Create embeddings or vector jobs."), read("usage.read", "Read usage", "Read usage metadata.")];
|
|
275
|
+
case "analytics":
|
|
276
|
+
return [read("reports.query", "Query reports", "Query analytics reports."), read("events.search", "Search events", "Search analytics events."), write("events.track", "Track event", "Track an analytics event."), write("audiences.sync", "Sync audience", "Sync an audience or cohort.")];
|
|
277
|
+
case "workflow":
|
|
278
|
+
return [read("runs.search", "Search runs", "Search workflow runs or jobs."), read("templates.list", "List templates", "List workflow templates."), write("runs.start", "Start run", "Start a workflow run."), write("webhooks.dispatch", "Dispatch webhook", "Dispatch a workflow webhook.")];
|
|
279
|
+
case "webhook":
|
|
280
|
+
return [write("requests.send", "Send request", "Send an HTTP request or webhook event."), read("events.search", "Search events", "Search received webhook events."), write("subscriptions.create", "Create subscription", "Create a webhook subscription."), destructive("subscriptions.delete", "Delete subscription", "Delete a webhook subscription.")];
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
function triggersFor(pack, scopes) {
|
|
284
|
+
const readScope = scopes.find((scope) => scope.endsWith(".read")) ?? scopes[0];
|
|
285
|
+
const requiredScopes = readScope ? [readScope] : [];
|
|
286
|
+
if (pack === "email") return [{ id: "message.received", title: "Message received", requiredScopes, dataClass: "private" }];
|
|
287
|
+
if (pack === "calendar") return [{ id: "event.changed", title: "Event changed", requiredScopes, dataClass: "private" }];
|
|
288
|
+
if (pack === "chat") return [{ id: "message.posted", title: "Message posted", requiredScopes, dataClass: "private" }];
|
|
289
|
+
if (pack === "crm") return [{ id: "record.changed", title: "Record changed", requiredScopes, dataClass: "private" }];
|
|
290
|
+
if (pack === "support") return [{ id: "ticket.changed", title: "Ticket changed", requiredScopes, dataClass: "private" }];
|
|
291
|
+
if (pack === "commerce") return [{ id: "order.changed", title: "Order changed", requiredScopes, dataClass: "sensitive" }];
|
|
292
|
+
if (pack === "finance") return [{ id: "transaction.changed", title: "Transaction changed", requiredScopes, dataClass: "sensitive" }];
|
|
293
|
+
if (pack === "workflow" || pack === "webhook") return [{ id: "event.received", title: "Event received", requiredScopes, dataClass: "internal" }];
|
|
294
|
+
return void 0;
|
|
295
|
+
}
|
|
296
|
+
function scopesFor(id, pack) {
|
|
297
|
+
if (pack === "webhook") return [];
|
|
298
|
+
return [`${id}.read`, `${id}.write`];
|
|
299
|
+
}
|
|
300
|
+
function providerKindsFor(auth) {
|
|
301
|
+
if (auth === "none") return ["first_party", "pipedream", "tangle_catalog", "custom"];
|
|
302
|
+
return DEFAULT_PROVIDER_KINDS;
|
|
303
|
+
}
|
|
304
|
+
function dataClassFor(pack) {
|
|
305
|
+
if (pack === "finance" || pack === "commerce" || pack === "hr") return "sensitive";
|
|
306
|
+
if (pack === "workflow" || pack === "webhook" || pack === "dev" || pack === "analytics") return "internal";
|
|
307
|
+
return "private";
|
|
308
|
+
}
|
|
309
|
+
function objectSchema() {
|
|
310
|
+
return { type: "object", additionalProperties: true, properties: {} };
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
export {
|
|
314
|
+
listIntegrationCoverageSpecs,
|
|
315
|
+
buildIntegrationCoverageConnectors,
|
|
316
|
+
integrationCoverageChecklistMarkdown
|
|
317
|
+
};
|
|
318
|
+
//# sourceMappingURL=chunk-7P2LN4VT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/coverage-catalog.ts"],"sourcesContent":["import type {\n IntegrationConnector,\n IntegrationConnectorAction,\n IntegrationConnectorCategory,\n IntegrationConnectorTrigger,\n IntegrationProviderKind,\n} from './index.js'\n\nexport type IntegrationCoveragePriority = 'tier_0' | 'tier_1' | 'tier_2' | 'long_tail'\n\nexport interface IntegrationCoverageSpec {\n id: string\n title: string\n category: IntegrationConnectorCategory\n auth: IntegrationConnector['auth']\n priority: IntegrationCoveragePriority\n providerKinds: IntegrationProviderKind[]\n domains: string[]\n actionPack: IntegrationActionPack\n scopes?: string[]\n}\n\nexport type IntegrationActionPack =\n | 'email'\n | 'calendar'\n | 'chat'\n | 'crm'\n | 'storage'\n | 'docs'\n | 'database'\n | 'project'\n | 'support'\n | 'marketing'\n | 'sales'\n | 'commerce'\n | 'finance'\n | 'hr'\n | 'dev'\n | 'ai'\n | 'analytics'\n | 'workflow'\n | 'webhook'\n\ntype SpecTuple = [\n id: string,\n title: string,\n category: IntegrationConnectorCategory,\n actionPack: IntegrationActionPack,\n priority: IntegrationCoveragePriority,\n domains: string,\n auth?: IntegrationConnector['auth'],\n]\n\nconst DEFAULT_PROVIDER_KINDS: IntegrationProviderKind[] = ['first_party', 'nango', 'pipedream', 'tangle_catalog', 'custom']\n\nconst COVERAGE_SPECS: SpecTuple[] = [\n ['gmail', 'Gmail', 'email', 'email', 'tier_0', 'email,google,workspace,inbox'],\n ['outlook-mail', 'Outlook Mail', 'email', 'email', 'tier_0', 'email,microsoft,office,inbox'],\n ['google-calendar', 'Google Calendar', 'calendar', 'calendar', 'tier_0', 'calendar,google,workspace,scheduling'],\n ['outlook-calendar', 'Outlook Calendar', 'calendar', 'calendar', 'tier_0', 'calendar,microsoft,office,scheduling'],\n ['slack', 'Slack', 'chat', 'chat', 'tier_0', 'chat,collaboration,internal-comms'],\n ['microsoft-teams', 'Microsoft Teams', 'chat', 'chat', 'tier_0', 'chat,microsoft,collaboration'],\n ['google-drive', 'Google Drive', 'storage', 'storage', 'tier_0', 'files,google,workspace,storage'],\n ['onedrive', 'OneDrive', 'storage', 'storage', 'tier_0', 'files,microsoft,office,storage'],\n ['dropbox', 'Dropbox', 'storage', 'storage', 'tier_1', 'files,storage'],\n ['box', 'Box', 'storage', 'storage', 'tier_1', 'files,enterprise,storage'],\n ['google-docs', 'Google Docs', 'docs', 'docs', 'tier_0', 'docs,google,workspace'],\n ['google-sheets', 'Google Sheets', 'database', 'database', 'tier_0', 'sheets,spreadsheet,google,database'],\n ['microsoft-excel', 'Microsoft Excel', 'database', 'database', 'tier_0', 'sheets,spreadsheet,microsoft,database'],\n ['notion', 'Notion', 'docs', 'docs', 'tier_0', 'docs,wiki,knowledge'],\n ['airtable', 'Airtable', 'database', 'database', 'tier_0', 'database,spreadsheet,ops'],\n ['coda', 'Coda', 'docs', 'docs', 'tier_1', 'docs,wiki,ops'],\n ['confluence', 'Confluence', 'docs', 'docs', 'tier_1', 'docs,wiki,atlassian'],\n ['sharepoint', 'SharePoint', 'storage', 'storage', 'tier_1', 'files,microsoft,enterprise'],\n ['hubspot', 'HubSpot', 'crm', 'crm', 'tier_0', 'crm,sales,marketing'],\n ['salesforce', 'Salesforce', 'crm', 'crm', 'tier_0', 'crm,sales,enterprise'],\n ['pipedrive', 'Pipedrive', 'crm', 'crm', 'tier_1', 'crm,sales'],\n ['zoho-crm', 'Zoho CRM', 'crm', 'crm', 'tier_1', 'crm,sales'],\n ['close', 'Close', 'crm', 'crm', 'tier_1', 'crm,sales'],\n ['attio', 'Attio', 'crm', 'crm', 'tier_1', 'crm,sales,startups'],\n ['linear', 'Linear', 'workflow', 'project', 'tier_0', 'project,engineering,tickets'],\n ['jira', 'Jira', 'workflow', 'project', 'tier_0', 'project,engineering,tickets,atlassian'],\n ['github', 'GitHub', 'workflow', 'dev', 'tier_0', 'code,dev,issues,git'],\n ['gitlab', 'GitLab', 'workflow', 'dev', 'tier_1', 'code,dev,issues,git'],\n ['bitbucket', 'Bitbucket', 'workflow', 'dev', 'tier_2', 'code,dev,git,atlassian'],\n ['asana', 'Asana', 'workflow', 'project', 'tier_1', 'project,tasks'],\n ['trello', 'Trello', 'workflow', 'project', 'tier_1', 'project,tasks,atlassian'],\n ['monday', 'monday.com', 'workflow', 'project', 'tier_1', 'project,tasks,ops'],\n ['clickup', 'ClickUp', 'workflow', 'project', 'tier_1', 'project,tasks,ops'],\n ['basecamp', 'Basecamp', 'workflow', 'project', 'tier_2', 'project,tasks'],\n ['zendesk', 'Zendesk', 'crm', 'support', 'tier_0', 'support,tickets,customer-success'],\n ['intercom', 'Intercom', 'crm', 'support', 'tier_0', 'support,chat,customer-success'],\n ['freshdesk', 'Freshdesk', 'crm', 'support', 'tier_1', 'support,tickets'],\n ['helpscout', 'Help Scout', 'crm', 'support', 'tier_1', 'support,tickets'],\n ['front', 'Front', 'email', 'support', 'tier_1', 'support,email,shared-inbox'],\n ['gorgias', 'Gorgias', 'crm', 'support', 'tier_1', 'support,ecommerce'],\n ['stripe', 'Stripe', 'workflow', 'finance', 'tier_0', 'payments,billing,finance'],\n ['quickbooks', 'QuickBooks', 'workflow', 'finance', 'tier_0', 'accounting,finance'],\n ['xero', 'Xero', 'workflow', 'finance', 'tier_1', 'accounting,finance'],\n ['netsuite', 'NetSuite', 'workflow', 'finance', 'tier_1', 'erp,finance,enterprise'],\n ['sage', 'Sage', 'workflow', 'finance', 'tier_2', 'accounting,finance'],\n ['plaid', 'Plaid', 'workflow', 'finance', 'tier_1', 'banking,finance'],\n ['shopify', 'Shopify', 'workflow', 'commerce', 'tier_0', 'ecommerce,orders,commerce'],\n ['woocommerce', 'WooCommerce', 'workflow', 'commerce', 'tier_1', 'ecommerce,orders,wordpress'],\n ['bigcommerce', 'BigCommerce', 'workflow', 'commerce', 'tier_1', 'ecommerce,orders'],\n ['amazon-seller-central', 'Amazon Seller Central', 'workflow', 'commerce', 'tier_1', 'marketplace,ecommerce'],\n ['ebay', 'eBay', 'workflow', 'commerce', 'tier_2', 'marketplace,ecommerce'],\n ['etsy', 'Etsy', 'workflow', 'commerce', 'tier_2', 'marketplace,ecommerce'],\n ['mailchimp', 'Mailchimp', 'workflow', 'marketing', 'tier_0', 'email-marketing,marketing'],\n ['klaviyo', 'Klaviyo', 'workflow', 'marketing', 'tier_0', 'email-marketing,ecommerce,marketing'],\n ['marketo', 'Marketo', 'workflow', 'marketing', 'tier_1', 'marketing,enterprise'],\n ['braze', 'Braze', 'workflow', 'marketing', 'tier_1', 'marketing,lifecycle'],\n ['customer-io', 'Customer.io', 'workflow', 'marketing', 'tier_1', 'marketing,lifecycle'],\n ['sendgrid', 'SendGrid', 'email', 'email', 'tier_1', 'email,transactional'],\n ['postmark', 'Postmark', 'email', 'email', 'tier_1', 'email,transactional'],\n ['twilio', 'Twilio', 'chat', 'chat', 'tier_0', 'sms,voice,communications'],\n ['phony', 'ph0ny', 'chat', 'chat', 'tier_1', 'voice,telephony,communications', 'api_key'],\n ['discord', 'Discord', 'chat', 'chat', 'tier_1', 'chat,community'],\n ['telegram', 'Telegram', 'chat', 'chat', 'tier_1', 'chat,community'],\n ['whatsapp-business', 'WhatsApp Business', 'chat', 'chat', 'tier_1', 'chat,meta,customer-comms'],\n ['facebook-pages', 'Facebook Pages', 'workflow', 'marketing', 'tier_1', 'social,meta,marketing'],\n ['instagram-business', 'Instagram Business', 'workflow', 'marketing', 'tier_1', 'social,meta,marketing'],\n ['linkedin', 'LinkedIn', 'workflow', 'sales', 'tier_1', 'social,sales,gtm'],\n ['x-twitter', 'X / Twitter', 'workflow', 'marketing', 'tier_1', 'social,marketing'],\n ['youtube', 'YouTube', 'storage', 'storage', 'tier_1', 'video,content'],\n ['tiktok', 'TikTok', 'workflow', 'marketing', 'tier_2', 'social,video,marketing'],\n ['google-analytics', 'Google Analytics', 'database', 'analytics', 'tier_0', 'analytics,web,marketing'],\n ['mixpanel', 'Mixpanel', 'database', 'analytics', 'tier_1', 'analytics,product'],\n ['amplitude', 'Amplitude', 'database', 'analytics', 'tier_1', 'analytics,product'],\n ['segment', 'Segment', 'database', 'analytics', 'tier_1', 'analytics,cdp'],\n ['snowflake', 'Snowflake', 'database', 'database', 'tier_0', 'warehouse,data'],\n ['bigquery', 'BigQuery', 'database', 'database', 'tier_0', 'warehouse,google,data'],\n ['redshift', 'Redshift', 'database', 'database', 'tier_1', 'warehouse,aws,data'],\n ['postgres', 'Postgres', 'database', 'database', 'tier_0', 'database,sql'],\n ['mysql', 'MySQL', 'database', 'database', 'tier_1', 'database,sql'],\n ['mongodb', 'MongoDB', 'database', 'database', 'tier_1', 'database,nosql'],\n ['supabase', 'Supabase', 'database', 'database', 'tier_1', 'database,postgres'],\n ['firebase', 'Firebase', 'database', 'database', 'tier_1', 'database,google,app'],\n ['redis', 'Redis', 'database', 'database', 'tier_2', 'database,cache'],\n ['aws-s3', 'Amazon S3', 'storage', 'storage', 'tier_0', 'files,aws,storage'],\n ['aws-lambda', 'AWS Lambda', 'workflow', 'dev', 'tier_1', 'aws,serverless,dev'],\n ['aws-cloudwatch', 'AWS CloudWatch', 'database', 'analytics', 'tier_1', 'aws,logs,observability'],\n ['google-cloud-storage', 'Google Cloud Storage', 'storage', 'storage', 'tier_1', 'files,gcp,storage'],\n ['azure-blob-storage', 'Azure Blob Storage', 'storage', 'storage', 'tier_1', 'files,azure,storage'],\n ['vercel', 'Vercel', 'workflow', 'dev', 'tier_1', 'deployments,dev'],\n ['netlify', 'Netlify', 'workflow', 'dev', 'tier_2', 'deployments,dev'],\n ['cloudflare', 'Cloudflare', 'workflow', 'dev', 'tier_1', 'edge,dev,dns'],\n ['sentry', 'Sentry', 'workflow', 'dev', 'tier_1', 'errors,observability,dev'],\n ['datadog', 'Datadog', 'database', 'analytics', 'tier_1', 'observability,logs,metrics'],\n ['new-relic', 'New Relic', 'database', 'analytics', 'tier_2', 'observability,logs,metrics'],\n ['pagerduty', 'PagerDuty', 'workflow', 'project', 'tier_1', 'incident,on-call'],\n ['opsgenie', 'Opsgenie', 'workflow', 'project', 'tier_2', 'incident,on-call,atlassian'],\n ['okta', 'Okta', 'internal', 'workflow', 'tier_1', 'identity,security'],\n ['auth0', 'Auth0', 'internal', 'workflow', 'tier_1', 'identity,security'],\n ['workday', 'Workday', 'workflow', 'hr', 'tier_1', 'hr,finance,enterprise'],\n ['bamboohr', 'BambooHR', 'workflow', 'hr', 'tier_1', 'hr,people'],\n ['greenhouse', 'Greenhouse', 'workflow', 'hr', 'tier_1', 'recruiting,hr'],\n ['lever', 'Lever', 'workflow', 'hr', 'tier_1', 'recruiting,hr'],\n ['gusto', 'Gusto', 'workflow', 'hr', 'tier_1', 'payroll,hr'],\n ['rippling', 'Rippling', 'workflow', 'hr', 'tier_1', 'hr,it,identity'],\n ['docusign', 'DocuSign', 'docs', 'docs', 'tier_1', 'contracts,signature,legal'],\n ['pandadoc', 'PandaDoc', 'docs', 'docs', 'tier_1', 'contracts,signature,sales'],\n ['hellosign', 'Dropbox Sign', 'docs', 'docs', 'tier_2', 'contracts,signature'],\n ['clio', 'Clio', 'workflow', 'project', 'tier_1', 'legal,practice-management'],\n ['ironclad', 'Ironclad', 'docs', 'docs', 'tier_1', 'legal,contracts'],\n ['lexisnexis', 'LexisNexis', 'docs', 'docs', 'tier_2', 'legal,research'],\n ['calendly', 'Calendly', 'calendar', 'calendar', 'tier_0', 'scheduling,calendar'],\n ['cal-com', 'Cal.com', 'calendar', 'calendar', 'tier_1', 'scheduling,calendar'],\n ['zoom', 'Zoom', 'calendar', 'calendar', 'tier_0', 'meetings,video,calendar'],\n ['google-meet', 'Google Meet', 'calendar', 'calendar', 'tier_1', 'meetings,google,video'],\n ['microsoft-graph', 'Microsoft Graph', 'internal', 'workflow', 'tier_0', 'microsoft,enterprise,identity'],\n ['openai', 'OpenAI', 'workflow', 'ai', 'tier_0', 'ai,llm'],\n ['anthropic', 'Anthropic', 'workflow', 'ai', 'tier_1', 'ai,llm'],\n ['gemini', 'Google Gemini', 'workflow', 'ai', 'tier_1', 'ai,llm,google'],\n ['huggingface', 'Hugging Face', 'workflow', 'ai', 'tier_1', 'ai,models'],\n ['pinecone', 'Pinecone', 'database', 'database', 'tier_1', 'vector,database,ai'],\n ['weaviate', 'Weaviate', 'database', 'database', 'tier_1', 'vector,database,ai'],\n ['qdrant', 'Qdrant', 'database', 'database', 'tier_1', 'vector,database,ai'],\n ['zapier', 'Zapier', 'workflow', 'workflow', 'tier_1', 'automation,workflow'],\n ['make', 'Make', 'workflow', 'workflow', 'tier_1', 'automation,workflow'],\n ['nango', 'Nango', 'workflow', 'workflow', 'tier_1', 'integration-platform,oauth'],\n ['pipedream', 'Pipedream', 'workflow', 'workflow', 'tier_1', 'integration-platform,workflow'],\n ['open-automation-catalog', 'Open Automation Catalog', 'workflow', 'workflow', 'tier_1', 'automation,workflow,open-source'],\n ['webhook', 'Generic Webhook', 'webhook', 'webhook', 'tier_0', 'webhook,http,events', 'none'],\n ['http', 'HTTP Request', 'workflow', 'webhook', 'tier_0', 'http,api,webhook', 'none'],\n ['rss', 'RSS', 'webhook', 'webhook', 'tier_1', 'feeds,content', 'none'],\n ['zapier-transfer', 'Zapier Transfer', 'workflow', 'workflow', 'long_tail', 'automation,migration'],\n ['typeform', 'Typeform', 'workflow', 'marketing', 'tier_1', 'forms,marketing'],\n ['google-forms', 'Google Forms', 'workflow', 'marketing', 'tier_1', 'forms,google'],\n ['jotform', 'Jotform', 'workflow', 'marketing', 'tier_2', 'forms'],\n ['webflow', 'Webflow', 'workflow', 'marketing', 'tier_1', 'cms,website'],\n ['wordpress', 'WordPress', 'workflow', 'marketing', 'tier_1', 'cms,website'],\n ['contentful', 'Contentful', 'docs', 'docs', 'tier_1', 'cms,content'],\n ['sanity', 'Sanity', 'docs', 'docs', 'tier_1', 'cms,content'],\n ['figma', 'Figma', 'docs', 'docs', 'tier_0', 'design,creative'],\n ['canva', 'Canva', 'docs', 'docs', 'tier_1', 'design,creative'],\n ['adobe-creative-cloud', 'Adobe Creative Cloud', 'storage', 'storage', 'tier_1', 'design,creative,files'],\n ['miro', 'Miro', 'docs', 'docs', 'tier_1', 'whiteboard,collaboration'],\n ['figjam', 'FigJam', 'docs', 'docs', 'tier_2', 'whiteboard,design'],\n]\n\nexport function listIntegrationCoverageSpecs(): IntegrationCoverageSpec[] {\n return COVERAGE_SPECS.map(([id, title, category, actionPack, priority, domains, auth = 'oauth2']) => ({\n id,\n title,\n category,\n actionPack,\n priority,\n auth,\n providerKinds: providerKindsFor(auth),\n domains: domains.split(',').map((domain) => domain.trim()).filter(Boolean),\n scopes: scopesFor(id, actionPack),\n }))\n}\n\nexport function buildIntegrationCoverageConnectors(options: {\n providerId?: string\n priorities?: IntegrationCoveragePriority[]\n categories?: IntegrationConnectorCategory[]\n actionPacks?: IntegrationActionPack[]\n} = {}): IntegrationConnector[] {\n const providerId = options.providerId ?? 'coverage'\n return listIntegrationCoverageSpecs()\n .filter((spec) => !options.priorities || options.priorities.includes(spec.priority))\n .filter((spec) => !options.categories || options.categories.includes(spec.category))\n .filter((spec) => !options.actionPacks || options.actionPacks.includes(spec.actionPack))\n .map((spec) => specToConnector(spec, providerId))\n}\n\nexport function integrationCoverageChecklistMarkdown(): string {\n const specs = listIntegrationCoverageSpecs()\n const lines = [\n '# Agent Integrations Coverage Checklist',\n '',\n 'Generated from `listIntegrationCoverageSpecs()`. Catalog presence means the product can plan/request/connect the integration; native adapters and runtime backends execute behind the same provider contract.',\n '',\n '## Summary',\n '',\n `- Total cataloged integrations: ${specs.length}`,\n `- Tier 0: ${specs.filter((spec) => spec.priority === 'tier_0').length}`,\n `- Tier 1: ${specs.filter((spec) => spec.priority === 'tier_1').length}`,\n `- Tier 2: ${specs.filter((spec) => spec.priority === 'tier_2').length}`,\n `- Long tail: ${specs.filter((spec) => spec.priority === 'long_tail').length}`,\n '',\n '## Checklist',\n '',\n ]\n for (const spec of specs) {\n lines.push(`- [ ] ${spec.priority} / ${spec.category} / ${spec.title} (${spec.id}) - ${spec.domains.join(', ')}`)\n }\n return `${lines.join('\\n')}\\n`\n}\n\nfunction specToConnector(spec: IntegrationCoverageSpec, providerId: string): IntegrationConnector {\n const actions = actionPack(spec.actionPack, spec.scopes ?? [])\n return {\n id: spec.id,\n providerId,\n title: spec.title,\n category: spec.category,\n auth: spec.auth,\n scopes: spec.scopes ?? [],\n actions,\n triggers: triggersFor(spec.actionPack, spec.scopes ?? []),\n metadata: {\n source: 'coverage-catalog',\n priority: spec.priority,\n domains: spec.domains,\n providerKinds: spec.providerKinds,\n executable: false,\n },\n }\n}\n\nfunction actionPack(pack: IntegrationActionPack, scopes: string[]): IntegrationConnectorAction[] {\n const readScope = scopes.find((scope) => scope.endsWith('.read')) ?? scopes[0]\n const writeScope = scopes.find((scope) => scope.endsWith('.write')) ?? scopes[1] ?? readScope\n const scope = (value?: string) => value ? [value] : []\n const read = (id: string, title: string, description: string): IntegrationConnectorAction => ({\n id,\n title,\n description,\n risk: 'read',\n requiredScopes: scope(readScope),\n dataClass: dataClassFor(pack),\n inputSchema: objectSchema(),\n })\n const write = (id: string, title: string, description: string): IntegrationConnectorAction => ({\n id,\n title,\n description,\n risk: 'write',\n requiredScopes: scope(writeScope),\n dataClass: dataClassFor(pack),\n approvalRequired: true,\n inputSchema: objectSchema(),\n })\n const destructive = (id: string, title: string, description: string): IntegrationConnectorAction => ({\n id,\n title,\n description,\n risk: 'destructive',\n requiredScopes: scope(writeScope),\n dataClass: dataClassFor(pack),\n approvalRequired: true,\n inputSchema: objectSchema(),\n })\n switch (pack) {\n case 'email': return [read('messages.search', 'Search messages', 'Search messages and threads.'), read('messages.read', 'Read message', 'Read a message by id.'), write('drafts.create', 'Create draft', 'Create an email draft.'), write('messages.send', 'Send message', 'Send or reply to an email message.')]\n case 'calendar': return [read('events.search', 'Search events', 'Search calendar events.'), read('availability.read', 'Read availability', 'Read availability windows.'), write('events.create', 'Create event', 'Create a calendar event.'), write('events.update', 'Update event', 'Update a calendar event.'), destructive('events.cancel', 'Cancel event', 'Cancel a calendar event.')]\n case 'chat': return [read('messages.search', 'Search messages', 'Search channel or direct messages.'), read('channels.list', 'List channels', 'List channels or rooms.'), write('messages.post', 'Send message', 'Send a message to a channel or direct message.'), write('threads.reply', 'Reply in thread', 'Reply to a thread or conversation.')]\n case 'crm': return [read('records.search', 'Search records', 'Search contacts, companies, and deals.'), read('records.read', 'Read record', 'Read a CRM record.'), write('records.upsert', 'Upsert record', 'Create or update a CRM record.'), write('notes.create', 'Create note', 'Add a note or activity.')]\n case 'storage': return [read('files.search', 'Search files', 'Search files and folders.'), read('files.read', 'Read file', 'Read file metadata or content.'), write('files.upload', 'Upload file', 'Upload a file.'), write('files.update', 'Update file', 'Update file metadata or content.')]\n case 'docs': return [read('documents.search', 'Search documents', 'Search documents or pages.'), read('documents.read', 'Read document', 'Read a document.'), write('documents.create', 'Create document', 'Create a document or page.'), write('documents.update', 'Update document', 'Update a document or page.')]\n case 'database': return [read('records.query', 'Query records', 'Query rows, records, or objects.'), read('records.read', 'Read record', 'Read one row, record, or object.'), write('records.upsert', 'Upsert record', 'Create or update a row, record, or object.'), destructive('records.delete', 'Delete record', 'Delete a row, record, or object.')]\n case 'project': return [read('tasks.search', 'Search tasks', 'Search tasks, tickets, or issues.'), read('tasks.read', 'Read task', 'Read a task, ticket, or issue.'), write('tasks.create', 'Create task', 'Create a task, ticket, or issue.'), write('tasks.update', 'Update task', 'Update a task, ticket, or issue.')]\n case 'support': return [read('tickets.search', 'Search tickets', 'Search support tickets or conversations.'), read('customers.read', 'Read customer', 'Read a customer profile.'), write('tickets.reply', 'Reply to ticket', 'Reply to a support ticket.'), write('tickets.update', 'Update ticket', 'Update ticket status, tags, or assignee.')]\n case 'marketing': return [read('contacts.search', 'Search contacts', 'Search marketing contacts or audiences.'), read('campaigns.read', 'Read campaign', 'Read campaign metadata and performance.'), write('contacts.upsert', 'Upsert contact', 'Create or update a contact.'), write('campaigns.create', 'Create campaign', 'Create a campaign draft.')]\n case 'sales': return [read('prospects.search', 'Search prospects', 'Search prospects, leads, or accounts.'), read('activities.read', 'Read activities', 'Read sales activity history.'), write('prospects.upsert', 'Upsert prospect', 'Create or update a prospect.'), write('sequence.enqueue', 'Enroll in sequence', 'Enroll a prospect in a sales sequence.')]\n case 'commerce': return [read('orders.search', 'Search orders', 'Search orders.'), read('customers.read', 'Read customer', 'Read customer and purchase history.'), write('orders.update', 'Update order', 'Update order metadata or fulfillment state.'), write('products.update', 'Update product', 'Update product metadata.')]\n case 'finance': return [read('transactions.search', 'Search transactions', 'Search transactions, invoices, or payments.'), read('accounts.read', 'Read account', 'Read account or customer financial record.'), write('invoices.create', 'Create invoice', 'Create an invoice or payment object.'), write('records.sync', 'Sync record', 'Sync a finance or accounting record.')]\n case 'hr': return [read('people.search', 'Search people', 'Search employees, candidates, or contractors.'), read('people.read', 'Read person', 'Read a person profile.'), write('people.update', 'Update person', 'Update a person profile.'), write('events.create', 'Create HR event', 'Create a recruiting or HR event.')]\n case 'dev': return [read('resources.search', 'Search resources', 'Search issues, repos, deployments, logs, or incidents.'), read('resources.read', 'Read resource', 'Read a developer resource.'), write('resources.create', 'Create resource', 'Create an issue, deployment, incident, or config.'), write('resources.update', 'Update resource', 'Update a developer resource.')]\n case 'ai': return [read('models.list', 'List models', 'List available models or endpoints.'), write('responses.create', 'Create response', 'Create an AI response or job.'), write('embeddings.create', 'Create embeddings', 'Create embeddings or vector jobs.'), read('usage.read', 'Read usage', 'Read usage metadata.')]\n case 'analytics': return [read('reports.query', 'Query reports', 'Query analytics reports.'), read('events.search', 'Search events', 'Search analytics events.'), write('events.track', 'Track event', 'Track an analytics event.'), write('audiences.sync', 'Sync audience', 'Sync an audience or cohort.')]\n case 'workflow': return [read('runs.search', 'Search runs', 'Search workflow runs or jobs.'), read('templates.list', 'List templates', 'List workflow templates.'), write('runs.start', 'Start run', 'Start a workflow run.'), write('webhooks.dispatch', 'Dispatch webhook', 'Dispatch a workflow webhook.')]\n case 'webhook': return [write('requests.send', 'Send request', 'Send an HTTP request or webhook event.'), read('events.search', 'Search events', 'Search received webhook events.'), write('subscriptions.create', 'Create subscription', 'Create a webhook subscription.'), destructive('subscriptions.delete', 'Delete subscription', 'Delete a webhook subscription.')]\n }\n}\n\nfunction triggersFor(pack: IntegrationActionPack, scopes: string[]): IntegrationConnectorTrigger[] | undefined {\n const readScope = scopes.find((scope) => scope.endsWith('.read')) ?? scopes[0]\n const requiredScopes = readScope ? [readScope] : []\n if (pack === 'email') return [{ id: 'message.received', title: 'Message received', requiredScopes, dataClass: 'private' }]\n if (pack === 'calendar') return [{ id: 'event.changed', title: 'Event changed', requiredScopes, dataClass: 'private' }]\n if (pack === 'chat') return [{ id: 'message.posted', title: 'Message posted', requiredScopes, dataClass: 'private' }]\n if (pack === 'crm') return [{ id: 'record.changed', title: 'Record changed', requiredScopes, dataClass: 'private' }]\n if (pack === 'support') return [{ id: 'ticket.changed', title: 'Ticket changed', requiredScopes, dataClass: 'private' }]\n if (pack === 'commerce') return [{ id: 'order.changed', title: 'Order changed', requiredScopes, dataClass: 'sensitive' }]\n if (pack === 'finance') return [{ id: 'transaction.changed', title: 'Transaction changed', requiredScopes, dataClass: 'sensitive' }]\n if (pack === 'workflow' || pack === 'webhook') return [{ id: 'event.received', title: 'Event received', requiredScopes, dataClass: 'internal' }]\n return undefined\n}\n\nfunction scopesFor(id: string, pack: IntegrationActionPack): string[] {\n if (pack === 'webhook') return []\n return [`${id}.read`, `${id}.write`]\n}\n\nfunction providerKindsFor(auth: IntegrationConnector['auth']): IntegrationProviderKind[] {\n if (auth === 'none') return ['first_party', 'pipedream', 'tangle_catalog', 'custom']\n return DEFAULT_PROVIDER_KINDS\n}\n\nfunction dataClassFor(pack: IntegrationActionPack): 'public' | 'internal' | 'private' | 'sensitive' {\n if (pack === 'finance' || pack === 'commerce' || pack === 'hr') return 'sensitive'\n if (pack === 'workflow' || pack === 'webhook' || pack === 'dev' || pack === 'analytics') return 'internal'\n return 'private'\n}\n\nfunction objectSchema(): unknown {\n return { type: 'object', additionalProperties: true, properties: {} }\n}\n"],"mappings":"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","names":["actionPack","scope"]}
|