dodo-mcp 1.0.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +74 -20
  2. package/dist/cli/main.js +152 -28
  3. package/dist/cli/main.js.map +1 -1
  4. package/dist/cli/menu.js +2 -2
  5. package/dist/cli/menu.js.map +1 -1
  6. package/dist/config/globalConfig.js +7 -3
  7. package/dist/config/globalConfig.js.map +1 -1
  8. package/dist/config/tunnelConfig.js +2 -1
  9. package/dist/config/tunnelConfig.js.map +1 -1
  10. package/dist/projects/ownerAdmin.js +86 -0
  11. package/dist/projects/ownerAdmin.js.map +1 -0
  12. package/dist/projects/registry.js +90 -9
  13. package/dist/projects/registry.js.map +1 -1
  14. package/dist/security/projectAccess.js +69 -0
  15. package/dist/security/projectAccess.js.map +1 -0
  16. package/dist/security/projectAuthority.js +5 -1
  17. package/dist/security/projectAuthority.js.map +1 -1
  18. package/dist/server/appServer.js +23 -9
  19. package/dist/server/appServer.js.map +1 -1
  20. package/dist/server/bootstrap.js +9 -1
  21. package/dist/server/bootstrap.js.map +1 -1
  22. package/dist/server/configUi/app.css +8 -0
  23. package/dist/server/configUi/app.js +142 -18
  24. package/dist/server/configUi/index.html +50 -13
  25. package/dist/server/installationRuntime.js +6 -2
  26. package/dist/server/installationRuntime.js.map +1 -1
  27. package/dist/server/instructions.js +1 -1
  28. package/dist/server/instructions.js.map +1 -1
  29. package/dist/server/ipcDispatch.js +3 -0
  30. package/dist/server/ipcDispatch.js.map +1 -1
  31. package/dist/server/localConfig.js +80 -13
  32. package/dist/server/localConfig.js.map +1 -1
  33. package/dist/services/ai/subagents.js +1 -1
  34. package/dist/services/ai/subagents.js.map +1 -1
  35. package/dist/services/android/adbBackend.js +106 -0
  36. package/dist/services/android/adbBackend.js.map +1 -0
  37. package/dist/services/android/androidPolicy.js +61 -0
  38. package/dist/services/android/androidPolicy.js.map +1 -0
  39. package/dist/services/android/androidService.js +444 -0
  40. package/dist/services/android/androidService.js.map +1 -0
  41. package/dist/services/android/protocol.js +39 -0
  42. package/dist/services/android/protocol.js.map +1 -0
  43. package/dist/services/multimodal/storage.js +10 -1
  44. package/dist/services/multimodal/storage.js.map +1 -1
  45. package/dist/services/schedules/scheduleService.js +8 -1
  46. package/dist/services/schedules/scheduleService.js.map +1 -1
  47. package/dist/setup/componentProbes.js +7 -1
  48. package/dist/setup/componentProbes.js.map +1 -1
  49. package/dist/setup/setup.js +11 -1
  50. package/dist/setup/setup.js.map +1 -1
  51. package/dist/store/db.js +14 -0
  52. package/dist/store/db.js.map +1 -1
  53. package/dist/tools/agentRuntimeTools.js +2 -3
  54. package/dist/tools/agentRuntimeTools.js.map +1 -1
  55. package/dist/tools/androidTools.js +113 -0
  56. package/dist/tools/androidTools.js.map +1 -0
  57. package/dist/tools/catalog.js +3 -0
  58. package/dist/tools/catalog.js.map +1 -1
  59. package/dist/tools/context.js +85 -5
  60. package/dist/tools/context.js.map +1 -1
  61. package/dist/tools/projectTools.js +1 -1
  62. package/dist/tools/projectTools.js.map +1 -1
  63. package/dist/tools/surface.js +18 -11
  64. package/dist/tools/surface.js.map +1 -1
  65. package/dist/tunnel/control.js +11 -4
  66. package/dist/tunnel/control.js.map +1 -1
  67. package/dist/tunnel/log.js +32 -0
  68. package/dist/tunnel/log.js.map +1 -1
  69. package/dist/tunnel/supervisor.js +103 -24
  70. package/dist/tunnel/supervisor.js.map +1 -1
  71. package/docs/ANDROID.md +105 -28
  72. package/docs/ARCHITECTURE.md +16 -7
  73. package/docs/AUTH.md +6 -0
  74. package/docs/COMPATIBILITY.md +14 -7
  75. package/docs/MANUAL_ACCEPTANCE.md +40 -6
  76. package/docs/PROJECTS.md +73 -2
  77. package/docs/RELEASE_1.1.0.md +69 -0
  78. package/docs/RELEASE_1.2.0.md +75 -0
  79. package/docs/RELEASE_NOTES.md +30 -0
  80. package/docs/SECURITY.md +45 -6
  81. package/docs/TEST_REPORT.md +96 -0
  82. package/docs/TUNNEL.md +79 -16
  83. package/docs/adr/048-persistent-connection-mode.md +3 -1
  84. package/docs/adr/049-android-adb-control.md +52 -0
  85. package/docs/adr/050-cloudflare-local-and-project-access.md +67 -0
  86. package/docs/adr/README.md +2 -0
  87. package/package.json +6 -2
  88. package/schemas/global-config.schema.json +1 -0
  89. package/schemas/tools.compact.json +312 -9
  90. package/schemas/tools.hybrid.json +485 -152
  91. package/schemas/tools.json +3610 -534
