unity-open-mcp 1.0.0 → 1.1.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/dist/batch-spawn.d.ts +26 -0
- package/dist/batch-spawn.js +152 -35
- package/dist/batch-spawn.js.map +1 -1
- package/dist/capabilities/build-capabilities.d.ts +10 -0
- package/dist/capabilities/build-capabilities.js +4 -0
- package/dist/capabilities/build-capabilities.js.map +1 -1
- package/dist/capabilities/capabilities-view.d.ts +48 -0
- package/dist/capabilities/capabilities-view.js +93 -0
- package/dist/capabilities/capabilities-view.js.map +1 -0
- package/dist/child-supervision.d.ts +34 -0
- package/dist/child-supervision.js +110 -0
- package/dist/child-supervision.js.map +1 -0
- package/dist/cli/cli.js +9 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands.js +37 -4
- package/dist/cli/commands.js.map +1 -1
- package/dist/compressible-router.js +12 -1
- package/dist/compressible-router.js.map +1 -1
- package/dist/constants.d.ts +17 -7
- package/dist/constants.js +17 -7
- package/dist/constants.js.map +1 -1
- package/dist/dialog-dismiss.d.ts +11 -0
- package/dist/dialog-dismiss.js +59 -4
- package/dist/dialog-dismiss.js.map +1 -1
- package/dist/editor-wedge.d.ts +45 -0
- package/dist/editor-wedge.js +111 -0
- package/dist/editor-wedge.js.map +1 -0
- package/dist/event-stream.d.ts +6 -3
- package/dist/event-stream.js +62 -5
- package/dist/event-stream.js.map +1 -1
- package/dist/gate-error.d.ts +2 -0
- package/dist/gate-error.js +9 -0
- package/dist/gate-error.js.map +1 -1
- package/dist/instance-discovery.d.ts +23 -0
- package/dist/instance-discovery.js +47 -1
- package/dist/instance-discovery.js.map +1 -1
- package/dist/live-client.d.ts +23 -5
- package/dist/live-client.js +132 -31
- package/dist/live-client.js.map +1 -1
- package/dist/process-diagnostics.d.ts +4 -3
- package/dist/process-diagnostics.js +37 -7
- package/dist/process-diagnostics.js.map +1 -1
- package/dist/results.d.ts +8 -0
- package/dist/results.js +4 -1
- package/dist/results.js.map +1 -1
- package/dist/routers.js +4 -1
- package/dist/routers.js.map +1 -1
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tool-hint.d.ts +36 -0
- package/dist/tool-hint.js +98 -0
- package/dist/tool-hint.js.map +1 -0
- package/dist/tool-router.d.ts +8 -1
- package/dist/tool-router.js +266 -20
- package/dist/tool-router.js.map +1 -1
- package/dist/tools/agent-capabilities.js +27 -1
- package/dist/tools/agent-capabilities.js.map +1 -1
- package/dist/tools/baseline-create.js +1 -1
- package/dist/tools/baseline-create.js.map +1 -1
- package/dist/tools/batch-execute.js +12 -1
- package/dist/tools/batch-execute.js.map +1 -1
- package/dist/tools/bridge-status.js +21 -1
- package/dist/tools/bridge-status.js.map +1 -1
- package/dist/tools/execute-csharp.js +11 -1
- package/dist/tools/execute-csharp.js.map +1 -1
- package/dist/tools/execute-menu.js +33 -2
- package/dist/tools/execute-menu.js.map +1 -1
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/invoke-method.js +15 -1
- package/dist/tools/invoke-method.js.map +1 -1
- package/dist/tools/read-compile-errors.js +30 -9
- package/dist/tools/read-compile-errors.js.map +1 -1
- package/dist/tools/regression-check.js +2 -1
- package/dist/tools/regression-check.js.map +1 -1
- package/dist/tools/run-tests.js +11 -2
- package/dist/tools/run-tests.js.map +1 -1
- package/dist/tools/scan-all.js +2 -2
- package/dist/tools/scan-all.js.map +1 -1
- package/dist/unity-log.d.ts +16 -0
- package/dist/unity-log.js +60 -9
- package/dist/unity-log.js.map +1 -1
- package/package.json +1 -1
|
@@ -72,12 +72,44 @@ export const FD_PROBE_TIMEOUT_MS = 3_000;
|
|
|
72
72
|
// ---------------------------------------------------------------------------
|
|
73
73
|
// Platform-specific probe implementations.
|
|
74
74
|
// ---------------------------------------------------------------------------
|
|
75
|
+
/**
|
|
76
|
+
* Count the actual file-descriptor rows in an `lsof -p` listing. Not every
|
|
77
|
+
* output row is an fd: `cwd` (working directory), `txt` (mapped executable and
|
|
78
|
+
* shared libraries — often dozens of rows on a loaded Editor), `rtd`, `del`,
|
|
79
|
+
* `ltz`/`ltx` rows describe directories and mmaps that Mono's IOSelector never
|
|
80
|
+
* registers. Counting every row systematically inflated the absolute fd count
|
|
81
|
+
* against the ~1024 Mono ceiling (an asset-heavy Editor maps hundreds of
|
|
82
|
+
* `txt` rows alone), skewing the warn/critical ratio states. The FD column
|
|
83
|
+
* index is located from the header; a row counts when its FD value starts with
|
|
84
|
+
* a digit (real fds are "0u"/"1w"/"255r"-style — number plus optional
|
|
85
|
+
* mode/lock letters). When no recognizable header exists (unusual), fall back
|
|
86
|
+
* to counting all rows so the probe never under-reports to zero.
|
|
87
|
+
*/
|
|
88
|
+
function countLsofFdRows(lines) {
|
|
89
|
+
if (lines.length === 0)
|
|
90
|
+
return 0;
|
|
91
|
+
const header = lines[0].trim().split(/\s+/);
|
|
92
|
+
const fdCol = header.indexOf("FD");
|
|
93
|
+
let count = 0;
|
|
94
|
+
for (let i = 1; i < lines.length; i++) {
|
|
95
|
+
if (fdCol >= 0) {
|
|
96
|
+
const fd = lines[i].trim().split(/\s+/)[fdCol];
|
|
97
|
+
if (fd !== undefined && /^\d/.test(fd))
|
|
98
|
+
count++;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
count++;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return count;
|
|
105
|
+
}
|
|
75
106
|
/**
|
|
76
107
|
* Parse the stdout of a successful `lsof -p <pid>` run into an fd count.
|
|
77
108
|
* Pure (no I/O) so it can be unit-tested without spawning lsof. lsof prints
|
|
78
|
-
* a header line ("COMMAND PID USER FD TYPE ...") then one
|
|
79
|
-
*
|
|
80
|
-
* the PID vanished between
|
|
109
|
+
* a header line ("COMMAND PID USER FD TYPE ...") then one row per open file;
|
|
110
|
+
* only rows whose FD column is a numbered descriptor count (see
|
|
111
|
+
* {@link countLsofFdRows}). Empty stdout means the PID vanished between
|
|
112
|
+
* spawn and read.
|
|
81
113
|
*/
|
|
82
114
|
export function parseLsofStdout(stdout, pid) {
|
|
83
115
|
const lines = stdout.split(/\r?\n/).filter((l) => l.length > 0);
|
|
@@ -89,10 +121,8 @@ export function parseLsofStdout(stdout, pid) {
|
|
|
89
121
|
message: `lsof produced no output for PID ${pid}.`,
|
|
90
122
|
};
|
|
91
123
|
}
|
|
92
|
-
// Header is the first line; its FD column says "FD" literally. The rest are
|
|
93
|
-
// per-fd rows. Subtract 1 for the header.
|
|
94
124
|
return {
|
|
95
|
-
count:
|
|
125
|
+
count: countLsofFdRows(lines),
|
|
96
126
|
method: "lsof",
|
|
97
127
|
approximate: false,
|
|
98
128
|
};
|
|
@@ -133,7 +163,7 @@ export function classifyLsofError(err, pid) {
|
|
|
133
163
|
const capturedLines = capturedStdout.split(/\r?\n/).filter((l) => l.length > 0);
|
|
134
164
|
if (capturedLines.length > 0) {
|
|
135
165
|
return {
|
|
136
|
-
count:
|
|
166
|
+
count: countLsofFdRows(capturedLines),
|
|
137
167
|
method: "lsof",
|
|
138
168
|
approximate: timedOut,
|
|
139
169
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-diagnostics.js","sourceRoot":"","sources":["../src/process-diagnostics.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,eAAe;AACf,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,sBAAsB;AACtB,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,iEAAiE;AACjE,EAAE;AACF,wBAAwB;AACxB,uEAAuE;AACvE,0EAA0E;AAC1E,kEAAkE;AAClE,0EAA0E;AAC1E,2EAA2E;AAC3E,8CAA8C;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAoFzC,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"process-diagnostics.js","sourceRoot":"","sources":["../src/process-diagnostics.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,eAAe;AACf,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,sBAAsB;AACtB,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,iEAAiE;AACjE,EAAE;AACF,wBAAwB;AACxB,uEAAuE;AACvE,0EAA0E;AAC1E,kEAAkE;AAClE,0EAA0E;AAC1E,2EAA2E;AAC3E,8CAA8C;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAoFzC,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CAAC,KAAe;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,KAAK,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,GAAW;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,mCAAmC,GAAG,GAAG;SACnD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;QAC7B,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,GAAW;IAEX,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAC3C,CAAC,CAAE,GAAgF;QACnF,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,cAAc,GAClB,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,2EAA2E;IAC3E,2EAA2E;IAC3E,sCAAsC;IACtC,MAAM,QAAQ,GACZ,MAAM,EAAE,IAAI,KAAK,WAAW;QAC5B,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC;YACrC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,QAAQ;SACtB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,wBAAwB,mBAAmB,cAAc,GAAG,kBAAkB;SACxF,CAAC;IACJ,CAAC;IACD,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,oCAAoC,GAAG,GAAG;SACpD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,uBAAuB,GAAG,KAAK,OAAO,EAAE;KAClD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YACjD,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,mBAAmB;YAC5B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,mEAAmE;AACnE,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,YAAY,GAAG,qBAAqB;aAC9C,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,wBAAwB,GAAG,QAClC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE;SACH,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,+CAA+C;IAC/C,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CACnB,YAAY,EACZ;YACE,YAAY;YACZ,iBAAiB;YACjB,UAAU;YACV,oBAAoB,GAAG,6CAA6C;SACrE,EACD;YACE,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,mBAAmB;SAC7B,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,gDAAgD,GAAG,KAC1D,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE;SACH,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,2CAA2C,GAAG,GAAG;SAC3D,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,4BAA4B,OAAO,aAAa,GAAG,GAAG;SAChE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,cAAc;QACtB,qEAAqE;QACrE,oEAAoE;QACpE,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAY;IACzB,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,eAAe,GAAG,GAAG;aAC/B,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,sBAAsB;YAC9B,OAAO,EAAE,mDAAmD,OAAO,CAAC,QAAQ,IAAI;SACjF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,qDAAqD;AACrD,IAAI,YAAY,GAAY,SAAS,CAAC;AAEtC,qFAAqF;AACrF,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,MAAM,IAAI,GAAG,YAAY,CAAC;IAC1B,YAAY,GAAG,IAAI,IAAI,SAAS,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,WAAW,GAAG,KAAK,EACnB,UAAkB,kBAAkB;IAEpC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAChD,IAAI,KAAsB,CAAC;IAC3B,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,wEAAwE;QACxE,kEAAkE;QAClE,wEAAwE;QACxE,qDAAqD;QACrD,KAAK,GAAG,cAAc,CAAC;IACzB,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,oEAAoE;QACpE,yDAAyD;QACzD,KAAK,GAAG,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;SAAM,IAAI,aAAa,IAAI,iBAAiB,EAAE,CAAC;QAC9C,KAAK,GAAG,UAAU,CAAC;IACrB,CAAC;SAAM,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;QAC1C,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,OAAO;QACL,aAAa;QACb,QAAQ;QACR,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,CAAC,WAAW;KACvB,CAAC;AACJ,CAAC;AAsCD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA4B,EAC5B,UAAkB,kBAAkB;IAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,qEAAqE;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CACpB,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAE3B,8EAA8E;IAC9E,+EAA+E;IAC/E,+EAA+E;IAC/E,6EAA6E;IAC7E,wEAAwE;IACxE,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1C,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACjE,IAAI,SAAS,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,2EAA2E;IAC3E,+EAA+E;IAC/E,+EAA+E;IAC/E,4EAA4E;IAC5E,6EAA6E;IAC7E,kEAAkE;IAClE,2EAA2E;IAC3E,4EAA4E;IAC5E,wEAAwE,CAAC"}
|
package/dist/results.d.ts
CHANGED
|
@@ -10,5 +10,13 @@ export interface ErrorResultInput {
|
|
|
10
10
|
* surface richer structured data (e.g. HTTP status + body from the bridge).
|
|
11
11
|
*/
|
|
12
12
|
detail?: unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Optional `_source` stamp on the DEFAULT body (ignored when `detail` is
|
|
15
|
+
* supplied — a custom body stamps its own). "local" for caller-side
|
|
16
|
+
* validation failures, "offline" when an offline-first attempt failed
|
|
17
|
+
* without bridge contact. Keeps the router's derived `_route` honest for
|
|
18
|
+
* error results too, instead of defaulting everything to route:"live".
|
|
19
|
+
*/
|
|
20
|
+
source?: "live" | "offline" | "local";
|
|
13
21
|
}
|
|
14
22
|
export declare function makeErrorResult(input: ErrorResultInput): CallToolResult;
|
package/dist/results.js
CHANGED
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
// is supplied, it replaces the error envelope entirely (callers that build a
|
|
14
14
|
// richer custom body rely on this).
|
|
15
15
|
export function makeErrorResult(input) {
|
|
16
|
-
const body = input.detail ?? {
|
|
16
|
+
const body = input.detail ?? {
|
|
17
|
+
error: { code: input.code, message: input.message },
|
|
18
|
+
...(input.source ? { _source: input.source } : {}),
|
|
19
|
+
};
|
|
17
20
|
return {
|
|
18
21
|
content: [{ type: "text", text: JSON.stringify(body) }],
|
|
19
22
|
isError: true,
|
package/dist/results.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,oCAAoC;
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,oCAAoC;AAyBpC,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QACnD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IACF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
package/dist/routers.js
CHANGED
|
@@ -49,7 +49,10 @@ export function buildRouterStack(env) {
|
|
|
49
49
|
const pingCache = new PingCache();
|
|
50
50
|
const live = new LiveClient(env.port, pingCache, env.authToken, env.projectPath, undefined, env.envPort);
|
|
51
51
|
const batch = new BatchSpawn({ projectPath: env.projectPath });
|
|
52
|
-
|
|
52
|
+
// projectPath/envPort let the reader's reconnects re-read the instance lock
|
|
53
|
+
// (the bridge rotates its bearer token on every domain reload), mirroring
|
|
54
|
+
// LiveClient's refreshEndpointFromLock self-heal.
|
|
55
|
+
const eventStream = new BridgeEventStream(bridgeBaseUrl(env.port), undefined, env.authToken, env.projectPath, env.envPort);
|
|
53
56
|
const sessionState = new ToolSessionState();
|
|
54
57
|
const router = new ToolRouter(live, batch, env.projectPath, eventStream, sessionState);
|
|
55
58
|
const resourceRouter = new ResourceRouter({
|
package/dist/routers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routers.js","sourceRoot":"","sources":["../src/routers.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yBAAyB;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAYxB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,mBAA4B,EAC5B,YAAqB;IAErB,MAAM,WAAW,GAAG,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CACvB,GAAG,oBAAoB,oCAAoC;YACzD,6BAA6B,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,gBAAgB,GACpB,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,MAAM,IAAI,GAAG,WAAW,CACtB,WAAW,EACX,YAAY,IAAI,gBAAgB,CACjC,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAChC,WAAW,EACX,YAAY,IAAI,gBAAgB,CACjC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG;AAkB7C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAgB;IAC/C,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CACvC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EACvB,SAAS,EACT,GAAG,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"routers.js","sourceRoot":"","sources":["../src/routers.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -17,6 +17,7 @@ import { ALL_TOOLS } from "./tools/index.js";
|
|
|
17
17
|
import { ALL_RESOURCES } from "./resources/index.js";
|
|
18
18
|
import { LiveClient } from "./live-client.js";
|
|
19
19
|
import { BatchSpawn } from "./batch-spawn.js";
|
|
20
|
+
import { installBatchChildSupervision } from "./child-supervision.js";
|
|
20
21
|
import { ToolRouter } from "./tool-router.js";
|
|
21
22
|
import { PingCache } from "./ping-cache.js";
|
|
22
23
|
import { ResourceRouter } from "./resource-router.js";
|
|
@@ -91,11 +92,16 @@ export function createServer(projectPath, port, authToken, envPort) {
|
|
|
91
92
|
const pingCache = new PingCache();
|
|
92
93
|
const liveClient = new LiveClient(port, pingCache, authToken, projectPath, undefined, envPort);
|
|
93
94
|
const batchSpawn = new BatchSpawn({ projectPath });
|
|
95
|
+
// Batch children (headless Unity) hold the project lock; supervise them so
|
|
96
|
+
// a host restart / SIGINT / SIGTERM cannot orphan a run.
|
|
97
|
+
installBatchChildSupervision();
|
|
94
98
|
// M13 T4.4 — one SSE subscription per server process. The MCP server is the
|
|
95
99
|
// only long-lived hop between the bridge and the LLM; a per-process reader
|
|
96
100
|
// amortizes the connection and lets every `unity_senses_pull_events` call
|
|
97
|
-
// share the same buffered queue.
|
|
98
|
-
|
|
101
|
+
// share the same buffered queue. projectPath/envPort feed the reconnect-time
|
|
102
|
+
// instance-lock refresh (the bridge rotates its bearer token on every domain
|
|
103
|
+
// reload), mirroring LiveClient's refreshEndpointFromLock self-heal.
|
|
104
|
+
const eventStream = new BridgeEventStream(bridgeBaseUrl(port), undefined, authToken, projectPath, envPort);
|
|
99
105
|
// Per-session tool-group visibility state. Lives in the MCP server and
|
|
100
106
|
// restores the catalog's default-on groups on every server restart; mutated
|
|
101
107
|
// only by unity_open_mcp_manage_tools and consulted by ListTools.
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,0BAA0B;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,0EAA0E;AAC1E,2EAA2E;AAC3E,oDAAoD;AACpD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;AAE7C,oFAAoF;AACpF,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAClC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CACX,mBAAmB,oBAAoB,oCAAoC,CAC5E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,eAAe,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;IACjG,MAAM,eAAe,GAAG,UAAU,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,MAAM,GACV,UAAU,IAAI,eAAe;QAC3B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,oBAAoB,CAAC;IAC3B,OAAO,CAAC,KAAK,CACX,4CAA4C,IAAI,KAAK,MAAM,iBAAiB,WAAW,EAAE,CAC1F,CAAC;IACF,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,SAAS,GAAG,gBAAgB,CAChC,WAAW,EACX,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACtC,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,WAAmB,EACnB,IAAY,EACZ,SAAkB,EAClB,OAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,EACpD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7D,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,+DAA+D;QAC/D,kDAAkD;QAClD,YAAY,EAAE,qBAAqB,EAAE;KACtC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACnD,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register the reachable tool-name set. Called once from `tools/index.ts`
|
|
3
|
+
* after `ALL_TOOLS` is built. Not part of the public agent surface.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerHintableToolNames(names: readonly string[]): void;
|
|
6
|
+
/**
|
|
7
|
+
* Build the `manage_tools` activation call for a group id. Mirrors the exact
|
|
8
|
+
* invocation an agent must issue, so a hint can be followed verbatim.
|
|
9
|
+
*/
|
|
10
|
+
export declare function activateInstruction(groupId: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* True when `toolName` is reachable in a fresh session without a
|
|
13
|
+
* `manage_tools` activation — i.e. it has no group assignment (always-visible
|
|
14
|
+
* meta-tool) or its group is default-enabled.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isDefaultVisible(toolName: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Render a tool reference for use inside an agent-facing hint or tool
|
|
19
|
+
* description.
|
|
20
|
+
*
|
|
21
|
+
* Default-visible tools render as the bare name. A tool in a group that is NOT
|
|
22
|
+
* enabled by default renders as the name plus the group and the concrete
|
|
23
|
+
* activation call, e.g.
|
|
24
|
+
*
|
|
25
|
+
* unity_open_mcp_recompile_scripts (in the typed-editor group, not enabled
|
|
26
|
+
* by default — activate with manage_tools(action:"activate",
|
|
27
|
+
* group:"typed-editor"))
|
|
28
|
+
*
|
|
29
|
+
* Unknown tool names render bare: this helper never invents an activation call
|
|
30
|
+
* for a tool it cannot resolve. A name that is known to the group catalog but
|
|
31
|
+
* NOT registered (verified against the names registered by tools/index.ts,
|
|
32
|
+
* once available) also renders bare — a hint must not prescribe an activation
|
|
33
|
+
* call for a tool the server cannot actually serve — and logs one maintainer
|
|
34
|
+
* warning so the drift is visible.
|
|
35
|
+
*/
|
|
36
|
+
export declare function toolHintReference(toolName: string): string;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Centralized "how to name a tool inside an agent-facing hint" helper.
|
|
2
|
+
//
|
|
3
|
+
// specs/feedback.md 2026-08-14 (hint regression) — a runtime hint that names a
|
|
4
|
+
// tool the caller cannot see is worse than no hint at all: the agent follows
|
|
5
|
+
// it, the tool is not in its surface (`ToolSearch` answers "no matching
|
|
6
|
+
// deferred tools found"), and it falls back to hand-rolling the behavior the
|
|
7
|
+
// tool exists to replace. This had already been fixed once by appending the
|
|
8
|
+
// `manage_tools` activation call at three hand-maintained call sites; the
|
|
9
|
+
// strings drifted apart again on the next release.
|
|
10
|
+
//
|
|
11
|
+
// The structural fix is this module: ONE helper that looks the tool's group up
|
|
12
|
+
// from the registry (`capabilities/tool-groups.ts`) and appends the activation
|
|
13
|
+
// call automatically when — and only when — that group is not enabled by
|
|
14
|
+
// default. No call site can forget it, and a future group move (or a group
|
|
15
|
+
// flipping to `defaultEnabled`) fixes every hint at once.
|
|
16
|
+
//
|
|
17
|
+
// `tool-hint.test.ts` pins the invariant at the string level: every emitted
|
|
18
|
+
// hint / tool description that names a non-default-group tool must also carry
|
|
19
|
+
// the `manage_tools` activation call.
|
|
20
|
+
import { DEFAULT_ENABLED_GROUPS, groupFor, } from "./capabilities/tool-groups.js";
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// feedback 2026-08-17 — a hint must not name a tool that is not registered.
|
|
23
|
+
// The reported case: the remediation hint pointed at
|
|
24
|
+
// unity_open_mcp_recompile_scripts (in the typed-editor group), the agent
|
|
25
|
+
// activated the group, and the tool was still absent from its surface — the
|
|
26
|
+
// hint sent it down a dead end. `tools/index.ts` registers the full
|
|
27
|
+
// ALL_TOOLS name list here once at module init (a push, so this module never
|
|
28
|
+
// imports the tool graph and no import cycle exists). Until that
|
|
29
|
+
// registration has run — i.e. during module-eval-time calls from tool
|
|
30
|
+
// definition files — the registry is empty and the guard is a no-op; the
|
|
31
|
+
// static companion test in tool-hint.test.ts pins the invariant at source
|
|
32
|
+
// level instead.
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/** Names of every registered MCP tool. Empty until tools/index.ts registers. */
|
|
35
|
+
const registeredTools = new Set();
|
|
36
|
+
/** Warn-once bookkeeping so an unregistered name logs a single line. */
|
|
37
|
+
const warnedUnregistered = new Set();
|
|
38
|
+
/**
|
|
39
|
+
* Register the reachable tool-name set. Called once from `tools/index.ts`
|
|
40
|
+
* after `ALL_TOOLS` is built. Not part of the public agent surface.
|
|
41
|
+
*/
|
|
42
|
+
export function registerHintableToolNames(names) {
|
|
43
|
+
for (const name of names)
|
|
44
|
+
registeredTools.add(name);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build the `manage_tools` activation call for a group id. Mirrors the exact
|
|
48
|
+
* invocation an agent must issue, so a hint can be followed verbatim.
|
|
49
|
+
*/
|
|
50
|
+
export function activateInstruction(groupId) {
|
|
51
|
+
return `activate with manage_tools(action:"activate", group:"${groupId}")`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* True when `toolName` is reachable in a fresh session without a
|
|
55
|
+
* `manage_tools` activation — i.e. it has no group assignment (always-visible
|
|
56
|
+
* meta-tool) or its group is default-enabled.
|
|
57
|
+
*/
|
|
58
|
+
export function isDefaultVisible(toolName) {
|
|
59
|
+
const group = groupFor(toolName);
|
|
60
|
+
if (group === null)
|
|
61
|
+
return true;
|
|
62
|
+
return DEFAULT_ENABLED_GROUPS.has(group);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Render a tool reference for use inside an agent-facing hint or tool
|
|
66
|
+
* description.
|
|
67
|
+
*
|
|
68
|
+
* Default-visible tools render as the bare name. A tool in a group that is NOT
|
|
69
|
+
* enabled by default renders as the name plus the group and the concrete
|
|
70
|
+
* activation call, e.g.
|
|
71
|
+
*
|
|
72
|
+
* unity_open_mcp_recompile_scripts (in the typed-editor group, not enabled
|
|
73
|
+
* by default — activate with manage_tools(action:"activate",
|
|
74
|
+
* group:"typed-editor"))
|
|
75
|
+
*
|
|
76
|
+
* Unknown tool names render bare: this helper never invents an activation call
|
|
77
|
+
* for a tool it cannot resolve. A name that is known to the group catalog but
|
|
78
|
+
* NOT registered (verified against the names registered by tools/index.ts,
|
|
79
|
+
* once available) also renders bare — a hint must not prescribe an activation
|
|
80
|
+
* call for a tool the server cannot actually serve — and logs one maintainer
|
|
81
|
+
* warning so the drift is visible.
|
|
82
|
+
*/
|
|
83
|
+
export function toolHintReference(toolName) {
|
|
84
|
+
const group = groupFor(toolName);
|
|
85
|
+
const unregistered = registeredTools.size > 0 && !registeredTools.has(toolName);
|
|
86
|
+
if (unregistered && !warnedUnregistered.has(toolName)) {
|
|
87
|
+
warnedUnregistered.add(toolName);
|
|
88
|
+
console.error(`[unity-open-mcp] tool-hint drift: '${toolName}' is assigned to group ` +
|
|
89
|
+
`${group ?? "(none)"} but is not a registered tool — rendering the hint ` +
|
|
90
|
+
`without its activation call. Check tools/index.ts.`);
|
|
91
|
+
}
|
|
92
|
+
if (group === null || DEFAULT_ENABLED_GROUPS.has(group) || unregistered) {
|
|
93
|
+
return toolName;
|
|
94
|
+
}
|
|
95
|
+
return (`${toolName} (in the ${group} group, not enabled by default — ` +
|
|
96
|
+
`${activateInstruction(group)})`);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=tool-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-hint.js","sourceRoot":"","sources":["../src/tool-hint.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,0DAA0D;AAC1D,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,sCAAsC;AAEtC,OAAO,EACL,sBAAsB,EACtB,QAAQ,GACT,MAAM,+BAA+B,CAAC;AAEvC,8EAA8E;AAC9E,4EAA4E;AAC5E,qDAAqD;AACrD,0EAA0E;AAC1E,4EAA4E;AAC5E,oEAAoE;AACpE,6EAA6E;AAC7E,iEAAiE;AACjE,sEAAsE;AACtE,yEAAyE;AACzE,0EAA0E;AAC1E,iBAAiB;AACjB,8EAA8E;AAE9E,gFAAgF;AAChF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAE1C,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,wDAAwD,OAAO,IAAI,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,YAAY,GAChB,eAAe,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,YAAY,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CACX,sCAAsC,QAAQ,yBAAyB;YACrE,GAAG,KAAK,IAAI,QAAQ,qDAAqD;YACzE,oDAAoD,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACxE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CACL,GAAG,QAAQ,YAAY,KAAK,mCAAmC;QAC/D,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CACjC,CAAC;AACJ,CAAC"}
|
package/dist/tool-router.d.ts
CHANGED
|
@@ -26,7 +26,14 @@ export interface HubControlBackend {
|
|
|
26
26
|
import type { ToolSessionState } from "./tool-session-state.js";
|
|
27
27
|
export type SourceTag = "live" | "offline" | "local";
|
|
28
28
|
export interface RouteMeta {
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Where the response came from: "live" (bridge), "batch" (headless spawn),
|
|
31
|
+
* "offline" (disk parser / offline-first attempt, no bridge contact), or
|
|
32
|
+
* "local" (caller-side validation / locally-computed result). The
|
|
33
|
+
* compressible branch derives this from the payload's `_source` tag —
|
|
34
|
+
* including error bodies — so the two tags never disagree about the origin.
|
|
35
|
+
*/
|
|
36
|
+
route: "live" | "batch" | "offline" | "local";
|
|
30
37
|
fallbackReason?: string;
|
|
31
38
|
/**
|
|
32
39
|
* feedback-fable-04-08 §7 — present only when a `live_unavailable` batch
|