beth-copilot 1.1.0 → 2.0.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 (223) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +51 -62
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +19 -410
  6. package/dist/__tests__/inject-skills.test.d.ts +9 -0
  7. package/dist/__tests__/inject-skills.test.d.ts.map +1 -0
  8. package/dist/__tests__/inject-skills.test.js +143 -0
  9. package/dist/__tests__/inject-skills.test.js.map +1 -0
  10. package/dist/__tests__/skills/disambiguation.test.d.ts +10 -0
  11. package/dist/__tests__/skills/disambiguation.test.d.ts.map +1 -0
  12. package/dist/__tests__/skills/disambiguation.test.js +192 -0
  13. package/dist/__tests__/skills/disambiguation.test.js.map +1 -0
  14. package/dist/__tests__/skills/hook-injection.test.d.ts +11 -0
  15. package/dist/__tests__/skills/hook-injection.test.d.ts.map +1 -0
  16. package/dist/__tests__/skills/hook-injection.test.js +173 -0
  17. package/dist/__tests__/skills/hook-injection.test.js.map +1 -0
  18. package/dist/__tests__/skills/mapping-completeness.test.d.ts +17 -0
  19. package/dist/__tests__/skills/mapping-completeness.test.d.ts.map +1 -0
  20. package/dist/__tests__/skills/mapping-completeness.test.js +281 -0
  21. package/dist/__tests__/skills/mapping-completeness.test.js.map +1 -0
  22. package/dist/__tests__/skills/pipeline-integration.test.d.ts +18 -0
  23. package/dist/__tests__/skills/pipeline-integration.test.d.ts.map +1 -0
  24. package/dist/__tests__/skills/pipeline-integration.test.js +234 -0
  25. package/dist/__tests__/skills/pipeline-integration.test.js.map +1 -0
  26. package/dist/__tests__/skills/skill-routing.test.d.ts +15 -0
  27. package/dist/__tests__/skills/skill-routing.test.d.ts.map +1 -0
  28. package/dist/__tests__/skills/skill-routing.test.js +723 -0
  29. package/dist/__tests__/skills/skill-routing.test.js.map +1 -0
  30. package/dist/__tests__/skills/trigger-coverage.test.d.ts +24 -0
  31. package/dist/__tests__/skills/trigger-coverage.test.d.ts.map +1 -0
  32. package/dist/__tests__/skills/trigger-coverage.test.js +746 -0
  33. package/dist/__tests__/skills/trigger-coverage.test.js.map +1 -0
  34. package/dist/__tests__/smoke.test.js +13 -0
  35. package/dist/__tests__/smoke.test.js.map +1 -1
  36. package/dist/__tests__/verify-skills.test.d.ts +9 -0
  37. package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
  38. package/dist/__tests__/verify-skills.test.js +78 -0
  39. package/dist/__tests__/verify-skills.test.js.map +1 -0
  40. package/dist/cli/commands/beads.e2e.test.d.ts +4 -2
  41. package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -1
  42. package/dist/cli/commands/beads.e2e.test.js +97 -38
  43. package/dist/cli/commands/beads.e2e.test.js.map +1 -1
  44. package/dist/cli/commands/cli-edge-cases.e2e.test.js +1 -1
  45. package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -1
  46. package/dist/cli/commands/close.d.ts +11 -46
  47. package/dist/cli/commands/close.d.ts.map +1 -1
  48. package/dist/cli/commands/close.e2e.test.d.ts +4 -20
  49. package/dist/cli/commands/close.e2e.test.d.ts.map +1 -1
  50. package/dist/cli/commands/close.e2e.test.js +23 -204
  51. package/dist/cli/commands/close.e2e.test.js.map +1 -1
  52. package/dist/cli/commands/close.js +26 -240
  53. package/dist/cli/commands/close.js.map +1 -1
  54. package/dist/cli/commands/close.test.d.ts +7 -9
  55. package/dist/cli/commands/close.test.d.ts.map +1 -1
  56. package/dist/cli/commands/close.test.js +44 -424
  57. package/dist/cli/commands/close.test.js.map +1 -1
  58. package/dist/cli/commands/doctor.d.ts +5 -22
  59. package/dist/cli/commands/doctor.d.ts.map +1 -1
  60. package/dist/cli/commands/doctor.e2e.test.js +3 -59
  61. package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
  62. package/dist/cli/commands/doctor.js +38 -111
  63. package/dist/cli/commands/doctor.js.map +1 -1
  64. package/dist/cli/commands/doctor.test.js +32 -234
  65. package/dist/cli/commands/doctor.test.js.map +1 -1
  66. package/dist/cli/commands/framework-isolation.test.d.ts +1 -1
  67. package/dist/cli/commands/framework-isolation.test.js +2 -3
  68. package/dist/cli/commands/framework-isolation.test.js.map +1 -1
  69. package/dist/cli/commands/help.e2e.test.js +1 -5
  70. package/dist/cli/commands/help.e2e.test.js.map +1 -1
  71. package/dist/cli/commands/init-logic.e2e.test.js +12 -2
  72. package/dist/cli/commands/init-logic.e2e.test.js.map +1 -1
  73. package/dist/cli/commands/init.test.js +4 -21
  74. package/dist/cli/commands/init.test.js.map +1 -1
  75. package/dist/cli/commands/land.d.ts +3 -15
  76. package/dist/cli/commands/land.d.ts.map +1 -1
  77. package/dist/cli/commands/land.js +13 -68
  78. package/dist/cli/commands/land.js.map +1 -1
  79. package/dist/cli/commands/land.test.d.ts +0 -1
  80. package/dist/cli/commands/land.test.d.ts.map +1 -1
  81. package/dist/cli/commands/land.test.js +2 -57
  82. package/dist/cli/commands/land.test.js.map +1 -1
  83. package/dist/cli/commands/mcp.e2e.test.js +3 -3
  84. package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
  85. package/dist/cli/commands/pipeline.e2e.test.js +23 -26
  86. package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
  87. package/dist/cli/commands/pre-push-guard.d.ts +2 -12
  88. package/dist/cli/commands/pre-push-guard.d.ts.map +1 -1
  89. package/dist/cli/commands/pre-push-guard.e2e.test.js +1 -1
  90. package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -1
  91. package/dist/cli/commands/pre-push-guard.js +2 -47
  92. package/dist/cli/commands/pre-push-guard.js.map +1 -1
  93. package/dist/cli/commands/pre-push-guard.test.d.ts +0 -1
  94. package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -1
  95. package/dist/cli/commands/pre-push-guard.test.js +15 -98
  96. package/dist/cli/commands/pre-push-guard.test.js.map +1 -1
  97. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +1 -1
  98. package/dist/cli/commands/quickstart-expanded.e2e.test.js +3 -30
  99. package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -1
  100. package/dist/cli/commands/quickstart.d.ts +0 -1
  101. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  102. package/dist/cli/commands/quickstart.js +2 -60
  103. package/dist/cli/commands/quickstart.js.map +1 -1
  104. package/dist/cli/commands/quickstart.test.js +10 -104
  105. package/dist/cli/commands/quickstart.test.js.map +1 -1
  106. package/dist/cli/commands/update.d.ts +35 -0
  107. package/dist/cli/commands/update.d.ts.map +1 -0
  108. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  109. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  110. package/dist/cli/commands/update.e2e.test.js +240 -0
  111. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  112. package/dist/cli/commands/update.js +255 -0
  113. package/dist/cli/commands/update.js.map +1 -0
  114. package/dist/core/agents/frontmatter.test.js +1 -1
  115. package/dist/core/agents/frontmatter.test.js.map +1 -1
  116. package/dist/core/agents/handoffs.test.js +1 -1
  117. package/dist/core/agents/handoffs.test.js.map +1 -1
  118. package/dist/core/agents/loader.d.ts +4 -2
  119. package/dist/core/agents/loader.d.ts.map +1 -1
  120. package/dist/core/agents/loader.js +5 -3
  121. package/dist/core/agents/loader.js.map +1 -1
  122. package/dist/core/agents/loader.test.js +42 -4
  123. package/dist/core/agents/loader.test.js.map +1 -1
  124. package/dist/core/agents/suite.test.js +8 -7
  125. package/dist/core/agents/suite.test.js.map +1 -1
  126. package/dist/core/agents/tools.test.js +10 -8
  127. package/dist/core/agents/tools.test.js.map +1 -1
  128. package/dist/core/agents/types.test.js +1 -1
  129. package/dist/core/agents/types.test.js.map +1 -1
  130. package/dist/core/skills/loader.test.js +1 -1
  131. package/dist/core/skills/loader.test.js.map +1 -1
  132. package/dist/index.d.ts +0 -1
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +0 -2
  135. package/dist/index.js.map +1 -1
  136. package/dist/lib/pathValidation.d.ts +0 -5
  137. package/dist/lib/pathValidation.d.ts.map +1 -1
  138. package/dist/lib/pathValidation.js +0 -11
  139. package/dist/lib/pathValidation.js.map +1 -1
  140. package/dist/lib/pathValidation.test.js +2 -14
  141. package/dist/lib/pathValidation.test.js.map +1 -1
  142. package/package.json +3 -6
  143. package/sbom.json +259 -371
  144. package/templates/.github/agents/beth.agent.md +194 -122
  145. package/templates/.github/agents/developer.agent.md +30 -22
  146. package/templates/.github/agents/product-manager.agent.md +15 -6
  147. package/templates/.github/agents/researcher.agent.md +10 -7
  148. package/templates/.github/agents/security-reviewer.agent.md +16 -7
  149. package/templates/.github/agents/tester.agent.md +16 -8
  150. package/templates/.github/agents/ux-designer.agent.md +12 -9
  151. package/templates/.github/copilot-instructions.md +33 -4
  152. package/templates/.github/copilot-mcp-config.json +12 -0
  153. package/templates/.github/dependabot.yml +68 -0
  154. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  155. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  156. package/templates/.github/hooks/skill-enforcement.json +18 -0
  157. package/templates/.github/pull_request_template.md +48 -0
  158. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  159. package/templates/.github/skills/prd/SKILL.md +0 -0
  160. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  161. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  162. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  163. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  164. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  165. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  166. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  167. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  168. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  169. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  170. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  171. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  172. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  214. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  215. package/templates/.vscode/settings.json +16 -16
  216. package/templates/AGENTS.md +59 -98
  217. package/templates/Backlog.md +80 -80
  218. package/assets/beth-portrait-small.txt +0 -13
  219. package/assets/beth-portrait.txt +0 -60
  220. package/bin/beth-animation.sh +0 -155
  221. package/bin/lib/animation.js +0 -189
  222. package/bin/lib/pathValidation.js +0 -233
  223. package/bin/lib/pathValidation.test.js +0 -280
