sub-bridge 1.0.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/.cursor/commands/mcp-only.md +1 -0
- package/.github/workflows/npm-publish.yml +33 -0
- package/.github/workflows/pages.yml +40 -0
- package/.github/workflows/release-please.yml +21 -0
- package/.release-please-manifest.json +3 -0
- package/CHANGELOG.md +8 -0
- package/DEVELOPMENT.md +31 -0
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/api/index.ts +12 -0
- package/bun.lock +102 -0
- package/dist/auth/oauth-flow.d.ts +24 -0
- package/dist/auth/oauth-flow.d.ts.map +1 -0
- package/dist/auth/oauth-flow.js +184 -0
- package/dist/auth/oauth-flow.js.map +1 -0
- package/dist/auth/oauth-manager.d.ts +13 -0
- package/dist/auth/oauth-manager.d.ts.map +1 -0
- package/dist/auth/oauth-manager.js +25 -0
- package/dist/auth/oauth-manager.js.map +1 -0
- package/dist/auth/provider.d.ts +42 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +270 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +91 -0
- package/dist/cli.js.map +1 -0
- package/dist/mcp/proxy.d.ts +16 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +85 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +50 -0
- package/dist/mcp.js.map +1 -0
- package/dist/routes/auth.d.ts +6 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +149 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/chat.d.ts +6 -0
- package/dist/routes/chat.d.ts.map +1 -0
- package/dist/routes/chat.js +808 -0
- package/dist/routes/chat.js.map +1 -0
- package/dist/routes/tunnels.d.ts +7 -0
- package/dist/routes/tunnels.d.ts.map +1 -0
- package/dist/routes/tunnels.js +44 -0
- package/dist/routes/tunnels.js.map +1 -0
- package/dist/server.d.ts +25 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +157 -0
- package/dist/server.js.map +1 -0
- package/dist/tunnel/providers/cloudflare.d.ts +9 -0
- package/dist/tunnel/providers/cloudflare.d.ts.map +1 -0
- package/dist/tunnel/providers/cloudflare.js +47 -0
- package/dist/tunnel/providers/cloudflare.js.map +1 -0
- package/dist/tunnel/providers/index.d.ts +4 -0
- package/dist/tunnel/providers/index.d.ts.map +1 -0
- package/dist/tunnel/providers/index.js +13 -0
- package/dist/tunnel/providers/index.js.map +1 -0
- package/dist/tunnel/providers/ngrok.d.ts +10 -0
- package/dist/tunnel/providers/ngrok.d.ts.map +1 -0
- package/dist/tunnel/providers/ngrok.js +52 -0
- package/dist/tunnel/providers/ngrok.js.map +1 -0
- package/dist/tunnel/providers/tailscale.d.ts +10 -0
- package/dist/tunnel/providers/tailscale.d.ts.map +1 -0
- package/dist/tunnel/providers/tailscale.js +48 -0
- package/dist/tunnel/providers/tailscale.js.map +1 -0
- package/dist/tunnel/registry.d.ts +14 -0
- package/dist/tunnel/registry.d.ts.map +1 -0
- package/dist/tunnel/registry.js +86 -0
- package/dist/tunnel/registry.js.map +1 -0
- package/dist/tunnel/types.d.ts +26 -0
- package/dist/tunnel/types.d.ts.map +1 -0
- package/dist/tunnel/types.js +6 -0
- package/dist/tunnel/types.js.map +1 -0
- package/dist/tunnel/utils.d.ts +18 -0
- package/dist/tunnel/utils.d.ts.map +1 -0
- package/dist/tunnel/utils.js +57 -0
- package/dist/tunnel/utils.js.map +1 -0
- package/dist/types.d.ts +52 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/anthropic-to-openai-converter.d.ts +103 -0
- package/dist/utils/anthropic-to-openai-converter.d.ts.map +1 -0
- package/dist/utils/anthropic-to-openai-converter.js +376 -0
- package/dist/utils/anthropic-to-openai-converter.js.map +1 -0
- package/dist/utils/chat-to-responses.d.ts +59 -0
- package/dist/utils/chat-to-responses.d.ts.map +1 -0
- package/dist/utils/chat-to-responses.js +395 -0
- package/dist/utils/chat-to-responses.js.map +1 -0
- package/dist/utils/chatgpt-instructions.d.ts +3 -0
- package/dist/utils/chatgpt-instructions.d.ts.map +1 -0
- package/dist/utils/chatgpt-instructions.js +12 -0
- package/dist/utils/chatgpt-instructions.js.map +1 -0
- package/dist/utils/cli-args.d.ts +3 -0
- package/dist/utils/cli-args.d.ts.map +1 -0
- package/dist/utils/cli-args.js +10 -0
- package/dist/utils/cli-args.js.map +1 -0
- package/dist/utils/cors-bypass.d.ts +4 -0
- package/dist/utils/cors-bypass.d.ts.map +1 -0
- package/dist/utils/cors-bypass.js +30 -0
- package/dist/utils/cors-bypass.js.map +1 -0
- package/dist/utils/cursor-byok-bypass.d.ts +37 -0
- package/dist/utils/cursor-byok-bypass.d.ts.map +1 -0
- package/dist/utils/cursor-byok-bypass.js +53 -0
- package/dist/utils/cursor-byok-bypass.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +192 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/port.d.ts +27 -0
- package/dist/utils/port.d.ts.map +1 -0
- package/dist/utils/port.js +78 -0
- package/dist/utils/port.js.map +1 -0
- package/dist/utils/setup-instructions.d.ts +10 -0
- package/dist/utils/setup-instructions.d.ts.map +1 -0
- package/dist/utils/setup-instructions.js +49 -0
- package/dist/utils/setup-instructions.js.map +1 -0
- package/env.example +25 -0
- package/index.html +992 -0
- package/package.json +57 -0
- package/public/.nojekyll +0 -0
- package/public/assets/chat.png +0 -0
- package/public/assets/demo.gif +0 -0
- package/public/assets/demo.mp4 +0 -0
- package/public/assets/setup.png +0 -0
- package/public/assets/ui.png +0 -0
- package/public/index.html +292 -0
- package/release-please-config.json +10 -0
- package/src/auth/provider.ts +412 -0
- package/src/cli.ts +97 -0
- package/src/mcp/proxy.ts +64 -0
- package/src/mcp.ts +56 -0
- package/src/oauth/authorize.ts +270 -0
- package/src/oauth/crypto.ts +198 -0
- package/src/oauth/dcr.ts +129 -0
- package/src/oauth/metadata.ts +40 -0
- package/src/oauth/token.ts +173 -0
- package/src/routes/auth.ts +149 -0
- package/src/routes/chat.ts +983 -0
- package/src/routes/oauth.ts +220 -0
- package/src/routes/tunnels.ts +45 -0
- package/src/server.ts +204 -0
- package/src/tunnel/providers/cloudflare.ts +50 -0
- package/src/tunnel/providers/index.ts +7 -0
- package/src/tunnel/providers/ngrok.ts +56 -0
- package/src/tunnel/providers/tailscale.ts +50 -0
- package/src/tunnel/registry.ts +96 -0
- package/src/tunnel/types.ts +32 -0
- package/src/tunnel/utils.ts +59 -0
- package/src/types.ts +55 -0
- package/src/utils/anthropic-to-openai-converter.ts +578 -0
- package/src/utils/chat-to-responses.ts +512 -0
- package/src/utils/chatgpt-instructions.ts +7 -0
- package/src/utils/cli-args.ts +8 -0
- package/src/utils/cors-bypass.ts +39 -0
- package/src/utils/cursor-byok-bypass.ts +56 -0
- package/src/utils/logger.ts +174 -0
- package/src/utils/port.ts +99 -0
- package/src/utils/setup-instructions.ts +59 -0
- package/tsconfig.json +22 -0
- package/vercel.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tunnel management routes
|
|
3
|
+
*/
|
|
4
|
+
import { Hono } from 'hono';
|
|
5
|
+
import { TunnelRegistry } from '../tunnel/registry';
|
|
6
|
+
export declare function createTunnelRoutes(tunnelRegistry: TunnelRegistry, getLocalPort: () => number): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
7
|
+
//# sourceMappingURL=tunnels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnels.d.ts","sourceRoot":"","sources":["../../src/routes/tunnels.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,MAAM,8EAsC5F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTunnelRoutes = createTunnelRoutes;
|
|
4
|
+
/**
|
|
5
|
+
* Tunnel management routes
|
|
6
|
+
*/
|
|
7
|
+
const hono_1 = require("hono");
|
|
8
|
+
function createTunnelRoutes(tunnelRegistry, getLocalPort) {
|
|
9
|
+
const app = new hono_1.Hono();
|
|
10
|
+
// GET /api/tunnels - List available providers and current status
|
|
11
|
+
app.get('/', async (c) => {
|
|
12
|
+
const providers = await tunnelRegistry.getProviders();
|
|
13
|
+
const status = tunnelRegistry.getStatus();
|
|
14
|
+
return c.json({ providers, status });
|
|
15
|
+
});
|
|
16
|
+
// GET /api/tunnels/status - Just the current status as JSON
|
|
17
|
+
app.get('/status', (c) => c.json(tunnelRegistry.getStatus()));
|
|
18
|
+
// POST /api/tunnels/:provider/start - Start a tunnel
|
|
19
|
+
app.post('/:provider/start', async (c) => {
|
|
20
|
+
const providerId = c.req.param('provider');
|
|
21
|
+
let namedUrl;
|
|
22
|
+
try {
|
|
23
|
+
const body = await c.req.json().catch(() => ({}));
|
|
24
|
+
namedUrl = body.namedUrl;
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
try {
|
|
28
|
+
await tunnelRegistry.start(providerId, getLocalPort(), namedUrl || undefined);
|
|
29
|
+
const status = tunnelRegistry.getStatus();
|
|
30
|
+
return c.json({ success: true, status });
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
34
|
+
return c.json({ success: false, error: message });
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// POST /api/tunnels/stop - Stop any active tunnel
|
|
38
|
+
app.post('/stop', (c) => {
|
|
39
|
+
tunnelRegistry.stop();
|
|
40
|
+
return c.json({ success: true });
|
|
41
|
+
});
|
|
42
|
+
return app;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=tunnels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnels.js","sourceRoot":"","sources":["../../src/routes/tunnels.ts"],"names":[],"mappings":";;AAMA,gDAsCC;AA5CD;;GAEG;AACH,+BAA2B;AAG3B,SAAgB,kBAAkB,CAAC,cAA8B,EAAE,YAA0B;IAC3F,MAAM,GAAG,GAAG,IAAI,WAAI,EAAE,CAAA;IAEtB,iEAAiE;IACjE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAA;QACrD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,4DAA4D;IAC5D,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAE7D,qDAAqD;IACrD,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC1C,IAAI,QAA4B,CAAA;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACjD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAA;YAC7E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;YACzC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,kDAAkD;IAClD,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,cAAc,CAAC,IAAI,EAAE,CAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* HTTP Server Entry Point
|
|
4
|
+
*
|
|
5
|
+
* Run directly for development:
|
|
6
|
+
* tsx watch src/server.ts
|
|
7
|
+
*
|
|
8
|
+
* Or import and use programmatically from MCP proxy.
|
|
9
|
+
*/
|
|
10
|
+
import { Hono } from 'hono';
|
|
11
|
+
export interface ServerConfig {
|
|
12
|
+
port?: number;
|
|
13
|
+
tunnelUrl?: string;
|
|
14
|
+
verbose: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function createServerApp(config: ServerConfig, getPublicUrl: () => string, localPort: {
|
|
17
|
+
value: number;
|
|
18
|
+
}): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
19
|
+
export interface StartedServer {
|
|
20
|
+
port: number;
|
|
21
|
+
publicUrl: string;
|
|
22
|
+
stop: () => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function startServer(config: ServerConfig): Promise<StartedServer>;
|
|
25
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAoB3B,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,EAAE,SAAS,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,8EAsE7G;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAmC9E"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createServerApp = createServerApp;
|
|
8
|
+
exports.startServer = startServer;
|
|
9
|
+
/**
|
|
10
|
+
* HTTP Server Entry Point
|
|
11
|
+
*
|
|
12
|
+
* Run directly for development:
|
|
13
|
+
* tsx watch src/server.ts
|
|
14
|
+
*
|
|
15
|
+
* Or import and use programmatically from MCP proxy.
|
|
16
|
+
*/
|
|
17
|
+
const hono_1 = require("hono");
|
|
18
|
+
const node_server_1 = require("@hono/node-server");
|
|
19
|
+
const commander_1 = require("commander");
|
|
20
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
21
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
22
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
23
|
+
const registry_1 = require("./tunnel/registry");
|
|
24
|
+
const cors_bypass_1 = require("./utils/cors-bypass");
|
|
25
|
+
const port_1 = require("./utils/port");
|
|
26
|
+
const logger_1 = require("./utils/logger");
|
|
27
|
+
const auth_1 = require("./routes/auth");
|
|
28
|
+
const tunnels_1 = require("./routes/tunnels");
|
|
29
|
+
const chat_1 = require("./routes/chat");
|
|
30
|
+
const cli_args_1 = require("./utils/cli-args");
|
|
31
|
+
const setup_instructions_1 = require("./utils/setup-instructions");
|
|
32
|
+
// Tunnel registry (singleton)
|
|
33
|
+
const tunnelRegistry = new registry_1.TunnelRegistry();
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// LANDING PAGE
|
|
36
|
+
// ============================================================================
|
|
37
|
+
const LANDING_PAGE_PATH = node_path_1.default.resolve(__dirname, '..', 'index.html');
|
|
38
|
+
async function getLandingPageHtml() {
|
|
39
|
+
return promises_1.default.readFile(LANDING_PAGE_PATH, 'utf8');
|
|
40
|
+
}
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// SERVER APP
|
|
43
|
+
// ============================================================================
|
|
44
|
+
function createServerApp(config, getPublicUrl, localPort) {
|
|
45
|
+
const app = new hono_1.Hono();
|
|
46
|
+
app.options('*', cors_bypass_1.corsPreflightHandler);
|
|
47
|
+
app.use('*', cors_bypass_1.corsMiddleware);
|
|
48
|
+
// Landing page
|
|
49
|
+
app.get('/', async (c) => {
|
|
50
|
+
const html = await getLandingPageHtml();
|
|
51
|
+
c.header('Cache-Control', 'no-store');
|
|
52
|
+
return c.html(html);
|
|
53
|
+
});
|
|
54
|
+
// Static assets (for setup.png)
|
|
55
|
+
app.get('/assets/*', async (c) => {
|
|
56
|
+
const filePath = c.req.path.replace('/assets/', '');
|
|
57
|
+
const fullPath = node_path_1.default.resolve(__dirname, '..', 'public', 'assets', filePath);
|
|
58
|
+
try {
|
|
59
|
+
const file = await promises_1.default.readFile(fullPath);
|
|
60
|
+
const ext = node_path_1.default.extname(filePath).toLowerCase();
|
|
61
|
+
const contentType = ext === '.png' ? 'image/png' : ext === '.jpg' || ext === '.jpeg' ? 'image/jpeg' : 'application/octet-stream';
|
|
62
|
+
return new Response(file, { headers: { 'Content-Type': contentType } });
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return c.text('Not found', 404);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Health check with service identifier
|
|
69
|
+
app.get('/health', (c) => c.json({
|
|
70
|
+
status: 'ok',
|
|
71
|
+
service: port_1.SERVICE_IDENTIFIER,
|
|
72
|
+
port: localPort.value,
|
|
73
|
+
}));
|
|
74
|
+
// API config for frontend
|
|
75
|
+
app.get('/api/config', (c) => c.json({
|
|
76
|
+
publicUrl: getPublicUrl(),
|
|
77
|
+
port: localPort.value,
|
|
78
|
+
}));
|
|
79
|
+
// MCP tool forwarding endpoint
|
|
80
|
+
app.post('/mcp/tools/:name', async (c) => {
|
|
81
|
+
const toolName = c.req.param('name');
|
|
82
|
+
if (toolName === 'get_status') {
|
|
83
|
+
const publicUrl = getPublicUrl();
|
|
84
|
+
const tunnelStatus = tunnelRegistry.getStatus();
|
|
85
|
+
const isLocalOnly = publicUrl.startsWith('http://localhost');
|
|
86
|
+
const statusText = (0, setup_instructions_1.buildStatusText)({
|
|
87
|
+
mode: 'server',
|
|
88
|
+
baseUrl: publicUrl,
|
|
89
|
+
isLocalOnly,
|
|
90
|
+
tunnelActive: tunnelStatus.active,
|
|
91
|
+
});
|
|
92
|
+
return c.json({
|
|
93
|
+
content: [{ type: 'text', text: statusText }],
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return c.json({ error: `Unknown tool: ${toolName}` }, 404);
|
|
97
|
+
});
|
|
98
|
+
// Mount routes
|
|
99
|
+
app.route('/auth', (0, auth_1.createAuthRoutes)());
|
|
100
|
+
app.route('/api/tunnels', (0, tunnels_1.createTunnelRoutes)(tunnelRegistry, () => localPort.value));
|
|
101
|
+
app.route('/v1', (0, chat_1.createChatRoutes)());
|
|
102
|
+
return app;
|
|
103
|
+
}
|
|
104
|
+
async function startServer(config) {
|
|
105
|
+
(0, logger_1.setVerbose)(config.verbose);
|
|
106
|
+
const port = config.port ?? await (0, port_1.findFreePort)();
|
|
107
|
+
const localPort = { value: port };
|
|
108
|
+
const runningConfig = { ...config, port };
|
|
109
|
+
let publicUrl = `http://localhost:${port}`;
|
|
110
|
+
const app = createServerApp(runningConfig, () => publicUrl, localPort);
|
|
111
|
+
return new Promise((resolve) => {
|
|
112
|
+
const server = (0, node_server_1.serve)({ fetch: app.fetch, port }, (info) => {
|
|
113
|
+
localPort.value = info.port;
|
|
114
|
+
publicUrl = config.tunnelUrl
|
|
115
|
+
? `https://${config.tunnelUrl}`
|
|
116
|
+
: `http://localhost:${info.port}`;
|
|
117
|
+
(0, logger_1.log)();
|
|
118
|
+
(0, logger_1.log)(chalk_1.default.bold.cyan(' Sub Bridge HTTP Server'));
|
|
119
|
+
(0, logger_1.log)(chalk_1.default.dim(' ─────────────────────────────────────'));
|
|
120
|
+
(0, logger_1.log)();
|
|
121
|
+
(0, logger_1.log)(' ', chalk_1.default.green(publicUrl));
|
|
122
|
+
(0, logger_1.log)(chalk_1.default.dim(` Port: ${info.port}`));
|
|
123
|
+
(0, logger_1.log)();
|
|
124
|
+
(0, logger_1.log)(chalk_1.default.dim(' API key format: o3=opus-4.5,o3-mini=sonnet-4.5:sk-ant-xxx'));
|
|
125
|
+
(0, logger_1.log)();
|
|
126
|
+
resolve({
|
|
127
|
+
port: info.port,
|
|
128
|
+
publicUrl,
|
|
129
|
+
stop: () => server.close(),
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// ============================================================================
|
|
135
|
+
// CLI ENTRY POINT (when run directly)
|
|
136
|
+
// ============================================================================
|
|
137
|
+
async function main() {
|
|
138
|
+
(0, cli_args_1.addSharedOptions)(commander_1.program).parse();
|
|
139
|
+
const opts = commander_1.program.opts();
|
|
140
|
+
const envPort = parseInt(process.env.PORT || '', 10);
|
|
141
|
+
const config = {
|
|
142
|
+
port: opts.port ? parseInt(opts.port, 10) : (envPort || undefined),
|
|
143
|
+
tunnelUrl: opts.tunnel || process.env.TUNNEL_URL,
|
|
144
|
+
verbose: opts.verbose || process.env.VERBOSE === 'true',
|
|
145
|
+
};
|
|
146
|
+
await startServer(config);
|
|
147
|
+
(0, logger_1.log)(chalk_1.default.dim(' Press Ctrl+C to stop'));
|
|
148
|
+
}
|
|
149
|
+
// Only run main if this is the entry point
|
|
150
|
+
const isMainModule = process.argv[1]?.endsWith('server.ts') || process.argv[1]?.endsWith('server.js');
|
|
151
|
+
if (isMainModule) {
|
|
152
|
+
main().catch((error) => {
|
|
153
|
+
(0, logger_1.log)('[sub-bridge] Fatal error:', error);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TunnelProvider, TunnelInstance } from '../types';
|
|
2
|
+
export declare class CloudflareTunnelProvider implements TunnelProvider {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
supportsNamedTunnels: boolean;
|
|
6
|
+
isAvailable(): Promise<boolean>;
|
|
7
|
+
start(localPort: number, namedUrl?: string): Promise<TunnelInstance>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=cloudflare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/tunnel/providers/cloudflare.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9D,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,EAAE,SAAe;IACjB,IAAI,SAAe;IACnB,oBAAoB,UAAO;IAErB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAgC3E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Cloudflare Tunnel Provider
|
|
4
|
+
// ============================================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CloudflareTunnelProvider = void 0;
|
|
7
|
+
const cloudflared_1 = require("cloudflared");
|
|
8
|
+
class CloudflareTunnelProvider {
|
|
9
|
+
id = 'cloudflare';
|
|
10
|
+
name = 'Cloudflare';
|
|
11
|
+
supportsNamedTunnels = true;
|
|
12
|
+
async isAvailable() {
|
|
13
|
+
// The cloudflared npm package auto-installs the binary
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
async start(localPort, namedUrl) {
|
|
17
|
+
if (namedUrl) {
|
|
18
|
+
// Named tunnel: user provides their own tunnel hostname
|
|
19
|
+
// They need to configure this in Cloudflare dashboard and run cloudflared separately
|
|
20
|
+
return {
|
|
21
|
+
providerId: this.id,
|
|
22
|
+
publicUrl: namedUrl.startsWith('https://') ? namedUrl : `https://${namedUrl}`,
|
|
23
|
+
stop: () => { }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Anonymous tunnel using cloudflared npm package
|
|
27
|
+
const tunnel = cloudflared_1.Tunnel.quick(`http://localhost:${localPort}`);
|
|
28
|
+
const url = await new Promise((resolve, reject) => {
|
|
29
|
+
const timeout = setTimeout(() => reject(new Error('Tunnel timeout (30s)')), 30000);
|
|
30
|
+
tunnel.once('url', (tunnelUrl) => {
|
|
31
|
+
clearTimeout(timeout);
|
|
32
|
+
resolve(tunnelUrl);
|
|
33
|
+
});
|
|
34
|
+
tunnel.once('error', (err) => {
|
|
35
|
+
clearTimeout(timeout);
|
|
36
|
+
reject(err);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
providerId: this.id,
|
|
41
|
+
publicUrl: url,
|
|
42
|
+
stop: () => tunnel.stop()
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.CloudflareTunnelProvider = CloudflareTunnelProvider;
|
|
47
|
+
//# sourceMappingURL=cloudflare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../src/tunnel/providers/cloudflare.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;;;AAE/E,6CAAoC;AAGpC,MAAa,wBAAwB;IACnC,EAAE,GAAG,YAAY,CAAA;IACjB,IAAI,GAAG,YAAY,CAAA;IACnB,oBAAoB,GAAG,IAAI,CAAA;IAE3B,KAAK,CAAC,WAAW;QACf,uDAAuD;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,QAAiB;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,wDAAwD;YACxD,qFAAqF;YACrF,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,QAAQ,EAAE;gBAC7E,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;aACf,CAAA;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,MAAM,GAAG,oBAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;QAE5D,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAClF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAiB,EAAE,EAAE;gBACvC,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,OAAO,CAAC,SAAS,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAClC,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;SAC1B,CAAA;IACH,CAAC;CACF;AA1CD,4DA0CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tunnel/providers/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Tunnel Providers Index
|
|
4
|
+
// ============================================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TailscaleTunnelProvider = exports.NgrokTunnelProvider = exports.CloudflareTunnelProvider = void 0;
|
|
7
|
+
var cloudflare_1 = require("./cloudflare");
|
|
8
|
+
Object.defineProperty(exports, "CloudflareTunnelProvider", { enumerable: true, get: function () { return cloudflare_1.CloudflareTunnelProvider; } });
|
|
9
|
+
var ngrok_1 = require("./ngrok");
|
|
10
|
+
Object.defineProperty(exports, "NgrokTunnelProvider", { enumerable: true, get: function () { return ngrok_1.NgrokTunnelProvider; } });
|
|
11
|
+
var tailscale_1 = require("./tailscale");
|
|
12
|
+
Object.defineProperty(exports, "TailscaleTunnelProvider", { enumerable: true, get: function () { return tailscale_1.TailscaleTunnelProvider; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tunnel/providers/index.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;;;AAE/E,2CAAuD;AAA9C,sHAAA,wBAAwB,OAAA;AACjC,iCAA6C;AAApC,4GAAA,mBAAmB,OAAA;AAC5B,yCAAqD;AAA5C,oHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TunnelProvider, TunnelInstance } from '../types';
|
|
2
|
+
export declare class NgrokTunnelProvider implements TunnelProvider {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
supportsNamedTunnels: boolean;
|
|
6
|
+
private process;
|
|
7
|
+
isAvailable(): Promise<boolean>;
|
|
8
|
+
start(localPort: number, namedUrl?: string): Promise<TunnelInstance>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ngrok.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/tunnel/providers/ngrok.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9D,qBAAa,mBAAoB,YAAW,cAAc;IACxD,EAAE,SAAU;IACZ,IAAI,SAAU;IACd,oBAAoB,UAAO;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAqC3E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// ngrok Tunnel Provider
|
|
4
|
+
// ============================================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NgrokTunnelProvider = void 0;
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
class NgrokTunnelProvider {
|
|
9
|
+
id = 'ngrok';
|
|
10
|
+
name = 'ngrok';
|
|
11
|
+
supportsNamedTunnels = true;
|
|
12
|
+
process = null;
|
|
13
|
+
async isAvailable() {
|
|
14
|
+
return (0, utils_1.binaryExists)('ngrok');
|
|
15
|
+
}
|
|
16
|
+
async start(localPort, namedUrl) {
|
|
17
|
+
const args = ['http', String(localPort)];
|
|
18
|
+
// Add subdomain if provided (requires ngrok account)
|
|
19
|
+
if (namedUrl) {
|
|
20
|
+
const subdomain = namedUrl.replace(/\.ngrok\.(io|app)$/, '');
|
|
21
|
+
args.push('--subdomain', subdomain);
|
|
22
|
+
}
|
|
23
|
+
this.process = (0, utils_1.spawnTunnelProcess)('ngrok', args);
|
|
24
|
+
// Poll ngrok's local API for tunnel URL
|
|
25
|
+
const url = await (0, utils_1.pollUntil)(async () => {
|
|
26
|
+
try {
|
|
27
|
+
const response = await fetch('http://127.0.0.1:4040/api/tunnels');
|
|
28
|
+
if (!response.ok)
|
|
29
|
+
return null;
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
const httpsTunnel = data.tunnels.find(t => t.public_url.startsWith('https://'));
|
|
32
|
+
return httpsTunnel?.public_url || null;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}, 30000).catch(() => {
|
|
38
|
+
throw new Error('ngrok tunnel timeout');
|
|
39
|
+
});
|
|
40
|
+
const proc = this.process;
|
|
41
|
+
return {
|
|
42
|
+
providerId: this.id,
|
|
43
|
+
publicUrl: url,
|
|
44
|
+
stop: () => {
|
|
45
|
+
proc?.kill('SIGTERM');
|
|
46
|
+
this.process = null;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.NgrokTunnelProvider = NgrokTunnelProvider;
|
|
52
|
+
//# sourceMappingURL=ngrok.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngrok.js","sourceRoot":"","sources":["../../../src/tunnel/providers/ngrok.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;;;AAI/E,oCAAsE;AAEtE,MAAa,mBAAmB;IAC9B,EAAE,GAAG,OAAO,CAAA;IACZ,IAAI,GAAG,OAAO,CAAA;IACd,oBAAoB,GAAG,IAAI,CAAA;IACnB,OAAO,GAAwB,IAAI,CAAA;IAE3C,KAAK,CAAC,WAAW;QACf,OAAO,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,QAAiB;QAC9C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAExC,qDAAqD;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;YAC5D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAEhD,wCAAwC;QACxC,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAS,EAAC,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACjE,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAA;gBAE7B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAgD,CAAA;gBAChF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;gBAC/E,OAAO,WAAW,EAAE,UAAU,IAAI,IAAI,CAAA;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAA;QACzB,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,GAAG,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACrB,CAAC;SACF,CAAA;IACH,CAAC;CACF;AA/CD,kDA+CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TunnelProvider, TunnelInstance } from '../types';
|
|
2
|
+
export declare class TailscaleTunnelProvider implements TunnelProvider {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
supportsNamedTunnels: boolean;
|
|
6
|
+
private process;
|
|
7
|
+
isAvailable(): Promise<boolean>;
|
|
8
|
+
start(localPort: number): Promise<TunnelInstance>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=tailscale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../../../src/tunnel/providers/tailscale.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9D,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,EAAE,SAAc;IAChB,IAAI,SAAqB;IACzB,oBAAoB,UAAQ;IAC5B,OAAO,CAAC,OAAO,CAA4B;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAwBxD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Tailscale Funnel Provider
|
|
4
|
+
// ============================================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TailscaleTunnelProvider = void 0;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
class TailscaleTunnelProvider {
|
|
10
|
+
id = 'tailscale';
|
|
11
|
+
name = 'Tailscale Funnel';
|
|
12
|
+
supportsNamedTunnels = false;
|
|
13
|
+
process = null;
|
|
14
|
+
async isAvailable() {
|
|
15
|
+
if (!await (0, utils_1.binaryExists)('tailscale'))
|
|
16
|
+
return false;
|
|
17
|
+
try {
|
|
18
|
+
const status = await (0, utils_1.execJson)('tailscale status --json');
|
|
19
|
+
return status.BackendState === 'Running';
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async start(localPort) {
|
|
26
|
+
// Get hostname from Tailscale status
|
|
27
|
+
const status = await (0, utils_1.execJson)('tailscale status --json');
|
|
28
|
+
const hostname = status.Self?.DNSName?.replace(/\.$/, '');
|
|
29
|
+
if (!hostname)
|
|
30
|
+
throw new Error('Could not determine Tailscale hostname');
|
|
31
|
+
// Start funnel
|
|
32
|
+
this.process = (0, utils_1.spawnTunnelProcess)('tailscale', ['funnel', String(localPort)]);
|
|
33
|
+
// Wait for funnel to initialize
|
|
34
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
35
|
+
const proc = this.process;
|
|
36
|
+
return {
|
|
37
|
+
providerId: this.id,
|
|
38
|
+
publicUrl: `https://${hostname}`,
|
|
39
|
+
stop: () => {
|
|
40
|
+
(0, child_process_1.spawn)('tailscale', ['funnel', 'off'], { stdio: 'ignore' });
|
|
41
|
+
proc?.kill('SIGTERM');
|
|
42
|
+
this.process = null;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.TailscaleTunnelProvider = TailscaleTunnelProvider;
|
|
48
|
+
//# sourceMappingURL=tailscale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailscale.js","sourceRoot":"","sources":["../../../src/tunnel/providers/tailscale.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;;;AAE/E,iDAAmD;AAEnD,oCAAqE;AAErE,MAAa,uBAAuB;IAClC,EAAE,GAAG,WAAW,CAAA;IAChB,IAAI,GAAG,kBAAkB,CAAA;IACzB,oBAAoB,GAAG,KAAK,CAAA;IACpB,OAAO,GAAwB,IAAI,CAAA;IAE3C,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,MAAM,IAAA,oBAAY,EAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAA2B,yBAAyB,CAAC,CAAA;YAClF,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,qCAAqC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAkC,yBAAyB,CAAC,CAAA;QACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAEzD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAExE,eAAe;QACf,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAkB,EAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAE7E,gCAAgC;QAChC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAA;QACzB,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,WAAW,QAAQ,EAAE;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,IAAA,qBAAK,EAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC1D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;gBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACrB,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAzCD,0DAyCC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TunnelStatus, ProviderInfo } from './types';
|
|
2
|
+
export declare class TunnelRegistry {
|
|
3
|
+
private providers;
|
|
4
|
+
private activeTunnel;
|
|
5
|
+
private startedAt;
|
|
6
|
+
private lastError;
|
|
7
|
+
constructor();
|
|
8
|
+
getProviders(): Promise<ProviderInfo[]>;
|
|
9
|
+
getStatus(): TunnelStatus;
|
|
10
|
+
start(providerId: string, localPort: number, namedUrl?: string): Promise<TunnelStatus>;
|
|
11
|
+
stop(): TunnelStatus;
|
|
12
|
+
getPublicUrl(): string | null;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tunnel/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkC,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAOzF,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAsB;;IAajC,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAa7C,SAAS,IAAI,YAAY;IAenB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2B5F,IAAI,IAAI,YAAY;IASpB,YAAY,IAAI,MAAM,GAAG,IAAI;CAG9B"}
|