claude-ws 0.1.25 → 0.1.27

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 (67) hide show
  1. package/README.md +42 -269
  2. package/bin/claudekanban.js +6 -3
  3. package/drizzle.config.ts +6 -3
  4. package/package.json +23 -29
  5. package/public/docs/swagger/api-docs.html +96 -0
  6. package/public/docs/swagger/index.html +465 -0
  7. package/public/docs/swagger/swagger.yaml +4330 -0
  8. package/public/logo.png +0 -0
  9. package/public/logo.svg +11 -0
  10. package/public/manifest.json +17 -0
  11. package/scripts/check-dependencies.sh +64 -0
  12. package/scripts/db-fix-columns.ts +64 -0
  13. package/scripts/test-package.sh +82 -0
  14. package/scripts/update-swagger-server.sh +63 -0
  15. package/server.ts +111 -18
  16. package/src/app/api/agent-factory/discover/route.ts +2 -2
  17. package/src/app/api/agent-factory/projects/[projectId]/plugins/route.ts +37 -2
  18. package/src/app/api/agent-factory/upload/route.ts +124 -103
  19. package/src/app/api/attempts/[id]/route.ts +79 -5
  20. package/src/app/api/attempts/route.ts +223 -42
  21. package/src/app/api/checkpoints/rewind/route.ts +63 -19
  22. package/src/app/api/commands/route.ts +107 -10
  23. package/src/app/docs/swagger/page.tsx +17 -0
  24. package/src/app/layout.tsx +7 -1
  25. package/src/app/page.tsx +8 -2
  26. package/src/components/agent-factory/plugin-list.tsx +6 -1
  27. package/src/components/agent-factory/upload-dialog.tsx +13 -3
  28. package/src/components/claude/tool-use-block.tsx +66 -2
  29. package/src/components/editor/code-editor-with-definitions.tsx +2 -0
  30. package/src/components/editor/code-editor-with-inline-edit.tsx +2 -0
  31. package/src/components/editor/code-mirror-editor.tsx +2 -0
  32. package/src/components/editor/extensions/goto-definition.ts +6 -3
  33. package/src/components/header.tsx +13 -4
  34. package/src/components/kanban/board.tsx +17 -3
  35. package/src/components/kanban/column.tsx +3 -1
  36. package/src/components/kanban/create-task-dialog.tsx +3 -2
  37. package/src/components/kanban/task-card.tsx +22 -3
  38. package/src/components/settings/setup-dialog.tsx +11 -4
  39. package/src/components/sidebar/file-browser/file-tab-content.tsx +146 -215
  40. package/src/components/sidebar/file-browser/file-tabs-panel.tsx +21 -17
  41. package/src/components/sidebar/file-browser/unified-search.tsx +4 -4
  42. package/src/components/sidebar/git-changes/diff-tabs-panel.tsx +11 -10
  43. package/src/components/sidebar/git-changes/git-panel.tsx +11 -3
  44. package/src/components/task/command-selector.tsx +17 -4
  45. package/src/components/task/conversation-view.tsx +110 -2
  46. package/src/components/task/interactive-command/checkpoint-list.tsx +28 -15
  47. package/src/components/task/prompt-input.tsx +88 -3
  48. package/src/components/task/task-detail-panel.tsx +26 -4
  49. package/src/components/task/task-shell-indicator.tsx +7 -3
  50. package/src/components/ui/detachable-window.tsx +1 -1
  51. package/src/components/ui/dialog.tsx +2 -2
  52. package/src/components/ui/textarea.tsx +1 -1
  53. package/src/hooks/use-attempt-stream.ts +16 -0
  54. package/src/lib/agent-factory-dir.ts +20 -16
  55. package/src/lib/agent-manager.ts +317 -45
  56. package/src/lib/attempt-waiter.ts +109 -0
  57. package/src/lib/checkpoint-manager.ts +16 -3
  58. package/src/lib/content-types.ts +71 -0
  59. package/src/lib/db/index.ts +51 -3
  60. package/src/lib/db/schema.ts +3 -0
  61. package/src/lib/file-utils.ts +10 -0
  62. package/src/lib/output-formatter.ts +313 -0
  63. package/src/lib/sdk-event-adapter.ts +45 -1
  64. package/src/lib/session-manager.ts +7 -5
  65. package/src/lib/shell-manager.ts +105 -9
  66. package/src/lib/system-prompt.ts +79 -74
  67. package/src/types/index.ts +20 -0
