claude-ws 0.3.4 → 0.3.5

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 (155) hide show
  1. package/README.md +1 -0
  2. package/bin/{claudekanban.js → claude-ws.js} +26 -7
  3. package/drizzle/0002_smooth_magneto.sql +8 -0
  4. package/drizzle/meta/0002_snapshot.json +1245 -0
  5. package/drizzle/meta/_journal.json +7 -0
  6. package/locales/de.json +101 -3
  7. package/locales/en.json +115 -2
  8. package/locales/es.json +101 -3
  9. package/locales/fr.json +101 -3
  10. package/locales/ja.json +101 -3
  11. package/locales/ko.json +101 -3
  12. package/locales/vi.json +115 -2
  13. package/locales/zh.json +101 -3
  14. package/next.config.ts +28 -1
  15. package/package.json +15 -8
  16. package/public/access-anywhere-illustration.svg +27 -0
  17. package/public/anywhere.svg +931 -0
  18. package/public/cloudflare-logo-dark.svg +21 -0
  19. package/public/cloudflare-logo.svg +21 -0
  20. package/public/docs/swagger/swagger.yaml +112 -0
  21. package/server.ts +78 -11
  22. package/src/app/[locale]/layout.tsx +15 -6
  23. package/src/app/[locale]/page.tsx +29 -11
  24. package/src/app/api/agent-factory/plugins/[id]/dependencies/route.ts +5 -2
  25. package/src/app/api/agent-factory/plugins/[id]/route.ts +9 -7
  26. package/src/app/api/agent-factory/plugins/route.ts +6 -3
  27. package/src/app/api/agent-factory/projects/[projectId]/components/route.ts +6 -3
  28. package/src/app/api/agent-factory/projects/[projectId]/installed/route.ts +5 -2
  29. package/src/app/api/agent-factory/projects/[projectId]/plugins/route.ts +7 -4
  30. package/src/app/api/agent-factory/projects/[projectId]/sync/route.ts +8 -5
  31. package/src/app/api/agent-factory/projects/[projectId]/uninstall/route.ts +6 -3
  32. package/src/app/api/attempts/route.ts +11 -5
  33. package/src/app/api/cache-stats/route.ts +22 -0
  34. package/src/app/api/checkpoints/rewind/route.ts +12 -10
  35. package/src/app/api/code/inline-edit/route.ts +6 -3
  36. package/src/app/api/files/operations/route.ts +7 -4
  37. package/src/app/api/files/upload/route.ts +286 -0
  38. package/src/app/api/models/route.ts +147 -0
  39. package/src/app/api/projects/[id]/route.ts +6 -3
  40. package/src/app/api/projects/[id]/settings/route.ts +6 -3
  41. package/src/app/api/projects/route.ts +6 -3
  42. package/src/app/api/proxy/anthropic/[[...path]]/route.ts +187 -0
  43. package/src/app/api/search/chat-history/route.ts +190 -0
  44. package/src/app/api/settings/api-access-key/route.ts +196 -0
  45. package/src/app/api/settings/provider/route.ts +345 -0
  46. package/src/app/api/settings/route.ts +98 -0
  47. package/src/app/api/subdomains/check/route.ts +31 -0
  48. package/src/app/api/subdomains/confirmation/route.ts +109 -0
  49. package/src/app/api/subdomains/route.ts +32 -0
  50. package/src/app/api/tasks/[id]/route.ts +9 -5
  51. package/src/app/api/tasks/reorder/route.ts +6 -3
  52. package/src/app/api/tunnel/start/route.ts +48 -0
  53. package/src/app/api/tunnel/status/route.ts +15 -0
  54. package/src/app/api/tunnel/stop/route.ts +24 -0
  55. package/src/components/access-anywhere/access-anywhere-wizard.tsx +80 -0
  56. package/src/components/access-anywhere/api-access-key-setup-modal.tsx +211 -0
  57. package/src/components/access-anywhere/index.ts +2 -0
  58. package/src/components/access-anywhere/tunnel-settings-dialog.tsx +268 -0
  59. package/src/components/access-anywhere/tunnel-settings.tsx +206 -0
  60. package/src/components/access-anywhere/tunnel-status-indicator.tsx +58 -0
  61. package/src/components/access-anywhere/wizard-step-cloudflare.tsx +171 -0
  62. package/src/components/access-anywhere/wizard-step-ctunnel.tsx +394 -0
  63. package/src/components/access-anywhere/wizard-step-method.tsx +77 -0
  64. package/src/components/access-anywhere/wizard-step-success.tsx +80 -0
  65. package/src/components/access-anywhere/wizard-step-welcome.tsx +37 -0
  66. package/src/components/auth/agent-provider-dialog.tsx +846 -0
  67. package/src/components/auth/api-key-dialog.tsx +4 -5
  68. package/src/components/auth/auth-error-message.tsx +82 -0
  69. package/src/components/claude/clickable-file-path.tsx +149 -0
  70. package/src/components/claude/message-block.tsx +21 -0
  71. package/src/components/claude/tool-use-block.tsx +5 -0
  72. package/src/components/editor/code-editor-with-inline-edit.tsx +3 -0
  73. package/src/components/editor/code-mirror-editor.tsx +3 -0
  74. package/src/components/editor/extensions/marker-line-highlight.ts +75 -0
  75. package/src/components/editor/file-diff-resolver-modal.tsx +630 -0
  76. package/src/components/editor/markdown-file-viewer.tsx +31 -2
  77. package/src/components/header/project-selector.tsx +3 -2
  78. package/src/components/kanban/board.tsx +14 -3
  79. package/src/components/kanban/column.tsx +4 -1
  80. package/src/components/kanban/create-task-dialog.tsx +7 -0
  81. package/src/components/kanban/task-card.tsx +16 -2
  82. package/src/components/project-settings/component-selector.tsx +18 -10
  83. package/src/components/project-settings/plugin-upload-dialog.tsx +524 -0
  84. package/src/components/project-settings/project-settings-dialog.tsx +16 -2
  85. package/src/components/providers/agent-provider-config.tsx +72 -0
  86. package/src/components/providers/remote-access-key-provider.tsx +83 -0
  87. package/src/components/right-sidebar.tsx +44 -1
  88. package/src/components/settings/folder-browser-dialog.tsx +263 -7
  89. package/src/components/settings/settings-page.tsx +6 -5
  90. package/src/components/sidebar/file-browser/file-create-buttons.tsx +21 -1
  91. package/src/components/sidebar/file-browser/file-tab-content.tsx +84 -1
  92. package/src/components/sidebar/file-browser/file-tree-context-menu.tsx +21 -4
  93. package/src/components/sidebar/file-browser/file-tree-item.tsx +16 -4
  94. package/src/components/sidebar/file-browser/file-tree.tsx +1 -0
  95. package/src/components/sidebar/file-browser/file-upload-dialog.tsx +393 -0
  96. package/src/components/task/chat-model-selector.tsx +95 -0
  97. package/src/components/task/conversation-view.tsx +30 -0
  98. package/src/components/task/floating-chat-window.tsx +310 -0
  99. package/src/components/task/floating-chat-windows-container.tsx +50 -0
  100. package/src/components/task/index.ts +2 -0
  101. package/src/components/task/interactive-command/model-selector.tsx +52 -20
  102. package/src/components/task/prompt-input.tsx +38 -32
  103. package/src/components/task/task-detail-panel.tsx +41 -161
  104. package/src/components/ui/detachable-window.tsx +14 -2
  105. package/src/components/ui/dialog.tsx +13 -2
  106. package/src/components/ui/toast.tsx +17 -10
  107. package/src/hooks/use-attempt-stream.ts +11 -11
  108. package/src/hooks/use-chat-history-search.ts +85 -0
  109. package/src/hooks/use-file-sync.ts +228 -0
  110. package/src/hooks/use-inline-edit.ts +15 -12
  111. package/src/hooks/use-socket.ts +6 -3
  112. package/src/lib/agent-manager.ts +66 -26
  113. package/src/lib/anthropic-proxy-setup.ts +377 -0
  114. package/src/lib/checkpoint-manager.ts +8 -4
  115. package/src/lib/claude-code-settings.ts +289 -0
  116. package/src/lib/claude-dependency-analyzer.ts +10 -6
  117. package/src/lib/context-tracker.ts +10 -6
  118. package/src/lib/db/index.ts +13 -0
  119. package/src/lib/db/schema.ts +13 -0
  120. package/src/lib/dependency-extractor.ts +5 -1
  121. package/src/lib/file-path-detector.ts +166 -0
  122. package/src/lib/file-processor.ts +9 -6
  123. package/src/lib/git-snapshot.ts +10 -7
  124. package/src/lib/git-stats-collector.ts +5 -1
  125. package/src/lib/inline-edit-manager.ts +13 -12
  126. package/src/lib/install-script-generator.ts +6 -2
  127. package/src/lib/language-services/adapters/typescript-adapter.ts +5 -1
  128. package/src/lib/logger.ts +77 -0
  129. package/src/lib/models.ts +102 -0
  130. package/src/lib/output-formatter.ts +5 -1
  131. package/src/lib/process-manager.ts +12 -11
  132. package/src/lib/proxy-token-cache.ts +224 -0
  133. package/src/lib/sdk-event-adapter.ts +14 -11
  134. package/src/lib/server-port-configuration.ts +27 -0
  135. package/src/lib/session-manager.ts +195 -11
  136. package/src/lib/shell-manager.ts +24 -22
  137. package/src/lib/socket-service.ts +0 -10
  138. package/src/lib/system-prompt.ts +2 -29
  139. package/src/lib/tunnel-service.ts +396 -0
  140. package/src/lib/update-checker.ts +4 -0
  141. package/src/lib/usage-tracker.ts +15 -8
  142. package/src/lib/utils.ts +22 -0
  143. package/src/lib/workflow-tracker.ts +5 -1
  144. package/src/stores/attachment-store.ts +4 -1
  145. package/src/stores/auth-store.ts +11 -0
  146. package/src/stores/floating-windows-store.ts +164 -0
  147. package/src/stores/model-store.ts +152 -0
  148. package/src/stores/project-settings-store.ts +6 -3
  149. package/src/stores/project-store.ts +12 -1
  150. package/src/stores/shell-store.ts +8 -5
  151. package/src/stores/sidebar-store.ts +6 -3
  152. package/src/stores/task-store.ts +49 -8
  153. package/src/stores/tunnel-store.ts +220 -0
  154. package/src/types/ctunnel.d.ts +18 -0
  155. package/src/types/index.ts +1 -0
