@happ-ai/platform-mcp 0.3.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.
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.js +48 -0
- package/dist/credentials.js.map +1 -0
- package/dist/http.js +90 -0
- package/dist/http.js.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/login.js +76 -0
- package/dist/login.js.map +1 -0
- package/dist/tools/activity.tools.js +34 -0
- package/dist/tools/activity.tools.js.map +1 -0
- package/dist/tools/analytics.tools.js +162 -0
- package/dist/tools/analytics.tools.js.map +1 -0
- package/dist/tools/assistant-tools.tools.js +86 -0
- package/dist/tools/assistant-tools.tools.js.map +1 -0
- package/dist/tools/assistants.tools.js +179 -0
- package/dist/tools/assistants.tools.js.map +1 -0
- package/dist/tools/auth.tools.js +44 -0
- package/dist/tools/auth.tools.js.map +1 -0
- package/dist/tools/calls.tools.js +99 -0
- package/dist/tools/calls.tools.js.map +1 -0
- package/dist/tools/channels.tools.js +158 -0
- package/dist/tools/channels.tools.js.map +1 -0
- package/dist/tools/chats.tools.js +171 -0
- package/dist/tools/chats.tools.js.map +1 -0
- package/dist/tools/companies.tools.js +180 -0
- package/dist/tools/companies.tools.js.map +1 -0
- package/dist/tools/folders.tools.js +71 -0
- package/dist/tools/folders.tools.js.map +1 -0
- package/dist/tools/knowledge.tools.js +71 -0
- package/dist/tools/knowledge.tools.js.map +1 -0
- package/dist/tools/phones.tools.js +92 -0
- package/dist/tools/phones.tools.js.map +1 -0
- package/dist/tools/result.js +7 -0
- package/dist/tools/result.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.tools.js","sourceRoot":"","sources":["../../src/tools/channels.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { happRequest } from "../http.js";
|
|
3
|
+
import { jsonResult } from "./result.js";
|
|
4
|
+
export function registerChatsTools(server) {
|
|
5
|
+
server.registerTool("happ_chats_list", {
|
|
6
|
+
title: "Чаты",
|
|
7
|
+
description: "Список чатов компании (GET /chats). include=lastMessage добавляет последнее сообщение каждого чата.",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
companyId: z.string().uuid().optional().describe("ID компании"),
|
|
10
|
+
messenger: z
|
|
11
|
+
.enum([
|
|
12
|
+
"instagram",
|
|
13
|
+
"telegram",
|
|
14
|
+
"telegram-bot",
|
|
15
|
+
"messenger",
|
|
16
|
+
"whatsapp",
|
|
17
|
+
"whatsapp-business",
|
|
18
|
+
"viber-echat",
|
|
19
|
+
"custom-messenger",
|
|
20
|
+
"widget",
|
|
21
|
+
"playground"
|
|
22
|
+
])
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("Фильтр по каналу"),
|
|
25
|
+
search: z.string().optional().describe("Поиск по имени/id собеседника"),
|
|
26
|
+
skip: z.number().int().min(0).optional(),
|
|
27
|
+
take: z.number().int().min(1).max(100).optional().describe("Сколько чатов вернуть"),
|
|
28
|
+
include: z.string().optional().describe("Доп. данные, например 'lastMessage'")
|
|
29
|
+
}
|
|
30
|
+
}, async (params) => {
|
|
31
|
+
const result = await happRequest("GET", "/chats", { params });
|
|
32
|
+
return jsonResult(result);
|
|
33
|
+
});
|
|
34
|
+
server.registerTool("happ_chat_get", {
|
|
35
|
+
title: "Чат",
|
|
36
|
+
description: "Детали чата по id (GET /chats/:id).",
|
|
37
|
+
inputSchema: {
|
|
38
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
39
|
+
include: z.string().optional().describe("Доп. данные, например 'assistant'")
|
|
40
|
+
}
|
|
41
|
+
}, async ({ chatId, include }) => {
|
|
42
|
+
const chat = await happRequest("GET", `/chats/${chatId}`, { params: { include } });
|
|
43
|
+
return jsonResult(chat);
|
|
44
|
+
});
|
|
45
|
+
server.registerTool("happ_chat_messages", {
|
|
46
|
+
title: "Сообщения чата",
|
|
47
|
+
description: "Сообщения чата (GET /messages?chatId=...). Возвращаются в хронологическом порядке (старые сверху).",
|
|
48
|
+
inputSchema: {
|
|
49
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
50
|
+
skip: z.number().int().min(0).optional(),
|
|
51
|
+
take: z.number().int().min(1).max(200).optional().describe("Сколько сообщений (с конца, по умолчанию все)")
|
|
52
|
+
}
|
|
53
|
+
}, async (params) => {
|
|
54
|
+
const result = await happRequest("GET", "/messages", { params });
|
|
55
|
+
// API returns createdAt DESC — re-sort ASC so the dialog reads top-down.
|
|
56
|
+
const data = [...(result?.data ?? [])].sort((a, b) => new Date(a.createdAt ?? 0).getTime() - new Date(b.createdAt ?? 0).getTime());
|
|
57
|
+
return jsonResult({ ...result, data });
|
|
58
|
+
});
|
|
59
|
+
server.registerTool("happ_chat_toggle_ai", {
|
|
60
|
+
title: "Вкл/выкл ИИ в чате",
|
|
61
|
+
description: "Включает или отключает ответы ассистента в конкретном чате (PATCH /chats/:id/ai-control).",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
64
|
+
isUnderAiControl: z.boolean().describe("true — ИИ отвечает, false — чат ведёт оператор")
|
|
65
|
+
}
|
|
66
|
+
}, async ({ chatId, isUnderAiControl }) => {
|
|
67
|
+
const result = await happRequest("PATCH", `/chats/${chatId}/ai-control`, { body: { isUnderAiControl } });
|
|
68
|
+
return jsonResult(result);
|
|
69
|
+
});
|
|
70
|
+
server.registerTool("happ_chat_assign_assistant", {
|
|
71
|
+
title: "Назначить ассистента чату",
|
|
72
|
+
description: "Назначает ассистента на чат (PATCH /chats/:id/assign-assistant) или снимает его (unassign=true).",
|
|
73
|
+
inputSchema: {
|
|
74
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
75
|
+
assistantId: z.string().uuid().optional().describe("ID ассистента (не нужен при unassign=true)"),
|
|
76
|
+
unassign: z.boolean().optional().describe("true — снять ассистента с чата")
|
|
77
|
+
}
|
|
78
|
+
}, async ({ chatId, assistantId, unassign }) => {
|
|
79
|
+
const result = unassign
|
|
80
|
+
? await happRequest("PATCH", `/chats/${chatId}/unassign-assistant`)
|
|
81
|
+
: await happRequest("PATCH", `/chats/${chatId}/assign-assistant`, { body: { assistantId } });
|
|
82
|
+
return jsonResult(result);
|
|
83
|
+
});
|
|
84
|
+
server.registerTool("happ_chat_send_message", {
|
|
85
|
+
title: "Написать в чат от оператора",
|
|
86
|
+
description: "Отправляет сообщение клиенту в чат от имени оператора (POST /messages). Сообщение реально уйдёт клиенту в мессенджер — используй осознанно.",
|
|
87
|
+
inputSchema: {
|
|
88
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
89
|
+
text: z.string().min(1).describe("Текст сообщения")
|
|
90
|
+
}
|
|
91
|
+
}, async ({ chatId, text }) => {
|
|
92
|
+
// The bubble alignment in the web client relies on fromId matching the chat's fromId.
|
|
93
|
+
const chat = await happRequest("GET", `/chats/${chatId}`);
|
|
94
|
+
const message = await happRequest("POST", "/messages", {
|
|
95
|
+
body: {
|
|
96
|
+
chatId,
|
|
97
|
+
text,
|
|
98
|
+
fromId: chat?.fromId,
|
|
99
|
+
source: "PLATFORM",
|
|
100
|
+
role: "User",
|
|
101
|
+
type: "Text"
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return jsonResult(message);
|
|
105
|
+
});
|
|
106
|
+
server.registerTool("happ_chat_assign_manager", {
|
|
107
|
+
title: "Назначить менеджера чату",
|
|
108
|
+
description: "Назначает менеджера (пользователя компании) на чат (PATCH /chats/:id/assign-manager).",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
111
|
+
managerId: z.string().uuid().describe("ID пользователя-менеджера")
|
|
112
|
+
}
|
|
113
|
+
}, async ({ chatId, managerId }) => {
|
|
114
|
+
const result = await happRequest("PATCH", `/chats/${chatId}/assign-manager`, { body: { managerId } });
|
|
115
|
+
return jsonResult(result);
|
|
116
|
+
});
|
|
117
|
+
server.registerTool("happ_chat_delete", {
|
|
118
|
+
title: "Удалить чат",
|
|
119
|
+
description: "Удаляет чат со всей перепиской (DELETE /chats/:id). Необратимо.",
|
|
120
|
+
inputSchema: {
|
|
121
|
+
chatId: z.string().uuid().describe("ID чата")
|
|
122
|
+
}
|
|
123
|
+
}, async ({ chatId }) => {
|
|
124
|
+
const result = await happRequest("DELETE", `/chats/${chatId}`);
|
|
125
|
+
return jsonResult(result);
|
|
126
|
+
});
|
|
127
|
+
server.registerTool("happ_chat_sessions", {
|
|
128
|
+
title: "Сессии чата",
|
|
129
|
+
description: "Список диалоговых сессий чата (GET /chats/:id/sessions).",
|
|
130
|
+
inputSchema: {
|
|
131
|
+
chatId: z.string().uuid().describe("ID чата"),
|
|
132
|
+
skip: z.number().int().min(0).optional(),
|
|
133
|
+
take: z.number().int().min(1).optional()
|
|
134
|
+
}
|
|
135
|
+
}, async ({ chatId, ...params }) => {
|
|
136
|
+
const result = await happRequest("GET", `/chats/${chatId}/sessions`, { params });
|
|
137
|
+
return jsonResult(result);
|
|
138
|
+
});
|
|
139
|
+
server.registerTool("happ_playground_reset", {
|
|
140
|
+
title: "Сброс тест-чата",
|
|
141
|
+
description: "Очищает playground-чат для нового теста (POST /chats/playground/:id/reset).",
|
|
142
|
+
inputSchema: {
|
|
143
|
+
chatId: z.string().uuid().describe("ID playground-чата")
|
|
144
|
+
}
|
|
145
|
+
}, async ({ chatId }) => {
|
|
146
|
+
const result = await happRequest("POST", `/chats/playground/${chatId}/reset`);
|
|
147
|
+
return jsonResult(result);
|
|
148
|
+
});
|
|
149
|
+
server.registerTool("happ_playground_start", {
|
|
150
|
+
title: "Тест-чат с ассистентом",
|
|
151
|
+
description: "Открывает playground-чат с ассистентом (POST /chats/playground) — способ проверить ассистента прямо из терминала. Возвращает чат, его id используй в happ_playground_send.",
|
|
152
|
+
inputSchema: {
|
|
153
|
+
assistantId: z.string().uuid().describe("ID ассистента")
|
|
154
|
+
}
|
|
155
|
+
}, async ({ assistantId }) => {
|
|
156
|
+
const chat = await happRequest("POST", "/chats/playground", { body: { assistantId } });
|
|
157
|
+
return jsonResult(chat);
|
|
158
|
+
});
|
|
159
|
+
server.registerTool("happ_playground_send", {
|
|
160
|
+
title: "Сообщение в тест-чат",
|
|
161
|
+
description: "Отправляет сообщение в playground-чат (POST /chats/playground/:id/messages). Ответ ассистента появится в happ_chat_messages по этому чату через несколько секунд.",
|
|
162
|
+
inputSchema: {
|
|
163
|
+
chatId: z.string().uuid().describe("ID playground-чата"),
|
|
164
|
+
text: z.string().min(1).max(10000).describe("Текст сообщения")
|
|
165
|
+
}
|
|
166
|
+
}, async ({ chatId, text }) => {
|
|
167
|
+
const message = await happRequest("POST", `/chats/playground/${chatId}/messages`, { body: { text } });
|
|
168
|
+
return jsonResult(message);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=chats.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chats.tools.js","sourceRoot":"","sources":["../../src/tools/chats.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { happRequest } from "../http.js";
|
|
3
|
+
import { jsonResult } from "./result.js";
|
|
4
|
+
export function registerCompaniesTools(server) {
|
|
5
|
+
server.registerTool("happ_companies_list", {
|
|
6
|
+
title: "Мои компании",
|
|
7
|
+
description: "Список компаний, к которым у пользователя есть доступ (GET /companies/my). Возвращает id, название, описание и статус.",
|
|
8
|
+
inputSchema: {}
|
|
9
|
+
}, async () => {
|
|
10
|
+
const result = await happRequest("GET", "/companies/my");
|
|
11
|
+
return jsonResult((result?.data ?? []).map((c) => ({
|
|
12
|
+
id: c.id,
|
|
13
|
+
name: c.name,
|
|
14
|
+
description: c.description,
|
|
15
|
+
status: c.status
|
|
16
|
+
})));
|
|
17
|
+
});
|
|
18
|
+
server.registerTool("happ_company_get", {
|
|
19
|
+
title: "Компания",
|
|
20
|
+
description: "Детали компании по id (GET /companies/:id), включая участников и подписки.",
|
|
21
|
+
inputSchema: {
|
|
22
|
+
companyId: z.string().uuid().describe("ID компании")
|
|
23
|
+
}
|
|
24
|
+
}, async ({ companyId }) => {
|
|
25
|
+
const company = await happRequest("GET", `/companies/${companyId}`);
|
|
26
|
+
return jsonResult(company);
|
|
27
|
+
});
|
|
28
|
+
server.registerTool("happ_company_create", {
|
|
29
|
+
title: "Создать компанию",
|
|
30
|
+
description: "Создаёт новую компанию (POST /companies). Текущий пользователь становится владельцем.",
|
|
31
|
+
inputSchema: {
|
|
32
|
+
name: z.string().min(2).max(100).describe("Название компании"),
|
|
33
|
+
description: z.string().max(1000).optional().describe("Описание компании")
|
|
34
|
+
}
|
|
35
|
+
}, async ({ name, description }) => {
|
|
36
|
+
const company = await happRequest("POST", "/companies", { body: { name, description } });
|
|
37
|
+
return jsonResult(company);
|
|
38
|
+
});
|
|
39
|
+
server.registerTool("happ_company_update", {
|
|
40
|
+
title: "Обновить компанию",
|
|
41
|
+
description: "Обновляет название/описание компании (PATCH /companies/:id). Требует роль owner или admin.",
|
|
42
|
+
inputSchema: {
|
|
43
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
44
|
+
name: z.string().min(2).max(100).optional().describe("Новое название"),
|
|
45
|
+
description: z.string().max(1000).optional().describe("Новое описание")
|
|
46
|
+
}
|
|
47
|
+
}, async ({ companyId, name, description }) => {
|
|
48
|
+
const company = await happRequest("PATCH", `/companies/${companyId}`, { body: { name, description } });
|
|
49
|
+
return jsonResult(company);
|
|
50
|
+
});
|
|
51
|
+
server.registerTool("happ_company_delete", {
|
|
52
|
+
title: "Удалить компанию",
|
|
53
|
+
description: "Удаляет компанию (DELETE /companies/:id). Необратимо, требует роль owner/admin.",
|
|
54
|
+
inputSchema: {
|
|
55
|
+
companyId: z.string().uuid().describe("ID компании")
|
|
56
|
+
}
|
|
57
|
+
}, async ({ companyId }) => {
|
|
58
|
+
const result = await happRequest("DELETE", `/companies/${companyId}`);
|
|
59
|
+
return jsonResult(result);
|
|
60
|
+
});
|
|
61
|
+
server.registerTool("happ_company_leave", {
|
|
62
|
+
title: "Выйти из компании",
|
|
63
|
+
description: "Текущий пользователь покидает компанию (DELETE /companies/:id/exit).",
|
|
64
|
+
inputSchema: {
|
|
65
|
+
companyId: z.string().uuid().describe("ID компании")
|
|
66
|
+
}
|
|
67
|
+
}, async ({ companyId }) => {
|
|
68
|
+
const result = await happRequest("DELETE", `/companies/${companyId}/exit`);
|
|
69
|
+
return jsonResult(result);
|
|
70
|
+
});
|
|
71
|
+
server.registerTool("happ_company_remove_user", {
|
|
72
|
+
title: "Удалить участника",
|
|
73
|
+
description: "Удаляет участника из компании (DELETE /companies/:id/users/:userId). Требует роль owner/admin.",
|
|
74
|
+
inputSchema: {
|
|
75
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
76
|
+
userId: z.string().uuid().describe("ID пользователя")
|
|
77
|
+
}
|
|
78
|
+
}, async ({ companyId, userId }) => {
|
|
79
|
+
const result = await happRequest("DELETE", `/companies/${companyId}/users/${userId}`);
|
|
80
|
+
return jsonResult(result);
|
|
81
|
+
});
|
|
82
|
+
server.registerTool("happ_invitation_revoke", {
|
|
83
|
+
title: "Отозвать приглашение",
|
|
84
|
+
description: "Отзывает отправленное приглашение (PATCH /company-invitations/:id/revoke).",
|
|
85
|
+
inputSchema: {
|
|
86
|
+
invitationId: z.string().uuid().describe("ID приглашения")
|
|
87
|
+
}
|
|
88
|
+
}, async ({ invitationId }) => {
|
|
89
|
+
const result = await happRequest("PATCH", `/company-invitations/${invitationId}/revoke`);
|
|
90
|
+
return jsonResult(result);
|
|
91
|
+
});
|
|
92
|
+
server.registerTool("happ_permissions_list", {
|
|
93
|
+
title: "Права участников",
|
|
94
|
+
description: "Права доступа участников компании (GET /companies/:companyId/user-permissions). userId указан — права одного участника, иначе всех.",
|
|
95
|
+
inputSchema: {
|
|
96
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
97
|
+
userId: z.string().uuid().optional().describe("ID участника")
|
|
98
|
+
}
|
|
99
|
+
}, async ({ companyId, userId }) => {
|
|
100
|
+
const path = userId
|
|
101
|
+
? `/companies/${companyId}/user-permissions/users/${userId}`
|
|
102
|
+
: `/companies/${companyId}/user-permissions`;
|
|
103
|
+
const result = await happRequest("GET", path);
|
|
104
|
+
return jsonResult(result);
|
|
105
|
+
});
|
|
106
|
+
server.registerTool("happ_permissions_set", {
|
|
107
|
+
title: "Задать права участника",
|
|
108
|
+
description: "Полностью заменяет права участника (PUT /companies/:companyId/user-permissions/users/:userId). Каждое право: accessLevel (read|write) + scopeType (product|assistant|company_integration) + соответствующий ключ: productKey (analytics|calls|assistants|chats|integrations|billing), assistantId или companyIntegrationId.",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
111
|
+
userId: z.string().uuid().describe("ID участника"),
|
|
112
|
+
permissions: z
|
|
113
|
+
.array(z
|
|
114
|
+
.object({
|
|
115
|
+
accessLevel: z.enum(["read", "write"]),
|
|
116
|
+
scopeType: z.enum(["product", "assistant", "company_integration"]),
|
|
117
|
+
productKey: z.enum(["analytics", "calls", "assistants", "chats", "integrations", "billing"]).optional(),
|
|
118
|
+
assistantId: z.string().uuid().optional(),
|
|
119
|
+
companyIntegrationId: z.string().uuid().optional()
|
|
120
|
+
})
|
|
121
|
+
.passthrough())
|
|
122
|
+
.describe("Полный новый список прав (заменяет старый)")
|
|
123
|
+
}
|
|
124
|
+
}, async ({ companyId, userId, permissions }) => {
|
|
125
|
+
const result = await happRequest("PUT", `/companies/${companyId}/user-permissions/users/${userId}`, {
|
|
126
|
+
body: { permissions }
|
|
127
|
+
});
|
|
128
|
+
return jsonResult(result);
|
|
129
|
+
});
|
|
130
|
+
server.registerTool("happ_access_tokens_list", {
|
|
131
|
+
title: "API-ключи компании",
|
|
132
|
+
description: "Список API-ключей компании (GET /companies/:companyId/access-tokens). Сами ключи не показываются — только имена и префиксы.",
|
|
133
|
+
inputSchema: {
|
|
134
|
+
companyId: z.string().uuid().describe("ID компании")
|
|
135
|
+
}
|
|
136
|
+
}, async ({ companyId }) => {
|
|
137
|
+
const result = await happRequest("GET", `/companies/${companyId}/access-tokens`);
|
|
138
|
+
return jsonResult(result);
|
|
139
|
+
});
|
|
140
|
+
server.registerTool("happ_access_token_create", {
|
|
141
|
+
title: "Создать API-ключ",
|
|
142
|
+
description: "Создаёт API-ключ компании (POST /companies/:companyId/access-tokens). Ключ happ_... показывается ОДИН раз — сразу сохрани его.",
|
|
143
|
+
inputSchema: {
|
|
144
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
145
|
+
name: z.string().optional().describe("Название ключа"),
|
|
146
|
+
description: z.string().optional().describe("Описание")
|
|
147
|
+
}
|
|
148
|
+
}, async ({ companyId, name, description }) => {
|
|
149
|
+
const result = await happRequest("POST", `/companies/${companyId}/access-tokens`, {
|
|
150
|
+
body: { name, description }
|
|
151
|
+
});
|
|
152
|
+
return jsonResult(result);
|
|
153
|
+
});
|
|
154
|
+
server.registerTool("happ_access_token_revoke", {
|
|
155
|
+
title: "Отозвать API-ключ",
|
|
156
|
+
description: "Отзывает API-ключ компании (DELETE /companies/:companyId/access-tokens/:tokenId).",
|
|
157
|
+
inputSchema: {
|
|
158
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
159
|
+
tokenId: z.string().uuid().describe("ID ключа")
|
|
160
|
+
}
|
|
161
|
+
}, async ({ companyId, tokenId }) => {
|
|
162
|
+
const result = await happRequest("DELETE", `/companies/${companyId}/access-tokens/${tokenId}`);
|
|
163
|
+
return jsonResult(result);
|
|
164
|
+
});
|
|
165
|
+
server.registerTool("happ_company_invite_user", {
|
|
166
|
+
title: "Пригласить в компанию",
|
|
167
|
+
description: "Отправляет приглашение по email (POST /company-invitations/:companyId/invitations).",
|
|
168
|
+
inputSchema: {
|
|
169
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
170
|
+
email: z.string().email().describe("Email приглашаемого"),
|
|
171
|
+
role: z.enum(["owner", "admin", "member"]).optional().describe("Роль (по умолчанию member)")
|
|
172
|
+
}
|
|
173
|
+
}, async ({ companyId, email, role }) => {
|
|
174
|
+
const result = await happRequest("POST", `/company-invitations/${companyId}/invitations`, {
|
|
175
|
+
body: { email, role }
|
|
176
|
+
});
|
|
177
|
+
return jsonResult(result);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=companies.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companies.tools.js","sourceRoot":"","sources":["../../src/tools/companies.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { happRequest } from "../http.js";
|
|
3
|
+
import { jsonResult } from "./result.js";
|
|
4
|
+
export function registerFoldersTools(server) {
|
|
5
|
+
server.registerTool("happ_folders_list", {
|
|
6
|
+
title: "Папки ассистентов",
|
|
7
|
+
description: "Список папок ассистентов (GET /assistant-folders-new).",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
companyId: z.string().uuid().optional().describe("ID компании")
|
|
10
|
+
}
|
|
11
|
+
}, async (params) => {
|
|
12
|
+
const result = await happRequest("GET", "/assistant-folders-new", { params });
|
|
13
|
+
return jsonResult(result);
|
|
14
|
+
});
|
|
15
|
+
server.registerTool("happ_folder_create", {
|
|
16
|
+
title: "Создать папку",
|
|
17
|
+
description: "Создаёт папку для группировки ассистентов (POST /assistant-folders-new).",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
companyId: z.string().uuid().describe("ID компании"),
|
|
20
|
+
name: z.string().max(255).describe("Название папки"),
|
|
21
|
+
description: z.string().optional().describe("Описание"),
|
|
22
|
+
color: z
|
|
23
|
+
.string()
|
|
24
|
+
.regex(/^#[\da-fA-F]{6}$/)
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Hex-цвет, например #6366f1")
|
|
27
|
+
}
|
|
28
|
+
}, async (input) => {
|
|
29
|
+
const result = await happRequest("POST", "/assistant-folders-new", { body: input });
|
|
30
|
+
return jsonResult(result);
|
|
31
|
+
});
|
|
32
|
+
server.registerTool("happ_folder_update", {
|
|
33
|
+
title: "Обновить папку",
|
|
34
|
+
description: "Обновляет папку ассистентов (PATCH /assistant-folders-new/:id).",
|
|
35
|
+
inputSchema: {
|
|
36
|
+
folderId: z.string().uuid().describe("ID папки"),
|
|
37
|
+
name: z.string().max(255).optional(),
|
|
38
|
+
description: z.string().optional(),
|
|
39
|
+
color: z
|
|
40
|
+
.string()
|
|
41
|
+
.regex(/^#[\da-fA-F]{6}$/)
|
|
42
|
+
.optional()
|
|
43
|
+
}
|
|
44
|
+
}, async ({ folderId, ...rest }) => {
|
|
45
|
+
const body = Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== undefined));
|
|
46
|
+
const result = await happRequest("PATCH", `/assistant-folders-new/${folderId}`, { body });
|
|
47
|
+
return jsonResult(result);
|
|
48
|
+
});
|
|
49
|
+
server.registerTool("happ_folder_delete", {
|
|
50
|
+
title: "Удалить папку",
|
|
51
|
+
description: "Удаляет папку (DELETE /assistant-folders-new/:id). Ассистенты при этом не удаляются.",
|
|
52
|
+
inputSchema: {
|
|
53
|
+
folderId: z.string().uuid().describe("ID папки")
|
|
54
|
+
}
|
|
55
|
+
}, async ({ folderId }) => {
|
|
56
|
+
const result = await happRequest("DELETE", `/assistant-folders-new/${folderId}`);
|
|
57
|
+
return jsonResult(result);
|
|
58
|
+
});
|
|
59
|
+
server.registerTool("happ_folder_move_assistant", {
|
|
60
|
+
title: "Переместить ассистента в папку",
|
|
61
|
+
description: "Перемещает ассистента в папку или убирает из папки (POST /assistant-folders-new/add-assistant). folderId не указан — ассистент остаётся без папки.",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
assistantId: z.string().uuid().describe("ID ассистента"),
|
|
64
|
+
folderId: z.string().uuid().optional().describe("ID целевой папки (пусто = убрать из папки)")
|
|
65
|
+
}
|
|
66
|
+
}, async ({ assistantId, folderId }) => {
|
|
67
|
+
const result = await happRequest("POST", "/assistant-folders-new/add-assistant", { body: { assistantId, folderId } });
|
|
68
|
+
return jsonResult(result);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=folders.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.tools.js","sourceRoot":"","sources":["../../src/tools/folders.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { happRequest } from "../http.js";
|
|
3
|
+
import { jsonResult } from "./result.js";
|
|
4
|
+
const knowledgeConfigShape = {
|
|
5
|
+
type: z.enum(["url", "text", "file"]).optional().describe("Тип знания: url (ссылка), text (текст), file (файл)"),
|
|
6
|
+
resourceUrl: z.string().optional().describe("URL источника (обязателен при type=url)"),
|
|
7
|
+
resourceContent: z.string().optional().describe("Текстовое содержимое знания (для type=text)"),
|
|
8
|
+
resourceDescription: z.string().optional().describe("Описание источника")
|
|
9
|
+
};
|
|
10
|
+
export function registerKnowledgeTools(server) {
|
|
11
|
+
server.registerTool("happ_knowledge_list", {
|
|
12
|
+
title: "База знаний",
|
|
13
|
+
description: "Список записей базы знаний ассистента (GET /assistant-knowledge-new).",
|
|
14
|
+
inputSchema: {
|
|
15
|
+
assistantId: z.string().uuid().optional().describe("Фильтр по ассистенту"),
|
|
16
|
+
search: z.string().optional().describe("Поиск по имени"),
|
|
17
|
+
skip: z.number().int().min(0).optional(),
|
|
18
|
+
take: z.number().int().min(1).optional()
|
|
19
|
+
}
|
|
20
|
+
}, async (params) => {
|
|
21
|
+
const result = await happRequest("GET", "/assistant-knowledge-new", { params });
|
|
22
|
+
return jsonResult(result);
|
|
23
|
+
});
|
|
24
|
+
server.registerTool("happ_knowledge_get", {
|
|
25
|
+
title: "Запись базы знаний",
|
|
26
|
+
description: "Детали записи базы знаний по id (GET /assistant-knowledge-new/:id), включая содержимое.",
|
|
27
|
+
inputSchema: {
|
|
28
|
+
knowledgeId: z.string().uuid().describe("ID записи")
|
|
29
|
+
}
|
|
30
|
+
}, async ({ knowledgeId }) => {
|
|
31
|
+
const knowledge = await happRequest("GET", `/assistant-knowledge-new/${knowledgeId}`);
|
|
32
|
+
return jsonResult(knowledge);
|
|
33
|
+
});
|
|
34
|
+
server.registerTool("happ_knowledge_create", {
|
|
35
|
+
title: "Добавить знание",
|
|
36
|
+
description: "Добавляет запись в базу знаний ассистента (POST /assistant-knowledge-new): текст (type=text + resourceContent) или ссылку (type=url + resourceUrl).",
|
|
37
|
+
inputSchema: {
|
|
38
|
+
assistantId: z.string().uuid().describe("ID ассистента"),
|
|
39
|
+
name: z.string().describe("Название записи"),
|
|
40
|
+
...knowledgeConfigShape
|
|
41
|
+
}
|
|
42
|
+
}, async (input) => {
|
|
43
|
+
const body = Object.fromEntries(Object.entries(input).filter(([, v]) => v !== undefined));
|
|
44
|
+
const knowledge = await happRequest("POST", "/assistant-knowledge-new", { body });
|
|
45
|
+
return jsonResult(knowledge);
|
|
46
|
+
});
|
|
47
|
+
server.registerTool("happ_knowledge_update", {
|
|
48
|
+
title: "Обновить знание",
|
|
49
|
+
description: "Обновляет запись базы знаний (PATCH /assistant-knowledge-new/:id). Системные записи менять нельзя.",
|
|
50
|
+
inputSchema: {
|
|
51
|
+
knowledgeId: z.string().uuid().describe("ID записи"),
|
|
52
|
+
name: z.string().optional().describe("Новое название"),
|
|
53
|
+
...knowledgeConfigShape
|
|
54
|
+
}
|
|
55
|
+
}, async ({ knowledgeId, ...rest }) => {
|
|
56
|
+
const body = Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== undefined));
|
|
57
|
+
const knowledge = await happRequest("PATCH", `/assistant-knowledge-new/${knowledgeId}`, { body });
|
|
58
|
+
return jsonResult(knowledge);
|
|
59
|
+
});
|
|
60
|
+
server.registerTool("happ_knowledge_delete", {
|
|
61
|
+
title: "Удалить знание",
|
|
62
|
+
description: "Удаляет запись базы знаний (DELETE /assistant-knowledge-new/:id).",
|
|
63
|
+
inputSchema: {
|
|
64
|
+
knowledgeId: z.string().uuid().describe("ID записи")
|
|
65
|
+
}
|
|
66
|
+
}, async ({ knowledgeId }) => {
|
|
67
|
+
const result = await happRequest("DELETE", `/assistant-knowledge-new/${knowledgeId}`);
|
|
68
|
+
return jsonResult(result);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=knowledge.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.tools.js","sourceRoot":"","sources":["../../src/tools/knowledge.tools.ts"],"names":[],"mappings":"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"}
|