cowork-dash 0.2.0__tar.gz → 0.2.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.
Files changed (41) hide show
  1. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/CHANGELOG.md +28 -0
  2. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/PKG-INFO +1 -1
  3. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/agent.py +19 -24
  4. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/app.py +612 -223
  5. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/assets/styles.css +20 -0
  6. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/components.py +213 -29
  7. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/layout.py +43 -0
  8. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/tools.py +20 -35
  9. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/pyproject.toml +1 -1
  10. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_core.py +186 -4
  11. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/.claude/settings.local.json +0 -0
  12. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/.gitignore +0 -0
  13. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/Dockerfile.test +0 -0
  14. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/LICENSE +0 -0
  15. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/MANIFEST.in +0 -0
  16. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/README.md +0 -0
  17. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/__init__.py +0 -0
  18. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/__main__.py +0 -0
  19. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/assets/app.js +0 -0
  20. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/assets/favicon.ico +0 -0
  21. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/assets/favicon.svg +0 -0
  22. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/backends.py +0 -0
  23. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/canvas.py +0 -0
  24. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/cli.py +0 -0
  25. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/config.py +0 -0
  26. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/file_utils.py +0 -0
  27. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/sandbox.py +0 -0
  28. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/cowork_dash/virtual_fs.py +0 -0
  29. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/docs/dark.png +0 -0
  30. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/docs/light.png +0 -0
  31. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/examples/example_agent.py +0 -0
  32. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/examples/python_api_example.py +0 -0
  33. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/templates/index.html +0 -0
  34. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/__init__.py +0 -0
  35. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/conftest.py +0 -0
  36. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_backends.py +0 -0
  37. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_canvas.py +0 -0
  38. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_file_utils.py +0 -0
  39. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_sandbox.py +0 -0
  40. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/tests/test_virtual_fs.py +0 -0
  41. {cowork_dash-0.2.0 → cowork_dash-0.2.2}/uv.lock +0 -0
@@ -5,6 +5,32 @@ 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.2.2] - 2026-02-03
9
+
10
+ ### Fixed
11
+ - **Sidebar collapse**: Sidebar now fully collapses with minimal expand button width
12
+ - **Chat panel expansion**: Chat panel expands to fill space when sidebar is hidden
13
+
14
+ ### Changed
15
+ - **Tool call display**: Tool calls now show first 100 characters of arguments in header
16
+
17
+ ## [0.2.1] - 2026-02-03
18
+
19
+ ### Added
20
+ - **Collapsible sidebar**: New toggle button to collapse/expand the files/canvas panel
21
+ - **Download buttons**: Each display_inline asset now has a download button
22
+ - **Ordered content rendering**: AI messages, thinking blocks, and display_inline assets now appear in emission order
23
+ - **Fullscreen preview**: HTML and PDF files can be previewed in fullscreen modal
24
+
25
+ ### Changed
26
+ - **Non-collapsible thinking blocks**: Thinking is always visible with purple left border styling
27
+ - **Reduced AI text spacing**: Tighter spacing between consecutive AI message blocks
28
+ - **add_to_canvas/display_inline**: Now agent-only tools (removed from notebook namespace injection)
29
+
30
+ ### Fixed
31
+ - **display_inline file content**: Fixed reading file content when display_type is explicitly set
32
+ - **ctx undefined error**: Fixed NameError in fullscreen preview callback
33
+
8
34
  ## [0.2.0] - 2026-02-01
9
35
 
10
36
  ### Added
@@ -171,6 +197,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
171
197
  - Resizable split-pane interface
172
198
  - Upload/download functionality for files
173
199
 
200
+ [0.2.2]: https://github.com/dkedar7/cowork-dash/compare/v0.2.1...v0.2.2
201
+ [0.2.1]: https://github.com/dkedar7/cowork-dash/compare/v0.2.0...v0.2.1
174
202
  [0.2.0]: https://github.com/dkedar7/cowork-dash/compare/v0.1.9...v0.2.0
175
203
  [0.1.9]: https://github.com/dkedar7/cowork-dash/compare/v0.1.8...v0.1.9
176
204
  [0.1.8]: https://github.com/dkedar7/cowork-dash/compare/v0.1.7...v0.1.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cowork-dash