@@ -32,11 +32,10 @@
32
32
  "job_status",
33
33
  "job_output",
34
34
  "job_wait",
35
- "job_cancel",
36
- "list_jobs"
35
+ "job_cancel"
37
36
  ],
38
- "fullToolCount": 125,
39
- "defaultLiveFullToolCount": 121,
37
+ "fullToolCount": 138,
38
+ "defaultLiveFullToolCount": 134,
40
39
  "optionalMcpFeatures": {
41
40
  "subagents": {
42
41
  "configKey": "exposeSubagentsToMcp",
@@ -52,16 +51,16 @@
52
51
  },
53
52
  "stats": {
54
53
  "compact": {
55
- "toolCount": 19,
56
- "schemaBytes": 52317
54
+ "toolCount": 20,
55
+ "schemaBytes": 59073
57
56
  },
58
57
  "hybrid": {
59
58
  "toolCount": 49,
60
- "schemaBytes": 124657
59
+ "schemaBytes": 134966
61
60
  },
62
61
  "full": {
63
- "toolCount": 125,
64
- "schemaBytes": 443030
62
+ "toolCount": 138,
63
+ "schemaBytes": 500538
65
64
  }
66
65
  },
67
66
  "tools": [
@@ -85,6 +84,12 @@
85
84
  "type": "string",
86
85
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
87
86
  },
87
+ "targetProject": {
88
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
89
+ "type": "string",
90
+ "minLength": 1,
91
+ "maxLength": 120
92
+ },
88
93
  "projectId": {
89
94
  "description": "Optional owner-registered project ID for read-only federation; omit to use the active workspace",
90
95
  "type": "string",
@@ -210,6 +215,12 @@
210
215
  "type": "string",
211
216
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
212
217
  },
218
+ "targetProject": {
219
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
220
+ "type": "string",
221
+ "minLength": 1,
222
+ "maxLength": 120
223
+ },
213
224
  "workspaceId": {
214
225
  "type": "string",
215
226
  "minLength": 1,
@@ -235,6 +246,7 @@
235
246
  "exec",
236
247
  "git",
237
248
  "desktop",
249
+ "mobile",
238
250
  "media",
239
251
  "browser",
240
252
  "game",
@@ -405,6 +417,12 @@
405
417
  "type": "string",
406
418
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
407
419
  },
420
+ "targetProject": {
421
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
422
+ "type": "string",
423
+ "minLength": 1,
424
+ "maxLength": 120
425
+ },
408
426
  "workspaceId": {
409
427
  "type": "string",
410
428
  "minLength": 1,
@@ -594,6 +612,12 @@
594
612
  "type": "string",
595
613
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
596
614
  },
615
+ "targetProject": {
616
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
617
+ "type": "string",
618
+ "minLength": 1,
619
+ "maxLength": 120
620
+ },
597
621
  "workspaceId": {
598
622
  "type": "string",
599
623
  "minLength": 1,
@@ -774,6 +798,12 @@
774
798
  "type": "string",
775
799
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
776
800
  },
801
+ "targetProject": {
802
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
803
+ "type": "string",
804
+ "minLength": 1,
805
+ "maxLength": 120
806
+ },
777
807
  "workspaceId": {
778
808
  "type": "string",
779
809
  "minLength": 1,
@@ -942,6 +972,12 @@
942
972
  "type": "string",
943
973
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
944
974
  },
975
+ "targetProject": {
976
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
977
+ "type": "string",
978
+ "minLength": 1,
979
+ "maxLength": 120
980
+ },
945
981
  "workspaceId": {
946
982
  "type": "string",
947
983
  "minLength": 1,
@@ -1102,6 +1138,12 @@
1102
1138
  "type": "string",
1103
1139
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
1104
1140
  },
1141
+ "targetProject": {
1142
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
1143
+ "type": "string",
1144
+ "minLength": 1,
1145
+ "maxLength": 120
1146
+ },
1105
1147
  "workspaceId": {
1106
1148
  "type": "string",
1107
1149
  "minLength": 1,
@@ -1263,6 +1305,12 @@
1263
1305
  "type": "string",
1264
1306
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
1265
1307
  },
1308
+ "targetProject": {
1309
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
1310
+ "type": "string",
1311
+ "minLength": 1,
1312
+ "maxLength": 120
1313
+ },
1266
1314
  "workspaceId": {
1267
1315
  "type": "string",
1268
1316
  "minLength": 1,
@@ -1424,6 +1472,12 @@
1424
1472
  "type": "string",
1425
1473
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
1426
1474
  },
1475
+ "targetProject": {
1476
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
1477
+ "type": "string",
1478
+ "minLength": 1,
1479
+ "maxLength": 120
1480
+ },
1427
1481
  "workspaceId": {
1428
1482
  "type": "string",
1429
1483
  "minLength": 1,
@@ -1606,6 +1660,12 @@
1606
1660
  "type": "string",
1607
1661
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
1608
1662
  },
1663
+ "targetProject": {
1664
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
1665
+ "type": "string",
1666
+ "minLength": 1,
1667
+ "maxLength": 120
1668
+ },
1609
1669
  "workspaceId": {
1610
1670
  "type": "string",
1611
1671
  "minLength": 1,
@@ -1806,6 +1866,12 @@
1806
1866
  "type": "string",
1807
1867
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
1808
1868
  },
1869
+ "targetProject": {
1870
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
1871
+ "type": "string",
1872
+ "minLength": 1,
1873
+ "maxLength": 120
1874
+ },
1809
1875
  "workspaceId": {
1810
1876
  "type": "string",
1811
1877
  "minLength": 1,
@@ -1999,6 +2065,12 @@
1999
2065
  "type": "string",
2000
2066
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2001
2067
  },
2068
+ "targetProject": {
2069
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2070
+ "type": "string",
2071
+ "minLength": 1,
2072
+ "maxLength": 120
2073
+ },
2002
2074
  "workspaceId": {
2003
2075
  "type": "string",
2004
2076
  "minLength": 1,
@@ -2177,6 +2249,12 @@
2177
2249
  "type": "string",
2178
2250
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2179
2251
  },
2252
+ "targetProject": {
2253
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2254
+ "type": "string",
2255
+ "minLength": 1,
2256
+ "maxLength": 120
2257
+ },
2180
2258
  "workspaceId": {
2181
2259
  "type": "string",
2182
2260
  "minLength": 1,
@@ -2339,6 +2417,12 @@
2339
2417
  "type": "string",
2340
2418
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2341
2419
  },
2420
+ "targetProject": {
2421
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2422
+ "type": "string",
2423
+ "minLength": 1,
2424
+ "maxLength": 120
2425
+ },
2342
2426
  "workspaceId": {
2343
2427
  "type": "string",
2344
2428
  "minLength": 1,
@@ -2498,6 +2582,12 @@
2498
2582
  "type": "string",
2499
2583
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2500
2584
  },
2585
+ "targetProject": {
2586
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2587
+ "type": "string",
2588
+ "minLength": 1,
2589
+ "maxLength": 120
2590
+ },
2501
2591
  "workspaceId": {
2502
2592
  "type": "string",
2503
2593
  "minLength": 1,
@@ -2656,6 +2746,12 @@
2656
2746
  "type": "string",
2657
2747
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2658
2748
  },
2749
+ "targetProject": {
2750
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2751
+ "type": "string",
2752
+ "minLength": 1,
2753
+ "maxLength": 120
2754
+ },
2659
2755
  "workspaceId": {
2660
2756
  "type": "string",
2661
2757
  "minLength": 1,
@@ -2814,6 +2910,12 @@
2814
2910
  "type": "string",
2815
2911
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2816
2912
  },
2913
+ "targetProject": {
2914
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
2915
+ "type": "string",
2916
+ "minLength": 1,
2917
+ "maxLength": 120
2918
+ },
2817
2919
  "workspaceId": {
2818
2920
  "type": "string",
2819
2921
  "minLength": 1,
@@ -2972,6 +3074,12 @@
2972
3074
  "type": "string",
2973
3075
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
2974
3076
  },
3077
+ "targetProject": {
3078
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3079
+ "type": "string",
3080
+ "minLength": 1,
3081
+ "maxLength": 120
3082
+ },
2975
3083
  "workspaceId": {
2976
3084
  "type": "string",
2977
3085
  "minLength": 1,
@@ -3130,6 +3238,12 @@
3130
3238
  "type": "string",
3131
3239
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3132
3240
  },
3241
+ "targetProject": {
3242
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3243
+ "type": "string",
3244
+ "minLength": 1,
3245
+ "maxLength": 120
3246
+ },
3133
3247
  "workspaceId": {
3134
3248
  "type": "string",
3135
3249
  "minLength": 1,
@@ -3264,6 +3378,194 @@
3264
3378
  "additionalProperties": false
3265
3379
  }
3266
3380
  },
