plexus-agent-config 0.0.1

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 (351) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/bin.js +175 -0
  4. package/dist/bin.js.map +1 -0
  5. package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.d.ts +38 -0
  6. package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.d.ts.map +1 -0
  7. package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.js +125 -0
  8. package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.js.map +1 -0
  9. package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.d.ts +9 -0
  10. package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.d.ts.map +1 -0
  11. package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.js +96 -0
  12. package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.js.map +1 -0
  13. package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.d.ts +8 -0
  14. package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.d.ts.map +1 -0
  15. package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.js +12 -0
  16. package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.js.map +1 -0
  17. package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.d.ts +25 -0
  18. package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.d.ts.map +1 -0
  19. package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.js +182 -0
  20. package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.js.map +1 -0
  21. package/node_modules/plexus-agent-config-core/dist/agents/catalog.d.ts +15 -0
  22. package/node_modules/plexus-agent-config-core/dist/agents/catalog.d.ts.map +1 -0
  23. package/node_modules/plexus-agent-config-core/dist/agents/catalog.js +153 -0
  24. package/node_modules/plexus-agent-config-core/dist/agents/catalog.js.map +1 -0
  25. package/node_modules/plexus-agent-config-core/dist/agents/detect.d.ts +14 -0
  26. package/node_modules/plexus-agent-config-core/dist/agents/detect.d.ts.map +1 -0
  27. package/node_modules/plexus-agent-config-core/dist/agents/detect.js +92 -0
  28. package/node_modules/plexus-agent-config-core/dist/agents/detect.js.map +1 -0
  29. package/node_modules/plexus-agent-config-core/dist/agents/index.d.ts +5 -0
  30. package/node_modules/plexus-agent-config-core/dist/agents/index.d.ts.map +1 -0
  31. package/node_modules/plexus-agent-config-core/dist/agents/index.js +5 -0
  32. package/node_modules/plexus-agent-config-core/dist/agents/index.js.map +1 -0
  33. package/node_modules/plexus-agent-config-core/dist/agents/inspect.d.ts +74 -0
  34. package/node_modules/plexus-agent-config-core/dist/agents/inspect.d.ts.map +1 -0
  35. package/node_modules/plexus-agent-config-core/dist/agents/inspect.js +169 -0
  36. package/node_modules/plexus-agent-config-core/dist/agents/inspect.js.map +1 -0
  37. package/node_modules/plexus-agent-config-core/dist/backup/index.d.ts +70 -0
  38. package/node_modules/plexus-agent-config-core/dist/backup/index.d.ts.map +1 -0
  39. package/node_modules/plexus-agent-config-core/dist/backup/index.js +258 -0
  40. package/node_modules/plexus-agent-config-core/dist/backup/index.js.map +1 -0
  41. package/node_modules/plexus-agent-config-core/dist/debug/index.d.ts +71 -0
  42. package/node_modules/plexus-agent-config-core/dist/debug/index.d.ts.map +1 -0
  43. package/node_modules/plexus-agent-config-core/dist/debug/index.js +263 -0
  44. package/node_modules/plexus-agent-config-core/dist/debug/index.js.map +1 -0
  45. package/node_modules/plexus-agent-config-core/dist/effective/index.d.ts +65 -0
  46. package/node_modules/plexus-agent-config-core/dist/effective/index.d.ts.map +1 -0
  47. package/node_modules/plexus-agent-config-core/dist/effective/index.js +227 -0
  48. package/node_modules/plexus-agent-config-core/dist/effective/index.js.map +1 -0
  49. package/node_modules/plexus-agent-config-core/dist/import/from-agents.d.ts +59 -0
  50. package/node_modules/plexus-agent-config-core/dist/import/from-agents.d.ts.map +1 -0
  51. package/node_modules/plexus-agent-config-core/dist/import/from-agents.js +212 -0
  52. package/node_modules/plexus-agent-config-core/dist/import/from-agents.js.map +1 -0
  53. package/node_modules/plexus-agent-config-core/dist/import/index.d.ts +26 -0
  54. package/node_modules/plexus-agent-config-core/dist/import/index.d.ts.map +1 -0
  55. package/node_modules/plexus-agent-config-core/dist/import/index.js +100 -0
  56. package/node_modules/plexus-agent-config-core/dist/import/index.js.map +1 -0
  57. package/node_modules/plexus-agent-config-core/dist/index.d.ts +12 -0
  58. package/node_modules/plexus-agent-config-core/dist/index.d.ts.map +1 -0
  59. package/node_modules/plexus-agent-config-core/dist/index.js +12 -0
  60. package/node_modules/plexus-agent-config-core/dist/index.js.map +1 -0
  61. package/node_modules/plexus-agent-config-core/dist/rules/index.d.ts +6 -0
  62. package/node_modules/plexus-agent-config-core/dist/rules/index.d.ts.map +1 -0
  63. package/node_modules/plexus-agent-config-core/dist/rules/index.js +292 -0
  64. package/node_modules/plexus-agent-config-core/dist/rules/index.js.map +1 -0
  65. package/node_modules/plexus-agent-config-core/dist/spread/index.d.ts +38 -0
  66. package/node_modules/plexus-agent-config-core/dist/spread/index.d.ts.map +1 -0
  67. package/node_modules/plexus-agent-config-core/dist/spread/index.js +190 -0
  68. package/node_modules/plexus-agent-config-core/dist/spread/index.js.map +1 -0
  69. package/node_modules/plexus-agent-config-core/dist/store/config.d.ts +5 -0
  70. package/node_modules/plexus-agent-config-core/dist/store/config.d.ts.map +1 -0
  71. package/node_modules/plexus-agent-config-core/dist/store/config.js +62 -0
  72. package/node_modules/plexus-agent-config-core/dist/store/config.js.map +1 -0
  73. package/node_modules/plexus-agent-config-core/dist/store/custom-agents.d.ts +45 -0
  74. package/node_modules/plexus-agent-config-core/dist/store/custom-agents.d.ts.map +1 -0
  75. package/node_modules/plexus-agent-config-core/dist/store/custom-agents.js +103 -0
  76. package/node_modules/plexus-agent-config-core/dist/store/custom-agents.js.map +1 -0
  77. package/node_modules/plexus-agent-config-core/dist/store/fs-utils.d.ts +16 -0
  78. package/node_modules/plexus-agent-config-core/dist/store/fs-utils.d.ts.map +1 -0
  79. package/node_modules/plexus-agent-config-core/dist/store/fs-utils.js +45 -0
  80. package/node_modules/plexus-agent-config-core/dist/store/fs-utils.js.map +1 -0
  81. package/node_modules/plexus-agent-config-core/dist/store/index.d.ts +9 -0
  82. package/node_modules/plexus-agent-config-core/dist/store/index.d.ts.map +1 -0
  83. package/node_modules/plexus-agent-config-core/dist/store/index.js +9 -0
  84. package/node_modules/plexus-agent-config-core/dist/store/index.js.map +1 -0
  85. package/node_modules/plexus-agent-config-core/dist/store/mcp.d.ts +5 -0
  86. package/node_modules/plexus-agent-config-core/dist/store/mcp.d.ts.map +1 -0
  87. package/node_modules/plexus-agent-config-core/dist/store/mcp.js +30 -0
  88. package/node_modules/plexus-agent-config-core/dist/store/mcp.js.map +1 -0
  89. package/node_modules/plexus-agent-config-core/dist/store/merge.d.ts +15 -0
  90. package/node_modules/plexus-agent-config-core/dist/store/merge.d.ts.map +1 -0
  91. package/node_modules/plexus-agent-config-core/dist/store/merge.js +28 -0
  92. package/node_modules/plexus-agent-config-core/dist/store/merge.js.map +1 -0
  93. package/node_modules/plexus-agent-config-core/dist/store/paths.d.ts +22 -0
  94. package/node_modules/plexus-agent-config-core/dist/store/paths.d.ts.map +1 -0
  95. package/node_modules/plexus-agent-config-core/dist/store/paths.js +107 -0
  96. package/node_modules/plexus-agent-config-core/dist/store/paths.js.map +1 -0
  97. package/node_modules/plexus-agent-config-core/dist/store/rules.d.ts +12 -0
  98. package/node_modules/plexus-agent-config-core/dist/store/rules.d.ts.map +1 -0
  99. package/node_modules/plexus-agent-config-core/dist/store/rules.js +32 -0
  100. package/node_modules/plexus-agent-config-core/dist/store/rules.js.map +1 -0
  101. package/node_modules/plexus-agent-config-core/dist/store/scaffolding.d.ts +11 -0
  102. package/node_modules/plexus-agent-config-core/dist/store/scaffolding.d.ts.map +1 -0
  103. package/node_modules/plexus-agent-config-core/dist/store/scaffolding.js +32 -0
  104. package/node_modules/plexus-agent-config-core/dist/store/scaffolding.js.map +1 -0
  105. package/node_modules/plexus-agent-config-core/dist/store/skills.d.ts +13 -0
  106. package/node_modules/plexus-agent-config-core/dist/store/skills.d.ts.map +1 -0
  107. package/node_modules/plexus-agent-config-core/dist/store/skills.js +84 -0
  108. package/node_modules/plexus-agent-config-core/dist/store/skills.js.map +1 -0
  109. package/node_modules/plexus-agent-config-core/dist/sync/index.d.ts +89 -0
  110. package/node_modules/plexus-agent-config-core/dist/sync/index.d.ts.map +1 -0
  111. package/node_modules/plexus-agent-config-core/dist/sync/index.js +423 -0
  112. package/node_modules/plexus-agent-config-core/dist/sync/index.js.map +1 -0
  113. package/node_modules/plexus-agent-config-core/dist/team/git.d.ts +23 -0
  114. package/node_modules/plexus-agent-config-core/dist/team/git.d.ts.map +1 -0
  115. package/node_modules/plexus-agent-config-core/dist/team/git.js +132 -0
  116. package/node_modules/plexus-agent-config-core/dist/team/git.js.map +1 -0
  117. package/node_modules/plexus-agent-config-core/dist/team/index.d.ts +2 -0
  118. package/node_modules/plexus-agent-config-core/dist/team/index.d.ts.map +1 -0
  119. package/node_modules/plexus-agent-config-core/dist/team/index.js +2 -0
  120. package/node_modules/plexus-agent-config-core/dist/team/index.js.map +1 -0
  121. package/node_modules/plexus-agent-config-core/dist/types.d.ts +142 -0
  122. package/node_modules/plexus-agent-config-core/dist/types.d.ts.map +1 -0
  123. package/node_modules/plexus-agent-config-core/dist/types.js +13 -0
  124. package/node_modules/plexus-agent-config-core/dist/types.js.map +1 -0
  125. package/node_modules/plexus-agent-config-core/package.json +29 -0
  126. package/node_modules/plexus-agent-config-web/.next/BUILD_ID +1 -0
  127. package/node_modules/plexus-agent-config-web/.next/app-path-routes-manifest.json +39 -0
  128. package/node_modules/plexus-agent-config-web/.next/build-manifest.json +20 -0
  129. package/node_modules/plexus-agent-config-web/.next/export-marker.json +6 -0
  130. package/node_modules/plexus-agent-config-web/.next/images-manifest.json +68 -0
  131. package/node_modules/plexus-agent-config-web/.next/next-minimal-server.js.nft.json +1 -0
  132. package/node_modules/plexus-agent-config-web/.next/next-server.js.nft.json +1 -0
  133. package/node_modules/plexus-agent-config-web/.next/package.json +1 -0
  134. package/node_modules/plexus-agent-config-web/.next/prerender-manifest.json +36 -0
  135. package/node_modules/plexus-agent-config-web/.next/react-loadable-manifest.json +1 -0
  136. package/node_modules/plexus-agent-config-web/.next/required-server-files.js +337 -0
  137. package/node_modules/plexus-agent-config-web/.next/required-server-files.json +337 -0
  138. package/node_modules/plexus-agent-config-web/.next/routes-manifest.json +286 -0
  139. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page.js +32 -0
  140. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page.js.nft.json +1 -0
  141. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  142. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.html +1 -0
  143. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.meta +16 -0
  144. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.rsc +14 -0
  145. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
  146. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  147. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  148. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  149. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  150. package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  151. package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page.js +2 -0
  152. package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page.js.nft.json +1 -0
  153. package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  154. package/node_modules/plexus-agent-config-web/.next/server/app/about/page.js +2 -0
  155. package/node_modules/plexus-agent-config-web/.next/server/app/about/page.js.nft.json +1 -0
  156. package/node_modules/plexus-agent-config-web/.next/server/app/about/page_client-reference-manifest.js +1 -0
  157. package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page.js +2 -0
  158. package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page.js.nft.json +1 -0
  159. package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -0
  160. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route.js +1 -0
  161. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route.js.nft.json +1 -0
  162. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route_client-reference-manifest.js +1 -0
  163. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route.js +1 -0
  164. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
  165. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
  166. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route.js +1 -0
  167. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route.js.nft.json +1 -0
  168. package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route_client-reference-manifest.js +1 -0
  169. package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route.js +1 -0
  170. package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route.js.nft.json +1 -0
  171. package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route_client-reference-manifest.js +1 -0
  172. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route.js +1 -0
  173. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route.js.nft.json +1 -0
  174. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route_client-reference-manifest.js +1 -0
  175. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route.js +1 -0
  176. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route.js.nft.json +1 -0
  177. package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route_client-reference-manifest.js +1 -0
  178. package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route.js +1 -0
  179. package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route.js.nft.json +1 -0
  180. package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route_client-reference-manifest.js +1 -0
  181. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route.js +1 -0
  182. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route.js.nft.json +1 -0
  183. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route_client-reference-manifest.js +1 -0
  184. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route.js +1 -0
  185. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route.js.nft.json +1 -0
  186. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route_client-reference-manifest.js +1 -0
  187. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route.js +1 -0
  188. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route.js.nft.json +1 -0
  189. package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route_client-reference-manifest.js +1 -0
  190. package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route.js +1 -0
  191. package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route.js.nft.json +1 -0
  192. package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route_client-reference-manifest.js +1 -0
  193. package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route.js +1 -0
  194. package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route.js.nft.json +1 -0
  195. package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route_client-reference-manifest.js +1 -0
  196. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route.js +1 -0
  197. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route.js.nft.json +1 -0
  198. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route_client-reference-manifest.js +1 -0
  199. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route.js +1 -0
  200. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route.js.nft.json +1 -0
  201. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route_client-reference-manifest.js +1 -0
  202. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route.js +1 -0
  203. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route.js.nft.json +1 -0
  204. package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
  205. package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route.js +1 -0
  206. package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route.js.nft.json +1 -0
  207. package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route_client-reference-manifest.js +1 -0
  208. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route.js +1 -0
  209. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route.js.nft.json +1 -0
  210. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -0
  211. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route.js +1 -0
  212. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route.js.nft.json +1 -0
  213. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route_client-reference-manifest.js +1 -0
  214. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route.js +1 -0
  215. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route.js.nft.json +1 -0
  216. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route_client-reference-manifest.js +1 -0
  217. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route.js +1 -0
  218. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route.js.nft.json +1 -0
  219. package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  220. package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route.js +1 -0
  221. package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route.js.nft.json +1 -0
  222. package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route_client-reference-manifest.js +1 -0
  223. package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route.js +1 -0
  224. package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route.js.nft.json +1 -0
  225. package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route_client-reference-manifest.js +1 -0
  226. package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route.js +1 -0
  227. package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route.js.nft.json +1 -0
  228. package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route_client-reference-manifest.js +1 -0
  229. package/node_modules/plexus-agent-config-web/.next/server/app/backups/page.js +4 -0
  230. package/node_modules/plexus-agent-config-web/.next/server/app/backups/page.js.nft.json +1 -0
  231. package/node_modules/plexus-agent-config-web/.next/server/app/backups/page_client-reference-manifest.js +1 -0
  232. package/node_modules/plexus-agent-config-web/.next/server/app/debug/page.js +2 -0
  233. package/node_modules/plexus-agent-config-web/.next/server/app/debug/page.js.nft.json +1 -0
  234. package/node_modules/plexus-agent-config-web/.next/server/app/debug/page_client-reference-manifest.js +1 -0
  235. package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page.js +2 -0
  236. package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page.js.nft.json +1 -0
  237. package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page_client-reference-manifest.js +1 -0
  238. package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page.js +2 -0
  239. package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page.js.nft.json +1 -0
  240. package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page_client-reference-manifest.js +1 -0
  241. package/node_modules/plexus-agent-config-web/.next/server/app/page.js +2 -0
  242. package/node_modules/plexus-agent-config-web/.next/server/app/page.js.nft.json +1 -0
  243. package/node_modules/plexus-agent-config-web/.next/server/app/page_client-reference-manifest.js +1 -0
  244. package/node_modules/plexus-agent-config-web/.next/server/app/rules/page.js +10 -0
  245. package/node_modules/plexus-agent-config-web/.next/server/app/rules/page.js.nft.json +1 -0
  246. package/node_modules/plexus-agent-config-web/.next/server/app/rules/page_client-reference-manifest.js +1 -0
  247. package/node_modules/plexus-agent-config-web/.next/server/app/settings/page.js +2 -0
  248. package/node_modules/plexus-agent-config-web/.next/server/app/settings/page.js.nft.json +1 -0
  249. package/node_modules/plexus-agent-config-web/.next/server/app/settings/page_client-reference-manifest.js +1 -0
  250. package/node_modules/plexus-agent-config-web/.next/server/app/skills/page.js +2 -0
  251. package/node_modules/plexus-agent-config-web/.next/server/app/skills/page.js.nft.json +1 -0
  252. package/node_modules/plexus-agent-config-web/.next/server/app/skills/page_client-reference-manifest.js +1 -0
  253. package/node_modules/plexus-agent-config-web/.next/server/app/spread/page.js +2 -0
  254. package/node_modules/plexus-agent-config-web/.next/server/app/spread/page.js.nft.json +1 -0
  255. package/node_modules/plexus-agent-config-web/.next/server/app/spread/page_client-reference-manifest.js +1 -0
  256. package/node_modules/plexus-agent-config-web/.next/server/app/team/page.js +2 -0
  257. package/node_modules/plexus-agent-config-web/.next/server/app/team/page.js.nft.json +1 -0
  258. package/node_modules/plexus-agent-config-web/.next/server/app/team/page_client-reference-manifest.js +1 -0
  259. package/node_modules/plexus-agent-config-web/.next/server/app-paths-manifest.json +39 -0
  260. package/node_modules/plexus-agent-config-web/.next/server/chunks/103.js +18 -0
  261. package/node_modules/plexus-agent-config-web/.next/server/chunks/174.js +1 -0
  262. package/node_modules/plexus-agent-config-web/.next/server/chunks/380.js +1 -0
  263. package/node_modules/plexus-agent-config-web/.next/server/chunks/397.js +26 -0
  264. package/node_modules/plexus-agent-config-web/.next/server/chunks/479.js +45 -0
  265. package/node_modules/plexus-agent-config-web/.next/server/chunks/620.js +1 -0
  266. package/node_modules/plexus-agent-config-web/.next/server/chunks/750.js +1 -0
  267. package/node_modules/plexus-agent-config-web/.next/server/chunks/921.js +5 -0
  268. package/node_modules/plexus-agent-config-web/.next/server/functions-config-manifest.json +4 -0
  269. package/node_modules/plexus-agent-config-web/.next/server/interception-route-rewrite-manifest.js +1 -0
  270. package/node_modules/plexus-agent-config-web/.next/server/middleware-build-manifest.js +1 -0
  271. package/node_modules/plexus-agent-config-web/.next/server/middleware-manifest.json +6 -0
  272. package/node_modules/plexus-agent-config-web/.next/server/middleware-react-loadable-manifest.js +1 -0
  273. package/node_modules/plexus-agent-config-web/.next/server/next-font-manifest.js +1 -0
  274. package/node_modules/plexus-agent-config-web/.next/server/next-font-manifest.json +1 -0
  275. package/node_modules/plexus-agent-config-web/.next/server/pages/500.html +1 -0
  276. package/node_modules/plexus-agent-config-web/.next/server/pages-manifest.json +3 -0
  277. package/node_modules/plexus-agent-config-web/.next/server/prefetch-hints.json +1 -0
  278. package/node_modules/plexus-agent-config-web/.next/server/server-reference-manifest.js +1 -0
  279. package/node_modules/plexus-agent-config-web/.next/server/server-reference-manifest.json +1 -0
  280. package/node_modules/plexus-agent-config-web/.next/server/webpack-runtime.js +1 -0
  281. package/node_modules/plexus-agent-config-web/.next/static/chunks/1968-9d19293a29f03646.js +32 -0
  282. package/node_modules/plexus-agent-config-web/.next/static/chunks/3051-5eb2f5784474c658.js +1 -0
  283. package/node_modules/plexus-agent-config-web/.next/static/chunks/3090-3702701c503793f0.js +1 -0
  284. package/node_modules/plexus-agent-config-web/.next/static/chunks/4399-7cc367307a2c52a6.js +1 -0
  285. package/node_modules/plexus-agent-config-web/.next/static/chunks/5587-933f3258279c6072.js +1 -0
  286. package/node_modules/plexus-agent-config-web/.next/static/chunks/626-7ea78ce012c8d471.js +1 -0
  287. package/node_modules/plexus-agent-config-web/.next/static/chunks/7814-1bc9d30b9724b70c.js +1 -0
  288. package/node_modules/plexus-agent-config-web/.next/static/chunks/87c73c54-64138e17754e338c.js +1 -0
  289. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/_global-error/page-fe6298e28540d3d8.js +1 -0
  290. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/_not-found/page-303a3bb713044693.js +1 -0
  291. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/about/page-64a1ee41b87ea86c.js +1 -0
  292. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/agents/[id]/page-c3c89d8ae72c75c2.js +1 -0
  293. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent/[id]/file/route-fe6298e28540d3d8.js +1 -0
  294. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent/[id]/route-fe6298e28540d3d8.js +1 -0
  295. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent-catalog/route-fe6298e28540d3d8.js +1 -0
  296. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agents/route-fe6298e28540d3d8.js +1 -0
  297. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/backups/[id]/restore/route-fe6298e28540d3d8.js +1 -0
  298. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/backups/route-fe6298e28540d3d8.js +1 -0
  299. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/config/route-fe6298e28540d3d8.js +1 -0
  300. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/[id]/file/route-fe6298e28540d3d8.js +1 -0
  301. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/[id]/route-fe6298e28540d3d8.js +1 -0
  302. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/route-fe6298e28540d3d8.js +1 -0
  303. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/debug/route-fe6298e28540d3d8.js +1 -0
  304. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/import/route-fe6298e28540d3d8.js +1 -0
  305. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/[id]/toggle/route-fe6298e28540d3d8.js +1 -0
  306. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/effective/route-fe6298e28540d3d8.js +1 -0
  307. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/route-fe6298e28540d3d8.js +1 -0
  308. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/rules/route-fe6298e28540d3d8.js +1 -0
  309. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/[id]/route-fe6298e28540d3d8.js +1 -0
  310. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/[id]/toggle/route-fe6298e28540d3d8.js +1 -0
  311. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/effective/route-fe6298e28540d3d8.js +1 -0
  312. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/route-fe6298e28540d3d8.js +1 -0
  313. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/spread/route-fe6298e28540d3d8.js +1 -0
  314. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/sync/route-fe6298e28540d3d8.js +1 -0
  315. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/team/route-fe6298e28540d3d8.js +1 -0
  316. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/backups/page-6842a663db4fab47.js +3 -0
  317. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/debug/page-19e534df1d13eb98.js +1 -0
  318. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/layout-798b3b697994c5bf.js +1 -0
  319. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/mcp/page-d0d518965db961f1.js +1 -0
  320. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/mirror/page-e88f348e1a12487a.js +1 -0
  321. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/page-039dbbfad47ff659.js +1 -0
  322. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/rules/page-5bb663fc0ee9960b.js +9 -0
  323. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/settings/page-8164e1d1a8a08038.js +1 -0
  324. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/skills/page-6067058898aa6e10.js +1 -0
  325. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/spread/page-fe6298e28540d3d8.js +1 -0
  326. package/node_modules/plexus-agent-config-web/.next/static/chunks/app/team/page-edd7f54640e60e94.js +1 -0
  327. package/node_modules/plexus-agent-config-web/.next/static/chunks/framework-2c03ddc44b9f482b.js +1 -0
  328. package/node_modules/plexus-agent-config-web/.next/static/chunks/main-488dba80110e3bfb.js +5 -0
  329. package/node_modules/plexus-agent-config-web/.next/static/chunks/main-app-4c4bad3c22a66283.js +1 -0
  330. package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/app-error-fe6298e28540d3d8.js +1 -0
  331. package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/forbidden-fe6298e28540d3d8.js +1 -0
  332. package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/global-error-821a044f296e83b5.js +1 -0
  333. package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/not-found-fe6298e28540d3d8.js +1 -0
  334. package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/unauthorized-fe6298e28540d3d8.js +1 -0
  335. package/node_modules/plexus-agent-config-web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  336. package/node_modules/plexus-agent-config-web/.next/static/chunks/webpack-dd4b9bd51624284c.js +1 -0
  337. package/node_modules/plexus-agent-config-web/.next/static/css/eba3657411e6e6cd.css +5 -0
  338. package/node_modules/plexus-agent-config-web/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  339. package/node_modules/plexus-agent-config-web/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  340. package/node_modules/plexus-agent-config-web/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  341. package/node_modules/plexus-agent-config-web/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  342. package/node_modules/plexus-agent-config-web/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  343. package/node_modules/plexus-agent-config-web/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  344. package/node_modules/plexus-agent-config-web/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  345. package/node_modules/plexus-agent-config-web/.next/static/mvb1RnSdmeAxbYF-SjSfa/_buildManifest.js +1 -0
  346. package/node_modules/plexus-agent-config-web/.next/static/mvb1RnSdmeAxbYF-SjSfa/_ssgManifest.js +1 -0
  347. package/node_modules/plexus-agent-config-web/next.config.mjs +17 -0
  348. package/node_modules/plexus-agent-config-web/package.json +40 -0
  349. package/node_modules/plexus-agent-config-web/public/architecture/config-sharing-map.html +887 -0
  350. package/node_modules/plexus-agent-config-web/public/favicon.svg +5 -0
  351. package/package.json +64 -0
