vibe-forge 0.8.1 → 0.8.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.
- package/.claude/commands/configure-vcs.md +102 -102
- package/.claude/commands/forge.md +218 -218
- package/.claude/hooks/worker-loop.js +220 -217
- package/.claude/settings.json +89 -89
- package/README.md +149 -191
- package/agents/aegis/personality.md +303 -303
- package/agents/anvil/personality.md +278 -278
- package/agents/architect/personality.md +260 -260
- package/agents/crucible/personality.md +362 -362
- package/agents/crucible-x/personality.md +210 -210
- package/agents/ember/personality.md +293 -293
- package/agents/flux/personality.md +248 -248
- package/agents/furnace/personality.md +342 -342
- package/agents/herald/personality.md +249 -249
- package/agents/oracle/personality.md +284 -284
- package/agents/pixel/personality.md +140 -140
- package/agents/planning-hub/personality.md +473 -473
- package/agents/scribe/personality.md +253 -253
- package/agents/slag/personality.md +268 -268
- package/agents/temper/personality.md +270 -270
- package/bin/cli.js +372 -372
- package/bin/forge-daemon.sh +477 -477
- package/bin/forge-setup.sh +662 -661
- package/bin/forge-spawn.sh +164 -164
- package/bin/forge.sh +566 -566
- package/docs/commands.md +8 -8
- package/package.json +77 -77
- package/{bin → src}/lib/agents.sh +177 -177
- package/{bin → src}/lib/check-aliases.js +50 -50
- package/{bin → src}/lib/colors.sh +45 -44
- package/{bin → src}/lib/config.sh +347 -347
- package/{bin → src}/lib/constants.sh +241 -241
- package/{bin → src}/lib/daemon/budgets.sh +107 -107
- package/{bin → src}/lib/daemon/dependencies.sh +146 -146
- package/{bin → src}/lib/daemon/display.sh +128 -128
- package/{bin → src}/lib/daemon/notifications.sh +273 -273
- package/{bin → src}/lib/daemon/routing.sh +93 -93
- package/{bin → src}/lib/daemon/state.sh +163 -163
- package/{bin → src}/lib/daemon/sync.sh +103 -103
- package/{bin → src}/lib/database.sh +357 -357
- package/{bin → src}/lib/frontmatter.js +106 -106
- package/{bin → src}/lib/heimdall-setup.js +113 -113
- package/{bin → src}/lib/heimdall.js +265 -265
- package/src/lib/index.sh +25 -0
- package/{bin → src}/lib/json.sh +264 -264
- package/{bin → src}/lib/terminal.js +452 -452
- package/{bin → src}/lib/util.sh +126 -126
- package/{bin → src}/lib/vcs.js +349 -349
- package/{context → templates}/project-context-template.md +122 -122
- package/config/task-template.md +0 -159
- package/config/templates/handoff-template.md +0 -40
|
@@ -1,241 +1,241 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# Vibe Forge - Shared Constants
|
|
4
|
-
# Source this file in other scripts: source "$SCRIPT_DIR/lib/constants.sh"
|
|
5
|
-
#
|
|
6
|
-
# NOTE: Agent configuration should be loaded from config/agents.json via
|
|
7
|
-
# load_agents_from_json() in config.sh. The hardcoded values below are
|
|
8
|
-
# fallback defaults for when JSON loading is not possible (e.g., tests).
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
# =============================================================================
|
|
12
|
-
# Exit Codes
|
|
13
|
-
# =============================================================================
|
|
14
|
-
# Standardized exit codes for consistent error handling across scripts
|
|
15
|
-
# Based on BSD sysexits.h conventions with project-specific additions
|
|
16
|
-
|
|
17
|
-
EXIT_SUCCESS=0 # Successful execution
|
|
18
|
-
EXIT_GENERAL_ERROR=1 # Generic/unspecified error
|
|
19
|
-
EXIT_CONFIG_ERROR=2 # Configuration file missing/invalid
|
|
20
|
-
EXIT_DEPENDENCY_MISSING=3 # Required dependency not found (Claude Code, Git Bash, etc.)
|
|
21
|
-
EXIT_INVALID_ARGUMENT=4 # Invalid argument (unknown agent, unknown command)
|
|
22
|
-
EXIT_RUNTIME_ERROR=5 # Runtime error (daemon conflict, spawn failed, etc.)
|
|
23
|
-
|
|
24
|
-
# Timing
|
|
25
|
-
POLL_INTERVAL=2 # seconds between daemon task checks
|
|
26
|
-
NOTIFICATION_DEBOUNCE=1 # seconds to avoid notification spam
|
|
27
|
-
|
|
28
|
-
# Daemon Configuration
|
|
29
|
-
MAX_LOG_SIZE=1048576 # 1MB - log rotation threshold
|
|
30
|
-
MAX_NOTIFY_ENTRIES=1000 # Maximum notification log entries before trimming
|
|
31
|
-
STALE_STATUS_THRESHOLD=300 # 5 minutes - when worker status is considered stale
|
|
32
|
-
MAINTENANCE_INTERVAL=100 # Daemon iterations between maintenance runs
|
|
33
|
-
STALE_CLEANUP_MINUTES=30 # Remove agent status older than this (minutes)
|
|
34
|
-
HISTORY_PRUNE_DAYS=7 # Remove status history older than this (days)
|
|
35
|
-
|
|
36
|
-
# Directory structure (relative to FORGE_ROOT)
|
|
37
|
-
CONFIG_DIR=".forge"
|
|
38
|
-
TASKS_DIR="tasks"
|
|
39
|
-
TASKS_PENDING="$TASKS_DIR/pending"
|
|
40
|
-
TASKS_IN_PROGRESS="$TASKS_DIR/in-progress"
|
|
41
|
-
TASKS_COMPLETED="$TASKS_DIR/completed"
|
|
42
|
-
TASKS_REVIEW="$TASKS_DIR/review"
|
|
43
|
-
TASKS_APPROVED="$TASKS_DIR/approved"
|
|
44
|
-
TASKS_NEEDS_CHANGES="$TASKS_DIR/needs-changes"
|
|
45
|
-
TASKS_MERGED="$TASKS_DIR/merged"
|
|
46
|
-
TASKS_ATTENTION="$TASKS_DIR/attention"
|
|
47
|
-
CONTEXT_DIR="context"
|
|
48
|
-
AGENT_STATUS_DIR="$CONTEXT_DIR/agent-status"
|
|
49
|
-
AGENTS_DIR="agents"
|
|
50
|
-
|
|
51
|
-
# Config files
|
|
52
|
-
AGENTS_CONFIG="config/agents.json"
|
|
53
|
-
|
|
54
|
-
# =============================================================================
|
|
55
|
-
# Agent Configuration (Fallback Defaults)
|
|
56
|
-
# =============================================================================
|
|
57
|
-
# These values are overwritten when load_agents_from_json() is called.
|
|
58
|
-
# They exist as fallback for contexts where JSON loading isn't available.
|
|
59
|
-
|
|
60
|
-
# Flag to track if agents were loaded from JSON
|
|
61
|
-
AGENTS_LOADED="${AGENTS_LOADED:-false}"
|
|
62
|
-
|
|
63
|
-
# Valid agent names (whitelist for security)
|
|
64
|
-
# These are the ONLY valid canonical agent names
|
|
65
|
-
# NOTE: Must stay in sync with config/agents.json (which is the source of truth)
|
|
66
|
-
# Last sync: 2026-04-03 (added loki, renamed sentinel→temper)
|
|
67
|
-
VALID_AGENTS=(
|
|
68
|
-
"hub"
|
|
69
|
-
"temper"
|
|
70
|
-
"anvil"
|
|
71
|
-
"furnace"
|
|
72
|
-
"crucible"
|
|
73
|
-
"scribe"
|
|
74
|
-
"herald"
|
|
75
|
-
"ember"
|
|
76
|
-
"aegis"
|
|
77
|
-
"architect"
|
|
78
|
-
"pixel"
|
|
79
|
-
"oracle"
|
|
80
|
-
"loki"
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
# Agent aliases map (for resolve_agent)
|
|
84
|
-
# Format: alias=canonical
|
|
85
|
-
# NOTE: Must stay in sync with config/agents.json (which is the source of truth)
|
|
86
|
-
declare -A AGENT_ALIASES=(
|
|
87
|
-
# Hub aliases (Chief Orchestrator)
|
|
88
|
-
["hub"]="hub"
|
|
89
|
-
["planning"]="hub"
|
|
90
|
-
["master"]="hub"
|
|
91
|
-
["forge-master"]="hub"
|
|
92
|
-
# Temper aliases (Code Reviewer)
|
|
93
|
-
["temper"]="temper"
|
|
94
|
-
["review"]="temper"
|
|
95
|
-
["reviewer"]="temper"
|
|
96
|
-
["cr"]="temper"
|
|
97
|
-
# Anvil aliases (Frontend)
|
|
98
|
-
["anvil"]="anvil"
|
|
99
|
-
["frontend"]="anvil"
|
|
100
|
-
["ui"]="anvil"
|
|
101
|
-
["fe"]="anvil"
|
|
102
|
-
# Furnace aliases (Backend)
|
|
103
|
-
["furnace"]="furnace"
|
|
104
|
-
["backend"]="furnace"
|
|
105
|
-
["api"]="furnace"
|
|
106
|
-
["be"]="furnace"
|
|
107
|
-
# Crucible aliases (Testing)
|
|
108
|
-
["crucible"]="crucible"
|
|
109
|
-
["test"]="crucible"
|
|
110
|
-
["testing"]="crucible"
|
|
111
|
-
["qa"]="crucible"
|
|
112
|
-
["tester"]="crucible"
|
|
113
|
-
# Scribe aliases (Documentation)
|
|
114
|
-
["scribe"]="scribe"
|
|
115
|
-
["docs"]="scribe"
|
|
116
|
-
["documentation"]="scribe"
|
|
117
|
-
["doc"]="scribe"
|
|
118
|
-
# Herald aliases (Release)
|
|
119
|
-
["herald"]="herald"
|
|
120
|
-
["release"]="herald"
|
|
121
|
-
["deploy"]="herald"
|
|
122
|
-
["deployment"]="herald"
|
|
123
|
-
# Ember aliases (DevOps)
|
|
124
|
-
["ember"]="ember"
|
|
125
|
-
["devops"]="ember"
|
|
126
|
-
["ops"]="ember"
|
|
127
|
-
["infra"]="ember"
|
|
128
|
-
["infrastructure"]="ember"
|
|
129
|
-
# Aegis aliases (Security)
|
|
130
|
-
["aegis"]="aegis"
|
|
131
|
-
["security"]="aegis"
|
|
132
|
-
["sec"]="aegis"
|
|
133
|
-
["appsec"]="aegis"
|
|
134
|
-
# Architect aliases (System Design)
|
|
135
|
-
["architect"]="architect"
|
|
136
|
-
["arch"]="architect"
|
|
137
|
-
["sage"]="architect"
|
|
138
|
-
# Pixel aliases (UX Design)
|
|
139
|
-
# NOTE: "design" intentionally removed — ambiguous with architect's technical design domain
|
|
140
|
-
["pixel"]="pixel"
|
|
141
|
-
["ux"]="pixel"
|
|
142
|
-
["ui-design"]="pixel"
|
|
143
|
-
["user-experience"]="pixel"
|
|
144
|
-
# Oracle aliases (Product / Requirements)
|
|
145
|
-
["oracle"]="oracle"
|
|
146
|
-
["product"]="oracle"
|
|
147
|
-
["po"]="oracle"
|
|
148
|
-
["requirements"]="oracle"
|
|
149
|
-
["req"]="oracle"
|
|
150
|
-
["analyst"]="oracle"
|
|
151
|
-
# Loki aliases (Lateral Thinker)
|
|
152
|
-
["loki"]="loki"
|
|
153
|
-
["trickster"]="loki"
|
|
154
|
-
["contrarian"]="loki"
|
|
155
|
-
["brainstorm"]="loki"
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
# Agent display names
|
|
159
|
-
declare -A AGENT_DISPLAY_NAMES=(
|
|
160
|
-
["hub"]="Planning Hub"
|
|
161
|
-
["temper"]="Temper"
|
|
162
|
-
["anvil"]="Anvil"
|
|
163
|
-
["furnace"]="Furnace"
|
|
164
|
-
["crucible"]="Crucible"
|
|
165
|
-
["scribe"]="Scribe"
|
|
166
|
-
["herald"]="Herald"
|
|
167
|
-
["ember"]="Ember"
|
|
168
|
-
["aegis"]="Aegis"
|
|
169
|
-
["architect"]="Architect"
|
|
170
|
-
["pixel"]="Pixel"
|
|
171
|
-
["oracle"]="Oracle"
|
|
172
|
-
["loki"]="Loki"
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
# Agent roles
|
|
176
|
-
declare -A AGENT_ROLES=(
|
|
177
|
-
["hub"]="Chief Orchestrator"
|
|
178
|
-
["temper"]="Code Reviewer"
|
|
179
|
-
["anvil"]="Frontend Developer"
|
|
180
|
-
["furnace"]="Backend Developer"
|
|
181
|
-
["crucible"]="Tester / QA"
|
|
182
|
-
["scribe"]="Documentation Specialist"
|
|
183
|
-
["herald"]="Release Manager"
|
|
184
|
-
["ember"]="DevOps Engineer"
|
|
185
|
-
["aegis"]="Security Specialist"
|
|
186
|
-
["architect"]="System Architect"
|
|
187
|
-
["pixel"]="UX Designer"
|
|
188
|
-
["oracle"]="Product Owner / Requirements Analyst"
|
|
189
|
-
["loki"]="Lateral Thinker"
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
# Agent personality files (relative to FORGE_ROOT)
|
|
193
|
-
declare -A AGENT_PERSONALITY_FILES=(
|
|
194
|
-
["hub"]="agents/planning-hub/personality.md"
|
|
195
|
-
["temper"]="agents/temper/personality.md"
|
|
196
|
-
["anvil"]="agents/anvil/personality.md"
|
|
197
|
-
["furnace"]="agents/furnace/personality.md"
|
|
198
|
-
["crucible"]="agents/crucible/personality.md"
|
|
199
|
-
["scribe"]="agents/scribe/personality.md"
|
|
200
|
-
["herald"]="agents/herald/personality.md"
|
|
201
|
-
["ember"]="agents/ember/personality.md"
|
|
202
|
-
["aegis"]="agents/aegis/personality.md"
|
|
203
|
-
["architect"]="agents/architect/personality.md"
|
|
204
|
-
["pixel"]="agents/pixel/personality.md"
|
|
205
|
-
["oracle"]="agents/oracle/personality.md"
|
|
206
|
-
["loki"]="agents/loki/personality.md"
|
|
207
|
-
)
|
|
208
|
-
|
|
209
|
-
# Agent icons
|
|
210
|
-
declare -A AGENT_ICONS=(
|
|
211
|
-
["hub"]="⚒️"
|
|
212
|
-
["temper"]="⚖️"
|
|
213
|
-
["anvil"]="🔨"
|
|
214
|
-
["furnace"]="🔥"
|
|
215
|
-
["crucible"]="🧪"
|
|
216
|
-
["scribe"]="📜"
|
|
217
|
-
["herald"]="📯"
|
|
218
|
-
["ember"]="⚙️"
|
|
219
|
-
["aegis"]="🔒"
|
|
220
|
-
["architect"]="🏛️"
|
|
221
|
-
["pixel"]="🎨"
|
|
222
|
-
["oracle"]="🔮"
|
|
223
|
-
["loki"]="🎭"
|
|
224
|
-
)
|
|
225
|
-
|
|
226
|
-
# Agent tab colors for Windows Terminal (hex format)
|
|
227
|
-
declare -A AGENT_TAB_COLORS=(
|
|
228
|
-
["hub"]="#FF6B35"
|
|
229
|
-
["temper"]="#8B5CF6"
|
|
230
|
-
["anvil"]="#3B82F6"
|
|
231
|
-
["furnace"]="#EF4444"
|
|
232
|
-
["crucible"]="#10B981"
|
|
233
|
-
["scribe"]="#F59E0B"
|
|
234
|
-
["herald"]="#EC4899"
|
|
235
|
-
["ember"]="#F97316"
|
|
236
|
-
["aegis"]="#06B6D4"
|
|
237
|
-
["architect"]="#6366F1"
|
|
238
|
-
["pixel"]="#D946EF"
|
|
239
|
-
["oracle"]="#FBBF24"
|
|
240
|
-
["loki"]="#7C3AED"
|
|
241
|
-
)
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Vibe Forge - Shared Constants
|
|
4
|
+
# Source this file in other scripts: source "$SCRIPT_DIR/lib/constants.sh"
|
|
5
|
+
#
|
|
6
|
+
# NOTE: Agent configuration should be loaded from config/agents.json via
|
|
7
|
+
# load_agents_from_json() in config.sh. The hardcoded values below are
|
|
8
|
+
# fallback defaults for when JSON loading is not possible (e.g., tests).
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
# =============================================================================
|
|
12
|
+
# Exit Codes
|
|
13
|
+
# =============================================================================
|
|
14
|
+
# Standardized exit codes for consistent error handling across scripts
|
|
15
|
+
# Based on BSD sysexits.h conventions with project-specific additions
|
|
16
|
+
|
|
17
|
+
EXIT_SUCCESS=0 # Successful execution
|
|
18
|
+
EXIT_GENERAL_ERROR=1 # Generic/unspecified error
|
|
19
|
+
EXIT_CONFIG_ERROR=2 # Configuration file missing/invalid
|
|
20
|
+
EXIT_DEPENDENCY_MISSING=3 # Required dependency not found (Claude Code, Git Bash, etc.)
|
|
21
|
+
EXIT_INVALID_ARGUMENT=4 # Invalid argument (unknown agent, unknown command)
|
|
22
|
+
EXIT_RUNTIME_ERROR=5 # Runtime error (daemon conflict, spawn failed, etc.)
|
|
23
|
+
|
|
24
|
+
# Timing
|
|
25
|
+
POLL_INTERVAL=2 # seconds between daemon task checks
|
|
26
|
+
NOTIFICATION_DEBOUNCE=1 # seconds to avoid notification spam
|
|
27
|
+
|
|
28
|
+
# Daemon Configuration
|
|
29
|
+
MAX_LOG_SIZE=1048576 # 1MB - log rotation threshold
|
|
30
|
+
MAX_NOTIFY_ENTRIES=1000 # Maximum notification log entries before trimming
|
|
31
|
+
STALE_STATUS_THRESHOLD=300 # 5 minutes - when worker status is considered stale
|
|
32
|
+
MAINTENANCE_INTERVAL=100 # Daemon iterations between maintenance runs
|
|
33
|
+
STALE_CLEANUP_MINUTES=30 # Remove agent status older than this (minutes)
|
|
34
|
+
HISTORY_PRUNE_DAYS=7 # Remove status history older than this (days)
|
|
35
|
+
|
|
36
|
+
# Directory structure (relative to FORGE_ROOT)
|
|
37
|
+
CONFIG_DIR=".forge"
|
|
38
|
+
TASKS_DIR="tasks"
|
|
39
|
+
TASKS_PENDING="$TASKS_DIR/pending"
|
|
40
|
+
TASKS_IN_PROGRESS="$TASKS_DIR/in-progress"
|
|
41
|
+
TASKS_COMPLETED="$TASKS_DIR/completed"
|
|
42
|
+
TASKS_REVIEW="$TASKS_DIR/review"
|
|
43
|
+
TASKS_APPROVED="$TASKS_DIR/approved"
|
|
44
|
+
TASKS_NEEDS_CHANGES="$TASKS_DIR/needs-changes"
|
|
45
|
+
TASKS_MERGED="$TASKS_DIR/merged"
|
|
46
|
+
TASKS_ATTENTION="$TASKS_DIR/attention"
|
|
47
|
+
CONTEXT_DIR="context"
|
|
48
|
+
AGENT_STATUS_DIR="$CONTEXT_DIR/agent-status"
|
|
49
|
+
AGENTS_DIR="agents"
|
|
50
|
+
|
|
51
|
+
# Config files
|
|
52
|
+
AGENTS_CONFIG="config/agents.json"
|
|
53
|
+
|
|
54
|
+
# =============================================================================
|
|
55
|
+
# Agent Configuration (Fallback Defaults)
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# These values are overwritten when load_agents_from_json() is called.
|
|
58
|
+
# They exist as fallback for contexts where JSON loading isn't available.
|
|
59
|
+
|
|
60
|
+
# Flag to track if agents were loaded from JSON
|
|
61
|
+
AGENTS_LOADED="${AGENTS_LOADED:-false}"
|
|
62
|
+
|
|
63
|
+
# Valid agent names (whitelist for security)
|
|
64
|
+
# These are the ONLY valid canonical agent names
|
|
65
|
+
# NOTE: Must stay in sync with config/agents.json (which is the source of truth)
|
|
66
|
+
# Last sync: 2026-04-03 (added loki, renamed sentinel→temper)
|
|
67
|
+
VALID_AGENTS=(
|
|
68
|
+
"hub"
|
|
69
|
+
"temper"
|
|
70
|
+
"anvil"
|
|
71
|
+
"furnace"
|
|
72
|
+
"crucible"
|
|
73
|
+
"scribe"
|
|
74
|
+
"herald"
|
|
75
|
+
"ember"
|
|
76
|
+
"aegis"
|
|
77
|
+
"architect"
|
|
78
|
+
"pixel"
|
|
79
|
+
"oracle"
|
|
80
|
+
"loki"
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# Agent aliases map (for resolve_agent)
|
|
84
|
+
# Format: alias=canonical
|
|
85
|
+
# NOTE: Must stay in sync with config/agents.json (which is the source of truth)
|
|
86
|
+
declare -A AGENT_ALIASES=(
|
|
87
|
+
# Hub aliases (Chief Orchestrator)
|
|
88
|
+
["hub"]="hub"
|
|
89
|
+
["planning"]="hub"
|
|
90
|
+
["master"]="hub"
|
|
91
|
+
["forge-master"]="hub"
|
|
92
|
+
# Temper aliases (Code Reviewer)
|
|
93
|
+
["temper"]="temper"
|
|
94
|
+
["review"]="temper"
|
|
95
|
+
["reviewer"]="temper"
|
|
96
|
+
["cr"]="temper"
|
|
97
|
+
# Anvil aliases (Frontend)
|
|
98
|
+
["anvil"]="anvil"
|
|
99
|
+
["frontend"]="anvil"
|
|
100
|
+
["ui"]="anvil"
|
|
101
|
+
["fe"]="anvil"
|
|
102
|
+
# Furnace aliases (Backend)
|
|
103
|
+
["furnace"]="furnace"
|
|
104
|
+
["backend"]="furnace"
|
|
105
|
+
["api"]="furnace"
|
|
106
|
+
["be"]="furnace"
|
|
107
|
+
# Crucible aliases (Testing)
|
|
108
|
+
["crucible"]="crucible"
|
|
109
|
+
["test"]="crucible"
|
|
110
|
+
["testing"]="crucible"
|
|
111
|
+
["qa"]="crucible"
|
|
112
|
+
["tester"]="crucible"
|
|
113
|
+
# Scribe aliases (Documentation)
|
|
114
|
+
["scribe"]="scribe"
|
|
115
|
+
["docs"]="scribe"
|
|
116
|
+
["documentation"]="scribe"
|
|
117
|
+
["doc"]="scribe"
|
|
118
|
+
# Herald aliases (Release)
|
|
119
|
+
["herald"]="herald"
|
|
120
|
+
["release"]="herald"
|
|
121
|
+
["deploy"]="herald"
|
|
122
|
+
["deployment"]="herald"
|
|
123
|
+
# Ember aliases (DevOps)
|
|
124
|
+
["ember"]="ember"
|
|
125
|
+
["devops"]="ember"
|
|
126
|
+
["ops"]="ember"
|
|
127
|
+
["infra"]="ember"
|
|
128
|
+
["infrastructure"]="ember"
|
|
129
|
+
# Aegis aliases (Security)
|
|
130
|
+
["aegis"]="aegis"
|
|
131
|
+
["security"]="aegis"
|
|
132
|
+
["sec"]="aegis"
|
|
133
|
+
["appsec"]="aegis"
|
|
134
|
+
# Architect aliases (System Design)
|
|
135
|
+
["architect"]="architect"
|
|
136
|
+
["arch"]="architect"
|
|
137
|
+
["sage"]="architect"
|
|
138
|
+
# Pixel aliases (UX Design)
|
|
139
|
+
# NOTE: "design" intentionally removed — ambiguous with architect's technical design domain
|
|
140
|
+
["pixel"]="pixel"
|
|
141
|
+
["ux"]="pixel"
|
|
142
|
+
["ui-design"]="pixel"
|
|
143
|
+
["user-experience"]="pixel"
|
|
144
|
+
# Oracle aliases (Product / Requirements)
|
|
145
|
+
["oracle"]="oracle"
|
|
146
|
+
["product"]="oracle"
|
|
147
|
+
["po"]="oracle"
|
|
148
|
+
["requirements"]="oracle"
|
|
149
|
+
["req"]="oracle"
|
|
150
|
+
["analyst"]="oracle"
|
|
151
|
+
# Loki aliases (Lateral Thinker)
|
|
152
|
+
["loki"]="loki"
|
|
153
|
+
["trickster"]="loki"
|
|
154
|
+
["contrarian"]="loki"
|
|
155
|
+
["brainstorm"]="loki"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
# Agent display names
|
|
159
|
+
declare -A AGENT_DISPLAY_NAMES=(
|
|
160
|
+
["hub"]="Planning Hub"
|
|
161
|
+
["temper"]="Temper"
|
|
162
|
+
["anvil"]="Anvil"
|
|
163
|
+
["furnace"]="Furnace"
|
|
164
|
+
["crucible"]="Crucible"
|
|
165
|
+
["scribe"]="Scribe"
|
|
166
|
+
["herald"]="Herald"
|
|
167
|
+
["ember"]="Ember"
|
|
168
|
+
["aegis"]="Aegis"
|
|
169
|
+
["architect"]="Architect"
|
|
170
|
+
["pixel"]="Pixel"
|
|
171
|
+
["oracle"]="Oracle"
|
|
172
|
+
["loki"]="Loki"
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
# Agent roles
|
|
176
|
+
declare -A AGENT_ROLES=(
|
|
177
|
+
["hub"]="Chief Orchestrator"
|
|
178
|
+
["temper"]="Code Reviewer"
|
|
179
|
+
["anvil"]="Frontend Developer"
|
|
180
|
+
["furnace"]="Backend Developer"
|
|
181
|
+
["crucible"]="Tester / QA"
|
|
182
|
+
["scribe"]="Documentation Specialist"
|
|
183
|
+
["herald"]="Release Manager"
|
|
184
|
+
["ember"]="DevOps Engineer"
|
|
185
|
+
["aegis"]="Security Specialist"
|
|
186
|
+
["architect"]="System Architect"
|
|
187
|
+
["pixel"]="UX Designer"
|
|
188
|
+
["oracle"]="Product Owner / Requirements Analyst"
|
|
189
|
+
["loki"]="Lateral Thinker"
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
# Agent personality files (relative to FORGE_ROOT)
|
|
193
|
+
declare -A AGENT_PERSONALITY_FILES=(
|
|
194
|
+
["hub"]="agents/planning-hub/personality.md"
|
|
195
|
+
["temper"]="agents/temper/personality.md"
|
|
196
|
+
["anvil"]="agents/anvil/personality.md"
|
|
197
|
+
["furnace"]="agents/furnace/personality.md"
|
|
198
|
+
["crucible"]="agents/crucible/personality.md"
|
|
199
|
+
["scribe"]="agents/scribe/personality.md"
|
|
200
|
+
["herald"]="agents/herald/personality.md"
|
|
201
|
+
["ember"]="agents/ember/personality.md"
|
|
202
|
+
["aegis"]="agents/aegis/personality.md"
|
|
203
|
+
["architect"]="agents/architect/personality.md"
|
|
204
|
+
["pixel"]="agents/pixel/personality.md"
|
|
205
|
+
["oracle"]="agents/oracle/personality.md"
|
|
206
|
+
["loki"]="agents/loki/personality.md"
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
# Agent icons
|
|
210
|
+
declare -A AGENT_ICONS=(
|
|
211
|
+
["hub"]="⚒️"
|
|
212
|
+
["temper"]="⚖️"
|
|
213
|
+
["anvil"]="🔨"
|
|
214
|
+
["furnace"]="🔥"
|
|
215
|
+
["crucible"]="🧪"
|
|
216
|
+
["scribe"]="📜"
|
|
217
|
+
["herald"]="📯"
|
|
218
|
+
["ember"]="⚙️"
|
|
219
|
+
["aegis"]="🔒"
|
|
220
|
+
["architect"]="🏛️"
|
|
221
|
+
["pixel"]="🎨"
|
|
222
|
+
["oracle"]="🔮"
|
|
223
|
+
["loki"]="🎭"
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
# Agent tab colors for Windows Terminal (hex format)
|
|
227
|
+
declare -A AGENT_TAB_COLORS=(
|
|
228
|
+
["hub"]="#FF6B35"
|
|
229
|
+
["temper"]="#8B5CF6"
|
|
230
|
+
["anvil"]="#3B82F6"
|
|
231
|
+
["furnace"]="#EF4444"
|
|
232
|
+
["crucible"]="#10B981"
|
|
233
|
+
["scribe"]="#F59E0B"
|
|
234
|
+
["herald"]="#EC4899"
|
|
235
|
+
["ember"]="#F97316"
|
|
236
|
+
["aegis"]="#06B6D4"
|
|
237
|
+
["architect"]="#6366F1"
|
|
238
|
+
["pixel"]="#D946EF"
|
|
239
|
+
["oracle"]="#FBBF24"
|
|
240
|
+
["loki"]="#7C3AED"
|
|
241
|
+
)
|