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.
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/dist/auth/adapter.js +43 -0
- package/dist/auth/adapter.js.map +1 -0
- package/dist/auth/clientDeletion.js +45 -0
- package/dist/auth/clientDeletion.js.map +1 -0
- package/dist/auth/clients.js +55 -0
- package/dist/auth/clients.js.map +1 -0
- package/dist/auth/constants.js +10 -0
- package/dist/auth/constants.js.map +1 -0
- package/dist/auth/interactions.js +184 -0
- package/dist/auth/interactions.js.map +1 -0
- package/dist/auth/keys.js +56 -0
- package/dist/auth/keys.js.map +1 -0
- package/dist/auth/provider.js +131 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/verifier.js +74 -0
- package/dist/auth/verifier.js.map +1 -0
- package/dist/cli/kill.js +124 -0
- package/dist/cli/kill.js.map +1 -0
- package/dist/cli/main.js +1393 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/menu.js +127 -0
- package/dist/cli/menu.js.map +1 -0
- package/dist/cli/terminal.js +30 -0
- package/dist/cli/terminal.js.map +1 -0
- package/dist/config/globalConfig.js +144 -0
- package/dist/config/globalConfig.js.map +1 -0
- package/dist/config/limits.js +42 -0
- package/dist/config/limits.js.map +1 -0
- package/dist/config/paths.js +94 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/projectConfig.js +63 -0
- package/dist/config/projectConfig.js.map +1 -0
- package/dist/config/stateImport.js +306 -0
- package/dist/config/stateImport.js.map +1 -0
- package/dist/config/tunnelConfig.js +23 -0
- package/dist/config/tunnelConfig.js.map +1 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluation/contracts.js +86 -0
- package/dist/evaluation/contracts.js.map +1 -0
- package/dist/evaluation/dodoBench.js +69 -0
- package/dist/evaluation/dodoBench.js.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc/authentication.js +117 -0
- package/dist/ipc/authentication.js.map +1 -0
- package/dist/ipc/client.js +86 -0
- package/dist/ipc/client.js.map +1 -0
- package/dist/ipc/installationClient.js +83 -0
- package/dist/ipc/installationClient.js.map +1 -0
- package/dist/ipc/ownerControl.js +46 -0
- package/dist/ipc/ownerControl.js.map +1 -0
- package/dist/ipc/protocol.js +2 -0
- package/dist/ipc/protocol.js.map +1 -0
- package/dist/ipc/server.js +108 -0
- package/dist/ipc/server.js.map +1 -0
- package/dist/platform/execResolve.js +64 -0
- package/dist/platform/execResolve.js.map +1 -0
- package/dist/platform/fileIdentity.js +26 -0
- package/dist/platform/fileIdentity.js.map +1 -0
- package/dist/platform/fsRetry.js +22 -0
- package/dist/platform/fsRetry.js.map +1 -0
- package/dist/platform/pathPolicy.js +29 -0
- package/dist/platform/pathPolicy.js.map +1 -0
- package/dist/platform/privateFs.js +116 -0
- package/dist/platform/privateFs.js.map +1 -0
- package/dist/platform/processTree.js +31 -0
- package/dist/platform/processTree.js.map +1 -0
- package/dist/platform/shell.js +74 -0
- package/dist/platform/shell.js.map +1 -0
- package/dist/platform/speech.js +94 -0
- package/dist/platform/speech.js.map +1 -0
- package/dist/platform/system.js +28 -0
- package/dist/platform/system.js.map +1 -0
- package/dist/platform/windowsSandbox.js +129 -0
- package/dist/platform/windowsSandbox.js.map +1 -0
- package/dist/projects/federation.js +312 -0
- package/dist/projects/federation.js.map +1 -0
- package/dist/projects/registry.js +291 -0
- package/dist/projects/registry.js.map +1 -0
- package/dist/security/accessMode.js +19 -0
- package/dist/security/accessMode.js.map +1 -0
- package/dist/security/approvals.js +56 -0
- package/dist/security/approvals.js.map +1 -0
- package/dist/security/env.js +57 -0
- package/dist/security/env.js.map +1 -0
- package/dist/security/mutationQueue.js +78 -0
- package/dist/security/mutationQueue.js.map +1 -0
- package/dist/security/policy.js +22 -0
- package/dist/security/policy.js.map +1 -0
- package/dist/security/projectAuthority.js +22 -0
- package/dist/security/projectAuthority.js.map +1 -0
- package/dist/security/redact.js +30 -0
- package/dist/security/redact.js.map +1 -0
- package/dist/server/aiAdmin.js +201 -0
- package/dist/server/aiAdmin.js.map +1 -0
- package/dist/server/appServer.js +461 -0
- package/dist/server/appServer.js.map +1 -0
- package/dist/server/bootstrap.js +185 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/configUi/app.css +347 -0
- package/dist/server/configUi/app.js +958 -0
- package/dist/server/configUi/index.html +379 -0
- package/dist/server/configUi/ui/alerts.js +92 -0
- package/dist/server/configUi/ui/dom.js +19 -0
- package/dist/server/configUi/ui/tooltips.js +115 -0
- package/dist/server/configUi/vendor/VERSION.txt +1 -0
- package/dist/server/configUi/vendor/sweetalert2.min.css +1 -0
- package/dist/server/configUi/vendor/sweetalert2.min.js +5 -0
- package/dist/server/configUi/workbench.css +62 -0
- package/dist/server/configUi/workbench.js +394 -0
- package/dist/server/installationRuntime.js +155 -0
- package/dist/server/installationRuntime.js.map +1 -0
- package/dist/server/instructions.js +17 -0
- package/dist/server/instructions.js.map +1 -0
- package/dist/server/ipcDispatch.js +225 -0
- package/dist/server/ipcDispatch.js.map +1 -0
- package/dist/server/localConfig.js +561 -0
- package/dist/server/localConfig.js.map +1 -0
- package/dist/server/optionalServices.js +30 -0
- package/dist/server/optionalServices.js.map +1 -0
- package/dist/server/projectLease.js +46 -0
- package/dist/server/projectLease.js.map +1 -0
- package/dist/server/stdioServer.js +75 -0
- package/dist/server/stdioServer.js.map +1 -0
- package/dist/server/version.js +13 -0
- package/dist/server/version.js.map +1 -0
- package/dist/server/workspaceHost.js +194 -0
- package/dist/server/workspaceHost.js.map +1 -0
- package/dist/services/agent/agentService.js +598 -0
- package/dist/services/agent/agentService.js.map +1 -0
- package/dist/services/agent/contracts.js +102 -0
- package/dist/services/agent/contracts.js.map +1 -0
- package/dist/services/ai/adapters.js +287 -0
- package/dist/services/ai/adapters.js.map +1 -0
- package/dist/services/ai/contracts.js +39 -0
- package/dist/services/ai/contracts.js.map +1 -0
- package/dist/services/ai/credentials.js +77 -0
- package/dist/services/ai/credentials.js.map +1 -0
- package/dist/services/ai/network.js +113 -0
- package/dist/services/ai/network.js.map +1 -0
- package/dist/services/ai/settings.js +178 -0
- package/dist/services/ai/settings.js.map +1 -0
- package/dist/services/ai/subagents.js +468 -0
- package/dist/services/ai/subagents.js.map +1 -0
- package/dist/services/assistance/analysis.js +352 -0
- package/dist/services/assistance/analysis.js.map +1 -0
- package/dist/services/assistance/contracts.js +54 -0
- package/dist/services/assistance/contracts.js.map +1 -0
- package/dist/services/assistance/verification.js +274 -0
- package/dist/services/assistance/verification.js.map +1 -0
- package/dist/services/brain/brainParser.js +97 -0
- package/dist/services/brain/brainParser.js.map +1 -0
- package/dist/services/brain/brainService.js +733 -0
- package/dist/services/brain/brainService.js.map +1 -0
- package/dist/services/brain/brainWorker.js +212 -0
- package/dist/services/brain/brainWorker.js.map +1 -0
- package/dist/services/brain/contracts.js +154 -0
- package/dist/services/brain/contracts.js.map +1 -0
- package/dist/services/brain/protocol.js +2 -0
- package/dist/services/brain/protocol.js.map +1 -0
- package/dist/services/changes/applier.js +544 -0
- package/dist/services/changes/applier.js.map +1 -0
- package/dist/services/changes/contentBudget.js +11 -0
- package/dist/services/changes/contentBudget.js.map +1 -0
- package/dist/services/changes/planner.js +284 -0
- package/dist/services/changes/planner.js.map +1 -0
- package/dist/services/changes/types.js +3 -0
- package/dist/services/changes/types.js.map +1 -0
- package/dist/services/context/contextEngine.js +746 -0
- package/dist/services/context/contextEngine.js.map +1 -0
- package/dist/services/context/contracts.js +88 -0
- package/dist/services/context/contracts.js.map +1 -0
- package/dist/services/desktop/desktopPolicy.js +76 -0
- package/dist/services/desktop/desktopPolicy.js.map +1 -0
- package/dist/services/desktop/desktopService.js +130 -0
- package/dist/services/desktop/desktopService.js.map +1 -0
- package/dist/services/desktop/nativeBackend.js +174 -0
- package/dist/services/desktop/nativeBackend.js.map +1 -0
- package/dist/services/desktop/protocol.js +32 -0
- package/dist/services/desktop/protocol.js.map +1 -0
- package/dist/services/files/readService.js +136 -0
- package/dist/services/files/readService.js.map +1 -0
- package/dist/services/git/gitService.js +369 -0
- package/dist/services/git/gitService.js.map +1 -0
- package/dist/services/intelligence/intelService.js +136 -0
- package/dist/services/intelligence/intelService.js.map +1 -0
- package/dist/services/intelligence/protocol.js +2 -0
- package/dist/services/intelligence/protocol.js.map +1 -0
- package/dist/services/intelligence/tsWorker.js +419 -0
- package/dist/services/intelligence/tsWorker.js.map +1 -0
- package/dist/services/jobs/commandInput.js +34 -0
- package/dist/services/jobs/commandInput.js.map +1 -0
- package/dist/services/jobs/jobManager.js +398 -0
- package/dist/services/jobs/jobManager.js.map +1 -0
- package/dist/services/jobs/sandbox.js +156 -0
- package/dist/services/jobs/sandbox.js.map +1 -0
- package/dist/services/jobs/sandboxWiring.js +37 -0
- package/dist/services/jobs/sandboxWiring.js.map +1 -0
- package/dist/services/jobs/spool.js +112 -0
- package/dist/services/jobs/spool.js.map +1 -0
- package/dist/services/jobs/windowsSandboxChild.js +24 -0
- package/dist/services/jobs/windowsSandboxChild.js.map +1 -0
- package/dist/services/jobs/windowsSandboxWorker.js +155 -0
- package/dist/services/jobs/windowsSandboxWorker.js.map +1 -0
- package/dist/services/lsp/documentUri.js +16 -0
- package/dist/services/lsp/documentUri.js.map +1 -0
- package/dist/services/lsp/jsonrpc.js +382 -0
- package/dist/services/lsp/jsonrpc.js.map +1 -0
- package/dist/services/lsp/lspService.js +1051 -0
- package/dist/services/lsp/lspService.js.map +1 -0
- package/dist/services/memory/contracts.js +94 -0
- package/dist/services/memory/contracts.js.map +1 -0
- package/dist/services/memory/memoryService.js +683 -0
- package/dist/services/memory/memoryService.js.map +1 -0
- package/dist/services/multimodal/browserService.js +407 -0
- package/dist/services/multimodal/browserService.js.map +1 -0
- package/dist/services/multimodal/byteRange.js +31 -0
- package/dist/services/multimodal/byteRange.js.map +1 -0
- package/dist/services/multimodal/contracts.js +59 -0
- package/dist/services/multimodal/contracts.js.map +1 -0
- package/dist/services/multimodal/gameService.js +95 -0
- package/dist/services/multimodal/gameService.js.map +1 -0
- package/dist/services/multimodal/images.js +107 -0
- package/dist/services/multimodal/images.js.map +1 -0
- package/dist/services/multimodal/mediaService.js +279 -0
- package/dist/services/multimodal/mediaService.js.map +1 -0
- package/dist/services/multimodal/mediaWorker.js +143 -0
- package/dist/services/multimodal/mediaWorker.js.map +1 -0
- package/dist/services/multimodal/multimodalService.js +51 -0
- package/dist/services/multimodal/multimodalService.js.map +1 -0
- package/dist/services/multimodal/network.js +69 -0
- package/dist/services/multimodal/network.js.map +1 -0
- package/dist/services/multimodal/operations.js +40 -0
- package/dist/services/multimodal/operations.js.map +1 -0
- package/dist/services/multimodal/storage.js +160 -0
- package/dist/services/multimodal/storage.js.map +1 -0
- package/dist/services/multimodal/workflowService.js +179 -0
- package/dist/services/multimodal/workflowService.js.map +1 -0
- package/dist/services/overview.js +284 -0
- package/dist/services/overview.js.map +1 -0
- package/dist/services/resources/casStore.js +304 -0
- package/dist/services/resources/casStore.js.map +1 -0
- package/dist/services/resources/contracts.js +75 -0
- package/dist/services/resources/contracts.js.map +1 -0
- package/dist/services/resources/mime.js +77 -0
- package/dist/services/resources/mime.js.map +1 -0
- package/dist/services/resources/providerRegistry.js +22 -0
- package/dist/services/resources/providerRegistry.js.map +1 -0
- package/dist/services/resources/providers.js +120 -0
- package/dist/services/resources/providers.js.map +1 -0
- package/dist/services/resources/resourceService.js +282 -0
- package/dist/services/resources/resourceService.js.map +1 -0
- package/dist/services/runtime/contracts.js +65 -0
- package/dist/services/runtime/contracts.js.map +1 -0
- package/dist/services/runtime/runtimeService.js +364 -0
- package/dist/services/runtime/runtimeService.js.map +1 -0
- package/dist/services/schedules/scheduleService.js +198 -0
- package/dist/services/schedules/scheduleService.js.map +1 -0
- package/dist/services/search/searchService.js +434 -0
- package/dist/services/search/searchService.js.map +1 -0
- package/dist/services/search/searchWorker.js +58 -0
- package/dist/services/search/searchWorker.js.map +1 -0
- package/dist/setup/componentProbes.js +259 -0
- package/dist/setup/componentProbes.js.map +1 -0
- package/dist/setup/download.js +139 -0
- package/dist/setup/download.js.map +1 -0
- package/dist/setup/managedTools.js +118 -0
- package/dist/setup/managedTools.js.map +1 -0
- package/dist/setup/sandboxProbe.js +172 -0
- package/dist/setup/sandboxProbe.js.map +1 -0
- package/dist/setup/setup.js +522 -0
- package/dist/setup/setup.js.map +1 -0
- package/dist/setup/windowsChromiumAcl.js +56 -0
- package/dist/setup/windowsChromiumAcl.js.map +1 -0
- package/dist/setup/windowsSandboxInstall.js +94 -0
- package/dist/setup/windowsSandboxInstall.js.map +1 -0
- package/dist/setup/windowsSpeechInstall.js +86 -0
- package/dist/setup/windowsSpeechInstall.js.map +1 -0
- package/dist/store/db.js +711 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/scopeEncoding.js +15 -0
- package/dist/store/scopeEncoding.js.map +1 -0
- package/dist/store/store.js +467 -0
- package/dist/store/store.js.map +1 -0
- package/dist/tools/agentRuntimeTools.js +216 -0
- package/dist/tools/agentRuntimeTools.js.map +1 -0
- package/dist/tools/agentTools.js +317 -0
- package/dist/tools/agentTools.js.map +1 -0
- package/dist/tools/assistanceTools.js +126 -0
- package/dist/tools/assistanceTools.js.map +1 -0
- package/dist/tools/brainTools.js +130 -0
- package/dist/tools/brainTools.js.map +1 -0
- package/dist/tools/catalog.js +30 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/changeTools.js +188 -0
- package/dist/tools/changeTools.js.map +1 -0
- package/dist/tools/context.js +243 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/contextTools.js +57 -0
- package/dist/tools/contextTools.js.map +1 -0
- package/dist/tools/coreCatalog.js +82 -0
- package/dist/tools/coreCatalog.js.map +1 -0
- package/dist/tools/desktopTools.js +41 -0
- package/dist/tools/desktopTools.js.map +1 -0
- package/dist/tools/directTools.js +273 -0
- package/dist/tools/directTools.js.map +1 -0
- package/dist/tools/envelope.js +71 -0
- package/dist/tools/envelope.js.map +1 -0
- package/dist/tools/extraTools.js +298 -0
- package/dist/tools/extraTools.js.map +1 -0
- package/dist/tools/gitTools.js +93 -0
- package/dist/tools/gitTools.js.map +1 -0
- package/dist/tools/jobTools.js +454 -0
- package/dist/tools/jobTools.js.map +1 -0
- package/dist/tools/memoryTools.js +102 -0
- package/dist/tools/memoryTools.js.map +1 -0
- package/dist/tools/metaTools.js +153 -0
- package/dist/tools/metaTools.js.map +1 -0
- package/dist/tools/multimodalTools.js +262 -0
- package/dist/tools/multimodalTools.js.map +1 -0
- package/dist/tools/projectTools.js +261 -0
- package/dist/tools/projectTools.js.map +1 -0
- package/dist/tools/resourceTools.js +81 -0
- package/dist/tools/resourceTools.js.map +1 -0
- package/dist/tools/runtimeTools.js +137 -0
- package/dist/tools/runtimeTools.js.map +1 -0
- package/dist/tools/scheduleTools.js +10 -0
- package/dist/tools/scheduleTools.js.map +1 -0
- package/dist/tools/semanticTools.js +141 -0
- package/dist/tools/semanticTools.js.map +1 -0
- package/dist/tools/subagentTools.js +32 -0
- package/dist/tools/subagentTools.js.map +1 -0
- package/dist/tools/surface.js +644 -0
- package/dist/tools/surface.js.map +1 -0
- package/dist/tunnel/control.js +113 -0
- package/dist/tunnel/control.js.map +1 -0
- package/dist/tunnel/credentials.js +392 -0
- package/dist/tunnel/credentials.js.map +1 -0
- package/dist/tunnel/log.js +84 -0
- package/dist/tunnel/log.js.map +1 -0
- package/dist/tunnel/runtime.js +55 -0
- package/dist/tunnel/runtime.js.map +1 -0
- package/dist/tunnel/supervisor.js +280 -0
- package/dist/tunnel/supervisor.js.map +1 -0
- package/dist/util/bytes.js +53 -0
- package/dist/util/bytes.js.map +1 -0
- package/dist/util/hash.js +53 -0
- package/dist/util/hash.js.map +1 -0
- package/dist/workspace/fs.js +305 -0
- package/dist/workspace/fs.js.map +1 -0
- package/dist/workspace/identity.js +17 -0
- package/dist/workspace/identity.js.map +1 -0
- package/dist/workspace/ignores.js +173 -0
- package/dist/workspace/ignores.js.map +1 -0
- package/dist/workspace/root.js +59 -0
- package/dist/workspace/root.js.map +1 -0
- package/docs/AGENT_RUNTIME.md +154 -0
- package/docs/AI_PROVIDERS.md +110 -0
- package/docs/ARCHITECTURE.md +331 -0
- package/docs/ASSISTANCE.md +31 -0
- package/docs/AUTH.md +59 -0
- package/docs/BRAIN.md +92 -0
- package/docs/COMPATIBILITY.md +92 -0
- package/docs/CONFIRMATION.md +13 -0
- package/docs/CONTEXT.md +87 -0
- package/docs/DESKTOP.md +35 -0
- package/docs/EVALUATION.md +86 -0
- package/docs/LARGE_INPUTS.md +21 -0
- package/docs/LSP.md +21 -0
- package/docs/MANUAL_ACCEPTANCE.md +283 -0
- package/docs/MEMORY.md +128 -0
- package/docs/MULTIMODAL.md +32 -0
- package/docs/PROJECTS.md +146 -0
- package/docs/RELEASE_1.0.0.md +111 -0
- package/docs/RELEASE_NOTES.md +92 -0
- package/docs/RESOURCES.md +83 -0
- package/docs/RUNTIME.md +125 -0
- package/docs/SCHEDULES.md +23 -0
- package/docs/SECURITY.md +250 -0
- package/docs/TEST_REPORT.md +312 -0
- package/docs/TUNNEL.md +86 -0
- package/docs/WEB_CLIENTS.md +43 -0
- package/docs/WINDOWS.md +79 -0
- package/docs/adr/001-one-process-one-workspace.md +22 -0
- package/docs/adr/002-external-tunnel.md +19 -0
- package/docs/adr/003-sdk-v2-legacy-stateless.md +20 -0
- package/docs/adr/004-embedded-oauth-provider.md +19 -0
- package/docs/adr/005-static-client-baseline.md +19 -0
- package/docs/adr/006-guarded-fs-explicit-exec.md +16 -0
- package/docs/adr/007-preview-hash-journal.md +18 -0
- package/docs/adr/008-ts-js-semantics-first.md +17 -0
- package/docs/adr/009-jobs-polling.md +18 -0
- package/docs/adr/010-sqlite-better-sqlite3.md +18 -0
- package/docs/adr/011-env-example-secure-default.md +19 -0
- package/docs/adr/012-workspace-scope-grant.md +24 -0
- package/docs/adr/013-loopback-proxy-trust.md +18 -0
- package/docs/adr/014-direct-coding-tier.md +48 -0
- package/docs/adr/015-coding-agent-parity.md +56 -0
- package/docs/adr/016-oidc-openid-consent.md +15 -0
- package/docs/adr/017-installation-identity-local-config.md +44 -0
- package/docs/adr/018-access-scope-encoding.md +11 -0
- package/docs/adr/019-runtime-workspace-switch.md +59 -0
- package/docs/adr/020-desktop-access.md +50 -0
- package/docs/adr/021-persistent-desktop-consent.md +39 -0
- package/docs/adr/022-owner-kill-preserves-login.md +30 -0
- package/docs/adr/023-large-coding-inputs.md +49 -0
- package/docs/adr/024-usage-rounds-and-schedules.md +72 -0
- package/docs/adr/025-owner-chat-whitelist.md +53 -0
- package/docs/adr/026-remove-conversation-confirmation.md +35 -0
- package/docs/adr/027-workspace-client-list.md +20 -0
- package/docs/adr/028-owner-client-deletion.md +25 -0
- package/docs/adr/029-compact-tool-surface.md +121 -0
- package/docs/adr/030-windows-native-candidate.md +71 -0
- package/docs/adr/031-owner-selected-tunnel-supervision.md +13 -0
- package/docs/adr/032-owner-project-registry.md +43 -0
- package/docs/adr/033-read-only-project-federation.md +61 -0
- package/docs/adr/034-universal-resource-cas.md +60 -0
- package/docs/adr/035-project-brain-incremental-index.md +51 -0
- package/docs/adr/036-context-engine-evidence.md +53 -0
- package/docs/adr/037-owner-reviewed-memory.md +46 -0
- package/docs/adr/038-runtime-intelligence.md +46 -0
- package/docs/adr/039-advanced-agent-runtime.md +57 -0
- package/docs/adr/040-dodobench-release-gate.md +43 -0
- package/docs/adr/041-local-macos-docker-linux-gates.md +32 -0
- package/docs/adr/042-project-directory-generation-identity.md +36 -0
- package/docs/adr/043-trusted-self-hosted-platform-gates.md +38 -0
- package/docs/adr/044-global-launcher-and-cli-menu.md +43 -0
- package/docs/adr/045-ai-providers-multiproject.md +56 -0
- package/docs/adr/046-personal-access-mode.md +32 -0
- package/docs/adr/README.md +64 -0
- package/examples/.dodo.json.example +20 -0
- package/examples/cloudflared.yml +23 -0
- package/examples/reverse-proxy-fixture.mjs +37 -0
- package/native/desktop-linux.py +387 -0
- package/native/desktop-windows.cs +180 -0
- package/native/desktop.swift +212 -0
- package/package.json +145 -0
- package/schemas/global-config.schema.json +497 -0
- package/schemas/project-config.schema.json +75 -0
- package/schemas/tools.compact.json +3236 -0
- package/schemas/tools.hybrid.json +8194 -0
- package/schemas/tools.json +34518 -0
- package/scripts/guard-publish.mjs +12 -0
- package/scripts/setup-multimodal.mjs +70 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# DODO MCP 1.0.0
|
|
2
|
+
|
|
3
|
+
นี่คือ release แรกของ DODO MCP ในชื่อ package `dodo-mcp` และ CLI `dodo`
|
|
4
|
+
|
|
5
|
+
## การติดตั้ง
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g dodo-mcp@1.0.0
|
|
9
|
+
dodo --version
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## ความสามารถหลัก
|
|
13
|
+
|
|
14
|
+
- MCP HTTP + OAuth และ Local Config แบบ loopback
|
|
15
|
+
- `dodo --cli` interactive owner menu และ global launcher ที่ไม่ใช้ CWD เป็น workspace
|
|
16
|
+
- startup project จาก owner registry; OAuth installation login และ catalog ใช้ได้ก่อน
|
|
17
|
+
เลือกโปรเจกต์ Personal mode พร้อมใช้หลัง owner เพิ่ม path ส่วน managed mode เพิ่ม ACL
|
|
18
|
+
- Compact HTTP surface 19 tools
|
|
19
|
+
- Complete capability catalog 125 tools; Full STDIO ค่าเริ่มต้นแสดง 121 และ owner เปิด Sub-agent MCP exposure แล้วเป็น 125
|
|
20
|
+
- Hybrid surface 49 tools
|
|
21
|
+
- direct coding tools, gateway dispatch และ operation discovery
|
|
22
|
+
- workspace switching จาก Local Config พร้อม readiness และ rollback
|
|
23
|
+
- Personal mode แบบเพิ่มแล้วใช้ได้ทันที และ managed mode สำหรับ workspace ACL/trust แบบละเอียด
|
|
24
|
+
- OAuth scopes, workspace context, approval, path/secret guards และ audit
|
|
25
|
+
- file changes แบบ hash-verified, journaled และ rollback ได้
|
|
26
|
+
- jobs, Git, semantic tools, LSP และ task assistance
|
|
27
|
+
- multimodal, browser, game, workflow และ schedule tools ตาม prerequisite
|
|
28
|
+
- setup แบบ plan-first: installer ที่ยังขาดต้องยืนยันด้วย `--yes`
|
|
29
|
+
- existing-state import ที่นำเข้าเฉพาะ non-authority preferences และสร้าง security identity ใหม่
|
|
30
|
+
- Cloudflare Tunnel แบบ process-owned พร้อม run-scoped token จาก hidden terminal prompt หรือ Local Config, authenticated control IPC, bounded retry/readiness และ redacted diagnostics
|
|
31
|
+
- `dodo start` เปิด tunnel พร้อม MCP ในรอบเดียว; `--no-tunnel` เปิด local-only และ token ไม่ถูกบันทึกลงเครื่อง
|
|
32
|
+
- owner-curated multi-project read federation สำหรับ overview/list/read/search สูงสุด 8 โปรเจกต์ พร้อม live target authority, readiness, source hash และ target-scoped audit
|
|
33
|
+
- Universal Resource Layer + private SHA-256 CAS พร้อม bounded range/resume,
|
|
34
|
+
deterministic extraction และ MCP image/audio preview
|
|
35
|
+
- Project Brain แบบ incremental พร้อม AST symbols/references/import graph,
|
|
36
|
+
routes/tests/dependencies, stable semantic URI และ current-source verification
|
|
37
|
+
- Context Engine แบบ goal-driven พร้อม evidence provenance/confidence/freshness,
|
|
38
|
+
deterministic budget/cursor และ caller-scoped L0–L6 dependency cache
|
|
39
|
+
- owner-reviewed Memory พร้อม source evidence, confidence, retention, CURRENT/STALE,
|
|
40
|
+
explicit cross-project visibility และ non-executable workflow/skill proposals
|
|
41
|
+
- Runtime Intelligence พร้อม durable/reconnectable tasks, bounded process/test/browser
|
|
42
|
+
evidence, guarded snapshot, source revalidation และ fact/observation/inference diagnosis
|
|
43
|
+
- Advanced Agent Runtime พร้อม immutable plans, bounded parallel hypotheses, path intents,
|
|
44
|
+
managed target dispatch, snapshot rollback, evidence-backed completion, restart recovery
|
|
45
|
+
และ owner-reviewed non-executable skills
|
|
46
|
+
- DodoBench แบบ revision-bound และ release gate ที่ตรวจ real HTTP/OAuth Compact,
|
|
47
|
+
STDIO Full, security regressions, immutable package checksum และ fresh tarball install
|
|
48
|
+
- platform evidence ใช้ macOS local, Linux Docker และ dedicated self-hosted GitHub
|
|
49
|
+
Actions สำหรับ Linux/Windows trusted main; Windows manual gate ยังเป็น
|
|
50
|
+
`MANUAL_NOT_RUN`
|
|
51
|
+
- Project Registry ผูก directory generation ด้วย device/inode/birthtimeNs เพื่อกัน
|
|
52
|
+
inode reuse บน Linux โดย state v1 ที่พิสูจน์ generation ไม่ได้ต้องให้เจ้าของ review
|
|
53
|
+
|
|
54
|
+
## ลำดับการใช้ Compact
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
project_overview
|
|
58
|
+
→ dodo_discover
|
|
59
|
+
→ selected gateway
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Compact ลด schema load ตอนเชื่อมต่อ แต่ยังใช้ target authorization และ policy เดิมทุกข้อ
|
|
63
|
+
|
|
64
|
+
## Setup ที่ปลอดภัย
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
dodo setup --check
|
|
68
|
+
dodo setup --plan --components git,ripgrep,ffmpeg
|
|
69
|
+
dodo setup --yes --components git,ripgrep,ffmpeg
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`--check` และ `--plan` ไม่เขียน config หรือเริ่ม installer การใช้ `--import-state` จะเก็บ source เดิมและไม่คัดลอก OAuth, token, database, ACL, trust หรือ permission-bearing configuration
|
|
73
|
+
|
|
74
|
+
## Tunnel
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
dodo setup --check --components cloudflared
|
|
78
|
+
dodo init --public-url https://mcp.example.com
|
|
79
|
+
dodo start
|
|
80
|
+
# กรอก token แบบชั่วคราว หรือกด Enter เพื่อใช้ local-only
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
DODO ไม่สร้าง Tunnel/DNS และไม่ใช้ Cloudflare API Token ค่า Tunnel token ไม่ถูกบันทึกใน config/credential store หรือส่งเป็น process argument หน้า Local Config เริ่ม/หยุด tunnel ของ process ปัจจุบันได้โดยตอบกลับ `tokenStored:false`
|
|
84
|
+
|
|
85
|
+
## Security
|
|
86
|
+
|
|
87
|
+
Gateway ไม่ grant สิทธิ์, ไม่ bypass OAuth, ACL, workspace ID/epoch, trust, approval, path guard, secret guard หรือ command sandbox การเรียก operation ทุกครั้งถูกตรวจโดย target tool definition
|
|
88
|
+
|
|
89
|
+
Memory เป็น untrusted evidence เท่านั้น AI approve/prune เองไม่ได้ และ reviewed
|
|
90
|
+
learning ไม่ถูกติดตั้งหรือ execute อัตโนมัติ
|
|
91
|
+
|
|
92
|
+
Runtime task ใช้ execution approval และ command sandbox เดิม Evidence IDs ไม่ใช่
|
|
93
|
+
สิทธิ์ และ runtime store ไม่เก็บ raw stdout/stderr, browser DOM/console, cookies,
|
|
94
|
+
authorization headers หรือ environment secrets
|
|
95
|
+
|
|
96
|
+
Advanced Agent Runtime เป็น coordination-only และจำกัด authority เพิ่มจาก caller ทุก
|
|
97
|
+
managed operation ยังผ่าน target scope/ACL/epoch/trust/approval/path/secret/hash/sandbox
|
|
98
|
+
เดิม Skill ที่ owner review แล้วยังเป็น untrusted guidance และ cancel run ไม่ kill job
|
|
99
|
+
|
|
100
|
+
## ตรวจรับ
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm run build
|
|
104
|
+
npm run typecheck
|
|
105
|
+
npm run lint
|
|
106
|
+
npm run test:all
|
|
107
|
+
npm run test:linux:docker
|
|
108
|
+
npm pack
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
การเชื่อมต่อ ChatGPT, Claude หรือ client ภายนอกต้องทำ manual scan/rescan และยืนยัน write/edit ด้วย workspace fixture แยกต่างหาก ผลที่ยังไม่ได้ทำต้องรายงานเป็น `MANUAL_NOT_RUN`
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# DODO MCP — Release Notes
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Global launcher และ interactive CLI
|
|
6
|
+
|
|
7
|
+
- เพิ่ม `dodo --cli` เป็นเมนู owner สำหรับเลือก/เพิ่มโปรเจกต์ เปิด server + Tunnel
|
|
8
|
+
ด้วย token ชั่วคราว และ setup dependencies รวม cloudflared
|
|
9
|
+
- `dodo`/`dodo start` ใช้โปรเจกต์ที่ owner เลือกล่าสุด หรือเปิด launcher mode ที่ไม่มี
|
|
10
|
+
active AI workspace แทนการใช้ CWD โดยอัตโนมัติ; `--root` เลือกและจำ root แบบ explicit
|
|
11
|
+
- Local Config เพิ่มโปรเจกต์แล้วเปิดได้ทันที และรองรับสถานะก่อนเลือก workspace
|
|
12
|
+
- `dodo start` และ Local Config รับ Cloudflare token แบบ run-scoped ไม่บันทึกลงเครื่อง และหยุด child พร้อม DODO
|
|
13
|
+
- เพิ่ม personal mode เป็นค่าเริ่มต้น: owner เพิ่ม project, connection และ profile แล้วใช้
|
|
14
|
+
ได้ทันทีตาม OAuth/profile scopes โดยไม่ตั้ง ACL/trust/egress ซ้ำ; managed mode เดิมยังมี
|
|
15
|
+
- persistent Desktop/Chrome named-app consent เป็นระดับ installation อนุญาตครั้งเดียว
|
|
16
|
+
จาก directory ใดก็ได้ ขณะที่ OS permission, scopes, snapshots และ app allowlist ยังตรวจครบ
|
|
17
|
+
- เพิ่มสวิตช์ Settings สำหรับ expose Sub-agent operations ให้ MCP โดยค่าเริ่มต้นปิด;
|
|
18
|
+
หน้าเว็บ Chat & Tasks ยังใช้ agent ได้ และการเปิดสวิตช์ไม่เพิ่มสิทธิ์ใด ๆ
|
|
19
|
+
|
|
20
|
+
### DodoBench และ release evidence
|
|
21
|
+
|
|
22
|
+
- เพิ่ม deterministic DodoBench baseline ครอบคลุม cross-project retrieval, safe edit,
|
|
23
|
+
runtime diagnosis, resource image, durable recovery, authorization และ optional browser
|
|
24
|
+
- เพิ่ม candidate/strict release gate พร้อม audit, manifest policy, checksum และ fresh
|
|
25
|
+
exact-tarball smoke ของ CLI, STDIO Full และ HTTP/OAuth Compact
|
|
26
|
+
- รายงานผูกกับ Git revision, dataset, dependency lock, configuration และ platform;
|
|
27
|
+
model token เป็น `null` เมื่อไม่มี model call และ manual/platform status ไม่ถูกแต่งขึ้น
|
|
28
|
+
- ใช้ macOS local + Linux Docker เป็น release gate และเพิ่ม dedicated self-hosted
|
|
29
|
+
GitHub Actions สำหรับ Linux/Windows Node 22/24 เฉพาะ trusted main/manual โดย
|
|
30
|
+
Windows manual gate ยังคง `MANUAL_NOT_RUN`
|
|
31
|
+
- Project Registry metadata v2 ผูก canonical path กับ device/inode/birthtimeNs เพื่อ
|
|
32
|
+
ปฏิเสธ directory replacement แม้ Linux reuse inode โดย row v1 ที่ไม่มี birth time
|
|
33
|
+
จะไม่ถูก auto-upgrade และต้องให้เจ้าของ review/remove/add ใหม่
|
|
34
|
+
|
|
35
|
+
- เปิดตัว package `dodo-mcp` และ CLI `dodo`
|
|
36
|
+
- เพิ่ม config foundation ที่ใช้ `DODO_CONFIG_DIR` และ safe existing-state preference import แบบ explicit
|
|
37
|
+
- เพิ่ม `dodo tunnel configure/status/start/stop/restart/doctor/logs` สำหรับ external และ managed Cloudflare Tunnel โดยไม่จัดการ Cloudflare account/DNS
|
|
38
|
+
- เส้นทางหลักใช้ temporary Tunnel token ที่ไม่อยู่ใน config/credential store/argv/logs/MCP jobs; secure references คงไว้เฉพาะ advanced compatibility commands
|
|
39
|
+
- `dodo setup --check/--plan` เป็น read-only และ dependency installer ต้องได้รับ `--yes` ก่อนเริ่ม
|
|
40
|
+
- state import ไม่คัดลอก OAuth material, database, client/workspace authority หรือ permission-bearing config
|
|
41
|
+
- เพิ่ม Compact, Full และ Hybrid MCP tool surfaces
|
|
42
|
+
- เพิ่ม operation discovery และ gateway dispatch ผ่าน policy pipeline เดียวกับ direct tools
|
|
43
|
+
- คง workspace ID/epoch, ACL, trust, approval, expected hash และ secret/path guards
|
|
44
|
+
- รองรับ Local Config workspace switching พร้อม drain, readiness และ rollback
|
|
45
|
+
- รวม coding, jobs, Git, intelligence, assistance, multimodal, browser, game, workflow และ schedule capabilities
|
|
46
|
+
- เพิ่ม Windows compatibility plan และ setup diagnostics
|
|
47
|
+
- เพิ่ม owner-only Project Registry พร้อม stable project ID, path readiness, CLI CRUD และ Local Config UI
|
|
48
|
+
- Project relocation รักษา project ID เฉพาะเมื่อ directory identity เดิมตรวจได้ และไม่คัดลอก trust/client ACL
|
|
49
|
+
- เพิ่ม read-only multi-project federation ผ่าน overview/list/read/search สูงสุด 8 โปรเจกต์ โดยตรวจ installation identity, target ACL/readiness, source hash และ target-scoped audit
|
|
50
|
+
- เพิ่ม `resource_inspect`, `resource_read`, `resource_read_range`,
|
|
51
|
+
`resource_preview`, `resource_extract` และ `resource_transform`
|
|
52
|
+
- เพิ่ม installation-private immutable SHA-256 CAS, workspace/principal-scoped
|
|
53
|
+
references, bounded range/resume, expected hash/MIME, MCP image/audio preview,
|
|
54
|
+
safe ZIP metadata และ transactional reference-aware GC
|
|
55
|
+
- เพิ่ม Project Brain แบบ incremental สำหรับ TypeScript/JavaScript AST,
|
|
56
|
+
symbols/references/imports/routes/tests/dependencies, stable `symbol://` identity,
|
|
57
|
+
source freshness, rebuild/pause/cancel และ corruption/restart recovery; Full เป็น
|
|
58
|
+
86 tools ส่วน Compact/Hybrid คง 19/49 และ route ผ่าน assistance gateways
|
|
59
|
+
- เพิ่ม `context_query`, `context_evidence`, `context_status` สำหรับ goal-driven
|
|
60
|
+
retrieval, evidence 5 classes, provenance/confidence/freshness, deterministic
|
|
61
|
+
ranking, budget/cursor และ dependency-aware L0–L6 cache ทำให้ Full เป็น 89 tools
|
|
62
|
+
โดย Compact/Hybrid คง 19/49 ผ่าน `dodo_assist_read`
|
|
63
|
+
- เพิ่ม `memory_search`, `memory_inspect`, `memory_status`, `memory_propose` และ
|
|
64
|
+
`memory_learning_propose`; catalog หลัง Phase 08 เป็น
|
|
65
|
+
Full 104 tools ส่วน Compact/Hybrid คง 19/49
|
|
66
|
+
ผ่าน assistance gateways Permanent memory ต้องผ่าน private owner review + exact
|
|
67
|
+
digest, ตรวจ source/retention/ACL ซ้ำ และ learning review ไม่ติดตั้งหรือ execute เอง
|
|
68
|
+
- เพิ่ม Runtime Intelligence 10 operations สำหรับ durable session, reconnectable
|
|
69
|
+
process/test/container task, bounded task/browser evidence, guarded snapshot,
|
|
70
|
+
evidence revalidation และ deterministic diagnosis ทำให้ Full ณ Phase 08 เป็น 104 tools
|
|
71
|
+
ขณะที่ Compact/Hybrid คง 19/49 ผ่าน gateways เดิม
|
|
72
|
+
- Runtime task ใช้ JobManager, execution approval, idempotency, environment allowlist,
|
|
73
|
+
timeout และ command sandbox เดิม Runtime store ไม่เก็บ raw stdout/stderr, DOM,
|
|
74
|
+
console, cookie, authorization header หรือ environment secret
|
|
75
|
+
- เพิ่ม Advanced Agent Runtime 17 operations สำหรับ immutable plan, bounded parallel
|
|
76
|
+
hypotheses, intent locks, managed read/write/exec, metadata snapshot compare/rollback,
|
|
77
|
+
Runtime-evidence judgement, restart recovery และ reviewed skills ทำให้ Full เป็น 121
|
|
78
|
+
tools ขณะที่ Compact/Hybrid คง 19/49
|
|
79
|
+
- Agent capabilities ลดสิทธิ์จาก caller เท่านั้น Managed target ยังผ่าน invocation
|
|
80
|
+
pipeline เดิม Skill proposal ต้องผ่าน private owner review exact digest และยังเป็น
|
|
81
|
+
non-executable untrusted guidance; coordinator cancel/pause ไม่ kill jobs
|
|
82
|
+
- บังคับ canonical Base64URL ก่อนตรวจ HMAC ของ Resource และ Project Brain cursors
|
|
83
|
+
เพื่อไม่ให้ token string ที่ถูกแก้ไข alias เป็น byte sequence เดิมจาก decoder ที่ permissive
|
|
84
|
+
|
|
85
|
+
## วิธีอัปเดต
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm install -g dodo-mcp@1.0.0
|
|
89
|
+
dodo --version
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
หลังติดตั้งให้ restart DODO process และ rescan MCP connection ตามข้อกำหนดของ client
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Universal Resources and CAS
|
|
2
|
+
|
|
3
|
+
DODO maps guarded workspace files and owned runtime media assets to one immutable
|
|
4
|
+
resource contract. The content-addressed store (CAS) is local to the installation;
|
|
5
|
+
no resource is uploaded and no listener is added.
|
|
6
|
+
|
|
7
|
+
## Operations
|
|
8
|
+
|
|
9
|
+
| Operation | Purpose | Scope/policy |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `resource_inspect` | Ingest a workspace path or owned `assetId`, or inspect a `resourceId` | `dodo:read`; asset ingest also rechecks `dodo:exec` |
|
|
12
|
+
| `resource_read` | Read the first bounded chunk | `dodo:read` |
|
|
13
|
+
| `resource_read_range` | Read/resume a byte range, maximum 256 KiB | `dodo:read` |
|
|
14
|
+
| `resource_preview` | Bounded text/image/audio/metadata preview | `dodo:read` |
|
|
15
|
+
| `resource_extract` | UTF-8 text, metadata, or ZIP central-directory entries | `dodo:read` |
|
|
16
|
+
| `resource_transform` | Create one bounded raster thumbnail resource | `dodo:exec` plus trust/owner approval policy |
|
|
17
|
+
|
|
18
|
+
Full STDIO exposes these names directly. HTTP Compact and Hybrid use:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
dodo_discover(operation="resource_inspect")
|
|
22
|
+
dodo_media(operation="resource_inspect", args={"path":"assets/example.png"})
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Keep `workspaceId` and `workspaceEpoch` at the gateway top level. Never put them in
|
|
26
|
+
`args`.
|
|
27
|
+
|
|
28
|
+
## Identity and ranges
|
|
29
|
+
|
|
30
|
+
`resource_inspect` returns an opaque `resourceId`, a `dodo-resource://` URI, detected
|
|
31
|
+
MIME, size, `sha256:...`, safe source label, capabilities and expiry. The URI is for
|
|
32
|
+
identity/display only. It is not an HTTP URL and not a bearer credential.
|
|
33
|
+
|
|
34
|
+
`resource_read_range` returns Base64 for one bounded byte range, a hash of that
|
|
35
|
+
chunk, the immutable object hash, offsets and a signed `resumeToken`. Continue with:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
resource_read_range(cursor="<resumeToken>", length=65536)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Do not combine a cursor with resourceId/offset/expectedSha256. Tokens expire after
|
|
42
|
+
ten minutes and are bound to the original principal, workspace, resource, hash and
|
|
43
|
+
next offset. DODO still performs live authorization on resume.
|
|
44
|
+
|
|
45
|
+
## Supported detection and providers
|
|
46
|
+
|
|
47
|
+
Content signatures detect PNG, JPEG, GIF, WebP, WAV, MP3, MP4, WebM, PDF, ZIP and
|
|
48
|
+
WASM. Valid UTF-8 supports plain text, common source formats, JSON, XML, SVG, YAML and
|
|
49
|
+
TOML. Extensions refine UTF-8 text only; they never make arbitrary bytes trusted.
|
|
50
|
+
|
|
51
|
+
- Raster image: metadata, bounded JPEG preview and thumbnail transform.
|
|
52
|
+
- Audio: bounded original MCP audio block when at most 6 MiB.
|
|
53
|
+
- Text/JSON/XML/SVG: bounded UTF-8 read/extract; SVG is never rendered as active content.
|
|
54
|
+
- PDF/video/WASM/opaque binary: identity, metadata and bounded range access.
|
|
55
|
+
- ZIP: bounded central-directory names and sizes only; no entry is inflated.
|
|
56
|
+
|
|
57
|
+
PDF text extraction, OCR and general transcoding are not claimed by this phase.
|
|
58
|
+
|
|
59
|
+
## Limits and retention
|
|
60
|
+
|
|
61
|
+
- object: 512 MiB
|
|
62
|
+
- installation CAS objects: 2 GiB
|
|
63
|
+
- one range: 256 KiB
|
|
64
|
+
- one image/audio MCP block: 6 MiB
|
|
65
|
+
- active references: 512 per principal/workspace
|
|
66
|
+
- reference lifetime: 24 hours
|
|
67
|
+
- resume token lifetime: 10 minutes
|
|
68
|
+
|
|
69
|
+
Expired references are collected automatically. An object is removed only after no
|
|
70
|
+
reference points to it. Newly created or freshly verified orphan objects receive a
|
|
71
|
+
one-hour grace period so GC cannot race the reference-creation step. The aggregate
|
|
72
|
+
2 GiB ceiling is enforced again by SQLite for concurrent DODO processes.
|
|
73
|
+
|
|
74
|
+
## Security
|
|
75
|
+
|
|
76
|
+
Every operation passes the normal invocation pipeline and then rechecks live
|
|
77
|
+
grant/client/workspace access and reference ownership. Workspace ingest also checks
|
|
78
|
+
secret/protected/private-state paths, traversal, symlinks, hardlinks, regular-file
|
|
79
|
+
identity and expected hash/MIME. Object bytes live below the owner-private DODO config
|
|
80
|
+
directory and are SHA-256 verified before reads. Resource content and decoder output
|
|
81
|
+
remain untrusted data. A complete fsynced staging inode is published with
|
|
82
|
+
create-if-absent hard-link semantics, so concurrent writers cannot replace a CAS
|
|
83
|
+
winner with partial bytes.
|
package/docs/RUNTIME.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# DODO Runtime Intelligence
|
|
2
|
+
|
|
3
|
+
Runtime Intelligence เก็บหลักฐานจากสิ่งที่เกิดขึ้นจริงใน active workspace โดยคง
|
|
4
|
+
security model เดิม ไม่ใช่ agent ที่เฝ้าระบบเองและไม่ใช่ช่องทางรัน command ใหม่
|
|
5
|
+
|
|
6
|
+
## สิ่งที่รองรับ
|
|
7
|
+
|
|
8
|
+
- runtime session ที่คงอยู่ข้าม MCP reconnect และ server restart
|
|
9
|
+
- process, test และ container-labelled task ผ่าน `JobManager`
|
|
10
|
+
- task observation ที่เก็บ status, exit metadata, byte counts และ SHA-256 เท่านั้น
|
|
11
|
+
- optional JSON test report ที่ลดเหลือ aggregate counts และ source hash
|
|
12
|
+
- browser evidence จาก owned `browser_session` พร้อม bounded MCP image/DOM response
|
|
13
|
+
- guarded workspace snapshot และ changeset rollback candidates
|
|
14
|
+
- evidence revalidation และ diagnosis ที่แยก fact, observation และ inference
|
|
15
|
+
- current runtime evidence เป็น `OBSERVATION` source ใน Context Engine
|
|
16
|
+
|
|
17
|
+
Full surface มี operations ต่อไปนี้:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
runtime_session_open
|
|
21
|
+
runtime_session_status
|
|
22
|
+
runtime_session_close
|
|
23
|
+
runtime_task_start
|
|
24
|
+
runtime_task_observe
|
|
25
|
+
runtime_task_cancel
|
|
26
|
+
runtime_browser_collect
|
|
27
|
+
runtime_snapshot
|
|
28
|
+
runtime_evidence
|
|
29
|
+
runtime_diagnose
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Compact/Hybrid route ผ่าน `dodo_assist_read`, `dodo_assist_change`, `dodo_exec` และ
|
|
33
|
+
`dodo_browser`; ใช้ `dodo_discover(operation="runtime_task_start")` เพื่ออ่าน schema
|
|
34
|
+
ล่าสุด
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
runtime_session_open
|
|
40
|
+
→ runtime_task_start หรือ runtime_browser_collect/runtime_snapshot
|
|
41
|
+
→ runtime_task_observe
|
|
42
|
+
→ runtime_evidence (revalidate)
|
|
43
|
+
→ runtime_diagnose / context_query
|
|
44
|
+
→ runtime_session_close
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Session default 60 นาทีและตั้งได้สูงสุด 24 ชั่วโมง Evidence เก็บ 24 ชั่วโมง
|
|
48
|
+
มีเพดาน 32 open sessions และ 128 retained sessions ต่อ caller/workspace, 32 tasks ต่อ session, 500 evidence
|
|
49
|
+
ต่อ session และ 2,000 evidence ต่อ caller/workspace Session หมดอายุไม่ kill job
|
|
50
|
+
งานยังอยู่ใน JobManager และดูได้ด้วย job ID ตาม policy เดิม การ close จะปฏิเสธหาก
|
|
51
|
+
attached task ยัง running
|
|
52
|
+
|
|
53
|
+
## Runtime task
|
|
54
|
+
|
|
55
|
+
`runtime_task_start` รับ explicit `program` และ `args` เท่านั้น ไม่มี shell command
|
|
56
|
+
string ก่อน spawn ระบบตรวจ:
|
|
57
|
+
|
|
58
|
+
1. OAuth `dodo:exec`, installation grant และ active workspace ACL
|
|
59
|
+
2. workspace ID/epoch และ principal ownership
|
|
60
|
+
3. trusted executable หรือ guarded workspace-relative executable
|
|
61
|
+
4. trust-mode execution approval ที่ bind กับ session/kind/program/args/options
|
|
62
|
+
5. caller idempotency key; retry key+payload เดิมคืน receipt เดิม
|
|
63
|
+
6. owner-configured command sandbox และ network option
|
|
64
|
+
7. environment allowlist, argv budget, concurrency และ wall timeout ของ JobManager
|
|
65
|
+
|
|
66
|
+
`kind=container` เป็น evidence label ไม่ใช่ container daemon หรือ privilege bypass
|
|
67
|
+
caller ยังต้องระบุ executable ที่ติดตั้งแล้ว เช่น container CLI และ command นั้นผ่าน
|
|
68
|
+
policy เหมือน process อื่น
|
|
69
|
+
|
|
70
|
+
## Evidence ที่จัดเก็บ
|
|
71
|
+
|
|
72
|
+
Process/test/container row เก็บเฉพาะ:
|
|
73
|
+
|
|
74
|
+
- task/job opaque IDs, kind และ bounded duration
|
|
75
|
+
- status, exit code, signal, start/end/timeout timestamps
|
|
76
|
+
- stdout/stderr total bytes, truncated flag และ SHA-256 ของ bounded sample
|
|
77
|
+
- optional test report path/hash และ total/passed/failed/skipped/success
|
|
78
|
+
|
|
79
|
+
ไม่เก็บ raw stdout/stderr หรือ command output ลง runtime table Raw output ที่มีอยู่ใน
|
|
80
|
+
bounded JobManager spool ยังเข้าถึงผ่าน `job_output` ตาม permission เดิมและ retention
|
|
81
|
+
ของ jobs
|
|
82
|
+
|
|
83
|
+
Browser collector เก็บ safe URL ที่ตัด query/fragment, observation ID, title/DOM/image
|
|
84
|
+
hash, navigation timing และจำนวน elements/media/console/network/blocked requests
|
|
85
|
+
เท่านั้น WebSocket policy ถูกบันทึกว่า blocked ตาม browser isolation ไม่เก็บ DOM
|
|
86
|
+
text, console text, request headers, cookies, authorization, input/password values หรือ
|
|
87
|
+
page storage ภาพและ bounded observation ถูกส่งเฉพาะ response ปัจจุบันจาก
|
|
88
|
+
`BrowserService` ซึ่งยังตรวจ owner, expiry, fresh observation และ web setting
|
|
89
|
+
|
|
90
|
+
Snapshot เก็บ manifest hash จาก path/size/mtime/ctime metadata ที่ผ่าน `WorkspaceFS`
|
|
91
|
+
พร้อม file count/truncated และ caller-owned committed changeset IDs + summary hash
|
|
92
|
+
ไม่มี file contents การ snapshot ไม่ apply หรือ rollback สิ่งใด
|
|
93
|
+
|
|
94
|
+
## Freshness และ Context Engine
|
|
95
|
+
|
|
96
|
+
Evidence เป็น immutable observation เมื่อ `runtime_evidence(refresh=true)` พบว่า job,
|
|
97
|
+
browser observation, test report หรือ workspace manifest เปลี่ยน จะ mark record เดิม
|
|
98
|
+
`STALE` โดยไม่เขียนทับ source/content hash การ collect/observe/snapshot ใหม่สร้าง
|
|
99
|
+
evidence ใหม่
|
|
100
|
+
|
|
101
|
+
Context Engine อ่านเฉพาะ `CURRENT`, unexpired evidence ของ caller และ active workspace
|
|
102
|
+
แล้วสร้าง `dodo-runtime://runtimeev_...` source โดยผูก content hash และ
|
|
103
|
+
caller-specific runtime manifest เป็น cache dependency Runtime text เป็น
|
|
104
|
+
`untrusted_runtime_evidence` และไม่สามารถเพิ่ม scope, trust, ACL หรือ approval
|
|
105
|
+
|
|
106
|
+
## Security boundaries
|
|
107
|
+
|
|
108
|
+
- session/task/evidence ผูก hash ของ `grantId + clientId`, workspace และ expiry
|
|
109
|
+
- ทุก operation re-check live client, grant, scope และ workspace ACL
|
|
110
|
+
- opaque ID ไม่ใช่ capability และต่าง principal/workspace ได้ `NOT_FOUND`
|
|
111
|
+
- repository config และ saved workflow ไม่ให้ authority แก่ collector
|
|
112
|
+
- runtime ไม่เปิด browser, web fetch, desktop, microphone หรือ system audio เอง
|
|
113
|
+
- browser collector ใช้เฉพาะ session ที่ caller เปิดและยังเป็นเจ้าของ
|
|
114
|
+
- cancel ส่งสัญญาณเฉพาะ live process tree ที่ JobManager เป็นเจ้าของ ไม่ kill stored PID
|
|
115
|
+
- Runtime diagnosis เป็น deterministic interpretation ของ bounded metadata ไม่ apply fix
|
|
116
|
+
|
|
117
|
+
## ข้อจำกัด
|
|
118
|
+
|
|
119
|
+
- ไม่มี autonomous monitoring หรือ background browser watcher
|
|
120
|
+
- มีเฉพาะ task duration และ browser navigation timing ไม่มี raw performance trace
|
|
121
|
+
หรือ WebSocket payload retention; WebSocket ถูก browser isolation ปิดตาม policy เดิม
|
|
122
|
+
- container task ไม่มี container-specific API; ใช้ explicit installed CLI ภายใต้ policy
|
|
123
|
+
- process exit code 0 ไม่พิสูจน์ user-visible behavior ต้องตรวจ source/UI evidence เพิ่ม
|
|
124
|
+
- restart ระหว่าง job running ทำให้ JobManager mark งานเป็น `interrupted_on_restart`
|
|
125
|
+
และไม่ส่ง signal ไป stored PID เพื่อป้องกัน PID reuse
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DODO Schedules
|
|
2
|
+
|
|
3
|
+
DODO รองรับการสร้าง schedule proposal สำหรับคำสั่งที่เจ้าของตรวจและ approve เอง
|
|
4
|
+
|
|
5
|
+
## Flow
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
schedule_propose
|
|
9
|
+
→ owner reviews exact digest
|
|
10
|
+
→ dodo schedule approve ID
|
|
11
|
+
→ bounded job runs under current workspace policy
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
proposal ไม่ใช่ permission และไม่สามารถขยาย scope, trust, workspace หรือ command sandbox ได้ การเปลี่ยน workspace หรือ revoke access ทำให้ proposal/resource ที่ไม่ valid ถูกปฏิเสธ
|
|
15
|
+
|
|
16
|
+
ตรวจ proposal ที่ค้างอยู่ด้วย:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
dodo schedule show ID
|
|
20
|
+
dodo approve ID
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
ระบบไม่ execute proposal ที่ยังไม่ผ่าน owner approval และไม่ kill jobs เดิมอย่างเงียบ ๆ
|