oh-my-claude-sisyphus 3.7.0 → 3.7.3

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 (381) hide show
  1. package/README.md +24 -1
  2. package/commands/hud.md +37 -5
  3. package/commands/omc-setup.md +105 -0
  4. package/dist/__tests__/compatibility-security.test.d.ts +13 -0
  5. package/dist/__tests__/compatibility-security.test.d.ts.map +1 -0
  6. package/dist/__tests__/compatibility-security.test.js +403 -0
  7. package/dist/__tests__/compatibility-security.test.js.map +1 -0
  8. package/dist/__tests__/compatibility.test.d.ts +7 -0
  9. package/dist/__tests__/compatibility.test.d.ts.map +1 -0
  10. package/dist/__tests__/compatibility.test.js +484 -0
  11. package/dist/__tests__/compatibility.test.js.map +1 -0
  12. package/dist/__tests__/hud/analytics-display.test.js +141 -1
  13. package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
  14. package/dist/__tests__/hud-windows.test.d.ts +2 -0
  15. package/dist/__tests__/hud-windows.test.d.ts.map +1 -0
  16. package/dist/__tests__/hud-windows.test.js +91 -0
  17. package/dist/__tests__/hud-windows.test.js.map +1 -0
  18. package/dist/cli/analytics.js +0 -0
  19. package/dist/cli/index.js +0 -0
  20. package/dist/compatibility/discovery.d.ts +58 -0
  21. package/dist/compatibility/discovery.d.ts.map +1 -0
  22. package/dist/compatibility/discovery.js +619 -0
  23. package/dist/compatibility/discovery.js.map +1 -0
  24. package/dist/compatibility/index.d.ts +51 -0
  25. package/dist/compatibility/index.d.ts.map +1 -0
  26. package/dist/compatibility/index.js +72 -0
  27. package/dist/compatibility/index.js.map +1 -0
  28. package/dist/compatibility/mcp-bridge.d.ts +138 -0
  29. package/dist/compatibility/mcp-bridge.d.ts.map +1 -0
  30. package/dist/compatibility/mcp-bridge.js +524 -0
  31. package/dist/compatibility/mcp-bridge.js.map +1 -0
  32. package/dist/compatibility/permission-adapter.d.ts +79 -0
  33. package/dist/compatibility/permission-adapter.d.ts.map +1 -0
  34. package/dist/compatibility/permission-adapter.js +369 -0
  35. package/dist/compatibility/permission-adapter.js.map +1 -0
  36. package/dist/compatibility/registry.d.ts +161 -0
  37. package/dist/compatibility/registry.d.ts.map +1 -0
  38. package/dist/compatibility/registry.js +389 -0
  39. package/dist/compatibility/registry.js.map +1 -0
  40. package/dist/compatibility/types.d.ts +249 -0
  41. package/dist/compatibility/types.d.ts.map +1 -0
  42. package/dist/compatibility/types.js +8 -0
  43. package/dist/compatibility/types.js.map +1 -0
  44. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
  45. package/dist/features/rate-limit-wait/daemon.js +44 -1
  46. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  47. package/dist/features/state-manager/index.d.ts.map +1 -1
  48. package/dist/features/state-manager/index.js +4 -1
  49. package/dist/features/state-manager/index.js.map +1 -1
  50. package/dist/hooks/permission-handler/__tests__/index.test.js +47 -0
  51. package/dist/hooks/permission-handler/__tests__/index.test.js.map +1 -1
  52. package/dist/hooks/permission-handler/index.d.ts +1 -1
  53. package/dist/hooks/permission-handler/index.d.ts.map +1 -1
  54. package/dist/hooks/permission-handler/index.js +11 -15
  55. package/dist/hooks/permission-handler/index.js.map +1 -1
  56. package/dist/hooks/plugin-patterns/index.d.ts +5 -0
  57. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
  58. package/dist/hooks/plugin-patterns/index.js +26 -1
  59. package/dist/hooks/plugin-patterns/index.js.map +1 -1
  60. package/dist/hooks/session-end/index.d.ts +0 -8
  61. package/dist/hooks/session-end/index.d.ts.map +1 -1
  62. package/dist/hooks/session-end/index.js +5 -12
  63. package/dist/hooks/session-end/index.js.map +1 -1
  64. package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
  65. package/dist/hooks/subagent-tracker/index.js +32 -17
  66. package/dist/hooks/subagent-tracker/index.js.map +1 -1
  67. package/dist/hud/analytics-display.d.ts +17 -1
  68. package/dist/hud/analytics-display.d.ts.map +1 -1
  69. package/dist/hud/analytics-display.js +55 -12
  70. package/dist/hud/analytics-display.js.map +1 -1
  71. package/dist/hud/render.d.ts.map +1 -1
  72. package/dist/hud/render.js +49 -18
  73. package/dist/hud/render.js.map +1 -1
  74. package/dist/hud/types.d.ts +2 -0
  75. package/dist/hud/types.d.ts.map +1 -1
  76. package/dist/hud/types.js +14 -0
  77. package/dist/hud/types.js.map +1 -1
  78. package/dist/installer/index.d.ts.map +1 -1
  79. package/dist/installer/index.js +3 -2
  80. package/dist/installer/index.js.map +1 -1
  81. package/docs/COMPATIBILITY.md +1051 -0
  82. package/hooks/keyword-detector.sh +4 -4
  83. package/hooks/persistent-mode.sh +10 -10
  84. package/hooks/session-start.sh +4 -4
  85. package/package.json +3 -1
  86. package/scripts/keyword-detector.mjs +4 -4
  87. package/scripts/persistent-mode.mjs +6 -6
  88. package/scripts/persistent-mode.sh +10 -10
  89. package/scripts/session-start.mjs +4 -4
  90. package/skills/hud/SKILL.md +37 -5
  91. package/skills/omc-setup/SKILL.md +162 -4
  92. package/skills/writer-memory/SKILL.md +443 -0
  93. package/skills/writer-memory/lib/character-tracker.ts +338 -0
  94. package/skills/writer-memory/lib/memory-manager.ts +804 -0
  95. package/skills/writer-memory/lib/relationship-graph.ts +400 -0
  96. package/skills/writer-memory/lib/scene-organizer.ts +544 -0
  97. package/skills/writer-memory/lib/synopsis-builder.ts +339 -0
  98. package/skills/writer-memory/templates/synopsis-template.md +46 -0
  99. package/templates/hooks/keyword-detector.sh +4 -4
  100. package/templates/hooks/persistent-mode.sh +10 -10
  101. package/templates/hooks/session-start.sh +4 -4
  102. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  103. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  104. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  105. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  106. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  107. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  108. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  109. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  110. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  111. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  112. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  113. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  114. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  115. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  116. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  117. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  118. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  119. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  120. package/dist/__tests__/learned-skills/config.test.js +0 -37
  121. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  122. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  123. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  124. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  125. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  126. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  127. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  128. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  129. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  130. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  131. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  132. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  133. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  134. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  135. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  136. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  137. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  138. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  139. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  140. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  141. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  142. package/dist/agents/codex-agents.d.ts +0 -20
  143. package/dist/agents/codex-agents.d.ts.map +0 -1
  144. package/dist/agents/codex-agents.js +0 -36
  145. package/dist/agents/codex-agents.js.map +0 -1
  146. package/dist/agents/document-writer.d.ts +0 -11
  147. package/dist/agents/document-writer.d.ts.map +0 -1
  148. package/dist/agents/document-writer.js +0 -209
  149. package/dist/agents/document-writer.js.map +0 -1
  150. package/dist/agents/frontend-engineer.d.ts +0 -11
  151. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  152. package/dist/agents/frontend-engineer.js +0 -115
  153. package/dist/agents/frontend-engineer.js.map +0 -1
  154. package/dist/agents/librarian.d.ts +0 -12
  155. package/dist/agents/librarian.d.ts.map +0 -1
  156. package/dist/agents/librarian.js +0 -103
  157. package/dist/agents/librarian.js.map +0 -1
  158. package/dist/agents/metis.d.ts +0 -12
  159. package/dist/agents/metis.d.ts.map +0 -1
  160. package/dist/agents/metis.js +0 -117
  161. package/dist/agents/metis.js.map +0 -1
  162. package/dist/agents/momus.d.ts +0 -12
  163. package/dist/agents/momus.d.ts.map +0 -1
  164. package/dist/agents/momus.js +0 -128
  165. package/dist/agents/momus.js.map +0 -1
  166. package/dist/agents/multimodal-looker.d.ts +0 -11
  167. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  168. package/dist/agents/multimodal-looker.js +0 -70
  169. package/dist/agents/multimodal-looker.js.map +0 -1
  170. package/dist/agents/oracle.d.ts +0 -13
  171. package/dist/agents/oracle.d.ts.map +0 -1
  172. package/dist/agents/oracle.js +0 -191
  173. package/dist/agents/oracle.js.map +0 -1
  174. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  175. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  176. package/dist/agents/orchestrator-sisyphus.js +0 -115
  177. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  178. package/dist/agents/prometheus.d.ts +0 -12
  179. package/dist/agents/prometheus.d.ts.map +0 -1
  180. package/dist/agents/prometheus.js +0 -195
  181. package/dist/agents/prometheus.js.map +0 -1
  182. package/dist/agents/sisyphus-junior.d.ts +0 -12
  183. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  184. package/dist/agents/sisyphus-junior.js +0 -93
  185. package/dist/agents/sisyphus-junior.js.map +0 -1
  186. package/dist/cli/components/CostDashboard.d.ts +0 -15
  187. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  188. package/dist/cli/components/CostDashboard.js +0 -15
  189. package/dist/cli/components/CostDashboard.js.map +0 -1
  190. package/dist/cli/components/LiveStats.d.ts +0 -16
  191. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  192. package/dist/cli/components/LiveStats.js +0 -16
  193. package/dist/cli/components/LiveStats.js.map +0 -1
  194. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  195. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  196. package/dist/cli/components/SessionBrowser.js +0 -14
  197. package/dist/cli/components/SessionBrowser.js.map +0 -1
  198. package/dist/cli/tui.d.ts +0 -21
  199. package/dist/cli/tui.d.ts.map +0 -1
  200. package/dist/cli/tui.js +0 -21
  201. package/dist/cli/tui.js.map +0 -1
  202. package/dist/hooks/autopilot/signals.d.ts +0 -20
  203. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  204. package/dist/hooks/autopilot/signals.js +0 -75
  205. package/dist/hooks/autopilot/signals.js.map +0 -1
  206. package/dist/hooks/autopilot/summary.d.ts +0 -27
  207. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  208. package/dist/hooks/autopilot/summary.js +0 -160
  209. package/dist/hooks/autopilot/summary.js.map +0 -1
  210. package/dist/hooks/autopilot/transition.d.ts +0 -39
  211. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  212. package/dist/hooks/autopilot/transition.js +0 -216
  213. package/dist/hooks/autopilot/transition.js.map +0 -1
  214. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  215. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  216. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  217. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  218. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  219. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  220. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  221. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  222. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  223. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  224. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  225. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  226. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  227. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  228. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  229. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  230. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  231. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  232. package/dist/hooks/edit-error-recovery/index.js +0 -89
  233. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  234. package/dist/hooks/learned-skills/config.d.ts +0 -53
  235. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  236. package/dist/hooks/learned-skills/config.js +0 -103
  237. package/dist/hooks/learned-skills/config.js.map +0 -1
  238. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  239. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  240. package/dist/hooks/learned-skills/constants.js +0 -26
  241. package/dist/hooks/learned-skills/constants.js.map +0 -1
  242. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  243. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  244. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  245. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  246. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  247. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  248. package/dist/hooks/learned-skills/detector.js +0 -150
  249. package/dist/hooks/learned-skills/detector.js.map +0 -1
  250. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  251. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  252. package/dist/hooks/learned-skills/finder.js +0 -117
  253. package/dist/hooks/learned-skills/finder.js.map +0 -1
  254. package/dist/hooks/learned-skills/index.d.ts +0 -62
  255. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  256. package/dist/hooks/learned-skills/index.js +0 -137
  257. package/dist/hooks/learned-skills/index.js.map +0 -1
  258. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  259. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  260. package/dist/hooks/learned-skills/loader.js +0 -107
  261. package/dist/hooks/learned-skills/loader.js.map +0 -1
  262. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  263. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  264. package/dist/hooks/learned-skills/parser.js +0 -190
  265. package/dist/hooks/learned-skills/parser.js.map +0 -1
  266. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  267. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  268. package/dist/hooks/learned-skills/promotion.js +0 -87
  269. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  270. package/dist/hooks/learned-skills/types.d.ts +0 -109
  271. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  272. package/dist/hooks/learned-skills/types.js +0 -8
  273. package/dist/hooks/learned-skills/types.js.map +0 -1
  274. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  275. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  276. package/dist/hooks/learned-skills/validator.js +0 -87
  277. package/dist/hooks/learned-skills/validator.js.map +0 -1
  278. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  279. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  280. package/dist/hooks/learned-skills/writer.js +0 -126
  281. package/dist/hooks/learned-skills/writer.js.map +0 -1
  282. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  283. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  284. package/dist/hooks/mnemosyne/config.js +0 -103
  285. package/dist/hooks/mnemosyne/config.js.map +0 -1
  286. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  287. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  288. package/dist/hooks/mnemosyne/constants.js +0 -26
  289. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  290. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  291. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  292. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  293. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  294. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  295. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  296. package/dist/hooks/mnemosyne/detector.js +0 -150
  297. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  298. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  299. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  300. package/dist/hooks/mnemosyne/finder.js +0 -117
  301. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  302. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  303. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  304. package/dist/hooks/mnemosyne/index.js +0 -137
  305. package/dist/hooks/mnemosyne/index.js.map +0 -1
  306. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  307. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  308. package/dist/hooks/mnemosyne/loader.js +0 -113
  309. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  310. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  311. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  312. package/dist/hooks/mnemosyne/parser.js +0 -190
  313. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  314. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  315. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  316. package/dist/hooks/mnemosyne/promotion.js +0 -87
  317. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  318. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  319. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  320. package/dist/hooks/mnemosyne/types.js +0 -8
  321. package/dist/hooks/mnemosyne/types.js.map +0 -1
  322. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  323. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  324. package/dist/hooks/mnemosyne/validator.js +0 -87
  325. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  326. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  327. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  328. package/dist/hooks/mnemosyne/writer.js +0 -126
  329. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  330. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  331. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  332. package/dist/hooks/ralph-loop/index.js +0 -322
  333. package/dist/hooks/ralph-loop/index.js.map +0 -1
  334. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  335. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  336. package/dist/hooks/ralph-prd/index.js +0 -310
  337. package/dist/hooks/ralph-prd/index.js.map +0 -1
  338. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  339. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  340. package/dist/hooks/ralph-progress/index.js +0 -408
  341. package/dist/hooks/ralph-progress/index.js.map +0 -1
  342. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  343. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  344. package/dist/hooks/ralph-verifier/index.js +0 -223
  345. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  346. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  347. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  348. package/dist/hooks/session-recovery/constants.js +0 -78
  349. package/dist/hooks/session-recovery/constants.js.map +0 -1
  350. package/dist/hooks/session-recovery/index.d.ts +0 -53
  351. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  352. package/dist/hooks/session-recovery/index.js +0 -321
  353. package/dist/hooks/session-recovery/index.js.map +0 -1
  354. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  355. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  356. package/dist/hooks/session-recovery/storage.js +0 -383
  357. package/dist/hooks/session-recovery/storage.js.map +0 -1
  358. package/dist/hooks/session-recovery/types.d.ts +0 -145
  359. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  360. package/dist/hooks/session-recovery/types.js +0 -8
  361. package/dist/hooks/session-recovery/types.js.map +0 -1
  362. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  363. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  364. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  365. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  366. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  367. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  368. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  369. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  370. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  371. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  372. package/dist/hooks/ultraqa-loop/index.js +0 -216
  373. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  374. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  375. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  376. package/dist/hooks/ultrawork-state/index.js +0 -208
  377. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  378. package/dist/hud/sisyphus-state.d.ts +0 -31
  379. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  380. package/dist/hud/sisyphus-state.js +0 -163
  381. package/dist/hud/sisyphus-state.js.map +0 -1
