@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.
Files changed (36) hide show
  1. package/dist/mcp/cli.js +20 -13
  2. package/dist/mcp/cli.js.map +1 -1
  3. package/dist/mcp/server.js +1 -1
  4. package/dist/panel/index.js +2 -2
  5. package/dist/{qr-http-server-Clvk1weS.cjs → qr-http-server-B7DsRdN1.cjs} +13 -6
  6. package/dist/{qr-http-server-Clvk1weS.cjs.map → qr-http-server-B7DsRdN1.cjs.map} +1 -1
  7. package/dist/{qr-http-server-B1fmICC4.js → qr-http-server-CK-ZT_pC.js} +13 -6
  8. package/dist/{qr-http-server-B1fmICC4.js.map → qr-http-server-CK-ZT_pC.js.map} +1 -1
  9. package/dist/{qr-http-server-ofopTUL-.js → qr-http-server-DI3A6f5L.js} +13 -6
  10. package/dist/{qr-http-server-ofopTUL-.js.map → qr-http-server-DI3A6f5L.js.map} +1 -1
  11. package/dist/{qr-http-server-C9NUBysQ.cjs → qr-http-server-Dqb3GQju.cjs} +13 -6
  12. package/dist/{qr-http-server-C9NUBysQ.cjs.map → qr-http-server-Dqb3GQju.cjs.map} +1 -1
  13. package/dist/{relay-secret-store-J0SUUXjH.js → relay-secret-store-B0DH-8Qb.js} +46 -3
  14. package/dist/relay-secret-store-B0DH-8Qb.js.map +1 -0
  15. package/dist/{relay-secret-store-B5WAozDv.cjs → relay-secret-store-CqDaaFW1.cjs} +43 -2
  16. package/dist/relay-secret-store-CqDaaFW1.cjs.map +1 -0
  17. package/dist/{relay-secret-store-BvNWdSjV.js → relay-secret-store-DKuoAJmA.js} +43 -2
  18. package/dist/relay-secret-store-DKuoAJmA.js.map +1 -0
  19. package/dist/{relay-url-store-RKcao_yG.js → relay-url-store-BPeUZsiY.js} +2 -2
  20. package/dist/{relay-url-store-RKcao_yG.js.map → relay-url-store-BPeUZsiY.js.map} +1 -1
  21. package/dist/{relay-url-store-D2lX9POP.cjs → relay-url-store-CIZlFBkR.cjs} +2 -2
  22. package/dist/{relay-url-store-D2lX9POP.cjs.map → relay-url-store-CIZlFBkR.cjs.map} +1 -1
  23. package/dist/{relay-url-store-1CXVqNDL.js → relay-url-store-DASEZiT9.js} +2 -2
  24. package/dist/{relay-url-store-1CXVqNDL.js.map → relay-url-store-DASEZiT9.js.map} +1 -1
  25. package/dist/{tunnel-C_qpse3-.js → tunnel-CepDBgEc.js} +2 -2
  26. package/dist/{tunnel-C_qpse3-.js.map → tunnel-CepDBgEc.js.map} +1 -1
  27. package/dist/{tunnel-BmDfjkQI.cjs → tunnel-D0QnxKsF.cjs} +2 -2
  28. package/dist/{tunnel-BmDfjkQI.cjs.map → tunnel-D0QnxKsF.cjs.map} +1 -1
  29. package/dist/unplugin/index.cjs +3 -3
  30. package/dist/unplugin/index.js +3 -3
  31. package/dist/unplugin/tunnel.cjs +1 -1
  32. package/dist/unplugin/tunnel.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/relay-secret-store-B5WAozDv.cjs.map +0 -1
  35. package/dist/relay-secret-store-BvNWdSjV.js.map +0 -1
  36. 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-J0SUUXjH.js";
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.once("error", reject);
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 && state.inspectorUrl) inspectorSection = `<a class="inspector-link" id="inspector-link" href="${escapeHtml(state.inspectorUrl)}" target="_blank" rel="noopener noreferrer">${escapeHtml(s("dashboard.inspector.open"))}</a>`;
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 html = buildDashboardHtml(state, qrDataUrl, locale, path, params);
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("Inspector endpoint is not available in this server mode.");
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.101";
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.101"
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-RKcao_yG.js");
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-RKcao_yG.js");
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-RKcao_yG.js");
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.101"
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) => {