gauss-ts 1.1.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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +499 -0
  3. package/dist/agent-CHrSUkPz.d.ts +485 -0
  4. package/dist/agent-CMp1wFzs.d.cts +485 -0
  5. package/dist/agent.cjs +2 -0
  6. package/dist/agent.cjs.map +1 -0
  7. package/dist/agent.d.cts +144 -0
  8. package/dist/agent.d.ts +144 -0
  9. package/dist/agent.js +2 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/index.cjs +21 -0
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.d.cts +492 -0
  14. package/dist/index.d.ts +492 -0
  15. package/dist/index.js +21 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/mcp.cjs +2 -0
  18. package/dist/mcp.cjs.map +1 -0
  19. package/dist/mcp.d.cts +282 -0
  20. package/dist/mcp.d.ts +282 -0
  21. package/dist/mcp.js +2 -0
  22. package/dist/mcp.js.map +1 -0
  23. package/dist/middleware.cjs +2 -0
  24. package/dist/middleware.cjs.map +1 -0
  25. package/dist/middleware.d.cts +46 -0
  26. package/dist/middleware.d.ts +46 -0
  27. package/dist/middleware.js +2 -0
  28. package/dist/middleware.js.map +1 -0
  29. package/dist/orchestration.cjs +2 -0
  30. package/dist/orchestration.cjs.map +1 -0
  31. package/dist/orchestration.d.cts +94 -0
  32. package/dist/orchestration.d.ts +94 -0
  33. package/dist/orchestration.js +2 -0
  34. package/dist/orchestration.js.map +1 -0
  35. package/dist/rag.cjs +2 -0
  36. package/dist/rag.cjs.map +1 -0
  37. package/dist/rag.d.cts +43 -0
  38. package/dist/rag.d.ts +43 -0
  39. package/dist/rag.js +2 -0
  40. package/dist/rag.js.map +1 -0
  41. package/dist/tools.cjs +2 -0
  42. package/dist/tools.cjs.map +1 -0
  43. package/dist/tools.d.cts +48 -0
  44. package/dist/tools.d.ts +48 -0
  45. package/dist/tools.js +2 -0
  46. package/dist/tools.js.map +1 -0
  47. package/dist/types-BkwC4s1P.d.cts +239 -0
  48. package/dist/types-BkwC4s1P.d.ts +239 -0
  49. package/package.json +132 -0
