dodo-mcp 1.3.1 → 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 +11 -1
- package/dist/server/aiAdmin.js +1 -1
- package/dist/server/aiAdmin.js.map +1 -1
- 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 +1 -1
- package/dist/server/localConfig.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 +18 -2
- package/docs/COMPATIBILITY.md +9 -0
- package/docs/MANUAL_ACCEPTANCE.md +28 -0
- package/docs/RECOVERY.md +73 -8
- package/docs/RELEASE_1.3.2.md +50 -0
- package/docs/RELEASE_NOTES.md +10 -0
- package/docs/SECURITY.md +17 -0
- package/docs/TEST_REPORT.md +28 -0
- package/package.json +2 -1
- package/schemas/tools.compact.json +16 -8
- package/schemas/tools.hybrid.json +16 -8
- package/schemas/tools.json +682 -2
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -261,8 +261,8 @@ gateways Report ผูก revision, dataset, dependency lock, config และ h
|
|
|
261
261
|
|
|
262
262
|
## Tool surfaces
|
|
263
263
|
|
|
264
|
-
- Complete capability catalog
|
|
265
|
-
- Full live catalog ค่าเริ่มต้น
|
|
264
|
+
- Complete capability catalog 162 individual definitions (Core 104 + Advanced Agent Runtime 17 + Sub-agents 4 + Android ADB 13 + Source Recovery 14 + Deployment 10)
|
|
265
|
+
- Full live catalog ค่าเริ่มต้น 158 definitions; owner เปิด Sub-agent MCP exposure แล้วเป็น 162
|
|
266
266
|
- Compact catalog 20 definitions: overview, discover และ gateways รวม `dodo_mobile`
|
|
267
267
|
- Hybrid catalog 49 definitions: compact core ตามด้วย direct tools
|
|
268
268
|
|
|
@@ -463,3 +463,19 @@ through public HTTP. A WeakMap binds each authenticated Express request to its
|
|
|
463
463
|
session; `aiAdmin` resolves that session again for queued actions and event streams.
|
|
464
464
|
The gateway strips incoming credentials, injects only its own capability on the
|
|
465
465
|
loopback hop, and revokes it on close/renewal. Local expiry is independent.
|
|
466
|
+
|
|
467
|
+
### Recovery storage maintenance
|
|
468
|
+
|
|
469
|
+
`RecoveryMaintenance` shares validation between private owner administration and
|
|
470
|
+
MCP invocation. Four new operations use existing read/write compact gateways.
|
|
471
|
+
A durable review binds project, caller/owner role, epoch, root identity, policy and
|
|
472
|
+
selection. Apply runs in the project mutation queue and rechecks protected references
|
|
473
|
+
under the SQLite write lock. AI apply requires a scoped owner approval regardless
|
|
474
|
+
of trust. Review/result state and pending cleanup files have separate durable tables.
|
|
475
|
+
|
|
476
|
+
Logical deletion and pending file tasks commit together before physical cleanup.
|
|
477
|
+
Cleanup removes only private, unreferenced manifests/objects; installation reservations
|
|
478
|
+
protect concurrent publishers. Failures retain tasks and accounting, and explicit
|
|
479
|
+
pending cleanup retries do not repeat logical deletion. CAS reuse skips staging of
|
|
480
|
+
unchanged content but retains fresh source/object verification. Reservation estimation
|
|
481
|
+
and reservation insertion hold one installation write lock against concurrent GC.
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -113,3 +113,12 @@ Protocol fixtures ครอบคลุม Responses, Gemini Interactions, Anthr
|
|
|
113
113
|
และ Ollama Native ทั้งเจ็ด presets ซึ่งไม่เท่ากับ live API/model compatibility ของแต่ละ
|
|
114
114
|
account Session credentials ใช้ได้โดยไม่ต้อง Keychain; persistent Keychain ตรวจบน macOS
|
|
115
115
|
Linux Docker และ live providers ต้องดูผลแยกใน TEST_REPORT ไม่ใช้ผล macOS แทน
|
|
116
|
+
|
|
117
|
+
## 1.3.2 validation scope
|
|
118
|
+
|
|
119
|
+
Recovery maintenance was validated on macOS with the complete core suite, real
|
|
120
|
+
Chromium desktop/narrow fixtures and freshly installed npm tarballs. Native
|
|
121
|
+
Linux/Windows CI for this patch is deferred to the next release by owner decision;
|
|
122
|
+
prior platform results are not evidence for these new maintenance paths.
|
|
123
|
+
No platform/security checks were disabled in code. Compact remains 20 tools;
|
|
124
|
+
Full exposes 158 by default or 162 when sub-agent tools are enabled.
|
|
@@ -433,3 +433,31 @@ or disaster-recovery success is implied.
|
|
|
433
433
|
- Real external AI accounts, physical eight-hour waiting and real Cloudflare
|
|
434
434
|
routes are MANUAL_NOT_RUN for this patch unless separately recorded. Automated
|
|
435
435
|
tests advance the server clock and use isolated HTTP/browser fixtures.
|
|
436
|
+
|
|
437
|
+
## 1.3.2 Recovery maintenance
|
|
438
|
+
|
|
439
|
+
Use a disposable registered project and separate private state. Never test cleanup
|
|
440
|
+
against production backup history.
|
|
441
|
+
|
|
442
|
+
- Create several checkpoints with an unchanged large fixture under `models/`.
|
|
443
|
+
Compare logical checkpoint totals to unique source objects and separate Git copies.
|
|
444
|
+
- Select an old unprotected checkpoint. Preview, cancel confirmation, and verify
|
|
445
|
+
no deletion. Confirm a fresh preview and verify its manifest/history are removed,
|
|
446
|
+
current source is unchanged, and actual reclaimed bytes match deleted files.
|
|
447
|
+
- Pin a point or prepare a restore after preview: applying the old preview must fail.
|
|
448
|
+
Latest/baseline/named/deployment/database-linked points must remain protected.
|
|
449
|
+
- Set an exclusion `models/` and a project quota through the policy preview. Verify
|
|
450
|
+
old checkpoints remain intact and a new checkpoint omits the directory. Inspect
|
|
451
|
+
project/installation/free-floor limits separately if capture still refuses quota.
|
|
452
|
+
- Simulate a locked backup file in fixture state. Logical cleanup must report pending
|
|
453
|
+
physical cleanup; unlock and explicitly review pending cleanup to reclaim it.
|
|
454
|
+
- From MCP, discover the four `recovery_*` maintenance operations. Read-only tokens
|
|
455
|
+
cannot preview/apply writes, other callers cannot delete each other's checkpoints,
|
|
456
|
+
and write-capable trusted callers still require exact owner approval for apply.
|
|
457
|
+
- Retry the same idempotency key and inspect the plan receipt after reconnect.
|
|
458
|
+
Do not infer success or repeat side effects after an uncertain response.
|
|
459
|
+
- Check desktop/narrow layout, keyboard focus, error and empty states. Verify the
|
|
460
|
+
private UI remains authenticated and no public admin endpoint is introduced.
|
|
461
|
+
|
|
462
|
+
Automated Chromium coverage is distinct from a manual test in an actual AI client.
|
|
463
|
+
Native Windows/Linux and production project cleanup are not certified by macOS tests.
|
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,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,15 @@
|
|
|
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
|
+
|
|
3
13
|
## 1.3.1 — Independent Remote Config sessions
|
|
4
14
|
|
|
5
15
|
`dodo --web` now creates an independent one-hour owner session even after the local
|
package/docs/SECURITY.md
CHANGED
|
@@ -464,3 +464,20 @@ in a remote URL or returned by state APIs. AI owner principals, streaming reques
|
|
|
464
464
|
and queued owner revalidation use the authenticated request session, not the
|
|
465
465
|
server start time. Loopback, Host/Origin, proxy-header rejection, rate limits,
|
|
466
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,33 @@
|
|
|
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
|
+
|
|
3
31
|
## 1.3.1 Config regression coverage
|
|
4
32
|
|
|
5
33
|
`tests/security/remoteConfig.test.ts` reproduces the previous HTTP 401 after advancing
|
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",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"docs/RELEASE_1.2.1.md",
|
|
54
54
|
"docs/RELEASE_1.3.0.md",
|
|
55
55
|
"docs/RELEASE_1.3.1.md",
|
|
56
|
+
"docs/RELEASE_1.3.2.md",
|
|
56
57
|
"docs/RELEASE_NOTES.md",
|
|
57
58
|
"docs/SCHEDULES.md",
|
|
58
59
|
"docs/SECURITY.md",
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"version": 1,
|
|
4
4
|
"toolCount": 20,
|
|
5
5
|
"defaultLiveToolCount": 20,
|
|
6
|
-
"fullToolCount":
|
|
7
|
-
"defaultLiveFullToolCount":
|
|
6
|
+
"fullToolCount": 162,
|
|
7
|
+
"defaultLiveFullToolCount": 158,
|
|
8
8
|
"optionalMcpFeatures": {
|
|
9
9
|
"subagents": {
|
|
10
10
|
"configKey": "exposeSubagentsToMcp",
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
"stats": {
|
|
22
22
|
"compact": {
|
|
23
23
|
"toolCount": 20,
|
|
24
|
-
"schemaBytes":
|
|
24
|
+
"schemaBytes": 63565
|
|
25
25
|
},
|
|
26
26
|
"hybrid": {
|
|
27
27
|
"toolCount": 49,
|
|
28
|
-
"schemaBytes":
|
|
28
|
+
"schemaBytes": 144447
|
|
29
29
|
},
|
|
30
30
|
"full": {
|
|
31
|
-
"toolCount":
|
|
32
|
-
"schemaBytes":
|
|
31
|
+
"toolCount": 162,
|
|
32
|
+
"schemaBytes": 582689
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"tools": [
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
{
|
|
361
361
|
"name": "dodo_read",
|
|
362
362
|
"title": "Read workspace state",
|
|
363
|
-
"description": "Gateway: read-only workspace access: files, search, symbols, jobs, history and agent notes. Set operation to one of: list_files, read_files, read_image, read_instructions, search_code, glob_files, symbols, references, diagnostics, change_history, approval_status, environment_info, todo_read, handoff_read, job_status, job_output, job_wait, list_jobs, restore_status, checkpoint_list, checkpoint_inspect, recovery_session_list, recovery_session_inspect, deployment_targets, deployment_list, deployment_inspect, deployment_compare. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
363
|
+
"description": "Gateway: read-only workspace access: files, search, symbols, jobs, history and agent notes. Set operation to one of: list_files, read_files, read_image, read_instructions, search_code, glob_files, symbols, references, diagnostics, change_history, approval_status, environment_info, todo_read, handoff_read, job_status, job_output, job_wait, list_jobs, recovery_storage_status, restore_status, checkpoint_list, checkpoint_inspect, recovery_session_list, recovery_session_inspect, deployment_targets, deployment_list, deployment_inspect, deployment_compare. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
364
364
|
"requiredScope": "dodo:read",
|
|
365
365
|
"annotations": {
|
|
366
366
|
"readOnlyHint": true,
|
|
@@ -388,6 +388,7 @@
|
|
|
388
388
|
"job_output",
|
|
389
389
|
"job_wait",
|
|
390
390
|
"list_jobs",
|
|
391
|
+
"recovery_storage_status",
|
|
391
392
|
"restore_status",
|
|
392
393
|
"checkpoint_list",
|
|
393
394
|
"checkpoint_inspect",
|
|
@@ -452,6 +453,7 @@
|
|
|
452
453
|
"job_output",
|
|
453
454
|
"job_wait",
|
|
454
455
|
"list_jobs",
|
|
456
|
+
"recovery_storage_status",
|
|
455
457
|
"restore_status",
|
|
456
458
|
"checkpoint_list",
|
|
457
459
|
"checkpoint_inspect",
|
|
@@ -582,7 +584,7 @@
|
|
|
582
584
|
{
|
|
583
585
|
"name": "dodo_write",
|
|
584
586
|
"title": "Change workspace files",
|
|
585
|
-
"description": "Gateway: hash-verified, journaled file changes: write/edit/patch, preview→apply→rollback, todos and handoff. Set operation to one of: write_file, edit_file, apply_patch, replace_in_files, delete_path, move_path, make_directory, preview_changes, apply_changes, rollback_changes, preview_rename, todo_write, handoff_write, agent_write, agent_snapshot_rollback, checkpoint_create, recovery_session_begin, recovery_session_end, restore_preview, restore_apply. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
587
|
+
"description": "Gateway: hash-verified, journaled file changes: write/edit/patch, preview→apply→rollback, todos and handoff. Set operation to one of: write_file, edit_file, apply_patch, replace_in_files, delete_path, move_path, make_directory, preview_changes, apply_changes, rollback_changes, preview_rename, todo_write, handoff_write, agent_write, agent_snapshot_rollback, recovery_cleanup_preview, recovery_settings_preview, recovery_maintenance_apply, checkpoint_create, recovery_session_begin, recovery_session_end, restore_preview, restore_apply. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
586
588
|
"requiredScope": "dodo:write",
|
|
587
589
|
"annotations": {
|
|
588
590
|
"readOnlyHint": false,
|
|
@@ -607,6 +609,9 @@
|
|
|
607
609
|
"handoff_write",
|
|
608
610
|
"agent_write",
|
|
609
611
|
"agent_snapshot_rollback",
|
|
612
|
+
"recovery_cleanup_preview",
|
|
613
|
+
"recovery_settings_preview",
|
|
614
|
+
"recovery_maintenance_apply",
|
|
610
615
|
"checkpoint_create",
|
|
611
616
|
"recovery_session_begin",
|
|
612
617
|
"recovery_session_end",
|
|
@@ -664,6 +669,9 @@
|
|
|
664
669
|
"handoff_write",
|
|
665
670
|
"agent_write",
|
|
666
671
|
"agent_snapshot_rollback",
|
|
672
|
+
"recovery_cleanup_preview",
|
|
673
|
+
"recovery_settings_preview",
|
|
674
|
+
"recovery_maintenance_apply",
|
|
667
675
|
"checkpoint_create",
|
|
668
676
|
"recovery_session_begin",
|
|
669
677
|
"recovery_session_end",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"job_wait",
|
|
35
35
|
"job_cancel"
|
|
36
36
|
],
|
|
37
|
-
"fullToolCount":
|
|
38
|
-
"defaultLiveFullToolCount":
|
|
37
|
+
"fullToolCount": 162,
|
|
38
|
+
"defaultLiveFullToolCount": 158,
|
|
39
39
|
"optionalMcpFeatures": {
|
|
40
40
|
"subagents": {
|
|
41
41
|
"configKey": "exposeSubagentsToMcp",
|
|
@@ -52,15 +52,15 @@
|
|
|
52
52
|
"stats": {
|
|
53
53
|
"compact": {
|
|
54
54
|
"toolCount": 20,
|
|
55
|
-
"schemaBytes":
|
|
55
|
+
"schemaBytes": 63565
|
|
56
56
|
},
|
|
57
57
|
"hybrid": {
|
|
58
58
|
"toolCount": 49,
|
|
59
|
-
"schemaBytes":
|
|
59
|
+
"schemaBytes": 144447
|
|
60
60
|
},
|
|
61
61
|
"full": {
|
|
62
|
-
"toolCount":
|
|
63
|
-
"schemaBytes":
|
|
62
|
+
"toolCount": 162,
|
|
63
|
+
"schemaBytes": 582689
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"tools": [
|
|
@@ -391,7 +391,7 @@
|
|
|
391
391
|
{
|
|
392
392
|
"name": "dodo_read",
|
|
393
393
|
"title": "Read workspace state",
|
|
394
|
-
"description": "Gateway: read-only workspace access: files, search, symbols, jobs, history and agent notes. Set operation to one of: list_files, read_files, read_image, read_instructions, search_code, glob_files, symbols, references, diagnostics, change_history, approval_status, environment_info, todo_read, handoff_read, job_status, job_output, job_wait, list_jobs, restore_status, checkpoint_list, checkpoint_inspect, recovery_session_list, recovery_session_inspect, deployment_targets, deployment_list, deployment_inspect, deployment_compare. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
394
|
+
"description": "Gateway: read-only workspace access: files, search, symbols, jobs, history and agent notes. Set operation to one of: list_files, read_files, read_image, read_instructions, search_code, glob_files, symbols, references, diagnostics, change_history, approval_status, environment_info, todo_read, handoff_read, job_status, job_output, job_wait, list_jobs, recovery_storage_status, restore_status, checkpoint_list, checkpoint_inspect, recovery_session_list, recovery_session_inspect, deployment_targets, deployment_list, deployment_inspect, deployment_compare. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
395
395
|
"requiredScope": "dodo:read",
|
|
396
396
|
"annotations": {
|
|
397
397
|
"readOnlyHint": true,
|
|
@@ -419,6 +419,7 @@
|
|
|
419
419
|
"job_output",
|
|
420
420
|
"job_wait",
|
|
421
421
|
"list_jobs",
|
|
422
|
+
"recovery_storage_status",
|
|
422
423
|
"restore_status",
|
|
423
424
|
"checkpoint_list",
|
|
424
425
|
"checkpoint_inspect",
|
|
@@ -483,6 +484,7 @@
|
|
|
483
484
|
"job_output",
|
|
484
485
|
"job_wait",
|
|
485
486
|
"list_jobs",
|
|
487
|
+
"recovery_storage_status",
|
|
486
488
|
"restore_status",
|
|
487
489
|
"checkpoint_list",
|
|
488
490
|
"checkpoint_inspect",
|
|
@@ -613,7 +615,7 @@
|
|
|
613
615
|
{
|
|
614
616
|
"name": "dodo_write",
|
|
615
617
|
"title": "Change workspace files",
|
|
616
|
-
"description": "Gateway: hash-verified, journaled file changes: write/edit/patch, preview→apply→rollback, todos and handoff. Set operation to one of: write_file, edit_file, apply_patch, replace_in_files, delete_path, move_path, make_directory, preview_changes, apply_changes, rollback_changes, preview_rename, todo_write, handoff_write, agent_write, agent_snapshot_rollback, checkpoint_create, recovery_session_begin, recovery_session_end, restore_preview, restore_apply. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
618
|
+
"description": "Gateway: hash-verified, journaled file changes: write/edit/patch, preview→apply→rollback, todos and handoff. Set operation to one of: write_file, edit_file, apply_patch, replace_in_files, delete_path, move_path, make_directory, preview_changes, apply_changes, rollback_changes, preview_rename, todo_write, handoff_write, agent_write, agent_snapshot_rollback, recovery_cleanup_preview, recovery_settings_preview, recovery_maintenance_apply, checkpoint_create, recovery_session_begin, recovery_session_end, restore_preview, restore_apply. Put that operation's own arguments in args (never workspaceId/workspaceEpoch — they come from the top level only). Identical authorization to calling the operation directly: its own OAuth scope, workspace access, trust policy, local approvals, path/secret guards, hash checks and audit all apply. Call dodo_discover with operation=\"<name>\" for the exact input schema.",
|
|
617
619
|
"requiredScope": "dodo:write",
|
|
618
620
|
"annotations": {
|
|
619
621
|
"readOnlyHint": false,
|
|
@@ -638,6 +640,9 @@
|
|
|
638
640
|
"handoff_write",
|
|
639
641
|
"agent_write",
|
|
640
642
|
"agent_snapshot_rollback",
|
|
643
|
+
"recovery_cleanup_preview",
|
|
644
|
+
"recovery_settings_preview",
|
|
645
|
+
"recovery_maintenance_apply",
|
|
641
646
|
"checkpoint_create",
|
|
642
647
|
"recovery_session_begin",
|
|
643
648
|
"recovery_session_end",
|
|
@@ -695,6 +700,9 @@
|
|
|
695
700
|
"handoff_write",
|
|
696
701
|
"agent_write",
|
|
697
702
|
"agent_snapshot_rollback",
|
|
703
|
+
"recovery_cleanup_preview",
|
|
704
|
+
"recovery_settings_preview",
|
|
705
|
+
"recovery_maintenance_apply",
|
|
698
706
|
"checkpoint_create",
|
|
699
707
|
"recovery_session_begin",
|
|
700
708
|
"recovery_session_end",
|