@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,465 +1,3 @@
1
- /**
2
- * Settings API Router (Story 35-1)
3
- *
4
- * Provides HTTP API endpoints for settings management:
5
- * - GET /api/settings - Get current settings
6
- * - PATCH /api/settings - Update partial settings
7
- * - GET /api/settings/themes - Get available themes metadata
8
- */
9
- import { Router } from 'express';
10
- import fs from 'fs';
11
- import path from 'path';
12
- import { parse, stringify } from 'yaml';
13
- import { getCurrentSettings, saveUserSettings } from '../settings.js';
14
- import { getProjectDirectory } from '../paths.js';
15
- import { setBellMode } from '../bell-mode.js';
16
- import { isOtelDebugEnabled } from '../otlp-receiver.js';
17
- /**
18
- * Create a consistent error response object
19
- * AC4: Helper for consistent error formatting
20
- */
21
- export function createErrorResponse(code, message) {
22
- return {
23
- error: true,
24
- code,
25
- message,
26
- };
27
- }
28
- /**
29
- * Get settings for WebSocket broadcast
30
- * Used by websocket.ts for /ws/settings endpoint
31
- */
32
- export async function getSettingsForWebSocket(projectDir) {
33
- const settings = getCurrentSettings();
34
- // Read config.local.yaml as single source of truth
35
- let theme = 'alice-in-wonderland';
36
- let handoffMode = 'manual';
37
- let bellMode = false;
38
- let display;
39
- let notifications;
40
- if (projectDir) {
41
- try {
42
- const configPath = path.join(projectDir, '.pennyfarthing', 'config.local.yaml');
43
- if (fs.existsSync(configPath)) {
44
- const content = fs.readFileSync(configPath, 'utf-8');
45
- const parsed = parse(content);
46
- if (parsed?.theme && typeof parsed.theme === 'string') {
47
- theme = parsed.theme;
48
- }
49
- const workflow = parsed?.workflow;
50
- if (workflow?.handoff_mode) {
51
- handoffMode = workflow.handoff_mode;
52
- }
53
- if (workflow?.bell_mode !== undefined) {
54
- bellMode = workflow.bell_mode;
55
- }
56
- if (parsed?.display && typeof parsed.display === 'object') {
57
- display = parsed.display;
58
- }
59
- if (parsed?.notifications && typeof parsed.notifications === 'object') {
60
- notifications = parsed.notifications;
61
- }
62
- }
63
- }
64
- catch {
65
- // Ignore project config errors - use defaults
66
- }
67
- }
68
- const response = {
69
- ...settings,
70
- workflow: {
71
- ...settings.workflow,
72
- handoff_mode: handoffMode,
73
- bell_mode: bellMode,
74
- },
75
- pennyfarthing: { theme },
76
- };
77
- if (display)
78
- response.display = display;
79
- if (notifications)
80
- response.notifications = notifications;
81
- return response;
82
- }
83
- /**
84
- * Create the settings router
85
- */
86
- export function createSettingsRouter() {
87
- const router = Router();
88
- /**
89
- * GET / - Get current settings
90
- * AC4: Returns consistent error format
91
- * Theme, handoff_mode, and bell_mode are all read from .pennyfarthing/config.local.yaml (single source of truth)
92
- */
93
- router.get('/', async (_req, res) => {
94
- try {
95
- const settings = getCurrentSettings();
96
- // Read config.local.yaml as single source of truth for all project settings
97
- let theme = 'alice-in-wonderland';
98
- let handoffMode = 'manual';
99
- let bellMode = false;
100
- let display;
101
- let notifications;
102
- const projectDir = getProjectDirectory();
103
- if (projectDir) {
104
- try {
105
- const configPath = path.join(projectDir, '.pennyfarthing', 'config.local.yaml');
106
- if (fs.existsSync(configPath)) {
107
- const content = fs.readFileSync(configPath, 'utf-8');
108
- const parsed = parse(content);
109
- if (parsed?.theme && typeof parsed.theme === 'string') {
110
- theme = parsed.theme;
111
- }
112
- const workflow = parsed?.workflow;
113
- if (workflow?.handoff_mode) {
114
- handoffMode = workflow.handoff_mode;
115
- }
116
- if (workflow?.bell_mode !== undefined) {
117
- bellMode = workflow.bell_mode;
118
- }
119
- if (parsed?.display && typeof parsed.display === 'object') {
120
- display = parsed.display;
121
- }
122
- if (parsed?.notifications && typeof parsed.notifications === 'object') {
123
- notifications = parsed.notifications;
124
- }
125
- }
126
- }
127
- catch {
128
- // Ignore project config errors - use defaults
129
- }
130
- }
131
- // Construct response with all persisted settings
132
- const response = {
133
- ...settings,
134
- workflow: {
135
- ...settings.workflow,
136
- handoff_mode: handoffMode,
137
- bell_mode: bellMode,
138
- },
139
- pennyfarthing: { theme },
140
- };
141
- if (display)
142
- response.display = display;
143
- if (notifications)
144
- response.notifications = notifications;
145
- res.json(response);
146
- }
147
- catch (error) {
148
- console.error('[Settings API] Failed to get settings:', error);
149
- res.status(500).json(createErrorResponse('FILE_ERROR', 'Failed to load settings'));
150
- }
151
- });
152
- /**
153
- * PATCH / - Update partial settings
154
- * Accepts a partial settings object and merges with current settings
155
- * AC4: Returns consistent error format with user-friendly messages
156
- */
157
- router.patch('/', async (req, res) => {
158
- try {
159
- const partialSettings = req.body;
160
- if (!partialSettings || typeof partialSettings !== 'object') {
161
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Invalid settings object'));
162
- }
163
- // Validate theme is non-empty and matches slug pattern (prevent YAML injection)
164
- if (partialSettings.pennyfarthing?.theme !== undefined) {
165
- const theme = partialSettings.pennyfarthing.theme;
166
- if (theme === '') {
167
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Theme must be a non-empty string'));
168
- }
169
- // Theme ID must be alphanumeric with hyphens only (slug format)
170
- if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(theme)) {
171
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Theme must be a valid slug (lowercase alphanumeric with hyphens)'));
172
- }
173
- }
174
- // Validate permission_mode enum (turbo removed in MSSCI-12395)
175
- if (partialSettings.workflow?.permission_mode !== undefined) {
176
- const mode = partialSettings.workflow.permission_mode;
177
- const validModes = ['plan', 'manual', 'accept'];
178
- if (!validModes.includes(mode)) {
179
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Permission mode must be "plan", "manual", or "accept". Use relay_mode for auto-handoff.'));
180
- }
181
- }
182
- // Validate relay_mode is boolean if present (MSSCI-12395)
183
- if (partialSettings.workflow?.relay_mode !== undefined) {
184
- const relayMode = partialSettings.workflow.relay_mode;
185
- if (typeof relayMode !== 'boolean') {
186
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Relay mode must be a boolean (true or false)'));
187
- }
188
- }
189
- // Handle bell_mode toggle (MSSCI-12275) - stored in separate file
190
- const bellModeValue = partialSettings.workflow?.bell_mode;
191
- if (bellModeValue !== undefined) {
192
- if (typeof bellModeValue !== 'boolean') {
193
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Bell mode must be a boolean'));
194
- }
195
- await setBellMode(bellModeValue);
196
- }
197
- // Extract theme - it goes to config.local.yaml, not to CyclistSettings
198
- const theme = partialSettings.pennyfarthing?.theme;
199
- // Strip pennyfarthing and bell_mode from settings to save (handled separately)
200
- const { pennyfarthing: _pf, ...rest } = partialSettings;
201
- const settingsToSave = { ...rest };
202
- if (settingsToSave.workflow) {
203
- const { bell_mode: _bm, ...workflowRest } = settingsToSave.workflow;
204
- settingsToSave.workflow = workflowRest;
205
- }
206
- // Get project directory FIRST - needed for both settings save and theme update
207
- const projectDir = getProjectDirectory();
208
- // Save settings using the settings module (pass projectDir to avoid cwd fallback)
209
- const success = saveUserSettings(settingsToSave, projectDir || undefined);
210
- if (!success) {
211
- return res.status(500).json(createErrorResponse('FILE_ERROR', 'Failed to save settings to file'));
212
- }
213
- // Update theme in .pennyfarthing/config.local.yaml using read-modify-write
214
- // This preserves other settings (like handoff_mode) in the same file
215
- let themeChanged = false;
216
- if (theme && projectDir) {
217
- try {
218
- const pennyfarthingDir = path.join(projectDir, '.pennyfarthing');
219
- const configPath = path.join(pennyfarthingDir, 'config.local.yaml');
220
- // Create .pennyfarthing directory if it doesn't exist
221
- if (!fs.existsSync(pennyfarthingDir)) {
222
- fs.mkdirSync(pennyfarthingDir, { recursive: true });
223
- }
224
- // Read existing config to preserve other settings
225
- let existingConfig = {};
226
- if (fs.existsSync(configPath)) {
227
- const existingContent = fs.readFileSync(configPath, 'utf-8');
228
- const parsed = parse(existingContent);
229
- if (parsed && typeof parsed === 'object') {
230
- existingConfig = parsed;
231
- }
232
- }
233
- // Update only the theme, preserving everything else
234
- existingConfig.theme = theme;
235
- // Write back with theme first for consistent ordering
236
- const { theme: themeValue, ...rest } = existingConfig;
237
- const ordered = { theme: themeValue, ...rest };
238
- fs.writeFileSync(configPath, stringify(ordered), 'utf-8');
239
- themeChanged = true;
240
- // Touch the agent session file to trigger watchAgentChanges
241
- // This broadcasts the new persona to the Cyclist UI
242
- const sessionId = process.env.CYCLIST_SESSION_ID;
243
- if (sessionId) {
244
- const agentFile = path.join(projectDir, '.session', 'agents', sessionId);
245
- if (fs.existsSync(agentFile)) {
246
- const now = new Date();
247
- fs.utimesSync(agentFile, now, now);
248
- }
249
- }
250
- }
251
- catch (err) {
252
- console.error('[Settings API] Failed to write .pennyfarthing/config.local.yaml:', err);
253
- }
254
- }
255
- // Return settings with theme_changed flag so frontend can prompt refresh
256
- const responseSettings = getCurrentSettings();
257
- res.json({ ...responseSettings, _themeChanged: themeChanged });
258
- }
259
- catch (error) {
260
- console.error('[Settings API] Failed to save settings:', error);
261
- res.status(500).json(createErrorResponse('UNKNOWN_ERROR', 'Failed to save settings'));
262
- }
263
- });
264
- /**
265
- * GET /themes - Get available themes metadata
266
- * Story 35-8: Returns id, name, and tier for each theme
267
- */
268
- router.get('/themes', async (_req, res) => {
269
- try {
270
- // Find themes directory - check bundled resources first, then project dir
271
- let themesDir = null;
272
- // 1. Packaged Electron app: Contents/Resources/pennyfarthing-dist/personas/themes
273
- if (process.resourcesPath) {
274
- const bundledThemes = path.join(process.resourcesPath, 'pennyfarthing-dist', 'personas', 'themes');
275
- if (fs.existsSync(bundledThemes)) {
276
- themesDir = bundledThemes;
277
- }
278
- }
279
- // 2. Runtime via symlinks: .pennyfarthing/personas/themes (orchestrator pattern)
280
- if (!themesDir) {
281
- const projectDir = getProjectDirectory();
282
- if (projectDir) {
283
- const runtimeThemes = path.join(projectDir, '.pennyfarthing', 'personas', 'themes');
284
- if (fs.existsSync(runtimeThemes)) {
285
- themesDir = runtimeThemes;
286
- }
287
- }
288
- }
289
- // 3. Monorepo/dev: project dir pennyfarthing-dist
290
- if (!themesDir) {
291
- const projectDir = getProjectDirectory();
292
- if (projectDir) {
293
- const projectThemes = path.join(projectDir, 'pennyfarthing-dist', 'personas', 'themes');
294
- if (fs.existsSync(projectThemes)) {
295
- themesDir = projectThemes;
296
- }
297
- }
298
- }
299
- if (isOtelDebugEnabled()) {
300
- console.log('[Themes API] Final themesDir:', themesDir);
301
- }
302
- if (!themesDir) {
303
- return res.json([]);
304
- }
305
- const files = fs.readdirSync(themesDir).filter(f => f.endsWith('.yaml')).sort();
306
- if (isOtelDebugEnabled()) {
307
- console.log('[Themes API] Found', files.length, 'theme files');
308
- }
309
- const themes = files.map(f => {
310
- const id = f.replace('.yaml', '');
311
- const name = id.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
312
- // Try to read tier from theme file (nested under theme.tier)
313
- let tier = ''; // Empty when no tier data (displayed as "Unranked" in UI)
314
- try {
315
- const themePath = path.join(themesDir, f);
316
- const content = fs.readFileSync(themePath, 'utf-8');
317
- const parsed = parse(content);
318
- if (parsed.theme?.tier && typeof parsed.theme.tier === 'string') {
319
- tier = parsed.theme.tier.toUpperCase();
320
- }
321
- }
322
- catch {
323
- // Ignore parse errors, use default tier
324
- }
325
- return { id, name, tier };
326
- });
327
- res.json(themes);
328
- }
329
- catch (error) {
330
- console.error('[Settings API] Failed to load themes:', error);
331
- res.status(500).json({ error: 'Failed to load themes' });
332
- }
333
- });
334
- /**
335
- * GET /collapsed - Get collapsed section states from config.local.yaml
336
- * Returns { persona: boolean, git: boolean, ... }
337
- */
338
- router.get('/collapsed', (_req, res) => {
339
- try {
340
- const projectDir = getProjectDirectory();
341
- if (!projectDir) {
342
- return res.json({});
343
- }
344
- const configPath = path.join(projectDir, '.pennyfarthing', 'config.local.yaml');
345
- if (!fs.existsSync(configPath)) {
346
- return res.json({});
347
- }
348
- const content = fs.readFileSync(configPath, 'utf-8');
349
- const parsed = parse(content);
350
- res.json(parsed?.display?.collapsed_sections || {});
351
- }
352
- catch (error) {
353
- console.error('[Settings API] Failed to get collapsed sections:', error);
354
- res.json({});
355
- }
356
- });
357
- /**
358
- * PATCH /collapsed - Update collapsed section states in config.local.yaml
359
- * Body: { sectionId: boolean, ... }
360
- */
361
- router.patch('/collapsed', (req, res) => {
362
- try {
363
- const updates = req.body;
364
- if (!updates || typeof updates !== 'object') {
365
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Invalid collapsed sections object'));
366
- }
367
- const projectDir = getProjectDirectory();
368
- if (!projectDir) {
369
- return res.status(500).json(createErrorResponse('FILE_ERROR', 'Project directory not found'));
370
- }
371
- const pennyfarthingDir = path.join(projectDir, '.pennyfarthing');
372
- const configPath = path.join(pennyfarthingDir, 'config.local.yaml');
373
- // Create .pennyfarthing directory if needed
374
- if (!fs.existsSync(pennyfarthingDir)) {
375
- fs.mkdirSync(pennyfarthingDir, { recursive: true });
376
- }
377
- // Read existing config
378
- let existingConfig = {};
379
- if (fs.existsSync(configPath)) {
380
- const content = fs.readFileSync(configPath, 'utf-8');
381
- const parsed = parse(content);
382
- if (parsed && typeof parsed === 'object') {
383
- existingConfig = parsed;
384
- }
385
- }
386
- // Merge collapsed sections into display
387
- const display = (existingConfig.display || {});
388
- const existingCollapsed = (display.collapsed_sections || {});
389
- display.collapsed_sections = { ...existingCollapsed, ...updates };
390
- existingConfig.display = display;
391
- // Write back
392
- fs.writeFileSync(configPath, stringify(existingConfig), 'utf-8');
393
- res.json(display.collapsed_sections);
394
- }
395
- catch (error) {
396
- console.error('[Settings API] Failed to save collapsed sections:', error);
397
- res.status(500).json(createErrorResponse('FILE_ERROR', 'Failed to save collapsed sections'));
398
- }
399
- });
400
- /**
401
- * GET /layout - Get layout from config.local.yaml
402
- * Returns { layout: { leftSidebar: {...}, rightSidebar: {...} } } or null
403
- */
404
- router.get('/layout', (_req, res) => {
405
- try {
406
- const projectDir = getProjectDirectory();
407
- if (!projectDir) {
408
- return res.json({ layout: null });
409
- }
410
- const configPath = path.join(projectDir, '.pennyfarthing', 'config.local.yaml');
411
- if (!fs.existsSync(configPath)) {
412
- return res.json({ layout: null });
413
- }
414
- const content = fs.readFileSync(configPath, 'utf-8');
415
- const parsed = parse(content);
416
- res.json({ layout: parsed?.layout || null });
417
- }
418
- catch (error) {
419
- console.error('[Settings API] Failed to get layout:', error);
420
- res.json({ layout: null });
421
- }
422
- });
423
- /**
424
- * PATCH /layout - Update layout in config.local.yaml
425
- * Body: { leftSidebar: {...}, rightSidebar: {...} }
426
- */
427
- router.patch('/layout', (req, res) => {
428
- try {
429
- const layout = req.body;
430
- if (!layout || typeof layout !== 'object') {
431
- return res.status(400).json(createErrorResponse('VALIDATION_ERROR', 'Invalid layout object'));
432
- }
433
- const projectDir = getProjectDirectory();
434
- if (!projectDir) {
435
- return res.status(500).json(createErrorResponse('FILE_ERROR', 'Project directory not found'));
436
- }
437
- const pennyfarthingDir = path.join(projectDir, '.pennyfarthing');
438
- const configPath = path.join(pennyfarthingDir, 'config.local.yaml');
439
- // Create .pennyfarthing directory if needed
440
- if (!fs.existsSync(pennyfarthingDir)) {
441
- fs.mkdirSync(pennyfarthingDir, { recursive: true });
442
- }
443
- // Read existing config
444
- let existingConfig = {};
445
- if (fs.existsSync(configPath)) {
446
- const content = fs.readFileSync(configPath, 'utf-8');
447
- const parsed = parse(content);
448
- if (parsed && typeof parsed === 'object') {
449
- existingConfig = parsed;
450
- }
451
- }
452
- // Update layout
453
- existingConfig.layout = layout;
454
- // Write back
455
- fs.writeFileSync(configPath, stringify(existingConfig), 'utf-8');
456
- res.json({ success: true, layout });
457
- }
458
- catch (error) {
459
- console.error('[Settings API] Failed to save layout:', error);
460
- res.status(500).json(createErrorResponse('FILE_ERROR', 'Failed to save layout'));
461
- }
462
- });
463
- return router;
464
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/settings.js';
465
3
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/api/settings.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,iDAAiD,CAAC"}
@@ -1,17 +1,2 @@
1
- /**
2
- * Spans API Router - Story MSSCI-11734
3
- *
4
- * REST API for enriched span data with filtering, pagination, and export.
5
- *
6
- * Endpoints:
7
- * - GET /api/spans - List all enriched spans (with filtering and pagination)
8
- * - GET /api/spans/export - Export spans as JSON with metadata
9
- * - GET /api/spans/summary - Get span statistics
10
- * - GET /api/spans/:spanId - Get single span details
11
- */
12
- import { Router } from 'express';
13
- /**
14
- * Create spans API router
15
- */
16
- export declare function createSpansRouter(): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/spans.js';
17
2
  //# sourceMappingURL=spans.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/api/spans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA4FjC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAsL1C"}
1
+ {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/api/spans.ts"],"names":[],"mappings":"AACA,cAAc,8CAA8C,CAAC"}