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
package/schemas/tools.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "GENERATED from src/tools — do not edit by hand. Complete DODO capability contract; optional feature metadata describes definitions filtered from the default live MCP catalog.",
|
|
3
3
|
"version": 1,
|
|
4
|
-
"toolCount":
|
|
5
|
-
"defaultLiveToolCount":
|
|
4
|
+
"toolCount": 162,
|
|
5
|
+
"defaultLiveToolCount": 158,
|
|
6
6
|
"optionalMcpFeatures": {
|
|
7
7
|
"subagents": {
|
|
8
8
|
"configKey": "exposeSubagentsToMcp",
|
|
@@ -38453,6 +38453,686 @@
|
|
|
38453
38453
|
"additionalProperties": false
|
|
38454
38454
|
}
|
|
38455
38455
|
},
|
|
38456
|
+
{
|
|
38457
|
+
"name": "recovery_storage_status",
|
|
38458
|
+
"title": "recovery storage status",
|
|
38459
|
+
"description": "Inspect Recovery quotas, unique source storage versus logical checkpoint sizes, pending cleanup and caller-owned checkpoints. Never exposes private backup paths.",
|
|
38460
|
+
"requiredScope": "dodo:read",
|
|
38461
|
+
"annotations": {
|
|
38462
|
+
"readOnlyHint": true,
|
|
38463
|
+
"destructiveHint": false,
|
|
38464
|
+
"idempotentHint": true,
|
|
38465
|
+
"openWorldHint": false
|
|
38466
|
+
},
|
|
38467
|
+
"inputSchema": {
|
|
38468
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38469
|
+
"type": "object",
|
|
38470
|
+
"properties": {
|
|
38471
|
+
"recoverySessionId": {
|
|
38472
|
+
"description": "Explicit caller-owned recovery session for this operation; never an authorization grant",
|
|
38473
|
+
"type": "string",
|
|
38474
|
+
"minLength": 1,
|
|
38475
|
+
"maxLength": 128
|
|
38476
|
+
},
|
|
38477
|
+
"targetProjectId": {
|
|
38478
|
+
"description": "Explicit owner-registered target; use its project_overview context",
|
|
38479
|
+
"type": "string",
|
|
38480
|
+
"pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
|
|
38481
|
+
},
|
|
38482
|
+
"targetProject": {
|
|
38483
|
+
"description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
|
|
38484
|
+
"type": "string",
|
|
38485
|
+
"minLength": 1,
|
|
38486
|
+
"maxLength": 120
|
|
38487
|
+
},
|
|
38488
|
+
"workspaceId": {
|
|
38489
|
+
"type": "string",
|
|
38490
|
+
"minLength": 1,
|
|
38491
|
+
"maxLength": 128,
|
|
38492
|
+
"description": "Workspace id from project_overview"
|
|
38493
|
+
},
|
|
38494
|
+
"workspaceEpoch": {
|
|
38495
|
+
"type": "string",
|
|
38496
|
+
"minLength": 1,
|
|
38497
|
+
"maxLength": 128,
|
|
38498
|
+
"description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
|
|
38499
|
+
},
|
|
38500
|
+
"cursor": {
|
|
38501
|
+
"default": 0,
|
|
38502
|
+
"type": "integer",
|
|
38503
|
+
"minimum": 0,
|
|
38504
|
+
"maximum": 1000000
|
|
38505
|
+
},
|
|
38506
|
+
"limit": {
|
|
38507
|
+
"default": 20,
|
|
38508
|
+
"type": "integer",
|
|
38509
|
+
"minimum": 1,
|
|
38510
|
+
"maximum": 100
|
|
38511
|
+
},
|
|
38512
|
+
"planId": {
|
|
38513
|
+
"type": "string",
|
|
38514
|
+
"minLength": 1,
|
|
38515
|
+
"maxLength": 128
|
|
38516
|
+
}
|
|
38517
|
+
},
|
|
38518
|
+
"required": [
|
|
38519
|
+
"workspaceId",
|
|
38520
|
+
"workspaceEpoch",
|
|
38521
|
+
"cursor",
|
|
38522
|
+
"limit"
|
|
38523
|
+
],
|
|
38524
|
+
"additionalProperties": false
|
|
38525
|
+
},
|
|
38526
|
+
"outputSchema": {
|
|
38527
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38528
|
+
"type": "object",
|
|
38529
|
+
"properties": {
|
|
38530
|
+
"ok": {
|
|
38531
|
+
"type": "boolean"
|
|
38532
|
+
},
|
|
38533
|
+
"workspaceId": {
|
|
38534
|
+
"type": [
|
|
38535
|
+
"string",
|
|
38536
|
+
"null"
|
|
38537
|
+
]
|
|
38538
|
+
},
|
|
38539
|
+
"workspaceEpoch": {
|
|
38540
|
+
"type": [
|
|
38541
|
+
"string",
|
|
38542
|
+
"null"
|
|
38543
|
+
]
|
|
38544
|
+
},
|
|
38545
|
+
"data": {
|
|
38546
|
+
"anyOf": [
|
|
38547
|
+
{
|
|
38548
|
+
"type": "object",
|
|
38549
|
+
"properties": {},
|
|
38550
|
+
"additionalProperties": {}
|
|
38551
|
+
},
|
|
38552
|
+
{
|
|
38553
|
+
"type": "null"
|
|
38554
|
+
}
|
|
38555
|
+
]
|
|
38556
|
+
},
|
|
38557
|
+
"error": {
|
|
38558
|
+
"anyOf": [
|
|
38559
|
+
{
|
|
38560
|
+
"type": "object",
|
|
38561
|
+
"properties": {
|
|
38562
|
+
"code": {
|
|
38563
|
+
"type": "string"
|
|
38564
|
+
},
|
|
38565
|
+
"message": {
|
|
38566
|
+
"type": "string"
|
|
38567
|
+
},
|
|
38568
|
+
"retryable": {
|
|
38569
|
+
"type": "boolean"
|
|
38570
|
+
},
|
|
38571
|
+
"recovery": {
|
|
38572
|
+
"type": "string"
|
|
38573
|
+
},
|
|
38574
|
+
"detail": {
|
|
38575
|
+
"type": "object",
|
|
38576
|
+
"propertyNames": {
|
|
38577
|
+
"type": "string"
|
|
38578
|
+
},
|
|
38579
|
+
"additionalProperties": {}
|
|
38580
|
+
}
|
|
38581
|
+
},
|
|
38582
|
+
"required": [
|
|
38583
|
+
"code",
|
|
38584
|
+
"message",
|
|
38585
|
+
"retryable"
|
|
38586
|
+
],
|
|
38587
|
+
"additionalProperties": false
|
|
38588
|
+
},
|
|
38589
|
+
{
|
|
38590
|
+
"type": "null"
|
|
38591
|
+
}
|
|
38592
|
+
]
|
|
38593
|
+
},
|
|
38594
|
+
"warnings": {
|
|
38595
|
+
"type": "array",
|
|
38596
|
+
"items": {
|
|
38597
|
+
"type": "string"
|
|
38598
|
+
}
|
|
38599
|
+
},
|
|
38600
|
+
"truncated": {
|
|
38601
|
+
"type": "boolean"
|
|
38602
|
+
},
|
|
38603
|
+
"nextCursor": {
|
|
38604
|
+
"type": [
|
|
38605
|
+
"string",
|
|
38606
|
+
"null"
|
|
38607
|
+
]
|
|
38608
|
+
}
|
|
38609
|
+
},
|
|
38610
|
+
"required": [
|
|
38611
|
+
"ok",
|
|
38612
|
+
"workspaceId",
|
|
38613
|
+
"workspaceEpoch",
|
|
38614
|
+
"data",
|
|
38615
|
+
"error",
|
|
38616
|
+
"warnings",
|
|
38617
|
+
"truncated",
|
|
38618
|
+
"nextCursor"
|
|
38619
|
+
],
|
|
38620
|
+
"additionalProperties": false
|
|
38621
|
+
}
|
|
38622
|
+
},
|
|
38623
|
+
{
|
|
38624
|
+
"name": "recovery_cleanup_preview",
|
|
38625
|
+
"title": "recovery cleanup preview",
|
|
38626
|
+
"description": "Preview deletion of up to 100 caller-owned checkpoints, retention cleanup, or retry of pending physical cleanup. Does not delete files. Protected/current points and incomplete session selections cannot be deleted. Apply needs separate owner approval even in trusted mode.",
|
|
38627
|
+
"requiredScope": "dodo:write",
|
|
38628
|
+
"annotations": {
|
|
38629
|
+
"readOnlyHint": false,
|
|
38630
|
+
"destructiveHint": false,
|
|
38631
|
+
"idempotentHint": false,
|
|
38632
|
+
"openWorldHint": false
|
|
38633
|
+
},
|
|
38634
|
+
"inputSchema": {
|
|
38635
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38636
|
+
"type": "object",
|
|
38637
|
+
"properties": {
|
|
38638
|
+
"recoverySessionId": {
|
|
38639
|
+
"description": "Explicit caller-owned recovery session for this operation; never an authorization grant",
|
|
38640
|
+
"type": "string",
|
|
38641
|
+
"minLength": 1,
|
|
38642
|
+
"maxLength": 128
|
|
38643
|
+
},
|
|
38644
|
+
"targetProjectId": {
|
|
38645
|
+
"description": "Explicit owner-registered target; use its project_overview context",
|
|
38646
|
+
"type": "string",
|
|
38647
|
+
"pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
|
|
38648
|
+
},
|
|
38649
|
+
"targetProject": {
|
|
38650
|
+
"description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
|
|
38651
|
+
"type": "string",
|
|
38652
|
+
"minLength": 1,
|
|
38653
|
+
"maxLength": 120
|
|
38654
|
+
},
|
|
38655
|
+
"workspaceId": {
|
|
38656
|
+
"type": "string",
|
|
38657
|
+
"minLength": 1,
|
|
38658
|
+
"maxLength": 128,
|
|
38659
|
+
"description": "Workspace id from project_overview"
|
|
38660
|
+
},
|
|
38661
|
+
"workspaceEpoch": {
|
|
38662
|
+
"type": "string",
|
|
38663
|
+
"minLength": 1,
|
|
38664
|
+
"maxLength": 128,
|
|
38665
|
+
"description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
|
|
38666
|
+
},
|
|
38667
|
+
"mode": {
|
|
38668
|
+
"default": "selected",
|
|
38669
|
+
"type": "string",
|
|
38670
|
+
"enum": [
|
|
38671
|
+
"selected",
|
|
38672
|
+
"retention",
|
|
38673
|
+
"pending"
|
|
38674
|
+
]
|
|
38675
|
+
},
|
|
38676
|
+
"checkpointIds": {
|
|
38677
|
+
"default": [],
|
|
38678
|
+
"maxItems": 100,
|
|
38679
|
+
"type": "array",
|
|
38680
|
+
"items": {
|
|
38681
|
+
"type": "string",
|
|
38682
|
+
"minLength": 1,
|
|
38683
|
+
"maxLength": 128
|
|
38684
|
+
}
|
|
38685
|
+
}
|
|
38686
|
+
},
|
|
38687
|
+
"required": [
|
|
38688
|
+
"workspaceId",
|
|
38689
|
+
"workspaceEpoch",
|
|
38690
|
+
"mode",
|
|
38691
|
+
"checkpointIds"
|
|
38692
|
+
],
|
|
38693
|
+
"additionalProperties": false
|
|
38694
|
+
},
|
|
38695
|
+
"outputSchema": {
|
|
38696
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38697
|
+
"type": "object",
|
|
38698
|
+
"properties": {
|
|
38699
|
+
"ok": {
|
|
38700
|
+
"type": "boolean"
|
|
38701
|
+
},
|
|
38702
|
+
"workspaceId": {
|
|
38703
|
+
"type": [
|
|
38704
|
+
"string",
|
|
38705
|
+
"null"
|
|
38706
|
+
]
|
|
38707
|
+
},
|
|
38708
|
+
"workspaceEpoch": {
|
|
38709
|
+
"type": [
|
|
38710
|
+
"string",
|
|
38711
|
+
"null"
|
|
38712
|
+
]
|
|
38713
|
+
},
|
|
38714
|
+
"data": {
|
|
38715
|
+
"anyOf": [
|
|
38716
|
+
{
|
|
38717
|
+
"type": "object",
|
|
38718
|
+
"properties": {},
|
|
38719
|
+
"additionalProperties": {}
|
|
38720
|
+
},
|
|
38721
|
+
{
|
|
38722
|
+
"type": "null"
|
|
38723
|
+
}
|
|
38724
|
+
]
|
|
38725
|
+
},
|
|
38726
|
+
"error": {
|
|
38727
|
+
"anyOf": [
|
|
38728
|
+
{
|
|
38729
|
+
"type": "object",
|
|
38730
|
+
"properties": {
|
|
38731
|
+
"code": {
|
|
38732
|
+
"type": "string"
|
|
38733
|
+
},
|
|
38734
|
+
"message": {
|
|
38735
|
+
"type": "string"
|
|
38736
|
+
},
|
|
38737
|
+
"retryable": {
|
|
38738
|
+
"type": "boolean"
|
|
38739
|
+
},
|
|
38740
|
+
"recovery": {
|
|
38741
|
+
"type": "string"
|
|
38742
|
+
},
|
|
38743
|
+
"detail": {
|
|
38744
|
+
"type": "object",
|
|
38745
|
+
"propertyNames": {
|
|
38746
|
+
"type": "string"
|
|
38747
|
+
},
|
|
38748
|
+
"additionalProperties": {}
|
|
38749
|
+
}
|
|
38750
|
+
},
|
|
38751
|
+
"required": [
|
|
38752
|
+
"code",
|
|
38753
|
+
"message",
|
|
38754
|
+
"retryable"
|
|
38755
|
+
],
|
|
38756
|
+
"additionalProperties": false
|
|
38757
|
+
},
|
|
38758
|
+
{
|
|
38759
|
+
"type": "null"
|
|
38760
|
+
}
|
|
38761
|
+
]
|
|
38762
|
+
},
|
|
38763
|
+
"warnings": {
|
|
38764
|
+
"type": "array",
|
|
38765
|
+
"items": {
|
|
38766
|
+
"type": "string"
|
|
38767
|
+
}
|
|
38768
|
+
},
|
|
38769
|
+
"truncated": {
|
|
38770
|
+
"type": "boolean"
|
|
38771
|
+
},
|
|
38772
|
+
"nextCursor": {
|
|
38773
|
+
"type": [
|
|
38774
|
+
"string",
|
|
38775
|
+
"null"
|
|
38776
|
+
]
|
|
38777
|
+
}
|
|
38778
|
+
},
|
|
38779
|
+
"required": [
|
|
38780
|
+
"ok",
|
|
38781
|
+
"workspaceId",
|
|
38782
|
+
"workspaceEpoch",
|
|
38783
|
+
"data",
|
|
38784
|
+
"error",
|
|
38785
|
+
"warnings",
|
|
38786
|
+
"truncated",
|
|
38787
|
+
"nextCursor"
|
|
38788
|
+
],
|
|
38789
|
+
"additionalProperties": false
|
|
38790
|
+
}
|
|
38791
|
+
},
|
|
38792
|
+
{
|
|
38793
|
+
"name": "recovery_settings_preview",
|
|
38794
|
+
"title": "recovery settings preview",
|
|
38795
|
+
"description": "Propose project backup quota, retention and relative exclusion paths (e.g. models). Does not change policy. Cannot disable Recovery or change private destinations. Exclusions affect future coverage only; owner approval required to apply.",
|
|
38796
|
+
"requiredScope": "dodo:write",
|
|
38797
|
+
"annotations": {
|
|
38798
|
+
"readOnlyHint": false,
|
|
38799
|
+
"destructiveHint": false,
|
|
38800
|
+
"idempotentHint": false,
|
|
38801
|
+
"openWorldHint": false
|
|
38802
|
+
},
|
|
38803
|
+
"inputSchema": {
|
|
38804
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38805
|
+
"type": "object",
|
|
38806
|
+
"properties": {
|
|
38807
|
+
"recoverySessionId": {
|
|
38808
|
+
"description": "Explicit caller-owned recovery session for this operation; never an authorization grant",
|
|
38809
|
+
"type": "string",
|
|
38810
|
+
"minLength": 1,
|
|
38811
|
+
"maxLength": 128
|
|
38812
|
+
},
|
|
38813
|
+
"targetProjectId": {
|
|
38814
|
+
"description": "Explicit owner-registered target; use its project_overview context",
|
|
38815
|
+
"type": "string",
|
|
38816
|
+
"pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
|
|
38817
|
+
},
|
|
38818
|
+
"targetProject": {
|
|
38819
|
+
"description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
|
|
38820
|
+
"type": "string",
|
|
38821
|
+
"minLength": 1,
|
|
38822
|
+
"maxLength": 120
|
|
38823
|
+
},
|
|
38824
|
+
"workspaceId": {
|
|
38825
|
+
"type": "string",
|
|
38826
|
+
"minLength": 1,
|
|
38827
|
+
"maxLength": 128,
|
|
38828
|
+
"description": "Workspace id from project_overview"
|
|
38829
|
+
},
|
|
38830
|
+
"workspaceEpoch": {
|
|
38831
|
+
"type": "string",
|
|
38832
|
+
"minLength": 1,
|
|
38833
|
+
"maxLength": 128,
|
|
38834
|
+
"description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
|
|
38835
|
+
},
|
|
38836
|
+
"changes": {
|
|
38837
|
+
"type": "object",
|
|
38838
|
+
"properties": {
|
|
38839
|
+
"projectBytes": {
|
|
38840
|
+
"type": "integer",
|
|
38841
|
+
"minimum": 1048576,
|
|
38842
|
+
"maximum": 107374182400
|
|
38843
|
+
},
|
|
38844
|
+
"retentionDays": {
|
|
38845
|
+
"type": "integer",
|
|
38846
|
+
"minimum": 1,
|
|
38847
|
+
"maximum": 3650
|
|
38848
|
+
},
|
|
38849
|
+
"retainedPoints": {
|
|
38850
|
+
"type": "integer",
|
|
38851
|
+
"minimum": 1,
|
|
38852
|
+
"maximum": 10000
|
|
38853
|
+
},
|
|
38854
|
+
"excludePaths": {
|
|
38855
|
+
"maxItems": 100,
|
|
38856
|
+
"type": "array",
|
|
38857
|
+
"items": {
|
|
38858
|
+
"type": "string",
|
|
38859
|
+
"minLength": 1,
|
|
38860
|
+
"maxLength": 1024
|
|
38861
|
+
}
|
|
38862
|
+
}
|
|
38863
|
+
},
|
|
38864
|
+
"additionalProperties": false
|
|
38865
|
+
}
|
|
38866
|
+
},
|
|
38867
|
+
"required": [
|
|
38868
|
+
"workspaceId",
|
|
38869
|
+
"workspaceEpoch",
|
|
38870
|
+
"changes"
|
|
38871
|
+
],
|
|
38872
|
+
"additionalProperties": false
|
|
38873
|
+
},
|
|
38874
|
+
"outputSchema": {
|
|
38875
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38876
|
+
"type": "object",
|
|
38877
|
+
"properties": {
|
|
38878
|
+
"ok": {
|
|
38879
|
+
"type": "boolean"
|
|
38880
|
+
},
|
|
38881
|
+
"workspaceId": {
|
|
38882
|
+
"type": [
|
|
38883
|
+
"string",
|
|
38884
|
+
"null"
|
|
38885
|
+
]
|
|
38886
|
+
},
|
|
38887
|
+
"workspaceEpoch": {
|
|
38888
|
+
"type": [
|
|
38889
|
+
"string",
|
|
38890
|
+
"null"
|
|
38891
|
+
]
|
|
38892
|
+
},
|
|
38893
|
+
"data": {
|
|
38894
|
+
"anyOf": [
|
|
38895
|
+
{
|
|
38896
|
+
"type": "object",
|
|
38897
|
+
"properties": {},
|
|
38898
|
+
"additionalProperties": {}
|
|
38899
|
+
},
|
|
38900
|
+
{
|
|
38901
|
+
"type": "null"
|
|
38902
|
+
}
|
|
38903
|
+
]
|
|
38904
|
+
},
|
|
38905
|
+
"error": {
|
|
38906
|
+
"anyOf": [
|
|
38907
|
+
{
|
|
38908
|
+
"type": "object",
|
|
38909
|
+
"properties": {
|
|
38910
|
+
"code": {
|
|
38911
|
+
"type": "string"
|
|
38912
|
+
},
|
|
38913
|
+
"message": {
|
|
38914
|
+
"type": "string"
|
|
38915
|
+
},
|
|
38916
|
+
"retryable": {
|
|
38917
|
+
"type": "boolean"
|
|
38918
|
+
},
|
|
38919
|
+
"recovery": {
|
|
38920
|
+
"type": "string"
|
|
38921
|
+
},
|
|
38922
|
+
"detail": {
|
|
38923
|
+
"type": "object",
|
|
38924
|
+
"propertyNames": {
|
|
38925
|
+
"type": "string"
|
|
38926
|
+
},
|
|
38927
|
+
"additionalProperties": {}
|
|
38928
|
+
}
|
|
38929
|
+
},
|
|
38930
|
+
"required": [
|
|
38931
|
+
"code",
|
|
38932
|
+
"message",
|
|
38933
|
+
"retryable"
|
|
38934
|
+
],
|
|
38935
|
+
"additionalProperties": false
|
|
38936
|
+
},
|
|
38937
|
+
{
|
|
38938
|
+
"type": "null"
|
|
38939
|
+
}
|
|
38940
|
+
]
|
|
38941
|
+
},
|
|
38942
|
+
"warnings": {
|
|
38943
|
+
"type": "array",
|
|
38944
|
+
"items": {
|
|
38945
|
+
"type": "string"
|
|
38946
|
+
}
|
|
38947
|
+
},
|
|
38948
|
+
"truncated": {
|
|
38949
|
+
"type": "boolean"
|
|
38950
|
+
},
|
|
38951
|
+
"nextCursor": {
|
|
38952
|
+
"type": [
|
|
38953
|
+
"string",
|
|
38954
|
+
"null"
|
|
38955
|
+
]
|
|
38956
|
+
}
|
|
38957
|
+
},
|
|
38958
|
+
"required": [
|
|
38959
|
+
"ok",
|
|
38960
|
+
"workspaceId",
|
|
38961
|
+
"workspaceEpoch",
|
|
38962
|
+
"data",
|
|
38963
|
+
"error",
|
|
38964
|
+
"warnings",
|
|
38965
|
+
"truncated",
|
|
38966
|
+
"nextCursor"
|
|
38967
|
+
],
|
|
38968
|
+
"additionalProperties": false
|
|
38969
|
+
}
|
|
38970
|
+
},
|
|
38971
|
+
{
|
|
38972
|
+
"name": "recovery_maintenance_apply",
|
|
38973
|
+
"title": "recovery maintenance apply",
|
|
38974
|
+
"description": "Apply exactly a reviewed Recovery cleanup/settings plan and hash. Requires owner approval even in trusted mode. Keeps current/pinned/referenced checkpoints, caller ownership and live ACL checks. Never repairs corruption by accepting it. Retry with the same idempotency key returns the receipt.",
|
|
38975
|
+
"requiredScope": "dodo:write",
|
|
38976
|
+
"annotations": {
|
|
38977
|
+
"readOnlyHint": false,
|
|
38978
|
+
"destructiveHint": true,
|
|
38979
|
+
"idempotentHint": true,
|
|
38980
|
+
"openWorldHint": false
|
|
38981
|
+
},
|
|
38982
|
+
"inputSchema": {
|
|
38983
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
38984
|
+
"type": "object",
|
|
38985
|
+
"properties": {
|
|
38986
|
+
"recoverySessionId": {
|
|
38987
|
+
"description": "Explicit caller-owned recovery session for this operation; never an authorization grant",
|
|
38988
|
+
"type": "string",
|
|
38989
|
+
"minLength": 1,
|
|
38990
|
+
"maxLength": 128
|
|
38991
|
+
},
|
|
38992
|
+
"targetProjectId": {
|
|
38993
|
+
"description": "Explicit owner-registered target; use its project_overview context",
|
|
38994
|
+
"type": "string",
|
|
38995
|
+
"pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
|
|
38996
|
+
},
|
|
38997
|
+
"targetProject": {
|
|
38998
|
+
"description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
|
|
38999
|
+
"type": "string",
|
|
39000
|
+
"minLength": 1,
|
|
39001
|
+
"maxLength": 120
|
|
39002
|
+
},
|
|
39003
|
+
"workspaceId": {
|
|
39004
|
+
"type": "string",
|
|
39005
|
+
"minLength": 1,
|
|
39006
|
+
"maxLength": 128,
|
|
39007
|
+
"description": "Workspace id from project_overview"
|
|
39008
|
+
},
|
|
39009
|
+
"workspaceEpoch": {
|
|
39010
|
+
"type": "string",
|
|
39011
|
+
"minLength": 1,
|
|
39012
|
+
"maxLength": 128,
|
|
39013
|
+
"description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
|
|
39014
|
+
},
|
|
39015
|
+
"planId": {
|
|
39016
|
+
"type": "string",
|
|
39017
|
+
"minLength": 1,
|
|
39018
|
+
"maxLength": 128
|
|
39019
|
+
},
|
|
39020
|
+
"planHash": {
|
|
39021
|
+
"type": "string",
|
|
39022
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
39023
|
+
},
|
|
39024
|
+
"idempotencyKey": {
|
|
39025
|
+
"type": "string",
|
|
39026
|
+
"minLength": 8,
|
|
39027
|
+
"maxLength": 128
|
|
39028
|
+
}
|
|
39029
|
+
},
|
|
39030
|
+
"required": [
|
|
39031
|
+
"workspaceId",
|
|
39032
|
+
"workspaceEpoch",
|
|
39033
|
+
"planId",
|
|
39034
|
+
"planHash",
|
|
39035
|
+
"idempotencyKey"
|
|
39036
|
+
],
|
|
39037
|
+
"additionalProperties": false
|
|
39038
|
+
},
|
|
39039
|
+
"outputSchema": {
|
|
39040
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
39041
|
+
"type": "object",
|
|
39042
|
+
"properties": {
|
|
39043
|
+
"ok": {
|
|
39044
|
+
"type": "boolean"
|
|
39045
|
+
},
|
|
39046
|
+
"workspaceId": {
|
|
39047
|
+
"type": [
|
|
39048
|
+
"string",
|
|
39049
|
+
"null"
|
|
39050
|
+
]
|
|
39051
|
+
},
|
|
39052
|
+
"workspaceEpoch": {
|
|
39053
|
+
"type": [
|
|
39054
|
+
"string",
|
|
39055
|
+
"null"
|
|
39056
|
+
]
|
|
39057
|
+
},
|
|
39058
|
+
"data": {
|
|
39059
|
+
"anyOf": [
|
|
39060
|
+
{
|
|
39061
|
+
"type": "object",
|
|
39062
|
+
"properties": {},
|
|
39063
|
+
"additionalProperties": {}
|
|
39064
|
+
},
|
|
39065
|
+
{
|
|
39066
|
+
"type": "null"
|
|
39067
|
+
}
|
|
39068
|
+
]
|
|
39069
|
+
},
|
|
39070
|
+
"error": {
|
|
39071
|
+
"anyOf": [
|
|
39072
|
+
{
|
|
39073
|
+
"type": "object",
|
|
39074
|
+
"properties": {
|
|
39075
|
+
"code": {
|
|
39076
|
+
"type": "string"
|
|
39077
|
+
},
|
|
39078
|
+
"message": {
|
|
39079
|
+
"type": "string"
|
|
39080
|
+
},
|
|
39081
|
+
"retryable": {
|
|
39082
|
+
"type": "boolean"
|
|
39083
|
+
},
|
|
39084
|
+
"recovery": {
|
|
39085
|
+
"type": "string"
|
|
39086
|
+
},
|
|
39087
|
+
"detail": {
|
|
39088
|
+
"type": "object",
|
|
39089
|
+
"propertyNames": {
|
|
39090
|
+
"type": "string"
|
|
39091
|
+
},
|
|
39092
|
+
"additionalProperties": {}
|
|
39093
|
+
}
|
|
39094
|
+
},
|
|
39095
|
+
"required": [
|
|
39096
|
+
"code",
|
|
39097
|
+
"message",
|
|
39098
|
+
"retryable"
|
|
39099
|
+
],
|
|
39100
|
+
"additionalProperties": false
|
|
39101
|
+
},
|
|
39102
|
+
{
|
|
39103
|
+
"type": "null"
|
|
39104
|
+
}
|
|
39105
|
+
]
|
|
39106
|
+
},
|
|
39107
|
+
"warnings": {
|
|
39108
|
+
"type": "array",
|
|
39109
|
+
"items": {
|
|
39110
|
+
"type": "string"
|
|
39111
|
+
}
|
|
39112
|
+
},
|
|
39113
|
+
"truncated": {
|
|
39114
|
+
"type": "boolean"
|
|
39115
|
+
},
|
|
39116
|
+
"nextCursor": {
|
|
39117
|
+
"type": [
|
|
39118
|
+
"string",
|
|
39119
|
+
"null"
|
|
39120
|
+
]
|
|
39121
|
+
}
|
|
39122
|
+
},
|
|
39123
|
+
"required": [
|
|
39124
|
+
"ok",
|
|
39125
|
+
"workspaceId",
|
|
39126
|
+
"workspaceEpoch",
|
|
39127
|
+
"data",
|
|
39128
|
+
"error",
|
|
39129
|
+
"warnings",
|
|
39130
|
+
"truncated",
|
|
39131
|
+
"nextCursor"
|
|
39132
|
+
],
|
|
39133
|
+
"additionalProperties": false
|
|
39134
|
+
}
|
|
39135
|
+
},
|
|
38456
39136
|
{
|
|
38457
39137
|
"name": "restore_status",
|
|
38458
39138
|
"title": "restore status",
|