dodo-mcp 1.0.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 (447) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +425 -0
  3. package/dist/auth/adapter.js +43 -0
  4. package/dist/auth/adapter.js.map +1 -0
  5. package/dist/auth/clientDeletion.js +45 -0
  6. package/dist/auth/clientDeletion.js.map +1 -0
  7. package/dist/auth/clients.js +55 -0
  8. package/dist/auth/clients.js.map +1 -0
  9. package/dist/auth/constants.js +10 -0
  10. package/dist/auth/constants.js.map +1 -0
  11. package/dist/auth/interactions.js +184 -0
  12. package/dist/auth/interactions.js.map +1 -0
  13. package/dist/auth/keys.js +56 -0
  14. package/dist/auth/keys.js.map +1 -0
  15. package/dist/auth/provider.js +131 -0
  16. package/dist/auth/provider.js.map +1 -0
  17. package/dist/auth/verifier.js +74 -0
  18. package/dist/auth/verifier.js.map +1 -0
  19. package/dist/cli/kill.js +124 -0
  20. package/dist/cli/kill.js.map +1 -0
  21. package/dist/cli/main.js +1393 -0
  22. package/dist/cli/main.js.map +1 -0
  23. package/dist/cli/menu.js +127 -0
  24. package/dist/cli/menu.js.map +1 -0
  25. package/dist/cli/terminal.js +30 -0
  26. package/dist/cli/terminal.js.map +1 -0
  27. package/dist/config/globalConfig.js +144 -0
  28. package/dist/config/globalConfig.js.map +1 -0
  29. package/dist/config/limits.js +42 -0
  30. package/dist/config/limits.js.map +1 -0
  31. package/dist/config/paths.js +94 -0
  32. package/dist/config/paths.js.map +1 -0
  33. package/dist/config/projectConfig.js +63 -0
  34. package/dist/config/projectConfig.js.map +1 -0
  35. package/dist/config/stateImport.js +306 -0
  36. package/dist/config/stateImport.js.map +1 -0
  37. package/dist/config/tunnelConfig.js +23 -0
  38. package/dist/config/tunnelConfig.js.map +1 -0
  39. package/dist/errors.js +82 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/evaluation/contracts.js +86 -0
  42. package/dist/evaluation/contracts.js.map +1 -0
  43. package/dist/evaluation/dodoBench.js +69 -0
  44. package/dist/evaluation/dodoBench.js.map +1 -0
  45. package/dist/index.js +26 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/ipc/authentication.js +117 -0
  48. package/dist/ipc/authentication.js.map +1 -0
  49. package/dist/ipc/client.js +86 -0
  50. package/dist/ipc/client.js.map +1 -0
  51. package/dist/ipc/installationClient.js +83 -0
  52. package/dist/ipc/installationClient.js.map +1 -0
  53. package/dist/ipc/ownerControl.js +46 -0
  54. package/dist/ipc/ownerControl.js.map +1 -0
  55. package/dist/ipc/protocol.js +2 -0
  56. package/dist/ipc/protocol.js.map +1 -0
  57. package/dist/ipc/server.js +108 -0
  58. package/dist/ipc/server.js.map +1 -0
  59. package/dist/platform/execResolve.js +64 -0
  60. package/dist/platform/execResolve.js.map +1 -0
  61. package/dist/platform/fileIdentity.js +26 -0
  62. package/dist/platform/fileIdentity.js.map +1 -0
  63. package/dist/platform/fsRetry.js +22 -0
  64. package/dist/platform/fsRetry.js.map +1 -0
  65. package/dist/platform/pathPolicy.js +29 -0
  66. package/dist/platform/pathPolicy.js.map +1 -0
  67. package/dist/platform/privateFs.js +116 -0
  68. package/dist/platform/privateFs.js.map +1 -0
  69. package/dist/platform/processTree.js +31 -0
  70. package/dist/platform/processTree.js.map +1 -0
  71. package/dist/platform/shell.js +74 -0
  72. package/dist/platform/shell.js.map +1 -0
  73. package/dist/platform/speech.js +94 -0
  74. package/dist/platform/speech.js.map +1 -0
  75. package/dist/platform/system.js +28 -0
  76. package/dist/platform/system.js.map +1 -0
  77. package/dist/platform/windowsSandbox.js +129 -0
  78. package/dist/platform/windowsSandbox.js.map +1 -0
  79. package/dist/projects/federation.js +312 -0
  80. package/dist/projects/federation.js.map +1 -0
  81. package/dist/projects/registry.js +291 -0
  82. package/dist/projects/registry.js.map +1 -0
  83. package/dist/security/accessMode.js +19 -0
  84. package/dist/security/accessMode.js.map +1 -0
  85. package/dist/security/approvals.js +56 -0
  86. package/dist/security/approvals.js.map +1 -0
  87. package/dist/security/env.js +57 -0
  88. package/dist/security/env.js.map +1 -0
  89. package/dist/security/mutationQueue.js +78 -0
  90. package/dist/security/mutationQueue.js.map +1 -0
  91. package/dist/security/policy.js +22 -0
  92. package/dist/security/policy.js.map +1 -0
  93. package/dist/security/projectAuthority.js +22 -0
  94. package/dist/security/projectAuthority.js.map +1 -0
  95. package/dist/security/redact.js +30 -0
  96. package/dist/security/redact.js.map +1 -0
  97. package/dist/server/aiAdmin.js +201 -0
  98. package/dist/server/aiAdmin.js.map +1 -0
  99. package/dist/server/appServer.js +461 -0
  100. package/dist/server/appServer.js.map +1 -0
  101. package/dist/server/bootstrap.js +185 -0
  102. package/dist/server/bootstrap.js.map +1 -0
  103. package/dist/server/configUi/app.css +347 -0
  104. package/dist/server/configUi/app.js +958 -0
  105. package/dist/server/configUi/index.html +379 -0
  106. package/dist/server/configUi/ui/alerts.js +92 -0
  107. package/dist/server/configUi/ui/dom.js +19 -0
  108. package/dist/server/configUi/ui/tooltips.js +115 -0
  109. package/dist/server/configUi/vendor/VERSION.txt +1 -0
  110. package/dist/server/configUi/vendor/sweetalert2.min.css +1 -0
  111. package/dist/server/configUi/vendor/sweetalert2.min.js +5 -0
  112. package/dist/server/configUi/workbench.css +62 -0
  113. package/dist/server/configUi/workbench.js +394 -0
  114. package/dist/server/installationRuntime.js +155 -0
  115. package/dist/server/installationRuntime.js.map +1 -0
  116. package/dist/server/instructions.js +17 -0
  117. package/dist/server/instructions.js.map +1 -0
  118. package/dist/server/ipcDispatch.js +225 -0
  119. package/dist/server/ipcDispatch.js.map +1 -0
  120. package/dist/server/localConfig.js +561 -0
  121. package/dist/server/localConfig.js.map +1 -0
  122. package/dist/server/optionalServices.js +30 -0
  123. package/dist/server/optionalServices.js.map +1 -0
  124. package/dist/server/projectLease.js +46 -0
  125. package/dist/server/projectLease.js.map +1 -0
  126. package/dist/server/stdioServer.js +75 -0
  127. package/dist/server/stdioServer.js.map +1 -0
  128. package/dist/server/version.js +13 -0
  129. package/dist/server/version.js.map +1 -0
  130. package/dist/server/workspaceHost.js +194 -0
  131. package/dist/server/workspaceHost.js.map +1 -0
  132. package/dist/services/agent/agentService.js +598 -0
  133. package/dist/services/agent/agentService.js.map +1 -0
  134. package/dist/services/agent/contracts.js +102 -0
  135. package/dist/services/agent/contracts.js.map +1 -0
  136. package/dist/services/ai/adapters.js +287 -0
  137. package/dist/services/ai/adapters.js.map +1 -0
  138. package/dist/services/ai/contracts.js +39 -0
  139. package/dist/services/ai/contracts.js.map +1 -0
  140. package/dist/services/ai/credentials.js +77 -0
  141. package/dist/services/ai/credentials.js.map +1 -0
  142. package/dist/services/ai/network.js +113 -0
  143. package/dist/services/ai/network.js.map +1 -0
  144. package/dist/services/ai/settings.js +178 -0
  145. package/dist/services/ai/settings.js.map +1 -0
  146. package/dist/services/ai/subagents.js +468 -0
  147. package/dist/services/ai/subagents.js.map +1 -0
  148. package/dist/services/assistance/analysis.js +352 -0
  149. package/dist/services/assistance/analysis.js.map +1 -0
  150. package/dist/services/assistance/contracts.js +54 -0
  151. package/dist/services/assistance/contracts.js.map +1 -0
  152. package/dist/services/assistance/verification.js +274 -0
  153. package/dist/services/assistance/verification.js.map +1 -0
  154. package/dist/services/brain/brainParser.js +97 -0
  155. package/dist/services/brain/brainParser.js.map +1 -0
  156. package/dist/services/brain/brainService.js +733 -0
  157. package/dist/services/brain/brainService.js.map +1 -0
  158. package/dist/services/brain/brainWorker.js +212 -0
  159. package/dist/services/brain/brainWorker.js.map +1 -0
  160. package/dist/services/brain/contracts.js +154 -0
  161. package/dist/services/brain/contracts.js.map +1 -0
  162. package/dist/services/brain/protocol.js +2 -0
  163. package/dist/services/brain/protocol.js.map +1 -0
  164. package/dist/services/changes/applier.js +544 -0
  165. package/dist/services/changes/applier.js.map +1 -0
  166. package/dist/services/changes/contentBudget.js +11 -0
  167. package/dist/services/changes/contentBudget.js.map +1 -0
  168. package/dist/services/changes/planner.js +284 -0
  169. package/dist/services/changes/planner.js.map +1 -0
  170. package/dist/services/changes/types.js +3 -0
  171. package/dist/services/changes/types.js.map +1 -0
  172. package/dist/services/context/contextEngine.js +746 -0
  173. package/dist/services/context/contextEngine.js.map +1 -0
  174. package/dist/services/context/contracts.js +88 -0
  175. package/dist/services/context/contracts.js.map +1 -0
  176. package/dist/services/desktop/desktopPolicy.js +76 -0
  177. package/dist/services/desktop/desktopPolicy.js.map +1 -0
  178. package/dist/services/desktop/desktopService.js +130 -0
  179. package/dist/services/desktop/desktopService.js.map +1 -0
  180. package/dist/services/desktop/nativeBackend.js +174 -0
  181. package/dist/services/desktop/nativeBackend.js.map +1 -0
  182. package/dist/services/desktop/protocol.js +32 -0
  183. package/dist/services/desktop/protocol.js.map +1 -0
  184. package/dist/services/files/readService.js +136 -0
  185. package/dist/services/files/readService.js.map +1 -0
  186. package/dist/services/git/gitService.js +369 -0
  187. package/dist/services/git/gitService.js.map +1 -0
  188. package/dist/services/intelligence/intelService.js +136 -0
  189. package/dist/services/intelligence/intelService.js.map +1 -0
  190. package/dist/services/intelligence/protocol.js +2 -0
  191. package/dist/services/intelligence/protocol.js.map +1 -0
  192. package/dist/services/intelligence/tsWorker.js +419 -0
  193. package/dist/services/intelligence/tsWorker.js.map +1 -0
  194. package/dist/services/jobs/commandInput.js +34 -0
  195. package/dist/services/jobs/commandInput.js.map +1 -0
  196. package/dist/services/jobs/jobManager.js +398 -0
  197. package/dist/services/jobs/jobManager.js.map +1 -0
  198. package/dist/services/jobs/sandbox.js +156 -0
  199. package/dist/services/jobs/sandbox.js.map +1 -0
  200. package/dist/services/jobs/sandboxWiring.js +37 -0
  201. package/dist/services/jobs/sandboxWiring.js.map +1 -0
  202. package/dist/services/jobs/spool.js +112 -0
  203. package/dist/services/jobs/spool.js.map +1 -0
  204. package/dist/services/jobs/windowsSandboxChild.js +24 -0
  205. package/dist/services/jobs/windowsSandboxChild.js.map +1 -0
  206. package/dist/services/jobs/windowsSandboxWorker.js +155 -0
  207. package/dist/services/jobs/windowsSandboxWorker.js.map +1 -0
  208. package/dist/services/lsp/documentUri.js +16 -0
  209. package/dist/services/lsp/documentUri.js.map +1 -0
  210. package/dist/services/lsp/jsonrpc.js +382 -0
  211. package/dist/services/lsp/jsonrpc.js.map +1 -0
  212. package/dist/services/lsp/lspService.js +1051 -0
  213. package/dist/services/lsp/lspService.js.map +1 -0
  214. package/dist/services/memory/contracts.js +94 -0
  215. package/dist/services/memory/contracts.js.map +1 -0
  216. package/dist/services/memory/memoryService.js +683 -0
  217. package/dist/services/memory/memoryService.js.map +1 -0
  218. package/dist/services/multimodal/browserService.js +407 -0
  219. package/dist/services/multimodal/browserService.js.map +1 -0
  220. package/dist/services/multimodal/byteRange.js +31 -0
  221. package/dist/services/multimodal/byteRange.js.map +1 -0
  222. package/dist/services/multimodal/contracts.js +59 -0
  223. package/dist/services/multimodal/contracts.js.map +1 -0
  224. package/dist/services/multimodal/gameService.js +95 -0
  225. package/dist/services/multimodal/gameService.js.map +1 -0
  226. package/dist/services/multimodal/images.js +107 -0
  227. package/dist/services/multimodal/images.js.map +1 -0
  228. package/dist/services/multimodal/mediaService.js +279 -0
  229. package/dist/services/multimodal/mediaService.js.map +1 -0
  230. package/dist/services/multimodal/mediaWorker.js +143 -0
  231. package/dist/services/multimodal/mediaWorker.js.map +1 -0
  232. package/dist/services/multimodal/multimodalService.js +51 -0
  233. package/dist/services/multimodal/multimodalService.js.map +1 -0
  234. package/dist/services/multimodal/network.js +69 -0
  235. package/dist/services/multimodal/network.js.map +1 -0
  236. package/dist/services/multimodal/operations.js +40 -0
  237. package/dist/services/multimodal/operations.js.map +1 -0
  238. package/dist/services/multimodal/storage.js +160 -0
  239. package/dist/services/multimodal/storage.js.map +1 -0
  240. package/dist/services/multimodal/workflowService.js +179 -0
  241. package/dist/services/multimodal/workflowService.js.map +1 -0
  242. package/dist/services/overview.js +284 -0
  243. package/dist/services/overview.js.map +1 -0
  244. package/dist/services/resources/casStore.js +304 -0
  245. package/dist/services/resources/casStore.js.map +1 -0
  246. package/dist/services/resources/contracts.js +75 -0
  247. package/dist/services/resources/contracts.js.map +1 -0
  248. package/dist/services/resources/mime.js +77 -0
  249. package/dist/services/resources/mime.js.map +1 -0
  250. package/dist/services/resources/providerRegistry.js +22 -0
  251. package/dist/services/resources/providerRegistry.js.map +1 -0
  252. package/dist/services/resources/providers.js +120 -0
  253. package/dist/services/resources/providers.js.map +1 -0
  254. package/dist/services/resources/resourceService.js +282 -0
  255. package/dist/services/resources/resourceService.js.map +1 -0
  256. package/dist/services/runtime/contracts.js +65 -0
  257. package/dist/services/runtime/contracts.js.map +1 -0
  258. package/dist/services/runtime/runtimeService.js +364 -0
  259. package/dist/services/runtime/runtimeService.js.map +1 -0
  260. package/dist/services/schedules/scheduleService.js +198 -0
  261. package/dist/services/schedules/scheduleService.js.map +1 -0
  262. package/dist/services/search/searchService.js +434 -0
  263. package/dist/services/search/searchService.js.map +1 -0
  264. package/dist/services/search/searchWorker.js +58 -0
  265. package/dist/services/search/searchWorker.js.map +1 -0
  266. package/dist/setup/componentProbes.js +259 -0
  267. package/dist/setup/componentProbes.js.map +1 -0
  268. package/dist/setup/download.js +139 -0
  269. package/dist/setup/download.js.map +1 -0
  270. package/dist/setup/managedTools.js +118 -0
  271. package/dist/setup/managedTools.js.map +1 -0
  272. package/dist/setup/sandboxProbe.js +172 -0
  273. package/dist/setup/sandboxProbe.js.map +1 -0
  274. package/dist/setup/setup.js +522 -0
  275. package/dist/setup/setup.js.map +1 -0
  276. package/dist/setup/windowsChromiumAcl.js +56 -0
  277. package/dist/setup/windowsChromiumAcl.js.map +1 -0
  278. package/dist/setup/windowsSandboxInstall.js +94 -0
  279. package/dist/setup/windowsSandboxInstall.js.map +1 -0
  280. package/dist/setup/windowsSpeechInstall.js +86 -0
  281. package/dist/setup/windowsSpeechInstall.js.map +1 -0
  282. package/dist/store/db.js +711 -0
  283. package/dist/store/db.js.map +1 -0
  284. package/dist/store/scopeEncoding.js +15 -0
  285. package/dist/store/scopeEncoding.js.map +1 -0
  286. package/dist/store/store.js +467 -0
  287. package/dist/store/store.js.map +1 -0
  288. package/dist/tools/agentRuntimeTools.js +216 -0
  289. package/dist/tools/agentRuntimeTools.js.map +1 -0
  290. package/dist/tools/agentTools.js +317 -0
  291. package/dist/tools/agentTools.js.map +1 -0
  292. package/dist/tools/assistanceTools.js +126 -0
  293. package/dist/tools/assistanceTools.js.map +1 -0
  294. package/dist/tools/brainTools.js +130 -0
  295. package/dist/tools/brainTools.js.map +1 -0
  296. package/dist/tools/catalog.js +30 -0
  297. package/dist/tools/catalog.js.map +1 -0
  298. package/dist/tools/changeTools.js +188 -0
  299. package/dist/tools/changeTools.js.map +1 -0
  300. package/dist/tools/context.js +243 -0
  301. package/dist/tools/context.js.map +1 -0
  302. package/dist/tools/contextTools.js +57 -0
  303. package/dist/tools/contextTools.js.map +1 -0
  304. package/dist/tools/coreCatalog.js +82 -0
  305. package/dist/tools/coreCatalog.js.map +1 -0
  306. package/dist/tools/desktopTools.js +41 -0
  307. package/dist/tools/desktopTools.js.map +1 -0
  308. package/dist/tools/directTools.js +273 -0
  309. package/dist/tools/directTools.js.map +1 -0
  310. package/dist/tools/envelope.js +71 -0
  311. package/dist/tools/envelope.js.map +1 -0
  312. package/dist/tools/extraTools.js +298 -0
  313. package/dist/tools/extraTools.js.map +1 -0
  314. package/dist/tools/gitTools.js +93 -0
  315. package/dist/tools/gitTools.js.map +1 -0
  316. package/dist/tools/jobTools.js +454 -0
  317. package/dist/tools/jobTools.js.map +1 -0
  318. package/dist/tools/memoryTools.js +102 -0
  319. package/dist/tools/memoryTools.js.map +1 -0
  320. package/dist/tools/metaTools.js +153 -0
  321. package/dist/tools/metaTools.js.map +1 -0
  322. package/dist/tools/multimodalTools.js +262 -0
  323. package/dist/tools/multimodalTools.js.map +1 -0
  324. package/dist/tools/projectTools.js +261 -0
  325. package/dist/tools/projectTools.js.map +1 -0
  326. package/dist/tools/resourceTools.js +81 -0
  327. package/dist/tools/resourceTools.js.map +1 -0
  328. package/dist/tools/runtimeTools.js +137 -0
  329. package/dist/tools/runtimeTools.js.map +1 -0
  330. package/dist/tools/scheduleTools.js +10 -0
  331. package/dist/tools/scheduleTools.js.map +1 -0
  332. package/dist/tools/semanticTools.js +141 -0
  333. package/dist/tools/semanticTools.js.map +1 -0
  334. package/dist/tools/subagentTools.js +32 -0
  335. package/dist/tools/subagentTools.js.map +1 -0
  336. package/dist/tools/surface.js +644 -0
  337. package/dist/tools/surface.js.map +1 -0
  338. package/dist/tunnel/control.js +113 -0
  339. package/dist/tunnel/control.js.map +1 -0
  340. package/dist/tunnel/credentials.js +392 -0
  341. package/dist/tunnel/credentials.js.map +1 -0
  342. package/dist/tunnel/log.js +84 -0
  343. package/dist/tunnel/log.js.map +1 -0
  344. package/dist/tunnel/runtime.js +55 -0
  345. package/dist/tunnel/runtime.js.map +1 -0
  346. package/dist/tunnel/supervisor.js +280 -0
  347. package/dist/tunnel/supervisor.js.map +1 -0
  348. package/dist/util/bytes.js +53 -0
  349. package/dist/util/bytes.js.map +1 -0
  350. package/dist/util/hash.js +53 -0
  351. package/dist/util/hash.js.map +1 -0
  352. package/dist/workspace/fs.js +305 -0
  353. package/dist/workspace/fs.js.map +1 -0
  354. package/dist/workspace/identity.js +17 -0
  355. package/dist/workspace/identity.js.map +1 -0
  356. package/dist/workspace/ignores.js +173 -0
  357. package/dist/workspace/ignores.js.map +1 -0
  358. package/dist/workspace/root.js +59 -0
  359. package/dist/workspace/root.js.map +1 -0
  360. package/docs/AGENT_RUNTIME.md +154 -0
  361. package/docs/AI_PROVIDERS.md +110 -0
  362. package/docs/ARCHITECTURE.md +331 -0
  363. package/docs/ASSISTANCE.md +31 -0
  364. package/docs/AUTH.md +59 -0
  365. package/docs/BRAIN.md +92 -0
  366. package/docs/COMPATIBILITY.md +92 -0
  367. package/docs/CONFIRMATION.md +13 -0
  368. package/docs/CONTEXT.md +87 -0
  369. package/docs/DESKTOP.md +35 -0
  370. package/docs/EVALUATION.md +86 -0
  371. package/docs/LARGE_INPUTS.md +21 -0
  372. package/docs/LSP.md +21 -0
  373. package/docs/MANUAL_ACCEPTANCE.md +283 -0
  374. package/docs/MEMORY.md +128 -0
  375. package/docs/MULTIMODAL.md +32 -0
  376. package/docs/PROJECTS.md +146 -0
  377. package/docs/RELEASE_1.0.0.md +111 -0
  378. package/docs/RELEASE_NOTES.md +92 -0
  379. package/docs/RESOURCES.md +83 -0
  380. package/docs/RUNTIME.md +125 -0
  381. package/docs/SCHEDULES.md +23 -0
  382. package/docs/SECURITY.md +250 -0
  383. package/docs/TEST_REPORT.md +312 -0
  384. package/docs/TUNNEL.md +86 -0
  385. package/docs/WEB_CLIENTS.md +43 -0
  386. package/docs/WINDOWS.md +79 -0
  387. package/docs/adr/001-one-process-one-workspace.md +22 -0
  388. package/docs/adr/002-external-tunnel.md +19 -0
  389. package/docs/adr/003-sdk-v2-legacy-stateless.md +20 -0
  390. package/docs/adr/004-embedded-oauth-provider.md +19 -0
  391. package/docs/adr/005-static-client-baseline.md +19 -0
  392. package/docs/adr/006-guarded-fs-explicit-exec.md +16 -0
  393. package/docs/adr/007-preview-hash-journal.md +18 -0
  394. package/docs/adr/008-ts-js-semantics-first.md +17 -0
  395. package/docs/adr/009-jobs-polling.md +18 -0
  396. package/docs/adr/010-sqlite-better-sqlite3.md +18 -0
  397. package/docs/adr/011-env-example-secure-default.md +19 -0
  398. package/docs/adr/012-workspace-scope-grant.md +24 -0
  399. package/docs/adr/013-loopback-proxy-trust.md +18 -0
  400. package/docs/adr/014-direct-coding-tier.md +48 -0
  401. package/docs/adr/015-coding-agent-parity.md +56 -0
  402. package/docs/adr/016-oidc-openid-consent.md +15 -0
  403. package/docs/adr/017-installation-identity-local-config.md +44 -0
  404. package/docs/adr/018-access-scope-encoding.md +11 -0
  405. package/docs/adr/019-runtime-workspace-switch.md +59 -0
  406. package/docs/adr/020-desktop-access.md +50 -0
  407. package/docs/adr/021-persistent-desktop-consent.md +39 -0
  408. package/docs/adr/022-owner-kill-preserves-login.md +30 -0
  409. package/docs/adr/023-large-coding-inputs.md +49 -0
  410. package/docs/adr/024-usage-rounds-and-schedules.md +72 -0
  411. package/docs/adr/025-owner-chat-whitelist.md +53 -0
  412. package/docs/adr/026-remove-conversation-confirmation.md +35 -0
  413. package/docs/adr/027-workspace-client-list.md +20 -0
  414. package/docs/adr/028-owner-client-deletion.md +25 -0
  415. package/docs/adr/029-compact-tool-surface.md +121 -0
  416. package/docs/adr/030-windows-native-candidate.md +71 -0
  417. package/docs/adr/031-owner-selected-tunnel-supervision.md +13 -0
  418. package/docs/adr/032-owner-project-registry.md +43 -0
  419. package/docs/adr/033-read-only-project-federation.md +61 -0
  420. package/docs/adr/034-universal-resource-cas.md +60 -0
  421. package/docs/adr/035-project-brain-incremental-index.md +51 -0
  422. package/docs/adr/036-context-engine-evidence.md +53 -0
  423. package/docs/adr/037-owner-reviewed-memory.md +46 -0
  424. package/docs/adr/038-runtime-intelligence.md +46 -0
  425. package/docs/adr/039-advanced-agent-runtime.md +57 -0
  426. package/docs/adr/040-dodobench-release-gate.md +43 -0
  427. package/docs/adr/041-local-macos-docker-linux-gates.md +32 -0
  428. package/docs/adr/042-project-directory-generation-identity.md +36 -0
  429. package/docs/adr/043-trusted-self-hosted-platform-gates.md +38 -0
  430. package/docs/adr/044-global-launcher-and-cli-menu.md +43 -0
  431. package/docs/adr/045-ai-providers-multiproject.md +56 -0
  432. package/docs/adr/046-personal-access-mode.md +32 -0
  433. package/docs/adr/README.md +64 -0
  434. package/examples/.dodo.json.example +20 -0
  435. package/examples/cloudflared.yml +23 -0
  436. package/examples/reverse-proxy-fixture.mjs +37 -0
  437. package/native/desktop-linux.py +387 -0
  438. package/native/desktop-windows.cs +180 -0
  439. package/native/desktop.swift +212 -0
  440. package/package.json +145 -0
  441. package/schemas/global-config.schema.json +497 -0
  442. package/schemas/project-config.schema.json +75 -0
  443. package/schemas/tools.compact.json +3236 -0
  444. package/schemas/tools.hybrid.json +8194 -0
  445. package/schemas/tools.json +34518 -0
  446. package/scripts/guard-publish.mjs +12 -0
  447. package/scripts/setup-multimodal.mjs +70 -0
