@pennyfarthing/cyclist 10.4.0 → 11.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 (384) hide show
  1. package/dist/api/agent-load.d.ts +1 -2
  2. package/dist/api/agent-load.d.ts.map +1 -1
  3. package/dist/api/agent-load.js +2 -123
  4. package/dist/api/agent-load.js.map +1 -1
  5. package/dist/api/audit-log.d.ts +1 -17
  6. package/dist/api/audit-log.d.ts.map +1 -1
  7. package/dist/api/audit-log.js +2 -162
  8. package/dist/api/audit-log.js.map +1 -1
  9. package/dist/api/background-tasks.d.ts +1 -26
  10. package/dist/api/background-tasks.d.ts.map +1 -1
  11. package/dist/api/background-tasks.js +2 -55
  12. package/dist/api/background-tasks.js.map +1 -1
  13. package/dist/api/bell.d.ts +1 -18
  14. package/dist/api/bell.d.ts.map +1 -1
  15. package/dist/api/bell.js +2 -33
  16. package/dist/api/bell.js.map +1 -1
  17. package/dist/api/code-markers.d.ts +1 -8
  18. package/dist/api/code-markers.d.ts.map +1 -1
  19. package/dist/api/code-markers.js +2 -61
  20. package/dist/api/code-markers.js.map +1 -1
  21. package/dist/api/complexity.d.ts +1 -2
  22. package/dist/api/complexity.d.ts.map +1 -1
  23. package/dist/api/complexity.js +2 -46
  24. package/dist/api/complexity.js.map +1 -1
  25. package/dist/api/context.d.ts +1 -37
  26. package/dist/api/context.d.ts.map +1 -1
  27. package/dist/api/context.js +2 -143
  28. package/dist/api/context.js.map +1 -1
  29. package/dist/api/dead-code.d.ts +1 -2
  30. package/dist/api/dead-code.d.ts.map +1 -1
  31. package/dist/api/dead-code.js +2 -69
  32. package/dist/api/dead-code.js.map +1 -1
  33. package/dist/api/dependencies.d.ts +1 -2
  34. package/dist/api/dependencies.d.ts.map +1 -1
  35. package/dist/api/dependencies.js +2 -42
  36. package/dist/api/dependencies.js.map +1 -1
  37. package/dist/api/evaluation.d.ts +1 -19
  38. package/dist/api/evaluation.d.ts.map +1 -1
  39. package/dist/api/evaluation.js +2 -127
  40. package/dist/api/evaluation.js.map +1 -1
  41. package/dist/api/file-browser.d.ts +1 -8
  42. package/dist/api/file-browser.d.ts.map +1 -1
  43. package/dist/api/file-browser.js +2 -114
  44. package/dist/api/file-browser.js.map +1 -1
  45. package/dist/api/git.d.ts +1 -46
  46. package/dist/api/git.d.ts.map +1 -1
  47. package/dist/api/git.js +2 -354
  48. package/dist/api/git.js.map +1 -1
  49. package/dist/api/health-score.d.ts +1 -2
  50. package/dist/api/health-score.d.ts.map +1 -1
  51. package/dist/api/health-score.js +2 -46
  52. package/dist/api/health-score.js.map +1 -1
  53. package/dist/api/hook-request.d.ts +1 -40
  54. package/dist/api/hook-request.d.ts.map +1 -1
  55. package/dist/api/hook-request.js +2 -277
  56. package/dist/api/hook-request.js.map +1 -1
  57. package/dist/api/hotspots.d.ts +1 -2
  58. package/dist/api/hotspots.d.ts.map +1 -1
  59. package/dist/api/hotspots.js +2 -61
  60. package/dist/api/hotspots.js.map +1 -1
  61. package/dist/api/identity.d.ts +1 -16
  62. package/dist/api/identity.d.ts.map +1 -1
  63. package/dist/api/identity.js +2 -78
  64. package/dist/api/identity.js.map +1 -1
  65. package/dist/api/index.d.ts +1 -34
  66. package/dist/api/index.d.ts.map +1 -1
  67. package/dist/api/index.js +2 -44
  68. package/dist/api/index.js.map +1 -1
  69. package/dist/api/mode.d.ts +1 -22
  70. package/dist/api/mode.d.ts.map +1 -1
  71. package/dist/api/mode.js +2 -37
  72. package/dist/api/mode.js.map +1 -1
  73. package/dist/api/otlp.d.ts +1 -2
  74. package/dist/api/otlp.d.ts.map +1 -1
  75. package/dist/api/otlp.js +2 -46
  76. package/dist/api/otlp.js.map +1 -1
  77. package/dist/api/permissions.d.ts +1 -15
  78. package/dist/api/permissions.d.ts.map +1 -1
  79. package/dist/api/permissions.js +2 -66
  80. package/dist/api/permissions.js.map +1 -1
  81. package/dist/api/persona.d.ts +1 -8
  82. package/dist/api/persona.d.ts.map +1 -1
  83. package/dist/api/persona.js +2 -67
  84. package/dist/api/persona.js.map +1 -1
  85. package/dist/api/portrait.d.ts +1 -5
  86. package/dist/api/portrait.d.ts.map +1 -1
  87. package/dist/api/portrait.js +2 -27
  88. package/dist/api/portrait.js.map +1 -1
  89. package/dist/api/settings.d.ts +1 -53
  90. package/dist/api/settings.d.ts.map +1 -1
  91. package/dist/api/settings.js +2 -464
  92. package/dist/api/settings.js.map +1 -1
  93. package/dist/api/spans.d.ts +1 -16
  94. package/dist/api/spans.d.ts.map +1 -1
  95. package/dist/api/spans.js +2 -244
  96. package/dist/api/spans.js.map +1 -1
  97. package/dist/api/stats.d.ts +1 -12
  98. package/dist/api/stats.d.ts.map +1 -1
  99. package/dist/api/stats.js +2 -84
  100. package/dist/api/stats.js.map +1 -1
  101. package/dist/api/story.d.ts +1 -2
  102. package/dist/api/story.d.ts.map +1 -1
  103. package/dist/api/story.js +2 -14
  104. package/dist/api/story.js.map +1 -1
  105. package/dist/api/telemetry.d.ts +1 -18
  106. package/dist/api/telemetry.d.ts.map +1 -1
  107. package/dist/api/telemetry.js +2 -164
  108. package/dist/api/telemetry.js.map +1 -1
  109. package/dist/api/theme-agents.d.ts +1 -60
  110. package/dist/api/theme-agents.d.ts.map +1 -1
  111. package/dist/api/theme-agents.js +2 -213
  112. package/dist/api/theme-agents.js.map +1 -1
  113. package/dist/api/todos.d.ts +1 -32
  114. package/dist/api/todos.d.ts.map +1 -1
  115. package/dist/api/todos.js +2 -43
  116. package/dist/api/todos.js.map +1 -1
  117. package/dist/api/token-stats.d.ts +1 -7
  118. package/dist/api/token-stats.d.ts.map +1 -1
  119. package/dist/api/token-stats.js +2 -35
  120. package/dist/api/token-stats.js.map +1 -1
  121. package/dist/api/welcome.d.ts +1 -21
  122. package/dist/api/welcome.d.ts.map +1 -1
  123. package/dist/api/welcome.js +2 -34
  124. package/dist/api/welcome.js.map +1 -1
  125. package/dist/bikerack.js +2 -2
  126. package/dist/bikerack.js.map +1 -1
  127. package/dist/env.d.ts +6 -0
  128. package/dist/env.d.ts.map +1 -0
  129. package/dist/env.js +10 -0
  130. package/dist/env.js.map +1 -0
  131. package/dist/focus.d.ts +53 -0
  132. package/dist/focus.d.ts.map +1 -0
  133. package/dist/focus.js +122 -0
  134. package/dist/focus.js.map +1 -0
  135. package/dist/git-cache.d.ts +1 -0
  136. package/dist/git-cache.d.ts.map +1 -1
  137. package/dist/git-cache.js +3 -1
  138. package/dist/git-cache.js.map +1 -1
  139. package/dist/menu-builder.d.ts.map +1 -1
  140. package/dist/menu-builder.js +0 -1
  141. package/dist/menu-builder.js.map +1 -1
  142. package/dist/prime.d.ts +3 -3
  143. package/dist/prime.d.ts.map +1 -1
  144. package/dist/prime.js +38 -14
  145. package/dist/prime.js.map +1 -1
  146. package/dist/public/css/react.css +1 -1
  147. package/dist/public/js/react/react.js +53 -61
  148. package/dist/server.d.ts +18 -85
  149. package/dist/server.d.ts.map +1 -1
  150. package/dist/server.js +105 -405
  151. package/dist/server.js.map +1 -1
  152. package/dist/sprint-data.d.ts +1 -1
  153. package/dist/sprint-data.d.ts.map +1 -1
  154. package/dist/sprint-data.js +2 -2
  155. package/dist/sprint-data.js.map +1 -1
  156. package/dist/theme-metadata.d.ts +3 -3
  157. package/dist/theme-metadata.d.ts.map +1 -1
  158. package/dist/theme-metadata.js +4 -4
  159. package/dist/theme-metadata.js.map +1 -1
  160. package/dist/websocket.d.ts +2 -0
  161. package/dist/websocket.d.ts.map +1 -1
  162. package/dist/websocket.js +53 -75
  163. package/dist/websocket.js.map +1 -1
  164. package/package.json +2 -6
  165. package/portraits/hogans-heroes/large/burkhalter-35312.png +0 -0
  166. package/portraits/hogans-heroes/large/carter-34352.png +0 -0
  167. package/portraits/hogans-heroes/large/hochstetter-45314.png +0 -0
  168. package/portraits/hogans-heroes/large/hogan-44541.png +0 -0
  169. package/portraits/hogans-heroes/large/kinch-35241.png +0 -0
  170. package/portraits/hogans-heroes/large/klink-23434.png +0 -0
  171. package/portraits/hogans-heroes/large/lebeau-45443.png +0 -0
  172. package/portraits/hogans-heroes/large/marya-53543.png +0 -0
  173. package/portraits/hogans-heroes/large/newkirk-54432.png +0 -0
  174. package/portraits/hogans-heroes/large/schultz-42453.png +0 -0
  175. package/portraits/hogans-heroes/large/underground-55131.png +0 -0
  176. package/portraits/hogans-heroes/medium/burkhalter-35312.png +0 -0
  177. package/portraits/hogans-heroes/medium/carter-34352.png +0 -0
  178. package/portraits/hogans-heroes/medium/hochstetter-45314.png +0 -0
  179. package/portraits/hogans-heroes/medium/hogan-44541.png +0 -0
  180. package/portraits/hogans-heroes/medium/kinch-35241.png +0 -0
  181. package/portraits/hogans-heroes/medium/klink-23434.png +0 -0
  182. package/portraits/hogans-heroes/medium/lebeau-45443.png +0 -0
  183. package/portraits/hogans-heroes/medium/marya-53543.png +0 -0
  184. package/portraits/hogans-heroes/medium/newkirk-54432.png +0 -0
  185. package/portraits/hogans-heroes/medium/schultz-42453.png +0 -0
  186. package/portraits/hogans-heroes/medium/underground-55131.png +0 -0
  187. package/portraits/monty-python/large/announcer-44441.png +0 -0
  188. package/portraits/monty-python/large/arguer-35412.png +0 -0
  189. package/portraits/monty-python/large/bicycle-repair-man-35241.png +0 -0
  190. package/portraits/monty-python/large/colonel-35423.png +0 -0
  191. package/portraits/monty-python/large/counsellor-45341.png +0 -0
  192. package/portraits/monty-python/large/gumbys-23524.png +0 -0
  193. package/portraits/monty-python/large/nudge-43533.png +0 -0
  194. package/portraits/monty-python/large/praline-45413.png +0 -0
  195. package/portraits/monty-python/large/silly-walks-55322.png +0 -0
  196. package/portraits/monty-python/large/wensleydale-54451.png +0 -0
  197. package/portraits/monty-python/large/xim-nez-43534.png +0 -0
  198. package/portraits/monty-python/medium/announcer-44441.png +0 -0
  199. package/portraits/monty-python/medium/arguer-35412.png +0 -0
  200. package/portraits/monty-python/medium/bicycle-repair-man-35241.png +0 -0
  201. package/portraits/monty-python/medium/colonel-35423.png +0 -0
  202. package/portraits/monty-python/medium/counsellor-45341.png +0 -0
  203. package/portraits/monty-python/medium/gumbys-23524.png +0 -0
  204. package/portraits/monty-python/medium/nudge-43533.png +0 -0
  205. package/portraits/monty-python/medium/praline-45413.png +0 -0
  206. package/portraits/monty-python/medium/silly-walks-55322.png +0 -0
  207. package/portraits/monty-python/medium/wensleydale-54451.png +0 -0
  208. package/portraits/monty-python/medium/xim-nez-43534.png +0 -0
  209. package/portraits/stephen-king/large/andy-55231.png +0 -0
  210. package/portraits/stephen-king/large/christine-25112.png +0 -0
  211. package/portraits/stephen-king/large/danny-53243.png +0 -0
  212. package/portraits/stephen-king/large/flagg-55311.png +0 -0
  213. package/portraits/stephen-king/large/gaunt-54421.png +0 -0
  214. package/portraits/stephen-king/large/jack-44224.png +0 -0
  215. package/portraits/stephen-king/large/johnny-44353.png +0 -0
  216. package/portraits/stephen-king/large/margaret-15415.png +0 -0
  217. package/portraits/stephen-king/large/paul-45233.png +0 -0
  218. package/portraits/stephen-king/large/pennywise-54411.png +0 -0
  219. package/portraits/stephen-king/large/roland-35121.png +0 -0
  220. package/portraits/stephen-king/medium/andy-55231.png +0 -0
  221. package/portraits/stephen-king/medium/christine-25112.png +0 -0
  222. package/portraits/stephen-king/medium/danny-53243.png +0 -0
  223. package/portraits/stephen-king/medium/flagg-55311.png +0 -0
  224. package/portraits/stephen-king/medium/gaunt-54421.png +0 -0
  225. package/portraits/stephen-king/medium/jack-44224.png +0 -0
  226. package/portraits/stephen-king/medium/johnny-44353.png +0 -0
  227. package/portraits/stephen-king/medium/margaret-15415.png +0 -0
  228. package/portraits/stephen-king/medium/paul-45233.png +0 -0
  229. package/portraits/stephen-king/medium/pennywise-54411.png +0 -0
  230. package/portraits/stephen-king/medium/roland-35121.png +0 -0
  231. package/portraits/star-trek-tng/large/beverly-44352.png +0 -0
  232. package/portraits/star-trek-tng/large/data-55241.png +0 -0
  233. package/portraits/star-trek-tng/large/deanna-43353.png +0 -0
  234. package/portraits/star-trek-tng/large/geordi-54342.png +0 -0
  235. package/portraits/star-trek-tng/large/jean-luc-45342.png +0 -0
  236. package/portraits/star-trek-tng/large/kathryn-45332.png +0 -0
  237. package/portraits/star-trek-tng/large/miles-35342.png +0 -0
  238. package/portraits/star-trek-tng/large/q-53521.png +0 -0
  239. package/portraits/star-trek-tng/large/spock-45231.png +0 -0
  240. package/portraits/star-trek-tng/large/troi-44352.png +0 -0
  241. package/portraits/star-trek-tng/medium/beverly-44352.png +0 -0
  242. package/portraits/star-trek-tng/medium/data-55241.png +0 -0
  243. package/portraits/star-trek-tng/medium/deanna-43353.png +0 -0
  244. package/portraits/star-trek-tng/medium/geordi-54342.png +0 -0
  245. package/portraits/star-trek-tng/medium/jean-luc-45342.png +0 -0
  246. package/portraits/star-trek-tng/medium/kathryn-45332.png +0 -0
  247. package/portraits/star-trek-tng/medium/miles-35342.png +0 -0
  248. package/portraits/star-trek-tng/medium/q-53521.png +0 -0
  249. package/portraits/star-trek-tng/medium/spock-45231.png +0 -0
  250. package/portraits/star-trek-tng/medium/troi-44352.png +0 -0
  251. package/src/public/App.tsx +0 -340
  252. package/src/public/components/AgentLoadDialog.tsx +0 -202
  253. package/src/public/components/AgentPopup.tsx +0 -308
  254. package/src/public/components/ApprovalModal/ApprovalModal.css +0 -35
  255. package/src/public/components/ApprovalModal/index.tsx +0 -632
  256. package/src/public/components/BikeRackIndex.tsx +0 -54
  257. package/src/public/components/BikeRackWorkspace.tsx +0 -142
  258. package/src/public/components/CommandPalette.tsx +0 -555
  259. package/src/public/components/ConfirmDialog.tsx +0 -168
  260. package/src/public/components/ContextIndicator/ContextIndicator.css +0 -85
  261. package/src/public/components/ContextIndicator/index.tsx +0 -330
  262. package/src/public/components/ContextSparkline.tsx +0 -56
  263. package/src/public/components/ControlBar.tsx +0 -636
  264. package/src/public/components/DeadCodeDialog.tsx +0 -169
  265. package/src/public/components/DiffViewer.tsx +0 -585
  266. package/src/public/components/DockviewWorkspace.tsx +0 -737
  267. package/src/public/components/Editor.tsx +0 -630
  268. package/src/public/components/ErrorBoundary.tsx +0 -67
  269. package/src/public/components/FileTree.tsx +0 -379
  270. package/src/public/components/FontPicker/FontPicker.css +0 -276
  271. package/src/public/components/FontPicker/index.tsx +0 -430
  272. package/src/public/components/FullFileTree.tsx +0 -237
  273. package/src/public/components/HealthGauge.tsx +0 -181
  274. package/src/public/components/Message.tsx +0 -225
  275. package/src/public/components/MessageList.tsx +0 -98
  276. package/src/public/components/MessageView.tsx +0 -400
  277. package/src/public/components/ModeSwitch/ModeSwitch.css +0 -165
  278. package/src/public/components/ModeSwitch/index.tsx +0 -372
  279. package/src/public/components/PersonaHeader.tsx +0 -240
  280. package/src/public/components/QuickActions.tsx +0 -267
  281. package/src/public/components/SpanTimeline.tsx +0 -352
  282. package/src/public/components/StandalonePanel.tsx +0 -84
  283. package/src/public/components/StatsStrip.tsx +0 -162
  284. package/src/public/components/StreamingContent.tsx +0 -77
  285. package/src/public/components/SubagentSpan.tsx +0 -180
  286. package/src/public/components/TandemPortrait.tsx +0 -72
  287. package/src/public/components/ThemePalette/ThemePalette.css +0 -179
  288. package/src/public/components/ThemePalette/index.tsx +0 -326
  289. package/src/public/components/ToolCallBlock.tsx +0 -252
  290. package/src/public/components/ToolStack.tsx +0 -209
  291. package/src/public/components/ToolStatus.tsx +0 -57
  292. package/src/public/components/dialogs/CodeMarkersDialog.tsx +0 -169
  293. package/src/public/components/dialogs/ComplexityDialog.tsx +0 -163
  294. package/src/public/components/dialogs/DependenciesDialog.tsx +0 -120
  295. package/src/public/components/dialogs/HotspotsDialog.tsx +0 -451
  296. package/src/public/components/dialogs/ToolDialog.tsx +0 -43
  297. package/src/public/components/panel-registry.ts +0 -11
  298. package/src/public/components/panels/ACPanel.tsx +0 -93
  299. package/src/public/components/panels/AcceptanceCriteriaPanel.tsx +0 -104
  300. package/src/public/components/panels/AuditLogPanel.tsx +0 -465
  301. package/src/public/components/panels/BackgroundPanel.tsx +0 -115
  302. package/src/public/components/panels/BikeLanePanel.tsx +0 -214
  303. package/src/public/components/panels/ChangedPanel.tsx +0 -65
  304. package/src/public/components/panels/DebugPanel.tsx +0 -344
  305. package/src/public/components/panels/DiffsPanel.tsx +0 -155
  306. package/src/public/components/panels/GitPanel.tsx +0 -216
  307. package/src/public/components/panels/HotspotsPanel.tsx +0 -365
  308. package/src/public/components/panels/MessagePanel.tsx +0 -497
  309. package/src/public/components/panels/SettingsPanel.tsx +0 -453
  310. package/src/public/components/panels/SprintPanel.tsx +0 -670
  311. package/src/public/components/panels/TTYPanel.tsx +0 -299
  312. package/src/public/components/panels/TodoPanel.tsx +0 -142
  313. package/src/public/components/panels/WorkflowPanel.tsx +0 -224
  314. package/src/public/components/panels/index.ts +0 -24
  315. package/src/public/components/ui/alert-dialog.tsx +0 -139
  316. package/src/public/components/ui/badge.tsx +0 -36
  317. package/src/public/components/ui/button.tsx +0 -57
  318. package/src/public/components/ui/checkbox.tsx +0 -28
  319. package/src/public/components/ui/collapsible.tsx +0 -9
  320. package/src/public/components/ui/command.tsx +0 -151
  321. package/src/public/components/ui/dialog.tsx +0 -120
  322. package/src/public/components/ui/popover.tsx +0 -31
  323. package/src/public/components/ui/progress.tsx +0 -28
  324. package/src/public/components/ui/scroll-area.tsx +0 -46
  325. package/src/public/components/ui/select.tsx +0 -157
  326. package/src/public/components/ui/separator.tsx +0 -29
  327. package/src/public/components/ui/skeleton.tsx +0 -15
  328. package/src/public/components/ui/switch.tsx +0 -27
  329. package/src/public/components/ui/toggle-group.tsx +0 -59
  330. package/src/public/components/ui/toggle.tsx +0 -43
  331. package/src/public/components/ui/tooltip.tsx +0 -30
  332. package/src/public/contexts/ClaudeContext.tsx +0 -311
  333. package/src/public/contexts/MessageQueueContext.tsx +0 -143
  334. package/src/public/css/theme-browser.css +0 -550
  335. package/src/public/css/theme-system.css +0 -630
  336. package/src/public/hooks/index.ts +0 -49
  337. package/src/public/hooks/useAgentLoad.ts +0 -105
  338. package/src/public/hooks/useBackgroundTasks.ts +0 -131
  339. package/src/public/hooks/useClaude.ts +0 -234
  340. package/src/public/hooks/useCodeMarkers.ts +0 -101
  341. package/src/public/hooks/useColorScheme.ts +0 -42
  342. package/src/public/hooks/useCommandHistory.ts +0 -99
  343. package/src/public/hooks/useComplexity.ts +0 -80
  344. package/src/public/hooks/useDeadCode.ts +0 -99
  345. package/src/public/hooks/useDependencies.ts +0 -82
  346. package/src/public/hooks/useDiffs.ts +0 -143
  347. package/src/public/hooks/useFileBrowser.ts +0 -71
  348. package/src/public/hooks/useGitStatus.ts +0 -233
  349. package/src/public/hooks/useHealthScore.ts +0 -69
  350. package/src/public/hooks/useHotspots.ts +0 -123
  351. package/src/public/hooks/useLayoutPersistence.ts +0 -138
  352. package/src/public/hooks/useMarkdownParser.ts +0 -36
  353. package/src/public/hooks/useMarkerActions.ts +0 -234
  354. package/src/public/hooks/useMessageQueue.ts +0 -380
  355. package/src/public/hooks/useMessageStream.ts +0 -131
  356. package/src/public/hooks/usePersona.ts +0 -112
  357. package/src/public/hooks/usePlanModeExit.ts +0 -105
  358. package/src/public/hooks/useResponsiveLayout.ts +0 -173
  359. package/src/public/hooks/useSprint.ts +0 -147
  360. package/src/public/hooks/useStatsStrip.ts +0 -204
  361. package/src/public/hooks/useStory.ts +0 -135
  362. package/src/public/hooks/useSubagentHelper.ts +0 -64
  363. package/src/public/hooks/useSyntaxHighlighter.ts +0 -52
  364. package/src/public/hooks/useTabCompletion.ts +0 -124
  365. package/src/public/hooks/useTodos.ts +0 -93
  366. package/src/public/hooks/useUserAvatar.ts +0 -54
  367. package/src/public/index.tsx +0 -10
  368. package/src/public/lib/utils.ts +0 -6
  369. package/src/public/styles/dockview-theme.css +0 -459
  370. package/src/public/styles/tailwind.css +0 -4396
  371. package/src/public/types/electron.d.ts +0 -18
  372. package/src/public/types/message.ts +0 -51
  373. package/src/public/utils/avatar-service.ts +0 -73
  374. package/src/public/utils/color-presets.ts +0 -940
  375. package/src/public/utils/font-presets.ts +0 -362
  376. package/src/public/utils/formatDuration.ts +0 -14
  377. package/src/public/utils/markdown.ts +0 -249
  378. package/src/public/utils/messageFilters.ts +0 -128
  379. package/src/public/utils/slash-commands.ts +0 -353
  380. package/src/public/utils/subagent-display.ts +0 -146
  381. package/src/public/utils/syntax.ts +0 -219
  382. package/src/public/utils/toolIntentSummarizer.ts +0 -199
  383. package/src/public/utils/toolStackGrouper.ts +0 -106
  384. package/src/public/utils/toolTypeColors.ts +0 -45
