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
@@ -0,0 +1,62 @@
1
+ export declare const listCollaborators: (args: {
2
+ workspace?: string | undefined;
3
+ object: string;
4
+ }) => Promise<{
5
+ content: Array<{
6
+ type: 'text';
7
+ text: string;
8
+ }>;
9
+ }>;
10
+ export declare const addCollaborator: (args: {
11
+ workspace: string;
12
+ object: string;
13
+ member?: string | undefined;
14
+ }) => Promise<{
15
+ content: Array<{
16
+ type: 'text';
17
+ text: string;
18
+ }>;
19
+ }>;
20
+ export declare const removeCollaborator: (args: {
21
+ workspace: string;
22
+ object: string;
23
+ member?: string | undefined;
24
+ }) => Promise<{
25
+ content: Array<{
26
+ type: 'text';
27
+ text: string;
28
+ }>;
29
+ }>;
30
+ /**
31
+ * Self-hosted servers often run with FRONT_URL=http://localhost:…, so the guest URL they generate
32
+ * only works on the server itself. Then the origin is replaced by HULY_FRONT_URL (what we connect to).
33
+ */
34
+ export declare function reachableUrl(url: string, frontUrl?: string | undefined): string;
35
+ export declare const createPublicLink: (args: {
36
+ workspace: string;
37
+ object: string;
38
+ }) => Promise<{
39
+ content: Array<{
40
+ type: 'text';
41
+ text: string;
42
+ }>;
43
+ }>;
44
+ export declare const listPublicLinks: (args: {
45
+ workspace?: string | undefined;
46
+ object?: string | undefined;
47
+ limit: number;
48
+ }) => Promise<{
49
+ content: Array<{
50
+ type: 'text';
51
+ text: string;
52
+ }>;
53
+ }>;
54
+ export declare const revokePublicLink: (args: {
55
+ workspace: string;
56
+ linkId: string;
57
+ }) => Promise<{
58
+ content: Array<{
59
+ type: 'text';
60
+ text: string;
61
+ }>;
62
+ }>;
@@ -0,0 +1,149 @@
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.revokePublicLink = exports.listPublicLinks = exports.createPublicLink = exports.removeCollaborator = exports.addCollaborator = exports.listCollaborators = void 0;
7
+ exports.reachableUrl = reachableUrl;
8
+ // Collaborators (who follows a document and gets its notifications) and public guest links.
9
+ const core_1 = __importDefault(require("@hcengineering/core"));
10
+ const contact_1 = __importDefault(require("@hcengineering/contact"));
11
+ const connection_1 = require("../connection");
12
+ const errors_1 = require("../utils/errors");
13
+ const resolve_1 = require("../utils/resolve");
14
+ const classes_1 = require("../utils/classes");
15
+ const people_1 = require("../utils/people");
16
+ /** Account uuid → display name for all persons that have an account. */
17
+ async function accountNames(client) {
18
+ const persons = await client.findAll(contact_1.default.class.Person, {});
19
+ return new Map(persons.filter((p) => p.personUuid != null).map((p) => [p.personUuid, (0, people_1.formatPersonName)(p.name)]));
20
+ }
21
+ /** Account uuid of a member given by name, or of the current user when omitted. */
22
+ async function accountOf(client, member) {
23
+ const person = member == null ? await (0, people_1.currentPerson)(client) : await (0, people_1.findPerson)(client, member);
24
+ const doc = await client.findOne(contact_1.default.class.Person, { _id: person._id });
25
+ if (doc?.personUuid == null)
26
+ throw new Error(`${person.name} has no Huly account and cannot follow documents.`);
27
+ return { uuid: doc.personUuid, name: person.name };
28
+ }
29
+ exports.listCollaborators = (0, errors_1.wrapToolHandler)(async (args) => {
30
+ const client = await (0, connection_1.getConnection)(args.workspace);
31
+ const target = await (0, resolve_1.resolveObject)(client, args.object);
32
+ const rows = await client.findAll(classes_1.C.Collaborator, { attachedTo: target._id });
33
+ if (rows.length === 0)
34
+ return `Nobody follows ${target.label}.`;
35
+ const names = await accountNames(client);
36
+ return `## Collaborators of ${target.label} (${rows.length})\n\n${rows.map((r) => `- ${names.get(r.collaborator) ?? r.collaborator}`).join('\n')}`;
37
+ });
38
+ exports.addCollaborator = (0, errors_1.wrapToolHandler)(async (args) => {
39
+ const client = await (0, connection_1.getConnection)(args.workspace);
40
+ const target = await (0, resolve_1.resolveObject)(client, args.object);
41
+ const who = await accountOf(client, args.member);
42
+ // Huly adds collaborators itself on create/assign/mention — never add a second record.
43
+ const existing = await client.findOne(classes_1.C.Collaborator, { attachedTo: target._id, collaborator: who.uuid });
44
+ if (existing != null)
45
+ return `${who.name} already follows ${target.label}.`;
46
+ await client.addCollection(classes_1.C.Collaborator, target.space, target._id, target._class, 'collaborators', { collaborator: who.uuid });
47
+ return `✅ ${who.name} now follows ${target.label}.`;
48
+ });
49
+ exports.removeCollaborator = (0, errors_1.wrapToolHandler)(async (args) => {
50
+ const client = await (0, connection_1.getConnection)(args.workspace);
51
+ const target = await (0, resolve_1.resolveObject)(client, args.object);
52
+ const who = await accountOf(client, args.member);
53
+ const rows = await client.findAll(classes_1.C.Collaborator, { attachedTo: target._id, collaborator: who.uuid });
54
+ if (rows.length === 0)
55
+ return `${who.name} does not follow ${target.label}.`;
56
+ for (const r of rows)
57
+ await client.removeCollection(classes_1.C.Collaborator, r.space, r._id, r.attachedTo, r.attachedToClass, r.collection ?? 'collaborators');
58
+ return `✅ ${who.name} no longer follows ${target.label}.`;
59
+ });
60
+ // ── Public links ────────────────────────────────────────────────────────────
61
+ /**
62
+ * Self-hosted servers often run with FRONT_URL=http://localhost:…, so the guest URL they generate
63
+ * only works on the server itself. Then the origin is replaced by HULY_FRONT_URL (what we connect to).
64
+ */
65
+ function reachableUrl(url, frontUrl = process.env.HULY_FRONT_URL) {
66
+ if (url === '' || frontUrl == null || frontUrl === '')
67
+ return url;
68
+ try {
69
+ const u = new URL(url);
70
+ if (!['localhost', '127.0.0.1', '0.0.0.0'].includes(u.hostname))
71
+ return url;
72
+ const f = new URL(frontUrl);
73
+ return `${f.origin}${u.pathname}${u.search}`;
74
+ }
75
+ catch {
76
+ return url;
77
+ }
78
+ }
79
+ const sleep = async (ms) => await new Promise((resolve) => setTimeout(resolve, ms));
80
+ /** The server fills in the guest URL (with its token) right after the link is created. */
81
+ async function waitForUrl(client, id, attempts = 10) {
82
+ for (let i = 0; i < attempts; i++) {
83
+ const link = await client.findOne(classes_1.C.PublicLink, { _id: id });
84
+ if (link?.url != null && link.url !== '')
85
+ return reachableUrl(link.url);
86
+ await sleep(300);
87
+ }
88
+ return '';
89
+ }
90
+ /** The panel Huly opens for a class (view:mixin:ObjectPanel), as used in its object links. */
91
+ function panelComponent(client, _class) {
92
+ try {
93
+ const panel = client.getHierarchy().classHierarchyMixin(_class, 'view:mixin:ObjectPanel');
94
+ if (panel?.component != null)
95
+ return panel.component;
96
+ }
97
+ catch { /* no model access (tests) */ }
98
+ return 'view:component:EditDoc';
99
+ }
100
+ exports.createPublicLink = (0, errors_1.wrapToolHandler)(async (args) => {
101
+ const client = await (0, connection_1.getConnection)(args.workspace);
102
+ const target = await (0, resolve_1.resolveObject)(client, args.object);
103
+ const existing = await client.findOne(classes_1.C.PublicLink, { attachedTo: target._id });
104
+ if (existing != null && existing.url !== '')
105
+ return `Public link for ${target.label} already exists:\n${reachableUrl(existing.url)}\n\nLink id: \`${existing._id}\``;
106
+ // Like Huly's share dialog: a read-only view without navigation, actions or comments.
107
+ const component = panelComponent(client, target._class);
108
+ const id = existing?._id ?? await client.createDoc(classes_1.C.PublicLink, core_1.default.space.Workspace, {
109
+ attachedTo: target._id,
110
+ location: { path: [], fragment: encodeURIComponent([component, target._id, target._class, 'content'].join('|')) },
111
+ revokable: true,
112
+ restrictions: { readonly: true, disableNavigation: true, disableActions: true, disableComments: true },
113
+ url: ''
114
+ });
115
+ const url = await waitForUrl(client, id);
116
+ if (url === '')
117
+ return `⚠️ Link for ${target.label} created, but the server has not filled in its URL yet — run list_public_links in a moment.\n\nLink id: \`${id}\``;
118
+ return `✅ Public read-only link for ${target.label}:\n${url}\n\nAnyone with this link can read it. Revoke with revoke_public_link (\`${id}\`).`;
119
+ });
120
+ exports.listPublicLinks = (0, errors_1.wrapToolHandler)(async (args) => {
121
+ const client = await (0, connection_1.getConnection)(args.workspace);
122
+ const query = {};
123
+ if (args.object != null)
124
+ query.attachedTo = (await (0, resolve_1.resolveObject)(client, args.object))._id;
125
+ const links = await client.findAll(classes_1.C.PublicLink, query, { limit: args.limit });
126
+ if (links.length === 0)
127
+ return 'No public links.';
128
+ const lines = [];
129
+ for (const l of links) {
130
+ let label = String(l.attachedTo);
131
+ try {
132
+ label = (await (0, resolve_1.resolveObject)(client, String(l.attachedTo))).label;
133
+ }
134
+ catch { /* target deleted or unknown class */ }
135
+ lines.push(`- **${label}** — ${l.url !== '' ? reachableUrl(String(l.url)) : '_(URL pending)_'} — \`${l._id}\`${l.revokable === false ? ' (not revokable)' : ''}`);
136
+ }
137
+ return `## Public links (${links.length})\n\n${lines.join('\n')}`;
138
+ });
139
+ exports.revokePublicLink = (0, errors_1.wrapToolHandler)(async (args) => {
140
+ const client = await (0, connection_1.getConnection)(args.workspace);
141
+ const link = await client.findOne(classes_1.C.PublicLink, { _id: args.linkId });
142
+ if (link == null)
143
+ throw new Error(`Public link '${args.linkId}' not found.`);
144
+ if (link.revokable === false)
145
+ throw new Error('This link is marked as not revokable in Huly.');
146
+ await client.removeDoc(classes_1.C.PublicLink, link.space, link._id);
147
+ return `✅ Public link \`${args.linkId}\` revoked — its URL no longer works.`;
148
+ });
149
+ //# sourceMappingURL=sharing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharing.js","sourceRoot":"","sources":["../../src/tools/sharing.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,18 @@ export declare const listIssueStatuses: (args: {
2
2
  workspace?: string | undefined;
