dodo-mcp 1.2.0 → 1.2.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.
@@ -1,13 +1,16 @@
1
1
  # AI Providers, Sub-agents และหลายโปรเจกต์
2
2
 
3
- DODO MCP 1.0.4 สามารถเปิด runtime ของหลายโปรเจกต์ใน process เดียว และเรียกโมเดลจาก backend ผ่าน connection/profile ที่เจ้าของเลือกได้ ค่าเริ่มต้นเป็นโหมดส่วนตัว: เพิ่มโปรเจกต์, connection และ profile แล้วใช้งานได้ทันทีโดยไม่ต้องทำ allowlist ซ้ำ
3
+ DODO MCP 1.2.1 สามารถเปิด runtime ของหลายโปรเจกต์ใน process เดียว และเรียกโมเดลจาก backend ผ่าน connection/profile ที่เจ้าของเลือกได้ ค่าเริ่มต้นเป็นโหมดส่วนตัว: เพิ่มโปรเจกต์, connection และ profile แล้วใช้งานได้ทันทีโดยไม่ต้องทำ allowlist ซ้ำ
4
4
 
5
5
  ## เริ่มใช้งานผ่านเว็บ
6
6
 
7
7
  1. เปิด `dodo start` หรือ `dodo --cli` แล้วเข้า Local Config จาก URL ส่วนตัวที่ terminal แสดง ใช้หน้าเว็บ loopback เท่านั้น หน้า "ภาพรวม" แสดงขั้นตอนถัดไป (เพิ่มโปรเจกต์ → เพิ่ม Provider → สร้าง Profile → เริ่มงาน) พร้อมสถานะและรายการที่ต้องตรวจสอบ
8
8
  2. หน้า "โปรเจกต์": เพิ่ม absolute path ของ A/B แล้วพร้อมใช้ทันที การเลือกดู B ไม่เปลี่ยน default และไม่หยุด A
9
9
  3. หน้า "Providers & Profiles" (ส่วน AI Providers): เลือก preset หรือ Custom, protocol, Base URL และกรอก key เลือกเฉพาะรอบนี้หรือ macOS Keychain ปุ่มบันทึกตรวจรูปแบบ/endpoint policy และแสดงสถานะบันทึกพร้อมเวลา; ปุ่มรายชื่อโมเดลเป็น credential test แยกจากการทดสอบ inference ผลบอกชื่อ connection, เวลา และเมื่อพลาดจะระบุว่าไม่ retry อัตโนมัติ
10
- 4. หน้าเดียวกัน (ส่วน Agent Profiles): สร้าง Coding/Review/Research เลือก connection, Model ID, scopes, tool calling, image input และ budgets แล้วใช้กับทุกโปรเจกต์ที่ลงทะเบียนได้ทันที
10
+ 4. หน้าเดียวกัน (ส่วน Agent Profiles): เลือกประเภท Coding/Review/Research, connection และ
11
+ Model ID แล้วกด **สร้าง Agent** ได้เลย รายชื่อโมเดลที่โหลดจาก Provider จะปรากฏใน
12
+ Agent form อัตโนมัติ ถ้า endpoint ไม่รองรับ model-list ให้พิมพ์ Model ID เอง ส่วน scopes,
13
+ tool calling, image input, token budgets และราคาอยู่ใน **ตั้งค่าขั้นสูง**
11
14
  5. หากเป็น installation ที่แชร์หลาย client ให้เปลี่ยน Settings เป็น managed แล้วกำหนด trust, project ACL, profile/client allowlist และ source egress ต่อโปรเจกต์ (การสลับโหมดมีกล่องยืนยันเสมอ) ในโหมดส่วนตัว ฟอร์มสิทธิ์รายโปรเจกต์ถูกซ่อนและแทนด้วยโน้ตสั้นพร้อม tooltip
12
15
  6. ปุ่มทดสอบ inference/tool calling ส่งข้อมูลสังเคราะห์และอาจมีค่าใช้จ่าย ต้องยืนยันผ่านกล่อง warning ก่อนทุกครั้ง (ค่าใช้จ่ายที่ไม่ทราบแสดงว่า "ไม่ทราบ" ไม่ใช่ศูนย์) ระหว่างทดสอบมี loading modal และปุ่มถูกปิดกันส่งซ้ำ; ผลระบุชื่อ connection, Model ID, ชนิดการทดสอบ และเวลา ผลเก่าไม่รับรองค่าที่เปลี่ยนภายหลัง เมื่อพลาดจะแสดงทั้ง inline และ modal พร้อมข้อความว่าไม่ retry อัตโนมัติ โมเดลที่เปิด tool calling เองแต่ยังไม่ทดสอบยังไม่ถือว่า live coding integration ผ่าน
