cowork-dash 0.1.4__tar.gz → 0.1.6__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.
Files changed (33) hide show
  1. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/CHANGELOG.md +29 -0
  2. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/PKG-INFO +31 -40
  3. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/README.md +30 -39
  4. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/agent.py +7 -4
  5. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/app.py +729 -121
  6. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/assets/app.js +12 -1
  7. cowork_dash-0.1.6/cowork_dash/assets/favicon.ico +0 -0
  8. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/assets/styles.css +144 -2
  9. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/canvas.py +194 -80
  10. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/cli.py +7 -0
  11. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/components.py +194 -104
  12. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/config.py +13 -0
  13. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/file_utils.py +17 -6
  14. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/layout.py +117 -23
  15. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/tools.py +88 -11
  16. cowork_dash-0.1.6/docs/dark.png +0 -0
  17. cowork_dash-0.1.6/docs/light.png +0 -0
  18. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/pyproject.toml +1 -1
  19. cowork_dash-0.1.4/requirements.txt +0 -22
  20. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/.claude/settings.local.json +0 -0
  21. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/.gitignore +0 -0
  22. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/LICENSE +0 -0
  23. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/MANIFEST.in +0 -0
  24. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/__init__.py +0 -0
  25. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/__main__.py +0 -0
  26. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/cowork_dash/assets/favicon.svg +0 -0
  27. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/docs/CLI_USAGE.md +0 -0
  28. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/examples/example_agent.py +0 -0
  29. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/examples/python_api_example.py +0 -0
  30. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/templates/index.html +0 -0
  31. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/tests/__init__.py +0 -0
  32. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/tests/conftest.py +0 -0
  33. {cowork_dash-0.1.4 → cowork_dash-0.1.6}/tests/test_core.py +0 -0
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.6] - 2026-01-25
9
+
10
+ ### Fixed
11
+ - Duplicate agent response rendering issue
12
+ - Agent state now resets on page refresh for clean sessions
13
+ - Tool calls indicator disappearing during execution (race condition fix)
14
+ - Missing return value in interrupt handling callback
15
+ - Default agent workspace now uses environment variable or current directory
16
+
17
+ ## [0.1.5] - 2026-01-24
18
+
19
+ ### Added
20
+ - Stop button to halt agent execution mid-run
21
+ - Clear canvas confirmation modal with archive functionality
22
+ - Canvas item collapse/expand and delete features
23
+ - Folder selection and creation in file browser
24
+ - Double-click folders to change working directory
25
+ - Demo video and screenshots in README
26
+
27
+ ### Changed
28
+ - Default agent workspace root changed to "/" for full virtual filesystem access
29
+ - Simplified README with concise installation instructions
30
+ - Mermaid diagrams now respect light/dark theme changes
31
+
32
+ ### Removed
33
+ - requirements.txt (dependencies managed via pyproject.toml)
34
+
8
35
  ## [0.1.4] - 2026-01-20
9
36
 
10
37
  ### Added
@@ -91,6 +118,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
91
118
  - Resizable split-pane interface
92
119
  - Upload/download functionality for files
93
120
 
121
+ [0.1.6]: https://github.com/dkedar7/cowork-dash/compare/v0.1.5...v0.1.6
122
+ [0.1.5]: https://github.com/dkedar7/cowork-dash/compare/v0.1.4...v0.1.5
94
123
  [0.1.4]: https://github.com/dkedar7/cowork-dash/compare/v0.1.3...v0.1.4
95
124
  [0.1.3]: https://github.com/dkedar7/cowork-dash/compare/v0.1.2...v0.1.3
96
125
  [0.1.2]: https://github.com/dkedar7/cowork-dash/compare/v0.1.1...v0.1.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cowork-dash
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: AI Agent Web Interface with Filesystem and Canvas Visualization
5
5
  Project-URL: Homepage, https://github.com/dkedar7/cowork-dash
6
6
  Project-URL: Documentation, https://github.com/dkedar7/cowork-dash/blob/main/README.md
