huly-mcp-selfhost 3.3.0 → 3.5.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 (217) hide show
  1. package/.env.example +11 -0
  2. package/CHANGELOG.md +22 -0
  3. package/README.md +126 -17
  4. package/dist/guides/costs.md +2 -1
  5. package/dist/guides/workflow.md +3 -1
  6. package/dist/index.js +105034 -46
  7. package/dist/setup.js +4 -0
  8. package/package.json +12 -11
  9. package/dist/connection.d.ts +0 -78
  10. package/dist/connection.js +0 -271
  11. package/dist/connection.js.map +0 -1
  12. package/dist/env.d.ts +0 -1
  13. package/dist/env.js +0 -17
  14. package/dist/env.js.map +0 -1
  15. package/dist/guard.d.ts +0 -39
  16. package/dist/guard.js +0 -165
  17. package/dist/guard.js.map +0 -1
  18. package/dist/index.d.ts +0 -2
  19. package/dist/index.js.map +0 -1
  20. package/dist/junit-cli.d.ts +0 -8
  21. package/dist/junit-cli.js +0 -106
  22. package/dist/junit-cli.js.map +0 -1
  23. package/dist/registry.d.ts +0 -18
  24. package/dist/registry.js +0 -318
  25. package/dist/registry.js.map +0 -1
  26. package/dist/resources.d.ts +0 -19
  27. package/dist/resources.js +0 -255
  28. package/dist/resources.js.map +0 -1
  29. package/dist/schemas.d.ts +0 -1559
  30. package/dist/schemas.js +0 -1086
  31. package/dist/schemas.js.map +0 -1
  32. package/dist/server.d.ts +0 -29
  33. package/dist/server.js +0 -215
  34. package/dist/server.js.map +0 -1
  35. package/dist/tools/activity.d.ts +0 -10
  36. package/dist/tools/activity.js +0 -62
  37. package/dist/tools/activity.js.map +0 -1
  38. package/dist/tools/agent.d.ts +0 -156
  39. package/dist/tools/agent.js +0 -523
  40. package/dist/tools/agent.js.map +0 -1
  41. package/dist/tools/attachments.d.ts +0 -31
  42. package/dist/tools/attachments.js +0 -61
  43. package/dist/tools/attachments.js.map +0 -1
  44. package/dist/tools/calendar.d.ts +0 -49
  45. package/dist/tools/calendar.js +0 -116
  46. package/dist/tools/calendar.js.map +0 -1
  47. package/dist/tools/cards.d.ts +0 -87
  48. package/dist/tools/cards.js +0 -246
  49. package/dist/tools/cards.js.map +0 -1
  50. package/dist/tools/channels.d.ts +0 -118
  51. package/dist/tools/channels.js +0 -211
  52. package/dist/tools/channels.js.map +0 -1
  53. package/dist/tools/comments.d.ts +0 -42
  54. package/dist/tools/comments.js +0 -77
  55. package/dist/tools/comments.js.map +0 -1
  56. package/dist/tools/components.d.ts +0 -45
  57. package/dist/tools/components.js +0 -107
  58. package/dist/tools/components.js.map +0 -1
  59. package/dist/tools/contacts.d.ts +0 -69
  60. package/dist/tools/contacts.js +0 -130
  61. package/dist/tools/contacts.js.map +0 -1
  62. package/dist/tools/crm.d.ts +0 -61
  63. package/dist/tools/crm.js +0 -117
  64. package/dist/tools/crm.js.map +0 -1
  65. package/dist/tools/documents.d.ts +0 -100
  66. package/dist/tools/documents.js +0 -294
  67. package/dist/tools/documents.js.map +0 -1
  68. package/dist/tools/drive.d.ts +0 -107
  69. package/dist/tools/drive.js +0 -277
  70. package/dist/tools/drive.js.map +0 -1
  71. package/dist/tools/fields.d.ts +0 -33
  72. package/dist/tools/fields.js +0 -124
  73. package/dist/tools/fields.js.map +0 -1
  74. package/dist/tools/generic.d.ts +0 -72
  75. package/dist/tools/generic.js +0 -242
  76. package/dist/tools/generic.js.map +0 -1
  77. package/dist/tools/github.d.ts +0 -21
  78. package/dist/tools/github.js +0 -80
  79. package/dist/tools/github.js.map +0 -1
  80. package/dist/tools/hr.d.ts +0 -97
  81. package/dist/tools/hr.js +0 -150
  82. package/dist/tools/hr.js.map +0 -1
  83. package/dist/tools/inbox.d.ts +0 -23
  84. package/dist/tools/inbox.js +0 -76
  85. package/dist/tools/inbox.js.map +0 -1
  86. package/dist/tools/inventory.d.ts +0 -61
  87. package/dist/tools/inventory.js +0 -103
  88. package/dist/tools/inventory.js.map +0 -1
  89. package/dist/tools/issues.d.ts +0 -112
  90. package/dist/tools/issues.js +0 -474
  91. package/dist/tools/issues.js.map +0 -1
  92. package/dist/tools/labels.d.ts +0 -87
  93. package/dist/tools/labels.js +0 -232
  94. package/dist/tools/labels.js.map +0 -1
  95. package/dist/tools/log-time.d.ts +0 -25
  96. package/dist/tools/log-time.js +0 -95
  97. package/dist/tools/log-time.js.map +0 -1
  98. package/dist/tools/meetings.d.ts +0 -30
  99. package/dist/tools/meetings.js +0 -78
  100. package/dist/tools/meetings.js.map +0 -1
  101. package/dist/tools/members.d.ts +0 -8
  102. package/dist/tools/members.js +0 -33
  103. package/dist/tools/members.js.map +0 -1
  104. package/dist/tools/message-templates.d.ts +0 -54
  105. package/dist/tools/message-templates.js +0 -88
  106. package/dist/tools/message-templates.js.map +0 -1
  107. package/dist/tools/milestones.d.ts +0 -56
  108. package/dist/tools/milestones.js +0 -172
  109. package/dist/tools/milestones.js.map +0 -1
  110. package/dist/tools/organizations.d.ts +0 -37
  111. package/dist/tools/organizations.js +0 -88
  112. package/dist/tools/organizations.js.map +0 -1
  113. package/dist/tools/overview.d.ts +0 -55
  114. package/dist/tools/overview.js +0 -395
  115. package/dist/tools/overview.js.map +0 -1
  116. package/dist/tools/planner.d.ts +0 -60
  117. package/dist/tools/planner.js +0 -145
  118. package/dist/tools/planner.js.map +0 -1
  119. package/dist/tools/process.d.ts +0 -50
  120. package/dist/tools/process.js +0 -137
  121. package/dist/tools/process.js.map +0 -1
  122. package/dist/tools/products.d.ts +0 -17
  123. package/dist/tools/products.js +0 -45
  124. package/dist/tools/products.js.map +0 -1
  125. package/dist/tools/projects.d.ts +0 -41
  126. package/dist/tools/projects.js +0 -93
  127. package/dist/tools/projects.js.map +0 -1
  128. package/dist/tools/qms.d.ts +0 -57
  129. package/dist/tools/qms.js +0 -171
  130. package/dist/tools/qms.js.map +0 -1
  131. package/dist/tools/recruiting.d.ts +0 -112
  132. package/dist/tools/recruiting.js +0 -203
  133. package/dist/tools/recruiting.js.map +0 -1
  134. package/dist/tools/relations.d.ts +0 -72
  135. package/dist/tools/relations.js +0 -192
  136. package/dist/tools/relations.js.map +0 -1
  137. package/dist/tools/search.d.ts +0 -23
  138. package/dist/tools/search.js +0 -60
  139. package/dist/tools/search.js.map +0 -1
  140. package/dist/tools/sharing.d.ts +0 -62
  141. package/dist/tools/sharing.js +0 -149
  142. package/dist/tools/sharing.js.map +0 -1
  143. package/dist/tools/statuses.d.ts +0 -19
  144. package/dist/tools/statuses.js +0 -93
  145. package/dist/tools/statuses.js.map +0 -1
  146. package/dist/tools/surveys.d.ts +0 -22
  147. package/dist/tools/surveys.js +0 -53
  148. package/dist/tools/surveys.js.map +0 -1
  149. package/dist/tools/templates.d.ts +0 -95
  150. package/dist/tools/templates.js +0 -260
  151. package/dist/tools/templates.js.map +0 -1
  152. package/dist/tools/test-automation.d.ts +0 -81
  153. package/dist/tools/test-automation.js +0 -225
  154. package/dist/tools/test-automation.js.map +0 -1
  155. package/dist/tools/testing.d.ts +0 -234
  156. package/dist/tools/testing.js +0 -401
  157. package/dist/tools/testing.js.map +0 -1
  158. package/dist/tools/workspace-admin.d.ts +0 -55
  159. package/dist/tools/workspace-admin.js +0 -117
  160. package/dist/tools/workspace-admin.js.map +0 -1
  161. package/dist/tools/workspaces.d.ts +0 -6
  162. package/dist/tools/workspaces.js +0 -19
  163. package/dist/tools/workspaces.js.map +0 -1
  164. package/dist/utils/attributes.d.ts +0 -37
  165. package/dist/utils/attributes.js +0 -188
  166. package/dist/utils/attributes.js.map +0 -1
  167. package/dist/utils/classes.d.ts +0 -51
  168. package/dist/utils/classes.js +0 -73
  169. package/dist/utils/classes.js.map +0 -1
  170. package/dist/utils/content.d.ts +0 -11
  171. package/dist/utils/content.js +0 -86
  172. package/dist/utils/content.js.map +0 -1
  173. package/dist/utils/errors.d.ts +0 -11
  174. package/dist/utils/errors.js +0 -24
  175. package/dist/utils/errors.js.map +0 -1
  176. package/dist/utils/files.d.ts +0 -5
  177. package/dist/utils/files.js +0 -50
  178. package/dist/utils/files.js.map +0 -1
  179. package/dist/utils/format.d.ts +0 -8
  180. package/dist/utils/format.js +0 -57
  181. package/dist/utils/format.js.map +0 -1
  182. package/dist/utils/junit.d.ts +0 -13
  183. package/dist/utils/junit.js +0 -81
  184. package/dist/utils/junit.js.map +0 -1
  185. package/dist/utils/markdown.d.ts +0 -14
  186. package/dist/utils/markdown.js +0 -149
  187. package/dist/utils/markdown.js.map +0 -1
  188. package/dist/utils/meeting.d.ts +0 -13
  189. package/dist/utils/meeting.js +0 -118
  190. package/dist/utils/meeting.js.map +0 -1
  191. package/dist/utils/people.d.ts +0 -25
  192. package/dist/utils/people.js +0 -80
  193. package/dist/utils/people.js.map +0 -1
  194. package/dist/utils/redact.d.ts +0 -3
  195. package/dist/utils/redact.js +0 -26
  196. package/dist/utils/redact.js.map +0 -1
  197. package/dist/utils/resolve.d.ts +0 -17
  198. package/dist/utils/resolve.js +0 -54
  199. package/dist/utils/resolve.js.map +0 -1
  200. package/dist/utils/spec.d.ts +0 -10
  201. package/dist/utils/spec.js +0 -90
  202. package/dist/utils/spec.js.map +0 -1
  203. package/dist/utils/storage.d.ts +0 -7
  204. package/dist/utils/storage.js +0 -86
  205. package/dist/utils/storage.js.map +0 -1
  206. package/dist/utils/tasks.d.ts +0 -22
  207. package/dist/utils/tasks.js +0 -81
  208. package/dist/utils/tasks.js.map +0 -1
  209. package/dist/watch.d.ts +0 -62
  210. package/dist/watch.js +0 -405
  211. package/dist/watch.js.map +0 -1
  212. package/scripts/cleanup-issues.js +0 -141
  213. package/scripts/copy-guides.js +0 -18
  214. package/scripts/demo.js +0 -201
  215. package/scripts/import-csv.js +0 -250
  216. package/scripts/sample-tasks.csv +0 -11
  217. package/scripts/setup.js +0 -163
