opencode-mobile 1.1.0 → 1.2.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.
Files changed (99) hide show
  1. package/bin/audit +31 -0
  2. package/bin/qr +13 -0
  3. package/dist/index.d.ts +11 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +545 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/cli/endpoint-tester.d.ts +19 -0
  8. package/dist/src/cli/endpoint-tester.d.ts.map +1 -0
  9. package/dist/src/cli/endpoint-tester.js +233 -0
  10. package/dist/src/cli/endpoint-tester.js.map +1 -0
  11. package/dist/src/cli/index.d.ts +20 -0
  12. package/dist/src/cli/index.d.ts.map +1 -0
  13. package/dist/src/cli/index.js +166 -0
  14. package/dist/src/cli/index.js.map +1 -0
  15. package/dist/src/cli/push-tester.d.ts +16 -0
  16. package/dist/src/cli/push-tester.d.ts.map +1 -0
  17. package/dist/src/cli/push-tester.js +293 -0
  18. package/dist/src/cli/push-tester.js.map +1 -0
  19. package/dist/src/cli/qr.d.ts +5 -0
  20. package/dist/src/cli/qr.d.ts.map +1 -0
  21. package/dist/src/cli/qr.js +127 -0
  22. package/dist/src/cli/qr.js.map +1 -0
  23. package/dist/src/cli/report.d.ts +25 -0
  24. package/dist/src/cli/report.d.ts.map +1 -0
  25. package/dist/src/cli/report.js +215 -0
  26. package/dist/src/cli/report.js.map +1 -0
  27. package/dist/src/cli/server-manager.d.ts +28 -0
  28. package/dist/src/cli/server-manager.d.ts.map +1 -0
  29. package/dist/src/cli/server-manager.js +340 -0
  30. package/dist/src/cli/server-manager.js.map +1 -0
  31. package/dist/src/cli/test-runner.d.ts +16 -0
  32. package/dist/src/cli/test-runner.d.ts.map +1 -0
  33. package/dist/src/cli/test-runner.js +201 -0
  34. package/dist/src/cli/test-runner.js.map +1 -0
  35. package/dist/src/cli/tunnel-qr.d.ts +8 -0
  36. package/dist/src/cli/tunnel-qr.d.ts.map +1 -0
  37. package/dist/src/cli/tunnel-qr.js +163 -0
  38. package/dist/src/cli/tunnel-qr.js.map +1 -0
  39. package/dist/src/cli/tunnel-tester.d.ts +22 -0
  40. package/dist/src/cli/tunnel-tester.d.ts.map +1 -0
  41. package/dist/src/cli/tunnel-tester.js +360 -0
  42. package/dist/src/cli/tunnel-tester.js.map +1 -0
  43. package/dist/src/cli/types.d.ts +112 -0
  44. package/dist/src/cli/types.d.ts.map +1 -0
  45. package/dist/src/cli/types.js +5 -0
  46. package/dist/src/cli/types.js.map +1 -0
  47. package/dist/src/push/index.d.ts +1 -0
  48. package/dist/src/push/index.d.ts.map +1 -1
  49. package/dist/src/push/index.js +1 -0
  50. package/dist/src/push/index.js.map +1 -1
  51. package/dist/src/push/notification-handler.d.ts +58 -0
  52. package/dist/src/push/notification-handler.d.ts.map +1 -0
  53. package/dist/src/push/notification-handler.js +110 -0
  54. package/dist/src/push/notification-handler.js.map +1 -0
  55. package/dist/src/tunnel/cloudflare.d.ts +32 -3
  56. package/dist/src/tunnel/cloudflare.d.ts.map +1 -1
  57. package/dist/src/tunnel/cloudflare.js +102 -32
  58. package/dist/src/tunnel/cloudflare.js.map +1 -1
  59. package/dist/src/tunnel/localtunnel.d.ts +28 -1
  60. package/dist/src/tunnel/localtunnel.d.ts.map +1 -1
  61. package/dist/src/tunnel/localtunnel.js +53 -11
  62. package/dist/src/tunnel/localtunnel.js.map +1 -1
  63. package/dist/src/tunnel/metadata.d.ts +29 -0
  64. package/dist/src/tunnel/metadata.d.ts.map +1 -0
  65. package/dist/src/tunnel/metadata.js +83 -0
  66. package/dist/src/tunnel/metadata.js.map +1 -0
  67. package/dist/src/tunnel/ngrok.d.ts +12 -0
  68. package/dist/src/tunnel/ngrok.d.ts.map +1 -1
  69. package/dist/src/tunnel/ngrok.js +72 -29
  70. package/dist/src/tunnel/ngrok.js.map +1 -1
  71. package/dist/src/tunnel/qrcode.d.ts +8 -0
  72. package/dist/src/tunnel/qrcode.d.ts.map +1 -1
  73. package/dist/src/tunnel/qrcode.js +60 -9
  74. package/dist/src/tunnel/qrcode.js.map +1 -1
  75. package/package.json +21 -3
  76. package/dist/push-notifications.d.ts +0 -4
  77. package/dist/push-notifications.d.ts.map +0 -1
  78. package/dist/push-notifications.js +0 -260
  79. package/dist/push-notifications.js.map +0 -1
  80. package/dist/reverse-proxy.d.ts +0 -9
  81. package/dist/reverse-proxy.d.ts.map +0 -1
  82. package/dist/reverse-proxy.js +0 -78
  83. package/dist/reverse-proxy.js.map +0 -1
  84. package/dist/sdk-logger.d.ts +0 -19
  85. package/dist/sdk-logger.d.ts.map +0 -1
  86. package/dist/sdk-logger.js +0 -103
  87. package/dist/sdk-logger.js.map +0 -1
  88. package/dist/src/tunnel/index.d.ts +0 -35
  89. package/dist/src/tunnel/index.d.ts.map +0 -1
  90. package/dist/src/tunnel/index.js +0 -191
  91. package/dist/src/tunnel/index.js.map +0 -1
  92. package/dist/src/utils/index.d.ts +0 -5
  93. package/dist/src/utils/index.d.ts.map +0 -1
  94. package/dist/src/utils/index.js +0 -5
  95. package/dist/src/utils/index.js.map +0 -1
  96. package/dist/src/utils/port.d.ts +0 -12
  97. package/dist/src/utils/port.d.ts.map +0 -1
  98. package/dist/src/utils/port.js +0 -41
  99. package/dist/src/utils/port.js.map +0 -1
