opencode-mobile 1.3.1 → 1.3.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.
package/README.md CHANGED
@@ -1,291 +1,223 @@
1
1
  # OpenCode Mobile Plugin
2
2
 
3
- A mobile push notification plugin for OpenCode, built with TypeScript and Bun runtime. The plugin provides push notification capabilities through Expo Push Notifications service, with tunnel management for mobile device connectivity.
4
-
5
- ## Features
6
-
7
- - **Push Notifications**: Send push notifications via Expo Push Notifications service
8
- - **Tunnel Management**: Support for Cloudflare and ngrok tunnels for mobile device connectivity
9
- - **Reverse Proxy**: Built-in HTTP proxy server for handling notifications
10
- - **QR Code Support**: Generate QR codes for easy tunnel URL sharing
3
+ Mobile push notifications for OpenCode via Expo. Connect your phone to receive notifications when OpenCode generates responses, even when you're away from your computer.
11
4
 
12
5
  ## Prerequisites
13
6
 
14
- - [Bun](https://bun.sh/) runtime (v1.0+)
15
- - TypeScript 5.0+
16
- - Valid Expo account and project credentials
7
+ - [OpenCode CLI](https://opencode.ai) installed and configured
8
+ - Node.js or Bun runtime
9
+ - Mobile device with OpenCode Mobile app (or Expo Go)
10
+
11
+ ## Quick Start
17
12
 
18
- ## Installation
13
+ ### Step 1: Install the Plugin
19
14
 
20
15
  ```bash
21
- # Install dependencies
22
- bun install
16
+ npx opencode-mobile install
23
17
  ```
24
18
 
25
- ## Usage
19
+ **What this does:**
20
+ - Installs `opencode-mobile@latest` plugin to your global OpenCode config
21
+ - Creates the `/mobile` command (available in all projects)
22
+ - Sets up tunnel provider configuration for mobile connectivity
26
23
 
27
- ### Run the Main Plugin
24
+ **Expected output:**
25
+ ```
26
+ ✅ Updated ~/.config/opencode/opencode.json
27
+ plugin: ["opencode-mobile@latest"]
28
28
 
29
- ```bash
30
- bun run index.ts
29
+ ✅ Created /mobile command at ~/.config/opencode/commands/mobile.md
30
+
31
+ 🚀 Setting up tunnel provider for mobile notifications...
32
+
33
+ 🎉 Installation complete!
34
+ Restart OpenCode (run `opencode`) to load the plugin.
35
+ Use `/mobile` in any project to access mobile features.
31
36
  ```
32
37
 
33
- ### Run Push Notifications Directly
38
+ ### Step 2: Start OpenCode
34
39
 
35
40
  ```bash
36
- bun run push-notifications.ts
41
+ opencode attach
37
42
  ```
38
43
 
39
- ### Build and Type-Check
44
+ Or start a new session:
40
45
 
41
46
  ```bash
42
- # Type-check only (no emit)
43
- npx tsc --noEmit
47
+ opencode serve
48
+ ```
44
49
 
45
- # Compile TypeScript to JavaScript
46
- npx tsc
50
+ **What you'll see:**
51
+ ```
52
+ [opencode-mobile] v1.3.2
53
+ [PushPlugin][Mobile] Entry loaded: index.ts
47
54
 
48
- # Build and type-check
49
- npm run build
55
+ Connecting to OpenCode...
56
+ Connected! Session ID: abc123
57
+
58
+ >
50
59
  ```
51
60
 
52
- ### Linting
61
+ ### Step 3: Get Your QR Code
53
62
 
54
- ```bash
55
- npx eslint "**/*.ts" --fix
63
+ Inside OpenCode, type:
64
+
65
+ ```
66
+ /mobile
56
67
  ```
57
68
 
58
- ### Testing
69
+ **What you'll see:**
70
+ ```
71
+ > /mobile
59
72
 
60
- ```bash
61
- bun test
62
- bun test <test-file>.test.ts
63
- bun test --test-name-pattern="test name"
73
+ ┌─────────────────┐
74
+ █▀▀▀▀▀█ ▀▄▀▄▀▄ │
75
+ ███ █ ▄▀ ▄▀ │
76
+ ▀▀▀ █ ▀▄▀▄▀▄ │
77
+ │ ▀▀▀▀▀▀▀ ▀▄█▄▀▄ │
78
+ │ ▀▄▀▄▀▄▀ █▄▀▄▀▄ │
79
+ └─────────────────┘
80
+
81
+ https://your-tunnel-url.ngrok.io
64
82
  ```
65
83
 
66
- ## Project Structure
84
+ ### Step 4: Connect Your Phone
85
+
86
+ 1. **Install the OpenCode Mobile app** (or use Expo Go)
87
+ 2. **Open the app** and look for the QR scanner
88
+ 3. **Scan the QR code** displayed in Step 3
89
+ 4. **Done!** Your device is now registered for push notifications
90
+
91
+ ## How It Works
67
92
 
68
93
  ```
69
- /Users/rodri/.config/opencode/opencode-mobile-plugin/
70
- ├── index.ts # Main barrel export
71
- ├── push-notifications.ts # Core plugin logic (main entry point)
72
- ├── tunnel-manager.ts # Tunnel management (Cloudflare/ngrok)
73
- ├── reverse-proxy.ts # HTTP proxy server
74
- ├── hello-world.ts # Example plugin
75
- ├── tsconfig.json # TypeScript configuration
76
- ├── package.json # Dependencies and scripts
77
- ├── AGENTS.md # Agent instructions and project guidelines
78
- └── dist/ # Compiled output
94
+ ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
95
+ │ OpenCode │──────▶│ Tunnel │──────▶│ Mobile Device │
96
+ │ Server │ │ (ngrok/etc) │ │ (Push Notify)
97
+ └─────────────┘ └──────────────┘ └─────────────────┘
79
98
  ```
80
99
 
81
- ## Configuration
100
+ 1. **Tunnel**: Creates a secure public URL that your phone can reach
101
+ 2. **QR Code**: Encodes the tunnel URL for easy scanning
102
+ 3. **Push Token**: Your phone registers its Expo push token with the plugin
103
+ 4. **Notifications**: OpenCode events trigger push notifications to your device
82
104
 
83
- ### Environment Variables
105
+ ## Available Commands
84
106
 
85
- - `OPENCODE_PORT`: Port for the local server (default: 3000)
86
- - `EXPO_PROJECT_ID`: Your Expo project ID
87
- - `TUNNEL_PROVIDER`: Tunnel provider to use (`cloudflare` or `ngrok`)
107
+ | Command | Description |
108
+ |---------|-------------|
109
+ | `/mobile` | Display QR code for mobile connection |
110
+ | `/mobile ExponentPushToken[xxx]` | Manually register a push token |
111
+ | `npx opencode-mobile qr <tunnels.json>` | Show QR from tunnel file |
112
+ | `npx opencode-mobile audit` | Run endpoint audit |
113
+ | `npx opencode-mobile uninstall` | Remove plugin globally |
88
114
 
89
- ### Tunnel Configuration
115
+ ## Configuration
90
116
 
91
- The plugin supports two tunnel providers:
117
+ ### Environment Variables
92
118
 
93
- 1. **Cloudflare** (`cloudflared`): Zero-config tunnel with Cloudflare's secure infrastructure
94
- 2. **ngrok**: Popular ngrok tunnel with custom domain support
119
+ | Variable | Description | Default |
120
+ |----------|-------------|---------|
121
+ | `TUNNEL_PROVIDER` | Tunnel provider (`auto`, `ngrok`, `cloudflare`, `localtunnel`) | `auto` |
122
+ | `OPENCODE_MOBILE_DEBUG` | Enable debug logging (`1` to enable) | disabled |
123
+ | `OPENCODE_PORT` | Local server port | `3000` |
95
124
 
96
- ## Code Style Guidelines
125
+ ### Tunnel Providers
97
126
 
98
- ### Imports
127
+ The plugin automatically tries providers in this order:
99
128
 
100
- ```typescript
101
- // Standard library - namespace imports
102
- import * as fs from "fs";
103
- import * as path from "path";
129
+ 1. **ngrok** - Popular tunnel service (requires auth token)
130
+ 2. **Cloudflare** - Zero-config tunnel via cloudflared
131
+ 3. **Localtunnel** - Simple, free tunnel option
104
132
 
105
- // External modules - named or default imports
106
- import ngrok from "ngrok";
107
- import qrcode from "qrcode";
133
+ ### Installing ngrok (Optional)
108
134
 
109
- // Types - use import type when only using types
110
- import type { Plugin } from "@opencode-ai/plugin";
111
- import type { TunnelConfig } from "./tunnel-manager";
135
+ For the best experience with stable URLs:
112
136
 
113
- // Group imports logically: types → external modules → internal modules
114
- import type { Plugin } from "@opencode-ai/plugin";
115
- import * as fs from "fs";
116
- import * as path from "path";
117
- import { startTunnel } from "./tunnel-manager";
118
- ```
137
+ ```bash
138
+ # macOS
139
+ brew install ngrok
119
140
 
120
- ### Formatting
121
-
122
- - **2 spaces** for indentation
123
- - **Single quotes** for strings
124
- - **Semicolons** at end of statements
125
- - **Trailing commas** in multi-line objects/arrays
126
- - **Max line length**: ~100 characters (soft limit)
127
-
128
- ### Types
129
-
130
- ```typescript
131
- // Use interfaces for object shapes
132
- interface PushToken {
133
- token: string;
134
- platform: "ios" | "android";
135
- deviceId: string;
136
- registeredAt: string;
137
- }
138
-
139
- // Use type aliases for unions/primitives
140
- type NotificationHandler = (notification: Notification) => Promise<void>;
141
-
142
- // Explicit return types for public functions
143
- function loadTokens(): PushToken[] {
144
- // ...
145
- }
146
-
147
- // Avoid `any` - use `unknown` with type guards when uncertain
148
- function safeParse(data: unknown): Record<string, any> {
149
- if (typeof data === "string") {
150
- try {
151
- return JSON.parse(data);
152
- } catch {
153
- return {};
154
- }
155
- }
156
- return data as Record<string, any>;
157
- }
141
+ # Get your authtoken from https://dashboard.ngrok.com
142
+ ngrok config add-authtoken YOUR_TOKEN
158
143
  ```
159
144
 
160
- ### Naming Conventions
161
-
162
- | Pattern | Convention | Example |
163
- |---------|------------|---------|
164
- | Constants | UPPER_SNAKE_CASE | `TOKEN_FILE`, `BUN_SERVER_PORT` |
165
- | Functions/variables | camelCase | `loadTokens`, `startTunnel` |
166
- | Interfaces/classes | PascalCase | `PushToken`, `TunnelConfig` |
167
- | Private/internal | prefix with `_` | `_bunServer`, `_pluginInitialized` |
168
- | Booleans | prefix with `is`, `has`, `should` | `isRunning`, `hasStarted` |
169
-
170
- ### Error Handling
171
-
172
- ```typescript
173
- // Always wrap async operations in try-catch
174
- try {
175
- await someAsyncOperation();
176
- } catch (error: any) {
177
- // Log errors with module prefix
178
- console.error("[ModuleName] Error message:", error.message);
179
-
180
- // Provide context in error messages
181
- if (error.message?.includes("specific case")) {
182
- console.error("[PushPlugin] Handle specific error:", error.message);
183
- } else {
184
- console.error("[PushPlugin] Unexpected error:", error.message);
185
- }
186
- }
187
-
188
- // Handle specific error types when possible
189
- if (error instanceof ValidationError) {
190
- // Handle validation errors
191
- }
192
- ```
145
+ ## Troubleshooting
193
146
 
194
- ### Console Logging
147
+ ### "No tunnel URL found"
195
148
 
196
- - Use **module prefixes** in all console output: `[PushPlugin]`, `[Tunnel]`, `[Proxy]`
197
- - Use **emojis** for status indicators: `✅`, `❌`, `💡`, `ℹ️`
198
- - Log important steps and results
149
+ **Problem**: Tunnel failed to start
199
150
 
200
- ```typescript
201
- console.log('[PushPlugin] Starting...');
202
- console.error('[PushPlugin] Failed:', error.message);
203
- console.log(`[Tunnel] URL: ${url}`);
204
- console.log('✅ Server started successfully');
205
- console.log('❌ Connection failed:', error.message);
206
- ```
151
+ **Solutions:**
152
+ ```bash
153
+ # Check tunnel provider is installed
154
+ which ngrok
155
+ which cloudflared
156
+
157
+ # Run tunnel setup manually
158
+ npx opencode-mobile tunnel-setup
207
159
 
208
- ### Async/Await
209
-
210
- ```typescript
211
- // Use async/await over raw promises
212
- async function startServer(): Promise<void> {
213
- try {
214
- await startProxy();
215
- await startTunnel();
216
- } catch (error) {
217
- // handle error
218
- }
219
- }
220
-
221
- // Never leave promises unhandled
222
- // Use Promise.all() for parallel operations
223
- const [result1, result2] = await Promise.all([
224
- operation1(),
225
- operation2(),
226
- ]);
160
+ # Or skip tunnel setup during install
161
+ npx opencode-mobile install --skip-tunnel-setup
227
162
  ```
228
163
 
229
- ## Plugin Architecture
164
+ ### "Push token not registering"
230
165
 
231
- ### Entry Points
166
+ **Problem**: Device can't reach the plugin server
232
167
 
233
- - **Main entry**: `index.ts` (barrel export)
234
- - **Plugin entry**: `push-notifications.ts` (main plugin logic)
235
- - **Compiled output**: `dist/index.js`
168
+ **Solutions:**
169
+ - Ensure your phone and computer are on the same network (for LAN mode)
170
+ - Check that the tunnel URL is accessible from your phone's browser
171
+ - Verify the QR code scanned correctly (compare the URL)
236
172
 
237
- ### Plugin Interface
173
+ ### Plugin not loading
238
174
 
239
- All plugins must export a function matching the `Plugin` type from `@opencode-ai/plugin`:
175
+ **Problem**: OpenCode doesn't recognize the plugin
240
176
 
241
- ```typescript
242
- import type { Plugin } from "@opencode-ai/plugin";
177
+ **Solutions:**
178
+ ```bash
179
+ # Verify installation
180
+ npx opencode-mobile --help
243
181
 
244
- export const MyPlugin: Plugin = async (ctx) => {
245
- // Initialize plugin
246
- return {
247
- event: async ({ event }) => {
248
- // Handle event
249
- },
250
- };
251
- };
182
+ # Check global config
183
+ cat ~/.config/opencode/opencode.json
252
184
 
253
- export default MyPlugin;
185
+ # Reinstall
186
+ npx opencode-mobile uninstall --yes
187
+ npx opencode-mobile install
254
188
  ```
255
189
 
256
- ### Signal Handling
257
-
258
- ```typescript
259
- // Handle process signals for graceful shutdown
260
- const signals = ["SIGINT", "SIGTERM", "SIGHUP"];
261
- signals.forEach((signal) => {
262
- process.on(signal, async () => {
263
- await gracefulShutdown();
264
- process.exit(0);
265
- });
266
- });
267
- ```
190
+ ### Reset Everything
268
191
 
269
- ## Dependencies
192
+ ```bash
193
+ # Uninstall plugin
194
+ npx opencode-mobile uninstall --yes
270
195
 
271
- - `@opencode-ai/plugin`: Core plugin interface
272
- - `ngrok`: Ngrok tunnel provider
273
- - `cloudflared`: Cloudflare tunnel provider
274
- - `qrcode`: QR code generation
275
- - `bun`: Runtime environment
196
+ # Clear stored tokens
197
+ rm ~/.config/opencode/mobile-tokens.json
276
198
 
277
- ## License
199
+ # Reinstall
200
+ npx opencode-mobile install
201
+ ```
278
202
 
279
- MIT License - see [LICENSE](LICENSE) file for details.
203
+ ## Project Structure
204
+
205
+ ```
206
+ opencode-mobile/
207
+ ├── index.ts # Main plugin entry point
208
+ ├── src/
209
+ │ ├── tunnel/ # Tunnel providers (ngrok, cloudflare, localtunnel)
210
+ │ ├── push/ # Push notification logic
211
+ │ └── cli/ # CLI commands (install, qr, audit, etc.)
212
+ ├── bin/ # CLI entry points
213
+ ├── dist/ # Compiled output
214
+ └── package.json
215
+ ```
280
216
 
281
217
  ## Contributing
282
218
 
283
- 1. Fork the repository
284
- 2. Create a feature branch
285
- 3. Make your changes following the code style guidelines
286
- 4. Run linting and tests
287
- 5. Submit a pull request
219
+ See [AGENTS.md](./AGENTS.md) for development guidelines and project structure.
288
220
 
289
- ## Support
221
+ ## License
290
222
 
291
- For issues and feature requests, please use the GitHub issue tracker.
223
+ MIT License - see [LICENSE](LICENSE) file for details.
package/bin/audit CHANGED
@@ -9,6 +9,7 @@ import { main as auditMain } from "../dist/src/cli/index.js";
9
9
  import { main as qrMain } from "../dist/src/cli/qr.js";
10
10
  import { main as installMain } from "../dist/src/cli/install.js";
11
11
  import { main as uninstallMain } from "../dist/src/cli/uninstall.js";
12
+ import { main as updateMain } from "../dist/src/cli/update.js";
12
13
 
13
14
  const args = process.argv.slice(2);
14
15
  const subcommand = args[0];
@@ -34,7 +35,11 @@ const run = async () => {
34
35
  return;
35
36
  }
36
37
 
37
- // Show help for unknown commands or no command
38
+ if (subcommand === "update") {
39
+ await updateMain(args.slice(1));
40
+ return;
41
+ }
42
+
38
43
  if (subcommand === "--help" || subcommand === "-h" || !subcommand) {
39
44
  console.log(`
40
45
  OpenCode Mobile Plugin
@@ -45,11 +50,13 @@ USAGE:
45
50
  COMMANDS:
46
51
  install Install the plugin globally
47
52
  uninstall Remove the plugin globally
53
+ update Update to the latest version
48
54
  audit Run endpoint audit
49
55
  qr Show QR code for mobile connection
50
56
 
51
57
  EXAMPLES:
52
58
  npx opencode-mobile install
59
+ npx opencode-mobile update
53
60
  npx opencode-mobile uninstall --yes
54
61
  npx opencode-mobile audit --tunnel-only
55
62
  `);
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAiFA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChF"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAoGA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhF"}
@@ -1,6 +1,9 @@
1
1
  import { installPluginToGlobalOpenCodeConfig, installGlobalCommand } from "./opencode-config.js";
2
2
  import { MOBILE_COMMAND_NAME, getMobileCommandMarkdown } from "./mobile-command.js";
3
+ import { checkForUpdates } from "./version-check.js";
3
4
  import { spawn } from "child_process";
5
+ import * as path from "path";
6
+ import * as url from "url";
4
7
  const PLUGIN_SPEC = "opencode-mobile@latest";
5
8
  function parseArgs(args) {
6
9
  const options = {
@@ -53,7 +56,10 @@ COMMAND LOCATION:
53
56
  async function runTunnelSetup() {
54
57
  return new Promise((resolve) => {
55
58
  console.log("\n🚀 Setting up tunnel provider for mobile notifications...\n");
56
- const child = spawn("node", ["./dist/src/cli/tunnel-setup.js"], {
59
+ // Resolve path relative to this file's location (src/cli/install.ts -> dist/src/cli/tunnel-setup.js)
60
+ const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
61
+ const tunnelSetupPath = path.resolve(__dirname, "..", "cli", "tunnel-setup.js");
62
+ const child = spawn("node", [tunnelSetupPath], {
57
63
  stdio: "inherit",
58
64
  cwd: process.cwd(),
59
65
  });
@@ -66,12 +72,26 @@ async function runTunnelSetup() {
66
72
  });
67
73
  });
68
74
  }
75
+ async function checkVersionAndPrompt() {
76
+ try {
77
+ console.log("🔍 Checking for updates...\n");
78
+ const versionInfo = await checkForUpdates();
79
+ if (versionInfo.updateAvailable) {
80
+ console.log(`📦 Update available: ${versionInfo.currentVersion} → ${versionInfo.latestVersion}\n`);
81
+ console.log("The plugin will be updated to the latest version.\n");
82
+ }
83
+ }
84
+ catch { }
85
+ }
69
86
  export async function main(args = process.argv.slice(2)) {
70
87
  const options = parseArgs(args);
71
88
  if (options.help) {
72
89
  showHelp();
73
90
  return;
74
91
  }
92
+ if (!options.dryRun) {
93
+ await checkVersionAndPrompt();
94
+ }
75
95
  const prefix = options.dryRun ? "[Dry Run] " : "";
76
96
  // Install plugin to global config
77
97
  const result = installPluginToGlobalOpenCodeConfig(PLUGIN_SPEC, { dryRun: options.dryRun });
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAS7C,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YACzC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QACjC,CAAC;aAAM,IAAI,GAAG,KAAK,wBAAwB,EAAE,CAAC;YAC5C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;aAaD,WAAW;;;;;;;;;CASvB,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAE7E,qGAAqG;QACrG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAEhF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;YAC7C,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;QAE5C,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,CAAC,cAAc,MAAM,WAAW,CAAC,aAAa,IAAI,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,qBAAqB,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAElD,kCAAkC;IAClC,MAAM,MAAM,GAAG,mCAAmC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5F,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,WAAW,uBAAuB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;QAClD,MAAM,aAAa,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,cAAc,EAAE;YAC9E,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,mBAAmB,eAAe,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QACpG,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,mBAAmB,eAAe,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,MAAM,mBAAmB,6BAA6B,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,6BAA6B,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,4DAA4D,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,8DAA8D,CAAC,CAAC;AACvF,CAAC"}
@@ -241,16 +241,15 @@ async function setupCloudflare(options) {
241
241
  console.log("\n☁️ Cloudflare Tunnel Setup\n");
242
242
  if (!isCloudflaredInstalled()) {
243
243
  console.log("⚠️ cloudflared is not installed.");
244
- const install = await prompt("Would you like to install it now? (y/n): ");
245
- if (install.toLowerCase() === "y") {
246
- const success = await installCloudflared();
247
- if (!success) {
248
- console.log("\n❌ Installation failed. Please install manually and try again.");
249
- return;
250
- }
251
- }
252
- else {
253
- console.log("\n❌ cloudflared is required. Setup cancelled.");
244
+ console.log("📦 Attempting automatic installation...\n");
245
+ const success = await installCloudflared();
246
+ if (!success) {
247
+ console.log("\n❌ Automatic installation failed.");
248
+ console.log(" Please install cloudflared manually:");
249
+ console.log(" macOS: brew install cloudflared");
250
+ console.log(" Linux: curl -L --output /tmp/cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i /tmp/cloudflared.deb");
251
+ console.log(" Windows: Download from https://github.com/cloudflare/cloudflared/releases");
252
+ console.log("\n After installation, run: npx opencode-mobile tunnel-setup\n");
254
253
  return;
255
254
  }
256
255
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-setup.js","sourceRoot":"","sources":["../../../src/cli/tunnel-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel-setup.js","sourceRoot":"","sources":["../../../src/cli/tunnel-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function main(args?: string[]): Promise<void>;
2
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/update.ts"],"names":[],"mappings":"AA+CA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChF"}
@@ -0,0 +1,74 @@
1
+ import { checkForUpdates, executeUpdate, getUpdateCommand } from "./version-check.js";
2
+ function parseArgs(args) {
3
+ const options = {
4
+ help: false,
5
+ checkOnly: false,
6
+ };
7
+ for (const arg of args) {
8
+ if (arg === "--help" || arg === "-h") {
9
+ options.help = true;
10
+ }
11
+ else if (arg === "--check" || arg === "-c") {
12
+ options.checkOnly = true;
13
+ }
14
+ }
15
+ return options;
16
+ }
17
+ function showHelp() {
18
+ console.log(`
19
+ OpenCode Mobile Plugin - Update
20
+
21
+ USAGE:
22
+ npx opencode-mobile update [OPTIONS]
23
+
24
+ OPTIONS:
25
+ -c, --check Check for updates without installing
26
+ -h, --help Show this help message
27
+
28
+ DESCRIPTION:
29
+ Updates the opencode-mobile plugin to the latest version from npm.
30
+
31
+ By default, this command checks for updates and installs the latest
32
+ version if available. Use --check to only check without installing.
33
+
34
+ EXAMPLES:
35
+ npx opencode-mobile update # Check and install updates
36
+ npx opencode-mobile update --check # Only check for updates
37
+ `);
38
+ }
39
+ export async function main(args = process.argv.slice(2)) {
40
+ const options = parseArgs(args);
41
+ if (options.help) {
42
+ showHelp();
43
+ return;
44
+ }
45
+ console.log("🔍 Checking for updates...\n");
46
+ try {
47
+ const versionInfo = await checkForUpdates();
48
+ console.log(`Current version: ${versionInfo.currentVersion}`);
49
+ console.log(`Latest version: ${versionInfo.latestVersion}`);
50
+ if (!versionInfo.updateAvailable) {
51
+ console.log("\n✅ You are already on the latest version!");
52
+ return;
53
+ }
54
+ console.log(`\n📦 Update available: ${versionInfo.currentVersion} → ${versionInfo.latestVersion}`);
55
+ if (options.checkOnly) {
56
+ console.log("\nTo update, run:");
57
+ console.log(` ${getUpdateCommand()}`);
58
+ console.log("\nOr simply:");
59
+ console.log(" npx opencode-mobile update");
60
+ return;
61
+ }
62
+ console.log("\n📥 Installing update...\n");
63
+ const success = await executeUpdate();
64
+ if (!success) {
65
+ process.exit(1);
66
+ }
67
+ }
68
+ catch (error) {
69
+ console.error("\n❌ Failed to check for updates:", error instanceof Error ? error.message : String(error));
70
+ console.error("\nPlease check your internet connection and try again.");
71
+ process.exit(1);
72
+ }
73
+ }
74
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAqB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOzG,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,OAAO,GAAqB;QAChC,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,CAAC,cAAc,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;QAEnG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1G,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ export interface VersionInfo {
2
+ currentVersion: string;
3
+ latestVersion: string;
4
+ isOutdated: boolean;
5
+ updateAvailable: boolean;
6
+ }
7
+ export declare function getCurrentVersion(): string;
8
+ /**
9
+ * Fetch the latest version from npm registry
10
+ */
11
+ export declare function getLatestVersion(): Promise<string>;
12
+ /**
13
+ * Compare two semantic versions
14
+ * Returns:
15
+ * - negative if v1 < v2
16
+ * - 0 if v1 === v2
17
+ * - positive if v1 > v2
18
+ */
19
+ export declare function compareVersions(v1: string, v2: string): number;
20
+ /**
21
+ * Check if an update is available
22
+ */
23
+ export declare function checkForUpdates(): Promise<VersionInfo>;
24
+ /**
25
+ * Get the install command to update to latest version
26
+ */
27
+ export declare function getUpdateCommand(): string;
28
+ /**
29
+ * Execute the update command
30
+ */
31
+ export declare function executeUpdate(): Promise<boolean>;
32
+ //# sourceMappingURL=version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/cli/version-check.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiBxD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAY5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CA6BtD"}
@@ -0,0 +1,108 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import * as url from "url";
4
+ const NPM_REGISTRY_URL = "https://registry.npmjs.org/opencode-mobile/latest";
5
+ const PACKAGE_NAME = "opencode-mobile";
6
+ export function getCurrentVersion() {
7
+ try {
8
+ const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
9
+ const packageJsonPath = path.resolve(__dirname, "..", "..", "..", "package.json");
10
+ const raw = fs.readFileSync(packageJsonPath, "utf-8");
11
+ const data = JSON.parse(raw);
12
+ return data.version || "unknown";
13
+ }
14
+ catch {
15
+ return "unknown";
16
+ }
17
+ }
18
+ /**
19
+ * Fetch the latest version from npm registry
20
+ */
21
+ export async function getLatestVersion() {
22
+ try {
23
+ const response = await fetch(NPM_REGISTRY_URL, {
24
+ headers: {
25
+ Accept: "application/json",
26
+ },
27
+ });
28
+ if (!response.ok) {
29
+ throw new Error(`HTTP ${response.status}`);
30
+ }
31
+ const data = (await response.json());
32
+ return data.version || "unknown";
33
+ }
34
+ catch (error) {
35
+ throw new Error(`Failed to fetch latest version: ${error instanceof Error ? error.message : String(error)}`);
36
+ }
37
+ }
38
+ /**
39
+ * Compare two semantic versions
40
+ * Returns:
41
+ * - negative if v1 < v2
42
+ * - 0 if v1 === v2
43
+ * - positive if v1 > v2
44
+ */
45
+ export function compareVersions(v1, v2) {
46
+ const parts1 = v1.replace(/^v/, "").split(".").map(Number);
47
+ const parts2 = v2.replace(/^v/, "").split(".").map(Number);
48
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
49
+ const p1 = parts1[i] || 0;
50
+ const p2 = parts2[i] || 0;
51
+ if (p1 < p2)
52
+ return -1;
53
+ if (p1 > p2)
54
+ return 1;
55
+ }
56
+ return 0;
57
+ }
58
+ /**
59
+ * Check if an update is available
60
+ */
61
+ export async function checkForUpdates() {
62
+ const currentVersion = getCurrentVersion();
63
+ const latestVersion = await getLatestVersion();
64
+ const comparison = compareVersions(currentVersion, latestVersion);
65
+ return {
66
+ currentVersion,
67
+ latestVersion,
68
+ isOutdated: comparison < 0,
69
+ updateAvailable: comparison < 0,
70
+ };
71
+ }
72
+ /**
73
+ * Get the install command to update to latest version
74
+ */
75
+ export function getUpdateCommand() {
76
+ return `npm install -g ${PACKAGE_NAME}@latest`;
77
+ }
78
+ /**
79
+ * Execute the update command
80
+ */
81
+ export async function executeUpdate() {
82
+ const { spawn } = await import("child_process");
83
+ return new Promise((resolve) => {
84
+ console.log(`📦 Installing ${PACKAGE_NAME}@latest...`);
85
+ const child = spawn("npm", ["install", "-g", `${PACKAGE_NAME}@latest`], {
86
+ stdio: "inherit",
87
+ shell: true,
88
+ });
89
+ child.on("close", (code) => {
90
+ if (code === 0) {
91
+ console.log("✅ Update completed successfully!");
92
+ console.log(" Restart OpenCode to use the new version.");
93
+ resolve(true);
94
+ }
95
+ else {
96
+ console.error(`❌ Update failed with exit code ${code}`);
97
+ console.error(" Try running manually:");
98
+ console.error(` ${getUpdateCommand()}`);
99
+ resolve(false);
100
+ }
101
+ });
102
+ child.on("error", (error) => {
103
+ console.error("❌ Failed to execute update:", error.message);
104
+ resolve(false);
105
+ });
106
+ });
107
+ }
108
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../src/cli/version-check.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.3.1",
3
+ "version": "1.3.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",
@@ -28,6 +28,10 @@
28
28
  "import": "./dist/src/cli/install.js",
29
29
  "types": "./dist/src/cli/install.d.ts"
30
30
  },
31
+ "./update": {
32
+ "import": "./dist/src/cli/update.js",
33
+ "types": "./dist/src/cli/update.d.ts"
34
+ },
31
35
  "./tunnel-setup": {
32
36
  "import": "./dist/src/cli/tunnel-setup.js",
33
37
  "types": "./dist/src/cli/tunnel-setup.d.ts"