strray-ai 1.7.2 → 1.7.3

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 (189) hide show
  1. package/.opencode/hooks/post-commit +152 -55
  2. package/.opencode/hooks/post-commit.backup +110 -174
  3. package/.opencode/hooks/post-push +47 -64
  4. package/.opencode/hooks/post-push.backup +34 -38
  5. package/.opencode/strray/features.json +3 -3
  6. package/.opencode/strray/routing-mappings.json +90 -34
  7. package/AGENTS.md +7 -2
  8. package/dist/analytics/anonymization-engine.d.ts +108 -0
  9. package/dist/analytics/anonymization-engine.d.ts.map +1 -0
  10. package/dist/analytics/anonymization-engine.js +352 -0
  11. package/dist/analytics/anonymization-engine.js.map +1 -0
  12. package/dist/analytics/consent-manager.d.ts +94 -0
  13. package/dist/analytics/consent-manager.d.ts.map +1 -0
  14. package/dist/analytics/consent-manager.js +257 -0
  15. package/dist/analytics/consent-manager.js.map +1 -0
  16. package/dist/analytics/emerging-pattern-detector.d.ts +68 -0
  17. package/dist/analytics/emerging-pattern-detector.d.ts.map +1 -0
  18. package/dist/analytics/emerging-pattern-detector.js +250 -0
  19. package/dist/analytics/emerging-pattern-detector.js.map +1 -0
  20. package/dist/analytics/pattern-learning-engine.d.ts +81 -0
  21. package/dist/analytics/pattern-learning-engine.d.ts.map +1 -0
  22. package/dist/analytics/pattern-learning-engine.js +262 -0
  23. package/dist/analytics/pattern-learning-engine.js.map +1 -0
  24. package/dist/analytics/pattern-performance-tracker.d.ts +89 -0
  25. package/dist/analytics/pattern-performance-tracker.d.ts.map +1 -0
  26. package/dist/analytics/pattern-performance-tracker.js +289 -0
  27. package/dist/analytics/pattern-performance-tracker.js.map +1 -0
  28. package/dist/analytics/prompt-pattern-analyzer.d.ts +100 -0
  29. package/dist/analytics/prompt-pattern-analyzer.d.ts.map +1 -0
  30. package/dist/analytics/prompt-pattern-analyzer.js +372 -0
  31. package/dist/analytics/prompt-pattern-analyzer.js.map +1 -0
  32. package/dist/analytics/routing-performance-analyzer.d.ts +102 -0
  33. package/dist/analytics/routing-performance-analyzer.d.ts.map +1 -0
  34. package/dist/analytics/routing-performance-analyzer.js +342 -0
  35. package/dist/analytics/routing-performance-analyzer.js.map +1 -0
  36. package/dist/analytics/routing-refiner.d.ts +105 -0
  37. package/dist/analytics/routing-refiner.d.ts.map +1 -0
  38. package/dist/analytics/routing-refiner.js +381 -0
  39. package/dist/analytics/routing-refiner.js.map +1 -0
  40. package/dist/cli/commands/analytics-disable.d.ts +10 -0
  41. package/dist/cli/commands/analytics-disable.d.ts.map +1 -0
  42. package/dist/cli/commands/analytics-disable.js +73 -0
  43. package/dist/cli/commands/analytics-disable.js.map +1 -0
  44. package/dist/cli/commands/analytics-enable-action.d.ts +9 -0
  45. package/dist/cli/commands/analytics-enable-action.d.ts.map +1 -0
  46. package/dist/cli/commands/analytics-enable-action.js +83 -0
  47. package/dist/cli/commands/analytics-enable-action.js.map +1 -0
  48. package/dist/cli/commands/analytics-preview.d.ts +10 -0
  49. package/dist/cli/commands/analytics-preview.d.ts.map +1 -0
  50. package/dist/cli/commands/analytics-preview.js +107 -0
  51. package/dist/cli/commands/analytics-preview.js.map +1 -0
  52. package/dist/cli/commands/analytics-status.d.ts +10 -0
  53. package/dist/cli/commands/analytics-status.d.ts.map +1 -0
  54. package/dist/cli/commands/analytics-status.js +68 -0
  55. package/dist/cli/commands/analytics-status.js.map +1 -0
  56. package/dist/cli/index.js +6 -3
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/core/adaptive-kernel.d.ts +110 -0
  59. package/dist/core/adaptive-kernel.d.ts.map +1 -0
  60. package/dist/core/adaptive-kernel.js +193 -0
  61. package/dist/core/adaptive-kernel.js.map +1 -0
  62. package/dist/core/kernel-patterns.d.ts +105 -0
  63. package/dist/core/kernel-patterns.d.ts.map +1 -0
  64. package/dist/core/kernel-patterns.js +328 -0
  65. package/dist/core/kernel-patterns.js.map +1 -0
  66. package/dist/core/orchestrator.d.ts +1 -0
  67. package/dist/core/orchestrator.d.ts.map +1 -1
  68. package/dist/core/orchestrator.js +40 -11
  69. package/dist/core/orchestrator.js.map +1 -1
  70. package/dist/delegation/agent-delegator.d.ts +1 -0
  71. package/dist/delegation/agent-delegator.d.ts.map +1 -1
  72. package/dist/delegation/agent-delegator.js +24 -2
  73. package/dist/delegation/agent-delegator.js.map +1 -1
  74. package/dist/delegation/task-skill-router.d.ts +269 -5
  75. package/dist/delegation/task-skill-router.d.ts.map +1 -1
  76. package/dist/delegation/task-skill-router.js +810 -23
  77. package/dist/delegation/task-skill-router.js.map +1 -1
  78. package/dist/postprocessor/PostProcessor.d.ts +10 -0
  79. package/dist/postprocessor/PostProcessor.d.ts.map +1 -1
  80. package/dist/postprocessor/PostProcessor.js +87 -17
  81. package/dist/postprocessor/PostProcessor.js.map +1 -1
  82. package/dist/processors/agents-md-validation-processor.d.ts +1 -0
  83. package/dist/processors/agents-md-validation-processor.d.ts.map +1 -1
  84. package/dist/processors/agents-md-validation-processor.js +34 -12
  85. package/dist/processors/agents-md-validation-processor.js.map +1 -1
  86. package/dist/processors/processor-manager.d.ts +7 -0
  87. package/dist/processors/processor-manager.d.ts.map +1 -1
  88. package/dist/processors/processor-manager.js +93 -0
  89. package/dist/processors/processor-manager.js.map +1 -1
  90. package/dist/processors/test-auto-creation-processor.d.ts.map +1 -1
  91. package/dist/processors/test-auto-creation-processor.js +52 -38
  92. package/dist/processors/test-auto-creation-processor.js.map +1 -1
  93. package/dist/scripts/analytics/daily-routing-analysis.d.ts +18 -0
  94. package/dist/scripts/analytics/daily-routing-analysis.d.ts.map +1 -0
  95. package/dist/scripts/analytics/daily-routing-analysis.js +268 -0
  96. package/dist/scripts/analytics/daily-routing-analysis.js.map +1 -0
  97. package/dist/scripts/analytics/index.d.ts +15 -0
  98. package/dist/scripts/analytics/index.d.ts.map +1 -0
  99. package/dist/scripts/analytics/index.js +17 -0
  100. package/dist/scripts/analytics/index.js.map +1 -0
  101. package/dist/scripts/test-p9.d.ts +15 -0
  102. package/dist/scripts/test-p9.d.ts.map +1 -0
  103. package/dist/scripts/test-p9.js +220 -0
  104. package/dist/scripts/test-p9.js.map +1 -0
  105. package/package.json +6 -2
  106. package/scripts/node/kernel-e2e-test.mjs +168 -0
  107. package/scripts/node/kernel-framework-test.mjs +127 -0
  108. package/scripts/node/kernel-live-test.mjs +147 -0
  109. package/scripts/node/kernel-real-framework-test.mjs +103 -0
  110. package/scripts/node/kernel-update.cjs +379 -0
  111. package/scripts/node/reflection-check.sh +245 -27
  112. package/scripts/node/test-simple-names-comprehensive.mjs +221 -0
  113. package/scripts/node/test-simple-names.mjs +39 -0
  114. package/dist/agents/documentation-writer.d.ts +0 -9
  115. package/dist/agents/documentation-writer.d.ts.map +0 -1
  116. package/dist/agents/documentation-writer.js +0 -85
  117. package/dist/agents/documentation-writer.js.map +0 -1
  118. package/dist/agents/explore.d.ts +0 -8
  119. package/dist/agents/explore.d.ts.map +0 -1
  120. package/dist/agents/explore.js +0 -55
  121. package/dist/agents/explore.js.map +0 -1
  122. package/dist/agents/librarian.d.ts +0 -3
  123. package/dist/agents/librarian.d.ts.map +0 -1
  124. package/dist/agents/librarian.js +0 -84
  125. package/dist/agents/librarian.js.map +0 -1
  126. package/dist/agents/marketing-expert.d.ts +0 -9
  127. package/dist/agents/marketing-expert.d.ts.map +0 -1
  128. package/dist/agents/marketing-expert.js +0 -112
  129. package/dist/agents/marketing-expert.js.map +0 -1
  130. package/dist/agents/oracle.d.ts +0 -8
  131. package/dist/agents/oracle.d.ts.map +0 -1
  132. package/dist/agents/oracle.js +0 -51
  133. package/dist/agents/oracle.js.map +0 -1
  134. package/dist/agents/seo-copywriter.d.ts +0 -10
  135. package/dist/agents/seo-copywriter.d.ts.map +0 -1
  136. package/dist/agents/seo-copywriter.js +0 -73
  137. package/dist/agents/seo-copywriter.js.map +0 -1
  138. package/dist/agents/seo-specialist.d.ts +0 -9
  139. package/dist/agents/seo-specialist.d.ts.map +0 -1
  140. package/dist/agents/seo-specialist.js +0 -54
  141. package/dist/agents/seo-specialist.js.map +0 -1
  142. package/dist/agents/test-architect.d.ts +0 -3
  143. package/dist/agents/test-architect.d.ts.map +0 -1
  144. package/dist/agents/test-architect.js +0 -96
  145. package/dist/agents/test-architect.js.map +0 -1
  146. package/dist/mcps/enhanced-orchestrator.server.d.ts +0 -14
  147. package/dist/mcps/enhanced-orchestrator.server.d.ts.map +0 -1
  148. package/dist/mcps/enhanced-orchestrator.server.js +0 -266
  149. package/dist/mcps/enhanced-orchestrator.server.js.map +0 -1
  150. package/dist/mcps/knowledge-skills/analyzer.server.d.ts +0 -7
  151. package/dist/mcps/knowledge-skills/analyzer.server.d.ts.map +0 -1
  152. package/dist/mcps/knowledge-skills/analyzer.server.js +0 -282
  153. package/dist/mcps/knowledge-skills/analyzer.server.js.map +0 -1
  154. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts +0 -48
  155. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts.map +0 -1
  156. package/dist/mcps/knowledge-skills/documentation-generation.server.js +0 -1238
  157. package/dist/mcps/knowledge-skills/documentation-generation.server.js.map +0 -1
  158. package/dist/mcps/knowledge-skills/explore.server.d.ts +0 -21
  159. package/dist/mcps/knowledge-skills/explore.server.d.ts.map +0 -1
  160. package/dist/mcps/knowledge-skills/explore.server.js +0 -582
  161. package/dist/mcps/knowledge-skills/explore.server.js.map +0 -1
  162. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts +0 -8
  163. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts.map +0 -1
  164. package/dist/mcps/knowledge-skills/marketing-expert.server.js +0 -356
  165. package/dist/mcps/knowledge-skills/marketing-expert.server.js.map +0 -1
  166. package/dist/mcps/knowledge-skills/oracle.server.d.ts +0 -25
  167. package/dist/mcps/knowledge-skills/oracle.server.d.ts.map +0 -1
  168. package/dist/mcps/knowledge-skills/oracle.server.js +0 -569
  169. package/dist/mcps/knowledge-skills/oracle.server.js.map +0 -1
  170. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts +0 -8
  171. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts.map +0 -1
  172. package/dist/mcps/knowledge-skills/seo-copywriter.server.js +0 -251
  173. package/dist/mcps/knowledge-skills/seo-copywriter.server.js.map +0 -1
  174. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts +0 -8
  175. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts.map +0 -1
  176. package/dist/mcps/knowledge-skills/seo-specialist.server.js +0 -211
  177. package/dist/mcps/knowledge-skills/seo-specialist.server.js.map +0 -1
  178. package/dist/mcps/librarian.server.d.ts +0 -17
  179. package/dist/mcps/librarian.server.d.ts.map +0 -1
  180. package/dist/mcps/librarian.server.js +0 -382
  181. package/dist/mcps/librarian.server.js.map +0 -1
  182. package/dist/optimization/performance-optimizer.d.ts +0 -179
  183. package/dist/optimization/performance-optimizer.d.ts.map +0 -1
  184. package/dist/optimization/performance-optimizer.js +0 -556
  185. package/dist/optimization/performance-optimizer.js.map +0 -1
  186. package/dist/utils/memory-pool.d.ts +0 -90
  187. package/dist/utils/memory-pool.d.ts.map +0 -1
  188. package/dist/utils/memory-pool.js +0 -245
  189. package/dist/utils/memory-pool.js.map +0 -1
