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 +165 -0
- package/bin/claude-space +122 -0
- package/bin/claude-space.js +59 -0
- package/out/main/index.js +3830 -0
- package/out/preload/index.js +250 -0
- package/out/renderer/assets/claudeFolderGenerator-BgGHew94.js +179 -0
- package/out/renderer/assets/index-C65XSohL.js +93249 -0
- package/out/renderer/assets/index-DEj3pJkQ.css +12262 -0
- package/out/renderer/index.html +20 -0
- package/package.json +81 -0
- package/resources/icon.png +0 -0
- package/scripts/create-release-assets.sh +54 -0
- package/scripts/postinstall.js +143 -0
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>
|
package/bin/claude-space
ADDED
|
@@ -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
|
+
});
|