@@ -51,6 +51,11 @@ Description-Content-Type: text/markdown
51
51
 
52
52
  A web interface for AI agent interactions with filesystem workspace, canvas visualization, and real-time streaming.
53
53
 
54
+ <p align="center">
55
+ <img src="docs/light.png" alt="Cowork Dash - Light Mode" width="48%">
56
+ <img src="docs/dark.png" alt="Cowork Dash - Dark Mode" width="48%">
57
+ </p>
58
+
54
59
  ## Features
55
60
 
56
61
  - **AI Agent Chat**: Real-time streaming with thinking process and task progress
@@ -58,6 +63,15 @@ A web interface for AI agent interactions with filesystem workspace, canvas visu
58
63
  - **Canvas**: Visualize DataFrames, Plotly/Matplotlib charts, Mermaid diagrams, images
59
64
  - **Flexible Configuration**: Environment variables, CLI args, or config file
60
65
 
66
+ ## Demo
67
+
68
+ <p align="center">
69
+ <em>Organizing files with an AI agent</em><br><br>
70
+ <a href="https://www.youtube.com/watch?v=yKB9cBx80VE">
71
+ <img src="https://img.youtube.com/vi/yKB9cBx80VE/maxresdefault.jpg" alt="Cowork Dash Demo Video" width="70%">
72
+ </a>
73
+ </p>
74
+
61
75
  ## Quick Start
62
76
 
63
77
  ### Installation
@@ -68,7 +82,7 @@ pip install cowork-dash
68
82
 
69
83
  # Or run directly with uvx (no installation needed)
70
84
  export ANTHROPIC_API_KEY="your_anthropic_api_key"
71
- uvx cowork-dash run --workspace ~/my-workspace
85
+ cowork-dash run
72
86
  ```
73
87
 
74
88
  ### Run
@@ -100,19 +114,6 @@ Open browser to `http://localhost:8050`
100
114
  2. **Environment Variables** - `DEEPAGENT_*`
101
115
  3. **Config File** - `config.py` defaults
102
116
 
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
 
117
118
  ### CLI Options (all optional)
118
119
 
@@ -120,12 +121,26 @@ cowork-dash run
120
121
  cowork-dash run [OPTIONS]
121
122
 
122
123
  --workspace PATH Workspace directory (default: current directory)
123
- --agent PATH:OBJECT Agent spec (default: none, manual mode)
124
+ --agent PATH:OBJECT Point to your Langgraph agent (default: default agent, manual mode)
124
125
  --port PORT Server port (default: 8050)
125
126
  --host HOST Server host (default: localhost)
126
127
  --debug Enable debug mode
127
128
  --title TITLE App title (default: "Cowork Dash")
128
129
  --subtitle TEXT App subtitle (default: "AI-Powered Workspace")
130
+ --welcome-message TEXT Welcome message shown in chat (supports markdown)
131
+ ```
132
+
133
+ ### Environment Variables (optional)
134
+
135
+ ```bash
136
+ export DEEPAGENT_SPEC=my_agent.py:agent # Set any Langgraph agent
137
+ export DEEPAGENT_WORKSPACE_ROOT=/path/to/workspace
138
+ export DEEPAGENT_DEBUG=true # optional (default: false)
139
+ export DEEPAGENT_APP_TITLE="My App" # optional
140
+ export DEEPAGENT_APP_SUBTITLE="Subtitle" # optional
141
+ export DEEPAGENT_WELCOME_MESSAGE="Hello!" # optional (supports markdown)
142
+
143
+ cowork-dash run
129
144
  ```
130
145
 
131
146
  ### Python API
@@ -141,27 +156,10 @@ run_app(agent, workspace="~/my-workspace")
141
156
  # Option 2: Use agent spec
142
157
  run_app(agent_spec="my_agent.py:agent", workspace="~/my-workspace")
143
158
 
144
- # Option 3: Manual mode (no agent)
145
- run_app(workspace="~/my-workspace", port=8080, debug=True)
146
159
  ```
147
160
 
