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.
- package/.env.example +11 -0
- package/CHANGELOG.md +22 -0
- package/README.md +126 -17
- package/dist/guides/costs.md +2 -1
- package/dist/guides/workflow.md +3 -1
- package/dist/index.js +105034 -46
- package/dist/setup.js +4 -0
- package/package.json +12 -11
- package/dist/connection.d.ts +0 -78
- package/dist/connection.js +0 -271
- package/dist/connection.js.map +0 -1
- package/dist/env.d.ts +0 -1
- package/dist/env.js +0 -17
- package/dist/env.js.map +0 -1
- package/dist/guard.d.ts +0 -39
- package/dist/guard.js +0 -165
- package/dist/guard.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/junit-cli.d.ts +0 -8
- package/dist/junit-cli.js +0 -106
- package/dist/junit-cli.js.map +0 -1
- package/dist/registry.d.ts +0 -18
- package/dist/registry.js +0 -318
- package/dist/registry.js.map +0 -1
- package/dist/resources.d.ts +0 -19
- package/dist/resources.js +0 -255
- package/dist/resources.js.map +0 -1
- package/dist/schemas.d.ts +0 -1559
- package/dist/schemas.js +0 -1086
- package/dist/schemas.js.map +0 -1
- package/dist/server.d.ts +0 -29
- package/dist/server.js +0 -215
- package/dist/server.js.map +0 -1
- package/dist/tools/activity.d.ts +0 -10
- package/dist/tools/activity.js +0 -62
- package/dist/tools/activity.js.map +0 -1
- package/dist/tools/agent.d.ts +0 -156
- package/dist/tools/agent.js +0 -523
- package/dist/tools/agent.js.map +0 -1
- package/dist/tools/attachments.d.ts +0 -31
- package/dist/tools/attachments.js +0 -61
- package/dist/tools/attachments.js.map +0 -1
- package/dist/tools/calendar.d.ts +0 -49
- package/dist/tools/calendar.js +0 -116
- package/dist/tools/calendar.js.map +0 -1
- package/dist/tools/cards.d.ts +0 -87
- package/dist/tools/cards.js +0 -246
- package/dist/tools/cards.js.map +0 -1
- package/dist/tools/channels.d.ts +0 -118
- package/dist/tools/channels.js +0 -211
- package/dist/tools/channels.js.map +0 -1
- package/dist/tools/comments.d.ts +0 -42
- package/dist/tools/comments.js +0 -77
- package/dist/tools/comments.js.map +0 -1
- package/dist/tools/components.d.ts +0 -45
- package/dist/tools/components.js +0 -107
- package/dist/tools/components.js.map +0 -1
- package/dist/tools/contacts.d.ts +0 -69
- package/dist/tools/contacts.js +0 -130
- package/dist/tools/contacts.js.map +0 -1
- package/dist/tools/crm.d.ts +0 -61
- package/dist/tools/crm.js +0 -117
- package/dist/tools/crm.js.map +0 -1
- package/dist/tools/documents.d.ts +0 -100
- package/dist/tools/documents.js +0 -294
- package/dist/tools/documents.js.map +0 -1
- package/dist/tools/drive.d.ts +0 -107
- package/dist/tools/drive.js +0 -277
- package/dist/tools/drive.js.map +0 -1
- package/dist/tools/fields.d.ts +0 -33
- package/dist/tools/fields.js +0 -124
- package/dist/tools/fields.js.map +0 -1
- package/dist/tools/generic.d.ts +0 -72
- package/dist/tools/generic.js +0 -242
- package/dist/tools/generic.js.map +0 -1
- package/dist/tools/github.d.ts +0 -21
- package/dist/tools/github.js +0 -80
- package/dist/tools/github.js.map +0 -1
- package/dist/tools/hr.d.ts +0 -97
- package/dist/tools/hr.js +0 -150
- package/dist/tools/hr.js.map +0 -1
- package/dist/tools/inbox.d.ts +0 -23
- package/dist/tools/inbox.js +0 -76
- package/dist/tools/inbox.js.map +0 -1
- package/dist/tools/inventory.d.ts +0 -61
- package/dist/tools/inventory.js +0 -103
- package/dist/tools/inventory.js.map +0 -1
- package/dist/tools/issues.d.ts +0 -112
- package/dist/tools/issues.js +0 -474
- package/dist/tools/issues.js.map +0 -1
- package/dist/tools/labels.d.ts +0 -87
- package/dist/tools/labels.js +0 -232
- package/dist/tools/labels.js.map +0 -1
- package/dist/tools/log-time.d.ts +0 -25
- package/dist/tools/log-time.js +0 -95
- package/dist/tools/log-time.js.map +0 -1
- package/dist/tools/meetings.d.ts +0 -30
- package/dist/tools/meetings.js +0 -78
- package/dist/tools/meetings.js.map +0 -1
- package/dist/tools/members.d.ts +0 -8
- package/dist/tools/members.js +0 -33
- package/dist/tools/members.js.map +0 -1
- package/dist/tools/message-templates.d.ts +0 -54
- package/dist/tools/message-templates.js +0 -88
- package/dist/tools/message-templates.js.map +0 -1
- package/dist/tools/milestones.d.ts +0 -56
- package/dist/tools/milestones.js +0 -172
- package/dist/tools/milestones.js.map +0 -1
- package/dist/tools/organizations.d.ts +0 -37
- package/dist/tools/organizations.js +0 -88
- package/dist/tools/organizations.js.map +0 -1
- package/dist/tools/overview.d.ts +0 -55
- package/dist/tools/overview.js +0 -395
- package/dist/tools/overview.js.map +0 -1
- package/dist/tools/planner.d.ts +0 -60
- package/dist/tools/planner.js +0 -145
- package/dist/tools/planner.js.map +0 -1
- package/dist/tools/process.d.ts +0 -50
- package/dist/tools/process.js +0 -137
- package/dist/tools/process.js.map +0 -1
- package/dist/tools/products.d.ts +0 -17
- package/dist/tools/products.js +0 -45
- package/dist/tools/products.js.map +0 -1
- package/dist/tools/projects.d.ts +0 -41
- package/dist/tools/projects.js +0 -93
- package/dist/tools/projects.js.map +0 -1
- package/dist/tools/qms.d.ts +0 -57
- package/dist/tools/qms.js +0 -171
- package/dist/tools/qms.js.map +0 -1
- package/dist/tools/recruiting.d.ts +0 -112
- package/dist/tools/recruiting.js +0 -203
- package/dist/tools/recruiting.js.map +0 -1
- package/dist/tools/relations.d.ts +0 -72
- package/dist/tools/relations.js +0 -192
- package/dist/tools/relations.js.map +0 -1
- package/dist/tools/search.d.ts +0 -23
- package/dist/tools/search.js +0 -60
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/sharing.d.ts +0 -62
- package/dist/tools/sharing.js +0 -149
- package/dist/tools/sharing.js.map +0 -1
- package/dist/tools/statuses.d.ts +0 -19
- package/dist/tools/statuses.js +0 -93
- package/dist/tools/statuses.js.map +0 -1
- package/dist/tools/surveys.d.ts +0 -22
- package/dist/tools/surveys.js +0 -53
- package/dist/tools/surveys.js.map +0 -1
- package/dist/tools/templates.d.ts +0 -95
- package/dist/tools/templates.js +0 -260
- package/dist/tools/templates.js.map +0 -1
- package/dist/tools/test-automation.d.ts +0 -81
- package/dist/tools/test-automation.js +0 -225
- package/dist/tools/test-automation.js.map +0 -1
- package/dist/tools/testing.d.ts +0 -234
- package/dist/tools/testing.js +0 -401
- package/dist/tools/testing.js.map +0 -1
- package/dist/tools/workspace-admin.d.ts +0 -55
- package/dist/tools/workspace-admin.js +0 -117
- package/dist/tools/workspace-admin.js.map +0 -1
- package/dist/tools/workspaces.d.ts +0 -6
- package/dist/tools/workspaces.js +0 -19
- package/dist/tools/workspaces.js.map +0 -1
- package/dist/utils/attributes.d.ts +0 -37
- package/dist/utils/attributes.js +0 -188
- package/dist/utils/attributes.js.map +0 -1
- package/dist/utils/classes.d.ts +0 -51
- package/dist/utils/classes.js +0 -73
- package/dist/utils/classes.js.map +0 -1
- package/dist/utils/content.d.ts +0 -11
- package/dist/utils/content.js +0 -86
- package/dist/utils/content.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -11
- package/dist/utils/errors.js +0 -24
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/files.d.ts +0 -5
- package/dist/utils/files.js +0 -50
- package/dist/utils/files.js.map +0 -1
- package/dist/utils/format.d.ts +0 -8
- package/dist/utils/format.js +0 -57
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/junit.d.ts +0 -13
- package/dist/utils/junit.js +0 -81
- package/dist/utils/junit.js.map +0 -1
- package/dist/utils/markdown.d.ts +0 -14
- package/dist/utils/markdown.js +0 -149
- package/dist/utils/markdown.js.map +0 -1
- package/dist/utils/meeting.d.ts +0 -13
- package/dist/utils/meeting.js +0 -118
- package/dist/utils/meeting.js.map +0 -1
- package/dist/utils/people.d.ts +0 -25
- package/dist/utils/people.js +0 -80
- package/dist/utils/people.js.map +0 -1
- package/dist/utils/redact.d.ts +0 -3
- package/dist/utils/redact.js +0 -26
- package/dist/utils/redact.js.map +0 -1
- package/dist/utils/resolve.d.ts +0 -17
- package/dist/utils/resolve.js +0 -54
- package/dist/utils/resolve.js.map +0 -1
- package/dist/utils/spec.d.ts +0 -10
- package/dist/utils/spec.js +0 -90
- package/dist/utils/spec.js.map +0 -1
- package/dist/utils/storage.d.ts +0 -7
- package/dist/utils/storage.js +0 -86
- package/dist/utils/storage.js.map +0 -1
- package/dist/utils/tasks.d.ts +0 -22
- package/dist/utils/tasks.js +0 -81
- package/dist/utils/tasks.js.map +0 -1
- package/dist/watch.d.ts +0 -62
- package/dist/watch.js +0 -405
- package/dist/watch.js.map +0 -1
- package/scripts/cleanup-issues.js +0 -141
- package/scripts/copy-guides.js +0 -18
- package/scripts/demo.js +0 -201
- package/scripts/import-csv.js +0 -250
- package/scripts/sample-tasks.csv +0 -11
- 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
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"}
|
package/dist/junit-cli.d.ts
DELETED
|
@@ -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
|
package/dist/junit-cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"junit-cli.js","sourceRoot":"","sources":["../src/junit-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
DELETED
|
@@ -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[];
|