open-agent-sdk 0.1.0-alpha.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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -0
  3. package/README.zh.md +285 -0
  4. package/dist/agent/agent-definition.d.ts +107 -0
  5. package/dist/agent/agent-definition.d.ts.map +1 -0
  6. package/dist/agent/agent-definition.js +90 -0
  7. package/dist/agent/agent-definition.js.map +1 -0
  8. package/dist/agent/react-loop.d.ts +117 -0
  9. package/dist/agent/react-loop.d.ts.map +1 -0
  10. package/dist/agent/react-loop.js +674 -0
  11. package/dist/agent/react-loop.js.map +1 -0
  12. package/dist/agent/subagent-runner.d.ts +67 -0
  13. package/dist/agent/subagent-runner.d.ts.map +1 -0
  14. package/dist/agent/subagent-runner.js +168 -0
  15. package/dist/agent/subagent-runner.js.map +1 -0
  16. package/dist/hooks/index.d.ts +8 -0
  17. package/dist/hooks/index.d.ts.map +1 -0
  18. package/dist/hooks/index.js +9 -0
  19. package/dist/hooks/index.js.map +1 -0
  20. package/dist/hooks/inputs.d.ts +56 -0
  21. package/dist/hooks/inputs.d.ts.map +1 -0
  22. package/dist/hooks/inputs.js +150 -0
  23. package/dist/hooks/inputs.js.map +1 -0
  24. package/dist/hooks/manager.d.ts +63 -0
  25. package/dist/hooks/manager.d.ts.map +1 -0
  26. package/dist/hooks/manager.js +137 -0
  27. package/dist/hooks/manager.js.map +1 -0
  28. package/dist/hooks/types.d.ts +191 -0
  29. package/dist/hooks/types.d.ts.map +1 -0
  30. package/dist/hooks/types.js +6 -0
  31. package/dist/hooks/types.js.map +1 -0
  32. package/dist/index.d.ts +109 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +218 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/mcp/errors.d.ts +26 -0
  37. package/dist/mcp/errors.d.ts.map +1 -0
  38. package/dist/mcp/errors.js +43 -0
  39. package/dist/mcp/errors.js.map +1 -0
  40. package/dist/mcp/index.d.ts +11 -0
  41. package/dist/mcp/index.d.ts.map +1 -0
  42. package/dist/mcp/index.js +13 -0
  43. package/dist/mcp/index.js.map +1 -0
  44. package/dist/mcp/manager.d.ts +50 -0
  45. package/dist/mcp/manager.d.ts.map +1 -0
  46. package/dist/mcp/manager.js +170 -0
  47. package/dist/mcp/manager.js.map +1 -0
  48. package/dist/mcp/server-registry.d.ts +48 -0
  49. package/dist/mcp/server-registry.d.ts.map +1 -0
  50. package/dist/mcp/server-registry.js +121 -0
  51. package/dist/mcp/server-registry.js.map +1 -0
  52. package/dist/mcp/tool-adapter.d.ts +42 -0
  53. package/dist/mcp/tool-adapter.d.ts.map +1 -0
  54. package/dist/mcp/tool-adapter.js +89 -0
  55. package/dist/mcp/tool-adapter.js.map +1 -0
  56. package/dist/mcp/types.d.ts +74 -0
  57. package/dist/mcp/types.d.ts.map +1 -0
  58. package/dist/mcp/types.js +21 -0
  59. package/dist/mcp/types.js.map +1 -0
  60. package/dist/permissions/index.d.ts +3 -0
  61. package/dist/permissions/index.d.ts.map +1 -0
  62. package/dist/permissions/index.js +4 -0
  63. package/dist/permissions/index.js.map +1 -0
  64. package/dist/permissions/manager.d.ts +40 -0
  65. package/dist/permissions/manager.d.ts.map +1 -0
  66. package/dist/permissions/manager.js +115 -0
  67. package/dist/permissions/manager.js.map +1 -0
  68. package/dist/permissions/types.d.ts +124 -0
  69. package/dist/permissions/types.d.ts.map +1 -0
  70. package/dist/permissions/types.js +25 -0
  71. package/dist/permissions/types.js.map +1 -0
  72. package/dist/providers/anthropic.d.ts +18 -0
  73. package/dist/providers/anthropic.d.ts.map +1 -0
  74. package/dist/providers/anthropic.js +126 -0
  75. package/dist/providers/anthropic.js.map +1 -0
  76. package/dist/providers/base.d.ts +85 -0
  77. package/dist/providers/base.d.ts.map +1 -0
  78. package/dist/providers/base.js +36 -0
  79. package/dist/providers/base.js.map +1 -0
  80. package/dist/providers/google.d.ts +12 -0
  81. package/dist/providers/google.d.ts.map +1 -0
  82. package/dist/providers/google.js +123 -0
  83. package/dist/providers/google.js.map +1 -0
  84. package/dist/providers/openai.d.ts +12 -0
  85. package/dist/providers/openai.d.ts.map +1 -0
  86. package/dist/providers/openai.js +110 -0
  87. package/dist/providers/openai.js.map +1 -0
  88. package/dist/session/factory.d.ts +156 -0
  89. package/dist/session/factory.d.ts.map +1 -0
  90. package/dist/session/factory.js +311 -0
  91. package/dist/session/factory.js.map +1 -0
  92. package/dist/session/index.d.ts +8 -0
  93. package/dist/session/index.d.ts.map +1 -0
  94. package/dist/session/index.js +7 -0
  95. package/dist/session/index.js.map +1 -0
  96. package/dist/session/session.d.ts +144 -0
  97. package/dist/session/session.d.ts.map +1 -0
  98. package/dist/session/session.js +319 -0
  99. package/dist/session/session.js.map +1 -0
  100. package/dist/session/storage.d.ts +105 -0
  101. package/dist/session/storage.d.ts.map +1 -0
  102. package/dist/session/storage.js +148 -0
  103. package/dist/session/storage.js.map +1 -0
  104. package/dist/tools/ask-user-question.d.ts +31 -0
  105. package/dist/tools/ask-user-question.d.ts.map +1 -0
  106. package/dist/tools/ask-user-question.js +66 -0
  107. package/dist/tools/ask-user-question.js.map +1 -0
  108. package/dist/tools/bash-output.d.ts +22 -0
  109. package/dist/tools/bash-output.d.ts.map +1 -0
  110. package/dist/tools/bash-output.js +43 -0
  111. package/dist/tools/bash-output.js.map +1 -0
  112. package/dist/tools/bash.d.ts +36 -0
  113. package/dist/tools/bash.d.ts.map +1 -0
  114. package/dist/tools/bash.js +161 -0
  115. package/dist/tools/bash.js.map +1 -0
  116. package/dist/tools/edit.d.ts +24 -0
  117. package/dist/tools/edit.d.ts.map +1 -0
  118. package/dist/tools/edit.js +83 -0
  119. package/dist/tools/edit.js.map +1 -0
  120. package/dist/tools/glob.d.ts +22 -0
  121. package/dist/tools/glob.d.ts.map +1 -0
  122. package/dist/tools/glob.js +248 -0
  123. package/dist/tools/glob.js.map +1 -0
  124. package/dist/tools/grep.d.ts +39 -0
  125. package/dist/tools/grep.d.ts.map +1 -0
  126. package/dist/tools/grep.js +312 -0
  127. package/dist/tools/grep.js.map +1 -0
  128. package/dist/tools/kill-bash.d.ts +19 -0
  129. package/dist/tools/kill-bash.d.ts.map +1 -0
  130. package/dist/tools/kill-bash.js +64 -0
  131. package/dist/tools/kill-bash.js.map +1 -0
  132. package/dist/tools/read.d.ts +26 -0
  133. package/dist/tools/read.d.ts.map +1 -0
  134. package/dist/tools/read.js +87 -0
  135. package/dist/tools/read.js.map +1 -0
  136. package/dist/tools/registry.d.ts +32 -0
  137. package/dist/tools/registry.d.ts.map +1 -0
  138. package/dist/tools/registry.js +91 -0
  139. package/dist/tools/registry.js.map +1 -0
  140. package/dist/tools/task-create.d.ts +22 -0
  141. package/dist/tools/task-create.d.ts.map +1 -0
  142. package/dist/tools/task-create.js +42 -0
  143. package/dist/tools/task-create.js.map +1 -0
  144. package/dist/tools/task-get.d.ts +19 -0
  145. package/dist/tools/task-get.d.ts.map +1 -0
  146. package/dist/tools/task-get.js +38 -0
  147. package/dist/tools/task-get.js.map +1 -0
  148. package/dist/tools/task-list.d.ts +18 -0
  149. package/dist/tools/task-list.d.ts.map +1 -0
  150. package/dist/tools/task-list.js +27 -0
  151. package/dist/tools/task-list.js.map +1 -0
  152. package/dist/tools/task-storage.d.ts +6 -0
  153. package/dist/tools/task-storage.d.ts.map +1 -0
  154. package/dist/tools/task-storage.js +83 -0
  155. package/dist/tools/task-storage.js.map +1 -0
  156. package/dist/tools/task-update.d.ts +28 -0
  157. package/dist/tools/task-update.d.ts.map +1 -0
  158. package/dist/tools/task-update.js +118 -0
  159. package/dist/tools/task-update.js.map +1 -0
  160. package/dist/tools/task.d.ts +80 -0
  161. package/dist/tools/task.d.ts.map +1 -0
  162. package/dist/tools/task.js +99 -0
  163. package/dist/tools/task.js.map +1 -0
  164. package/dist/tools/web-fetch.d.ts +21 -0
  165. package/dist/tools/web-fetch.d.ts.map +1 -0
  166. package/dist/tools/web-fetch.js +124 -0
  167. package/dist/tools/web-fetch.js.map +1 -0
  168. package/dist/tools/web-search.d.ts +20 -0
  169. package/dist/tools/web-search.d.ts.map +1 -0
  170. package/dist/tools/web-search.js +127 -0
  171. package/dist/tools/web-search.js.map +1 -0
  172. package/dist/tools/write.d.ts +22 -0
  173. package/dist/tools/write.d.ts.map +1 -0
  174. package/dist/tools/write.js +46 -0
  175. package/dist/tools/write.js.map +1 -0
  176. package/dist/types/messages.d.ts +138 -0
  177. package/dist/types/messages.d.ts.map +1 -0
  178. package/dist/types/messages.js +88 -0
  179. package/dist/types/messages.js.map +1 -0
  180. package/dist/types/task.d.ts +29 -0
  181. package/dist/types/task.d.ts.map +1 -0
  182. package/dist/types/task.js +5 -0
  183. package/dist/types/task.js.map +1 -0
  184. package/dist/types/tools.d.ts +56 -0
  185. package/dist/types/tools.d.ts.map +1 -0
  186. package/dist/types/tools.js +25 -0
  187. package/dist/types/tools.js.map +1 -0
  188. package/dist/utils/logger.d.ts +19 -0
  189. package/dist/utils/logger.d.ts.map +1 -0
  190. package/dist/utils/logger.js +46 -0
  191. package/dist/utils/logger.js.map +1 -0
  192. package/dist/utils/uuid.d.ts +3 -0
  193. package/dist/utils/uuid.d.ts.map +1 -0
  194. package/dist/utils/uuid.js +5 -0
  195. package/dist/utils/uuid.js.map +1 -0
  196. package/package.json +38 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * MCP Server Registry