@@ -0,0 +1,619 @@
1
+ /**
2
+ * Plugin and MCP Server Discovery
3
+ *
4
+ * Discovers external plugins, MCP servers, and tools from:
5
+ * - ~/.claude/plugins/ (Claude Code plugins)
6
+ * - ~/.claude/settings.json (MCP servers config)
7
+ * - ~/.claude/claude_desktop_config.json (Desktop app MCP config)
8
+ * - Project-local .claude-plugin/ directories
9
+ */
10
+ import { existsSync, readdirSync, readFileSync, realpathSync } from 'fs';
11
+ import { join, basename, resolve, normalize } from 'path';
12
+ import { homedir } from 'os';
13
+ import Ajv from 'ajv';
14
+ /**
15
+ * Security Error for discovery operations
16
+ */
17
+ export class DiscoverySecurityError extends Error {
18
+ constructor(message) {
19
+ super(message);
20
+ this.name = 'DiscoverySecurityError';
21
+ }
22
+ }
23
+ /**
24
+ * JSON Schema for plugin manifest validation
25
+ */
26
+ const pluginManifestSchema = {
27
+ type: 'object',
28
+ required: ['name', 'version'],
29
+ properties: {
30
+ name: { type: 'string', pattern: '^[a-zA-Z0-9_-]+$', maxLength: 100 },
31
+ version: { type: 'string', maxLength: 50 },
32
+ description: { type: 'string', maxLength: 500 },
33
+ namespace: { type: 'string', pattern: '^[a-zA-Z0-9_-]+$', maxLength: 100 },
34
+ skills: {
35
+ oneOf: [
36
+ { type: 'string', maxLength: 200 },
37
+ { type: 'array', items: { type: 'string', maxLength: 200 }, maxItems: 50 },
38
+ ],
39
+ },
40
+ agents: {
41
+ oneOf: [
42
+ { type: 'string', maxLength: 200 },
43
+ { type: 'array', items: { type: 'string', maxLength: 200 }, maxItems: 50 },
44
+ ],
45
+ },
46
+ tools: {
47
+ type: 'array',
48
+ maxItems: 100,
49
+ items: {
50
+ type: 'object',
51
+ required: ['name'],
52
+ properties: {
53
+ name: { type: 'string', pattern: '^[a-zA-Z0-9_-]+$', maxLength: 100 },
54
+ description: { type: 'string', maxLength: 500 },
55
+ inputSchema: { type: 'object' },
56
+ },
57
+ additionalProperties: false,
58
+ },
59
+ },
60
+ permissions: {
61
+ type: 'array',
62
+ maxItems: 100,
63
+ items: {
64
+ type: 'object',
65
+ properties: {
66
+ tool: { type: 'string', maxLength: 200 },
67
+ scope: { type: 'string', enum: ['read', 'write', 'execute'] },
68
+ patterns: { type: 'array', items: { type: 'string', maxLength: 500 }, maxItems: 50 },
69
+ reason: { type: 'string', maxLength: 500 },
70
+ },
71
+ },
72
+ },
73
+ mcpServers: {
74
+ type: 'object',
75
+ additionalProperties: {
76
+ type: 'object',
77
+ required: ['command'],
78
+ properties: {
79
+ command: { type: 'string', maxLength: 500 },
80
+ args: { type: 'array', items: { type: 'string', maxLength: 500 }, maxItems: 50 },
81
+ env: { type: 'object', additionalProperties: { type: 'string', maxLength: 1000 } },
82
+ enabled: { type: 'boolean' },
83
+ },
84
+ },
85
+ },
86
+ },
87
+ additionalProperties: true,
88
+ };
89
+ /**
90
+ * JSON Schema for MCP server config validation
91
+ */
92
+ const mcpServerConfigSchema = {
93
+ type: 'object',
94
+ required: ['command'],
95
+ properties: {
96
+ command: { type: 'string', minLength: 1, maxLength: 500 },
97
+ args: { type: 'array', items: { type: 'string', maxLength: 500 }, maxItems: 50 },
98
+ env: { type: 'object', additionalProperties: { type: 'string', maxLength: 1000 } },
99
+ enabled: { type: 'boolean' },
100
+ },
101
+ additionalProperties: false,
102
+ };
103
+ // Compile schemas
104
+ const ajv = new Ajv.default({ allErrors: true, strict: false });
105
+ const validatePluginManifest = ajv.compile(pluginManifestSchema);
106
+ const validateMcpServerConfig = ajv.compile(mcpServerConfigSchema);
107
+ /**
108
+ * SECURITY: Validate that a path stays within a base directory
109
+ * Prevents path traversal attacks like ../../../../etc/passwd
110
+ */
111
+ function isPathWithinDirectory(basePath, targetPath) {
112
+ try {
113
+ // Resolve both paths to absolute form
114
+ const resolvedBase = resolve(basePath);
115
+ const resolvedTarget = resolve(basePath, targetPath);
116
+ // Normalize paths to handle ../ sequences
117
+ const normalizedBase = normalize(resolvedBase);
118
+ const normalizedTarget = normalize(resolvedTarget);
119
+ // Check if target is within base (starts with base path)
120
+ if (!normalizedTarget.startsWith(normalizedBase)) {
121
+ return false;
122
+ }
123
+ // Additional check: verify the path actually exists within base
124
+ // by checking real path (follows symlinks)
125
+ if (existsSync(normalizedTarget)) {
126
+ const realTarget = realpathSync(normalizedTarget);
127
+ const realBase = existsSync(normalizedBase) ? realpathSync(normalizedBase) : normalizedBase;
128
+ if (!realTarget.startsWith(realBase)) {
129
+ return false;
130
+ }
131
+ }
132
+ return true;
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
138
+ /**
139
+ * Default paths for discovery
140
+ */
141
+ const DEFAULT_PLUGIN_PATHS = [
142
+ join(homedir(), '.claude', 'plugins'),
143
+ join(homedir(), '.claude', 'installed-plugins'),
144
+ ];
145
+ const DEFAULT_MCP_CONFIG_PATH = join(homedir(), '.claude', 'claude_desktop_config.json');
146
+ const DEFAULT_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
147
+ /**
148
+ * Infer capabilities from tool name and description
149
+ */
150
+ function inferCapabilities(name, description) {
151
+ const capabilities = [];
152
+ const text = `${name} ${description || ''}`.toLowerCase();
153
+ if (text.includes('read') || text.includes('get') || text.includes('fetch') || text.includes('list')) {
154
+ capabilities.push('read');
155
+ }
156
+ if (text.includes('write') || text.includes('create') || text.includes('update') || text.includes('edit')) {
157
+ capabilities.push('write');
158
+ }
159
+ if (text.includes('exec') || text.includes('run') || text.includes('bash') || text.includes('command')) {
160
+ capabilities.push('execute');
161
+ }
162
+ if (text.includes('search') || text.includes('find') || text.includes('query') || text.includes('grep')) {
163
+ capabilities.push('search');
164
+ }
165
+ if (text.includes('http') || text.includes('fetch') || text.includes('web') || text.includes('api')) {
166
+ capabilities.push('network');
167
+ }
168
+ if (text.includes('analyz') || text.includes('inspect') || text.includes('check') || text.includes('review')) {
169
+ capabilities.push('analyze');
170
+ }
171
+ if (text.includes('generat') || text.includes('creat') || text.includes('build') || text.includes('make')) {
172
+ capabilities.push('generate');
173
+ }
174
+ return capabilities.length > 0 ? capabilities : ['unknown'];
175
+ }
176
+ /**
177
+ * Parse and validate a plugin manifest file
178
+ */
179
+ function parsePluginManifest(manifestPath) {
180
+ try {
181
+ const content = readFileSync(manifestPath, 'utf-8');
182
+ const parsed = JSON.parse(content);
183
+ // SECURITY: Validate manifest against schema
184
+ if (!validatePluginManifest(parsed)) {
185
+ const errors = validatePluginManifest.errors
186
+ ?.map((e) => `${e.instancePath}: ${e.message}`)
187
+ .join(', ');
188
+ console.warn(`[Security] Invalid plugin manifest at ${manifestPath}: ${errors}`);
189
+ return null;
190
+ }
191
+ return parsed;
192
+ }
193
+ catch (error) {
194
+ return null;
195
+ }
196
+ }
197
+ /**
198
+ * Discover skills from a plugin directory
199
+ */
200
+ function discoverPluginSkills(pluginPath, manifest) {
201
+ const tools = [];
202
+ const namespace = manifest.namespace || manifest.name;
203
+ // Handle skills directory
204
+ let skillsPaths = [];
205
+ if (typeof manifest.skills === 'string') {
206
+ // SECURITY: Validate path stays within plugin directory
207
+ if (!isPathWithinDirectory(pluginPath, manifest.skills)) {
208
+ console.warn(`[Security] Path traversal detected in plugin ${manifest.name}: skills path "${manifest.skills}" escapes plugin directory`);
209
+ return tools;
210
+ }
211
+ skillsPaths = [join(pluginPath, manifest.skills)];
212
+ }
213
+ else if (Array.isArray(manifest.skills)) {
214
+ skillsPaths = [];
215
+ for (const s of manifest.skills) {
216
+ // SECURITY: Validate each path
217
+ if (!isPathWithinDirectory(pluginPath, s)) {
218
+ console.warn(`[Security] Path traversal detected in plugin ${manifest.name}: skills path "${s}" escapes plugin directory`);
219
+ continue;
220
+ }
221
+ skillsPaths.push(join(pluginPath, s));
222
+ }
223
+ }
224
+ for (const skillsPath of skillsPaths) {
225
+ if (!existsSync(skillsPath))
226
+ continue;
227
+ try {
228
+ const entries = readdirSync(skillsPath, { withFileTypes: true });
229
+ for (const entry of entries) {
230
+ if (!entry.isDirectory())
231
+ continue;
232
+ const skillMdPath = join(skillsPath, entry.name, 'SKILL.md');
233
+ if (!existsSync(skillMdPath))
234
+ continue;
235
+ // Parse skill metadata from SKILL.md frontmatter
236
+ const skillContent = readFileSync(skillMdPath, 'utf-8');
237
+ const frontmatterMatch = skillContent.match(/^---\r?\n([\s\S]*?)\r?\n---/);
238
+ const metadata = {};
239
+ if (frontmatterMatch) {
240
+ for (const line of frontmatterMatch[1].split('\n')) {
241
+ const colonIdx = line.indexOf(':');
242
+ if (colonIdx > 0) {
243
+ const key = line.slice(0, colonIdx).trim();
244
+ let value = line.slice(colonIdx + 1).trim();
245
+ // Remove quotes
246
+ if ((value.startsWith('"') && value.endsWith('"')) ||
247
+ (value.startsWith("'") && value.endsWith("'"))) {
248
+ value = value.slice(1, -1);
249
+ }
250
+ metadata[key] = value;
251
+ }
252
+ }
253
+ }
254
+ tools.push({
255
+ name: `${namespace}:${entry.name}`,
256
+ type: 'skill',
257
+ source: manifest.name,
258
+ description: metadata.description || `Skill from ${manifest.name}`,
259
+ commands: [entry.name],
260
+ capabilities: inferCapabilities(entry.name, metadata.description),
261
+ enabled: true,
262
+ priority: 50, // Default priority for external skills
263
+ });
264
+ }
265
+ }
266
+ catch {
267
+ // Skip directories we can't read
268
+ }
269
+ }
270
+ return tools;
271
+ }
272
+ /**
273
+ * Discover agents from a plugin directory
274
+ */
275
+ function discoverPluginAgents(pluginPath, manifest) {
276
+ const tools = [];
277
+ const namespace = manifest.namespace || manifest.name;
278
+ // Handle agents directory
279
+ let agentsPaths = [];
280
+ if (typeof manifest.agents === 'string') {
281
+ // SECURITY: Validate path stays within plugin directory
282
+ if (!isPathWithinDirectory(pluginPath, manifest.agents)) {
283
+ console.warn(`[Security] Path traversal detected in plugin ${manifest.name}: agents path "${manifest.agents}" escapes plugin directory`);
284
+ return tools;
285
+ }
286
+ agentsPaths = [join(pluginPath, manifest.agents)];
287
+ }
288
+ else if (Array.isArray(manifest.agents)) {
289
+ agentsPaths = [];
290
+ for (const a of manifest.agents) {
291
+ // SECURITY: Validate each path
292
+ if (!isPathWithinDirectory(pluginPath, a)) {
293
+ console.warn(`[Security] Path traversal detected in plugin ${manifest.name}: agents path "${a}" escapes plugin directory`);
294
+ continue;
295
+ }
296
+ agentsPaths.push(join(pluginPath, a));
297
+ }
298
+ }
299
+ for (const agentsPath of agentsPaths) {
300
+ if (!existsSync(agentsPath))
301
+ continue;
302
+ try {
303
+ const entries = readdirSync(agentsPath);
304
+ for (const entry of entries) {
305
+ if (!entry.endsWith('.md'))
306
+ continue;
307
+ const agentPath = join(agentsPath, entry);
308
+ const agentContent = readFileSync(agentPath, 'utf-8');
309
+ const agentName = basename(entry, '.md');
310
+ // Parse agent metadata from frontmatter
311
+ const frontmatterMatch = agentContent.match(/^---\r?\n([\s\S]*?)\r?\n---/);
312
+ const metadata = {};
313
+ if (frontmatterMatch) {
314
+ for (const line of frontmatterMatch[1].split('\n')) {
315
+ const colonIdx = line.indexOf(':');
316
+ if (colonIdx > 0) {
317
+ const key = line.slice(0, colonIdx).trim();
318
+ let value = line.slice(colonIdx + 1).trim();
319
+ if ((value.startsWith('"') && value.endsWith('"')) ||
320
+ (value.startsWith("'") && value.endsWith("'"))) {
321
+ value = value.slice(1, -1);
322
+ }
323
+ metadata[key] = value;
324
+ }
325
+ }
326
+ }
327
+ tools.push({
328
+ name: `${namespace}:${agentName}`,
329
+ type: 'agent',
330
+ source: manifest.name,
331
+ description: metadata.description || `Agent from ${manifest.name}`,
332
+ capabilities: ['analyze', 'generate'],
333
+ enabled: true,
334
+ priority: 50,
335
+ });
336
+ }
337
+ }
338
+ catch {
339
+ // Skip directories we can't read
340
+ }
341
+ }
342
+ return tools;
343
+ }
344
+ /**
345
+ * Discover a single plugin from a directory
346
+ */
347
+ function discoverPlugin(pluginPath) {
348
+ // Look for plugin.json in the directory or in .claude-plugin subdirectory
349
+ let manifestPath = join(pluginPath, 'plugin.json');
350
+ if (!existsSync(manifestPath)) {
351
+ manifestPath = join(pluginPath, '.claude-plugin', 'plugin.json');
352
+ }
353
+ if (!existsSync(manifestPath)) {
354
+ return null;
355
+ }
356
+ const manifest = parsePluginManifest(manifestPath);
357
+ if (!manifest) {
358
+ return {
359
+ name: basename(pluginPath),
360
+ version: 'unknown',
361
+ path: pluginPath,
362
+ manifest: { name: basename(pluginPath), version: 'unknown' },
363
+ loaded: false,
364
+ error: 'Failed to parse plugin manifest',
365
+ tools: [],
366
+ };
367
+ }
368
+ // Discover tools from this plugin
369
+ const tools = [
370
+ ...discoverPluginSkills(pluginPath, manifest),
371
+ ...discoverPluginAgents(pluginPath, manifest),
372
+ ];
373
+ // Add tool definitions from manifest
374
+ if (manifest.tools) {
375
+ for (const toolDef of manifest.tools) {
376
+ tools.push({
377
+ name: `${manifest.namespace || manifest.name}:${toolDef.name}`,
378
+ type: 'plugin',
379
+ source: manifest.name,
380
+ description: toolDef.description,
381
+ capabilities: inferCapabilities(toolDef.name, toolDef.description),
382
+ enabled: true,
383
+ schema: toolDef.inputSchema,
384
+ priority: 50,
385
+ });
386
+ }
387
+ }
388
+ return {
389
+ name: manifest.name,
390
+ version: manifest.version,
391
+ path: pluginPath,
392
+ manifest,
393
+ loaded: true,
394
+ tools,
395
+ };
396
+ }
397
+ /**
398
+ * Discover all plugins from configured paths
399
+ */
400
+ export function discoverPlugins(options) {
401
+ const plugins = [];
402
+ const paths = options?.pluginPaths || DEFAULT_PLUGIN_PATHS;
403
+ for (const basePath of paths) {
404
+ if (!existsSync(basePath))
405
+ continue;
406
+ try {
407
+ const entries = readdirSync(basePath, { withFileTypes: true });
408
+ for (const entry of entries) {
409
+ if (!entry.isDirectory())
410
+ continue;
411
+ // Skip our own plugin
412
+ if (entry.name === 'oh-my-claudecode')
413
+ continue;
414
+ const pluginPath = join(basePath, entry.name);
415
+ const plugin = discoverPlugin(pluginPath);
416
+ if (plugin) {
417
+ plugins.push(plugin);
418
+ }
419
+ }
420
+ }
421
+ catch {
422
+ // Skip paths we can't read
423
+ }
424
+ }
425
+ return plugins;
426
+ }
427
+ /**
428
+ * Parse MCP servers from Claude Desktop config format
429
+ */
430
+ function parseMcpDesktopConfig(configPath) {
431
+ const servers = [];
432
+ if (!existsSync(configPath)) {
433
+ return servers;
434
+ }
435
+ try {
436
+ const content = readFileSync(configPath, 'utf-8');
437
+ const config = JSON.parse(content);
438
+ if (!config.mcpServers) {
439
+ return servers;
440
+ }
441
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
442
+ // SECURITY: Validate server config against schema
443
+ if (!validateMcpServerConfig(serverConfig)) {
444
+ const errors = validateMcpServerConfig.errors
445
+ ?.map((e) => `${e.instancePath}: ${e.message}`)
446
+ .join(', ');
447
+ console.warn(`[Security] Invalid MCP server config for "${name}": ${errors}`);
448
+ continue;
449
+ }
450
+ servers.push({
451
+ name,
452
+ config: serverConfig,
453
+ source: 'claude_desktop_config',
454
+ connected: false,
455
+ tools: [], // Tools discovered after connection
456
+ });
457
+ }
458
+ }
459
+ catch {
460
+ // Ignore parse errors
461
+ }
462
+ return servers;
463
+ }
464
+ /**
465
+ * Parse MCP servers from Claude Code settings.json
466
+ */
467
+ function parseMcpSettings(settingsPath) {
468
+ const servers = [];
469
+ if (!existsSync(settingsPath)) {
470
+ return servers;
471
+ }
472
+ try {
473
+ const content = readFileSync(settingsPath, 'utf-8');
474
+ const settings = JSON.parse(content);
475
+ if (!settings.mcpServers) {
476
+ return servers;
477
+ }
478
+ for (const [name, serverConfig] of Object.entries(settings.mcpServers)) {
479
+ // SECURITY: Validate server config against schema
480
+ if (!validateMcpServerConfig(serverConfig)) {
481
+ const errors = validateMcpServerConfig.errors
482
+ ?.map((e) => `${e.instancePath}: ${e.message}`)
483
+ .join(', ');
484
+ console.warn(`[Security] Invalid MCP server config for "${name}": ${errors}`);
485
+ continue;
486
+ }
487
+ servers.push({
488
+ name,
489
+ config: serverConfig,
490
+ source: 'settings.json',
491
+ connected: false,
492
+ tools: [],
493
+ });
494
+ }
495
+ }
496
+ catch {
497
+ // Ignore parse errors
498
+ }
499
+ return servers;
500
+ }
501
+ /**
502
+ * Discover all MCP servers from configuration files
503
+ */
504
+ export function discoverMcpServers(options) {
505
+ const servers = [];
506
+ const seen = new Set();
507
+ // Check settings.json first (higher priority)
508
+ const settingsPath = options?.settingsPath || DEFAULT_SETTINGS_PATH;
509
+ const settingsServers = parseMcpSettings(settingsPath);
510
+ for (const server of settingsServers) {
511
+ if (!seen.has(server.name)) {
512
+ servers.push(server);
513
+ seen.add(server.name);
514
+ }
515
+ }
516
+ // Check claude_desktop_config.json
517
+ const mcpConfigPath = options?.mcpConfigPath || DEFAULT_MCP_CONFIG_PATH;
518
+ const desktopServers = parseMcpDesktopConfig(mcpConfigPath);
519
+ for (const server of desktopServers) {
520
+ if (!seen.has(server.name)) {
521
+ servers.push(server);
522
+ seen.add(server.name);
523
+ }
524
+ }
525
+ return servers;
526
+ }
527
+ /**
528
+ * Discover MCP servers from plugin manifests
529
+ */
530
+ export function discoverPluginMcpServers(plugins) {
531
+ const servers = [];
532
+ for (const plugin of plugins) {
533
+ if (!plugin.manifest.mcpServers)
534
+ continue;
535
+ for (const [name, serverConfig] of Object.entries(plugin.manifest.mcpServers)) {
536
+ servers.push({
537
+ name: `${plugin.name}:${name}`,
538
+ config: serverConfig,
539
+ source: plugin.name,
540
+ connected: false,
541
+ tools: [],
542
+ });
543
+ }
544
+ }
545
+ return servers;
546
+ }
547
+ /**
548
+ * Perform full discovery of plugins and MCP servers
549
+ */
550
+ export function discoverAll(options) {
551
+ // Discover plugins
552
+ const plugins = discoverPlugins(options);
553
+ // Discover MCP servers from config files
554
+ const configMcpServers = discoverMcpServers(options);
555
+ // Discover MCP servers from plugin manifests
556
+ const pluginMcpServers = discoverPluginMcpServers(plugins);
557
+ // Merge MCP servers (config takes priority)
558
+ const mcpServers = [...configMcpServers];
559
+ const seenServers = new Set(configMcpServers.map(s => s.name));
560
+ for (const server of pluginMcpServers) {
561
+ if (!seenServers.has(server.name)) {
562
+ mcpServers.push(server);
563
+ }
564
+ }
565
+ // Collect all tools
566
+ const allTools = [];
567
+ for (const plugin of plugins) {
568
+ allTools.push(...plugin.tools);
569
+ }
570
+ return {
571
+ plugins,
572
+ mcpServers,
573
+ allTools,
574
+ timestamp: Date.now(),
575
+ };
576
+ }
577
+ /**
578
+ * Get paths being scanned for plugins
579
+ */
580
+ export function getPluginPaths() {
581
+ return DEFAULT_PLUGIN_PATHS.filter(p => existsSync(p));
582
+ }
583
+ /**
584
+ * Get path to MCP config file if it exists
585
+ */
586
+ export function getMcpConfigPath() {
587
+ if (existsSync(DEFAULT_MCP_CONFIG_PATH)) {
588
+ return DEFAULT_MCP_CONFIG_PATH;
589
+ }
590
+ if (existsSync(DEFAULT_SETTINGS_PATH)) {
591
+ return DEFAULT_SETTINGS_PATH;
592
+ }
593
+ return null;
594
+ }
595
+ /**
596
+ * Check if a specific plugin is installed
597
+ */
598
+ export function isPluginInstalled(pluginName) {
599
+ for (const basePath of DEFAULT_PLUGIN_PATHS) {
600
+ const pluginPath = join(basePath, pluginName);
601
+ if (existsSync(pluginPath)) {
602
+ return true;
603
+ }
604
+ }
605
+ return false;
606
+ }
607
+ /**
608
+ * Get plugin info by name
609
+ */
610
+ export function getPluginInfo(pluginName) {
611
+ for (const basePath of DEFAULT_PLUGIN_PATHS) {
612
+ const pluginPath = join(basePath, pluginName);
613
+ if (existsSync(pluginPath)) {
614
+ return discoverPlugin(pluginPath);
615
+ }
616
+ }
617
+ return null;
618
+ }
619
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/compatibility/discovery.ts"],"names":[],"mappings":"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"}