diff --git a/components/airweave/README.md b/components/airweave/README.md new file mode 100644 index 0000000000000..02f5510bf913d --- /dev/null +++ b/components/airweave/README.md @@ -0,0 +1,66 @@ +# Airweave Integration for Pipedream + +Airweave is an open-source platform that makes **any app searchable for your agent** by syncing data from various sources with minimal configuration for agentic search. + +## What is Airweave? + +Airweave serves as a bridge between your data sources and agents, transforming raw data into queryable knowledge. It can extract and process data from: + +- API endpoints (REST) +- Productivity and collaboration tools +- Relational databases +- Document stores +- File systems and storage services + +## Available Actions + +### Collections +- **Search Collection** - Search across all data sources within a collection (semantic + keyword search) +- **List Collections** - Get all collections in your organization +- **Create Collection** - Create a new collection to group data sources +- **Get Collection** - Retrieve details of a specific collection +- **Delete Collection** - Permanently remove a collection and all associated data + +### Sources +- **List Sources** - Get all available data source connectors +- **Trigger Sync** - Manually trigger a data sync for a source connection + +## Setup + +1. Sign up for an Airweave account at [airweave.ai](https://airweave.ai) +2. Get your API key from the Airweave dashboard (Settings → API Keys) +3. Connect your Airweave account in Pipedream by entering your API key + +## Example Workflows + +### Slack Q&A Bot +Slash command → Search Airweave collection → Reply with relevant information + +### Support Automation +Form submission → Search documentation → Create support ticket with context + +### Daily Digest +Cron schedule → Search recent updates → Send email summary + +### GitHub Integration +New issue → Search codebase → Auto-comment with relevant code references + +## Authentication + +This integration uses API key authentication. You can find your API key in your Airweave dashboard under Settings → API Keys. + +Optionally, you can specify a custom base URL if you're using a self-hosted Airweave instance. + +## Links + +- [Airweave Documentation](https://docs.airweave.ai) +- [Airweave GitHub](https://github.com/airweave-ai/airweave) +- [API Reference](https://docs.airweave.ai/api-reference) +- [Airweave TypeScript SDK](https://github.com/airweave-ai/typescript-sdk) + +## Support + +For issues or questions: +- Airweave Community: [GitHub Discussions](https://github.com/airweave-ai/airweave/discussions) +- Pipedream Support: [pipedream.com/support](https://pipedream.com/support) + diff --git a/components/airweave/actions/create-collection/create-collection.mjs b/components/airweave/actions/create-collection/create-collection.mjs new file mode 100644 index 0000000000000..4694c5bbdce55 --- /dev/null +++ b/components/airweave/actions/create-collection/create-collection.mjs @@ -0,0 +1,45 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-create-collection", + name: "Create Collection", + description: "Create a new Airweave collection. Collections are logical groups of data sources that provide unified search capabilities. The newly created collection is initially empty until you add source connections to it. [See the documentation](https://docs.airweave.ai/api-reference/collections/create)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + airweave, + name: { + type: "string", + label: "Name", + description: "Display name for the collection (e.g., 'Customer Support Data')", + }, + readableId: { + type: "string", + label: "Readable ID", + description: "URL-friendly identifier for the collection (lowercase, hyphens allowed, e.g., 'customer-support-data'). This cannot be changed after creation.", + }, + description: { + type: "string", + label: "Description", + description: "Optional description of what this collection contains and its purpose", + optional: true, + }, + }, + async run({ $ }) { + const response = await this.airweave.createCollection({ + name: this.name, + readable_id: this.readableId, + description: this.description, + }); + + $.export("$summary", `Successfully created collection: ${response.name} (${response.readable_id})`); + + return response; + }, +}; + diff --git a/components/airweave/actions/delete-collection/delete-collection.mjs b/components/airweave/actions/delete-collection/delete-collection.mjs new file mode 100644 index 0000000000000..3c2309e153267 --- /dev/null +++ b/components/airweave/actions/delete-collection/delete-collection.mjs @@ -0,0 +1,40 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-delete-collection", + name: "Delete Collection", + description: "Delete a collection and all associated data. This permanently removes the collection including all synced data and source connections. This action cannot be undone. [See the documentation](https://docs.airweave.ai/api-reference/collections/delete)", + version: "0.0.1", + annotations: { + destructiveHint: true, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + airweave, + collectionId: { + propDefinition: [ + airweave, + "collectionId", + ], + }, + confirmation: { + type: "string", + label: "Confirmation", + description: "Type 'DELETE' to confirm deletion. This action cannot be undone.", + }, + }, + async run({ $ }) { + if (this.confirmation !== "DELETE") { + throw new Error("Please type 'DELETE' to confirm deletion. This action cannot be undone."); + } + + const response = await this.airweave.deleteCollection(this.collectionId); + + $.export("$summary", `Successfully deleted collection: ${response.name} (${response.readable_id})`); + + return response; + }, +}; + diff --git a/components/airweave/actions/get-collection/get-collection.mjs b/components/airweave/actions/get-collection/get-collection.mjs new file mode 100644 index 0000000000000..ced36b2afa4b4 --- /dev/null +++ b/components/airweave/actions/get-collection/get-collection.mjs @@ -0,0 +1,31 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-get-collection", + name: "Get Collection", + description: "Retrieve details of a specific collection by its readable ID. [See the documentation](https://docs.airweave.ai/api-reference/collections/get)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + type: "action", + props: { + airweave, + collectionId: { + propDefinition: [ + airweave, + "collectionId", + ], + }, + }, + async run({ $ }) { + const response = await this.airweave.getCollection(this.collectionId); + + $.export("$summary", `Successfully retrieved collection: ${response.name} (${response.readable_id})`); + + return response; + }, +}; + diff --git a/components/airweave/actions/list-collections/list-collections.mjs b/components/airweave/actions/list-collections/list-collections.mjs new file mode 100644 index 0000000000000..2a001132b5e80 --- /dev/null +++ b/components/airweave/actions/list-collections/list-collections.mjs @@ -0,0 +1,46 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-list-collections", + name: "List Collections", + description: "List all collections in your organization. Collections are logical groups of data sources that provide unified search capabilities. [See the documentation](https://docs.airweave.ai/api-reference/collections/list)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + type: "action", + props: { + airweave, + skip: { + type: "integer", + label: "Skip", + description: "Number of collections to skip for pagination", + optional: true, + default: 0, + min: 0, + }, + limit: { + type: "integer", + label: "Limit", + description: "Maximum number of collections to return", + optional: true, + default: 50, + min: 1, + max: 100, + }, + }, + async run({ $ }) { + const response = await this.airweave.listCollections({ + skip: this.skip, + limit: this.limit, + }); + + const count = response.length; + $.export("$summary", `Successfully retrieved ${count} collection(s)`); + + return response; + }, +}; + diff --git a/components/airweave/actions/list-sources/list-sources.mjs b/components/airweave/actions/list-sources/list-sources.mjs new file mode 100644 index 0000000000000..c02711b9484c8 --- /dev/null +++ b/components/airweave/actions/list-sources/list-sources.mjs @@ -0,0 +1,26 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-list-sources", + name: "List Available Sources", + description: "List all available data source connectors. These are the types of integrations Airweave can connect to (e.g., GitHub, Slack, Google Drive, PostgreSQL, etc.). [See the documentation](https://docs.airweave.ai/api-reference/sources/list)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + type: "action", + props: { + airweave, + }, + async run({ $ }) { + const response = await this.airweave.listSources(); + + const count = response.length; + $.export("$summary", `Successfully retrieved ${count} available source connector(s)`); + + return response; + }, +}; + diff --git a/components/airweave/actions/search-collection/search-collection.mjs b/components/airweave/actions/search-collection/search-collection.mjs new file mode 100644 index 0000000000000..90bb1e2a53ad8 --- /dev/null +++ b/components/airweave/actions/search-collection/search-collection.mjs @@ -0,0 +1,81 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-search-collection", + name: "Search Collection", + description: "Search across all data sources within a collection using semantic and keyword search. [See the documentation](https://docs.airweave.ai/api-reference/collections/search)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + type: "action", + props: { + airweave, + collectionId: { + propDefinition: [ + airweave, + "collectionId", + ], + }, + searchQuery: { + propDefinition: [ + airweave, + "searchQuery", + ], + }, + searchLimit: { + propDefinition: [ + airweave, + "searchLimit", + ], + }, + responseType: { + propDefinition: [ + airweave, + "responseType", + ], + }, + offset: { + type: "integer", + label: "Offset", + description: "Number of results to skip for pagination", + optional: true, + default: 0, + min: 0, + }, + recencyBias: { + type: "string", + label: "Recency Bias", + description: "How much to weigh recency vs similarity (0-1). 0 = no recency effect; 1 = rank by recency only", + optional: true, + }, + }, + async run({ $ }) { + const params = { + query: this.searchQuery, + limit: this.searchLimit, + offset: this.offset, + }; + + if (this.responseType) { + params.response_type = this.responseType; + } + + if (this.recencyBias !== undefined) { + params.recency_bias = parseFloat(this.recencyBias); + } + + const response = await this.airweave.searchCollection( + this.collectionId, + params, + ); + + const resultCount = response.results?.length || 0; + $.export("$summary", `Successfully searched collection "${this.collectionId}" and found ${resultCount} result(s)`); + + return response; + }, +}; + diff --git a/components/airweave/actions/trigger-sync/trigger-sync.mjs b/components/airweave/actions/trigger-sync/trigger-sync.mjs new file mode 100644 index 0000000000000..bb394bd7b1e70 --- /dev/null +++ b/components/airweave/actions/trigger-sync/trigger-sync.mjs @@ -0,0 +1,43 @@ +import airweave from "../../airweave.app.mjs"; + +export default { + key: "airweave-trigger-sync", + name: "Trigger Source Connection Sync", + description: "Manually trigger a data sync for a source connection. The sync job runs asynchronously in the background and returns immediately with job details. [See the documentation](https://docs.airweave.ai/api-reference/source-connections/run)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + airweave, + collectionId: { + propDefinition: [ + airweave, + "collectionId", + ], + description: "The collection that contains the source connection", + }, + sourceConnectionId: { + propDefinition: [ + airweave, + "sourceConnectionId", + (c) => ({ + collectionId: c.collectionId, + }), + ], + }, + }, + async run({ $ }) { + const response = await this.airweave.runSourceConnection( + this.sourceConnectionId, + ); + + $.export("$summary", `Successfully triggered sync job: ${response.id} (Status: ${response.status})`); + + return response; + }, +}; + diff --git a/components/airweave/airweave.app.mjs b/components/airweave/airweave.app.mjs index 53bae861866d0..776f69b6a3949 100644 --- a/components/airweave/airweave.app.mjs +++ b/components/airweave/airweave.app.mjs @@ -1,11 +1,179 @@ +import { AirweaveSDKClient } from "@airweave/sdk"; +import packageJson from "./package.json" assert { type: "json" }; + export default { type: "app", app: "airweave", - propDefinitions: {}, + propDefinitions: { + collectionId: { + type: "string", + label: "Collection", + description: "The collection readable ID. Collections are logical groups of data sources that provide unified search capabilities.", + async options({ prevContext }) { + const params = { + skip: prevContext?.skip || 0, + limit: 50, + }; + const collections = await this.listCollections(params); + return { + options: collections.map((collection) => ({ + label: collection.name || collection.readable_id, + value: collection.readable_id, + })), + context: { + skip: params.skip + collections.length, + }, + }; + }, + }, + sourceConnectionId: { + type: "string", + label: "Source Connection", + description: "The source connection ID. Source connections are configured instances that sync data from your apps and databases.", + async options({ + collectionId, prevContext, + }) { + const params = { + skip: prevContext?.skip || 0, + limit: 50, + }; + if (collectionId) { + params.collection = collectionId; + } + const connections = await this.listSourceConnections(params); + return { + options: connections.map((conn) => ({ + label: conn.name || conn.id, + value: conn.id, + })), + context: { + skip: params.skip + connections.length, + }, + }; + }, + }, + searchQuery: { + type: "string", + label: "Search Query", + description: "The search query text to find relevant documents and data", + }, + searchLimit: { + type: "integer", + label: "Search Limit", + description: "Maximum number of search results to return", + default: 10, + optional: true, + min: 1, + max: 100, + }, + responseType: { + type: "string", + label: "Response Type", + description: "Format of the response", + options: [ + { + label: "Results (raw search results)", + value: "results", + }, + { + label: "Completion (AI-generated answer)", + value: "completion", + }, + ], + default: "results", + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _apiKey() { + return this.$auth.api_key; + }, + _baseUrl() { + return this.$auth.base_url || "https://api.airweave.ai"; + }, + _client() { + return new AirweaveSDKClient({ + apiKey: this._apiKey(), + baseUrl: this._baseUrl(), + frameworkName: "pipedream", + frameworkVersion: packageJson.version, + }); + }, + // Collections methods + async listCollections(params = {}) { + const client = this._client(); + return await client.collections.list(params); + }, + async getCollection(readableId) { + const client = this._client(); + return await client.collections.get(readableId); + }, + async createCollection(data) { + const client = this._client(); + return await client.collections.create(data); + }, + async updateCollection(readableId, data) { + const client = this._client(); + return await client.collections.update(readableId, data); + }, + async deleteCollection(readableId) { + const client = this._client(); + return await client.collections.delete(readableId); + }, + async searchCollection(readableId, params) { + const client = this._client(); + return await client.collections.search(readableId, params); + }, + async searchCollectionAdvanced(readableId, params) { + const client = this._client(); + return await client.collections.searchAdvanced(readableId, params); + }, + async refreshCollection(readableId) { + const client = this._client(); + return await client.collections.refreshAllSourceConnections(readableId); + }, + // Source Connections methods + async listSourceConnections(params = {}) { + const client = this._client(); + return await client.sourceConnections.list(params); + }, + async getSourceConnection(sourceConnectionId) { + const client = this._client(); + return await client.sourceConnections.get(sourceConnectionId); + }, + async createSourceConnection(data) { + const client = this._client(); + return await client.sourceConnections.create(data); + }, + async updateSourceConnection(sourceConnectionId, data) { + const client = this._client(); + return await client.sourceConnections.update(sourceConnectionId, data); + }, + async deleteSourceConnection(sourceConnectionId) { + const client = this._client(); + return await client.sourceConnections.delete(sourceConnectionId); + }, + async runSourceConnection(sourceConnectionId) { + const client = this._client(); + return await client.sourceConnections.run(sourceConnectionId); + }, + async getSourceConnectionJobs(sourceConnectionId, params = {}) { + const client = this._client(); + return await client.sourceConnections.getSourceConnectionJobs(sourceConnectionId, params); + }, + async cancelSourceConnectionJob(sourceConnectionId, jobId) { + const client = this._client(); + return await client.sourceConnections.cancelJob(sourceConnectionId, jobId); + }, + // Sources methods + async listSources() { + const client = this._client(); + return await client.sources.list(); + }, + async getSource(shortName) { + const client = this._client(); + return await client.sources.read(shortName); }, }, -}; \ No newline at end of file +}; + diff --git a/components/airweave/package.json b/components/airweave/package.json index 7abc7d8822eff..f13dddf8ee6af 100644 --- a/components/airweave/package.json +++ b/components/airweave/package.json @@ -1,15 +1,24 @@ { "name": "@pipedream/airweave", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Airweave Components", "main": "airweave.app.mjs", "keywords": [ "pipedream", - "airweave" + "airweave", + "search", + "ai", + "data-sync", + "vector-search", + "semantic-search" ], + "dependencies": { + "@airweave/sdk": "^0.1.50", + "@pipedream/platform": "^3.0.3" + }, "homepage": "https://pipedream.com/apps/airweave", "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdd0c9e7898fc..55aafe872bbc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 4.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) tsc-esm-fix: specifier: ^2.18.0 version: 2.20.27 @@ -630,7 +630,13 @@ importers: version: 3.1.0 components/airweave: - specifiers: {} + dependencies: + '@airweave/sdk': + specifier: ^0.1.50 + version: 0.1.51 + '@pipedream/platform': + specifier: ^3.0.3 + version: 3.1.0 components/aitable_ai: dependencies: @@ -2679,8 +2685,7 @@ importers: specifier: ^3.0.1 version: 3.0.1(web-streams-polyfill@3.3.3) - components/clarifai: - specifiers: {} + components/clarifai: {} components/clarify: {} @@ -6588,8 +6593,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/hex: - specifiers: {} + components/hex: {} components/heygen: dependencies: @@ -16961,7 +16965,7 @@ importers: version: 3.1.7 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@20.17.30))(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.7.2)(yaml@2.8.0) @@ -17065,6 +17069,9 @@ packages: resolution: {integrity: sha512-C+jj5XBTCNs7AFwufOkPLhuqn9bdgSDcqLB6b/Ppi9Fujwt613vWmA1hxeG76RX49vzHZIDJLq6N/v0o2SY1sA==} engines: {node: '>=18'} + '@airweave/sdk@0.1.51': + resolution: {integrity: sha512-jxBG+liX4XAz4acOH7UrZnGzJ9ltgSsh2CIadpQFT+XAnJUwsRajwnKef46LsNUgvUplrzjFkEXABX0RCAWP4g==} + '@algolia/client-abtesting@5.17.1': resolution: {integrity: sha512-Os/xkQbDp5A5RdGYq1yS3fF69GoBJH5FIfrkVh+fXxCSe714i1Xdl9XoXhS4xG76DGKm6EFMlUqP024qjps8cg==} engines: {node: '>= 14.0.0'} @@ -31368,22 +31375,22 @@ packages: superagent@3.8.1: resolution: {integrity: sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==} engines: {node: '>= 4.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@4.1.0: resolution: {integrity: sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==} engines: {node: '>= 6.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@5.3.1: resolution: {integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==} engines: {node: '>= 7.0.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@7.1.6: resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==} engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net supports-color@10.0.0: resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} @@ -32942,6 +32949,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@airweave/sdk@0.1.51': + dependencies: + form-data: 4.0.4 + formdata-node: 6.0.3 + node-fetch: 2.7.0 + readable-stream: 4.5.2 + transitivePeerDependencies: + - encoding + '@algolia/client-abtesting@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -35785,7 +35801,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -36056,21 +36072,45 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36081,16 +36121,34 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36101,41 +36159,89 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -37198,7 +37304,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -39704,6 +39810,8 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -42264,7 +42372,7 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.15.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.1 optionalDependencies: typescript: 5.6.3 @@ -43158,6 +43266,20 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@29.7.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@8.0.0-alpha.13) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -43224,12 +43346,39 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + babel-preset-current-node-syntax@1.1.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@8.0.0-alpha.13) + optional: true + babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-jest@29.6.3(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@8.0.0-alpha.13) + optional: true + backoff@2.5.0: dependencies: precond: 0.2.3 @@ -45438,7 +45587,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -47299,7 +47448,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -49880,7 +50029,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) rfdc: 1.4.1 tarn: 3.0.2 tedious: 16.7.1 @@ -51629,7 +51778,7 @@ snapshots: ajv: 8.17.1 chalk: 5.3.0 ci-info: 4.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) deepmerge: 4.3.1 escalade: 3.2.0 fast-glob: 3.3.2 @@ -53765,7 +53914,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53783,9 +53932,8 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - esbuild: 0.24.2 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53799,10 +53947,10 @@ snapshots: typescript: 5.6.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.26.0 + '@babel/core': 8.0.0-alpha.13 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) + babel-jest: 29.7.0(@babel/core@8.0.0-alpha.13) ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2): dependencies: @@ -53974,7 +54122,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54002,7 +54150,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54626,7 +54774,7 @@ snapshots: '@volar/typescript': 2.4.10 '@vue/language-core': 2.1.6(typescript@5.9.2) compare-versions: 6.1.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 0.5.1 magic-string: 0.30.13