cowork-dash 0.1.2__tar.gz
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.
- cowork_dash-0.1.2/.claude/settings.local.json +16 -0
- cowork_dash-0.1.2/.gitignore +224 -0
- cowork_dash-0.1.2/CHANGELOG.md +79 -0
- cowork_dash-0.1.2/LICENSE +21 -0
- cowork_dash-0.1.2/MANIFEST.in +13 -0
- cowork_dash-0.1.2/PKG-INFO +238 -0
- cowork_dash-0.1.2/README.md +189 -0
- cowork_dash-0.1.2/cowork_dash/__init__.py +35 -0
- cowork_dash-0.1.2/cowork_dash/__main__.py +9 -0
- cowork_dash-0.1.2/cowork_dash/agent.py +117 -0
- cowork_dash-0.1.2/cowork_dash/app.py +1776 -0
- cowork_dash-0.1.2/cowork_dash/assets/app.js +237 -0
- cowork_dash-0.1.2/cowork_dash/assets/favicon.svg +1 -0
- cowork_dash-0.1.2/cowork_dash/assets/styles.css +915 -0
- cowork_dash-0.1.2/cowork_dash/canvas.py +318 -0
- cowork_dash-0.1.2/cowork_dash/cli.py +273 -0
- cowork_dash-0.1.2/cowork_dash/components.py +568 -0
- cowork_dash-0.1.2/cowork_dash/config.py +91 -0
- cowork_dash-0.1.2/cowork_dash/file_utils.py +226 -0
- cowork_dash-0.1.2/cowork_dash/layout.py +250 -0
- cowork_dash-0.1.2/cowork_dash/tools.py +699 -0
- cowork_dash-0.1.2/docs/CLI_USAGE.md +303 -0
- cowork_dash-0.1.2/examples/example_agent.py +121 -0
- cowork_dash-0.1.2/examples/python_api_example.py +65 -0
- cowork_dash-0.1.2/pyproject.toml +89 -0
- cowork_dash-0.1.2/requirements.txt +22 -0
- cowork_dash-0.1.2/templates/index.html +96 -0
- cowork_dash-0.1.2/tests/__init__.py +1 -0
- cowork_dash-0.1.2/tests/conftest.py +44 -0
- cowork_dash-0.1.2/tests/test_core.py +218 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py.cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# UV
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
#uv.lock
|
|
102
|
+
|
|
103
|
+
# poetry
|
|
104
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
105
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
106
|
+
# commonly ignored for libraries.
|
|
107
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
108
|
+
#poetry.lock
|
|
109
|
+
#poetry.toml
|
|
110
|
+
|
|
111
|
+
# pdm
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
113
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
114
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
115
|
+
#pdm.lock
|
|
116
|
+
#pdm.toml
|
|
117
|
+
.pdm-python
|
|
118
|
+
.pdm-build/
|
|
119
|
+
|
|
120
|
+
# pixi
|
|
121
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
122
|
+
#pixi.lock
|
|
123
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
124
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
125
|
+
.pixi
|
|
126
|
+
|
|
127
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
128
|
+
__pypackages__/
|
|
129
|
+
|
|
130
|
+
# Celery stuff
|
|
131
|
+
celerybeat-schedule
|
|
132
|
+
celerybeat.pid
|
|
133
|
+
|
|
134
|
+
# SageMath parsed files
|
|
135
|
+
*.sage.py
|
|
136
|
+
|
|
137
|
+
# Environments
|
|
138
|
+
.env
|
|
139
|
+
.envrc
|
|
140
|
+
.venv
|
|
141
|
+
env/
|
|
142
|
+
venv/
|
|
143
|
+
ENV/
|
|
144
|
+
env.bak/
|
|
145
|
+
venv.bak/
|
|
146
|
+
|
|
147
|
+
# Spyder project settings
|
|
148
|
+
.spyderproject
|
|
149
|
+
.spyproject
|
|
150
|
+
|
|
151
|
+
# Rope project settings
|
|
152
|
+
.ropeproject
|
|
153
|
+
|
|
154
|
+
# mkdocs documentation
|
|
155
|
+
/site
|
|
156
|
+
|
|
157
|
+
# mypy
|
|
158
|
+
.mypy_cache/
|
|
159
|
+
.dmypy.json
|
|
160
|
+
dmypy.json
|
|
161
|
+
|
|
162
|
+
# Pyre type checker
|
|
163
|
+
.pyre/
|
|
164
|
+
|
|
165
|
+
# pytype static type analyzer
|
|
166
|
+
.pytype/
|
|
167
|
+
|
|
168
|
+
# Cython debug symbols
|
|
169
|
+
cython_debug/
|
|
170
|
+
|
|
171
|
+
# PyCharm
|
|
172
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
173
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
174
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
175
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
176
|
+
#.idea/
|
|
177
|
+
|
|
178
|
+
# Abstra
|
|
179
|
+
# Abstra is an AI-powered process automation framework.
|
|
180
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
181
|
+
# Learn more at https://abstra.io/docs
|
|
182
|
+
.abstra/
|
|
183
|
+
|
|
184
|
+
# Visual Studio Code
|
|
185
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
186
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
187
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
188
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
189
|
+
# .vscode/
|
|
190
|
+
|
|
191
|
+
# Ruff stuff:
|
|
192
|
+
.ruff_cache/
|
|
193
|
+
|
|
194
|
+
# PyPI configuration file
|
|
195
|
+
.pypirc
|
|
196
|
+
|
|
197
|
+
# Cursor
|
|
198
|
+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
|
|
199
|
+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
|
|
200
|
+
# refer to https://docs.cursor.com/context/ignore-files
|
|
201
|
+
.cursorignore
|
|
202
|
+
.cursorindexingignore
|
|
203
|
+
|
|
204
|
+
# Marimo
|
|
205
|
+
marimo/_static/
|
|
206
|
+
marimo/_lsp/
|
|
207
|
+
__marimo__/
|
|
208
|
+
|
|
209
|
+
# Node modules
|
|
210
|
+
**/node_modules/
|
|
211
|
+
**/lib/
|
|
212
|
+
tsconfig.tsbuildinfo
|
|
213
|
+
*.tsbuildinfo
|
|
214
|
+
|
|
215
|
+
# Development/test files
|
|
216
|
+
# my_agent.py
|
|
217
|
+
|
|
218
|
+
# JupyterLab extension build outputs (already handled by Python packaging)
|
|
219
|
+
*.bundled.js
|
|
220
|
+
jupyter_deepagents/labextension
|
|
221
|
+
.yarn/
|
|
222
|
+
|
|
223
|
+
# Canvas directory
|
|
224
|
+
.canvas*/
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.2] - 2026-01-19
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Auto-scroll chat messages to bottom when new content is added
|
|
12
|
+
- SVG favicon support with custom logo
|
|
13
|
+
- Response time display for agent messages (e.g., "23s" or "1m 43s")
|
|
14
|
+
- Persistent todos in chat history (todos now stick like tool calls)
|
|
15
|
+
- dash-iconify as a required dependency
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- Eliminated index.html template - all styles now in styles.css
|
|
19
|
+
- Simplified app configuration with inline index string for favicon only
|
|
20
|
+
- Improved todo rendering to support list format from agent output
|
|
21
|
+
- Default agent spec now points to package's agent.py
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- Terminal and refresh button icons not visible (switched to mdi icons)
|
|
25
|
+
- dangerously_allow_html incorrectly passed to html.Div instead of dcc.Markdown
|
|
26
|
+
- Todo items not rendering (format_todos now handles both list and dict formats)
|
|
27
|
+
|
|
28
|
+
### UI/UX
|
|
29
|
+
- Added Google Fonts import directly in CSS
|
|
30
|
+
- Consolidated all animations and styles in styles.css
|
|
31
|
+
- Dark mode support for all new components
|
|
32
|
+
|
|
33
|
+
## [0.1.1] - 2025-11-29
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- Environment variable configuration support for all settings with `DEEPAGENT_*` prefix
|
|
37
|
+
- Configuration priority system: CLI args > Environment variables > config.py defaults
|
|
38
|
+
- Enhanced Python API: `run_app()` now accepts agent instance as first parameter
|
|
39
|
+
- Comprehensive test suite with 15 core functionality tests (CLI, Python API, agent loading)
|
|
40
|
+
- `uvx` compatibility for running without installation
|
|
41
|
+
- Python API examples demonstrating three usage patterns
|
|
42
|
+
- Environment variable `DEEPAGENT_WORKSPACE_ROOT` automatically set for agents
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
- **BREAKING**: `run_app()` signature updated - `agent_instance` is now the first parameter (optional)
|
|
46
|
+
- README reduced by 56% for better clarity while maintaining all essential information
|
|
47
|
+
- Configuration documentation enhanced with clear priority hierarchy
|
|
48
|
+
- Agent priority in `run_app()`: agent_spec > agent_instance > config file
|
|
49
|
+
- Made all configuration settings clearly marked as optional in documentation
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
- Path conversion issue in config.py when using environment variables
|
|
53
|
+
- Test suite patch targets for proper CLI testing
|
|
54
|
+
|
|
55
|
+
### Documentation
|
|
56
|
+
- Added comprehensive environment variables documentation
|
|
57
|
+
- Added `uvx` installation and usage examples
|
|
58
|
+
- Updated Python API examples to show new agent instance pattern
|
|
59
|
+
- Clarified configuration priority in all documentation
|
|
60
|
+
- Added example agent setup with DeepAgents integration
|
|
61
|
+
|
|
62
|
+
## [0.1.0] - 2025-11-26
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
- Initial release
|
|
66
|
+
- AI Agent Chat with real-time streaming
|
|
67
|
+
- File Browser with interactive file tree and lazy loading
|
|
68
|
+
- Canvas for visualizing DataFrames, Plotly/Matplotlib charts, Mermaid diagrams, images
|
|
69
|
+
- Flexible configuration via config.py
|
|
70
|
+
- CLI interface with `cowork-dash` command
|
|
71
|
+
- Python API with `run_app()` function
|
|
72
|
+
- Support for custom agents via agent specification
|
|
73
|
+
- Manual mode (file browser only, no agent)
|
|
74
|
+
- Resizable split-pane interface
|
|
75
|
+
- Upload/download functionality for files
|
|
76
|
+
|
|
77
|
+
[0.1.2]: https://github.com/dkedar7/cowork-dash/compare/v0.1.1...v0.1.2
|
|
78
|
+
[0.1.1]: https://github.com/dkedar7/cowork-dash/compare/v0.1.0...v0.1.1
|
|
79
|
+
[0.1.0]: https://github.com/dkedar7/cowork-dash/releases/tag/v0.1.0
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Kedar Dabhadkar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
include LICENSE
|
|
3
|
+
include pyproject.toml
|
|
4
|
+
|
|
5
|
+
# Include package data
|
|
6
|
+
recursive-include cowork_dash/assets *
|
|
7
|
+
recursive-include cowork_dash/templates *
|
|
8
|
+
include cowork_dash/config.py
|
|
9
|
+
|
|
10
|
+
# Exclude unnecessary files
|
|
11
|
+
global-exclude __pycache__
|
|
12
|
+
global-exclude *.py[co]
|
|
13
|
+
global-exclude .DS_Store
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cowork-dash
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: AI Agent Web Interface with Filesystem and Canvas Visualization
|
|
5
|
+
Project-URL: Homepage, https://github.com/dkedar7/cowork-dash
|
|
6
|
+
Project-URL: Documentation, https://github.com/dkedar7/cowork-dash/blob/main/README.md
|
|
7
|
+
Project-URL: Repository, https://github.com/dkedar7/cowork-dash
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/dkedar7/cowork-dash/issues
|
|
9
|
+
Author-email: Kedar Dabhadkar <kdabhadk@gmail.com>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: agent,ai,cowork,dash,dashboard,plotly,visualization
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: dash-iconify>=0.1.2
|
|
25
|
+
Requires-Dist: dash-mantine-components>=0.14.0
|
|
26
|
+
Requires-Dist: dash>=2.0.0
|
|
27
|
+
Requires-Dist: deepagents>=0.1.0
|
|
28
|
+
Requires-Dist: matplotlib>=3.5.0
|
|
29
|
+
Requires-Dist: pandas>=1.3.0
|
|
30
|
+
Requires-Dist: pillow>=9.0.0
|
|
31
|
+
Requires-Dist: plotly>=5.0.0
|
|
32
|
+
Requires-Dist: python-dotenv>=0.19.0
|
|
33
|
+
Provides-Extra: all
|
|
34
|
+
Requires-Dist: black>=22.0.0; extra == 'all'
|
|
35
|
+
Requires-Dist: flake8>=4.0.0; extra == 'all'
|
|
36
|
+
Requires-Dist: ipython>=8.0.0; extra == 'all'
|
|
37
|
+
Requires-Dist: mypy>=0.950; extra == 'all'
|
|
38
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == 'all'
|
|
39
|
+
Requires-Dist: pytest>=7.0.0; extra == 'all'
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: black>=22.0.0; extra == 'dev'
|
|
42
|
+
Requires-Dist: flake8>=4.0.0; extra == 'dev'
|
|
43
|
+
Requires-Dist: mypy>=0.950; extra == 'dev'
|
|
44
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == 'dev'
|
|
45
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
46
|
+
Provides-Extra: ipython
|
|
47
|
+
Requires-Dist: ipython>=8.0.0; extra == 'ipython'
|
|
48
|
+
Description-Content-Type: text/markdown
|
|
49
|
+
|
|
50
|
+
# Cowork Dash
|
|
51
|
+
|
|
52
|
+
A web interface for AI agent interactions with filesystem workspace, canvas visualization, and real-time streaming.
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
- **AI Agent Chat**: Real-time streaming with thinking process and task progress
|
|
57
|
+
- **File Browser**: Interactive file tree with lazy loading
|
|
58
|
+
- **Canvas**: Visualize DataFrames, Plotly/Matplotlib charts, Mermaid diagrams, images
|
|
59
|
+
- **Flexible Configuration**: Environment variables, CLI args, or config file
|
|
60
|
+
|
|
61
|
+
## Quick Start
|
|
62
|
+
|
|
63
|
+
### Installation
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Install via pip (includes DeepAgents)
|
|
67
|
+
pip install cowork-dash
|
|
68
|
+
|
|
69
|
+
# Or run directly with uvx (no installation needed)
|
|
70
|
+
export ANTHROPIC_API_KEY="your_anthropic_api_key"
|
|
71
|
+
uvx cowork-dash run --workspace ~/my-workspace
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Run
|
|
75
|
+
After setting up your agent (optional), run the app.
|
|
76
|
+
You can also use the default agent by setting ANTHROPIC_API_KEY environment variable.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Run with defaults (current directory as workspace, no agent)
|
|
80
|
+
export ANTHROPIC_API_KEY="your_anthropic_api_key"
|
|
81
|
+
cowork-dash run
|
|
82
|
+
|
|
83
|
+
# Run with workspace
|
|
84
|
+
cowork-dash run --workspace ~/my-workspace
|
|
85
|
+
|
|
86
|
+
# Run with custom agent (optional)
|
|
87
|
+
cowork-dash run --agent my_agent.py:agent
|
|
88
|
+
|
|
89
|
+
# Using uvx (one-off execution)
|
|
90
|
+
uvx cowork-dash run --workspace ~/my-workspace --port 8080
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Open browser to `http://localhost:8050`
|
|
94
|
+
|
|
95
|
+
## Configuration
|
|
96
|
+
|
|
97
|
+
### Priority (highest to lowest)
|
|
98
|
+
|
|
99
|
+
1. **CLI Arguments** - `--workspace`, `--port`, etc.
|
|
100
|
+
2. **Environment Variables** - `DEEPAGENT_*`
|
|
101
|
+
3. **Config File** - `config.py` defaults
|
|
102
|
+
|
|
103
|
+
### Environment Variables (optional)
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
export DEEPAGENT_SPEC=my_agent.py:agent # Set any Langgraph agent
|
|
107
|
+
export DEEPAGENT_WORKSPACE_ROOT=/path/to/workspace
|
|
108
|
+
export DEEPAGENT_PORT=9000 # optional (default: 8050)
|
|
109
|
+
export DEEPAGENT_HOST=0.0.0.0 # optional (default: localhost)
|
|
110
|
+
export DEEPAGENT_DEBUG=true # optional (default: false)
|
|
111
|
+
export DEEPAGENT_APP_TITLE="My App" # optional
|
|
112
|
+
export DEEPAGENT_APP_SUBTITLE="Subtitle" # optional
|
|
113
|
+
|
|
114
|
+
cowork-dash run
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### CLI Options (all optional)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
cowork-dash run [OPTIONS]
|
|
121
|
+
|
|
122
|
+
--workspace PATH Workspace directory (default: current directory)
|
|
123
|
+
--agent PATH:OBJECT Agent spec (default: none, manual mode)
|
|
124
|
+
--port PORT Server port (default: 8050)
|
|
125
|
+
--host HOST Server host (default: localhost)
|
|
126
|
+
--debug Enable debug mode
|
|
127
|
+
--title TITLE App title (default: "Cowork Dash")
|
|
128
|
+
--subtitle TEXT App subtitle (default: "AI-Powered Workspace")
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Python API
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
from cowork_dash import run_app
|
|
135
|
+
|
|
136
|
+
# Option 1: Pass agent instance directly (recommended)
|
|
137
|
+
from my_agent import MyAgent
|
|
138
|
+
agent = MyAgent()
|
|
139
|
+
run_app(agent, workspace="~/my-workspace")
|
|
140
|
+
|
|
141
|
+
# Option 2: Use agent spec
|
|
142
|
+
run_app(agent_spec="my_agent.py:agent", workspace="~/my-workspace")
|
|
143
|
+
|
|
144
|
+
# Option 3: Manual mode (no agent)
|
|
145
|
+
run_app(workspace="~/my-workspace", port=8080, debug=True)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Agent Integration
|
|
149
|
+
|
|
150
|
+
### Workspace Access
|
|
151
|
+
|
|
152
|
+
Cowork Dash sets `DEEPAGENT_WORKSPACE_ROOT` environment variable for your agent:
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
import os
|
|
156
|
+
from pathlib import Path
|
|
157
|
+
|
|
158
|
+
# In your agent code
|
|
159
|
+
workspace = Path(os.getenv('DEEPAGENT_WORKSPACE_ROOT', './'))
|
|
160
|
+
|
|
161
|
+
# Read/write files in workspace
|
|
162
|
+
config_file = workspace / "config.json"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Agent Specification
|
|
166
|
+
|
|
167
|
+
Load agents using `path:object` format:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Load from Python file
|
|
171
|
+
cowork-dash run --agent agent.py:my_agent
|
|
172
|
+
|
|
173
|
+
# Absolute path
|
|
174
|
+
cowork-dash run --agent /path/to/agent.py:agent_instance
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Agent Requirements
|
|
178
|
+
|
|
179
|
+
Your agent must implement:
|
|
180
|
+
- **Streaming**: `agent.stream(input, stream_mode="updates")`
|
|
181
|
+
- **Message format**: `{"messages": [{"role": "user", "content": "..."}]}`
|
|
182
|
+
- **Workspace access** (optional): Read `DEEPAGENT_WORKSPACE_ROOT` env var
|
|
183
|
+
|
|
184
|
+
### Example Agent Setup
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
# my_agent.py
|
|
188
|
+
import os
|
|
189
|
+
from deepagents import create_deep_agent
|
|
190
|
+
from deepagents.backends.filesystem import FileSystemBackend
|
|
191
|
+
|
|
192
|
+
backend = FileSystemBackend(root=os.getenv('DEEPAGENT_WORKSPACE_ROOT', './'))
|
|
193
|
+
my_agent = create_deep_agent(..., backend=backend)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Then run: `cowork-dash run --agent my_agent.py:my_agent`
|
|
197
|
+
|
|
198
|
+
## Canvas
|
|
199
|
+
|
|
200
|
+
The canvas displays agent-created visualizations:
|
|
201
|
+
|
|
202
|
+
- **DataFrames**: HTML tables
|
|
203
|
+
- **Charts**: Plotly, Matplotlib
|
|
204
|
+
- **Images**: PNG, JPG, etc.
|
|
205
|
+
- **Diagrams**: Mermaid (flowcharts, sequence diagrams)
|
|
206
|
+
- **Markdown**: Text and notes
|
|
207
|
+
|
|
208
|
+
Content auto-saves to `canvas.md` and can be exported or cleared.
|
|
209
|
+
|
|
210
|
+
## Development
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Install from source
|
|
214
|
+
git clone https://github.com/dkedar7/cowork-dash.git
|
|
215
|
+
cd cowork-dash
|
|
216
|
+
pip install -e ".[dev]"
|
|
217
|
+
|
|
218
|
+
# Run tests
|
|
219
|
+
pytest
|
|
220
|
+
|
|
221
|
+
# Build package
|
|
222
|
+
python -m build
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Requirements
|
|
226
|
+
|
|
227
|
+
- Python 3.11+
|
|
228
|
+
- Dash 2.0+
|
|
229
|
+
- dash-mantine-components
|
|
230
|
+
- pandas, plotly, matplotlib, Pillow
|
|
231
|
+
- python-dotenv
|
|
232
|
+
- deepagents
|
|
233
|
+
|
|
234
|
+
## Links
|
|
235
|
+
|
|
236
|
+
- **PyPI**: https://pypi.org/project/cowork-dash/
|
|
237
|
+
- **GitHub**: https://github.com/dkedar7/cowork-dash
|
|
238
|
+
- **Issues**: https://github.com/dkedar7/cowork-dash/issues
|