@ait-co/devtools 0.1.131 → 0.1.133
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/{attach-orchestrator-ca34r46y.js → attach-orchestrator-CE0S09YU.js} +110 -5
- package/dist/attach-orchestrator-CE0S09YU.js.map +1 -0
- package/dist/{attach-orchestrator-BiaYiNOr.js → attach-orchestrator-CMoDuG2A.js} +110 -5
- package/dist/attach-orchestrator-CMoDuG2A.js.map +1 -0
- package/dist/cell-BIdSQb9T.js +201 -0
- package/dist/cell-BIdSQb9T.js.map +1 -0
- package/dist/{cell-Cw4fVOl2.js → cell-D1y4shoV.js} +1 -21
- package/dist/cell-D1y4shoV.js.map +1 -0
- package/dist/cell-DHA578lX.js +200 -0
- package/dist/cell-DHA578lX.js.map +1 -0
- package/dist/{debug-server-qRSRG7YZ.js → debug-server-CS1BS2BX.js} +21 -3
- package/dist/debug-server-CS1BS2BX.js.map +1 -0
- package/dist/{debug-server-BSbfnFR5.js → debug-server-DmzuK2c6.js} +26 -9
- package/dist/debug-server-DmzuK2c6.js.map +1 -0
- package/dist/{debug-server-CD4zYBq4.js → debug-server-DnNCoNiR.js} +7 -7
- package/dist/{debug-server-CD4zYBq4.js.map → debug-server-DnNCoNiR.js.map} +1 -1
- package/dist/mcp/cli.js +180 -8
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/panel/index.js +1 -1
- package/dist/{pool-BaSCZALv.d.ts → pool-x28Wv1ty.d.ts} +16 -2
- package/dist/{pool-BaSCZALv.d.ts.map → pool-x28Wv1ty.d.ts.map} +1 -1
- package/dist/{qr-http-server-DCbjORFa.js → qr-http-server-C_DTp9WU.js} +3 -2
- package/dist/{qr-http-server-DCbjORFa.js.map → qr-http-server-C_DTp9WU.js.map} +1 -1
- package/dist/{qr-http-server-BxoRp2w7.cjs → qr-http-server-DX_9UA-p.cjs} +3 -2
- package/dist/qr-http-server-DX_9UA-p.cjs.map +1 -0
- package/dist/{qr-http-server-BdNGPRoL.js → qr-http-server-DeRrKp_R.js} +3 -2
- package/dist/{qr-http-server-BdNGPRoL.js.map → qr-http-server-DeRrKp_R.js.map} +1 -1
- package/dist/{qr-http-server-cKbciY5k.js → qr-http-server-FVn61xAq.js} +3 -2
- package/dist/{qr-http-server-Bq9zR7-z.js.map → qr-http-server-FVn61xAq.js.map} +1 -1
- package/dist/{qr-http-server-Bq9zR7-z.js → qr-http-server-V0xuU5TJ.js} +3 -2
- package/dist/{qr-http-server-cKbciY5k.js.map → qr-http-server-V0xuU5TJ.js.map} +1 -1
- package/dist/{qr-http-server-CV6TA9ZN.cjs → qr-http-server-iH_Hh_si.cjs} +3 -2
- package/dist/qr-http-server-iH_Hh_si.cjs.map +1 -0
- package/dist/{relay-factory-Cloog1jb.js → relay-factory-BQfmK7RP.js} +14 -8
- package/dist/relay-factory-BQfmK7RP.js.map +1 -0
- package/dist/{relay-secret-store-CFc9n0OA.js → relay-secret-store-CLEGyHou.js} +2 -2
- package/dist/{relay-secret-store-CFc9n0OA.js.map → relay-secret-store-CLEGyHou.js.map} +1 -1
- package/dist/{relay-secret-store-DzxDsK6S.js → relay-secret-store-DGduVJhs.js} +2 -2
- package/dist/{relay-secret-store-DzxDsK6S.js.map → relay-secret-store-DGduVJhs.js.map} +1 -1
- package/dist/{relay-url-store-D3rY-GJJ.js → relay-url-store-B0X8TsGr.js} +2 -2
- package/dist/{relay-url-store-D3rY-GJJ.js.map → relay-url-store-B0X8TsGr.js.map} +1 -1
- package/dist/{relay-url-store-DGQ-HPQC.js → relay-url-store-CKW8RQzf.js} +2 -2
- package/dist/{relay-url-store-DGQ-HPQC.js.map → relay-url-store-CKW8RQzf.js.map} +1 -1
- package/dist/{relay-worker-o0M2ndyJ.d.ts → relay-worker-DtX_eszH.d.ts} +51 -2
- package/dist/relay-worker-DtX_eszH.d.ts.map +1 -0
- package/dist/{relay-worker-CCAHLC4a.js → relay-worker-MZq4fLv8.js} +27 -6
- package/dist/{relay-worker-CCAHLC4a.js.map → relay-worker-MZq4fLv8.js.map} +1 -1
- package/dist/rolldown-runtime-DGkTqVfb.js +15 -0
- package/dist/rolldown-runtime-DUslC3ob.js +14 -0
- package/dist/test-runner/bin.js +173 -119
- package/dist/test-runner/bin.js.map +1 -1
- package/dist/test-runner/config.d.ts +1 -1
- package/dist/test-runner/config.js +1 -1
- package/dist/test-runner/pool.d.ts +1 -1
- package/dist/test-runner/pool.js +1 -1
- package/dist/test-runner/pool.js.map +1 -1
- package/dist/test-runner/relay-factory.d.ts +14 -0
- package/dist/test-runner/relay-factory.d.ts.map +1 -1
- package/dist/test-runner/relay-factory.js +11 -5
- package/dist/test-runner/relay-factory.js.map +1 -1
- package/dist/test-runner/relay-worker.d.ts +2 -2
- package/dist/test-runner/relay-worker.js +2 -2
- package/dist/test-runner/report.d.ts +35 -4
- package/dist/test-runner/report.d.ts.map +1 -1
- package/dist/test-runner/report.js +42 -7
- package/dist/test-runner/report.js.map +1 -1
- package/dist/{totp-DvOYkYim.js → totp-CZLLKfOC.js} +2 -14
- package/dist/{totp-DvOYkYim.js.map → totp-CZLLKfOC.js.map} +1 -1
- package/dist/totp-DAxys-r0.js +199 -0
- package/dist/totp-DAxys-r0.js.map +1 -0
- package/dist/{tunnel-B2UCKAc7.cjs → tunnel-DP453L4e.cjs} +2 -2
- package/dist/{tunnel-B2UCKAc7.cjs.map → tunnel-DP453L4e.cjs.map} +1 -1
- package/dist/{tunnel-C-rQ34dM.js → tunnel-Djf-zmjJ.js} +2 -2
- package/dist/{tunnel-C-rQ34dM.js.map → tunnel-Djf-zmjJ.js.map} +1 -1
- package/dist/unplugin/index.cjs +1 -1
- package/dist/unplugin/index.js +1 -1
- package/dist/unplugin/tunnel.cjs +1 -1
- package/dist/unplugin/tunnel.js +1 -1
- package/package.json +1 -1
- package/dist/attach-orchestrator-BiaYiNOr.js.map +0 -1
- package/dist/attach-orchestrator-ca34r46y.js.map +0 -1
- package/dist/cell-Bi8MAPA8.js +0 -88
- package/dist/cell-Bi8MAPA8.js.map +0 -1
- package/dist/cell-Cw4fVOl2.js.map +0 -1
- package/dist/cell-rr6gL9AT.js +0 -89
- package/dist/cell-rr6gL9AT.js.map +0 -1
- package/dist/debug-server-BSbfnFR5.js.map +0 -1
- package/dist/debug-server-qRSRG7YZ.js.map +0 -1
- package/dist/log-CUik_tHp.js +0 -95
- package/dist/log-CUik_tHp.js.map +0 -1
- package/dist/qr-http-server-BxoRp2w7.cjs.map +0 -1
- package/dist/qr-http-server-CV6TA9ZN.cjs.map +0 -1
- package/dist/relay-factory-Cloog1jb.js.map +0 -1
- package/dist/relay-worker-o0M2ndyJ.d.ts.map +0 -1
|
@@ -1,7 +1,99 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-DUslC3ob.js";
|
|
2
|
+
import { r as generateTotp } from "./totp-DAxys-r0.js";
|
|
3
3
|
import { randomBytes } from "node:crypto";
|
|
4
4
|
import { Tunnel, bin, install } from "cloudflared";
|
|
5
|
+
//#region src/mcp/log.ts
|
|
6
|
+
/**
|
|
7
|
+
* Allowed field keys that may pass through to a log line.
|
|
8
|
+
* Unknown keys are dropped. Values are still redact-scanned.
|
|
9
|
+
*/
|
|
10
|
+
const ALLOWED_KEYS = new Set([
|
|
11
|
+
"ts",
|
|
12
|
+
"level",
|
|
13
|
+
"event",
|
|
14
|
+
"msg",
|
|
15
|
+
"port",
|
|
16
|
+
"totpEnabled",
|
|
17
|
+
"env",
|
|
18
|
+
"tool",
|
|
19
|
+
"deploymentId",
|
|
20
|
+
"errorKind",
|
|
21
|
+
"reason",
|
|
22
|
+
"prevTargetId",
|
|
23
|
+
"mode",
|
|
24
|
+
"fileCount",
|
|
25
|
+
"passed",
|
|
26
|
+
"failed",
|
|
27
|
+
"skipped"
|
|
28
|
+
]);
|
|
29
|
+
/**
|
|
30
|
+
* Patterns that match secret values.
|
|
31
|
+
* Match order matters — more-specific patterns first.
|
|
32
|
+
*
|
|
33
|
+
* #268 redact script covers: relay=wss://…, at=<TOTP>, _deploymentId=<uuid>.
|
|
34
|
+
* Here we extend to in-process value-level patterns used in server logs.
|
|
35
|
+
*/
|
|
36
|
+
const SECRET_PATTERNS = [
|
|
37
|
+
/^\d{6}$/,
|
|
38
|
+
/^(aitcc_|AITCC_)/i,
|
|
39
|
+
/^[A-Za-z0-9_-]+=.{4,}/,
|
|
40
|
+
/^wss:\/\//,
|
|
41
|
+
/(?:^|[?&])at=[A-Z0-9]{6}/i
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Returns `true` when the string value matches any known-secret pattern.
|
|
45
|
+
* Only string values are tested — numbers/booleans are always safe.
|
|
46
|
+
*/
|
|
47
|
+
function isSecretValue(value) {
|
|
48
|
+
return SECRET_PATTERNS.some((re) => re.test(value));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Redacts a single scalar value.
|
|
52
|
+
* - strings: return "***" if the value matches a secret pattern.
|
|
53
|
+
* - other: return as-is.
|
|
54
|
+
*/
|
|
55
|
+
function redactValue(value) {
|
|
56
|
+
if (typeof value === "string" && isSecretValue(value)) return "***";
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Builds a safe log payload from raw fields.
|
|
61
|
+
*
|
|
62
|
+
* - Only keys in `ALLOWED_KEYS` are included.
|
|
63
|
+
* - String values are scanned for secret patterns and replaced with "***".
|
|
64
|
+
* - `ts` and `level` and `event` are always included (they are injected by the
|
|
65
|
+
* logger functions below, not by callers).
|
|
66
|
+
*/
|
|
67
|
+
function buildPayload(level, event, fields) {
|
|
68
|
+
const out = {
|
|
69
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
70
|
+
level,
|
|
71
|
+
event
|
|
72
|
+
};
|
|
73
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
74
|
+
if (!ALLOWED_KEYS.has(key)) continue;
|
|
75
|
+
if (key === "ts" || key === "level" || key === "event") continue;
|
|
76
|
+
out[key] = redactValue(value);
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Writes a single JSON log line to stderr.
|
|
82
|
+
* MCP stdio transport uses stdout; all diagnostics go to stderr.
|
|
83
|
+
*/
|
|
84
|
+
function writeLog(level, event, fields = {}) {
|
|
85
|
+
const payload = buildPayload(level, event, fields);
|
|
86
|
+
process.stderr.write(`${JSON.stringify(payload)}\n`);
|
|
87
|
+
}
|
|
88
|
+
/** Log an informational structured event. */
|
|
89
|
+
function logInfo(event, fields = {}) {
|
|
90
|
+
writeLog("info", event, fields);
|
|
91
|
+
}
|
|
92
|
+
/** Log an error structured event. */
|
|
93
|
+
function logError(event, fields = {}) {
|
|
94
|
+
writeLog("error", event, fields);
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
5
97
|
//#region src/mcp/deeplink.ts
|
|
6
98
|
/**
|
|
7
99
|
* URL of the AITC Sandbox launcher PWA.
|
|
@@ -1191,6 +1283,19 @@ function makeTunnelStatus(up, wssUrl, droppedAt = null, reissueAttempts = 0) {
|
|
|
1191
1283
|
}
|
|
1192
1284
|
//#endregion
|
|
1193
1285
|
//#region src/mcp/attach-orchestrator.ts
|
|
1286
|
+
var attach_orchestrator_exports = /* @__PURE__ */ __exportAll({
|
|
1287
|
+
RELAY_SANDBOX_STALE_PAGE_MS: () => RELAY_SANDBOX_STALE_PAGE_MS,
|
|
1288
|
+
START_ATTACH_REMINT_THRESHOLD_MS: () => START_ATTACH_REMINT_THRESHOLD_MS,
|
|
1289
|
+
START_ATTACH_SEGMENT_MS: () => START_ATTACH_SEGMENT_MS,
|
|
1290
|
+
buildIndicatorExpression: () => buildIndicatorExpression,
|
|
1291
|
+
buildTotpMeta: () => buildTotpMeta,
|
|
1292
|
+
extractDeploymentId: () => extractDeploymentId,
|
|
1293
|
+
isSandboxPageFresh: () => isSandboxPageFresh,
|
|
1294
|
+
mintAttachUrl: () => mintAttachUrl,
|
|
1295
|
+
prepareAttach: () => prepareAttach,
|
|
1296
|
+
renderAndMaybeWait: () => renderAndMaybeWait,
|
|
1297
|
+
waitForAttachWithEvents: () => waitForAttachWithEvents
|
|
1298
|
+
});
|
|
1194
1299
|
/**
|
|
1195
1300
|
* Maximum age (ms) of a page's `lastSeenAt` before it is treated as a ghost
|
|
1196
1301
|
* and excluded from the `wait_for_attach` short-circuit in `start_attach`
|
|
@@ -1378,7 +1483,7 @@ async function prepareAttach(deps, env, args, conn) {
|
|
|
1378
1483
|
const buildProjectRoot = typeof rawProjectRoot === "string" ? rawProjectRoot : void 0;
|
|
1379
1484
|
let tunnelHttpUrl = process.env.AIT_TUNNEL_BASE_URL?.trim() ?? "";
|
|
1380
1485
|
if (tunnelHttpUrl === "" && buildProjectRoot !== void 0) {
|
|
1381
|
-
const { readRelayUrls } = await import("./relay-url-store-
|
|
1486
|
+
const { readRelayUrls } = await import("./relay-url-store-B0X8TsGr.js");
|
|
1382
1487
|
tunnelHttpUrl = (await readRelayUrls({ projectRoot: buildProjectRoot }))?.tunnelBaseUrl ?? "";
|
|
1383
1488
|
}
|
|
1384
1489
|
if (tunnelHttpUrl === "") return {
|
|
@@ -1671,6 +1776,6 @@ function buildIndicatorExpression(opts) {
|
|
|
1671
1776
|
return `(() => {var W = window;function render(c) {if (c.dismissed) { c.el.style.display = 'none'; return; }c.el.style.display = 'block';var up = c.state !== 'disconnected';c.el.style.background = up ? '#e5484d' : '#8a8f98';c.el.textContent = up ? ${JSON.stringify(label)} : ${JSON.stringify(disconnectedLabel)};}function setState(c, next) { c.state = next; c.dismissed = false; render(c); }var c = W.__ait_indicator;if (!c) {var el = document.createElement('div');el.id = '__ait_debug_indicator';el.style.cssText = ['position:fixed','left:max(12px,calc(env(safe-area-inset-left,0px) + 8px))','bottom:max(12px,calc(env(safe-area-inset-bottom,0px) + 8px))','z-index:2147483647','color:#fff','font:bold 11px/1 system-ui,sans-serif','padding:5px 9px','border-radius:6px','pointer-events:auto','user-select:none',].join(';');document.body.appendChild(el);c = { el: el, state: 'attached', dismissed: false };el.addEventListener('pointerdown', function () { c.dismissed = true; render(c); }, { passive: true });W.__ait_indicator = c;if (W.__ait_relay_ws_observed) {W.addEventListener('ait:relay-ws-state', function (e) {setState(c, e.detail && e.detail.state === 'open' ? 'attached' : 'disconnected');});} else {try {var Native = W.WebSocket;W.WebSocket = new Proxy(Native, {construct: function (t, a) {var ws = Reflect.construct(t, a);try {var u = new URL(String(a[0]), location.href);if (/\\/target\\//.test(u.pathname)) {ws.addEventListener('open', function () { setState(c, 'attached'); });ws.addEventListener('close', function () { setState(c, 'disconnected'); });ws.addEventListener('error', function () { setState(c, 'disconnected'); });}} catch (_) {}return ws;},});} catch (_) {}}}setState(c, ${JSON.stringify(opts?.state ?? "attached")});})()`;
|
|
1672
1777
|
}
|
|
1673
1778
|
//#endregion
|
|
1674
|
-
export {
|
|
1779
|
+
export { buildIndicatorExpression as a, generateAttachToken as c, startQuickTunnel as d, startTunnelHealthProbe as f, attach_orchestrator_exports as i, makeTunnelStatus as l, logInfo as m, START_ATTACH_REMINT_THRESHOLD_MS as n, extractDeploymentId as o, logError as p, START_ATTACH_SEGMENT_MS as r, isSandboxPageFresh as s, RELAY_SANDBOX_STALE_PAGE_MS as t, printAttachBanner as u };
|
|
1675
1780
|
|
|
1676
|
-
//# sourceMappingURL=attach-orchestrator-
|
|
1781
|
+
//# sourceMappingURL=attach-orchestrator-CMoDuG2A.js.map
|