@@ -37,10 +37,11 @@ fi
37
37
  # Check 2: Executive Summary
38
38
  echo ""
39
39
  echo "2️⃣ Checking Executive Summary..."
40
- if grep -q "## Executive Summary" "$REFLECTION_FILE"; then
40
+ if grep -q "## Executive Summary" "$REFLECTION_FILE" || \
41
+ grep -q "## 1. EXECUTIVE SUMMARY" "$REFLECTION_FILE"; then
41
42
  echo " ✅ Has Executive Summary section"
42
43
  # Check it's near the top (within first 20 lines)
43
- line_num=$(grep -n "## Executive Summary" "$REFLECTION_FILE" | head -1 | cut -d: -f1)
44
+ line_num=$(grep -n "## Executive Summary\|## 1. EXECUTIVE SUMMARY" "$REFLECTION_FILE" | head -1 | cut -d: -f1)
44
45
  if [ "$line_num" -lt 20 ]; then
45
46
  echo " ✅ Executive Summary is near top (line $line_num)"
46
47
  else
@@ -56,36 +57,113 @@ fi
56
57
  echo ""
57
58
  echo "3️⃣ Checking The Dichotomy sections..."
58
59
  if grep -q "## The Dichotomy" "$REFLECTION_FILE" || \
60
+ grep -q "## 2. THE DICHOTOMY" "$REFLECTION_FILE" || \
59
61
  (grep -q "What Was" "$REFLECTION_FILE" && \
60
62
  grep -q "What Is" "$REFLECTION_FILE" && \
61
63
  grep -q "What Should Be" "$REFLECTION_FILE"); then
