huly-mcp-selfhost 2.1.0 → 3.2.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 (200) hide show
  1. package/.env.example +39 -2
  2. package/README.md +462 -16
  3. package/dist/connection.d.ts +8 -0
  4. package/dist/connection.js +13 -1
  5. package/dist/connection.js.map +1 -1
  6. package/dist/env.d.ts +1 -0
  7. package/dist/env.js +17 -0
  8. package/dist/env.js.map +1 -0
  9. package/dist/guard.d.ts +28 -0
  10. package/dist/guard.js +152 -0
  11. package/dist/guard.js.map +1 -0
  12. package/dist/guides/costs.md +48 -0
  13. package/dist/guides/features.md +49 -0
  14. package/dist/guides/onboarding.md +56 -0
  15. package/dist/guides/workflow.md +57 -0
  16. package/dist/index.js +18 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/junit-cli.d.ts +8 -0
  19. package/dist/junit-cli.js +106 -0
  20. package/dist/junit-cli.js.map +1 -0
  21. package/dist/registry.d.ts +18 -0
  22. package/dist/registry.js +318 -0
  23. package/dist/registry.js.map +1 -0
  24. package/dist/resources.d.ts +12 -0
  25. package/dist/resources.js +212 -0
  26. package/dist/resources.js.map +1 -0
  27. package/dist/schemas.d.ts +1269 -17
  28. package/dist/schemas.js +890 -97
  29. package/dist/schemas.js.map +1 -1
  30. package/dist/server.d.ts +27 -1
  31. package/dist/server.js +197 -128
  32. package/dist/server.js.map +1 -1
  33. package/dist/tools/activity.d.ts +10 -0
  34. package/dist/tools/activity.js +62 -0
  35. package/dist/tools/activity.js.map +1 -0
  36. package/dist/tools/agent.d.ts +156 -0
  37. package/dist/tools/agent.js +523 -0
  38. package/dist/tools/agent.js.map +1 -0
  39. package/dist/tools/attachments.d.ts +4 -4
  40. package/dist/tools/calendar.d.ts +49 -0
  41. package/dist/tools/calendar.js +116 -0
  42. package/dist/tools/calendar.js.map +1 -0
  43. package/dist/tools/cards.d.ts +87 -0
  44. package/dist/tools/cards.js +246 -0
  45. package/dist/tools/cards.js.map +1 -0
  46. package/dist/tools/channels.d.ts +76 -7
  47. package/dist/tools/channels.js +86 -5
  48. package/dist/tools/channels.js.map +1 -1
  49. package/dist/tools/comments.d.ts +16 -4
  50. package/dist/tools/comments.js +26 -9
  51. package/dist/tools/comments.js.map +1 -1
  52. package/dist/tools/components.d.ts +5 -5
  53. package/dist/tools/components.js +4 -22
  54. package/dist/tools/components.js.map +1 -1
  55. package/dist/tools/contacts.d.ts +69 -0
  56. package/dist/tools/contacts.js +130 -0
  57. package/dist/tools/contacts.js.map +1 -0
  58. package/dist/tools/crm.d.ts +61 -0
  59. package/dist/tools/crm.js +117 -0
  60. package/dist/tools/crm.js.map +1 -0
  61. package/dist/tools/documents.d.ts +35 -12
  62. package/dist/tools/documents.js +107 -22
  63. package/dist/tools/documents.js.map +1 -1
  64. package/dist/tools/drive.d.ts +107 -0
  65. package/dist/tools/drive.js +277 -0
  66. package/dist/tools/drive.js.map +1 -0
  67. package/dist/tools/fields.d.ts +33 -0
  68. package/dist/tools/fields.js +124 -0
  69. package/dist/tools/fields.js.map +1 -0
  70. package/dist/tools/generic.d.ts +72 -0
  71. package/dist/tools/generic.js +242 -0
  72. package/dist/tools/generic.js.map +1 -0
  73. package/dist/tools/github.d.ts +21 -0
  74. package/dist/tools/github.js +80 -0
  75. package/dist/tools/github.js.map +1 -0
  76. package/dist/tools/hr.d.ts +97 -0
  77. package/dist/tools/hr.js +150 -0
  78. package/dist/tools/hr.js.map +1 -0
  79. package/dist/tools/inbox.d.ts +23 -0
  80. package/dist/tools/inbox.js +76 -0
  81. package/dist/tools/inbox.js.map +1 -0
  82. package/dist/tools/inventory.d.ts +61 -0
  83. package/dist/tools/inventory.js +103 -0
  84. package/dist/tools/inventory.js.map +1 -0
  85. package/dist/tools/issues.d.ts +63 -12
  86. package/dist/tools/issues.js +259 -48
  87. package/dist/tools/issues.js.map +1 -1
  88. package/dist/tools/labels.d.ts +52 -4
  89. package/dist/tools/labels.js +86 -4
  90. package/dist/tools/labels.js.map +1 -1
  91. package/dist/tools/log-time.d.ts +15 -1
  92. package/dist/tools/log-time.js +70 -6
  93. package/dist/tools/log-time.js.map +1 -1
  94. package/dist/tools/meetings.d.ts +30 -0
  95. package/dist/tools/meetings.js +78 -0
  96. package/dist/tools/meetings.js.map +1 -0
  97. package/dist/tools/members.d.ts +1 -1
  98. package/dist/tools/members.js +17 -1
  99. package/dist/tools/members.js.map +1 -1
  100. package/dist/tools/message-templates.d.ts +54 -0
  101. package/dist/tools/message-templates.js +88 -0
  102. package/dist/tools/message-templates.js.map +1 -0
  103. package/dist/tools/milestones.d.ts +9 -9
  104. package/dist/tools/organizations.d.ts +5 -5
  105. package/dist/tools/organizations.js +2 -1
  106. package/dist/tools/organizations.js.map +1 -1
  107. package/dist/tools/overview.d.ts +55 -0
  108. package/dist/tools/overview.js +395 -0
  109. package/dist/tools/overview.js.map +1 -0
  110. package/dist/tools/planner.d.ts +60 -0
  111. package/dist/tools/planner.js +145 -0
  112. package/dist/tools/planner.js.map +1 -0
  113. package/dist/tools/process.d.ts +50 -0
  114. package/dist/tools/process.js +137 -0
  115. package/dist/tools/process.js.map +1 -0
  116. package/dist/tools/products.d.ts +17 -0
  117. package/dist/tools/products.js +45 -0
  118. package/dist/tools/products.js.map +1 -0
  119. package/dist/tools/projects.d.ts +17 -4
  120. package/dist/tools/projects.js +31 -2
  121. package/dist/tools/projects.js.map +1 -1
  122. package/dist/tools/qms.d.ts +57 -0
  123. package/dist/tools/qms.js +171 -0
  124. package/dist/tools/qms.js.map +1 -0
  125. package/dist/tools/recruiting.d.ts +112 -0
  126. package/dist/tools/recruiting.js +203 -0
  127. package/dist/tools/recruiting.js.map +1 -0
  128. package/dist/tools/relations.d.ts +45 -3
  129. package/dist/tools/relations.js +128 -39
  130. package/dist/tools/relations.js.map +1 -1
  131. package/dist/tools/search.d.ts +14 -1
  132. package/dist/tools/search.js +29 -1
  133. package/dist/tools/search.js.map +1 -1
  134. package/dist/tools/sharing.d.ts +62 -0
  135. package/dist/tools/sharing.js +149 -0
  136. package/dist/tools/sharing.js.map +1 -0
  137. package/dist/tools/statuses.d.ts +3 -3
  138. package/dist/tools/surveys.d.ts +22 -0
  139. package/dist/tools/surveys.js +53 -0
  140. package/dist/tools/surveys.js.map +1 -0
  141. package/dist/tools/templates.d.ts +95 -0
  142. package/dist/tools/templates.js +260 -0
  143. package/dist/tools/templates.js.map +1 -0
  144. package/dist/tools/test-automation.d.ts +81 -0
  145. package/dist/tools/test-automation.js +225 -0
  146. package/dist/tools/test-automation.js.map +1 -0
  147. package/dist/tools/testing.d.ts +234 -0
  148. package/dist/tools/testing.js +401 -0
  149. package/dist/tools/testing.js.map +1 -0
  150. package/dist/tools/workspace-admin.d.ts +55 -0
  151. package/dist/tools/workspace-admin.js +117 -0
  152. package/dist/tools/workspace-admin.js.map +1 -0
  153. package/dist/tools/workspaces.d.ts +1 -1
  154. package/dist/utils/attributes.d.ts +37 -0
  155. package/dist/utils/attributes.js +188 -0
  156. package/dist/utils/attributes.js.map +1 -0
  157. package/dist/utils/classes.d.ts +51 -0
  158. package/dist/utils/classes.js +73 -0
  159. package/dist/utils/classes.js.map +1 -0
  160. package/dist/utils/content.d.ts +11 -0
  161. package/dist/utils/content.js +86 -0
  162. package/dist/utils/content.js.map +1 -0
  163. package/dist/utils/errors.js +1 -1
  164. package/dist/utils/errors.js.map +1 -1
  165. package/dist/utils/files.d.ts +5 -0
  166. package/dist/utils/files.js +50 -0
  167. package/dist/utils/files.js.map +1 -0
  168. package/dist/utils/format.d.ts +2 -0
  169. package/dist/utils/format.js +7 -13
  170. package/dist/utils/format.js.map +1 -1
  171. package/dist/utils/junit.d.ts +13 -0
  172. package/dist/utils/junit.js +81 -0
  173. package/dist/utils/junit.js.map +1 -0
  174. package/dist/utils/markdown.js +9 -4
  175. package/dist/utils/markdown.js.map +1 -1
  176. package/dist/utils/meeting.d.ts +13 -0
  177. package/dist/utils/meeting.js +118 -0
  178. package/dist/utils/meeting.js.map +1 -0
  179. package/dist/utils/people.d.ts +25 -0
  180. package/dist/utils/people.js +80 -0
  181. package/dist/utils/people.js.map +1 -0
  182. package/dist/utils/redact.d.ts +3 -0
  183. package/dist/utils/redact.js +26 -0
  184. package/dist/utils/redact.js.map +1 -0
  185. package/dist/utils/resolve.d.ts +17 -0
  186. package/dist/utils/resolve.js +54 -0
  187. package/dist/utils/resolve.js.map +1 -0
  188. package/dist/utils/spec.d.ts +10 -0
  189. package/dist/utils/spec.js +90 -0
  190. package/dist/utils/spec.js.map +1 -0
  191. package/dist/utils/storage.js +7 -3
  192. package/dist/utils/storage.js.map +1 -1
  193. package/dist/utils/tasks.d.ts +22 -0
  194. package/dist/utils/tasks.js +81 -0
  195. package/dist/utils/tasks.js.map +1 -0
  196. package/dist/watch.d.ts +62 -0
  197. package/dist/watch.js +405 -0
  198. package/dist/watch.js.map +1 -0
  199. package/package.json +4 -3
  200. package/scripts/setup.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ export declare const listDrives: (args: {
2
+ workspace?: string | undefined;
3
+ }) => Promise<{
4
+ content: Array<{
5
+ type: 'text';
6
+ text: string;
7
+ }>;
8
+ }>;
9
+ export declare const listDriveFiles: (args: {
10
+ workspace?: string | undefined;
11
+ drive: string;
12
+ folderId?: string | undefined;
13
+ recursive: boolean;
14
+ }) => Promise<{
15
+ content: Array<{
16
+ type: 'text';
17
+ text: string;
18
+ }>;
19
+ }>;
20
+ export declare const createFolder: (args: {
21
+ workspace: string;
22
+ drive: string;
23
+ title: string;
24
+ parentId?: string | undefined;
25
+ }) => Promise<{
26
+ content: Array<{
27
+ type: 'text';
28
+ text: string;
29
+ }>;
30
+ }>;
31
+ export declare const uploadFile: (args: {
32
+ workspace: string;
33
+ drive: string;
34
+ folderId?: string | undefined;
35
+ filename?: string | undefined;
36
+ contentBase64?: string | undefined;
37
+ localPath?: string | undefined;
38
+ mimeType?: string | undefined;
39
+ newVersion: boolean;
40
+ }) => Promise<{
41
+ content: Array<{
42
+ type: 'text';
43
+ text: string;
44
+ }>;
45
+ }>;
46
+ export declare const downloadFile: (args: {
47
+ workspace?: string | undefined;
48
+ fileId: string;
49
+ version?: number | undefined;
50
+ savePath?: string | undefined;
51
+ }) => Promise<{
52
+ content: Array<{
53
+ type: 'text';
54
+ text: string;
55
+ }>;
56
+ }>;
57
+ export declare const updateDriveItem: (args: {
58
+ workspace: string;
59
+ itemId: string;
60
+ title?: string | undefined;
61
+ parentId?: string | null | undefined;
62
+ }) => Promise<{
63
+ content: Array<{
64
+ type: 'text';
65
+ text: string;
66
+ }>;
67
+ }>;
68
+ export declare const deleteDriveItem: (args: {
69
+ workspace: string;
70
+ itemId: string;
71
+ recursive: boolean;
72
+ }) => Promise<{
73
+ content: Array<{
74
+ type: 'text';
75
+ text: string;
76
+ }>;
77
+ }>;
78
+ export declare const listFileVersions: (args: {
79
+ workspace?: string | undefined;
80
+ fileId: string;
81
+ }) => Promise<{
82
+ content: Array<{
83
+ type: 'text';
84
+ text: string;
85
+ }>;
86
+ }>;
87
+ export declare const restoreFileVersion: (args: {
88
+ workspace: string;
89
+ fileId: string;
90
+ version: number;
91
+ }) => Promise<{
92
+ content: Array<{
93
+ type: 'text';
94
+ text: string;
95
+ }>;
96
+ }>;
97
+ export declare const createDrive: (args: {
98
+ workspace: string;
99
+ name: string;
100
+ description?: string | undefined;
101
+ isPrivate: boolean;
102
+ }) => Promise<{
103
+ content: Array<{
104
+ type: 'text';
105
+ text: string;
106
+ }>;
107
+ }>;
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDrive = exports.restoreFileVersion = exports.listFileVersions = exports.deleteDriveItem = exports.updateDriveItem = exports.downloadFile = exports.uploadFile = exports.createFolder = exports.listDriveFiles = exports.listDrives = void 0;
4
+ // Drive: drives (spaces) with folders and versioned files. Mirrors Huly's drive utils:
5
+ // File.file points at the current FileVersion; the blob, size and type live on the version.
6
+ // path = ancestor folder ids, nearest first; top level = drive:ids:Root.
7
+ const core_1 = require("@hcengineering/core");
8
+ const node_fs_1 = require("node:fs");
9
+ const connection_1 = require("../connection");
10
+ const errors_1 = require("../utils/errors");
11
+ const classes_1 = require("../utils/classes");
12
+ const storage_1 = require("../utils/storage");
13
+ const content_1 = require("../utils/content");
14
+ const files_1 = require("../utils/files");
15
+ const format_1 = require("../utils/format");
16
+ const people_1 = require("../utils/people");
17
+ const MAX_INLINE = 200_000;
18
+ const size = (n) => {
19
+ if (n == null)
20
+ return '?';
21
+ if (n < 1024)
22
+ return `${n} B`;
23
+ if (n < 1024 * 1024)
24
+ return `${(n / 1024).toFixed(1)} KB`;
25
+ return `${(n / 1024 / 1024).toFixed(1)} MB`;
26
+ };
27
+ async function findDrive(client, ref) {
28
+ const drives = await client.findAll(classes_1.C.Drive, {});
29
+ const k = ref.trim().toLowerCase();
30
+ const hits = drives.filter((d) => d._id === ref || String(d.name).toLowerCase() === k);
31
+ if (hits.length === 1)
32
+ return hits[0];
33
+ if (hits.length > 1)
34
+ throw new Error(`Drive '${ref}' is ambiguous: ${hits.map((d) => d._id).join(', ')}.`);
35
+ throw new Error(`Drive '${ref}' not found. Available: ${drives.map((d) => d.name).join(', ') || 'none'}.`);
36
+ }
37
+ async function findItem(client, id) {
38
+ const item = await client.findOne(classes_1.C.DriveResource, { _id: id });
39
+ if (item == null)
40
+ throw new Error(`Drive item '${id}' not found.`);
41
+ return item;
42
+ }
43
+ async function findFolder(client, drive, folderId) {
44
+ if (folderId == null)
45
+ return undefined;
46
+ const folder = await client.findOne(classes_1.C.Folder, { _id: folderId });
47
+ if (folder == null)
48
+ throw new Error(`Folder '${folderId}' not found.`);
49
+ if (drive != null && folder.space !== drive._id)
50
+ throw new Error(`Folder '${String(folder.title)}' is in another drive.`);
51
+ return folder;
52
+ }
53
+ const isFolder = (item) => item._class === classes_1.C.Folder;
54
+ exports.listDrives = (0, errors_1.wrapToolHandler)(async (args) => {
55
+ const client = await (0, connection_1.getConnection)(args.workspace);
56
+ const drives = await client.findAll(classes_1.C.Drive, { archived: false });
57
+ if (drives.length === 0)
58
+ return 'No drives.';
59
+ const lines = [];
60
+ for (const d of drives) {
61
+ const items = await client.findAll(classes_1.C.DriveResource, { space: d._id });
62
+ const files = items.filter((i) => !isFolder(i)).length;
63
+ lines.push(`- **${String(d.name)}** — ${files} file(s), ${items.length - files} folder(s)${d.private === true ? ' · private' : ''} — \`${String(d._id)}\``);
64
+ }
65
+ return `## Drives (${drives.length})\n\n${lines.join('\n')}`;
66
+ });
67
+ exports.listDriveFiles = (0, errors_1.wrapToolHandler)(async (args) => {
68
+ const client = await (0, connection_1.getConnection)(args.workspace);
69
+ const drive = await findDrive(client, args.drive);
70
+ const folder = await findFolder(client, drive, args.folderId);
71
+ const items = await client.findAll(classes_1.C.DriveResource, { space: drive._id }, { sort: { title: core_1.SortingOrder.Ascending } });
72
+ const versions = await client.findAll(classes_1.C.FileVersion, { space: drive._id });
73
+ const current = new Map(versions.map((v) => [v._id, v]));
74
+ const root = folder?._id ?? classes_1.IDS.DriveRoot;
75
+ const byParent = new Map();
76
+ for (const i of items)
77
+ byParent.set(i.parent, [...(byParent.get(i.parent) ?? []), i]);
78
+ const lines = [];
79
+ const walk = (parent, depth) => {
80
+ const kids = (byParent.get(parent) ?? []).sort((a, b) => Number(isFolder(b)) - Number(isFolder(a)) || String(a.title).localeCompare(String(b.title)));
81
+ for (const i of kids) {
82
+ if (isFolder(i)) {
83
+ lines.push(`${' '.repeat(depth)}- 📁 **${String(i.title)}** — \`${String(i._id)}\``);
84
+ if (args.recursive && depth < 20)
85
+ walk(i._id, depth + 1);
86
+ }
87
+ else {
88
+ const v = current.get(i.file);
89
+ lines.push(`${' '.repeat(depth)}- ${String(i.title)} (${size(v?.size)}, ${String(v?.type ?? '?')}, v${String(i.version ?? 1)}, ${(0, format_1.formatDate)(i.modifiedOn)}) — \`${String(i._id)}\``);
90
+ }
91
+ }
92
+ };
93
+ walk(root, 0);
94
+ if (lines.length === 0)
95
+ return `${folder != null ? `Folder "${String(folder.title)}"` : `Drive "${String(drive.name)}"`} is empty.`;
96
+ return `## ${String(drive.name)}${folder != null ? ` / ${String(folder.title)}` : ''}\n\n${lines.join('\n')}`;
97
+ });
98
+ exports.createFolder = (0, errors_1.wrapToolHandler)(async (args) => {
99
+ const client = await (0, connection_1.getConnection)(args.workspace);
100
+ const drive = await findDrive(client, args.drive);
101
+ const parent = await findFolder(client, drive, args.parentId);
102
+ const parentId = parent?._id ?? classes_1.IDS.DriveRoot;
103
+ const existing = await client.findOne(classes_1.C.Folder, { space: drive._id, parent: parentId, title: args.title });
104
+ if (existing != null)
105
+ return `ℹ️ Folder **${args.title}** already exists — \`${String(existing._id)}\`.`;
106
+ const id = await client.createDoc(classes_1.C.Folder, drive._id, { title: args.title, parent: parentId, path: parent != null ? [parent._id, ...(parent.path ?? [])] : [] });
107
+ return `✅ Folder **${args.title}** created — \`${String(id)}\`.`;
108
+ });
109
+ exports.uploadFile = (0, errors_1.wrapToolHandler)(async (args) => {
110
+ if ((args.contentBase64 == null) === (args.localPath == null))
111
+ throw new Error('Pass either contentBase64 or localPath.');
112
+ const client = await (0, connection_1.getConnection)(args.workspace);
113
+ const drive = await findDrive(client, args.drive);
114
+ const parent = await findFolder(client, drive, args.folderId);
115
+ const parentId = parent?._id ?? classes_1.IDS.DriveRoot;
116
+ const bytes = args.localPath != null ? (0, node_fs_1.readFileSync)((0, files_1.localPath)(args.localPath)) : Buffer.from(args.contentBase64, 'base64');
117
+ const name = args.filename ?? (args.localPath != null ? args.localPath.split(/[\\/]/).pop() : undefined);
118
+ if (name == null || name === '')
119
+ throw new Error('filename is required with contentBase64.');
120
+ const type = args.mimeType ?? (0, files_1.mimeFromName)(name);
121
+ const { wsToken, workspaceUuid } = await (0, connection_1.getWorkspaceInfo)(args.workspace);
122
+ const uploaded = await (0, storage_1.uploadBlob)(wsToken, workspaceUuid, `${(0, core_1.generateId)()}-${name}`, new Blob([bytes], { type }));
123
+ const data = { title: name, file: uploaded.id, size: uploaded.size, type, lastModified: Date.now() };
124
+ const existing = await client.findOne(classes_1.C.File, { space: drive._id, parent: parentId, title: name });
125
+ if (existing != null && args.newVersion) {
126
+ // Like Huly's createFileVersion: bump the version counter, add the version, point the file at it.
127
+ const inc = await client.updateDoc(classes_1.C.File, existing.space, existing._id, { $inc: { version: 1 } }, true);
128
+ const version = inc?.object?.version ?? (existing.version ?? 1) + 1;
129
+ const versionId = await client.addCollection(classes_1.C.FileVersion, existing.space, existing._id, classes_1.C.File, 'versions', { ...data, version });
130
+ await client.updateDoc(classes_1.C.File, existing.space, existing._id, { file: versionId });
131
+ return `✅ **${name}** updated to version ${String(version)} (${size(uploaded.size)}) — \`${String(existing._id)}\`.`;
132
+ }
133
+ const fileId = (0, core_1.generateId)();
134
+ const versionId = (0, core_1.generateId)();
135
+ await client.createDoc(classes_1.C.File, drive._id, { title: name, parent: parentId, path: parent != null ? [parent._id, ...(parent.path ?? [])] : [], file: versionId, version: 1, versions: 0 }, fileId);
136
+ await client.addCollection(classes_1.C.FileVersion, drive._id, fileId, classes_1.C.File, 'versions', { ...data, version: 1 }, versionId);
137
+ return `✅ **${name}** uploaded (${size(uploaded.size)}) — \`${fileId}\`.${existing != null ? ' (A file with this name already existed; newVersion=false kept both.)' : ''}`;
138
+ });
139
+ async function versionOf(client, file, version) {
140
+ if (version == null) {
141
+ const v = await client.findOne(classes_1.C.FileVersion, { _id: file.file });
142
+ if (v == null)
143
+ throw new Error('Current version of this file not found.');
144
+ return v;
145
+ }
146
+ const v = await client.findOne(classes_1.C.FileVersion, { attachedTo: file._id, version });
147
+ if (v == null)
148
+ throw new Error(`Version ${version} of "${String(file.title)}" not found.`);
149
+ return v;
150
+ }
151
+ exports.downloadFile = (0, errors_1.wrapToolHandler)(async (args) => {
152
+ const client = await (0, connection_1.getConnection)(args.workspace);
153
+ const file = await findItem(client, args.fileId);
154
+ if (isFolder(file))
155
+ throw new Error(`"${String(file.title)}" is a folder.`);
156
+ const v = await versionOf(client, file, args.version);
157
+ if (args.savePath != null) {
158
+ const target = (0, files_1.localPath)(args.savePath);
159
+ const bytes = await (0, content_1.downloadBlob)(args.workspace, v.file);
160
+ (0, node_fs_1.writeFileSync)(target, bytes);
161
+ return `✅ Saved **${String(file.title)}** v${String(v.version)} (${size(bytes.length)}) to \`${target}\`.`;
162
+ }
163
+ if ((v.size ?? 0) > MAX_INLINE)
164
+ throw new Error(`"${String(file.title)}" is ${size(v.size)} — too large to return inline. Use savePath (needs HULY_FILE_ROOT).`);
165
+ const bytes = await (0, content_1.downloadBlob)(args.workspace, v.file);
166
+ const head = `## ${String(file.title)} (v${String(v.version)}, ${size(bytes.length)}, ${String(v.type)})\n\n`;
167
+ if ((0, files_1.isTextType)(v.type))
168
+ return head + '```\n' + bytes.toString('utf8') + '\n```';
169
+ return head + `Binary content, base64:\n\n${bytes.toString('base64')}`;
170
+ });
171
+ /**
172
+ * All folders and files below the given folders (any depth). Walks `parent` level by level:
173
+ * the server does not match a value inside the `path` array.
174
+ */
175
+ async function subtree(client, folderIds) {
176
+ const out = [];
177
+ let level = folderIds;
178
+ for (let depth = 0; depth < 50 && level.length > 0; depth++) {
179
+ const kids = await client.findAll(classes_1.C.DriveResource, { parent: { $in: level } });
180
+ out.push(...kids);
181
+ level = kids.filter(isFolder).map((k) => k._id);
182
+ }
183
+ return out;
184
+ }
185
+ exports.updateDriveItem = (0, errors_1.wrapToolHandler)(async (args) => {
186
+ const client = await (0, connection_1.getConnection)(args.workspace);
187
+ const item = await findItem(client, args.itemId);
188
+ if (args.title == null && args.parentId === undefined)
189
+ throw new Error('Nothing to change: pass title or parentId.');
190
+ const done = [];
191
+ if (args.title != null && args.title !== item.title) {
192
+ await client.updateDoc(item._class, item.space, item._id, { title: args.title });
193
+ done.push(`renamed to "${args.title}"`);
194
+ }
195
+ if (args.parentId !== undefined) {
196
+ const parent = args.parentId != null ? await findFolder(client, undefined, args.parentId) : undefined;
197
+ const space = parent?.space ?? item.space;
198
+ const below = isFolder(item) ? await subtree(client, [item._id]) : [];
199
+ if (parent != null && (parent._id === item._id || below.some((b) => b._id === parent._id)))
200
+ throw new Error('A folder cannot be moved into itself or one of its subfolders.');
201
+ const path = parent != null ? [parent._id, ...(parent.path ?? [])] : [];
202
+ await client.updateDoc(item._class, item.space, item._id, { space, parent: parent?._id ?? classes_1.IDS.DriveRoot, path });
203
+ // Like Huly's moveResources, but for every descendant: drop the old ancestors, append the new ones.
204
+ for (const b of below) {
205
+ const keep = b.path.slice(0, b.path.indexOf(item._id) + 1);
206
+ await client.updateDoc(b._class, b.space, b._id, { space, path: [...keep, ...path] });
207
+ }
208
+ if (space !== item.space) {
209
+ const files = [item, ...below].filter((x) => !isFolder(x));
210
+ for (const f of files) {
211
+ const versions = await client.findAll(classes_1.C.FileVersion, { attachedTo: f._id });
212
+ for (const v of versions)
213
+ await client.updateDoc(classes_1.C.FileVersion, v.space, v._id, { space });
214
+ }
215
+ }
216
+ done.push(parent != null ? `moved into "${String(parent.title)}"` : 'moved to the top level');
217
+ }
218
+ return `✅ **${String(item.title)}**: ${done.join(', ') || 'no change'}.`;
219
+ });
220
+ exports.deleteDriveItem = (0, errors_1.wrapToolHandler)(async (args) => {
221
+ const client = await (0, connection_1.getConnection)(args.workspace);
222
+ const item = await findItem(client, args.itemId);
223
+ const below = isFolder(item) ? await subtree(client, [item._id]) : [];
224
+ if (below.length > 0 && !args.recursive)
225
+ throw new Error(`Folder "${String(item.title)}" contains ${below.length} item(s). Pass recursive: true to delete it with its contents.`);
226
+ // Deepest first, so no item is left without its parent.
227
+ const all = [...below.sort((a, b) => (b.path?.length ?? 0) - (a.path?.length ?? 0)), item];
228
+ for (const x of all) {
229
+ if (!isFolder(x)) {
230
+ // Versions are an attached collection; remove them too (their blobs are cleaned up by the server).
231
+ const versions = await client.findAll(classes_1.C.FileVersion, { attachedTo: x._id });
232
+ for (const v of versions)
233
+ await client.removeCollection(classes_1.C.FileVersion, v.space, v._id, x._id, classes_1.C.File, 'versions');
234
+ }
235
+ await client.removeDoc(x._class, x.space, x._id);
236
+ }
237
+ return `✅ Deleted **${String(item.title)}**${below.length > 0 ? ` with ${below.length} item(s)` : ''}.`;
238
+ });
239
+ exports.listFileVersions = (0, errors_1.wrapToolHandler)(async (args) => {
240
+ const client = await (0, connection_1.getConnection)(args.workspace);
241
+ const file = await findItem(client, args.fileId);
242
+ const versions = await client.findAll(classes_1.C.FileVersion, { attachedTo: file._id }, { sort: { version: core_1.SortingOrder.Descending } });
243
+ if (versions.length === 0)
244
+ return `No versions of "${String(file.title)}".`;
245
+ const lines = versions.sort((a, b) => b.version - a.version).map((v) => `- v${String(v.version)}${v._id === file.file ? ' (current)' : ''} — ${size(v.size)}, ${(0, format_1.formatDate)(v.modifiedOn ?? v.lastModified)} — \`${String(v._id)}\``);
246
+ return `## Versions of ${String(file.title)} (${versions.length})\n\n${lines.join('\n')}`;
247
+ });
248
+ exports.restoreFileVersion = (0, errors_1.wrapToolHandler)(async (args) => {
249
+ const client = await (0, connection_1.getConnection)(args.workspace);
250
+ const file = await findItem(client, args.fileId);
251
+ const v = await versionOf(client, file, args.version);
252
+ if (v._id === file.file)
253
+ return `v${String(v.version)} is already the current version.`;
254
+ // Like Huly's restoreFileVersion: the file simply points at the older version again.
255
+ await client.updateDoc(classes_1.C.File, file.space, file._id, { file: v._id });
256
+ return `✅ **${String(file.title)}** restored to v${String(v.version)}.`;
257
+ });
258
+ exports.createDrive = (0, errors_1.wrapToolHandler)(async (args) => {
259
+ const client = await (0, connection_1.getConnection)(args.workspace);
260
+ const drives = await client.findAll(classes_1.C.Drive, {});
261
+ const same = drives.find((d) => String(d.name).toLowerCase() === args.name.toLowerCase());
262
+ if (same != null)
263
+ return `ℹ️ Drive **${String(same.name)}** already exists — \`${String(same._id)}\`.`;
264
+ const me = await (0, people_1.currentAccountUuid)(client);
265
+ const id = await client.createDoc(classes_1.C.Drive, 'core:space:Space', {
266
+ name: args.name,
267
+ description: args.description ?? '',
268
+ private: args.isPrivate,
269
+ archived: false,
270
+ autoJoin: false,
271
+ members: [me],
272
+ owners: [me],
273
+ type: 'drive:spaceType:DefaultDrive'
274
+ });
275
+ return `✅ Drive **${args.name}** created — \`${String(id)}\`.`;
276
+ });
277
+ //# sourceMappingURL=drive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/tools/drive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export declare const listCustomFields: (args: {
2
+ workspace?: string | undefined;
3
+ target?: string | undefined;
4
+ object?: string | undefined;
5
+ }) => Promise<{
6
+ content: Array<{
7
+ type: 'text';
8
+ text: string;
9
+ }>;
10
+ }>;
11
+ export declare const createCustomField: (args: {
12
+ workspace: string;
13
+ target: string;
14
+ label: string;
15
+ type: "boolean" | "date" | "enum" | "markup" | "number" | "ref" | "string";
16
+ enumValues?: string[] | undefined;
17
+ refClass?: string | undefined;
18
+ }) => Promise<{
19
+ content: Array<{
20
+ type: 'text';
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ export declare const setCustomFields: (args: {
25
+ workspace: string;
26
+ object: string;
27
+ fields: Record<string, string | number | boolean | null>;
28
+ }) => Promise<{
29
+ content: Array<{
30
+ type: 'text';
31
+ text: string;
32
+ }>;
33
+ }>;
@@ -0,0 +1,124 @@
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.setCustomFields = exports.createCustomField = exports.listCustomFields = void 0;
7
+ // Custom fields: define them on issues, card types/tags or any class, and set their values.
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 classes_1 = require("../utils/classes");
13
+ const resolve_1 = require("../utils/resolve");
14
+ const attributes_1 = require("../utils/attributes");
15
+ /**
16
+ * Where fields live:
17
+ * - "issue" → all issues (tracker:class:Issue)
18
+ * - a project key ("PROJ") → issues of that project's task type (the type mixin, like Huly's project-type settings)
19
+ * - a card type or tag (name or id), or any class/mixin id
20
+ */
21
+ async function resolveOwner(client, target) {
22
+ const h = client.getHierarchy();
23
+ const t = target.trim();
24
+ if (t.toLowerCase() === 'issue')
25
+ return { id: tracker_1.default.class.Issue, label: 'all issues' };
26
+ if (/^[A-Z][A-Z0-9]*$/.test(t)) {
27
+ const project = await client.findOne(tracker_1.default.class.Project, { identifier: t });
28
+ if (project != null) {
29
+ const projectType = await client.findOne('task:class:ProjectType', { _id: project.type });
30
+ const taskTypes = await client.findAll('task:class:TaskType', { _id: { $in: projectType?.tasks ?? [] } });
31
+ const issueType = taskTypes.find((tt) => tt.ofClass === tracker_1.default.class.Issue && tt._id !== 'tracker:taskTypes:Issue') ?? taskTypes.find((tt) => tt.ofClass === tracker_1.default.class.Issue);
32
+ if (issueType?.targetClass == null)
33
+ throw new Error(`Project ${t} has no issue task type.`);
34
+ return { id: issueType.targetClass, label: `issues of project type "${String(projectType?.name ?? project.type)}" (${t})` };
35
+ }
36
+ }
37
+ try {
38
+ const c = h.getClass(t);
39
+ return { id: c._id, label: (0, attributes_1.labelText)(c.label) };
40
+ }
41
+ catch { /* not a class id */ }
42
+ const cards = h.getDescendants(classes_1.C.Card).map((id) => h.getClass(id)).filter((c) => (0, attributes_1.labelText)(c.label).toLowerCase() === t.toLowerCase());
43
+ if (cards.length === 1)
44
+ return { id: cards[0]._id, label: `card ${cards[0].kind === 2 ? 'tag' : 'type'} ${(0, attributes_1.labelText)(cards[0].label)}` };
45
+ if (cards.length > 1)
46
+ throw new Error(`'${target}' matches several card types: ${cards.map((c) => c._id).join(', ')}.`);
47
+ throw new Error(`Unknown target '${target}'. Use "issue", a project key, a card type/tag name or a class id.`);
48
+ }
49
+ /** Issue (PROJ-12), card id or any document id. */
50
+ async function resolveDoc(client, ref) {
51
+ const card = /^[A-Z][A-Z0-9]*-\d+$/.test(ref) ? undefined : await client.findOne(classes_1.C.Card, { _id: ref });
52
+ if (card != null)
53
+ return card;
54
+ const obj = await (0, resolve_1.resolveObject)(client, ref);
55
+ if (obj.doc == null)
56
+ throw new Error(`'${ref}' not found.`);
57
+ return obj.doc;
58
+ }
59
+ const typeName = (a) => {
60
+ const c = String(a.type?._class ?? '');
61
+ if (c === 'core:class:EnumOf')
62
+ return 'enum';
63
+ if (c === 'core:class:RefTo')
64
+ return `ref → ${String(a.type?.to)}`;
65
+ return c.replace(/^core:class:Type/, '').toLowerCase() || c;
66
+ };
67
+ exports.listCustomFields = (0, errors_1.wrapToolHandler)(async (args) => {
68
+ const client = await (0, connection_1.getConnection)(args.workspace);
69
+ if (args.object != null) {
70
+ const doc = await resolveDoc(client, args.object);
71
+ const fields = await (0, attributes_1.fieldsOf)(client, doc);
72
+ if (fields.length === 0)
73
+ return `No custom fields on this ${(0, attributes_1.labelText)(client.getHierarchy().getClass(doc._class).label)}.`;
74
+ return `## Custom fields\n\n${fields.map((f) => `- **${f.label}** (${typeName(f.attr)}): ${(0, attributes_1.showValue)(f, (0, attributes_1.valueOf)(doc, f))}`).join('\n')}`;
75
+ }
76
+ const owner = await resolveOwner(client, args.target ?? 'issue');
77
+ const attrs = await (0, attributes_1.fieldsDefinedOn)(client, owner.id);
78
+ if (attrs.length === 0)
79
+ return `No custom fields on ${owner.label}.`;
80
+ const enums = new Map();
81
+ for (const a of attrs) {
82
+ if (a.type?._class === 'core:class:EnumOf')
83
+ enums.set(a._id, (await client.findOne(classes_1.C.Enum, { _id: a.type.of }))?.enumValues ?? []);
84
+ }
85
+ return `## Custom fields on ${owner.label} (${attrs.length})\n\n${attrs.map((a) => `- **${(0, attributes_1.labelText)(a.label)}** (${typeName(a)}${enums.has(a._id) ? `: ${enums.get(a._id).join(', ')}` : ''}) — \`${String(a.name)}\``).join('\n')}`;
86
+ });
87
+ exports.createCustomField = (0, errors_1.wrapToolHandler)(async (args) => {
88
+ const client = await (0, connection_1.getConnection)(args.workspace);
89
+ const owner = await resolveOwner(client, args.target);
90
+ const existing = await (0, attributes_1.fieldsDefinedOn)(client, owner.id);
91
+ const same = existing.find((a) => (0, attributes_1.labelText)(a.label).toLowerCase() === args.label.toLowerCase());
92
+ if (same != null)
93
+ return `ℹ️ Field **${args.label}** already exists on ${owner.label} — \`${String(same.name)}\`.`;
94
+ const type = await (0, attributes_1.makeType)(client, args.type, { enumValues: args.enumValues, enumName: args.label, refClass: args.refClass });
95
+ const name = 'custom' + (0, core_1.generateId)();
96
+ // Like Huly's settings dialog (CreateAttribute.svelte).
97
+ await client.createDoc(classes_1.C.Attribute, 'core:space:Model', {
98
+ attributeOf: owner.id,
99
+ name,
100
+ label: (0, attributes_1.embeddedLabel)(args.label),
101
+ isCustom: true,
102
+ type,
103
+ defaultValue: null,
104
+ readonly: false,
105
+ automationOnly: false,
106
+ required: false
107
+ });
108
+ return `✅ Field **${args.label}** (${args.type}) added to ${owner.label} — \`${name}\`.`;
109
+ });
110
+ exports.setCustomFields = (0, errors_1.wrapToolHandler)(async (args) => {
111
+ const client = await (0, connection_1.getConnection)(args.workspace);
112
+ if (Object.keys(args.fields).length === 0)
113
+ throw new Error('Nothing to set: fields is empty.');
114
+ const doc = await resolveDoc(client, args.object);
115
+ const fields = await (0, attributes_1.fieldsOf)(client, doc);
116
+ const values = [];
117
+ for (const [key, raw] of Object.entries(args.fields)) {
118
+ const field = (0, attributes_1.findField)(fields, key);
119
+ values.push({ field, value: await (0, attributes_1.coerceValue)(client, field, raw) });
120
+ }
121
+ await (0, attributes_1.writeFields)(client, doc, values);
122
+ return `✅ Set ${values.map((v) => `**${String(v.field.label)}** = ${(0, attributes_1.showValue)(v.field, v.value)}`).join(', ')}.`;
123
+ });
124
+ //# sourceMappingURL=fields.js.map