dodo-mcp 1.3.0 → 1.3.2
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 +19 -1
- package/dist/cli/main.js +1 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/server/aiAdmin.js +19 -23
- package/dist/server/aiAdmin.js.map +1 -1
- package/dist/server/appServer.js +1 -1
- package/dist/server/appServer.js.map +1 -1
- package/dist/server/configSession.js +21 -0
- package/dist/server/configSession.js.map +1 -0
- package/dist/server/configUi/index.html +1 -0
- package/dist/server/configUi/ui/recovery.js +2 -17
- package/dist/server/configUi/ui/recoveryMaintenance.js +61 -0
- package/dist/server/ipcDispatch.js +6 -2
- package/dist/server/ipcDispatch.js.map +1 -1
- package/dist/server/localConfig.js +34 -11
- package/dist/server/localConfig.js.map +1 -1
- package/dist/server/remoteConfig.js +23 -13
- package/dist/server/remoteConfig.js.map +1 -1
- package/dist/services/recovery/contracts.js +1 -0
- package/dist/services/recovery/contracts.js.map +1 -1
- package/dist/services/recovery/maintenance.js +220 -0
- package/dist/services/recovery/maintenance.js.map +1 -0
- package/dist/services/recovery/recoveryService.js +18 -5
- package/dist/services/recovery/recoveryService.js.map +1 -1
- package/dist/services/recovery/storage.js +46 -2
- package/dist/services/recovery/storage.js.map +1 -1
- package/dist/store/db.js +6 -0
- package/dist/store/db.js.map +1 -1
- package/dist/tools/recoveryTools.js +24 -3
- package/dist/tools/recoveryTools.js.map +1 -1
- package/dist/tools/surface.js +2 -2
- package/dist/tools/surface.js.map +1 -1
- package/docs/ARCHITECTURE.md +28 -2
- package/docs/COMPATIBILITY.md +9 -0
- package/docs/MANUAL_ACCEPTANCE.md +41 -0
- package/docs/MCP_CONNECTIONS.md +238 -0
- package/docs/RECOVERY.md +73 -8
- package/docs/RELEASE_1.3.1.md +49 -0
- package/docs/RELEASE_1.3.2.md +50 -0
- package/docs/RELEASE_NOTES.md +18 -0
- package/docs/SECURITY.md +28 -0
- package/docs/TEST_REPORT.md +40 -0
- package/docs/TUNNEL.md +6 -0
- package/docs/WEB_CLIENTS.md +3 -0
- package/docs/adr/047-temporary-remote-config.md +11 -0
- package/package.json +4 -1
- package/schemas/tools.compact.json +16 -8
- package/schemas/tools.hybrid.json +16 -8
- package/schemas/tools.json +682 -2
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# เชื่อม DODO MCP กับ AI platforms
|
|
2
|
+
|
|
3
|
+
คู่มือสำหรับเจ้าของ DODO ตรวจเอกสารของ client เมื่อ 25 กันยายน 2026
|
|
4
|
+
ชื่อเมนูอาจต่างตามรุ่นและแผนบัญชี คู่มือนี้ไม่ใช่หลักฐานว่าทดสอบกับบัญชีจริงครบทุกค่าย
|
|
5
|
+
|
|
6
|
+
## เลือกวิธีเชื่อม
|
|
7
|
+
|
|
8
|
+
| Client | วิธีในคู่มือนี้ | สิ่งที่ต้องเตรียม |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| ChatGPT web | Public HTTPS + OAuth | DODO/Tunnel ที่เปิดอยู่ และ OAuth client ของ ChatGPT |
|
|
11
|
+
| Claude web / Desktop Custom Connector | Public HTTPS + OAuth | OAuth client ของ Claude แยกต่างหาก |
|
|
12
|
+
| Claude Code | Local STDIO | DODO CLI และ absolute project path |
|
|
13
|
+
| Codex CLI | Local STDIO | DODO CLI และ absolute project path |
|
|
14
|
+
| Gemini CLI | Local STDIO | DODO CLI และ absolute project path |
|
|
15
|
+
| Cursor | Local STDIO | MCP JSON และ absolute project path |
|
|
16
|
+
| VS Code / GitHub Copilot | Local STDIO | MCP JSON และ absolute project path |
|
|
17
|
+
|
|
18
|
+
Gemini CLI ไม่ใช่ Gemini web; Claude Code ไม่ใช่ Claude Desktop Custom Connector
|
|
19
|
+
และการเพิ่ม API provider ในหน้า DODO ก็เป็นคนละเรื่องกับการให้ AI ภายนอกเรียก MCP
|
|
20
|
+
|
|
21
|
+
## URL แต่ละตัวใช้ทำอะไร
|
|
22
|
+
|
|
23
|
+
| ค่า | ตัวอย่าง | ใช้ทำอะไร |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Public origin | `https://dodo.example.com` | ตั้งโดเมนใน DODO/Tunnel |
|
|
26
|
+
| Public MCP URL | `https://dodo.example.com/mcp` | ใส่ช่อง MCP Server URL ใน AI |
|
|
27
|
+
| Remote Config | `https://dodo.example.com/config` | เจ้าของตั้งค่า หลังสั่ง `dodo --web` และจับคู่ |
|
|
28
|
+
| Local Config | `http://127.0.0.1:21731/` | เจ้าของตั้งค่าบนเครื่อง ผ่าน private link ใน Terminal |
|
|
29
|
+
| OAuth callback | URL ของ AI client | ลงทะเบียนด้วย `dodo auth add-client` เท่านั้น |
|
|
30
|
+
|
|
31
|
+
แทนโดเมนตัวอย่างด้วยโดเมนจริง ห้ามนำ `/config`, private link หรือ OAuth callback
|
|
32
|
+
ไปกรอกเป็น MCP Server URL ห้ามวาง Markdown `[ชื่อ](URL)` ในช่อง URI
|
|
33
|
+
|
|
34
|
+
## เตรียม DODO สำหรับ web clients ครั้งเดียว
|
|
35
|
+
|
|
36
|
+
1. ติดตั้ง `npm install -g dodo-mcp@latest` แล้วตรวจ `dodo --version`
|
|
37
|
+
2. ตั้ง **Cloudflare Local** หากดูแล cloudflared เอง หรือ **DODO Tunnel** หากให้ DODO
|
|
38
|
+
ดูแล โดยใช้ public origin จริง ดู [คู่มือ Tunnel](TUNNEL.md)
|
|
39
|
+
3. Tunnel ต้อง route **ทุก path** ของโดเมนไป `http://127.0.0.1:21730`
|
|
40
|
+
เพื่อให้ OAuth discovery/authorize/token เข้าถึงได้ด้วย ไม่เปิด 21731 หรือ 21732
|
|
41
|
+
4. รัน `dodo start` และเปิดค้างไว้ ถ้ารันอยู่แล้วไม่ต้องเปิดซ้ำ
|
|
42
|
+
5. เพิ่มโปรเจกต์ใน Config พร้อมระดับอ่าน/แก้/รันที่ต้องการ Managed mode ต้องกำหนด
|
|
43
|
+
client ACL ด้วย ส่วน personal mode ใช้ OAuth scopes ร่วมกับ project access level
|
|
44
|
+
|
|
45
|
+
รันคำสั่ง auth บนเครื่องและ OS user เดียวกับ server ใช้ `DODO_CONFIG_DIR` เดียวกัน
|
|
46
|
+
ทำจากโฟลเดอร์ใดก็ได้ อย่าสลับ Admin/User บน Windows แล้วคาดว่าจะเป็น installation เดียวกัน
|
|
47
|
+
|
|
48
|
+
## ChatGPT web
|
|
49
|
+
|
|
50
|
+
1. เปิด Developer mode ในบัญชี/องค์กรที่มีสิทธิ์ แล้วเปิดหน้าจัดการ MCP app/plugin
|
|
51
|
+
(ปัจจุบันที่ `https://chatgpt.com/plugins`; บางบัญชียังใช้ Settings → Apps)
|
|
52
|
+
2. ตั้งชื่อ `DODO`, URL เป็น Public MCP URL, Authentication เป็น **OAuth**
|
|
53
|
+
3. สร้าง client บนเครื่อง DODO ด้วยคำสั่งบรรทัดเดียว:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
dodo auth add-client --name "ChatGPT" --redirect-uri "https://chatgpt.com/connector_platform_oauth_redirect"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
4. กรอก `client_id` และ `client_secret` ที่ได้ในช่อง OAuth Client ID/Secret
|
|
60
|
+
ค่านี้แสดงครั้งเดียว ไม่ใช่ API key ของ OpenAI และไม่ต้องส่งเข้าแชต
|
|
61
|
+
5. กด Connect/Scan Tools แล้วทำ [ขั้นตอนอนุมัติ](#อนุมัติการเชื่อมต่อจาก-terminal)
|
|
62
|
+
6. เปิดแชตใหม่ เลือก DODO แล้วทดสอบ overview ก่อนแก้ไฟล์
|
|
63
|
+
|
|
64
|
+
หากหน้า MCP management แสดง callback เฉพาะ connection ให้ลงทะเบียน **ค่าที่แสดงจริง**
|
|
65
|
+
แทนคำสั่งตัวอย่าง ห้ามใช้ wildcard หรือเดา callback ID
|
|
66
|
+
ดู [OAuth callback และ static client](https://developers.openai.com/plugins/build/auth)
|
|
67
|
+
กับ [ขั้นตอนเชื่อม ChatGPT](https://developers.openai.com/plugins/deploy/connect-chatgpt)
|
|
68
|
+
|
|
69
|
+
## Claude web / Claude Desktop Custom Connector
|
|
70
|
+
|
|
71
|
+
สร้าง client แยกจาก ChatGPT:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
dodo auth add-client --name "Claude" --redirect-uri "https://claude.ai/api/mcp/auth_callback"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
ใน Claude ไปที่ **Customize → Connectors → + → Add custom connector**
|
|
78
|
+
(Team/Enterprise อาจต้องให้ Owner เพิ่ม connector ขององค์กรก่อน)
|
|
79
|
+
|
|
80
|
+
| ช่อง | ค่า |
|
|
81
|
+
|---|---|
|
|
82
|
+
| Name | `DODO` |
|
|
83
|
+
| Remote MCP server URL | `https://dodo.example.com/mcp` โดยแทนโดเมนจริง |
|
|
84
|
+
| Authentication | **Sign in now** |
|
|
85
|
+
| OAuth client | **Use your own OAuth client** |
|
|
86
|
+
| OAuth Client ID | `client_id` จากคำสั่ง Claude ด้านบน |
|
|
87
|
+
| OAuth Client Secret | `client_secret` คู่กัน |
|
|
88
|
+
| Request headers | เว้นว่าง |
|
|
89
|
+
|
|
90
|
+
DODO ใช้ static registration จึงไม่เลือก Register automatically (DCR) หรือ
|
|
91
|
+
Use Claude's published identity (CIMD) กด Add → Connect แล้วอนุมัติใน Terminal
|
|
92
|
+
เปิดแชตและเลือก **+ → Connectors → DODO**
|
|
93
|
+
|
|
94
|
+
ถ้า Desktop เปิด `claude.ai/login?returnTo=...` แล้วหน้าว่าง ให้ลองเข้า
|
|
95
|
+
`https://claude.ai/` ในเบราว์เซอร์ปกติ ล็อกอินบัญชี/องค์กรเดียวกัน และกด Connect
|
|
96
|
+
จากหน้าเว็บ ไม่ต้องสร้าง credentials ใหม่ ตรวจ browser extensions/cookies ถ้าแม้หน้าแรกก็ว่าง
|
|
97
|
+
ยังไม่ควรสรุปว่า Tunnel เสียจาก URL หน้า login เพียงอย่างเดียว
|
|
98
|
+
|
|
99
|
+
แหล่งอ้างอิง: [Claude connector setup](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp),
|
|
100
|
+
[callback และ static credentials](https://claude.com/docs/connectors/building)
|
|
101
|
+
|
|
102
|
+
## อนุมัติการเชื่อมต่อจาก Terminal
|
|
103
|
+
|
|
104
|
+
เมื่อ browser เปิดหน้ารออนุมัติของ DODO ให้เปิด Terminal อีกหน้าต่างบนเครื่อง DODO:
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
dodo auth pending
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
ตรวจชื่อ client, callback, scopes และรหัสยืนยันว่าตรงกับการเชื่อมต่อที่เพิ่งเริ่ม แล้วรัน:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
dodo auth approve REQUEST_ID
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
แทน `REQUEST_ID` ด้วย ID จริง ไม่ใส่ `< >` หรือ `--` นำหน้า
|
|
117
|
+
Browser จะกลับไป AI client เมื่อสำเร็จ ไม่มี pending หมายถึงยังไม่มีคำขอรออนุมัติ
|
|
118
|
+
หากขึ้น no running server ให้ตรวจเครื่อง, OS user, state directory และ server ที่เปิดอยู่
|
|
119
|
+
เก็บ Client Secret ในช่องตั้งค่า client เท่านั้น ไม่ใส่ URL/headers/log/แชต
|
|
120
|
+
|
|
121
|
+
## Claude Code และ Codex CLI ในเครื่อง
|
|
122
|
+
|
|
123
|
+
แทน `/absolute/path/to/project` ด้วยโฟลเดอร์จริง และติดตั้ง DODO ให้เรียกจาก PATH ได้
|
|
124
|
+
ให้ AI client เป็นผู้เปิด STDIO subprocess; ไม่ต้องเปิด `dodo start` สำหรับ subprocess นี้
|
|
125
|
+
อย่าเปิดหลาย DODO processes ครอบ root เดียวกัน หาก root ถูกใช้อยู่ให้เลือก HTTP connection
|
|
126
|
+
หรือปิด process เดิมด้วยเจ้าของก่อน
|
|
127
|
+
|
|
128
|
+
Claude Code:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
claude mcp add --transport stdio --scope user dodo -- dodo stdio --root "/absolute/path/to/project"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
ตรวจด้วย `claude mcp list` และ `/mcp` ใน Claude Code
|
|
135
|
+
อ้างอิง [Claude Code MCP](https://code.claude.com/docs/en/mcp)
|
|
136
|
+
|
|
137
|
+
Codex CLI:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
codex mcp add dodo -- dodo stdio --root "/absolute/path/to/project"
|
|
141
|
+
codex mcp list
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
อ้างอิง [Codex MCP](https://developers.openai.com/codex/mcp/)
|
|
145
|
+
|
|
146
|
+
## Gemini CLI และ Cursor
|
|
147
|
+
|
|
148
|
+
Gemini CLI: เพิ่ม entry นี้ใน **user** `~/.gemini/settings.json` โดยรวมกับค่าเดิม
|
|
149
|
+
อย่าเขียนทับทั้งไฟล์ ส่วน Cursor ใช้ **user** `~/.cursor/mcp.json` รูปแบบเดียวกัน:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"mcpServers": {
|
|
154
|
+
"dodo": {
|
|
155
|
+
"command": "dodo",
|
|
156
|
+
"args": ["stdio", "--root", "/absolute/path/to/project"]
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
เปิด client ใหม่ ตรวจ Gemini ด้วย `gemini mcp list` หรือ `/mcp`
|
|
163
|
+
และตรวจ Cursor ที่หน้าจัดการ MCP ของ Settings
|
|
164
|
+
อ้างอิง [Gemini CLI MCP](https://geminicli.com/docs/tools/mcp-server/)
|
|
165
|
+
และ [Cursor MCP](https://cursor.com/docs/mcp)
|
|
166
|
+
|
|
167
|
+
## VS Code / GitHub Copilot
|
|
168
|
+
|
|
169
|
+
เปิด Command Palette → **MCP: Open User Configuration** แล้วรวม entry นี้กับ config เดิม:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"servers": {
|
|
174
|
+
"dodo": {
|
|
175
|
+
"type": "stdio",
|
|
176
|
+
"command": "dodo",
|
|
177
|
+
"args": ["stdio", "--root", "/absolute/path/to/project"]
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
ใช้ **MCP: List Servers** เริ่ม server แล้วเลือก tools ใน chat
|
|
184
|
+
อ้างอิง [VS Code MCP](https://code.visualstudio.com/docs/agent-customization/mcp-servers)
|
|
185
|
+
|
|
186
|
+
### Windows และ GUI ที่หา dodo ไม่พบ
|
|
187
|
+
|
|
188
|
+
ใช้ path รูปแบบ `C:/Users/YourName/Projects/demo` ใน JSON เพื่อลดปัญหา backslash
|
|
189
|
+
ถ้า client เปิด npm command shim ไม่ได้ ให้ใช้ Node กับ entry point จริง:
|
|
190
|
+
|
|
191
|
+
1. รัน `where.exe node` และ `npm root -g`
|
|
192
|
+
2. ตั้ง `command` เป็น absolute path ของ `node.exe`
|
|
193
|
+
3. ตั้ง `args` เป็น `["GLOBAL_NPM_ROOT/dodo-mcp/dist/cli/main.js", "stdio", "--root", "C:/path/to/project"]`
|
|
194
|
+
โดยแทน `GLOBAL_NPM_ROOT` ด้วยผลจริง
|
|
195
|
+
|
|
196
|
+
macOS/Linux GUI ที่ PATH ต่างจาก Terminal ใช้รูปแบบ Node + absolute entry point ได้เช่นกัน
|
|
197
|
+
Local STDIO ใช้ OS-owner principal; trust/approval, sandbox และ file guards ยังมีผล
|
|
198
|
+
ไม่ได้เปิด anonymous HTTP หรือข้าม OAuth ของ public MCP
|
|
199
|
+
|
|
200
|
+
## AI platform อื่น
|
|
201
|
+
|
|
202
|
+
ใช้ remote MCP ได้เมื่อ client รองรับ Streamable HTTP, OAuth code + PKCE S256
|
|
203
|
+
และให้กรอก static Client ID/Secret ได้ คัดลอก callback **จาก client นั้นจริง** แล้วลงทะเบียน:
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
dodo auth add-client --name "My AI client" --redirect-uri "EXACT_CALLBACK_FROM_CLIENT"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
ตัวอย่าง callback placeholder ไม่ใช่ URL ใช้งานจริง หาก client บังคับ DCR/CIMD
|
|
210
|
+
โดยไม่มี static credentials ให้ตรวจ compatibility ก่อน อย่าแก้ด้วย No sign-in
|
|
211
|
+
หรือใช้ token ของหน้า Config เป็น MCP credential
|
|
212
|
+
|
|
213
|
+
## ทดสอบและแก้ปัญหา
|
|
214
|
+
|
|
215
|
+
เริ่มด้วย prompt:
|
|
216
|
+
|
|
217
|
+
> ใช้ DODO เรียก project_overview แล้วบอกโปรเจกต์ที่ฉันเข้าถึงได้ ยังไม่ต้องแก้ไฟล์
|
|
218
|
+
|
|
219
|
+
จากนั้นเลือกโปรเจกต์ fixture และทดสอบ create → read → edit → read-back → delete
|
|
220
|
+
ใช้ `dodo_discover` ใน Compact เมื่อหาความสามารถไม่เจอ
|
|
221
|
+
|
|
222
|
+
| อาการ | ตรวจอะไร |
|
|
223
|
+
|---|---|
|
|
224
|
+
| invalid_client | ใช้ ID/Secret คู่เดียวกัน และ client ยังไม่ถูกลบ |
|
|
225
|
+
| redirect_uri ไม่ตรง | คัดลอก exact callback ของ client ไม่ใช้ callback ข้ามค่าย |
|
|
226
|
+
| ไม่เห็น tools ใหม่ | Refresh/rescan; ถ้ายัง cache เดิมให้สร้าง connection ใหม่ตาม client |
|
|
227
|
+
| WORKSPACE_ACCESS_REQUIRED | เพิ่มโปรเจกต์และตรวจ access level/scopes; managed mode ตรวจ ACL |
|
|
228
|
+
| STALE_WORKSPACE | เรียก project_overview ใหม่หลัง server restart/เปลี่ยน workspace |
|
|
229
|
+
| Remote Config แจ้ง 8 ชั่วโมง | อัปเป็น 1.3.1+, restart เพื่อโหลดแพตช์หนึ่งครั้ง แล้วใช้ dodo --web |
|
|
230
|
+
| `/config` เป็น 404 | lease ปิด/หมดอายุ ให้เจ้าของรัน dodo --web และจับคู่ใหม่ |
|
|
231
|
+
|
|
232
|
+
ตั้งแต่ 1.3.1 `dodo --web` สร้าง session ของโดเมนแยกจาก Local Config 8 ชั่วโมง
|
|
233
|
+
เปิดใหม่ได้แม้ process ทำงานหลายวัน แต่ละครั้งอยู่ได้ 1 ชั่วโมงและยังต้อง pairing
|
|
234
|
+
การเปิด/ปิด Config ไม่ทำให้ MCP/OAuth/Tunnel หยุด ไม่ต้องต่ออายุหน้าเว็บเพื่อให้ AI ทำงานต่อ
|
|
235
|
+
|
|
236
|
+
**สถานะตรวจรับ:** server HTTP/OAuth, STDIO และ Config มี automated fixture tests
|
|
237
|
+
ส่วนการล็อกอินและเรียก tools จากบัญชีจริงในแต่ละ AI platform เป็น `MANUAL_NOT_RUN`
|
|
238
|
+
สำหรับแพตช์นี้ ไม่ถือว่ามีคู่มือแล้วเท่ากับผ่าน live integration
|
package/docs/RECOVERY.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Recovery: source, deployments and private configuration
|
|
2
2
|
|
|
3
|
-
This documents the 1.3.
|
|
4
|
-
results are recorded separately in
|
|
3
|
+
This documents Recovery including the 1.3.2 storage-maintenance additions.
|
|
4
|
+
Publication and platform results are recorded separately in
|
|
5
|
+
[release notes](RELEASE_NOTES.md) and
|
|
5
6
|
[the test report](TEST_REPORT.md). Source backup is default-on for registered
|
|
6
7
|
projects; deployment/database/config adapters require separate owner opt-in.
|
|
7
8
|
|
|
@@ -111,7 +112,7 @@ MCP full operations: `checkpoint_list`, `checkpoint_inspect`, `checkpoint_create
|
|
|
111
112
|
`recovery_session_list`, `recovery_session_inspect`, `recovery_session_begin`,
|
|
112
113
|
`recovery_session_end`, `restore_preview`, `restore_apply`, `restore_status`.
|
|
113
114
|
Use the existing `dodo_read` and `dodo_write` compact gateways and discover schemas.
|
|
114
|
-
Full catalog:
|
|
115
|
+
Full catalog: 162 capabilities (158 with sub-agents hidden); Compact remains 20.
|
|
115
116
|
Gateway arguments cannot override top-level workspace/project/recovery context.
|
|
116
117
|
|
|
117
118
|
For several edits belonging to one task, call `recovery_session_begin`, then pass
|
|
@@ -200,10 +201,74 @@ refused rather than overwritten. Pins and active names both protect retention.
|
|
|
200
201
|
Unpinning a named point alone will not delete it. Old/new name changes appear in
|
|
201
202
|
owner history. Naming never rewrites source or the snapshot manifest.
|
|
202
203
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
Git copies and
|
|
206
|
-
|
|
204
|
+
The **จัดการพื้นที่ Recovery** panel provides reviewed manual cleanup, retention
|
|
205
|
+
cleanup and retry of pending physical cleanup. It reports unique source object
|
|
206
|
+
bytes separately from Git copies and the logical checkpoint total. Checkpoints
|
|
207
|
+
with unchanged content share objects; adding their logical sizes does not measure
|
|
208
|
+
actual disk use. Unchanged objects are freshly verified and reused without writing
|
|
209
|
+
another staging copy. Git copies are separate and can consume additional space.
|
|
210
|
+
|
|
211
|
+
To manage a project such as `my-project`:
|
|
212
|
+
|
|
213
|
+
1. Open the private Config link, select the registered project, then Recovery.
|
|
214
|
+
2. Inspect actual source/Git usage and project/installation quotas. A quota refusal
|
|
215
|
+
can also mean the installation limit or minimum free disk space was reached.
|
|
216
|
+
3. Select old checkpoints, click **ตรวจแผนลบสำเนาที่เลือก**, review the exact IDs
|
|
217
|
+
and closed sessions, then confirm. This permanently removes those backups and
|
|
218
|
+
their closed session history, never the current project files.
|
|
219
|
+
4. For future backups, expand **โควตา ระยะเก็บ และโฟลเดอร์ที่ไม่สำรอง**. Increase
|
|
220
|
+
the project quota or put `models/` on its own exclusion line, review and confirm.
|
|
221
|
+
Exclusions are literal relative file/directory prefixes, not glob patterns.
|
|
222
|
+
5. Create a checkpoint and inspect its coverage. Old backups still contain the
|
|
223
|
+
previously included files until separately deleted. Changing settings alone
|
|
224
|
+
does not certify readiness, acknowledge drift or repair a corrupt backup.
|
|
225
|
+
|
|
226
|
+
Excluded files are not restorable from future checkpoints. When an operation
|
|
227
|
+
requires a before-image of an excluded file, DODO refuses it rather than silently
|
|
228
|
+
editing without protection. Shell commands can still change excluded data; a
|
|
229
|
+
source checkpoint is not a full machine/data backup or an OS sandbox.
|
|
230
|
+
|
|
231
|
+
Current/latest source checkpoints, drift baselines, pins, names, active captures,
|
|
232
|
+
open sessions, unfinished work, live restore plans, deployment provenance and
|
|
233
|
+
DB compatibility bindings remain protected. Deleting a closed session requires
|
|
234
|
+
selecting all its checkpoints. Retention cleanup remains subject to the same
|
|
235
|
+
protections. Lowering retention can remove older eligible history at a later
|
|
236
|
+
capture; it is not a guarantee to keep exactly N points.
|
|
237
|
+
|
|
238
|
+
Cleanup previews expire after 15 minutes and are bound to project, epoch, caller,
|
|
239
|
+
policy and the reviewed selection. Changes to protection/history require a fresh
|
|
240
|
+
preview. File deletion failures retain durable cleanup tasks. **เก็บกวาดไฟล์ค้าง**
|
|
241
|
+
retries those tasks explicitly; shared objects are never removed while referenced
|
|
242
|
+
or while an installation capture is active. Results separate logical deletion,
|
|
243
|
+
source bytes freed, Git bytes freed and pending files. Accounting excludes filesystem
|
|
244
|
+
overhead and temporary staging; it is not a claim about total disk free space.
|
|
245
|
+
|
|
246
|
+
### AI-assisted storage maintenance
|
|
247
|
+
|
|
248
|
+
Four Full operations are also available through existing Compact gateways:
|
|
249
|
+
|
|
250
|
+
| Operation | Gateway | Scope / authority |
|
|
251
|
+
| --- | --- | --- |
|
|
252
|
+
| `recovery_storage_status` | `dodo_read` | Read; caller-owned checkpoint metadata, quota/storage totals, or a plan receipt |
|
|
253
|
+
| `recovery_cleanup_preview` | `dodo_write` | Write; selected IDs, retention, or pending-file cleanup; no deletion |
|
|
254
|
+
| `recovery_settings_preview` | `dodo_write` | Write; project quota, retention and exclusions only; no policy change |
|
|
255
|
+
| `recovery_maintenance_apply` | `dodo_write` | Write plus exact owner approval, including in trusted mode |
|
|
256
|
+
|
|
257
|
+
Use `project_overview` and `dodo_discover` to obtain current context and schemas.
|
|
258
|
+
For example, `dodo_write` with `operation: "recovery_settings_preview"` and
|
|
259
|
+
`args: {"changes":{"excludePaths":["models/"],"projectBytes":8589934592}}` proposes
|
|
260
|
+
an 8 GiB quota and exclusion. It grants no permission. Review the returned plan,
|
|
261
|
+
then apply with its exact `planId`, `planHash` and an `idempotencyKey` after owner
|
|
262
|
+
approval. Keep project/workspace context at the gateway top level.
|
|
263
|
+
|
|
264
|
+
An MCP caller can delete only its own checkpoint history; the authenticated owner
|
|
265
|
+
web UI can manage all checkpoints in the selected project. AI cannot unpin points,
|
|
266
|
+
remove names, disable Recovery, change storage destinations, approve its own action,
|
|
267
|
+
relax secret/path guards or accept corruption as a new baseline. Approved plan
|
|
268
|
+
retries return a durable receipt. Query `recovery_storage_status` with `planId`
|
|
269
|
+
after an uncertain response; never silently repeat destructive operations.
|
|
270
|
+
A crash after logical deletion may leave physical cleanup pending; review pending
|
|
271
|
+
cleanup explicitly. Recovery maintenance never reruns a failed source command.
|
|
207
272
|
|
|
208
273
|
Owner CLI, in the registered project's directory:
|
|
209
274
|
|
|
@@ -218,7 +283,7 @@ dodo recovery mark stable SNAPSHOT_ID --revision REVIEWED_REVISION --workspace W
|
|
|
218
283
|
|
|
219
284
|
After browser reconnect, refresh evidence and query the existing restore receipt.
|
|
220
285
|
Do not repeat uncertain effects. These are private owner controls; MCP/public
|
|
221
|
-
HTTP has no mark/pin/
|
|
286
|
+
HTTP has no public owner mark/pin/admin endpoint; reviewed MCP maintenance remains caller-bound and owner-approved. Without an owner-registered deployment target its state is **NOT_CONFIGURED**;
|
|
222
287
|
database row rollback remains **NOT_SUPPORTED**. Optional adapters are described below. Windows/Android and live
|
|
223
288
|
production recovery require their own acceptance; results from macOS/Linux
|
|
224
289
|
fixtures are not substitutes.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# DODO MCP 1.3.1
|
|
2
|
+
|
|
3
|
+
## Remote Config opens independently of the local link
|
|
4
|
+
|
|
5
|
+
Previously, a DODO process running for over eight hours could accept a new
|
|
6
|
+
`dodo --web` pairing but return the Local Config expiry error when loading data.
|
|
7
|
+
The domain dashboard now uses its own revocable owner session, valid for one hour
|
|
8
|
+
from the CLI opening. Reopen it at any process age without restarting MCP.
|
|
9
|
+
|
|
10
|
+
- Local Config's eight-hour link stays separate and is not renewed by remote use.
|
|
11
|
+
- New pairing revokes the previous remote session. Close/expiry also revokes its
|
|
12
|
+
internal loopback capability, including owner requests still waiting for execution.
|
|
13
|
+
- AI/Projects owner principals and event streams use the request's actual session.
|
|
14
|
+
- One-time pairing, Secure/HttpOnly/SameSite cookies, Host/Origin checks, rate limits,
|
|
15
|
+
workspace/epoch validation, MCP OAuth and all tool permissions remain enforced.
|
|
16
|
+
- The CLI and pairing page explain how to reopen without a server restart.
|
|
17
|
+
|
|
18
|
+
## Connection guides
|
|
19
|
+
|
|
20
|
+
[MCP connections](MCP_CONNECTIONS.md) covers ChatGPT, Claude Custom Connectors,
|
|
21
|
+
Claude Code, Codex CLI, Gemini CLI, Cursor and VS Code. It distinguishes `/mcp`,
|
|
22
|
+
`/config`, OAuth callbacks, static credentials, local STDIO and AI provider keys.
|
|
23
|
+
Claude's form has explicit Sign in now / Use your own OAuth client instructions.
|
|
24
|
+
The guide ships in the npm package and is linked near the top of the README.
|
|
25
|
+
|
|
26
|
+
## Upgrade
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
npm install -g dodo-mcp@1.3.1
|
|
30
|
+
dodo --version
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Stop/start the existing foreground DODO process once to load the updated code.
|
|
34
|
+
After that, opening Remote Config needs only `dodo --web`, even after eight hours.
|
|
35
|
+
Enter the new terminal pairing code at the printed domain `/config` URL.
|
|
36
|
+
This patch does not require deleting OAuth clients or copying private state.
|
|
37
|
+
|
|
38
|
+
## Verification scope
|
|
39
|
+
|
|
40
|
+
Regression tests cover a nine-hour-old process, local expiry, remote renewal,
|
|
41
|
+
settings writes, AI project access, cookie/code replay rejection, in-flight owner
|
|
42
|
+
revocation and real Chromium desktop/mobile dashboards. Full automated gates and
|
|
43
|
+
fresh-package results are recorded in the release evidence; native platforms must
|
|
44
|
+
pass on this source revision before publication.
|
|
45
|
+
|
|
46
|
+
External AI account logins, real Cloudflare routes and a physical eight-hour wait
|
|
47
|
+
are `MANUAL_NOT_RUN` for this patch. The automated clock/HTTP/browser fixtures do
|
|
48
|
+
not claim to prove those live integrations. This patch does not change Windows
|
|
49
|
+
dependency installers or repair private state created by another OS account.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# DODO MCP 1.3.2
|
|
2
|
+
|
|
3
|
+
## Recovery storage management
|
|
4
|
+
|
|
5
|
+
The project Recovery dashboard can now preview and confirm deletion of old
|
|
6
|
+
checkpoints, retry pending file cleanup, change project quotas/retention, and exclude
|
|
7
|
+
relative paths such as `models/` from future backups. It distinguishes logical
|
|
8
|
+
checkpoint totals from unique source objects and separate Git copies. Verified
|
|
9
|
+
unchanged objects are reused without another staging copy.
|
|
10
|
+
|
|
11
|
+
Protected/current baselines, pinned/named points and referenced recovery history
|
|
12
|
+
remain protected. Cleanup never edits project source. Unlink failures remain pending,
|
|
13
|
+
and live capture reservations prevent deletion of objects another project is using.
|
|
14
|
+
Changing exclusions does not delete older backups or acknowledge source drift.
|
|
15
|
+
|
|
16
|
+
Four operations are available through existing Compact read/write gateways:
|
|
17
|
+
`recovery_storage_status`, `recovery_cleanup_preview`, `recovery_settings_preview`
|
|
18
|
+
and `recovery_maintenance_apply`. AI apply requires exact owner approval even in
|
|
19
|
+
trusted mode. OAuth, ACL, caller ownership, workspace/epoch, path guards and
|
|
20
|
+
idempotency remain authoritative. Full has 162 definitions (158 by default);
|
|
21
|
+
Compact stays at 20.
|
|
22
|
+
|
|
23
|
+
## Upgrade
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npm install -g dodo-mcp@1.3.2
|
|
27
|
+
dodo --version
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Restart your foreground DODO process once to load the update, reopen Config, and
|
|
31
|
+
select the project → Recovery → จัดการพื้นที่ Recovery. Refresh/rescan the MCP
|
|
32
|
+
connection so its gateway operation schemas include the new capabilities.
|
|
33
|
+
|
|
34
|
+
Private state gains maintenance review and cleanup-task tables on first open;
|
|
35
|
+
existing backup data and access scopes are preserved. Keep CLI/server versions
|
|
36
|
+
aligned: older DODO versions refuse a state database with newer migrations.
|
|
37
|
+
See the [Recovery guide](RECOVERY.md) for the review/confirmation flow and
|
|
38
|
+
limits on excluded files, retention and shared storage.
|
|
39
|
+
|
|
40
|
+
## Verification
|
|
41
|
+
|
|
42
|
+
AUTOMATED_PASS on macOS: build, typecheck, lint, core 926 passed / 40 skipped /
|
|
43
|
+
0 failed; packaging 17 passed, including an installed CLI approval and Compact
|
|
44
|
+
maintenance flow. Real Chromium exercised desktop and 390px screens. Production
|
|
45
|
+
dependency audit reported zero vulnerabilities.
|
|
46
|
+
|
|
47
|
+
Native Linux/Windows CI, live AI clients and production checkpoint cleanup are
|
|
48
|
+
MANUAL_NOT_RUN for this patch. The owner explicitly chose publication with the
|
|
49
|
+
completed macOS checks and deferred the remaining platform tests to the next release.
|
|
50
|
+
No production process, tunnel or backup history was changed by release validation.
|
package/docs/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# DODO MCP — Release Notes
|
|
2
2
|
|
|
3
|
+
## 1.3.2 — Recovery storage management
|
|
4
|
+
|
|
5
|
+
Adds owner-reviewed checkpoint cleanup, pending-file retry, project quotas and
|
|
6
|
+
explicit exclusions in the web dashboard. Four caller-bound MCP maintenance
|
|
7
|
+
operations use existing Compact gateways; destructive/settings apply still needs
|
|
8
|
+
owner approval. Shows unique source objects separately from Git copies and logical
|
|
9
|
+
checkpoint sizes. Reuses verified unchanged CAS objects without restaging them.
|
|
10
|
+
See [Recovery usage](RECOVERY.md), [upgrade details](RELEASE_1.3.2.md) and [validation results](TEST_REPORT.md).
|
|
11
|
+
This patch uses the completed macOS gate; native Linux/Windows CI is explicitly deferred to the next release.
|
|
12
|
+
|
|
13
|
+
## 1.3.1 — Independent Remote Config sessions
|
|
14
|
+
|
|
15
|
+
`dodo --web` now creates an independent one-hour owner session even after the local
|
|
16
|
+
eight-hour link expires. No MCP restart is needed to reopen the domain dashboard.
|
|
17
|
+
AI owner requests and queued actions use the same remote session deadline and
|
|
18
|
+
revocation. Adds [AI platform connection instructions](MCP_CONNECTIONS.md) and
|
|
19
|
+
[upgrade details](RELEASE_1.3.1.md).
|
|
20
|
+
|
|
3
21
|
## 1.3.0 — Recovery & Local Git Safety
|
|
4
22
|
|
|
5
23
|
- Default-on independent source backups for registered projects, with caller-owned
|
package/docs/SECURITY.md
CHANGED
|
@@ -453,3 +453,31 @@ UNKNOWN receipt. A crash may leave partial bytes; it never silently retries or
|
|
|
453
453
|
restarts services. Owner/context/content checks and same-user filesystem race
|
|
454
454
|
limits apply. Key rotation retains old references; retention protects referenced
|
|
455
455
|
backups and does not promise physical secure erasure. See [ADR 056](adr/056-owner-data-recovery.md).
|
|
456
|
+
|
|
457
|
+
## Config session isolation (1.3.1)
|
|
458
|
+
|
|
459
|
+
Local Config retains its eight-hour process capability. Each owner CLI opening of
|
|
460
|
+
Remote Config creates a distinct, random internal capability bounded by that
|
|
461
|
+
one-hour lease. It never renews or reuses the local browser token. Closing, expiry
|
|
462
|
+
or reopening revokes the old remote capability and cookie. No credential is sent
|
|
463
|
+
in a remote URL or returned by state APIs. AI owner principals, streaming requests
|
|
464
|
+
and queued owner revalidation use the authenticated request session, not the
|
|
465
|
+
server start time. Loopback, Host/Origin, proxy-header rejection, rate limits,
|
|
466
|
+
workspace/epoch checks and public MCP OAuth remain enforced.
|
|
467
|
+
|
|
468
|
+
### Reviewed Recovery maintenance
|
|
469
|
+
|
|
470
|
+
Storage status and previews are bounded and reveal no credentials or private backup
|
|
471
|
+
paths. MCP checkpoint access remains caller-owned and workspace-bound. Cleanup/settings
|
|
472
|
+
apply requires `dodo:write`, live ACL/context and a separate exact owner approval even
|
|
473
|
+
in trusted mode. A review or discover result does not authorize apply. Settings are
|
|
474
|
+
limited to project quota, retention and canonical relative exclusions; they cannot
|
|
475
|
+
turn off Recovery, acknowledge drift or change private storage/installation authority.
|
|
476
|
+
|
|
477
|
+
The private owner dashboard requires its authenticated, expiring session and current
|
|
478
|
+
workspace context for confirmed apply. Public MCP has no administration endpoints.
|
|
479
|
+
Cleanup protects current baselines, pins, names and active references, and never edits
|
|
480
|
+
source files. Pending cleanup only processes stored private references, not paths
|
|
481
|
+
supplied by callers. Shared objects and active installation captures block reclamation;
|
|
482
|
+
I/O failure is reported as pending rather than successful deletion. No integrity
|
|
483
|
+
failure is silently repaired by accepting the current source.
|
package/docs/TEST_REPORT.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# DODO MCP — Test Report
|
|
2
2
|
|
|
3
|
+
## 1.3.2 Recovery maintenance — macOS release gate, 2026-09-25
|
|
4
|
+
|
|
5
|
+
`AUTOMATED_PASS` on macOS: build, typecheck and lint; full core suite **926 passed,
|
|
6
|
+
40 skipped, 0 failed** across 145 files (140 passed, 5 skipped). Packaging **17
|
|
7
|
+
passed**, including fresh tarball install and real Compact MCP calls that request
|
|
8
|
+
owner approval, approve via the installed CLI, clean a checkpoint, set an exclusion
|
|
9
|
+
and read the resulting policy. `npm run test:all` exited 0; the extended packaging
|
|
10
|
+
smoke, typecheck and lint were rerun successfully afterward.
|
|
11
|
+
|
|
12
|
+
The 13 new security/integration cases cover CAS reuse with integrity checking,
|
|
13
|
+
logical versus unique storage, actual reclamation including independent Git copies,
|
|
14
|
+
protected/current checkpoints, caller ownership, partial closed sessions, read-only
|
|
15
|
+
OAuth refusal, stale context, nested override, live ACL revocation, exact approvals,
|
|
16
|
+
receipt replay, explicit exclusions, pending unlink retry, cross-project sharing,
|
|
17
|
+
active reservations, unsafe hardlinks and queued authority changes. Existing migration
|
|
18
|
+
fixtures retain assertions for scope/revocation preservation across old schemas.
|
|
19
|
+
|
|
20
|
+
Real Chromium exercised the owner UI on desktop and 390px screens with private
|
|
21
|
+
fixtures, confirming checkpoint deletion and `models/` policy persistence. CSP was
|
|
22
|
+
kept unchanged. Tarball checks include the new UI/service and exclude private state,
|
|
23
|
+
credentials, development documents and release evidence. Complete Full capability
|
|
24
|
+
count is **162**, default Full **158**, Compact **20**, Hybrid **49**.
|
|
25
|
+
|
|
26
|
+
`MANUAL_NOT_RUN`: production checkpoint cleanup, actual AI-client interaction, and
|
|
27
|
+
native Linux/Windows CI for this change. The owner explicitly accepted the completed
|
|
28
|
+
macOS gate and deferred the remaining platform tests to the next release. No production
|
|
29
|
+
server was restarted. Automated fixture approval is not approval for production.
|
|
30
|
+
|
|
31
|
+
## 1.3.1 Config regression coverage
|
|
32
|
+
|
|
33
|
+
`tests/security/remoteConfig.test.ts` reproduces the previous HTTP 401 after advancing
|
|
34
|
+
the server clock nine hours, then verifies an independent CLI-created session,
|
|
35
|
+
AI owner expiry, settings writes, renewal and queued-request revocation.
|
|
36
|
+
`tests/security/localConfig.test.ts` checks distinct capabilities, local expiry,
|
|
37
|
+
remote revocation and Host/Origin/proxy-header enforcement.
|
|
38
|
+
`tests/integration/remoteConfigUi.test.ts` exercises desktop/mobile Chromium after
|
|
39
|
+
local expiry and re-pairs after closing without restarting the fixture process.
|
|
40
|
+
External AI clients and real Cloudflare remain MANUAL_NOT_RUN; the connection guide
|
|
41
|
+
is based on client documentation and is not a live platform certification.
|
|
42
|
+
|
|
3
43
|
## 1.3.0 Recovery — หลักฐานก่อน final platform gate
|
|
4
44
|
|
|
5
45
|
Windows full [run35510440500](https://github.com/arthittakun/dodo-mcp/actions/runs/35510440500)
|
package/docs/TUNNEL.md
CHANGED
|
@@ -143,6 +143,12 @@ query/fragment secret Pairing code มีอายุสั้นและใช
|
|
|
143
143
|
cookie แบบ `Secure`, `HttpOnly`, `SameSite=Strict`, `Path=/config` Lease ปิดเองภายใน
|
|
144
144
|
หนึ่งชั่วโมง การเปิดใหม่ยกเลิก code/session เดิม
|
|
145
145
|
|
|
146
|
+
ตั้งแต่ 1.3.1 session ของ Remote Config แยกจาก Local Config 8 ชั่วโมงโดยสมบูรณ์
|
|
147
|
+
รัน `dodo --web` หลัง DODO เปิดเกิน 8 ชั่วโมงได้ทันที ไม่ต้อง restart หรือเปิด Local link
|
|
148
|
+
ก่อน การเปิดรอบใหม่ไม่ต่ออายุ Local link เดิม และไม่เปลี่ยน workspace epoch
|
|
149
|
+
AI/Projects, streaming และ owner action ที่รอคิวใช้ session ของคำขอนั้นจริง
|
|
150
|
+
ดู [วิธีเชื่อม AI clients](MCP_CONNECTIONS.md) สำหรับ MCP URL กับ OAuth callback
|
|
151
|
+
|
|
146
152
|
Remote Config proxy ไปยัง Local Config loopback โดยคง Host/Origin/proxy-header checks,
|
|
147
153
|
private capability, rate limit, workspace ID/epoch และ owner policy เดิม การปิด lease
|
|
148
154
|
ไม่หยุด MCP หรือ Tunnel และไม่มี MCP tool สำหรับเปิดหน้า owner นี้
|
package/docs/WEB_CLIENTS.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# DODO MCP — เชื่อม ChatGPT และ Web Clients
|
|
2
2
|
|
|
3
|
+
ดู [คู่มือทุก AI platform](MCP_CONNECTIONS.md) สำหรับ Claude พร้อมตัวเลือก
|
|
4
|
+
Sign in now / Use your own OAuth client และตัวอย่าง Claude Code, Codex, Gemini CLI, Cursor, VS Code
|
|
5
|
+
|
|
3
6
|
## สิ่งที่ต้องแยกให้ออกก่อน
|
|
4
7
|
|
|
5
8
|
| ค่า | ใช้ตรงไหน | ตัวอย่าง |
|
|
@@ -45,3 +45,14 @@ expiry still affects only Remote Config; MCP, OAuth and Tunnel continue running.
|
|
|
45
45
|
- `tests/security/remoteConfig.test.ts`
|
|
46
46
|
- `tests/integration/remoteConfigUi.test.ts`
|
|
47
47
|
- `tests/integration/cli.test.ts`
|
|
48
|
+
|
|
49
|
+
## 1.3.1 — independent owner sessions
|
|
50
|
+
|
|
51
|
+
The original bridge reused the eight-hour Local Config capability. After eight
|
|
52
|
+
hours a fresh one-hour CLI lease could pair but all upstream API calls failed.
|
|
53
|
+
The bridge now obtains a separate capability with exactly its own lease deadline
|
|
54
|
+
through the in-process Local Config handle. Reopening revokes the old capability;
|
|
55
|
+
local browser expiry is unchanged. Request-bound session validation also governs
|
|
56
|
+
AI owner principals, event streams and queued owner actions. The one-hour public
|
|
57
|
+
lease and one-time pairing remain mandatory. Both owner-managed Cloudflare Local
|
|
58
|
+
and DODO-managed Tunnel modes can open this lease. No server restart is needed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dodo-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"author": "Arthittakun",
|
|
5
5
|
"description": "DODO — local-first MCP server with multi-project coding, AI providers, sub-agents, context, memory, media and workflow tools; embedded OAuth and workspace permissions.",
|
|
6
6
|
"type": "module",
|
|
@@ -52,11 +52,14 @@
|
|
|
52
52
|
"docs/RELEASE_1.2.0.md",
|
|
53
53
|
"docs/RELEASE_1.2.1.md",
|
|
54
54
|
"docs/RELEASE_1.3.0.md",
|
|
55
|
+
"docs/RELEASE_1.3.1.md",
|
|
56
|
+
"docs/RELEASE_1.3.2.md",
|
|
55
57
|
"docs/RELEASE_NOTES.md",
|
|
56
58
|
"docs/SCHEDULES.md",
|
|
57
59
|
"docs/SECURITY.md",
|
|
58
60
|
"docs/TEST_REPORT.md",
|
|
59
61
|
"docs/TUNNEL.md",
|
|
62
|
+
"docs/MCP_CONNECTIONS.md",
|
|
60
63
|
"docs/WEB_CLIENTS.md",
|
|
61
64
|
"docs/WINDOWS.md",
|
|
62
65
|
"docs/WINDOWS_SETUP.md",
|