62
64
  echo " ✅ Has The Dichotomy structure"
65
+
66
+ # Check for INNER DIALOGUE in What Was section
67
+ if grep -q "INNER DIALOGUE" "$REFLECTION_FILE"; then
68
+ echo " ✅ Contains INNER DIALOGUE sections"
69
+
70
+ # Count INNER DIALOGUE mentions for depth
71
+ inner_dialogue_count=$(grep -c "INNER DIALOGUE" "$REFLECTION_FILE")
72
+ if [ "$inner_dialogue_count" -ge 2 ]; then
73
+ echo " ✅ Multiple INNER DIALOGUE sections ($inner_dialogue_count found)"
74
+ else
75
+ echo " ⚠️ Should have multiple INNER DIALOGUE sections for depth (currently $inner_dialogue_count)"
76
+ ((WARNINGS++))
77
+ fi
78
+ else
79
+ echo " ❌ Missing INNER DIALOGUE sections - critical for depth"
80
+ ((ERRORS++))
81
+ fi
82
+
83
+ # Check for emotional/struggle content
84
+ if grep -q -i "struggle\|emotional\|frustration\|confidence\|confusion" "$REFLECTION_FILE"; then
85
+ echo " ✅ Contains emotional/struggle context"
86
+ else
87
+ echo " ⚠️ Should include emotional state descriptions for depth"
88
+ ((WARNINGS++))
89
+ fi
90
+
63
91
  else
64
92
  echo " ❌ Missing The Dichotomy (What Was/Is/Should Be)"
65
93
  ((ERRORS++))
66
94
  fi
67
95
 