3381
+ {
3382
+ "name": "dodo_mobile",
3383
+ "title": "Inspect and control Android devices",
3384
+ "description": "Gateway: owner-approved ADB devices: status, screenshots, UI, logs, packages, files, input, apps, APK install and bounded advanced device commands. Set operation to one of: android_status, android_devices, android_device_info, android_capture, android_ui, android_logcat, android_packages, android_file_read, android_action, android_app, android_install, android_push, android_adb. 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.",
3385
+ "requiredScope": "dodo:read",
3386
+ "annotations": {
3387
+ "readOnlyHint": false,
3388
+ "destructiveHint": true,
3389
+ "idempotentHint": false,
3390
+ "openWorldHint": true
3391
+ },
3392
+ "domain": "mobile",
3393
+ "operations": [
3394
+ "android_status",
3395
+ "android_devices",
3396
+ "android_device_info",
3397
+ "android_capture",
3398
+ "android_ui",
3399
+ "android_logcat",
3400
+ "android_packages",
3401
+ "android_file_read",
3402
+ "android_action",
3403
+ "android_app",
3404
+ "android_install",
3405
+ "android_push",
3406
+ "android_adb"
3407
+ ],
3408
+ "inputSchema": {
3409
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3410
+ "type": "object",
3411
+ "properties": {
3412
+ "targetProjectId": {
3413
+ "description": "Explicit owner-registered target; use its project_overview context",
3414
+ "type": "string",
3415
+ "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3416
+ },
3417
+ "targetProject": {
3418
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3419
+ "type": "string",
3420
+ "minLength": 1,
3421
+ "maxLength": 120
3422
+ },
3423
+ "workspaceId": {
3424
+ "type": "string",
3425
+ "minLength": 1,
3426
+ "maxLength": 128,
3427
+ "description": "Workspace id from project_overview"
3428
+ },
3429
+ "workspaceEpoch": {
3430
+ "type": "string",
3431
+ "minLength": 1,
3432
+ "maxLength": 128,
3433
+ "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
3434
+ },
3435
+ "operation": {
3436
+ "type": "string",
3437
+ "enum": [
3438
+ "android_status",
3439
+ "android_devices",
3440
+ "android_device_info",
3441
+ "android_capture",
3442
+ "android_ui",
3443
+ "android_logcat",
3444
+ "android_packages",
3445
+ "android_file_read",
3446
+ "android_action",
3447
+ "android_app",
3448
+ "android_install",
3449
+ "android_push",
3450
+ "android_adb"
3451
+ ],
3452
+ "description": "Target operation to invoke"
3453
+ },
3454
+ "args": {
3455
+ "default": {},
3456
+ "description": "The selected operation's own arguments, exactly as its schema defines (dodo_discover returns it). Never include workspaceId/workspaceEpoch here.",
3457
+ "type": "object",
3458
+ "propertyNames": {
3459
+ "type": "string"
3460
+ },
3461
+ "additionalProperties": {}
3462
+ }
3463
+ },
3464
+ "required": [
3465
+ "workspaceId",
3466
+ "workspaceEpoch",
3467
+ "operation",
3468
+ "args"
3469
+ ],
3470
+ "additionalProperties": false
3471
+ },
3472
+ "outputSchema": {
3473
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3474
+ "type": "object",
3475
+ "properties": {
3476
+ "ok": {
3477
+ "type": "boolean"
3478
+ },
3479
+ "workspaceId": {
3480
+ "type": [
3481
+ "string",
3482
+ "null"
3483
+ ]
3484
+ },
3485
+ "workspaceEpoch": {
3486
+ "type": [
3487
+ "string",
3488
+ "null"
3489
+ ]
3490
+ },
3491
+ "data": {
3492
+ "anyOf": [
3493
+ {
3494
+ "type": "object",
3495
+ "properties": {},
3496
+ "additionalProperties": {}
3497
+ },
3498
+ {
3499
+ "type": "null"
3500
+ }
3501
+ ]
3502
+ },
3503
+ "error": {
3504
+ "anyOf": [
3505
+ {
3506
+ "type": "object",
3507
+ "properties": {
3508
+ "code": {
3509
+ "type": "string"
3510
+ },
3511
+ "message": {
3512
+ "type": "string"
3513
+ },
3514
+ "retryable": {
3515
+ "type": "boolean"
3516
+ },
3517
+ "recovery": {
3518
+ "type": "string"
3519
+ },
3520
+ "detail": {
3521
+ "type": "object",
3522
+ "propertyNames": {
3523
+ "type": "string"
3524
+ },
3525
+ "additionalProperties": {}
3526
+ }
3527
+ },
3528
+ "required": [
3529
+ "code",
3530
+ "message",
3531
+ "retryable"
3532
+ ],
3533
+ "additionalProperties": false
3534
+ },
3535
+ {
3536
+ "type": "null"
3537
+ }
3538
+ ]
3539
+ },
3540
+ "warnings": {
3541
+ "type": "array",
3542
+ "items": {
3543
+ "type": "string"
3544
+ }
3545
+ },
3546
+ "truncated": {
3547
+ "type": "boolean"
3548
+ },
3549
+ "nextCursor": {
3550
+ "type": [
3551
+ "string",
3552
+ "null"
3553
+ ]
3554
+ }
3555
+ },
3556
+ "required": [
3557
+ "ok",
3558
+ "workspaceId",
3559
+ "workspaceEpoch",
3560
+ "data",
3561
+ "error",
3562
+ "warnings",
3563
+ "truncated",
3564
+ "nextCursor"
3565
+ ],
3566
+ "additionalProperties": false
3567
+ }
3568
+ },
3267
3569
  {
3268
3570
  "name": "list_files",
3269
3571
  "title": "List files",
@@ -3284,6 +3586,12 @@
3284
3586
  "type": "string",
3285
3587
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3286
3588
  },