package/dist/guard.js DELETED
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMutation = isMutation;
4
- exports.projectsIn = projectsIn;
5
- exports.parseWriteProjects = parseWriteProjects;
6
- exports.assertWriteAllowed = assertWriteAllowed;
7
- exports.audit = audit;
8
- exports.isRisky = isRisky;
9
- exports.toolAnnotations = toolAnnotations;
10
- exports.parseConfirmMode = parseConfirmMode;
11
- exports.describeCall = describeCall;
12
- exports.elicitationAsker = elicitationAsker;
13
- exports.guard = guard;
14
- // Cross-cutting checks around every tool call:
15
- // - HULY_WRITE_PROJECTS: changes are only allowed in the listed projects
16
- // - HULY_AUDIT_LOG: every change is appended as one JSON line to this file
17
- // - HULY_CONFIRM: destructive tools ask the user first (MCP elicitation) when the client can ask
18
- const node_fs_1 = require("node:fs");
19
- const TASK_ID = /^([A-Z][A-Z0-9]*)-\d+$/;
20
- const PROJECT_KEYS = new Set(['projectIdentifier', 'targetProjectIdentifier', 'projectIdentifiers']);
21
- /** A tool changes data when its workspace argument is mandatory (reads may omit it). */
22
- function isMutation(tool) {
23
- const ws = tool.schema.shape.workspace;
24
- return ws != null && !ws.isOptional();
25
- }
26
- /** Project keys an argument object refers to: project fields plus every "PROJ-12"-style value. */
27
- function projectsIn(args, key = '') {
28
- const out = new Set();
29
- const visit = (value, k) => {
30
- if (typeof value === 'string') {
31
- if (PROJECT_KEYS.has(k))
32
- out.add(value.toUpperCase());
33
- const m = TASK_ID.exec(value);
34
- if (m != null)
35
- out.add(m[1]);
36
- }
37
- else if (Array.isArray(value)) {
38
- for (const v of value)
39
- visit(v, k);
40
- }
41
- else if (value != null && typeof value === 'object') {
42
- for (const [ck, cv] of Object.entries(value))
43
- visit(cv, ck);
44
- }
45
- };
46
- visit(args, key);
47
- return out;
48
- }
49
- function parseWriteProjects(value) {
50
- const list = (value ?? '').split(',').map((p) => p.trim().toUpperCase()).filter((p) => p !== '');
51
- return list.length > 0 ? new Set(list) : undefined;
52
- }
53
- function assertWriteAllowed(tool, args, allowed) {
54
- if (allowed == null || !isMutation(tool))
55
- return;
56
- const denied = [...projectsIn(args)].filter((p) => !allowed.has(p));
57
- if (denied.length > 0) {
58
- throw new Error(`Huly MCP: ${tool.name} touches project(s) ${denied.join(', ')}, but HULY_WRITE_PROJECTS only allows ${[...allowed].join(', ')}.`);
59
- }
60
- }
61
- function shorten(value, depth = 0) {
62
- if (typeof value === 'string')
63
- return value.length > 200 ? `${value.slice(0, 200)}… (${value.length} chars)` : value;
64
- if (Array.isArray(value))
65
- return depth > 3 ? `[${value.length} items]` : value.map((v) => shorten(v, depth + 1));
66
- if (value != null && typeof value === 'object') {
67
- return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, /base64/i.test(k) ? `[${String(v).length} chars]` : shorten(v, depth + 1)]));
68
- }
69
- return value;
70
- }
71
- function audit(path, tool, args, outcome) {
72
- if (path == null || path === '' || !isMutation(tool))
73
- return;
74
- const entry = { ts: new Date().toISOString(), tool: tool.name, args: shorten(args), ok: outcome.ok, result: outcome.text.split('\n')[0].slice(0, 300) };
75
- try {
76
- (0, node_fs_1.appendFileSync)(path, JSON.stringify(entry) + '\n');
77
- }
78
- catch { /* auditing must never break a tool call */ }
79
- }
80
- // ── Confirmation for destructive tools ───────────────────────────────────────
81
- const RISKY = new Set(['bulk_update_issues', 'move_issue', 'generic_update', 'generic_delete', 'revoke_public_link', 'restore_file_version', 'send_invite', 'set_member_role', 'cancel_execution']);
82
- /** Deletes and bulk/structural changes that are hard to undo. */
83
- function isRisky(name) {
84
- return name.startsWith('delete_') || RISKY.has(name);
85
- }
86
- /**
87
- * MCP tool annotations: reads are read-only; deletes, removals and the risky tools above are
88
- * destructive; every other change (create, add, update, set, …) is marked non-destructive —
89
- * the MCP default for a write tool is "destructive", which would over-warn.
90
- * Off by default (HULY_ANNOTATIONS=1): they add ~16% to tools/list in every session.
91
- */
92
- function toolAnnotations(tool) {
93
- const title = tool.name.replace(/_/g, ' ').replace(/^./, (c) => c.toUpperCase());
94
- if (!isMutation(tool))
95
- return { title, readOnlyHint: true };
96
- return { title, destructiveHint: isRisky(tool.name) || /^(remove|revoke)_/.test(tool.name) };
97
- }
98
- function parseConfirmMode(value) {
99
- const v = (value ?? 'auto').trim().toLowerCase();
100
- if (v === 'auto' || v === 'off' || v === 'strict')
101
- return v;
102
- throw new Error(`HULY_CONFIRM must be auto, off or strict (got '${value ?? ''}').`);
103
- }
104
- /** One readable line per argument, without the workspace and with long values cut. */
105
- function describeCall(tool, args) {
106
- const parts = Object.entries(args ?? {})
107
- .filter(([k, v]) => k !== 'workspace' && v != null && k !== 'confirm')
108
- .map(([k, v]) => `${k}: ${JSON.stringify(shorten(v)).slice(0, 160)}`);
109
- const ws = typeof args?.workspace === 'string' ? ` in workspace ${args.workspace}` : '';
110
- return `Huly: ${tool.name.replace(/_/g, ' ')}${ws}?\n${parts.join('\n')}`;
111
- }
112
- /** MCP elicitation on top of an McpServer. */
113
- function elicitationAsker(server) {
114
- return {
115
- canAsk: () => server.server.getClientCapabilities()?.elicitation?.form != null,
116
- ask: async (message) => {
117
- const res = await server.server.elicitInput({
118
- mode: 'form',
119
- message,
120
- requestedSchema: { type: 'object', properties: { confirm: { type: 'boolean', title: 'Yes, do it', default: false } }, required: ['confirm'] }
121
- });
122
- return res.action === 'accept' && res.content?.confirm === true;
123
- }
124
- };
125
- }
126
- /** Wraps a handler with the write scope check, the confirmation for risky tools and the audit log. */
127
- function guard(tool, env = process.env, asker) {
128
- const allowed = parseWriteProjects(env.HULY_WRITE_PROJECTS);
129
- const auditPath = env.HULY_AUDIT_LOG;
130
- const confirm = parseConfirmMode(env.HULY_CONFIRM);
131
- return async (args) => {
132
- assertWriteAllowed(tool, args, allowed);
133
- if (confirm !== 'off' && isRisky(tool.name) && args?.dryRun !== true) {
134
- const canAsk = asker?.canAsk() === true;
135
- if (!canAsk && confirm === 'strict') {
136
- audit(auditPath, tool, args, { ok: false, text: 'refused: HULY_CONFIRM=strict and the client cannot ask' });
137
- throw new Error(`Huly MCP: ${tool.name} needs a human confirmation (HULY_CONFIRM=strict), but this client cannot ask. Leave it to a person.`);
138
- }
139
- if (canAsk) {
140
- let yes = false;
141
- try {
142
- yes = await asker.ask(describeCall(tool, args));
143
- }
144
- catch (e) {
145
- audit(auditPath, tool, args, { ok: false, text: `confirmation failed: ${e.message}` });
146
- throw new Error(`Huly MCP: could not ask for confirmation of ${tool.name} (${e.message}). Nothing was changed.`);
147
- }
148
- if (!yes) {
149
- audit(auditPath, tool, args, { ok: false, text: 'declined by the user' });
150
- return { content: [{ type: 'text', text: `Cancelled: the user declined ${tool.name}. Nothing was changed — do not retry unless they ask.` }] };
151
- }
152
- }
153
- }
154
- try {
155
- const result = await tool.handler(args);
156
- audit(auditPath, tool, args, { ok: true, text: result.content[0]?.text ?? '' });
157
- return result;
158
- }
159
- catch (e) {
160
- audit(auditPath, tool, args, { ok: false, text: e.message });
161
- throw e;
162
- }
163
- };
164
- }
165
- //# sourceMappingURL=guard.js.map
package/dist/guard.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,wEAAgF;AAChF,qCAAuC;AACvC,6CAA8C;AAC9C,+BAAoC;AACpC,mCAAkC;AAClC,2CAAsC;AACtC,2CAAqD;AAErD,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAChC,4GAA4G;QAC5G,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAA;QAChC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,IAAA,oBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC;IACD,IAAA,kBAAY,GAAE,CAAA;IACd,oFAAoF;IACpF,2FAA2F;IAC3F,gFAAgF;IAChF,IAAA,6BAAoB,GAAE,CAAA;IACtB,MAAM,MAAM,GAAG,IAAA,qBAAY,GAAE,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAA;IAE5C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAA,4BAAe,GAAE,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAA,4BAAe,GAAE,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,6DAA6D;AAC/D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- import { type ImportOptions } from './tools/test-automation';
2
- export declare const JUNIT_HELP = "Usage: huly-mcp junit <report.xml> --project <test project> [options]\n\nImports a JUnit XML report (Jest, Vitest, pytest, Go, Gradle, Maven, xcpretty \u2026) as a Huly test\nrun. Suites and cases that do not exist yet are created. Credentials come from the usual HULY_*\nenvironment variables.\n\nOptions:\n --project <name> Test project (required)\n --workspace <slug> Workspace (needed when the account has several)\n --run <name> Run name (default: \"CI <date time>\")\n --parent-suite <name> Put the report's suites under this suite\n --no-create Only record results for cases that already exist\n --fail-on-failures Exit with code 1 when the report has failed tests\n --dry-run Show what would happen, change nothing\n";
3
- export interface JUnitCliOptions extends Omit<ImportOptions, 'xml'> {
4
- file: string;
5
- failOnFailures: boolean;
6
- }
7
- export declare function parseJUnitArgs(argv: string[]): JUnitCliOptions;
8
- export declare function runJUnit(argv: string[]): Promise<void>;
package/dist/junit-cli.js DELETED
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JUNIT_HELP = void 0;
4
- exports.parseJUnitArgs = parseJUnitArgs;
5
- exports.runJUnit = runJUnit;
6
- // `huly-mcp junit <report.xml>`: push a CI test report into Huly as a test run.
7
- const promises_1 = require("node:fs/promises");
8
- const env_1 = require("./env");
9
- const connection_1 = require("./connection");
10
- const test_automation_1 = require("./tools/test-automation");
11
- exports.JUNIT_HELP = `Usage: huly-mcp junit <report.xml> --project <test project> [options]
12
-
13
- Imports a JUnit XML report (Jest, Vitest, pytest, Go, Gradle, Maven, xcpretty …) as a Huly test
14
- run. Suites and cases that do not exist yet are created. Credentials come from the usual HULY_*
15
- environment variables.
16
-
17
- Options:
18
- --project <name> Test project (required)
19
- --workspace <slug> Workspace (needed when the account has several)
20
- --run <name> Run name (default: "CI <date time>")
21
- --parent-suite <name> Put the report's suites under this suite
22
- --no-create Only record results for cases that already exist
23
- --fail-on-failures Exit with code 1 when the report has failed tests
24
- --dry-run Show what would happen, change nothing
25
- `;
26
- function parseJUnitArgs(argv) {
27
- const o = { failOnFailures: false };
28
- const value = (i, flag) => {
29
- const v = argv[i + 1];
30
- if (v == null || v.startsWith('--'))
31
- throw new Error(`${flag} needs a value.`);
32
- return v;
33
- };
34
- for (let i = 0; i < argv.length; i++) {
35
- const a = argv[i];
36
- switch (a) {
37
- case '--project':
38
- o.project = value(i, a);
39
- i++;
40
- break;
41
- case '--workspace':
42
- o.workspace = value(i, a);
43
- i++;
44
- break;
45
- case '--run':
46
- o.runName = value(i, a);
47
- i++;
48
- break;
49
- case '--parent-suite':
50
- o.parentSuite = value(i, a);
51
- i++;
52
- break;
53
- case '--no-create':
54
- o.createMissing = false;
55
- break;
56
- case '--fail-on-failures':
57
- o.failOnFailures = true;
58
- break;
59
- case '--dry-run':
60
- o.dryRun = true;
61
- break;
62
- default:
63
- if (a.startsWith('--'))
64
- throw new Error(`Unknown option ${a}.`);
65
- if (o.file != null)
66
- throw new Error('Only one report file.');
67
- o.file = a;
68
- }
69
- }
70
- if (o.file == null)
71
- throw new Error('Missing report file.');
72
- if (o.project == null)
73
- throw new Error('Missing --project.');
74
- return o;
75
- }
76
- async function runJUnit(argv) {
77
- if (argv.includes('--help') || argv.includes('-h') || argv.length === 0) {
78
- process.stdout.write(exports.JUNIT_HELP);
79
- return;
80
- }
81
- let opts;
82
- try {
83
- opts = parseJUnitArgs(argv);
84
- }
85
- catch (e) {
86
- process.stderr.write(`${e.message}\n\n${exports.JUNIT_HELP}`);
87
- process.exitCode = 2;
88
- return;
89
- }
90
- (0, env_1.normalizeEnv)();
91
- try {
92
- const xml = await (0, promises_1.readFile)(opts.file, 'utf8');
93
- const summary = await (0, test_automation_1.importJUnit)({ ...opts, xml });
94
- process.stdout.write(summary.text.replace(/\*\*/g, '') + '\n');
95
- if (opts.failOnFailures && summary.failed > 0)
96
- process.exitCode = 1;
97
- }
98
- catch (e) {
99
- process.stderr.write(`huly-mcp junit: ${e.message}\n`);
100
- process.exitCode = 1;
101
- }
102
- finally {
103
- await (0, connection_1.closeConnection)();
104
- }
105
- }
106
- //# sourceMappingURL=junit-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"junit-cli.js","sourceRoot":"","sources":["../src/junit-cli.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { z } from 'zod';
2
- export declare const TOOLSETS: readonly ['core', 'agent', 'tracker', 'tracker-admin', 'documents', 'chat', 'contacts', 'inbox', 'activity', 'planner', 'calendar', 'github', 'generic', 'generic-write', 'collaboration', 'cards', 'fields', 'drive', 'templates', 'testing', 'products', 'members', 'recruiting', 'crm', 'hr', 'inventory', 'meetings', 'qms', 'process', 'surveys'];
3
- export type Toolset = typeof TOOLSETS[number];
4
- /** Enabled when HULY_TOOLSETS is not set. 'core' is always enabled. */
5
- export declare const DEFAULT_TOOLSETS: Toolset[];
6
- export interface ToolDef {
7
- name: string;
8
- toolset: Toolset;
9
- description: string;
10
- schema: z.ZodObject<any>;
11
- handler: (args: any) => Promise<{
12
- content: Array<{
13
- type: 'text';
14
- text: string;
15
- }>;
16
- }>;
17
- }
18
- export declare const TOOLS: ToolDef[];