68
- # Check 4: Timeline
96
+ # Check 4: Counterfactual Thinking (Required for depth)
97
+ echo ""
98
+ echo "4️⃣ Checking Counterfactual Thinking..."
99
+ if grep -q "## Counterfactual\|## COUNTERFACTUAL\|Counterfactual Analysis" "$REFLECTION_FILE"; then
100
+ echo " ✅ Has Counterfactual Thinking section"
101
+
102
+ # Check for specific counterfactual questions
103
+ counterfactual_checks=0
104
+ if grep -q "would have happened" "$REFLECTION_FILE"; then
105
+ ((counterfactual_checks++))
106
+ fi
107
+ if grep -q "cascade of" "$REFLECTION_FILE"; then
108
+ ((counterfactual_checks++))
109
+ fi
110
+ if grep -q "would have been lost" "$REFLECTION_FILE"; then
111
+ ((counterfactual_checks++))
112
+ fi
113
+ if grep -q "false victory" "$REFLECTION_FILE"; then
114
+ ((counterfactual_checks++))
115
+ fi
116
+
117
+ if [ "$counterfactual_checks" -ge 2 ]; then
118
+ echo " ✅ Contains deep counterfactual analysis ($counterfactual_checks key elements)"
119
+ else
120
+ echo " ⚠️ Should include more counterfactual analysis (would have happened, cascade, what would have been lost, false victory)"
121
+ ((WARNINGS++))
122
+ fi
123
+ else
124
+ echo " ❌ Missing Counterfactual Thinking section - critical for depth"
125
+ ((ERRORS++))
126
+ fi
127
+
128
+ # Check 5: Timeline
69
129
  echo ""
70
- echo "4️⃣ Checking Timeline..."
130
+ echo "5️⃣ Checking Timeline..."
71
131
  if grep -q "## Timeline" "$REFLECTION_FILE" || \
132
+ grep -q "## 4. CHRONOLOGICAL" "$REFLECTION_FILE" || \
72
133
  grep -q "## Chronological" "$REFLECTION_FILE" || \
73
134
  grep -q "### Phase" "$REFLECTION_FILE"; then
74
135
  echo " ✅ Has Timeline/Chronological section"
136
+
137
+ # Check for INNER DIALOGUE in timeline
138
+ if grep -q "INNER DIALOGUE" "$REFLECTION_FILE"; then
139
+ echo " ✅ Timeline includes INNER DIALOGUE sections"
140
+ else
141
+ echo " ⚠️ Timeline should include INNER DIALOGUE for each phase"
142
+ ((WARNINGS++))
143
+ fi
75
144
  else
76
145
  echo " ❌ Missing Timeline section"
77
146
  ((ERRORS++))
78
147
  fi
79
148
 
80
- # Check 5: Root Cause Analysis
149
+ # Check 6: Root Cause Analysis
81
150
  echo ""
82
- echo "5️⃣ Checking Root Cause Analysis..."
83
- if grep -q "## Root Cause" "$REFLECTION_FILE"; then
151
+ echo "6️⃣ Checking Root Cause Analysis..."
152
+ if grep -q "## Root Cause" "$REFLECTION_FILE" || \
153
+ grep -q "## 5. ROOT CAUSE" "$REFLECTION_FILE"; then
84
154
  echo " ✅ Has Root Cause Analysis section"
85
155
  # Check for structure
86
156
  if grep -q "Root Cause 1:" "$REFLECTION_FILE" || \
87
157
  grep -q "### Root Cause" "$REFLECTION_FILE"; then
88
158
  echo " ✅ Has numbered root causes"
159
+
160
+ # Check for "Why I Thought I Was Right" - critical for depth
161
+ if grep -q "Why I Thought I Was Right\|Why it seemed right" "$REFLECTION_FILE"; then
162
+ echo " ✅ Includes flawed reasoning analysis"
163
+ else
164
+ echo " ❌ Missing 'Why I Thought I Was Right' - critical for depth and learning"
165
+ ((ERRORS++))
166
+ fi
89
167
  else
90
168
  echo " ⚠️ Should have numbered root causes (Root Cause 1:, Root Cause 2:, etc.)"
91
169
  ((WARNINGS++))
@@ -95,30 +173,75 @@ else
95
173
  ((ERRORS++))
96
174
  fi
97
175
 
176
+ # Check 7: Master's Wisdom
177
+ echo ""
178
+ echo "7️⃣ Checking Master's Wisdom..."
179
+ if grep -q "## The Master\|## Master.*Wisdom\|## 9. THE MASTER" "$REFLECTION_FILE"; then
180
+ echo " ✅ Has Master's Wisdom section"
181
+
182
+ # Check for specific elements
183
+ master_checks=0
184
+ if grep -q "Who Saved Me\|Who set the constraint" "$REFLECTION_FILE"; then
185
+ ((master_checks++))
186
+ fi
187
+ if grep -q "What They Knew\|What did they know" "$REFLECTION_FILE"; then
188
+ ((master_checks++))
189
+ fi
190
+ if grep -q "Why They Knew It\|Why did they know" "$REFLECTION_FILE"; then
191
+ ((master_checks++))
192
+ fi
193
+ if grep -q "What I Would Have Lost" "$REFLECTION_FILE"; then
194
+ ((master_checks++))
195
+ fi
196
+
197
+ if [ "$master_checks" -ge 3 ]; then
198
+ echo " ✅ Contains comprehensive Master's Wisdom analysis ($master_checks/4 elements)"
199
+ else
200
+ echo " ⚠️ Master's Wisdom should address who saved you, what they knew, why they knew, what you would have lost"
201
+ ((WARNINGS++))
202
+ fi
203
+ else
204
+ echo " ❌ Missing Master's Wisdom section - critical for humility and learning"
205
+ ((ERRORS++))
206
+ fi
207
+
98
208
  # Check 6: Solutions/Fixes section
99
209
  echo ""
100
210
  echo "6️⃣ Checking Solutions section..."
101
211
  if grep -q "## Solution" "$REFLECTION_FILE" || \
102
212
  grep -q "## Fix" "$REFLECTION_FILE" || \