3
3
  }) => Promise<{
4
4
  content: Array<{
5
- type: "text";
5
+ type: 'text';
6
6
  text: string;
7
7
  }>;
8
8
  }>;
9
9
  export declare const createIssueStatus: (args: {
10
10
  workspace: string;
11
11
  name: string;
12
- category: "InProgress" | "Backlog" | "Todo" | "Done" | "Cancelled";
12
+ category: "Backlog" | "Cancelled" | "Done" | "InProgress" | "Todo";
13
13
  color?: string | undefined;
14
14
  }) => Promise<{
15
15
  content: Array<{
16
- type: "text";
16
+ type: 'text';
17
17
  text: string;
18
18
  }>;
19
19
  }>;
@@ -0,0 +1,22 @@
1
+ export declare const SV: {
2
+ readonly Survey: 'survey:class:Survey';
3
+ readonly Poll: 'survey:class:Poll';
4
+ };
5
+ export declare const listSurveys: (args: {
6
+ workspace?: string | undefined;
7
+ }) => Promise<{
8
+ content: Array<{
9
+ type: 'text';
10
+ text: string;
11
+ }>;
12
+ }>;
13
+ export declare const getSurvey: (args: {
14
+ workspace?: string | undefined;
15
+ survey: string;
16
+ maxTextAnswers?: number | undefined;
17
+ }) => Promise<{
18
+ content: Array<{
19
+ type: 'text';
20
+ text: string;
21
+ }>;
22
+ }>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSurvey = exports.listSurveys = exports.SV = void 0;
4
+ // Surveys (survey plugin, read-only): question sets and their polls (filled-in copies attached to
5
+ // e.g. a candidate or application). A poll keeps its own copy of the questions.
6
+ const connection_1 = require("../connection");
7
+ const errors_1 = require("../utils/errors");
8
+ exports.SV = { Survey: 'survey:class:Survey', Poll: 'survey:class:Poll' };
9
+ const KIND = { string: 'free text', option: 'single choice', options: 'multiple choice' };
10
+ exports.listSurveys = (0, errors_1.wrapToolHandler)(async (args) => {
11
+ const client = await (0, connection_1.getConnection)(args.workspace);
12
+ const surveys = await client.findAll(exports.SV.Survey, {});
13
+ if (surveys.length === 0)
14
+ return 'No surveys (the module may be disabled).';
15
+ const polls = await client.findAll(exports.SV.Poll, {});
16
+ const lines = surveys.map((s) => {
17
+ const mine = polls.filter((p) => p.survey === s._id);
18
+ return `- **${String(s.name)}** — ${(s.questions ?? []).length} question(s) · ${mine.length} poll(s), ${mine.filter((p) => p.isCompleted === true).length} completed — \`${String(s._id)}\``;
19
+ });
20
+ return `## Surveys (${surveys.length})\n\n${lines.join('\n')}`;
21
+ });
22
+ exports.getSurvey = (0, errors_1.wrapToolHandler)(async (args) => {
23
+ const client = await (0, connection_1.getConnection)(args.workspace);
24
+ const all = await client.findAll(exports.SV.Survey, {});
25
+ const s = all.find((x) => x._id === args.survey || String(x.name).toLowerCase() === args.survey.trim().toLowerCase());
26
+ if (s == null)
27
+ throw new Error(`Survey '${args.survey}' not found. Surveys: ${all.map((x) => x.name).join(', ') || 'none'}.`);
28
+ const polls = await client.findAll(exports.SV.Poll, { survey: s._id });
29
+ const done = polls.filter((p) => p.isCompleted === true);
30
+ const out = [`## ${String(s.name)}`];
31
+ if (s.prompt != null && s.prompt !== '')
32
+ out.push(String(s.prompt));
33
+ out.push('', `### Questions — results from ${done.length} completed of ${polls.length} poll(s)`);
34
+ (s.questions ?? []).forEach((q, i) => {
35
+ out.push(`${i + 1}. ${String(q.name)} _(${KIND[q.kind] ?? q.kind}${q.isMandatory === true ? ', required' : ''})_`);
36
+ const answers = done.map((p) => (p.questions ?? [])[i]).filter((a) => a != null && a.name === q.name);
37
+ if (q.kind === 'string') {
38
+ for (const a of answers.filter((x) => x.answer != null && x.answer !== '').slice(0, args.maxTextAnswers ?? 10))
39
+ out.push(` - “${String(a.answer)}”`);
40
+ return;
41
+ }
42
+ const opts = q.options ?? [];
43
+ opts.forEach((o, j) => {
44
+ const n = answers.filter((a) => (a.answers ?? []).includes(j)).length;
45
+ out.push(` - ${o}${done.length > 0 ? `: ${n}` : ''}`);
46
+ });
47
+ const custom = answers.filter((a) => a.answer != null && a.answer !== '');
48
+ if (q.hasCustomOption === true && custom.length > 0)
49
+ out.push(` - other: ${custom.map((a) => `“${String(a.answer)}”`).join(', ')}`);
50
+ });
51
+ return out.join('\n');
52
+ });
53
+ //# sourceMappingURL=surveys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/tools/surveys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export declare const listIssueTemplates: (args: {
2
+ workspace?: string | undefined;
3
+ projectIdentifier?: string | undefined;
4
+ }) => Promise<{
5
+ content: Array<{
6
+ type: 'text';
7
+ text: string;
8
+ }>;
9
+ }>;
10
+ export declare const getIssueTemplate: (args: {
11
+ workspace?: string | undefined;
12
+ template: string;
13
+ projectIdentifier?: string | undefined;
14
+ }) => Promise<{
15
+ content: Array<{
16
+ type: 'text';
17
+ text: string;
18
+ }>;
19
+ }>;
20
+ export declare const createIssueTemplate: (args: {
21
+ description?: string | undefined;
22
+ priority?: "High" | "Low" | "Medium" | "NoPriority" | "Urgent" | undefined;
23
+ assignee?: string | null | undefined;
24
+ componentLabel?: string | null | undefined;
25
+ milestoneLabel?: string | null | undefined;
26
+ estimation?: number | undefined;
27
+ labels?: string[] | undefined;
28
+ workspace: string;
29
+ projectIdentifier: string;
30
+ title: string;
31
+ children?: {
32
+ description?: string | undefined;
33
+ priority?: "High" | "Low" | "Medium" | "NoPriority" | "Urgent" | undefined;
34
+ assignee?: string | null | undefined;
35
+ componentLabel?: string | null | undefined;
36
+ milestoneLabel?: string | null | undefined;
37
+ estimation?: number | undefined;
38
+ labels?: string[] | undefined;
39
+ title: string;
40
+ }[] | undefined;
41
+ }) => Promise<{
42
+ content: Array<{
43
+ type: 'text';
44
+ text: string;
45
+ }>;
46
+ }>;
47
+ export declare const updateIssueTemplate: (args: {
48
+ description?: string | undefined;
49
+ priority?: "High" | "Low" | "Medium" | "NoPriority" | "Urgent" | undefined;
50
+ assignee?: string | null | undefined;
51
+ componentLabel?: string | null | undefined;
52
+ milestoneLabel?: string | null | undefined;
53
+ estimation?: number | undefined;
54
+ labels?: string[] | undefined;
55
+ workspace: string;
56
+ template: string;
57
+ projectIdentifier?: string | undefined;
58
+ title?: string | undefined;
59
+ children?: {
60
+ description?: string | undefined;
61
+ priority?: "High" | "Low" | "Medium" | "NoPriority" | "Urgent" | undefined;
62
+ assignee?: string | null | undefined;
63
+ componentLabel?: string | null | undefined;
64
+ milestoneLabel?: string | null | undefined;
65
+ estimation?: number | undefined;
66
+ labels?: string[] | undefined;
67
+ title: string;
68
+ }[] | undefined;
69
+ }) => Promise<{
70
+ content: Array<{
71
+ type: 'text';
72
+ text: string;
73
+ }>;
74
+ }>;
75
+ export declare const deleteIssueTemplate: (args: {
76
+ workspace: string;
77
+ template: string;
78
+ projectIdentifier?: string | undefined;
79
+ }) => Promise<{
80
+ content: Array<{
81
+ type: 'text';
82
+ text: string;
83
+ }>;
84
+ }>;
85
+ export declare const createIssueFromTemplate: (args: {
86
+ workspace: string;
87
+ template: string;
88
+ projectIdentifier?: string | undefined;
89
+ title?: string | undefined;
90
+ }) => Promise<{
91
+ content: Array<{
92
+ type: 'text';
93
+ text: string;
94
+ }>;
95
+ }>;