@ait-co/devtools 0.1.101 → 0.1.102
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/mcp/cli.js +20 -13
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/panel/index.js +2 -2
- package/dist/{qr-http-server-Clvk1weS.cjs → qr-http-server-B7DsRdN1.cjs} +13 -6
- package/dist/{qr-http-server-Clvk1weS.cjs.map → qr-http-server-B7DsRdN1.cjs.map} +1 -1
- package/dist/{qr-http-server-B1fmICC4.js → qr-http-server-CK-ZT_pC.js} +13 -6
- package/dist/{qr-http-server-B1fmICC4.js.map → qr-http-server-CK-ZT_pC.js.map} +1 -1
- package/dist/{qr-http-server-ofopTUL-.js → qr-http-server-DI3A6f5L.js} +13 -6
- package/dist/{qr-http-server-ofopTUL-.js.map → qr-http-server-DI3A6f5L.js.map} +1 -1
- package/dist/{qr-http-server-C9NUBysQ.cjs → qr-http-server-Dqb3GQju.cjs} +13 -6
- package/dist/{qr-http-server-C9NUBysQ.cjs.map → qr-http-server-Dqb3GQju.cjs.map} +1 -1
- package/dist/{relay-secret-store-J0SUUXjH.js → relay-secret-store-B0DH-8Qb.js} +46 -3
- package/dist/relay-secret-store-B0DH-8Qb.js.map +1 -0
- package/dist/{relay-secret-store-B5WAozDv.cjs → relay-secret-store-CqDaaFW1.cjs} +43 -2
- package/dist/relay-secret-store-CqDaaFW1.cjs.map +1 -0
- package/dist/{relay-secret-store-BvNWdSjV.js → relay-secret-store-DKuoAJmA.js} +43 -2
- package/dist/relay-secret-store-DKuoAJmA.js.map +1 -0
- package/dist/{relay-url-store-RKcao_yG.js → relay-url-store-BPeUZsiY.js} +2 -2
- package/dist/{relay-url-store-RKcao_yG.js.map → relay-url-store-BPeUZsiY.js.map} +1 -1
- package/dist/{relay-url-store-D2lX9POP.cjs → relay-url-store-CIZlFBkR.cjs} +2 -2
- package/dist/{relay-url-store-D2lX9POP.cjs.map → relay-url-store-CIZlFBkR.cjs.map} +1 -1
- package/dist/{relay-url-store-1CXVqNDL.js → relay-url-store-DASEZiT9.js} +2 -2
- package/dist/{relay-url-store-1CXVqNDL.js.map → relay-url-store-DASEZiT9.js.map} +1 -1
- package/dist/{tunnel-C_qpse3-.js → tunnel-CepDBgEc.js} +2 -2
- package/dist/{tunnel-C_qpse3-.js.map → tunnel-CepDBgEc.js.map} +1 -1
- package/dist/{tunnel-BmDfjkQI.cjs → tunnel-D0QnxKsF.cjs} +2 -2
- package/dist/{tunnel-BmDfjkQI.cjs.map → tunnel-D0QnxKsF.cjs.map} +1 -1
- package/dist/unplugin/index.cjs +3 -3
- package/dist/unplugin/index.js +3 -3
- package/dist/unplugin/tunnel.cjs +1 -1
- package/dist/unplugin/tunnel.js +1 -1
- package/package.json +1 -1
- package/dist/relay-secret-store-B5WAozDv.cjs.map +0 -1
- package/dist/relay-secret-store-BvNWdSjV.js.map +0 -1
- package/dist/relay-secret-store-J0SUUXjH.js.map +0 -1
package/dist/mcp/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { i as generateTotp, n as assertRelayAuthConfigured, r as buildRelayVerifyAuth } from "../totp-Xq3ACwkm.js";
|
|
3
|
-
import { t as loadRelaySecretReadOnly } from "../relay-secret-store-
|
|
3
|
+
import { t as loadRelaySecretReadOnly } from "../relay-secret-store-B0DH-8Qb.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { argv } from "node:process";
|
|
@@ -1933,7 +1933,7 @@ function findFreePort() {
|
|
|
1933
1933
|
else resolve(port);
|
|
1934
1934
|
});
|
|
1935
1935
|
});
|
|
1936
|
-
server.
|
|
1936
|
+
server.on("error", reject);
|
|
1937
1937
|
});
|
|
1938
1938
|
}
|
|
1939
1939
|
/**
|
|
@@ -3003,7 +3003,7 @@ function buildLangSwitcher(path, existingParams, locale, s) {
|
|
|
3003
3003
|
* - tunnel wssUrl은 "터널 연결됨" 상태 표시에서 UP/DOWN만 노출.
|
|
3004
3004
|
* wssUrl 값 자체는 dashboard HTML에 넣지 않는다.
|
|
3005
3005
|
*/
|
|
3006
|
-
function buildDashboardHtml(state, qrDataUrl, locale, path = "/", params = new URLSearchParams()) {
|
|
3006
|
+
function buildDashboardHtml(state, qrDataUrl, locale, path = "/", params = new URLSearchParams(), devtoolsEntryUrl = null) {
|
|
3007
3007
|
const s = resolveLocaleStrings(locale);
|
|
3008
3008
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
3009
3009
|
const tunnelStatus = state.tunnel.up ? s("dashboard.tunnel.up") : s("dashboard.tunnel.down");
|
|
@@ -3016,7 +3016,7 @@ function buildDashboardHtml(state, qrDataUrl, locale, path = "/", params = new U
|
|
|
3016
3016
|
} else attachSection = `<p class="hint">${escapeHtml(s("dashboard.attach.hint"))}</p>`;
|
|
3017
3017
|
const pagesAttached = Array.isArray(state.pages) && state.pages.length > 0;
|
|
3018
3018
|
let inspectorSection;
|
|
3019
|
-
if (pagesAttached &&
|
|
3019
|
+
if (pagesAttached && devtoolsEntryUrl) inspectorSection = `<a class="inspector-link" id="inspector-link" href="${escapeHtml(devtoolsEntryUrl)}" target="_blank" rel="noopener noreferrer">${escapeHtml(s("dashboard.inspector.open"))}</a>`;
|
|
3020
3020
|
else inspectorSection = `<span class="inspector-hint" id="inspector-link">${escapeHtml(s("dashboard.inspector.waiting"))}</span>`;
|
|
3021
3021
|
const pagesSection = state.pages === null ? "" : `<hr /><section id="pages-section"><h2>${escapeHtml(s("dashboard.pages.section"))}</h2><ul id="pages-list">${state.pages.length > 0 ? state.pages.map((p) => {
|
|
3022
3022
|
return `<li><span class="page-id">${escapeHtml(p.id)}</span> <span class="page-url">${escapeHtml(p.url.slice(0, 120))}</span></li>`;
|
|
@@ -3301,7 +3301,13 @@ async function startQrHttpServer(getDashboardState, options) {
|
|
|
3301
3301
|
errorCorrectionLevel: "M"
|
|
3302
3302
|
});
|
|
3303
3303
|
} catch {}
|
|
3304
|
-
const
|
|
3304
|
+
const devtoolsEntryUrl = (() => {
|
|
3305
|
+
if (!options?.getDirectInspectorUrl) return null;
|
|
3306
|
+
const addr = server.address();
|
|
3307
|
+
if (!addr || typeof addr === "string") return null;
|
|
3308
|
+
return `http://127.0.0.1:${addr.port}/devtools/`;
|
|
3309
|
+
})();
|
|
3310
|
+
const html = buildDashboardHtml(state, qrDataUrl, locale, path, params, devtoolsEntryUrl);
|
|
3305
3311
|
res.writeHead(200, {
|
|
3306
3312
|
"Content-Type": "text/html; charset=utf-8",
|
|
3307
3313
|
"Cache-Control": "no-store"
|
|
@@ -3369,11 +3375,12 @@ async function startQrHttpServer(getDashboardState, options) {
|
|
|
3369
3375
|
});
|
|
3370
3376
|
return;
|
|
3371
3377
|
}
|
|
3372
|
-
if (path === "/inspector") {
|
|
3378
|
+
if (path === "/inspector" || path === "/devtools" || path === "/devtools/") {
|
|
3373
3379
|
const getDirectInspectorUrl = options?.getDirectInspectorUrl;
|
|
3374
3380
|
if (!getDirectInspectorUrl) {
|
|
3381
|
+
const body = path === "/inspector" ? "Inspector endpoint is not available in this server mode." : "relay 연결 세션에서만 DevTools UI를 열 수 있습니다.";
|
|
3375
3382
|
res.writeHead(503, { "Content-Type": "text/plain; charset=utf-8" });
|
|
3376
|
-
res.end(
|
|
3383
|
+
res.end(body);
|
|
3377
3384
|
return;
|
|
3378
3385
|
}
|
|
3379
3386
|
const result = getDirectInspectorUrl();
|
|
@@ -4858,7 +4865,7 @@ async function readMcpSdkVersion() {
|
|
|
4858
4865
|
* some test environments that skip the build step).
|
|
4859
4866
|
*/
|
|
4860
4867
|
function readDevtoolsVersion() {
|
|
4861
|
-
return "0.1.
|
|
4868
|
+
return "0.1.102";
|
|
4862
4869
|
}
|
|
4863
4870
|
/**
|
|
4864
4871
|
* Derives the next recommended action from a completed diagnostics snapshot.
|
|
@@ -5450,7 +5457,7 @@ function createDebugServer(deps) {
|
|
|
5450
5457
|
const collector = collectorDep ?? new InMemoryDiagnosticsCollector();
|
|
5451
5458
|
const server = new Server({
|
|
5452
5459
|
name: "ait-debug",
|
|
5453
|
-
version: "0.1.
|
|
5460
|
+
version: "0.1.102"
|
|
5454
5461
|
}, { capabilities: { tools: { listChanged: true } } });
|
|
5455
5462
|
server.setRequestHandler(ListToolsRequestSchema, () => {
|
|
5456
5463
|
const conn = router.active;
|
|
@@ -5538,7 +5545,7 @@ function createDebugServer(deps) {
|
|
|
5538
5545
|
const buildProjectRoot = typeof rawBuildProjectRoot === "string" ? rawBuildProjectRoot : void 0;
|
|
5539
5546
|
let tunnelHttpUrl = process.env.AIT_TUNNEL_BASE_URL?.trim() ?? "";
|
|
5540
5547
|
if (tunnelHttpUrl === "" && buildProjectRoot !== void 0) {
|
|
5541
|
-
const { readRelayUrls } = await import("../relay-url-store-
|
|
5548
|
+
const { readRelayUrls } = await import("../relay-url-store-BPeUZsiY.js");
|
|
5542
5549
|
tunnelHttpUrl = (await readRelayUrls({ projectRoot: buildProjectRoot }))?.tunnelBaseUrl ?? "";
|
|
5543
5550
|
}
|
|
5544
5551
|
if (tunnelHttpUrl === "") return mcpError("build_attach_url(mobile): AIT_TUNNEL_BASE_URL이 설정되지 않았습니다. dev 서버가 tunnel:{cdp:true}로 기동 중이면 .ait_urls 파일이 자동 생성돼 있어야 합니다. 자동 발견이 되지 않을 경우 앱 HTTP 터널 URL을 AIT_TUNNEL_BASE_URL 환경변수로 직접 전달하세요.");
|
|
@@ -6291,7 +6298,7 @@ async function readRelayLocalUrl(env = process.env, projectRoot) {
|
|
|
6291
6298
|
const envValue = (env.AIT_RELAY_LOCAL_URL ?? "").trim();
|
|
6292
6299
|
if (envValue !== "") return envValue;
|
|
6293
6300
|
if (projectRoot !== void 0) try {
|
|
6294
|
-
const { readRelayUrls } = await import("../relay-url-store-
|
|
6301
|
+
const { readRelayUrls } = await import("../relay-url-store-BPeUZsiY.js");
|
|
6295
6302
|
const stored = await readRelayUrls({ projectRoot });
|
|
6296
6303
|
if (stored?.relayLocalUrl) return stored.relayLocalUrl;
|
|
6297
6304
|
} catch {}
|
|
@@ -6345,7 +6352,7 @@ async function readMobileRelayBaseUrl(env = process.env, projectRoot) {
|
|
|
6345
6352
|
const envValue = typeof raw === "string" ? raw.trim() : "";
|
|
6346
6353
|
if (envValue !== "") return envValue;
|
|
6347
6354
|
if (projectRoot !== void 0) {
|
|
6348
|
-
const { readRelayUrls } = await import("../relay-url-store-
|
|
6355
|
+
const { readRelayUrls } = await import("../relay-url-store-BPeUZsiY.js");
|
|
6349
6356
|
const stored = await readRelayUrls({ projectRoot });
|
|
6350
6357
|
if (stored?.relayBaseUrl !== void 0) return stored.relayBaseUrl;
|
|
6351
6358
|
}
|
|
@@ -7584,7 +7591,7 @@ function createDevServer(deps = {}) {
|
|
|
7584
7591
|
const aitSource = deps.aitSource ?? new HttpAitSource({ stateEndpoint });
|
|
7585
7592
|
const server = new Server({
|
|
7586
7593
|
name: "ait-devtools",
|
|
7587
|
-
version: "0.1.
|
|
7594
|
+
version: "0.1.102"
|
|
7588
7595
|
}, { capabilities: { tools: {} } });
|
|
7589
7596
|
server.setRequestHandler(ListToolsRequestSchema, () => ({ tools: DEV_TOOL_DEFINITIONS.map((tool) => ({ ...tool })) }));
|
|
7590
7597
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|