group-chat-mcp 0.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 (135) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +170 -0
  3. package/dist/constants/env.d.ts +3 -0
  4. package/dist/constants/env.d.ts.map +1 -0
  5. package/dist/constants/env.js +6 -0
  6. package/dist/constants/env.js.map +1 -0
  7. package/dist/constants/settings-paths.d.ts +5 -0
  8. package/dist/constants/settings-paths.d.ts.map +1 -0
  9. package/dist/constants/settings-paths.js +11 -0
  10. package/dist/constants/settings-paths.js.map +1 -0
  11. package/dist/constants/storage.d.ts +6 -0
  12. package/dist/constants/storage.d.ts.map +1 -0
  13. package/dist/constants/storage.js +8 -0
  14. package/dist/constants/storage.js.map +1 -0
  15. package/dist/enums/conversation-type.d.ts +6 -0
  16. package/dist/enums/conversation-type.d.ts.map +1 -0
  17. package/dist/enums/conversation-type.js +7 -0
  18. package/dist/enums/conversation-type.js.map +1 -0
  19. package/dist/enums/ide.d.ts +5 -0
  20. package/dist/enums/ide.d.ts.map +1 -0
  21. package/dist/enums/ide.js +6 -0
  22. package/dist/enums/ide.js.map +1 -0
  23. package/dist/enums/index.d.ts +4 -0
  24. package/dist/enums/index.d.ts.map +1 -0
  25. package/dist/enums/index.js +4 -0
  26. package/dist/enums/index.js.map +1 -0
  27. package/dist/enums/message-type.d.ts +5 -0
  28. package/dist/enums/message-type.d.ts.map +1 -0
  29. package/dist/enums/message-type.js +6 -0
  30. package/dist/enums/message-type.js.map +1 -0
  31. package/dist/enums/notification-type.d.ts +9 -0
  32. package/dist/enums/notification-type.d.ts.map +1 -0
  33. package/dist/enums/notification-type.js +10 -0
  34. package/dist/enums/notification-type.js.map +1 -0
  35. package/dist/enums/scope.d.ts +5 -0
  36. package/dist/enums/scope.d.ts.map +1 -0
  37. package/dist/enums/scope.js +6 -0
  38. package/dist/enums/scope.js.map +1 -0
  39. package/dist/gchat.d.ts +4 -0
  40. package/dist/gchat.d.ts.map +1 -0
  41. package/dist/gchat.js +72 -0
  42. package/dist/gchat.js.map +1 -0
  43. package/dist/handlers/tool-handlers.d.ts +10 -0
  44. package/dist/handlers/tool-handlers.d.ts.map +1 -0
  45. package/dist/handlers/tool-handlers.js +198 -0
  46. package/dist/handlers/tool-handlers.js.map +1 -0
  47. package/dist/index.d.ts +2 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +113 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/schemas/tool-schemas.d.ts +222 -0
  52. package/dist/schemas/tool-schemas.d.ts.map +1 -0
  53. package/dist/schemas/tool-schemas.js +132 -0
  54. package/dist/schemas/tool-schemas.js.map +1 -0
  55. package/dist/services/inbox-poller.d.ts +7 -0
  56. package/dist/services/inbox-poller.d.ts.map +1 -0
  57. package/dist/services/inbox-poller.js +65 -0
  58. package/dist/services/inbox-poller.js.map +1 -0
  59. package/dist/services/installer-service.d.ts +13 -0
  60. package/dist/services/installer-service.d.ts.map +1 -0
  61. package/dist/services/installer-service.js +98 -0
  62. package/dist/services/installer-service.js.map +1 -0
  63. package/dist/services/state-service.d.ts +40 -0
  64. package/dist/services/state-service.d.ts.map +1 -0
  65. package/dist/services/state-service.js +342 -0
  66. package/dist/services/state-service.js.map +1 -0
  67. package/dist/services/tool-handlers.d.ts +10 -0
  68. package/dist/services/tool-handlers.d.ts.map +1 -0
  69. package/dist/services/tool-handlers.js +198 -0
  70. package/dist/services/tool-handlers.js.map +1 -0
  71. package/dist/types/agent.d.ts +10 -0
  72. package/dist/types/agent.d.ts.map +1 -0
  73. package/dist/types/agent.js +2 -0
  74. package/dist/types/agent.js.map +1 -0
  75. package/dist/types/conversation.d.ts +12 -0
  76. package/dist/types/conversation.d.ts.map +1 -0
  77. package/dist/types/conversation.js +2 -0
  78. package/dist/types/conversation.js.map +1 -0
  79. package/dist/types/create-conversation-params.d.ts +9 -0
  80. package/dist/types/create-conversation-params.d.ts.map +1 -0
  81. package/dist/types/create-conversation-params.js +2 -0
  82. package/dist/types/create-conversation-params.js.map +1 -0
  83. package/dist/types/index.d.ts +11 -0
  84. package/dist/types/index.d.ts.map +1 -0
  85. package/dist/types/index.js +2 -0
  86. package/dist/types/index.js.map +1 -0
  87. package/dist/types/install-options.d.ts +7 -0
  88. package/dist/types/install-options.d.ts.map +1 -0
  89. package/dist/types/install-options.js +2 -0
  90. package/dist/types/install-options.js.map +1 -0
  91. package/dist/types/message.d.ts +10 -0
  92. package/dist/types/message.d.ts.map +1 -0
  93. package/dist/types/message.js +2 -0
  94. package/dist/types/message.js.map +1 -0
  95. package/dist/types/notification.d.ts +10 -0
  96. package/dist/types/notification.d.ts.map +1 -0
  97. package/dist/types/notification.js +2 -0
  98. package/dist/types/notification.js.map +1 -0
  99. package/dist/types/parse-result.d.ts +4 -0
  100. package/dist/types/parse-result.d.ts.map +1 -0
  101. package/dist/types/parse-result.js +2 -0
  102. package/dist/types/parse-result.js.map +1 -0
  103. package/dist/types/parsed-command.d.ts +4 -0
  104. package/dist/types/parsed-command.d.ts.map +1 -0
  105. package/dist/types/parsed-command.js +2 -0
  106. package/dist/types/parsed-command.js.map +1 -0
  107. package/dist/types/parsed-error.d.ts +4 -0
  108. package/dist/types/parsed-error.d.ts.map +1 -0
  109. package/dist/types/parsed-error.js +2 -0
  110. package/dist/types/parsed-error.js.map +1 -0
  111. package/dist/types/profile-update.d.ts +7 -0
  112. package/dist/types/profile-update.d.ts.map +1 -0
  113. package/dist/types/profile-update.js +2 -0
  114. package/dist/types/profile-update.js.map +1 -0
  115. package/dist/types/profile.d.ts +7 -0
  116. package/dist/types/profile.d.ts.map +1 -0
  117. package/dist/types/profile.js +2 -0
  118. package/dist/types/profile.js.map +1 -0
  119. package/dist/types/uninstall-options.d.ts +7 -0
  120. package/dist/types/uninstall-options.d.ts.map +1 -0
  121. package/dist/types/uninstall-options.js +2 -0
  122. package/dist/types/uninstall-options.js.map +1 -0
  123. package/dist/utils/file-lock.d.ts +3 -0
  124. package/dist/utils/file-lock.d.ts.map +1 -0
  125. package/dist/utils/file-lock.js +102 -0
  126. package/dist/utils/file-lock.js.map +1 -0
  127. package/dist/utils/file-utils.d.ts +4 -0
  128. package/dist/utils/file-utils.d.ts.map +1 -0
  129. package/dist/utils/file-utils.js +28 -0
  130. package/dist/utils/file-utils.js.map +1 -0
  131. package/dist/utils/prompt-utils.d.ts +11 -0
  132. package/dist/utils/prompt-utils.d.ts.map +1 -0
  133. package/dist/utils/prompt-utils.js +48 -0
  134. package/dist/utils/prompt-utils.js.map +1 -0
  135. package/package.json +25 -0