package/dist/mcp.d.cts ADDED
@@ -0,0 +1,282 @@
1
+ import { D as Disposable, H as Handle, T as ToolDef } from './types-BkwC4s1P.cjs';
2
+
3
+ interface McpResource {
4
+ uri: string;
5
+ name: string;
6
+ description?: string;
7
+ mimeType?: string;
8
+ }
9
+ interface McpPromptArgument {
10
+ name: string;
11
+ description?: string;
12
+ required?: boolean;
13
+ }
14
+ interface McpPrompt {
15
+ name: string;
16
+ description?: string;
17
+ arguments: McpPromptArgument[];
18
+ }
19
+ interface McpPromptMessage {
20
+ role: "user" | "assistant";
21
+ content: McpContent;
22
+ }
23
+ type McpContent = {
24
+ type: "text";
25
+ text: string;
26
+ } | {
27
+ type: "image";
28
+ data: string;
29
+ mimeType: string;
30
+ } | {
31
+ type: "resource";
32
+ resource: McpResourceContent;
33
+ };
34
+ interface McpResourceContent {
35
+ uri: string;
36
+ mimeType?: string;
37
+ text?: string;
38
+ blob?: string;
39
+ }
40
+ interface McpPromptResult {
41
+ description?: string;
42
+ messages: McpPromptMessage[];
43
+ }
44
+ interface McpModelHint {
45
+ name?: string;
46
+ }
47
+ interface McpModelPreferences {
48
+ hints?: McpModelHint[];
49
+ costPriority?: number;
50
+ speedPriority?: number;
51
+ intelligencePriority?: number;
52
+ }
53
+ interface McpSamplingMessage {
54
+ role: "user" | "assistant";
55
+ content: McpContent;
56
+ }
57
+ interface McpSamplingRequest {
58
+ messages: McpSamplingMessage[];
59
+ modelPreferences?: McpModelPreferences;
60
+ systemPrompt?: string;
61
+ includeContext?: "none" | "thisServer" | "allServers";
62
+ temperature?: number;
63
+ maxTokens: number;
64
+ stopSequences?: string[];
65
+ metadata?: Record<string, unknown>;
66
+ }
67
+ interface McpSamplingResponse {
68
+ role: "assistant";
69
+ content: McpContent;
70
+ model: string;
71
+ stopReason?: string;
72
+ }
73
+ declare class McpServer implements Disposable {
74
+ private readonly _handle;
75
+ private disposed;
76
+ constructor(name: string, version: string);
77
+ get handle(): Handle;
78
+ addTool(tool: ToolDef): this;
79
+ addResource(resource: McpResource): this;
80
+ addPrompt(prompt: McpPrompt): this;
81
+ handleMessage(message: unknown): Promise<unknown>;
82
+ destroy(): void;
83
+ [Symbol.dispose](): void;
84
+ private assertNotDisposed;
85
+ }
86
+
87
+ /**
88
+ * A2A (Agent-to-Agent) Protocol SDK for TypeScript.
89
+ *
90
+ * Provides a high-level, developer-friendly client for interacting with
91
+ * A2A-compliant agents over HTTP using JSON-RPC 2.0.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * const client = new A2aClient('http://localhost:8080');
96
+ * const card = await client.discover();
97
+ * const response = await client.ask('What is the weather?');
98
+ * ```
99
+ */
100
+ /** A2A message role. */
101
+ type A2aMessageRole = 'user' | 'agent';
102
+ /** Content part within a message. */
103
+ interface Part {
104
+ type: 'text' | 'file' | 'data';
105
+ text?: string;
106
+ mimeType?: string;
107
+ data?: unknown;
108
+ file?: {
109
+ name?: string;
110
+ mimeType?: string;
111
+ bytes?: string;
112
+ uri?: string;
113
+ };
114
+ metadata?: Record<string, unknown>;
115
+ }
116
+ /** A single A2A message. */
117
+ interface A2aMessage {
118
+ role: A2aMessageRole;
119
+ parts: Part[];
120
+ metadata?: Record<string, unknown>;
121
+ }
122
+ /** Task state in the A2A lifecycle. */
123
+ type TaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'canceled' | 'failed' | 'unknown';
124
+ /** Task status with optional message. */
125
+ interface TaskStatus {
126
+ state: TaskState;
127
+ message?: A2aMessage;
128
+ timestamp?: string;
129
+ }
130
+ /** An A2A task. */
131
+ interface Task {
132
+ id: string;
133
+ sessionId?: string;
134
+ status: TaskStatus;
135
+ artifacts?: Artifact[];
136
+ history?: A2aMessage[];
137
+ metadata?: Record<string, unknown>;
138
+ }
139
+ /** An artifact produced by an agent. */
140
+ interface Artifact {
141
+ name?: string;
142
+ description?: string;
143
+ parts: Part[];
144
+ index?: number;
145
+ append?: boolean;
146
+ lastChunk?: boolean;
147
+ metadata?: Record<string, unknown>;
148
+ }
149
+ /** Agent capability declaration. */
150
+ interface AgentCapabilities {
151
+ streaming?: boolean;
152
+ pushNotifications?: boolean;
153
+ stateTransitionHistory?: boolean;
154
+ }
155
+ /** Skill declared in an AgentCard. */
156
+ interface AgentSkill {
157
+ id: string;
158
+ name: string;
159
+ description?: string;
160
+ tags?: string[];
161
+ examples?: string[];
162
+ inputModes?: string[];
163
+ outputModes?: string[];
164
+ }
165
+ /** Agent Card — served at /.well-known/agent.json */
166
+ interface AgentCard {
167
+ name: string;
168
+ description?: string;
169
+ url: string;
170
+ version?: string;
171
+ documentationUrl?: string;
172
+ capabilities?: AgentCapabilities;
173
+ skills?: AgentSkill[];
174
+ defaultInputModes?: string[];
175
+ defaultOutputModes?: string[];
176
+ provider?: {
177
+ organization?: string;
178
+ url?: string;
179
+ };
180
+ authentication?: {
181
+ schemes?: string[];
182
+ credentials?: string;
183
+ };
184
+ }
185
+ /** Configuration for sending a message. */
186
+ interface MessageSendConfig {
187
+ acceptedOutputModes?: string[];
188
+ pushNotificationConfig?: {
189
+ url: string;
190
+ token?: string;
191
+ authentication?: {
192
+ schemes?: string[];
193
+ credentials?: string;
194
+ };
195
+ };
196
+ historyLength?: number;
197
+ blocking?: boolean;
198
+ }
199
+ /** Result of sending a message — either a Task or a Message. */
200
+ type SendMessageResult = {
201
+ type: 'task';
202
+ task: Task;
203
+ } | {
204
+ type: 'message';
205
+ message: A2aMessage;
206
+ };
207
+ /** Options for creating an A2aClient. */
208
+ interface A2aClientOptions {
209
+ /** Base URL of the A2A agent (e.g., 'http://localhost:8080'). */
210
+ baseUrl: string;
211
+ /** Optional Bearer token for authentication. */
212
+ authToken?: string;
213
+ }
214
+ /**
215
+ * Client for communicating with A2A-compliant agents.
216
+ *
217
+ * @example
218
+ * ```ts
219
+ * const client = new A2aClient({ baseUrl: 'http://localhost:8080' });
220
+ *
221
+ * // Discover agent capabilities
222
+ * const card = await client.discover();
223
+ * console.log(card.name, card.skills);
224
+ *
225
+ * // Quick ask (text in → text out)
226
+ * const answer = await client.ask('Summarize this document.');
227
+ *
228
+ * // Full message exchange
229
+ * const result = await client.sendMessage({
230
+ * role: 'user',
231
+ * parts: [{ type: 'text', text: 'Hello!' }],
232
+ * });
233
+ *
234
+ * // Get task status
235
+ * const task = await client.getTask('task-123');
236
+ *
237
+ * // Cancel a task
238
+ * await client.cancelTask('task-123');
239
+ * ```
240
+ */
241
+ declare class A2aClient {
242
+ private readonly baseUrl;
243
+ private readonly authToken?;
244
+ constructor(options: A2aClientOptions | string);
245
+ /**
246
+ * Discover the remote agent's capabilities by fetching its AgentCard.
247
+ * The card is served at `/.well-known/agent.json`.
248
+ */
249
+ discover(): Promise<AgentCard>;
250
+ /**
251
+ * Send a message to the agent and receive either a Task or a Message.
252
+ */
253
+ sendMessage(message: A2aMessage, config?: MessageSendConfig): Promise<SendMessageResult>;
254
+ /**
255
+ * Quick helper: send a text message and get a text response.
256
+ * Sends the text, polls until the task completes, and returns the final text.
257
+ */
258
+ ask(text: string): Promise<string>;
259
+ /**
260
+ * Get a task by its ID.
261
+ * @param taskId - The task identifier.
262
+ * @param historyLength - Optional number of history messages to include.
263
+ */
264
+ getTask(taskId: string, historyLength?: number): Promise<Task>;
265
+ /**
266
+ * Cancel a running task.
267
+ * @param taskId - The task identifier to cancel.
268
+ */
269
+ cancelTask(taskId: string): Promise<Task>;
270
+ }
271
+ /** Create a text message. */
272
+ declare function textMessage(role: A2aMessageRole, text: string): A2aMessage;
273
+ /** Create a user text message. */
274
+ declare function userMessage(text: string): A2aMessage;
275
+ /** Create an agent text message. */
276
+ declare function agentMessage(text: string): A2aMessage;
277
+ /** Extract all text from a message's parts. */
278
+ declare function extractText(message: A2aMessage): string;
279
+ /** Extract text from a task's latest status message. */
280
+ declare function taskText(task: Task): string | undefined;
281
+
282
+ export { A2aClient, type A2aClientOptions, type A2aMessage, type A2aMessageRole, type AgentCapabilities, type AgentCard, type AgentSkill, type Artifact, type McpContent, type McpModelHint, type McpModelPreferences, type McpPrompt, type McpPromptArgument, type McpPromptMessage, type McpPromptResult, type McpResource, type McpResourceContent, type McpSamplingMessage, type McpSamplingRequest, type McpSamplingResponse, McpServer, type MessageSendConfig, type Part, type SendMessageResult, type Task, type TaskState, type TaskStatus, agentMessage, extractText, taskText, textMessage, userMessage };
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,282 @@
1
+ import { D as Disposable, H as Handle, T as ToolDef } from './types-BkwC4s1P.js';
2
+
3
+ interface McpResource {
4
+ uri: string;
5
+ name: string;
6
+ description?: string;
7
+ mimeType?: string;
8
+ }
9
+ interface McpPromptArgument {
10
+ name: string;
11
+ description?: string;
12
+ required?: boolean;
13
+ }
14
+ interface McpPrompt {
15
+ name: string;
16
+ description?: string;
17
+ arguments: McpPromptArgument[];
18
+ }
19
+ interface McpPromptMessage {
20
+ role: "user" | "assistant";
21
+ content: McpContent;
22
+ }
23
+ type McpContent = {
24
+ type: "text";
25
+ text: string;
26
+ } | {
27
+ type: "image";
28
+ data: string;
29
+ mimeType: string;
30
+ } | {
31
+ type: "resource";
32
+ resource: McpResourceContent;
33
+ };
34
+ interface McpResourceContent {
35
+ uri: string;
36
+ mimeType?: string;
37
+ text?: string;
38
+ blob?: string;
39
+ }
40
+ interface McpPromptResult {
41
+ description?: string;
42
+ messages: McpPromptMessage[];
43
+ }
44
+ interface McpModelHint {
45
+ name?: string;
46
+ }
47
+ interface McpModelPreferences {
48
+ hints?: McpModelHint[];
49
+ costPriority?: number;
50
+ speedPriority?: number;
51
+ intelligencePriority?: number;
52
+ }
53
+ interface McpSamplingMessage {
54
+ role: "user" | "assistant";
55
+ content: McpContent;
56
+ }
57
+ interface McpSamplingRequest {
58
+ messages: McpSamplingMessage[];
59
+ modelPreferences?: McpModelPreferences;
60
+ systemPrompt?: string;
61
+ includeContext?: "none" | "thisServer" | "allServers";
62
+ temperature?: number;
63
+ maxTokens: number;
64
+ stopSequences?: string[];
65
+ metadata?: Record<string, unknown>;
66
+ }
67
+ interface McpSamplingResponse {
68
+ role: "assistant";
69
+ content: McpContent;
70
+ model: string;
71
+ stopReason?: string;
72
+ }
73
+ declare class McpServer implements Disposable {
74
+ private readonly _handle;
75
+ private disposed;
76
+ constructor(name: string, version: string);
77
+ get handle(): Handle;
78
+ addTool(tool: ToolDef): this;
79
+ addResource(resource: McpResource): this;
80
+ addPrompt(prompt: McpPrompt): this;
81
+ handleMessage(message: unknown): Promise<unknown>;
82
+ destroy(): void;
83
+ [Symbol.dispose](): void;
84
+ private assertNotDisposed;
85
+ }
86
+
87
+ /**
88
+ * A2A (Agent-to-Agent) Protocol SDK for TypeScript.
89
+ *
90
+ * Provides a high-level, developer-friendly client for interacting with
91
+ * A2A-compliant agents over HTTP using JSON-RPC 2.0.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * const client = new A2aClient('http://localhost:8080');
96
+ * const card = await client.discover();
97
+ * const response = await client.ask('What is the weather?');
98
+ * ```
99
+ */
100
+ /** A2A message role. */
101
+ type A2aMessageRole = 'user' | 'agent';
102
+ /** Content part within a message. */
103
+ interface Part {
104
+ type: 'text' | 'file' | 'data';
105
+ text?: string;
106
+ mimeType?: string;
107
+ data?: unknown;
108
+ file?: {
109
+ name?: string;
110
+ mimeType?: string;
111
+ bytes?: string;
112
+ uri?: string;
113
+ };
114
+ metadata?: Record<string, unknown>;
115
+ }
116
+ /** A single A2A message. */
117
+ interface A2aMessage {
118
+ role: A2aMessageRole;
119
+ parts: Part[];
120
+ metadata?: Record<string, unknown>;
121
+ }
122
+ /** Task state in the A2A lifecycle. */
123
+ type TaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'canceled' | 'failed' | 'unknown';
124
+ /** Task status with optional message. */
125
+ interface TaskStatus {
126
+ state: TaskState;
127
+ message?: A2aMessage;
128
+ timestamp?: string;
129
+ }
130
+ /** An A2A task. */
131
+ interface Task {
132
+ id: string;
133
+ sessionId?: string;
134
+ status: TaskStatus;
135
+ artifacts?: Artifact[];
136
+ history?: A2aMessage[];
137
+ metadata?: Record<string, unknown>;
138
+ }
139
+ /** An artifact produced by an agent. */
140
+ interface Artifact {
141
+ name?: string;
142
+ description?: string;
143
+ parts: Part[];
144
+ index?: number;
145
+ append?: boolean;
146
+ lastChunk?: boolean;
147
+ metadata?: Record<string, unknown>;
148
+ }
149
+ /** Agent capability declaration. */
150
+ interface AgentCapabilities {
151
+ streaming?: boolean;
152
+ pushNotifications?: boolean;
153
+ stateTransitionHistory?: boolean;
154
+ }
155
+ /** Skill declared in an AgentCard. */
156
+ interface AgentSkill {
157
+ id: string;
158
+ name: string;
159
+ description?: string;
160
+ tags?: string[];
161
+ examples?: string[];
162
+ inputModes?: string[];
163
+ outputModes?: string[];
164
+ }
165
+ /** Agent Card — served at /.well-known/agent.json */
166
+ interface AgentCard {
167
+ name: string;
168
+ description?: string;
169
+ url: string;
170
+ version?: string;
171
+ documentationUrl?: string;
172
+ capabilities?: AgentCapabilities;
173
+ skills?: AgentSkill[];
174
+ defaultInputModes?: string[];
175
+ defaultOutputModes?: string[];
176
+ provider?: {
177
+ organization?: string;
178
+ url?: string;
179
+ };
180
+ authentication?: {
181
+ schemes?: string[];
182
+ credentials?: string;
183
+ };
184
+ }
185
+ /** Configuration for sending a message. */
186
+ interface MessageSendConfig {
187
+ acceptedOutputModes?: string[];
188
+ pushNotificationConfig?: {
189
+ url: string;
190
+ token?: string;
191
+ authentication?: {
192
+ schemes?: string[];
193
+ credentials?: string;
194
+ };
195
+ };
196
+ historyLength?: number;
197
+ blocking?: boolean;
198
+ }
199
+ /** Result of sending a message — either a Task or a Message. */
200
+ type SendMessageResult = {
201
+ type: 'task';
202
+ task: Task;
203
+ } | {
204
+ type: 'message';
205
+ message: A2aMessage;
206
+ };
207
+ /** Options for creating an A2aClient. */
208
+ interface A2aClientOptions {
209
+ /** Base URL of the A2A agent (e.g., 'http://localhost:8080'). */
210
+ baseUrl: string;
211
+ /** Optional Bearer token for authentication. */
212
+ authToken?: string;
213
+ }
214
+ /**
215
+ * Client for communicating with A2A-compliant agents.
216
+ *
217
+ * @example
218
+ * ```ts
219
+ * const client = new A2aClient({ baseUrl: 'http://localhost:8080' });
220
+ *
221
+ * // Discover agent capabilities
222
+ * const card = await client.discover();
223
+ * console.log(card.name, card.skills);
224
+ *
225
+ * // Quick ask (text in → text out)
226
+ * const answer = await client.ask('Summarize this document.');
227
+ *
228
+ * // Full message exchange
229
+ * const result = await client.sendMessage({
230
+ * role: 'user',
231
+ * parts: [{ type: 'text', text: 'Hello!' }],
232
+ * });
233
+ *
234
+ * // Get task status
235
+ * const task = await client.getTask('task-123');
236
+ *
237
+ * // Cancel a task
238
+ * await client.cancelTask('task-123');
239
+ * ```
240
+ */
241
+ declare class A2aClient {
242
+ private readonly baseUrl;
243
+ private readonly authToken?;
244
+ constructor(options: A2aClientOptions | string);
245
+ /**
246
+ * Discover the remote agent's capabilities by fetching its AgentCard.
247
+ * The card is served at `/.well-known/agent.json`.
248
+ */
249
+ discover(): Promise<AgentCard>;
250
+ /**
251
+ * Send a message to the agent and receive either a Task or a Message.
252
+ */
253
+ sendMessage(message: A2aMessage, config?: MessageSendConfig): Promise<SendMessageResult>;
254
+ /**
255
+ * Quick helper: send a text message and get a text response.
256
+ * Sends the text, polls until the task completes, and returns the final text.
257
+ */
258
+ ask(text: string): Promise<string>;
259
+ /**
260
+ * Get a task by its ID.
261
+ * @param taskId - The task identifier.
262
+ * @param historyLength - Optional number of history messages to include.
263
+ */
264
+ getTask(taskId: string, historyLength?: number): Promise<Task>;
265
+ /**
266
+ * Cancel a running task.
267
+ * @param taskId - The task identifier to cancel.
268
+ */
269
+ cancelTask(taskId: string): Promise<Task>;
270
+ }
271
+ /** Create a text message. */
272
+ declare function textMessage(role: A2aMessageRole, text: string): A2aMessage;
273
+ /** Create a user text message. */
274
+ declare function userMessage(text: string): A2aMessage;
275
+ /** Create an agent text message. */
276
+ declare function agentMessage(text: string): A2aMessage;
277
+ /** Extract all text from a message's parts. */
278
+ declare function extractText(message: A2aMessage): string;
279
+ /** Extract text from a task's latest status message. */
280
+ declare function taskText(task: Task): string | undefined;
281
+
282
+ export { A2aClient, type A2aClientOptions, type A2aMessage, type A2aMessageRole, type AgentCapabilities, type AgentCard, type AgentSkill, type Artifact, type McpContent, type McpModelHint, type McpModelPreferences, type McpPrompt, type McpPromptArgument, type McpPromptMessage, type McpPromptResult, type McpResource, type McpResourceContent, type McpSamplingMessage, type McpSamplingRequest, type McpSamplingResponse, McpServer, type MessageSendConfig, type Part, type SendMessageResult, type Task, type TaskState, type TaskStatus, agentMessage, extractText, taskText, textMessage, userMessage };
package/dist/mcp.js ADDED
@@ -0,0 +1,2 @@
1
+ import{create_mcp_server as c,mcp_server_add_tool as d,mcpServerAddResource as u,mcpServerAddPrompt as l,mcp_server_handle as m,destroy_mcp_server as M}from"gauss-napi";var n=class{_handle;disposed=!1;constructor(e,s){this._handle=c(e,s)}get handle(){return this._handle}addTool(e){return this.assertNotDisposed(),d(this._handle,JSON.stringify(e)),this}addResource(e){return this.assertNotDisposed(),u(this._handle,JSON.stringify(e)),this}addPrompt(e){return this.assertNotDisposed(),l(this._handle,JSON.stringify(e)),this}async handleMessage(e){return this.assertNotDisposed(),m(this._handle,JSON.stringify(e))}destroy(){if(!this.disposed){this.disposed=!0;try{M(this._handle)}catch{}}}[Symbol.dispose](){this.destroy()}assertNotDisposed(){if(this.disposed)throw new Error("McpServer has been destroyed")}};import{a2aDiscover as f,a2aSendMessage as h,a2aAsk as y,a2aGetTask as k,a2aCancelTask as x}from"gauss-napi";var a=class{baseUrl;authToken;constructor(e){typeof e=="string"?this.baseUrl=e:(this.baseUrl=e.baseUrl,this.authToken=e.authToken)}async discover(){return await f(this.baseUrl,this.authToken??void 0)}async sendMessage(e,s){let r=await h(this.baseUrl,this.authToken??void 0,JSON.stringify(e),s?JSON.stringify(s):void 0);if(r._type==="task"){let{_type:P,...g}=r;return{type:"task",task:g}}let{_type:S,...p}=r;return{type:"message",message:p}}async ask(e){return y(this.baseUrl,this.authToken??void 0,e)}async getTask(e,s){return await k(this.baseUrl,this.authToken??void 0,e,s??void 0)}async cancelTask(e){return await x(this.baseUrl,this.authToken??void 0,e)}};function i(t,e){return{role:t,parts:[{type:"text",text:e}]}}function T(t){return i("user",t)}function b(t){return i("agent",t)}function o(t){return t.parts.filter(e=>e.type==="text"&&e.text).map(e=>e.text).join("")}function A(t){if(t.status.message)return o(t.status.message)}export{a as A2aClient,n as McpServer,b as agentMessage,o as extractText,A as taskText,i as textMessage,T as userMessage};
2
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sdk/mcp.ts","../src/sdk/a2a.ts"],"sourcesContent":["/**\n * McpServer SDK wrapper — Model Context Protocol server backed by Rust core.\n */\nimport {\n create_mcp_server,\n mcp_server_add_tool,\n mcpServerAddResource,\n mcpServerAddPrompt,\n mcp_server_handle,\n destroy_mcp_server,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, ToolDef } from \"./types.js\";\n\n// ── MCP Types ──────────────────────────────────────────────────\n\nexport interface McpResource {\n uri: string;\n name: string;\n description?: string;\n mimeType?: string;\n}\n\nexport interface McpPromptArgument {\n name: string;\n description?: string;\n required?: boolean;\n}\n\nexport interface McpPrompt {\n name: string;\n description?: string;\n arguments: McpPromptArgument[];\n}\n\nexport interface McpPromptMessage {\n role: \"user\" | \"assistant\";\n content: McpContent;\n}\n\nexport type McpContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mimeType: string }\n | { type: \"resource\"; resource: McpResourceContent };\n\nexport interface McpResourceContent {\n uri: string;\n mimeType?: string;\n text?: string;\n blob?: string;\n}\n\nexport interface McpPromptResult {\n description?: string;\n messages: McpPromptMessage[];\n}\n\nexport interface McpModelHint {\n name?: string;\n}\n\nexport interface McpModelPreferences {\n hints?: McpModelHint[];\n costPriority?: number;\n speedPriority?: number;\n intelligencePriority?: number;\n}\n\nexport interface McpSamplingMessage {\n role: \"user\" | \"assistant\";\n content: McpContent;\n}\n\nexport interface McpSamplingRequest {\n messages: McpSamplingMessage[];\n modelPreferences?: McpModelPreferences;\n systemPrompt?: string;\n includeContext?: \"none\" | \"thisServer\" | \"allServers\";\n temperature?: number;\n maxTokens: number;\n stopSequences?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface McpSamplingResponse {\n role: \"assistant\";\n content: McpContent;\n model: string;\n stopReason?: string;\n}\n\n// ── McpServer Class ────────────────────────────────────────────\n\nexport class McpServer implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor(name: string, version: string) {\n this._handle = create_mcp_server(name, version);\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addTool(tool: ToolDef): this {\n this.assertNotDisposed();\n mcp_server_add_tool(this._handle, JSON.stringify(tool));\n return this;\n }\n\n addResource(resource: McpResource): this {\n this.assertNotDisposed();\n mcpServerAddResource(this._handle, JSON.stringify(resource));\n return this;\n }\n\n addPrompt(prompt: McpPrompt): this {\n this.assertNotDisposed();\n mcpServerAddPrompt(this._handle, JSON.stringify(prompt));\n return this;\n }\n\n async handleMessage(message: unknown): Promise<unknown> {\n this.assertNotDisposed();\n return mcp_server_handle(this._handle, JSON.stringify(message));\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_mcp_server(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"McpServer has been destroyed\");\n }\n }\n}\n","/**\n * A2A (Agent-to-Agent) Protocol SDK for TypeScript.\n *\n * Provides a high-level, developer-friendly client for interacting with\n * A2A-compliant agents over HTTP using JSON-RPC 2.0.\n *\n * @example\n * ```ts\n * const client = new A2aClient('http://localhost:8080');\n * const card = await client.discover();\n * const response = await client.ask('What is the weather?');\n * ```\n */\n\nimport {\n a2aDiscover,\n a2aSendMessage,\n a2aAsk,\n a2aGetTask,\n a2aCancelTask,\n} from 'gauss-napi';\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\n/** A2A message role. */\nexport type A2aMessageRole = 'user' | 'agent';\n\n/** Content part within a message. */\nexport interface Part {\n type: 'text' | 'file' | 'data';\n text?: string;\n mimeType?: string;\n data?: unknown;\n file?: { name?: string; mimeType?: string; bytes?: string; uri?: string };\n metadata?: Record<string, unknown>;\n}\n\n/** A single A2A message. */\nexport interface A2aMessage {\n role: A2aMessageRole;\n parts: Part[];\n metadata?: Record<string, unknown>;\n}\n\n/** Task state in the A2A lifecycle. */\nexport type TaskState =\n | 'submitted'\n | 'working'\n | 'input-required'\n | 'completed'\n | 'canceled'\n | 'failed'\n | 'unknown';\n\n/** Task status with optional message. */\nexport interface TaskStatus {\n state: TaskState;\n message?: A2aMessage;\n timestamp?: string;\n}\n\n/** An A2A task. */\nexport interface Task {\n id: string;\n sessionId?: string;\n status: TaskStatus;\n artifacts?: Artifact[];\n history?: A2aMessage[];\n metadata?: Record<string, unknown>;\n}\n\n/** An artifact produced by an agent. */\nexport interface Artifact {\n name?: string;\n description?: string;\n parts: Part[];\n index?: number;\n append?: boolean;\n lastChunk?: boolean;\n metadata?: Record<string, unknown>;\n}\n\n/** Agent capability declaration. */\nexport interface AgentCapabilities {\n streaming?: boolean;\n pushNotifications?: boolean;\n stateTransitionHistory?: boolean;\n}\n\n/** Skill declared in an AgentCard. */\nexport interface AgentSkill {\n id: string;\n name: string;\n description?: string;\n tags?: string[];\n examples?: string[];\n inputModes?: string[];\n outputModes?: string[];\n}\n\n/** Agent Card — served at /.well-known/agent.json */\nexport interface AgentCard {\n name: string;\n description?: string;\n url: string;\n version?: string;\n documentationUrl?: string;\n capabilities?: AgentCapabilities;\n skills?: AgentSkill[];\n defaultInputModes?: string[];\n defaultOutputModes?: string[];\n provider?: { organization?: string; url?: string };\n authentication?: { schemes?: string[]; credentials?: string };\n}\n\n/** Configuration for sending a message. */\nexport interface MessageSendConfig {\n acceptedOutputModes?: string[];\n pushNotificationConfig?: {\n url: string;\n token?: string;\n authentication?: { schemes?: string[]; credentials?: string };\n };\n historyLength?: number;\n blocking?: boolean;\n}\n\n/** Result of sending a message — either a Task or a Message. */\nexport type SendMessageResult =\n | { type: 'task'; task: Task }\n | { type: 'message'; message: A2aMessage };\n\n// ── Client ───────────────────────────────────────────────────────────────────\n\n/** Options for creating an A2aClient. */\nexport interface A2aClientOptions {\n /** Base URL of the A2A agent (e.g., 'http://localhost:8080'). */\n baseUrl: string;\n /** Optional Bearer token for authentication. */\n authToken?: string;\n}\n\n/**\n * Client for communicating with A2A-compliant agents.\n *\n * @example\n * ```ts\n * const client = new A2aClient({ baseUrl: 'http://localhost:8080' });\n *\n * // Discover agent capabilities\n * const card = await client.discover();\n * console.log(card.name, card.skills);\n *\n * // Quick ask (text in → text out)\n * const answer = await client.ask('Summarize this document.');\n *\n * // Full message exchange\n * const result = await client.sendMessage({\n * role: 'user',\n * parts: [{ type: 'text', text: 'Hello!' }],\n * });\n *\n * // Get task status\n * const task = await client.getTask('task-123');\n *\n * // Cancel a task\n * await client.cancelTask('task-123');\n * ```\n */\nexport class A2aClient {\n private readonly baseUrl: string;\n private readonly authToken?: string;\n\n constructor(options: A2aClientOptions | string) {\n if (typeof options === 'string') {\n this.baseUrl = options;\n } else {\n this.baseUrl = options.baseUrl;\n this.authToken = options.authToken;\n }\n }\n\n /**\n * Discover the remote agent's capabilities by fetching its AgentCard.\n * The card is served at `/.well-known/agent.json`.\n */\n async discover(): Promise<AgentCard> {\n const raw = await a2aDiscover(this.baseUrl, this.authToken ?? undefined);\n return raw as AgentCard;\n }\n\n /**\n * Send a message to the agent and receive either a Task or a Message.\n */\n async sendMessage(\n message: A2aMessage,\n config?: MessageSendConfig,\n ): Promise<SendMessageResult> {\n const raw = await a2aSendMessage(\n this.baseUrl,\n this.authToken ?? undefined,\n JSON.stringify(message),\n config ? JSON.stringify(config) : undefined,\n );\n if (raw._type === 'task') {\n const { _type, ...task } = raw;\n return { type: 'task', task: task as Task };\n }\n const { _type, ...msg } = raw;\n return { type: 'message', message: msg as A2aMessage };\n }\n\n /**\n * Quick helper: send a text message and get a text response.\n * Sends the text, polls until the task completes, and returns the final text.\n */\n async ask(text: string): Promise<string> {\n return a2aAsk(this.baseUrl, this.authToken ?? undefined, text);\n }\n\n /**\n * Get a task by its ID.\n * @param taskId - The task identifier.\n * @param historyLength - Optional number of history messages to include.\n */\n async getTask(taskId: string, historyLength?: number): Promise<Task> {\n const raw = await a2aGetTask(\n this.baseUrl,\n this.authToken ?? undefined,\n taskId,\n historyLength ?? undefined,\n );\n return raw as Task;\n }\n\n /**\n * Cancel a running task.\n * @param taskId - The task identifier to cancel.\n */\n async cancelTask(taskId: string): Promise<Task> {\n const raw = await a2aCancelTask(\n this.baseUrl,\n this.authToken ?? undefined,\n taskId,\n );\n return raw as Task;\n }\n}\n\n// ── Helper Builders ──────────────────────────────────────────────────────────\n\n/** Create a text message. */\nexport function textMessage(\n role: A2aMessageRole,\n text: string,\n): A2aMessage {\n return { role, parts: [{ type: 'text', text }] };\n}\n\n/** Create a user text message. */\nexport function userMessage(text: string): A2aMessage {\n return textMessage('user', text);\n}\n\n/** Create an agent text message. */\nexport function agentMessage(text: string): A2aMessage {\n return textMessage('agent', text);\n}\n\n/** Extract all text from a message's parts. */\nexport function extractText(message: A2aMessage): string {\n return message.parts\n .filter((p) => p.type === 'text' && p.text)\n .map((p) => p.text!)\n .join('');\n}\n\n/** Extract text from a task's latest status message. */\nexport function taskText(task: Task): string | undefined {\n if (task.status.message) {\n return extractText(task.status.message);\n }\n return undefined;\n}\n"],"mappings":"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","names":["create_mcp_server","mcp_server_add_tool","mcpServerAddResource","mcpServerAddPrompt","mcp_server_handle","destroy_mcp_server","McpServer","name","version","tool","resource","prompt","message","a2aDiscover","a2aSendMessage","a2aAsk","a2aGetTask","a2aCancelTask","A2aClient","options","message","config","raw","_type","task","msg","text","taskId","historyLength","textMessage","role","userMessage","agentMessage","extractText","p","taskText"]}
@@ -0,0 +1,2 @@
1
+ "use strict";var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var g=(r,s)=>{for(var t in s)l(r,t,{get:s[t],enumerable:!0})},c=(r,s,t,_)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of u(s))!m.call(r,a)&&a!==t&&l(r,a,{get:()=>s[a],enumerable:!(_=p(s,a))||_.enumerable});return r};var y=r=>c(l({},"__esModule",{value:!0}),r);var D={};g(D,{GuardrailChain:()=>n,MiddlewareChain:()=>o,PluginRegistry:()=>h});module.exports=y(D);var d=require("gauss-napi"),o=class{_handle;disposed=!1;constructor(){this._handle=(0,d.create_middleware_chain)()}get handle(){return this._handle}useLogging(){return this.assertNotDisposed(),(0,d.middleware_use_logging)(this._handle),this}useCaching(s){return this.assertNotDisposed(),(0,d.middleware_use_caching)(this._handle,s),this}useRateLimit(s,t){return this.assertNotDisposed(),(0,d.middleware_use_rate_limit)(this._handle,s,t),this}destroy(){if(!this.disposed){this.disposed=!0;try{(0,d.destroy_middleware_chain)(this._handle)}catch{}}}[Symbol.dispose](){this.destroy()}assertNotDisposed(){if(this.disposed)throw new Error("MiddlewareChain has been destroyed")}};var e=require("gauss-napi"),n=class{_handle;disposed=!1;constructor(){this._handle=(0,e.create_guardrail_chain)()}get handle(){return this._handle}addContentModeration(s,t=[]){return this.assertNotDisposed(),(0,e.guardrail_chain_add_content_moderation)(this._handle,s,t),this}addPiiDetection(s){return this.assertNotDisposed(),(0,e.guardrail_chain_add_pii_detection)(this._handle,s),this}addTokenLimit(s,t){return this.assertNotDisposed(),(0,e.guardrail_chain_add_token_limit)(this._handle,s,t),this}addRegexFilter(s,t=[]){return this.assertNotDisposed(),(0,e.guardrail_chain_add_regex_filter)(this._handle,s,t),this}addSchema(s){return this.assertNotDisposed(),(0,e.guardrail_chain_add_schema)(this._handle,JSON.stringify(s)),this}list(){return this.assertNotDisposed(),(0,e.guardrail_chain_list)(this._handle)}destroy(){if(!this.disposed){this.disposed=!0;try{(0,e.destroy_guardrail_chain)(this._handle)}catch{}}}[Symbol.dispose](){this.destroy()}assertNotDisposed(){if(this.disposed)throw new Error("GuardrailChain has been destroyed")}};var i=require("gauss-napi"),h=class{_handle;disposed=!1;constructor(){this._handle=(0,i.create_plugin_registry)()}get handle(){return this._handle}addTelemetry(){return this.assertNotDisposed(),(0,i.plugin_registry_add_telemetry)(this._handle),this}addMemory(){return this.assertNotDisposed(),(0,i.plugin_registry_add_memory)(this._handle),this}list(){return this.assertNotDisposed(),(0,i.plugin_registry_list)(this._handle)}emit(s){this.assertNotDisposed(),(0,i.plugin_registry_emit)(this._handle,JSON.stringify(s))}destroy(){if(!this.disposed){this.disposed=!0;try{(0,i.destroy_plugin_registry)(this._handle)}catch{}}}[Symbol.dispose](){this.destroy()}assertNotDisposed(){if(this.disposed)throw new Error("PluginRegistry has been destroyed")}};0&&(module.exports={GuardrailChain,MiddlewareChain,PluginRegistry});
2
+ //# sourceMappingURL=middleware.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/middleware.ts","../src/sdk/middleware.ts","../src/sdk/guardrail.ts","../src/sdk/plugin.ts"],"sourcesContent":["export { MiddlewareChain } from \"./sdk/middleware.js\";\nexport { GuardrailChain } from \"./sdk/guardrail.js\";\nexport { PluginRegistry } from \"./sdk/plugin.js\";\n","/**\n * Middleware SDK wrapper — request/response chain backed by Rust core.\n */\nimport {\n create_middleware_chain,\n middleware_use_logging,\n middleware_use_caching,\n middleware_use_rate_limit,\n destroy_middleware_chain,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class MiddlewareChain implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_middleware_chain();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n useLogging(): this {\n this.assertNotDisposed();\n middleware_use_logging(this._handle);\n return this;\n }\n\n useCaching(ttlMs: number): this {\n this.assertNotDisposed();\n middleware_use_caching(this._handle, ttlMs);\n return this;\n }\n\n useRateLimit(requestsPerMinute: number, burst?: number): this {\n this.assertNotDisposed();\n middleware_use_rate_limit(this._handle, requestsPerMinute, burst);\n return this;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_middleware_chain(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"MiddlewareChain has been destroyed\");\n }\n }\n}\n","/**\n * GuardrailChain SDK wrapper — content safety and validation backed by Rust core.\n */\nimport {\n create_guardrail_chain,\n guardrail_chain_add_content_moderation,\n guardrail_chain_add_pii_detection,\n guardrail_chain_add_token_limit,\n guardrail_chain_add_regex_filter,\n guardrail_chain_add_schema,\n guardrail_chain_list,\n destroy_guardrail_chain,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, PiiAction } from \"./types.js\";\n\nexport class GuardrailChain implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_guardrail_chain();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addContentModeration(\n blockPatterns: string[],\n warnPatterns: string[] = []\n ): this {\n this.assertNotDisposed();\n guardrail_chain_add_content_moderation(\n this._handle,\n blockPatterns,\n warnPatterns\n );\n return this;\n }\n\n addPiiDetection(action: PiiAction): this {\n this.assertNotDisposed();\n guardrail_chain_add_pii_detection(this._handle, action);\n return this;\n }\n\n addTokenLimit(maxInput?: number, maxOutput?: number): this {\n this.assertNotDisposed();\n guardrail_chain_add_token_limit(this._handle, maxInput, maxOutput);\n return this;\n }\n\n addRegexFilter(blockRules: string[], warnRules: string[] = []): this {\n this.assertNotDisposed();\n guardrail_chain_add_regex_filter(this._handle, blockRules, warnRules);\n return this;\n }\n\n addSchema(schema: Record<string, unknown>): this {\n this.assertNotDisposed();\n guardrail_chain_add_schema(this._handle, JSON.stringify(schema));\n return this;\n }\n\n list(): string[] {\n this.assertNotDisposed();\n return guardrail_chain_list(this._handle);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_guardrail_chain(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"GuardrailChain has been destroyed\");\n }\n }\n}\n","/**\n * Plugin SDK wrapper — event-driven plugin system backed by Rust core.\n */\nimport {\n create_plugin_registry,\n plugin_registry_add_telemetry,\n plugin_registry_add_memory,\n plugin_registry_list,\n plugin_registry_emit,\n destroy_plugin_registry,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class PluginRegistry implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_plugin_registry();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addTelemetry(): this {\n this.assertNotDisposed();\n plugin_registry_add_telemetry(this._handle);\n return this;\n }\n\n addMemory(): this {\n this.assertNotDisposed();\n plugin_registry_add_memory(this._handle);\n return this;\n }\n\n list(): string[] {\n this.assertNotDisposed();\n return plugin_registry_list(this._handle);\n }\n\n emit(event: Record<string, unknown>): void {\n this.assertNotDisposed();\n plugin_registry_emit(this._handle, JSON.stringify(event));\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_plugin_registry(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"PluginRegistry has been destroyed\");\n }\n }\n}\n"],"mappings":"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","names":["middleware_exports","__export","GuardrailChain","MiddlewareChain","PluginRegistry","__toCommonJS","import_gauss_napi","MiddlewareChain","ttlMs","requestsPerMinute","burst","import_gauss_napi","GuardrailChain","blockPatterns","warnPatterns","action","maxInput","maxOutput","blockRules","warnRules","schema","import_gauss_napi","PluginRegistry","event"]}
@@ -0,0 +1,46 @@
1
+ import { D as Disposable, H as Handle, o as PiiAction } from './types-BkwC4s1P.cjs';
2
+
3
+ declare class MiddlewareChain implements Disposable {
4
+ private readonly _handle;
5
+ private disposed;
6
+ constructor();
7
+ get handle(): Handle;
8
+ useLogging(): this;
9
+ useCaching(ttlMs: number): this;
10
+ useRateLimit(requestsPerMinute: number, burst?: number): this;
11
+ destroy(): void;
12
+ [Symbol.dispose](): void;
13
+ private assertNotDisposed;
14
+ }
15
+
16
+ declare class PluginRegistry implements Disposable {
17
+ private readonly _handle;
18
+ private disposed;
19
+ constructor();
20
+ get handle(): Handle;
21
+ addTelemetry(): this;
22
+ addMemory(): this;
23
+ list(): string[];
24
+ emit(event: Record<string, unknown>): void;
25
+ destroy(): void;
26
+ [Symbol.dispose](): void;
27
+ private assertNotDisposed;
28
+ }
29
+
30
+ declare class GuardrailChain implements Disposable {
31
+ private readonly _handle;
32
+ private disposed;
33
+ constructor();
34
+ get handle(): Handle;
35
+ addContentModeration(blockPatterns: string[], warnPatterns?: string[]): this;
36
+ addPiiDetection(action: PiiAction): this;
37
+ addTokenLimit(maxInput?: number, maxOutput?: number): this;
38
+ addRegexFilter(blockRules: string[], warnRules?: string[]): this;
39
+ addSchema(schema: Record<string, unknown>): this;
40
+ list(): string[];
41
+ destroy(): void;
42
+ [Symbol.dispose](): void;
43
+ private assertNotDisposed;
44
+ }
45
+
46
+ export { GuardrailChain, MiddlewareChain, PluginRegistry };