@sugar-crash-studios/vibe-forge 0.4.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/.claude/commands/clear-attention.md +63 -0
- package/.claude/commands/compact-context.md +52 -0
- package/.claude/commands/configure-vcs.md +102 -0
- package/.claude/commands/forge.md +171 -0
- package/.claude/commands/need-help.md +77 -0
- package/.claude/commands/update-status.md +64 -0
- package/.claude/commands/worker-loop.md +106 -0
- package/.claude/hooks/worker-loop.js +198 -0
- package/.claude/scripts/setup-worker-loop.sh +45 -0
- package/.claude/settings.local.json +46 -0
- package/LICENSE +21 -0
- package/README.md +238 -0
- package/agents/aegis/personality.md +294 -0
- package/agents/anvil/personality.md +276 -0
- package/agents/architect/personality.md +258 -0
- package/agents/crucible/personality.md +360 -0
- package/agents/ember/personality.md +291 -0
- package/agents/forge-master/capabilities.md +144 -0
- package/agents/forge-master/context-template.md +128 -0
- package/agents/forge-master/personality.md +138 -0
- package/agents/furnace/personality.md +340 -0
- package/agents/herald/personality.md +247 -0
- package/agents/loki/personality.md +108 -0
- package/agents/oracle/personality.md +283 -0
- package/agents/pixel/personality.md +113 -0
- package/agents/planning-hub/personality.md +320 -0
- package/agents/scribe/personality.md +251 -0
- package/agents/temper/personality.md +218 -0
- package/bin/cli.js +375 -0
- package/bin/dashboard/api/agents.js +333 -0
- package/bin/dashboard/api/dispatch.js +483 -0
- package/bin/dashboard/api/tasks.js +416 -0
- package/bin/dashboard/frontend/index.html +13 -0
- package/bin/dashboard/frontend/package.json +16 -0
- package/bin/dashboard/frontend/src/App.svelte +222 -0
- package/bin/dashboard/frontend/src/app.css +1777 -0
- package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
- package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
- package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
- package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
- package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
- package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
- package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
- package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
- package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
- package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
- package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
- package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
- package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
- package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
- package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
- package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
- package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
- package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
- package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
- package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
- package/bin/dashboard/frontend/src/main.js +9 -0
- package/bin/dashboard/frontend/svelte.config.js +5 -0
- package/bin/dashboard/frontend/vite.config.js +20 -0
- package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
- package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
- package/bin/dashboard/public/index.html +14 -0
- package/bin/dashboard/server.js +566 -0
- package/bin/forge-daemon.sh +463 -0
- package/bin/forge-setup.sh +645 -0
- package/bin/forge-spawn.sh +164 -0
- package/bin/forge.cmd +83 -0
- package/bin/forge.sh +533 -0
- package/bin/lib/agents.sh +177 -0
- package/bin/lib/colors.sh +44 -0
- package/bin/lib/config.sh +347 -0
- package/bin/lib/constants.sh +241 -0
- package/bin/lib/daemon/display.sh +128 -0
- package/bin/lib/daemon/notifications.sh +263 -0
- package/bin/lib/daemon/routing.sh +77 -0
- package/bin/lib/daemon/state.sh +115 -0
- package/bin/lib/daemon/sync.sh +95 -0
- package/bin/lib/database.sh +310 -0
- package/bin/lib/heimdall-setup.js +113 -0
- package/bin/lib/heimdall.js +265 -0
- package/bin/lib/json.sh +264 -0
- package/bin/lib/terminal.js +451 -0
- package/bin/lib/util.sh +126 -0
- package/bin/lib/vcs.js +349 -0
- package/config/agent-manifest.yaml +203 -0
- package/config/agents.json +168 -0
- package/config/task-template.md +159 -0
- package/config/task-types.yaml +106 -0
- package/context/agent-status/aegis.json +7 -0
- package/context/agent-status/anvil.json +7 -0
- package/context/agent-status/architect.json +7 -0
- package/context/agent-status/crucible.json +7 -0
- package/context/agent-status/ember.json +7 -0
- package/context/agent-status/furnace.json +7 -0
- package/context/agent-status/loki.json +7 -0
- package/context/agent-status/oracle.json +7 -0
- package/context/agent-status/pixel.json +7 -0
- package/context/agent-status/planning-hub.json +7 -0
- package/context/agent-status/scribe.json +7 -0
- package/context/agent-status/temper.json +7 -0
- package/context/feature-brainstorm.md +426 -0
- package/context/forge-state.yaml +19 -0
- package/context/modern-conventions.md +129 -0
- package/context/project-context-template.md +122 -0
- package/context/project-context.md +122 -0
- package/docs/TODO.md +150 -0
- package/docs/agents.md +409 -0
- package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
- package/docs/architecture/vibe-lab-integration.md +684 -0
- package/docs/architecture.md +194 -0
- package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
- package/docs/cleanup-workflow.md +329 -0
- package/docs/commands.md +451 -0
- package/docs/dashboard-mockup.html +989 -0
- package/docs/getting-started.md +261 -0
- package/docs/integration/forge-ownership-policy.md +112 -0
- package/docs/npm-publishing.md +132 -0
- package/docs/roadmap-2026.md +519 -0
- package/docs/security.md +144 -0
- package/docs/wireframes/dashboard-mvp.md +1164 -0
- package/docs/workflows/README.md +32 -0
- package/docs/workflows/azure-devops.md +108 -0
- package/docs/workflows/bitbucket.md +104 -0
- package/docs/workflows/git-only.md +130 -0
- package/docs/workflows/gitea.md +168 -0
- package/docs/workflows/github.md +103 -0
- package/docs/workflows/gitlab.md +105 -0
- package/docs/workflows.md +454 -0
- package/package.json +73 -0
- package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
- package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
- package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
- package/tasks/completed/ARCH-009-test-organization.md +78 -0
- package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
- package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
- package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
- package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
- package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
- package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
- package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
- package/tasks/completed/CLEAN-001.md +38 -0
- package/tasks/completed/CLEAN-002.md +43 -0
- package/tasks/completed/CLEAN-003.md +47 -0
- package/tasks/completed/CLEAN-004.md +56 -0
- package/tasks/completed/CLEAN-005.md +75 -0
- package/tasks/completed/CLEAN-006.md +47 -0
- package/tasks/completed/CLEAN-007.md +34 -0
- package/tasks/completed/CLEAN-008.md +49 -0
- package/tasks/completed/CLEAN-012.md +58 -0
- package/tasks/completed/CLEAN-013.md +45 -0
- package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
- package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
- package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
- package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
- package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
- package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
- package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
- package/tasks/completed/PLAT-1-heimdall.md +420 -0
- package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
- package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
- package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
- package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
- package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
- package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
- package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
- package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
- package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
- package/tasks/completed/review-bmad-aegis.md +89 -0
- package/tasks/completed/review-bmad-anvil.md +80 -0
- package/tasks/completed/review-bmad-crucible.md +81 -0
- package/tasks/completed/review-bmad-ember.md +90 -0
- package/tasks/completed/review-bmad-furnace.md +79 -0
- package/tasks/completed/review-bmad-pixel.md +82 -0
- package/tasks/completed/review-bmad-scribe.md +92 -0
- package/tasks/completed/review-bmad-sentinel.md +83 -0
- package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
- package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
- package/tasks/pending/ARCH-006-task-template-location.md +64 -0
- package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
- package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
- package/tasks/pending/CLEAN-009.md +31 -0
- package/tasks/pending/CLEAN-010.md +30 -0
- package/tasks/pending/CLEAN-011.md +30 -0
- package/tasks/pending/CLEAN-014.md +32 -0
- package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
- package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
- package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
- package/tasks/review/bmad-review-aegis.md +349 -0
- package/tasks/review/bmad-review-anvil.md +259 -0
- package/tasks/review/bmad-review-crucible.md +277 -0
- package/tasks/review/bmad-review-ember.md +307 -0
- package/tasks/review/bmad-review-furnace.md +285 -0
- package/tasks/review/bmad-review-pixel.md +329 -0
- package/tasks/review/bmad-review-scribe.md +361 -0
- package/tasks/review/bmad-review-sentinel.md +242 -0
- package/tasks/review/task-001.md +78 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Vibe Forge - Agent Spawner
|
|
4
|
+
# Spawns worker agents in new terminal windows/tabs based on configured terminal type
|
|
5
|
+
#
|
|
6
|
+
# Usage: forge-spawn.sh <agent-name>
|
|
7
|
+
#
|
|
8
|
+
# Supports:
|
|
9
|
+
# - Windows Terminal (wt new-tab)
|
|
10
|
+
# - Manual (prints instructions)
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
set -e
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
FORGE_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
17
|
+
CONFIG_FILE="$FORGE_ROOT/.forge/config.json"
|
|
18
|
+
|
|
19
|
+
# =============================================================================
|
|
20
|
+
# Load Shared Libraries
|
|
21
|
+
# =============================================================================
|
|
22
|
+
|
|
23
|
+
# shellcheck source=lib/colors.sh
|
|
24
|
+
source "$SCRIPT_DIR/lib/colors.sh"
|
|
25
|
+
# shellcheck source=lib/constants.sh
|
|
26
|
+
source "$SCRIPT_DIR/lib/constants.sh"
|
|
27
|
+
# shellcheck source=lib/config.sh
|
|
28
|
+
source "$SCRIPT_DIR/lib/config.sh"
|
|
29
|
+
# shellcheck source=lib/agents.sh
|
|
30
|
+
source "$SCRIPT_DIR/lib/agents.sh"
|
|
31
|
+
|
|
32
|
+
# Load agent configuration from JSON if available
|
|
33
|
+
if [[ -f "$FORGE_ROOT/$AGENTS_CONFIG" ]]; then
|
|
34
|
+
if ! load_agents_from_json "$FORGE_ROOT/$AGENTS_CONFIG" 2>/dev/null; then
|
|
35
|
+
log_warn "Failed to load agents.json, using fallback defaults"
|
|
36
|
+
fi
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# =============================================================================
|
|
40
|
+
# Spawn Functions
|
|
41
|
+
# =============================================================================
|
|
42
|
+
|
|
43
|
+
spawn_windows_terminal() {
|
|
44
|
+
local agent="$1"
|
|
45
|
+
|
|
46
|
+
log_info "Spawning $agent in Windows Terminal..."
|
|
47
|
+
|
|
48
|
+
if command -v wt &> /dev/null || command -v wt.exe &> /dev/null; then
|
|
49
|
+
# Get display info for tab
|
|
50
|
+
local display_name icon tab_color
|
|
51
|
+
display_name=$(get_agent_display_name "$agent")
|
|
52
|
+
icon=$(get_agent_icon "$agent")
|
|
53
|
+
tab_color=$(get_agent_tab_color "$agent")
|
|
54
|
+
|
|
55
|
+
# Build tab title with icon
|
|
56
|
+
local tab_title="$display_name"
|
|
57
|
+
if [[ -n "$icon" ]]; then
|
|
58
|
+
tab_title="$icon $display_name"
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Convert FORGE_ROOT to Windows path for wt.exe
|
|
62
|
+
# Git Bash paths like /c/foo become C:/foo
|
|
63
|
+
local win_forge_root
|
|
64
|
+
if [[ "$FORGE_ROOT" =~ ^/([a-zA-Z])/ ]]; then
|
|
65
|
+
win_forge_root="${BASH_REMATCH[1]}:${FORGE_ROOT:2}"
|
|
66
|
+
else
|
|
67
|
+
win_forge_root="$FORGE_ROOT"
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# Build wt command with optional tab color
|
|
71
|
+
local wt_args=(-w 0 new-tab --title "$tab_title")
|
|
72
|
+
if [[ -n "$tab_color" ]]; then
|
|
73
|
+
wt_args+=(--tabColor "$tab_color")
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# Windows Terminal: open new tab with forge command
|
|
77
|
+
# SECURITY: $agent has already been validated through resolve_agent
|
|
78
|
+
# SECURITY: Use printf %q to properly escape paths for nested shell invocation
|
|
79
|
+
local escaped_path escaped_agent
|
|
80
|
+
escaped_path=$(printf %q "$win_forge_root")
|
|
81
|
+
escaped_agent=$(printf %q "$agent")
|
|
82
|
+
|
|
83
|
+
if [[ -n "$GIT_BASH_PATH" ]]; then
|
|
84
|
+
local bash_path="${GIT_BASH_PATH//\//\\}"
|
|
85
|
+
wt.exe "${wt_args[@]}" "$bash_path" -c "cd $escaped_path && ./bin/forge.sh start $escaped_agent"
|
|
86
|
+
else
|
|
87
|
+
wt.exe "${wt_args[@]}" bash -c "cd $escaped_path && ./bin/forge.sh start $escaped_agent"
|
|
88
|
+
fi
|
|
89
|
+
log_success "$tab_title spawned in new Windows Terminal tab"
|
|
90
|
+
else
|
|
91
|
+
log_error "wt command not found."
|
|
92
|
+
echo "Make sure Windows Terminal is installed."
|
|
93
|
+
echo ""
|
|
94
|
+
echo "Manual fallback:"
|
|
95
|
+
print_manual_instructions "$agent"
|
|
96
|
+
exit $EXIT_DEPENDENCY_MISSING
|
|
97
|
+
fi
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
print_manual_instructions() {
|
|
101
|
+
local agent="$1"
|
|
102
|
+
local display_name
|
|
103
|
+
display_name=$(get_agent_display_name "$agent")
|
|
104
|
+
|
|
105
|
+
echo ""
|
|
106
|
+
log_info "To start $display_name manually:"
|
|
107
|
+
echo ""
|
|
108
|
+
echo " 1. Open a new terminal window/tab"
|
|
109
|
+
echo " 2. Navigate to: $FORGE_ROOT"
|
|
110
|
+
echo " 3. Run: ./bin/forge.sh start $agent"
|
|
111
|
+
echo ""
|
|
112
|
+
echo "Or copy this command:"
|
|
113
|
+
echo ""
|
|
114
|
+
echo " cd '$FORGE_ROOT' && ./bin/forge.sh start '$agent'"
|
|
115
|
+
echo ""
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
# =============================================================================
|
|
119
|
+
# Main
|
|
120
|
+
# =============================================================================
|
|
121
|
+
|
|
122
|
+
main() {
|
|
123
|
+
local agent="${1:-}"
|
|
124
|
+
|
|
125
|
+
if [[ -z "$agent" ]]; then
|
|
126
|
+
log_error "No agent specified."
|
|
127
|
+
echo ""
|
|
128
|
+
echo "Usage: forge-spawn.sh <agent-name>"
|
|
129
|
+
echo ""
|
|
130
|
+
show_available_agents
|
|
131
|
+
exit $EXIT_INVALID_ARGUMENT
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
# Resolve alias to canonical agent name (SECURITY: whitelist validation)
|
|
135
|
+
local resolved
|
|
136
|
+
resolved=$(resolve_agent "$agent") || {
|
|
137
|
+
log_error "Unknown agent: $agent"
|
|
138
|
+
echo ""
|
|
139
|
+
show_available_agents
|
|
140
|
+
exit $EXIT_INVALID_ARGUMENT
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
# Load config
|
|
144
|
+
require_forge_config "$FORGE_ROOT"
|
|
145
|
+
|
|
146
|
+
echo ""
|
|
147
|
+
local icon
|
|
148
|
+
icon=$(get_agent_icon "$resolved")
|
|
149
|
+
log_header "${icon:-🔥} Forge Spawn: $(get_agent_display_name "$resolved")"
|
|
150
|
+
if [[ "$agent" != "$resolved" ]]; then
|
|
151
|
+
echo " (resolved from '$agent')"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
case "$TERMINAL_TYPE" in
|
|
155
|
+
"windows-terminal")
|
|
156
|
+
spawn_windows_terminal "$resolved"
|
|
157
|
+
;;
|
|
158
|
+
*)
|
|
159
|
+
print_manual_instructions "$resolved"
|
|
160
|
+
;;
|
|
161
|
+
esac
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
main "$@"
|
package/bin/forge.cmd
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
REM Vibe Forge - Windows Launcher
|
|
3
|
+
REM Wraps forge.sh for Windows compatibility
|
|
4
|
+
|
|
5
|
+
setlocal EnableDelayedExpansion
|
|
6
|
+
|
|
7
|
+
set "SCRIPT_DIR=%~dp0"
|
|
8
|
+
set "FORGE_ROOT=%SCRIPT_DIR%.."
|
|
9
|
+
set "CONFIG_FILE=%FORGE_ROOT%\.forge\config.json"
|
|
10
|
+
|
|
11
|
+
REM Check if this is init or help (doesn't require config)
|
|
12
|
+
set "CMD=%~1"
|
|
13
|
+
if "%CMD%"=="init" goto :find_bash
|
|
14
|
+
if "%CMD%"=="help" goto :find_bash
|
|
15
|
+
if "%CMD%"=="--help" goto :find_bash
|
|
16
|
+
if "%CMD%"=="-h" goto :find_bash
|
|
17
|
+
|
|
18
|
+
REM For other commands, check if initialized
|
|
19
|
+
if not exist "%CONFIG_FILE%" (
|
|
20
|
+
echo Error: Vibe Forge not initialized.
|
|
21
|
+
echo Run 'forge init' first.
|
|
22
|
+
exit /b 1
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
REM Extract git_bash_path from config using PowerShell for reliable JSON parsing
|
|
26
|
+
for /f "usebackq delims=" %%a in (`powershell -NoProfile -Command "(Get-Content '%CONFIG_FILE%' | ConvertFrom-Json).git_bash_path"`) do (
|
|
27
|
+
set "GIT_BASH_PATH=%%a"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
REM Convert forward slashes to backslashes if needed
|
|
31
|
+
set "GIT_BASH_PATH=!GIT_BASH_PATH:/=\!"
|
|
32
|
+
|
|
33
|
+
REM Verify the path exists
|
|
34
|
+
if not exist "!GIT_BASH_PATH!" (
|
|
35
|
+
echo Error: Git Bash not found at: !GIT_BASH_PATH!
|
|
36
|
+
echo Please run 'forge init' again.
|
|
37
|
+
exit /b 1
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
goto :run_forge
|
|
41
|
+
|
|
42
|
+
:find_bash
|
|
43
|
+
REM Find Git Bash for init/help commands
|
|
44
|
+
set "GIT_BASH_PATH="
|
|
45
|
+
|
|
46
|
+
REM Check common paths
|
|
47
|
+
if exist "C:\Program Files\Git\bin\bash.exe" (
|
|
48
|
+
set "GIT_BASH_PATH=C:\Program Files\Git\bin\bash.exe"
|
|
49
|
+
goto :run_forge
|
|
50
|
+
)
|
|
51
|
+
if exist "C:\Program Files (x86)\Git\bin\bash.exe" (
|
|
52
|
+
set "GIT_BASH_PATH=C:\Program Files (x86)\Git\bin\bash.exe"
|
|
53
|
+
goto :run_forge
|
|
54
|
+
)
|
|
55
|
+
if exist "D:\Program Files\Git\bin\bash.exe" (
|
|
56
|
+
set "GIT_BASH_PATH=D:\Program Files\Git\bin\bash.exe"
|
|
57
|
+
goto :run_forge
|
|
58
|
+
)
|
|
59
|
+
if exist "D:\applications\git\bin\bash.exe" (
|
|
60
|
+
set "GIT_BASH_PATH=D:\applications\git\bin\bash.exe"
|
|
61
|
+
goto :run_forge
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
REM Try to find via where command
|
|
65
|
+
for /f "tokens=*" %%i in ('where git 2^>nul') do (
|
|
66
|
+
set "GIT_PATH=%%~dpi"
|
|
67
|
+
set "GIT_BASH_PATH=!GIT_PATH!..\bin\bash.exe"
|
|
68
|
+
if exist "!GIT_BASH_PATH!" goto :run_forge
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
REM Still not found
|
|
72
|
+
echo Error: Git Bash not found.
|
|
73
|
+
echo Please install Git from https://git-scm.com/downloads/win
|
|
74
|
+
exit /b 1
|
|
75
|
+
|
|
76
|
+
:run_forge
|
|
77
|
+
REM Set environment variable for Claude Code
|
|
78
|
+
set "CLAUDE_CODE_GIT_BASH_PATH=%GIT_BASH_PATH%"
|
|
79
|
+
|
|
80
|
+
REM Run the bash script with all arguments
|
|
81
|
+
"%GIT_BASH_PATH%" "%SCRIPT_DIR%forge.sh" %*
|
|
82
|
+
|
|
83
|
+
endlocal
|