opencode-mobile 1.0.2 → 1.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"push-notifications.d.ts","sourceRoot":"","sources":["../push-notifications.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAiKlD,eAAO,MAAM,sBAAsB,EAAE,MA8GpC,CAAC;AAYF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"push-notifications.d.ts","sourceRoot":"","sources":["../push-notifications.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAiKlD,eAAO,MAAM,sBAAsB,EAAE,MAqNpC,CAAC;AAYF,eAAe,sBAAsB,CAAC"}
@@ -139,16 +139,106 @@ function stopAll() {
139
139
  }
140
140
  export const PushNotificationPlugin = async (ctx) => {
141
141
  if (pluginInitialized) {
142
+ console.error("[PushPlugin] Already initialized, skipping");
142
143
  return { event: async ({ event }) => { } };
143
144
  }
144
145
  pluginInitialized = true;
146
+ // Debug: Log what we received
147
+ console.log("[PushPlugin] Plugin called with ctx:", JSON.stringify({
148
+ serverUrl: ctx.serverUrl,
149
+ hasPort: !!ctx.serverUrl?.port,
150
+ directory: ctx.directory
151
+ }));
145
152
  // Skip tunnel setup if not in server context
146
153
  const isServerMode = !!ctx.serverUrl?.port;
147
- if (!isServerMode) {
148
- return {
149
- event: async ({ event }) => { },
150
- };
151
- }
154
+ // Always return a valid event handler (as no-op when not in server mode)
155
+ return {
156
+ event: async ({ event }) => {
157
+ if (!isServerMode) {
158
+ console.log("[PushPlugin] Event received (not in server mode, ignoring)");
159
+ return;
160
+ }
161
+ // Format notification from event
162
+ const notification = formatNotification(event, "http://localhost:4096", ctx);
163
+ if (!notification) {
164
+ console.log("[PushPlugin] No notification needed for event type:", event.type);
165
+ return;
166
+ }
167
+ // Log the raw event that triggered this push
168
+ const eventAny = event;
169
+ console.log("[PushPlugin] Raw event received", {
170
+ type: event.type,
171
+ sessionID: eventAny.sessionID || eventAny.sessionId,
172
+ timestamp: eventAny.timestamp,
173
+ properties: event.properties
174
+ });
175
+ // Log the formatted notification
176
+ console.log("[PushPlugin] Sending push notification", {
177
+ title: notification.title,
178
+ body: notification.body,
179
+ sessionId: notification.data?.sessionId,
180
+ type: notification.data?.type
181
+ });
182
+ // Send the push notification
183
+ await sendPush(notification);
184
+ console.log("[PushPlugin] Push notification sent successfully");
185
+ },
186
+ };
187
+ // Setup tunnel only in server mode
188
+ (async () => {
189
+ if (isServerMode) {
190
+ const serverPort = parseInt(String(ctx.serverUrl?.port || 4096), 10);
191
+ console.log(`[PushPlugin] App started. Creating tunnel on port ${serverPort}`);
192
+ try {
193
+ // Get server port from ctx, find next available for push-token
194
+ const pushTokenPort = await getNextAvailablePort(serverPort + 1);
195
+ bunServerPort = pushTokenPort;
196
+ const openCodeUrl = `http://127.0.0.1:${serverPort}`;
197
+ console.log(`[PushPlugin] Token API: http://127.0.0.1:${pushTokenPort} → ${openCodeUrl}`);
198
+ await startTokenServer(openCodeUrl, pushTokenPort);
199
+ let tunnelInfo;
200
+ let ngrokFailed = false;
201
+ try {
202
+ // Create tunnel directly to OpenCode server (transparent proxy)
203
+ tunnelInfo = await startTunnel({ port: serverPort, provider: "ngrok" });
204
+ }
205
+ catch (ngrokError) {
206
+ const errorMsg = ngrokError.message.toLowerCase();
207
+ const isAuthIssue = errorMsg.includes("invalid tunnel configuration") ||
208
+ errorMsg.includes("authtoken") ||
209
+ errorMsg.includes("authentication") ||
210
+ errorMsg.includes("auth token") ||
211
+ errorMsg.includes("session failed") ||
212
+ errorMsg.includes("connect to api.ngrok.com");
213
+ if (isAuthIssue) {
214
+ console.log("[PushPlugin] Ngrok needs authtoken (ERR_NGROK_4018)");
215
+ console.log("[PushPlugin] Skipping ngrok setup - will use fallback tunnels");
216
+ ngrokFailed = true;
217
+ }
218
+ else {
219
+ ngrokFailed = true;
220
+ }
221
+ if (ngrokFailed) {
222
+ console.log("[PushPlugin] Trying localtunnel...");
223
+ try {
224
+ tunnelInfo = await startTunnel({ port: serverPort, provider: "localtunnel" });
225
+ }
226
+ catch (localtunnelError) {
227
+ console.error("[PushPlugin] Localtunnel failed:", localtunnelError.message);
228
+ throw new Error("All tunnel providers failed");
229
+ }
230
+ }
231
+ }
232
+ if (!tunnelInfo) {
233
+ throw new Error("Failed to establish tunnel");
234
+ }
235
+ displayQR(tunnelInfo);
236
+ }
237
+ catch (error) {
238
+ console.error("[PushPlugin] Tunnel setup failed:", error.message);
239
+ }
240
+ }
241
+ })();
152
242
  const serverPort = parseInt(String(ctx.serverUrl?.port || 4096), 10);
153
243
  logger.info(`App started. Creating tunnel on port ${serverPort}`);
154
244
  // Test logging levels (dev-only verbose output)
@@ -1 +1 @@
1
- {"version":3,"file":"push-notifications.js","sourceRoot":"","sources":["../push-notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-notifications.js","sourceRoot":"","sources":["../push-notifications.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-mobile",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Mobile push notification plugin for OpenCode - enables push notifications via Expo for mobile devices",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,7 +13,9 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
- "push-notifications.ts"
16
+ "package.json",
17
+ "README.md",
18
+ "LICENSE"
17
19
  ],
18
20
  "keywords": [
19
21
  "opencode",
@@ -56,6 +58,11 @@
56
58
  "build": "tsc",
57
59
  "typecheck": "tsc --noEmit",
58
60
  "prepublishOnly": "npm run build",
59
- "test": "echo \"Error: no test specified\" && exit 1"
61
+ "test": "echo \"Error: no test specified\" && exit 1",
62
+ "version": "npm version",
63
+ "bump": "npm version",
64
+ "bump:patch": "npm version patch",
65
+ "bump:minor": "npm version minor",
66
+ "bump:major": "npm version major"
60
67
  }
61
68
  }
@@ -1,290 +0,0 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import * as net from "net";
4
-
5
- declare const Bun: any;
6
-
7
- import type { Plugin } from "@opencode-ai/plugin";
8
- import { startTunnel, stopTunnel, displayQRCode as displayQR, getTunnelDetails } from "./src/tunnel/index.js";
9
- import { getNextAvailablePort } from "./src/utils/port.js";
10
- import type { PushToken, Notification, NotificationEvent, PluginContext } from "./src/push/index.js";
11
- import { loadTokens, saveTokens, truncate } from "./src/push/token-store.js";
12
- import { formatNotification } from "./src/push/formatter.js";
13
- import { sendPush } from "./src/push/sender.js";
14
-
15
- import { createLogger, configureLogger } from "./sdk-logger.js";
16
-
17
- const CONFIG_DIR = path.join(process.env.HOME || "", ".config/opencode");
18
-
19
- // Simple console logging (no client.log dependency)
20
- const logger = createLogger("PushPlugin");
21
- const TOKEN_FILE = path.join(CONFIG_DIR, "push-tokens.json");
22
-
23
- let tokenServerStarted = false;
24
- let pluginInitialized = false;
25
- let bunServer: any = null;
26
- let bunServerPort: number | null = null;
27
-
28
- async function startTokenServer(
29
- openCodeUrl: string,
30
- port: number,
31
- ): Promise<void> {
32
- if (tokenServerStarted) return;
33
-
34
- const cors = {
35
- "Access-Control-Allow-Origin": "*",
36
- "Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
37
- "Access-Control-Allow-Headers": "Content-Type, x-opencode-directory",
38
- };
39
-
40
- bunServer = Bun.serve({
41
- port: port,
42
- hostname: "0.0.0.0",
43
- idleTimeout: 0, // Disable timeout for SSE connections
44
- async fetch(req: Request) {
45
- const url = new URL(req.url);
46
- if (req.method === "OPTIONS")
47
- return new Response(null, { status: 204, headers: cors });
48
-
49
- if (url.pathname === "/push-token" && req.method === "POST") {
50
- const body = (await req.json()) as {
51
- token?: string;
52
- platform?: string;
53
- deviceId?: string;
54
- };
55
- const { token, platform, deviceId } = body;
56
- if (!token || !deviceId)
57
- return new Response(JSON.stringify({ error: "Missing fields" }), {
58
- status: 400,
59
- headers: cors,
60
- });
61
-
62
- // Validate platform field
63
- const validPlatform = (platform && (platform === "ios" || platform === "android"))
64
- ? platform
65
- : "ios";
66
-
67
- const tokens = loadTokens();
68
- const idx = tokens.findIndex((t) => t.deviceId === deviceId);
69
- const newToken: PushToken = {
70
- token,
71
- platform: validPlatform,
72
- deviceId,
73
- registeredAt: new Date().toISOString(),
74
- };
75
- if (idx >= 0) tokens[idx] = newToken;
76
- else tokens.push(newToken);
77
- saveTokens(tokens);
78
- return new Response(JSON.stringify({ success: true }), {
79
- status: 200,
80
- headers: cors,
81
- });
82
- }
83
-
84
- if (url.pathname === "/push-token" && req.method === "DELETE") {
85
- const body = (await req.json()) as { deviceId?: string };
86
- const { deviceId } = body;
87
- saveTokens(loadTokens().filter((t) => t.deviceId !== deviceId));
88
- return new Response(JSON.stringify({ success: true }), {
89
- status: 200,
90
- headers: cors,
91
- });
92
- }
93
-
94
- if (url.pathname === "/push-token" && req.method === "GET") {
95
- return new Response(JSON.stringify({ count: loadTokens().length }), {
96
- status: 200,
97
- headers: cors,
98
- });
99
- }
100
-
101
- if (url.pathname === "/push-token/test" && req.method === "POST") {
102
- await sendPush({
103
- title: "Test",
104
- body: "Push notifications working!",
105
- data: { type: "test", serverUrl: openCodeUrl },
106
- });
107
- return new Response(JSON.stringify({ success: true }), {
108
- status: 200,
109
- headers: cors,
110
- });
111
- }
112
-
113
- // Return tunnel information
114
- if (url.pathname === "/tunnel" && req.method === "GET") {
115
- const details = getTunnelDetails();
116
- return new Response(JSON.stringify(details, null, 2), {
117
- status: 200,
118
- headers: { ...cors, "Content-Type": "application/json" },
119
- });
120
- }
121
-
122
- // Proxy everything else directly to OpenCode server (transparent)
123
- const pathname = url.pathname + url.search;
124
- try {
125
- const controller = new AbortController();
126
- const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
127
- const proxyReq = new Request(`${openCodeUrl}${pathname}`, {
128
- method: req.method,
129
- headers: req.headers,
130
- body: req.body,
131
- redirect: "follow",
132
- signal: controller.signal,
133
- });
134
- try {
135
- return await fetch(proxyReq);
136
- } catch (e: any) {
137
- if (e.name === 'AbortError') {
138
- return new Response("Gateway timeout", { status: 504, headers: cors });
139
- }
140
- throw e;
141
- } finally {
142
- clearTimeout(timeoutId);
143
- }
144
- } catch (e) {
145
- logger.error("Proxy error:", e);
146
- return new Response("Proxy error", { status: 502, headers: cors });
147
- }
148
- },
149
- });
150
-
151
- tokenServerStarted = true;
152
- }
153
-
154
-
155
- function stopAll(): void {
156
- logger.info("Shutting down...");
157
-
158
- stopTunnel();
159
- if (bunServer) {
160
- logger.info("Stopping Bun server...");
161
- bunServer.stop();
162
- bunServer = null;
163
- }
164
- tokenServerStarted = false;
165
- logger.info("Shutdown complete");
166
- }
167
-
168
- export const PushNotificationPlugin: Plugin = async (ctx) => {
169
- if (pluginInitialized) {
170
- return { event: async ({ event }) => {} };
171
- }
172
- pluginInitialized = true;
173
-
174
- // Skip tunnel setup if not in server context
175
- const isServerMode = !!(ctx as any).serverUrl?.port;
176
- if (!isServerMode) {
177
- return {
178
- event: async ({ event }) => {},
179
- };
180
- }
181
-
182
- const serverPort = parseInt(String((ctx as any).serverUrl?.port || 4096), 10);
183
- logger.info(`App started. Creating tunnel on port ${serverPort}`);
184
-
185
- // Test logging levels (dev-only verbose output)
186
- logger.dev("Detailed development info - only appears in dev mode");
187
- logger.info("Standard operational message - appears in both dev and prod");
188
- logger.warn("Non-critical issue warning");
189
- logger.error("Critical failure message");
190
-
191
- // Get server port from ctx, find next available for push-token
192
- const pushTokenPort = await getNextAvailablePort(serverPort + 1);
193
- bunServerPort = pushTokenPort;
194
- const openCodeUrl = `http://127.0.0.1:${serverPort}`;
195
-
196
- logger.info(`Token API: http://127.0.0.1:${pushTokenPort} → ${openCodeUrl}`);
197
-
198
- try {
199
- await startTokenServer(openCodeUrl, pushTokenPort);
200
-
201
- let tunnelInfo: any;
202
- let ngrokFailed = false;
203
-
204
- try {
205
- // Create tunnel directly to OpenCode server (transparent proxy)
206
- tunnelInfo = await startTunnel({ port: serverPort, provider: "ngrok" });
207
- } catch (ngrokError: any) {
208
- const errorMsg = ngrokError.message.toLowerCase();
209
- const isAuthIssue = errorMsg.includes("invalid tunnel configuration") ||
210
- errorMsg.includes("authtoken") ||
211
- errorMsg.includes("authentication") ||
212
- errorMsg.includes("auth token") ||
213
- errorMsg.includes("session failed") ||
214
- errorMsg.includes("connect to api.ngrok.com");
215
-
216
- if (isAuthIssue) {
217
- logger.info("Ngrok needs authtoken (ERR_NGROK_4018)");
218
- logger.info("Skipping ngrok setup - will use fallback tunnels");
219
- ngrokFailed = true;
220
- } else {
221
- ngrokFailed = true;
222
- }
223
-
224
- if (ngrokFailed) {
225
- logger.info("Trying localtunnel...");
226
- try {
227
- tunnelInfo = await startTunnel({ port: serverPort, provider: "localtunnel" });
228
- } catch (localtunnelError: any) {
229
- logger.error("Localtunnel failed:", localtunnelError.message);
230
- throw new Error("All tunnel providers failed");
231
- }
232
- }
233
- }
234
-
235
- if (!tunnelInfo) {
236
- throw new Error("Failed to establish tunnel");
237
- }
238
-
239
- displayQR(tunnelInfo);
240
-
241
- return {
242
- event: async ({ event }) => {
243
- // Format notification from event
244
- const notification = formatNotification(event, tunnelInfo.url, ctx);
245
-
246
- if (!notification) {
247
- // No notification needed for this event type
248
- return;
249
- }
250
-
251
- // Log the raw event that triggered this push
252
- const eventAny = event as any;
253
- logger.info("Raw event received", {
254
- type: event.type,
255
- sessionID: eventAny.sessionID || eventAny.sessionId,
256
- timestamp: eventAny.timestamp,
257
- properties: event.properties
258
- });
259
-
260
- // Log the formatted notification
261
- logger.info("Sending push notification", {
262
- title: notification.title,
263
- body: notification.body,
264
- sessionId: notification.data?.sessionId,
265
- type: notification.data?.type
266
- });
267
-
268
- // Send the push notification
269
- await sendPush(notification);
270
-
271
- logger.dev("Push notification sent successfully");
272
- },
273
- };
274
- } catch (error: any) {
275
- logger.error("Failed:", error.message);
276
- return { event: async ({ event }) => {} };
277
- }
278
- };
279
-
280
- process.on("SIGTERM", () => {
281
- stopAll();
282
- });
283
- process.on("SIGINT", () => {
284
- stopAll();
285
- });
286
- process.on("SIGHUP", () => {
287
- stopAll();
288
- });
289
-
290
- export default PushNotificationPlugin;