huly-mcp-selfhost 1.0.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 (77) hide show
  1. package/.env.example +16 -0
  2. package/README.md +522 -0
  3. package/dist/connection.d.ts +9 -0
  4. package/dist/connection.js +122 -0
  5. package/dist/connection.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +25 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/schemas.d.ts +459 -0
  10. package/dist/schemas.js +196 -0
  11. package/dist/schemas.js.map +1 -0
  12. package/dist/server.d.ts +2 -0
  13. package/dist/server.js +87 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/tools/attachments.d.ts +28 -0
  16. package/dist/tools/attachments.js +61 -0
  17. package/dist/tools/attachments.js.map +1 -0
  18. package/dist/tools/channels.d.ts +44 -0
  19. package/dist/tools/channels.js +130 -0
  20. package/dist/tools/channels.js.map +1 -0
  21. package/dist/tools/comments.d.ts +27 -0
  22. package/dist/tools/comments.js +60 -0
  23. package/dist/tools/comments.js.map +1 -0
  24. package/dist/tools/components.d.ts +19 -0
  25. package/dist/tools/components.js +57 -0
  26. package/dist/tools/components.js.map +1 -0
  27. package/dist/tools/documents.d.ts +68 -0
  28. package/dist/tools/documents.js +207 -0
  29. package/dist/tools/documents.js.map +1 -0
  30. package/dist/tools/issues.d.ts +56 -0
  31. package/dist/tools/issues.js +262 -0
  32. package/dist/tools/issues.js.map +1 -0
  33. package/dist/tools/labels.d.ts +35 -0
  34. package/dist/tools/labels.js +150 -0
  35. package/dist/tools/labels.js.map +1 -0
  36. package/dist/tools/log-time.d.ts +10 -0
  37. package/dist/tools/log-time.js +31 -0
  38. package/dist/tools/log-time.js.map +1 -0
  39. package/dist/tools/members.d.ts +6 -0
  40. package/dist/tools/members.js +17 -0
  41. package/dist/tools/members.js.map +1 -0
  42. package/dist/tools/milestones.d.ts +19 -0
  43. package/dist/tools/milestones.js +80 -0
  44. package/dist/tools/milestones.js.map +1 -0
  45. package/dist/tools/organizations.d.ts +32 -0
  46. package/dist/tools/organizations.js +86 -0
  47. package/dist/tools/organizations.js.map +1 -0
  48. package/dist/tools/projects.d.ts +24 -0
  49. package/dist/tools/projects.js +64 -0
  50. package/dist/tools/projects.js.map +1 -0
  51. package/dist/tools/relations.d.ts +27 -0
  52. package/dist/tools/relations.js +103 -0
  53. package/dist/tools/relations.js.map +1 -0
  54. package/dist/tools/search.d.ts +9 -0
  55. package/dist/tools/search.js +32 -0
  56. package/dist/tools/search.js.map +1 -0
  57. package/dist/tools/statuses.d.ts +16 -0
  58. package/dist/tools/statuses.js +93 -0
  59. package/dist/tools/statuses.js.map +1 -0
  60. package/dist/utils/errors.d.ts +11 -0
  61. package/dist/utils/errors.js +24 -0
  62. package/dist/utils/errors.js.map +1 -0
  63. package/dist/utils/format.d.ts +4 -0
  64. package/dist/utils/format.js +28 -0
  65. package/dist/utils/format.js.map +1 -0
  66. package/dist/utils/markdown.d.ts +14 -0
  67. package/dist/utils/markdown.js +144 -0
  68. package/dist/utils/markdown.js.map +1 -0
  69. package/dist/utils/storage.d.ts +7 -0
  70. package/dist/utils/storage.js +82 -0
  71. package/dist/utils/storage.js.map +1 -0
  72. package/package.json +68 -0
  73. package/scripts/cleanup-issues.js +132 -0
  74. package/scripts/demo.js +193 -0
  75. package/scripts/import-csv.js +242 -0
  76. package/scripts/sample-tasks.csv +11 -0
  77. package/scripts/setup.js +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function createServer(): McpServer;
