ue-mcp 1.0.0 → 1.0.1
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/dist/tool-counts.json
CHANGED
package/dist/tools/feedback.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
import { type ToolDef } from "../types.js";
|
|
2
|
+
interface RejectionReason {
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function validateSubmission(title: string, summary: string, pythonWorkaround: string | undefined, idealTool: string | undefined, sessionWorkaroundCount: number): RejectionReason | null;
|
|
2
7
|
export declare const feedbackTool: ToolDef;
|
|
8
|
+
export {};
|
package/dist/tools/feedback.js
CHANGED
|
@@ -1,7 +1,37 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { categoryTool } from "../types.js";
|
|
2
|
+
import { categoryTool, directive } from "../types.js";
|
|
3
3
|
import { submitFeedback } from "../github-app.js";
|
|
4
4
|
import { getWorkarounds, clearWorkarounds } from "../workaround-tracker.js";
|
|
5
|
+
const PLACEHOLDER_TITLE_RE = /^(noop|nop|test|tests?|testing|x|y|z|todo|tbd|tba|ignore|ignored|stop|dummy|temp|tmp|placeholder|accidental|oops|cleanup|n\/?a|none|null|undefined|na|misc|\.+|-+)$/i;
|
|
6
|
+
const PLACEHOLDER_PHRASE_RE = /\b(ignore (previous|accidental|placeholder)|accidental (feedback|submission|tool call|placeholder)|placeholder feedback|stop accidental|cleanup needed|test submission)\b/i;
|
|
7
|
+
export function validateSubmission(title, summary, pythonWorkaround, idealTool, sessionWorkaroundCount) {
|
|
8
|
+
const t = (title ?? "").trim();
|
|
9
|
+
const s = (summary ?? "").trim();
|
|
10
|
+
const py = (pythonWorkaround ?? "").trim();
|
|
11
|
+
const ideal = (idealTool ?? "").trim();
|
|
12
|
+
if (t.length < 10) {
|
|
13
|
+
return { code: "title_too_short", message: `Title must be at least 10 characters describing the specific tool gap (got ${t.length}).` };
|
|
14
|
+
}
|
|
15
|
+
if (PLACEHOLDER_TITLE_RE.test(t)) {
|
|
16
|
+
return { code: "placeholder_title", message: `Title "${t}" is a placeholder. Titles must name a specific gap (e.g. "blueprint.set_class_default does not save asset").` };
|
|
17
|
+
}
|
|
18
|
+
if (PLACEHOLDER_PHRASE_RE.test(t) || PLACEHOLDER_PHRASE_RE.test(s)) {
|
|
19
|
+
return { code: "meta_apology", message: `This looks like a meta/apology submission ("ignore previous", "accidental", etc). Do not file follow-ups about earlier accidental feedback.` };
|
|
20
|
+
}
|
|
21
|
+
if (s.length < 40) {
|
|
22
|
+
return { code: "summary_too_short", message: `Summary must be at least 40 characters explaining what was attempted and why the native tool fell short (got ${s.length}).` };
|
|
23
|
+
}
|
|
24
|
+
if (s.toLowerCase() === t.toLowerCase()) {
|
|
25
|
+
return { code: "summary_duplicates_title", message: `Summary must add information beyond the title.` };
|
|
26
|
+
}
|
|
27
|
+
if (!py && !ideal) {
|
|
28
|
+
return { code: "no_concrete_payload", message: `Provide either pythonWorkaround (the code that was used) or idealTool (what native action should have handled it). Without one of these there is no actionable gap to file.` };
|
|
29
|
+
}
|
|
30
|
+
if (!py && sessionWorkaroundCount === 0) {
|
|
31
|
+
return { code: "no_workaround_evidence", message: `No execute_python calls were tracked this session and no pythonWorkaround was provided. There is no workaround to document.` };
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
5
35
|
// Map tool category names to GitHub labels
|
|
6
36
|
const CATEGORY_LABELS = {
|
|
7
37
|
level: ["level"],
|
|
@@ -72,6 +102,31 @@ export const feedbackTool = categoryTool("feedback", "Submit feedback to improve
|
|
|
72
102
|
const summary = params.summary;
|
|
73
103
|
const pythonWorkaround = params.pythonWorkaround;
|
|
74
104
|
const idealTool = params.idealTool;
|
|
105
|
+
const sessionWorkarounds = getWorkarounds();
|
|
106
|
+
const rejection = validateSubmission(title, summary, pythonWorkaround, idealTool, sessionWorkarounds.length);
|
|
107
|
+
if (rejection) {
|
|
108
|
+
// Clear the tracked workarounds so a retry doesn't keep dragging the same
|
|
109
|
+
// session log along. The agent's reporting obligation is satisfied by this
|
|
110
|
+
// rejection - we explicitly tell it not to retry.
|
|
111
|
+
clearWorkarounds();
|
|
112
|
+
return directive([
|
|
113
|
+
`[FEEDBACK REJECTED - DO NOT RETRY]`,
|
|
114
|
+
`Reason (${rejection.code}): ${rejection.message}`,
|
|
115
|
+
``,
|
|
116
|
+
`Your feedback obligation from the execute_python directive is now DISCHARGED.`,
|
|
117
|
+
`Do NOT call feedback(submit) again with a modified title, a placeholder,`,
|
|
118
|
+
`or a meta-apology issue. Move on with the user's actual task.`,
|
|
119
|
+
``,
|
|
120
|
+
`Only file feedback when ALL of the following are true:`,
|
|
121
|
+
` - The user explicitly asked for feedback to be submitted, AND`,
|
|
122
|
+
` - You can name a specific ue-mcp tool/action that should have handled the task, AND`,
|
|
123
|
+
` - You have the python workaround (or the concrete ideal tool signature) ready.`,
|
|
124
|
+
].join("\n"), { submitted: false, code: rejection.code, message: rejection.message }, {
|
|
125
|
+
kind: "feedback.rejected",
|
|
126
|
+
requiredActions: ["do_not_retry_feedback_submit", "resume_user_task"],
|
|
127
|
+
context: { code: rejection.code },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
75
130
|
const sections = ["## Summary", summary];
|
|
76
131
|
if (idealTool) {
|
|
77
132
|
sections.push("", "## Ideal Tool/Action", idealTool);
|
|
@@ -79,11 +134,9 @@ export const feedbackTool = categoryTool("feedback", "Submit feedback to improve
|
|
|
79
134
|
if (pythonWorkaround) {
|
|
80
135
|
sections.push("", "## Python Workaround Used", "```python", pythonWorkaround, "```");
|
|
81
136
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
sections.push("", "## Session Workaround Log", `${workarounds.length} execute_python call(s) this session:`, "");
|
|
86
|
-
for (const w of workarounds) {
|
|
137
|
+
if (sessionWorkarounds.length > 0) {
|
|
138
|
+
sections.push("", "## Session Workaround Log", `${sessionWorkarounds.length} execute_python call(s) this session:`, "");
|
|
139
|
+
for (const w of sessionWorkarounds) {
|
|
87
140
|
sections.push(`### ${w.timestamp}`, "```python", w.code, "```", w.resultSnippet ? `> Result: \`${w.resultSnippet}\`` : "", "");
|
|
88
141
|
}
|
|
89
142
|
clearWorkarounds();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAkC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAkC,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5E,MAAM,oBAAoB,GACxB,sKAAsK,CAAC;AAEzK,MAAM,qBAAqB,GACzB,4KAA4K,CAAC;AAO/K,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,OAAe,EACf,gBAAoC,EACpC,SAA6B,EAC7B,sBAA8B;IAE9B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,8EAA8E,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1I,CAAC;IACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,CAAC,+GAA+G,EAAE,CAAC;IAC5K,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,6IAA6I,EAAE,CAAC;IAC1L,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,gHAAgH,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAC9K,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,6KAA6K,EAAE,CAAC;IACjO,CAAC;IACD,IAAI,CAAC,EAAE,IAAI,sBAAsB,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,6HAA6H,EAAE,CAAC;IACpL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2CAA2C;AAC3C,MAAM,eAAe,GAA6B;IAChD,KAAK,EAAO,CAAC,OAAO,CAAC;IACrB,SAAS,EAAG,CAAC,WAAW,CAAC;IACzB,KAAK,EAAO,CAAC,OAAO,CAAC;IACrB,QAAQ,EAAI,CAAC,UAAU,CAAC;IACxB,SAAS,EAAG,CAAC,WAAW,CAAC;IACzB,MAAM,EAAM,CAAC,QAAQ,CAAC;IACtB,QAAQ,EAAI,CAAC,UAAU,CAAC;IACxB,OAAO,EAAK,CAAC,SAAS,CAAC;IACvB,MAAM,EAAM,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAG,CAAC,WAAW,CAAC;IACzB,GAAG,EAAS,CAAC,KAAK,CAAC;IACnB,KAAK,EAAO,CAAC,OAAO,CAAC;IACrB,OAAO,EAAK,CAAC,SAAS,CAAC;IACvB,GAAG,EAAS,CAAC,KAAK,CAAC;IACnB,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,OAAO,EAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAO,CAAC,OAAO,EAAE,UAAU,CAAC;CAClC,CAAC;AAEF,SAAS,WAAW,CAAC,KAAa,EAAE,OAAe,EAAE,SAAkB;IACrE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEnD,sFAAsF;IACtF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM;gBAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAyB;QACrC,CAAC,0DAA0D,EAAG,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC,+CAA+C,EAAe,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC,uDAAuD,EAAM,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC,4BAA4B,EAAkC,CAAC,UAAU,CAAC,CAAC;QAC5E,CAAC,gCAAgC,EAA6B,CAAC,SAAS,CAAC,CAAC;QAC1E,CAAC,mCAAmC,EAA0B,CAAC,QAAQ,CAAC,CAAC;QACzE,CAAC,wDAAwD,EAAK,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC,sDAAsD,EAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpF,CAAC,4CAA4C,EAAiB,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC,+BAA+B,EAA+B,CAAC,WAAW,CAAC,CAAC;QAC7E,CAAC,kBAAkB,EAA2C,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC,yBAAyB,EAAoC,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC,4CAA4C,EAAkB,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC,6BAA6B,EAAgC,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC,gCAAgC,EAA6B,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC,0BAA0B,EAAmC,CAAC,KAAK,CAAC,CAAC;KACvE,CAAC;IACF,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,wEAAwE;IACxE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAY,YAAY,CAC/C,UAAU,EACV,6GAA6G,EAC7G;IACE,MAAM,EAAE;QACN,WAAW,EAAE,yFAAyF;QACtG,OAAO,EAAE,KAAK,EAAE,IAAiB,EAAE,MAA+B,EAAE,EAAE;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;YACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAsC,CAAC;YACvE,MAAM,SAAS,GAAG,MAAM,CAAC,SAA+B,CAAC;YAEzD,MAAM,kBAAkB,GAAG,cAAc,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7G,IAAI,SAAS,EAAE,CAAC;gBACd,0EAA0E;gBAC1E,2EAA2E;gBAC3E,kDAAkD;gBAClD,gBAAgB,EAAE,CAAC;gBACnB,OAAO,SAAS,CACd;oBACE,oCAAoC;oBACpC,WAAW,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,OAAO,EAAE;oBAClD,EAAE;oBACF,+EAA+E;oBAC/E,0EAA0E;oBAC1E,+DAA+D;oBAC/D,EAAE;oBACF,wDAAwD;oBACxD,iEAAiE;oBACjE,uFAAuF;oBACvF,kFAAkF;iBACnF,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,EACtE;oBACE,IAAI,EAAE,mBAAmB;oBACzB,eAAe,EAAE,CAAC,8BAA8B,EAAE,kBAAkB,CAAC;oBACrE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;iBAClC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAEnD,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,gBAAgB,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CACX,EAAE,EACF,2BAA2B,EAC3B,WAAW,EACX,gBAAgB,EAChB,KAAK,CACN,CAAC;YACJ,CAAC;YAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,2BAA2B,EAAE,GAAG,kBAAkB,CAAC,MAAM,uCAAuC,EAAE,EAAE,CAAC,CAAC;gBACxH,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;oBACnC,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,SAAS,EAAE,EACpB,WAAW,EACX,CAAC,CAAC,IAAI,EACN,KAAK,EACL,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,EACzD,EAAE,CACH,CAAC;gBACJ,CAAC;gBACD,gBAAgB,EAAE,CAAC;YACrB,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;YAElE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzD,OAAO;gBACL,OAAO,EAAE,kCAAkC;gBAC3C,SAAS,EAAE,MAAM,CAAC,GAAG;gBACrB,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,MAAM;aACP,CAAC;QACJ,CAAC;KACF;CACF,EACD,SAAS,EACT;IACE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,+EAA+E,CAAC;IAC5F,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,mFAAmF,CAAC;IAChG,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oGAAoG,CAAC;CAClH,CACF,CAAC"}
|