@mastra/editor 0.10.1 → 0.10.2-alpha.1
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/CHANGELOG.md +18 -0
- package/dist/composio.cjs.map +1 -1
- package/dist/composio.js.map +1 -1
- package/package.json +9 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @mastra/editor
|
|
2
2
|
|
|
3
|
+
## 0.10.2-alpha.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`00eca42`](https://github.com/mastra-ai/mastra/commit/00eca4252393aa114dc8c9a5e1da68df91fa06cf), [`8ace89d`](https://github.com/mastra-ai/mastra/commit/8ace89df77f762e622d3b9f7f65ad7524350d050), [`fa63872`](https://github.com/mastra-ai/mastra/commit/fa6387280954e6b667bec5714b55ba082bc627ff), [`f07b646`](https://github.com/mastra-ai/mastra/commit/f07b64604ab7d25391179790b7fd4823df9e2dff), [`d8838ae`](https://github.com/mastra-ai/mastra/commit/d8838ae80b69780361693d27098f7f6684af12fe), [`40f9297`](https://github.com/mastra-ai/mastra/commit/40f9297003b921c62373d3e8d3a4bda76c9f6de3), [`0f0d1ba`](https://github.com/mastra-ai/mastra/commit/0f0d1ba67bfcb2204e571401662f1eceefc03357), [`8c31bcd`](https://github.com/mastra-ai/mastra/commit/8c31bcdb00e597880d5939b1b7d7566fbe5dacae), [`95b14cd`](https://github.com/mastra-ai/mastra/commit/95b14cdd820e86d97ac05fe568424c513a252e31), [`0e51c36`](https://github.com/mastra-ai/mastra/commit/0e51c362be673502ac79626a75d1416479b0b76e), [`aa36be2`](https://github.com/mastra-ai/mastra/commit/aa36be23aa513b7dc53cb8ca16b7fab8f20e43ad), [`212c635`](https://github.com/mastra-ai/mastra/commit/212c635203e61d036ab41db8ff86c3893dc795b3), [`d8838ae`](https://github.com/mastra-ai/mastra/commit/d8838ae80b69780361693d27098f7f6684af12fe), [`9aa5a73`](https://github.com/mastra-ai/mastra/commit/9aa5a73e7e110f6e9365eec69364a33d5f03bb56), [`f73c789`](https://github.com/mastra-ai/mastra/commit/f73c789e8ef21561580395d2c410119cab5848c8), [`8bd16da`](https://github.com/mastra-ai/mastra/commit/8bd16da73a4cb874d739373643dbd6a6e7f88684), [`09be9d9`](https://github.com/mastra-ai/mastra/commit/09be9d92043fc8db5b82319a729071ebfee26cca), [`c8630f8`](https://github.com/mastra-ai/mastra/commit/c8630f80d4f40cb5d22e60ab162b618b1907167a), [`47f71dc`](https://github.com/mastra-ai/mastra/commit/47f71dc6fbcbd12d71e21a979e676e20a02bd77d), [`50ceae2`](https://github.com/mastra-ai/mastra/commit/50ceae270878e2f8fb2b2c6c2faab09df0007c8a), [`8cdde58`](https://github.com/mastra-ai/mastra/commit/8cdde5875bbba6702d9df226f2b20232b8d75d6c), [`847ff1e`](https://github.com/mastra-ai/mastra/commit/847ff1e0d94368d94b2e173e4e0908e115568ef3), [`259d409`](https://github.com/mastra-ai/mastra/commit/259d409a514174299dbde1ff5e1121209b3ba850), [`9e16c68`](https://github.com/mastra-ai/mastra/commit/9e16c6818b6485ccb43df28aba6f3a2219d28662), [`cefca33`](https://github.com/mastra-ai/mastra/commit/cefca33ae666e69810c935fedf95a929c173d1d7), [`d00e8c5`](https://github.com/mastra-ai/mastra/commit/d00e8c50daebe5bce5bf2f48bde39c86fc3d2fe4), [`36fa7e2`](https://github.com/mastra-ai/mastra/commit/36fa7e24d14e58a1eb46147097b32f583e5b8775), [`87e9774`](https://github.com/mastra-ai/mastra/commit/87e97741c1e493cd6d62f478eb810b49bda4d57c), [`65a72e7`](https://github.com/mastra-ai/mastra/commit/65a72e70c25eedea8ff985a6624b96be2850236b), [`0f77241`](https://github.com/mastra-ai/mastra/commit/0f7724108806703799a8ba80ad0f09414afd5066), [`d8838ae`](https://github.com/mastra-ai/mastra/commit/d8838ae80b69780361693d27098f7f6684af12fe), [`92ff509`](https://github.com/mastra-ai/mastra/commit/92ff5098ef8a990438ca038077021a5f7541ec1d), [`3fce5e7`](https://github.com/mastra-ai/mastra/commit/3fce5e70d011d289043e75003ef3336ed4aa43c3), [`a763592`](https://github.com/mastra-ai/mastra/commit/a763592c3db46963ef1011cfe16fe372816e775e), [`80c7737`](https://github.com/mastra-ai/mastra/commit/80c7737e32d7917b5f356957d67c169d01744fd3), [`ab3b611`](https://github.com/mastra-ai/mastra/commit/ab3b611d086c07d7e0c9ece270b51fc17b9f54b8), [`3f1cf47`](https://github.com/mastra-ai/mastra/commit/3f1cf476f74c1e4cc2df908837e05853a5347e31), [`ff9d743`](https://github.com/mastra-ai/mastra/commit/ff9d743f71d7e072927725c0d700632aca0c1fee)]:
|
|
8
|
+
- @mastra/schema-compat@1.2.11-alpha.0
|
|
9
|
+
- @mastra/core@1.38.0-alpha.3
|
|
10
|
+
- @mastra/mcp@1.9.0-alpha.0
|
|
11
|
+
- @mastra/memory@1.20.1-alpha.1
|
|
12
|
+
|
|
13
|
+
## 0.10.2-alpha.0
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`d779de3`](https://github.com/mastra-ai/mastra/commit/d779de3cd9d2e7ed8110547190e2f15e786a0e41), [`1750c97`](https://github.com/mastra-ai/mastra/commit/1750c975d6179fbf6db2813b15229d4f8f23fc55), [`0e32507`](https://github.com/mastra-ai/mastra/commit/0e32507962cdfa5569b7bda5bc6fb3dd34e40b03), [`3a081c1`](https://github.com/mastra-ai/mastra/commit/3a081c1255c5ae8c99f6dad91cc612934ef6f2bd), [`fe9eacd`](https://github.com/mastra-ai/mastra/commit/fe9eacd9545a0a9d64aad31c9fa90294a425289e), [`f79df90`](https://github.com/mastra-ai/mastra/commit/f79df90e922c7985677c07d49d8fcf3afd2080c2), [`db79c86`](https://github.com/mastra-ai/mastra/commit/db79c86c60723d57e02f9636ca2611bd4515f194)]:
|
|
18
|
+
- @mastra/core@1.38.0-alpha.2
|
|
19
|
+
- @mastra/memory@1.20.1-alpha.0
|
|
20
|
+
|
|
3
21
|
## 0.10.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/composio.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/composio.ts","../src/providers/composio.ts"],"sourcesContent":["export { ComposioToolProvider } from './providers/composio';\nexport type { ComposioToolProviderConfig } from './providers/composio';\n","import type {\n ToolProvider,\n ToolProviderInfo,\n ToolProviderToolkit,\n ToolProviderToolInfo,\n ToolProviderListResult,\n ListToolProviderToolsOptions,\n ResolveToolProviderToolsOptions,\n} from '@mastra/core/tool-provider';\nimport type { ToolAction } from '@mastra/core/tools';\nimport type { StorageToolConfig } from '@mastra/core/storage';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\n\nimport { Composio } from '@composio/core';\nimport type { Tool as ComposioTool, ToolKitItem, ToolListParams as ComposioToolListParams } from '@composio/core';\nimport { MastraProvider } from '@composio/mastra';\nimport type { MastraTool, MastraToolCollection } from '@composio/mastra';\n\nexport interface ComposioToolProviderConfig {\n /** Composio API key */\n apiKey: string;\n}\n\n/**\n * Composio tool provider adapter.\n *\n * Uses `@composio/core` + `@composio/mastra` SDKs for both tool discovery\n * and runtime resolution. Both packages are optional peer dependencies and\n * tree-shaken if this provider class isn't imported.\n *\n * Discovery methods (`listToolkits`, `listTools`, `getToolSchema`) use the\n * raw Composio client (no userId required).\n *\n * Runtime method (`resolveTools`) uses the MastraProvider so returned tools are\n * already in Mastra's `createTool()` format.\n */\nexport class ComposioToolProvider implements ToolProvider {\n readonly info: ToolProviderInfo = {\n id: 'composio',\n name: 'Composio',\n description: 'Access 10,000+ tools from 150+ apps via Composio',\n };\n\n private apiKey: string;\n private rawClient: Composio | null = null;\n private mastraClient: Composio<MastraProvider> | null = null;\n\n constructor(config: ComposioToolProviderConfig) {\n this.apiKey = config.apiKey;\n }\n\n /**\n * Get or create a raw Composio client (no provider — for discovery only).\n */\n private getRawClient(): Composio {\n if (!this.rawClient) {\n this.rawClient = new Composio({ apiKey: this.apiKey });\n }\n return this.rawClient;\n }\n\n /**\n * Get or create a Composio client with MastraProvider (for runtime tools).\n */\n private getMastraClient(): Composio<MastraProvider> {\n if (!this.mastraClient) {\n this.mastraClient = new Composio({\n apiKey: this.apiKey,\n provider: new MastraProvider(),\n });\n }\n return this.mastraClient;\n }\n\n /**\n * List available toolkits via `composio.toolkits.get({})`.\n * Returns: `ToolKitListResponse` — an array of `{ slug, name, meta: { description, logo, ... } }`.\n */\n async listToolkits(): Promise<ToolProviderListResult<ToolProviderToolkit>> {\n const composio = this.getRawClient();\n const toolkits: ToolKitItem[] = await composio.toolkits.get({});\n\n const data: ToolProviderToolkit[] = toolkits.map(tk => ({\n slug: tk.slug,\n name: tk.name,\n description: tk.meta?.description,\n icon: tk.meta?.logo,\n }));\n return { data };\n }\n\n /**\n * List available tools via `composio.tools.getRawComposioTools()`.\n * No userId required — returns raw tool definitions for UI browsing.\n */\n async listTools(options?: ListToolProviderToolsOptions): Promise<ToolProviderListResult<ToolProviderToolInfo>> {\n const composio = this.getRawClient();\n\n // ToolListParams is a discriminated union in TypeScript but the\n // underlying Zod schema accepts `limit` on every variant. We cast\n // through the base type so `limit` is always forwarded.\n const limit = options?.perPage;\n const query: ComposioToolListParams = (\n options?.toolkit\n ? { toolkits: [options.toolkit], limit, search: options?.search }\n : options?.search\n ? { search: options.search, limit }\n : { toolkits: [] as string[], limit }\n ) as ComposioToolListParams;\n\n const rawTools: ComposioTool[] = await composio.tools.getRawComposioTools(query);\n\n const data: ToolProviderToolInfo[] = rawTools.map(tool => ({\n slug: tool.slug,\n name: tool.name ?? tool.slug,\n description: tool.description,\n toolkit: tool.toolkit?.slug,\n }));\n\n return {\n data,\n pagination: {\n page: options?.page ?? 1,\n perPage: limit,\n hasMore: limit !== undefined && rawTools.length >= limit,\n },\n };\n }\n\n /**\n * Get JSON schema for a specific tool via `composio.tools.getRawComposioToolBySlug()`.\n */\n async getToolSchema(toolSlug: string): Promise<Record<string, unknown> | null> {\n try {\n const composio = this.getRawClient();\n const tool: ComposioTool = await composio.tools.getRawComposioToolBySlug(toolSlug);\n if (!tool) return null;\n return (tool.inputParameters ?? {}) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /**\n * Resolve executable tools in Mastra format via `composio.tools.get(userId, { tools: [...] })`.\n *\n * Uses MastraProvider so returned tools are `ReturnType<typeof createTool>` — compatible\n * with Mastra's `ToolAction` interface.\n */\n async resolveTools(\n toolSlugs: string[],\n toolConfigs?: Record<string, StorageToolConfig>,\n options?: ResolveToolProviderToolsOptions,\n ): Promise<Record<string, ToolAction<unknown, unknown>>> {\n if (toolSlugs.length === 0) return {};\n\n const resourceId = options?.requestContext?.[MASTRA_RESOURCE_ID_KEY];\n const userId = typeof resourceId === 'string' ? resourceId : (options?.userId ?? 'default');\n const composio = this.getMastraClient();\n\n // composio.tools.get returns MastraToolCollection = Record<string, MastraTool>\n const mastraTools: MastraToolCollection = await composio.tools.get(userId, { tools: toolSlugs });\n\n const result: Record<string, ToolAction<unknown, unknown>> = {};\n const entries: [string, MastraTool][] = Object.entries(mastraTools ?? {});\n\n for (const [key, tool] of entries) {\n if (!tool) continue;\n const slug = tool.id ?? key;\n const descOverride = toolConfigs?.[slug]?.description;\n if (descOverride) {\n result[slug] = { ...tool, description: descOverride }
|
|
1
|
+
{"version":3,"sources":["../src/composio.ts","../src/providers/composio.ts"],"sourcesContent":["export { ComposioToolProvider } from './providers/composio';\nexport type { ComposioToolProviderConfig } from './providers/composio';\n","import type {\n ToolProvider,\n ToolProviderInfo,\n ToolProviderToolkit,\n ToolProviderToolInfo,\n ToolProviderListResult,\n ListToolProviderToolsOptions,\n ResolveToolProviderToolsOptions,\n} from '@mastra/core/tool-provider';\nimport type { ToolAction } from '@mastra/core/tools';\nimport type { StorageToolConfig } from '@mastra/core/storage';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\n\nimport { Composio } from '@composio/core';\nimport type { Tool as ComposioTool, ToolKitItem, ToolListParams as ComposioToolListParams } from '@composio/core';\nimport { MastraProvider } from '@composio/mastra';\nimport type { MastraTool, MastraToolCollection } from '@composio/mastra';\n\nexport interface ComposioToolProviderConfig {\n /** Composio API key */\n apiKey: string;\n}\n\n/**\n * Composio tool provider adapter.\n *\n * Uses `@composio/core` + `@composio/mastra` SDKs for both tool discovery\n * and runtime resolution. Both packages are optional peer dependencies and\n * tree-shaken if this provider class isn't imported.\n *\n * Discovery methods (`listToolkits`, `listTools`, `getToolSchema`) use the\n * raw Composio client (no userId required).\n *\n * Runtime method (`resolveTools`) uses the MastraProvider so returned tools are\n * already in Mastra's `createTool()` format.\n */\nexport class ComposioToolProvider implements ToolProvider {\n readonly info: ToolProviderInfo = {\n id: 'composio',\n name: 'Composio',\n description: 'Access 10,000+ tools from 150+ apps via Composio',\n };\n\n private apiKey: string;\n private rawClient: Composio | null = null;\n private mastraClient: Composio<MastraProvider> | null = null;\n\n constructor(config: ComposioToolProviderConfig) {\n this.apiKey = config.apiKey;\n }\n\n /**\n * Get or create a raw Composio client (no provider — for discovery only).\n */\n private getRawClient(): Composio {\n if (!this.rawClient) {\n this.rawClient = new Composio({ apiKey: this.apiKey });\n }\n return this.rawClient;\n }\n\n /**\n * Get or create a Composio client with MastraProvider (for runtime tools).\n */\n private getMastraClient(): Composio<MastraProvider> {\n if (!this.mastraClient) {\n this.mastraClient = new Composio({\n apiKey: this.apiKey,\n provider: new MastraProvider(),\n });\n }\n return this.mastraClient;\n }\n\n /**\n * List available toolkits via `composio.toolkits.get({})`.\n * Returns: `ToolKitListResponse` — an array of `{ slug, name, meta: { description, logo, ... } }`.\n */\n async listToolkits(): Promise<ToolProviderListResult<ToolProviderToolkit>> {\n const composio = this.getRawClient();\n const toolkits: ToolKitItem[] = await composio.toolkits.get({});\n\n const data: ToolProviderToolkit[] = toolkits.map(tk => ({\n slug: tk.slug,\n name: tk.name,\n description: tk.meta?.description,\n icon: tk.meta?.logo,\n }));\n return { data };\n }\n\n /**\n * List available tools via `composio.tools.getRawComposioTools()`.\n * No userId required — returns raw tool definitions for UI browsing.\n */\n async listTools(options?: ListToolProviderToolsOptions): Promise<ToolProviderListResult<ToolProviderToolInfo>> {\n const composio = this.getRawClient();\n\n // ToolListParams is a discriminated union in TypeScript but the\n // underlying Zod schema accepts `limit` on every variant. We cast\n // through the base type so `limit` is always forwarded.\n const limit = options?.perPage;\n const query: ComposioToolListParams = (\n options?.toolkit\n ? { toolkits: [options.toolkit], limit, search: options?.search }\n : options?.search\n ? { search: options.search, limit }\n : { toolkits: [] as string[], limit }\n ) as ComposioToolListParams;\n\n const rawTools: ComposioTool[] = await composio.tools.getRawComposioTools(query);\n\n const data: ToolProviderToolInfo[] = rawTools.map(tool => ({\n slug: tool.slug,\n name: tool.name ?? tool.slug,\n description: tool.description,\n toolkit: tool.toolkit?.slug,\n }));\n\n return {\n data,\n pagination: {\n page: options?.page ?? 1,\n perPage: limit,\n hasMore: limit !== undefined && rawTools.length >= limit,\n },\n };\n }\n\n /**\n * Get JSON schema for a specific tool via `composio.tools.getRawComposioToolBySlug()`.\n */\n async getToolSchema(toolSlug: string): Promise<Record<string, unknown> | null> {\n try {\n const composio = this.getRawClient();\n const tool: ComposioTool = await composio.tools.getRawComposioToolBySlug(toolSlug);\n if (!tool) return null;\n return (tool.inputParameters ?? {}) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /**\n * Resolve executable tools in Mastra format via `composio.tools.get(userId, { tools: [...] })`.\n *\n * Uses MastraProvider so returned tools are `ReturnType<typeof createTool>` — compatible\n * with Mastra's `ToolAction` interface.\n */\n async resolveTools(\n toolSlugs: string[],\n toolConfigs?: Record<string, StorageToolConfig>,\n options?: ResolveToolProviderToolsOptions,\n ): Promise<Record<string, ToolAction<unknown, unknown>>> {\n if (toolSlugs.length === 0) return {};\n\n const resourceId = options?.requestContext?.[MASTRA_RESOURCE_ID_KEY];\n const userId = typeof resourceId === 'string' ? resourceId : (options?.userId ?? 'default');\n const composio = this.getMastraClient();\n\n // composio.tools.get returns MastraToolCollection = Record<string, MastraTool>\n const mastraTools: MastraToolCollection = await composio.tools.get(userId, { tools: toolSlugs });\n\n const result: Record<string, ToolAction<unknown, unknown>> = {};\n const entries: [string, MastraTool][] = Object.entries(mastraTools ?? {});\n\n for (const [key, tool] of entries) {\n if (!tool) continue;\n const slug = tool.id ?? key;\n const descOverride = toolConfigs?.[slug]?.description;\n // Composio ships tools typed against its bundled Mastra schema version; runtime shape matches ToolAction.\n if (descOverride) {\n result[slug] = { ...tool, description: descOverride } as unknown as ToolAction<unknown, unknown>;\n } else {\n result[slug] = tool as unknown as ToolAction<unknown, unknown>;\n }\n }\n\n return result;\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/composio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/composio.ts"],"sourcesContent":["import type {\n ToolProvider,\n ToolProviderInfo,\n ToolProviderToolkit,\n ToolProviderToolInfo,\n ToolProviderListResult,\n ListToolProviderToolsOptions,\n ResolveToolProviderToolsOptions,\n} from '@mastra/core/tool-provider';\nimport type { ToolAction } from '@mastra/core/tools';\nimport type { StorageToolConfig } from '@mastra/core/storage';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\n\nimport { Composio } from '@composio/core';\nimport type { Tool as ComposioTool, ToolKitItem, ToolListParams as ComposioToolListParams } from '@composio/core';\nimport { MastraProvider } from '@composio/mastra';\nimport type { MastraTool, MastraToolCollection } from '@composio/mastra';\n\nexport interface ComposioToolProviderConfig {\n /** Composio API key */\n apiKey: string;\n}\n\n/**\n * Composio tool provider adapter.\n *\n * Uses `@composio/core` + `@composio/mastra` SDKs for both tool discovery\n * and runtime resolution. Both packages are optional peer dependencies and\n * tree-shaken if this provider class isn't imported.\n *\n * Discovery methods (`listToolkits`, `listTools`, `getToolSchema`) use the\n * raw Composio client (no userId required).\n *\n * Runtime method (`resolveTools`) uses the MastraProvider so returned tools are\n * already in Mastra's `createTool()` format.\n */\nexport class ComposioToolProvider implements ToolProvider {\n readonly info: ToolProviderInfo = {\n id: 'composio',\n name: 'Composio',\n description: 'Access 10,000+ tools from 150+ apps via Composio',\n };\n\n private apiKey: string;\n private rawClient: Composio | null = null;\n private mastraClient: Composio<MastraProvider> | null = null;\n\n constructor(config: ComposioToolProviderConfig) {\n this.apiKey = config.apiKey;\n }\n\n /**\n * Get or create a raw Composio client (no provider — for discovery only).\n */\n private getRawClient(): Composio {\n if (!this.rawClient) {\n this.rawClient = new Composio({ apiKey: this.apiKey });\n }\n return this.rawClient;\n }\n\n /**\n * Get or create a Composio client with MastraProvider (for runtime tools).\n */\n private getMastraClient(): Composio<MastraProvider> {\n if (!this.mastraClient) {\n this.mastraClient = new Composio({\n apiKey: this.apiKey,\n provider: new MastraProvider(),\n });\n }\n return this.mastraClient;\n }\n\n /**\n * List available toolkits via `composio.toolkits.get({})`.\n * Returns: `ToolKitListResponse` — an array of `{ slug, name, meta: { description, logo, ... } }`.\n */\n async listToolkits(): Promise<ToolProviderListResult<ToolProviderToolkit>> {\n const composio = this.getRawClient();\n const toolkits: ToolKitItem[] = await composio.toolkits.get({});\n\n const data: ToolProviderToolkit[] = toolkits.map(tk => ({\n slug: tk.slug,\n name: tk.name,\n description: tk.meta?.description,\n icon: tk.meta?.logo,\n }));\n return { data };\n }\n\n /**\n * List available tools via `composio.tools.getRawComposioTools()`.\n * No userId required — returns raw tool definitions for UI browsing.\n */\n async listTools(options?: ListToolProviderToolsOptions): Promise<ToolProviderListResult<ToolProviderToolInfo>> {\n const composio = this.getRawClient();\n\n // ToolListParams is a discriminated union in TypeScript but the\n // underlying Zod schema accepts `limit` on every variant. We cast\n // through the base type so `limit` is always forwarded.\n const limit = options?.perPage;\n const query: ComposioToolListParams = (\n options?.toolkit\n ? { toolkits: [options.toolkit], limit, search: options?.search }\n : options?.search\n ? { search: options.search, limit }\n : { toolkits: [] as string[], limit }\n ) as ComposioToolListParams;\n\n const rawTools: ComposioTool[] = await composio.tools.getRawComposioTools(query);\n\n const data: ToolProviderToolInfo[] = rawTools.map(tool => ({\n slug: tool.slug,\n name: tool.name ?? tool.slug,\n description: tool.description,\n toolkit: tool.toolkit?.slug,\n }));\n\n return {\n data,\n pagination: {\n page: options?.page ?? 1,\n perPage: limit,\n hasMore: limit !== undefined && rawTools.length >= limit,\n },\n };\n }\n\n /**\n * Get JSON schema for a specific tool via `composio.tools.getRawComposioToolBySlug()`.\n */\n async getToolSchema(toolSlug: string): Promise<Record<string, unknown> | null> {\n try {\n const composio = this.getRawClient();\n const tool: ComposioTool = await composio.tools.getRawComposioToolBySlug(toolSlug);\n if (!tool) return null;\n return (tool.inputParameters ?? {}) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /**\n * Resolve executable tools in Mastra format via `composio.tools.get(userId, { tools: [...] })`.\n *\n * Uses MastraProvider so returned tools are `ReturnType<typeof createTool>` — compatible\n * with Mastra's `ToolAction` interface.\n */\n async resolveTools(\n toolSlugs: string[],\n toolConfigs?: Record<string, StorageToolConfig>,\n options?: ResolveToolProviderToolsOptions,\n ): Promise<Record<string, ToolAction<unknown, unknown>>> {\n if (toolSlugs.length === 0) return {};\n\n const resourceId = options?.requestContext?.[MASTRA_RESOURCE_ID_KEY];\n const userId = typeof resourceId === 'string' ? resourceId : (options?.userId ?? 'default');\n const composio = this.getMastraClient();\n\n // composio.tools.get returns MastraToolCollection = Record<string, MastraTool>\n const mastraTools: MastraToolCollection = await composio.tools.get(userId, { tools: toolSlugs });\n\n const result: Record<string, ToolAction<unknown, unknown>> = {};\n const entries: [string, MastraTool][] = Object.entries(mastraTools ?? {});\n\n for (const [key, tool] of entries) {\n if (!tool) continue;\n const slug = tool.id ?? key;\n const descOverride = toolConfigs?.[slug]?.description;\n if (descOverride) {\n result[slug] = { ...tool, description: descOverride }
|
|
1
|
+
{"version":3,"sources":["../src/providers/composio.ts"],"sourcesContent":["import type {\n ToolProvider,\n ToolProviderInfo,\n ToolProviderToolkit,\n ToolProviderToolInfo,\n ToolProviderListResult,\n ListToolProviderToolsOptions,\n ResolveToolProviderToolsOptions,\n} from '@mastra/core/tool-provider';\nimport type { ToolAction } from '@mastra/core/tools';\nimport type { StorageToolConfig } from '@mastra/core/storage';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\n\nimport { Composio } from '@composio/core';\nimport type { Tool as ComposioTool, ToolKitItem, ToolListParams as ComposioToolListParams } from '@composio/core';\nimport { MastraProvider } from '@composio/mastra';\nimport type { MastraTool, MastraToolCollection } from '@composio/mastra';\n\nexport interface ComposioToolProviderConfig {\n /** Composio API key */\n apiKey: string;\n}\n\n/**\n * Composio tool provider adapter.\n *\n * Uses `@composio/core` + `@composio/mastra` SDKs for both tool discovery\n * and runtime resolution. Both packages are optional peer dependencies and\n * tree-shaken if this provider class isn't imported.\n *\n * Discovery methods (`listToolkits`, `listTools`, `getToolSchema`) use the\n * raw Composio client (no userId required).\n *\n * Runtime method (`resolveTools`) uses the MastraProvider so returned tools are\n * already in Mastra's `createTool()` format.\n */\nexport class ComposioToolProvider implements ToolProvider {\n readonly info: ToolProviderInfo = {\n id: 'composio',\n name: 'Composio',\n description: 'Access 10,000+ tools from 150+ apps via Composio',\n };\n\n private apiKey: string;\n private rawClient: Composio | null = null;\n private mastraClient: Composio<MastraProvider> | null = null;\n\n constructor(config: ComposioToolProviderConfig) {\n this.apiKey = config.apiKey;\n }\n\n /**\n * Get or create a raw Composio client (no provider — for discovery only).\n */\n private getRawClient(): Composio {\n if (!this.rawClient) {\n this.rawClient = new Composio({ apiKey: this.apiKey });\n }\n return this.rawClient;\n }\n\n /**\n * Get or create a Composio client with MastraProvider (for runtime tools).\n */\n private getMastraClient(): Composio<MastraProvider> {\n if (!this.mastraClient) {\n this.mastraClient = new Composio({\n apiKey: this.apiKey,\n provider: new MastraProvider(),\n });\n }\n return this.mastraClient;\n }\n\n /**\n * List available toolkits via `composio.toolkits.get({})`.\n * Returns: `ToolKitListResponse` — an array of `{ slug, name, meta: { description, logo, ... } }`.\n */\n async listToolkits(): Promise<ToolProviderListResult<ToolProviderToolkit>> {\n const composio = this.getRawClient();\n const toolkits: ToolKitItem[] = await composio.toolkits.get({});\n\n const data: ToolProviderToolkit[] = toolkits.map(tk => ({\n slug: tk.slug,\n name: tk.name,\n description: tk.meta?.description,\n icon: tk.meta?.logo,\n }));\n return { data };\n }\n\n /**\n * List available tools via `composio.tools.getRawComposioTools()`.\n * No userId required — returns raw tool definitions for UI browsing.\n */\n async listTools(options?: ListToolProviderToolsOptions): Promise<ToolProviderListResult<ToolProviderToolInfo>> {\n const composio = this.getRawClient();\n\n // ToolListParams is a discriminated union in TypeScript but the\n // underlying Zod schema accepts `limit` on every variant. We cast\n // through the base type so `limit` is always forwarded.\n const limit = options?.perPage;\n const query: ComposioToolListParams = (\n options?.toolkit\n ? { toolkits: [options.toolkit], limit, search: options?.search }\n : options?.search\n ? { search: options.search, limit }\n : { toolkits: [] as string[], limit }\n ) as ComposioToolListParams;\n\n const rawTools: ComposioTool[] = await composio.tools.getRawComposioTools(query);\n\n const data: ToolProviderToolInfo[] = rawTools.map(tool => ({\n slug: tool.slug,\n name: tool.name ?? tool.slug,\n description: tool.description,\n toolkit: tool.toolkit?.slug,\n }));\n\n return {\n data,\n pagination: {\n page: options?.page ?? 1,\n perPage: limit,\n hasMore: limit !== undefined && rawTools.length >= limit,\n },\n };\n }\n\n /**\n * Get JSON schema for a specific tool via `composio.tools.getRawComposioToolBySlug()`.\n */\n async getToolSchema(toolSlug: string): Promise<Record<string, unknown> | null> {\n try {\n const composio = this.getRawClient();\n const tool: ComposioTool = await composio.tools.getRawComposioToolBySlug(toolSlug);\n if (!tool) return null;\n return (tool.inputParameters ?? {}) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /**\n * Resolve executable tools in Mastra format via `composio.tools.get(userId, { tools: [...] })`.\n *\n * Uses MastraProvider so returned tools are `ReturnType<typeof createTool>` — compatible\n * with Mastra's `ToolAction` interface.\n */\n async resolveTools(\n toolSlugs: string[],\n toolConfigs?: Record<string, StorageToolConfig>,\n options?: ResolveToolProviderToolsOptions,\n ): Promise<Record<string, ToolAction<unknown, unknown>>> {\n if (toolSlugs.length === 0) return {};\n\n const resourceId = options?.requestContext?.[MASTRA_RESOURCE_ID_KEY];\n const userId = typeof resourceId === 'string' ? resourceId : (options?.userId ?? 'default');\n const composio = this.getMastraClient();\n\n // composio.tools.get returns MastraToolCollection = Record<string, MastraTool>\n const mastraTools: MastraToolCollection = await composio.tools.get(userId, { tools: toolSlugs });\n\n const result: Record<string, ToolAction<unknown, unknown>> = {};\n const entries: [string, MastraTool][] = Object.entries(mastraTools ?? {});\n\n for (const [key, tool] of entries) {\n if (!tool) continue;\n const slug = tool.id ?? key;\n const descOverride = toolConfigs?.[slug]?.description;\n // Composio ships tools typed against its bundled Mastra schema version; runtime shape matches ToolAction.\n if (descOverride) {\n result[slug] = { ...tool, description: descOverride } as unknown as ToolAction<unknown, unknown>;\n } else {\n result[slug] = tool as unknown as ToolAction<unknown, unknown>;\n }\n }\n\n return result;\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/editor",
|
|
3
|
-
"version": "0.10.1",
|
|
3
|
+
"version": "0.10.2-alpha.1",
|
|
4
4
|
"description": "Mastra Editor for agent management and instantiation",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -75,11 +75,12 @@
|
|
|
75
75
|
"@arcadeai/arcadejs": "^2.3.0",
|
|
76
76
|
"@composio/core": "^0.6.5",
|
|
77
77
|
"@composio/mastra": "^0.6.5",
|
|
78
|
-
"@mastra/memory": "1.20.
|
|
79
|
-
"@mastra/schema-compat": "1.2.
|
|
78
|
+
"@mastra/memory": "1.20.1-alpha.1",
|
|
79
|
+
"@mastra/schema-compat": "1.2.11-alpha.0"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@hono/node-server": "^1.19.11",
|
|
83
|
+
"@types/node": "22.19.15",
|
|
83
84
|
"hono": "^4.12.8",
|
|
84
85
|
"tsup": "^8.5.1",
|
|
85
86
|
"typescript": "^6.0.3",
|
|
@@ -87,11 +88,11 @@
|
|
|
87
88
|
"zod": "^3.25.76",
|
|
88
89
|
"@internal/ai-sdk-v4": "0.0.46",
|
|
89
90
|
"@internal/ai-sdk-v5": "0.0.46",
|
|
90
|
-
"@
|
|
91
|
-
"@mastra/
|
|
92
|
-
"@mastra/
|
|
93
|
-
"@mastra/
|
|
94
|
-
"@
|
|
91
|
+
"@internal/ai-v6": "0.0.46",
|
|
92
|
+
"@mastra/hono": "1.4.21-alpha.3",
|
|
93
|
+
"@mastra/libsql": "1.12.0-alpha.0",
|
|
94
|
+
"@mastra/core": "1.38.0-alpha.3",
|
|
95
|
+
"@mastra/mcp": "1.9.0-alpha.0"
|
|
95
96
|
},
|
|
96
97
|
"peerDependencies": {
|
|
97
98
|
"@mastra/core": ">=1.34.0-0 <2.0.0-0",
|