agent-dir 0.3.1 → 0.4.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/README.md +3 -2
- package/dist/bin/agent-dir.d.ts +0 -1
- package/dist/bin/agent-dir.js +11 -4
- package/dist/src/auth.d.ts +0 -1
- package/dist/src/auth.js +0 -1
- package/dist/src/codegraph.d.ts +0 -1
- package/dist/src/codegraph.js +0 -1
- package/dist/src/config.d.ts +0 -1
- package/dist/src/config.js +0 -1
- package/dist/src/logging.d.ts +0 -1
- package/dist/src/logging.js +1 -2
- package/dist/src/mcp.d.ts +0 -1
- package/dist/src/mcp.js +11 -2
- package/dist/src/server.d.ts +0 -1
- package/dist/src/server.js +42 -2
- package/dist/src/setup.d.ts +0 -1
- package/dist/src/setup.js +4 -3
- package/dist/src/telemetry/aggregate.d.ts +7 -1
- package/dist/src/telemetry/aggregate.js +39 -3
- package/dist/src/telemetry/config.d.ts +0 -1
- package/dist/src/telemetry/config.js +0 -1
- package/dist/src/telemetry/format.d.ts +0 -1
- package/dist/src/telemetry/format.js +1 -2
- package/dist/src/telemetry/privacy.d.ts +0 -1
- package/dist/src/telemetry/privacy.js +76 -3
- package/dist/src/telemetry/recorder.d.ts +0 -1
- package/dist/src/telemetry/recorder.js +0 -1
- package/dist/src/telemetry/types.d.ts +28 -3
- package/dist/src/telemetry/types.js +1 -2
- package/dist/src/tools/code.d.ts +0 -1
- package/dist/src/tools/code.js +0 -1
- package/dist/src/tools/commands.d.ts +0 -1
- package/dist/src/tools/commands.js +0 -1
- package/dist/src/tools/diagnostics.d.ts +0 -1
- package/dist/src/tools/diagnostics.js +0 -1
- package/dist/src/tools/files.d.ts +0 -1
- package/dist/src/tools/files.js +0 -1
- package/dist/src/tools/git.d.ts +0 -1
- package/dist/src/tools/git.js +0 -1
- package/dist/src/tools/metadata.d.ts +0 -1
- package/dist/src/tools/metadata.js +0 -1
- package/dist/src/tools/npm.d.ts +0 -1
- package/dist/src/tools/npm.js +0 -1
- package/dist/src/tools/skills.d.ts +0 -1
- package/dist/src/tools/skills.js +0 -1
- package/dist/src/tunnel.d.ts +1 -2
- package/dist/src/tunnel.js +243 -83
- package/dist/src/types.d.ts +24 -1
- package/dist/src/types.js +0 -1
- package/package.json +2 -2
- package/dist/bin/agent-dir.d.ts.map +0 -1
- package/dist/bin/agent-dir.js.map +0 -1
- package/dist/src/auth.d.ts.map +0 -1
- package/dist/src/auth.js.map +0 -1
- package/dist/src/codegraph.d.ts.map +0 -1
- package/dist/src/codegraph.js.map +0 -1
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js.map +0 -1
- package/dist/src/logging.d.ts.map +0 -1
- package/dist/src/logging.js.map +0 -1
- package/dist/src/mcp.d.ts.map +0 -1
- package/dist/src/mcp.js.map +0 -1
- package/dist/src/server.d.ts.map +0 -1
- package/dist/src/server.js.map +0 -1
- package/dist/src/setup.d.ts.map +0 -1
- package/dist/src/setup.js.map +0 -1
- package/dist/src/telemetry/aggregate.d.ts.map +0 -1
- package/dist/src/telemetry/aggregate.js.map +0 -1
- package/dist/src/telemetry/config.d.ts.map +0 -1
- package/dist/src/telemetry/config.js.map +0 -1
- package/dist/src/telemetry/format.d.ts.map +0 -1
- package/dist/src/telemetry/format.js.map +0 -1
- package/dist/src/telemetry/privacy.d.ts.map +0 -1
- package/dist/src/telemetry/privacy.js.map +0 -1
- package/dist/src/telemetry/recorder.d.ts.map +0 -1
- package/dist/src/telemetry/recorder.js.map +0 -1
- package/dist/src/telemetry/types.d.ts.map +0 -1
- package/dist/src/telemetry/types.js.map +0 -1
- package/dist/src/tools/code.d.ts.map +0 -1
- package/dist/src/tools/code.js.map +0 -1
- package/dist/src/tools/commands.d.ts.map +0 -1
- package/dist/src/tools/commands.js.map +0 -1
- package/dist/src/tools/diagnostics.d.ts.map +0 -1
- package/dist/src/tools/diagnostics.js.map +0 -1
- package/dist/src/tools/files.d.ts.map +0 -1
- package/dist/src/tools/files.js.map +0 -1
- package/dist/src/tools/git.d.ts.map +0 -1
- package/dist/src/tools/git.js.map +0 -1
- package/dist/src/tools/metadata.d.ts.map +0 -1
- package/dist/src/tools/metadata.js.map +0 -1
- package/dist/src/tools/npm.d.ts.map +0 -1
- package/dist/src/tools/npm.js.map +0 -1
- package/dist/src/tools/skills.d.ts.map +0 -1
- package/dist/src/tools/skills.js.map +0 -1
- package/dist/src/tunnel.d.ts.map +0 -1
- package/dist/src/tunnel.js.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const TELEMETRY_LEVELS: readonly ["none", "anonymous", "basic", "detailed"];
|
|
1
|
+
export declare const TELEMETRY_LEVELS: readonly ["none", "anonymous", "basic", "detailed", "diagnostic"];
|
|
2
2
|
export type TelemetryLevel = (typeof TELEMETRY_LEVELS)[number];
|
|
3
3
|
export interface TelemetryConfig {
|
|
4
4
|
level: TelemetryLevel;
|
|
@@ -6,6 +6,15 @@ export interface TelemetryConfig {
|
|
|
6
6
|
persist?: boolean;
|
|
7
7
|
sessionId?: string;
|
|
8
8
|
}
|
|
9
|
+
export interface TelemetryHttpRequestEvent {
|
|
10
|
+
event: "http_request";
|
|
11
|
+
method: string;
|
|
12
|
+
route: "mcp" | "tree" | "root" | "file" | "other";
|
|
13
|
+
status: number;
|
|
14
|
+
success: boolean;
|
|
15
|
+
durationMs: number;
|
|
16
|
+
authenticated: boolean;
|
|
17
|
+
}
|
|
9
18
|
export interface TelemetryMcpRequestEvent {
|
|
10
19
|
event: "mcp_request";
|
|
11
20
|
method: string;
|
|
@@ -35,6 +44,14 @@ export interface TelemetryCommandEvent {
|
|
|
35
44
|
outputBytes?: number;
|
|
36
45
|
errorCategory?: string;
|
|
37
46
|
}
|
|
47
|
+
export interface TelemetryTunnelEvent {
|
|
48
|
+
event: "tunnel";
|
|
49
|
+
state: "online" | "disconnected" | "reconnecting" | "reconnected" | "failed";
|
|
50
|
+
attempt?: number;
|
|
51
|
+
attempts?: number;
|
|
52
|
+
durationMs?: number;
|
|
53
|
+
reasonCategory?: string;
|
|
54
|
+
}
|
|
38
55
|
export interface TelemetrySessionEvent {
|
|
39
56
|
event: "session";
|
|
40
57
|
wallClockDurationMs: number;
|
|
@@ -44,7 +61,7 @@ export interface TelemetrySessionEvent {
|
|
|
44
61
|
toolCallCount: number;
|
|
45
62
|
commandCallCount: number;
|
|
46
63
|
}
|
|
47
|
-
export type AnonymousTelemetryEvent = TelemetryMcpRequestEvent | TelemetryToolEvent | TelemetryCommandEvent | TelemetrySessionEvent;
|
|
64
|
+
export type AnonymousTelemetryEvent = TelemetryHttpRequestEvent | TelemetryMcpRequestEvent | TelemetryToolEvent | TelemetryCommandEvent | TelemetryTunnelEvent | TelemetrySessionEvent;
|
|
48
65
|
export interface TelemetryRuntimeContext {
|
|
49
66
|
agentDirVersion: string;
|
|
50
67
|
nodeMajor: number;
|
|
@@ -52,8 +69,17 @@ export interface TelemetryRuntimeContext {
|
|
|
52
69
|
arch: string;
|
|
53
70
|
mcpClientName?: string;
|
|
54
71
|
mcpClientVersion?: string;
|
|
72
|
+
nodeVersion?: string;
|
|
73
|
+
hostname?: string;
|
|
74
|
+
username?: string;
|
|
75
|
+
processId?: number;
|
|
76
|
+
parentProcessId?: number;
|
|
77
|
+
processUptimeMs?: number;
|
|
78
|
+
memoryRssBytes?: number;
|
|
55
79
|
}
|
|
56
80
|
export interface TelemetryProjectContext {
|
|
81
|
+
projectRoot?: string;
|
|
82
|
+
workingDirectory?: string;
|
|
57
83
|
language?: "typescript" | "javascript" | "python" | "go" | "rust" | "java" | "other";
|
|
58
84
|
framework?: "nextjs" | "react" | "hono" | "node" | "other";
|
|
59
85
|
packageManager?: "npm" | "pnpm" | "yarn" | "bun" | "other";
|
|
@@ -71,4 +97,3 @@ export interface TelemetryEnvelope {
|
|
|
71
97
|
runtime?: TelemetryRuntimeContext;
|
|
72
98
|
project?: TelemetryProjectContext;
|
|
73
99
|
}
|
|
74
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export const TELEMETRY_LEVELS = ["none", "anonymous", "basic", "detailed"];
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
export const TELEMETRY_LEVELS = ["none", "anonymous", "basic", "detailed", "diagnostic"];
|
package/dist/src/tools/code.d.ts
CHANGED
|
@@ -24,4 +24,3 @@ export declare function findDefinition(root: string, symbol: string, maxResults?
|
|
|
24
24
|
export declare function findReferences(root: string, symbol: string, maxResults?: number, maxBytes?: number): Promise<SearchMatch[]>;
|
|
25
25
|
export declare function findImports(root: string, maxResults?: number, maxBytes?: number): Promise<ImportMatch[]>;
|
|
26
26
|
export declare function findExports(root: string, maxResults?: number, maxBytes?: number): Promise<ExportMatch[]>;
|
|
27
|
-
//# sourceMappingURL=code.d.ts.map
|
package/dist/src/tools/code.js
CHANGED
|
@@ -6,4 +6,3 @@ export interface CommandResult {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function isCommandBlacklisted(command: string, args?: string[], blacklistedCommands?: string[]): boolean;
|
|
8
8
|
export declare function runCommand(root: string, command: string, args?: string[], allowedCommands?: string[], blacklistedCommands?: string[], timeoutMs?: number, signal?: AbortSignal): Promise<CommandResult>;
|
|
9
|
-
//# sourceMappingURL=commands.d.ts.map
|
package/dist/src/tools/files.js
CHANGED
package/dist/src/tools/git.d.ts
CHANGED
|
@@ -12,4 +12,3 @@ export declare function gitStatus(root: string): Promise<GitResult>;
|
|
|
12
12
|
export declare function gitDiff(root: string, staged?: boolean, pathspec?: string): Promise<GitResult>;
|
|
13
13
|
export declare function gitRestore(root: string, paths: string[], staged?: boolean): Promise<GitResult>;
|
|
14
14
|
export declare function gitLog(root: string, limit?: number, pathspec?: string): Promise<GitResult>;
|
|
15
|
-
//# sourceMappingURL=git.d.ts.map
|
package/dist/src/tools/git.js
CHANGED
|
@@ -17,4 +17,3 @@ export interface ProjectOverview {
|
|
|
17
17
|
export declare function fileInfo(root: string, relativePath: string): Promise<Record<string, unknown>>;
|
|
18
18
|
export declare function packageInfo(root: string): Promise<Record<string, unknown>>;
|
|
19
19
|
export declare function projectOverview(root: string): Promise<ProjectOverview>;
|
|
20
|
-
//# sourceMappingURL=metadata.d.ts.map
|
package/dist/src/tools/npm.d.ts
CHANGED
package/dist/src/tools/npm.js
CHANGED
package/dist/src/tools/skills.js
CHANGED
package/dist/src/tunnel.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import type { TunnelOptions, TunnelResult } from "./types.js";
|
|
2
|
-
export declare function startTunnel(
|
|
3
|
-
//# sourceMappingURL=tunnel.d.ts.map
|
|
2
|
+
export declare function startTunnel(options: TunnelOptions): Promise<TunnelResult>;
|
package/dist/src/tunnel.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { TelemetryRecorder } from "./telemetry/recorder.js";
|
|
2
3
|
const STARTUP_TIMEOUT_MS = 15_000;
|
|
4
|
+
const HEALTH_INTERVAL_MS = 15_000;
|
|
5
|
+
const HEALTH_TIMEOUT_MS = 5_000;
|
|
6
|
+
const HEALTH_FAILURE_THRESHOLD = 2;
|
|
7
|
+
const RECONNECT_DELAY_MS = 1_000;
|
|
8
|
+
const MAX_RECONNECT_ATTEMPTS = 5;
|
|
3
9
|
const ANSI_ESCAPE = new RegExp(String.fromCharCode(0x1b) + String.raw `\[[0-?]*[ -/]*[@-~]`, "g");
|
|
4
10
|
function cleanOutput(value) {
|
|
5
11
|
return value.toString().replace(ANSI_ESCAPE, "");
|
|
@@ -10,105 +16,259 @@ function writeLine(line = "") {
|
|
|
10
16
|
function publicUrl(subdomain) {
|
|
11
17
|
return `https://${subdomain}.wormhole.bar`;
|
|
12
18
|
}
|
|
19
|
+
function reasonCategory(reason) {
|
|
20
|
+
if (/timeout/i.test(reason))
|
|
21
|
+
return "timeout";
|
|
22
|
+
if (/auth/i.test(reason))
|
|
23
|
+
return "authentication";
|
|
24
|
+
if (/registration|subdomain/i.test(reason))
|
|
25
|
+
return "startup";
|
|
26
|
+
if (/exit|process|error/i.test(reason))
|
|
27
|
+
return "execution";
|
|
28
|
+
return "unknown";
|
|
29
|
+
}
|
|
13
30
|
function failureFromLine(line) {
|
|
14
|
-
if (/subdomain limit reached/i.test(line))
|
|
15
|
-
return "Wormhole rejected the tunnel: subdomain limit reached.
|
|
16
|
-
}
|
|
31
|
+
if (/subdomain limit reached/i.test(line))
|
|
32
|
+
return "Wormhole rejected the tunnel: subdomain limit reached.";
|
|
17
33
|
const registration = line.match(/registration failed:\s*(.+?)(?:\n|$)/i);
|
|
18
|
-
|
|
19
|
-
if (reason) {
|
|
20
|
-
return `Wormhole registration failed: ${reason.trim()}`;
|
|
21
|
-
}
|
|
22
|
-
return undefined;
|
|
34
|
+
return registration?.[1] ? `Wormhole registration failed: ${registration[1].trim()}` : undefined;
|
|
23
35
|
}
|
|
24
|
-
export function startTunnel(
|
|
25
|
-
if (provider !== "wormhole")
|
|
26
|
-
|
|
36
|
+
export function startTunnel(options) {
|
|
37
|
+
if (options.provider !== "wormhole")
|
|
38
|
+
return Promise.reject(new Error(`Unsupported tunnel provider: ${options.provider}`));
|
|
27
39
|
return new Promise((resolve, reject) => {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
let
|
|
40
|
+
const telemetry = options.telemetry && options.telemetry.level !== "none"
|
|
41
|
+
? new TelemetryRecorder({
|
|
42
|
+
...options.telemetry,
|
|
43
|
+
persist: options.telemetry.persist ?? true,
|
|
44
|
+
sessionId: options.telemetry.sessionId ?? `tunnel-${Date.now().toString(36)}`,
|
|
45
|
+
})
|
|
46
|
+
: undefined;
|
|
47
|
+
let child;
|
|
48
|
+
let url;
|
|
49
|
+
let startup = true;
|
|
50
|
+
let resolved = false;
|
|
51
|
+
let reconnecting = false;
|
|
52
|
+
let attempts = 0;
|
|
36
53
|
let timer;
|
|
37
|
-
|
|
54
|
+
let reconnectTimer;
|
|
55
|
+
let healthTimer;
|
|
56
|
+
let stopped = false;
|
|
57
|
+
let healthFailures = 0;
|
|
58
|
+
const record = (event) => {
|
|
59
|
+
if (!telemetry)
|
|
60
|
+
return;
|
|
61
|
+
if (event.type === "online")
|
|
62
|
+
telemetry.record({ event: "tunnel", state: "online", attempt: event.attempt });
|
|
63
|
+
else if (event.type === "disconnected")
|
|
64
|
+
telemetry.record({
|
|
65
|
+
event: "tunnel",
|
|
66
|
+
state: "disconnected",
|
|
67
|
+
reasonCategory: reasonCategory(event.reason),
|
|
68
|
+
});
|
|
69
|
+
else if (event.type === "reconnecting")
|
|
70
|
+
telemetry.record({
|
|
71
|
+
event: "tunnel",
|
|
72
|
+
state: "reconnecting",
|
|
73
|
+
attempt: event.attempt,
|
|
74
|
+
reasonCategory: reasonCategory(event.reason),
|
|
75
|
+
});
|
|
76
|
+
else if (event.type === "reconnected")
|
|
77
|
+
telemetry.record({ event: "tunnel", state: "reconnected", attempt: event.attempt });
|
|
78
|
+
else
|
|
79
|
+
telemetry.record({
|
|
80
|
+
event: "tunnel",
|
|
81
|
+
state: "failed",
|
|
82
|
+
attempts: event.attempts,
|
|
83
|
+
reasonCategory: reasonCategory(event.reason),
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const emit = (event) => {
|
|
87
|
+
record(event);
|
|
88
|
+
if (event.type === "online") {
|
|
89
|
+
writeLine();
|
|
90
|
+
writeLine(" ✓ TUNNEL ONLINE");
|
|
91
|
+
writeLine(` Public URL : ${event.url}`);
|
|
92
|
+
writeLine(` MCP endpoint : ${event.url}/mcp`);
|
|
93
|
+
writeLine(` Forwarding : ${event.url} → http://127.0.0.1:${options.port}`);
|
|
94
|
+
writeLine();
|
|
95
|
+
}
|
|
96
|
+
else if (event.type === "disconnected") {
|
|
97
|
+
writeLine();
|
|
98
|
+
writeLine(` ⚠ TUNNEL DISCONNECTED ${event.reason}`);
|
|
99
|
+
}
|
|
100
|
+
else if (event.type === "reconnecting") {
|
|
101
|
+
writeLine(` Reconnecting : attempt ${event.attempt}/${MAX_RECONNECT_ATTEMPTS}`);
|
|
102
|
+
}
|
|
103
|
+
else if (event.type === "reconnected") {
|
|
104
|
+
writeLine(` ✓ TUNNEL RECONNECTED attempt ${event.attempt}`);
|
|
105
|
+
writeLine(` Public URL : ${event.url}`);
|
|
106
|
+
writeLine(` MCP endpoint : ${event.url}/mcp`);
|
|
107
|
+
writeLine();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
writeLine(` ✖ TUNNEL OFFLINE ${event.reason}`);
|
|
111
|
+
writeLine(` Reconnect attempts exhausted: ${event.attempts}`);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const cleanupTimers = () => {
|
|
38
115
|
if (timer)
|
|
39
116
|
clearTimeout(timer);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
117
|
+
if (reconnectTimer)
|
|
118
|
+
clearTimeout(reconnectTimer);
|
|
119
|
+
if (healthTimer)
|
|
120
|
+
clearInterval(healthTimer);
|
|
121
|
+
timer = undefined;
|
|
122
|
+
reconnectTimer = undefined;
|
|
123
|
+
healthTimer = undefined;
|
|
44
124
|
};
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
cleanup();
|
|
50
|
-
if (!child.killed)
|
|
125
|
+
const stop = () => {
|
|
126
|
+
stopped = true;
|
|
127
|
+
cleanupTimers();
|
|
128
|
+
if (child && !child.killed)
|
|
51
129
|
child.kill("SIGTERM");
|
|
52
|
-
reject(new Error(message));
|
|
53
130
|
};
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
131
|
+
const startHealthChecks = () => {
|
|
132
|
+
if (!url || stopped || healthTimer)
|
|
56
133
|
return;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
134
|
+
healthTimer = setInterval(async () => {
|
|
135
|
+
if (!url || stopped || reconnecting)
|
|
136
|
+
return;
|
|
137
|
+
try {
|
|
138
|
+
const response = await fetch(url, {
|
|
139
|
+
method: "HEAD",
|
|
140
|
+
...(options.token ? { headers: { authorization: `Bearer ${options.token}` } } : {}),
|
|
141
|
+
signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),
|
|
142
|
+
});
|
|
143
|
+
healthFailures = 0;
|
|
144
|
+
if (!response)
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
healthFailures += 1;
|
|
149
|
+
if (healthFailures >= HEALTH_FAILURE_THRESHOLD) {
|
|
150
|
+
healthFailures = 0;
|
|
151
|
+
handleDisconnect("Public tunnel health check failed.");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}, HEALTH_INTERVAL_MS);
|
|
155
|
+
healthTimer.unref();
|
|
66
156
|
};
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
if (!line)
|
|
157
|
+
const spawnTunnel = (attempt) => {
|
|
158
|
+
if (stopped)
|
|
70
159
|
return;
|
|
71
|
-
const
|
|
72
|
-
if (
|
|
73
|
-
|
|
160
|
+
const args = ["http", String(options.port)];
|
|
161
|
+
if (!options.random && options.subdomain)
|
|
162
|
+
args.push("--subdomain", options.subdomain);
|
|
163
|
+
child = spawn("wormhole", args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
164
|
+
let buffer = "";
|
|
165
|
+
let connected = false;
|
|
166
|
+
const cleanupAttempt = () => {
|
|
167
|
+
if (timer)
|
|
168
|
+
clearTimeout(timer);
|
|
169
|
+
timer = undefined;
|
|
170
|
+
child?.stdout?.removeListener("data", onData);
|
|
171
|
+
child?.stderr?.removeListener("data", onData);
|
|
172
|
+
child?.removeListener("error", onError);
|
|
173
|
+
child?.removeListener("exit", onExit);
|
|
174
|
+
};
|
|
175
|
+
const disconnect = (reason) => {
|
|
176
|
+
cleanupAttempt();
|
|
177
|
+
if (child && !child.killed)
|
|
178
|
+
child.kill("SIGTERM");
|
|
179
|
+
if (stopped)
|
|
180
|
+
return;
|
|
181
|
+
if (startup) {
|
|
182
|
+
stop();
|
|
183
|
+
reject(new Error(reason));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
handleDisconnect(reason);
|
|
187
|
+
};
|
|
188
|
+
const connectedAt = (nextUrl) => {
|
|
189
|
+
if (connected || stopped)
|
|
190
|
+
return;
|
|
191
|
+
connected = true;
|
|
192
|
+
url = nextUrl;
|
|
193
|
+
if (timer)
|
|
194
|
+
clearTimeout(timer);
|
|
195
|
+
timer = undefined;
|
|
196
|
+
if (startup) {
|
|
197
|
+
startup = false;
|
|
198
|
+
emit({ type: "online", url, attempt });
|
|
199
|
+
startHealthChecks();
|
|
200
|
+
if (!resolved) {
|
|
201
|
+
if (!child) {
|
|
202
|
+
stop();
|
|
203
|
+
reject(new Error("Wormhole connected without a child process."));
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
resolved = true;
|
|
207
|
+
resolve({ child, url, onEvent: emit, stop });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
reconnecting = false;
|
|
212
|
+
attempts = 0;
|
|
213
|
+
healthFailures = 0;
|
|
214
|
+
emit({ type: "reconnected", url, attempt });
|
|
215
|
+
startHealthChecks();
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
const processLine = (raw) => {
|
|
219
|
+
const line = cleanOutput(raw).trim();
|
|
220
|
+
if (!line)
|
|
221
|
+
return;
|
|
222
|
+
const failure = failureFromLine(line);
|
|
223
|
+
if (failure) {
|
|
224
|
+
disconnect(failure);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const explicit = line.match(/https:\/\/[^\s"'<>]+/)?.[0]?.replace(/[),.;]+$/, "");
|
|
228
|
+
if (explicit)
|
|
229
|
+
connectedAt(explicit);
|
|
230
|
+
else if (/Status\s+.*connected/i.test(line) && options.subdomain)
|
|
231
|
+
connectedAt(publicUrl(options.subdomain));
|
|
232
|
+
};
|
|
233
|
+
const onData = (chunk) => {
|
|
234
|
+
buffer += cleanOutput(chunk);
|
|
235
|
+
const lines = buffer.split(/\r\n|\n|\r/);
|
|
236
|
+
buffer = lines.pop() ?? "";
|
|
237
|
+
for (const line of lines)
|
|
238
|
+
processLine(line);
|
|
239
|
+
};
|
|
240
|
+
const onError = (error) => disconnect(`Wormhole error: ${error.message}`);
|
|
241
|
+
const onExit = (code, signal) => {
|
|
242
|
+
const detail = signal ? `signal ${signal}` : `code ${code}`;
|
|
243
|
+
disconnect(startup
|
|
244
|
+
? `Wormhole exited before the tunnel was established (${detail}).`
|
|
245
|
+
: `Wormhole process exited (${detail}).`);
|
|
246
|
+
};
|
|
247
|
+
child.stdout?.on("data", onData);
|
|
248
|
+
child.stderr?.on("data", onData);
|
|
249
|
+
child.once("error", onError);
|
|
250
|
+
child.once("exit", onExit);
|
|
251
|
+
timer = setTimeout(() => {
|
|
252
|
+
if (!connected)
|
|
253
|
+
disconnect(`Timed out waiting for Wormhole to establish the tunnel after ${STARTUP_TIMEOUT_MS / 1000}s.`);
|
|
254
|
+
}, STARTUP_TIMEOUT_MS);
|
|
255
|
+
};
|
|
256
|
+
const handleDisconnect = (reason) => {
|
|
257
|
+
if (stopped || reconnecting)
|
|
74
258
|
return;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
|
|
259
|
+
reconnecting = true;
|
|
260
|
+
emit({ type: "disconnected", reason });
|
|
261
|
+
if (attempts >= MAX_RECONNECT_ATTEMPTS) {
|
|
262
|
+
emit({ type: "failed", reason, attempts });
|
|
79
263
|
return;
|
|
80
264
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
buffer += cleanOutput(chunk);
|
|
88
|
-
const lines = buffer.split(/\r\n|\n|\r/);
|
|
89
|
-
buffer = lines.pop() ?? "";
|
|
90
|
-
for (const line of lines) {
|
|
91
|
-
processLine(line);
|
|
92
|
-
if (settled)
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
const onError = (error) => {
|
|
97
|
-
fail(`Unable to start Wormhole: ${error.message}`);
|
|
98
|
-
};
|
|
99
|
-
const onExit = (code, signal) => {
|
|
100
|
-
if (settled)
|
|
101
|
-
return;
|
|
102
|
-
const detail = signal ? `signal ${signal}` : `code ${code}`;
|
|
103
|
-
fail(`Wormhole exited before the tunnel was established (${detail}).`);
|
|
265
|
+
attempts += 1;
|
|
266
|
+
emit({ type: "reconnecting", attempt: attempts, reason });
|
|
267
|
+
reconnectTimer = setTimeout(() => {
|
|
268
|
+
reconnectTimer = undefined;
|
|
269
|
+
spawnTunnel(attempts);
|
|
270
|
+
}, RECONNECT_DELAY_MS * attempts);
|
|
104
271
|
};
|
|
105
|
-
|
|
106
|
-
child.stderr?.on("data", onData);
|
|
107
|
-
child.once("error", onError);
|
|
108
|
-
child.once("exit", onExit);
|
|
109
|
-
timer = setTimeout(() => {
|
|
110
|
-
fail(`Timed out waiting for Wormhole to establish the tunnel after ${STARTUP_TIMEOUT_MS / 1000}s.`);
|
|
111
|
-
}, STARTUP_TIMEOUT_MS);
|
|
272
|
+
spawnTunnel(0);
|
|
112
273
|
});
|
|
113
274
|
}
|
|
114
|
-
//# sourceMappingURL=tunnel.js.map
|
package/dist/src/types.d.ts
CHANGED
|
@@ -44,9 +44,32 @@ export interface TunnelOptions {
|
|
|
44
44
|
port: number;
|
|
45
45
|
subdomain?: string;
|
|
46
46
|
random?: boolean;
|
|
47
|
+
token?: string;
|
|
48
|
+
telemetry?: TelemetryConfig;
|
|
47
49
|
}
|
|
48
50
|
export interface TunnelResult {
|
|
49
51
|
child: ChildProcess;
|
|
50
52
|
url: string;
|
|
53
|
+
onEvent?: (event: TunnelEvent) => void;
|
|
54
|
+
stop?: () => void;
|
|
51
55
|
}
|
|
52
|
-
|
|
56
|
+
export type TunnelEvent = {
|
|
57
|
+
type: "online";
|
|
58
|
+
url: string;
|
|
59
|
+
attempt: number;
|
|
60
|
+
} | {
|
|
61
|
+
type: "disconnected";
|
|
62
|
+
reason: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: "reconnecting";
|
|
65
|
+
attempt: number;
|
|
66
|
+
reason: string;
|
|
67
|
+
} | {
|
|
68
|
+
type: "reconnected";
|
|
69
|
+
url: string;
|
|
70
|
+
attempt: number;
|
|
71
|
+
} | {
|
|
72
|
+
type: "failed";
|
|
73
|
+
reason: string;
|
|
74
|
+
attempts: number;
|
|
75
|
+
};
|
package/dist/src/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-dir",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Expose a local project to an AI agent through authenticated MCP, filesystem tools, and allowlisted development commands",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"node": ">=24"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
|
-
"build": "tsc",
|
|
23
|
+
"build": "node -e \"fs.rmSync('dist', { recursive: true, force: true })\" && tsc",
|
|
24
24
|
"test": "npm run build && node --test dist/test/**/*.test.js",
|
|
25
25
|
"start": "node ./dist/bin/agent-dir.js .",
|
|
26
26
|
"typecheck": "tsc --noEmit",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dir.d.ts","sourceRoot":"","sources":["../../bin/agent-dir.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-dir.js","sourceRoot":"","sources":["../../bin/agent-dir.ts"],"names":[],"mappings":"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"}
|
package/dist/src/auth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQrE;AAQD,wBAAgB,YAAY,IAAI,QAAQ,CASvC"}
|
package/dist/src/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,KAAa;IAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,UAAU,KAAK,IAAI,IAAI,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9D,OAAO,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE;QAC7D,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,cAAc,EAAE,iCAAiC;YACjD,kBAAkB,EAAE,QAAQ;YAC5B,eAAe,EAAE,UAAU;SAC5B;KACF,CAAC,CAAC;AACL,CAAC"}
|