@modootoday/datalab-extension-mcp 1.8.7 → 1.8.8
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/README.en.md +4 -4
- package/README.md +4 -4
- package/dist/{browsers-RT4ZPGXZ.js → browsers-KBFQARNA.js} +1 -1
- package/dist/{chunk-JOEFFC3W.js → chunk-DR3Q6KT2.js} +4 -2
- package/dist/{chunk-YTMY2DAN.js → chunk-U7AIWUSN.js} +14 -14
- package/dist/cli.js +3 -3
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -55,10 +55,10 @@ Avoid sharing a screenshot or the copied setup. If it may have leaked, press **[
|
|
|
55
55
|
One command finds **every** AI app on your computer and connects them automatically. Nothing to do per app.
|
|
56
56
|
|
|
57
57
|
1. **Open a terminal** — on Windows type `cmd` in the search box → "Command Prompt"; on Mac press `⌘+Space` and type `Terminal`; on Linux open your terminal app (often `Ctrl+Alt+T`).
|
|
58
|
-
2. **Paste this command and press Enter.** (`@1.8.
|
|
58
|
+
2. **Paste this command and press Enter.** (`@1.8.8` is the pinned version, so the connector never changes behind your back.)
|
|
59
59
|
|
|
60
60
|
```
|
|
61
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
61
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 install
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
Lines of English scrolling by is normal. This only downloads and runs the connector — it touches nothing else.
|
|
@@ -252,7 +252,7 @@ Start it again after a full quit and it picks the tools up. If they still aren't
|
|
|
252
252
|
- **When the connection disappears** — run the very command you used at the start once more; it safely re-registers. (Some AI apps clean up their settings file and drop the connection.)
|
|
253
253
|
|
|
254
254
|
```
|
|
255
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
255
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 install
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
- **`'npx' is not recognized...`** — Node.js isn't installed. The "No Node.js?" one-liner in Step 2 is the simplest fix.
|
|
@@ -282,7 +282,7 @@ Start it again after a full quit and it picks the tools up. If they still aren't
|
|
|
282
282
|
1. Run this in a terminal (it removes the entries registered in your AI apps).
|
|
283
283
|
|
|
284
284
|
```
|
|
285
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
285
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 uninstall
|
|
286
286
|
```
|
|
287
287
|
|
|
288
288
|
2. Turn **MCP 연결** off in the extension settings. The panel is the bridge, so with it off a leftover config line can look nothing up.
|
package/README.md
CHANGED
|
@@ -49,10 +49,10 @@ Claude 같은 AI 앱을 데이터랩툴즈에 연결해 주는 작은 무료 프
|
|
|
49
49
|
명령 한 줄이면 컴퓨터에 있는 AI 앱을 **모두 자동으로** 찾아 연결해 줘요. 앱마다 따로 할 일은 없어요.
|
|
50
50
|
|
|
51
51
|
1. **터미널을 열어요** — Windows는 검색창에 `cmd` → "명령 프롬프트", Mac은 `⌘+스페이스`로 `터미널`, Linux는 터미널 앱(보통 `Ctrl+Alt+T`)이에요.
|
|
52
|
-
2. **아래 명령을 붙여넣고 Enter를 눌러요.** (`@1.8.
|
|
52
|
+
2. **아래 명령을 붙여넣고 Enter를 눌러요.** (`@1.8.8`은 커넥터가 나도 모르게 바뀌지 않도록 고정한 버전이에요.)
|
|
53
53
|
|
|
54
54
|
```
|
|
55
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
55
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 install
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
영어 글자가 여러 줄 올라오는 건 정상이에요. 이 명령은 커넥터를 내려받아 실행할 뿐, 다른 건 건드리지 않아요.
|
|
@@ -220,7 +220,7 @@ AI가 "그런 기능은 없다" 고 답하면, **"도구 목록을 확인해 보
|
|
|
220
220
|
- **연결이 사라졌을 때** — 처음 실행했던 그 명령을 한 번 더 실행하면 안전하게 다시 등록돼요. (일부 AI 앱이 설정 파일을 정리하며 연결을 지우기도 해요.)
|
|
221
221
|
|
|
222
222
|
```
|
|
223
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
223
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 install
|
|
224
224
|
```
|
|
225
225
|
|
|
226
226
|
- **`'npx'을(는) 내부 또는 외부 명령...`** — Node.js가 없는 거예요. 위 2단계의 "Node.js가 없다면" 한 줄 설치가 가장 간단해요.
|
|
@@ -250,7 +250,7 @@ AI가 "그런 기능은 없다" 고 답하면, **"도구 목록을 확인해 보
|
|
|
250
250
|
1. 터미널에서 아래 명령을 실행해요(AI 앱에 등록된 설정을 지워 줘요).
|
|
251
251
|
|
|
252
252
|
```
|
|
253
|
-
npx -y @modootoday/datalab-extension-mcp@1.8.
|
|
253
|
+
npx -y @modootoday/datalab-extension-mcp@1.8.8 uninstall
|
|
254
254
|
```
|
|
255
255
|
|
|
256
256
|
2. 확장 설정에서 **MCP 연결을 꺼요.** 패널이 브릿지라, 꺼 두면 어딘가 설정 줄이 남아 있어도 AI 앱이 아무것도 조회할 수 없어요.
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
mediaToolDescriptors,
|
|
5
5
|
spawnDaemon,
|
|
6
6
|
tryConnect
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-U7AIWUSN.js";
|
|
8
8
|
import {
|
|
9
9
|
__export
|
|
10
10
|
} from "./chunk-MLKGABMK.js";
|
|
@@ -14599,7 +14599,9 @@ var HelloNackReasonSchema = external_exports.enum([
|
|
|
14599
14599
|
/** No version in common. `supported` tells the extension what to do. */
|
|
14600
14600
|
"version_mismatch",
|
|
14601
14601
|
/** Origin header absent or not our extension. */
|
|
14602
|
-
"forbidden_origin"
|
|
14602
|
+
"forbidden_origin",
|
|
14603
|
+
/** This browser already has an active event stream. */
|
|
14604
|
+
"session_active"
|
|
14603
14605
|
]);
|
|
14604
14606
|
var BrowserRoutingSchema = external_exports.object({
|
|
14605
14607
|
targetBrowserId: external_exports.string(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// ../mcp-server/dist/chunk-
|
|
1
|
+
// ../mcp-server/dist/chunk-YXH45HHP.js
|
|
2
2
|
import { createHash } from "crypto";
|
|
3
3
|
import { createHash as createHash2, randomUUID } from "crypto";
|
|
4
4
|
import { mkdir, readFile, readdir, rm, writeFile } from "fs/promises";
|
|
@@ -14387,6 +14387,7 @@ function date4(params) {
|
|
|
14387
14387
|
return /* @__PURE__ */ _coercedDate(ZodDate, params);
|
|
14388
14388
|
}
|
|
14389
14389
|
config(en_default());
|
|
14390
|
+
var BRIDGE_PROTOCOL_VERSION = 1;
|
|
14390
14391
|
var SUPPORTED_PROTOCOL_VERSIONS = [1];
|
|
14391
14392
|
var MCP_TOOL_NAME_RE = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
14392
14393
|
var BridgeToolDescriptorSchema = external_exports.object({
|
|
@@ -14460,7 +14461,9 @@ var HelloNackReasonSchema = external_exports.enum([
|
|
|
14460
14461
|
/** No version in common. `supported` tells the extension what to do. */
|
|
14461
14462
|
"version_mismatch",
|
|
14462
14463
|
/** Origin header absent or not our extension. */
|
|
14463
|
-
"forbidden_origin"
|
|
14464
|
+
"forbidden_origin",
|
|
14465
|
+
/** This browser already has an active event stream. */
|
|
14466
|
+
"session_active"
|
|
14464
14467
|
]);
|
|
14465
14468
|
var BrowserRoutingSchema = external_exports.object({
|
|
14466
14469
|
targetBrowserId: external_exports.string(),
|
|
@@ -15756,6 +15759,7 @@ var Bridge = class {
|
|
|
15756
15759
|
const entry = this.#sessions.get(key);
|
|
15757
15760
|
if (!entry || entry.session.sessionId !== sessionId) return false;
|
|
15758
15761
|
entry.streamActive = true;
|
|
15762
|
+
if (this.#defaultKey === null) this.#defaultKey = key;
|
|
15759
15763
|
return true;
|
|
15760
15764
|
}
|
|
15761
15765
|
isSessionStreamActive(key, sessionId) {
|
|
@@ -16033,6 +16037,14 @@ var Bridge = class {
|
|
|
16033
16037
|
};
|
|
16034
16038
|
}
|
|
16035
16039
|
const key = sessionKeyFor(credential);
|
|
16040
|
+
if (this.#sessions.get(key)?.streamActive) {
|
|
16041
|
+
return {
|
|
16042
|
+
t: "hello_nack",
|
|
16043
|
+
reason: "session_active",
|
|
16044
|
+
supported: [BRIDGE_PROTOCOL_VERSION],
|
|
16045
|
+
message: "This browser already has an active panel session."
|
|
16046
|
+
};
|
|
16047
|
+
}
|
|
16036
16048
|
const session = {
|
|
16037
16049
|
// A counter, not a timestamp: a panel reload produces two handshakes
|
|
16038
16050
|
// inside one millisecond, and the new session must never be
|
|
@@ -17182,14 +17194,6 @@ function createHttpBridge(opts) {
|
|
|
17182
17194
|
opts.bridge.disconnect(key);
|
|
17183
17195
|
if (wasPrimary) scheduleToolsDrop();
|
|
17184
17196
|
};
|
|
17185
|
-
const retireStaleSocket = (key) => {
|
|
17186
|
-
const stale = removeStream(key);
|
|
17187
|
-
if (!stale) return;
|
|
17188
|
-
try {
|
|
17189
|
-
stale.end();
|
|
17190
|
-
} catch {
|
|
17191
|
-
}
|
|
17192
|
-
};
|
|
17193
17197
|
const server = createServer((req, res) => {
|
|
17194
17198
|
const url2 = new URL(req.url ?? "/", `http://${host}`);
|
|
17195
17199
|
const origin = req.headers.origin;
|
|
@@ -17234,10 +17238,6 @@ function createHttpBridge(opts) {
|
|
|
17234
17238
|
if (req.method === "POST" && url2.pathname === "/bridge/hello") {
|
|
17235
17239
|
void readJson(req, MAX_BODY_BYTES).then((body) => {
|
|
17236
17240
|
const out = opts.bridge.handshake(body, origin);
|
|
17237
|
-
if (out.t === "hello_ack") {
|
|
17238
|
-
const key = opts.bridge.keyForSession(out.sessionId);
|
|
17239
|
-
if (key !== null) retireStaleSocket(key);
|
|
17240
|
-
}
|
|
17241
17241
|
json2(res, out.t === "hello_ack" ? 200 : 403, out);
|
|
17242
17242
|
}).catch(
|
|
17243
17243
|
() => json2(res, 400, {
|
package/dist/cli.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
dispatchCli,
|
|
4
4
|
runAdapter
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DR3Q6KT2.js";
|
|
6
6
|
import {
|
|
7
7
|
runDaemon
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-U7AIWUSN.js";
|
|
9
9
|
import "./chunk-MLKGABMK.js";
|
|
10
10
|
|
|
11
11
|
// src/cli.ts
|
|
@@ -62,7 +62,7 @@ async function main() {
|
|
|
62
62
|
// Loaded lazily, like the installer: the adapter path is what an MCP host
|
|
63
63
|
// spawns and must not pay for a command only an operator types.
|
|
64
64
|
browsers: async (argv) => {
|
|
65
|
-
const { runBrowsers } = await import("./browsers-
|
|
65
|
+
const { runBrowsers } = await import("./browsers-KBFQARNA.js");
|
|
66
66
|
const { createNodeIo } = await import("./dist-JICXADYR.js");
|
|
67
67
|
const io = createNodeIo();
|
|
68
68
|
const code = await runBrowsers(argv, {
|
package/dist/index.js
CHANGED