13
16
  7. หน้า "Chat & Tasks": เลือกโปรเจกต์/profile ระบุงาน ส่งงานหนึ่งครั้ง (มี idempotency key กันงานซ้ำเมื่อ reconnect) แล้วดู "Runs & Jobs" แสดงสถานะอ่านง่าย ข้อความ, tool receipts และผล jobs อยู่ใน details ที่พับได้ การยกเลิก/ลบประวัติต้องยืนยันก่อน
@@ -45,7 +48,7 @@ Ollama loopback อาจเรียก cloud model ได้ ต้องเ
45
48
 
46
49
  ## MCP หลายโปรเจกต์
47
50
 
48
- Full มี 125 tools; Compact 19; Hybrid 49 operations ใหม่ใช้ gateways เดิม
51
+ Complete Full มี 138 tools; Compact 20; Hybrid 49 โดย operations ใหม่ใช้ gateways เดิม
49
52
 
50
53
  ```text
51
54
  project_overview()
@@ -269,8 +269,12 @@ gateways Report ผูก revision, dataset, dependency lock, config และ h
269
269
  `schemas/tools.json` เป็น complete full schema ส่วน compact และ hybrid เป็น schema แยก
270
270
  พร้อม metadata ของ optional feature ค่า `exposeSubagentsToMcp=false` จะกรองสี่
271
271
  Sub-agent definitions ออกจาก Full และกรองสี่ operation names ออกจาก gateway schemas,
272
- instructions และ `dodo_discover` ของ Compact/Hybrid โดยจำนวน gateway names ยังคง
273
- 19/49 การเลือก surface หรือ feature exposure ไม่เปลี่ยน permission
272
+ instructions และ `dodo_discover` ของ Compact/Hybrid โดยจำนวน tool definitions ยังคง
273
+ 20/49 การตั้งค่า `disabledDiscoverOperations` กรอง operation เพิ่มจาก discover และ
274
+ gateway enum, ตัด Hybrid direct duplicate และไม่สร้าง gateway ที่ว่าง จึงทำให้ catalog
275
+ runtime ต่ำกว่าค่าสูงสุดได้ Full direct catalog ไม่รับผลจากค่านี้ ทุก variant cache ด้วย
276
+ canonical feature key และคำนวณ overview/stats จาก catalog ที่ serve จริง การเลือก
277
+ surface หรือ feature exposure ไม่เปลี่ยน permission
274
278
 
275
279
  ## Personal และ managed access mode
276
280
 
@@ -0,0 +1,47 @@
1
+ # DODO MCP 1.2.1
2
+
3
+ รุ่น 1.2.1 แก้ปัญหาหน้า Providers & Profiles ตอบเพียง `invalid request` เมื่อข้อมูล
4
+ Agent Profile ไม่ครบ ลดขั้นตอนสร้าง Agent สำหรับการใช้งานส่วนตัว และเพิ่มการเลือก
5
+ operation ที่ AI มองเห็นจากหน้าเว็บ
6
+
7
+ ## สร้าง Agent แบบง่าย
8
+
9
+ 1. บันทึก Provider connection และ API key
10
+ 2. กด **โหลดรายชื่อโมเดล** หรือกรอก Model ID เอง
11
+ 3. เลือกประเภท Agent: Coding, Review หรือ Research
12
+ 4. กด **สร้าง Agent**
13
+
14
+ รายการโมเดลที่โหลดสำเร็จจะเข้า Agent form ทันที ถ้ามีโมเดลเดียว DODO เลือกให้
15
+ อัตโนมัติ ค่าที่ใช้ไม่บ่อย เช่น tool calling, ภาพ, token limits, จำนวนรอบ และราคา
16
+ อยู่ในส่วน **ตั้งค่าขั้นสูง**
17
+
18
+ Preset เป็นเพียงค่าตั้งต้นของ profile และทำได้เฉพาะลดขอบเขตจากสิทธิ์จริง ไม่เพิ่ม
19
+ OAuth scope, project access, trust หรือ approval และไม่ข้าม sandbox, path/secret
20
+ guards, expected hash หรือ audit
21
+
22
+ ## Validation
23
+
24
+ - Browser ปฏิเสธ Agent ที่ไม่มีชื่อ, connection หรือ Model ID ก่อนส่ง request
25
+ - ตัวเลขทุกช่องตรวจช่วงเดียวกับ backend
26
+ - Backend ตอบชื่อ field ที่ผิด เช่น `model` โดยไม่สะท้อนค่าที่กรอกหรือ credential
27
+ - ปุ่มถูกปิดระหว่างบันทึกเพื่อป้องกันการสร้างซ้ำ
28
+
29
+ ## Tool visibility
30
+
31
+ หน้า **Settings → Tools ที่ AI มองเห็น** มีสวิตช์ราย operation, ค้นหา, เปิด/ปิดทั้งหมวด
32
+ และตัวนับสถานะจริง เมื่อบันทึกแล้ว Compact/Hybrid จะตัด operation ออกจาก discover,
33
+ gateway schema และ direct duplicate ใน Hybrid หลัง restart/rescan หากปิดทั้งหมวด gateway
34
+ นั้นจะหายด้วย Full/STDIO ยังคงครบและ security checks เดิมไม่เปลี่ยน
35
+
36
+ ## สถานะตรวจรับ
37
+
38
+ - Typecheck/lint: `AUTOMATED_PASS`
39
+ - Chromium end-to-end แบบ desktop และ 390px: `AUTOMATED_PASS`
40
+ - Provider/profile/project/agent/tool-call/write-file flow: `AUTOMATED_PASS`
41
+ - Tool visibility catalog/HTTP/security/Chromium (desktop และ 320px): `AUTOMATED_PASS`
42
+ - Full suite: 731 passed, 35 skipped; packaging 16/16: `AUTOMATED_PASS`
43
+ - Security regression ที่เกี่ยวข้อง: `AUTOMATED_PASS`
44
+ - Exact tarball install + config schema/UI asset manifest: `AUTOMATED_PASS`
45
+ - Production dependency audit: 0 vulnerabilities: `AUTOMATED_PASS`
46
+ - Live provider ของเจ้าของ: `MANUAL_NOT_RUN`
47
+ - npm publish: `MANUAL_NOT_RUN`
@@ -1,5 +1,23 @@
1
1
  # DODO MCP — Release Notes
2
2
 
3
+ ## 1.2.1 — สร้าง Agent แบบง่ายและ error ที่แก้ได้ตรงจุด
4
+
5
+ - ลดขั้นตอนสร้าง Agent เหลือเลือกประเภท, Provider connection และ Model ID แล้วสร้างได้เลย
6
+ - รายชื่อโมเดลที่โหลดจาก Provider ถูกนำมาให้เลือกใน Agent form ทันที; endpoint ที่ไม่มี
7
+ model-list ยังพิมพ์ Model ID เองได้
8
+ - เพิ่ม Coding, Review และ Research presets โดยค่าละเอียดอยู่ในส่วนพับได้
9
+ - ตรวจ Model ID, connection และขีดจำกัดตัวเลขใน browser ก่อนส่ง จึงไม่เหลือข้อความ
10
+ `invalid request` แบบไม่บอกสาเหตุสำหรับกรณีข้อมูลฟอร์มไม่ครบ
11
+ - Owner API คืนเฉพาะชื่อ field ที่ไม่ถูกต้อง ไม่สะท้อน API key หรือค่าที่ผู้ใช้กรอก
12
+ - เพิ่มหน้า Settings สำหรับเปิด/ปิด operation รายตัวใน Compact/Hybrid พร้อมค้นหา,
13
+ สวิตช์รายรายการ, เปิด/ปิดทั้งหมวด และตัวนับที่มีผลจริง
14
+ - operation ที่ปิดหายจาก `dodo_discover`, gateway enum และ Hybrid direct duplicate;
15
+ gateway ที่ว่างจะไม่ถูกส่งให้ client ส่วน Full/STDIO ไม่เปลี่ยน
16
+ - การตั้งค่านี้เปลี่ยนเฉพาะ visibility ไม่ grant OAuth scope, project access, trust,
17
+ approval, sandbox หรือข้าม guards และต้อง restart/rescan หลังบันทึก
18
+
19
+ รุ่นนี้เตรียมเป็น patch `1.2.1`; การ publish และ live-provider manual test เป็น gate แยก
20
+
3
21
  ## 1.2.0 — Cloudflare Local และสิทธิ์ต่อโปรเจกต์ที่มองเห็นได้
4
22
 
5
23
  - แยกการเชื่อมต่อเป็นสามโหมด: เฉพาะเครื่อง (Loopback), Cloudflare Local ที่ผู้ใช้
package/docs/SECURITY.md CHANGED
@@ -234,6 +234,16 @@ Full จะไม่ register สี่ Sub-agent definitions และ Compact/
234
234
  ไม่เปลี่ยน trust/profile policy และไม่ข้าม approvals, sandbox, path/secret guards หรือ
235
235
  workspace context ทุก call ที่เปิดให้เห็นยังผ่าน invocation pipeline เดิมทั้งหมด
236
236
 
237
+ ### Per-operation Compact/Hybrid visibility
238
+
239
+ `disabledDiscoverOperations` เป็นการตั้งค่าของเจ้าของใน private Local Config และมีผล
240
+ เฉพาะ Compact/Hybrid catalog operation ที่ปิดจะไม่อยู่ใน `dodo_discover`, gateway enum
241
+ หรือ direct duplicate ของ Hybrid และ gateway ที่ไม่เหลือ operation จะไม่ถูก register
242
+ Full/STDIO direct definitions ไม่ถูกลบด้วยค่านี้ รายชื่อที่บันทึกต้องตรงกับ operation
243
+ จริงและ owner API ปฏิเสธชื่ออื่น การซ่อนหรือเปิดกลับไม่ grant OAuth scope, project ACL,
244
+ trust, approval, sandbox หรือสิทธิ์อื่น และ target ที่ยังเปิดอยู่ผ่าน invocation pipeline
245
+ เดิมทุกชั้น
246
+
237
247
  ## Android / ADB access
238
248
 
239
249
  ADB ปิดโดยค่าเริ่มต้น การมี `adb` หรืออุปกรณ์ที่เชื่อมอยู่ไม่ใช่ permission เจ้าของต้อง
@@ -1,5 +1,32 @@
1
1
  # DODO MCP — Test Report
2
2
 
3
+ ## 1.2.1 Agent Profile creation and Compact/Hybrid visibility controls
4
+
5
+ วันที่ตรวจ: 2026-09-16
6
+
7
+ - Root cause reproduction: Agent form ส่ง `model: ""` หรือค่าตัวเลขที่ไม่ผ่าน schema
8
+ แล้ว owner API ตอบเพียง `invalid request fields`
9
+ - Chromium real UI: ตรวจ Model ID ว่างก่อนส่ง, backend ระบุ field `model`, โหลด model
10
+ fixture แล้วเลือกให้อัตโนมัติ, สร้าง Coding Agent, ทดสอบ tool calling, สร้างไฟล์จริง
11
+ และอ่านผลกลับ — `AUTOMATED_PASS`
12
+ - Responsive: desktop 1440px และ mobile 390px ไม่มี horizontal overflow —
13
+ `AUTOMATED_PASS`
14
+ - Per-operation visibility: ปิด `write_file` แล้วหายจาก discover, gateway enum และ
15
+ Hybrid direct duplicate; ปิด `git_commit` แล้ว gateway ที่ว่างหาย; Full ยังครบ —
16
+ `AUTOMATED_PASS`
17
+ - Owner-only API ปฏิเสธ unauthenticated/stale/unknown operation และบันทึกรายการแบบ
18
+ canonical; public MCP ไม่มี admin route — `AUTOMATED_PASS`
19
+ - Chromium real UI: สวิตช์ราย operation, search, เปิด/ปิดทั้งหมวด, restart notice,
20
+ desktop 1280px และ 320px ไม่มี horizontal overflow — `AUTOMATED_PASS`
21
+ - Focused catalog/HTTP/security/UI suites: 40/40 — `AUTOMATED_PASS`
22
+ - `npm run test:all`: 107 files passed, 3 skipped; 731 tests passed, 35 skipped;
23
+ packaging 16/16 — `AUTOMATED_PASS`
24
+ - `npm audit --omit=dev`: 0 vulnerabilities — `AUTOMATED_PASS`
25
+ - Fresh immutable tarball smoke: CLI 1.2.1, generated config schema และ Local Config
26
+ UI assets ครบ — `AUTOMATED_PASS`
27
+ - Live owner provider credentials: `MANUAL_NOT_RUN`
28
+ - npm publish: `MANUAL_NOT_RUN`
29
+
3
30
  ## Release 1.2.0 — Cloudflare Local และ Simple Project Access
4
31
 
5
32
  ผล candidate บน macOS arm64 วันที่ 2026-09-16:
@@ -117,6 +117,7 @@ authorization, DODO ไม่ได้รัน หรือ public OAuth routes
117
117
  | ได้ 404 จาก OAuth หรือ discovery | Tunnel route มาเฉพาะ `/mcp`; แก้ให้ route ทุก path เพราะ OAuth ใช้ `/.well-known/...`, `/auth`, `/interaction`, `/token` และ `/jwks` ด้วย |
118
118
  | เห็น tools เก่า/เรียกแล้ว not found | เปิด connection ใน ChatGPT แล้ว Refresh; หาก cache ยังไม่เปลี่ยนให้ลบและสร้าง connection ใหม่ |
119
119
  | ยังไม่เห็น Sub-agent operations | เปิด **Settings → Sub-agent tools ใน MCP** ใน Local Config แล้ว restart DODO และ rescan/recreate connection |
120
+ | operation ที่ต้องการหายจาก discover/gateway | ตรวจ **Settings → Tools ที่ AI มองเห็น** แล้วเปิด operation, restart DODO และ rescan/recreate connection |
120
121
 
121
122
  ห้ามส่ง `client_secret`, access token, refresh token, Cloudflare Tunnel token หรือ URL
122
123
  ของ Local Config ให้ผู้ช่วย AI เพื่อแก้ปัญหา ใช้เฉพาะสถานะและ redacted logs จาก
@@ -124,10 +125,14 @@ authorization, DODO ไม่ได้รัน หรือ public OAuth routes
124
125
 
125
126
  ## Compact behavior
126
127
 
127
- HTTP default เป็น Compact surface 19 tools ประกอบด้วย overview, `dodo_discover` และ gateways client จะค้น operation ที่ต้องการจาก discover แล้วเรียก gateway พร้อม top-level workspace context
128
+ HTTP default เป็น Compact surface สูงสุด 20 tools ประกอบด้วย overview, `dodo_discover` และ gateways client จะค้น operation ที่ต้องการจาก discover แล้วเรียก gateway พร้อม top-level workspace context จำนวนจริงอาจต่ำลงเมื่อเจ้าของปิด operations ครบทั้ง gateway
128
129
 
129
130
  Compact ไม่ลด security และไม่ได้รวมสิทธิ์หลาย operation เป็น approval เดียว target operation ยังคงมี scope, ACL, trust, approval, hash และ path policy ของตัวเอง
130
131
 
132
+ เจ้าของซ่อน operation ที่ไม่ใช้จาก **Settings → Tools ที่ AI มองเห็น** ได้ การเปลี่ยนนี้
133
+ ลด schema ของ Compact/Hybrid จริงและเอา direct duplicate ออกจาก Hybrid แต่ไม่เปลี่ยน
134
+ Full/STDIO หรือ permission ใด ๆ ต้อง restart server และ rescan/recreate client หลังบันทึก
135
+
131
136
  ## Client cache
132
137
 
133
138
  client บางตัว cache tool catalog หลังสร้าง connection หาก schema หรือ surface เปลี่ยน ให้ refresh ตาม client หรือ recreate connection เมื่อ refresh ไม่ได้ล้าง catalog เดิม
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dodo-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
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",
@@ -48,6 +48,7 @@
48
48
  "docs/RELEASE_1.0.6.md",
49
49
  "docs/RELEASE_1.1.0.md",
50
50
  "docs/RELEASE_1.2.0.md",
51
+ "docs/RELEASE_1.2.1.md",
51
52
  "docs/RELEASE_NOTES.md",
52
53
  "docs/SCHEDULES.md",
53
54
  "docs/SECURITY.md",
@@ -357,6 +357,15 @@
357
357
  "default": false,
358
358
  "type": "boolean"
359
359
  },
360
+ "disabledDiscoverOperations": {
361
+ "default": [],
362
+ "maxItems": 200,
363
+ "type": "array",
364
+ "items": {
365
+ "type": "string",
366
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
367
+ }
368
+ },
360
369
  "tunnel": {
361
370
  "default": {
362
371
  "connectionMode": "local",
@@ -485,6 +494,7 @@
485
494
  "logRetentionDays",
486
495
  "accessMode",
487
496
  "exposeSubagentsToMcp",
497
+ "disabledDiscoverOperations",
488
498
  "tunnel",
489
499
  "dangerouslyAllowInsecurePublicUrl"
490
500
  ],