agentwake 1.0.1 → 1.0.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +3 -2
- package/README.md +140 -130
- package/README.zh-CN.md +277 -0
- package/dist/cli.js +0 -153
- package/dist/cli.js.map +1 -1
- package/dist/installers/cursor-installer.d.ts +16 -0
- package/dist/installers/cursor-installer.d.ts.map +1 -0
- package/dist/installers/cursor-installer.js +113 -0
- package/dist/installers/cursor-installer.js.map +1 -0
- package/dist/notifiers/desktop-notifier.d.ts +10 -1
- package/dist/notifiers/desktop-notifier.d.ts.map +1 -1
- package/dist/notifiers/desktop-notifier.js +91 -8
- package/dist/notifiers/desktop-notifier.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +86 -5
- package/dist/setup.js.map +1 -1
- package/package.json +1 -2
- package/web/icons/icon-192.png +0 -0
- package/web/icons/icon-512.png +0 -0
- package/web/index.html +1 -1
- package/web/manifest.webmanifest +4 -4
package/.env.example
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
AGENTWAKE_HOST=0.0.0.0
|
|
2
2
|
AGENTWAKE_PORT=3199
|
|
3
|
-
AGENTWAKE_HTTPS_ENABLED=
|
|
3
|
+
AGENTWAKE_HTTPS_ENABLED=0
|
|
4
4
|
AGENTWAKE_HTTPS_CERT_PATH=certs/dev-cert.pem
|
|
5
5
|
AGENTWAKE_HTTPS_KEY_PATH=certs/dev-key.pem
|
|
6
6
|
AGENTWAKE_CURSOR_HOOK_PATH=/hooks/cursor
|
|
7
7
|
AGENTWAKE_CLAUDE_HOOK_PATH=/hooks/claude
|
|
8
8
|
AGENTWAKE_QODER_LOG_PATH=/path/to/qoder.log
|
|
9
9
|
AGENTWAKE_WS_PATH=/ws
|
|
10
|
+
AGENTWAKE_DESKTOP_ENABLED=1
|
|
11
|
+
AGENTWAKE_PWA_ENABLED=0
|
|
10
12
|
AGENTWAKE_DEDUPE_WINDOW_MS=10000
|
|
11
13
|
AGENTWAKE_RATE_LIMIT_WINDOW_MS=10000
|
|
12
14
|
AGENTWAKE_RATE_LIMIT_MAX_EVENTS=40
|
|
13
15
|
AGENTWAKE_ALLOWED_HOOK_IPS=
|
|
14
16
|
AGENTWAKE_VAPID_SUBJECT=mailto:agentwake@example.com
|
|
15
|
-
AGENTWAKE_DESKTOP_MODE=notification
|
|
16
17
|
AGENTWAKE_CURSOR_APPROVAL_MODE=cursor-ask
|
|
17
18
|
AGENTWAKE_CURSOR_ENFORCE_ASK=0
|
|
18
19
|
# AGENTWAKE_VAPID_PUBLIC_KEY=
|
package/README.md
CHANGED
|
@@ -1,123 +1,124 @@
|
|
|
1
1
|
# AgentWake
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
English | [简体中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A cross-editor AI programming notification gateway. Supports Cursor / Claude Code / Qoder. Real-time push notifications to desktop, mobile, and IM groups when AI tasks are completed, abnormally terminated, or waiting for authorization.
|
|
6
|
+
|
|
7
|
+
## Preview
|
|
6
8
|
|
|
7
9
|
<p align="center">
|
|
8
|
-
<img src="docs/screenshots/web.jpg" width="48%" alt="Web
|
|
9
|
-
<img src="docs/screenshots/mobile_notify.jpg" width="48%" alt="
|
|
10
|
+
<img src="docs/screenshots/web.jpg" width="48%" alt="Web Interface" />
|
|
11
|
+
<img src="docs/screenshots/mobile_notify.jpg" width="48%" alt="Mobile Notification" />
|
|
10
12
|
</p>
|
|
11
13
|
|
|
12
14
|
<p align="center">
|
|
13
|
-
<img src="docs/screenshots/cursor.png" width="48%" alt="Cursor
|
|
14
|
-
<img src="docs/screenshots/qoder.png" width="48%" alt="Qoder
|
|
15
|
+
<img src="docs/screenshots/cursor.png" width="48%" alt="Cursor Notification" />
|
|
16
|
+
<img src="docs/screenshots/qoder.png" width="48%" alt="Qoder Notification" />
|
|
15
17
|
</p>
|
|
16
18
|
|
|
17
19
|
---
|
|
18
20
|
|
|
19
|
-
##
|
|
21
|
+
## Core Features
|
|
20
22
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- **Claude Code
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
23
|
+
- **Multi-editor Support** — Cursor Hook, Claude Code Hook, Qoder log listening
|
|
24
|
+
- **Multi-channel Notifications** — Desktop system notifications, PWA web push, DingTalk, Feishu, WeCom
|
|
25
|
+
- **Claude Code Deep Integration** — Supports all Hook events like Stop / Notification / StopFailure / SessionEnd, customizable notification titles for each event
|
|
26
|
+
- **Mobile Real-time Push** — Built-in PWA Web App, HTTPS + WebSocket millisecond push, supports QR code connection
|
|
27
|
+
- **Smart Anti-disturbance** — Event deduplication + rate limiting to prevent message bombing
|
|
28
|
+
- **Interactive Configuration** — `agentwake setup` guides you through all configurations step by step
|
|
27
29
|
|
|
28
30
|
---
|
|
29
31
|
|
|
30
|
-
##
|
|
32
|
+
## Quick Start
|
|
31
33
|
|
|
32
|
-
###
|
|
34
|
+
### Prerequisites
|
|
33
35
|
|
|
34
36
|
- Node.js >= 18
|
|
35
|
-
- [mkcert](https://github.com/FiloSottile/mkcert)
|
|
37
|
+
- [mkcert](https://github.com/FiloSottile/mkcert) (Only required when enabling PWA push)
|
|
36
38
|
|
|
37
|
-
###
|
|
39
|
+
### Installation
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
42
|
npm i -g agentwake
|
|
41
43
|
```
|
|
42
44
|
|
|
43
|
-
###
|
|
45
|
+
### Method 1: Interactive Guide (Recommended)
|
|
44
46
|
|
|
45
47
|
```bash
|
|
46
|
-
agentwake
|
|
47
|
-
agentwake setup # 交互式配置向导
|
|
48
|
+
agentwake setup # Interactive configuration wizard
|
|
48
49
|
```
|
|
49
50
|
|
|
50
|
-
`setup`
|
|
51
|
-
1.
|
|
52
|
-
2.
|
|
53
|
-
3.
|
|
54
|
-
4.
|
|
55
|
-
5.
|
|
56
|
-
6.
|
|
57
|
-
|
|
51
|
+
`setup` will guide you through:
|
|
52
|
+
1. Select AI tools (Claude Code / Cursor / All)
|
|
53
|
+
2. Select event types to listen to
|
|
54
|
+
3. Customize notification titles for each event (optional)
|
|
55
|
+
4. Select notification channels (DingTalk / Feishu / WeCom / PWA / Desktop)
|
|
56
|
+
5. Enter Webhook URLs and secrets
|
|
57
|
+
6. Automatically install editor hooks:
|
|
58
|
+
- Claude Code Hooks to `~/.claude/settings.json`
|
|
59
|
+
- Cursor Hooks to `~/.cursor/hooks.json` (relay script at `~/.agentwake/hooks/cursor-hook.sh`)
|
|
60
|
+
7. If PWA is enabled, generate HTTPS certificates automatically; otherwise default to HTTP
|
|
61
|
+
8. Start the service
|
|
58
62
|
|
|
59
|
-
###
|
|
63
|
+
### Method 2: Manual Configuration
|
|
60
64
|
|
|
61
65
|
```bash
|
|
62
|
-
agentwake
|
|
63
|
-
#
|
|
66
|
+
agentwake setup # Generate ~/.agentwake/.env and complete configuration
|
|
67
|
+
# Edit ~/.agentwake/.env to fill in configurations
|
|
64
68
|
agentwake start
|
|
65
69
|
```
|
|
66
70
|
|
|
67
|
-
|
|
71
|
+
All data is stored in the `~/.agentwake/` directory, no need to create a working directory manually.
|
|
68
72
|
|
|
69
|
-
###
|
|
73
|
+
### Method 3: Start from Source
|
|
70
74
|
|
|
71
75
|
```bash
|
|
72
76
|
git clone https://github.com/tjdxwwj/agentwake.git
|
|
73
77
|
cd agentwake
|
|
74
78
|
npm install
|
|
75
79
|
|
|
76
|
-
#
|
|
77
|
-
npm run init
|
|
78
|
-
|
|
79
|
-
# 交互式配置
|
|
80
|
+
# Interactive setup
|
|
80
81
|
npm run setup
|
|
81
82
|
|
|
82
|
-
#
|
|
83
|
+
# Start development server
|
|
83
84
|
npm run dev
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
|
|
87
|
+
After starting, the service runs at `http://localhost:3199` by default, or `https://localhost:3199` when PWA is enabled.
|
|
87
88
|
|
|
88
89
|
---
|
|
89
90
|
|
|
90
|
-
##
|
|
91
|
+
## Notification Channels
|
|
91
92
|
|
|
92
|
-
|
|
|
93
|
+
| Channel | Configuration | Description |
|
|
93
94
|
|------|---------|------|
|
|
94
|
-
|
|
|
95
|
-
| PWA
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
95
|
+
| Desktop Notification | Built-in, no config needed | macOS / Windows / Linux |
|
|
96
|
+
| PWA Web Push | Built-in, open service URL in mobile browser | Requires HTTPS, supports Service Worker system notifications |
|
|
97
|
+
| DingTalk | `AGENTWAKE_DINGTALK_WEBHOOK` | Group bot Webhook, supports signature verification |
|
|
98
|
+
| Feishu | `AGENTWAKE_FEISHU_WEBHOOK` | Group bot Webhook, supports signature verification |
|
|
99
|
+
| WeCom | `AGENTWAKE_WECOM_WEBHOOK` | Group bot Webhook, security guaranteed by URL Key |
|
|
99
100
|
|
|
100
|
-
###
|
|
101
|
+
### DingTalk Configuration
|
|
101
102
|
|
|
102
|
-
|
|
103
|
+
In DingTalk Group -> Group Settings -> Smart Group Assistant -> Add Bot -> Custom Webhook, copy the Webhook URL.
|
|
103
104
|
|
|
104
105
|
```env
|
|
105
106
|
AGENTWAKE_DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=xxx
|
|
106
|
-
AGENTWAKE_DINGTALK_SECRET=SECxxx #
|
|
107
|
+
AGENTWAKE_DINGTALK_SECRET=SECxxx # Optional, signature secret
|
|
107
108
|
```
|
|
108
109
|
|
|
109
|
-
###
|
|
110
|
+
### Feishu Configuration
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
In Feishu Group -> Settings -> Bots -> Add Custom Bot, copy the Webhook URL.
|
|
112
113
|
|
|
113
114
|
```env
|
|
114
115
|
AGENTWAKE_FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/xxx
|
|
115
|
-
AGENTWAKE_FEISHU_SECRET=xxx #
|
|
116
|
+
AGENTWAKE_FEISHU_SECRET=xxx # Optional, signature verification secret
|
|
116
117
|
```
|
|
117
118
|
|
|
118
|
-
###
|
|
119
|
+
### WeCom Configuration
|
|
119
120
|
|
|
120
|
-
|
|
121
|
+
In WeCom Group -> Group Bots -> Add Group Bot, copy the Webhook URL.
|
|
121
122
|
|
|
122
123
|
```env
|
|
123
124
|
AGENTWAKE_WECOM_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
|
|
@@ -125,122 +126,124 @@ AGENTWAKE_WECOM_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
|
|
|
125
126
|
|
|
126
127
|
---
|
|
127
128
|
|
|
128
|
-
##
|
|
129
|
+
## Editor Integration
|
|
129
130
|
|
|
130
131
|
### Claude Code
|
|
131
132
|
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
133
|
+
Running `agentwake setup` will automatically:
|
|
134
|
+
- Generate Hook relay script to `~/.agentwake/hooks/claude-hook-relay.sh`
|
|
135
|
+
- Write Hook configuration to `~/.claude/settings.json`
|
|
135
136
|
|
|
136
|
-
|
|
137
|
+
Supported Hook events:
|
|
137
138
|
|
|
138
|
-
|
|
|
139
|
+
| Event | Description | Enabled by Default |
|
|
139
140
|
|------|------|---------|
|
|
140
|
-
| Notification |
|
|
141
|
-
| Stop |
|
|
142
|
-
| StopFailure |
|
|
143
|
-
| SessionEnd |
|
|
144
|
-
| SessionStart |
|
|
145
|
-
| PreToolUse |
|
|
146
|
-
| PostToolUse |
|
|
141
|
+
| Notification | Requires user attention | Yes |
|
|
142
|
+
| Stop | Task completed | Yes |
|
|
143
|
+
| StopFailure | Task terminated abnormally | Yes |
|
|
144
|
+
| SessionEnd | Session ended | Yes |
|
|
145
|
+
| SessionStart | Session started | No |
|
|
146
|
+
| PreToolUse | Before tool use | No |
|
|
147
|
+
| PostToolUse | After tool use | No |
|
|
147
148
|
|
|
148
149
|
### Cursor
|
|
149
150
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
Running `agentwake setup` will automatically:
|
|
152
|
+
- Generate Cursor relay script to `~/.agentwake/hooks/cursor-hook.sh`
|
|
153
|
+
- Write `beforeShellExecution` / `afterShellExecution` Hook commands to `~/.cursor/hooks.json`
|
|
154
|
+
|
|
155
|
+
Then keep `agentwake start` running to receive Cursor approval/lifecycle notifications.
|
|
153
156
|
|
|
154
157
|
### Qoder
|
|
155
158
|
|
|
156
|
-
|
|
159
|
+
Automatically discover log directory, or specify manually:
|
|
157
160
|
|
|
158
161
|
```bash
|
|
159
|
-
AGENTWAKE_QODER_LOG_PATH
|
|
162
|
+
AGENTWAKE_QODER_LOG_PATH="/path/to/agent.log" agentwake start
|
|
160
163
|
```
|
|
161
164
|
|
|
162
165
|
---
|
|
163
166
|
|
|
164
|
-
##
|
|
167
|
+
## Custom Notification Titles
|
|
165
168
|
|
|
166
|
-
|
|
169
|
+
Set interactively via `agentwake setup`, or configure directly in `.env`:
|
|
167
170
|
|
|
168
171
|
```env
|
|
169
|
-
AGENTWAKE_CLAUDE_TITLE_STOP=AI
|
|
170
|
-
AGENTWAKE_CLAUDE_TITLE_STOP_FAILURE=AI
|
|
171
|
-
AGENTWAKE_CLAUDE_TITLE_NOTIFICATION=AI
|
|
172
|
-
AGENTWAKE_CLAUDE_TITLE_SESSION_END
|
|
172
|
+
AGENTWAKE_CLAUDE_TITLE_STOP=AI Done
|
|
173
|
+
AGENTWAKE_CLAUDE_TITLE_STOP_FAILURE=AI Failed
|
|
174
|
+
AGENTWAKE_CLAUDE_TITLE_NOTIFICATION=AI Needs Attention
|
|
175
|
+
AGENTWAKE_CLAUDE_TITLE_SESSION_END=Session Ended
|
|
173
176
|
```
|
|
174
177
|
|
|
175
|
-
|
|
178
|
+
Events without configured titles will use default titles.
|
|
176
179
|
|
|
177
180
|
---
|
|
178
181
|
|
|
179
|
-
##
|
|
182
|
+
## Mobile PWA Setup
|
|
180
183
|
|
|
181
|
-
|
|
184
|
+
Your phone needs to trust the local HTTPS certificate to receive Service Worker system notifications.
|
|
182
185
|
|
|
183
|
-
1.
|
|
184
|
-
2.
|
|
185
|
-
- **iOS** —
|
|
186
|
-
- **Android** —
|
|
187
|
-
3.
|
|
186
|
+
1. Get root certificate path: run `mkcert -CAROOT` to find `rootCA.pem`
|
|
187
|
+
2. Install on mobile:
|
|
188
|
+
- **iOS** — Send to phone, install profile, then enable full trust in Settings > General > About > Certificate Trust Settings
|
|
189
|
+
- **Android** — Install CA certificate in security settings (may need to rename extension to `.crt`)
|
|
190
|
+
3. Open `https://<LAN IP>:3199` in mobile browser, confirm HTTPS connection is secure and allow notification permissions
|
|
188
191
|
|
|
189
192
|
---
|
|
190
193
|
|
|
191
|
-
##
|
|
194
|
+
## All Environment Variables
|
|
192
195
|
|
|
193
|
-
|
|
|
196
|
+
| Variable | Default Value | Description |
|
|
194
197
|
|------|--------|------|
|
|
195
|
-
| `AGENTWAKE_HOST` | `0.0.0.0` |
|
|
196
|
-
| `AGENTWAKE_PORT` | `3199` |
|
|
197
|
-
| `AGENTWAKE_HTTPS_ENABLED` | `
|
|
198
|
-
| `AGENTWAKE_HTTPS_CERT_PATH` | `certs/dev-cert.pem` | HTTPS
|
|
199
|
-
| `AGENTWAKE_HTTPS_KEY_PATH` | `certs/dev-key.pem` | HTTPS
|
|
200
|
-
| `AGENTWAKE_DESKTOP_ENABLED` | `1` |
|
|
201
|
-
| `AGENTWAKE_PWA_ENABLED` | `
|
|
202
|
-
| `AGENTWAKE_DINGTALK_ENABLED` | `1` |
|
|
203
|
-
| `AGENTWAKE_DINGTALK_WEBHOOK` | — |
|
|
204
|
-
| `AGENTWAKE_DINGTALK_SECRET` | — |
|
|
205
|
-
| `AGENTWAKE_FEISHU_ENABLED` | `1` |
|
|
206
|
-
| `AGENTWAKE_FEISHU_WEBHOOK` | — |
|
|
207
|
-
| `AGENTWAKE_FEISHU_SECRET` | — |
|
|
208
|
-
| `AGENTWAKE_WECOM_ENABLED` | `1` |
|
|
209
|
-
| `AGENTWAKE_WECOM_WEBHOOK` | — |
|
|
210
|
-
| `AGENTWAKE_CLAUDE_TITLE_*` | — | Claude
|
|
211
|
-
| `AGENTWAKE_DEDUPE_WINDOW_MS` | `10000` |
|
|
212
|
-
| `AGENTWAKE_RATE_LIMIT_WINDOW_MS` | `10000` |
|
|
213
|
-
| `AGENTWAKE_RATE_LIMIT_MAX_EVENTS` | `40` |
|
|
214
|
-
| `AGENTWAKE_WS_PATH` | `/ws` | WebSocket
|
|
215
|
-
| `AGENTWAKE_QODER_LOG_PATH` | — | Qoder
|
|
216
|
-
| `AGENTWAKE_ALLOWED_HOOK_IPS` | — |
|
|
198
|
+
| `AGENTWAKE_HOST` | `0.0.0.0` | Listening address |
|
|
199
|
+
| `AGENTWAKE_PORT` | `3199` | Listening port |
|
|
200
|
+
| `AGENTWAKE_HTTPS_ENABLED` | `0` | Enable HTTPS (auto set to `1` when PWA is enabled) |
|
|
201
|
+
| `AGENTWAKE_HTTPS_CERT_PATH` | `certs/dev-cert.pem` | HTTPS certificate path |
|
|
202
|
+
| `AGENTWAKE_HTTPS_KEY_PATH` | `certs/dev-key.pem` | HTTPS private key path |
|
|
203
|
+
| `AGENTWAKE_DESKTOP_ENABLED` | `1` | Enable desktop system notifications (`0` to disable); on ARM, uses native command fallback instead of `node-notifier` |
|
|
204
|
+
| `AGENTWAKE_PWA_ENABLED` | `0` | Enable PWA/WebSocket push (`0` to disable) |
|
|
205
|
+
| `AGENTWAKE_DINGTALK_ENABLED` | `1` | Enable DingTalk notifications (`0` to disable) |
|
|
206
|
+
| `AGENTWAKE_DINGTALK_WEBHOOK` | — | DingTalk Webhook URL |
|
|
207
|
+
| `AGENTWAKE_DINGTALK_SECRET` | — | DingTalk signature secret |
|
|
208
|
+
| `AGENTWAKE_FEISHU_ENABLED` | `1` | Enable Feishu notifications (`0` to disable) |
|
|
209
|
+
| `AGENTWAKE_FEISHU_WEBHOOK` | — | Feishu Webhook URL |
|
|
210
|
+
| `AGENTWAKE_FEISHU_SECRET` | — | Feishu signature secret |
|
|
211
|
+
| `AGENTWAKE_WECOM_ENABLED` | `1` | Enable WeCom notifications (`0` to disable) |
|
|
212
|
+
| `AGENTWAKE_WECOM_WEBHOOK` | — | WeCom Webhook URL |
|
|
213
|
+
| `AGENTWAKE_CLAUDE_TITLE_*` | — | Claude event custom titles |
|
|
214
|
+
| `AGENTWAKE_DEDUPE_WINDOW_MS` | `10000` | Deduplication window (ms) |
|
|
215
|
+
| `AGENTWAKE_RATE_LIMIT_WINDOW_MS` | `10000` | Rate limit window (ms) |
|
|
216
|
+
| `AGENTWAKE_RATE_LIMIT_MAX_EVENTS` | `40` | Max events within window |
|
|
217
|
+
| `AGENTWAKE_WS_PATH` | `/ws` | WebSocket path |
|
|
218
|
+
| `AGENTWAKE_QODER_LOG_PATH` | — | Qoder log path (auto-discovered) |
|
|
219
|
+
| `AGENTWAKE_ALLOWED_HOOK_IPS` | — | Limit Hook source IPs (comma-separated) |
|
|
217
220
|
|
|
218
221
|
---
|
|
219
222
|
|
|
220
|
-
##
|
|
223
|
+
## Development
|
|
221
224
|
|
|
222
225
|
```bash
|
|
223
226
|
git clone https://github.com/tjdxwwj/agentwake.git
|
|
224
227
|
cd agentwake
|
|
225
228
|
npm install
|
|
226
229
|
cp .env.example .env
|
|
227
|
-
npm run
|
|
228
|
-
npm run dev #
|
|
229
|
-
npm test #
|
|
230
|
+
npm run setup # Interactive setup (optional PWA/HTTPS)
|
|
231
|
+
npm run dev # Start development server
|
|
232
|
+
npm test # Run tests
|
|
230
233
|
```
|
|
231
234
|
|
|
232
|
-
###
|
|
235
|
+
### Directory Structure
|
|
233
236
|
|
|
234
237
|
```
|
|
235
238
|
src/
|
|
236
|
-
adapters/ #
|
|
237
|
-
gateway/ #
|
|
238
|
-
notifiers/ #
|
|
239
|
-
installers/ # Hook
|
|
240
|
-
web/ # PWA
|
|
239
|
+
adapters/ # Input adapters (Cursor / Claude / Qoder)
|
|
240
|
+
gateway/ # Core gateway (Adapter registration, event routing)
|
|
241
|
+
notifiers/ # Notification dispatchers (Desktop / WebSocket / DingTalk / Feishu / WeCom)
|
|
242
|
+
installers/ # Hook auto-installers
|
|
243
|
+
web/ # PWA frontend
|
|
241
244
|
```
|
|
242
245
|
|
|
243
|
-
###
|
|
246
|
+
### Tech Stack
|
|
244
247
|
|
|
245
248
|
Node.js + TypeScript + Express + WebSocket (ws) + Zod
|
|
246
249
|
|
|
@@ -248,20 +251,27 @@ Node.js + TypeScript + Express + WebSocket (ws) + Zod
|
|
|
248
251
|
|
|
249
252
|
## FAQ
|
|
250
253
|
|
|
251
|
-
|
|
252
|
-
1.
|
|
253
|
-
2.
|
|
254
|
-
3.
|
|
255
|
-
4.
|
|
254
|
+
**Cannot receive notifications on mobile?**
|
|
255
|
+
1. Ensure phone and computer are on the same LAN
|
|
256
|
+
2. Ensure browser shows secure HTTPS connection (not "Not Secure")
|
|
257
|
+
3. Ensure notification permissions are granted
|
|
258
|
+
4. Check if Web page WebSocket status is "Connected"
|
|
256
259
|
|
|
257
|
-
|
|
260
|
+
**How to change port?**
|
|
258
261
|
```bash
|
|
259
262
|
AGENTWAKE_PORT=4000 agentwake start
|
|
260
263
|
```
|
|
261
264
|
|
|
262
|
-
|
|
263
|
-
|
|
265
|
+
**Can personal WeChat receive notifications?**
|
|
266
|
+
WeChat does not support Webhook message push API. You can use WeCom group bots as an alternative.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Contributors
|
|
271
|
+
|
|
272
|
+
- [@tjdxwwj](https://github.com/tjdxwwj)
|
|
273
|
+
- [@qiangguanglin](https://github.com/qiangguanglin)
|
|
264
274
|
|
|
265
275
|
---
|
|
266
276
|
|
|
267
|
-
MIT License
|
|
277
|
+
MIT License
|