@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,143 +0,0 @@
1
- /**
2
- * MessageQueueContext
3
- *
4
- * React context for shared message queue state.
5
- * Story MSSCI-14191 - Bug fix for dual hook instances
6
- *
7
- * THE BUG: Editor.tsx and MessagePanel.tsx each called useMessageQueue() separately,
8
- * creating TWO independent state instances. Editor displayed the queue correctly,
9
- * but MessagePanel's injectMessage and handleTurnComplete operated on an empty queue.
10
- *
11
- * THE FIX: This context wraps useMessageQueue and provides a single shared instance
12
- * to all components that need queue access.
13
- */
14
-
15
- import React, { createContext, useContext, useMemo } from 'react';
16
- import {
17
- useMessageQueue,
18
- QueuedMessage,
19
- BellConsumedCallback,
20
- InjectDependencies,
21
- } from '../hooks/useMessageQueue';
22
-
23
- // =============================================================================
24
- // Types
25
- // =============================================================================
26
-
27
- interface MessageQueueContextValue {
28
- queue: QueuedMessage[];
29
- queueCount: number;
30
- isProcessing: boolean;
31
- bellMode: boolean;
32
- queuePaused: boolean;
33
- queueMessage: (message: QueuedMessage) => boolean;
34
- dequeueMessage: () => QueuedMessage | null;
35
- removeFromQueue: (index: number) => void;
36
- clearQueue: () => void;
37
- setProcessing: (value: boolean) => void;
38
- setBellMode: (value: boolean) => void;
39
- pauseQueue: () => void;
40
- resumeQueue: () => void;
41
- handleTurnComplete: (onSubmit: (text: string, images: QueuedMessage['images']) => void) => void;
42
- onBellConsumed: (callback: BellConsumedCallback) => () => void;
43
- injectMessage: (index: number, deps: InjectDependencies) => Promise<boolean>;
44
- }
45
-
46
- // =============================================================================
47
- // Context
48
- // =============================================================================
49
-
50
- const MessageQueueContext = createContext<MessageQueueContextValue | null>(null);
51
-
52
- // =============================================================================
53
- // Provider
54
- // =============================================================================
55
-
56
- interface MessageQueueProviderProps {
57
- children: React.ReactNode;
58
- }
59
-
60
- export function MessageQueueProvider({ children }: MessageQueueProviderProps): React.ReactElement {
61
- // Single instance of useMessageQueue for the entire app
62
- const {
63
- queue,
64
- queueCount,
65
- isProcessing,
66
- bellMode,
67
- queuePaused,
68
- queueMessage,
69
- dequeueMessage,
70
- removeFromQueue,
71
- clearQueue,
72
- setProcessing,
73
- setBellMode,
74
- pauseQueue,
75
- resumeQueue,
76
- handleTurnComplete,
77
- onBellConsumed,
78
- injectMessage,
79
- } = useMessageQueue();
80
-
81
- const value = useMemo(() => ({
82
- queue,
83
- queueCount,
84
- isProcessing,
85
- bellMode,
86
- queuePaused,
87
- queueMessage,
88
- dequeueMessage,
89
- removeFromQueue,
90
- clearQueue,
91
- setProcessing,
92
- setBellMode,
93
- pauseQueue,
94
- resumeQueue,
95
- handleTurnComplete,
96
- onBellConsumed,
97
- injectMessage,
98
- }), [
99
- queue,
100
- queueCount,
101
- isProcessing,
102
- bellMode,
103
- queuePaused,
104
- queueMessage,
105
- dequeueMessage,
106
- removeFromQueue,
107
- clearQueue,
108
- setProcessing,
109
- setBellMode,
110
- pauseQueue,
111
- resumeQueue,
112
- handleTurnComplete,
113
- onBellConsumed,
114
- injectMessage,
115
- ]);
116
-
117
- return (
118
- <MessageQueueContext.Provider value={value}>
119
- {children}
120
- </MessageQueueContext.Provider>
121
- );
122
- }
123
-
124
- // =============================================================================
125
- // Hook
126
- // =============================================================================
127
-
128
- /**
129
- * Use the shared message queue context.
130
- * This replaces direct useMessageQueue() calls in components that need shared state.
131
- */
132
- export function useMessageQueueContext(): MessageQueueContextValue {
133
- const context = useContext(MessageQueueContext);
134
- if (!context) {
135
- throw new Error('useMessageQueueContext must be used within a MessageQueueProvider');
136
- }
137
- return context;
138
- }
139
-
140
- // Re-export types for convenience
141
- export type { QueuedMessage, BellConsumedCallback, InjectDependencies };
142
-
143
- export default MessageQueueContext;
@@ -1,550 +0,0 @@
1
- /**
2
- * Theme Browser Styles (Story 24-5)
3
- *
4
- * Styles for the searchable, filterable theme browser component.
5
- */
6
-
7
- /* =============================================================================
8
- Browser Container
9
- ============================================================================= */
10
-
11
-
12
- .theme-browser-header {
13
- display: flex;
14
- gap: 12px;
15
- padding: 12px;
16
- border-bottom: 1px solid var(--border-color, #e0e0e0);
17
- background: var(--header-bg, #f5f5f5);
18
- }
19
-
20
- .theme-browser-content {
21
- display: flex;
22
- gap: 16px;
23
- flex: 1;
24
- overflow-y: auto;
25
- padding: 12px;
26
- min-height: 300px;
27
- max-height: 400px;
28
- }
29
-
30
- /* Grid wrapper takes remaining space (24-6) */
31
- .theme-grid-wrapper {
32
- flex: 1 1 auto;
33
- min-width: 350px; /* Ensure cards don't get cut off */
34
- overflow-y: auto;
35
- }
36
-
37
- .theme-browser-footer {
38
- display: flex;
39
- justify-content: flex-end;
40
- gap: 8px;
41
- padding: 12px;
42
- border-top: 1px solid var(--border-color, #e0e0e0);
43
- background: var(--footer-bg, #f5f5f5);
44
- }
45
-
46
- /* =============================================================================
47
- Search and Filter Controls
48
- ============================================================================= */
49
-
50
- .theme-search-input {
51
- flex: 1;
52
- padding: 8px 12px;
53
- border: 1px solid var(--input-border, #ccc);
54
- border-radius: 4px;
55
- font-size: 14px;
56
- background: var(--input-bg, #fff);
57
- color: var(--input-color, #333);
58
- }
59
-
60
- .theme-search-input:focus {
61
- outline: none;
62
- border-color: var(--accent-color, #0066cc);
63
- box-shadow: 0 0 0 2px var(--accent-shadow, rgba(0, 102, 204, 0.2));
64
- }
65
-
66
- .theme-search-input::placeholder {
67
- color: var(--placeholder-color, #999);
68
- }
69
-
70
- .theme-category-filter {
71
- padding: 8px 12px;
72
- border: 1px solid var(--input-border, #ccc);
73
- border-radius: 4px;
74
- font-size: 14px;
75
- background: var(--input-bg, #fff);
76
- color: var(--input-color, #333);
77
- min-width: 150px;
78
- }
79
-
80
- .theme-category-filter:focus {
81
- outline: none;
82
- border-color: var(--accent-color, #0066cc);
83
- }
84
-
85
- /* =============================================================================
86
- Theme Grid
87
- ============================================================================= */
88
-
89
- .theme-grid {
90
- display: grid;
91
- grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
92
- gap: 12px;
93
- }
94
-
95
- /* =============================================================================
96
- Theme Card
97
- ============================================================================= */
98
-
99
- .theme-card {
100
- display: flex;
101
- flex-direction: column;
102
- padding: 12px;
103
- border: 2px solid var(--card-border, #e0e0e0);
104
- border-radius: 8px;
105
- background: var(--card-bg, #fff);
106
- cursor: pointer;
107
- transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease;
108
- }
109
-
110
- .theme-card:hover {
111
- border-color: var(--card-hover-border, #b0b0b0);
112
- box-shadow: 0 2px 8px var(--card-hover-shadow, rgba(0, 0, 0, 0.1));
113
- }
114
-
115
- .theme-card:focus {
116
- outline: none;
117
- border-color: var(--accent-color, #0066cc);
118
- box-shadow: 0 0 0 3px var(--accent-shadow, rgba(0, 102, 204, 0.3));
119
- }
120
-
121
- .theme-card.selected {
122
- border-color: var(--selected-border, #0066cc);
123
- background: var(--selected-bg, #e6f2ff);
124
- box-shadow: 0 0 0 3px var(--selected-shadow, rgba(0, 102, 204, 0.2));
125
- }
126
-
127
- .theme-card.selected:hover {
128
- border-color: var(--selected-border, #0066cc);
129
- }
130
-
131
- /* =============================================================================
132
- Card Content
133
- ============================================================================= */
134
-
135
- .theme-card-name {
136
- font-weight: 600;
137
- font-size: 14px;
138
- color: var(--card-name-color, #333);
139
- margin-bottom: 6px;
140
- line-height: 1.3;
141
- }
142
-
143
- .theme-card-description {
144
- font-size: 12px;
145
- color: var(--card-desc-color, #666);
146
- line-height: 1.4;
147
- flex: 1;
148
- margin-bottom: 8px;
149
- }
150
-
151
- .theme-card-footer {
152
- display: flex;
153
- justify-content: space-between;
154
- align-items: center;
155
- font-size: 11px;
156
- padding-top: 8px;
157
- border-top: 1px solid var(--card-divider, #eee);
158
- }
159
-
160
- .theme-card-category {
161
- color: var(--card-category-color, #888);
162
- background: var(--card-category-bg, #f0f0f0);
163
- padding: 2px 6px;
164
- border-radius: 3px;
165
- }
166
-
167
- .theme-card-tier {
168
- font-weight: 500;
169
- }
170
-
171
- /* =============================================================================
172
- Tier Colors
173
- ============================================================================= */
174
-
175
- .tier-s .theme-card-tier {
176
- color: var(--tier-s-color, #ffd700);
177
- text-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
178
- }
179
-
180
- .tier-s {
181
- border-left: 3px solid var(--tier-s-color, #ffd700);
182
- }
183
-
184
- .tier-a .theme-card-tier {
185
- color: var(--tier-a-color, #c0c0c0);
186
- }
187
-
188
- .tier-a {
189
- border-left: 3px solid var(--tier-a-color, #c0c0c0);
190
- }
191
-
192
- .tier-b .theme-card-tier {
193
- color: var(--tier-b-color, #cd7f32);
194
- }
195
-
196
- .tier-b {
197
- border-left: 3px solid var(--tier-b-color, #cd7f32);
198
- }
199
-
200
- .tier-u .theme-card-tier {
201
- color: var(--tier-u-color, #888);
202
- }
203
-
204
- .tier-u {
205
- border-left: 3px solid var(--tier-u-color, #888);
206
- }
207
-
208
- /* =============================================================================
209
- Loading and Empty States
210
- ============================================================================= */
211
-
212
- .theme-browser-loading,
213
- .theme-browser-empty {
214
- display: flex;
215
- align-items: center;
216
- justify-content: center;
217
- padding: 40px;
218
- color: var(--empty-color, #888);
219
- font-size: 14px;
220
- }
221
-
222
- .theme-browser-loading {
223
- font-style: italic;
224
- }
225
-
226
- /* =============================================================================
227
- Buttons
228
- ============================================================================= */
229
-
230
- .theme-browser-apply,
231
- .theme-browser-cancel {
232
- padding: 8px 16px;
233
- border-radius: 4px;
234
- font-size: 14px;
235
- cursor: pointer;
236
- transition: background-color 0.15s ease;
237
- }
238
-
239
- .theme-browser-cancel {
240
- background: var(--cancel-bg, #f0f0f0);
241
- border: 1px solid var(--cancel-border, #ccc);
242
- color: var(--cancel-color, #333);
243
- }
244
-
245
- .theme-browser-cancel:hover {
246
- background: var(--cancel-hover-bg, #e0e0e0);
247
- }
248
-
249
- .theme-browser-apply {
250
- background: var(--apply-bg, #0066cc);
251
- border: 1px solid var(--apply-border, #0055aa);
252
- color: var(--apply-color, #fff);
253
- }
254
-
255
- .theme-browser-apply:hover:not(:disabled) {
256
- background: var(--apply-hover-bg, #0055aa);
257
- }
258
-
259
- .theme-browser-apply:disabled {
260
- background: var(--apply-disabled-bg, #ccc);
261
- border-color: var(--apply-disabled-border, #bbb);
262
- cursor: not-allowed;
263
- opacity: 0.6;
264
- }
265
-
266
- /* =============================================================================
267
- Dark Mode Support (via CSS variables)
268
- ============================================================================= */
269
-
270
- @media (prefers-color-scheme: dark) {
271
- .theme-browser-header,
272
- .theme-browser-footer {
273
- --header-bg: #2a2a2a;
274
- --footer-bg: #2a2a2a;
275
- --border-color: #444;
276
- }
277
-
278
- .theme-search-input,
279
- .theme-category-filter {
280
- --input-bg: #333;
281
- --input-border: #555;
282
- --input-color: #eee;
283
- --placeholder-color: #777;
284
- }
285
-
286
- .theme-card {
287
- --card-bg: #2a2a2a;
288
- --card-border: #444;
289
- --card-hover-border: #666;
290
- --card-hover-shadow: rgba(0, 0, 0, 0.3);
291
- --card-name-color: #eee;
292
- --card-desc-color: #aaa;
293
- --card-category-bg: #444;
294
- --card-category-color: #aaa;
295
- --card-divider: #444;
296
- }
297
-
298
- .theme-card.selected {
299
- --selected-bg: #1a3a5a;
300
- --selected-border: #4499dd;
301
- }
302
-
303
- .theme-browser-cancel {
304
- --cancel-bg: #444;
305
- --cancel-border: #555;
306
- --cancel-color: #eee;
307
- --cancel-hover-bg: #555;
308
- }
309
-
310
- .theme-preview-panel {
311
- --preview-bg: #2a2a2a;
312
- --preview-border: #444;
313
- --preview-title-color: #eee;
314
- --preview-meta-color: #aaa;
315
- --preview-desc-color: #ccc;
316
- --preview-role-bg: #444;
317
- --preview-role-color: #ddd;
318
- --preview-char-color: #eee;
319
- --preview-quote-border: #666;
320
- --preview-quote-color: #bbb;
321
- --preview-empty-color: #777;
322
- }
323
- }
324
-
325
- /* =============================================================================
326
- Preview Panel (Story 24-6)
327
- ============================================================================= */
328
-
329
- .theme-preview-panel {
330
- width: 280px;
331
- flex-shrink: 0;
332
- border-left: 1px solid var(--preview-border, #e0e0e0);
333
- padding: 16px;
334
- overflow-y: auto;
335
- background: var(--preview-bg, #fff);
336
- }
337
-
338
- .theme-preview-content {
339
- display: flex;
340
- flex-direction: column;
341
- gap: 12px;
342
- }
343
-
344
- .theme-preview-empty {
345
- display: flex;
346
- align-items: center;
347
- justify-content: center;
348
- height: 100%;
349
- color: var(--preview-empty-color, #888);
350
- font-style: italic;
351
- text-align: center;
352
- padding: 20px;
353
- }
354
-
355
- .preview-title {
356
- margin: 0;
357
- font-size: 18px;
358
- font-weight: 600;
359
- color: var(--preview-title-color, #333);
360
- }
361
-
362
- .preview-meta {
363
- font-size: 12px;
364
- color: var(--preview-meta-color, #666);
365
- }
366
-
367
- .preview-description {
368
- margin: 0;
369
- font-size: 13px;
370
- line-height: 1.5;
371
- color: var(--preview-desc-color, #555);
372
- }
373
-
374
- /* Agents list */
375
- .preview-agents {
376
- margin-top: 8px;
377
- }
378
-
379
- .preview-agents h4 {
380
- margin: 0 0 8px 0;
381
- font-size: 12px;
382
- font-weight: 600;
383
- text-transform: uppercase;
384
- letter-spacing: 0.5px;
385
- color: var(--preview-meta-color, #666);
386
- }
387
-
388
- .preview-agent {
389
- display: flex;
390
- align-items: center;
391
- gap: 8px;
392
- padding: 4px 0;
393
- border-bottom: 1px solid var(--card-divider, #eee);
394
- }
395
-
396
- .preview-agent:last-child {
397
- border-bottom: none;
398
- }
399
-
400
- .preview-agent-role {
401
- font-size: 10px;
402
- font-weight: 600;
403
- text-transform: uppercase;
404
- padding: 2px 6px;
405
- border-radius: 3px;
406
- background: var(--preview-role-bg, #f0f0f0);
407
- color: var(--preview-role-color, #666);
408
- min-width: 60px;
409
- text-align: center;
410
- }
411
-
412
- .preview-agent-character {
413
- font-size: 13px;
414
- color: var(--preview-char-color, #333);
415
- }
416
-
417
- /* Quote styling */
418
- .preview-quote {
419
- margin: 8px 0 0 0;
420
- padding: 10px 12px;
421
- border-left: 3px solid var(--preview-quote-border, #ccc);
422
- font-style: italic;
423
- font-size: 13px;
424
- color: var(--preview-quote-color, #666);
425
- background: var(--card-category-bg, rgba(0, 0, 0, 0.03));
426
- border-radius: 0 4px 4px 0;
427
- }
428
-
429
- /* Tier styling for preview panel */
430
- .theme-preview-panel.tier-s {
431
- border-left-color: var(--tier-s-color, #ffd700);
432
- }
433
-
434
- .theme-preview-panel.tier-s .preview-title {
435
- color: var(--tier-s-color, #ffd700);
436
- }
437
-
438
- .theme-preview-panel.tier-a {
439
- border-left-color: var(--tier-a-color, #c0c0c0);
440
- }
441
-
442
- .theme-preview-panel.tier-b {
443
- border-left-color: var(--tier-b-color, #cd7f32);
444
- }
445
-
446
- .theme-preview-panel.tier-u {
447
- border-left-color: var(--tier-u-color, #888);
448
- }
449
-
450
- /* =============================================================================
451
- Favorites Section (Story 24-7)
452
- ============================================================================= */
453
-
454
- .theme-favorites-section {
455
- margin-bottom: 16px;
456
- padding-bottom: 16px;
457
- border-bottom: 1px solid var(--border-color, #e0e0e0);
458
- }
459
-
460
- .theme-favorites-header {
461
- display: flex;
462
- align-items: center;
463
- gap: 6px;
464
- margin-bottom: 12px;
465
- font-size: 14px;
466
- font-weight: 600;
467
- color: var(--favorites-header-color, #333);
468
- }
469
-
470
- .favorites-icon {
471
- color: var(--favorites-star-color, #ffc107);
472
- font-size: 16px;
473
- }
474
-
475
- .favorites-count {
476
- font-weight: 400;
477
- color: var(--favorites-count-color, #666);
478
- font-size: 12px;
479
- }
480
-
481
- .theme-all-header {
482
- margin-bottom: 12px;
483
- font-size: 14px;
484
- font-weight: 600;
485
- color: var(--all-header-color, #333);
486
- }
487
-
488
- /* Favorite button on card */
489
- .theme-card-favorite {
490
- position: absolute;
491
- top: 8px;
492
- right: 8px;
493
- width: 24px;
494
- height: 24px;
495
- padding: 0;
496
- border: none;
497
- background: transparent;
498
- cursor: pointer;
499
- font-size: 16px;
500
- line-height: 1;
501
- color: var(--favorite-inactive-color, #ccc);
502
- transition: color 0.15s ease, transform 0.1s ease;
503
- z-index: 1;
504
- }
505
-
506
- .theme-card-favorite:hover {
507
- color: var(--favorite-hover-color, #ffc107);
508
- transform: scale(1.15);
509
- }
510
-
511
- .theme-card-favorite.is-favorite {
512
- color: var(--favorite-active-color, #ffc107);
513
- }
514
-
515
- .theme-card-favorite:focus {
516
- outline: none;
517
- }
518
-
519
- /* Card needs relative positioning for absolute favorite button */
520
- .theme-card {
521
- position: relative;
522
- }
523
-
524
- /* Adjust card name to not overlap favorite button */
525
- .theme-card-name {
526
- padding-right: 28px;
527
- }
528
-
529
- /* Dark mode support for favorites */
530
- @media (prefers-color-scheme: dark) {
531
- .theme-favorites-section {
532
- --border-color: #444;
533
- }
534
-
535
- .theme-favorites-header,
536
- .theme-all-header {
537
- --favorites-header-color: #eee;
538
- --all-header-color: #eee;
539
- }
540
-
541
- .favorites-count {
542
- --favorites-count-color: #aaa;
543
- }
544
-
545
- .theme-card-favorite {
546
- --favorite-inactive-color: #555;
547
- --favorite-hover-color: #ffc107;
548
- --favorite-active-color: #ffc107;
549
- }
550
- }