package/README.md CHANGED
@@ -1,321 +1,94 @@
1
- # Claude Workspace
1
+ # ClaudeWS
2
2
 
3
- > ⚠️ **DISCLAIMER:** This software is provided "AS IS" without warranty. The owners and contributors accept **no liability** for any damages or claims arising from its use. [Read full disclaimer](./DISCLAIMER.md).
3
+ > **DISCLAIMER:** This software is provided "AS IS" without warranty. [Read full disclaimer](./DISCLAIMER.md).
4
4
 
5
- **Visual workspace for Claude Code with Kanban board, code editor, and Git integration.**
5
+ **Visual workspace for Claude Code** Kanban board, code editor, Git integration, local-first SQLite.
6
6
 
7
- Local-first SQLite database. Real-time streaming. Plugin system for custom agents and skills.
8
-
9
- ---
10
-
11
- ## Why Claude Workspace?
12
-
13
- | Feature | Benefit |
14
- |---------|---------|
15
- | 🌍 **Work Everywhere** | SQLite-based local storage—no cloud dependency, works offline anywhere |
16
- | ⚡ **Consistent Performance** | Lightweight footprint, instant startup, responsive UI on any connection |
17
- | 🎯 **Unique Workflow** | Conversation checkpoints—rewind, branch, and continue at any point |
18
- | ✨ **Intuitive Management** | Drag-and-drop Kanban, live streaming, file browser with Git status |
19
- | 🔌 **Flexible Plugins** | Agent Factory—install only the skills and agents your project needs |
20
- | 🔋 **Claude Code Native** | Full CLI integration with real-time streaming and file attachments |
7
+ ![Desktop](./public/desktop-review-0.jpeg)
21
8
 
22
9
  ---
23
10
 
24
11
  ## Features
25
12
 
26
- **Task Management**
27
- - Kanban board: To Do In Progress → In Review → Done → Cancelled
28
- - Drag-and-drop task cards with auto-save
29
- - Full conversation history per task
30
-
31
- **AI Interaction**
32
- - Real-time streaming of Claude responses via Socket.io
33
- - Checkpoints: Save and rewind to any conversation state
34
- - File attachments for context
35
- - Custom commands: `/cook`, `/plan`, `/fix`, `/brainstorm`
36
- - Detachable chat window
37
-
38
- **Code Editor**
39
- - Tabbed CodeMirror editor with syntax highlighting
40
- - AI-powered inline code suggestions
41
- - Go-to-definition navigation
42
- - Multi-file editing
43
-
44
- **File System**
45
- - Interactive file tree browser
46
- - Unified search (files + content)
47
- - File preview
48
-
49
- **Git Integration**
50
- - Full Git workflow: status, stage, commit, diff
51
- - Visual Git graph
52
- - Checkpoint Git snapshots for time-travel debugging
53
-
54
- **Agent Factory**
55
- - Plugin system for Claude skills, commands, agents
56
- - Dependency management
57
- - Per-project plugin installation
58
-
59
- **Developer Tools**
60
- - Background shell process manager
61
- - Terminal output streaming
62
- - Multi-project workspace support
63
- - Themes: Light, Dark, VS Code variants, Dracula
13
+ - **Kanban Board** — Drag-and-drop task management with full conversation history
14
+ - **Real-time Streaming** Live Claude responses via Socket.io
15
+ - **Checkpoints** — Save and rewind to any conversation state
16
+ - **Code Editor** Tabbed CodeMirror with syntax highlighting and AI suggestions
17
+ - **Git Integration** — Status, stage, commit, diff, visual graph
18
+ - **Agent Factory** — Plugin system for custom skills, commands, agents
19
+ - **Themes** Light, Dark, VS Code variants, Dracula
64
20
 