3589
+ "targetProject": {
3590
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3591
+ "type": "string",
3592
+ "minLength": 1,
3593
+ "maxLength": 120
3594
+ },
3287
3595
  "workspaceId": {
3288
3596
  "type": "string",
3289
3597
  "minLength": 1,
@@ -3446,6 +3754,12 @@
3446
3754
  "type": "string",
3447
3755
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3448
3756
  },
3757
+ "targetProject": {
3758
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3759
+ "type": "string",
3760
+ "minLength": 1,
3761
+ "maxLength": 120
3762
+ },
3449
3763
  "workspaceId": {
3450
3764
  "type": "string",
3451
3765
  "minLength": 1,
@@ -3620,6 +3934,12 @@
3620
3934
  "type": "string",
3621
3935
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3622
3936
  },
3937
+ "targetProject": {
3938
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
3939
+ "type": "string",
3940
+ "minLength": 1,
3941
+ "maxLength": 120
3942
+ },
3623
3943
  "workspaceId": {
3624
3944
  "type": "string",
3625
3945
  "minLength": 1,
@@ -3763,6 +4083,12 @@
3763
4083
  "type": "string",
3764
4084
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3765
4085
  },
4086
+ "targetProject": {
4087
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
4088
+ "type": "string",
4089
+ "minLength": 1,
4090
+ "maxLength": 120
4091
+ },
3766
4092
  "workspaceId": {
3767
4093
  "type": "string",
3768
4094
  "minLength": 1,
@@ -3990,6 +4316,12 @@
3990
4316
  "type": "string",
3991
4317
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
3992
4318
  },
