@silkweave/nestjs 1.10.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,16 @@
1
- $ tsdown
2
- ℹ tsdown v0.21.10 powered by rolldown v1.0.0-rc.17
3
- ℹ config file: /Users/atomic/projects/silkweave/silkweave/packages/nestjs/tsdown.config.ts
4
- ℹ entry: src/index.ts
5
- ℹ tsconfig: tsconfig.json
6
- ℹ Build start
7
- ℹ Cleaning 4 files
8
- ℹ Hint: consider adding deps.onlyBundle option to avoid unintended bundling of dependencies, or set deps.onlyBundle: false to disable this hint.
9
- See more at https://tsdown.dev/options/dependencies#deps-onlybundle
10
- Detected dependencies in bundle:
11
- - rxjs
12
- ℹ build/index.mjs 337.92 kB │ gzip: 49.52 kB
13
- ℹ build/index.mjs.map 576.49 kB │ gzip: 87.36 kB
14
- ℹ build/index.d.mts.map  2.98 kB │ gzip: 1.07 kB
15
- ℹ build/index.d.mts  15.96 kB │ gzip: 5.58 kB
16
- ℹ 4 files, total: 933.34 kB
17
- ✔ Build complete in 1110ms
1
+ $ tsdown
2
+ ℹ tsdown v0.21.10 powered by rolldown v1.0.0-rc.17
3
+ ℹ config file: /Users/atomic/projects/silkweave/silkweave/packages/nestjs/tsdown.config.ts
4
+ ℹ entry: src/index.ts
5
+ ℹ tsconfig: tsconfig.json
6
+ ℹ Build start
7
+ ℹ Hint: consider adding deps.onlyBundle option to avoid unintended bundling of dependencies, or set deps.onlyBundle: false to disable this hint.
8
+ See more at https://tsdown.dev/options/dependencies#deps-onlybundle
9
+ Detected dependencies in bundle:
10
+ - rxjs
11
+ ℹ build/index.mjs 339.14 kB │ gzip: 49.99 kB
12
+ ℹ build/index.mjs.map 579.22 kB │ gzip: 88.28 kB
13
+ ℹ build/index.d.mts.map  3.06 kB │ gzip: 1.10 kB
14
+ ℹ build/index.d.mts  17.08 kB │ gzip: 6.02 kB
15
+ ℹ 4 files, total: 938.50 kB
16
+ ✔ Build complete in 1034ms
@@ -1,5 +1,4 @@
1
-
2
- $ pnpm clean && pnpm build
1
+ $ pnpm clean && pnpm build
3
2
  $ rimraf build
4
3
  $ tsdown
5
4
  ℹ tsdown v0.21.10 powered by rolldown v1.0.0-rc.17
@@ -11,9 +10,9 @@
11
10
  See more at https://tsdown.dev/options/dependencies#deps-onlybundle
12
11
  Detected dependencies in bundle:
13
12
  - rxjs
14
- ℹ build/index.mjs 337.92 kB │ gzip: 49.52 kB
15
- ℹ build/index.mjs.map 576.49 kB │ gzip: 87.36 kB
16
- ℹ build/index.d.mts.map  2.98 kB │ gzip: 1.07 kB
17
- ℹ build/index.d.mts  15.96 kB │ gzip: 5.58 kB
18
- ℹ 4 files, total: 933.34 kB
19
- ✔ Build complete in 828ms
13
+ ℹ build/index.mjs 344.18 kB │ gzip: 51.78 kB
14
+ ℹ build/index.mjs.map 589.05 kB │ gzip: 91.22 kB
15
+ ℹ build/index.d.mts.map  3.45 kB │ gzip: 1.22 kB
16
+ ℹ build/index.d.mts  20.10 kB │ gzip: 6.89 kB
17
+ ℹ 4 files, total: 956.79 kB
18
+ ✔ Build complete in 822ms
package/README.md CHANGED
@@ -47,11 +47,10 @@ export class UserActions {
47
47
  return this.db.getUser(input.id)
48
48
  }
49
49
 
50
- @UseGuards(AdminGuard)
50
+ @UseGuards(AdminGuard) // guard reads the request header on every transport, MCP included
51
51
  @Action({
52
52
  description: 'Ban a user',
53
- input: BanInput,
54
- transports: ['rest', 'trpc'] // exclude from MCP tools
53
+ input: BanInput
55
54
  })
