@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.
Files changed (201) hide show
  1. package/.claude/commands/clear-attention.md +63 -0
  2. package/.claude/commands/compact-context.md +52 -0
  3. package/.claude/commands/configure-vcs.md +102 -0
  4. package/.claude/commands/forge.md +171 -0
  5. package/.claude/commands/need-help.md +77 -0
  6. package/.claude/commands/update-status.md +64 -0
  7. package/.claude/commands/worker-loop.md +106 -0
  8. package/.claude/hooks/worker-loop.js +198 -0
  9. package/.claude/scripts/setup-worker-loop.sh +45 -0
  10. package/.claude/settings.local.json +46 -0
  11. package/LICENSE +21 -0
  12. package/README.md +238 -0
  13. package/agents/aegis/personality.md +294 -0
  14. package/agents/anvil/personality.md +276 -0
  15. package/agents/architect/personality.md +258 -0
  16. package/agents/crucible/personality.md +360 -0
  17. package/agents/ember/personality.md +291 -0
  18. package/agents/forge-master/capabilities.md +144 -0
  19. package/agents/forge-master/context-template.md +128 -0
  20. package/agents/forge-master/personality.md +138 -0
  21. package/agents/furnace/personality.md +340 -0
  22. package/agents/herald/personality.md +247 -0
  23. package/agents/loki/personality.md +108 -0
  24. package/agents/oracle/personality.md +283 -0
  25. package/agents/pixel/personality.md +113 -0
  26. package/agents/planning-hub/personality.md +320 -0
  27. package/agents/scribe/personality.md +251 -0
  28. package/agents/temper/personality.md +218 -0
  29. package/bin/cli.js +375 -0
  30. package/bin/dashboard/api/agents.js +333 -0
  31. package/bin/dashboard/api/dispatch.js +483 -0
  32. package/bin/dashboard/api/tasks.js +416 -0
  33. package/bin/dashboard/frontend/index.html +13 -0
  34. package/bin/dashboard/frontend/package.json +16 -0
  35. package/bin/dashboard/frontend/src/App.svelte +222 -0
  36. package/bin/dashboard/frontend/src/app.css +1777 -0
  37. package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
  38. package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
  39. package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
  40. package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
  41. package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
  42. package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
  43. package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
  44. package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
  45. package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
  46. package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
  47. package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
  48. package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
  49. package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
  50. package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
  51. package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
  52. package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
  53. package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
  54. package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
  55. package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
  56. package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
  57. package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
  58. package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
  59. package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
  60. package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
  61. package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
  62. package/bin/dashboard/frontend/src/main.js +9 -0
  63. package/bin/dashboard/frontend/svelte.config.js +5 -0
  64. package/bin/dashboard/frontend/vite.config.js +20 -0
  65. package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
  66. package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
  67. package/bin/dashboard/public/index.html +14 -0
  68. package/bin/dashboard/server.js +566 -0
  69. package/bin/forge-daemon.sh +463 -0
  70. package/bin/forge-setup.sh +645 -0
  71. package/bin/forge-spawn.sh +164 -0
  72. package/bin/forge.cmd +83 -0
  73. package/bin/forge.sh +533 -0
  74. package/bin/lib/agents.sh +177 -0
  75. package/bin/lib/colors.sh +44 -0
  76. package/bin/lib/config.sh +347 -0
  77. package/bin/lib/constants.sh +241 -0
  78. package/bin/lib/daemon/display.sh +128 -0
  79. package/bin/lib/daemon/notifications.sh +263 -0
  80. package/bin/lib/daemon/routing.sh +77 -0
  81. package/bin/lib/daemon/state.sh +115 -0
  82. package/bin/lib/daemon/sync.sh +95 -0
  83. package/bin/lib/database.sh +310 -0
  84. package/bin/lib/heimdall-setup.js +113 -0
  85. package/bin/lib/heimdall.js +265 -0
  86. package/bin/lib/json.sh +264 -0
  87. package/bin/lib/terminal.js +451 -0
  88. package/bin/lib/util.sh +126 -0
  89. package/bin/lib/vcs.js +349 -0
  90. package/config/agent-manifest.yaml +203 -0
  91. package/config/agents.json +168 -0
  92. package/config/task-template.md +159 -0
  93. package/config/task-types.yaml +106 -0
  94. package/context/agent-status/aegis.json +7 -0
  95. package/context/agent-status/anvil.json +7 -0
  96. package/context/agent-status/architect.json +7 -0
  97. package/context/agent-status/crucible.json +7 -0
  98. package/context/agent-status/ember.json +7 -0
  99. package/context/agent-status/furnace.json +7 -0
  100. package/context/agent-status/loki.json +7 -0
  101. package/context/agent-status/oracle.json +7 -0
  102. package/context/agent-status/pixel.json +7 -0
  103. package/context/agent-status/planning-hub.json +7 -0
  104. package/context/agent-status/scribe.json +7 -0
  105. package/context/agent-status/temper.json +7 -0
  106. package/context/feature-brainstorm.md +426 -0
  107. package/context/forge-state.yaml +19 -0
  108. package/context/modern-conventions.md +129 -0
  109. package/context/project-context-template.md +122 -0
  110. package/context/project-context.md +122 -0
  111. package/docs/TODO.md +150 -0
  112. package/docs/agents.md +409 -0
  113. package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
  114. package/docs/architecture/vibe-lab-integration.md +684 -0
  115. package/docs/architecture.md +194 -0
  116. package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
  117. package/docs/cleanup-workflow.md +329 -0
  118. package/docs/commands.md +451 -0
  119. package/docs/dashboard-mockup.html +989 -0
  120. package/docs/getting-started.md +261 -0
  121. package/docs/integration/forge-ownership-policy.md +112 -0
  122. package/docs/npm-publishing.md +132 -0
  123. package/docs/roadmap-2026.md +519 -0
  124. package/docs/security.md +144 -0
  125. package/docs/wireframes/dashboard-mvp.md +1164 -0
  126. package/docs/workflows/README.md +32 -0
  127. package/docs/workflows/azure-devops.md +108 -0
  128. package/docs/workflows/bitbucket.md +104 -0
  129. package/docs/workflows/git-only.md +130 -0
  130. package/docs/workflows/gitea.md +168 -0
  131. package/docs/workflows/github.md +103 -0
  132. package/docs/workflows/gitlab.md +105 -0
  133. package/docs/workflows.md +454 -0
  134. package/package.json +73 -0
  135. package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
  136. package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
  137. package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
  138. package/tasks/completed/ARCH-009-test-organization.md +78 -0
  139. package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
  140. package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
  141. package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
  142. package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
  143. package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
  144. package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
  145. package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
  146. package/tasks/completed/CLEAN-001.md +38 -0
  147. package/tasks/completed/CLEAN-002.md +43 -0
  148. package/tasks/completed/CLEAN-003.md +47 -0
  149. package/tasks/completed/CLEAN-004.md +56 -0
  150. package/tasks/completed/CLEAN-005.md +75 -0
  151. package/tasks/completed/CLEAN-006.md +47 -0
  152. package/tasks/completed/CLEAN-007.md +34 -0
  153. package/tasks/completed/CLEAN-008.md +49 -0
  154. package/tasks/completed/CLEAN-012.md +58 -0
  155. package/tasks/completed/CLEAN-013.md +45 -0
  156. package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
  157. package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
  158. package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
  159. package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
  160. package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
  161. package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
  162. package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
  163. package/tasks/completed/PLAT-1-heimdall.md +420 -0
  164. package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
  165. package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
  166. package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
  167. package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
  168. package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
  169. package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
  170. package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
  171. package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
  172. package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
  173. package/tasks/completed/review-bmad-aegis.md +89 -0
  174. package/tasks/completed/review-bmad-anvil.md +80 -0
  175. package/tasks/completed/review-bmad-crucible.md +81 -0
  176. package/tasks/completed/review-bmad-ember.md +90 -0
  177. package/tasks/completed/review-bmad-furnace.md +79 -0
  178. package/tasks/completed/review-bmad-pixel.md +82 -0
  179. package/tasks/completed/review-bmad-scribe.md +92 -0
  180. package/tasks/completed/review-bmad-sentinel.md +83 -0
  181. package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
  182. package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
  183. package/tasks/pending/ARCH-006-task-template-location.md +64 -0
  184. package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
  185. package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
  186. package/tasks/pending/CLEAN-009.md +31 -0
  187. package/tasks/pending/CLEAN-010.md +30 -0
  188. package/tasks/pending/CLEAN-011.md +30 -0
  189. package/tasks/pending/CLEAN-014.md +32 -0
  190. package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
  191. package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
  192. package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
  193. package/tasks/review/bmad-review-aegis.md +349 -0
  194. package/tasks/review/bmad-review-anvil.md +259 -0
  195. package/tasks/review/bmad-review-crucible.md +277 -0
  196. package/tasks/review/bmad-review-ember.md +307 -0
  197. package/tasks/review/bmad-review-furnace.md +285 -0
  198. package/tasks/review/bmad-review-pixel.md +329 -0
  199. package/tasks/review/bmad-review-scribe.md +361 -0
  200. package/tasks/review/bmad-review-sentinel.md +242 -0
  201. 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