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.
- package/.env.example +39 -2
- package/README.md +462 -16
- package/dist/connection.d.ts +8 -0
- package/dist/connection.js +13 -1
- package/dist/connection.js.map +1 -1
- package/dist/env.d.ts +1 -0
- package/dist/env.js +17 -0
- package/dist/env.js.map +1 -0
- package/dist/guard.d.ts +28 -0
- package/dist/guard.js +152 -0
- package/dist/guard.js.map +1 -0
- package/dist/guides/costs.md +48 -0
- package/dist/guides/features.md +49 -0
- package/dist/guides/onboarding.md +56 -0
- package/dist/guides/workflow.md +57 -0
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/junit-cli.d.ts +8 -0
- package/dist/junit-cli.js +106 -0
- package/dist/junit-cli.js.map +1 -0
- package/dist/registry.d.ts +18 -0
- package/dist/registry.js +318 -0
- package/dist/registry.js.map +1 -0
- package/dist/resources.d.ts +12 -0
- package/dist/resources.js +212 -0
- package/dist/resources.js.map +1 -0
- package/dist/schemas.d.ts +1269 -17
- package/dist/schemas.js +890 -97
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts +27 -1
- package/dist/server.js +197 -128
- package/dist/server.js.map +1 -1
- package/dist/tools/activity.d.ts +10 -0
- package/dist/tools/activity.js +62 -0
- package/dist/tools/activity.js.map +1 -0
- package/dist/tools/agent.d.ts +156 -0
- package/dist/tools/agent.js +523 -0
- package/dist/tools/agent.js.map +1 -0
- package/dist/tools/attachments.d.ts +4 -4
- package/dist/tools/calendar.d.ts +49 -0
- package/dist/tools/calendar.js +116 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/cards.d.ts +87 -0
- package/dist/tools/cards.js +246 -0
- package/dist/tools/cards.js.map +1 -0
- package/dist/tools/channels.d.ts +76 -7
- package/dist/tools/channels.js +86 -5
- package/dist/tools/channels.js.map +1 -1
- package/dist/tools/comments.d.ts +16 -4
- package/dist/tools/comments.js +26 -9
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/components.d.ts +5 -5
- package/dist/tools/components.js +4 -22
- package/dist/tools/components.js.map +1 -1
- package/dist/tools/contacts.d.ts +69 -0
- package/dist/tools/contacts.js +130 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/crm.d.ts +61 -0
- package/dist/tools/crm.js +117 -0
- package/dist/tools/crm.js.map +1 -0
- package/dist/tools/documents.d.ts +35 -12
- package/dist/tools/documents.js +107 -22
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/drive.d.ts +107 -0
- package/dist/tools/drive.js +277 -0
- package/dist/tools/drive.js.map +1 -0
- package/dist/tools/fields.d.ts +33 -0
- package/dist/tools/fields.js +124 -0
- package/dist/tools/fields.js.map +1 -0
- package/dist/tools/generic.d.ts +72 -0
- package/dist/tools/generic.js +242 -0
- package/dist/tools/generic.js.map +1 -0
- package/dist/tools/github.d.ts +21 -0
- package/dist/tools/github.js +80 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/hr.d.ts +97 -0
- package/dist/tools/hr.js +150 -0
- package/dist/tools/hr.js.map +1 -0
- package/dist/tools/inbox.d.ts +23 -0
- package/dist/tools/inbox.js +76 -0
- package/dist/tools/inbox.js.map +1 -0
- package/dist/tools/inventory.d.ts +61 -0
- package/dist/tools/inventory.js +103 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/issues.d.ts +63 -12
- package/dist/tools/issues.js +259 -48
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/labels.d.ts +52 -4
- package/dist/tools/labels.js +86 -4
- package/dist/tools/labels.js.map +1 -1
- package/dist/tools/log-time.d.ts +15 -1
- package/dist/tools/log-time.js +70 -6
- package/dist/tools/log-time.js.map +1 -1
- package/dist/tools/meetings.d.ts +30 -0
- package/dist/tools/meetings.js +78 -0
- package/dist/tools/meetings.js.map +1 -0
- package/dist/tools/members.d.ts +1 -1
- package/dist/tools/members.js +17 -1
- package/dist/tools/members.js.map +1 -1
- package/dist/tools/message-templates.d.ts +54 -0
- package/dist/tools/message-templates.js +88 -0
- package/dist/tools/message-templates.js.map +1 -0
- package/dist/tools/milestones.d.ts +9 -9
- package/dist/tools/organizations.d.ts +5 -5
- package/dist/tools/organizations.js +2 -1
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/overview.d.ts +55 -0
- package/dist/tools/overview.js +395 -0
- package/dist/tools/overview.js.map +1 -0
- package/dist/tools/planner.d.ts +60 -0
- package/dist/tools/planner.js +145 -0
- package/dist/tools/planner.js.map +1 -0
- package/dist/tools/process.d.ts +50 -0
- package/dist/tools/process.js +137 -0
- package/dist/tools/process.js.map +1 -0
- package/dist/tools/products.d.ts +17 -0
- package/dist/tools/products.js +45 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/projects.d.ts +17 -4
- package/dist/tools/projects.js +31 -2
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/qms.d.ts +57 -0
- package/dist/tools/qms.js +171 -0
- package/dist/tools/qms.js.map +1 -0
- package/dist/tools/recruiting.d.ts +112 -0
- package/dist/tools/recruiting.js +203 -0
- package/dist/tools/recruiting.js.map +1 -0
- package/dist/tools/relations.d.ts +45 -3
- package/dist/tools/relations.js +128 -39
- package/dist/tools/relations.js.map +1 -1
- package/dist/tools/search.d.ts +14 -1
- package/dist/tools/search.js +29 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/sharing.d.ts +62 -0
- package/dist/tools/sharing.js +149 -0
- package/dist/tools/sharing.js.map +1 -0
- package/dist/tools/statuses.d.ts +3 -3
- package/dist/tools/surveys.d.ts +22 -0
- package/dist/tools/surveys.js +53 -0
- package/dist/tools/surveys.js.map +1 -0
- package/dist/tools/templates.d.ts +95 -0
- package/dist/tools/templates.js +260 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/test-automation.d.ts +81 -0
- package/dist/tools/test-automation.js +225 -0
- package/dist/tools/test-automation.js.map +1 -0
- package/dist/tools/testing.d.ts +234 -0
- package/dist/tools/testing.js +401 -0
- package/dist/tools/testing.js.map +1 -0
- package/dist/tools/workspace-admin.d.ts +55 -0
- package/dist/tools/workspace-admin.js +117 -0
- package/dist/tools/workspace-admin.js.map +1 -0
- package/dist/tools/workspaces.d.ts +1 -1
- package/dist/utils/attributes.d.ts +37 -0
- package/dist/utils/attributes.js +188 -0
- package/dist/utils/attributes.js.map +1 -0
- package/dist/utils/classes.d.ts +51 -0
- package/dist/utils/classes.js +73 -0
- package/dist/utils/classes.js.map +1 -0
- package/dist/utils/content.d.ts +11 -0
- package/dist/utils/content.js +86 -0
- package/dist/utils/content.js.map +1 -0
- package/dist/utils/errors.js +1 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/files.d.ts +5 -0
- package/dist/utils/files.js +50 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/format.d.ts +2 -0
- package/dist/utils/format.js +7 -13
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/junit.d.ts +13 -0
- package/dist/utils/junit.js +81 -0
- package/dist/utils/junit.js.map +1 -0
- package/dist/utils/markdown.js +9 -4
- package/dist/utils/markdown.js.map +1 -1
- package/dist/utils/meeting.d.ts +13 -0
- package/dist/utils/meeting.js +118 -0
- package/dist/utils/meeting.js.map +1 -0
- package/dist/utils/people.d.ts +25 -0
- package/dist/utils/people.js +80 -0
- package/dist/utils/people.js.map +1 -0
- package/dist/utils/redact.d.ts +3 -0
- package/dist/utils/redact.js +26 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/resolve.d.ts +17 -0
- package/dist/utils/resolve.js +54 -0
- package/dist/utils/resolve.js.map +1 -0
- package/dist/utils/spec.d.ts +10 -0
- package/dist/utils/spec.js +90 -0
- package/dist/utils/spec.js.map +1 -0
- package/dist/utils/storage.js +7 -3
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/tasks.d.ts +22 -0
- package/dist/utils/tasks.js +81 -0
- package/dist/utils/tasks.js.map +1 -0
- package/dist/watch.d.ts +62 -0
- package/dist/watch.js +405 -0
- package/dist/watch.js.map +1 -0
- package/package.json +4 -3
- package/scripts/setup.js +3 -1
package/dist/tools/labels.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.removeLabel = exports.addLabel = exports.createLabel = exports.listLabels = void 0;
|
|
39
|
+
exports.setLabelCategory = exports.createLabelCategory = exports.listLabelCategories = exports.deleteLabel = exports.updateLabel = exports.removeLabel = exports.addLabel = exports.createLabel = exports.listLabels = void 0;
|
|
40
40
|
const tags_1 = __importDefault(require("@hcengineering/tags"));
|
|
41
41
|
const tracker_1 = __importDefault(require("@hcengineering/tracker"));
|
|
42
42
|
const core_1 = __importStar(require("@hcengineering/core"));
|
|
@@ -44,9 +44,6 @@ const connection_1 = require("../connection");
|
|
|
44
44
|
const errors_1 = require("../utils/errors");
|
|
45
45
|
exports.listLabels = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
46
46
|
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
47
|
-
const query = args.projectIdentifier != null
|
|
48
|
-
? { targetClass: tracker_1.default.class.Issue }
|
|
49
|
-
: { targetClass: tracker_1.default.class.Issue };
|
|
50
47
|
const allLabels = await client.findAll(tags_1.default.class.TagElement, { targetClass: tracker_1.default.class.Issue });
|
|
51
48
|
if (allLabels.length === 0)
|
|
52
49
|
return 'No labels found in this workspace.';
|
|
@@ -147,4 +144,89 @@ exports.removeLabel = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
147
144
|
await client.removeCollection(tags_1.default.class.TagReference, issue.space, ref._id, issue._id, tracker_1.default.class.Issue, 'labels');
|
|
148
145
|
return `✅ Removed label **${args.labelName}** from **${args.identifier}**`;
|
|
149
146
|
});
|
|
147
|
+
async function findLabel(client, title) {
|
|
148
|
+
const label = await client.findOne(tags_1.default.class.TagElement, { targetClass: tracker_1.default.class.Issue, title });
|
|
149
|
+
if (label == null)
|
|
150
|
+
throw new Error(`Label '${title}' not found.`);
|
|
151
|
+
return label;
|
|
152
|
+
}
|
|
153
|
+
exports.updateLabel = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
154
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
155
|
+
const label = await findLabel(client, args.labelName);
|
|
156
|
+
const updates = {};
|
|
157
|
+
if (args.newName !== undefined && args.newName !== label.title) {
|
|
158
|
+
const clash = await client.findOne(tags_1.default.class.TagElement, { targetClass: tracker_1.default.class.Issue, title: args.newName });
|
|
159
|
+
if (clash != null)
|
|
160
|
+
throw new Error(`A label named '${args.newName}' already exists.`);
|
|
161
|
+
updates.title = args.newName;
|
|
162
|
+
}
|
|
163
|
+
if (args.color !== undefined)
|
|
164
|
+
updates.color = parseInt(args.color.replace('#', ''), 16);
|
|
165
|
+
if (args.description !== undefined)
|
|
166
|
+
updates.description = args.description;
|
|
167
|
+
if (Object.keys(updates).length === 0)
|
|
168
|
+
return `Nothing to update for label **${label.title}**.`;
|
|
169
|
+
await client.updateDoc(tags_1.default.class.TagElement, label.space, label._id, updates);
|
|
170
|
+
// Issues show the title/color copied into each TagReference — keep them in sync.
|
|
171
|
+
const refUpdates = {};
|
|
172
|
+
if (updates.title !== undefined)
|
|
173
|
+
refUpdates.title = updates.title;
|
|
174
|
+
if (updates.color !== undefined)
|
|
175
|
+
refUpdates.color = updates.color;
|
|
176
|
+
let synced = 0;
|
|
177
|
+
if (Object.keys(refUpdates).length > 0) {
|
|
178
|
+
const refs = await client.findAll(tags_1.default.class.TagReference, { tag: label._id });
|
|
179
|
+
for (const ref of refs) {
|
|
180
|
+
await client.updateCollection(tags_1.default.class.TagReference, ref.space, ref._id, ref.attachedTo, ref.attachedToClass, ref.collection, refUpdates);
|
|
181
|
+
synced++;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return `✅ Label **${updates.title ?? label.title}** updated (${Object.keys(updates).map((k) => (k === 'title' ? 'name' : k)).join(', ')})${synced > 0 ? ` on ${synced} issue(s)` : ''}.`;
|
|
185
|
+
});
|
|
186
|
+
exports.deleteLabel = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
187
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
188
|
+
const label = await findLabel(client, args.labelName);
|
|
189
|
+
// Remove the label from every issue first, so no issue keeps a reference to a deleted label.
|
|
190
|
+
const refs = await client.findAll(tags_1.default.class.TagReference, { tag: label._id });
|
|
191
|
+
for (const ref of refs) {
|
|
192
|
+
await client.removeCollection(tags_1.default.class.TagReference, ref.space, ref._id, ref.attachedTo, ref.attachedToClass, ref.collection);
|
|
193
|
+
}
|
|
194
|
+
await client.removeDoc(tags_1.default.class.TagElement, label.space, label._id);
|
|
195
|
+
return `🗑️ Label **${label.title}** deleted${refs.length > 0 ? ` and removed from ${refs.length} issue(s)` : ''}.`;
|
|
196
|
+
});
|
|
197
|
+
// ── Label categories (tags:class:TagCategory) ───────────────────────────────
|
|
198
|
+
exports.listLabelCategories = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
199
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
200
|
+
const categories = await client.findAll(tags_1.default.class.TagCategory, { targetClass: tracker_1.default.class.Issue });
|
|
201
|
+
const labels = await client.findAll(tags_1.default.class.TagElement, { targetClass: tracker_1.default.class.Issue });
|
|
202
|
+
if (categories.length === 0)
|
|
203
|
+
return 'No label categories.';
|
|
204
|
+
const lines = categories.map((c) => {
|
|
205
|
+
const own = labels.filter((l) => l.category === c._id).map((l) => l.title);
|
|
206
|
+
return `- **${String(c.label)}**${c.default === true ? ' (default)' : ''} — ${own.length > 0 ? own.join(', ') : 'no labels'} — \`${String(c._id)}\``;
|
|
207
|
+
});
|
|
208
|
+
const loose = labels.filter((l) => !categories.some((c) => c._id === l.category)).map((l) => l.title);
|
|
209
|
+
return `## Label categories (${categories.length})\n\n${lines.join('\n')}${loose.length > 0 ? `\n\nWithout category: ${loose.join(', ')}` : ''}`;
|
|
210
|
+
});
|
|
211
|
+
exports.createLabelCategory = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
212
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
213
|
+
const existing = await client.findAll(tags_1.default.class.TagCategory, { targetClass: tracker_1.default.class.Issue });
|
|
214
|
+
const same = existing.find((c) => String(c.label).toLowerCase() === args.name.toLowerCase());
|
|
215
|
+
if (same != null)
|
|
216
|
+
return `ℹ️ Category **${String(same.label)}** already exists — \`${String(same._id)}\`.`;
|
|
217
|
+
const id = await client.createDoc(tags_1.default.class.TagCategory, core_1.default.space.Workspace, { label: args.name, targetClass: tracker_1.default.class.Issue, icon: tags_1.default.icon.Tags, tags: [], default: false });
|
|
218
|
+
return `✅ Label category **${args.name}** created — \`${String(id)}\`.`;
|
|
219
|
+
});
|
|
220
|
+
exports.setLabelCategory = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
221
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
222
|
+
const label = await client.findOne(tags_1.default.class.TagElement, { targetClass: tracker_1.default.class.Issue, title: args.labelName });
|
|
223
|
+
if (label == null)
|
|
224
|
+
throw new Error(`Label '${args.labelName}' not found.`);
|
|
225
|
+
const categories = await client.findAll(tags_1.default.class.TagCategory, { targetClass: tracker_1.default.class.Issue });
|
|
226
|
+
const cat = categories.find((c) => c._id === args.category || String(c.label).toLowerCase() === args.category.toLowerCase());
|
|
227
|
+
if (cat == null)
|
|
228
|
+
throw new Error(`Category '${args.category}' not found. Available: ${categories.map((c) => c.label).join(', ')}.`);
|
|
229
|
+
await client.updateDoc(tags_1.default.class.TagElement, label.space, label._id, { category: cat._id });
|
|
230
|
+
return `✅ Label **${args.labelName}** is now in category **${String(cat.label)}**.`;
|
|
231
|
+
});
|
|
150
232
|
//# sourceMappingURL=labels.js.map
|
package/dist/tools/labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/tools/labels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/tools/labels.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/log-time.d.ts
CHANGED
|
@@ -5,7 +5,21 @@ export declare const logTime: (args: {
|
|
|
5
5
|
description?: string | undefined;
|
|
6
6
|
}) => Promise<{
|
|
7
7
|
content: Array<{
|
|
8
|
-
type:
|
|
8
|
+
type: 'text';
|
|
9
|
+
text: string;
|
|
10
|
+
}>;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const listTimeReports: (args: {
|
|
13
|
+
workspace?: string | undefined;
|
|
14
|
+
identifier?: string | undefined;
|
|
15
|
+
projectIdentifier?: string | undefined;
|
|
16
|
+
member?: string | undefined;
|
|
17
|
+
from?: string | undefined;
|
|
18
|
+
to?: string | undefined;
|
|
19
|
+
limit: number;
|
|
20
|
+
}) => Promise<{
|
|
21
|
+
content: Array<{
|
|
22
|
+
type: 'text';
|
|
9
23
|
text: string;
|
|
10
24
|
}>;
|
|
11
25
|
}>;
|
package/dist/tools/log-time.js
CHANGED
|
@@ -3,21 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.logTime = void 0;
|
|
6
|
+
exports.listTimeReports = exports.logTime = void 0;
|
|
7
7
|
const tracker_1 = __importDefault(require("@hcengineering/tracker"));
|
|
8
|
-
const
|
|
8
|
+
const people_1 = require("../utils/people");
|
|
9
9
|
const connection_1 = require("../connection");
|
|
10
10
|
const errors_1 = require("../utils/errors");
|
|
11
|
+
const format_1 = require("../utils/format");
|
|
11
12
|
const core_1 = require("@hcengineering/core");
|
|
12
13
|
exports.logTime = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
13
14
|
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
14
15
|
const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
|
|
15
16
|
if (issue == null)
|
|
16
17
|
throw new Error(`Issue '${args.identifier}' not found.`);
|
|
17
|
-
//
|
|
18
|
-
const me = await
|
|
19
|
-
if (me == null)
|
|
20
|
-
throw new Error('Could not identify current user.');
|
|
18
|
+
// Time is booked on the person behind the connected account.
|
|
19
|
+
const me = await (0, people_1.currentPerson)(client);
|
|
21
20
|
const now = new Date().getTime();
|
|
22
21
|
const valueInHours = args.hours;
|
|
23
22
|
await client.addCollection(tracker_1.default.class.TimeSpendReport, issue.space, issue._id, tracker_1.default.class.Issue, 'reports', {
|
|
@@ -28,4 +27,69 @@ exports.logTime = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
|
28
27
|
}, (0, core_1.generateId)());
|
|
29
28
|
return `✅ Logged **${args.hours}h** on **${args.identifier}**${args.description ? ` — "${args.description}"` : ''}`;
|
|
30
29
|
});
|
|
30
|
+
exports.listTimeReports = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
31
|
+
if ((args.identifier == null) === (args.projectIdentifier == null)) {
|
|
32
|
+
throw new Error('Pass exactly one of identifier (issue) or projectIdentifier.');
|
|
33
|
+
}
|
|
34
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
35
|
+
const query = {};
|
|
36
|
+
let scope;
|
|
37
|
+
if (args.identifier != null) {
|
|
38
|
+
const issue = await client.findOne(tracker_1.default.class.Issue, { identifier: args.identifier });
|
|
39
|
+
if (issue == null)
|
|
40
|
+
throw new Error(`Issue '${args.identifier}' not found.`);
|
|
41
|
+
query.attachedTo = issue._id;
|
|
42
|
+
scope = args.identifier;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.projectIdentifier });
|
|
46
|
+
if (project == null)
|
|
47
|
+
throw new Error(`Project '${args.projectIdentifier}' not found.`);
|
|
48
|
+
query.space = project._id;
|
|
49
|
+
scope = args.projectIdentifier;
|
|
50
|
+
}
|
|
51
|
+
const nameOf = await (0, people_1.peopleNames)(client);
|
|
52
|
+
if (args.member != null)
|
|
53
|
+
query.employee = (await (0, people_1.findPerson)(client, args.member))._id;
|
|
54
|
+
const parse = (v, end) => {
|
|
55
|
+
if (v == null)
|
|
56
|
+
return undefined;
|
|
57
|
+
const d = new Date(v);
|
|
58
|
+
if (isNaN(d.getTime()))
|
|
59
|
+
throw new Error(`Invalid date: '${v}'`);
|
|
60
|
+
// A bare date as upper bound includes that whole day.
|
|
61
|
+
return end && /^\d{4}-\d{2}-\d{2}$/.test(v) ? d.getTime() + 86_400_000 - 1 : d.getTime();
|
|
62
|
+
};
|
|
63
|
+
const from = parse(args.from, false);
|
|
64
|
+
const to = parse(args.to, true);
|
|
65
|
+
const all = await client.findAll(tracker_1.default.class.TimeSpendReport, query);
|
|
66
|
+
const reports = all
|
|
67
|
+
.filter((r) => (from == null || (r.date ?? 0) >= from) && (to == null || (r.date ?? 0) <= to))
|
|
68
|
+
.sort((a, b) => (b.date ?? 0) - (a.date ?? 0));
|
|
69
|
+
if (reports.length === 0)
|
|
70
|
+
return `No time reports found for ${scope}.`;
|
|
71
|
+
const issueIds = [...new Set(reports.map((r) => r.attachedTo))];
|
|
72
|
+
const issues = await client.findAll(tracker_1.default.class.Issue, { _id: { $in: issueIds } });
|
|
73
|
+
const issueId = new Map(issues.map((i) => [i._id, i.identifier]));
|
|
74
|
+
const totalHours = reports.reduce((sum, r) => sum + (r.value ?? 0), 0);
|
|
75
|
+
const byMember = new Map();
|
|
76
|
+
for (const r of reports) {
|
|
77
|
+
const who = r.employee != null ? nameOf.get(r.employee) ?? String(r.employee) : 'Unknown';
|
|
78
|
+
byMember.set(who, (byMember.get(who) ?? 0) + (r.value ?? 0));
|
|
79
|
+
}
|
|
80
|
+
const shown = reports.slice(0, args.limit);
|
|
81
|
+
const lines = shown.map((r) => {
|
|
82
|
+
const who = r.employee != null ? nameOf.get(r.employee) ?? String(r.employee) : 'Unknown';
|
|
83
|
+
const note = r.description !== '' ? ` — ${r.description}` : '';
|
|
84
|
+
return `- ${(0, format_1.formatDate)(r.date)} **${r.value}h** ${issueId.get(r.attachedTo) ?? ''} (${who})${note}`;
|
|
85
|
+
});
|
|
86
|
+
const perMember = [...byMember.entries()].map(([who, h]) => `${who}: ${Math.round(h * 100) / 100}h`).join(', ');
|
|
87
|
+
return [
|
|
88
|
+
`## Time reports for ${scope}`,
|
|
89
|
+
`**Total:** ${Math.round(totalHours * 100) / 100}h in ${reports.length} report(s) — ${perMember}`,
|
|
90
|
+
'',
|
|
91
|
+
...lines,
|
|
92
|
+
reports.length > shown.length ? `\n_${reports.length - shown.length} more not shown (raise limit)._` : ''
|
|
93
|
+
].filter((l, i, a) => !(l === '' && i === a.length - 1)).join('\n');
|
|
94
|
+
});
|
|
31
95
|
//# sourceMappingURL=log-time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-time.js","sourceRoot":"","sources":["../../src/tools/log-time.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"log-time.js","sourceRoot":"","sources":["../../src/tools/log-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const LOVE: {
|
|
2
|
+
readonly Room: 'love:class:Room';
|
|
3
|
+
readonly Office: 'love:class:Office';
|
|
4
|
+
readonly Minutes: 'love:class:MeetingMinutes';
|
|
5
|
+
readonly Message: 'chunter:class:ChatMessage';
|
|
6
|
+
readonly Collaborator: 'core:class:Collaborator';
|
|
7
|
+
};
|
|
8
|
+
export declare const listMeetings: (args: {
|
|
9
|
+
workspace?: string | undefined;
|
|
10
|
+
room?: string | undefined;
|
|
11
|
+
since?: string | undefined;
|
|
12
|
+
limit?: number | undefined;
|
|
13
|
+
includeOffices?: boolean | undefined;
|
|
14
|
+
}) => Promise<{
|
|
15
|
+
content: Array<{
|
|
16
|
+
type: 'text';
|
|
17
|
+
text: string;
|
|
18
|
+
}>;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const getMeeting: (args: {
|
|
21
|
+
workspace?: string | undefined;
|
|
22
|
+
id: string;
|
|
23
|
+
transcript?: boolean | undefined;
|
|
24
|
+
limit?: number | undefined;
|
|
25
|
+
}) => Promise<{
|
|
26
|
+
content: Array<{
|
|
27
|
+
type: 'text';
|
|
28
|
+
text: string;
|
|
29
|
+
}>;
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMeeting = exports.listMeetings = exports.LOVE = void 0;
|
|
4
|
+
// Meetings (love plugin, read-only): office rooms, meeting minutes per room and their transcripts.
|
|
5
|
+
// Transcripts are chat messages in the minutes' 'transcription' collection, one per utterance.
|
|
6
|
+
const core_1 = require("@hcengineering/core");
|
|
7
|
+
const connection_1 = require("../connection");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
const format_1 = require("../utils/format");
|
|
10
|
+
const content_1 = require("../utils/content");
|
|
11
|
+
const people_1 = require("../utils/people");
|
|
12
|
+
exports.LOVE = { Room: 'love:class:Room', Office: 'love:class:Office', Minutes: 'love:class:MeetingMinutes', Message: 'chunter:class:ChatMessage', Collaborator: 'core:class:Collaborator' };
|
|
13
|
+
const ROOM_TYPE = ['video', 'audio', 'reception'];
|
|
14
|
+
const ACCESS = ['open', 'knock', 'do not disturb'];
|
|
15
|
+
const when = (ts) => ts == null ? '?' : new Date(ts).toISOString().slice(0, 16).replace('T', ' ');
|
|
16
|
+
exports.listMeetings = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
17
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
18
|
+
const rooms = await client.findAll(exports.LOVE.Room, {});
|
|
19
|
+
const query = {};
|
|
20
|
+
if (args.room != null) {
|
|
21
|
+
const q = args.room.trim().toLowerCase();
|
|
22
|
+
const hits = rooms.filter((r) => r._id === args.room || String(r.name).toLowerCase() === q);
|
|
23
|
+
if (hits.length !== 1)
|
|
24
|
+
throw new Error(hits.length === 0 ? `Room '${args.room}' not found. Rooms: ${rooms.map((r) => r.name).join(', ')}.` : `Room '${args.room}' is ambiguous.`);
|
|
25
|
+
query.attachedTo = hits[0]._id;
|
|
26
|
+
}
|
|
27
|
+
if (args.since != null) {
|
|
28
|
+
const t = Date.parse(args.since);
|
|
29
|
+
if (Number.isNaN(t))
|
|
30
|
+
throw new Error(`since must be a date, got '${args.since}'.`);
|
|
31
|
+
query.createdOn = { $gte: t };
|
|
32
|
+
}
|
|
33
|
+
const minutes = await client.findAll(exports.LOVE.Minutes, query, { sort: { createdOn: core_1.SortingOrder.Descending }, limit: args.limit ?? 20 });
|
|
34
|
+
const roomLines = rooms.filter((r) => r._class !== exports.LOVE.Office || args.includeOffices === true)
|
|
35
|
+
.map((r) => `- ${String(r.name)} (${ROOM_TYPE[r.type] ?? r.type}, ${ACCESS[r.access] ?? r.access}${r.startWithTranscription === true ? ', transcribed' : ''}) · ${Number(r.meetings ?? 0)} meeting(s)`);
|
|
36
|
+
const out = [`## Rooms (${roomLines.length})`, ...roomLines, '', `## Meetings (${minutes.length})`];
|
|
37
|
+
if (minutes.length === 0)
|
|
38
|
+
out.push('No meeting minutes yet.');
|
|
39
|
+
for (const m of minutes) {
|
|
40
|
+
const room = rooms.find((r) => r._id === m.attachedTo);
|
|
41
|
+
const dur = m.meetingEnd != null ? ` – ${when(m.meetingEnd).slice(11)}` : m.status === 0 ? ' (running)' : '';
|
|
42
|
+
out.push(`- **${String(m.title)}** · ${String(room?.name ?? '?')} · ${when(m.createdOn)}${dur} · ${Number(m.transcription ?? 0)} transcript line(s), ${Number(m.todos ?? 0)} action item(s) — \`${String(m._id)}\``);
|
|
43
|
+
}
|
|
44
|
+
return out.join('\n');
|
|
45
|
+
});
|
|
46
|
+
exports.getMeeting = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
47
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
48
|
+
const m = await client.findOne(exports.LOVE.Minutes, { _id: args.id });
|
|
49
|
+
if (m == null)
|
|
50
|
+
throw new Error(`Meeting '${args.id}' not found (ids come from list_meetings).`);
|
|
51
|
+
const room = await client.findOne(exports.LOVE.Room, { _id: m.attachedTo });
|
|
52
|
+
const [collabs, todos, lines] = await Promise.all([
|
|
53
|
+
client.findAll(exports.LOVE.Collaborator, { attachedTo: m._id }),
|
|
54
|
+
client.findAll('time:class:ToDo', { attachedTo: m._id }),
|
|
55
|
+
args.transcript === false ? Promise.resolve([]) : client.findAll(exports.LOVE.Message, { attachedTo: m._id, collection: 'transcription' }, { sort: { createdOn: core_1.SortingOrder.Ascending }, limit: args.limit ?? 500 })
|
|
56
|
+
]);
|
|
57
|
+
const persons = collabs.length > 0 ? await client.findAll('contact:class:Person', { personUuid: { $in: collabs.map((c) => c.collaborator) } }) : [];
|
|
58
|
+
const speakers = await (0, people_1.socialIdNames)(client, [...new Set(lines.map((l) => l.createdBy).filter((x) => x != null))]);
|
|
59
|
+
const notes = await (0, content_1.readMarkup)(args.workspace, m.description);
|
|
60
|
+
const out = [
|
|
61
|
+
`## ${String(m.title)}`,
|
|
62
|
+
`**Room:** ${String(room?.name ?? '?')} · **Start:** ${when(m.createdOn)} · **End:** ${m.meetingEnd != null ? when(m.meetingEnd) : m.status === 0 ? 'running' : '?'}`,
|
|
63
|
+
`**Participants:** ${persons.length > 0 ? persons.map((p) => String(p.name).split(',').reverse().join(' ').trim()).join(', ') : `${collabs.length}`}`
|
|
64
|
+
];
|
|
65
|
+
if (notes.trim() !== '')
|
|
66
|
+
out.push('', '### Notes', notes.trim());
|
|
67
|
+
if (todos.length > 0)
|
|
68
|
+
out.push('', '### Action items', ...todos.map((t) => `- [${t.doneOn != null ? 'x' : ' '}] ${String(t.title)}`));
|
|
69
|
+
if (args.transcript !== false) {
|
|
70
|
+
out.push('', `### Transcript (${lines.length}${lines.length === (args.limit ?? 500) ? '+' : ''})`);
|
|
71
|
+
if (lines.length === 0)
|
|
72
|
+
out.push('_(none)_');
|
|
73
|
+
for (const l of lines)
|
|
74
|
+
out.push(`[${when(l.createdOn).slice(11)}] **${speakers.get(l.createdBy) ?? '?'}:** ${(0, format_1.markupToText)(l.message).trim()}`);
|
|
75
|
+
}
|
|
76
|
+
return out.join('\n');
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=meetings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meetings.js","sourceRoot":"","sources":["../../src/tools/meetings.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/members.d.ts
CHANGED
package/dist/tools/members.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.listMembers = void 0;
|
|
7
|
+
const contact_1 = __importDefault(require("@hcengineering/contact"));
|
|
4
8
|
const connection_1 = require("../connection");
|
|
5
9
|
const errors_1 = require("../utils/errors");
|
|
10
|
+
const people_1 = require("../utils/people");
|
|
6
11
|
exports.listMembers = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
7
12
|
const accountClient = await (0, connection_1.getAccountClient)(args.workspace);
|
|
8
13
|
const members = await accountClient.getWorkspaceMembers();
|
|
9
14
|
if (members.length === 0)
|
|
10
15
|
return 'No members found in this workspace.';
|
|
16
|
+
// Account members carry only a person UUID — resolve display names from the workspace.
|
|
17
|
+
let nameByUuid = new Map();
|
|
18
|
+
try {
|
|
19
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
20
|
+
const persons = await client.findAll(contact_1.default.class.Person, {});
|
|
21
|
+
nameByUuid = new Map(persons.filter((p) => p.personUuid != null).map((p) => [String(p.personUuid), (0, people_1.formatPersonName)(p.name)]));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Names are a convenience; the member list itself comes from the account service.
|
|
25
|
+
}
|
|
11
26
|
const lines = members.map((m) => {
|
|
12
27
|
const role = String(m.role ?? 'member');
|
|
13
|
-
|
|
28
|
+
const name = nameByUuid.get(String(m.person));
|
|
29
|
+
return `- ${name != null && name !== '' ? `**${name}** ` : ''}\`${m.person}\` — role: **${role}**`;
|
|
14
30
|
});
|
|
15
31
|
return `## Workspace Members (${members.length})\n\n${lines.join('\n')}`;
|
|
16
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA4C;AAC5C,8CAA+D;AAC/D,4CAAiD;AACjD,4CAAkD;AAIrC,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAoC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC3F,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,CAAA;IAEzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qCAAqC,CAAA;IAEtE,uFAAuF;IACvF,IAAI,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClD,MAAM,OAAO,GAAU,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACrE,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,IAAA,yBAAgB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAChI,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;IACpF,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7C,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,gBAAgB,IAAI,IAAI,CAAA;IACpG,CAAC,CAAC,CAAA;IAEF,OAAO,yBAAyB,OAAO,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAC1E,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare const MT: {
|
|
2
|
+
readonly Template: 'templates:class:MessageTemplate';
|
|
3
|
+
readonly Category: 'templates:class:TemplateCategory';
|
|
4
|
+
readonly Default: 'templates:space:Templates';
|
|
5
|
+
};
|
|
6
|
+
export declare const listMessageTemplates: (args: {
|
|
7
|
+
workspace?: string | undefined;
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
content: Array<{
|
|
10
|
+
type: 'text';
|
|
11
|
+
text: string;
|
|
12
|
+
}>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const getMessageTemplate: (args: {
|
|
15
|
+
workspace?: string | undefined;
|
|
16
|
+
template: string;
|
|
17
|
+
}) => Promise<{
|
|
18
|
+
content: Array<{
|
|
19
|
+
type: 'text';
|
|
20
|
+
text: string;
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const createMessageTemplate: (args: {
|
|
24
|
+
workspace: string;
|
|
25
|
+
title: string;
|
|
26
|
+
message: string;
|
|
27
|
+
category?: string | undefined;
|
|
28
|
+
newCategory?: boolean | undefined;
|
|
29
|
+
}) => Promise<{
|
|
30
|
+
content: Array<{
|
|
31
|
+
type: 'text';
|
|
32
|
+
text: string;
|
|
33
|
+
}>;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const updateMessageTemplate: (args: {
|
|
36
|
+
workspace: string;
|
|
37
|
+
template: string;
|
|
38
|
+
title?: string | undefined;
|
|
39
|
+
message?: string | undefined;
|
|
40
|
+
}) => Promise<{
|
|
41
|
+
content: Array<{
|
|
42
|
+
type: 'text';
|
|
43
|
+
text: string;
|
|
44
|
+
}>;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const deleteMessageTemplate: (args: {
|
|
47
|
+
workspace: string;
|
|
48
|
+
template: string;
|
|
49
|
+
}) => Promise<{
|
|
50
|
+
content: Array<{
|
|
51
|
+
type: 'text';
|
|
52
|
+
text: string;
|
|
53
|
+
}>;
|
|
54
|
+
}>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteMessageTemplate = exports.updateMessageTemplate = exports.createMessageTemplate = exports.getMessageTemplate = exports.listMessageTemplates = exports.MT = void 0;
|
|
4
|
+
// Message templates (templates plugin): reusable chat/e-mail texts with ${field} placeholders,
|
|
5
|
+
// grouped in categories (spaces). The message is inline markup.
|
|
6
|
+
const core_1 = require("@hcengineering/core");
|
|
7
|
+
const connection_1 = require("../connection");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
const format_1 = require("../utils/format");
|
|
10
|
+
const markdown_1 = require("../utils/markdown");
|
|
11
|
+
const markdownToMarkup = (md) => JSON.stringify((0, markdown_1.markdownToProseMirror)(md));
|
|
12
|
+
const people_1 = require("../utils/people");
|
|
13
|
+
const tasks_1 = require("../utils/tasks");
|
|
14
|
+
exports.MT = { Template: 'templates:class:MessageTemplate', Category: 'templates:class:TemplateCategory', Default: 'templates:space:Templates' };
|
|
15
|
+
async function findCategory(client, ref) {
|
|
16
|
+
if (ref == null) {
|
|
17
|
+
const def = await client.findOne(exports.MT.Category, { _id: exports.MT.Default });
|
|
18
|
+
if (def == null)
|
|
19
|
+
throw new Error('No default template category — pass category.');
|
|
20
|
+
return def;
|
|
21
|
+
}
|
|
22
|
+
return await (0, tasks_1.findNamed)(client, exports.MT.Category, ref, 'Template category');
|
|
23
|
+
}
|
|
24
|
+
async function findTemplate(client, ref) {
|
|
25
|
+
return await (0, tasks_1.findNamed)(client, exports.MT.Template, ref, 'Message template');
|
|
26
|
+
}
|
|
27
|
+
exports.listMessageTemplates = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
28
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
29
|
+
const cats = await client.findAll(exports.MT.Category, {});
|
|
30
|
+
const tpls = await client.findAll(exports.MT.Template, {});
|
|
31
|
+
if (tpls.length === 0)
|
|
32
|
+
return `No message templates. Categories: ${cats.map((c) => c.name).join(', ') || 'none'}.`;
|
|
33
|
+
const lines = [];
|
|
34
|
+
for (const c of cats) {
|
|
35
|
+
const mine = tpls.filter((t) => t.space === c._id);
|
|
36
|
+
if (mine.length === 0)
|
|
37
|
+
continue;
|
|
38
|
+
lines.push(`### ${String(c.name)}`);
|
|
39
|
+
for (const t of mine) {
|
|
40
|
+
const text = (0, format_1.markupToText)(t.message).replace(/\s+/g, ' ').trim();
|
|
41
|
+
lines.push(`- **${String(t.title)}** — ${text.slice(0, 100)}${text.length > 100 ? '…' : ''} — \`${String(t._id)}\``);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return `## Message templates (${tpls.length})\n\n${lines.join('\n')}`;
|
|
45
|
+
});
|
|
46
|
+
exports.getMessageTemplate = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
47
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
48
|
+
const t = await findTemplate(client, args.template);
|
|
49
|
+
const text = (0, format_1.markupToText)(t.message);
|
|
50
|
+
const fields = [...new Set([...text.matchAll(/\$\{(\S+?)\}/g)].map((m) => m[1]))];
|
|
51
|
+
return `## ${String(t.title)}\n\n${text}${fields.length > 0 ? `\n\n**Placeholders:** ${fields.join(', ')}` : ''}`;
|
|
52
|
+
});
|
|
53
|
+
exports.createMessageTemplate = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
54
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
55
|
+
let cat;
|
|
56
|
+
if (args.newCategory === true) {
|
|
57
|
+
if (args.category == null)
|
|
58
|
+
throw new Error('newCategory needs category (its name).');
|
|
59
|
+
const id = (0, core_1.generateId)();
|
|
60
|
+
await client.createDoc(exports.MT.Category, 'core:space:Space', { name: args.category.trim(), description: '', private: false, archived: false, members: [await (0, people_1.currentAccountUuid)(client)] }, id);
|
|
61
|
+
cat = { _id: id, name: args.category.trim() };
|
|
62
|
+
}
|
|
63
|
+
else
|
|
64
|
+
cat = await findCategory(client, args.category);
|
|
65
|
+
const id = (0, core_1.generateId)();
|
|
66
|
+
await client.createDoc(exports.MT.Template, cat._id, { title: args.title.trim(), message: markdownToMarkup(args.message) }, id);
|
|
67
|
+
return `✅ Template **${args.title}** in ${String(cat.name)} — \`${id}\``;
|
|
68
|
+
});
|
|
69
|
+
exports.updateMessageTemplate = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
70
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
71
|
+
const t = await findTemplate(client, args.template);
|
|
72
|
+
const update = {};
|
|
73
|
+
if (args.title != null)
|
|
74
|
+
update.title = args.title.trim();
|
|
75
|
+
if (args.message != null)
|
|
76
|
+
update.message = markdownToMarkup(args.message);
|
|
77
|
+
if (Object.keys(update).length === 0)
|
|
78
|
+
throw new Error('Nothing to change.');
|
|
79
|
+
await client.updateDoc(exports.MT.Template, t.space, t._id, update);
|
|
80
|
+
return `✅ Template **${String(update.title ?? t.title)}** updated: ${Object.keys(update).join(', ')}.`;
|
|
81
|
+
});
|
|
82
|
+
exports.deleteMessageTemplate = (0, errors_1.wrapToolHandler)(async (args) => {
|
|
83
|
+
const client = await (0, connection_1.getConnection)(args.workspace);
|
|
84
|
+
const t = await findTemplate(client, args.template);
|
|
85
|
+
await client.removeDoc(exports.MT.Template, t.space, t._id);
|
|
86
|
+
return `🗑️ Template **${String(t.title)}** deleted.`;
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=message-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-templates.js","sourceRoot":"","sources":["../../src/tools/message-templates.ts"],"names":[],"mappings":"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"}
|