claudepod 1.1.2 → 1.2.2

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 (75) hide show
  1. package/.devcontainer/.env +18 -0
  2. package/.devcontainer/CHANGELOG.md +68 -0
  3. package/.devcontainer/CLAUDE.md +100 -0
  4. package/.devcontainer/README.md +220 -0
  5. package/.devcontainer/config/main-system-prompt.md +118 -0
  6. package/.devcontainer/config/settings.json +41 -0
  7. package/.devcontainer/devcontainer.json +71 -113
  8. package/.devcontainer/features/README.md +113 -0
  9. package/.devcontainer/features/ast-grep/README.md +24 -0
  10. package/.devcontainer/features/ast-grep/devcontainer-feature.json +24 -0
  11. package/.devcontainer/features/ast-grep/install.sh +51 -0
  12. package/.devcontainer/features/ccstatusline/README.md +296 -0
  13. package/.devcontainer/features/ccstatusline/devcontainer-feature.json +19 -0
  14. package/.devcontainer/features/ccstatusline/install.sh +290 -0
  15. package/.devcontainer/features/ccusage/README.md +205 -0
  16. package/.devcontainer/features/ccusage/devcontainer-feature.json +38 -0
  17. package/.devcontainer/features/ccusage/install.sh +132 -0
  18. package/.devcontainer/features/claude-code/README.md +498 -0
  19. package/.devcontainer/features/claude-code/config/settings.json +36 -0
  20. package/.devcontainer/features/claude-code/config/system-prompt.md +118 -0
  21. package/.devcontainer/features/claude-code/config/world-building-sp.md +1432 -0
  22. package/.devcontainer/features/claude-code/devcontainer-feature.json +42 -0
  23. package/.devcontainer/features/claude-code/install.sh +466 -0
  24. package/.devcontainer/features/claude-monitor/README.md +74 -0
  25. package/.devcontainer/features/claude-monitor/devcontainer-feature.json +38 -0
  26. package/.devcontainer/features/claude-monitor/install.sh +99 -0
  27. package/.devcontainer/features/lsp-servers/README.md +85 -0
  28. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +34 -0
  29. package/.devcontainer/features/lsp-servers/install.sh +92 -0
  30. package/.devcontainer/features/mcp-qdrant/CHANGES.md +399 -0
  31. package/.devcontainer/features/mcp-qdrant/README.md +474 -0
  32. package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +57 -0
  33. package/.devcontainer/features/mcp-qdrant/install.sh +295 -0
  34. package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +129 -0
  35. package/.devcontainer/features/mcp-reasoner/README.md +177 -0
  36. package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +20 -0
  37. package/.devcontainer/features/mcp-reasoner/install.sh +177 -0
  38. package/.devcontainer/features/mcp-reasoner/poststart-hook.sh +67 -0
  39. package/.devcontainer/features/splitrail/README.md +140 -0
  40. package/.devcontainer/features/splitrail/devcontainer-feature.json +34 -0
  41. package/.devcontainer/features/splitrail/install.sh +129 -0
  42. package/.devcontainer/features/tree-sitter/README.md +138 -0
  43. package/.devcontainer/features/tree-sitter/devcontainer-feature.json +52 -0
  44. package/.devcontainer/features/tree-sitter/install.sh +173 -0
  45. package/.devcontainer/scripts/setup-aliases.sh +52 -0
  46. package/.devcontainer/scripts/setup-config.sh +28 -0
  47. package/.devcontainer/scripts/setup-irie-claude.sh +32 -0
  48. package/.devcontainer/scripts/setup-lsp.sh +20 -0
  49. package/.devcontainer/scripts/setup-plugins.sh +31 -0
  50. package/.devcontainer/scripts/setup.sh +60 -0
  51. package/README.md +153 -187
  52. package/package.json +6 -10
  53. package/setup.js +2 -2
  54. package/.devcontainer/config/claude/mcp.json +0 -76
  55. package/.devcontainer/config/claude/mcp.json.template +0 -117
  56. package/.devcontainer/config/claude/output-styles/strict-development.md +0 -158
  57. package/.devcontainer/config/claude/settings.json +0 -10
  58. package/.devcontainer/config/claude/system-prompt.md +0 -3
  59. package/.devcontainer/config/searxng/ods_config.json +0 -22
  60. package/.devcontainer/config/searxng/searxng_env_template +0 -71
  61. package/.devcontainer/config/serena/serena_config.yml +0 -72
  62. package/.devcontainer/config/taskmaster/config.json +0 -37
  63. package/.devcontainer/ods_config.json +0 -21
  64. package/.devcontainer/post-create.sh +0 -1077
  65. package/.devcontainer/post-start.sh +0 -551
  66. package/.devcontainer/sanitize-system-prompt.sh +0 -31
  67. package/.devcontainer/scripts/config/claude-core.sh +0 -210
  68. package/.devcontainer/scripts/config/searxng.sh +0 -411
  69. package/.devcontainer/scripts/config/serena.sh +0 -47
  70. package/.devcontainer/scripts/config/taskmaster.sh +0 -41
  71. package/.devcontainer/scripts/generate-mcp-config.js +0 -205
  72. package/.devcontainer/scripts/install/claude-code.sh +0 -112
  73. package/.devcontainer/scripts/shell/zsh-config.sh +0 -271
  74. package/.devcontainer/scripts/utils.sh +0 -44
  75. package/.devcontainer/setup-zsh.sh +0 -234