148
161
  ## Agent Integration
149
162
 
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
163
  ### Agent Specification
166
164
 
167
165
  Load agents using `path:object` format:
@@ -174,13 +172,6 @@ cowork-dash run --agent agent.py:my_agent
174
172
  cowork-dash run --agent /path/to/agent.py:agent_instance
175
173
  ```
176
174
 
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
175
  ### Example Agent Setup
185
176
 
186
177
  ```python
@@ -2,6 +2,11 @@
2
2
 
3
3
  A web interface for AI agent interactions with filesystem workspace, canvas visualization, and real-time streaming.
4
4
 
5
+ <p align="center">
6
+ <img src="docs/light.png" alt="Cowork Dash - Light Mode" width="48%">
7
+ <img src="docs/dark.png" alt="Cowork Dash - Dark Mode" width="48%">
8
+ </p>
9
+
5
10
  ## Features
6
11
 
7
12
  - **AI Agent Chat**: Real-time streaming with thinking process and task progress
@@ -9,6 +14,15 @@ A web interface for AI agent interactions with filesystem workspace, canvas visu
9
14
  - **Canvas**: Visualize DataFrames, Plotly/Matplotlib charts, Mermaid diagrams, images
10
15
  - **Flexible Configuration**: Environment variables, CLI args, or config file
11
16
 
17
+ ## Demo
18
+
19
+ <p align="center">
20
+ <em>Organizing files with an AI agent</em><br><br>
21
+ <a href="https://www.youtube.com/watch?v=yKB9cBx80VE">
22
+ <img src="https://img.youtube.com/vi/yKB9cBx80VE/maxresdefault.jpg" alt="Cowork Dash Demo Video" width="70%">
23
+ </a>
24
+ </p>
25
+
12
26
  ## Quick Start
13
27
 
14
28
  ### Installation
@@ -19,7 +33,7 @@ pip install cowork-dash
19
33
 
20
34
  # Or run directly with uvx (no installation needed)
21
35
  export ANTHROPIC_API_KEY="your_anthropic_api_key"
22
- uvx cowork-dash run --workspace ~/my-workspace
36
+ cowork-dash run
23
37
  ```
24
38
 
25
39
  ### Run
@@ -51,19 +65,6 @@ Open browser to `http://localhost:8050`
51
65
  2. **Environment Variables** - `DEEPAGENT_*`
52
66
  3. **Config File** - `config.py` defaults
53
67
 
54
- ### Environment Variables (optional)
55
-
56
- ```bash
57
- export DEEPAGENT_SPEC=my_agent.py:agent # Set any Langgraph agent
58
- export DEEPAGENT_WORKSPACE_ROOT=/path/to/workspace
59
- export DEEPAGENT_PORT=9000 # optional (default: 8050)
60
- export DEEPAGENT_HOST=0.0.0.0 # optional (default: localhost)
61
- export DEEPAGENT_DEBUG=true # optional (default: false)
62
- export DEEPAGENT_APP_TITLE="My App" # optional
63
- export DEEPAGENT_APP_SUBTITLE="Subtitle" # optional
64
-
65
- cowork-dash run
66
- ```
67
68
 
68
69
  ### CLI Options (all optional)
69
70
 
@@ -71,12 +72,26 @@ cowork-dash run
71
72
  cowork-dash run [OPTIONS]
72
73
 
73
74
  --workspace PATH Workspace directory (default: current directory)
74
- --agent PATH:OBJECT Agent spec (default: none, manual mode)
75
+ --agent PATH:OBJECT Point to your Langgraph agent (default: default agent, manual mode)
75
76
  --port PORT Server port (default: 8050)
76
77
  --host HOST Server host (default: localhost)
77
78
  --debug Enable debug mode
78
79
  --title TITLE App title (default: "Cowork Dash")
79
80
  --subtitle TEXT App subtitle (default: "AI-Powered Workspace")