@@ -1,60 +0,0 @@
1
-                                    ::*########%%%%%######%%%*=*                                     
2
-                                   *+#####%%%####%#%########%%%%*+. .=*+:                            
3
-                                 :*%%#%###%%%%%%%%%%###%%%###%%%%#######+ .:-.                       
4
-                                :###%#######%%%###**###%%%%%%%%%%%%###%#%#%#+**=                     
5
-                               -+**######%%%#%#*#####*####%%%%%%############+-+*:                    
6
-                              .=*######%%%%###**##*##%%***####%%%%############*#+                    
7
-                              =+*###*##%***#****##*********#***#%%%#############*++.                 
8
-                              =+####%%%****#*******+#++*+*+*++*##%%###********#####                  
9
-                             :=*###%%%#*###****+*+=++=+*+**#****#%%#%%%##+++*****##.                 
10
-                             #####%%%##%%%%%%%#***###**#+####*###%###%%%#*+==+******:                
11
-                            +###%%%%#%#%%%%%%%%%%#%%#%%%%%#*#*+++#*###%%%#**+==+**###=               
12
-                           -###%%%%##%##%%#####**###%####%#+*####*#***###%%%#*+=+**##*:.             
13
-                          .#%####%#######**+**++**+**+**###=####**##*+*##%####**+=**###=             
14
-                         -*#####%##***##**+**+++*=+**+*******#*#*+**#*####%####**+=+*##+             
15
-                         =########***#********+**++**+*****++***#+****###########*+=**##             
16
-                        :#########**#####**#******************+******+***##**####**++**#:            
17
-                       .##################*#*#*****##*****#*#**+******+*******#**#*+++*#.            
18
-                       *################***###*****###*******##++**+++++*********#***+**=            
19
-                       ########*****************+**###++******#*+**++++++*****+*******+*#-           
20
-                      :########*+***+***********+***#*++********++++++++==***++++****+++*.           
21
-                      -########*+++++++++****+*++*+***++****+***++++=++++=+**+++++***+****:          
22
-                  .:.:=######***+**++++++****+++***+**+=***+++***+=====+++=*++=+++***++****          
23
-                  ==:-#######*****+++++++****+++*+++**++**+++=*+*+===-===+++++=++*****+****          
24
-                  :+##*###****###+++++++*****+++*+++**==+++===+=++=--=====+++++++**++*****#          
25
-               .--+*-*#*##****##+++++++******++***+**+==++==-=+=++=-::=====++++=+**++++***#          
26
-                .-=*######***#*+++++++******+****++**=-++===:==-==-----=====+++=+**+*++**+           
27
-               .=:###*###******++*+++******+**+*++**+-++==--:-====-:---======++**********=           
28
-                =#*+#######*******++*********++++**+-=+==-:::-===-:-+=:--=--===+++****###:           
29
-                .-+########**+**+++*****+**++++***+===--::..:-=+-:::=+:::=+=-===++**####+            
30
-                :+########****+++++++=====-==+++====--:.....:-=-::--:----=++=-=+++**###+             
31
-              .*######%%###**++=---=====-::---=-===-:....::::-::::-:-::==-===-==++**##-              
32
-              .*+*########*+=+=----=-:......:-==+*+=-...:::::    .:::-:-=--=--=+++***-               
33
-              .*=.=##*##****++=--===:::=----=+++*#*+-::--.==-::.. .-==--+=:=--=++++*+                
34
-               :-. #**###***+====+***++=====+****#*+=-==+++==-:::---=++-+=====-++++*-                
35
-                 -=--+*###*+++===**############*##*+=-=++****++===+++**+=+*=+-:++**+-                
36
-                .-  -. **#*++++==*################*+=-=++*******+++++***=++=+=:++++*=                
37
-                     :-#*#*+++++=*################*++==++********++++**+=+==+++*+****                
38
-                       =+#**++*+=*################**+=-=+*******+++++**==+--+***+****                
39
-                       *#***+=**+**##########**###**+=:-=+******++++++++=+::****+****                
40
-                      :##***++=+==**########****###*++=:=+*****+++=====+=-::+***+***+                
41
-                      :##***+++**=+**########*+=+++-::-:-+***++++======+=-.:+**+++**:                
42
-                       #****+++**=++*******###+==-:. ...=++++++=====--==+-++***+++**                 
43
-                       ++*++++-+==+++******#####**=-..:-==++++====----=-+=+++*++++-                  
44
-                       =*++++*=-=++++++****######***=====+++===------=-=+=-+++**+*                   
45
-                       :*+++**++++++++*****######***++++=====-------==-==+=+++***=                   
46
-                       :*+++****+++++**********+++=====--==---=-----=====+++++***:                   
47
-                       .*++++*##***++*******++++=----:::...:-==----==--=++++++++*                    
48
-                        :++++*****++++*******+++++++==----:-==----==--=+=+=++::..                    
49
-                         =++++++*+===+********++=----:::-====-----==+ -==+==:                        
50
-                          :====++===:-+************+++=======----==++=+==-                           
51
-                           ===-:.::..:*++*****######****+++==-----==:.:=-:                           
52
-                         .--:.. .:-...**+=+****##******++===--:---=:. .=                             
53
-                     .:--:..  .:.::...+***+=++*****++++==--------==.. .:                             
54
-                  :-==--..   .:..-....-****+======----:::::------=....:.                             
55
-              .======-...   .....-....:*****++=---::::::.::-----=- ....-   :.                        
56
-              .--==-:..      ..:::.....=*****++==--:::...::-:---=  ... :.   ..                       
57
-              .==-:..    . ..::::.......*****+++==---::..::::--=.  ...  :   .  ...                   
58
-              .-:...       .::..........=*****+++===--:::::::-=.   ..   :    .  . .:-::              
59
-               ...          ............:*****+++++==--:::::--.    ..   .    .     ..::--:.          
60
-               ...         ..............+*****++++===-::::::.     ..    .         .:::::-:          
@@ -1,155 +0,0 @@
1
- #!/bin/bash
2
- # Beth Animation - "I don't speak dipshit. I speak in consequences."
3
-
4
- # Colors
5
- RESET="\033[0m"
6
- BOLD="\033[1m"
7
- DIM="\033[2m"
8
- AMBER="\033[38;2;218;165;32m"
9
- GOLD="\033[38;2;255;215;0m"
10
- WHITE="\033[38;2;255;255;255m"
11
-
12
- # Clear screen and hide cursor
13
- clear
14
- tput civis
15
-
16
- # Trap to restore cursor on exit
17
- trap 'tput cnorm; echo -e "${RESET}"' EXIT
18
-
19
- # Get terminal dimensions
20
- COLS=$(tput cols)
21
- LINES=$(tput lines)
22
-
23
- # Path to ASCII art
24
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
- ART_FILE="${SCRIPT_DIR}/../assets/beth-portrait.txt"
26
-
27
- # Beth's quotes
28
- QUOTES=(
29
- "I don't speak dipshit. I speak in consequences."
30
- "They broke my wings and forgot I had claws."
31
- "I believe in lovin' with your whole soul and destroying anything that wants to kill what you love."
32
- "I'm the trailer park. I'm the tornado."
33
- "Where's the fun in breaking one thing? When I fix something, I fix it for generations."
34
- "I made two decisions based on fear and they cost me everything. I'll never make another."
35
- "You want my opinion? You're getting it either way."
36
- )
37
-
38
- # Function to center text
39
- center_text() {
40
- local text="$1"
41
- local width=${#text}
42
- local padding=$(( (COLS - width) / 2 ))
43
- printf "%${padding}s%s\n" "" "$text"
44
- }
45
-
46
- # Function for typewriter effect
47
- typewriter() {
48
- local text="$1"
49
- local delay="${2:-0.03}"
50
- for (( i=0; i<${#text}; i++ )); do
51
- printf "%s" "${text:$i:1}"
52
- sleep "$delay"
53
- done
54
- echo
55
- }
56
-
57
- # Function to display glitch frame
58
- glitch_frame() {
59
- local lines_to_glitch=$((RANDOM % 3 + 1))
60
- for _ in $(seq 1 $lines_to_glitch); do
61
- local line=$((RANDOM % 20 + 5))
62
- tput cup $line 0
63
- echo -e "\033[38;2;$((RANDOM % 100));$((RANDOM % 50));$((RANDOM % 50))m$(head -c $((RANDOM % 40 + 10)) /dev/urandom | tr -dc '░▒▓█│┃┆┇┊┋')"
64
- done
65
- sleep 0.05
66
- }
67
-
68
- # Fade in effect - gradually reveal the image
69
- fade_in() {
70
- if [[ ! -f "$ART_FILE" ]]; then
71
- echo "Art file not found: $ART_FILE"
72
- return 1
73
- fi
74
-
75
- local total_lines=$(wc -l < "$ART_FILE")
76
-
77
- # First pass: dim reveal
78
- echo -e "${DIM}"
79
- clear
80
- cat "$ART_FILE"
81
- sleep 0.3
82
-
83
- # Second pass: normal brightness with slight delay
84
- clear
85
- cat "$ART_FILE"
86
- }
87
-
88
- # Main animation sequence
89
- main() {
90
- # Initial blackout with quote tease
91
- clear
92
- sleep 0.5
93
-
94
- # Glitch introduction
95
- for _ in {1..5}; do
96
- clear
97
- for _ in {1..10}; do
98
- local col=$((RANDOM % (COLS - 20)))
99
- local row=$((RANDOM % (LINES - 5) + 2))
100
- tput cup $row $col
101
- echo -e "\033[38;2;$((RANDOM % 150 + 100));$((RANDOM % 100 + 50));$((RANDOM % 50))m░▒▓█"
102
- done
103
- sleep 0.08
104
- done
105
-
106
- # Display the portrait
107
- clear
108
- if [[ -f "$ART_FILE" ]]; then
109
- cat "$ART_FILE"
110
- else
111
- echo "Portrait not found. Run from beth repository root."
112
- fi
113
-
114
- sleep 1
115
-
116
- # Add name below portrait
117
- echo
118
- echo -e "${GOLD}${BOLD}"
119
- center_text "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
120
- echo -e "${RESET}"
121
-
122
- echo -e "${AMBER}${BOLD}"
123
- center_text "B E T H"
124
- echo -e "${RESET}"
125
-
126
- echo -e "${DIM}${WHITE}"
127
- center_text "AI Agent Orchestrator"
128
- echo -e "${RESET}"
129
-
130
- echo -e "${GOLD}${BOLD}"
131
- center_text "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
132
- echo -e "${RESET}"
133
-
134
- sleep 0.5
135
-
136
- # Random quote with typewriter effect
137
- local quote="${QUOTES[$((RANDOM % ${#QUOTES[@]}))]}"
138
- echo
139
- echo -e "${AMBER}"
140
- printf " "
141
- typewriter "\"${quote}\"" 0.04
142
- echo -e "${RESET}"
143
-
144
- echo
145
- echo -e "${DIM}"
146
- center_text "Press any key to continue..."
147
- echo -e "${RESET}"
148
-
149
- read -n 1 -s
150
- }
151
-
152
- # Run if executed directly
153
- if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
154
- main
155
- fi