@nitrostack/core 1.0.3 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -83
- package/dist/core/app-mode.d.ts +54 -0
- package/dist/core/app-mode.d.ts.map +1 -0
- package/dist/core/app-mode.js +67 -0
- package/dist/core/app-mode.js.map +1 -0
- package/dist/core/builders.d.ts +2 -2
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +10 -5
- package/dist/core/builders.js.map +1 -1
- package/dist/core/component.d.ts +1 -0
- package/dist/core/component.d.ts.map +1 -1
- package/dist/core/component.js +4 -0
- package/dist/core/component.js.map +1 -1
- package/dist/core/decorators.d.ts +36 -7
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +29 -7
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +2 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/resource.d.ts +9 -1
- package/dist/core/resource.d.ts.map +1 -1
- package/dist/core/resource.js +19 -0
- package/dist/core/resource.js.map +1 -1
- package/dist/core/server.d.ts +17 -2
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +195 -53
- package/dist/core/server.js.map +1 -1
- package/dist/core/tool.d.ts +5 -0
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +49 -21
- package/dist/core/tool.js.map +1 -1
- package/dist/core/widget-bundle-paths.d.ts +5 -0
- package/dist/core/widget-bundle-paths.d.ts.map +1 -0
- package/dist/core/widget-bundle-paths.js +25 -0
- package/dist/core/widget-bundle-paths.js.map +1 -0
- package/dist/core/widget-html-mime.d.ts +7 -0
- package/dist/core/widget-html-mime.d.ts.map +1 -0
- package/dist/core/widget-html-mime.js +7 -0
- package/dist/core/widget-html-mime.js.map +1 -0
- package/dist/core/widget-mcp-meta.d.ts +18 -0
- package/dist/core/widget-mcp-meta.d.ts.map +1 -0
- package/dist/core/widget-mcp-meta.js +92 -0
- package/dist/core/widget-mcp-meta.js.map +1 -0
- package/dist/core/widget-mime.d.ts +29 -0
- package/dist/core/widget-mime.d.ts.map +1 -0
- package/dist/core/widget-mime.js +41 -0
- package/dist/core/widget-mime.js.map +1 -0
- package/dist/ui-next/index.d.ts +3 -0
- package/dist/ui-next/index.d.ts.map +1 -1
- package/dist/ui-next/index.js +4 -1
- package/dist/ui-next/index.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,116 +1,75 @@
|
|
|
1
|
-
# @nitrostack/core
|
|
1
|
+
# @nitrostack/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TypeScript framework for building production-ready MCP servers with decorators,
|
|
4
|
+
dependency injection, validation, auth, and middleware pipelines.
|
|
4
5
|
|
|
5
|
-
[](https://www.npmjs.com/package/@nitrostack/core)
|
|
7
|
+
[](https://www.npmjs.com/package/@nitrostack/core)
|
|
8
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## ✨ Key Features
|
|
14
|
-
|
|
15
|
-
- **🧩 Decorator-Based API**: Define tools, resources, and prompts with simple annotations (`@Tool`, `@Resource`, `@Prompt`).
|
|
16
|
-
- **🛡️ Secure by Design**: Built-in guards and interceptors for JWT, OAuth 2.1, and API Key authentication.
|
|
17
|
-
- **💉 Dependency Injection**: Powerful DI container for managing services and application state.
|
|
18
|
-
- **🛠️ Extensible Pipeline**: Middleware, Pipes, and Exception Filters for fine-grained request handling.
|
|
19
|
-
- **🚦 Performance First**: Native support for `@Cache()` and `@RateLimit()` to protect your server.
|
|
20
|
-
- **📝 Schema Driven**: Automated JSON-RPC validation using Zod for 100% type safety.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## 📦 Installation
|
|
10
|
+
## Installation
|
|
25
11
|
|
|
26
12
|
```bash
|
|
27
13
|
npm install @nitrostack/core zod reflect-metadata
|
|
28
14
|
```
|
|
29
15
|
|
|
30
|
-
|
|
16
|
+
## Why `@nitrostack/core`
|
|
31
17
|
|
|
32
|
-
|
|
18
|
+
- Decorator-first authoring for tools, resources, and prompts
|
|
19
|
+
- Built-in DI container with module architecture
|
|
20
|
+
- Auth primitives for API key, JWT, and OAuth 2.1 flows
|
|
21
|
+
- Middleware-style request lifecycle (guards, pipes, interceptors)
|
|
22
|
+
- Strong runtime validation with Zod-based schemas
|
|
33
23
|
|
|
34
|
-
|
|
24
|
+
## Quick Example
|
|
35
25
|
|
|
36
26
|
```typescript
|
|
37
|
-
import {
|
|
27
|
+
import { McpApp, Module, ToolDecorator as Tool, z } from '@nitrostack/core';
|
|
38
28
|
|
|
39
|
-
class
|
|
29
|
+
export class MathTools {
|
|
40
30
|
@Tool({
|
|
41
|
-
name: '
|
|
42
|
-
description: '
|
|
31
|
+
name: 'add_numbers',
|
|
32
|
+
description: 'Add two numbers',
|
|
43
33
|
inputSchema: z.object({
|
|
44
34
|
a: z.number(),
|
|
45
35
|
b: z.number(),
|
|
46
|
-
})
|
|
36
|
+
}),
|
|
47
37
|
})
|
|
48
38
|
async add(input: { a: number; b: number }) {
|
|
49
39
|
return { result: input.a + input.b };
|
|
50
40
|
}
|
|
51
41
|
}
|
|
52
42
|
|
|
53
|
-
@Module({
|
|
54
|
-
controllers: [CalculatorTools],
|
|
55
|
-
})
|
|
56
|
-
class CalculatorModule {}
|
|
57
|
-
|
|
58
43
|
@McpApp({
|
|
59
|
-
name: '
|
|
60
|
-
version: '1.0.0',
|
|
61
|
-
modules: [CalculatorModule],
|
|
44
|
+
server: { name: 'math-server', version: '1.0.0' },
|
|
62
45
|
})
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## 🧪 Advanced Usage
|
|
72
|
-
|
|
73
|
-
### Dependency Injection
|
|
74
|
-
```typescript
|
|
75
|
-
@Injectable()
|
|
76
|
-
class DataService {
|
|
77
|
-
getData() { return "Real Data"; }
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
class MyTools {
|
|
81
|
-
constructor(private readonly service: DataService) {}
|
|
82
|
-
// ...
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Authentication Guards
|
|
87
|
-
```typescript
|
|
88
|
-
@Tool({ name: 'secure_action' })
|
|
89
|
-
@UseGuards(JwtGuard)
|
|
90
|
-
async secureAction() {
|
|
91
|
-
// Only accessible with valid JWT
|
|
92
|
-
}
|
|
46
|
+
@Module({
|
|
47
|
+
name: 'app',
|
|
48
|
+
controllers: [MathTools],
|
|
49
|
+
})
|
|
50
|
+
export class AppModule {}
|
|
93
51
|
```
|
|
94
52
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
## 🎨 NitroStudio
|
|
98
|
-
|
|
99
|
-
NitroStudio is the official visual test bench for NitroStack. It handles running your server internally, allowing you to visually debug tools, inspect contexts, and preview widgets without manual setup.
|
|
100
|
-
|
|
101
|
-

|
|
53
|
+
## NitroStudio
|
|
102
54
|
|
|
103
|
-
|
|
55
|
+
Use NitroStudio to test tools visually, inspect payloads, and validate behavior
|
|
56
|
+
while developing your MCP server.
|
|
104
57
|
|
|
105
|
-
|
|
58
|
+
- Download: <https://nitrostack.ai/studio>
|
|
59
|
+
- Studio: <https://nitrostack.ai/studio>
|
|
106
60
|
|
|
107
|
-
##
|
|
61
|
+
## Links
|
|
108
62
|
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
63
|
+
- Docs: <https://docs.nitrostack.ai>
|
|
64
|
+
- SDK guide: <https://docs.nitrostack.ai/sdk/typescript/server>
|
|
65
|
+
- Source: <https://github.com/nitrocloudofficial/nitrostack>
|
|
66
|
+
- npm: <https://www.npmjs.com/package/@nitrostack/core>
|
|
67
|
+
- Blog: <https://blog.nitrostack.ai>
|
|
113
68
|
|
|
114
|
-
|
|
69
|
+
## Community
|
|
115
70
|
|
|
116
|
-
|
|
71
|
+
- Discord: <https://discord.gg/uVWey6UhuD>
|
|
72
|
+
- X: <https://x.com/nitrostackai>
|
|
73
|
+
- YouTube: <https://www.youtube.com/@nitrostackai>
|
|
74
|
+
- LinkedIn: <https://linkedin.com/company/nitrostack-ai/>
|
|
75
|
+
- GitHub: <https://github.com/nitrostackai>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NitroStack App Mode
|
|
3
|
+
*
|
|
4
|
+
* Central utility for detecting and switching between OpenAI Apps SDK
|
|
5
|
+
* and MCP Apps protocol conventions.
|
|
6
|
+
*
|
|
7
|
+
* Set via the `NITROSTACK_APP_MODE` environment variable:
|
|
8
|
+
* - 'openai' (default) — OpenAI Apps SDK / ChatGPT conventions
|
|
9
|
+
* - 'mcp-app' — MCP Apps spec (Claude, universal MCP hosts)
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Supported app modes
|
|
15
|
+
*/
|
|
16
|
+
export type AppMode = 'openai' | 'mcp-app' | 'universal';
|
|
17
|
+
/**
|
|
18
|
+
* MIME type used by MCP Apps spec for UI resources.
|
|
19
|
+
* Hosts use this MIME type to activate the MCP Apps bridge (JSON-RPC over postMessage).
|
|
20
|
+
*/
|
|
21
|
+
export declare const RESOURCE_MIME_TYPE_MCP_APP = "text/html;profile=mcp-app";
|
|
22
|
+
/**
|
|
23
|
+
* MIME type used by OpenAI Apps SDK for UI resources (standard HTML).
|
|
24
|
+
*/
|
|
25
|
+
export declare const RESOURCE_MIME_TYPE_OPENAI = "text/html";
|
|
26
|
+
/**
|
|
27
|
+
* Get the current NitroStack app mode from environment.
|
|
28
|
+
*
|
|
29
|
+
* Reads `NITROSTACK_APP_MODE` env variable with lenient parsing:
|
|
30
|
+
* - 'mcp-app', 'mcpapp', 'mcp_app' → 'mcp-app'
|
|
31
|
+
* - 'universal', 'all', 'both' → 'universal'
|
|
32
|
+
* - anything else (or unset) → 'openai' (default)
|
|
33
|
+
*
|
|
34
|
+
* @returns The active app mode
|
|
35
|
+
*/
|
|
36
|
+
export declare function getAppMode(): AppMode;
|
|
37
|
+
/**
|
|
38
|
+
* Check if the server is running in MCP Apps mode.
|
|
39
|
+
* Returns true if mode is 'mcp-app' or 'universal'.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isMcpAppMode(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Check if the server is running in OpenAI Apps SDK mode.
|
|
44
|
+
* Returns true if mode is 'openai' or 'universal'.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isOpenAiMode(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get the appropriate MIME type for widget resources based on current mode.
|
|
49
|
+
*
|
|
50
|
+
* - OpenAI mode: `text/html` (standard)
|
|
51
|
+
* - MCP Apps/Universal mode: `text/html;profile=mcp-app`
|
|
52
|
+
*/
|
|
53
|
+
export declare function getWidgetMimeType(): string;
|
|
54
|
+
//# sourceMappingURL=app-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-mode.d.ts","sourceRoot":"","sources":["../../src/core/app-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,IAAI,OAAO,CASpC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NitroStack App Mode
|
|
3
|
+
*
|
|
4
|
+
* Central utility for detecting and switching between OpenAI Apps SDK
|
|
5
|
+
* and MCP Apps protocol conventions.
|
|
6
|
+
*
|
|
7
|
+
* Set via the `NITROSTACK_APP_MODE` environment variable:
|
|
8
|
+
* - 'openai' (default) — OpenAI Apps SDK / ChatGPT conventions
|
|
9
|
+
* - 'mcp-app' — MCP Apps spec (Claude, universal MCP hosts)
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* MIME type used by MCP Apps spec for UI resources.
|
|
15
|
+
* Hosts use this MIME type to activate the MCP Apps bridge (JSON-RPC over postMessage).
|
|
16
|
+
*/
|
|
17
|
+
export const RESOURCE_MIME_TYPE_MCP_APP = 'text/html;profile=mcp-app';
|
|
18
|
+
/**
|
|
19
|
+
* MIME type used by OpenAI Apps SDK for UI resources (standard HTML).
|
|
20
|
+
*/
|
|
21
|
+
export const RESOURCE_MIME_TYPE_OPENAI = 'text/html';
|
|
22
|
+
/**
|
|
23
|
+
* Get the current NitroStack app mode from environment.
|
|
24
|
+
*
|
|
25
|
+
* Reads `NITROSTACK_APP_MODE` env variable with lenient parsing:
|
|
26
|
+
* - 'mcp-app', 'mcpapp', 'mcp_app' → 'mcp-app'
|
|
27
|
+
* - 'universal', 'all', 'both' → 'universal'
|
|
28
|
+
* - anything else (or unset) → 'openai' (default)
|
|
29
|
+
*
|
|
30
|
+
* @returns The active app mode
|
|
31
|
+
*/
|
|
32
|
+
export function getAppMode() {
|
|
33
|
+
const raw = process.env.NITROSTACK_APP_MODE?.toLowerCase().trim();
|
|
34
|
+
if (raw === 'mcp-app' || raw === 'mcpapp' || raw === 'mcp_app' || raw === 'mcp app') {
|
|
35
|
+
return 'mcp-app';
|
|
36
|
+
}
|
|
37
|
+
if (raw === 'universal' || raw === 'all' || raw === 'both') {
|
|
38
|
+
return 'universal';
|
|
39
|
+
}
|
|
40
|
+
return 'openai';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if the server is running in MCP Apps mode.
|
|
44
|
+
* Returns true if mode is 'mcp-app' or 'universal'.
|
|
45
|
+
*/
|
|
46
|
+
export function isMcpAppMode() {
|
|
47
|
+
const mode = getAppMode();
|
|
48
|
+
return mode === 'mcp-app' || mode === 'universal';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if the server is running in OpenAI Apps SDK mode.
|
|
52
|
+
* Returns true if mode is 'openai' or 'universal'.
|
|
53
|
+
*/
|
|
54
|
+
export function isOpenAiMode() {
|
|
55
|
+
const mode = getAppMode();
|
|
56
|
+
return mode === 'openai' || mode === 'universal';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the appropriate MIME type for widget resources based on current mode.
|
|
60
|
+
*
|
|
61
|
+
* - OpenAI mode: `text/html` (standard)
|
|
62
|
+
* - MCP Apps/Universal mode: `text/html;profile=mcp-app`
|
|
63
|
+
*/
|
|
64
|
+
export function getWidgetMimeType() {
|
|
65
|
+
return isMcpAppMode() ? RESOURCE_MIME_TYPE_MCP_APP : RESOURCE_MIME_TYPE_OPENAI;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=app-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-mode.js","sourceRoot":"","sources":["../../src/core/app-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAClE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,yBAAyB,CAAC;AACjF,CAAC"}
|
package/dist/core/builders.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Tool } from './tool.js';
|
|
|
2
2
|
import { Resource } from './resource.js';
|
|
3
3
|
import { Prompt } from './prompt.js';
|
|
4
4
|
import { ClassConstructor } from './types.js';
|
|
5
|
-
import { ToolOptions, ResourceOptions, PromptOptions } from './decorators.js';
|
|
5
|
+
import { ToolOptions, ResourceOptions, PromptOptions, type WidgetRouteMetadata } from './decorators.js';
|
|
6
6
|
/**
|
|
7
7
|
* Controller instance type
|
|
8
8
|
*/
|
|
@@ -16,7 +16,7 @@ type ControllerClass = ClassConstructor<ControllerInstance>;
|
|
|
16
16
|
/**
|
|
17
17
|
* Build a Tool instance from a decorated method
|
|
18
18
|
*/
|
|
19
|
-
export declare function buildTool(controllerInstance: ControllerInstance, methodName: string, options: ToolOptions,
|
|
19
|
+
export declare function buildTool(controllerInstance: ControllerInstance, methodName: string, options: ToolOptions, widgetMeta?: WidgetRouteMetadata, isInitial?: boolean): Tool;
|
|
20
20
|
/**
|
|
21
21
|
* Build all tools from a controller
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAEnD,OAAO,EAA+G,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3J,OAAO,
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAEnD,OAAO,EAA+G,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3J,OAAO,EAML,WAAW,EACX,eAAe,EACf,aAAa,EACb,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AASzB;;GAEG;AACH,UAAU,kBAAkB;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,KAAK,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAE5D;;GAEG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,mBAAmB,EAChC,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI,CAgDN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,EAAE,CAczE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,QAAQ,CAiCV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,QAAQ,EAAE,CAOjF;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACrB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAO7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,GAAG;IAC5D,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAgBA"}
|
package/dist/core/builders.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Tool } from './tool.js';
|
|
|
2
2
|
import { createResource } from './resource.js';
|
|
3
3
|
import { createPrompt } from './prompt.js';
|
|
4
4
|
import { createComponentFromNextRoute } from '../ui-next/index.js';
|
|
5
|
-
import { extractTools, extractResources, extractPrompts, getWidgetMetadata, getInitialToolMetadata } from './decorators.js';
|
|
5
|
+
import { extractTools, extractResources, extractPrompts, getWidgetMetadata, getInitialToolMetadata, } from './decorators.js';
|
|
6
6
|
import { getGuardsMetadata } from './guards/use-guards.decorator.js';
|
|
7
7
|
import { getMiddlewareMetadata } from './middleware/middleware.decorator.js';
|
|
8
8
|
import { getInterceptorMetadata } from './interceptors/interceptor.decorator.js';
|
|
@@ -13,7 +13,8 @@ import { isInjectable } from './di/injectable.decorator.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* Build a Tool instance from a decorated method
|
|
15
15
|
*/
|
|
16
|
-
export function buildTool(controllerInstance, methodName, options,
|
|
16
|
+
export function buildTool(controllerInstance, methodName, options, widgetMeta, isInitial) {
|
|
17
|
+
const widgetRoute = widgetMeta?.route;
|
|
17
18
|
const prototype = Object.getPrototypeOf(controllerInstance);
|
|
18
19
|
// Get the original method
|
|
19
20
|
const method = controllerInstance[methodName];
|
|
@@ -47,7 +48,11 @@ export function buildTool(controllerInstance, methodName, options, widgetRoute,
|
|
|
47
48
|
});
|
|
48
49
|
// Create and attach component if widget route is specified
|
|
49
50
|
if (widgetRoute) {
|
|
50
|
-
const component = createComponentFromNextRoute(widgetRoute
|
|
51
|
+
const component = createComponentFromNextRoute(widgetRoute, {
|
|
52
|
+
csp: widgetMeta?.csp,
|
|
53
|
+
prefersBorder: widgetMeta?.prefersBorder,
|
|
54
|
+
subdomain: widgetMeta?.domain,
|
|
55
|
+
});
|
|
51
56
|
tool.setComponent(component);
|
|
52
57
|
}
|
|
53
58
|
return tool;
|
|
@@ -61,10 +66,10 @@ export function buildTools(controllerInstance) {
|
|
|
61
66
|
return toolMetadata.map(({ methodName, options }) => {
|
|
62
67
|
const prototype = Object.getPrototypeOf(controllerInstance);
|
|
63
68
|
// Check if this method has a widget
|
|
64
|
-
const
|
|
69
|
+
const widgetMeta = getWidgetMetadata(prototype, methodName);
|
|
65
70
|
// Check for initial tool decorator
|
|
66
71
|
const isInitial = getInitialToolMetadata(prototype, methodName);
|
|
67
|
-
return buildTool(controllerInstance, methodName, options,
|
|
72
|
+
return buildTool(controllerInstance, methodName, options, widgetMeta, isInitial);
|
|
68
73
|
});
|
|
69
74
|
}
|
|
70
75
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAY,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAU,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"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"}
|
package/dist/core/component.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"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"}
|
package/dist/core/component.js
CHANGED
|
@@ -170,6 +170,7 @@ ${jsTag}
|
|
|
170
170
|
metadata['openai/widgetCSP'] = {
|
|
171
171
|
connect_domains: this.definition.csp.connectDomains || [],
|
|
172
172
|
resource_domains: this.definition.csp.resourceDomains || [],
|
|
173
|
+
frame_domains: this.definition.csp.frameDomains || [],
|
|
173
174
|
};
|
|
174
175
|
}
|
|
175
176
|
break;
|
|
@@ -208,6 +209,9 @@ ${jsTag}
|
|
|
208
209
|
if (openaiMeta['openai/widgetPrefersBorder']) {
|
|
209
210
|
metadata['openai/widgetPrefersBorder'] = openaiMeta['openai/widgetPrefersBorder'];
|
|
210
211
|
}
|
|
212
|
+
if (openaiMeta['openai/widgetDomain']) {
|
|
213
|
+
metadata['openai/widgetDomain'] = openaiMeta['openai/widgetDomain'];
|
|
214
|
+
}
|
|
211
215
|
return metadata;
|
|
212
216
|
}
|
|
213
217
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,19 +121,48 @@ interface ToolMetadataEntry {
|
|
|
121
121
|
* ```
|
|
122
122
|
*/
|
|
123
123
|
export declare function Tool(options: ToolOptions): MethodDecorator;
|
|
124
|
+
/**
|
|
125
|
+
* CSP allowlists for widget iframes (OpenAI `openai/widgetCSP` / MCP Apps `_meta.ui.csp`).
|
|
126
|
+
*/
|
|
127
|
+
export interface WidgetCspOptions {
|
|
128
|
+
connectDomains?: string[];
|
|
129
|
+
resourceDomains?: string[];
|
|
130
|
+
frameDomains?: string[];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Widget linking options (object form). `route` is required; other fields are optional.
|
|
134
|
+
*/
|
|
135
|
+
export interface WidgetRouteMetadata {
|
|
136
|
+
route: string;
|
|
137
|
+
csp?: WidgetCspOptions;
|
|
138
|
+
/** OpenAI widget sandbox domain (HTTPS), e.g. `https://myapp.example.com` — maps to `openai/widgetDomain`. */
|
|
139
|
+
domain?: string;
|
|
140
|
+
/** Maps to `openai/widgetPrefersBorder`. */
|
|
141
|
+
prefersBorder?: boolean;
|
|
142
|
+
}
|
|
124
143
|
/**
|
|
125
144
|
* Widget decorator - Links a tool to a Next.js widget route
|
|
126
145
|
*
|
|
127
|
-
* @example
|
|
146
|
+
* @example String route (backward compatible)
|
|
128
147
|
* ```typescript
|
|
129
|
-
* @Tool({ name: 'login', ... })
|
|
130
148
|
* @Widget('login-result')
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* @example Object form — `route` is required
|
|
152
|
+
* ```typescript
|
|
153
|
+
* @Widget({
|
|
154
|
+
* route: 'card',
|
|
155
|
+
* prefersBorder: true,
|
|
156
|
+
* domain: 'https://myapp.example.com',
|
|
157
|
+
* csp: {
|
|
158
|
+
* resourceDomains: ['https://images.unsplash.com'],
|
|
159
|
+
* connectDomains: ['https://api.example.com'],
|
|
160
|
+
* frameDomains: ['https://*.example-embed.com'],
|
|
161
|
+
* },
|
|
162
|
+
* })
|
|
134
163
|
* ```
|
|
135
164
|
*/
|
|
136
|
-
export declare function Widget(routePath: string): MethodDecorator;
|
|
165
|
+
export declare function Widget(routePath: string | WidgetRouteMetadata): MethodDecorator;
|
|
137
166
|
/**
|
|
138
167
|
* Resource metadata stored on class
|
|
139
168
|
*/
|
|
@@ -194,7 +223,7 @@ export declare function extractPrompts(target: ClassConstructor): PromptMetadata
|
|
|
194
223
|
/**
|
|
195
224
|
* Get widget metadata for a specific method
|
|
196
225
|
*/
|
|
197
|
-
export declare function getWidgetMetadata(target: object, methodName: string):
|
|
226
|
+
export declare function getWidgetMetadata(target: object, methodName: string): WidgetRouteMetadata | undefined;
|
|
198
227
|
/**
|
|
199
228
|
* Get guards metadata for a specific method
|
|
200
229
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/core/decorators.js
CHANGED
|
@@ -42,19 +42,41 @@ export function Tool(options) {
|
|
|
42
42
|
/**
|
|
43
43
|
* Widget decorator - Links a tool to a Next.js widget route
|
|
44
44
|
*
|
|
45
|
-
* @example
|
|
45
|
+
* @example String route (backward compatible)
|
|
46
46
|
* ```typescript
|
|
47
|
-
* @Tool({ name: 'login', ... })
|
|
48
47
|
* @Widget('login-result')
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example Object form — `route` is required
|
|
51
|
+
* ```typescript
|
|
52
|
+
* @Widget({
|
|
53
|
+
* route: 'card',
|
|
54
|
+
* prefersBorder: true,
|
|
55
|
+
* domain: 'https://myapp.example.com',
|
|
56
|
+
* csp: {
|
|
57
|
+
* resourceDomains: ['https://images.unsplash.com'],
|
|
58
|
+
* connectDomains: ['https://api.example.com'],
|
|
59
|
+
* frameDomains: ['https://*.example-embed.com'],
|
|
60
|
+
* },
|
|
61
|
+
* })
|
|
52
62
|
* ```
|
|
53
63
|
*/
|
|
54
64
|
export function Widget(routePath) {
|
|
65
|
+
let meta;
|
|
66
|
+
if (typeof routePath === 'string') {
|
|
67
|
+
if (!routePath.trim()) {
|
|
68
|
+
throw new Error('@Widget: route must be a non-empty string');
|
|
69
|
+
}
|
|
70
|
+
meta = { route: routePath };
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (typeof routePath.route !== 'string' || !routePath.route.trim()) {
|
|
74
|
+
throw new Error('@Widget: object form requires a non-empty string "route"');
|
|
75
|
+
}
|
|
76
|
+
meta = routePath;
|
|
77
|
+
}
|
|
55
78
|
return function (target, propertyKey, descriptor) {
|
|
56
|
-
|
|
57
|
-
Reflect.defineMetadata(WIDGET_METADATA, routePath, target, String(propertyKey));
|
|
79
|
+
Reflect.defineMetadata(WIDGET_METADATA, meta, target, String(propertyKey));
|
|
58
80
|
return descriptor;
|
|
59
81
|
};
|
|
60
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAyGzD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,OAAoB;IACvC,OAAO,UAAU,MAA6B,EAAE,WAA4B,EAAE,UAA8B;QAC1G,yCAAyC;QACzC,MAAM,aAAa,GAAwB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAExG,gBAAgB;QAChB,aAAa,CAAC,IAAI,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;YAC/B,OAAO;SACR,CAAC,CAAC;QAEH,0CAA0C;QAC1C,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEzE,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export { TaskManager, TaskContext, TaskNotFoundError, TaskAlreadyTerminalError,
|
|
|
15
15
|
export type { TaskStatus, TaskData, TaskParams, CreateTaskResult, TaskSupportLevel, } from './task.js';
|
|
16
16
|
export type { McpServerConfig, ToolDefinition, ToolAnnotations, ToolResultContent, ResourceLink, EmbeddedResource, ResourceDefinition, ResourceTemplateDefinition, ResourceAnnotations, PromptDefinition, ExecutionContext, Logger, AuthContext, JsonValue, JsonValueOrUndefined, JsonObject, JsonArray, JsonPrimitive, Constructor, ClassConstructor, } from './types.js';
|
|
17
17
|
export { Tool as ToolDecorator, Widget, Resource as ResourceDecorator, Prompt as PromptDecorator, extractTools, extractResources, extractPrompts, getWidgetMetadata, getGuardsMetadata, InitialTool, } from './decorators.js';
|
|
18
|
-
export type { ToolOptions, ToolInvocationMessages, ResourceOptions, PromptOptions, } from './decorators.js';
|
|
18
|
+
export type { ToolOptions, ToolInvocationMessages, ResourceOptions, PromptOptions, WidgetCspOptions, WidgetRouteMetadata, } from './decorators.js';
|
|
19
19
|
export { Module, createModule, isModule, getModuleMetadata, } from './module.js';
|
|
20
20
|
export type { ModuleMetadata, ModuleImport, DynamicModule, Provider, } from './module.js';
|
|
21
21
|
export type { Guard, GuardConstructor } from './guards/guard.interface.js';
|