81
+ --welcome-message TEXT Welcome message shown in chat (supports markdown)
82
+ ```
83
+
84
+ ### Environment Variables (optional)
85
+
86
+ ```bash
87
+ export DEEPAGENT_SPEC=my_agent.py:agent # Set any Langgraph agent
88
+ export DEEPAGENT_WORKSPACE_ROOT=/path/to/workspace
89
+ export DEEPAGENT_DEBUG=true # optional (default: false)
90
+ export DEEPAGENT_APP_TITLE="My App" # optional
91
+ export DEEPAGENT_APP_SUBTITLE="Subtitle" # optional
92
+ export DEEPAGENT_WELCOME_MESSAGE="Hello!" # optional (supports markdown)
93
+
94
+ cowork-dash run
80
95
  ```
81
96
 
82
97
  ### Python API
@@ -92,27 +107,10 @@ run_app(agent, workspace="~/my-workspace")
92
107
  # Option 2: Use agent spec
93
108
  run_app(agent_spec="my_agent.py:agent", workspace="~/my-workspace")
94
109
 
95
- # Option 3: Manual mode (no agent)
96
- run_app(workspace="~/my-workspace", port=8080, debug=True)
97
110
  ```
98
111
 
99
112
  ## Agent Integration
100
113
 
101
- ### Workspace Access
102
-
103
- Cowork Dash sets `DEEPAGENT_WORKSPACE_ROOT` environment variable for your agent:
104
-
105
- ```python
106
- import os
107
- from pathlib import Path
108
-
109
- # In your agent code
110
- workspace = Path(os.getenv('DEEPAGENT_WORKSPACE_ROOT', './'))
111
-
112
- # Read/write files in workspace
113
- config_file = workspace / "config.json"
114
- ```
115
-
116
114
  ### Agent Specification
117
115
 
118
116
  Load agents using `path:object` format:
@@ -125,13 +123,6 @@ cowork-dash run --agent agent.py:my_agent
125
123
  cowork-dash run --agent /path/to/agent.py:agent_instance
126
124
  ```
127
125
 
128
- ### Agent Requirements
129
-
130
- Your agent must implement:
131
- - **Streaming**: `agent.stream(input, stream_mode="updates")`
132
- - **Message format**: `{"messages": [{"role": "user", "content": "..."}]}`
133
- - **Workspace access** (optional): Read `DEEPAGENT_WORKSPACE_ROOT` env var
134
-
135
126
  ### Example Agent Setup
136
127
 
137
128
  ```python
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import uuid
2
3
  from deepagents import create_deep_agent
3
4
  from langgraph.checkpoint.memory import InMemorySaver
@@ -85,14 +86,16 @@ Work iteratively like a human using Jupyter:
85
86
  4. Keep cells focused on single tasks for easier debugging
86
87
 
87
88
  ### General
88
- 1. Use write_todos to track your progress and next steps
89
- 2. Use think_tool to reason through complex problems
89
+ 1. ALWAYS use write_todos to track your progress and next steps
90
+ 2. ALWAYS think_tool to reason through reqests, irrespective of complexity
90
91
  3. Be proactive in exploring the filesystem when relevant
91
92
  4. Provide clear, helpful responses
92
93
 
93
94
  The workspace is your sandbox - feel free to create files, organize content, and help users manage their projects."""
94
95
 
95
- backend = FilesystemBackend(root_dir=str("./"), virtual_mode=True)
96
+ # Get workspace root from environment variable or default to current directory
97
+ workspace_root = os.getenv("DEEPAGENT_WORKSPACE_ROOT", os.getcwd())
98
+ backend = FilesystemBackend(root_dir=workspace_root, virtual_mode=True)
96
99
 
97
100
  agent = create_deep_agent(
98
101
  system_prompt=SYSTEM_PROMPT,
@@ -113,6 +116,6 @@ agent = create_deep_agent(
113
116
  get_notebook_canvas_items,
114
117
  clear_notebook_canvas_items,
115
118
  ],
116
- # interrupt_on=dict(bash=True),
119
+ interrupt_on=dict(bash=True),
117
120
  checkpointer=InMemorySaver()
118
121
  )