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.
Binary file
@@ -1,11 +1,13 @@
1
1
  import type { TaskContext } from "@db-lyon/flowkit";
2
- import type { IBridge } from "../bridge.js";
3
- import type { ProjectContext } from "../project.js";
4
- export interface FlowContext extends TaskContext {
5
- bridge: IBridge;
6
- project: ProjectContext;
7
- getFlows?: () => Array<{
8
- name: string;
9
- description?: string;
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
  }
@@ -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
- // Wrap the existing handler function adapt ToolContext to FlowContext
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
- const toolCtx = { bridge: ctx.bridge, project: ctx.project, getFlows: ctx.getFlows };
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,wEAAwE;gBACxE,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,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAClG,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1C,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"}
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"}
@@ -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
- const jwt = createJWT(EMBEDDED_PEM);
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",
@@ -1 +1 @@
1
- {"version":3,"file":"github-app.js","sourceRoot":"","sources":["../src/github-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-app.js","sourceRoot":"","sources":["../src/github-app.ts"],"names":[],"mappings":"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"}
@@ -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
- "Do NOT skip or defer this step.",
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);
@@ -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,iCAAiC;SAClC,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,wEAAwE;AAExE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;AAErE,QAAQ,KAAK,EAAE,CAAC;IACd,KAAK,eAAe;QAClB,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM;IACR;QACE,2DAA2D;QAC3D,MAAM;AACV,CAAC"}
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":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,SAAS,iBAAiB,CAAC,OAAoB;IAC7C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IAErC,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;IAC9D,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/B,oEAAoE;IACpE,qEAAqE;IACrE,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,iBAAiB,IAAI,SAAS,GAAG,CAAC,CAAC;YAEpH,iEAAiE;YACjE,qEAAqE;YACrE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,yEAAyE;IACzE,uEAAuE;IACvE,sDAAsD;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;IAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;IACrC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC;IAEzC,sEAAsE;IACtE,uEAAuE;IACvE,sEAAsE;IACtE,MAAM,QAAQ,GAAG,GAAkD,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE;gBACjD,KAAK,EAAE,UAAU,CAAC,QAAQ;gBAC1B,KAAK,EAAE,UAAU,CAAC,QAAQ;aAC3B,CAAC,CAAC,MAAM,CAAC;YACV,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI;gBACJ,WAAW,EAAG,GAAgC,CAAC,WAAW;aAC3D,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAiB,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1F,MAAM,GAAG,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEnE,mEAAmE;IACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,sBAAsB,EAAE,CAAC;QACpE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;IAEnD,mEAAmE;IACnE,wEAAwE;IACxE,kEAAkE;IAClE,mDAAmD;IACnD,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC3E,MAAM,kBAAkB,GAAG,cAAc;QACvC,CAAC,CAAC,GAAG,mBAAmB,iCAAiC,cAAc,EAAE;QACzE,CAAC,CAAC,mBAAmB,CAAC;IAExB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;KACjB,EAAE;QACD,YAAY,EAAE,kBAAkB;KACjC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,uEAAuE;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAA8B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YACvC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1C,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;YAC5C,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YAE3D,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEhC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,QAAQ,SAAS,CAAC;oBAC/D,OAAO;wBACL,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wBAAwB,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5F,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAEzD,qEAAqE;gBACrE,oEAAoE;gBACpE,mEAAmE;gBACnE,qEAAqE;gBACrE,iBAAiB;gBACjB,IAAI,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAA0C;wBACpD,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAmB,EAAE;qBACjE,CAAC;oBACF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACxB,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;yBACjE,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC5E,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACtF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,mBAAmB;IACnB,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE;QACzD,KAAK,EAAE,UAAU,CAAC,QAAQ;QAC1B,KAAK,EAAE,UAAU,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,aAAa,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAEtK,6EAA6E;IAC7E,MAAM,YAAY,GAAG,GAAe,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE;QAC5E,KAAK,EAAE,UAAU,CAAC,QAAQ;QAC1B,KAAK,EAAE,UAAU,CAAC,QAAQ;KAC3B,CAAC,CAAC,MAAM,CAAC;IAEV,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,SAAS,GAA8B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,2FAA2F;IAC3F,8EAA8E;IAC9E,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACjC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;gBAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,QAAQ,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAE3B,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,KAAK,iBAAiB,IAAI,aAAa,CAAC,MAAM,YAAY;QAC5D,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,SAAS,uBAAuB,UAAU,EAAE,CAAC,CAAC;IAE9G,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,SAA6B;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAiC,CAAC;QAC5F,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QACnD,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjG,MAAM,CAAC,GAAG,KAA4C,CAAC;gBACvD,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBAC/D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,QAAQ,EAAE,8CAA+C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,mBAA6C;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,YAAY,CAAC,GAAiB,EAAE,OAAuB;IAC9D,MAAM,eAAe,GAAG,GAAG,CAAC,kBAAkB;QAC5C,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,eAAe;QACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,GAAG,CAAC,YAAY;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB,EAAE,IAAY;IAC9D,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAEnE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC;KAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC;KAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9B,CAAC;KAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;IAChC,MAAM,CAAC,cAAc,CAAC,CAAC;AACzB,CAAC;KAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC5B,CAAC;KAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;IAC7E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;KAAM,CAAC;IACN,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
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: "Opt-in; posts session execute_python bodies to a public issue tracker",
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
- if (hookStates[1]) {
425
- // Write hooks to the project-level Claude Code settings
426
- const claudeSettingsPath = path.join(project.projectDir, ".claude", "settings.json");
427
- installClaudeHooks(claudeSettingsPath);
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) {