65
21
  ---
66
22
 
67
23
  ## Quick Start
68
24
 
69
- ### Option 1: Run with npx
70
-
71
- **Prerequisites:** Node.js 20+, pnpm 9+, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
25
+ **Prerequisites:** Node.js 20+, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
72
26
 
73
27
  ```bash
74
- npx -y claude-ws
75
- ```
28
+ # Option 1: npx (quick try)
29
+ npx -y claudews
76
30
 
77
- The `-y` flag skips the "Ok to proceed?" prompt.
31
+ # Option 2: Global install (recommended)
32
+ npm install -g claudews
33
+ claudews
78
34
 
79
- The first run will:
80
- - Auto-create SQLite database in `~/.claude-ws/`
81
- - Install dependencies and build automatically
82
- - Start the server on http://localhost:8556
83
-
84
- ### Option 2: Install globally (Recommended)
85
-
86
- ```bash
87
- npm install -g claude-ws
88
- claude-ws
35
+ # Option 3: From source
36
+ git clone https://github.com/Claude-Workspace/claudews.git
37
+ cd claudews
38
+ pnpm install && pnpm dev
89
39
  ```
90
40
 
91
- Global installation avoids npx prompts and rebuilding on every run.
41
+ Open http://localhost:8556
92
42
 
93
- ### Option 3: Development from source
43
+ ---
94
44
 
95
- ```bash
96
- git clone https://github.com/Claude-Workspace/claude-ws.git
97
- cd claude-ws
98
- pnpm install
99
- pnpm db:migrate
100
- pnpm dev
101
- ```
45
+ ## API Documentation
102
46
 