4319
+ "targetProject": {
4320
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
4321
+ "type": "string",
4322
+ "minLength": 1,
4323
+ "maxLength": 120
4324
+ },
3993
4325
  "workspaceId": {
3994
4326
  "type": "string",
3995
4327
  "minLength": 1,
@@ -4160,6 +4492,12 @@
4160
4492
  "type": "string",
4161
4493
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4162
4494
  },
4495
+ "targetProject": {
4496
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
4497
+ "type": "string",
4498
+ "minLength": 1,
4499
+ "maxLength": 120
4500
+ },
4163
4501
  "workspaceId": {
4164
4502
  "type": "string",
4165
4503
  "minLength": 1,
@@ -4317,6 +4655,12 @@
4317
4655
  "type": "string",
4318
4656
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4319
4657
  },
4658
+ "targetProject": {
4659
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
4660
+ "type": "string",
4661
+ "minLength": 1,
4662
+ "maxLength": 120
4663
+ },
4320
4664
  "workspaceId": {
4321
4665
  "type": "string",
4322
4666
  "minLength": 1,
@@ -4505,6 +4849,12 @@
4505
4849
  "type": "string",
4506
4850
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4507
4851
  },
4852
+ "targetProject": {
4853
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
4854
+ "type": "string",
4855
+ "minLength": 1,
4856
+ "maxLength": 120
4857
+ },
4508
4858
  "workspaceId": {
4509
4859
  "type": "string",
4510
4860
  "minLength": 1,
@@ -4653,6 +5003,12 @@
4653
5003
  "type": "string",
4654
5004
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4655
5005
  },
