ue-mcp 1.0.14 → 1.0.16
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/assets/installation.bin +0 -0
- package/dist/flow/context.d.ts +11 -9
- package/dist/flow/registry.js +5 -3
- package/dist/flow/registry.js.map +1 -1
- package/dist/github-app.js +5 -28
- package/dist/github-app.js.map +1 -1
- package/dist/hook-handler.js +43 -1
- package/dist/hook-handler.js.map +1 -1
- package/dist/hook-installer.d.ts +22 -0
- package/dist/hook-installer.js +143 -0
- package/dist/hook-installer.js.map +1 -0
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/init.js +22 -39
- package/dist/init.js.map +1 -1
- package/dist/manifest-signature.d.ts +1 -0
- package/dist/manifest-signature.js +53 -0
- package/dist/manifest-signature.js.map +1 -0
- package/dist/project.d.ts +4 -0
- package/dist/project.js.map +1 -1
- package/dist/schemas.d.ts +12 -0
- package/dist/schemas.js +4 -0
- package/dist/schemas.js.map +1 -1
- package/dist/tool-counts.json +2 -2
- package/dist/tools/feedback.js +152 -52
- package/dist/tools/feedback.js.map +1 -1
- package/dist/types.d.ts +45 -0
- package/dist/types.js.map +1 -1
- package/dist/ue-mcp.default.yml +1 -1
- package/dist/uninstall-hooks.d.ts +9 -0
- package/dist/uninstall-hooks.js +67 -0
- package/dist/uninstall-hooks.js.map +1 -0
- package/package.json +2 -1
|
Binary file
|
package/dist/flow/context.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { TaskContext } from "@db-lyon/flowkit";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import type { ToolContext } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* FlowContext is the runtime context passed to flowkit tasks. It is a
|
|
5
|
+
* structural superset of ToolContext: every FlowContext is a valid
|
|
6
|
+
* ToolContext, so the registry can hand it to category-tool handlers
|
|
7
|
+
* without rebuilding the shape field-by-field. Extending ToolContext
|
|
8
|
+
* here (rather than re-declaring fields) is what prevents new ctx
|
|
9
|
+
* accessors from silently dropping out at the handler boundary — every
|
|
10
|
+
* accessor must be declared once, on ToolContext, and propagates.
|
|
11
|
+
*/
|
|
12
|
+
export interface FlowContext extends TaskContext, ToolContext {
|
|
11
13
|
}
|
package/dist/flow/registry.js
CHANGED
|
@@ -18,11 +18,13 @@ export function buildFlowRegistry(tools) {
|
|
|
18
18
|
for (const [actionName, spec] of Object.entries(tool.actions)) {
|
|
19
19
|
const taskName = `${tool.name}.${actionName}`;
|
|
20
20
|
if (spec.handler) {
|
|
21
|
-
//
|
|
21
|
+
// FlowContext is a structural superset of ToolContext (see
|
|
22
|
+
// context.ts), so we pass ctx straight through. Rebuilding it
|
|
23
|
+
// field-by-field used to silently drop new accessors at this
|
|
24
|
+
// boundary — never reintroduce that pattern.
|
|
22
25
|
const originalHandler = spec.handler;
|
|
23
26
|
registry.register(taskName, handlerTaskClass(taskName, (ctx, params) => {
|
|
24
|
-
|
|
25
|
-
return originalHandler(toolCtx, params);
|
|
27
|
+
return originalHandler(ctx, params);
|
|
26
28
|
}));
|
|
27
29
|
}
|
|
28
30
|
else if (spec.bridge) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/flow/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IAEpC,qCAAqC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAwC,CAAC,CAAC;IACtF,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAuC,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YAE9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/flow/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IAEpC,qCAAqC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAwC,CAAC,CAAC;IACtF,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAuC,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YAE9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,2DAA2D;gBAC3D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,6CAA6C;gBAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;gBACrC,QAAQ,CAAC,QAAQ,CACf,QAAQ,EACR,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAgB,EAAE,MAA+B,EAAE,EAAE;oBAC/E,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACtC,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,QAAQ,CAAC,QAAQ,CACf,QAAQ,EACR,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/github-app.js
CHANGED
|
@@ -1,35 +1,9 @@
|
|
|
1
1
|
import { createSign } from "node:crypto";
|
|
2
2
|
import { resolveUserAuth, clearUserAuth } from "./auth.js";
|
|
3
|
+
import { loadAppManifestSignature } from "./manifest-signature.js";
|
|
3
4
|
const APP_ID = "3133514";
|
|
4
5
|
const REPO_OWNER = "db-lyon";
|
|
5
6
|
const REPO_NAME = "ue-mcp";
|
|
6
|
-
const EMBEDDED_PEM = `-----BEGIN RSA PRIVATE KEY-----
|
|
7
|
-
MIIEpAIBAAKCAQEAz+75aawv43S5EUSOsSAufEEj9z0bPHM6VoR4sTXmMAoRxhpQ
|
|
8
|
-
yM7UIcQzxhdys1drVWcT1ZchmysRwE+NKgvXX53Yvbi7Fge1At1xHYT3VqFtmqbK
|
|
9
|
-
9xBRbFqeLb2bFsCku7SMcFey6E8LOlib3m0cynxT2lkvQFIawgfd3oDrtx1IGda2
|
|
10
|
-
Ra6aMUDTd9K/Kb7DTpigckLu/hnrZxzRtbn7qpDQuW53n49xM8/2XKsWGL6Z9psl
|
|
11
|
-
zMTGW2Q7ej63LSLvpWWydZTl6TWQIrUrdK5vPd01yeChnozYlbhthQmXTuV+zOeq
|
|
12
|
-
3WjPyrgcYLBuxpYUambf72/jH3BASha7KiBtwwIDAQABAoIBAHRBps2Aah4ASuDu
|
|
13
|
-
teEunw711MgNMEcyHbH1yw05l4PQfXOHjxdXHJ/sdQ4SWh0PiYFsaliHcVCyWfBu
|
|
14
|
-
Cf0yNa7OMDqTKHb+xCPf77iTeT7EbuWC0AQm6X9tgvcMBcRI3VHddo/xWKQuXZa3
|
|
15
|
-
qB5KX0iPDssMBjEuNqu5fkFDT4dHIuUWxEdeNa0Aooc2qpR08sxMissPx4/Ii/5i
|
|
16
|
-
JRLEfe40HyrA88nfw5lPAo/IKCkHMuOWjaY43oXLerVjUvtzthidyt9cm5QhGkbf
|
|
17
|
-
9oAy7oFBoLoSYY1avdW3lS3hFTPMlPPQBJMtF2xJowWYdnpcAFNUTceZcGg/HZNy
|
|
18
|
-
eR0/WEECgYEA++eTSKiNsbXDcXcRdpsbQT7nj2DqizxF0pIqitmqONHXPyckp0RS
|
|
19
|
-
3BhKqgKQdZkE6yHcM7j0Ze3XpGa0s/+OCpUTGXmdHgkNX6S3jMSJfsC8DhadWY4H
|
|
20
|
-
o5iLh5n+uPf8Eqygzv8YDdI6MsmDB5uTlVehXcubD+Fv74LA+dd18JECgYEA01Bk
|
|
21
|
-
QVikrjhnLtWyHDLsSOq1q45xHhrHtFhgNNsg34rWvBloIbAKyUZ7yJSo9Opti2A+
|
|
22
|
-
GwbmNhlVa8u3rHhN+IaiFG2O7zuFnD0HRAB+Q5zx999lWbNKSdHOoTdq0FUVNWeo
|
|
23
|
-
g4IxjT2jElPJ+/0z6gqmFtd5YrSfJfYaNk6f4xMCgYEAlWGupdfOryPq0s6ZPIye
|
|
24
|
-
jQKQryX58Le9cDHdqJmLqEZILts3kTmjKYH+RPNgV1x23jkmLEXyKL/ysTt2zYcu
|
|
25
|
-
5Hei6+iCk90qYR18+61RHCmPW4ttpD3lqc48cB2SQH5OrYRRmG8OBKQ2fweg/FH2
|
|
26
|
-
IwnkV4r2WWSGzLHtXju3ZQECgYBwO6qD6ojM37gt7+IBiCpnMAH9dFIwIxkeeDHg
|
|
27
|
-
4OG82QjkLrpX6iBQdtcX2Z1DN5+m/x79S9TJtvrfnfuX5u3Cqf87ylS4S2zTZraN
|
|
28
|
-
L5XgY2NAu64gzlEOlBijF8PrksUI8F1YO7YFxk7uVQJajEkebTl5uEgIXNaKWwPh
|
|
29
|
-
BDF3cQKBgQCi5aAK+wkUHOIK23d++641luNCBkJKgtOOMnmjiL29WEK/xkHYvgEH
|
|
30
|
-
sYqGb06toaVrPFEEtkPvbbXsdxbw4aGPtQi9c7s9+Jerym2PsUTthC9Cw2nJgBgn
|
|
31
|
-
SRNeKaBiYe12IIVfxqTb8tGVuR3VHxjQR13q5eMn4n08D47PF6VD4g==
|
|
32
|
-
-----END RSA PRIVATE KEY-----`;
|
|
33
7
|
function base64url(input) {
|
|
34
8
|
return Buffer.from(input).toString("base64url");
|
|
35
9
|
}
|
|
@@ -74,7 +48,10 @@ async function getInstallationToken(jwt) {
|
|
|
74
48
|
return (await tokenRes.json()).token;
|
|
75
49
|
}
|
|
76
50
|
async function submitAsBot(title, body, labels) {
|
|
77
|
-
|
|
51
|
+
// Anonymous bot path. The loader is lazy so the default useBot=false flow
|
|
52
|
+
// never even reads the asset. Moving this to a server-side proxy is the
|
|
53
|
+
// long-term plan — see https://github.com/db-lyon/ue-mcp/issues/461.
|
|
54
|
+
const jwt = createJWT(loadAppManifestSignature());
|
|
78
55
|
const token = await getInstallationToken(jwt);
|
|
79
56
|
const res = await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/issues`, {
|
|
80
57
|
method: "POST",
|
package/dist/github-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-app.js","sourceRoot":"","sources":["../src/github-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAA0B,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"github-app.js","sourceRoot":"","sources":["../src/github-app.ts"],"names":[],"mappings":"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"}
|
package/dist/hook-handler.js
CHANGED
|
@@ -19,7 +19,48 @@ function readStdin() {
|
|
|
19
19
|
resolve("");
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Walk up from cwd looking for a .ue-mcp.json. Returns true if feedback is
|
|
24
|
+
* present in `disable[]` (hook should silently no-op) or if cwd is not inside
|
|
25
|
+
* a ue-mcp project at all (don't nudge an unrelated repo). Defense in depth
|
|
26
|
+
* against stale install — even if `npx ue-mcp uninstall-hooks` was never run,
|
|
27
|
+
* the hook self-disables once the user opts out via config.
|
|
28
|
+
*/
|
|
29
|
+
async function feedbackDisabledForCwd() {
|
|
30
|
+
try {
|
|
31
|
+
const fs = await import("node:fs");
|
|
32
|
+
const path = await import("node:path");
|
|
33
|
+
let dir = process.cwd();
|
|
34
|
+
// Guard against runaway loops on detached / unusual paths.
|
|
35
|
+
for (let i = 0; i < 32; i++) {
|
|
36
|
+
const candidate = path.join(dir, ".ue-mcp.json");
|
|
37
|
+
if (fs.existsSync(candidate)) {
|
|
38
|
+
try {
|
|
39
|
+
const cfg = JSON.parse(fs.readFileSync(candidate, "utf-8"));
|
|
40
|
+
const disable = Array.isArray(cfg.disable) ? cfg.disable : [];
|
|
41
|
+
return disable.includes("feedback");
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Malformed config: don't nudge, safer to no-op.
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const parent = path.dirname(dir);
|
|
49
|
+
if (parent === dir)
|
|
50
|
+
break;
|
|
51
|
+
dir = parent;
|
|
52
|
+
}
|
|
53
|
+
// No .ue-mcp.json found above cwd — this isn't a ue-mcp project.
|
|
54
|
+
// A hook running outside its own project is stale; silent no-op.
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
22
61
|
async function postToolUse() {
|
|
62
|
+
if (await feedbackDisabledForCwd())
|
|
63
|
+
return;
|
|
23
64
|
let input;
|
|
24
65
|
try {
|
|
25
66
|
const raw = await readStdin();
|
|
@@ -50,7 +91,8 @@ async function postToolUse() {
|
|
|
50
91
|
"In your NEXT message to the user, you MUST say:",
|
|
51
92
|
'"I had to use execute_python to <describe what and why>. Would you like to submit feedback so this can become a native tool?"',
|
|
52
93
|
"If the user agrees, call feedback(action=\"submit\") with title, summary, pythonWorkaround, and idealTool.",
|
|
53
|
-
"
|
|
94
|
+
"When you make that call, the MCP server will block until the user approves or declines the exact issue body in their client UI — you cannot bypass or pre-confirm that prompt.",
|
|
95
|
+
"If the user declines (or the client lacks elicitation support), the tool returns a refusal directive: do NOT retry, just resume the user's task.",
|
|
54
96
|
].join("\n"),
|
|
55
97
|
});
|
|
56
98
|
process.stdout.write(msg);
|
package/dist/hook-handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-handler.js","sourceRoot":"","sources":["../src/hook-handler.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AASH,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClC,4DAA4D;QAC5D,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa;YAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,KAAgB,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO;QACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,yEAAyE;QACzE,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,EAAE,CAAC,cAAc,CACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,EACzC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,wCAAwC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAClH,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,KAAK,gBAAgB;QAAE,OAAO;IAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,aAAa,EAAE;YACb,6GAA6G;YAC7G,iDAAiD;YACjD,+HAA+H;YAC/H,4GAA4G;YAC5G,
|
|
1
|
+
{"version":3,"file":"hook-handler.js","sourceRoot":"","sources":["../src/hook-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install the ue-mcp PostToolUse hook into a Claude Code settings.json. If
|
|
3
|
+
* `projectDir` is supplied, the settings path is also recorded in the
|
|
4
|
+
* project's .ue-mcp.json installedHooks registry.
|
|
5
|
+
*/
|
|
6
|
+
export declare function installClaudeHooks(settingsPath: string, projectDir?: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Remove the ue-mcp PostToolUse matcher from a Claude Code settings.json.
|
|
9
|
+
* Idempotent: a missing file, missing hooks block, or missing matcher is
|
|
10
|
+
* treated as already-uninstalled. Returns true if a matcher was actually
|
|
11
|
+
* removed, false otherwise.
|
|
12
|
+
*/
|
|
13
|
+
export declare function uninstallClaudeHooks(settingsPath: string, projectDir?: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Uninstall the hook from every path recorded in .ue-mcp.json
|
|
16
|
+
* `installedHooks[]`. Used by `npx ue-mcp uninstall-hooks` and by init when
|
|
17
|
+
* the user disables feedback or opts out of the prompt checkbox.
|
|
18
|
+
*/
|
|
19
|
+
export declare function uninstallAllRegisteredHooks(projectDir: string): {
|
|
20
|
+
removed: string[];
|
|
21
|
+
skipped: string[];
|
|
22
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { warn as logWarn } from "./log.js";
|
|
4
|
+
/**
|
|
5
|
+
* Symmetric install/uninstall for the Claude Code PostToolUse hook that
|
|
6
|
+
* prompts the agent to file feedback when execute_python was used as a
|
|
7
|
+
* workaround.
|
|
8
|
+
*
|
|
9
|
+
* Two invariants:
|
|
10
|
+
* 1. Every install records the settings path in .ue-mcp.json
|
|
11
|
+
* `installedHooks[]`, so uninstall can reach every site even after
|
|
12
|
+
* the user moves their MCP client config.
|
|
13
|
+
* 2. Uninstall is idempotent — calling it against a settings file that
|
|
14
|
+
* doesn't have our matcher is a no-op, not an error.
|
|
15
|
+
*/
|
|
16
|
+
const MATCHER = "mcp__ue-mcp__editor";
|
|
17
|
+
const COMMAND = "npx ue-mcp hook post-tool-use";
|
|
18
|
+
function readSettings(settingsPath) {
|
|
19
|
+
if (!fs.existsSync(settingsPath))
|
|
20
|
+
return {};
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
logWarn("hook-installer", `Claude settings at ${settingsPath} was not valid JSON — treating as empty`, e);
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function writeSettings(settingsPath, settings) {
|
|
30
|
+
const dir = path.dirname(settingsPath);
|
|
31
|
+
if (!fs.existsSync(dir))
|
|
32
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
33
|
+
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
|
|
34
|
+
}
|
|
35
|
+
function readProjectConfig(projectDir) {
|
|
36
|
+
const configPath = path.join(projectDir, ".ue-mcp.json");
|
|
37
|
+
if (!fs.existsSync(configPath))
|
|
38
|
+
return { configPath, config: {} };
|
|
39
|
+
try {
|
|
40
|
+
return {
|
|
41
|
+
configPath,
|
|
42
|
+
config: JSON.parse(fs.readFileSync(configPath, "utf-8")),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
logWarn("hook-installer", `.ue-mcp.json at ${configPath} was not valid JSON — registry will be rewritten`, e);
|
|
47
|
+
return { configPath, config: {} };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function writeProjectConfig(configPath, config) {
|
|
51
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
52
|
+
}
|
|
53
|
+
function registerInstalledHook(projectDir, settingsPath) {
|
|
54
|
+
const abs = path.resolve(settingsPath);
|
|
55
|
+
const { configPath, config } = readProjectConfig(projectDir);
|
|
56
|
+
const installed = new Set(config.installedHooks ?? []);
|
|
57
|
+
installed.add(abs);
|
|
58
|
+
config.installedHooks = [...installed].sort();
|
|
59
|
+
writeProjectConfig(configPath, config);
|
|
60
|
+
}
|
|
61
|
+
function unregisterInstalledHook(projectDir, settingsPath) {
|
|
62
|
+
const abs = path.resolve(settingsPath);
|
|
63
|
+
const { configPath, config } = readProjectConfig(projectDir);
|
|
64
|
+
if (!config.installedHooks || config.installedHooks.length === 0)
|
|
65
|
+
return;
|
|
66
|
+
config.installedHooks = config.installedHooks.filter((p) => path.resolve(p) !== abs);
|
|
67
|
+
if (config.installedHooks.length === 0)
|
|
68
|
+
delete config.installedHooks;
|
|
69
|
+
writeProjectConfig(configPath, config);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Install the ue-mcp PostToolUse hook into a Claude Code settings.json. If
|
|
73
|
+
* `projectDir` is supplied, the settings path is also recorded in the
|
|
74
|
+
* project's .ue-mcp.json installedHooks registry.
|
|
75
|
+
*/
|
|
76
|
+
export function installClaudeHooks(settingsPath, projectDir) {
|
|
77
|
+
const settings = readSettings(settingsPath);
|
|
78
|
+
if (!settings.hooks)
|
|
79
|
+
settings.hooks = {};
|
|
80
|
+
if (!settings.hooks.PostToolUse)
|
|
81
|
+
settings.hooks.PostToolUse = [];
|
|
82
|
+
const already = settings.hooks.PostToolUse.some((h) => h.matcher === MATCHER);
|
|
83
|
+
if (!already) {
|
|
84
|
+
settings.hooks.PostToolUse.push({
|
|
85
|
+
matcher: MATCHER,
|
|
86
|
+
hooks: [{ type: "command", command: COMMAND }],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
writeSettings(settingsPath, settings);
|
|
90
|
+
if (projectDir)
|
|
91
|
+
registerInstalledHook(projectDir, settingsPath);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Remove the ue-mcp PostToolUse matcher from a Claude Code settings.json.
|
|
95
|
+
* Idempotent: a missing file, missing hooks block, or missing matcher is
|
|
96
|
+
* treated as already-uninstalled. Returns true if a matcher was actually
|
|
97
|
+
* removed, false otherwise.
|
|
98
|
+
*/
|
|
99
|
+
export function uninstallClaudeHooks(settingsPath, projectDir) {
|
|
100
|
+
let removed = false;
|
|
101
|
+
if (fs.existsSync(settingsPath)) {
|
|
102
|
+
const settings = readSettings(settingsPath);
|
|
103
|
+
if (settings.hooks?.PostToolUse) {
|
|
104
|
+
const before = settings.hooks.PostToolUse.length;
|
|
105
|
+
settings.hooks.PostToolUse = settings.hooks.PostToolUse.filter((h) => h.matcher !== MATCHER);
|
|
106
|
+
if (settings.hooks.PostToolUse.length !== before) {
|
|
107
|
+
removed = true;
|
|
108
|
+
if (settings.hooks.PostToolUse.length === 0) {
|
|
109
|
+
delete settings.hooks.PostToolUse;
|
|
110
|
+
}
|
|
111
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
112
|
+
delete settings.hooks;
|
|
113
|
+
}
|
|
114
|
+
writeSettings(settingsPath, settings);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (projectDir)
|
|
119
|
+
unregisterInstalledHook(projectDir, settingsPath);
|
|
120
|
+
return removed;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Uninstall the hook from every path recorded in .ue-mcp.json
|
|
124
|
+
* `installedHooks[]`. Used by `npx ue-mcp uninstall-hooks` and by init when
|
|
125
|
+
* the user disables feedback or opts out of the prompt checkbox.
|
|
126
|
+
*/
|
|
127
|
+
export function uninstallAllRegisteredHooks(projectDir) {
|
|
128
|
+
const { configPath, config } = readProjectConfig(projectDir);
|
|
129
|
+
const paths = config.installedHooks ?? [];
|
|
130
|
+
const removed = [];
|
|
131
|
+
const skipped = [];
|
|
132
|
+
for (const p of paths) {
|
|
133
|
+
const didRemove = uninstallClaudeHooks(p);
|
|
134
|
+
if (didRemove)
|
|
135
|
+
removed.push(p);
|
|
136
|
+
else
|
|
137
|
+
skipped.push(p);
|
|
138
|
+
}
|
|
139
|
+
delete config.installedHooks;
|
|
140
|
+
writeProjectConfig(configPath, config);
|
|
141
|
+
return { removed, skipped };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=hook-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-installer.js","sourceRoot":"","sources":["../src/hook-installer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { EditorBridge } from "./bridge.js";
|
|
|
5
5
|
import { ProjectContext } from "./project.js";
|
|
6
6
|
import { attach, attachSummary } from "./deployer.js";
|
|
7
7
|
import { SERVER_INSTRUCTIONS } from "./instructions.js";
|
|
8
|
-
import { McpError } from "./errors.js";
|
|
8
|
+
import { McpError, ErrorCode } from "./errors.js";
|
|
9
9
|
import { info, warn } from "./log.js";
|
|
10
10
|
import { startVersionCheck, consumeUpgradeNotice } from "./version-check.js";
|
|
11
11
|
import { buildFlowRegistry } from "./flow/registry.js";
|
|
@@ -76,6 +76,21 @@ async function main() {
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
const getPlugins = () => pluginRecords.map((r) => toPluginInfo(r, project));
|
|
79
|
+
// Elicitation is only meaningful once the client has advertised support
|
|
80
|
+
// during initialize. We lazily probe at call time so the function is bound
|
|
81
|
+
// to whatever the live capabilities are, not a stale snapshot.
|
|
82
|
+
const buildElicit = (mcp) => {
|
|
83
|
+
return async (params) => {
|
|
84
|
+
const caps = mcp.server.getClientCapabilities();
|
|
85
|
+
if (!caps?.elicitation) {
|
|
86
|
+
// Surface a JSON-RPC-style error shape so callers can distinguish
|
|
87
|
+
// "user declined" from "client has no UI for this".
|
|
88
|
+
throw new McpError(ErrorCode.UNKNOWN_ACTION, "Connected MCP client did not advertise the `elicitation` capability — cannot obtain a deterministic user approval. Upgrade your client (Claude Code >= 2.1.76) or run the action from a client that supports MCP elicitation.");
|
|
89
|
+
}
|
|
90
|
+
const result = await mcp.server.elicitInput(params);
|
|
91
|
+
return result;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
79
94
|
const ctx = { bridge, project, getFlows, getPlugins };
|
|
80
95
|
// ── Flow engine: task registry ──────────────────────────────────
|
|
81
96
|
const registry = buildFlowRegistry(activeTools);
|
|
@@ -100,6 +115,7 @@ async function main() {
|
|
|
100
115
|
}, {
|
|
101
116
|
instructions: serverInstructions,
|
|
102
117
|
});
|
|
118
|
+
ctx.elicit = buildElicit(server);
|
|
103
119
|
const disabled = new Set(project.config.disable ?? []);
|
|
104
120
|
const tools = activeTools.filter((t) => !disabled.has(t.name));
|
|
105
121
|
// ── Register category tools — dispatched through the task registry ──
|
|
@@ -112,7 +128,7 @@ async function main() {
|
|
|
112
128
|
const action = params.action;
|
|
113
129
|
const taskName = `${tool.name}.${action}`;
|
|
114
130
|
const { action: _, ...taskParams } = params;
|
|
115
|
-
const flowCtx = { bridge, project, getFlows };
|
|
131
|
+
const flowCtx = { bridge, project, getFlows, getPlugins, elicit: ctx.elicit };
|
|
116
132
|
try {
|
|
117
133
|
const task = await registry.create(taskName, flowCtx, taskParams);
|
|
118
134
|
const result = await task.run();
|
|
@@ -312,6 +328,10 @@ else if (subcmd === "update") {
|
|
|
312
328
|
else if (subcmd === "hook") {
|
|
313
329
|
import("./hook-handler.js");
|
|
314
330
|
}
|
|
331
|
+
else if (subcmd === "uninstall-hooks") {
|
|
332
|
+
process.argv.splice(2, 1);
|
|
333
|
+
import("./uninstall-hooks.js");
|
|
334
|
+
}
|
|
315
335
|
else if (subcmd === "resolve") {
|
|
316
336
|
import("./resolve.js");
|
|
317
337
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/init.js
CHANGED
|
@@ -9,6 +9,7 @@ import { readUserAuth, startDeviceFlow, tryExchangeDeviceCode } from "./auth.js"
|
|
|
9
9
|
import { warn as logWarn } from "./log.js";
|
|
10
10
|
import { BOLD, CYAN, DIM, GREEN, RED, RESET, YELLOW, fail, info, ok, warn } from "./ui/ansi.js";
|
|
11
11
|
import { checkboxSelect, singleSelect } from "./ui/select.js";
|
|
12
|
+
import { installClaudeHooks, uninstallClaudeHooks } from "./hook-installer.js";
|
|
12
13
|
const CATEGORIES = [
|
|
13
14
|
{ name: "project", label: "project", alwaysOn: true },
|
|
14
15
|
{ name: "editor", label: "editor", alwaysOn: true },
|
|
@@ -81,38 +82,6 @@ function writeMcpConfig(configPath, uprojectPath) {
|
|
|
81
82
|
fs.mkdirSync(dir, { recursive: true });
|
|
82
83
|
fs.writeFileSync(configPath, JSON.stringify(existing, null, 2));
|
|
83
84
|
}
|
|
84
|
-
function installClaudeHooks(settingsPath) {
|
|
85
|
-
let existing = {};
|
|
86
|
-
if (fs.existsSync(settingsPath)) {
|
|
87
|
-
try {
|
|
88
|
-
existing = JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
|
|
89
|
-
}
|
|
90
|
-
catch (e) {
|
|
91
|
-
logWarn("init", `Claude settings at ${settingsPath} was not valid JSON - rewriting hooks section only`, e);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (!existing.hooks)
|
|
95
|
-
existing.hooks = {};
|
|
96
|
-
if (!existing.hooks.PostToolUse)
|
|
97
|
-
existing.hooks.PostToolUse = [];
|
|
98
|
-
// Avoid duplicate: check if we already have a ue-mcp hook
|
|
99
|
-
const already = existing.hooks.PostToolUse.some((h) => h.matcher === "mcp__ue-mcp__editor");
|
|
100
|
-
if (!already) {
|
|
101
|
-
existing.hooks.PostToolUse.push({
|
|
102
|
-
matcher: "mcp__ue-mcp__editor",
|
|
103
|
-
hooks: [
|
|
104
|
-
{
|
|
105
|
-
type: "command",
|
|
106
|
-
command: "npx ue-mcp hook post-tool-use",
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
const dir = path.dirname(settingsPath);
|
|
112
|
-
if (!fs.existsSync(dir))
|
|
113
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
114
|
-
fs.writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
|
|
115
|
-
}
|
|
116
85
|
function writeProjectConfig(projectDir, disabled) {
|
|
117
86
|
const configPath = path.join(projectDir, ".ue-mcp.json");
|
|
118
87
|
let existing = {};
|
|
@@ -408,6 +377,7 @@ async function init() {
|
|
|
408
377
|
const configuredClaudeCode = detected.some((c, i) => c.name.startsWith("Claude Code") && clientStates[i]);
|
|
409
378
|
if (configuredClaudeCode) {
|
|
410
379
|
console.log("");
|
|
380
|
+
const feedbackDisabled = disabled.includes("feedback");
|
|
411
381
|
const hookItems = [
|
|
412
382
|
{
|
|
413
383
|
label: "Allow agents to fall back to execute_python when native tools can't do the job",
|
|
@@ -415,19 +385,32 @@ async function init() {
|
|
|
415
385
|
suffix: "Recommended",
|
|
416
386
|
},
|
|
417
387
|
{
|
|
418
|
-
label: "Prompt agents to file a GitHub issue when they resort to Python workarounds",
|
|
388
|
+
label: "Prompt agents to ask whether to file a GitHub issue when they resort to Python workarounds",
|
|
389
|
+
// The hook is meaningless when the feedback tool is disabled, so do
|
|
390
|
+
// not even offer it pre-checked in that case.
|
|
419
391
|
checked: false,
|
|
420
|
-
suffix:
|
|
392
|
+
suffix: feedbackDisabled
|
|
393
|
+
? "Disabled because the feedback category is in disable[] — uncheck has no effect"
|
|
394
|
+
: "Opt-in; assembles a preview the user must approve before anything is posted",
|
|
421
395
|
},
|
|
422
396
|
];
|
|
423
397
|
const hookStates = await checkboxSelect("Agent behavior", hookItems);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
ok("Claude Code hooks installed");
|
|
398
|
+
const claudeSettingsPath = path.join(project.projectDir, ".claude", "settings.json");
|
|
399
|
+
if (hookStates[1] && !feedbackDisabled) {
|
|
400
|
+
installClaudeHooks(claudeSettingsPath, project.projectDir);
|
|
401
|
+
ok("Claude Code feedback prompt hook installed");
|
|
429
402
|
info(claudeSettingsPath);
|
|
430
403
|
}
|
|
404
|
+
else {
|
|
405
|
+
// Symmetric uninstall: if the user unchecks the prompt (or feedback is
|
|
406
|
+
// disabled outright), purge any matcher we may have installed on a
|
|
407
|
+
// prior init run. Token waste and stale-consent both fixed here.
|
|
408
|
+
const removed = uninstallClaudeHooks(claudeSettingsPath, project.projectDir);
|
|
409
|
+
if (removed) {
|
|
410
|
+
ok("Claude Code feedback prompt hook removed");
|
|
411
|
+
info(claudeSettingsPath);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
431
414
|
// 9b. Claude Code skills — bundled workflow guides
|
|
432
415
|
const skillsResult = installSkills(project.projectDir);
|
|
433
416
|
if (skillsResult.error) {
|