opencode-mobile 1.0.0 → 1.0.1
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/LICENSE +21 -0
- package/README.md +291 -0
- package/dist/push-notifications.d.ts.map +1 -1
- package/dist/push-notifications.js +10 -61
- package/dist/push-notifications.js.map +1 -1
- package/dist/sdk-logger.d.ts +2 -0
- package/dist/sdk-logger.d.ts.map +1 -1
- package/dist/sdk-logger.js +13 -4
- package/dist/sdk-logger.js.map +1 -1
- package/dist/src/tunnel/qrcode.js +2 -2
- package/dist/src/tunnel/qrcode.js.map +1 -1
- package/package.json +2 -1
- package/push-notifications.ts +11 -65
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 OpenCode
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# OpenCode Mobile Plugin
|
|
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
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
- [Bun](https://bun.sh/) runtime (v1.0+)
|
|
15
|
+
- TypeScript 5.0+
|
|
16
|
+
- Valid Expo account and project credentials
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Install dependencies
|
|
22
|
+
bun install
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
### Run the Main Plugin
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
bun run index.ts
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Run Push Notifications Directly
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bun run push-notifications.ts
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Build and Type-Check
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Type-check only (no emit)
|
|
43
|
+
npx tsc --noEmit
|
|
44
|
+
|
|
45
|
+
# Compile TypeScript to JavaScript
|
|
46
|
+
npx tsc
|
|
47
|
+
|
|
48
|
+
# Build and type-check
|
|
49
|
+
npm run build
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Linting
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx eslint "**/*.ts" --fix
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Testing
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
bun test
|
|
62
|
+
bun test <test-file>.test.ts
|
|
63
|
+
bun test --test-name-pattern="test name"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Project Structure
|
|
67
|
+
|
|
68
|
+
```
|
|
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
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Configuration
|
|
82
|
+
|
|
83
|
+
### Environment Variables
|
|
84
|
+
|
|
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`)
|
|
88
|
+
|
|
89
|
+
### Tunnel Configuration
|
|
90
|
+
|
|
91
|
+
The plugin supports two tunnel providers:
|
|
92
|
+
|
|
93
|
+
1. **Cloudflare** (`cloudflared`): Zero-config tunnel with Cloudflare's secure infrastructure
|
|
94
|
+
2. **ngrok**: Popular ngrok tunnel with custom domain support
|
|
95
|
+
|
|
96
|
+
## Code Style Guidelines
|
|
97
|
+
|
|
98
|
+
### Imports
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// Standard library - namespace imports
|
|
102
|
+
import * as fs from "fs";
|
|
103
|
+
import * as path from "path";
|
|
104
|
+
|
|
105
|
+
// External modules - named or default imports
|
|
106
|
+
import ngrok from "ngrok";
|
|
107
|
+
import qrcode from "qrcode";
|
|
108
|
+
|
|
109
|
+
// Types - use import type when only using types
|
|
110
|
+
import type { Plugin } from "@opencode-ai/plugin";
|
|
111
|
+
import type { TunnelConfig } from "./tunnel-manager";
|
|
112
|
+
|
|
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
|
+
```
|
|
119
|
+
|
|
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
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
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
|
+
```
|
|
193
|
+
|
|
194
|
+
### Console Logging
|
|
195
|
+
|
|
196
|
+
- Use **module prefixes** in all console output: `[PushPlugin]`, `[Tunnel]`, `[Proxy]`
|
|
197
|
+
- Use **emojis** for status indicators: `✅`, `❌`, `💡`, `ℹ️`
|
|
198
|
+
- Log important steps and results
|
|
199
|
+
|
|
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
|
+
```
|
|
207
|
+
|
|
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
|
+
]);
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Plugin Architecture
|
|
230
|
+
|
|
231
|
+
### Entry Points
|
|
232
|
+
|
|
233
|
+
- **Main entry**: `index.ts` (barrel export)
|
|
234
|
+
- **Plugin entry**: `push-notifications.ts` (main plugin logic)
|
|
235
|
+
- **Compiled output**: `dist/index.js`
|
|
236
|
+
|
|
237
|
+
### Plugin Interface
|
|
238
|
+
|
|
239
|
+
All plugins must export a function matching the `Plugin` type from `@opencode-ai/plugin`:
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
import type { Plugin } from "@opencode-ai/plugin";
|
|
243
|
+
|
|
244
|
+
export const MyPlugin: Plugin = async (ctx) => {
|
|
245
|
+
// Initialize plugin
|
|
246
|
+
return {
|
|
247
|
+
event: async ({ event }) => {
|
|
248
|
+
// Handle event
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
export default MyPlugin;
|
|
254
|
+
```
|
|
255
|
+
|
|
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
|
+
```
|
|
268
|
+
|
|
269
|
+
## Dependencies
|
|
270
|
+
|
|
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
|
|
276
|
+
|
|
277
|
+
## License
|
|
278
|
+
|
|
279
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
280
|
+
|
|
281
|
+
## Contributing
|
|
282
|
+
|
|
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
|
|
288
|
+
|
|
289
|
+
## Support
|
|
290
|
+
|
|
291
|
+
For issues and feature requests, please use the GitHub issue tracker.
|
|
@@ -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,
|
|
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,MAgHpC,CAAC;AAYF,eAAe,sBAAsB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
1
|
import * as path from "path";
|
|
3
2
|
import { startTunnel, stopTunnel, displayQRCode as displayQR, getTunnelDetails } from "./src/tunnel";
|
|
4
3
|
import { getNextAvailablePort } from "./src/utils/port";
|
|
@@ -152,12 +151,12 @@ export const PushNotificationPlugin = async (ctx) => {
|
|
|
152
151
|
};
|
|
153
152
|
}
|
|
154
153
|
const serverPort = parseInt(String(ctx.serverUrl?.port || 4096), 10);
|
|
155
|
-
logger.info(`App started. Creating tunnel
|
|
156
|
-
// Test logging
|
|
157
|
-
logger.
|
|
158
|
-
logger.info("Standard operational message - appears
|
|
159
|
-
logger.warn("Non-critical issue warning
|
|
160
|
-
logger.error("Critical failure message
|
|
154
|
+
logger.info(`App started. Creating tunnel on port ${serverPort}`);
|
|
155
|
+
// Test logging levels (dev-only verbose output)
|
|
156
|
+
logger.dev("Detailed development info - only appears in dev mode");
|
|
157
|
+
logger.info("Standard operational message - appears in both dev and prod");
|
|
158
|
+
logger.warn("Non-critical issue warning");
|
|
159
|
+
logger.error("Critical failure message");
|
|
161
160
|
// Get server port from ctx, find next available for push-token
|
|
162
161
|
const pushTokenPort = await getNextAvailablePort(serverPort + 1);
|
|
163
162
|
bunServerPort = pushTokenPort;
|
|
@@ -181,58 +180,8 @@ export const PushNotificationPlugin = async (ctx) => {
|
|
|
181
180
|
errorMsg.includes("connect to api.ngrok.com");
|
|
182
181
|
if (isAuthIssue) {
|
|
183
182
|
logger.info("Ngrok needs authtoken (ERR_NGROK_4018)");
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
input: process.stdin,
|
|
187
|
-
output: process.stdout,
|
|
188
|
-
});
|
|
189
|
-
const newToken = await new Promise((resolve) => {
|
|
190
|
-
rl.question("[?] Enter ngrok authtoken (or Enter to skip): ", async (token) => {
|
|
191
|
-
rl.close();
|
|
192
|
-
resolve(token && token.trim().length > 25 ? token.trim() : null);
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
if (newToken) {
|
|
196
|
-
logger.info("Writing ngrok config...");
|
|
197
|
-
// Basic validation - ngrok authtokens are typically 50+ characters
|
|
198
|
-
if (!newToken || newToken.length < 25) {
|
|
199
|
-
logger.error("Invalid authtoken format");
|
|
200
|
-
ngrokFailed = true;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
try {
|
|
204
|
-
const { writeFileSync, existsSync, mkdirSync } = fs;
|
|
205
|
-
const configPath = `${process.env.HOME}/Library/Application Support/ngrok/ngrok.yml`;
|
|
206
|
-
const configDir = `${process.env.HOME}/Library/Application Support/ngrok`;
|
|
207
|
-
if (!existsSync(configDir)) {
|
|
208
|
-
mkdirSync(configDir, { recursive: true });
|
|
209
|
-
}
|
|
210
|
-
// Escape any special characters that could break YAML
|
|
211
|
-
const escapedToken = newToken.replace(/[:\[\]{}|>&*?!@]/g, '\\$&');
|
|
212
|
-
const v3Config = `version: "3"
|
|
213
|
-
|
|
214
|
-
agent:
|
|
215
|
-
authtoken: ${escapedToken}
|
|
216
|
-
`;
|
|
217
|
-
writeFileSync(configPath, v3Config, { mode: 0o600 });
|
|
218
|
-
logger.info(`Config: ${configPath}`);
|
|
219
|
-
// Retry with new authtoken (pass it directly to ngrok.connect)
|
|
220
|
-
tunnelInfo = await startTunnel({
|
|
221
|
-
port: serverPort,
|
|
222
|
-
provider: "ngrok",
|
|
223
|
-
authToken: newToken
|
|
224
|
-
});
|
|
225
|
-
logger.info("Ngrok tunnel active!");
|
|
226
|
-
}
|
|
227
|
-
catch (retryError) {
|
|
228
|
-
logger.error(`Retry failed: ${retryError.message}`);
|
|
229
|
-
ngrokFailed = true;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
ngrokFailed = true;
|
|
235
|
-
}
|
|
183
|
+
logger.info("Skipping ngrok setup - will use fallback tunnels");
|
|
184
|
+
ngrokFailed = true;
|
|
236
185
|
}
|
|
237
186
|
else {
|
|
238
187
|
ngrokFailed = true;
|
|
@@ -251,7 +200,7 @@ agent:
|
|
|
251
200
|
if (!tunnelInfo) {
|
|
252
201
|
throw new Error("Failed to establish tunnel");
|
|
253
202
|
}
|
|
254
|
-
|
|
203
|
+
displayQR(tunnelInfo);
|
|
255
204
|
return {
|
|
256
205
|
event: async ({ event }) => {
|
|
257
206
|
// Format notification from event
|
|
@@ -277,7 +226,7 @@ agent:
|
|
|
277
226
|
});
|
|
278
227
|
// Send the push notification
|
|
279
228
|
await sendPush(notification);
|
|
280
|
-
logger.
|
|
229
|
+
logger.dev("Push notification sent successfully");
|
|
281
230
|
},
|
|
282
231
|
};
|
|
283
232
|
}
|
|
@@ -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/dist/sdk-logger.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ interface LoggerConfig {
|
|
|
3
3
|
level: LogLevel;
|
|
4
4
|
prefix: string;
|
|
5
5
|
showTimestamp: boolean;
|
|
6
|
+
devMode: boolean;
|
|
6
7
|
}
|
|
7
8
|
export declare function configureLogger(config: Partial<LoggerConfig>): void;
|
|
8
9
|
export declare function createLogger(service: string): {
|
|
9
10
|
debug: (message: string, data?: Record<string, unknown>) => void;
|
|
11
|
+
dev: (message: string, data?: Record<string, unknown>) => void;
|
|
10
12
|
info: (message: string, data?: Record<string, unknown>) => void;
|
|
11
13
|
warn: (message: string, data?: Record<string, unknown>) => void;
|
|
12
14
|
error: (message: string, extra?: Record<string, unknown> | Error | unknown) => void;
|
package/dist/sdk-logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/sdk-logger.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
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;
|
|
1
4
|
const defaultConfig = {
|
|
2
|
-
level: process.env.LOG_LEVEL || "debug",
|
|
5
|
+
level: process.env.LOG_LEVEL || (isDevMode ? "debug" : "info"),
|
|
3
6
|
prefix: "App",
|
|
4
7
|
showTimestamp: true,
|
|
8
|
+
devMode: isDevMode,
|
|
5
9
|
};
|
|
6
10
|
let globalConfig = { ...defaultConfig };
|
|
7
11
|
export function configureLogger(config) {
|
|
@@ -39,6 +43,14 @@ export function createLogger(service) {
|
|
|
39
43
|
if (data)
|
|
40
44
|
console.debug("[DEBUG-DATA]", JSON.stringify(data, null, 2));
|
|
41
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
|
+
},
|
|
42
54
|
info: (message, data) => {
|
|
43
55
|
if (!shouldLog("info"))
|
|
44
56
|
return;
|
|
@@ -58,7 +70,6 @@ export function createLogger(service) {
|
|
|
58
70
|
return;
|
|
59
71
|
console.error(formatMessage("error", message));
|
|
60
72
|
if (extra) {
|
|
61
|
-
// If it's an Error object or has a stack property, treat as error
|
|
62
73
|
if (extra instanceof Error || extra?.stack) {
|
|
63
74
|
console.error("[ERROR]", extra);
|
|
64
75
|
if (extra instanceof Error) {
|
|
@@ -66,11 +77,9 @@ export function createLogger(service) {
|
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
else if (typeof extra === "object" && extra !== null) {
|
|
69
|
-
// Treat as structured extra data
|
|
70
80
|
console.error("[ERROR-EXTRA]", JSON.stringify(extra, null, 2));
|
|
71
81
|
}
|
|
72
82
|
else {
|
|
73
|
-
// Primitive value or unknown type
|
|
74
83
|
console.error("[ERROR-DETAILS]", extra);
|
|
75
84
|
}
|
|
76
85
|
}
|
package/dist/sdk-logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-logger.js","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sdk-logger.js","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,12 @@ import qrcodeTerminal from "qrcode-terminal";
|
|
|
8
8
|
*/
|
|
9
9
|
export function displayQRCode(url) {
|
|
10
10
|
console.log("\n=== OpenCode Push Plugin ===\n");
|
|
11
|
+
console.log(`${url}\n`);
|
|
11
12
|
console.log("Scan to connect mobile device:\n");
|
|
12
13
|
qrcodeTerminal.generate(url, { small: true }, (qrcode) => {
|
|
13
14
|
console.log(qrcode);
|
|
14
15
|
});
|
|
15
|
-
console.log(
|
|
16
|
-
console.log("Or visit the URL above to register your device.\n");
|
|
16
|
+
console.log("\nOr scan the QR code above to register your device.\n");
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* Generate QR code as data URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrcode.js","sourceRoot":"","sources":["../../../src/tunnel/qrcode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAc,EAAE,EAAE;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"qrcode.js","sourceRoot":"","sources":["../../../src/tunnel/qrcode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAc,EAAE,EAAE;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-mobile",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
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",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"@opencode-ai/plugin": "^1.1.12",
|
|
41
41
|
"cloudflared": "^0.1.1",
|
|
42
42
|
"cloudflared-tunnel": "^1.0.3",
|
|
43
|
+
"expo": "^54.0.31",
|
|
43
44
|
"localtunnel": "^2.0.2",
|
|
44
45
|
"ngrok": "^5.0.0-beta.2",
|
|
45
46
|
"qrcode": "^1.5.4",
|
package/push-notifications.ts
CHANGED
|
@@ -182,13 +182,13 @@ export const PushNotificationPlugin: Plugin = async (ctx) => {
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
const serverPort = parseInt(String((ctx as any).serverUrl?.port || 4096), 10);
|
|
185
|
-
logger.info(`App started. Creating tunnel
|
|
185
|
+
logger.info(`App started. Creating tunnel on port ${serverPort}`);
|
|
186
186
|
|
|
187
|
-
// Test logging
|
|
188
|
-
logger.
|
|
189
|
-
logger.info("Standard operational message - appears
|
|
190
|
-
logger.warn("Non-critical issue warning
|
|
191
|
-
logger.error("Critical failure message
|
|
187
|
+
// Test logging levels (dev-only verbose output)
|
|
188
|
+
logger.dev("Detailed development info - only appears in dev mode");
|
|
189
|
+
logger.info("Standard operational message - appears in both dev and prod");
|
|
190
|
+
logger.warn("Non-critical issue warning");
|
|
191
|
+
logger.error("Critical failure message");
|
|
192
192
|
|
|
193
193
|
// Get server port from ctx, find next available for push-token
|
|
194
194
|
const pushTokenPort = await getNextAvailablePort(serverPort + 1);
|
|
@@ -217,62 +217,8 @@ export const PushNotificationPlugin: Plugin = async (ctx) => {
|
|
|
217
217
|
|
|
218
218
|
if (isAuthIssue) {
|
|
219
219
|
logger.info("Ngrok needs authtoken (ERR_NGROK_4018)");
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
const rl = readline.createInterface({
|
|
223
|
-
input: process.stdin,
|
|
224
|
-
output: process.stdout,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
const newToken = await new Promise<string | null>((resolve) => {
|
|
228
|
-
rl.question("[?] Enter ngrok authtoken (or Enter to skip): ", async (token) => {
|
|
229
|
-
rl.close();
|
|
230
|
-
resolve(token && token.trim().length > 25 ? token.trim() : null);
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
if (newToken) {
|
|
235
|
-
logger.info("Writing ngrok config...");
|
|
236
|
-
|
|
237
|
-
// Basic validation - ngrok authtokens are typically 50+ characters
|
|
238
|
-
if (!newToken || newToken.length < 25) {
|
|
239
|
-
logger.error("Invalid authtoken format");
|
|
240
|
-
ngrokFailed = true;
|
|
241
|
-
} else {
|
|
242
|
-
try {
|
|
243
|
-
const { writeFileSync, existsSync, mkdirSync } = fs;
|
|
244
|
-
const configPath = `${process.env.HOME}/Library/Application Support/ngrok/ngrok.yml`;
|
|
245
|
-
const configDir = `${process.env.HOME}/Library/Application Support/ngrok`;
|
|
246
|
-
|
|
247
|
-
if (!existsSync(configDir)) {
|
|
248
|
-
mkdirSync(configDir, { recursive: true });
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// Escape any special characters that could break YAML
|
|
252
|
-
const escapedToken = newToken.replace(/[:\[\]{}|>&*?!@]/g, '\\$&');
|
|
253
|
-
const v3Config = `version: "3"
|
|
254
|
-
|
|
255
|
-
agent:
|
|
256
|
-
authtoken: ${escapedToken}
|
|
257
|
-
`;
|
|
258
|
-
writeFileSync(configPath, v3Config, { mode: 0o600 });
|
|
259
|
-
logger.info(`Config: ${configPath}`);
|
|
260
|
-
|
|
261
|
-
// Retry with new authtoken (pass it directly to ngrok.connect)
|
|
262
|
-
tunnelInfo = await startTunnel({
|
|
263
|
-
port: serverPort,
|
|
264
|
-
provider: "ngrok",
|
|
265
|
-
authToken: newToken
|
|
266
|
-
});
|
|
267
|
-
logger.info("Ngrok tunnel active!");
|
|
268
|
-
} catch (retryError: any) {
|
|
269
|
-
logger.error(`Retry failed: ${retryError.message}`);
|
|
270
|
-
ngrokFailed = true;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
} else {
|
|
274
|
-
ngrokFailed = true;
|
|
275
|
-
}
|
|
220
|
+
logger.info("Skipping ngrok setup - will use fallback tunnels");
|
|
221
|
+
ngrokFailed = true;
|
|
276
222
|
} else {
|
|
277
223
|
ngrokFailed = true;
|
|
278
224
|
}
|
|
@@ -291,8 +237,8 @@ agent:
|
|
|
291
237
|
if (!tunnelInfo) {
|
|
292
238
|
throw new Error("Failed to establish tunnel");
|
|
293
239
|
}
|
|
294
|
-
|
|
295
|
-
|
|
240
|
+
|
|
241
|
+
displayQR(tunnelInfo);
|
|
296
242
|
|
|
297
243
|
return {
|
|
298
244
|
event: async ({ event }) => {
|
|
@@ -324,7 +270,7 @@ agent:
|
|
|
324
270
|
// Send the push notification
|
|
325
271
|
await sendPush(notification);
|
|
326
272
|
|
|
327
|
-
logger.
|
|
273
|
+
logger.dev("Push notification sent successfully");
|
|
328
274
|
},
|
|
329
275
|
};
|
|
330
276
|
} catch (error: any) {
|