103
- grep -q "## The Fix" "$REFLECTION_FILE"; then
213
+ grep -q "## The Fix" "$REFLECTION_FILE" || \
214
+ grep -q "## 6. THE FIX" "$REFLECTION_FILE"; then
104
215
  echo " ✅ Has Solutions/Fixes section"
105
216
  else
106
217
  echo " ❌ Missing Solutions/Fixes section"
107
218
  ((ERRORS++))
108
219
  fi
109
220
 
110
- # Check 7: Deep Lessons
221
+ # Check 8: Deep Lessons
111
222
  echo ""
112
- echo "7️⃣ Checking Deep Lessons..."
223
+ echo "8️⃣ Checking Deep Lessons..."
113
224
  if grep -q "## Deep Lesson" "$REFLECTION_FILE" || \
114
- grep -q "## Lesson" "$REFLECTION_FILE"; then
225
+ grep -q "## Lesson" "$REFLECTION_FILE" || \
226
+ grep -q "## 7. DEEP LESSONS" "$REFLECTION_FILE"; then
115
227
  echo " ✅ Has Deep Lessons section"
228
+
116
229
  # Check for Pitfall/Ah-Ha structure
117
- if grep -q "Pitfall:" "$REFLECTION_FILE" && \
118
- grep -q "Ah-Ha" "$REFLECTION_FILE"; then
119
- echo " ✅ Has Pitfall→Ah-Ha structure"
230
+ pitfall_count=$(grep -c "Pitfall:" "$REFLECTION_FILE")
231
+ aha_count=$(grep -c "Ah-Ha" "$REFLECTION_FILE")
232
+
233
+ if [ "$pitfall_count" -ge 1 ] && [ "$aha_count" -ge 1 ]; then
234
+ echo " ✅ Has Pitfall→Ah-Ha structure ($pitfall_count pitfall(s), $aha_count ah-ha moment(s))"
235
+ else
236
+ echo " ⚠️ Should have Pitfall: and Ah-Ha Moment: structure for deep learning"
237
+ ((WARNINGS++))
238
+ fi
239
+
240
+ # Check for "Why I Didn't See It" - adds depth
241
+ if grep -q "Why I Didn't See It\|What was I missing" "$REFLECTION_FILE"; then
242
+ echo " ✅ Includes self-awareness component"
120
243
  else
121
- echo " ⚠️ Should have Pitfall: and Ah-Ha Moment: structure"
244
+ echo " ⚠️ Should include 'Why I Didn't See It' for self-reflection depth"
122
245
  ((WARNINGS++))
123
246
  fi
124
247
  else
@@ -126,24 +249,60 @@ else
126
249
  ((ERRORS++))
127
250
  fi
128
251
 
129
- # Check 8: Personal Journey
252
+ # Check 9: Personal Journey
130
253
  echo ""
131
- echo "8️⃣ Checking Personal Journey..."
254
+ echo "9️⃣ Checking Personal Journey..."
132
255
  if grep -q "## Personal Journey" "$REFLECTION_FILE" || \
256
+ grep -q "## 8. PERSONAL JOURNEY" "$REFLECTION_FILE" || \
133
257
  (grep -q "My Struggle" "$REFLECTION_FILE" && \
134
258
  grep -q "My Triumph" "$REFLECTION_FILE"); then
135
259
  echo " ✅ Has Personal Journey section"
260
+
261
+ # Check for required emotional depth elements
262
+ personal_checks=0
263
+ if grep -q "My Struggle" "$REFLECTION_FILE"; then
264
+ ((personal_checks++))
265
+ fi
266
+ if grep -q "My Triumph" "$REFLECTION_FILE"; then
267
+ ((personal_checks++))
268
+ fi
269
+ if grep -q "My Dichotomy\|Conflicting viewpoints" "$REFLECTION_FILE"; then
270
+ ((personal_checks++))
271
+ fi
272
+ if grep -q "What Would Have Happened If I Had My Way" "$REFLECTION_FILE"; then
273
+ ((personal_checks++))
274
+ fi
275
+ if grep -q "My Commitments to Future Self" "$REFLECTION_FILE"; then
276
+ ((personal_checks++))
277
+ fi
278
+
279
+ if [ "$personal_checks" -ge 4 ]; then
280
+ echo " ✅ Contains comprehensive personal journey ($personal_checks/5 elements)"
281
+ else
282
+ echo " ⚠️ Personal Journey should include Struggle, Triumph, Dichotomy, What Would Have Happened, My Growth/Commitments"
283
+ ((WARNINGS++))
284
+ fi
285
+
286
+ # Check for emotional honesty
287
+ if grep -q -i "frustration\|anger\|doubt\|resistance\|struggle" "$REFLECTION_FILE"; then
288
+ echo " ✅ Contains emotional honesty about challenges"
289
+ else
290
+ echo " ⚠️ Should include honest emotional descriptions of struggle"
291
+ ((WARNINGS++))
292
+ fi
136
293
  else
137
294
  echo " ❌ Missing Personal Journey section"
138
295
  ((ERRORS++))
139
296
  fi
140
297
 
141
- # Check 9: Action Items
298
+ # Check 10: Action Items
142
299
  echo ""
143
- echo "9️⃣ Checking Action Items..."
300
+ echo "🔟 Checking Action Items..."
144
301
  if grep -q "## Action Item" "$REFLECTION_FILE" || \
145
- grep -q "## Checklist" "$REFLECTION_FILE"; then
302
+ grep -q "## Checklist" "$REFLECTION_FILE" || \
303
+ grep -q "## 10. ACTION ITEMS" "$REFLECTION_FILE"; then
146
304
  echo " ✅ Has Action Items/Checklist section"
305
+
147
306
  # Check for checkboxes
148
307
  if grep -q "\- \[ \]" "$REFLECTION_FILE" || \