@@ -0,0 +1,198 @@
1
+ import path from 'node:path';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { BASE_DIR, INBOXES_DIR } from '../constants/storage.js';
4
+ import { ConversationType } from '../enums/conversation-type.js';
5
+ import { NotificationType } from '../enums/notification-type.js';
6
+ import { ListConversationsArgsSchema, ListParticipantsArgsSchema, SendMessageArgsSchema, GetConversationArgsSchema, UpdateProfileArgsSchema, CreateConversationArgsSchema, JoinConversationArgsSchema, LeaveConversationArgsSchema, } from '../schemas/tool-schemas.js';
7
+ import { appendToJsonArray } from '../utils/file-utils.js';
8
+ import { withFileLock } from '../utils/file-lock.js';
9
+ function textResult(text) {
10
+ return { content: [{ type: 'text', text }] };
11
+ }
12
+ function errorResult(message) {
13
+ return { content: [{ type: 'text', text: `Error: ${message}` }], isError: true };
14
+ }
15
+ export async function writeNotificationToParticipants(stateService, conversationId, senderId, type, content, excludeAgentId) {
16
+ const conversation = await stateService.getConversation(conversationId);
17
+ if (!conversation)
18
+ return;
19
+ for (const participantId of conversation.participants) {
20
+ if (participantId === (excludeAgentId ?? senderId))
21
+ continue;
22
+ const notification = {
23
+ id: uuidv4(),
24
+ type,
25
+ conversationId,
26
+ agentId: senderId,
27
+ content,
28
+ timestamp: Date.now(),
29
+ };
30
+ const inboxPath = path.join(BASE_DIR, INBOXES_DIR, `${participantId}.json`);
31
+ await withFileLock(inboxPath, async () => {
32
+ await appendToJsonArray(inboxPath, notification);
33
+ });
34
+ }
35
+ }
36
+ export async function handleToolCall(stateService, name, agentId, rawArgs) {
37
+ switch (name) {
38
+ case 'list_conversations': {
39
+ const args = ListConversationsArgsSchema.parse(rawArgs ?? {});
40
+ const scope = args.scope ?? 'all';
41
+ const agent = await stateService.getAgent(agentId);
42
+ if (scope === 'project' && !agent) {
43
+ return errorResult('Agent is not registered. Register first before listing project conversations.');
44
+ }
45
+ let conversations;
46
+ if (scope === 'project' && agent?.projectPath) {
47
+ conversations = await stateService.getConversations({ projectPath: agent.projectPath });
48
+ }
49
+ else {
50
+ conversations = await stateService.getConversations({});
51
+ }
52
+ const active = conversations.filter((c) => c.archivedAt == null);
53
+ if (active.length === 0) {
54
+ return textResult('No conversations found.');
55
+ }
56
+ const lines = active.map((c) => `- [${c.id}] ${c.name ?? '(unnamed)'} | Type: ${c.type} | Topic: ${c.topic ?? 'none'} | Participants: ${c.participants.length}`);
57
+ return textResult(`Conversations (${active.length}):\n${lines.join('\n')}`);
58
+ }
59
+ case 'list_participants': {
60
+ const args = ListParticipantsArgsSchema.parse(rawArgs ?? {});
61
+ const conversationId = args.conversationId;
62
+ if (conversationId) {
63
+ const conversation = await stateService.getConversation(conversationId);
64
+ if (!conversation) {
65
+ return errorResult(`Conversation ${conversationId} not found.`);
66
+ }
67
+ const agents = await stateService.getAgents();
68
+ const participants = agents.filter((a) => conversation.participants.includes(a.id));
69
+ if (participants.length === 0) {
70
+ return textResult('No participants in this conversation.');
71
+ }
72
+ const lines = participants.map((a) => `- [${a.id}] ${a.profile.name ?? '(no name)'} | Role: ${a.profile.role ?? 'none'} | Expertise: ${a.profile.expertise ?? 'none'} | Status: ${a.profile.status ?? 'none'}`);
73
+ return textResult(`Participants in ${conversation.name ?? conversationId} (${participants.length}):\n${lines.join('\n')}`);
74
+ }
75
+ const agents = await stateService.getAgents();
76
+ if (agents.length === 0) {
77
+ return textResult('No agents registered.');
78
+ }
79
+ const lines = agents.map((a) => `- [${a.id}] ${a.profile.name ?? '(no name)'} | Role: ${a.profile.role ?? 'none'} | Project: ${a.projectPath} | Conversations: ${a.conversations.length}`);
80
+ return textResult(`All agents (${agents.length}):\n${lines.join('\n')}`);
81
+ }
82
+ case 'send_message': {
83
+ const args = SendMessageArgsSchema.parse(rawArgs ?? {});
84
+ const { content, conversationId, agentId: targetAgentId } = args;
85
+ if (!conversationId && !targetAgentId) {
86
+ return errorResult('Either conversationId or agentId is required.');
87
+ }
88
+ let targetConversationId;
89
+ if (conversationId) {
90
+ const conversation = await stateService.getConversation(conversationId);
91
+ if (!conversation) {
92
+ return errorResult(`Conversation ${conversationId} not found.`);
93
+ }
94
+ if (!conversation.participants.includes(agentId)) {
95
+ return errorResult('You must join this conversation before sending messages.');
96
+ }
97
+ targetConversationId = conversationId;
98
+ }
99
+ else {
100
+ const dmConversation = await stateService.getOrCreateDmConversation(agentId, targetAgentId);
101
+ targetConversationId = dmConversation.id;
102
+ }
103
+ const message = await stateService.addMessage(targetConversationId, agentId, content, 'message');
104
+ return textResult(`Message sent (${message.id}) to conversation ${targetConversationId}.`);
105
+ }
106
+ case 'get_conversation': {
107
+ const args = GetConversationArgsSchema.parse(rawArgs ?? {});
108
+ const { conversationId } = args;
109
+ const conversation = await stateService.getConversation(conversationId);
110
+ if (!conversation) {
111
+ return errorResult(`Conversation ${conversationId} not found.`);
112
+ }
113
+ const messages = await stateService.getMessages(conversationId);
114
+ const agents = await stateService.getAgents();
115
+ const agentMap = new Map(agents.map((a) => [a.id, a]));
116
+ const header = [
117
+ `Conversation: ${conversation.name ?? '(unnamed)'}`,
118
+ `ID: ${conversation.id}`,
119
+ `Type: ${conversation.type}`,
120
+ `Topic: ${conversation.topic ?? 'none'}`,
121
+ `Participants: ${conversation.participants.length}`,
122
+ `Created: ${new Date(conversation.createdAt).toISOString()}`,
123
+ '',
124
+ '--- Messages ---',
125
+ ];
126
+ const messageLines = messages.map((m) => {
127
+ const sender = agentMap.get(m.senderId);
128
+ const senderName = sender?.profile.name ?? m.senderId;
129
+ const time = new Date(m.timestamp).toISOString();
130
+ if (m.type === 'system') {
131
+ return `[${time}] ** ${m.content} **`;
132
+ }
133
+ return `[${time}] ${senderName}: ${m.content}`;
134
+ });
135
+ return textResult([...header, ...messageLines].join('\n'));
136
+ }
137
+ case 'update_profile': {
138
+ const args = UpdateProfileArgsSchema.parse(rawArgs ?? {});
139
+ const profileUpdate = {};
140
+ if (args.name !== undefined)
141
+ profileUpdate.name = args.name;
142
+ if (args.role !== undefined)
143
+ profileUpdate.role = args.role;
144
+ if (args.expertise !== undefined)
145
+ profileUpdate.expertise = args.expertise;
146
+ if (args.status !== undefined)
147
+ profileUpdate.status = args.status;
148
+ const agent = await stateService.updateProfile(agentId, profileUpdate);
149
+ const updatedFields = Object.keys(profileUpdate).join(', ');
150
+ for (const conversationId of agent.conversations) {
151
+ await writeNotificationToParticipants(stateService, conversationId, agentId, NotificationType.ProfileUpdate, `${agent.profile.name ?? agentId} updated: ${updatedFields}`, agentId);
152
+ }
153
+ const lines = [
154
+ 'Profile updated:',
155
+ ` Name: ${agent.profile.name ?? 'not set'}`,
156
+ ` Role: ${agent.profile.role ?? 'not set'}`,
157
+ ` Expertise: ${agent.profile.expertise ?? 'not set'}`,
158
+ ` Status: ${agent.profile.status ?? 'not set'}`,
159
+ ];
160
+ return textResult(lines.join('\n'));
161
+ }
162
+ case 'create_conversation': {
163
+ const args = CreateConversationArgsSchema.parse(rawArgs ?? {});
164
+ const convName = args.name;
165
+ const topic = args.topic;
166
+ const conversation = await stateService.createConversation({
167
+ type: ConversationType.Group,
168
+ name: convName,
169
+ topic,
170
+ participants: [agentId],
171
+ });
172
+ return textResult(`Conversation created:\n ID: ${conversation.id}\n Name: ${conversation.name}\n Topic: ${conversation.topic ?? 'none'}\n Type: ${conversation.type}`);
173
+ }
174
+ case 'join_conversation': {
175
+ const args = JoinConversationArgsSchema.parse(rawArgs ?? {});
176
+ const { conversationId } = args;
177
+ await stateService.joinConversation(agentId, conversationId);
178
+ const agent = await stateService.getAgent(agentId);
179
+ const agentName = agent?.profile.name ?? agentId;
180
+ await stateService.addMessage(conversationId, agentId, `${agentName} joined the conversation.`, 'system');
181
+ await writeNotificationToParticipants(stateService, conversationId, agentId, NotificationType.Join, `${agentName} joined the conversation.`);
182
+ return textResult(`Joined conversation ${conversationId}.`);
183
+ }
184
+ case 'leave_conversation': {
185
+ const args = LeaveConversationArgsSchema.parse(rawArgs ?? {});
186
+ const { conversationId } = args;
187
+ const agent = await stateService.getAgent(agentId);
188
+ const agentName = agent?.profile.name ?? agentId;
189
+ await stateService.addMessage(conversationId, agentId, `${agentName} left the conversation.`, 'system');
190
+ await writeNotificationToParticipants(stateService, conversationId, agentId, NotificationType.Leave, `${agentName} left the conversation.`);
191
+ await stateService.leaveConversation(agentId, conversationId);
192
+ return textResult(`Left conversation ${conversationId}.`);
193
+ }
194
+ default:
195
+ return errorResult(`Unknown tool: ${name}`);
196
+ }
197
+ }
198
+ //# sourceMappingURL=tool-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../../src/handlers/tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,113 @@
1
+ import path from 'node:path';
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { GC_PROJECT_PATH, GC_POLL_INTERVAL_MS } from './constants/env.js';
6
+ import { BASE_DIR } from './constants/storage.js';
7
+ import { NotificationType } from './enums/notification-type.js';
8
+ import { handleToolCall, writeNotificationToParticipants } from './services/tool-handlers.js';
9
+ import { toolDefinitions } from './schemas/tool-schemas.js';
10
+ import { StateService } from './services/state-service.js';
11
+ import { InboxPollerService } from './services/inbox-poller.js';
12
+ const stateService = new StateService();
13
+ const inboxPoller = new InboxPollerService();
14
+ const server = new Server({ name: 'group-chat-mcp', version: '0.1.0' }, {
15
+ capabilities: {
16
+ experimental: { 'claude/channel': {} },
17
+ tools: {},
18
+ },
19
+ instructions: 'Group chat MCP server enabling multi-agent communication. ' +
20
+ 'Agents can create and join conversations, send messages, and receive notifications ' +
21
+ 'from other agents via the claude/channel capability.',
22
+ });
23
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
24
+ tools: toolDefinitions,
25
+ }));
26
+ async function main() {
27
+ await stateService.init();
28
+ if (GC_PROJECT_PATH !== undefined && !path.isAbsolute(GC_PROJECT_PATH)) {
29
+ throw new Error(`GC_PROJECT_PATH must be an absolute path, got: ${GC_PROJECT_PATH}`);
30
+ }
31
+ const projectPath = path.resolve(GC_PROJECT_PATH ?? process.cwd());
32
+ const staleIds = await stateService.reapStaleAgents();
33
+ if (staleIds.length > 0) {
34
+ console.error(`Reaped ${staleIds.length} stale agent(s): ${staleIds.join(', ')}`);
35
+ }
36
+ const agent = await stateService.registerAgent(projectPath);
37
+ const agentId = agent.id;
38
+ console.error(`Agent registered: ${agentId}, project: ${projectPath}`);
39
+ const conversation = await stateService.getOrCreateProjectConversation(projectPath);
40
+ const conversationId = conversation.id;
41
+ await stateService.joinConversation(agentId, conversationId);
42
+ console.error(`Joined project conversation: ${conversationId}`);
43
+ const agentName = agent.profile.name ?? agentId;
44
+ await stateService.addMessage(conversationId, agentId, `${agentName} joined the conversation.`, 'system');
45
+ await writeNotificationToParticipants(stateService, conversationId, agentId, NotificationType.Join, `${agentName} joined the conversation.`);
46
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
47
+ const { name, arguments: rawArgs } = request.params;
48
+ try {
49
+ return await handleToolCall(stateService, name, agentId, rawArgs);
50
+ }
51
+ catch (err) {
52
+ const message = err instanceof Error ? err.message : String(err);
53
+ return { content: [{ type: 'text', text: `Error: ${message}` }], isError: true };
54
+ }
55
+ });
56
+ inboxPoller.start(agentId, GC_POLL_INTERVAL_MS, server, BASE_DIR);
57
+ const transport = new StdioServerTransport();
58
+ await server.connect(transport);
59
+ let shuttingDown = false;
60
+ const cleanup = async () => {
61
+ if (shuttingDown)
62
+ return;
63
+ shuttingDown = true;
64
+ console.error('Shutdown started');
65
+ try {
66
+ const currentAgent = await stateService.getAgent(agentId);
67
+ if (currentAgent) {
68
+ for (const convId of [...currentAgent.conversations]) {
69
+ try {
70
+ const name = currentAgent.profile.name ?? agentId;
71
+ await stateService.addMessage(convId, agentId, `${name} left the conversation.`, 'system');
72
+ await writeNotificationToParticipants(stateService, convId, agentId, NotificationType.Leave, `${name} left the conversation.`);
73
+ }
74
+ catch (err) {
75
+ console.error(`Failed to write leave message for conversation ${convId}:`, err);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (err) {
81
+ console.error('Failed to read agent state during cleanup:', err);
82
+ }
83
+ try {
84
+ await stateService.unregisterAgent(agentId);
85
+ console.error('Agent unregistered');
86
+ }
87
+ catch (err) {
88
+ console.error('Failed to unregister agent:', err);
89
+ }
90
+ try {
91
+ inboxPoller.stop();
92
+ console.error('Poller stopped');
93
+ }
94
+ catch (err) {
95
+ console.error('Failed to stop poller:', err);
96
+ }
97
+ console.error('Shutdown complete');
98
+ process.exitCode = 0;
99
+ };
100
+ process.once('SIGTERM', cleanup);
101
+ process.once('SIGINT', cleanup);
102
+ server.onclose = () => {
103
+ cleanup().catch((err) => {
104
+ console.error('Cleanup error on transport close:', err);
105
+ });
106
+ };
107
+ console.error('group-chat-mcp server running');
108
+ }
109
+ main().catch((err) => {
110
+ console.error('Fatal error:', err);
111
+ process.exit(1);
112
+ });
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ import { z } from 'zod';
2
+ export declare const ListConversationsArgsSchema: z.ZodObject<{
3
+ scope: z.ZodOptional<z.ZodEnum<["project", "global", "all"]>>;
4
+ }, "strip", z.ZodTypeAny, {
5
+ scope?: "global" | "project" | "all" | undefined;
6
+ }, {
7
+ scope?: "global" | "project" | "all" | undefined;
8
+ }>;
9
+ export declare const ListParticipantsArgsSchema: z.ZodObject<{
10
+ conversationId: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ conversationId?: string | undefined;
13
+ }, {
14
+ conversationId?: string | undefined;
15
+ }>;
16
+ export declare const SendMessageArgsSchema: z.ZodObject<{
17
+ content: z.ZodString;
18
+ conversationId: z.ZodOptional<z.ZodString>;
19
+ agentId: z.ZodOptional<z.ZodString>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ content: string;
22
+ conversationId?: string | undefined;
23
+ agentId?: string | undefined;
24
+ }, {
25
+ content: string;
26
+ conversationId?: string | undefined;
27
+ agentId?: string | undefined;
28
+ }>;
29
+ export declare const GetConversationArgsSchema: z.ZodObject<{
30
+ conversationId: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ conversationId: string;
33
+ }, {
34
+ conversationId: string;
35
+ }>;
36
+ export declare const UpdateProfileArgsSchema: z.ZodObject<{
37
+ name: z.ZodOptional<z.ZodString>;
38
+ role: z.ZodOptional<z.ZodString>;
39
+ expertise: z.ZodOptional<z.ZodString>;
40
+ status: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ status?: string | undefined;
43
+ name?: string | undefined;
44
+ role?: string | undefined;
45
+ expertise?: string | undefined;
46
+ }, {
47
+ status?: string | undefined;
48
+ name?: string | undefined;
49
+ role?: string | undefined;
50
+ expertise?: string | undefined;
51
+ }>;
52
+ export declare const CreateConversationArgsSchema: z.ZodObject<{
53
+ name: z.ZodString;
54
+ topic: z.ZodOptional<z.ZodString>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ name: string;
57
+ topic?: string | undefined;
58
+ }, {
59
+ name: string;
60
+ topic?: string | undefined;
61
+ }>;
62
+ export declare const JoinConversationArgsSchema: z.ZodObject<{
63
+ conversationId: z.ZodString;
64
+ }, "strip", z.ZodTypeAny, {
65
+ conversationId: string;
66
+ }, {
67
+ conversationId: string;
68
+ }>;
69
+ export declare const LeaveConversationArgsSchema: z.ZodObject<{
70
+ conversationId: z.ZodString;
71
+ }, "strip", z.ZodTypeAny, {
72
+ conversationId: string;
73
+ }, {
74
+ conversationId: string;
75
+ }>;
76
+ export declare const toolDefinitions: ({
77
+ name: string;
78
+ description: string;
79
+ inputSchema: {
80
+ type: "object";
81
+ properties: {
82
+ scope: {
83
+ type: string;
84
+ enum: string[];
85
+ description: string;
86
+ };
87
+ conversationId?: undefined;
88
+ content?: undefined;
89
+ agentId?: undefined;
90
+ name?: undefined;
91
+ role?: undefined;
92
+ expertise?: undefined;
93
+ status?: undefined;
94
+ topic?: undefined;
95
+ };
96
+ required?: undefined;
97
+ };
98
+ } | {
99
+ name: string;
100
+ description: string;
101
+ inputSchema: {
102
+ type: "object";
103
+ properties: {
104
+ conversationId: {
105
+ type: string;
106
+ description: string;
107
+ };
108
+ scope?: undefined;
109
+ content?: undefined;
110
+ agentId?: undefined;
111
+ name?: undefined;
112
+ role?: undefined;
113
+ expertise?: undefined;
114
+ status?: undefined;
115
+ topic?: undefined;
116
+ };
117
+ required?: undefined;
118
+ };
119
+ } | {
120
+ name: string;
121
+ description: string;
122
+ inputSchema: {
123
+ type: "object";
124
+ properties: {
125
+ content: {
126
+ type: string;
127
+ description: string;
128
+ };
129
+ conversationId: {
130
+ type: string;
131
+ description: string;
132
+ };
133
+ agentId: {
134
+ type: string;
135
+ description: string;
136
+ };
137
+ scope?: undefined;
138
+ name?: undefined;
139
+ role?: undefined;
140
+ expertise?: undefined;
141
+ status?: undefined;
142
+ topic?: undefined;
143
+ };
144
+ required: string[];
145
+ };
146
+ } | {
147
+ name: string;
148
+ description: string;
149
+ inputSchema: {
150
+ type: "object";
151
+ properties: {
152
+ conversationId: {
153
+ type: string;
154
+ description: string;
155
+ };
156
+ scope?: undefined;
157
+ content?: undefined;
158
+ agentId?: undefined;
159
+ name?: undefined;
160
+ role?: undefined;
161
+ expertise?: undefined;
162
+ status?: undefined;
163
+ topic?: undefined;
164
+ };
165
+ required: string[];
166
+ };
167
+ } | {
168
+ name: string;
169
+ description: string;
170
+ inputSchema: {
171
+ type: "object";
172
+ properties: {
173
+ name: {
174
+ type: string;
175
+ description: string;
176
+ };
177
+ role: {
178
+ type: string;
179
+ description: string;
180
+ };
181
+ expertise: {
182
+ type: string;
183
+ description: string;
184
+ };
185
+ status: {
186
+ type: string;
187
+ description: string;
188
+ };
189
+ scope?: undefined;
190
+ conversationId?: undefined;
191
+ content?: undefined;
192
+ agentId?: undefined;
193
+ topic?: undefined;
194
+ };
195
+ required?: undefined;
196
+ };
197
+ } | {
198
+ name: string;
199
+ description: string;
200
+ inputSchema: {
201
+ type: "object";
202
+ properties: {
203
+ name: {
204
+ type: string;
205
+ description: string;
206
+ };
207
+ topic: {
208
+ type: string;
209
+ description: string;
210
+ };
211
+ scope?: undefined;
212
+ conversationId?: undefined;
213
+ content?: undefined;
214
+ agentId?: undefined;
215
+ role?: undefined;
216
+ expertise?: undefined;
217
+ status?: undefined;
218
+ };
219
+ required: string[];
220
+ };
221
+ })[];
222
+ //# sourceMappingURL=tool-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B;;;;;;EAEtC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAEpC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;EAGvC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;EAEtC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmG3B,CAAC"}