package/dist/server.js ADDED
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createServer = createServer;
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const projects_1 = require("./tools/projects");
6
+ const issues_1 = require("./tools/issues");
7
+ const comments_1 = require("./tools/comments");
8
+ const log_time_1 = require("./tools/log-time");
9
+ const members_1 = require("./tools/members");
10
+ const milestones_1 = require("./tools/milestones");
11
+ const documents_1 = require("./tools/documents");
12
+ const search_1 = require("./tools/search");
13
+ const labels_1 = require("./tools/labels");
14
+ const relations_1 = require("./tools/relations");
15
+ const components_1 = require("./tools/components");
16
+ const channels_1 = require("./tools/channels");
17
+ const attachments_1 = require("./tools/attachments");
18
+ const statuses_1 = require("./tools/statuses");
19
+ const organizations_1 = require("./tools/organizations");
20
+ const schemas_1 = require("./schemas");
21
+ function createServer() {
22
+ const server = new mcp_js_1.McpServer({ name: 'huly-mcp-selfhost', version: '1.0.0' });
23
+ // Projects
24
+ server.tool('list_projects', 'List all projects in the Huly workspace', {}, projects_1.listProjects);
25
+ server.tool('get_project', 'Get a project by its identifier (e.g. "PROJ")', schemas_1.GetProjectSchema.shape, projects_1.getProject);
26
+ server.tool('create_project', 'Create a new tracker project with a unique ALL-CAPS identifier', schemas_1.CreateProjectSchema.shape, projects_1.createProject);
27
+ // Issues
28
+ server.tool('list_issues', 'List issues in a project with optional filters', schemas_1.ListIssuesSchema.shape, issues_1.listIssues);
29
+ server.tool('get_issue', 'Get full details of an issue by identifier (e.g. "PROJ-123")', schemas_1.GetIssueSchema.shape, issues_1.getIssue);
30
+ server.tool('create_issue', 'Create a new issue in a project', schemas_1.CreateIssueSchema.shape, issues_1.createIssue);
31
+ server.tool('update_issue', 'Update an existing issue (title, status, priority, due date, assignee, component, milestone)', schemas_1.UpdateIssueSchema.shape, issues_1.updateIssue);
32
+ server.tool('delete_issue', 'Permanently delete an issue by identifier (e.g. "PROJ-123")', schemas_1.DeleteIssueSchema.shape, issues_1.deleteIssue);
33
+ // Comments
34
+ server.tool('add_comment', 'Add a comment to an issue', schemas_1.AddCommentSchema.shape, comments_1.addComment);
35
+ server.tool('list_comments', 'List all comments on an issue (includes comment IDs for use with delete_comment)', schemas_1.ListCommentsSchema.shape, comments_1.listComments);
36
+ server.tool('delete_comment', 'Delete a specific comment from an issue by its ID (get IDs from list_comments)', schemas_1.DeleteCommentSchema.shape, comments_1.deleteComment);
37
+ // Time tracking
38
+ server.tool('log_time', 'Log hours spent on an issue', schemas_1.LogTimeSchema.shape, log_time_1.logTime);
39
+ // Labels
40
+ server.tool('list_labels', 'List all labels in the workspace', schemas_1.ListLabelsSchema.shape, labels_1.listLabels);
41
+ server.tool('create_label', 'Create a new label with an optional hex color', schemas_1.CreateLabelSchema.shape, labels_1.createLabel);
42
+ server.tool('add_label', 'Add a label to an issue (auto-creates the label if it does not exist)', schemas_1.AddLabelSchema.shape, labels_1.addLabel);
43
+ server.tool('remove_label', 'Remove a label from an issue', schemas_1.RemoveLabelSchema.shape, labels_1.removeLabel);
44
+ // Relations
45
+ server.tool('add_relation', 'Mark two issues as related to each other (bidirectional)', schemas_1.AddRelationSchema.shape, relations_1.addRelation);
46
+ server.tool('add_blocked_by', 'Mark an issue as blocked by another issue', schemas_1.AddBlockedBySchema.shape, relations_1.addBlockedBy);
47
+ server.tool('set_parent', 'Set or clear the parent (epic) of an issue', schemas_1.SetParentSchema.shape, relations_1.setParent);
48
+ // Members
49
+ server.tool('list_members', 'List all members in the workspace', {}, members_1.listMembers);
50
+ // Milestones
51
+ server.tool('list_milestones', 'List milestones for a project', schemas_1.ListMilestonesSchema.shape, milestones_1.listMilestones);
52
+ server.tool('create_milestone', 'Create a new milestone in a project with a target date', schemas_1.CreateMilestoneSchema.shape, milestones_1.createMilestone);
53
+ // Components
54
+ server.tool('list_components', 'List components (sub-areas) in a project', schemas_1.ListComponentsSchema.shape, components_1.listComponents);
55
+ server.tool('create_component', 'Create a new component in a project', schemas_1.CreateComponentSchema.shape, components_1.createComponent);
56
+ // Documents
57
+ server.tool('list_teamspaces', 'List all document teamspaces in the workspace', {}, documents_1.listTeamspaces);
58
+ server.tool('create_teamspace', 'Create a new document teamspace (a top-level folder for documents)', schemas_1.CreateTeamspaceSchema.shape, documents_1.createTeamspace);
59
+ server.tool('list_documents', 'List documents in a teamspace', schemas_1.ListDocumentsSchema.shape, documents_1.listDocuments);
60
+ server.tool('get_document', 'Get metadata and content of a document (content requires HULY_FRONT_URL env)', schemas_1.GetDocumentSchema.shape, documents_1.getDocument);
61
+ server.tool('create_document', 'Create a new document in a teamspace', schemas_1.CreateDocumentSchema.shape, documents_1.createDocument);
62
+ server.tool('delete_document', 'Permanently delete a document by its ID', schemas_1.DeleteDocumentSchema.shape, documents_1.deleteDocument);
63
+ server.tool('update_document', 'Set or replace the content of a document from Markdown (supports headings, paragraphs, code blocks, tables, bullet lists)', schemas_1.UpdateDocumentSchema.shape, documents_1.updateDocument);
64
+ server.tool('link_document', 'Link a Huly document to an issue — appears in the Relations panel on the issue', schemas_1.LinkDocumentSchema.shape, documents_1.linkDocument);
65
+ // Search
66
+ server.tool('search_issues', 'Full-text search across all issues', schemas_1.SearchIssuesSchema.shape, search_1.searchIssues);
67
+ // Chat (Channels & Direct Messages)
68
+ server.tool('list_channels', 'List all channels in the workspace', schemas_1.ListChannelsSchema.shape, channels_1.listChannels);
69
+ server.tool('create_channel', 'Create a new channel', schemas_1.CreateChannelSchema.shape, channels_1.createChannel);
70
+ server.tool('start_direct_message', 'Start (or find) a 1:1 direct message with a workspace member', schemas_1.StartDirectMessageSchema.shape, channels_1.startDirectMessage);
71
+ server.tool('send_message', 'Send a message to a channel or direct message', schemas_1.SendMessageSchema.shape, channels_1.sendMessage);
72
+ server.tool('list_messages', 'List messages in a channel or direct message', schemas_1.ListMessagesSchema.shape, channels_1.listMessages);
73
+ // Attachments
74
+ server.tool('attach_file', 'Attach a file to an issue (base64-encoded content)', schemas_1.AttachFileSchema.shape, attachments_1.attachFile);
75
+ server.tool('list_attachments', 'List files attached to an issue', schemas_1.ListAttachmentsSchema.shape, attachments_1.listAttachments);
76
+ server.tool('delete_attachment', 'Delete a file attachment from an issue', schemas_1.DeleteAttachmentSchema.shape, attachments_1.deleteAttachment);
77
+ // Issue Statuses (custom workflow states)
78
+ server.tool('list_issue_statuses', 'List all issue statuses (workflow states), grouped by phase', {}, statuses_1.listIssueStatuses);
79
+ server.tool('create_issue_status', 'Create a new issue status — becomes available in every project immediately', schemas_1.CreateIssueStatusSchema.shape, statuses_1.createIssueStatus);
80
+ // Organizations (contacts/CRM)
81
+ server.tool('list_organizations', 'List all organizations (companies) in the workspace', {}, organizations_1.listOrganizations);
82
+ server.tool('get_organization', 'Get details of an organization, including description', schemas_1.GetOrganizationSchema.shape, organizations_1.getOrganization);
83
+ server.tool('create_organization', 'Create a new organization (company contact)', schemas_1.CreateOrganizationSchema.shape, organizations_1.createOrganization);
84
+ server.tool('update_organization', 'Set the description of an organization from Markdown', schemas_1.UpdateOrganizationSchema.shape, organizations_1.updateOrganization);
85
+ return server;
86
+ }
87
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare const attachFile: (args: {
2
+ identifier: string;
3
+ filename: string;
4
+ contentBase64: string;
5
+ mimeType: string;
6
+ }) => Promise<{
7
+ content: Array<{
8
+ type: "text";
9
+ text: string;
10
+ }>;
11
+ }>;
12
+ export declare const listAttachments: (args: {
13
+ identifier: string;
14
+ }) => Promise<{
15
+ content: Array<{
16
+ type: "text";
17
+ text: string;
18
+ }>;
19
+ }>;
20
+ export declare const deleteAttachment: (args: {
21
+ identifier: string;
22
+ attachmentId: string;
23
+ }) => Promise<{
24
+ content: Array<{
25
+ type: "text";
26
+ text: string;
27
+ }>;
28
+ }>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deleteAttachment = exports.listAttachments = exports.attachFile = void 0;
7
+ const attachment_1 = __importDefault(require("@hcengineering/attachment"));
8
+ const tracker_1 = __importDefault(require("@hcengineering/tracker"));
9
+ const core_1 = require("@hcengineering/core");
10
+ const connection_1 = require("../connection");
11
+ const errors_1 = require("../utils/errors");
12
+ const storage_1 = require("../utils/storage");
13
+ const format_1 = require("../utils/format");
14
+ function base64ToBlob(base64, mimeType) {
15
+ const binary = Buffer.from(base64, 'base64');
16
+ return new Blob([binary], { type: mimeType });
17
+ }
18
+ exports.attachFile = (0, errors_1.wrapToolHandler)(async (args) => {
19
+ const client = await (0, connection_1.getConnection)();
20
+ const { wsToken, workspaceUuid } = await (0, connection_1.getWorkspaceInfo)();
21
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
22
+ if (issue == null)
23
+ throw new Error(`Issue '${args.identifier}' not found.`);
24
+ const blob = base64ToBlob(args.contentBase64, args.mimeType);
25
+ const blobId = `${issue._id}-attachment-${Date.now()}-${args.filename}`;
26
+ const uploaded = await (0, storage_1.uploadBlob)(wsToken, workspaceUuid, blobId, blob);
27
+ const attachmentId = (0, core_1.generateId)();
28
+ await client.addCollection(attachment_1.default.class.Attachment, issue.space, issue._id, tracker_1.default.class.Issue, 'attachments', {
29
+ name: args.filename,
30
+ file: uploaded.id,
31
+ size: uploaded.size,
32
+ type: args.mimeType,
33
+ lastModified: Date.now()
34
+ }, attachmentId);
35
+ return `✅ File **"${args.filename}"** (${uploaded.size} bytes) attached to **${args.identifier}** (attachment id: \`${attachmentId}\`).`;
36
+ });
37
+ exports.listAttachments = (0, errors_1.wrapToolHandler)(async (args) => {
38
+ const client = await (0, connection_1.getConnection)();
39
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
40
+ if (issue == null)
41
+ throw new Error(`Issue '${args.identifier}' not found.`);
42
+ const attachments = await client.findAll(attachment_1.default.class.Attachment, { attachedTo: issue._id });
43
+ if (attachments.length === 0)
44
+ return `No attachments found on **${args.identifier}**.`;
45
+ const lines = attachments.map((a) => `- **${a.name}** (id: \`${a._id}\`, ${a.size} bytes, ${a.type}) — added ${(0, format_1.formatDate)(a.modifiedOn)}`);
46
+ return `## Attachments on ${args.identifier} (${attachments.length})\n\n${lines.join('\n')}`;
47
+ });
48
+ exports.deleteAttachment = (0, errors_1.wrapToolHandler)(async (args) => {
49
+ const client = await (0, connection_1.getConnection)();
50
+ const { wsToken, workspaceUuid } = await (0, connection_1.getWorkspaceInfo)();
51
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
52
+ if (issue == null)
53
+ throw new Error(`Issue '${args.identifier}' not found.`);
54
+ const att = await client.findOne(attachment_1.default.class.Attachment, { _id: args.attachmentId });
55
+ if (att == null)
56
+ throw new Error(`Attachment '${args.attachmentId}' not found.`);
57
+ await client.removeCollection(attachment_1.default.class.Attachment, issue.space, att._id, issue._id, tracker_1.default.class.Issue, 'attachments');
58
+ await (0, storage_1.deleteBlob)(wsToken, workspaceUuid, String(att.file));
59
+ return `✅ Attachment **"${att.name}"** deleted from **${args.identifier}**.`;
60
+ });
61
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/tools/attachments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export declare const listChannels: (args: {
2
+ includeArchived: boolean;
3
+ }) => Promise<{
4
+ content: Array<{
5
+ type: "text";
6
+ text: string;
7
+ }>;
8
+ }>;
9
+ export declare const createChannel: (args: {
10
+ name: string;
11
+ isPrivate: boolean;
12
+ topic?: string | undefined;
13
+ }) => Promise<{
14
+ content: Array<{
15
+ type: "text";
16
+ text: string;
17
+ }>;
18
+ }>;
19
+ export declare const startDirectMessage: (args: {
20
+ member: string;
21
+ }) => Promise<{
22
+ content: Array<{
23
+ type: "text";
24
+ text: string;
25
+ }>;
26
+ }>;
27
+ export declare const sendMessage: (args: {
28
+ message: string;
29
+ spaceId: string;
30
+ }) => Promise<{
31
+ content: Array<{
32
+ type: "text";
33
+ text: string;
34
+ }>;
35
+ }>;
36
+ export declare const listMessages: (args: {
37
+ limit: number;
38
+ spaceId: string;
39
+ }) => Promise<{
40
+ content: Array<{
41
+ type: "text";
42
+ text: string;
43
+ }>;
44
+ }>;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.listMessages = exports.sendMessage = exports.startDirectMessage = exports.createChannel = exports.listChannels = void 0;
40
+ const chunter_1 = __importDefault(require("@hcengineering/chunter"));
41
+ const contact_1 = __importDefault(require("@hcengineering/contact"));
42
+ const core_1 = __importStar(require("@hcengineering/core"));
43
+ const connection_1 = require("../connection");
44
+ const errors_1 = require("../utils/errors");
45
+ const format_1 = require("../utils/format");
46
+ exports.listChannels = (0, errors_1.wrapToolHandler)(async (args) => {
47
+ const client = await (0, connection_1.getConnection)();
48
+ const query = {};
49
+ if (!args.includeArchived)
50
+ query.archived = false;
51
+ const channels = await client.findAll(chunter_1.default.class.Channel, query);
52
+ if (channels.length === 0)
53
+ return 'No channels found in this workspace.';
54
+ const lines = channels.map((c) => `- **#${c.name}** (id: \`${c._id}\`)${c.topic != null && c.topic !== '' ? ` — ${c.topic}` : ''}${c.private === true ? ' 🔒' : ''} — ${c.messages ?? 0} messages`);
55
+ return `## Channels (${channels.length})\n\n${lines.join('\n')}`;
56
+ });
57
+ exports.createChannel = (0, errors_1.wrapToolHandler)(async (args) => {
58
+ const client = await (0, connection_1.getConnection)();
59
+ const existing = await client.findOne(chunter_1.default.class.Channel, { name: args.name });
60
+ if (existing != null)
61
+ return `ℹ️ Channel **#${args.name}** already exists (id: \`${existing._id}\`).`;
62
+ const channelId = (0, core_1.generateId)();
63
+ await client.createDoc(chunter_1.default.class.Channel, core_1.default.space.Space, {
64
+ name: args.name,
65
+ topic: args.topic ?? '',
66
+ description: args.topic ?? '',
67
+ private: args.isPrivate,
68
+ members: [client.user],
69
+ owners: [client.user],
70
+ autoJoin: false,
71
+ archived: false,
72
+ messages: 0
73
+ }, channelId);
74
+ return `✅ Channel **#${args.name}** created (id: \`${channelId}\`).`;
75
+ });
76
+ exports.startDirectMessage = (0, errors_1.wrapToolHandler)(async (args) => {
77
+ const client = await (0, connection_1.getConnection)();
78
+ const persons = await client.findAll(contact_1.default.class.Person, {});
79
+ const match = persons.find((p) => (p.name ?? '').toLowerCase().includes(args.member.toLowerCase()));
80
+ if (match == null || match.personUuid == null)
81
+ throw new Error(`Member '${args.member}' not found.`);
82
+ const targetAccount = match.personUuid;
83
+ const matchName = match.name;
84
+ const selfAccount = client.user;
85
+ // A DM is identified by its exact member set — look for an existing one first.
86
+ const existingDms = await client.findAll(chunter_1.default.class.DirectMessage, {});
87
+ const existing = existingDms.find((dm) => {
88
+ const dmMembers = (dm.members ?? []);
89
+ return dmMembers.length === 2 && dmMembers.includes(String(targetAccount)) && dmMembers.includes(String(selfAccount));
90
+ });
91
+ if (existing != null)
92
+ return `ℹ️ Direct message with **${matchName}** already exists (id: \`${existing._id}\`).`;
93
+ const dmId = (0, core_1.generateId)();
94
+ await client.createDoc(chunter_1.default.class.DirectMessage, core_1.default.space.Space, {
95
+ name: '',
96
+ description: '',
97
+ private: true,
98
+ members: [selfAccount, targetAccount],
99
+ owners: [selfAccount, targetAccount],
100
+ autoJoin: false,
101
+ archived: false,
102
+ messages: 0
103
+ }, dmId);
104
+ return `✅ Direct message with **${matchName}** started (id: \`${dmId}\`).`;
105
+ });
106
+ async function resolveChatSpace(client, spaceId) {
107
+ const channel = await client.findOne(chunter_1.default.class.Channel, { _id: spaceId });
108
+ if (channel != null)
109
+ return { space: channel, spaceClass: chunter_1.default.class.Channel };
110
+ const dm = await client.findOne(chunter_1.default.class.DirectMessage, { _id: spaceId });
111
+ if (dm != null)
112
+ return { space: dm, spaceClass: chunter_1.default.class.DirectMessage };
113
+ throw new Error(`Channel or direct message '${spaceId}' not found.`);
114
+ }
115
+ exports.sendMessage = (0, errors_1.wrapToolHandler)(async (args) => {
116
+ const client = await (0, connection_1.getConnection)();
117
+ const { space, spaceClass } = await resolveChatSpace(client, args.spaceId);
118
+ await client.addCollection(chunter_1.default.class.ChatMessage, space._id, space._id, spaceClass, 'messages', { message: args.message });
119
+ return `✅ Message sent to \`${args.spaceId}\`.`;
120
+ });
121
+ exports.listMessages = (0, errors_1.wrapToolHandler)(async (args) => {
122
+ const client = await (0, connection_1.getConnection)();
123
+ const { space } = await resolveChatSpace(client, args.spaceId);
124
+ const messages = await client.findAll(chunter_1.default.class.ChatMessage, { attachedTo: space._id }, { limit: args.limit, sort: { createdOn: core_1.SortingOrder.Ascending } });
125
+ if (messages.length === 0)
126
+ return 'No messages found in this channel.';
127
+ const lines = messages.map((m) => `**[${(0, format_1.formatDate)(m.createdOn)}]** ${m.message}`);
128
+ return `## Messages (${messages.length})\n\n${lines.join('\n')}`;
129
+ });
130
+ //# sourceMappingURL=channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/tools/channels.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAqG;AACrG,qEAA4C;AAC5C,4DAA8E;AAC9E,8CAA6C;AAC7C,4CAAiD;AACjD,4CAA4C;AAI/B,QAAA,YAAY,GAAG,IAAA,wBAAe,EAAqC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC7F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,IAAI,CAAC,IAAI,CAAC,eAAe;QAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAA;IAEjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAY,CAAC,CAAA;IAC1E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,sCAAsC,CAAA;IAExE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,IAAI,CAAC,WAAW,CACjK,CAAA;IACD,OAAO,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAClE,CAAC,CAAC,CAAA;AAEW,QAAA,aAAa,GAAG,IAAA,wBAAe,EAAsC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC/F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IAEpC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACjF,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,iBAAiB,IAAI,CAAC,IAAI,4BAA4B,QAAQ,CAAC,GAAG,MAAM,CAAA;IAErG,MAAM,SAAS,GAAG,IAAA,iBAAU,GAAW,CAAA;IACvC,MAAM,MAAM,CAAC,SAAS,CACpB,iBAAO,CAAC,KAAK,CAAC,OAAO,EACrB,cAAI,CAAC,KAAK,CAAC,KAAK,EAChB;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7B,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACtB,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACrB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC;KACL,EACR,SAAS,CACV,CAAA;IAED,OAAO,gBAAgB,IAAI,CAAC,IAAI,qBAAqB,SAAS,MAAM,CAAA;AACtE,CAAC,CAAC,CAAA;AAEW,QAAA,kBAAkB,GAAG,IAAA,wBAAe,EAA2C,KAAK,EAAE,IAAI,EAAE,EAAE;IACzG,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IAEpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACnG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,cAAc,CAAC,CAAA;IAEpG,MAAM,aAAa,GAAG,KAAK,CAAC,UAAiC,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAA;IAE/B,+EAA+E;IAC/E,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,CAAE,EAAU,CAAC,OAAO,IAAI,EAAE,CAAa,CAAA;QACzD,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IACvH,CAAC,CAAC,CAAA;IACF,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,4BAA4B,SAAS,4BAA4B,QAAQ,CAAC,GAAG,MAAM,CAAA;IAEhH,MAAM,IAAI,GAAG,IAAA,iBAAU,GAAiB,CAAA;IACxC,MAAM,MAAM,CAAC,SAAS,CACpB,iBAAO,CAAC,KAAK,CAAC,aAAa,EAC3B,cAAI,CAAC,KAAK,CAAC,KAAK,EAChB;QACE,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QACrC,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QACpC,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC;KACL,EACR,IAAI,CACL,CAAA;IAED,OAAO,2BAA2B,SAAS,qBAAqB,IAAI,MAAM,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEF,KAAK,UAAU,gBAAgB,CAAE,MAAiD,EAAE,OAAe;IACjG,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAuB,EAAE,CAAC,CAAA;IAC7F,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAEjF,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,OAA6B,EAAE,CAAC,CAAA;IACpG,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,iBAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;IAE7E,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,cAAc,CAAC,CAAA;AACtE,CAAC;AAEY,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAoC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC3F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAE1E,MAAM,MAAM,CAAC,aAAa,CACxB,iBAAO,CAAC,KAAK,CAAC,WAAW,EACzB,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,UAAiB,EACjB,UAAU,EACV,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAA;IAED,OAAO,uBAAuB,IAAI,CAAC,OAAO,KAAK,CAAA;AACjD,CAAC,CAAC,CAAA;AAEW,QAAA,YAAY,GAAG,IAAA,wBAAe,EAAqC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC7F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAE9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,iBAAO,CAAC,KAAK,CAAC,WAAW,EACzB,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,EACzB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,mBAAY,CAAC,SAAS,EAAE,EAAE,CACnE,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oCAAoC,CAAA;IAEtE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAA,mBAAU,EAAC,CAAC,CAAC,SAAS,CAAC,OAAQ,CAAS,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3F,OAAO,gBAAgB,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAClE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ export declare const addComment: (args: {
2
+ message: string;
3
+ identifier: string;
4
+ }) => Promise<{
5
+ content: Array<{
6
+ type: "text";
7
+ text: string;
8
+ }>;
9
+ }>;
10
+ export declare const listComments: (args: {
11
+ identifier: string;
12
+ limit: number;
13
+ }) => Promise<{
14
+ content: Array<{
15
+ type: "text";
16
+ text: string;
17
+ }>;
18
+ }>;
19
+ export declare const deleteComment: (args: {
20
+ identifier: string;
21
+ commentId: string;
22
+ }) => Promise<{
23
+ content: Array<{
24
+ type: "text";
25
+ text: string;
26
+ }>;
27
+ }>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deleteComment = exports.listComments = exports.addComment = void 0;
7
+ const tracker_1 = __importDefault(require("@hcengineering/tracker"));
8
+ const chunter_1 = __importDefault(require("@hcengineering/chunter"));
9
+ const contact_1 = __importDefault(require("@hcengineering/contact"));
10
+ const connection_1 = require("../connection");
11
+ const errors_1 = require("../utils/errors");
12
+ const format_1 = require("../utils/format");
13
+ const core_1 = require("@hcengineering/core");
14
+ exports.addComment = (0, errors_1.wrapToolHandler)(async (args) => {
15
+ const client = await (0, connection_1.getConnection)();
16
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
17
+ if (issue == null)
18
+ throw new Error(`Issue '${args.identifier}' not found.`);
19
+ await client.addCollection(chunter_1.default.class.ChatMessage, issue.space, issue._id, tracker_1.default.class.Issue, 'comments', { message: args.message });
20
+ return `✅ Comment added to **${args.identifier}**.`;
21
+ });
22
+ exports.listComments = (0, errors_1.wrapToolHandler)(async (args) => {
23
+ const client = await (0, connection_1.getConnection)();
24
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
25
+ if (issue == null)
26
+ throw new Error(`Issue '${args.identifier}' not found.`);
27
+ const comments = await client.findAll(chunter_1.default.class.ChatMessage, { attachedTo: issue._id }, { limit: args.limit, sort: { createdOn: core_1.SortingOrder.Ascending } });
28
+ if (comments.length === 0)
29
+ return `No comments found on **${args.identifier}**.`;
30
+ // Filter comments with valid authors
31
+ const commentsWithAuthors = comments.filter((c) => c.createdBy != null);
32
+ // Resolve author details
33
+ const authorIds = [...new Set(commentsWithAuthors.map((c) => c.createdBy))];
34
+ const members = authorIds.length > 0
35
+ ? await client.findAll(contact_1.default.class.Member, { _id: { $in: authorIds } })
36
+ : [];
37
+ const memberMap = new Map(members.map((m) => [m._id, m.name ?? m._id]));
38
+ const lines = commentsWithAuthors.map((comment) => {
39
+ const author = memberMap.get(comment.createdBy) ?? 'Unknown';
40
+ const date = (0, format_1.formatDate)(comment.createdOn);
41
+ const message = comment.message ?? '';
42
+ return `**${author}** @ ${date} (id: \`${comment._id}\`):\n> ${message.split('\n').join('\n> ')}`;
43
+ });
44
+ return `## Comments on ${args.identifier} (${comments.length})\n\n${lines.join('\n\n')}`;
45
+ });
46
+ exports.deleteComment = (0, errors_1.wrapToolHandler)(async (args) => {
47
+ const client = await (0, connection_1.getConnection)();
48
+ const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
49
+ if (issue == null)
50
+ throw new Error(`Issue '${args.identifier}' not found.`);
51
+ const comment = await client.findOne(chunter_1.default.class.ChatMessage, {
52
+ _id: args.commentId,
53
+ attachedTo: issue._id
54
+ });
55
+ if (comment == null)
56
+ throw new Error(`Comment '${args.commentId}' not found on ${args.identifier}.`);
57
+ await client.removeCollection(chunter_1.default.class.ChatMessage, issue.space, comment._id, issue._id, tracker_1.default.class.Issue, 'comments');
58
+ return `✅ Comment \`${args.commentId}\` deleted from **${args.identifier}**.`;
59
+ });
60
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const listComponents: (args: {
2
+ projectIdentifier: string;
3
+ }) => Promise<{
4
+ content: Array<{
5
+ type: "text";
6
+ text: string;
7
+ }>;
8
+ }>;
9
+ export declare const createComponent: (args: {
10
+ label: string;
11
+ projectIdentifier: string;
12
+ description?: string | undefined;
13
+ lead?: string | undefined;
14
+ }) => Promise<{
15
+ content: Array<{
16
+ type: "text";
17
+ text: string;
18
+ }>;
19
+ }>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createComponent = exports.listComponents = void 0;
7
+ const tracker_1 = __importDefault(require("@hcengineering/tracker"));
8
+ const contact_1 = __importDefault(require("@hcengineering/contact"));
9
+ const core_1 = require("@hcengineering/core");
10
+ const connection_1 = require("../connection");
11
+ const errors_1 = require("../utils/errors");
12
+ exports.listComponents = (0, errors_1.wrapToolHandler)(async (args) => {
13
+ const client = await (0, connection_1.getConnection)();
14
+ const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.projectIdentifier });
15
+ if (project == null)
16
+ throw new Error(`Project '${args.projectIdentifier}' not found.`);
17
+ const components = await client.findAll(tracker_1.default.class.Component, { space: project._id });
18
+ if (components.length === 0)
19
+ return `No components found in project ${args.projectIdentifier}.`;
20
+ // Resolve lead names
21
+ const leadIds = components.map((c) => c.lead).filter((id) => id != null);
22
+ const leads = leadIds.length > 0
23
+ ? await client.findAll(contact_1.default.class.Member, { _id: { $in: leadIds } })
24
+ : [];
25
+ const leadMap = new Map(leads.map((l) => [l._id, l.name ?? l._id]));
26
+ const lines = components.map((c) => {
27
+ const lead = c.lead != null ? ` — Lead: ${leadMap.get(c.lead) ?? c.lead}` : '';
28
+ const desc = c.description != null && c.description !== '' ? `\n ${c.description}` : '';
29
+ return `- **${c.label}** (id: \`${c._id}\`)${lead}${desc}`;
30
+ });
31
+ return `## Components in ${args.projectIdentifier} (${components.length})\n\n${lines.join('\n')}`;
32
+ });
33
+ exports.createComponent = (0, errors_1.wrapToolHandler)(async (args) => {
34
+ const client = await (0, connection_1.getConnection)();
35
+ const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.projectIdentifier });
36
+ if (project == null)
37
+ throw new Error(`Project '${args.projectIdentifier}' not found.`);
38
+ let leadRef = null;
39
+ if (args.lead != null) {
40
+ const employees = await client.findAll(contact_1.default.class.Member, {});
41
+ const match = employees.find((e) => {
42
+ const name = e.name ?? '';
43
+ return name.toLowerCase().includes(args.lead.toLowerCase());
44
+ });
45
+ if (match == null)
46
+ throw new Error(`Member '${args.lead}' not found.`);
47
+ leadRef = match._id;
48
+ }
49
+ await client.createDoc(tracker_1.default.class.Component, project._id, {
50
+ label: args.label,
51
+ description: args.description,
52
+ lead: leadRef,
53
+ comments: 0
54
+ }, (0, core_1.generateId)());
55
+ return `Component **${args.label}** created in project ${args.projectIdentifier}.`;
56
+ });
57
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/tools/components.ts"],"names":[],"mappings":"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"}