149
308
  grep -q "\- \[x\]" "$REFLECTION_FILE"; then
@@ -152,6 +311,14 @@ if grep -q "## Action Item" "$REFLECTION_FILE" || \
152
311
  echo " ⚠️ Should have checkboxes (- [ ]) for actionable items"
153
312
  ((WARNINGS++))
154
313
  fi
314
+
315
+ # Check for prevention checklist specifically
316
+ if grep -q "Prevention Checklist\|Before.*I will" "$REFLECTION_FILE"; then
317
+ echo " ✅ Has Prevention Checklist for future avoidance"
318
+ else
319
+ echo " ⚠️ Should include Prevention Checklist with specific verification steps"
320
+ ((WARNINGS++))
321
+ fi
155
322
  else
156
323
  echo " ❌ Missing Action Items section"
157
324
  ((ERRORS++))
@@ -160,22 +327,73 @@ fi
160
327
  # Check 10: Code examples
161
328
  echo ""
162
329
  echo "🔟 Checking for code examples..."
163
- if grep -q '```' "$REFLECTION_FILE"; then
164
- code_blocks=$(grep -c '```' "$REFLECTION_FILE")
330
+ BACKTICK='```'
331
+ if grep -q "$BACKTICK" "$REFLECTION_FILE"; then
332
+ code_blocks=$(grep -c "$BACKTICK" "$REFLECTION_FILE")
165
333
  echo " ✅ Has code blocks ($code_blocks backtick blocks found)"
166
334
  else
167
- echo " ⚠️ Should include code examples (use ``` code blocks)"
335
+ echo " ⚠️ Should include code examples (use ${BACKTICK} code blocks)"
168
336
  ((WARNINGS++))
169
337
  fi
170
338
 
171
- # Check 11: Length check
339
+ # Check 11: Length check with depth requirements
172
340
  echo ""
173
341
  echo "1️⃣1️⃣ Checking length..."
174
342
  line_count=$(wc -l < "$REFLECTION_FILE")
175
- if [ "$line_count" -gt 100 ]; then
176
- echo " ✅ Substantial content ($line_count lines)"
343
+ if [ "$line_count" -gt 150 ]; then
344
+ echo " ✅ Substantial content with depth ($line_count lines)"
345
+ else
346
+ echo " ⚠️ Reflection seems short for meaningful depth ($line_count lines). Should be >150 lines for significant sessions."
347
+ ((WARNINGS++))
348
+ fi
349
+
350
+ # Check 12: Overall depth assessment
351
+ echo ""
352
+ echo "1️⃣2️⃣ Overall depth assessment..."
353
+ depth_score=0
354
+ total_checks=0
355
+
356
+ # Check for emotional honesty
357
+ if grep -q -i "struggle\|frustration\|doubt\|emotion\|feeling\|resistance" "$REFLECTION_FILE"; then
358
+ echo " ✅ Shows emotional honesty"
359
+ ((depth_score++))
360
+ fi
361
+ ((total_checks++))
362
+
363
+ # Check for counterfactual thinking
364
+ if grep -q "would have happened\|would have been lost\|cascade\|counterfactual" "$REFLECTION_FILE"; then
365
+ echo " ✅ Includes counterfactual thinking"
366
+ ((depth_score++))
367
+ fi
368
+ ((total_checks++))
369
+
370
+ # Check for self-awareness of mistakes
371
+ if grep -q "Why I Thought I Was Right\|why was I wrong\|flawed reasoning" "$REFLECTION_FILE"; then
372
+ echo " ✅ Shows self-awareness of mistakes"
373
+ ((depth_score++))
374
+ fi
375
+ ((total_checks++))
376
+
377
+ # Check for learning from others
378
+ if grep -q "Master.*Wisdom\|What They Knew\|who saved me" "$REFLECTION_FILE"; then
379
+ echo " ✅ Shows learning from others (Master's Wisdom)"
380
+ ((depth_score++))
381
+ fi
382
+ ((total_checks++))
383
+
384
+ # Check for future commitments
385
+ if grep -q "My Commitments\|Prevention Checklist\|will change" "$REFLECTION_FILE"; then
386
+ echo " ✅ Includes future commitments"
387
+ ((depth_score++))
388
+ fi
389
+ ((total_checks++))
390
+
391
+ echo " Depth Score: $depth_score/$total_checks"
392
+
393
+ if [ "$depth_score" -ge $((total_checks * 3 / 4)) ]; then
394
+ echo " ✅ Strong depth and reflection quality"
177
395
  else
178
- echo " ⚠️ Reflection seems short ($line_count lines). Should be >100 lines for significant sessions."
396
+ echo " ⚠️ Consider adding more depth through INNER DIALOGUE, counterfactual thinking, and self-awareness"
179
397
  ((WARNINGS++))
180
398
  fi
