claude-space 2.0.0

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.
package/README.md ADDED
@@ -0,0 +1,165 @@
1
+ <div align="center">
2
+
3
+ <img src="./.meta/Banner.png" alt="Claude Space Banner" width="100%"/>
4
+
5
+ ### 🧠 Visual Claude Code Node-Based Agent Builder
6
+
7
+ *Build multi-agent systems with a drag-and-drop canvas. </br>
8
+ Full .claude code folder manager (Skills, Commands, Mcps, Subagents, Hooks ..) .*
9
+
10
+ <p>
11
+ <img src="https://img.shields.io/badge/Electron-28-47848f?style=for-the-badge&logo=electron&logoColor=white" alt="Electron"/>
12
+ <img src="https://img.shields.io/badge/Vue_3-4FC08D?style=for-the-badge&logo=vue.js&logoColor=white" alt="Vue 3"/>
13
+ <img src="https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript"/>
14
+ <img src="https://img.shields.io/badge/Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white" alt="Vite"/>
15
+ </p>
16
+
17
+ <p>
18
+ <img src="https://img.shields.io/badge/license-MIT-purple?style=flat-square" alt="License"/>
19
+ <img src="https://img.shields.io/badge/version-1.0.0-purple?style=flat-square" alt="Version"/>
20
+ <img src="https://img.shields.io/badge/node-%3E%3D18.19.9-green?style=flat-square&logo=node.js" alt="Node"/>
21
+ <img src="https://img.shields.io/badge/Claude_Agent_SDK-0.1.59-9f7aea?style=flat-square&logo=anthropic" alt="Claude SDK"/>
22
+ </p>
23
+ <img src="./.meta/mainspace.gif" alt="Claude Space gif" width="100%"/>
24
+ ---
25
+ </div>
26
+
27
+ ---
28
+
29
+ ## 🎯 A Claude code what?
30
+
31
+ IDE for building Claude AI agents. Think Blender for agent workflowsβ€”visual node graph, real-time testing, export to production config.
32
+
33
+ <img src="./.meta/claudespace.gif" alt="Claude Space gif" width="100%"/>
34
+
35
+ **And Why?** 🧐
36
+
37
+ Because manually editing `.claude` configuration folders is a **nightmare** 😱.
38
+ Visualizing your agent's brain is just better! 🧠✨
39
+
40
+ ---
41
+
42
+ ## ⚑ Quick Start
43
+
44
+ ```bash
45
+ # Clone & run
46
+ git clone https://github.com/FilipeBorges1993/ClaudeSpaceElectron.git
47
+ cd claude-code-workspace
48
+ npm install
49
+ npm run dev
50
+ ```
51
+
52
+ **Requirements:** Node.js β‰₯18.19.9
53
+
54
+ ---
55
+
56
+ ## πŸ—οΈ Architecture
57
+
58
+ ```
59
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
60
+ β”‚ Electron Desktop App β”‚
61
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
62
+ β”‚ Vue 3 + TypeScript + Vite β”‚
63
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
64
+ β”‚ β”‚ Node Graph β”‚ β”‚ Chat Interface β”‚ β”‚
65
+ β”‚ β”‚ (Vue Flow) β”‚ β”‚ (Agent Testing) β”‚ β”‚
66
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
67
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
68
+ β”‚ Pinia State Management β”‚
69
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
70
+ β”‚ Claude Agent SDK Integration β”‚
71
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 🧩 Node Types
77
+
78
+ | Node | Purpose | Example Use |
79
+ |------|---------|-------------|
80
+ | πŸ€– **Agent** | Main agent config | System prompt, model selection, permissions |
81
+ | πŸ› οΈ **Skill** | Agent capabilities | Custom tools, API integrations, file ops |
82
+ | 🧠 **Memory** | Persistent state | Conversation history, knowledge base, RAG |
83
+ | βš™οΈ **Command** | Command templates | Structured inputs, parameter mapping |
84
+ | πŸ”Œ **MCP** | External tools | Context7 docs, file system, databases |
85
+ | πŸͺ **Hook** | Lifecycle events | PreToolUse, PostToolUse, SessionStart |
86
+ | 🎭 **Sub-agent** | Delegated agents | Specialized tasks, different models |
87
+
88
+ ---
89
+
90
+
91
+ ## πŸš€ Development
92
+
93
+ ```bash
94
+ # Dev mode with HMR
95
+ npm run dev
96
+
97
+ # Type checking
98
+ npm run typecheck # All
99
+ npm run typecheck:node # Node/Electron
100
+ npm run typecheck:web # Vue/Renderer
101
+
102
+ # Code quality
103
+ npm run lint # ESLint
104
+ npm run format # Prettier
105
+
106
+ # Build (platform-specific)
107
+ npm run build:mac # macOS (Intel + ARM)
108
+ npm run build:win # Windows (x64 + ARM)
109
+ npm run build:linux # Linux AppImage
110
+ ```
111
+ ---
112
+
113
+ ## πŸ“‚ Project Structure
114
+
115
+ ```
116
+ src/
117
+ β”œβ”€β”€ main/ # Electron main process
118
+ β”‚ └── index.ts # IPC handlers, window management
119
+ β”œβ”€β”€ preload/ # Context bridge & IPC
120
+ └── renderer/src/ # Vue application
121
+ β”œβ”€β”€ components/
122
+ β”‚ β”œβ”€β”€ NodeCanvas.vue # Main workflow editor
123
+ β”‚ β”œβ”€β”€ ChatPage.vue # Agent chat/testing UI
124
+ β”‚ └── Shared/ # Reusable components
125
+ β”œβ”€β”€ stores/ # Pinia state (workspace, canvas, agents)
126
+ β”œβ”€β”€ types/ # TS interfaces & types
127
+ β”œβ”€β”€ utils/ # Helpers, formatters
128
+ └── App.vue # Root component
129
+ ```
130
+
131
+ **Workspace Structure:**
132
+ ```
133
+ workspace-folder/
134
+ β”œβ”€β”€ project-1/
135
+ β”‚ β”œβ”€β”€ agent.json # Generated agent config
136
+ β”‚ β”œβ”€β”€ workflow.json # Visual node graph data
137
+ β”‚ β”œβ”€β”€ skills/ # Skill implementations
138
+ β”‚ └── memory/ # Memory layer configs
139
+ └── project-2/
140
+ └── ...
141
+ ```
142
+
143
+ ---
144
+
145
+ ## πŸ“œ License
146
+
147
+ MIT License - See [LICENSE](LICENSE)
148
+
149
+ ---
150
+
151
+ <div align="center">
152
+
153
+ <img src="https://img.shields.io/badge/Built_with-πŸ’œ-purple?style=for-the-badge" alt="Built with love"/>
154
+
155
+ **ClaudeSpace** by [FB](https://www.linkedin.com/in/filipe-borges-8a4749115/)
156
+
157
+ *Making AI agent development visual, one node at a time.*
158
+
159
+ ```
160
+ ⚑ Electron + Vue + Claude SDK = πŸš€
161
+ ```
162
+
163
+ [Report Bug](https://github.com/BorisCorp/claude-code-workspace/issues) β€’ [Request Feature](https://discord.gg/2tr2S7yw)
164
+
165
+ </div>
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # ClaudeSpace CLI launcher
4
+ # This script launches the ClaudeSpace Electron application
5
+
6
+ # Get the real directory where this script is located (resolving symlinks)
7
+ SOURCE="${BASH_SOURCE[0]}"
8
+ while [ -h "$SOURCE" ]; do
9
+ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
10
+ SOURCE="$(readlink "$SOURCE")"
11
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
12
+ done
13
+ SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
14
+
15
+ # Parse subcommands
16
+ OPEN_CANVAS=false
17
+ PROJECT_PATH=""
18
+
19
+ if [ "$1" = "project" ]; then
20
+ OPEN_CANVAS=true
21
+ if [ "$2" = "." ]; then
22
+ PROJECT_PATH="$(pwd)"
23
+ elif [ -n "$2" ]; then
24
+ # Resolve to absolute path
25
+ if [ -d "$2" ]; then
26
+ PROJECT_PATH="$(cd "$2" && pwd)"
27
+ else
28
+ PROJECT_PATH="$2"
29
+ fi
30
+ else
31
+ echo "Error: 'project' subcommand requires a path argument"
32
+ echo "Usage: claude-space project <path>"
33
+ exit 1
34
+ fi
35
+ # Remove 'project' and path from arguments
36
+ shift 2
37
+ fi
38
+
39
+ # Determine the app location based on the platform
40
+ if [[ "$OSTYPE" == "darwin"* ]]; then
41
+ # macOS
42
+ if [ -d "$SCRIPT_DIR/../app/ClaudeSpace.app" ]; then
43
+ # NPM package distribution location
44
+ APP_PATH="$SCRIPT_DIR/../app/ClaudeSpace.app"
45
+ elif [ -d "$SCRIPT_DIR/../dist-npm/mac-arm64/ClaudeSpace.app" ]; then
46
+ # Development/local build location
47
+ APP_PATH="$SCRIPT_DIR/../dist-npm/mac-arm64/ClaudeSpace.app"
48
+ elif [ -d "$SCRIPT_DIR/../ClaudeSpace.app" ]; then
49
+ # Alternative location
50
+ APP_PATH="$SCRIPT_DIR/../ClaudeSpace.app"
51
+ else
52
+ echo "Error: ClaudeSpace.app not found"
53
+ echo "Searched in:"
54
+ echo " - $SCRIPT_DIR/../app/ClaudeSpace.app"
55
+ echo " - $SCRIPT_DIR/../dist-npm/mac-arm64/ClaudeSpace.app"
56
+ exit 1
57
+ fi
58
+
59
+ # Build arguments for macOS open command
60
+ ARGS=()
61
+ if [ -n "$PROJECT_PATH" ] || [ "$OPEN_CANVAS" = true ]; then
62
+ ARGS+=("--args")
63
+ fi
64
+ if [ -n "$PROJECT_PATH" ]; then
65
+ ARGS+=("--project-path" "$PROJECT_PATH")
66
+ fi
67
+ if [ "$OPEN_CANVAS" = true ]; then
68
+ ARGS+=("--open-canvas")
69
+ fi
70
+
71
+ # Launch the app
72
+ # Use -n to force a new instance attempt, which triggers second-instance handler
73
+ open -n "$APP_PATH" "${ARGS[@]}" "$@"
74
+
75
+ elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
76
+ # Linux
77
+ if [ -x "$SCRIPT_DIR/../dist-npm/linux-unpacked/ClaudeSpace" ]; then
78
+ APP_PATH="$SCRIPT_DIR/../dist-npm/linux-unpacked/ClaudeSpace"
79
+ elif [ -x "$SCRIPT_DIR/../ClaudeSpace" ]; then
80
+ APP_PATH="$SCRIPT_DIR/../ClaudeSpace"
81
+ else
82
+ echo "Error: ClaudeSpace executable not found"
83
+ exit 1
84
+ fi
85
+
86
+ # Build arguments for Linux
87
+ ARGS=()
88
+ if [ -n "$PROJECT_PATH" ]; then
89
+ ARGS+=("--project-path" "$PROJECT_PATH")
90
+ fi
91
+ if [ "$OPEN_CANVAS" = true ]; then
92
+ ARGS+=("--open-canvas")
93
+ fi
94
+
95
+ "$APP_PATH" "${ARGS[@]}" "$@"
96
+
97
+ elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
98
+ # Windows
99
+ if [ -f "$SCRIPT_DIR/../dist-npm/win-unpacked/ClaudeSpace.exe" ]; then
100
+ APP_PATH="$SCRIPT_DIR/../dist-npm/win-unpacked/ClaudeSpace.exe"
101
+ elif [ -f "$SCRIPT_DIR/../ClaudeSpace.exe" ]; then
102
+ APP_PATH="$SCRIPT_DIR/../ClaudeSpace.exe"
103
+ else
104
+ echo "Error: ClaudeSpace.exe not found"
105
+ exit 1
106
+ fi
107
+
108
+ # Build arguments for Windows
109
+ ARGS=()
110
+ if [ -n "$PROJECT_PATH" ]; then
111
+ ARGS+=("--project-path" "$PROJECT_PATH")
112
+ fi
113
+ if [ "$OPEN_CANVAS" = true ]; then
114
+ ARGS+=("--open-canvas")
115
+ fi
116
+
117
+ "$APP_PATH" "${ARGS[@]}" "$@"
118
+
119
+ else
120
+ echo "Error: Unsupported operating system: $OSTYPE"
121
+ exit 1
122
+ fi
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ const { spawn } = require('child_process');
3
+ const path = require('path');
4
+ const fs = require('fs');
5
+
6
+ // Capture current working directory before changing context
7
+ process.env.CLAUDE_SPACE_CWD = process.cwd();
8
+
9
+ // Parse arguments
10
+ const args = process.argv.slice(2);
11
+ let projectPath = null;
12
+
13
+ // Handle flags
14
+ if (args.includes('--help') || args.includes('-h')) {
15
+ console.log('Usage: claude-space [project-path]');
16
+ console.log(' project-path: Optional path to project folder to open');
17
+ console.log('Options:');
18
+ console.log(' --help, -h: Show this help');
19
+ console.log(' --version, -v: Show version');
20
+ process.exit(0);
21
+ }
22
+
23
+ if (args.includes('--version') || args.includes('-v')) {
24
+ const pkg = require('../package.json');
25
+ console.log(`claude-space v${pkg.version}`);
26
+ process.exit(0);
27
+ }
28
+
29
+ // Look for project path argument (not starting with --)
30
+ for (const arg of args) {
31
+ if (!arg.startsWith('--')) {
32
+ projectPath = path.resolve(arg);
33
+ if (!fs.existsSync(projectPath)) {
34
+ console.error(`Error: Project path does not exist: ${projectPath}`);
35
+ process.exit(1);
36
+ }
37
+ break;
38
+ }
39
+ }
40
+
41
+ // Find Electron executable
42
+ const electronPath = require('electron');
43
+ const appPath = path.join(__dirname, '..');
44
+
45
+ // Build Electron arguments
46
+ const electronArgs = [appPath];
47
+ if (projectPath) {
48
+ electronArgs.push('--project-path', projectPath);
49
+ }
50
+
51
+ // Spawn Electron
52
+ const electron = spawn(electronPath, electronArgs, {
53
+ stdio: 'inherit',
54
+ env: process.env
55
+ });
56
+
57
+ electron.on('close', (code) => {
58
+ process.exit(code || 0);
59
+ });