3
- Version: 0.2.0
3
+ Version: 0.2.2
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
@@ -23,7 +23,12 @@ from cowork_dash.tools import (
23
23
  SYSTEM_PROMPT = """You are a helpful AI assistant with access to a filesystem workspace and a Python code execution environment.
24
24
  You have access to a canvas, which is a markdown file located at `.canvas/canvas.md` in the workspace. This allows you to sketch out ideas, document your work, and present results to the user.
25
25
 
26
- ALWAYS use think_tool to reason through user requests, irrespective of complexity. Use it regularly. Human sees your thought process.
26
+ CRITICAL!:
27
+ - You must keep talking to the user as frequently as possible to communicate your thoughts, findings and next steps.
28
+ - Always explain what you are doing and why.
29
+ - Acknowledge user instructions and questions before taking actions.
30
+ - Explain what you are doing before executing any tool or code.
31
+ - After executing code or tools, always summarize the results and next steps to the user.
27
32
 
28
33
  ## Capabilities
29
34
 
@@ -60,27 +65,18 @@ You have tools to write and execute Python code interactively, similar to a Jupy
60
65
  - Shows detailed error tracebacks when code fails
61
66
 
62
67
  ### Displaying Results Inline
63
- - `display_inline(content, title=None, display_type=None)` - Display content inline in the chat
64
- - Use for: **file paths** to images, DataFrames, CSV files, HTML, JSON, PDF
65
- - **For matplotlib figures**: Save to file first, then display the file path:
66
- 1. In a cell: `fig.savefig('chart.png', bbox_inches='tight')`
67
- 2. Then call: `display_inline("chart.png", title="My Chart")`
68
- - Example: `display_inline("results.csv", title="Sales Data")`
68
+ - `display_inline(content, title=None, display_type=None)` - Tool to display content inline in the chat
69
+ - Use for: **file paths** to images, CSV files, HTML, JSON, PDF
70
+ - Example: `display_inline("results.csv", title="Sales Data")` as a tool call
69
71
 
70
72
  ### Canvas Visualization
71
- - `add_to_canvas(content)` - Add content to the canvas panel (persistent note-taking area)
72
- - Inside notebook cells, `add_to_canvas()` handles matplotlib figures directly
73
- - For matplotlib in cells: `add_to_canvas(fig)` works (auto-converts to image)
73
+ - `add_to_canvas(content)` - Add content to the canvas panel (persistent note-taking area). To add images or charts, save them to files and reference them in markdown.
74
+ - Use for: longer-term notes, sketches, charts
74
75
  - Canvas items are saved to `.canvas/` directory
75
76
 
76
77
  **When to use `display_inline` vs `add_to_canvas`:**
77
78
  - `display_inline`: For showing **saved files** (images, CSV, JSON) inline in chat
78
- - `add_to_canvas`: Inside notebook cells for **figure objects** (handles conversion)
79
-
80
- **Important:** When creating charts in notebook cells:
81
- 1. Create the figure and call `add_to_canvas(fig)` in the same cell
82
- 2. The execution result will show `canvas_items` with what was added
83
- 3. Charts are automatically saved to the `.canvas/` directory
79
+ - `add_to_canvas`: For longer-term notes, sketches, charts
84
80
 
85
81
  ## Workflow Guidelines
86
82
 
@@ -96,19 +92,18 @@ Work iteratively like a human using Jupyter:
96
92
  ### For Analysis Tasks
97
93
  1. Start by exploring the data (load, inspect shape/columns/types)
98
94
  2. Build up your analysis step by step in separate cells
99
- 3. Use `add_to_canvas()` to show important results to the user
100
- 4. Keep cells focused on single tasks for easier debugging
95
+ 3. Keep cells focused on single tasks for easier debugging
101
96
 
102
97
  ### General
103
98
  1. ALWAYS use write_todos to track your progress and next steps
104
- 2. ALWAYS use think_tool to reason through reqests, irrespective of complexity. Use it regularly. Human sees your thought process.
105
- 3. Be proactive in exploring the filesystem when relevant
106
- 4. Provide clear, helpful responses
99
+ 2. Be proactive in exploring the filesystem when relevant
100
+ 3. Provide clear, helpful responses
107
101
 
108
102
  CRITICAL WORKFLOW REQUIREMENT:
109
- 1. FIRST ACTION: Always call think_tool before any other tool or response
110
- 2. Use it to reason through the user's request
103
+ 1. FIRST ACTION: Always respond with initial thoughts before beginning any work and before any other tool or response
104
+ 2. Reason through the user's request
111
105
  3. Then proceed with other tools/actions
106
+ 4. Summazrize progress and next steps after each action
112
107
 
113
108
  This applies to EVERY user message, regardless of complexity.
114
109
 
@@ -142,7 +137,7 @@ agent = create_deep_agent(
142
137
  name="Cowork Dash",
143
138
  backend=backend,
144
139
  tools=AGENT_TOOLS,
145
- interrupt_on=dict(bash=True),
140
+ # interrupt_on=dict(bash=True),
146
141
  checkpointer=InMemorySaver()
147
142
  )
148
143