5006
+ "targetProject": {
5007
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5008
+ "type": "string",
5009
+ "minLength": 1,
5010
+ "maxLength": 120
5011
+ },
4656
5012
  "workspaceId": {
4657
5013
  "type": "string",
4658
5014
  "minLength": 1,
@@ -4830,6 +5186,12 @@
4830
5186
  "type": "string",
4831
5187
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4832
5188
  },
5189
+ "targetProject": {
5190
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5191
+ "type": "string",
5192
+ "minLength": 1,
5193
+ "maxLength": 120
5194
+ },
4833
5195
  "workspaceId": {
4834
5196
  "type": "string",
4835
5197
  "minLength": 1,
@@ -4975,6 +5337,12 @@
4975
5337
  "type": "string",
4976
5338
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
4977
5339
  },
5340
+ "targetProject": {
5341
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5342
+ "type": "string",
5343
+ "minLength": 1,
5344
+ "maxLength": 120
5345
+ },
4978
5346
  "workspaceId": {
4979
5347
  "type": "string",
4980
5348
  "minLength": 1,
@@ -5121,6 +5489,12 @@
5121
5489
  "type": "string",
5122
5490
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
5123
5491
  },
5492
+ "targetProject": {
5493
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5494
+ "type": "string",
5495
+ "minLength": 1,
5496
+ "maxLength": 120
5497
+ },
5124
5498
  "workspaceId": {
5125
5499
  "type": "string",
5126
5500
  "minLength": 1,
@@ -5262,6 +5636,12 @@
5262
5636
  "type": "string",
5263
5637
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
5264
5638
  },
5639
+ "targetProject": {
5640
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5641
+ "type": "string",
5642
+ "minLength": 1,
5643
+ "maxLength": 120
5644
+ },
5265
5645
  "workspaceId": {
5266
5646
  "type": "string",
5267
5647
  "minLength": 1,
@@ -5419,6 +5799,12 @@
5419
5799
  "type": "string",
5420
5800
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
5421
5801
  },
5802
+ "targetProject": {
5803
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5804
+ "type": "string",
5805
+ "minLength": 1,
5806
+ "maxLength": 120
5807
+ },
5422
5808
  "workspaceId": {
5423
5809
  "type": "string",
5424
5810
  "minLength": 1,
@@ -5579,6 +5965,12 @@
5579
5965
  "type": "string",
5580
5966
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
5581
5967
  },
5968
+ "targetProject": {
5969
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
5970
+ "type": "string",
5971
+ "minLength": 1,
5972
+ "maxLength": 120
5973
+ },
5582
5974
  "workspaceId": {
5583
5975
  "type": "string",
5584
5976
  "minLength": 1,
@@ -5869,6 +6261,12 @@
5869
6261
  "type": "string",
5870
6262
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
5871
6263
  },
6264
+ "targetProject": {
6265
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
6266
+ "type": "string",
6267
+ "minLength": 1,
6268
+ "maxLength": 120
6269
+ },
5872
6270
  "workspaceId": {
5873
6271
  "type": "string",
5874
6272
  "minLength": 1,
@@ -6022,6 +6420,12 @@
6022
6420
  "type": "string",
6023
6421
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6024
6422
  },
6423
+ "targetProject": {
6424
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
6425
+ "type": "string",
6426
+ "minLength": 1,
6427
+ "maxLength": 120
6428
+ },
6025
6429
  "workspaceId": {
6026
6430
  "type": "string",
6027
6431
  "minLength": 1,
@@ -6170,6 +6574,12 @@
6170
6574
  "type": "string",
6171
6575
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6172
6576
  },
