@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,3 +1,2 @@
1
- import { Router } from 'express';
2
- export declare function createAgentLoadRouter(getProjectDir: () => string): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/agent-load.js';
3
2
  //# sourceMappingURL=agent-load.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-load.d.ts","sourceRoot":"","sources":["../../src/api/agent-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAqCjC,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,MAAM,CAyIzE"}
1
+ {"version":3,"file":"agent-load.d.ts","sourceRoot":"","sources":["../../src/api/agent-load.ts"],"names":[],"mappings":"AACA,cAAc,mDAAmD,CAAC"}
@@ -1,124 +1,3 @@
1
- import { Router } from 'express';
2
- import * as fs from 'node:fs';
3
- import { join } from 'node:path';
4
- import { getPrimeContextJson } from '../prime.js';
5
- const PRIMARY_AGENTS = [
6
- 'sm', 'tea', 'dev', 'reviewer', 'architect',
7
- 'pm', 'tech-writer', 'ux-designer', 'devops', 'orchestrator', 'ba',
8
- ];
9
- const VALID_SIDECAR_FILES = ['patterns.md', 'gotchas.md', 'decisions.md'];
10
- const CACHE_TTL_MS = 60_000;
11
- const UPPERCASE_SEGMENTS = new Set(['ux']);
12
- function formatAgentName(agent) {
13
- return agent.split('-').map((part) => UPPERCASE_SEGMENTS.has(part) ? part.toUpperCase() : part.charAt(0).toUpperCase() + part.slice(1)).join('-');
14
- }
15
- export function createAgentLoadRouter(getProjectDir) {
16
- const router = Router();
17
- let cache = null;
18
- let cachedAtMs = 0;
19
- router.get('/', async (_req, res) => {
20
- const now = Date.now();
21
- // Return cached if within TTL
22
- if (cache && (now - cachedAtMs) < CACHE_TTL_MS) {
23
- res.json(cache);
24
- return;
25
- }
26
- const projectDir = getProjectDir();
27
- // Run all agents in parallel
28
- const results = await Promise.all(PRIMARY_AGENTS.map(async (agent) => {
29
- try {
30
- const output = getPrimeContextJson(agent, projectDir, 'FULL');
31
- if (!output) {
32
- return {
33
- agent,
34
- totalTokens: null,
35
- error: `Failed to load context for agent "${agent}"`,
36
- };
37
- }
38
- // Strip context field — never expose full prompt text
39
- const { context: _context, ...safe } = output;
40
- return {
41
- agent,
42
- totalTokens: safe.totalTokens ?? 0,
43
- tokenCounts: safe.tokenCounts,
44
- components: safe.components,
45
- };
46
- }
47
- catch (err) {
48
- return {
49
- agent,
50
- totalTokens: null,
51
- error: err instanceof Error ? err.message : `Unknown error for agent "${agent}"`,
52
- };
53
- }
54
- }));
55
- // Check if ALL agents failed
56
- const allFailed = results.every((r) => r.totalTokens === null);
57
- if (allFailed) {
58
- res.status(500).json({
59
- error: 'Failed to load agent context',
60
- details: 'All agents returned null',
61
- });
62
- return;
63
- }
64
- const totalAcrossAllAgents = results.reduce((sum, r) => sum + (r.totalTokens ?? 0), 0);
65
- const response = {
66
- agents: results,
67
- cachedAt: new Date(now).toISOString(),
68
- totalAcrossAllAgents,
69
- };
70
- // Store in cache
71
- cache = response;
72
- cachedAtMs = now;
73
- res.json(response);
74
- });
75
- router.post('/prune-sidecar', async (req, res) => {
76
- const { agent, file } = req.body;
77
- // Validate input
78
- if (!agent || !PRIMARY_AGENTS.includes(agent)) {
79
- res.status(400).json({
80
- success: false,
81
- error: `Invalid agent. Must be one of: ${PRIMARY_AGENTS.join(', ')}`,
82
- });
83
- return;
84
- }
85
- if (!file || !VALID_SIDECAR_FILES.includes(file)) {
86
- res.status(400).json({
87
- success: false,
88
- error: `Invalid sidecar file. Must be one of: ${VALID_SIDECAR_FILES.join(', ')}`,
89
- });
90
- return;
91
- }
92
- const projectDir = getProjectDir();
93
- const sidecarPath = join(projectDir, '.pennyfarthing', 'sidecars', agent, file);
94
- // Check sidecar exists
95
- if (!fs.existsSync(sidecarPath)) {
96
- res.status(404).json({
97
- success: false,
98
- error: `Sidecar file not found: .pennyfarthing/sidecars/${agent}/${file}`,
99
- });
100
- return;
101
- }
102
- // Read current sidecar content
103
- const oldContent = fs.readFileSync(sidecarPath, 'utf-8');
104
- // Read template and substitute agent name
105
- const templatePath = join(projectDir, 'pennyfarthing-dist', 'templates', 'sidecar', `${file}.template`);
106
- const template = fs.readFileSync(templatePath, 'utf-8');
107
- const agentName = formatAgentName(agent);
108
- const newContent = template.replace(/\$\{AGENT_NAME\}/g, agentName);
109
- // Write pruned content
110
- fs.writeFileSync(sidecarPath, newContent, 'utf-8');
111
- // Invalidate GET cache
112
- cache = null;
113
- cachedAtMs = 0;
114
- const tokensFreed = Math.floor((oldContent.length - newContent.length) / 4);
115
- res.json({
116
- success: true,
117
- tokensFreed,
118
- agent,
119
- file,
120
- });
121
- });
122
- return router;
123
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/agent-load.js';
124
3
  //# sourceMappingURL=agent-load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-load.js","sourceRoot":"","sources":["../../src/api/agent-load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-load.js","sourceRoot":"","sources":["../../src/api/agent-load.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,mDAAmD,CAAC"}
@@ -1,18 +1,2 @@
1
- /**
2
- * Audit Log API Router
3
- *
4
- * REST API for tool execution audit log with filtering, stats, and export.
5
- *
6
- * Endpoints:
7
- * - GET /api/audit-log - List all tool events (with filtering and pagination)
8
- * - GET /api/audit-log/types - Get unique tool types
9
- * - GET /api/audit-log/stats - Get audit log statistics
10
- * - GET /api/audit-log/export - Export as JSON or CSV
11
- * - DELETE /api/audit-log - Clear the audit log
12
- */
13
- import { Router } from 'express';
14
- /**
15
- * Create audit log API router
16
- */
17
- export declare function createAuditLogRouter(): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/audit-log.js';
18
2
  //# sourceMappingURL=audit-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/api/audit-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAqBjC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAiJ7C"}
1
+ {"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../src/api/audit-log.ts"],"names":[],"mappings":"AACA,cAAc,kDAAkD,CAAC"}
@@ -1,163 +1,3 @@
1
- /**
2
- * Audit Log API Router
3
- *
4
- * REST API for tool execution audit log with filtering, stats, and export.
5
- *
6
- * Endpoints:
7
- * - GET /api/audit-log - List all tool events (with filtering and pagination)
8
- * - GET /api/audit-log/types - Get unique tool types
9
- * - GET /api/audit-log/stats - Get audit log statistics
10
- * - GET /api/audit-log/export - Export as JSON or CSV
11
- * - DELETE /api/audit-log - Clear the audit log
12
- */
13
- import { Router } from 'express';
14
- import { getToolEventsFiltered, getToolTypes, getAuditLogStats, exportAuditLogAsJSON, exportAuditLogAsCSV, resetEventStore, } from '../otlp-receiver.js';
15
- // =============================================================================
16
- // Constants
17
- // =============================================================================
18
- const DEFAULT_LIMIT = 100;
19
- const MAX_LIMIT = 1000;
20
- // =============================================================================
21
- // Router Factory
22
- // =============================================================================
23
- /**
24
- * Create audit log API router
25
- */
26
- export function createAuditLogRouter() {
27
- const router = Router();
28
- /**
29
- * GET /api/audit-log
30
- *
31
- * Returns list of tool events with filtering and pagination.
32
- *
33
- * Query parameters:
34
- * - toolType: Filter by tool type (e.g., "Bash", "Read")
35
- * - status: Filter by status ("success" or "error")
36
- * - offset: Pagination offset (default: 0)
37
- * - limit: Pagination limit (default: 100, max: 1000)
38
- */
39
- router.get('/', (req, res) => {
40
- try {
41
- const toolType = req.query.toolType;
42
- const status = req.query.status;
43
- // Get events (optionally filtered by tool type)
44
- let events = getToolEventsFiltered(toolType);
45
- // Filter by status if specified
46
- if (status === 'success') {
47
- events = events.filter(e => e.success);
48
- }
49
- else if (status === 'error') {
50
- events = events.filter(e => !e.success);
51
- }
52
- // Parse pagination
53
- let offset = 0;
54
- let limit = DEFAULT_LIMIT;
55
- if (req.query.offset !== undefined) {
56
- offset = Math.max(0, Number(req.query.offset) || 0);
57
- }
58
- if (req.query.limit !== undefined) {
59
- limit = Math.min(MAX_LIMIT, Math.max(1, Number(req.query.limit) || DEFAULT_LIMIT));
60
- }
61
- // Apply pagination (newest first)
62
- const sorted = [...events].reverse();
63
- const paginated = sorted.slice(offset, offset + limit);
64
- res.json({
65
- entries: paginated,
66
- total: events.length,
67
- offset,
68
- limit,
69
- });
70
- }
71
- catch (error) {
72
- console.error('[AuditLog API] Error fetching entries:', error);
73
- res.status(500).json({ error: 'Internal server error' });
74
- }
75
- });
76
- /**
77
- * GET /api/audit-log/types
78
- *
79
- * Returns list of unique tool types in the audit log.
80
- */
81
- router.get('/types', (_req, res) => {
82
- try {
83
- const types = getToolTypes();
84
- res.json({ types });
85
- }
86
- catch (error) {
87
- console.error('[AuditLog API] Error fetching types:', error);
88
- res.status(500).json({ error: 'Internal server error' });
89
- }
90
- });
91
- /**
92
- * GET /api/audit-log/stats
93
- *
94
- * Returns summary statistics for the audit log.
95
- */
96
- router.get('/stats', (_req, res) => {
97
- try {
98
- const stats = getAuditLogStats();
99
- res.json(stats);
100
- }
101
- catch (error) {
102
- console.error('[AuditLog API] Error fetching stats:', error);
103
- res.status(500).json({ error: 'Internal server error' });
104
- }
105
- });
106
- /**
107
- * GET /api/audit-log/export
108
- *
109
- * Export audit log as JSON or CSV.
110
- *
111
- * Query parameters:
112
- * - format: "json" (default) or "csv"
113
- * - toolType: Optional filter by tool type
114
- * - download: If "true", sets Content-Disposition header
115
- */
116
- router.get('/export', (req, res) => {
117
- try {
118
- const format = req.query.format || 'json';
119
- const toolType = req.query.toolType;
120
- const download = req.query.download === 'true';
121
- let content;
122
- let contentType;
123
- let extension;
124
- if (format === 'csv') {
125
- content = exportAuditLogAsCSV(toolType);
126
- contentType = 'text/csv';
127
- extension = 'csv';
128
- }
129
- else {
130
- content = exportAuditLogAsJSON(toolType);
131
- contentType = 'application/json';
132
- extension = 'json';
133
- }
134
- if (download) {
135
- const filename = `cyclist-audit-log-${new Date().toISOString().replace(/[:.]/g, '-')}.${extension}`;
136
- res.setHeader('Content-Disposition', `attachment; filename="${filename}"`);
137
- }
138
- res.setHeader('Content-Type', contentType);
139
- res.send(content);
140
- }
141
- catch (error) {
142
- console.error('[AuditLog API] Error exporting:', error);
143
- res.status(500).json({ error: 'Internal server error' });
144
- }
145
- });
146
- /**
147
- * DELETE /api/audit-log
148
- *
149
- * Clear the audit log.
150
- */
151
- router.delete('/', (_req, res) => {
152
- try {
153
- resetEventStore();
154
- res.json({ success: true });
155
- }
156
- catch (error) {
157
- console.error('[AuditLog API] Error clearing:', error);
158
- res.status(500).json({ error: 'Internal server error' });
159
- }
160
- });
161
- return router;
162
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/audit-log.js';
163
3
  //# sourceMappingURL=audit-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/api/audit-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/api/audit-log.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,kDAAkD,CAAC"}
@@ -1,27 +1,2 @@
1
- /**
2
- * Background Tasks API (Story 35-16)
3
- *
4
- * REST endpoint for querying tracked background tasks.
5
- * Integrates with otlp-receiver's background task tracking.
6
- */
7
- import { Router } from 'express';
8
- import { WebSocket } from 'ws';
9
- import { BackgroundTask } from '../otlp-receiver.js';
10
- /**
11
- * Get background task WebSocket clients set
12
- */
13
- export declare function getBackgroundTaskClients(): Set<WebSocket>;
14
- /**
15
- * Broadcast task event to all connected WebSocket clients
16
- */
17
- export declare function broadcastBackgroundTaskEvent(type: 'task:started' | 'task:completed', task: BackgroundTask): void;
18
- /**
19
- * Initialize WebSocket broadcasts for background task events
20
- * Call this after setting up the WebSocket server
21
- */
22
- export declare function initBackgroundTaskBroadcast(): void;
23
- /**
24
- * Create Express router for background tasks API
25
- */
26
- export declare function createBackgroundTasksRouter(): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/background-tasks.js';
27
2
  //# sourceMappingURL=background-tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"background-tasks.d.ts","sourceRoot":"","sources":["../../src/api/background-tasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAsB,cAAc,EAA6D,MAAM,qBAAqB,CAAC;AAKpI;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,SAAS,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAOhH;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAQlD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAapD"}
1
+ {"version":3,"file":"background-tasks.d.ts","sourceRoot":"","sources":["../../src/api/background-tasks.ts"],"names":[],"mappings":"AACA,cAAc,yDAAyD,CAAC"}
@@ -1,56 +1,3 @@
1
- /**
2
- * Background Tasks API (Story 35-16)
3
- *
4
- * REST endpoint for querying tracked background tasks.
5
- * Integrates with otlp-receiver's background task tracking.
6
- */
7
- import { Router } from 'express';
8
- import { WebSocket } from 'ws';
9
- import { getBackgroundTasks, setBackgroundTaskStartCallback, setBackgroundTaskCallback } from '../otlp-receiver.js';
10
- // WebSocket clients for real-time updates
11
- const backgroundTaskClients = new Set();
12
- /**
13
- * Get background task WebSocket clients set
14
- */
15
- export function getBackgroundTaskClients() {
16
- return backgroundTaskClients;
17
- }
18
- /**
19
- * Broadcast task event to all connected WebSocket clients
20
- */
21
- export function broadcastBackgroundTaskEvent(type, task) {
22
- const message = JSON.stringify({ type, task });
23
- for (const client of backgroundTaskClients) {
24
- if (client.readyState === WebSocket.OPEN) {
25
- client.send(message);
26
- }
27
- }
28
- }
29
- /**
30
- * Initialize WebSocket broadcasts for background task events
31
- * Call this after setting up the WebSocket server
32
- */
33
- export function initBackgroundTaskBroadcast() {
34
- setBackgroundTaskStartCallback((task) => {
35
- broadcastBackgroundTaskEvent('task:started', task);
36
- });
37
- setBackgroundTaskCallback((task) => {
38
- broadcastBackgroundTaskEvent('task:completed', task);
39
- });
40
- }
41
- /**
42
- * Create Express router for background tasks API
43
- */
44
- export function createBackgroundTasksRouter() {
45
- const router = Router();
46
- /**
47
- * GET /api/background-tasks
48
- * Returns list of all tracked background tasks
49
- */
50
- router.get('/', (_req, res) => {
51
- const tasks = getBackgroundTasks();
52
- res.json({ tasks });
53
- });
54
- return router;
55
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/background-tasks.js';
56
3
  //# sourceMappingURL=background-tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"background-tasks.js","sourceRoot":"","sources":["../../src/api/background-tasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAkB,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEpI,0CAA0C;AAC1C,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAuC,EAAE,IAAoB;IACxG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,8BAA8B,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,4BAA4B,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,yBAAyB,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,4BAA4B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"background-tasks.js","sourceRoot":"","sources":["../../src/api/background-tasks.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,yDAAyD,CAAC"}
@@ -1,19 +1,2 @@
1
- /**
2
- * Bell Mode API - WebSocket broadcast for message consumption
3
- *
4
- * When the PostToolUse hook consumes a queued message, it calls /api/bell-consumed.
5
- * This module broadcasts to connected browsers so they can:
6
- * 1. Dequeue the message from in-memory queue
7
- * 2. Display the injected message in the conversation stream
8
- */
9
- import { WebSocket } from 'ws';
10
- /**
11
- * Get bell clients set (for WebSocket setup)
12
- */
13
- export declare function getBellClients(): Set<WebSocket>;
14
- /**
15
- * Broadcast bell consumed event to all connected browsers
16
- * @param text - The message text that was injected into Claude's context
17
- */
18
- export declare function broadcastBellConsumed(text: string): void;
1
+ export * from '@pennyfarthing/core/dist/server/api/bell.js';
19
2
  //# sourceMappingURL=bell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bell.d.ts","sourceRoot":"","sources":["../../src/api/bell.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAK/B;;GAEG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAAC,SAAS,CAAC,CAE/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYxD"}
1
+ {"version":3,"file":"bell.d.ts","sourceRoot":"","sources":["../../src/api/bell.ts"],"names":[],"mappings":"AACA,cAAc,6CAA6C,CAAC"}
package/dist/api/bell.js CHANGED
@@ -1,34 +1,3 @@
1
- /**
2
- * Bell Mode API - WebSocket broadcast for message consumption
3
- *
4
- * When the PostToolUse hook consumes a queued message, it calls /api/bell-consumed.
5
- * This module broadcasts to connected browsers so they can:
6
- * 1. Dequeue the message from in-memory queue
7
- * 2. Display the injected message in the conversation stream
8
- */
9
- import { WebSocket } from 'ws';
10
- // Bell WebSocket clients
11
- const bellClients = new Set();
12
- /**
13
- * Get bell clients set (for WebSocket setup)
14
- */
15
- export function getBellClients() {
16
- return bellClients;
17
- }
18
- /**
19
- * Broadcast bell consumed event to all connected browsers
20
- * @param text - The message text that was injected into Claude's context
21
- */
22
- export function broadcastBellConsumed(text) {
23
- const message = JSON.stringify({
24
- type: 'bell-consumed',
25
- text,
26
- timestamp: Date.now(),
27
- });
28
- for (const client of bellClients) {
29
- if (client.readyState === WebSocket.OPEN) {
30
- client.send(message);
31
- }
32
- }
33
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/bell.js';
34
3
  //# sourceMappingURL=bell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bell.js","sourceRoot":"","sources":["../../src/api/bell.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,yBAAyB;AACzB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,IAAI,EAAE,eAAe;QACrB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bell.js","sourceRoot":"","sources":["../../src/api/bell.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,6CAA6C,CAAC"}
@@ -1,9 +1,2 @@
1
- /**
2
- * Code Markers API route — Story 80-3 (MSSCI-14456)
3
- *
4
- * GET /api/code-markers?repo=pennyfarthing&days=90&type=all|stale|deprecated
5
- * Thin wrapper calling Python codemarkers module via execFile.
6
- */
7
- import { Router } from 'express';
8
- export declare function createCodeMarkersRouter(getProjectDir: () => string): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/code-markers.js';
9
2
  //# sourceMappingURL=code-markers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-markers.d.ts","sourceRoot":"","sources":["../../src/api/code-markers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,MAAM,CAyD3E"}
1
+ {"version":3,"file":"code-markers.d.ts","sourceRoot":"","sources":["../../src/api/code-markers.ts"],"names":[],"mappings":"AACA,cAAc,qDAAqD,CAAC"}
@@ -1,62 +1,3 @@
1
- /**
2
- * Code Markers API route — Story 80-3 (MSSCI-14456)
3
- *
4
- * GET /api/code-markers?repo=pennyfarthing&days=90&type=all|stale|deprecated
5
- * Thin wrapper calling Python codemarkers module via execFile.
6
- */
7
- import { Router } from 'express';
8
- import { execFile } from 'child_process';
9
- import { join } from 'path';
10
- export function createCodeMarkersRouter(getProjectDir) {
11
- const router = Router();
12
- router.get('/', (req, res) => {
13
- const projectDir = getProjectDir();
14
- const days = String(req.query.days || '90');
15
- const repo = req.query.repo;
16
- const type = req.query.type;
17
- const args = [
18
- '-m', 'pennyfarthing_scripts.codemarkers',
19
- 'analyze',
20
- '--format', 'json',
21
- '--days', days,
22
- ];
23
- if (repo) {
24
- args.push('--repo', repo);
25
- }
26
- else {
27
- args.push('--path', projectDir);
28
- }
29
- if (type) {
30
- args.push('--type', type);
31
- }
32
- const pythonPath = join(projectDir, 'pennyfarthing');
33
- execFile('python3', args, {
34
- cwd: pythonPath,
35
- env: { ...process.env, PYTHONPATH: pythonPath },
36
- timeout: 30000,
37
- maxBuffer: 10 * 1024 * 1024,
38
- }, (err, stdout, stderr) => {
39
- if (err) {
40
- console.error('[CodeMarkers] Analysis failed:', stderr || err.message);
41
- res.status(500).json({
42
- success: false,
43
- error: stderr || err.message,
44
- });
45
- return;
46
- }
47
- try {
48
- const data = JSON.parse(stdout);
49
- res.json(data);
50
- }
51
- catch (parseErr) {
52
- console.error('[CodeMarkers] JSON parse failed:', parseErr);
53
- res.status(500).json({
54
- success: false,
55
- error: 'Failed to parse code markers analysis output',
56
- });
57
- }
58
- });
59
- });
60
- return router;
61
- }
1
+ // Re-export from @pennyfarthing/core (Story 98-17)
2
+ export * from '@pennyfarthing/core/dist/server/api/code-markers.js';
62
3
  //# sourceMappingURL=code-markers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-markers.js","sourceRoot":"","sources":["../../src/api/code-markers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,uBAAuB,CAAC,aAA2B;IACjE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAA0B,CAAC;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAA0B,CAAC;QAElD,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,mCAAmC;YACzC,SAAS;YACT,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAErD,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE;YACxB,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE;YAC/C,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACzB,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;gBAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,8CAA8C;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"code-markers.js","sourceRoot":"","sources":["../../src/api/code-markers.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,qDAAqD,CAAC"}
@@ -1,3 +1,2 @@
1
- import { Router } from 'express';
2
- export declare function createComplexityRouter(getProjectDir: () => string): Router;
1
+ export * from '@pennyfarthing/core/dist/server/api/complexity.js';
3
2
  //# sourceMappingURL=complexity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complexity.d.ts","sourceRoot":"","sources":["../../src/api/complexity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,MAAM,CAgD1E"}
1
+ {"version":3,"file":"complexity.d.ts","sourceRoot":"","sources":["../../src/api/complexity.ts"],"names":[],"mappings":"AACA,cAAc,mDAAmD,CAAC"}