package/README.md CHANGED
@@ -65,6 +65,7 @@ CLAUDE_PATH=/path/to/claude
65
65
  | `PORT` | Server port | `8556` |
66
66
  | `API_ACCESS_KEY` | API authentication key | (empty) |
67
67
  | `CLAUDE_PATH` | Claude CLI path | Auto-detected |
68
+ | `LOG_LEVEL` | Logging level: `debug`, `info`, `warn`, `error`, `silent` | `debug` (dev), `warn` (prod) |
68
69
 
69
70
  ---
70
71
 
@@ -6,7 +6,7 @@
6
6
  * This script:
7
7
  * 1. Auto-migrates the database on first run (using initDb from src/lib/db)
8
8
  * 2. Starts the Next.js server with Socket.io
9
- * 3. Opens browser to localhost:3000
9
+ * 3. Opens browser to localhost:8556
10
10
  */
11
11
 
12
12
  const { spawn } = require('child_process');
@@ -34,8 +34,15 @@ function whichCommand(cmd) {
34
34
  execSync(`${checker} ${cmd}`, { stdio: 'ignore' });
35
35
  }
36
36
 
37
- // Load environment variables
38
- require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
37
+ // Load environment variables from user's CWD only
38
+ // This ensures users manage their own .env in their project directory
39
+ const userEnvPath = path.join(process.cwd(), '.env');
40
+ if (fs.existsSync(userEnvPath)) {
41
+ require('dotenv').config({ path: userEnvPath });
42
+ console.log(`[Claude Workspace] Loaded .env from: ${userEnvPath}`);
43
+ } else {
44
+ console.log('[Claude Workspace] No .env found in current directory');
45
+ }
39
46
 