@@ -1,260 +0,0 @@
1
- import * as path from "path";
2
- import { startTunnel, stopTunnel, displayQR, getTunnelDetails } from "./src/tunnel";
3
- import { getNextAvailablePort } from "./src/utils/port";
4
- import { loadTokens, saveTokens } from "./src/push/token-store";
5
- import { formatNotification } from "./src/push/formatter";
6
- import { sendPush } from "./src/push/sender";
7
- import { createLogger } from "./sdk-logger";
8
- const CONFIG_DIR = path.join(process.env.HOME || "", ".config/opencode");
9
- // Simple console logging (no client.log dependency)
10
- const logger = createLogger("PushPlugin");
11
- const TOKEN_FILE = path.join(CONFIG_DIR, "push-tokens.json");
12
- let tokenServerStarted = false;
13
- let pluginInitialized = false;
14
- let bunServer = null;
15
- let bunServerPort = null;
16
- let activeTunnelInfo = null;
17
- async function startTokenServer(openCodeUrl, port) {
18
- if (tokenServerStarted)
19
- return;
20
- const cors = {
21
- "Access-Control-Allow-Origin": "*",
22
- "Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
23
- "Access-Control-Allow-Headers": "Content-Type, x-opencode-directory",
24
- };
25
- bunServer = Bun.serve({
26
- port: port,
27
- hostname: "0.0.0.0",
28
- idleTimeout: 0, // Disable timeout for SSE connections
29
- async fetch(req) {
30
- const url = new URL(req.url);
31
- if (req.method === "OPTIONS")
32
- return new Response(null, { status: 204, headers: cors });
33
- if (url.pathname === "/push-token" && req.method === "POST") {
34
- const body = (await req.json());
35
- const { token, platform, deviceId } = body;
36
- if (!token || !deviceId)
37
- return new Response(JSON.stringify({ error: "Missing fields" }), {
38
- status: 400,
39
- headers: cors,
40
- });
41
- // Validate platform field
42
- const validPlatform = (platform && (platform === "ios" || platform === "android"))
43
- ? platform
44
- : "ios";
45
- const tokens = loadTokens();
46
- const idx = tokens.findIndex((t) => t.deviceId === deviceId);
47
- const newToken = {
48
- token,
49
- platform: validPlatform,
50
- deviceId,
51
- registeredAt: new Date().toISOString(),
52
- };
53
- if (idx >= 0)
54
- tokens[idx] = newToken;
55
- else
56
- tokens.push(newToken);
57
- saveTokens(tokens);
58
- return new Response(JSON.stringify({ success: true }), {
59
- status: 200,
60
- headers: cors,
61
- });
62
- }
63
- if (url.pathname === "/push-token" && req.method === "DELETE") {
64
- const body = (await req.json());
65
- const { deviceId } = body;
66
- saveTokens(loadTokens().filter((t) => t.deviceId !== deviceId));
67
- return new Response(JSON.stringify({ success: true }), {
68
- status: 200,
69
- headers: cors,
70
- });
71
- }
72
- if (url.pathname === "/push-token" && req.method === "GET") {
73
- return new Response(JSON.stringify({ count: loadTokens().length }), {
74
- status: 200,
75
- headers: cors,
76
- });
77
- }
78
- if (url.pathname === "/push-token/test" && req.method === "POST") {
79
- await sendPush({
80
- title: "Test",
81
- body: "Push notifications working!",
82
- data: { type: "test", serverUrl: openCodeUrl },
83
- });
84
- return new Response(JSON.stringify({ success: true }), {
85
- status: 200,
86
- headers: cors,
87
- });
88
- }
89
- // Return tunnel information
90
- if (url.pathname === "/tunnel" && req.method === "GET") {
91
- logger.info("[PushPlugin] /tunnel endpoint called");
92
- const details = getTunnelDetails();
93
- logger.info("[PushPlugin] Returning tunnel details:", details);
94
- return new Response(JSON.stringify(details, null, 2), {
95
- status: 200,
96
- headers: { ...cors, "Content-Type": "application/json" },
97
- });
98
- }
99
- // Proxy everything else directly to OpenCode server (transparent)
100
- const pathname = url.pathname + url.search;
101
- logger.info(`[PushPlugin] Proxying request: ${req.method} ${pathname} -> ${openCodeUrl}`);
102
- try {
103
- const controller = new AbortController();
104
- const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
105
- const proxyReq = new Request(`${openCodeUrl}${pathname}`, {
106
- method: req.method,
107
- headers: req.headers,
108
- body: req.body,
109
- redirect: "follow",
110
- signal: controller.signal,
111
- });
112
- try {
113
- return await fetch(proxyReq);
114
- }
115
- catch (e) {
116
- if (e.name === 'AbortError') {
117
- return new Response("Gateway timeout", { status: 504, headers: cors });
118
- }
119
- throw e;
120
- }
121
- finally {
122
- clearTimeout(timeoutId);
123
- }
124
- }
125
- catch (e) {
126
- logger.error("Proxy error:", e);
127
- return new Response("Proxy error", { status: 502, headers: cors });
128
- }
129
- },
130
- });
131
- tokenServerStarted = true;
132
- }
133
- function stopAll() {
134
- logger.info("Shutting down...");
135
- stopTunnel();
136
- if (bunServer) {
137
- logger.info("Stopping Bun server...");
138
- bunServer.stop();
139
- bunServer = null;
140
- }
141
- tokenServerStarted = false;
142
- logger.info("Shutdown complete");
143
- }
144
- export const PushNotificationPlugin = async (ctx) => {
145
- if (pluginInitialized) {
146
- return { event: async ({ event }) => { } };
147
- }
148
- pluginInitialized = true;
149
- // Skip tunnel setup in server mode (no --serve flag)
150
- const processArgs = process.argv.slice(2).join(' ');
151
- const hasServeFlag = processArgs.includes('--serve') || processArgs.includes('serve');
152
- if (!hasServeFlag) {
153
- return {
154
- event: async ({ event }) => { },
155
- };
156
- }
157
- const serverPort = parseInt(String(ctx.serverUrl?.port || 4096), 10);
158
- logger.info(`App started. Creating tunnel on port ${serverPort}`);
159
- // Test logging levels (dev-only verbose output)
160
- logger.dev("Detailed development info - only appears in dev mode");
161
- logger.info("Standard operational message - appears in both dev and prod");
162
- logger.warn("Non-critical issue warning");
163
- logger.error("Critical failure message");
164
- // Get server port from ctx, find next available for push-token
165
- const pushTokenPort = await getNextAvailablePort(serverPort + 1);
166
- bunServerPort = pushTokenPort;
167
- const openCodeUrl = `http://127.0.0.1:${serverPort}`;
168
- logger.info(`Token API: http://127.0.0.1:${pushTokenPort} → ${openCodeUrl}`);
169
- try {
170
- await startTokenServer(openCodeUrl, pushTokenPort);
171
- let tunnelInfo;
172
- let ngrokFailed = false;
173
- try {
174
- // Create tunnel directly to OpenCode server (transparent proxy)
175
- tunnelInfo = await startTunnel({ port: serverPort, provider: "ngrok" });
176
- }
177
- catch (ngrokError) {
178
- const errorMsg = ngrokError.message.toLowerCase();
179
- const isAuthIssue = errorMsg.includes("invalid tunnel configuration") ||
180
- errorMsg.includes("authtoken") ||
181
- errorMsg.includes("authentication") ||
182
- errorMsg.includes("auth token") ||
183
- errorMsg.includes("session failed") ||
184
- errorMsg.includes("connect to api.ngrok.com");
185
- if (isAuthIssue) {
186
- logger.info("Ngrok needs authtoken (ERR_NGROK_4018)");
187
- logger.info("Skipping ngrok setup - will use fallback tunnels");
188
- ngrokFailed = true;
189
- }
190
- else {
191
- ngrokFailed = true;
192
- }
193
- if (ngrokFailed) {
194
- logger.info("Trying localtunnel...");
195
- try {
196
- tunnelInfo = await startTunnel({ port: serverPort, provider: "localtunnel" });
197
- }
198
- catch (localtunnelError) {
199
- logger.error("Localtunnel failed:", localtunnelError.message);
200
- throw new Error("All tunnel providers failed");
201
- }
202
- }
203
- }
204
- if (!tunnelInfo) {
205
- throw new Error("Failed to establish tunnel");
206
- }
207
- // Store tunnel info for potential re-use
208
- activeTunnelInfo = tunnelInfo;
209
- await displayQR(tunnelInfo);
210
- return {
211
- event: async ({ event }) => {
212
- // Use cached tunnel info if available
213
- const currentTunnel = activeTunnelInfo;
214
- if (!currentTunnel?.url) {
215
- logger.warn("No active tunnel for push notification");
216
- return;
217
- }
218
- // Format notification from event
219
- const notification = formatNotification(event, currentTunnel.url, ctx);
220
- if (!notification) {
221
- // No notification needed for this event type
222
- return;
223
- }
224
- // Log the raw event that triggered this push
225
- const eventAny = event;
226
- logger.info("Raw event received", {
227
- type: event.type,
228
- sessionID: eventAny.sessionID || eventAny.sessionId,
229
- timestamp: eventAny.timestamp,
230
- properties: event.properties
231
- });
232
- // Log the formatted notification
233
- logger.info("Sending push notification", {
234
- title: notification.title,
235
- body: notification.body,
236
- sessionId: notification.data?.sessionId,
237
- type: notification.data?.type
238
- });
239
- // Send the push notification
240
- await sendPush(notification);
241
- logger.dev("Push notification sent successfully");
242
- },
243
- };
244
- }
245
- catch (error) {
246
- logger.error("Failed:", error.message);
247
- return { event: async ({ event }) => { } };
248
- }
249
- };
250
- process.on("SIGTERM", () => {
251
- stopAll();
252
- });
253
- process.on("SIGINT", () => {
254
- stopAll();
255
- });
256
- process.on("SIGHUP", () => {
257
- stopAll();
258
- });
259
- export default PushNotificationPlugin;
260
- //# sourceMappingURL=push-notifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"push-notifications.js","sourceRoot":"","sources":["../push-notifications.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export interface ProxyConfig {
2
- proxyPort: number;
3
- serverPort: number;
4
- tokenApiPort: number;
5
- }
6
- export declare function startProxy(config: ProxyConfig): Promise<void>;
7
- export declare function stopProxy(): void;
8
- export declare function isProxyRunning(): boolean;
9
- //# sourceMappingURL=reverse-proxy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reverse-proxy.d.ts","sourceRoot":"","sources":["../reverse-proxy.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE7D;AAED,wBAAgB,SAAS,IAAI,IAAI,CAQhC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
@@ -1,78 +0,0 @@
1
- import http, { request as httpRequest } from "http";
2
- let serverStarted = false;
3
- let server = null;
4
- export function startProxy(config) {
5
- // Validate config
6
- if (!config?.proxyPort || !config?.serverPort || !config?.tokenApiPort) {
7
- console.log("[Proxy] Invalid config received (re-init?), skipping");
8
- console.log("[Proxy] startProxy called from:", new Error().stack?.split('\n').slice(2, 6).join('\n'));
9
- return Promise.resolve();
10
- }
11
- return new Promise((resolve, reject) => {
12
- if (serverStarted) {
13
- console.log("[Proxy] Proxy already running");
14
- resolve();
15
- return;
16
- }
17
- server = http.createServer((clientReq, clientRes) => {
18
- const url = clientReq.url || "";
19
- const targetPort = url.startsWith("/push-token")
20
- ? config.tokenApiPort
21
- : config.serverPort;
22
- const options = {
23
- hostname: "127.0.0.1",
24
- port: targetPort,
25
- path: url,
26
- method: clientReq.method,
27
- headers: {
28
- ...clientReq.headers,
29
- "x-forwarded-for": clientReq.socket.remoteAddress,
30
- "x-forwarded-host": clientReq.headers.host,
31
- },
32
- };
33
- const proxyReq = httpRequest(options, (proxyRes) => {
34
- clientRes.writeHead(proxyRes.statusCode || 200, proxyRes.headers);
35
- proxyRes.pipe(clientRes);
36
- });
37
- proxyReq.on("error", (err) => {
38
- console.error("[Proxy] Error forwarding request:", err.message);
39
- if (!clientRes.headersSent) {
40
- clientRes.writeHead(502, { "Content-Type": "text/plain" });
41
- clientRes.end("Bad Gateway");
42
- }
43
- });
44
- clientReq.pipe(proxyReq);
45
- });
46
- server.on("error", (err) => {
47
- if (err.code === "EADDRINUSE") {
48
- console.log("[Proxy] Port already in use - proxy likely already running");
49
- serverStarted = true;
50
- resolve();
51
- }
52
- else {
53
- console.error("[Proxy] Failed to start:", err.message);
54
- reject(err);
55
- }
56
- });
57
- server.listen(config.proxyPort, () => {
58
- serverStarted = true;
59
- console.log(`[Proxy] Running on port ${config.proxyPort}`);
60
- console.log(`[Proxy] /push-token/* → Port ${config.tokenApiPort}`);
61
- console.log(`[Proxy] /* → Port ${config.serverPort}`);
62
- resolve();
63
- });
64
- });
65
- }
66
- export function stopProxy() {
67
- if (server) {
68
- server.close(() => {
69
- console.log("[Proxy] Server stopped");
70
- });
71
- server = null;
72
- serverStarted = false;
73
- }
74
- }
75
- export function isProxyRunning() {
76
- return serverStarted;
77
- }
78
- //# sourceMappingURL=reverse-proxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reverse-proxy.js","sourceRoot":"","sources":["../reverse-proxy.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export type LogLevel = "debug" | "info" | "warn" | "error";
2
- interface LoggerConfig {
3
- level: LogLevel;
4
- prefix: string;
5
- showTimestamp: boolean;
6
- devMode: boolean;
7
- }
8
- export declare function configureLogger(config: Partial<LoggerConfig>): void;
9
- export declare function createLogger(service: string): {
10
- debug: (message: string, data?: Record<string, unknown>) => void;
11
- dev: (message: string, data?: Record<string, unknown>) => void;
12
- info: (message: string, data?: Record<string, unknown>) => void;
13
- warn: (message: string, data?: Record<string, unknown>) => void;
14
- error: (message: string, extra?: Record<string, unknown> | Error | unknown) => void;
15
- log: (level: LogLevel, message: string, data?: Record<string, unknown>) => void;
16
- };
17
- export declare function log(level: LogLevel, service: string, message: string, data?: Record<string, unknown>): void;
18
- export default createLogger;
19
- //# sourceMappingURL=sdk-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-logger.d.ts","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,UAAU,YAAY;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAeD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEnE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;IAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/D,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IACpF,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACjF,CA6EA;AAGD,wBAAgB,GAAG,CACjB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAGN;AAGD,eAAe,YAAY,CAAC"}
@@ -1,103 +0,0 @@
1
- // Check if we're in development mode (not published to npm)
2
- const isDevMode = process.env.NODE_ENV !== "production" &&
3
- !process.env.npm_package_version;
4
- const defaultConfig = {
5
- level: process.env.LOG_LEVEL || (isDevMode ? "debug" : "info"),
6
- prefix: "App",
7
- showTimestamp: true,
8
- devMode: isDevMode,
9
- };
10
- let globalConfig = { ...defaultConfig };
11
- export function configureLogger(config) {
12
- globalConfig = { ...globalConfig, ...config };
13
- }
14
- export function createLogger(service) {
15
- const shouldLog = (level) => {
16
- const levels = ["debug", "info", "warn", "error"];
17
- return levels.indexOf(level) >= levels.indexOf(globalConfig.level);
18
- };
19
- const formatMessage = (level, message) => {
20
- const timestamp = globalConfig.showTimestamp
21
- ? new Date().toISOString().split("T")[1].slice(0, -1) + "Z"
22
- : "";
23
- const levelIcon = {
24
- debug: "🔍",
25
- info: "â„šī¸",
26
- warn: "âš ī¸",
27
- error: "❌",
28
- }[level];
29
- const parts = [
30
- timestamp,
31
- `[${globalConfig.prefix}]`,
32
- `[${service}]`,
33
- levelIcon,
34
- message,
35
- ].filter(Boolean);
36
- return parts.join(" ");
37
- };
38
- return {
39
- debug: (message, data) => {
40
- if (!shouldLog("debug"))
41
- return;
42
- console.log(formatMessage("debug", message));
43
- if (data)
44
- console.debug("[DEBUG-DATA]", JSON.stringify(data, null, 2));
45
- },
46
- dev: (message, data) => {
47
- // Only log in development mode
48
- if (!globalConfig.devMode)
49
- return;
50
- console.log(formatMessage("debug", message));
51
- if (data)
52
- console.debug("[DEV-DATA]", JSON.stringify(data, null, 2));
53
- },
54
- info: (message, data) => {
55
- if (!shouldLog("info"))
56
- return;
57
- console.log(formatMessage("info", message));
58
- if (data)
59
- console.debug("[INFO-DATA]", JSON.stringify(data, null, 2));
60
- },
61
- warn: (message, data) => {
62
- if (!shouldLog("warn"))
63
- return;
64
- console.warn(formatMessage("warn", message));
65
- if (data)
66
- console.debug("[WARN-DATA]", JSON.stringify(data, null, 2));
67
- },
68
- error: (message, extra) => {
69
- if (!shouldLog("error"))
70
- return;
71
- console.error(formatMessage("error", message));
72
- if (extra) {
73
- if (extra instanceof Error || extra?.stack) {
74
- console.error("[ERROR]", extra);
75
- if (extra instanceof Error) {
76
- console.error("[ERROR-STACK]", extra.stack);
77
- }
78
- }
79
- else if (typeof extra === "object" && extra !== null) {
80
- console.error("[ERROR-EXTRA]", JSON.stringify(extra, null, 2));
81
- }
82
- else {
83
- console.error("[ERROR-DETAILS]", extra);
84
- }
85
- }
86
- },
87
- log: (level, message, data) => {
88
- if (!shouldLog(level))
89
- return;
90
- console.log(formatMessage(level, message));
91
- if (data)
92
- console.debug(`[${level.toUpperCase()}-DATA]`, JSON.stringify(data, null, 2));
93
- },
94
- };
95
- }
96
- // Convenience function for quick logging
97
- export function log(level, service, message, data) {
98
- const logger = createLogger(service);
99
- logger.log(level, message, data);
100
- }
101
- // Export for use in plugins
102
- export default createLogger;
103
- //# sourceMappingURL=sdk-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-logger.js","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Tunnel manager - unified interface for all tunnel providers
3
- */
4
- import type { TunnelConfig, TunnelInfo, TunnelDetails } from "./types";
5
- import { diagnoseNgrok, ensureNgrokReady } from "./ngrok";
6
- /**
7
- * Start a tunnel with the specified provider
8
- */
9
- export declare function startTunnel(config: TunnelConfig): Promise<TunnelInfo>;
10
- /**
11
- * Stop the current tunnel
12
- */
13
- export declare function stopTunnel(): Promise<void>;
14
- /**
15
- * Display QR code for tunnel URL
16
- */
17
- export declare function displayQR(tunnelInfo: TunnelInfo): Promise<void>;
18
- /**
19
- * Get current tunnel details with login status
20
- */
21
- export declare function getTunnelDetails(): TunnelDetails;
22
- /**
23
- * Get current tunnel info
24
- */
25
- export declare function getTunnelInfo(): TunnelInfo | null;
26
- /**
27
- * Get current server URL from tunnel
28
- */
29
- export declare function getServerUrl(): string;
30
- /**
31
- * Graceful shutdown
32
- */
33
- export declare function gracefulShutdown(): Promise<void>;
34
- export { diagnoseNgrok, ensureNgrokReady };
35
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tunnel/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAGL,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAejB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAoC3E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBhD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAoEhD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAYD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}