6577
+ "targetProject": {
6578
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
6579
+ "type": "string",
6580
+ "minLength": 1,
6581
+ "maxLength": 120
6582
+ },
6173
6583
  "workspaceId": {
6174
6584
  "type": "string",
6175
6585
  "minLength": 1,
@@ -6306,6 +6716,12 @@
6306
6716
  "type": "string",
6307
6717
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6308
6718
  },
6719
+ "targetProject": {
6720
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
6721
+ "type": "string",
6722
+ "minLength": 1,
6723
+ "maxLength": 120
6724
+ },
6309
6725
  "workspaceId": {
6310
6726
  "type": "string",
6311
6727
  "minLength": 1,
@@ -6462,6 +6878,12 @@
6462
6878
  "type": "string",
6463
6879
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6464
6880
  },
6881
+ "targetProject": {
6882
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
6883
+ "type": "string",
6884
+ "minLength": 1,
6885
+ "maxLength": 120
6886
+ },
6465
6887
  "workspaceId": {
6466
6888
  "type": "string",
6467
6889
  "minLength": 1,
@@ -6609,6 +7031,12 @@
6609
7031
  "type": "string",
6610
7032
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6611
7033
  },
7034
+ "targetProject": {
7035
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7036
+ "type": "string",
7037
+ "minLength": 1,
7038
+ "maxLength": 120
7039
+ },
6612
7040
  "workspaceId": {
6613
7041
  "type": "string",
6614
7042
  "minLength": 1,
@@ -6770,6 +7198,12 @@
6770
7198
  "type": "string",
6771
7199
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6772
7200
  },
7201
+ "targetProject": {
7202
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7203
+ "type": "string",
7204
+ "minLength": 1,
7205
+ "maxLength": 120
7206
+ },
6773
7207
  "workspaceId": {
6774
7208
  "type": "string",
6775
7209
  "minLength": 1,
@@ -6956,6 +7390,12 @@
6956
7390
  "type": "string",
6957
7391
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
6958
7392
  },
7393
+ "targetProject": {
7394
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7395
+ "type": "string",
7396
+ "minLength": 1,
7397
+ "maxLength": 120
7398
+ },
6959
7399
  "workspaceId": {
6960
7400
  "type": "string",
6961
7401
  "minLength": 1,
@@ -7143,6 +7583,12 @@
7143
7583
  "type": "string",
7144
7584
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7145
7585
  },
7586
+ "targetProject": {
7587
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7588
+ "type": "string",
7589
+ "minLength": 1,
7590
+ "maxLength": 120
7591
+ },
7146
7592
  "workspaceId": {
7147
7593
  "type": "string",
7148
7594
  "minLength": 1,
@@ -7302,6 +7748,12 @@
7302
7748
  "type": "string",
7303
7749
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7304
7750
  },
7751
+ "targetProject": {
7752
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7753
+ "type": "string",
7754
+ "minLength": 1,
7755
+ "maxLength": 120
7756
+ },
7305
7757
  "workspaceId": {
7306
7758
  "type": "string",
7307
7759
  "minLength": 1,
@@ -7473,6 +7925,12 @@
7473
7925
  "type": "string",
7474
7926
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7475
7927
  },
7928
+ "targetProject": {
7929
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
7930
+ "type": "string",
7931
+ "minLength": 1,
7932
+ "maxLength": 120
7933
+ },
7476
7934
  "workspaceId": {
7477
7935
  "type": "string",
7478
7936
  "minLength": 1,
@@ -7614,6 +8072,12 @@
7614
8072
  "type": "string",
7615
8073
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7616
8074
  },
8075
+ "targetProject": {
8076
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
8077
+ "type": "string",
8078
+ "minLength": 1,
8079
+ "maxLength": 120
8080
+ },
7617
8081
  "workspaceId": {
7618
8082
  "type": "string",
7619
8083
  "minLength": 1,
@@ -7778,6 +8242,12 @@
7778
8242
  "type": "string",
7779
8243
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7780
8244
  },
8245
+ "targetProject": {
8246
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
8247
+ "type": "string",
8248
+ "minLength": 1,
8249
+ "maxLength": 120
8250
+ },
7781
8251
  "workspaceId": {
7782
8252
  "type": "string",
7783
8253
  "minLength": 1,
@@ -7926,6 +8396,12 @@
7926
8396
  "type": "string",
7927
8397
  "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
7928
8398
  },