@@ -0,0 +1,126 @@
1
+ import { z } from 'zod';
2
+ import { defineTool } from './context.js';
3
+ import { DodoError } from '../errors.js';
4
+ import { HashSchema, ContextSchema, ImpactSchema, SymbolSchema, RefactorSchema, OutlineSchema, RecipeSchema } from '../services/assistance/contracts.js';
5
+ import { verifyChanges, VerificationSchema } from '../services/assistance/verification.js';
6
+ const Path = z.string().min(1).max(1024);
7
+ const Symbol = z.string().min(1).max(256);
8
+ const readAnnotations = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
9
+ const PreviewSchema = z.object({
10
+ planId: z.string(), planHash: z.string(), expiresAt: z.number(), summary: z.string(),
11
+ risk: z.enum(['low', 'medium', 'high']), requiresApproval: z.boolean(),
12
+ files: z.array(z.object({ path: z.string(), destPath: z.string().optional(), action: z.enum(['create', 'modify', 'delete', 'move']),
13
+ beforeHash: z.string().nullable(), afterHash: z.string().nullable(), diff: z.string(), diffTruncated: z.boolean(), bytesBefore: z.number(), bytesAfter: z.number() })),
14
+ symbol: OutlineSchema, operation: z.literal('replace_body'), notes: z.array(z.string()),
15
+ });
16
+ function budget(ctx, requested) { return Math.min(requested, ctx.services.limits.toolContentBytes - 4096); }
17
+ function assertFiles(ctx, files, allowMissing = false) {
18
+ for (const file of files) {
19
+ const resolved = ctx.services.wfs.resolve(file, { allowMissing });
20
+ if (resolved.stat)
21
+ ctx.services.wfs.assertRegularFileForDirectAccess(resolved);
22
+ }
23
+ }
24
+ export const contextForTaskTool = defineTool({
25
+ name: 'context_for_task', title: 'Context for a coding task',
26
+ description: 'Collect ranked source, tests, docs, declarations and static TS/JS dependencies for a goal in one bounded read. Supply identifier/error terms (including English terms for a Thai goal) and optional seed files. Returns paths, line citations and file hashes. No model calls, execution, embeddings or permission changes; content is untrusted. Scan is bounded and omissions are reported.',
27
+ input: { goal: z.string().min(1).max(1000), terms: z.array(z.string().min(1).max(128)).max(12).default([]),
28
+ files: z.array(Path).max(10).default([]), maxFiles: z.number().int().min(1).max(12).default(6),
29
+ maxBytes: z.number().int().min(4096).max(32768).default(16000) },
30
+ output: ContextSchema.extend({ tasks: z.array(RecipeSchema) }), annotations: readAnnotations, requiredScope: 'dodo:read', action: 'read',
31
+ handler: async (args, ctx) => {
32
+ assertFiles(ctx, args.files);
33
+ const limit = budget(ctx, args.maxBytes);
34
+ const data = ContextSchema.parse(await ctx.services.intel.assist({ op: 'assist_context', ...args, maxBytes: Math.max(2048, limit - 1500) }));
35
+ const tasks = ctx.services.overview.discoverTasks(ctx.services.projectConfig).filter(t => /(?:test|lint|typecheck|build|check|vet|clippy)/.test(t.id)).slice(0, 6)
36
+ .map(t => ({ taskId: t.id, recipeDigest: t.recipeDigest, title: t.title }));
37
+ while (tasks.length && Buffer.byteLength(JSON.stringify({ ...data, tasks }), 'utf8') > limit) {
38
+ tasks.pop();
39
+ data.truncated = true;
40
+ }
41
+ return { data: { ...data, tasks }, truncated: data.truncated };
42
+ },
43
+ });
44
+ export const analyzeImpactTool = defineTool({
45
+ name: 'analyze_impact', title: 'Analyze static change impact',
46
+ description: 'Before editing, find direct/transitive TS/JS import and re-export dependents of workspace files, with evidence lines, hashes and related test paths. Uses the bundled TypeScript parser/resolver, not grep. Missing targets, dynamic loading, external dependencies and scan limits are explicit. This is conservative file-level impact, not a runtime call graph or a reason to skip the full relevant test gate. Read-only.',
47
+ input: { files: z.array(Path).min(1).max(10), maxResults: z.number().int().min(1).max(100).default(40), maxDepth: z.number().int().min(1).max(10).default(5) },
48
+ output: ImpactSchema, annotations: readAnnotations, requiredScope: 'dodo:read', action: 'read',
49
+ handler: async (args, ctx) => {
50
+ assertFiles(ctx, args.files, true);
51
+ const data = ImpactSchema.parse(await ctx.services.intel.assist({ op: 'assist_impact', ...args }));
52
+ while (data.impacted.length && Buffer.byteLength(JSON.stringify(data), 'utf8') > budget(ctx, 32768)) {
53
+ data.impacted.pop();
54
+ data.truncated = true;
55
+ data.relatedTests = data.relatedTests.filter(p => data.impacted.some(i => i.path === p) || args.files.includes(p));
56
+ }
57
+ if (Buffer.byteLength(JSON.stringify(data), 'utf8') > budget(ctx, 32768))
58
+ throw new DodoError('RESOURCE_LIMIT', 'impact metadata exceeds output budget; request fewer targets');
59
+ return { data, truncated: data.truncated };
60
+ },
61
+ });
62
+ export const readSymbolTool = defineTool({
63
+ name: 'read_symbol', title: 'Read one function, class or method',
64
+ description: 'Read the exact TS/JS AST declaration of a named function/class/method/variable, with file hash and line range. Use a qualified name such as Class.method and optionally a line to disambiguate overloads/nesting. Large content is explicitly truncated. Only block-bodied functions/methods can currently be edited through preview_refactor. No execution.',
65
+ input: { file: Path, symbol: Symbol, line: z.number().int().positive().optional(), maxBytes: z.number().int().min(1024).max(32768).default(12000) },
66
+ output: SymbolSchema, annotations: readAnnotations, requiredScope: 'dodo:read', action: 'read',
67
+ handler: async (args, ctx) => {
68
+ assertFiles(ctx, [args.file]);
69
+ const data = SymbolSchema.parse(await ctx.services.intel.assist({ op: 'assist_symbol', file: args.file, symbol: args.symbol, ...(args.line !== undefined ? { line: args.line } : {}), maxBytes: budget(ctx, args.maxBytes) }));
70
+ return { data, truncated: data.truncated };
71
+ },
72
+ });
73
+ export const previewRefactorTool = defineTool({
74
+ name: 'preview_refactor', title: 'Preview a symbol-body edit',
75
+ description: 'Preview replacement of the INTERIOR of one TS/JS function/method block body. Read read_symbol first and supply its exact file hash; ambiguous, stale, unsupported or invalid syntax is refused. body excludes outer braces. Preserves unrelated file bytes and original CRLF style. Does not apply edits or prove type/behavior correctness. Apply using existing apply_changes(planId, planHash, idempotencyKey), then verify_changes; rollback uses the existing journal.',
76
+ input: { file: Path, symbol: Symbol, line: z.number().int().positive().optional(), expectedHash: HashSchema,
77
+ operation: z.literal('replace_body').default('replace_body'), body: z.string().max(512 * 1024) },
78
+ output: PreviewSchema, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false }, requiredScope: 'dodo:write', action: 'plan',
79
+ handler: async (args, ctx) => {
80
+ assertFiles(ctx, [args.file]);
81
+ if (Buffer.byteLength(args.body, 'utf8') > Math.min(ctx.services.limits.readFileBytes, 512 * 1024))
82
+ throw new DodoError('FILE_TOO_LARGE', 'replacement exceeds the active AST byte budget');
83
+ const data = RefactorSchema.parse(await ctx.services.intel.assist({ op: 'assist_refactor', file: args.file, symbol: args.symbol, expectedHash: args.expectedHash, body: args.body, ...(args.line !== undefined ? { line: args.line } : {}) }));
84
+ const s = ctx.services;
85
+ const preview = s.planner.preview({ ops: [{ op: 'replace_file', path: data.path, content: data.content, expectedHash: data.beforeHash }],
86
+ workspaceId: s.workspaceId, epoch: s.epoch, principal: ctx.principal.grantId, trustMode: ctx.trustMode, source: 'preview_changes' });
87
+ return { data: { ...preview, symbol: data.symbol, operation: data.operation,
88
+ notes: ['Syntax checked only; typecheck and behavior tests are still required.', 'Apply and rollback use the existing approval/path/hash/journal machinery.'] }, truncated: preview.files.some(f => f.diffTruncated) };
89
+ },
90
+ });
91
+ export const verifyChangesTool = defineTool({
92
+ name: 'verify_changes', title: 'Plan, run and report verification',
93
+ description: 'mode=plan discovers verification recipes and a guarded source digest without execution. mode=run requires explicitly selected tasks with recipeDigest, sourceDigest from the plan, and an idempotencyKey; runs them through the EXISTING exec approval/sandbox policy. mode=report takes verificationId and never reruns. Reports exits, recognized Vitest/Jest JSON or Vitest text test counts, missing checks and source drift; zero/unknown tests are not a verified test pass. Requires exec scope even for plan/report because this tool can execute. No automatic fixes, retries, installs or security changes. Poll report or existing job_* tools for running jobs.',
94
+ input: { mode: z.enum(['plan', 'run', 'report']).default('plan'), files: z.array(Path).max(10).default([]),
95
+ tasks: z.array(z.object({ taskId: z.string().min(1).max(128), recipeDigest: HashSchema }).strict()).max(4).default([]),
96
+ sourceDigest: HashSchema.optional(), verificationId: z.string().regex(/^verify_[a-z0-9]+$/).max(128).optional(),
97
+ idempotencyKey: z.string().min(8).max(128).optional(), timeoutMs: z.number().int().min(1000).max(1800000).default(300000),
98
+ waitMs: z.number().int().min(0).max(10000).default(1000) },
99
+ output: VerificationSchema, annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true }, requiredScope: 'dodo:exec', action: 'exec',
100
+ handler: async (args, ctx) => {
101
+ const data = VerificationSchema.parse(await verifyChanges(ctx, args));
102
+ // Keep structured and legacy output bounded, without dropping status or freshness.
103
+ let truncated = false;
104
+ const max = ctx.services.limits.toolContentBytes - 1024;
105
+ while (Buffer.byteLength(JSON.stringify(data), 'utf8') > max) {
106
+ const withFailures = data.checks.find(c => c.tests.failures.length > 0);
107
+ if (withFailures)
108
+ withFailures.tests.failures.pop();
109
+ else if (data.freshness.changedPaths.length) {
110
+ data.freshness.changedPaths.pop();
111
+ data.freshness.changedPathsTruncated = true;
112
+ }
113
+ else if (data.recommendedTasks.length)
114
+ data.recommendedTasks.pop();
115
+ else if (data.files.length)
116
+ data.files.pop();
117
+ else if (data.notRun.length)
118
+ data.notRun.pop();
119
+ else
120
+ break;
121
+ truncated = true;
122
+ }
123
+ return { data, truncated };
124
+ },
125
+ });
126
+ //# sourceMappingURL=assistanceTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistanceTools.js","sourceRoot":"","sources":["../../src/tools/assistanceTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { z } from 'zod';
2
+ import { DodoError } from '../errors.js';
3
+ import { BRAIN_QUERY_MAX, BrainControlResult, BrainEdgeType, BrainNode, BrainNodeType, BrainQueryResult, BrainStatus, } from '../services/brain/contracts.js';
4
+ import { liveAccess } from '../services/multimodal/storage.js';
5
+ import { defineTool, policyGate } from './context.js';
6
+ const read = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
7
+ const control = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
8
+ function use(ctx) {
9
+ const brain = ctx.services.brain;
10
+ if (!brain)
11
+ throw new DodoError('NOT_SUPPORTED', 'Project Brain is unavailable in this running build');
12
+ return brain;
13
+ }
14
+ const brainStatusTool = defineTool({
15
+ name: 'brain_status',
16
+ title: 'Inspect Project Brain status',
17
+ description: 'Return bounded Project Brain freshness, parser/schema versions, latest run state and graph counts for the active workspace. Cached index rows are evidence only and never grant source access.',
18
+ input: {},
19
+ output: BrainStatus,
20
+ requiredScope: 'dodo:read',
21
+ action: 'read',
22
+ annotations: read,
23
+ handler: async (_args, ctx) => { liveAccess(ctx, 'dodo:read'); return { data: use(ctx).status() }; },
24
+ });
25
+ const brainQueryTool = defineTool({
26
+ name: 'brain_query',
27
+ title: 'Query project structure',
28
+ description: 'Query bounded files, symbols, routes, tests, dependencies and relationship edges from the active Project Brain. Every returned row is re-authorized and checked against the current guarded source SHA-256; stale rows are omitted by default.',
29
+ input: {
30
+ query: z.string().min(1).max(256).optional(),
31
+ path: z.string().min(1).max(1024).optional(),
32
+ nodeTypes: z.array(BrainNodeType).min(1).max(5).optional(),
33
+ edgeTypes: z.array(BrainEdgeType).min(1).max(6).optional(),
34
+ includeStale: z.boolean().default(false),
35
+ limit: z.number().int().min(1).max(BRAIN_QUERY_MAX).default(50),
36
+ cursor: z.string().max(2048).optional(),
37
+ },
38
+ output: BrainQueryResult,
39
+ requiredScope: 'dodo:read',
40
+ action: 'read',
41
+ annotations: read,
42
+ handler: async (args, ctx) => {
43
+ const input = {
44
+ includeStale: args.includeStale,
45
+ limit: args.limit,
46
+ ...(args.query !== undefined ? { query: args.query } : {}),
47
+ ...(args.path !== undefined ? { path: args.path } : {}),
48
+ ...(args.nodeTypes !== undefined ? { nodeTypes: args.nodeTypes } : {}),
49
+ ...(args.edgeTypes !== undefined ? { edgeTypes: args.edgeTypes } : {}),
50
+ ...(args.cursor !== undefined ? { cursor: args.cursor } : {}),
51
+ };
52
+ const result = await use(ctx).query(ctx, input);
53
+ return { data: result.data, truncated: result.truncated, nextCursor: result.nextCursor };
54
+ },
55
+ });
56
+ const brainSymbolTool = defineTool({
57
+ name: 'brain_symbol',
58
+ title: 'Resolve a stable Project Brain symbol',
59
+ description: 'Resolve one symbol:// project entity URI. The stable identity survives an exact-content file move, while the result reports the current path and source freshness.',
60
+ input: { uri: z.string().min(1).max(1024).regex(/^symbol:\/\//) },
61
+ output: BrainNode,
62
+ requiredScope: 'dodo:read',
63
+ action: 'read',
64
+ annotations: read,
65
+ handler: async (args, ctx) => ({ data: await use(ctx).symbol(ctx, args.uri) }),
66
+ });
67
+ const brainRebuildTool = defineTool({
68
+ name: 'brain_rebuild',
69
+ title: 'Rebuild Project Brain',
70
+ description: 'Start one bounded incremental or full Project Brain rebuild. Repository code, plugins and scripts are never executed. This owner-controlled maintenance action retains the active trust/approval policy.',
71
+ input: {
72
+ mode: z.enum(['incremental', 'full']).default('incremental'),
73
+ waitMs: z.number().int().min(0).max(10_000).default(0),
74
+ },
75
+ output: BrainControlResult,
76
+ requiredScope: 'dodo:exec',
77
+ action: 'exec',
78
+ annotations: control,
79
+ handler: async (args, ctx) => {
80
+ liveAccess(ctx, 'dodo:exec');
81
+ policyGate(ctx, { tool: 'brain_rebuild', action: 'exec', approvalAction: { mode: args.mode }, summary: `rebuild the active Project Brain (${args.mode})` });
82
+ const brain = use(ctx);
83
+ const started = await brain.start(args.mode);
84
+ const status = args.waitMs > 0 ? await brain.wait(started.runId, args.waitMs) : brain.status();
85
+ return { data: { runId: started.runId, changed: started.changed, status } };
86
+ },
87
+ });
88
+ const brainPauseTool = defineTool({
89
+ name: 'brain_pause',
90
+ title: 'Pause or resume Project Brain refresh',
91
+ description: 'Pause or resume automatic indexing for the active workspace. Pausing cancels an in-progress uncommitted index transaction; it never changes source files or permissions.',
92
+ input: { paused: z.boolean().default(true) },
93
+ output: BrainControlResult,
94
+ requiredScope: 'dodo:exec',
95
+ action: 'exec',
96
+ annotations: control,
97
+ handler: async (args, ctx) => {
98
+ liveAccess(ctx, 'dodo:exec');
99
+ policyGate(ctx, { tool: 'brain_pause', action: 'exec', approvalAction: { paused: args.paused }, summary: `${args.paused ? 'pause' : 'resume'} automatic Project Brain indexing` });
100
+ const brain = use(ctx);
101
+ const result = await brain.pause(args.paused);
102
+ return { data: { runId: null, changed: result.changed, status: brain.status() } };
103
+ },
104
+ });
105
+ const brainCancelTool = defineTool({
106
+ name: 'brain_cancel',
107
+ title: 'Cancel a Project Brain rebuild',
108
+ description: 'Cancel the active Project Brain parser run before commit. Existing committed index data stays available and source files are never modified.',
109
+ input: { runId: z.string().min(1).max(128).optional() },
110
+ output: BrainControlResult,
111
+ requiredScope: 'dodo:exec',
112
+ action: 'exec',
113
+ annotations: control,
114
+ handler: async (args, ctx) => {
115
+ liveAccess(ctx, 'dodo:exec');
116
+ policyGate(ctx, { tool: 'brain_cancel', action: 'exec', approvalAction: { runId: args.runId ?? null }, summary: 'cancel the active Project Brain rebuild' });
117
+ const brain = use(ctx);
118
+ const result = await brain.cancel(args.runId);
119
+ return { data: { runId: args.runId ?? null, changed: result.changed, status: brain.status() } };
120
+ },
121
+ });
122
+ export const BRAIN_TOOLS = [
123
+ brainStatusTool,
124
+ brainQueryTool,
125
+ brainSymbolTool,
126
+ brainRebuildTool,
127
+ brainPauseTool,
128
+ brainCancelTool,
129
+ ];
130
+ //# sourceMappingURL=brainTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brainTools.js","sourceRoot":"","sources":["../../src/tools/brainTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { SUBAGENT_TOOLS } from './subagentTools.js';
2
+ import { registerTool } from './context.js';
3
+ import { CORE_TOOL_CATALOG } from './coreCatalog.js';
4
+ import { AGENT_RUNTIME_TOOLS } from './agentRuntimeTools.js';
5
+ /**
6
+ * The tool catalog in a FIXED, stable order. Every listed tool is fully
7
+ * implemented; nothing here is a stub, and no roadmap tool is registered.
8
+ *
9
+ * Tiers share one policy and one journal:
10
+ * - understand: overview / list / read / search / glob / images / instructions
11
+ * - direct edits: write / edit / patch / bulk replace / delete / move / mkdir
12
+ * - semantics: TS/JS built in, other languages via owner-registered LSP
13
+ * - reviewed changes: preview_* → apply_changes → rollback
14
+ * - git: status / diff / log / commit
15
+ * - run: run_command(s) (shell, parallel, background, sandbox) + job_* polling,
16
+ * run_task recipes, exec_command (argv)
17
+ * - agent workflow: todo, environment, fetch_url, diagnostics, handoff
18
+ */
19
+ export const TOOL_CATALOG = [
20
+ ...CORE_TOOL_CATALOG,
21
+ // Durable plan/hypothesis/lock/snapshot/skill coordination. Existing 104 names stay an exact prefix.
22
+ ...AGENT_RUNTIME_TOOLS,
23
+ ...SUBAGENT_TOOLS,
24
+ ];
25
+ export function registerCatalog(server, services) {
26
+ for (const def of TOOL_CATALOG) {
27
+ registerTool(server, services, def);
28
+ }
29
+ }
30
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAqC,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,GAAG,iBAAiB;IACpB,qGAAqG;IACrG,GAAG,mBAAmB;IACtB,GAAG,cAAc;CAClB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,QAAqB;IACtE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,188 @@
1
+ import { z } from 'zod';
2
+ import { MAX_FILE_BYTES } from '../config/limits.js';
3
+ import { policyGate, defineTool } from './context.js';
4
+ import { DodoError } from '../errors.js';
5
+ import { digestOf } from '../util/hash.js';
6
+ const looseData = z.looseObject({});
7
+ const OperationSchema = z.discriminatedUnion('op', [
8
+ z
9
+ .object({
10
+ op: z.literal('create'),
11
+ path: z.string().max(1024),
12
+ content: z.string().max(MAX_FILE_BYTES),
13
+ createParents: z.boolean().default(false),
14
+ })
15
+ .strict(),
16
+ z
17
+ .object({
18
+ op: z.literal('replace_file'),
19
+ path: z.string().max(1024),
20
+ content: z.string().max(MAX_FILE_BYTES),
21
+ expectedHash: z.string().max(128).optional(),
22
+ })
23
+ .strict(),
24
+ z
25
+ .object({
26
+ op: z.literal('replace_exact'),
27
+ path: z.string().max(1024),
28
+ find: z.string().min(1).max(MAX_FILE_BYTES),
29
+ replace: z.string().max(MAX_FILE_BYTES),
30
+ expectedCount: z.number().int().min(1).max(1000).default(1),
31
+ expectedHash: z.string().max(128).optional(),
32
+ })
33
+ .strict(),
34
+ z.object({ op: z.literal('delete'), path: z.string().max(1024), expectedHash: z.string().max(128).optional() }).strict(),
35
+ z
36
+ .object({
37
+ op: z.literal('move'),
38
+ path: z.string().max(1024),
39
+ destPath: z.string().max(1024),
40
+ expectedHash: z.string().max(128).optional(),
41
+ })
42
+ .strict(),
43
+ ]);
44
+ export const previewChangesTool = defineTool({
45
+ name: 'preview_changes',
46
+ title: 'Preview changes',
47
+ description: 'Validate a batch of file operations (create / replace_file / replace_exact / delete / move) and produce an IMMUTABLE plan with per-file diffs, raw-byte before/after SHA-256 hashes, risk and expiry. The workspace is NOT modified. replace_exact requires the target text to occur exactly expectedCount times (default 1) — mismatches fail with AMBIGUOUS_EDIT instead of fuzzy-editing. Apply with apply_changes(planId, planHash, idempotencyKey).',
48
+ input: {
49
+ operations: z.array(OperationSchema).min(1).max(50),
50
+ },
51
+ output: looseData,
52
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
53
+ requiredScope: 'dodo:write',
54
+ action: 'plan',
55
+ handler: async (args, ctx) => {
56
+ const preview = ctx.services.planner.preview({
57
+ ops: args.operations,
58
+ workspaceId: ctx.services.workspaceId,
59
+ epoch: ctx.services.epoch,
60
+ principal: ctx.principal.grantId,
61
+ trustMode: ctx.trustMode,
62
+ source: 'preview_changes',
63
+ });
64
+ return { data: preview };
65
+ },
66
+ });
67
+ const IdempotencyKey = z.string().min(8).max(128).describe('Client-generated key; reuse the SAME key when retrying this exact call');
68
+ /**
69
+ * Durable idempotency wrapper (spec §12.3): reserve → side effect → receipt.
70
+ * Same key + same payload replays the stored receipt; same key + different
71
+ * payload is IDEMPOTENCY_CONFLICT; a reservation without a receipt reports an
72
+ * uncertain in-progress/interrupted state and is never blindly re-run.
73
+ */
74
+ export async function withIdempotency(ctx, tool, key, payload, fn) {
75
+ const store = ctx.services.store;
76
+ const ids = { key, principal: ctx.principal.grantId, workspaceId: ctx.services.workspaceId, tool };
77
+ const payloadHash = digestOf(payload);
78
+ const reservation = store.reserveIdempotency({ ...ids, payloadHash });
79
+ if (reservation.outcome === 'conflict') {
80
+ throw new DodoError('IDEMPOTENCY_CONFLICT', 'this idempotencyKey was already used with different arguments', {
81
+ recovery: 'use a fresh idempotencyKey for a new operation',
82
+ });
83
+ }
84
+ if (reservation.outcome === 'duplicate') {
85
+ if (reservation.state === 'completed' && reservation.result !== null) {
86
+ return { result: JSON.parse(reservation.result), replayed: true };
87
+ }
88
+ throw new DodoError('RECOVERY_REQUIRED', 'an operation with this key is in progress or was interrupted; its outcome is uncertain', {
89
+ retryable: true,
90
+ recovery: 'wait and retry with the same key to check again; use a NEW key only if you intend to run the operation again',
91
+ });
92
+ }
93
+ try {
94
+ const result = await fn();
95
+ store.completeIdempotency(ids, JSON.stringify(result));
96
+ return { result, replayed: false };
97
+ }
98
+ catch (err) {
99
+ const je = err instanceof DodoError ? err : undefined;
100
+ if (je?.code !== 'PARTIAL_RECOVERY_REQUIRED' && je?.code !== 'RECOVERY_REQUIRED') {
101
+ store.releaseIdempotency(ids);
102
+ }
103
+ throw err;
104
+ }
105
+ }
106
+ export const applyChangesTool = defineTool({
107
+ name: 'apply_changes',
108
+ title: 'Apply changes',
109
+ description: 'Apply a previously previewed immutable plan. Requires planId + planHash from preview_changes/preview_rename and a client idempotencyKey (retry-safe: the same key returns the same receipt and never creates a second changeset). Every file hash is re-verified before writing; changed files fail with FILE_CHANGED. In inspect mode this needs a local owner approval first (the error tells you the approval id).',
110
+ input: {
111
+ planId: z.string().max(128),
112
+ planHash: z.string().max(128),
113
+ idempotencyKey: IdempotencyKey,
114
+ },
115
+ output: looseData,
116
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
117
+ requiredScope: 'dodo:write',
118
+ action: 'mutate-files',
119
+ handler: async (args, ctx) => {
120
+ policyGate(ctx, {
121
+ tool: 'apply_changes',
122
+ action: 'mutate-files',
123
+ approvalAction: { planId: args.planId, planHash: args.planHash },
124
+ summary: `apply change plan ${args.planId}`,
125
+ });
126
+ const { result, replayed } = await withIdempotency(ctx, 'apply_changes', args.idempotencyKey, { planId: args.planId, planHash: args.planHash }, () => ctx.services.applier.apply({
127
+ planId: args.planId,
128
+ planHash: args.planHash,
129
+ workspaceId: ctx.services.workspaceId,
130
+ epoch: ctx.services.epoch,
131
+ principal: ctx.principal.grantId,
132
+ }));
133
+ return { data: { ...result, replayed } };
134
+ },
135
+ });
136
+ export const rollbackChangesTool = defineTool({
137
+ name: 'rollback_changes',
138
+ title: 'Rollback changes',
139
+ description: 'Restore the files of a committed changeset to their pre-apply bytes from durable backups. Refused with per-file conflicts if ANY affected file was edited after the apply (human work is never overwritten). Takes the changesetId from apply_changes and a fresh idempotencyKey.',
140
+ input: {
141
+ changesetId: z.string().max(128),
142
+ idempotencyKey: IdempotencyKey,
143
+ },
144
+ output: looseData,
145
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
146
+ requiredScope: 'dodo:write',
147
+ action: 'mutate-files',
148
+ handler: async (args, ctx) => {
149
+ policyGate(ctx, {
150
+ tool: 'rollback_changes',
151
+ action: 'mutate-files',
152
+ approvalAction: { changesetId: args.changesetId },
153
+ summary: `rollback changeset ${args.changesetId}`,
154
+ });
155
+ const { result, replayed } = await withIdempotency(ctx, 'rollback_changes', args.idempotencyKey, { changesetId: args.changesetId }, () => ctx.services.applier.rollback({
156
+ changesetId: args.changesetId,
157
+ workspaceId: ctx.services.workspaceId,
158
+ epoch: ctx.services.epoch,
159
+ principal: ctx.principal.grantId,
160
+ }));
161
+ return { data: { ...result, replayed } };
162
+ },
163
+ });
164
+ export const changeHistoryTool = defineTool({
165
+ name: 'change_history',
166
+ title: 'Change history',
167
+ description: 'List DODO changesets for this workspace (id, kind, status, summary, timestamps). Only DODO-made changes appear here — external edits are not tracked.',
168
+ input: {
169
+ limit: z.number().int().min(1).max(100).default(20),
170
+ },
171
+ output: looseData,
172
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
173
+ requiredScope: 'dodo:read',
174
+ action: 'read',
175
+ handler: async (args, ctx) => {
176
+ const rows = ctx.services.store.listChangesets(ctx.services.workspaceId, args.limit).map((c) => ({
177
+ changesetId: c.id,
178
+ kind: c.kind,
179
+ status: c.status,
180
+ summary: c.summary,
181
+ createdAt: c.createdAt,
182
+ committedAt: c.committedAt,
183
+ planId: c.planId,
184
+ }));
185
+ return { data: { changesets: rows } };
186
+ },
187
+ });
188
+ //# sourceMappingURL=changeTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeTools.js","sourceRoot":"","sources":["../../src/tools/changeTools.ts"],"names":[],"mappings":"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"}