@mastra/connect 1.1.0-alpha.2 → 1.1.0-alpha.4

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.
@@ -13,6 +13,8 @@ export interface NamedConnection {
13
13
  name: string;
14
14
  /** Raw accountLabel from the platform, if any (may be null/empty). */
15
15
  accountLabel?: string | null;
16
+ /** Resource key the connection is scoped to; null for global connections. */
17
+ resourceId?: string | null;
16
18
  }
17
19
  /**
18
20
  * Builds the ordered list of named connections for one provider. Called only
@@ -61,6 +63,13 @@ export declare function buildMcpMultiConnectionTools(input: {
61
63
  disallowTools?: string[];
62
64
  requireApproval?: boolean | string[];
63
65
  client: ResolvedClient;
66
+ /**
67
+ * Resource-free client for global connections' transports. The MCP client
68
+ * cache is shared across resource scopes, so a global connection's
69
+ * transport must not carry whichever scope's resource header resolved it
70
+ * first. Defaults to `client` (already resource-free in the global scope).
71
+ */
72
+ globalClient?: ResolvedClient;
64
73
  mcpClients: Map<string, {
65
74
  integrationId: string;
66
75
  connectionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"multi-connection.d.ts","sourceRoot":"","sources":["../src/multi-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGxF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,6HAA6H;IAC7H,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CA8BrF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,eAAe,EAAE,EAC9B,cAAc,EAAE,MAAM,GACrB,MAAM,CAgBR;AAiLD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEpE;AAkDD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,YAAY,EAAE,yBAAyB,CAAC;IACxC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,GAAG,UAAU,CAyCb;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5F,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyHtB"}
1
+ {"version":3,"file":"multi-connection.d.ts","sourceRoot":"","sources":["../src/multi-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGxF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,6HAA6H;IAC7H,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAmCrF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,eAAe,EAAE,EAC9B,cAAc,EAAE,MAAM,GACrB,MAAM,CAgBR;AAiLD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEpE;AAkDD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,YAAY,EAAE,yBAAyB,CAAC;IACxC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,GAAG,UAAU,CAyCb;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC5F,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0HtB"}
@@ -10,7 +10,7 @@
10
10
  * rather than exploding at runtime.
11
11
  */
12
12
  import type { RequestContext } from '@mastra/core/request-context';
13
- import { type ConnectClientOptions, type ProxyRequestOptions } from '../client.js';
13
+ import type { ConnectClientOptions, ProxyRequestOptions } from '../client.js';
14
14
  /**
15
15
  * The shape of an individual request as templates author them — a strict
16
16
  * subset of the upstream proxy configuration containing only the fields the
@@ -1 +1 @@
1
- {"version":3,"file":"platform-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/platform-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/platform-proxy.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -83,6 +83,20 @@ export interface ToolsOptions {
83
83
  client?: ConnectClientOptions;
84
84
  /** How long a resolved snapshot stays fresh, in milliseconds. Default 30_000. `0` revalidates every resolution. */
85
85
  ttlMs?: number;
86
+ /**
87
+ * Scope resolution to one end user. When set, the resolver returns tools
88
+ * for the project's global connections **plus** the connections created for
89
+ * this resource key, and every platform call made under the scope asserts
90
+ * `x-mastra-resource-id` so the platform can enforce ownership. Omit it to
91
+ * keep today's global-only behavior.
92
+ *
93
+ * Accepts a static key (`tools({ resourceId: userId })` — the per-request
94
+ * pattern `tools: (ctx) => tools({ resourceId: ... })` stays cheap because
95
+ * identical options share one internal state) or a callback derived per
96
+ * resolution from the invocation context. A callback returning `undefined`
97
+ * resolves global-only.
98
+ */
99
+ resourceId?: string | ((ctx?: ToolsResolverContext) => string | undefined | Promise<string | undefined>);
86
100
  }
87
101
  type ResolvedToolsRecord = Record<string, {
88
102
  id: string;
@@ -111,11 +125,17 @@ export type ToolsWithInput = Record<string, {
111
125
  * restarting the server. Call it directly (`await tools()`) when you need the
112
126
  * current flat tool record.
113
127
  */
114
- export interface ToolsResolver {
128
+ export interface ToolsResolver extends Promise<ResolvedToolsRecord> {
115
129
  (ctx?: ToolsResolverContext): Promise<ResolvedToolsRecord>;
116
130
  /** Fetches tools from the platform now and updates the cache. Rejects if the platform fetch fails. */
117
131
  refresh(): Promise<ResolvedToolsRecord>;
118
- /** Closes MCP transports owned by this resolver and clears its cached snapshot. */
132
+ /**
133
+ * Clears the cached snapshots and closes the MCP transports of the state
134
+ * behind this resolver. Resolvers created with identical options share that
135
+ * state, so this disconnects them too — but not permanently: a later
136
+ * resolution rebuilds the state, and already-returned MCP tools reconnect
137
+ * on their next call.
138
+ */
119
139
  disconnect(): Promise<void>;
120
140
  /**
121
141
  * Returns a new resolver that merges `extra` tools into every resolution,
@@ -137,6 +157,10 @@ export interface ToolsResolver {
137
157
  * usual TTL / stale-while-revalidate semantics.
138
158
  */
139
159
  export type ToolsOptionsInput = ToolsOptions | ((ctx?: ToolsResolverContext) => ToolsOptions | Promise<ToolsOptions>);
160
+ /** Test-only: current number of states in the shared registry. */
161
+ export declare function __sharedToolsStateCountForTests(): number;
162
+ /** Test-only: disconnects and forgets every shared resolver state. */
163
+ export declare function __clearSharedToolsStateForTests(): Promise<void>;
140
164
  /**
141
165
  * Returns a live toolset resolver over the project's Platform connections.
142
166
  * HTTP providers are loaded from the shipped `PROVIDERS` registry. MCP providers
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAA8D,MAAM,aAAa,CAAC;AAkBpH,UAAU,wBAAwB;IAChC,wGAAwG;IACxG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GACzD,CACI;IACE;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB,GACD;IACE,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CACJ,CAAC;AAEJ,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,oBAAoB,CAAC,CAAC;IACtE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,mHAAmH;IACnH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE1D,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9B,CAAC,CAAC,GAAG,CAAC,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC,CAAC;AAE/G;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3D,sGAAsG;IACtG,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxC,mFAAmF;IACnF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,oBAAoB,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAYtH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa,CAyKpE"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Self-contained hosted connect page served by `userConnectRoutes()`.
3
+ *
4
+ * The page only ever talks to the mounted routes on the same origin — it never
5
+ * sees a platform token. OAuth and credential collection happen inside the
6
+ * platform-hosted `connectUrl` popup returned by the session route, so no
7
+ * vendor SDK is bundled here. Flow: explicit Connect click → POST sessions →
8
+ * popup to `connectUrl` → poll status every 2s (5 min cap) → redirect to the
9
+ * validated `returnTo` (or show a success state when none was given).
10
+ */
11
+ export interface ConnectPageProvider {
12
+ id: string;
13
+ displayName?: string | null;
14
+ logoUrl?: string | null;
15
+ }
16
+ export interface ConnectPageParams {
17
+ /** Mount prefix of the connect routes, e.g. `/connect`. */
18
+ basePath: string;
19
+ provider: ConnectPageProvider;
20
+ /** Already validated by the route; null renders the in-page success state. */
21
+ returnTo: string | null;
22
+ }
23
+ export declare function renderConnectPage(params: ConnectPageParams): string;
24
+ //# sourceMappingURL=user-connect-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-connect-page.d.ts","sourceRoot":"","sources":["../src/user-connect-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAkCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA8InE"}
@@ -0,0 +1,72 @@
1
+ import type { ApiRoute } from '@mastra/core/server';
2
+ import type { ConnectClientOptions } from './client.js';
3
+ /**
4
+ * Identity context handed to the optional {@link UserConnectRoutesOptions.resourceId}
5
+ * callback, derived from the server's request pipeline.
6
+ */
7
+ export interface UserConnectIdentityContext {
8
+ /** Request-scoped context populated by the server (auth middleware, custom middleware). */
9
+ requestContext?: {
10
+ get(key: string): unknown;
11
+ };
12
+ /** The authenticated user the server's auth pipeline stored on the request context, when present. */
13
+ user?: unknown;
14
+ }
15
+ export interface UserConnectRoutesOptions {
16
+ /**
17
+ * Required explicit allowlist of platform integration ids exposed to end
18
+ * users (e.g. `['linear', 'slack']`). The end-user surface never defaults
19
+ * open: providers outside this set 404 on every mounted route.
20
+ */
21
+ providers: string[];
22
+ /**
23
+ * Derives the caller's end-user resource key per request. Defaults to the
24
+ * server-derived `MASTRA_RESOURCE_ID_KEY`, which `server.auth.mapUserToResourceId`
25
+ * populates after authentication. A request with no resolvable resource key
26
+ * (callback absent and key unset, callback returning a falsy value, or
27
+ * callback throwing) is rejected with 401 on every mounted route.
28
+ */
29
+ resourceId?: (ctx: UserConnectIdentityContext) => string | undefined | Promise<string | undefined>;
30
+ /** Mount prefix for every route. Default `/connect`. */
31
+ basePath?: string;
32
+ /** Platform project whose connections the routes act on. Falls back to MASTRA_PROJECT_ID. */
33
+ projectId?: string;
34
+ /** Platform client configuration. `client.resourceId` is rejected — the routes scope per request. */
35
+ client?: ConnectClientOptions;
36
+ returnTo?: {
37
+ /**
38
+ * Origins (e.g. `https://app.example.com`) allowed as absolute `returnTo`
39
+ * redirect targets on the hosted page. Relative paths are always allowed;
40
+ * everything else is rejected to keep the page free of open redirects.
41
+ */
42
+ allowedOrigins?: string[];
43
+ };
44
+ }
45
+ /**
46
+ * Validates a `returnTo` redirect target. Relative paths (`/done`) are always
47
+ * allowed; protocol-relative (`//host`), backslash tricks, and non-http(s)
48
+ * schemes are rejected; absolute URLs require their origin to be allowlisted.
49
+ */
50
+ export declare function validateReturnTo(raw: string | undefined, allowedOrigins: string[]): {
51
+ ok: true;
52
+ value: string | null;
53
+ } | {
54
+ ok: false;
55
+ };
56
+ /**
57
+ * Builds the mountable end-user connect surface as `ApiRoute[]` for
58
+ * `server.apiRoutes`. The routes do no authentication of their own — the
59
+ * server's auth pipeline authenticates the request and
60
+ * `server.auth.mapUserToResourceId` establishes the end-user resource key the
61
+ * routes are gated on. Every platform call happens server-side with the
62
+ * configured platform token; the browser only ever talks to these routes.
63
+ *
64
+ * ```ts
65
+ * server: {
66
+ * auth: myAuth,
67
+ * apiRoutes: [...userConnectRoutes({ providers: ['linear', 'slack'] })],
68
+ * }
69
+ * ```
70
+ */
71
+ export declare function userConnectRoutes(options: UserConnectRoutesOptions): ApiRoute[];
72
+ //# sourceMappingURL=user-connect-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-connect-routes.d.ts","sourceRoot":"","sources":["../src/user-connect-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,KAAK,EAAE,oBAAoB,EAAqC,MAAM,aAAa,CAAC;AAI3F;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,2FAA2F;IAC3F,cAAc,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC/C,qGAAqG;IACrG,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnG,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT;;;;WAIG;QACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAoED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,cAAc,EAAE,MAAM,EAAE,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAkCpD;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,QAAQ,EAAE,CA2P/E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/connect",
3
- "version": "1.1.0-alpha.2",
3
+ "version": "1.1.0-alpha.4",
4
4
  "description": "Use Mastra platform integration connections as agent toolsets",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -55,17 +55,17 @@
55
55
  "tsx": "^4.23.1",
56
56
  "typescript": "^7.0.2",
57
57
  "vitest": "4.1.11",
58
- "zod": "^4.6.4",
58
+ "zod": "^4.6.7",
59
59
  "@internal/lint": "0.0.144",
60
60
  "@internal/types-builder": "0.0.119",
61
- "@mastra/core": "1.79.0-alpha.2"
61
+ "@mastra/core": "1.79.0-alpha.11"
62
62
  },
63
63
  "dependencies": {
64
- "@mastra/discord": "^1.3.1-alpha.0",
65
- "@mastra/telegram": "^0.2.3-alpha.0",
66
- "@mastra/teams": "^0.1.2-alpha.1",
64
+ "@mastra/discord": "^1.3.1-alpha.1",
65
+ "@mastra/mcp": "^2.5.0-alpha.2",
67
66
  "@mastra/slack": "^1.7.3-alpha.0",
68
- "@mastra/mcp": "^2.4.2-alpha.0"
67
+ "@mastra/telegram": "^0.2.3-alpha.1",
68
+ "@mastra/teams": "^0.1.2-alpha.2"
69
69
  },
70
70
  "scripts": {
71
71
  "add-provider": "tsx scripts/add-provider.ts",
@@ -74,8 +74,8 @@
74
74
  "generate-provider": "tsx scripts/generate-provider.ts",
75
75
  "generate:provider-docs": "tsx scripts/generate-provider-docs.ts && pnpm format:provider-docs",
76
76
  "format:provider-docs": "cd ../../docs && pnpm oxfmt-mdx --write src/content/en/reference/connect/providers.mdx",
77
- "lint": "oxlint . && eslint .",
78
- "lint:fix": "oxlint --fix . && eslint --fix .",
77
+ "lint": "oxlint --type-aware .",
78
+ "lint:fix": "oxlint --type-aware --fix .",
79
79
  "list-providers": "tsx scripts/list-providers.ts",
80
80
  "remove-provider": "tsx scripts/remove-provider.ts",
81
81
  "smoke-test": "tsx scripts/smoke-test/index.ts",