@@ -0,0 +1,52 @@
1
+ {
2
+ "id": "tree-sitter",
3
+ "version": "1.1.0",
4
+ "name": "Tree-sitter Parser",
5
+ "description": "Installs tree-sitter CLI (via npm) and parsing library with Node.js and Python bindings",
6
+ "maintainer": "AnExiledDev",
7
+ "documentationURL": "https://tree-sitter.github.io/tree-sitter/",
8
+ "options": {
9
+ "version": {
10
+ "type": "string",
11
+ "description": "tree-sitter-cli npm package version (e.g., 'latest', '0.24.4')",
12
+ "default": "latest"
13
+ },
14
+ "bindings": {
15
+ "type": "string",
16
+ "description": "Language bindings to install (node, python, both, none)",
17
+ "default": "both",
18
+ "enum": [
19
+ "node",
20
+ "python",
21
+ "both",
22
+ "none"
23
+ ],
24
+ "proposals": [
25
+ "node",
26
+ "python",
27
+ "both",
28
+ "none"
29
+ ]
30
+ },
31
+ "installCli": {
32
+ "type": "boolean",
33
+ "description": "Install tree-sitter CLI tool (requires Node.js)",
34
+ "default": true
35
+ },
36
+ "grammars": {
37
+ "type": "string",
38
+ "description": "Comma-separated list of grammars to preload (e.g., 'javascript,python,rust'). Empty for none.",
39
+ "default": "javascript,typescript,python"
40
+ },
41
+ "username": {
42
+ "type": "string",
43
+ "description": "Container user to install for",
44
+ "default": "automatic"
45
+ }
46
+ },
47
+ "installsAfter": [
48
+ "ghcr.io/devcontainers/features/common-utils:2",
49
+ "ghcr.io/devcontainers/features/node:1",
50
+ "ghcr.io/devcontainers/features/python:1"
51
+ ]
52
+ }
@@ -0,0 +1,173 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # === IMPORT OPTIONS ===
5
+ # DevContainer converts camelCase to UPPERCASE without underscores
6
+ VERSION="${VERSION:-latest}"
7
+ BINDINGS="${BINDINGS:-both}"
8
+ INSTALL_CLI="${INSTALLCLI:-true}"
9
+ GRAMMARS="${GRAMMARS:-}"
10
+ USERNAME="${USERNAME:-automatic}"
11
+
12
+ echo "[tree-sitter] Starting tree-sitter installation..."
13
+ echo "[tree-sitter] Options: version=${VERSION}, bindings=${BINDINGS}, cli=${INSTALL_CLI}"
14
+
15
+ # === SOURCE NVM ===
16
+ if [ -f /usr/local/share/nvm/nvm.sh ]; then
17
+ source /usr/local/share/nvm/nvm.sh
18
+ fi
19
+
20
+ # === VALIDATE BINDINGS OPTION ===
21
+ if [[ ! "${BINDINGS}" =~ ^(node|python|both|none)$ ]]; then
22
+ echo "[tree-sitter] ERROR: bindings must be 'node', 'python', 'both', or 'none'"
23
+ echo " Provided: ${BINDINGS}"
24
+ exit 1
25
+ fi
26
+
27
+ # === VALIDATE DEPENDENCIES ===
28
+ NEED_NODE=false
29
+ NEED_PYTHON=false
30
+
31
+ if [ "${BINDINGS}" = "node" ] || [ "${BINDINGS}" = "both" ]; then
32
+ NEED_NODE=true
33
+ fi
34
+ if [ "${BINDINGS}" = "python" ] || [ "${BINDINGS}" = "both" ]; then
35
+ NEED_PYTHON=true
36
+ fi
37
+
38
+ # CLI installation requires npm
39
+ if [ "${INSTALL_CLI}" = "true" ]; then
40
+ NEED_NODE=true
41
+ fi
42
+
43
+ if [ "${NEED_NODE}" = "true" ]; then
44
+ if ! command -v npm &>/dev/null; then
45
+ echo "[tree-sitter] ERROR: npm not available but required for CLI or node bindings"
46
+ echo " Ensure node feature is installed first"
47
+ exit 1
48
+ fi
49
+ echo "[tree-sitter] Node.js: $(node --version)"
50
+ fi
51
+
52
+ if [ "${NEED_PYTHON}" = "true" ]; then
53
+ if ! command -v pip &>/dev/null && ! command -v pip3 &>/dev/null; then
54
+ echo "[tree-sitter] ERROR: pip not available but python bindings requested"
55
+ echo " Ensure python feature is installed first"
56
+ exit 1
57
+ fi
58
+ echo "[tree-sitter] Python: $(python3 --version)"
59
+ fi
60
+
61
+ # === DETECT USER ===
62
+ if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
63
+ if [ -n "${_REMOTE_USER:-}" ]; then
64
+ USERNAME="${_REMOTE_USER}"
65
+ elif getent passwd vscode >/dev/null 2>&1; then
66
+ USERNAME="vscode"
67
+ elif getent passwd node >/dev/null 2>&1; then
68
+ USERNAME="node"
69
+ elif getent passwd codespace >/dev/null 2>&1; then
70
+ USERNAME="codespace"
71
+ else
72
+ USERNAME="root"
73
+ fi
74
+ fi
75
+
76
+ if [ "${USERNAME}" = "root" ]; then
77
+ USER_HOME="/root"
78
+ else
79
+ USER_HOME=$(getent passwd "${USERNAME}" | cut -d: -f6)
80
+ fi
81
+
82
+ echo "[tree-sitter] Installing for user: ${USERNAME} (home: ${USER_HOME})"
83
+
84
+ # === INSTALL CLI VIA NPM ===
85
+ if [ "${INSTALL_CLI}" = "true" ]; then
86
+ echo "[tree-sitter] Installing tree-sitter CLI via npm..."
87
+
88
+ # Build version specifier
89
+ if [ "${VERSION}" = "latest" ]; then
90
+ NPM_PACKAGE="tree-sitter-cli"
91
+ else
92
+ NPM_PACKAGE="tree-sitter-cli@${VERSION}"
93
+ fi
94
+
95
+ npm install -g "${NPM_PACKAGE}" 2>/dev/null || {
96
+ echo "[tree-sitter] WARNING: Global npm install failed, trying user install"
97
+ su - "${USERNAME}" -c "npm install -g ${NPM_PACKAGE}" 2>/dev/null || true
98
+ }
99
+
100
+ echo "[tree-sitter] CLI installed: $(tree-sitter --version 2>/dev/null || echo 'unknown')"
101
+ fi
102
+
103
+ # === INSTALL NODE BINDINGS ===
104
+ if [ "${BINDINGS}" = "node" ] || [ "${BINDINGS}" = "both" ]; then
105
+ echo "[tree-sitter] Installing Node.js bindings..."
106
+
107
+ # Install web-tree-sitter for runtime parsing
108
+ npm install -g web-tree-sitter 2>/dev/null || {
109
+ echo "[tree-sitter] WARNING: Global npm install failed, trying user install"
110
+ su - "${USERNAME}" -c "npm install -g web-tree-sitter" 2>/dev/null || true
111
+ }
112
+
113
+ # Install grammars if specified
114
+ if [ -n "${GRAMMARS}" ]; then
115
+ echo "[tree-sitter] Installing Node.js grammars: ${GRAMMARS}"
116
+ IFS=',' read -ra GRAMMAR_LIST <<< "${GRAMMARS}"
117
+ for grammar in "${GRAMMAR_LIST[@]}"; do
118
+ grammar=$(echo "${grammar}" | xargs) # trim whitespace
119
+ if [ -n "${grammar}" ]; then
120
+ npm install -g "tree-sitter-${grammar}" 2>/dev/null || {
121
+ echo "[tree-sitter] WARNING: Failed to install grammar: ${grammar}"
122
+ }
123
+ fi
124
+ done
125
+ fi
126
+
127
+ echo "[tree-sitter] Node.js bindings installed"
128
+ fi
129
+
130
+ # === INSTALL PYTHON BINDINGS ===
131
+ if [ "${NEED_PYTHON}" = "true" ]; then
132
+ echo "[tree-sitter] Installing Python bindings..."
133
+
134
+ # Use pip3 with --break-system-packages for system python
135
+ PIP_CMD="pip3"
136
+ if command -v pip &>/dev/null; then
137
+ PIP_CMD="pip"
138
+ fi
139
+
140
+ # Install tree-sitter python package
141
+ ${PIP_CMD} install --break-system-packages tree-sitter 2>/dev/null || \
142
+ ${PIP_CMD} install tree-sitter 2>/dev/null || {
143
+ echo "[tree-sitter] WARNING: System pip install failed, trying user install"
144
+ su - "${USERNAME}" -c "${PIP_CMD} install --user tree-sitter" 2>/dev/null || true
145
+ }
146
+
147
+ # Install grammars if specified
148
+ if [ -n "${GRAMMARS}" ]; then
149
+ echo "[tree-sitter] Installing Python grammars: ${GRAMMARS}"
150
+ IFS=',' read -ra GRAMMAR_LIST <<< "${GRAMMARS}"
151
+ for grammar in "${GRAMMAR_LIST[@]}"; do
152
+ grammar=$(echo "${grammar}" | xargs) # trim whitespace
153
+ if [ -n "${grammar}" ]; then
154
+ ${PIP_CMD} install --break-system-packages "tree-sitter-${grammar}" 2>/dev/null || \
155
+ ${PIP_CMD} install "tree-sitter-${grammar}" 2>/dev/null || {
156
+ echo "[tree-sitter] WARNING: Failed to install grammar: ${grammar}"
157
+ }
158
+ fi
159
+ done
160
+ fi
161
+
162
+ echo "[tree-sitter] Python bindings installed"
163
+ fi
164
+
165
+ # === SUMMARY ===
166
+ echo ""
167
+ echo "[tree-sitter] Installation complete!"
168
+ echo " CLI: $(command -v tree-sitter &>/dev/null && echo "installed ($(tree-sitter --version 2>/dev/null || echo 'unknown'))" || echo "not installed")"
169
+ echo " Node.js: $([ "${NEED_NODE}" = "true" ] && echo "installed" || echo "skipped")"
170
+ echo " Python: $([ "${NEED_PYTHON}" = "true" ] && echo "installed" || echo "skipped")"
171
+ if [ -n "${GRAMMARS}" ]; then
172
+ echo " Grammars: ${GRAMMARS}"
173
+ fi
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+ # Setup cc function for claude with local system prompt support
3
+
4
+ CLAUDE_DIR="${CLAUDE_CONFIG_DIR:?CLAUDE_CONFIG_DIR not set}"
5
+
6
+ echo "[setup-aliases] Configuring Claude aliases..."
7
+
8
+ # cc function: ensures local system prompt and settings exist, then runs claude
9
+ CC_FUNCTION='cc() {
10
+ local LOCAL_PROMPT=".claude/system-prompt.md"
11
+ local DEFAULT_PROMPT="/workspaces/.devcontainer/config/main-system-prompt.md"
12
+ local LOCAL_SETTINGS=".claude/settings.json"
13
+ local DEFAULT_SETTINGS="/workspaces/.devcontainer/config/settings.json"
14
+
15
+ mkdir -p .claude
16
+
17
+ if [ ! -f "$LOCAL_PROMPT" ]; then
18
+ cp "$DEFAULT_PROMPT" "$LOCAL_PROMPT"
19
+ echo "[cc] Created $LOCAL_PROMPT from default"
20
+ fi
21
+
22
+ if [ ! -f "$LOCAL_SETTINGS" ]; then
23
+ cp "$DEFAULT_SETTINGS" "$LOCAL_SETTINGS"
24
+ echo "[cc] Created $LOCAL_SETTINGS from default"
25
+ fi
26
+
27
+ claude --system-prompt-file "$LOCAL_PROMPT" --dangerously-skip-permissions "$@"
28
+ }'
29
+
30
+ for rc in ~/.bashrc ~/.zshrc; do
31
+ if [ -f "$rc" ]; then
32
+ # Remove old cc alias if present
33
+ if grep -q "alias cc=" "$rc" 2>/dev/null; then
34
+ sed -i '/alias cc=/d' "$rc"
35
+ echo "[setup-aliases] Removed old cc alias from $(basename $rc)"
36
+ fi
37
+ # Remove old specwright alias if present
38
+ if grep -q "alias specwright=" "$rc" 2>/dev/null; then
39
+ sed -i '/alias specwright=/d' "$rc"
40
+ echo "[setup-aliases] Removed specwright alias from $(basename $rc)"
41
+ fi
42
+ # Add cc function if not present
43
+ if ! grep -q "^cc()" "$rc" 2>/dev/null; then
44
+ echo "" >> "$rc"
45
+ echo "$CC_FUNCTION" >> "$rc"
46
+ echo "[setup-aliases] Added cc function to $(basename $rc)"
47
+ fi
48
+ fi
49
+ done
50
+
51
+ echo "[setup-aliases] Aliases configured:"
52
+ echo " cc -> claude with local .claude/system-prompt.md and .claude/settings.json (auto-created from defaults)"
@@ -0,0 +1,28 @@
1
+ #!/bin/bash
2
+ # Copy Claude configuration files to workspace
3
+
4
+ CONFIG_DIR="${CONFIG_SOURCE_DIR:?CONFIG_SOURCE_DIR not set}"
5
+ TARGET_DIR="${CLAUDE_CONFIG_DIR:?CLAUDE_CONFIG_DIR not set}"
6
+ OVERWRITE="${OVERWRITE_CONFIG:-false}"
7
+
8
+ echo "[setup-config] Copying configuration files..."
9
+ [ "$OVERWRITE" = "true" ] && echo "[setup-config] Overwrite mode enabled"
10
+
11
+ mkdir -p "$TARGET_DIR"
12
+
13
+ copy_file() {
14
+ local file="$1"
15
+ if [ -f "$CONFIG_DIR/$file" ]; then
16
+ if [ "$OVERWRITE" = "true" ] || [ ! -f "$TARGET_DIR/$file" ]; then
17
+ cp "$CONFIG_DIR/$file" "$TARGET_DIR/$file"
18
+ echo "[setup-config] Copied $file"
19
+ else
20
+ echo "[setup-config] $file already exists, skipping"
21
+ fi
22
+ fi
23
+ }
24
+
25
+ copy_file "settings.json"
26
+ copy_file "main-system-prompt.md"
27
+
28
+ echo "[setup-config] Configuration complete"
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+ # setup-irie-claude.sh
3
+ # Copies commands and agents from irie project to workspace .claude directory.
4
+ # This script is only for AnExiledDev's setup.
5
+
6
+ IRIE_CLAUDE="/workspaces/projects/irie/.claude"
7
+ WORKSPACE_CLAUDE="/workspaces/.claude"
8
+
9
+ # Fail gracefully if irie doesn't exist
10
+ if [[ ! -d "/workspaces/projects/irie" ]]; then
11
+ echo "┌─────────────────────────────────────────────────────────┐"
12
+ echo "│ Note: /workspaces/projects/irie not found. │"
13
+ echo "│ Failure is expected - this script is only for AnExiledDev│"
14
+ echo "└─────────────────────────────────────────────────────────┘"
15
+ exit 0
16
+ fi
17
+
18
+ # Copy commands if source exists
19
+ if [[ -d "$IRIE_CLAUDE/commands" ]]; then
20
+ mkdir -p "$WORKSPACE_CLAUDE/commands"
21
+ cp -f "$IRIE_CLAUDE/commands/"* "$WORKSPACE_CLAUDE/commands/" 2>/dev/null
22
+ echo "Copied irie commands to workspace .claude"
23
+ fi
24
+
25
+ # Copy agents if source exists
26
+ if [[ -d "$IRIE_CLAUDE/agents" ]]; then
27
+ mkdir -p "$WORKSPACE_CLAUDE/agents"
28
+ cp -f "$IRIE_CLAUDE/agents/"* "$WORKSPACE_CLAUDE/agents/" 2>/dev/null
29
+ echo "Copied irie agents to workspace .claude"
30
+ fi
31
+
32
+ echo "irie .claude sync complete"
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+ # Install LSP plugins for Claude Code
3
+
4
+ echo "[setup-lsp] Installing Claude Code LSP plugins..."
5
+
6
+ # Install Python LSP plugin
7
+ if claude plugin install pyright-lsp@claude-plugins-official 2>/dev/null; then
8
+ echo "[setup-lsp] Installed: pyright-lsp"
9
+ else
10
+ echo "[setup-lsp] WARNING: Failed to install pyright-lsp (may already be installed)"
11
+ fi
12
+
13
+ # Install TypeScript LSP plugin
14
+ if claude plugin install typescript-lsp@claude-plugins-official 2>/dev/null; then
15
+ echo "[setup-lsp] Installed: typescript-lsp"
16
+ else
17
+ echo "[setup-lsp] WARNING: Failed to install typescript-lsp (may already be installed)"
18
+ fi
19
+
20
+ echo "[setup-lsp] LSP plugin installation complete"
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ # Install official Anthropic plugins
3
+
4
+ echo "[setup-plugins] Installing official Anthropic plugins..."
5
+
6
+ # Note: typescript-lsp and pyright-lsp are installed by setup-lsp.sh
7
+ PLUGINS=(
8
+ "frontend-design@claude-plugins-official"
9
+ "code-review@claude-plugins-official"
10
+ "commit-commands@claude-plugins-official"
11
+ "pr-review-toolkit@claude-plugins-official"
12
+ )
13
+
14
+ for plugin in "${PLUGINS[@]}"; do
15
+ echo "[setup-plugins] Installing $plugin..."
16
+ if claude plugin install "$plugin" 2>/dev/null; then
17
+ echo "[setup-plugins] Installed: $plugin"
18
+ else
19
+ echo "[setup-plugins] Warning: Failed to install $plugin (may already exist)"
20
+ fi
21
+ done
22
+
23
+ # code-simplifier requires npx method (not available via native CLI)
24
+ echo "[setup-plugins] Installing code-simplifier (via npx)..."
25
+ if npx -y claude-plugins install "@anthropics/claude-plugins-official/code-simplifier" 2>/dev/null; then
26
+ echo "[setup-plugins] Installed: code-simplifier"
27
+ else
28
+ echo "[setup-plugins] Warning: Failed to install code-simplifier (may already exist)"
29
+ fi
30
+
31
+ echo "[setup-plugins] Plugin installation complete"
@@ -0,0 +1,60 @@
1
+ #!/bin/bash
2
+ # Master setup script for ClaudePod devcontainer
3
+
4
+ set -e
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ DEVCONTAINER_DIR="$(dirname "$SCRIPT_DIR")"
8
+ ENV_FILE="$DEVCONTAINER_DIR/.env"
9
+
10
+ # Load configuration
11
+ if [ -f "$ENV_FILE" ]; then
12
+ set -a
13
+ source "$ENV_FILE"
14
+ set +a
15
+ fi
16
+
17
+ # Apply defaults for any unset variables
18
+ : "${CLAUDE_CONFIG_DIR:=/workspaces/.claude}"
19
+ : "${CONFIG_SOURCE_DIR:=$DEVCONTAINER_DIR/config}"
20
+ : "${SETUP_CONFIG:=true}"
21
+ : "${SETUP_ALIASES:=true}"
22
+ : "${OVERWRITE_CONFIG:=false}"
23
+ : "${SETUP_LSP:=true}"
24
+ : "${SETUP_PLUGINS:=true}"
25
+
26
+ export CLAUDE_CONFIG_DIR CONFIG_SOURCE_DIR SETUP_CONFIG SETUP_ALIASES OVERWRITE_CONFIG SETUP_LSP SETUP_PLUGINS
27
+
28
+
29
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
30
+ echo " ClaudePod Setup"
31
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
32
+ echo ""
33
+
34
+ run_script() {
35
+ local script="$1"
36
+ local enabled="$2"
37
+ local name="$(basename $script .sh)"
38
+
39
+ if [ "$enabled" = "true" ]; then
40
+ if [ -f "$script" ]; then
41
+ echo "Running $name..."
42
+ bash "$script"
43
+ echo ""
44
+ else
45
+ echo "WARNING: $script not found, skipping"
46
+ fi
47
+ else
48
+ echo "Skipping $name (disabled)"
49
+ fi
50
+ }
51
+
52
+ run_script "$SCRIPT_DIR/setup-config.sh" "$SETUP_CONFIG"
53
+ run_script "$SCRIPT_DIR/setup-aliases.sh" "$SETUP_ALIASES"
54
+ run_script "$SCRIPT_DIR/setup-lsp.sh" "$SETUP_LSP"
55
+ run_script "$SCRIPT_DIR/setup-plugins.sh" "$SETUP_PLUGINS"
56
+ run_script "$SCRIPT_DIR/setup-irie-claude.sh" "true"
57
+
58
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
59
+ echo " Setup Complete"
60
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"