8399
+ "targetProject": {
8400
+ "description": "Owner-registered project NAME to target (alternative to targetProjectId; must match exactly one project)",
8401
+ "type": "string",
8402
+ "minLength": 1,
8403
+ "maxLength": 120
8404
+ },
7929
8405
  "workspaceId": {
7930
8406
  "type": "string",
7931
8407
  "minLength": 1,
@@ -8046,149 +8522,6 @@
8046
8522
  ],
8047
8523
  "additionalProperties": false
8048
8524
  }
8049
- },
8050
- {
8051
- "name": "list_jobs",
8052
- "title": "List jobs",
8053
- "description": "Recent jobs for this workspace with status and timing.",
8054
- "requiredScope": "dodo:read",
8055
- "annotations": {
8056
- "readOnlyHint": true,
8057
- "destructiveHint": false,
8058
- "idempotentHint": true,
8059
- "openWorldHint": false
8060
- },
8061
- "inputSchema": {
8062
- "$schema": "https://json-schema.org/draft/2020-12/schema",
8063
- "type": "object",
8064
- "properties": {
8065
- "targetProjectId": {
8066
- "description": "Explicit owner-registered target; use its project_overview context",
8067
- "type": "string",
8068
- "pattern": "^prj_[0-9a-hjkmnp-tv-z]{8,64}$"
8069
- },
8070
- "workspaceId": {
8071
- "type": "string",
8072
- "minLength": 1,
8073
- "maxLength": 128,
8074
- "description": "Workspace id from project_overview"
8075
- },
8076
- "workspaceEpoch": {
8077
- "type": "string",
8078
- "minLength": 1,
8079
- "maxLength": 128,
8080
- "description": "Workspace epoch from project_overview (changes on server restart or workspace switch)"
8081
- },
8082
- "limit": {
8083
- "default": 20,
8084
- "type": "integer",
8085
- "minimum": 1,
8086
- "maximum": 100
8087
- }
8088
- },
8089
- "required": [
8090
- "workspaceId",
8091
- "workspaceEpoch",
8092
- "limit"
8093
- ],
8094
- "additionalProperties": false
8095
- },
8096
- "outputSchema": {
8097
- "$schema": "https://json-schema.org/draft/2020-12/schema",
8098
- "type": "object",
8099
- "properties": {
8100
- "ok": {
8101
- "type": "boolean"
8102
- },
8103
- "workspaceId": {
8104
- "type": [
8105
- "string",
8106
- "null"
8107
- ]
8108
- },
8109
- "workspaceEpoch": {
8110
- "type": [
8111
- "string",
8112
- "null"
8113
- ]
8114
- },
8115
- "data": {
8116
- "anyOf": [
8117
- {
8118
- "type": "object",
8119
- "properties": {},
8120
- "additionalProperties": {}
8121
- },
8122
- {
8123
- "type": "null"
8124
- }
8125
- ]
8126
- },
8127
- "error": {
8128
- "anyOf": [
8129
- {
8130
- "type": "object",
8131
- "properties": {
8132
- "code": {
8133
- "type": "string"
8134
- },
8135
- "message": {
8136
- "type": "string"
8137
- },
8138
- "retryable": {
8139
- "type": "boolean"
8140
- },
8141
- "recovery": {
8142
- "type": "string"
8143
- },
8144
- "detail": {
8145
- "type": "object",
8146
- "propertyNames": {
8147
- "type": "string"
8148
- },
8149
- "additionalProperties": {}
8150
- }
8151
- },
8152
- "required": [
8153
- "code",
8154
- "message",
8155
- "retryable"
8156
- ],
8157
- "additionalProperties": false
8158
- },
8159
- {
8160
- "type": "null"
8161
- }
8162
- ]
8163
- },
8164
- "warnings": {
8165
- "type": "array",
8166
- "items": {
8167
- "type": "string"
8168
- }
8169
- },
8170
- "truncated": {
8171
- "type": "boolean"
8172
- },
8173
- "nextCursor": {
8174
- "type": [
8175
- "string",
8176
- "null"
8177
- ]
8178
- }
8179
- },
8180
- "required": [
8181
- "ok",
8182
- "workspaceId",
8183
- "workspaceEpoch",
8184
- "data",
8185
- "error",
8186
- "warnings",
8187
- "truncated",
8188
- "nextCursor"
8189
- ],
8190
- "additionalProperties": false
8191
- }
8192
8525
  }
8193
8526
  ]
8194
8527
  }