@@ -1,308 +0,0 @@
1
- /**
2
- * AgentPopup Component
3
- *
4
- * Two-panel popup showing team roster and agent details.
5
- * Story MSSCI-12403: Team roster with hover preview
6
- *
7
- * Features:
8
- * - Left panel: Team roster with all agents in theme
9
- * - Right panel: Agent details (character, style, background, quirks)
10
- * - Hover to preview different agents
11
- * - Click to switch to different agent
12
- * - Portrait display with fallback
13
- */
14
-
15
- import React, { useState, useEffect, useCallback, useRef } from 'react';
16
- import { Button } from '@/components/ui/button';
17
- import { Skeleton } from '@/components/ui/skeleton';
18
- import { Badge } from '@/components/ui/badge';
19
- import { Separator } from '@/components/ui/separator';
20
- import { useClaudeContext } from '../contexts/ClaudeContext';
21
-
22
- // =============================================================================
23
- // Types
24
- // =============================================================================
25
-
26
- interface EnhancedThemeAgent {
27
- role: string;
28
- character: string;
29
- shortName?: string;
30
- style: string;
31
- background: string;
32
- quirks: string[];
33
- slug: string;
34
- lift?: number;
35
- ocean?: { O: number; C: number; E: number; A: number; N: number };
36
- }
37
-
38
- interface EnhancedThemeData {
39
- theme: string;
40
- themeName: string;
41
- tier: 'S' | 'A' | 'B' | 'C' | null;
42
- agents: EnhancedThemeAgent[];
43
- }
44
-
45
- interface AgentPopupProps {
46
- isOpen: boolean;
47
- onClose: () => void;
48
- currentRole: string | null;
49
- currentTheme: string | null;
50
- }
51
-
52
- // Agent colors matching CLI statusbar
53
- const AGENT_COLORS: Record<string, string> = {
54
- pm: '#a78bfa',
55
- sm: '#60a5fa',
56
- dev: '#4ade80',
57
- tea: '#2dd4bf',
58
- reviewer: '#f87171',
59
- architect: '#fb923c',
60
- devops: '#22d3ee',
61
- 'ux-designer': '#f0abfc',
62
- 'tech-writer': '#e5e5e5',
63
- orchestrator: '#e879f9',
64
- ba: '#a3e635',
65
- };
66
-
67
- // =============================================================================
68
- // Component
69
- // =============================================================================
70
-
71
- export function AgentPopup({ isOpen, onClose, currentRole, currentTheme }: AgentPopupProps): React.ReactElement | null {
72
- const [themeData, setThemeData] = useState<EnhancedThemeData | null>(null);
73
- const [previewedAgent, setPreviewedAgent] = useState<EnhancedThemeAgent | null>(null);
74
- const [loading, setLoading] = useState(false);
75
- const [portraitError, setPortraitError] = useState(false);
76
- const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout>>();
77
- const { send } = useClaudeContext();
78
-
79
- // Fetch theme data when popup opens
80
- useEffect(() => {
81
- if (!isOpen) return;
82
-
83
- setLoading(true);
84
- fetch('/api/theme-agents/full')
85
- .then(res => res.ok ? res.json() : null)
86
- .then((data: EnhancedThemeData | null) => {
87
- setThemeData(data);
88
- setPreviewedAgent(null);
89
- setLoading(false);
90
- })
91
- .catch(() => setLoading(false));
92
- }, [isOpen]);
93
-
94
- // Reset portrait error when agent changes
95
- useEffect(() => {
96
- setPortraitError(false);
97
- }, [previewedAgent]);
98
-
99
- // Handle escape key
100
- useEffect(() => {
101
- if (!isOpen) return;
102
-
103
- const handleKeyDown = (e: KeyboardEvent) => {
104
- if (e.key === 'Escape') {
105
- onClose();
106
- }
107
- };
108
-
109
- document.addEventListener('keydown', handleKeyDown);
110
- return () => document.removeEventListener('keydown', handleKeyDown);
111
- }, [isOpen, onClose]);
112
-
113
- // Handle hover preview with debounce
114
- const handleMouseEnter = useCallback((agent: EnhancedThemeAgent) => {
115
- if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
116
- hoverTimeoutRef.current = setTimeout(() => {
117
- setPreviewedAgent(agent);
118
- }, 100);
119
- }, []);
120
-
121
- const handleMouseLeave = useCallback(() => {
122
- if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
123
- hoverTimeoutRef.current = setTimeout(() => {
124
- setPreviewedAgent(null);
125
- }, 200);
126
- }, []);
127
-
128
- // Handle agent click - switch to agent
129
- const handleAgentClick = useCallback((agent: EnhancedThemeAgent) => {
130
- if (agent.role === currentRole) return;
131
-
132
- // Send slash command to switch agent
133
- const command = `/${agent.role}`;
134
- send(command);
135
- onClose();
136
- }, [currentRole, send, onClose]);
137
-
138
- if (!isOpen) return null;
139
-
140
- // Determine which agent to display in details panel
141
- const displayAgent = previewedAgent || themeData?.agents.find(a => a.role === currentRole) || themeData?.agents[0];
142
-
143
- return (
144
- <>
145
- {/* Backdrop */}
146
- <div
147
- className="agent-popup-backdrop"
148
- onClick={onClose}
149
- aria-hidden="true"
150
- />
151
-
152
- {/* Popup */}
153
- <div
154
- className="agent-popup"
155
- role="dialog"
156
- aria-modal="true"
157
- aria-labelledby="agent-popup-title"
158
- >
159
- {loading ? (
160
- <div className="agent-popup-loading p-4 space-y-3">
161
- <Skeleton className="h-6 w-40" />
162
- <Separator />
163
- <div className="flex gap-4">
164
- <div className="space-y-2 flex-shrink-0" style={{ width: 160 }}>
165
- <Skeleton className="h-5 w-12" />
166
- <Skeleton className="h-8 w-full" />
167
- <Skeleton className="h-8 w-full" />
168
- <Skeleton className="h-8 w-full" />
169
- <Skeleton className="h-8 w-full" />
170
- </div>
171
- <div className="space-y-3 flex-1">
172
- <Skeleton className="h-24 w-24 rounded-full mx-auto" />
173
- <Skeleton className="h-5 w-32 mx-auto" />
174
- <Skeleton className="h-4 w-full" />
175
- <Skeleton className="h-4 w-3/4" />
176
- </div>
177
- </div>
178
- </div>
179
- ) : !themeData ? (
180
- <div className="agent-popup-error">Failed to load theme data</div>
181
- ) : (
182
- <>
183
- {/* Header */}
184
- <div className="agent-popup-header">
185
- <h2 id="agent-popup-title" className="agent-popup-theme">
186
- {themeData.themeName}
187
- <Badge variant="secondary" className={`tier-badge ${themeData.tier ? `tier-${themeData.tier.toLowerCase()}` : 'tier-unranked'}`}>
188
- {themeData.tier || 'Unranked'}
189
- </Badge>
190
- </h2>
191
- <Button
192
- variant="ghost"
193
- size="icon"
194
- className="agent-popup-close"
195
- onClick={onClose}
196
- aria-label="Close popup"
197
- >
198
- ×
199
- </Button>
200
- </div>
201
-
202
- <Separator className="my-1" />
203
-
204
- {/* Two-panel content */}
205
- <div className="agent-popup-content">
206
- {/* Left: Team Roster */}
207
- <div className="agent-popup-roster">
208
- <h3 className="roster-title">Team</h3>
209
- <ul className="roster-list" role="listbox">
210
- {themeData.agents.map(agent => {
211
- const isCurrent = agent.role === currentRole;
212
- const isPreviewing = previewedAgent?.role === agent.role;
213
- const roleColor = AGENT_COLORS[agent.role] || '#888';
214
-
215
- return (
216
- <li
217
- key={agent.role}
218
- className={`roster-item ${isCurrent ? 'current' : ''} ${isPreviewing ? 'previewing' : ''}`}
219
- role="option"
220
- aria-selected={isCurrent}
221
- onMouseEnter={() => handleMouseEnter(agent)}
222
- onMouseLeave={handleMouseLeave}
223
- onClick={() => handleAgentClick(agent)}
224
- >
225
- <span className="roster-character">{agent.character}</span>
226
- <span
227
- className="roster-role"
228
- style={{ backgroundColor: roleColor }}
229
- >
230
- {agent.role}
231
- </span>
232
- {isCurrent && <span className="roster-current-marker">●</span>}
233
- </li>
234
- );
235
- })}
236
- </ul>
237
- </div>
238
-
239
- {/* Right: Agent Details */}
240
- <div className="agent-popup-details" data-testid="agent-popup-details">
241
- {displayAgent && (
242
- <>
243
- {/* Portrait */}
244
- <div className="popup-portrait" data-testid="popup-portrait">
245
- {!portraitError && currentTheme ? (
246
- <img
247
- src={`/portraits/${currentTheme}/large/${displayAgent.slug}.png`}
248
- alt={displayAgent.character}
249
- onError={() => setPortraitError(true)}
250
- />
251
- ) : (
252
- <div className="portrait-placeholder">🤖</div>
253
- )}
254
- </div>
255
-
256
- {/* Character Name */}
257
- <h3 className="popup-character">{displayAgent.character}</h3>
258
-
259
- {/* Role Mapping */}
260
- <div className="popup-role-mapping">
261
- <Badge
262
- variant="default"
263
- className="role-badge"
264
- style={{ backgroundColor: AGENT_COLORS[displayAgent.role] || '#888' }}
265
- >
266
- {displayAgent.role}
267
- </Badge>
268
- → {displayAgent.character}
269
- </div>
270
-
271
- {/* Details */}
272
- <div className="popup-detail" data-testid="popup-detail-style">
273
- <label>Style:</label>
274
- <span>{displayAgent.style || '—'}</span>
275
- </div>
276
-
277
- <div className="popup-detail" data-testid="popup-detail-background">
278
- <label>Background:</label>
279
- <span>{displayAgent.background || '—'}</span>
280
- </div>
281
-
282
- {displayAgent.quirks.length > 0 && (
283
- <div className="popup-detail" data-testid="popup-detail-quirks">
284
- <label>Quirks:</label>
285
- <span>{displayAgent.quirks.join(', ')}</span>
286
- </div>
287
- )}
288
-
289
- {displayAgent.lift !== undefined && (
290
- <div className="popup-detail">
291
- <label>Lift:</label>
292
- <span className={`lift-value ${displayAgent.lift >= 0 ? 'positive' : 'negative'}`}>
293
- {displayAgent.lift >= 0 ? '+' : ''}{displayAgent.lift.toFixed(1)}
294
- </span>
295
- </div>
296
- )}
297
- </>
298
- )}
299
- </div>
300
- </div>
301
- </>
302
- )}
303
- </div>
304
- </>
305
- );
306
- }
307
-
308
- export default AgentPopup;
@@ -1,35 +0,0 @@
1
- /**
2
- * ApprovalModal Component Styles
3
- * MSSCI-12713 - ApprovalModal Component
4
- *
5
- * Most styling is now handled by shadcn primitives and Tailwind utilities.
6
- * This file retains only the command preview and icon styles.
7
- */
8
-
9
- /* ============================================================================
10
- Icon (data-icon attribute styling)
11
- ============================================================================ */
12
-
13
- .approval-modal__icon {
14
- width: 1rem;
15
- height: 1rem;
16
- opacity: 0.7;
17
- }
18
-
19
- /* ============================================================================
20
- Command Preview
21
- ============================================================================ */
22
-
23
- .approval-modal__preview {
24
- margin: 0;
25
- padding: 0.75rem;
26
- background-color: var(--color-surface-dark, hsl(var(--muted)));
27
- border-radius: var(--radius, 0.25rem);
28
- font-family: var(--font-mono, 'SF Mono', 'Monaco', 'Consolas', monospace);
29
- font-size: 0.875rem;
30
- color: hsl(var(--foreground));
31
- white-space: pre-wrap;
32
- word-break: break-word;
33
- max-height: 200px;
34
- overflow-y: auto;
35
- }