181
399
 
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Comprehensive test for simple name mapping feature
3
+ * Tests edge cases, error handling, and integration with TaskSkillRouter
4
+ */
5
+
6
+ import { getAgentSimpleName, getAllSimpleNames, TaskSkillRouter } from '../../dist/delegation/task-skill-router.js';
7
+
8
+ console.log('🧪 COMPREHENSIVE SIMPLE NAME MAPPING TEST');
9
+ console.log('========================================\n');
10
+
11
+ // Test 1: Basic functionality verification
12
+ console.log('1. BASIC FUNCTIONALITY TEST');
13
+ console.log('--------------------------');
14
+ const basicTests = [
15
+ { input: 'strategist', expected: 'Strategic Planner' },
16
+ { input: 'bug-triage-specialist', expected: 'Error Resolver' },
17
+ { input: 'security-auditor', expected: 'Security Specialist' },
18
+ { input: 'testing-lead', expected: 'Quality Assurance Lead' },
19
+ { input: 'researcher', expected: 'Code Researcher' },
20
+ { input: 'tech-writer', expected: 'Documentation Expert' },
21
+ { input: 'enforcer', expected: 'Quality Guardian' },
22
+ { input: 'architect', expected: 'Solution Designer' },
23
+ { input: 'frontend-ui-ux-engineer', expected: 'UI/UX Designer' },
24
+ { input: 'database-engineer', expected: 'Database Specialist' },
25
+ ];
26
+
27
+ basicTests.forEach(({ input, expected }) => {
28
+ const result = getAgentSimpleName(input);
29
+ const status = result === expected ? '✅' : '❌';
30
+ console.log(` ${status} ${input} → ${result} (expected: ${expected})`);
31
+ });
32
+
33
+ // Test 2: Unknown agent handling
34
+ console.log('\n2. UNKNOWN AGENT HANDLING');
35
+ console.log('--------------------------');
36
+ const unknownAgents = [
37
+ 'unknown-agent',
38
+ 'non-existent-agent',
39
+ '',
40
+ 'random-name-123',
41
+ null,
42
+ undefined
43
+ ];
44
+
45
+ unknownAgents.forEach(agent => {
46
+ try {
47
+ const result = getAgentSimpleName(agent);
48
+ const status = typeof result === 'string' ? '✅' : '❌';
49
+ console.log(` ${status} ${String(agent || 'null')} → ${result || 'null'}`);
50
+ } catch (error) {
51
+ console.log(` ❌ ${String(agent || 'null')} → ERROR: ${error.message}`);
52
+ }
53
+ });
54
+
55
+ // Test 3: Legacy aliases
56
+ console.log('\n3. LEGACY ALIAS MAPPINGS');
57
+ console.log('-------------------------');
58
+ const legacyTests = [
59
+ { input: 'librarian', expected: 'Research Analyst' },
60
+ { input: 'seo-specialist', expected: 'SEO Expert' },
61
+ { input: 'marketing-expert', expected: 'Growth Specialist' },
62
+ { input: 'documentation-writer', expected: 'Documentation Writer' },
63
+ { input: 'seo-copywriter', expected: 'Content Specialist' },
64
+ ];
65
+
66
+ legacyTests.forEach(({ input, expected }) => {
67
+ const result = getAgentSimpleName(input);
68
+ const status = result === expected ? '✅' : '❌';
69
+ console.log(` ${status} ${input} → ${result} (expected: ${expected})`);
70
+ });
71
+
72
+ // Test 4: getAllSimpleNames() function
73
+ console.log('\n4. GET ALL MAPPINGS TEST');
74
+ console.log('-------------------------');
75
+ try {
76
+ const allMappings = getAllSimpleNames();
77
+ const mappingCount = Object.keys(allMappings).length;
78
+ console.log(` ✅ Retrieved ${mappingCount} mappings`);
79
+
80
+ // Verify it's a proper object
81
+ if (typeof allMappings === 'object' && allMappings !== null && !Array.isArray(allMappings)) {
82
+ console.log(' ✅ Return type is correct (object)');
83
+ } else {
84
+ console.log(' ❌ Return type is incorrect');
85
+ }
86
+
87
+ // Check some specific mappings
88
+ const checkMappings = ['strategist', 'enforcer', 'unknown-agent'];
89
+ checkMappings.forEach(key => {
90
+ const exists = key in allMappings;
91
+ const value = allMappings[key];
92
+ const status = exists ? '✅' : '❌';
93
+ console.log(` ${status} ${key}: ${value || 'undefined'}`);
94
+ });
95
+
96
+ } catch (error) {
97
+ console.log(` ❌ Error: ${error.message}`);
98
+ }
99
+
100
+ // Test 5: TaskSkillRouter class integration
101
+ console.log('\n5. TASK SKILL ROUTER INTEGRATION');
102
+ console.log('------------------------------');
103
+ try {
104
+ const router = new TaskSkillRouter();
105
+
106
+ // Test instance methods
107
+ const simpleName = router.getSimpleName('strategist');
108
+ console.log(` ✅ Instance getSimpleName: strategist → ${simpleName}`);
109
+
110
+ const allNames = router.getAllSimpleNames();
111
+ console.log(` ✅ Instance getAllSimpleNames: ${Object.keys(allNames).length} mappings`);
112
+
113
+ // Test with non-existent agent
114
+ const unknown = router.getSimpleName('definitely-not-real');
115
+ console.log(` ✅ Unknown agent fallback: definitely-not-real → ${unknown}`);
116
+
117
+ } catch (error) {
118
+ console.log(` ❌ Error: ${error.message}`);
119
+ }
120
+
121
+ // Test 6: Edge cases and validation
122
+ console.log('\n6. EDGE CASES VALIDATION');
123
+ console.log('------------------------');
124
+ const edgeCases = [
125
+ { input: 'STRATEGIST', description: 'uppercase input' },
126
+ { input: 'Strategist', description: 'mixed case input' },
127
+ { input: 'strategist', description: 'lowercase input' },
128
+ { input: 'strategist-123', description: 'with numbers' },
129
+ { input: 'strategist_', description: 'with underscore' },
130
+ { input: 12345, description: 'numeric input' },
131
+ ];
132
+
133
+ edgeCases.forEach(({ input, description }) => {
134
+ try {
135
+ const result = getAgentSimpleName(input);
136
+ console.log(` ✅ ${description}: ${String(input)} → ${result}`);
137
+ } catch (error) {
138
+ console.log(` ⚠️ ${description}: ${String(input)} → ERROR: ${error.message}`);
139
+ }
140
+ });
141
+
142
+ // Test 7: Performance test
143
+ console.log('\n7. PERFORMANCE TEST');
144
+ console.log('------------------');
145
+ const startTime = performance.now();
146
+ const iterations = 1000;
147
+
148
+ for (let i = 0; i < iterations; i++) {
149
+ getAgentSimpleName('strategist');
150
+ getAgentSimpleName('security-auditor');
151
+ getAgentSimpleName('testing-lead');
152
+ }
153
+
154
+ const endTime = performance.now();
155
+ const avgTime = (endTime - startTime) / iterations;
156
+
157
+ console.log(` ✅ ${iterations} iterations completed`);
158
+ console.log(` ✅ Average time per call: ${avgTime.toFixed(3)}ms`);
159
+ console.log(` ✅ Total time: ${(endTime - startTime).toFixed(2)}ms`);
160
+
161
+ // Test 8: Verify no duplicate mappings
162
+ console.log('\n8. DUPLICATE MAPPINGS CHECK');
163
+ console.log('---------------------------');
164
+ try {
165
+ const allMappings = getAllSimpleNames();
166
+ const values = Object.values(allMappings);
167
+ const uniqueValues = new Set(values);
168
+ const duplicates = values.length - uniqueValues.size;
169
+
170
+ if (duplicates === 0) {
171
+ console.log(` ✅ No duplicate simple names found`);
172
+ } else {
173
+ console.log(` ❌ Found ${duplicates} duplicate simple names`);
174
+ }
175
+
176
+ // Check for duplicate technical names
177
+ const keys = Object.keys(allMappings);
178
+ const uniqueKeys = new Set(keys);
179
+ const keyDuplicates = keys.length - uniqueKeys.size;
180
+
181
+ if (keyDuplicates === 0) {
182
+ console.log(` ✅ No duplicate technical names found`);
183
+ } else {
184
+ console.log(` ❌ Found ${keyDuplicates} duplicate technical names`);
185
+ }
186
+
187
+ } catch (error) {
188
+ console.log(` ❌ Error: ${error.message}`);
189
+ }
190
+
191
+ // Summary
192
+ console.log('\n========================================');
193
+ console.log('📊 TEST SUMMARY');
194
+ console.log('========================================');
195
+
196
+ const allTests = [
197
+ ...basicTests,
198
+ ...legacyTests,
199
+ { input: 'unknown-agent', expected: 'unknown-agent' },
200
+ { input: 'librarian', expected: 'Research Analyst' }
201
+ ];
202
+
203
+ const passedTests = allTests.filter(({ input, expected }) => {
204
+ try {
205
+ return getAgentSimpleName(input) === expected;
206
+ } catch {
207
+ return false;
208
+ }
209
+ });
210
+
211
+ const passedCount = passedTests.length;
212
+ const totalCount = allTests.length;
213
+ const successRate = (passedCount / totalCount * 100).toFixed(1);
214
+
215
+ console.log(`✅ Passed: ${passedCount}/${totalCount} (${successRate}%)`);
216
+ console.log('🧪 All edge cases and integration tests completed');
217
+ console.log('📈 Performance benchmark completed');
218
+ console.log('🔍 Duplicate mappings check completed');
219
+
220
+ console.log('\n✅ COMPREHENSIVE SIMPLE NAME MAPPING TEST COMPLETE');
221
+ console.log('========================================');
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Test simple name mapping
3
+ */
4
+
5
+ import { getAgentSimpleName, getAllSimpleNames } from '../../dist/delegation/task-skill-router.js';
6
+
7
+ console.log('🧪 SIMPLE NAME MAPPING TEST');
8
+ console.log('===========================\n');
9
+
10
+ // Test individual names
11
+ console.log('Testing individual simple names:');
12
+ console.log(` strategist → ${getAgentSimpleName('strategist')}`);
13
+ console.log(` bug-triage-specialist → ${getAgentSimpleName('bug-triage-specialist')}`);
14
+ console.log(` security-auditor → ${getAgentSimpleName('security-auditor')}`);
15
+ console.log(` testing-lead → ${getAgentSimpleName('testing-lead')}`);
16
+ console.log(` researcher → ${getAgentSimpleName('researcher')}`);
17
+ console.log(` tech-writer → ${getAgentSimpleName('tech-writer')}`);
18
+ console.log(` enforcer → ${getAgentSimpleName('enforcer')}`);
19
+ console.log(` architect → ${getAgentSimpleName('architect')}`);
20
+
21
+ // Test unknown agent (should return the original)
22
+ console.log('\nTesting unknown agent:');
23
+ console.log(` unknown-agent → ${getAgentSimpleName('unknown-agent')}`);
24
+
25
+ // Test legacy aliases
26
+ console.log('\nTesting legacy aliases:');
27
+ console.log(` librarian → ${getAgentSimpleName('librarian')}`);
28
+ console.log(` seo-specialist → ${getAgentSimpleName('seo-specialist')}`);
29
+ console.log(` marketing-expert → ${getAgentSimpleName('marketing-expert')}`);
30
+
31
+ // Show all mappings
32
+ console.log('\nAll simple name mappings:');
33
+ const allNames = getAllSimpleNames();
34
+ for (const [key, value] of Object.entries(allNames)) {
35
+ console.log(` ${key} → ${value}`);
36
+ }
37
+
38
+ console.log('\n===========================');
39
+ console.log('✅ SIMPLE NAME MAPPING TEST COMPLETE');
@@ -1,9 +0,0 @@
1
- import type { AgentConfig } from "./types.js";
2
- /**
3
- * Documentation Writer Agent
4
- *
5
- * Specialist in technical documentation, API docs, README files,
6
- * architectural decision records, and developer experience.
7
- */
8
- export declare const documentationWriter: AgentConfig;
9
- //# sourceMappingURL=documentation-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"documentation-writer.d.ts","sourceRoot":"","sources":["../../src/agents/documentation-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,WA+EjC,CAAC"}