40
47
  // Get package root directory
41
48
  const packageRoot = path.resolve(__dirname, '..');
@@ -58,16 +65,23 @@ Options:
58
65
  -v, --version Show version number
59
66
  -h, --help Show this help message
60
67
 
68
+ Environment:
69
+ .env: Loaded from current working directory (./.env)
70
+ Database: Stored in ./data/claude-ws.db (or DATA_DIR env)
71
+
61
72
  Examples:
62
- claude-ws Start Claude Workspace server
73
+ claude-ws Start server using .env from current directory
74
+ cd ~/myproject && claude-ws Use ~/myproject/.env and database
63
75
 
64
76
  For more info: https://github.com/Claude-Workspace/claude-ws
65
77
  `);
66
78
  process.exit(0);
67
79
  }
68
80
 
69
- // Database path - use DATA_DIR from env if configured, otherwise default to project data dir
70
- const DB_DIR = process.env.DATA_DIR || path.join(packageRoot, 'data');
81
+ // Database path - use DATA_DIR from env, or user's CWD, or fall back to packageRoot
82
+ // This ensures database is stored in user's project directory when possible
83
+ const userCwd = process.cwd();
84
+ const DB_DIR = process.env.DATA_DIR || path.join(userCwd, 'data');
71
85
  const DB_PATH = path.join(DB_DIR, 'claude-ws.db');
72
86
 
73
87
  // Ensure database directory exists
@@ -125,10 +139,14 @@ async function runMigrations() {
125
139
  }
126
140
  }
127
141
 
142
+ // Default port - must match src/lib/server-port-configuration.ts
143
+ const DEFAULT_PORT = 8556;
144
+
128
145
  async function startServer() {
146
+ const port = process.env.PORT || DEFAULT_PORT;
129
147
  console.log('[Claude Workspace] Starting server...');
130
148
  console.log('[Claude Workspace] Database location:', DB_PATH);
131
- console.log('[Claude Workspace] Server will be available at http://localhost:8556');
149
+ console.log(`[Claude Workspace] Server will be available at http://localhost:${port}`);
132
150
  console.log('');
133
151
 
134
152
  const serverPath = path.join(packageRoot, 'server.ts');
@@ -259,6 +277,7 @@ async function startServer() {
259
277
  env: {
260
278
  ...process.env,
261
279
  NODE_ENV: process.env.NODE_ENV || 'production',
280
+ CLAUDE_WS_USER_CWD: process.cwd(), // Pass user's CWD to server
262
281
  }
263
282
  });
264
283
 
@@ -0,0 +1,8 @@
1
+ CREATE TABLE `app_settings` (
2
+ `key` text PRIMARY KEY NOT NULL,
3
+ `value` text NOT NULL,
4
+ `updated_at` integer NOT NULL
5
+ );
6
+ --> statement-breakpoint
7
+ ALTER TABLE `attempts` ADD `output_format` text;--> statement-breakpoint
8
+ ALTER TABLE `attempts` ADD `output_schema` text;