103
- Open [http://localhost:8556](http://localhost:8556)
47
+ See [Swagger API Docs](README-docs-swagger.md)
104
48
 
105
49
  ---
106
50
 
107
51
  ## Configuration
108
52
 
109
- ### API Authentication (Optional)
110
-
111
- For secure deployments, you can enable API authentication by setting an `API_ACCESS_KEY`:
112
-
113
- 1. Create a `.env` file in your project directory (or use the global one in `~/.claude-ws/.env`)
114
- 2. Add your API access key:
53
+ Create `.env` file (or use `~/.claudews/.env`):
115
54
 
116
55
  ```bash
117
- # .env
118
- API_ACCESS_KEY=your-secret-key-here
119
- ```
120
-
121
- 3. All API requests must include the key in the `x-api-key` header:
56
+ # Optional: API authentication for remote access
57
+ API_ACCESS_KEY=your-secret-key
122
58
 
123
- ```bash
124
- curl -H "x-api-key: your-secret-key-here" http://localhost:8556/api/conversations
59
+ # Optional: Custom Claude CLI path
60
+ CLAUDE_PATH=/path/to/claude
125
61
  ```
126
62
 
127
- **Note:** Leave `API_ACCESS_KEY` empty to disable authentication (default for local development).
128
-
129
- ### Claude Code CLI Path
130
-
131
- Claude Workspace requires the Claude Code CLI to be installed. Set the `CLAUDE_PATH` environment variable to point to your Claude executable:
132
-
133
- **Linux/Ubuntu:**
134
- ```bash
135
- CLAUDE_PATH=/home/$(whoami)/.local/bin/claude
136
- ```
137
-
138
- **macOS (Homebrew):**
139
- ```bash
140
- CLAUDE_PATH=/opt/homebrew/bin/claude
141
- ```
142
-
143
- **Windows:**
144
- ```bash
145
- CLAUDE_PATH=%USERPROFILE%\.local\bin\claude.exe
146
- ```
147
-
148
- Add this to your `.env` file in the project directory, or the global `.env` at `~/.claude-ws/.env`.
149
-
150
- ### Environment Variables
151
-
152
63
  | Variable | Description | Default |
153
64
  |----------|-------------|---------|
154
- | `CLAUDE_PATH` | Path to Claude Code CLI executable | Auto-detected |
155
- | `PORT` | Server port | `3000` |
156
- | `NODE_ENV` | Environment mode | `development` |
157
- | `API_ACCESS_KEY` | API authentication key | (empty, no auth) |
158
- | `DATABASE_URL` | SQLite database path | `./data.db` |
159
- | `AGENT_FACTORY_DIR` | Agent Factory plugins directory | `~/.claude/agentfactory` |
65
+ | `PORT` | Server port | `8556` |
66
+ | `API_ACCESS_KEY` | API authentication key | (empty) |
67
+ | `CLAUDE_PATH` | Claude CLI path | Auto-detected |
160
68
 
161
69
  ---
162
70
 
163
- ## Work Everywhere with Cloudflare Tunnel
164
-
165
- Access Claude Workspace securely from anywhere using Cloudflare Tunnel + Access.
166
-
167
- ### 1. Install cloudflared
168
-
169
- ```bash
170
- # macOS
171
- brew install cloudflared
172
-
173
- # Linux
174
- curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
175
- chmod +x cloudflared && sudo mv cloudflared /usr/local/bin/
176
-
177
- # Windows
178
- winget install Cloudflare.cloudflared
179
- ```
180
-
181
- ### 2. Authenticate with Cloudflare
182
-
183
- ```bash
184
- cloudflared tunnel login
185
- ```
186
-
187
- ### 3. Create Tunnel
71
+ ## Production (PM2)
188
72
 
189
73
  ```bash
190
- cloudflared tunnel create claude-workspace
191
- ```
192
-
193
- ### 4. Configure Tunnel
194
-
195
- Create `~/.cloudflared/config.yml`:
196
-
197
- ```yaml
198
- tunnel: claude-workspace
199
- credentials-file: ~/.cloudflared/<TUNNEL_ID>.json
200
-
201
- ingress:
202
- - hostname: claude-ws.yourdomain.com
203
- service: http://localhost:8556
204
- - service: http_status:404
205
- ```
206
-
207
- ### 5. Add DNS Record
208
-
209
- ```bash
210
- cloudflared tunnel route dns claude-workspace claude-ws.yourdomain.com
211
- ```
212
-
213
- ### 6. Run Tunnel
214
-
215
- ```bash
216
- # Foreground
217
- cloudflared tunnel run claude-workspace
218
-
219
- # Or as service (recommended)
220
- sudo cloudflared service install
221
- sudo systemctl enable cloudflared
222
- sudo systemctl start cloudflared
74
+ npm install -g pm2
75
+ pnpm pm2:start # Start server (auto-builds)
76
+ pnpm pm2:logs # View logs
77
+ pnpm pm2:restart # Restart
78
+ pnpm pm2:stop # Stop
223
79
  ```
224
80
 
225
- ### 7. Setup Cloudflare Access (Authentication)
226
-
227
- 1. Go to [Cloudflare Zero Trust Dashboard](https://one.dash.cloudflare.com/)
228
- 2. Navigate to **Access** → **Applications** → **Add an application**
229
- 3. Select **Self-hosted**
230
- 4. Configure:
231
- - **Application name**: Claude Workspace
232
- - **Session duration**: 24 hours (or your preference)
233
- - **Application domain**: `claude-ws.yourdomain.com`
234
- 5. Add **Access Policy**:
235
- - **Policy name**: Allowed Users
236
- - **Action**: Allow
237
- - **Include**: Emails ending in `@yourdomain.com` or specific email addresses
238
- 6. Save and deploy
239
-
240
- Now access `https://claude-ws.yourdomain.com` from anywhere with Cloudflare authentication.
241
-
242
81
  ---
243
82
 
244
- ## Updating
245
-
246
- ### Check current version
247
- ```bash
248
- claude-ws --version
249
- ```
250
-
251
- ### Update to latest version
252
- ```bash
253
- npm update -g claude-ws
254
- ```
83
+ ## Remote Access
255
84
 
256
- ### Force reinstall
257
- ```bash
258
- npm install -g claude-ws@latest
259
- ```
85
+ For secure remote access, see [Cloudflare Tunnel Setup](./docs/cloudflare-tunnel.md).
260
86
 
261
87
  ---
262
88
 
263
89
  ## Tech Stack
264
90
 
265
- - **Framework**: Next.js 16 + React 19
266
- - **Database**: SQLite + Drizzle ORM
267
- - **Real-time**: Socket.io
268
- - **Styling**: Tailwind CSS 4
269
- - **UI**: Radix UI primitives
270
- - **State**: Zustand
271
- - **Drag & Drop**: dnd-kit
272
-
273
- ---
274
-
275
- ## Scripts
276
-
277
- | Command | Description |
278
- |---------|-------------|
279
- | `pnpm dev` | Start development server |
280
- | `pnpm build` | Build for production |
281
- | `pnpm start` | Start production server |
282
- | `pnpm lint` | Run ESLint |
283
- | `pnpm db:migrate` | Run database migrations |
284
- | `pnpm pm2:start` | Start with PM2 process manager |
285
- | `pnpm pm2:stop` | Stop PM2 process |
286
- | `pnpm pm2:restart` | Restart PM2 process |
287
- | `pnpm pm2:logs` | View PM2 logs |
288
- | `pnpm pm2:monit` | Monitor PM2 process |
289
-
290
- ### Running with PM2
291
-
292
- For production deployments with auto-restart and process management:
293
-
294
- ```bash
295
- # Install PM2 globally (if not already installed)
296
- npm install -g pm2
297
-
298
- # Start the server
299
- pnpm pm2:start
300
-
301
- # View logs
302
- pnpm pm2:logs
303
-
304
- # Monitor process
305
- pnpm pm2:monit
306
-
307
- # Restart
308
- pnpm pm2:restart
309
-
310
- # Stop
311
- pnpm pm2:stop
312
- ```
313
-
314
- PM2 Features:
315
- - Auto-restart on crash (max 10 attempts)
316
- - Memory limit monitoring (500MB)
317
- - Log rotation and management
318
- - Process status tracking
91
+ Next.js 16, React 19, SQLite + Drizzle ORM, Socket.io, Tailwind CSS 4, Radix UI, Zustand
319
92
 
320
93
  ---
321
94
 
@@ -14,6 +14,9 @@ const path = require('path');
14
14
  const fs = require('fs');
15
15
  const os = require('os');
16
16
 
17
+ // Load environment variables
18
+ require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
19
+
17
20
  // Get package root directory
18
21
  const packageRoot = path.resolve(__dirname, '..');
19
22
 
@@ -43,11 +46,11 @@ For more info: https://github.com/Claude-Workspace/claude-ws
43
46
  process.exit(0);
44
47
  }
45
48
 
46
- // Database path (in user's home directory for persistence)
47
- const DB_DIR = path.join(os.homedir(), '.claude-ws');
49
+ // Database path - use DATA_DIR from env if configured, otherwise default to project data dir
50
+ const DB_DIR = process.env.DATA_DIR || path.join(packageRoot, 'data');
48
51
  const DB_PATH = path.join(DB_DIR, 'claude-ws.db');
49
52
 
50
- // Ensure .claude-ws directory exists
53
+ // Ensure database directory exists
51
54
  if (!fs.existsSync(DB_DIR)) {
52
55
  console.log('[Claude Workspace] Creating database directory:', DB_DIR);
53
56
  fs.mkdirSync(DB_DIR, { recursive: true });
package/drizzle.config.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import type { Config } from 'drizzle-kit';
2
2
  import path from 'path';
3
- import os from 'os';
4
3
  import fs from 'fs';
4
+ import { config } from 'dotenv';
5
5
 
6
- // Database location in user's home directory for persistence
7
- const DB_DIR = path.join(os.homedir(), '.claude-ws');
6
+ // Load environment variables
7
+ const env = config();
8
+
9
+ // Database location - use DATA_DIR from env if configured, otherwise default to project data dir
10
+ const DB_DIR = process.env.DATA_DIR || path.join(process.cwd(), 'data');
8
11
  const DB_PATH = path.join(DB_DIR, 'claude-ws.db');
9
12
 
10
13
  // Ensure directory exists before drizzle-kit tries to connect
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "claude-ws",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
4
4
  "private": false,
5
5
  "description": "A beautifully crafted workspace interface for Claude Code with real-time streaming and local SQLite database",
6
6
  "keywords": [
7
7
  "claude",
8
+ "claudews",
9
+ "claude-ws",
8
10
  "claude-code",
9
11
  "workspace",
10
12
  "task-management",
@@ -29,6 +31,7 @@
29
31
  "files": [
30
32
  "bin",
31
33
  "drizzle",
34
+ "scripts",
32
35
  "src",
33
36
  "public",
34
37
  "server.ts",
@@ -57,24 +60,11 @@
57
60
  },
58
61
  "scripts": {
59
62
  "dev": "tsx server.ts",
60
- "dev:next": "next dev",
61
63
  "build": "NODE_ENV=production next build",
62
64
  "start": "NODE_ENV=production tsx server.ts",
63
- "lint": "eslint",
64
65
  "db:generate": "drizzle-kit generate",
65
- "db:migrate": "drizzle-kit migrate",
66
- "pm2:start": "pm2 start ecosystem.config.cjs",
67
- "pm2:stop": "pm2 stop claude-ws",
68
- "pm2:restart": "pm2 restart claude-ws",
69
- "pm2:delete": "pm2 delete claude-ws",
70
- "pm2:logs": "pm2 logs claude-ws",
71
- "pm2:monit": "pm2 monit",
72
- "version:patch": "npm version patch --no-git-tag-version",
73
- "version:minor": "npm version minor --no-git-tag-version",
74
- "version:major": "npm version major --no-git-tag-version",
75
- "prepublishOnly": "npm run build",
76
- "test:package": "./scripts/test-package.sh",
77
- "publish:npm": "npm publish --access public"
66
+ "db:fix": "tsx scripts/db-fix-columns.ts",
67
+ "prepublishOnly": "npm run build"
78
68
  },
79
69
  "dependencies": {
80
70
  "@anthropic-ai/claude-agent-sdk": "^0.2.5",
@@ -110,6 +100,12 @@
110
100
  "@radix-ui/react-tabs": "^1.1.13",
111
101
  "@radix-ui/react-toast": "^1.2.15",
112
102
  "@radix-ui/react-tooltip": "^1.2.8",
103
+ "@tailwindcss/postcss": "^4",
104
+ "@types/adm-zip": "^0.5.7",
105
+ "@types/better-sqlite3": "^7.6.13",
106
+ "@types/node": "^20",
107
+ "@types/react": "^19",
108
+ "@types/react-dom": "^19",
113
109
  "@uiw/react-codemirror": "^4.25.4",
114
110
  "adm-zip": "^0.5.16",
115
111
  "better-sqlite3": "^12.5.0",
@@ -119,8 +115,12 @@
119
115
  "date-fns": "^4.1.0",
120
116
  "diff": "^8.0.3",
121
117
  "dotenv": "^17.2.3",
118
+ "drizzle-kit": "^0.31.8",
122
119
  "drizzle-orm": "^0.45.1",
120
+ "eslint": "^9",
121
+ "eslint-config-next": "^16.1.3",
123
122
  "highlight.js": "^11.11.1",
123
+ "js-yaml": "^4.1.1",
124
124
  "lucide-react": "^0.562.0",
125
125
  "nanoid": "^5.1.6",
126
126
  "next": "^16.1.3",
@@ -134,22 +134,16 @@
134
134
  "socket.io-client": "^4.8.3",
135
135
  "sonner": "^2.0.7",
136
136
  "tailwind-merge": "^3.4.0",
137
+ "tailwindcss": "^4",
137
138
  "tar": "^7.5.2",
138
139
  "tsx": "^4.21.0",
140
+ "tw-animate-css": "^1.4.0",
139
141
  "typescript": "^5",
140
142
  "vscode-icons-js": "^11.6.1",
141
- "zustand": "^5.0.9",
142
- "@tailwindcss/postcss": "^4",
143
- "tailwindcss": "^4",
144
- "tw-animate-css": "^1.4.0",
145
- "drizzle-kit": "^0.31.8",
146
- "@types/adm-zip": "^0.5.7",
147
- "@types/better-sqlite3": "^7.6.13",
148
- "@types/node": "^20",
149
- "@types/react": "^19",
150
- "@types/react-dom": "^19",
151
- "eslint": "^9",
152
- "eslint-config-next": "^16.1.3"
143
+ "zustand": "^5.0.9"
153
144
  },
154
- "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48"
145
+ "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48",
146
+ "devDependencies": {
147
+ "@types/js-yaml": "^4.0.9"
148
+ }
155
149
  }
@@ -0,0 +1,96 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Claude Workspace API Documentation</title>
7
+ <link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@5.9.0/swagger-ui.css">
8
+ <style>
9
+ html {
10
+ box-sizing: border-box;
11
+ overflow: -moz-scrollbars-vertical;
12
+ overflow-y: scroll;
13
+ }
14
+ *, *:before, *:after {
15
+ box-sizing: inherit;
16
+ }
17
+ body {
18
+ margin: 0;
19
+ padding: 0;
20
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
21
+ }
22
+ .topbar {
23
+ background-color: #1a1a1a;
24
+ padding: 15px 0;
25
+ }
26
+ .topbar-wrapper {
27
+ max-width: 1460px;
28
+ margin: 0 auto;
29
+ padding: 0 20px;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: space-between;
33
+ }
34
+ .topbar-wrapper .link {
35
+ display: flex;
36
+ align-items: center;
37
+ color: #ffffff;
38
+ text-decoration: none;
39
+ }
40
+ .topbar-wrapper .link img {
41
+ height: 40px;
42
+ margin-right: 12px;
43
+ }
44
+ .topbar-wrapper .link span {
45
+ font-size: 1.2em;
46
+ font-weight: 600;
47
+ }
48
+ .info {
49
+ margin: 40px 0;
50
+ }
51
+ </style>
52
+ </head>
53
+ <body>
54
+ <div class="topbar">
55
+ <div class="topbar-wrapper">
56
+ <a href="https://github.com/Claude-Workspace/claude-ws" class="link">
57
+ <svg height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true" fill="white">
58
+ <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
59
+ </svg>
60
+ <span>Claude Workspace API</span>
61
+ </a>
62
+ </div>
63
+ </div>
64
+ <div id="swagger-ui"></div>
65
+ <script src="https://unpkg.com/swagger-ui-dist@5.9.0/swagger-ui-bundle.js" charset="UTF-8"></script>
66
+ <script src="https://unpkg.com/swagger-ui-dist@5.9.0/swagger-ui-standalone-preset.js" charset="UTF-8"></script>
67
+ <script>
68
+ window.onload = function() {
69
+ const ui = SwaggerUIBundle({
70
+ url: "/docs/swagger/swagger.yaml",
71
+ dom_id: '#swagger-ui',
72
+ deepLinking: true,
73
+ presets: [
74
+ SwaggerUIBundle.presets.apis,
75
+ SwaggerUIStandalonePreset
76
+ ],
77
+ plugins: [
78
+ SwaggerUIBundle.plugins.DownloadUrl
79
+ ],
80
+ layout: "StandaloneLayout",
81
+ defaultModelsExpandDepth: 1,
82
+ defaultModelExpandDepth: 1,
83
+ docExpansion: "list",
84
+ filter: true,
85
+ tryItOutEnabled: true,
86
+ persistAuthorization: true,
87
+ syntaxHighlight: {
88
+ activate: true,
89
+ theme: "monokai"
90
+ }
91
+ });
92
+ window.ui = ui;
93
+ };
94
+ </script>
95
+ </body>
96
+ </html>