3
+ * Manages registration of MCP tools to SDK ToolRegistry
4
+ */
5
+ import { McpToolAdapter } from './tool-adapter.js';
6
+ /**
7
+ * Manages registration of MCP server tools to SDK ToolRegistry
8
+ */
9
+ export class McpServerRegistry {
10
+ toolRegistry;
11
+ registeredTools = new Map(); // serverName -> Set of tool names
12
+ constructor(toolRegistry) {
13
+ this.toolRegistry = toolRegistry;
14
+ }
15
+ /**
16
+ * Register all tools from an MCP server
17
+ * Returns list of registered tool names (with prefixes)
18
+ */
19
+ async registerServer(name, client) {
20
+ const adapter = new McpToolAdapter(name, client);
21
+ const registeredNames = [];
22
+ try {
23
+ // Fetch tools from MCP server
24
+ const response = await client.listTools();
25
+ const tools = response.tools || [];
26
+ // Track tools for this server
27
+ const serverTools = new Set();
28
+ for (const tool of tools) {
29
+ // Convert to SDK tool format
30
+ const sdkTool = adapter.toSdkTool(tool);
31
+ // Register with ToolRegistry
32
+ this.toolRegistry.register(sdkTool);
33
+ // Track the registered tool
34
+ serverTools.add(sdkTool.name);
35
+ registeredNames.push(sdkTool.name);
36
+ }
37
+ // Store tracking info
38
+ this.registeredTools.set(name, serverTools);
39
+ return registeredNames;
40
+ }
41
+ catch (error) {
42
+ console.warn(`Failed to register MCP server "${name}" tools:`, error);
43
+ return [];
44
+ }
45
+ }
46
+ /**
47
+ * Unregister all tools from a server
48
+ */
49
+ unregisterServer(name) {
50
+ const serverTools = this.registeredTools.get(name);
51
+ if (!serverTools) {
52
+ return; // Server not registered
53
+ }
54
+ // Unregister each tool from ToolRegistry
55
+ for (const toolName of serverTools) {
56
+ this.toolRegistry.unregister(toolName);
57
+ }
58
+ // Remove tracking
59
+ this.registeredTools.delete(name);
60
+ }
61
+ /**
62
+ * Check if a tool name is an MCP tool
63
+ */
64
+ isMcpTool(toolName) {
65
+ // Check if it's in our tracking
66
+ for (const serverTools of this.registeredTools.values()) {
67
+ if (serverTools.has(toolName)) {
68
+ return true;
69
+ }
70
+ }
71
+ return false;
72
+ }
73
+ /**
74
+ * Parse MCP tool name to extract server and tool name
75
+ * Format: mcp_<server>_<tool>
76
+ */
77
+ parseMcpToolName(prefixedName) {
78
+ if (!prefixedName.startsWith('mcp_')) {
79
+ return null;
80
+ }
81
+ const parts = prefixedName.slice(4).split('_'); // Remove 'mcp_' prefix
82
+ if (parts.length < 2) {
83
+ return null; // Need at least server name and tool name
84
+ }
85
+ const serverName = parts[0];
86
+ const toolName = parts.slice(1).join('_');
87
+ if (!serverName || !toolName) {
88
+ return null;
89
+ }
90
+ return { serverName, toolName };
91
+ }
92
+ /**
93
+ * Get server name for a registered MCP tool
94
+ */
95
+ getServerForTool(toolName) {
96
+ const parsed = this.parseMcpToolName(toolName);
97
+ if (!parsed) {
98
+ return null;
99
+ }
100
+ // Verify it's actually registered
101
+ const serverTools = this.registeredTools.get(parsed.serverName);
102
+ if (serverTools && serverTools.has(toolName)) {
103
+ return parsed.serverName;
104
+ }
105
+ return null;
106
+ }
107
+ /**
108
+ * Get all registered server names
109
+ */
110
+ getRegisteredServers() {
111
+ return Array.from(this.registeredTools.keys());
112
+ }
113
+ /**
114
+ * Get tools registered for a specific server
115
+ */
116
+ getServerTools(serverName) {
117
+ const tools = this.registeredTools.get(serverName);
118
+ return tools ? Array.from(tools) : [];
119
+ }
120
+ }
121
+ //# sourceMappingURL=server-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-registry.js","sourceRoot":"","sources":["../../src/mcp/server-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * MCP Tool Adapter
3
+ * Converts MCP tool format to Open Agent SDK tool format
4
+ */
5
+ import type { Client } from '@modelcontextprotocol/sdk/client/index.js';
6
+ import type { McpTool } from './types.js';
7
+ import type { Tool } from '../types/tools.js';
8
+ /**
9
+ * Adapts MCP tools to SDK tool format
10
+ */
11
+ export declare class McpToolAdapter {
12
+ private serverName;
13
+ private client;
14
+ private prefixSeparator;
15
+ constructor(serverName: string, client: Client);
16
+ /**
17
+ * Generate prefixed tool name to avoid conflicts
18
+ * Format: mcp_<server>_<tool>
19
+ */
20
+ getPrefixedName(toolName: string): string;
21
+ /**
22
+ * Convert MCP tool to SDK Tool format
23
+ */
24
+ toSdkTool(mcpTool: McpTool): Tool;
25
+ /**
26
+ * Create tool execution handler
27
+ */
28
+ private createHandler;
29
+ /**
30
+ * Convert JSON schema to SDK JSONSchema format
31
+ */
32
+ private convertSchema;
33
+ /**
34
+ * Get server name
35
+ */
36
+ getServerName(): string;
37
+ /**
38
+ * Get client
39
+ */
40
+ getClient(): Client;
41
+ }
42
+ //# sourceMappingURL=tool-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-adapter.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,mBAAmB,CAAC;AAEvE;;GAEG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,eAAe,CAAO;gBAGpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;IAGxB;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIzC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAiBjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * MCP Tool Adapter
3
+ * Converts MCP tool format to Open Agent SDK tool format
4
+ */
5
+ /**
6
+ * Adapts MCP tools to SDK tool format
7
+ */
8
+ export class McpToolAdapter {
9
+ serverName;
10
+ client;
11
+ prefixSeparator = '_';
12
+ constructor(serverName, client) {
13
+ this.serverName = serverName;
14
+ this.client = client;
15
+ }
16
+ /**
17
+ * Generate prefixed tool name to avoid conflicts
18
+ * Format: mcp_<server>_<tool>
19
+ */
20
+ getPrefixedName(toolName) {
21
+ return `mcp${this.prefixSeparator}${this.serverName}${this.prefixSeparator}${toolName}`;
22
+ }
23
+ /**
24
+ * Convert MCP tool to SDK Tool format
25
+ */
26
+ toSdkTool(mcpTool) {
27
+ const prefixedName = this.getPrefixedName(mcpTool.name);
28
+ const description = `[MCP:${this.serverName}] ${mcpTool.description || ''}`;
29
+ // Convert JSON schema to SDK format
30
+ const parameters = mcpTool.inputSchema
31
+ ? this.convertSchema(mcpTool.inputSchema)
32
+ : { type: 'object', properties: {} };
33
+ return {
34
+ name: prefixedName,
35
+ description,
36
+ parameters,
37
+ handler: this.createHandler(mcpTool.name),
38
+ };
39
+ }
40
+ /**
41
+ * Create tool execution handler
42
+ */
43
+ createHandler(originalToolName) {
44
+ return async (input, _context) => {
45
+ const result = await this.client.callTool({
46
+ name: originalToolName,
47
+ arguments: input,
48
+ });
49
+ return result;
50
+ };
51
+ }
52
+ /**
53
+ * Convert JSON schema to SDK JSONSchema format
54
+ */
55
+ convertSchema(schema) {
56
+ // Default schema if conversion fails
57
+ const defaultSchema = {
58
+ type: 'object',
59
+ properties: {},
60
+ };
61
+ if (!schema || typeof schema !== 'object') {
62
+ return defaultSchema;
63
+ }
64
+ const s = schema;
65
+ // Ensure type is 'object'
66
+ if (s.type !== 'object') {
67
+ return defaultSchema;
68
+ }
69
+ return {
70
+ type: 'object',
71
+ properties: s.properties || {},
72
+ required: Array.isArray(s.required) ? s.required : undefined,
73
+ additionalProperties: s.additionalProperties,
74
+ };
75
+ }
76
+ /**
77
+ * Get server name
78
+ */
79
+ getServerName() {
80
+ return this.serverName;
81
+ }
82
+ /**
83
+ * Get client
84
+ */
85
+ getClient() {
86
+ return this.client;
87
+ }
88
+ }
89
+ //# sourceMappingURL=tool-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/mcp/tool-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,OAAO,cAAc;IAIf;IACA;IAJF,eAAe,GAAG,GAAG,CAAC;IAE9B,YACU,UAAkB,EAClB,MAAc;QADd,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ;;;OAGG;IACH,eAAe,CAAC,QAAgB;QAC9B,OAAO,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,EAAE,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAgB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAE5E,oCAAoC;QACpC,MAAM,UAAU,GAAe,OAAO,CAAC,WAAW;YAChD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAEvC,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,WAAW;YACX,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,gBAAwB;QAC5C,OAAO,KAAK,EAAE,KAAc,EAAE,QAAqB,EAA0B,EAAE;YAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,KAAgC;aAC5C,CAAC,CAAC;YAEH,OAAO,MAAuB,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAe;QACnC,qCAAqC;QACrC,MAAM,aAAa,GAAe;YAChC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,MAAM,CAAC,GAAG,MAAiC,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAG,CAAC,CAAC,UAAsC,IAAI,EAAE;YAC3D,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5D,oBAAoB,EAAE,CAAC,CAAC,oBAA2C;SACpE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * MCP (Model Context Protocol) type definitions
3
+ * Aligned with Claude Agent SDK
4
+ */
5
+ /** stdio transport configuration */
6
+ export interface McpStdioServerConfig {
7
+ type: 'stdio';
8
+ command: string;
9
+ args?: string[];
10
+ env?: Record<string, string>;
11
+ }
12
+ /** HTTP transport configuration */
13
+ export interface McpHttpServerConfig {
14
+ type: 'http';
15
+ url: string;
16
+ headers?: Record<string, string>;
17
+ }
18
+ /** SSE transport configuration */
19
+ export interface McpSSEServerConfig {
20
+ type: 'sse';
21
+ url: string;
22
+ headers?: Record<string, string>;
23
+ }
24
+ /** SDK transport configuration (direct instance) */
25
+ export interface McpSdkServerConfig {
26
+ type: 'sdk';
27
+ name: string;
28
+ instance: any;
29
+ }
30
+ /** Union type for all MCP server configurations */
31
+ export type McpServerConfig = McpStdioServerConfig | McpHttpServerConfig | McpSSEServerConfig | McpSdkServerConfig;
32
+ /** Configuration map for multiple MCP servers */
33
+ export type McpServersConfig = Record<string, McpServerConfig>;
34
+ /** MCP Server status */
35
+ export interface McpServerStatus {
36
+ name: string;
37
+ status: 'connected' | 'failed' | 'needs-auth' | 'pending';
38
+ serverInfo?: {
39
+ name: string;
40
+ version: string;
41
+ };
42
+ tools: string[];
43
+ error?: string;
44
+ }
45
+ /** MCP Tool definition from server */
46
+ export interface McpTool {
47
+ name: string;
48
+ description?: string;
49
+ inputSchema?: any;
50
+ }
51
+ /** MCP Tool call result */
52
+ export interface McpToolResult {
53
+ content: Array<{
54
+ type: 'text' | 'image' | 'resource';
55
+ text?: string;
56
+ data?: any;
57
+ mimeType?: string;
58
+ resource?: {
59
+ uri: string;
60
+ mimeType?: string;
61
+ data: any;
62
+ };
63
+ }>;
64
+ isError?: boolean;
65
+ }
66
+ /** Type guard for stdio config */
67
+ export declare function isStdioConfig(config: McpServerConfig): config is McpStdioServerConfig;
68
+ /** Type guard for HTTP config */
69
+ export declare function isHttpConfig(config: McpServerConfig): config is McpHttpServerConfig;
70
+ /** Type guard for SSE config */
71
+ export declare function isSseConfig(config: McpServerConfig): config is McpSSEServerConfig;
72
+ /** Type guard for SDK config */
73
+ export declare function isSdkConfig(config: McpServerConfig): config is McpSdkServerConfig;
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,CAAC;AAEvB,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE/D,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1D,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE;YACT,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAElB,IAAI,EAAE,GAAG,CAAC;SACX,CAAC;KACH,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kCAAkC;AAClC,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,oBAAoB,CAErF;AAED,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,mBAAmB,CAEnF;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,kBAAkB,CAEjF;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,kBAAkB,CAEjF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * MCP (Model Context Protocol) type definitions
3
+ * Aligned with Claude Agent SDK
4
+ */
5
+ /** Type guard for stdio config */
6
+ export function isStdioConfig(config) {
7
+ return config.type === 'stdio';
8
+ }
9
+ /** Type guard for HTTP config */
10
+ export function isHttpConfig(config) {
11
+ return config.type === 'http';
12
+ }
13
+ /** Type guard for SSE config */
14
+ export function isSseConfig(config) {
15
+ return config.type === 'sse';
16
+ }
17
+ /** Type guard for SDK config */
18
+ export function isSdkConfig(config) {
19
+ return config.type === 'sdk';
20
+ }
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgFH,kCAAkC;AAClC,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AAChC,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;AAC/B,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { PermissionManager } from './manager';
2
+ export { type PermissionMode, type PermissionOptions, type PermissionResult, type CanUseTool, type PermissionCheckResult, type PlanLogEntry, SENSITIVE_TOOLS, EDIT_TOOLS, isSensitiveTool, isEditTool, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,eAAe,EACf,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Permission system exports
2
+ export { PermissionManager } from './manager';
3
+ export { SENSITIVE_TOOLS, EDIT_TOOLS, isSensitiveTool, isEditTool, } from './types';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAOL,eAAe,EACf,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { PermissionMode, PermissionOptions, PermissionCheckResult, PlanLogEntry } from './types';
2
+ /**
3
+ * Manages permission checks for tool execution
4
+ * Aligned with Claude Agent SDK behavior
5
+ */
6
+ export declare class PermissionManager {
7
+ private mode;
8
+ private allowDangerouslySkipPermissions;
9
+ private canUseTool?;
10
+ private planLog;
11
+ constructor(options: PermissionOptions);
12
+ /**
13
+ * Check if a tool is permitted to execute
14
+ * Aligned with Claude Agent SDK
15
+ */
16
+ checkPermission(toolName: string, input: Record<string, unknown>, options: {
17
+ signal: AbortSignal;
18
+ }): Promise<PermissionCheckResult>;
19
+ /**
20
+ * Get current permission mode
21
+ */
22
+ getMode(): PermissionMode;
23
+ /**
24
+ * Set permission mode
25
+ */
26
+ setMode(mode: PermissionMode): void;
27
+ /**
28
+ * Get plan log (only used in plan mode)
29
+ */
30
+ getPlanLog(): PlanLogEntry[];
31
+ /**
32
+ * Clear plan log
33
+ */
34
+ clearPlanLog(): void;
35
+ /**
36
+ * Resolve a PermissionResult to PermissionCheckResult
37
+ */
38
+ private resolvePermissionResult;
39
+ }
40
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EAGrB,YAAY,EAGb,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,+BAA+B,CAAU;IACjD,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,OAAO,EAAE,iBAAiB;IAatC;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAoDjC;;OAEG;IACH,OAAO,IAAI,cAAc;IAIzB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAUnC;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAahC"}
@@ -0,0 +1,115 @@
1
+ import { isSensitiveTool, isEditTool, } from './types';
2
+ /**
3
+ * Manages permission checks for tool execution
4
+ * Aligned with Claude Agent SDK behavior
5
+ */
6
+ export class PermissionManager {
7
+ mode;
8
+ allowDangerouslySkipPermissions;
9
+ canUseTool;
10
+ planLog = [];
11
+ constructor(options) {
12
+ this.mode = options.mode;
13
+ this.allowDangerouslySkipPermissions = options.allowDangerouslySkipPermissions ?? false;
14
+ this.canUseTool = options.canUseTool;
15
+ // Validate bypassPermissions mode
16
+ if (this.mode === 'bypassPermissions' && !this.allowDangerouslySkipPermissions) {
17
+ throw new Error('allowDangerouslySkipPermissions must be true to use bypassPermissions mode');
18
+ }
19
+ }
20
+ /**
21
+ * Check if a tool is permitted to execute
22
+ * Aligned with Claude Agent SDK
23
+ */
24
+ async checkPermission(toolName, input, options) {
25
+ switch (this.mode) {
26
+ case 'bypassPermissions':
27
+ return { approved: true };
28
+ case 'plan':
29
+ // Record tool call to plan log
30
+ this.planLog.push({
31
+ toolName,
32
+ input,
33
+ timestamp: Date.now(),
34
+ });
35
+ return {
36
+ approved: false,
37
+ error: 'Tool execution blocked in plan mode',
38
+ };
39
+ case 'acceptEdits':
40
+ // Auto-approve edit tools
41
+ if (isEditTool(toolName)) {
42
+ return { approved: true };
43
+ }
44
+ // Fall through to default behavior for non-edit tools
45
+ break;
46
+ case 'default':
47
+ // Continue to default behavior
48
+ break;
49
+ }
50
+ // Default behavior: check if tool is sensitive
51
+ if (isSensitiveTool(toolName)) {
52
+ // If canUseTool callback is provided, use it
53
+ if (this.canUseTool) {
54
+ const result = await this.canUseTool(toolName, input, {
55
+ signal: options.signal,
56
+ suggestions: [], // Could be populated based on context
57
+ });
58
+ return this.resolvePermissionResult(result);
59
+ }
60
+ // No callback provided, deny sensitive tools
61
+ return {
62
+ approved: false,
63
+ error: `Permission denied: ${toolName}`,
64
+ };
65
+ }
66
+ // Non-sensitive tools are auto-approved
67
+ return { approved: true };
68
+ }
69
+ /**
70
+ * Get current permission mode
71
+ */
72
+ getMode() {
73
+ return this.mode;
74
+ }
75
+ /**
76
+ * Set permission mode
77
+ */
78
+ setMode(mode) {
79
+ // Validate bypassPermissions mode
80
+ if (mode === 'bypassPermissions' && !this.allowDangerouslySkipPermissions) {
81
+ throw new Error('allowDangerouslySkipPermissions must be true to use bypassPermissions mode');
82
+ }
83
+ this.mode = mode;
84
+ }
85
+ /**
86
+ * Get plan log (only used in plan mode)
87
+ */
88
+ getPlanLog() {
89
+ return [...this.planLog];
90
+ }
91
+ /**
92
+ * Clear plan log
93
+ */
94
+ clearPlanLog() {
95
+ this.planLog = [];
96
+ }
97
+ /**
98
+ * Resolve a PermissionResult to PermissionCheckResult
99
+ */
100
+ resolvePermissionResult(result) {
101
+ if (result.behavior === 'allow') {
102
+ return {
103
+ approved: true,
104
+ updatedInput: result.updatedInput,
105
+ };
106
+ }
107
+ else {
108
+ return {
109
+ approved: false,
110
+ error: result.message,
111
+ };
112
+ }
113
+ }
114
+ }
115
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"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"}