* also copy over pyproject and poetry lock
* add missing readme
* remove extra git config init since it is already done in client.py
* only chown if the /workspace dir does not exists
* Revert "remove extra git config init since it is already done in client.py"
This reverts commit e8556cd76dcb1720b33f5e06904c56efda2e7d9f.
* remove extra git config init since it is already done in client.py
* fix test runtime
* print container log while reconnecting
* print log in more readable format
* print log in more readable format
* increase lines
* clean up sandbox and ssh related stuff
* remove ssh hostname
* remove ssh hostname
* fix docker app cannot access runtime API issue
* remove ssh password
* API HOSTNAME should be pre-fixed with SANDBOX
* update config
* fix typo that breaks the test
* clean up sandbox and ssh related stuff
* remove ssh hostname
* remove ssh hostname
* remove ssh password
* update config
* fix typo that breaks the test
* update the behavior of put source code to put files instead of tarball
* add dishash to dependency
* fix dockerfile copy
* use dirhash to avoid repeat building for update source
* fix runtime_build testcase
* add dir_hash to docker build pipeline
* add additional tests for source directory
* add comment
* clear the assertion by explictly check existing files
* also assert od is a dir
* reduce dependency for runtime
* try making llama-index an optional dependency that's not installed by default
* do not install llama-index in CI
* do not install llama-index in the app docker as well
* test_runtime_client.py to test _execute_bash()
* runtime_build and runtime tweaks
* fix in docker script
* revert bash changes
* use sandbox_config.update_source_code to control source code update
* add od_version to the sandbox tag
* add doc instruction for update source code
* do not remove whole poetry folder;
add mamba clean
* add missing newlines
* cleanup runtime dockerfile into jinja template
* make prep temp file a separate function;
make that function accessible through cli
* modify `runtime_build.py` so it can generate directory for building docker img
* add dockerfile and sdist of runtime to gitignore since it will be dynamically generated
* add runtime to build
* do not rebuild new image when an `od_runtime` is provided
* use default container_image for testing if possible
* move runtime tests to ghcr runtime workflow
* update docker base dir for runtime
* fix unittest
* fix image name
* fix image name for test case
* rename to make it consistent
---------
Co-authored-by: tobitege <tobitege@gmx.de>
* tmp
* tmp
* merge main
* feat: auto build image cache
* remove plugins
* use config file
* update mamba setup shell
* support agnostic sandbox image autobuild
* remove config
* Update .gitignore
Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>
* Update opendevin/runtime/docker/ssh_box.py
Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>
* update setup.sh
* readd sudo
* add sudo in dockerfile
* remove export
* move od-runtime dependencies to sandbox dockerfile
* factor out re-build logic into a separate util file
* tweak existing plugin to use OD specific sandbox
* update testcase
* attempt to fix unit test using image built in ghcr
* use cache tag
* try to fix unit tests
* add unittest
* add unittest
* add some unittests
* revert gh workflow changes
* feat: optimize sandbox image naming rule
* add pull latest image hint
* add opendevin python hint and use mamba to install gcc
* update docker image naming rule and fix mamba issue
* Update opendevin/runtime/docker/ssh_box.py
Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk>
* fix: opendevin user use correct pip
* fix lint issue
* fix custom sandbox base image
* rename test name
* add skipif
---------
Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>
Co-authored-by: Boxuan Li <liboxuan@connect.hku.hk>
Co-authored-by: Yufan Song <33971064+yufansong@users.noreply.github.com>
Co-authored-by: tobitege <tobitege@gmx.de>
* Fix Docker tagging issue with upper case
* Update containers/build.sh
Co-authored-by: மனோஜ்குமார் பழனிச்சாமி <smartmanoj42857@gmail.com>
* Use tr command which is available on both zsh and bash
* Lower image name
* Lower image name
* Update .github/workflows/ghcr.yml
Co-authored-by: மனோஜ்குமார் பழனிச்சாமி <smartmanoj42857@gmail.com>
* Fix shell syntax
---------
Co-authored-by: மனோஜ்குமார் பழனிச்சாமி <smartmanoj42857@gmail.com>
* Split container image build & push
* Code cleanup
* Cleanup
* Add back useless docker_build_success step to make CI happy
* Revert "Cleanup"
This reverts commit 2a260791a95a110a54335141d017a418397eecf9.
* Use fresh built sandbox image in integration test
* fix dependency
* DEBUG: only build
* Attempt to fix dependency
* Change dependency
* Combine both jobs
* Fix env
* Remove Mac integration tests as they are too unstable
* Move sandbox tests to ghcr
* Use loaded image
* Update Dockerfile
creating the workspace directory after switching user to fix permission errors
https://github.com/OpenDevin/OpenDevin/issues/1560
* assign $workspace_base to user
instead of creating directory later, just fix the permissions so user can write to it
* another sudo
---------
Co-authored-by: Leo <ifuryst@gmail.com>
* initialize plugin definition
* initialize plugin definition
* simplify mixin
* further improve plugin mixin
* add cache dir for pip
* support clean up cache
* add script for setup jupyter and execution server
* integrate JupyterRequirement to ssh_box
* source bashrc at the end of plugin load
* add execute_cli that accept code via stdin
* make JUPYTER_EXEC_SERVER_PORT configurable via env var
* increase background cmd sleep time
* Update opendevin/sandbox/plugins/mixin.py
Co-authored-by: Robert Brennan <accounts@rbren.io>
* add mixin to base class
* make jupyter requirement a dataclass
* source plugins only when >0 requirements
* add `sandbox_plugins` for each agent & have controller take care of it
* update build.sh to make logs available in /opendevin/logs
* switch to use config for lib and cache dir
* Add SANDBOX_WORKSPACE_DIR into config
* Add SANDBOX_WORKSPACE_DIR into config
* fix occurence of /workspace
* fix permission issue with /workspace
* use python to implement execute_cli to avoid stdin escape issue
* add IPythonRunCellAction and get it working
* wait until jupyter is avaialble
* support plugin via copying instead of mounting
* add agent talk action
* support follow-up user language feedback
* add __str__ for action to be printed better
* only print PLAN at the beginning
* wip: update codeact agent
* get rid the initial messate
* update codeact agent to handle null action;
add thought to bash
* dispatch thought for RUN action as well
* fix weird behavior of pxssh where the output would not flush correctly
* make ssh box can handle exit_code properly as well
* add initial version of swe-agent plugin;
* rename swe cursors
* split setup script into two and create two requirements
* print SWE-agent command documentation
* update swe-agent to default to no custom docs
* add initial version of swe-agent plugin;
* rename swe cursors
* split setup script into two and create two requirements
* print SWE-agent command documentation
* update swe-agent to default to no custom docs
* update dockerfile with dependency from swe-agent
* make env setup a separate script for .bashrc source
* add wip prompt
* fix mount_dir for ssh_box
* update prompt
* fix mount_dir for ssh_box
* default to use host network
* default to use host network
* move prompt to a separate file
* fix swe-tool plugins;
add missing _split_string
* remove hostname from sshbox
* update the prompt with edit functionality
* fix swe-tool plugins;
add missing _split_string
* add awaiting into status bar
* fix the bug of additional send event
* remove some print action
* move logic to config.py
* remove debugging comments
* make host network as default
* make WORKSPACE_MOUNT_PATH as abspath
* implement execute_cli via file cp
* Revert "implement execute_cli via file cp"
This reverts commit 06f0155bc17d1f99097e71b83b2143f6e8092654.
* add codeact dependencies to default container
* add IPythonRunCellObservation
* add back cache dir and default to /tmp
* make USE_HOST_NETWORK a bool
* revert use host network to false
* add temporarily fix for IPython RUN action
* update prompt
* revert USE_HOST_NETWORK to true since it is not affecting anything
* attempt to fix lint
* remove newline
* fix jupyter execution server
* add `thought` to most action class
* fix unit tests for current action abstraction
* support user exit
* update test cases with the latest action format (added 'thought')
* fix integration test for CodeActAGent by mocking stdin
* only mock stdin for tests with user_responses.log
* remove -exec integration test for CodeActAgent since it is not supported
* remove specific stop word
* fix comments
* improve clarity of prompt
* fix py lint
* fix integration tests
* sandbox might failed in chown due to mounting, but it won't be fatal
* update debug instruction for sshbox
* fix typo
* get RUN_AS_DEVIN and network=host working with app sandbox
* get RUN_AS_DEVIN and network=host working with app sandbox
* attempt to fix the workspace base permission
* sandbox might failed in chown due to mounting, but it won't be fatal
* update sshbox instruction
* remove default user id since it will be passed in the instruction
* revert permission fix since it should be resolved by correct SANDBOX_USER_ID
* the permission issue can be fixed by simply provide correct env var
* remove log
* set sandbox user id to getuid by default
* move logging to initializer
* make the uid consistent across host, app container, and sandbox
* remove hostname as it causes sudo issue
* fix permission of entrypoint script
* make the uvicron app run as host user uid for jupyter plugin
* add warning message
* update dev md for instruction of running unit tests
* add back unit tests
* revert back to the original sandbox implementation to fix testcases
* revert use host network
* get docker socket gid and usermod instead of chmod 777
* allow unit test workflow to find docker.sock
* make sandbox test working via patch
* fix arg parser that's broken for some reason
* try to fix app build disk space issue
* fix integration test
* Revert "fix arg parser that's broken for some reason"
This reverts commit 6cc89611337bb74555fd16b4be78681fb7e36573.
* update Development.md
* cleanup intergration tests & add exception for CodeAct+execbox
* fix config
* implement user_message action
* fix doc
* fix event dict error
* fix frontend lint
* revert accidentally changes to integration tests
* revert accidentally changes to integration tests
---------
Co-authored-by: Robert Brennan <accounts@rbren.io>
Co-authored-by: Robert Brennan <contact@rbren.io>
* get RUN_AS_DEVIN and network=host working with app sandbox
* attempt to fix the workspace base permission
* sandbox might failed in chown due to mounting, but it won't be fatal
* update sshbox instruction
* remove default user id since it will be passed in the instruction
* revert permission fix since it should be resolved by correct SANDBOX_USER_ID
* the permission issue can be fixed by simply provide correct env var
* remove log
* set sandbox user id to getuid by default
* move logging to initializer
* make the uid consistent across host, app container, and sandbox
* remove hostname as it causes sudo issue
* fix permission of entrypoint script
* make the uvicron app run as host user uid for jupyter plugin
* revert use host network
* get docker socket gid and usermod instead of chmod 777
* try to fix app build disk space issue
* add initial version of swe-agent plugin;
* rename swe cursors
* split setup script into two and create two requirements
* print SWE-agent command documentation
* update swe-agent to default to no custom docs
* update dockerfile with dependency from swe-agent
* make env setup a separate script for .bashrc source
* fix swe-tool plugins;
add missing _split_string
---------
Co-authored-by: Robert Brennan <accounts@rbren.io>
* Workaround for a bug with sshd
* Update containers/sandbox/Dockerfile
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
---------
Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>