@@ -0,0 +1,182 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { AGENT_PATHS, PLEXUS_PATHS } from "../../store/paths.js";
4
+ import { emptyResult, ensureDir, placeFileSymlink, placeLinkOrCopy, } from "./base.js";
5
+ /**
6
+ * Generic JSON-MCP + skill-directory adapter.
7
+ *
8
+ * Used by Claude Code, Cursor, Gemini CLI, Qwen Code, Factory Droid (and any future agent that
9
+ * stores MCP as `{ "mcpServers": {...} }` JSON and skills as a directory).
10
+ *
11
+ * Two MCP write modes (chosen by AGENT_PATHS[agent].mcpFileMode):
12
+ *
13
+ * - "exclusive": Plexus owns the agent's MCP file. We render a canonical
14
+ * JSON to ~/.config/plexus/.cache/mcp/<agent>.json and symlink the
15
+ * agent's path to that cache. Editing the agent's path is editing the
16
+ * same Plexus-owned file. This is appropriate for agents whose MCP
17
+ * file holds nothing else (Cursor, Factory Droid).
18
+ *
19
+ * - "shared" (default): the agent's file holds many other unrelated keys
20
+ * (for example Claude Code's ~/.claude.json carries auth/history/settings). We
21
+ * partial-write only the `mcpServers` section in place and never replace
22
+ * the whole file.
23
+ *
24
+ * Skills are always symlink-first via placeLinkOrCopy.
25
+ */
26
+ export function makeJsonMcpAdapter(agentId) {
27
+ return {
28
+ id: agentId,
29
+ async apply(ctx) {
30
+ const result = emptyResult(agentId);
31
+ const caps = AGENT_PATHS[agentId];
32
+ // ── MCP ─────────────────────────────────────────────
33
+ if (caps.mcp) {
34
+ const mode = caps.mcpFileMode ?? "shared";
35
+ try {
36
+ await ensureDir(path.dirname(caps.mcpPath));
37
+ const enabledForAgent = ctx.mcp.filter((s) => s.enabledAgents.includes(agentId));
38
+ if (mode === "exclusive") {
39
+ await writeExclusive(agentId, ctx.mcp, enabledForAgent, ctx.syncStrategy);
40
+ }
41
+ else {
42
+ await writeShared(caps.mcpPath, ctx.mcp, enabledForAgent);
43
+ }
44
+ result.applied.mcp = enabledForAgent.length;
45
+ }
46
+ catch (err) {
47
+ result.errors.push(`MCP write failed: ${err.message}`);
48
+ }
49
+ }
50
+ // ── Skills ──────────────────────────────────────────
51
+ if (caps.skills) {
52
+ try {
53
+ await ensureDir(caps.skillsDir);
54
+ const filtered = ctx.skills.filter((s) => s.enabledAgents.includes(agentId));
55
+ const disabledManagedSkillIds = new Set(ctx.skills.filter((s) => !s.enabledAgents.includes(agentId)).map((s) => s.id));
56
+ // Remove Plexus-managed skill dirs that are now disabled for this agent.
57
+ for (const id of disabledManagedSkillIds) {
58
+ const dir = path.join(caps.skillsDir, id);
59
+ await safeRemoveDir(dir);
60
+ }
61
+ for (const skill of filtered) {
62
+ const sourcePath = ctx.skillSourcePaths.get(skill.id);
63
+ if (!sourcePath) {
64
+ result.warnings.push(`No source path for skill: ${skill.id}`);
65
+ continue;
66
+ }
67
+ const destDir = path.join(caps.skillsDir, skill.id);
68
+ try {
69
+ await placeLinkOrCopy(sourcePath, destDir, ctx.syncStrategy);
70
+ result.applied.skills += 1;
71
+ }
72
+ catch (err) {
73
+ result.errors.push(`Skill ${skill.id} sync failed: ${err.message}`);
74
+ }
75
+ }
76
+ }
77
+ catch (err) {
78
+ result.errors.push(`Skills sync failed: ${err.message}`);
79
+ }
80
+ }
81
+ return result;
82
+ },
83
+ };
84
+ }
85
+ /**
86
+ * Symlink-safe directory removal. fs.rm(recursive) on a symlink behaves
87
+ * inconsistently across OS versions — explicitly handle the symlink case
88
+ * by unlinking the link itself, never the target.
89
+ */
90
+ async function safeRemoveDir(p) {
91
+ try {
92
+ const lst = await fs.lstat(p);
93
+ if (lst.isSymbolicLink()) {
94
+ await fs.unlink(p);
95
+ }
96
+ else {
97
+ await fs.rm(p, { recursive: true, force: true });
98
+ }
99
+ }
100
+ catch {
101
+ // best-effort
102
+ }
103
+ }
104
+ /** Partial-write: rewrite mcpServers section only, preserve everything else. */
105
+ async function writeShared(filePath, managed, enabledForAgent) {
106
+ const enabledIds = new Set(enabledForAgent.map((s) => s.id));
107
+ const allManagedIds = new Set(managed.map((s) => s.id));
108
+ let existing = {};
109
+ try {
110
+ const raw = await fs.readFile(filePath, "utf8");
111
+ existing = JSON.parse(raw);
112
+ }
113
+ catch {
114
+ // first write
115
+ }
116
+ const existingMcp = existing.mcpServers ?? {};
117
+ // Preserve user-added (ids Plexus does not manage) and drop ones we now disown.
118
+ const preserved = {};
119
+ for (const [k, v] of Object.entries(existingMcp)) {
120
+ if (allManagedIds.has(k))
121
+ continue; // either re-written below or removed
122
+ preserved[k] = v;
123
+ }
124
+ const written = { ...preserved };
125
+ for (const s of enabledForAgent) {
126
+ written[s.id] = serializeMcp(s);
127
+ }
128
+ void enabledIds;
129
+ const merged = { ...existing, mcpServers: written };
130
+ await fs.writeFile(filePath, JSON.stringify(merged, null, 2), "utf8");
131
+ }
132
+ /**
133
+ * Exclusive: Plexus owns the file. Render canonical to .cache/mcp/<agent>.json,
134
+ * symlink agent path to it. We still preserve user-added entries by reading
135
+ * the agent's current file first (resolving through the symlink).
136
+ */
137
+ async function writeExclusive(agentId, managed, enabledForAgent, syncStrategy) {
138
+ const caps = AGENT_PATHS[agentId];
139
+ await ensureDir(PLEXUS_PATHS.mcpCache);
140
+ const cacheFile = path.join(PLEXUS_PATHS.mcpCache, `${agentId}.json`);
141
+ const allManagedIds = new Set(managed.map((s) => s.id));
142
+ // Read current content (could be the agent's old regular file, or our
143
+ // existing cache via the symlink — either way, fs.readFile follows links).
144
+ let existing = {};
145
+ try {
146
+ const raw = await fs.readFile(caps.mcpPath, "utf8");
147
+ existing = JSON.parse(raw);
148
+ }
149
+ catch {
150
+ // first sync — fine
151
+ }
152
+ const existingMcp = existing.mcpServers ?? {};
153
+ const preserved = {};
154
+ for (const [k, v] of Object.entries(existingMcp)) {
155
+ if (allManagedIds.has(k))
156
+ continue;
157
+ preserved[k] = v;
158
+ }
159
+ const written = { ...preserved };
160
+ for (const s of enabledForAgent) {
161
+ written[s.id] = serializeMcp(s);
162
+ }
163
+ // For exclusive files we deliberately drop any non-mcpServers keys —
164
+ // by definition the file is dedicated to MCP config.
165
+ const canonical = { mcpServers: written };
166
+ await fs.writeFile(cacheFile, JSON.stringify(canonical, null, 2), "utf8");
167
+ // Now symlink the agent's path to the cache file. If the agent's file
168
+ // already points here, this is a no-op. Otherwise it's removed and
169
+ // replaced (caller has already snapshotted via the backup module).
170
+ await placeFileSymlink(cacheFile, caps.mcpPath, syncStrategy);
171
+ }
172
+ function serializeMcp(s) {
173
+ return {
174
+ ...(s.command ? { command: s.command } : {}),
175
+ ...(s.args ? { args: s.args } : {}),
176
+ ...(s.env ? { env: s.env } : {}),
177
+ ...(s.url ? { url: s.url } : {}),
178
+ ...(s.httpUrl ? { httpUrl: s.httpUrl } : {}),
179
+ ...(s.headers ? { headers: s.headers } : {}),
180
+ };
181
+ }
182
+ //# sourceMappingURL=json-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-mcp.js","sourceRoot":"","sources":["../../../src/agents/adapters/json-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type AgentCatalogSupport = "full" | "instructions-only" | "manual";
2
+ export interface AgentCatalogEntry {
3
+ id: string;
4
+ displayName: string;
5
+ support: AgentCatalogSupport;
6
+ managed: boolean;
7
+ installed: boolean;
8
+ rootDir?: string;
9
+ instructionFile?: string;
10
+ mcpPath?: string;
11
+ skillsDir?: string;
12
+ note: string;
13
+ }
14
+ export declare function listAgentCatalog(): AgentCatalogEntry[];
15
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/agents/catalog.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAsID,wBAAgB,gBAAgB,IAAI,iBAAiB,EAAE,CAsBtD"}
@@ -0,0 +1,153 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { AGENT_DISPLAY_NAMES, AGENT_PATHS, AGENT_ROOTS, ALL_AGENTS } from "../store/paths.js";
5
+ import { isAgentInstalled } from "./detect.js";
6
+ const home = os.homedir();
7
+ function exists(p) {
8
+ return p ? fs.existsSync(p) : false;
9
+ }
10
+ function vscodeUserDir() {
11
+ if (process.platform === "darwin") {
12
+ return path.join(home, "Library", "Application Support", "Code", "User");
13
+ }
14
+ if (process.platform === "win32") {
15
+ return path.join(process.env.APPDATA ?? home, "Code", "User");
16
+ }
17
+ return path.join(home, ".config", "Code", "User");
18
+ }
19
+ function globalStorageDir(extensionId) {
20
+ return path.join(vscodeUserDir(), "globalStorage", extensionId);
21
+ }
22
+ function zedUserDir() {
23
+ if (process.platform === "darwin") {
24
+ return path.join(home, "Library", "Application Support", "Zed");
25
+ }
26
+ return path.join(home, ".config", "zed");
27
+ }
28
+ const MANUAL_PRESETS = [
29
+ {
30
+ id: "windsurf",
31
+ displayName: "Windsurf Cascade",
32
+ support: "manual",
33
+ managed: false,
34
+ rootDir: path.join(home, ".codeium", "windsurf"),
35
+ mcpPath: path.join(home, ".codeium", "windsurf", "mcp_config.json"),
36
+ instructionFile: path.join(home, ".codeium", "windsurf", "AGENTS.md"),
37
+ note: "Catalog only for now. Windsurf uses its own Rules surface; add as custom if you want Plexus to track one instruction file.",
38
+ },
39
+ {
40
+ id: "kiro",
41
+ displayName: "Kiro",
42
+ support: "manual",
43
+ managed: false,
44
+ rootDir: path.join(home, ".kiro"),
45
+ mcpPath: path.join(home, ".kiro", "settings", "mcp.json"),
46
+ instructionFile: path.join(home, ".kiro", "steering", "plexus.md"),
47
+ note: "Catalog only for now. Kiro has user-level MCP and steering files, but Plexus does not write them yet.",
48
+ },
49
+ {
50
+ id: "vscode-copilot",
51
+ displayName: "VS Code / GitHub Copilot",
52
+ support: "manual",
53
+ managed: false,
54
+ rootDir: vscodeUserDir(),
55
+ mcpPath: path.join(vscodeUserDir(), "mcp.json"),
56
+ instructionFile: path.join(vscodeUserDir(), "AGENTS.md"),
57
+ note: "VS Code stores user MCP separately from repo instructions. Add as custom if you keep a user instruction file.",
58
+ },
59
+ {
60
+ id: "cline",
61
+ displayName: "Cline",
62
+ support: "manual",
63
+ managed: false,
64
+ rootDir: globalStorageDir("saoudrizwan.claude-dev"),
65
+ instructionFile: path.join(globalStorageDir("saoudrizwan.claude-dev"), "AGENTS.md"),
66
+ note: "VS Code extension storage varies by editor profile; use custom paths if yours differs.",
67
+ },
68
+ {
69
+ id: "roo-code",
70
+ displayName: "Roo Code",
71
+ support: "manual",
72
+ managed: false,
73
+ rootDir: globalStorageDir("rooveterinaryinc.roo-cline"),
74
+ instructionFile: path.join(globalStorageDir("rooveterinaryinc.roo-cline"), "AGENTS.md"),
75
+ note: "VS Code extension storage varies by editor profile; use custom paths if yours differs.",
76
+ },
77
+ {
78
+ id: "kilo-code",
79
+ displayName: "Kilo Code",
80
+ support: "manual",
81
+ managed: false,
82
+ rootDir: path.join(home, ".config", "kilo"),
83
+ mcpPath: path.join(home, ".config", "kilo", "kilo.jsonc"),
84
+ instructionFile: path.join(home, ".config", "kilo", "AGENTS.md"),
85
+ note: "Kilo uses JSONC and extension/project scopes; catalog entry is manual until Plexus can round-trip JSONC.",
86
+ },
87
+ {
88
+ id: "continue",
89
+ displayName: "Continue",
90
+ support: "manual",
91
+ managed: false,
92
+ rootDir: path.join(home, ".continue"),
93
+ instructionFile: path.join(home, ".continue", "AGENTS.md"),
94
+ note: "Continue configuration is flexible and often project-specific; add a custom instruction file if you use one.",
95
+ },
96
+ {
97
+ id: "aider",
98
+ displayName: "Aider",
99
+ support: "instructions-only",
100
+ managed: false,
101
+ instructionFile: path.join(home, ".aider.conf.yml"),
102
+ note: "Aider is config-file based. Plexus can track a file, but does not translate MCP or skills for Aider.",
103
+ },
104
+ {
105
+ id: "amp",
106
+ displayName: "Amp",
107
+ support: "manual",
108
+ managed: false,
109
+ rootDir: path.join(home, ".config", "amp"),
110
+ instructionFile: path.join(home, ".config", "amp", "AGENTS.md"),
111
+ note: "Amp supports agent instruction files, but local config layout can vary.",
112
+ },
113
+ {
114
+ id: "openhands",
115
+ displayName: "OpenHands",
116
+ support: "manual",
117
+ managed: false,
118
+ rootDir: path.join(home, ".openhands"),
119
+ instructionFile: path.join(home, ".openhands", "AGENTS.md"),
120
+ note: "OpenHands is usually project/container configured. Use custom paths for your local setup.",
121
+ },
122
+ {
123
+ id: "zed-ai",
124
+ displayName: "Zed AI",
125
+ support: "manual",
126
+ managed: false,
127
+ rootDir: zedUserDir(),
128
+ instructionFile: path.join(zedUserDir(), "AGENTS.md"),
129
+ note: "Catalog only. Zed and extension settings vary across platforms.",
130
+ },
131
+ ];
132
+ export function listAgentCatalog() {
133
+ const builtIn = ALL_AGENTS.map((id) => {
134
+ const caps = AGENT_PATHS[id];
135
+ return {
136
+ id,
137
+ displayName: AGENT_DISPLAY_NAMES[id],
138
+ support: "full",
139
+ managed: true,
140
+ installed: isAgentInstalled(id),
141
+ rootDir: AGENT_ROOTS[id],
142
+ mcpPath: caps.mcpPath,
143
+ skillsDir: caps.skillsDir,
144
+ note: "Built-in adapter. Plexus can sync Rules, MCP servers, and Skills.",
145
+ };
146
+ });
147
+ const manual = MANUAL_PRESETS.map((entry) => ({
148
+ ...entry,
149
+ installed: exists(entry.mcpPath) || exists(entry.instructionFile),
150
+ }));
151
+ return [...builtIn, ...manual];
152
+ }
153
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/agents/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AgentDescriptor, AgentId } from "../types.js";
2
+ /**
3
+ * Detect which AI agents appear to be installed.
4
+ *
5
+ * Heuristic: any durable local signal exists:
6
+ * - native config root / MCP file / skill directory
7
+ * - known macOS app bundle for GUI-first agents
8
+ * - known CLI shim on PATH
9
+ *
10
+ * We never execute the agent binary; PATH checks only inspect file metadata.
11
+ */
12
+ export declare function detectAgents(): AgentDescriptor[];
13
+ export declare function isAgentInstalled(id: AgentId): boolean;
14
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/agents/detect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,eAAe,EAAE,CAQhD;AAqCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAOrD"}
@@ -0,0 +1,92 @@
1
+ import { constants, accessSync, existsSync, statSync } from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { AGENT_DISPLAY_NAMES, AGENT_PATHS, AGENT_ROOTS, ALL_AGENTS } from "../store/paths.js";
5
+ /**
6
+ * Detect which AI agents appear to be installed.
7
+ *
8
+ * Heuristic: any durable local signal exists:
9
+ * - native config root / MCP file / skill directory
10
+ * - known macOS app bundle for GUI-first agents
11
+ * - known CLI shim on PATH
12
+ *
13
+ * We never execute the agent binary; PATH checks only inspect file metadata.
14
+ */
15
+ export function detectAgents() {
16
+ return ALL_AGENTS.map((id) => ({
17
+ id,
18
+ displayName: AGENT_DISPLAY_NAMES[id],
19
+ rootDir: AGENT_ROOTS[id],
20
+ installed: isAgentInstalled(id),
21
+ capabilities: AGENT_PATHS[id],
22
+ }));
23
+ }
24
+ const home = os.homedir();
25
+ const APP_PATH_HINTS = {
26
+ "claude-code": [],
27
+ cursor: process.platform === "darwin"
28
+ ? ["/Applications/Cursor.app", path.join(home, "Applications", "Cursor.app")]
29
+ : [],
30
+ codex: process.platform === "darwin"
31
+ ? ["/Applications/Codex.app", path.join(home, "Applications", "Codex.app")]
32
+ : [],
33
+ "gemini-cli": [],
34
+ "qwen-code": [],
35
+ "factory-droid": [],
36
+ };
37
+ const COMMAND_HINTS = {
38
+ "claude-code": ["claude"],
39
+ cursor: ["cursor"],
40
+ codex: ["codex"],
41
+ "gemini-cli": ["gemini"],
42
+ "qwen-code": ["qwen"],
43
+ "factory-droid": ["factory-droid", "droid"],
44
+ };
45
+ function metadataPathHints(id) {
46
+ const caps = AGENT_PATHS[id];
47
+ return [AGENT_ROOTS[id], caps.mcpPath, caps.skillsDir];
48
+ }
49
+ function useConfigOnlyDetection() {
50
+ return process.env.PLEXUS_DETECT_CONFIG_ONLY === "1";
51
+ }
52
+ export function isAgentInstalled(id) {
53
+ if (useConfigOnlyDetection()) {
54
+ return metadataPathHints(id).some((p) => existsSync(p));
55
+ }
56
+ if (APP_PATH_HINTS[id].some((p) => existsSync(p)))
57
+ return true;
58
+ return COMMAND_HINTS[id].some((cmd) => commandExistsOnPath(cmd));
59
+ }
60
+ function commandExistsOnPath(command) {
61
+ const pathValue = process.env.PATH;
62
+ if (!pathValue)
63
+ return false;
64
+ const extensions = process.platform === "win32" ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";") : [""];
65
+ for (const dir of pathValue.split(path.delimiter)) {
66
+ if (!dir)
67
+ continue;
68
+ for (const ext of extensions) {
69
+ const candidate = path.join(dir, `${command}${ext}`);
70
+ try {
71
+ const stat = statSync(candidate);
72
+ if (stat.isFile()) {
73
+ return process.platform === "win32" || canExecute(candidate);
74
+ }
75
+ }
76
+ catch {
77
+ // keep scanning PATH
78
+ }
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ function canExecute(candidate) {
84
+ try {
85
+ accessSync(candidate, constants.X_OK);
86
+ return true;
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ }
92
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/agents/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./detect.js";
2
+ export * from "./catalog.js";
3
+ export * from "./adapters/index.js";
4
+ export * from "./inspect.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./detect.js";
2
+ export * from "./catalog.js";
3
+ export * from "./adapters/index.js";
4
+ export * from "./inspect.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { AgentId } from "../types.js";
2
+ /**
3
+ * "Agent inspector": everything the dashboard needs to render the
4
+ * /agents/<id> detail page in one read.
5
+ *
6
+ * Returns enough context for the UI to:
7
+ * - Show whether the MCP file is a Plexus symlink, a regular file, or
8
+ * missing entirely. If a symlink, where it points.
9
+ * - List the skill folders the agent currently exposes, with whether
10
+ * each one is symlinked or a real directory (i.e. "still owned by the
11
+ * agent" vs "managed by Plexus").
12
+ * - Surface "instruction" files Plexus does NOT yet manage but which
13
+ * users commonly hand-edit:
14
+ * Claude Code → ~/.claude/CLAUDE.md
15
+ * Cursor → ~/.cursor/AGENTS.md (and per-project .cursorrules)
16
+ * Codex → ~/.codex/AGENTS.md
17
+ * Gemini CLI → ~/.gemini/GEMINI.md
18
+ * Qwen Code → ~/.qwen/QWEN.md
19
+ * Factory Droid → ~/.factory/AGENTS.md (if user keeps one)
20
+ * These are simple read/write so the dashboard can offer a textarea.
21
+ */
22
+ export interface FileStatus {
23
+ path: string;
24
+ exists: boolean;
25
+ isSymlink: boolean;
26
+ /** If symlink, the resolved target path. */
27
+ linkTarget?: string;
28
+ /** Size in bytes (resolved through any symlink). */
29
+ size?: number;
30
+ /** Last modification time. */
31
+ mtime?: string;
32
+ }
33
+ export interface SkillEntry {
34
+ id: string;
35
+ /** Path in the agent's skills directory. */
36
+ path: string;
37
+ isSymlink: boolean;
38
+ linkTarget?: string;
39
+ /** Whether SKILL.md exists inside. */
40
+ hasSkillMd: boolean;
41
+ }
42
+ export interface InstructionFile {
43
+ /** Display label shown in the UI. */
44
+ label: string;
45
+ /** Convention (e.g. "CLAUDE.md", "AGENTS.md"). */
46
+ filename: string;
47
+ status: FileStatus;
48
+ }
49
+ export interface AgentInspection {
50
+ id: AgentId;
51
+ displayName: string;
52
+ rootDir: string;
53
+ installed: boolean;
54
+ mcpFile: FileStatus;
55
+ /** "exclusive" → Plexus owns the whole file; "shared" → partial-write. */
56
+ mcpFileMode: "exclusive" | "shared";
57
+ /** Agent skill directory (if any). */
58
+ skillsDir: FileStatus;
59
+ /** Per-skill folder entries. */
60
+ skills: SkillEntry[];
61
+ /** Instruction files the user might want to edit. */
62
+ instructionFiles: InstructionFile[];
63
+ }
64
+ export declare function instructionsForAgent(agentId: AgentId): Array<{
65
+ label: string;
66
+ filename: string;
67
+ abs: string;
68
+ }>;
69
+ export declare function inspectAgent(agentId: AgentId): Promise<AgentInspection>;
70
+ /** Read a file (small text; the UI only enables editing for instruction files & SKILL.md). */
71
+ export declare function readTextFile(absPath: string): Promise<string>;
72
+ /** Write a file, creating parent dir as needed. (Caller is responsible for backup if it cares.) */
73
+ export declare function writeTextFile(absPath: string, content: string): Promise<void>;
74
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/agents/inspect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,0EAA0E;IAC1E,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC;IACpC,sCAAsC;IACtC,SAAS,EAAE,UAAU,CAAC;IACtB,gCAAgC;IAChC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,qDAAqD;IACrD,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAoED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,GACf,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDzD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA+B7E;AAED,8FAA8F;AAC9F,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED,mGAAmG;AACnG,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnF"}