56
55
  ban(input: z.infer<typeof BanInput>) {
57
56
  return this.db.banUser(input.id, input.reason)
@@ -94,11 +93,11 @@ await app.listen(8080)
94
93
 
95
94
  The `users.list` and `users.get` actions are now reachable via:
96
95
 
97
- - **REST:** `GET /api/users/list?activeOnly=true` and `GET /api/users/get?id=1`
96
+ - **REST:** `GET /api/users/list?activeOnly=true` (query param) and `GET /api/users/1` (path param, via `path: 'users/:id'`)
98
97
  - **tRPC:** `client.usersList.query({ activeOnly: true })` and `client.usersGet.query({ id: '1' })`
99
98
  - **MCP:** tools `UsersList` and `UsersGet`
100
99
 
101
- `users.ban` skips MCP per its `transports: ['rest', 'trpc']` and is guarded by `@UseGuards(AdminGuard)` on every transport that has an HTTP request.
100
+ `users.ban` is guarded by `@UseGuards(AdminGuard)` on **every** transport - REST, tRPC, **and** MCP. The guard reads its credential from the request header (`switchToHttp().getRequest().headers`); over MCP the inbound tool-call headers are surfaced the same way (see [Guards & DI](#guards--di)).
102
101
 
103
102
  ## Decorators
104
103
 
@@ -112,6 +111,9 @@ The `users.list` and `users.get` actions are now reachable via:
112
111
  | `output` | `z.ZodObject` | - | Optional output schema (used by tRPC type inference) |
113
112
  | `chunk` | `z.ZodType` | - | Schema for chunks yielded by a streaming (`async function*`) method. **Required** when the method is an async generator |
114
113
  | `kind` | `'query' \| 'mutation'` | `'mutation'` | `'query'` → GET in REST, `.query()` in tRPC. `'mutation'` → POST / `.mutation()` |
114
+ | `method` | `'GET' \| 'POST' \| 'PUT' \| 'DELETE'` | `POST` (or `GET` when `kind: 'query'`) | REST HTTP verb. Overrides the `kind`-derived default |
115
+ | `path` | `string` | action name with dots as slashes | REST route, optionally with `:param` placeholders (e.g. `'spaces/:spaceId/users'`). Each placeholder must be a key of `input` and is resolved from the URL path |
116
+ | `queryParams` | `(keyof input)[]` | - | Input fields read from the URL query string instead of the body (e.g. `['offset', 'limit']`). On a bodyless GET every non-path field is read from the query string automatically |
115
117
  | `transports` | `('rest' \| 'trpc' \| 'mcp')[]` | all | Allowlist of transports that expose this action |
116
118
  | `isEnabled` | `(ctx) => boolean` | - | Dynamic gate (AND-combined with `transports`) |
117
119
  | `toolResult` | `(response, ctx) => CallToolResult` | - | Custom MCP `CallToolResult` formatter |
@@ -141,12 +143,39 @@ Maps actions to REST routes on the Nest HTTP server.
141
143
  | `basePath` | `string` | `'/api'` | URL prefix joined to each action's path |
142
144
  | `auth` | `AuthConfig` | - | `@silkweave/auth` bearer-token config |
143
145
 
144
- Routes follow `{basePath}/{action-name-with-slashes}` where dots in action names become slashes:
146
+ By default routes follow `{basePath}/{action-name-with-slashes}` where dots in action names become slashes, and the verb comes from `kind`:
145
147
 
146
148
  - `users.list` (query) → `GET /api/users/list`
147
149
  - `users.ban` (mutation) → `POST /api/users/ban`
148
150
 
149
- Each action is registered as an individual route on Nest's HTTP adapter (not a sub-app). Input is parsed from `req.query` (queries) or `req.body` (mutations) and validated against the action's Zod schema; validation failures return HTTP 400 with the Zod issues.
151
+ The action's `method`, `path`, and `queryParams` fields override this (see the `@Action` options table above):
152
+
153
+ - `path: 'users/:id'`, `kind: 'query'` → `GET /api/users/:id` (`id` from the path)
154
+ - `queryParams: ['activeOnly']`, `kind: 'query'` → `GET /api/users/list?activeOnly=true`
155
+
156
+ Each action is registered as an individual route on Nest's HTTP adapter (not a sub-app). Input is merged from the request body, `queryParams` query-string fields, and `:param` path placeholders (path/query strings are coerced to the schema's primitive), then validated against the action's Zod schema; validation failures return HTTP 400 with the Zod issues.
157
+
158
+ #### Swagger / OpenAPI
159
+
160
+ `@nestjs/swagger` builds its document by scanning **controllers**, but Silkweave registers action routes directly on the HTTP adapter - so the scanner never sees them. `addSilkweaveActions(app, document, options?)` closes the gap: it discovers the actions through the same `ActionDiscovery` provider the `rest()` adapter uses, builds OpenAPI paths with the same routing logic, and merges them into the document. The result stays in sync with the live routes without any dynamic controllers. Call it between `createDocument()` and `setup()`:
161
+
162
+ ```ts
163
+ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'
164
+ import { addSilkweaveActions } from '@silkweave/nestjs'
165
+
166
+ const config = new DocumentBuilder().setTitle('My API').setVersion('1.0.0').build()
167
+ const document = SwaggerModule.createDocument(app, config) // your controllers
168
+ addSilkweaveActions(app, document) // + silkweave actions
169
+ SwaggerModule.setup('api/docs', app, document)
170
+ ```
171
+
172
+ | Option | Type | Default | Description |
173
+ |--------|------|---------|-------------|
174
+ | `basePath` | `string` | the `rest()` adapter's `basePath`, else `'/api'` | URL prefix the action routes are mounted on |
175
+ | `tag` | `string` | `'Actions'` | OpenAPI tag the actions are grouped under |
176
+ | `includeDisabled` | `boolean` | `false` | Include actions gated off the REST transport (via `transports` / `isEnabled`) |
177
+
178
+ `@nestjs/swagger` is an **optional** peer dependency - install it alongside `@silkweave/nestjs` to use this helper. Path params, `queryParams`, request bodies, and `output`/`chunk` response schemas are all derived from the action's Zod schemas.
150
179
 
151
180
  ### `trpc(options?)`
152
181
 
@@ -191,7 +220,13 @@ Mounts the MCP Streamable HTTP transport directly at `basePath`, with sideload (
191
220
 
192
221
  ## Guards & DI
193
222
 
194
- Native NestJS `@UseGuards()` and `@UseInterceptors()` on `@Action` methods run for every HTTP-backed transport. Guards receive an `ExecutionContext` with the HTTP request in `switchToHttp().getRequest()`. The `Reflector` is also wired up so guards can read custom metadata.
223
+ Native NestJS `@UseGuards()` and `@UseInterceptors()` on `@Action` methods run for **every** transport - REST, tRPC, and MCP. Guards receive an `ExecutionContext` with the request in `switchToHttp().getRequest()`. The `Reflector` is also wired up so guards can read custom metadata.
224
+
225
+ **Headers over MCP.** REST and tRPC pass the raw HTTP request to the guard. For MCP (Streamable HTTP), the inbound tool-call request is surfaced as a stand-in `{ headers, url, params, query }` object built from the MCP SDK's `extra.requestInfo`, so a header-based guard - e.g. one reading `getRequest().headers['x-api-key']` - works unchanged. `ExecutionContext.getType()` is `'http'` whenever a request is available (and `'rpc'` for transports with none, e.g. MCP stdio). Caveats:
226
+
227
+ - Only **headers** (and the request `url`) cross the MCP boundary. There are no path `params` or `query` on an MCP tool call, so `getRequest().params` / `.query` are empty objects - guards relying on them degrade to "deny" rather than crash.
228
+ - A guard that denies (returns `false` or throws) produces a clean MCP tool error (`ForbiddenException`), not an HTTP 500.
229
+ - For OAuth 2.1 / bearer-token MCP auth, prefer `mcp({ auth })` and read the resolved identity from the silkweave context (`ctx.get('auth')`) inside the action; the header stand-in is for custom request-reading guards.
195
230
 
196
231
  Action methods are normal Nest provider methods - inject services via the constructor as usual.
197
232
 
package/build/index.d.mts CHANGED
@@ -1,11 +1,12 @@
1
- import { CanActivate, DynamicModule, MiddlewareConsumer, NestModule, Type } from "@nestjs/common";
1
+ import { CanActivate, DynamicModule, INestApplication, MiddlewareConsumer, NestModule, Type } from "@nestjs/common";
2
2
  import { AuthConfig } from "@silkweave/auth";
3
- import { Action as Action$1, ActionKind, SilkweaveContext, SilkweaveOptions } from "@silkweave/core";
3
+ import { Action as Action$1, ActionKind, HttpMethod, SilkweaveContext, SilkweaveOptions } from "@silkweave/core";
4
4
  import z$1 from "zod/v4";
5
5
  import { InferTrpcRouter } from "@silkweave/trpc";
6
6
  import { TypegenFormat } from "@silkweave/typegen";
7
7
  import { DiscoveryService, HttpAdapterHost, MetadataScanner, ModuleRef, Reflector } from "@nestjs/core";
8
8
  import { CorsOptions } from "cors";
9
+ import { OpenAPIObject } from "@nestjs/swagger";
9
10
 
10
11
  //#region src/lib/types.d.ts
11
12
  /**
@@ -35,6 +36,12 @@ interface NestAdapterRegisterContext {
35
36
  interface NestSilkweaveAdapter {
36
37
  /** Adapter discriminator - set on the silkweave context as `ctx.get('adapter')`. */
37
38
  readonly name: 'rest' | 'trpc' | 'mcp' | 'typegen';
39
+ /**
40
+ * URL prefix the adapter mounts on (e.g. `'/api'`). Surfaced for introspection
41
+ * tooling such as `addSilkweaveActions()` (OpenAPI/Swagger), which reads it to
42
+ * keep generated docs aligned with the live routes.
43
+ */
44
+ readonly basePath?: string;
38
45
  /**
39
46
  * When `true`, the adapter receives every discovered action regardless of
40
47
  * each action's `transports` allowlist / `isEnabled` gate. Used by
@@ -95,12 +102,17 @@ interface RestAdapterOptions {
95
102
  * REST adapter for `@silkweave/nestjs`. Registers each discovered `@Action`
96
103
  * as an individual route on Nest's HTTP adapter:
97
104
  *
98
- * - `kind: 'query'` `GET ${basePath}/${actionName-with-slashes}` (input from query string)
99
- * - `kind: 'mutation'` `POST ${basePath}/${actionName-with-slashes}` (input from JSON body)
105
+ * - HTTP verb comes from `method`, else `GET` for `kind: 'query'`, else `POST`.
106
+ * - Path comes from `path` (joined to `basePath`, may contain `:param`
107
+ * placeholders), else `${basePath}/${actionName-with-slashes}`.
108
+ * - Input is merged from the request body, the `queryParams` query-string
109
+ * fields, and any `:param` path placeholders (see `resolveActionInput`).
100
110
  *
101
- * Routes show up in Nest's `RoutesResolver` logger and are eligible for
102
- * `@nestjs/swagger` scanning. Works on `@nestjs/platform-express` out of the
103
- * box. For `@nestjs/platform-fastify`, register `@fastify/express` first.
111
+ * Routes show up in Nest's `RoutesResolver` logger. They are registered
112
+ * directly on the HTTP adapter (not as Nest controllers), so `@nestjs/swagger`'s
113
+ * controller scanner does not see them - use `addSilkweaveActions()` to add them
114
+ * to the OpenAPI document. Works on `@nestjs/platform-express` out of the box.
115
+ * For `@nestjs/platform-fastify`, register `@fastify/express` first.
104
116
  */
105
117
  declare function rest(options?: RestAdapterOptions): NestSilkweaveAdapter;
106
118
  //#endregion
@@ -179,6 +191,12 @@ interface ActionMetadata<I extends object = object, O extends object = object, C
179
191
  chunk?: z$1.ZodType<C>;
180
192
  /** `'query'` (GET in REST, `.query()` in tRPC) or `'mutation'` (POST in REST, `.mutation()` in tRPC). Default: `'mutation'`. */
181
193
  kind?: ActionKind;
194
+ /** HTTP verb for the REST route. Defaults to `POST` (or `GET` when `kind` is `'query'`). Overrides the `kind`-derived default. */
195
+ method?: HttpMethod;
196
+ /** REST route path, optionally with `:param` placeholders (e.g. `'spaces/:spaceId/users'`). Each placeholder must be a key of `input`. Defaults to the action name with dots as slashes. */
197
+ path?: string;
198
+ /** Input fields read from the URL query string instead of the request body (e.g. `['offset', 'limit']`). Each must be a key of `input`. */
199
+ queryParams?: (keyof I)[];
182
200
  /** Allowlist of transports that should expose this action. Default: all registered transports. */
183
201
  transports?: Transport[];
184
202
  /** Dynamic enable check (in addition to `transports`). AND-combined with the transports filter. */
@@ -264,9 +282,10 @@ declare class ActionDiscovery {
264
282
  * a list of core `Action` objects ready to feed into `silkweave().actions()`.
265
283
  *
266
284
  * Action invocation is wrapped to (a) run `@UseGuards` guards declared on the
267
- * method or its class against the incoming HTTP request (read from
268
- * `ctx.get('request')`) and (b) bind `this` to the resolved Nest provider so
269
- * DI-injected dependencies remain available.
285
+ * method or its class against the incoming request (read from
286
+ * `ctx.get('request')`, populated by REST/tRPC and by MCP-over-HTTP from the
287
+ * SDK's `extra.requestInfo`) and (b) bind `this` to the resolved Nest provider
288
+ * so DI-injected dependencies remain available.
270
289
  */
271
290
  discover(): Action$1[];
272
291
  private toAction;
@@ -294,14 +313,35 @@ type GuardRef = Type<CanActivate> | CanActivate;
294
313
  */
295
314
  declare function collectGuards(reflector: Reflector, classRef: Type<unknown>, handler: (...args: unknown[]) => unknown): GuardRef[];
296
315
  /**
297
- * Run the configured guards against an HTTP request. Throws `ForbiddenException`
316
+ * Run the configured guards against a request. Throws `ForbiddenException`
298
317
  * if any guard rejects, mirroring Nest's HTTP request-pipeline behavior.
299
318
  *
300
319
  * Pass `null` for `response` when running on top of a tRPC or MCP request that
301
320
  * doesn't surface a raw response object; guards that introspect the response
302
321
  * will receive `null`.
322
+ *
323
+ * `contextType` is reflected through `ExecutionContext.getType()` so guards can
324
+ * branch on the transport. It is `'http'` for REST/tRPC and for MCP-over-HTTP
325
+ * (where a header-bearing request stand-in is available); transports without any
326
+ * HTTP request (e.g. MCP stdio) pass `'rpc'`.
327
+ */
328
+ declare function runGuards(guards: GuardRef[], moduleRef: ModuleRef, reflector: Reflector, classRef: Type<unknown>, handler: (...args: unknown[]) => unknown, request: unknown, response: unknown, contextType?: 'http' | 'rpc'): Promise<void>;
329
+ //#endregion
330
+ //#region src/lib/openapi.d.ts
331
+ interface ActionPathsOptions {
332
+ /** URL prefix the `rest()` adapter mounts on. Default `'/api'`. */
333
+ basePath?: string;
334
+ /** OpenAPI tag the actions are grouped under. Default `'Actions'`. */
335
+ tag?: string;
336
+ }
337
+ /**
338
+ * Build an OpenAPI `paths` fragment for a set of Silkweave actions, mirroring
339
+ * exactly how the `rest()` adapter routes them: the same HTTP verb (`method` ??
340
+ * `kind`), the same `path`/`name`-derived route, and the same path/query/body
341
+ * field split (`pathParamNames` + `queryParams`). Schemas are inlined from the
342
+ * Zod input/output via `z.toJSONSchema`; no shared components are emitted.
303
343
  */
304
- declare function runGuards(guards: GuardRef[], moduleRef: ModuleRef, reflector: Reflector, classRef: Type<unknown>, handler: (...args: unknown[]) => unknown, request: unknown, response: unknown): Promise<void>;
344
+ declare function buildActionPaths(actions: Action$1[], options?: ActionPathsOptions): Record<string, Record<string, unknown>>;
305
345
  //#endregion
306
346
  //#region src/lib/silkweave.module.d.ts
307
347
  /**
@@ -341,5 +381,45 @@ declare class SilkweaveModule implements NestModule {
341
381
  configure(_consumer: MiddlewareConsumer): void;
342
382
  }
343
383
  //#endregion
344
- export { ACTIONS_METADATA, ACTION_METADATA, ACTION_RESPONSE_KEY, Action, ActionDiscovery, ActionMetadata, Actions, type ActionsClassMetadata, AnyActionMetadata, type InferTrpcRouter, McpAdapterOptions, NestAdapterRegisterContext, NestSilkweaveAdapter, RestAdapterOptions, ResultToolResult, SILKWEAVE_MODULE_OPTIONS, SilkweaveModule, SilkweaveModuleOptions, type Transport, TrpcAdapterOptions, TypegenAdapterOptions, buildIsEnabled, collectGuards, mcp, rest, runGuards, trpc, typegen };
384
+ //#region src/lib/swagger.d.ts
385
+ interface SilkweaveSwaggerOptions {
386
+ /**
387
+ * URL prefix the `rest()` adapter mounts on. Defaults to the configured
388
+ * `rest()` adapter's `basePath`, falling back to `'/api'`.
389
+ */
390
+ basePath?: string;
391
+ /** OpenAPI tag the actions are grouped under. Default `'Actions'`. */
392
+ tag?: string;
393
+ /**
394
+ * Include actions that are *not* enabled on the REST transport (gated out via
395
+ * `transports` / `isEnabled`). Default `false` - the document mirrors the
396
+ * routes the `rest()` adapter actually registers.
397
+ */
398
+ includeDisabled?: boolean;
399
+ }
400
+ /**
401
+ * Merge every REST-exposed Silkweave `@Action` into a NestJS Swagger
402
+ * `OpenAPIObject`.
403
+ *
404
+ * `@nestjs/swagger` builds its document by scanning **controllers**, but
405
+ * Silkweave registers action routes directly on the HTTP adapter (so they sit
406
+ * ahead of controllers in the request pipeline) - which means the scanner never
407
+ * sees them. This helper closes that gap: it discovers the actions through the
408
+ * same `ActionDiscovery` provider the `rest()` adapter uses, builds OpenAPI
409
+ * paths with the same routing logic (`buildActionPaths`), and merges them into
410
+ * the document. The result stays in sync with the live routes without any
411
+ * dynamic controllers.
412
+ *
413
+ * Call it between `SwaggerModule.createDocument()` and `SwaggerModule.setup()`:
414
+ *
415
+ * @example
416
+ * ```ts
417
+ * const document = SwaggerModule.createDocument(app, config)
418
+ * addSilkweaveActions(app, document)
419
+ * SwaggerModule.setup('api/docs', app, document)
420
+ * ```
421
+ */
422
+ declare function addSilkweaveActions(app: INestApplication, document: OpenAPIObject, options?: SilkweaveSwaggerOptions): OpenAPIObject;
423
+ //#endregion
424
+ export { ACTIONS_METADATA, ACTION_METADATA, ACTION_RESPONSE_KEY, Action, ActionDiscovery, ActionMetadata, ActionPathsOptions, Actions, type ActionsClassMetadata, AnyActionMetadata, type InferTrpcRouter, McpAdapterOptions, NestAdapterRegisterContext, NestSilkweaveAdapter, RestAdapterOptions, ResultToolResult, SILKWEAVE_MODULE_OPTIONS, SilkweaveModule, SilkweaveModuleOptions, SilkweaveSwaggerOptions, type Transport, TrpcAdapterOptions, TypegenAdapterOptions, addSilkweaveActions, buildActionPaths, buildIsEnabled, collectGuards, mcp, rest, runGuards, trpc, typegen };
345
425
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/types.ts","../src/adapter/mcp.ts","../src/adapter/rest.ts","../src/adapter/trpc.ts","../src/adapter/typegen.ts","../src/lib/metadata.ts","../src/decorator/action.ts","../src/decorator/actions.ts","../src/lib/discovery.ts","../src/lib/filter.ts","../src/lib/guards.ts","../src/lib/silkweave.module.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/types.ts","../src/adapter/mcp.ts","../src/adapter/rest.ts","../src/adapter/trpc.ts","../src/adapter/typegen.ts","../src/lib/metadata.ts","../src/decorator/action.ts","../src/decorator/actions.ts","../src/lib/discovery.ts","../src/lib/filter.ts","../src/lib/guards.ts","../src/lib/openapi.ts","../src/lib/silkweave.module.ts","../src/lib/swagger.ts"],"mappings":"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"}