@alexjbarnes/cockpit 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +10 -2
  3. package/.next/build-manifest.json +4 -4
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +21 -45
  6. package/.next/react-loadable-manifest.json +279 -267
  7. package/.next/routes-manifest.json +68 -12
  8. package/.next/server/app/(app)/agents/[name]/page.js +3 -3
  9. package/.next/server/app/(app)/agents/[name]/page.js.nft.json +1 -1
  10. package/.next/server/app/(app)/agents/[name]/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/agents/page.js +2 -2
  12. package/.next/server/app/(app)/agents/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/agents/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/claude-md/edit/page.js +2 -2
  15. package/.next/server/app/(app)/claude-md/edit/page.js.nft.json +1 -1
  16. package/.next/server/app/(app)/claude-md/edit/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/(app)/claude-md/page.js +2 -2
  18. package/.next/server/app/(app)/claude-md/page.js.nft.json +1 -1
  19. package/.next/server/app/(app)/claude-md/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(app)/commands/[name]/page.js +3 -3
  21. package/.next/server/app/(app)/commands/[name]/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/commands/[name]/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/commands/page.js +2 -2
  24. package/.next/server/app/(app)/commands/page.js.nft.json +1 -1
  25. package/.next/server/app/(app)/commands/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/(app)/hooks/[event]/page.js +3 -3
  27. package/.next/server/app/(app)/hooks/[event]/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/hooks/[event]/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/hooks/page.js +2 -2
  30. package/.next/server/app/(app)/hooks/page.js.nft.json +1 -1
  31. package/.next/server/app/(app)/hooks/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/(app)/inbox/[id]/page.js +2 -2
  33. package/.next/server/app/(app)/inbox/[id]/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/inbox/[id]/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/inbox/page.js +2 -2
  36. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
  37. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/(app)/jobs/[id]/edit/page.js +2 -2
  39. package/.next/server/app/(app)/jobs/[id]/edit/page.js.nft.json +1 -1
  40. package/.next/server/app/(app)/jobs/[id]/edit/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/(app)/jobs/[id]/page.js +2 -2
  42. package/.next/server/app/(app)/jobs/[id]/page.js.nft.json +1 -1
  43. package/.next/server/app/(app)/jobs/[id]/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page.js +2 -2
  45. package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page.js.nft.json +1 -1
  46. package/.next/server/app/(app)/jobs/[id]/runs/[runId]/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/(app)/jobs/page.js +2 -2
  48. package/.next/server/app/(app)/jobs/page.js.nft.json +1 -1
  49. package/.next/server/app/(app)/jobs/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/(app)/mcp-servers/[name]/page.js +2 -2
  51. package/.next/server/app/(app)/mcp-servers/[name]/page.js.nft.json +1 -1
  52. package/.next/server/app/(app)/mcp-servers/[name]/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/(app)/mcp-servers/page.js +2 -2
  54. package/.next/server/app/(app)/mcp-servers/page.js.nft.json +1 -1
  55. package/.next/server/app/(app)/mcp-servers/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/(app)/page.js +2 -2
  57. package/.next/server/app/(app)/page.js.nft.json +1 -1
  58. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/(app)/plugins/page.js +2 -0
  60. package/.next/server/app/(app)/{files → plugins}/page.js.nft.json +1 -1
  61. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
  62. package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page.js +4 -4
  63. package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page.js.nft.json +1 -1
  64. package/.next/server/app/(app)/reviews/[owner]/[repo]/[number]/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/(app)/reviews/[owner]/[repo]/page.js +2 -2
  66. package/.next/server/app/(app)/reviews/[owner]/[repo]/page.js.nft.json +1 -1
  67. package/.next/server/app/(app)/reviews/[owner]/[repo]/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/(app)/reviews/page.js +2 -2
  69. package/.next/server/app/(app)/reviews/page.js.nft.json +1 -1
  70. package/.next/server/app/(app)/reviews/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/(app)/sessions/[id]/page.js +2 -2
  72. package/.next/server/app/(app)/sessions/[id]/page.js.nft.json +1 -1
  73. package/.next/server/app/(app)/sessions/[id]/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/(app)/settings/appearance/page.js +2 -2
  75. package/.next/server/app/(app)/settings/appearance/page.js.nft.json +1 -1
  76. package/.next/server/app/(app)/settings/appearance/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/(app)/settings/notifications/page.js +2 -2
  78. package/.next/server/app/(app)/settings/notifications/page.js.nft.json +1 -1
  79. package/.next/server/app/(app)/settings/notifications/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/(app)/settings/page.js +2 -2
  81. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  82. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/(app)/settings/providers/[id]/page.js +2 -2
  84. package/.next/server/app/(app)/settings/providers/[id]/page.js.nft.json +1 -1
  85. package/.next/server/app/(app)/settings/providers/[id]/page_client-reference-manifest.js +1 -1
  86. package/.next/server/app/(app)/settings/providers/new/page.js +2 -2
  87. package/.next/server/app/(app)/settings/providers/new/page.js.nft.json +1 -1
  88. package/.next/server/app/(app)/settings/providers/new/page_client-reference-manifest.js +1 -1
  89. package/.next/server/app/(app)/settings/providers/page.js +2 -2
  90. package/.next/server/app/(app)/settings/providers/page.js.nft.json +1 -1
  91. package/.next/server/app/(app)/settings/providers/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/(app)/settings/session/page.js +2 -2
  93. package/.next/server/app/(app)/settings/session/page.js.nft.json +1 -1
  94. package/.next/server/app/(app)/settings/session/page_client-reference-manifest.js +1 -1
  95. package/.next/server/app/(app)/skills/[name]/page.js +3 -3
  96. package/.next/server/app/(app)/skills/[name]/page.js.nft.json +1 -1
  97. package/.next/server/app/(app)/skills/[name]/page_client-reference-manifest.js +1 -1
  98. package/.next/server/app/(app)/skills/page.js +2 -2
  99. package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
  100. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
  101. package/.next/server/app/_global-error/page.js +3 -3
  102. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  103. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/_global-error.html +1 -1
  105. package/.next/server/app/_global-error.rsc +1 -1
  106. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  107. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  108. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  109. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  110. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  111. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  112. package/.next/server/app/_not-found/page.js +2 -2
  113. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  114. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/_not-found.html +1 -1
  116. package/.next/server/app/_not-found.rsc +2 -2
  117. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  118. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  119. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  120. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  121. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  122. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  123. package/.next/server/app/agents.html +1 -1
  124. package/.next/server/app/agents.rsc +4 -4
  125. package/.next/server/app/agents.segments/!KGFwcCk/agents/__PAGE__.segment.rsc +2 -2
  126. package/.next/server/app/agents.segments/!KGFwcCk/agents.segment.rsc +1 -1
  127. package/.next/server/app/agents.segments/!KGFwcCk.segment.rsc +2 -2
  128. package/.next/server/app/agents.segments/_full.segment.rsc +4 -4
  129. package/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  130. package/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  131. package/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  132. package/.next/server/app/api/agents/[name]/route.js +1 -1
  133. package/.next/server/app/api/agents/route.js +1 -1
  134. package/.next/server/app/api/assistant-session/route.js +1 -0
  135. package/.next/server/app/api/assistant-session/route.js.nft.json +1 -0
  136. package/.next/server/app/api/assistant-session/route_client-reference-manifest.js +1 -0
  137. package/.next/server/app/api/auth/check/route.js +1 -1
  138. package/.next/server/app/api/auth/login/route.js +1 -1
  139. package/.next/server/app/api/auth/setup/route.js +1 -1
  140. package/.next/server/app/api/auth/ws-token/route.js +1 -1
  141. package/.next/server/app/api/btw/route.js +2 -2
  142. package/.next/server/app/api/claude-md/route.js +1 -1
  143. package/.next/server/app/api/commands/[name]/route.js +1 -1
  144. package/.next/server/app/api/commands/route.js +1 -1
  145. package/.next/server/app/api/config/cwd/route.js +1 -0
  146. package/.next/server/app/api/config/cwd/route.js.nft.json +1 -0
  147. package/.next/server/app/api/config/cwd/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/defaults/route.js +1 -1
  149. package/.next/server/app/api/filesystem/browse/route.js +1 -1
  150. package/.next/server/app/api/filesystem/files/route.js +1 -1
  151. package/.next/server/app/api/filesystem/mkdir/route.js +1 -1
  152. package/.next/server/app/api/filesystem/read/route.js +1 -1
  153. package/.next/server/app/api/git/clone/route.js +1 -1
  154. package/.next/server/app/api/git/commit/route.js +1 -1
  155. package/.next/server/app/api/git/diff/route.js +1 -1
  156. package/.next/server/app/api/git/discard/route.js +1 -1
  157. package/.next/server/app/api/git/generate-message/route.js +2 -2
  158. package/.next/server/app/api/git/push/route.js +1 -1
  159. package/.next/server/app/api/git/status/route.js +1 -1
  160. package/.next/server/app/api/github/file-content/route.js +1 -1
  161. package/.next/server/app/api/github/orgs/route.js +1 -1
  162. package/.next/server/app/api/github/prs/checks/route.js +1 -1
  163. package/.next/server/app/api/github/prs/diff/route.js +1 -1
  164. package/.next/server/app/api/github/prs/review/route.js +1 -1
  165. package/.next/server/app/api/github/prs/route.js +1 -1
  166. package/.next/server/app/api/github/prs/view/route.js +1 -1
  167. package/.next/server/app/api/github/repos/route.js +1 -1
  168. package/.next/server/app/api/github/review-session/route.js +1 -1
  169. package/.next/server/app/api/github/review-session/route.js.nft.json +1 -1
  170. package/.next/server/app/api/health/route.js +1 -1
  171. package/.next/server/app/api/hooks/route.js +1 -1
  172. package/.next/server/app/api/inbox/[id]/route.js +1 -5
  173. package/.next/server/app/api/inbox/[id]/route.js.nft.json +1 -1
  174. package/.next/server/app/api/inbox/route.js +1 -5
  175. package/.next/server/app/api/inbox/route.js.nft.json +1 -1
  176. package/.next/server/app/api/jobs/[id]/route.js +1 -1
  177. package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
  178. package/.next/server/app/api/jobs/[id]/runs/[runId]/route.js +1 -1
  179. package/.next/server/app/api/jobs/[id]/runs/[runId]/transcript/route.js +1 -1
  180. package/.next/server/app/api/jobs/[id]/runs/[runId]/transcript/route.js.nft.json +1 -1
  181. package/.next/server/app/api/jobs/[id]/runs/route.js +1 -1
  182. package/.next/server/app/api/jobs/[id]/stop/route.js +1 -0
  183. package/.next/server/app/api/jobs/[id]/stop/route.js.nft.json +1 -0
  184. package/.next/server/app/api/jobs/[id]/stop/route_client-reference-manifest.js +1 -0
  185. package/.next/server/app/api/jobs/[id]/trigger/route.js +1 -1
  186. package/.next/server/app/api/jobs/[id]/trigger/route.js.nft.json +1 -1
  187. package/.next/server/app/api/jobs/mcp-discover/route.js +1 -1
  188. package/.next/server/app/api/jobs/mcp-discover/route.js.nft.json +1 -1
  189. package/.next/server/app/api/jobs/route.js +1 -1
  190. package/.next/server/app/api/jobs/route.js.nft.json +1 -1
  191. package/.next/server/app/api/jobs/status/route.js +1 -1
  192. package/.next/server/app/api/mcp-servers/[name]/route.js +1 -1
  193. package/.next/server/app/api/mcp-servers/[name]/test/route.js +1 -1
  194. package/.next/server/app/api/mcp-servers/[name]/tools/route.js +1 -0
  195. package/.next/server/app/api/mcp-servers/[name]/tools/route.js.nft.json +1 -0
  196. package/.next/server/app/api/mcp-servers/[name]/tools/route_client-reference-manifest.js +1 -0
  197. package/.next/server/app/api/mcp-servers/route.js +1 -1
  198. package/.next/server/app/api/notifications/route.js +1 -1
  199. package/.next/server/app/api/notifications/test/route.js +3 -3
  200. package/.next/server/app/api/plugins/[id]/route.js +1 -0
  201. package/.next/server/app/api/plugins/[id]/route.js.nft.json +1 -0
  202. package/.next/server/app/api/plugins/[id]/route_client-reference-manifest.js +1 -0
  203. package/.next/server/app/api/plugins/install/route.js +1 -0
  204. package/.next/server/app/api/plugins/install/route.js.nft.json +1 -0
  205. package/.next/server/app/api/plugins/install/route_client-reference-manifest.js +1 -0
  206. package/.next/server/app/api/plugins/marketplaces/[name]/route.js +1 -0
  207. package/.next/server/app/api/plugins/marketplaces/[name]/route.js.nft.json +1 -0
  208. package/.next/server/app/api/plugins/marketplaces/[name]/route_client-reference-manifest.js +1 -0
  209. package/.next/server/app/api/plugins/marketplaces/route.js +1 -0
  210. package/.next/server/app/api/plugins/marketplaces/route.js.nft.json +1 -0
  211. package/.next/server/app/api/plugins/marketplaces/route_client-reference-manifest.js +1 -0
  212. package/.next/server/app/api/plugins/route.js +1 -0
  213. package/.next/server/app/api/plugins/route.js.nft.json +1 -0
  214. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
  215. package/.next/server/app/api/providers/[id]/route.js +1 -1
  216. package/.next/server/app/api/providers/route.js +1 -1
  217. package/.next/server/app/api/reviews/pinned/route.js +1 -1
  218. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  219. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
  220. package/.next/server/app/api/sessions/[id]/mcp/route.js +1 -1
  221. package/.next/server/app/api/sessions/[id]/mcp/route.js.nft.json +1 -1
  222. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  223. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  224. package/.next/server/app/api/sessions/[id]/search/route.js +1 -1
  225. package/.next/server/app/api/sessions/[id]/search/route.js.nft.json +1 -1
  226. package/.next/server/app/api/sessions/[id]/tabs/route.js +1 -1
  227. package/.next/server/app/api/sessions/bulk-delete/route.js +1 -1
  228. package/.next/server/app/api/sessions/bulk-delete/route.js.nft.json +1 -1
  229. package/.next/server/app/api/sessions/by-ids/route.js +1 -1
  230. package/.next/server/app/api/sessions/by-ids/route.js.nft.json +1 -1
  231. package/.next/server/app/api/sessions/group/route.js +1 -1
  232. package/.next/server/app/api/sessions/group/route.js.nft.json +1 -1
  233. package/.next/server/app/api/sessions/pinned/route.js +1 -1
  234. package/.next/server/app/api/sessions/route.js +1 -1
  235. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  236. package/.next/server/app/api/sessions/search/route.js +1 -1
  237. package/.next/server/app/api/sessions/search/route.js.nft.json +1 -1
  238. package/.next/server/app/api/sessions/thinking/route.js +1 -1
  239. package/.next/server/app/api/sessions/thinking/route.js.nft.json +1 -1
  240. package/.next/server/app/api/skills/[name]/route.js +1 -1
  241. package/.next/server/app/api/skills/route.js +1 -1
  242. package/.next/server/app/api/terminal/[id]/route.js +1 -1
  243. package/.next/server/app/api/terminal/[id]/route.js.nft.json +1 -1
  244. package/.next/server/app/api/terminal/route.js +1 -1
  245. package/.next/server/app/api/terminal/route.js.nft.json +1 -1
  246. package/.next/server/app/api/usage/route.js +1 -1
  247. package/.next/server/app/api/version/changelog/route.js +1 -1
  248. package/.next/server/app/api/version/cockpit/changelog/route.js +1 -1
  249. package/.next/server/app/api/version/cockpit/route.js +1 -1
  250. package/.next/server/app/api/version/route.js +2 -2
  251. package/.next/server/app/claude-md/edit.html +1 -1
  252. package/.next/server/app/claude-md/edit.rsc +4 -4
  253. package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md/edit/__PAGE__.segment.rsc +2 -2
  254. package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md/edit.segment.rsc +1 -1
  255. package/.next/server/app/claude-md/edit.segments/!KGFwcCk/claude-md.segment.rsc +1 -1
  256. package/.next/server/app/claude-md/edit.segments/!KGFwcCk.segment.rsc +2 -2
  257. package/.next/server/app/claude-md/edit.segments/_full.segment.rsc +4 -4
  258. package/.next/server/app/claude-md/edit.segments/_head.segment.rsc +1 -1
  259. package/.next/server/app/claude-md/edit.segments/_index.segment.rsc +2 -2
  260. package/.next/server/app/claude-md/edit.segments/_tree.segment.rsc +2 -2
  261. package/.next/server/app/claude-md.html +1 -1
  262. package/.next/server/app/claude-md.rsc +4 -4
  263. package/.next/server/app/claude-md.segments/!KGFwcCk/claude-md/__PAGE__.segment.rsc +2 -2
  264. package/.next/server/app/claude-md.segments/!KGFwcCk/claude-md.segment.rsc +1 -1
  265. package/.next/server/app/claude-md.segments/!KGFwcCk.segment.rsc +2 -2
  266. package/.next/server/app/claude-md.segments/_full.segment.rsc +4 -4
  267. package/.next/server/app/claude-md.segments/_head.segment.rsc +1 -1
  268. package/.next/server/app/claude-md.segments/_index.segment.rsc +2 -2
  269. package/.next/server/app/claude-md.segments/_tree.segment.rsc +2 -2
  270. package/.next/server/app/commands.html +1 -1
  271. package/.next/server/app/commands.rsc +4 -4
  272. package/.next/server/app/commands.segments/!KGFwcCk/commands/__PAGE__.segment.rsc +2 -2
  273. package/.next/server/app/commands.segments/!KGFwcCk/commands.segment.rsc +1 -1
  274. package/.next/server/app/commands.segments/!KGFwcCk.segment.rsc +2 -2
  275. package/.next/server/app/commands.segments/_full.segment.rsc +4 -4
  276. package/.next/server/app/commands.segments/_head.segment.rsc +1 -1
  277. package/.next/server/app/commands.segments/_index.segment.rsc +2 -2
  278. package/.next/server/app/commands.segments/_tree.segment.rsc +2 -2
  279. package/.next/server/app/hooks.html +1 -1
  280. package/.next/server/app/hooks.rsc +4 -4
  281. package/.next/server/app/hooks.segments/!KGFwcCk/hooks/__PAGE__.segment.rsc +2 -2
  282. package/.next/server/app/hooks.segments/!KGFwcCk/hooks.segment.rsc +1 -1
  283. package/.next/server/app/hooks.segments/!KGFwcCk.segment.rsc +2 -2
  284. package/.next/server/app/hooks.segments/_full.segment.rsc +4 -4
  285. package/.next/server/app/hooks.segments/_head.segment.rsc +1 -1
  286. package/.next/server/app/hooks.segments/_index.segment.rsc +2 -2
  287. package/.next/server/app/hooks.segments/_tree.segment.rsc +2 -2
  288. package/.next/server/app/inbox.html +1 -1
  289. package/.next/server/app/inbox.rsc +4 -4
  290. package/.next/server/app/inbox.segments/!KGFwcCk/inbox/__PAGE__.segment.rsc +2 -2
  291. package/.next/server/app/inbox.segments/!KGFwcCk/inbox.segment.rsc +1 -1
  292. package/.next/server/app/inbox.segments/!KGFwcCk.segment.rsc +2 -2
  293. package/.next/server/app/inbox.segments/_full.segment.rsc +4 -4
  294. package/.next/server/app/inbox.segments/_head.segment.rsc +1 -1
  295. package/.next/server/app/inbox.segments/_index.segment.rsc +2 -2
  296. package/.next/server/app/inbox.segments/_tree.segment.rsc +2 -2
  297. package/.next/server/app/index.html +1 -1
  298. package/.next/server/app/index.rsc +4 -4
  299. package/.next/server/app/index.segments/!KGFwcCk/__PAGE__.segment.rsc +2 -2
  300. package/.next/server/app/index.segments/!KGFwcCk.segment.rsc +2 -2
  301. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  302. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  303. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  304. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  305. package/.next/server/app/jobs.html +1 -1
  306. package/.next/server/app/jobs.rsc +4 -4
  307. package/.next/server/app/jobs.segments/!KGFwcCk/jobs/__PAGE__.segment.rsc +2 -2
  308. package/.next/server/app/jobs.segments/!KGFwcCk/jobs.segment.rsc +1 -1
  309. package/.next/server/app/jobs.segments/!KGFwcCk.segment.rsc +2 -2
  310. package/.next/server/app/jobs.segments/_full.segment.rsc +4 -4
  311. package/.next/server/app/jobs.segments/_head.segment.rsc +1 -1
  312. package/.next/server/app/jobs.segments/_index.segment.rsc +2 -2
  313. package/.next/server/app/jobs.segments/_tree.segment.rsc +2 -2
  314. package/.next/server/app/login/page.js +2 -2
  315. package/.next/server/app/login/page.js.nft.json +1 -1
  316. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  317. package/.next/server/app/login.html +1 -1
  318. package/.next/server/app/login.rsc +3 -3
  319. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  320. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  321. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  322. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  323. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  324. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  325. package/.next/server/app/mcp-servers.html +1 -1
  326. package/.next/server/app/mcp-servers.rsc +4 -4
  327. package/.next/server/app/mcp-servers.segments/!KGFwcCk/mcp-servers/__PAGE__.segment.rsc +2 -2
  328. package/.next/server/app/mcp-servers.segments/!KGFwcCk/mcp-servers.segment.rsc +1 -1
  329. package/.next/server/app/mcp-servers.segments/!KGFwcCk.segment.rsc +2 -2
  330. package/.next/server/app/mcp-servers.segments/_full.segment.rsc +4 -4
  331. package/.next/server/app/mcp-servers.segments/_head.segment.rsc +1 -1
  332. package/.next/server/app/mcp-servers.segments/_index.segment.rsc +2 -2
  333. package/.next/server/app/mcp-servers.segments/_tree.segment.rsc +2 -2
  334. package/.next/server/app/plugins.html +1 -0
  335. package/.next/server/app/{changes.meta → plugins.meta} +3 -3
  336. package/.next/server/app/{changes.rsc → plugins.rsc} +4 -4
  337. package/.next/server/app/{files.segments/!KGFwcCk/files → plugins.segments/!KGFwcCk/plugins}/__PAGE__.segment.rsc +2 -2
  338. package/.next/server/app/{changes.segments/!KGFwcCk/changes.segment.rsc → plugins.segments/!KGFwcCk/plugins.segment.rsc} +1 -1
  339. package/.next/server/app/{changes.segments → plugins.segments}/!KGFwcCk.segment.rsc +2 -2
  340. package/.next/server/app/{changes.segments → plugins.segments}/_full.segment.rsc +4 -4
  341. package/.next/server/app/{changes.segments → plugins.segments}/_head.segment.rsc +1 -1
  342. package/.next/server/app/{files.segments → plugins.segments}/_index.segment.rsc +2 -2
  343. package/.next/server/app/{changes.segments → plugins.segments}/_tree.segment.rsc +2 -2
  344. package/.next/server/app/reviews.html +1 -1
  345. package/.next/server/app/reviews.rsc +4 -4
  346. package/.next/server/app/reviews.segments/!KGFwcCk/reviews/__PAGE__.segment.rsc +2 -2
  347. package/.next/server/app/reviews.segments/!KGFwcCk/reviews.segment.rsc +1 -1
  348. package/.next/server/app/reviews.segments/!KGFwcCk.segment.rsc +2 -2
  349. package/.next/server/app/reviews.segments/_full.segment.rsc +4 -4
  350. package/.next/server/app/reviews.segments/_head.segment.rsc +1 -1
  351. package/.next/server/app/reviews.segments/_index.segment.rsc +2 -2
  352. package/.next/server/app/reviews.segments/_tree.segment.rsc +2 -2
  353. package/.next/server/app/settings/appearance.html +1 -1
  354. package/.next/server/app/settings/appearance.rsc +4 -4
  355. package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings/appearance/__PAGE__.segment.rsc +2 -2
  356. package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings/appearance.segment.rsc +1 -1
  357. package/.next/server/app/settings/appearance.segments/!KGFwcCk/settings.segment.rsc +1 -1
  358. package/.next/server/app/settings/appearance.segments/!KGFwcCk.segment.rsc +2 -2
  359. package/.next/server/app/settings/appearance.segments/_full.segment.rsc +4 -4
  360. package/.next/server/app/settings/appearance.segments/_head.segment.rsc +1 -1
  361. package/.next/server/app/settings/appearance.segments/_index.segment.rsc +2 -2
  362. package/.next/server/app/settings/appearance.segments/_tree.segment.rsc +2 -2
  363. package/.next/server/app/settings/notifications.html +1 -1
  364. package/.next/server/app/settings/notifications.rsc +4 -4
  365. package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications/__PAGE__.segment.rsc +2 -2
  366. package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings/notifications.segment.rsc +1 -1
  367. package/.next/server/app/settings/notifications.segments/!KGFwcCk/settings.segment.rsc +1 -1
  368. package/.next/server/app/settings/notifications.segments/!KGFwcCk.segment.rsc +2 -2
  369. package/.next/server/app/settings/notifications.segments/_full.segment.rsc +4 -4
  370. package/.next/server/app/settings/notifications.segments/_head.segment.rsc +1 -1
  371. package/.next/server/app/settings/notifications.segments/_index.segment.rsc +2 -2
  372. package/.next/server/app/settings/notifications.segments/_tree.segment.rsc +2 -2
  373. package/.next/server/app/settings/providers/new.html +1 -1
  374. package/.next/server/app/settings/providers/new.rsc +4 -4
  375. package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers/new/__PAGE__.segment.rsc +2 -2
  376. package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers/new.segment.rsc +1 -1
  377. package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings/providers.segment.rsc +1 -1
  378. package/.next/server/app/settings/providers/new.segments/!KGFwcCk/settings.segment.rsc +1 -1
  379. package/.next/server/app/settings/providers/new.segments/!KGFwcCk.segment.rsc +2 -2
  380. package/.next/server/app/settings/providers/new.segments/_full.segment.rsc +4 -4
  381. package/.next/server/app/settings/providers/new.segments/_head.segment.rsc +1 -1
  382. package/.next/server/app/settings/providers/new.segments/_index.segment.rsc +2 -2
  383. package/.next/server/app/settings/providers/new.segments/_tree.segment.rsc +2 -2
  384. package/.next/server/app/settings/providers.html +1 -1
  385. package/.next/server/app/settings/providers.rsc +4 -4
  386. package/.next/server/app/settings/providers.segments/!KGFwcCk/settings/providers/__PAGE__.segment.rsc +2 -2
  387. package/.next/server/app/settings/providers.segments/!KGFwcCk/settings/providers.segment.rsc +1 -1
  388. package/.next/server/app/settings/providers.segments/!KGFwcCk/settings.segment.rsc +1 -1
  389. package/.next/server/app/settings/providers.segments/!KGFwcCk.segment.rsc +2 -2
  390. package/.next/server/app/settings/providers.segments/_full.segment.rsc +4 -4
  391. package/.next/server/app/settings/providers.segments/_head.segment.rsc +1 -1
  392. package/.next/server/app/settings/providers.segments/_index.segment.rsc +2 -2
  393. package/.next/server/app/settings/providers.segments/_tree.segment.rsc +2 -2
  394. package/.next/server/app/settings/session.html +1 -1
  395. package/.next/server/app/settings/session.rsc +4 -4
  396. package/.next/server/app/settings/session.segments/!KGFwcCk/settings/session/__PAGE__.segment.rsc +2 -2
  397. package/.next/server/app/settings/session.segments/!KGFwcCk/settings/session.segment.rsc +1 -1
  398. package/.next/server/app/settings/session.segments/!KGFwcCk/settings.segment.rsc +1 -1
  399. package/.next/server/app/settings/session.segments/!KGFwcCk.segment.rsc +2 -2
  400. package/.next/server/app/settings/session.segments/_full.segment.rsc +4 -4
  401. package/.next/server/app/settings/session.segments/_head.segment.rsc +1 -1
  402. package/.next/server/app/settings/session.segments/_index.segment.rsc +2 -2
  403. package/.next/server/app/settings/session.segments/_tree.segment.rsc +2 -2
  404. package/.next/server/app/settings.html +1 -1
  405. package/.next/server/app/settings.rsc +4 -4
  406. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +2 -2
  407. package/.next/server/app/settings.segments/!KGFwcCk/settings.segment.rsc +1 -1
  408. package/.next/server/app/settings.segments/!KGFwcCk.segment.rsc +2 -2
  409. package/.next/server/app/settings.segments/_full.segment.rsc +4 -4
  410. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  411. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  412. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  413. package/.next/server/app/skills.html +1 -1
  414. package/.next/server/app/skills.rsc +4 -4
  415. package/.next/server/app/skills.segments/!KGFwcCk/skills/__PAGE__.segment.rsc +2 -2
  416. package/.next/server/app/skills.segments/!KGFwcCk/skills.segment.rsc +1 -1
  417. package/.next/server/app/skills.segments/!KGFwcCk.segment.rsc +2 -2
  418. package/.next/server/app/skills.segments/_full.segment.rsc +4 -4
  419. package/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  420. package/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  421. package/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  422. package/.next/server/app-paths-manifest.json +10 -2
  423. package/.next/server/chunks/1011.js +1 -1
  424. package/.next/server/chunks/1327.js +1 -1
  425. package/.next/server/chunks/1979.js +7 -2
  426. package/.next/server/chunks/2666.js +1 -0
  427. package/.next/server/chunks/3136.js +11 -0
  428. package/.next/server/chunks/319.js +45 -0
  429. package/.next/server/chunks/3445.js +2 -2
  430. package/.next/server/chunks/3764.js +1 -1
  431. package/.next/server/chunks/4053.js +4971 -0
  432. package/.next/server/chunks/5292.js +201 -0
  433. package/.next/server/chunks/5318.js +1 -1
  434. package/.next/server/chunks/5472.js +1 -1
  435. package/.next/server/chunks/6304.js +1 -1
  436. package/.next/server/chunks/6705.js +1 -1
  437. package/.next/server/chunks/7539.js +5 -0
  438. package/.next/server/chunks/7891.js +1 -0
  439. package/.next/server/chunks/8578.js +1 -1
  440. package/.next/server/chunks/8728.js +1 -0
  441. package/.next/server/middleware-build-manifest.js +1 -1
  442. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  443. package/.next/server/pages/404.html +1 -1
  444. package/.next/server/pages/500.html +1 -1
  445. package/.next/server/server-reference-manifest.json +1 -1
  446. package/.next/static/chunks/12644.84908edd1bec8b5a.js +1 -0
  447. package/.next/static/chunks/1550-9a32fa02f6722fc7.js +25 -0
  448. package/.next/static/chunks/18977.393a8bc1bef44fc4.js +1 -0
  449. package/.next/static/chunks/{2503.bb9d3528c3c7ccae.js → 2503.68e12779c4b14adb.js} +1 -1
  450. package/.next/static/chunks/25781-c77dc5d11fb85d82.js +201 -0
  451. package/.next/static/chunks/{27455.1bce740b63d7c3cc.js → 27455.8f2189c777c63368.js} +1 -1
  452. package/.next/static/chunks/33072.3d32bb7b2a85ca9b.js +1 -0
  453. package/.next/static/chunks/39267.0c93a6bed8e46ac0.js +1 -0
  454. package/.next/static/chunks/52333.ff3bf0753b68875e.js +1 -0
  455. package/.next/static/chunks/69940.42e1ca99efc62caf.js +1 -0
  456. package/.next/static/chunks/70400.ffe0412efe741888.js +1 -0
  457. package/.next/static/chunks/7113.336a2a8deabe2aa5.js +1 -0
  458. package/.next/static/chunks/{71642.852436e8f0287b89.js → 71642.e11bcaa30efbf1f2.js} +1 -1
  459. package/.next/static/chunks/{72839.a5325a99f8c12fed.js → 72839.225c36dd5e767a20.js} +1 -1
  460. package/.next/static/chunks/{69427.a0b463c808aa54c8.js → 81272.b0027c9bc80050aa.js} +1 -1
  461. package/.next/static/chunks/85853.421f0c913b3d332b.js +1 -0
  462. package/.next/static/chunks/86155.3c5c1468fa2f446e.js +1 -0
  463. package/.next/static/chunks/86339.ba009abde9765665.js +1 -0
  464. package/.next/static/chunks/86939-51ae17d3d12c0310.js +1 -0
  465. package/.next/static/chunks/93794-b87eef7d177fe7b3.js +32 -0
  466. package/.next/static/chunks/989-6074551b2b54a168.js +3 -0
  467. package/.next/static/chunks/app/(app)/agents/[name]/page-6954a12623e4bdcf.js +8 -0
  468. package/.next/static/chunks/app/(app)/agents/{page-6fcfd7ab6781814e.js → page-b984c01f39aed22e.js} +1 -1
  469. package/.next/static/chunks/app/(app)/claude-md/edit/page-575c5ccdc585516c.js +1 -0
  470. package/.next/static/chunks/app/(app)/claude-md/{page-cd9e2176a12ba241.js → page-aab6df0c14c657f3.js} +1 -1
  471. package/.next/static/chunks/app/(app)/commands/[name]/page-ea86a4400fd29210.js +6 -0
  472. package/.next/static/chunks/app/(app)/commands/{page-f126b608b04747ac.js → page-3867a45c1378c6fe.js} +1 -1
  473. package/.next/static/chunks/app/(app)/hooks/[event]/{page-28038323fd29adfa.js → page-2c41e810c15a1149.js} +2 -2
  474. package/.next/static/chunks/app/(app)/hooks/{page-f1f39284e53c0344.js → page-49f9dbb78a3f97df.js} +1 -1
  475. package/.next/static/chunks/app/(app)/inbox/[id]/page-885a258b67e47b00.js +1 -0
  476. package/.next/static/chunks/app/(app)/inbox/page-592249fc155b9fe4.js +1 -0
  477. package/.next/static/chunks/app/(app)/jobs/[id]/edit/page-121bf977a839488c.js +1 -0
  478. package/.next/static/chunks/app/(app)/jobs/[id]/page-ba516fa01db89ea0.js +1 -0
  479. package/.next/static/chunks/app/(app)/jobs/[id]/runs/[runId]/page-0650e6f678fae5b8.js +1 -0
  480. package/.next/static/chunks/app/(app)/jobs/page-da3fe23a43277e67.js +1 -0
  481. package/.next/static/chunks/app/(app)/{layout-ce9e1be301c60fe5.js → layout-3cd80708648e0723.js} +1 -1
  482. package/.next/static/chunks/app/(app)/mcp-servers/[name]/{page-d6d805a27ec0b0c0.js → page-9290a7940a32d9ac.js} +1 -1
  483. package/.next/static/chunks/app/(app)/mcp-servers/page-1e828264f81ee08c.js +1 -0
  484. package/.next/static/chunks/app/(app)/{page-027a5382da30ddb9.js → page-2d171ffc3e1945e1.js} +1 -1
  485. package/.next/static/chunks/app/(app)/plugins/page-7e70e0b3ead44a99.js +1 -0
  486. package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/[number]/page-4396e9d6df189336.js +13 -0
  487. package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/{page-c5fd013309ab3eba.js → page-76a072cbfe3d9f0e.js} +1 -1
  488. package/.next/static/chunks/app/(app)/reviews/{page-47530d93bb9d4a76.js → page-deaa44f0ce253da8.js} +1 -1
  489. package/.next/static/chunks/app/(app)/sessions/[id]/page-95bcce2e0b9f827a.js +1 -0
  490. package/.next/static/chunks/app/(app)/settings/appearance/{page-95902da748ac5f1e.js → page-433fcfb9b95fb22e.js} +1 -1
  491. package/.next/static/chunks/app/(app)/settings/notifications/page-e5309337f125a059.js +1 -0
  492. package/.next/static/chunks/app/(app)/settings/{page-8ed16a66fdde10cd.js → page-353ef8c508418af1.js} +1 -1
  493. package/.next/static/chunks/app/(app)/settings/providers/[id]/page-2cacea2e60ba435c.js +1 -0
  494. package/.next/static/chunks/app/(app)/settings/providers/new/page-d40acef3abfc7c19.js +1 -0
  495. package/.next/static/chunks/app/(app)/settings/providers/page-098d8f399c663944.js +1 -0
  496. package/.next/static/chunks/app/(app)/settings/session/page-706118ba33c2b99f.js +1 -0
  497. package/.next/static/chunks/app/(app)/skills/[name]/page-7dd7c0f316742c01.js +6 -0
  498. package/.next/static/chunks/app/(app)/skills/{page-c52773eacb27c04e.js → page-48d0bbe201180fc8.js} +1 -1
  499. package/.next/static/chunks/app/_global-error/page-bf8153dffcb47d46.js +1 -0
  500. package/.next/static/chunks/app/api/agents/[name]/route-bf8153dffcb47d46.js +1 -0
  501. package/.next/static/chunks/app/api/agents/route-bf8153dffcb47d46.js +1 -0
  502. package/.next/static/chunks/app/api/assistant-session/route-bf8153dffcb47d46.js +1 -0
  503. package/.next/static/chunks/app/api/auth/check/route-bf8153dffcb47d46.js +1 -0
  504. package/.next/static/chunks/app/api/auth/login/route-bf8153dffcb47d46.js +1 -0
  505. package/.next/static/chunks/app/api/auth/setup/route-bf8153dffcb47d46.js +1 -0
  506. package/.next/static/chunks/app/api/auth/ws-token/route-bf8153dffcb47d46.js +1 -0
  507. package/.next/static/chunks/app/api/btw/route-bf8153dffcb47d46.js +1 -0
  508. package/.next/static/chunks/app/api/claude-md/route-bf8153dffcb47d46.js +1 -0
  509. package/.next/static/chunks/app/api/commands/[name]/route-bf8153dffcb47d46.js +1 -0
  510. package/.next/static/chunks/app/api/commands/route-bf8153dffcb47d46.js +1 -0
  511. package/.next/static/chunks/app/api/config/cwd/route-bf8153dffcb47d46.js +1 -0
  512. package/.next/static/chunks/app/api/defaults/route-bf8153dffcb47d46.js +1 -0
  513. package/.next/static/chunks/app/api/filesystem/browse/route-bf8153dffcb47d46.js +1 -0
  514. package/.next/static/chunks/app/api/filesystem/files/route-bf8153dffcb47d46.js +1 -0
  515. package/.next/static/chunks/app/api/filesystem/mkdir/route-bf8153dffcb47d46.js +1 -0
  516. package/.next/static/chunks/app/api/filesystem/read/route-bf8153dffcb47d46.js +1 -0
  517. package/.next/static/chunks/app/api/git/clone/route-bf8153dffcb47d46.js +1 -0
  518. package/.next/static/chunks/app/api/git/commit/route-bf8153dffcb47d46.js +1 -0
  519. package/.next/static/chunks/app/api/git/diff/route-bf8153dffcb47d46.js +1 -0
  520. package/.next/static/chunks/app/api/git/discard/route-bf8153dffcb47d46.js +1 -0
  521. package/.next/static/chunks/app/api/git/generate-message/route-bf8153dffcb47d46.js +1 -0
  522. package/.next/static/chunks/app/api/git/push/route-bf8153dffcb47d46.js +1 -0
  523. package/.next/static/chunks/app/api/git/status/route-bf8153dffcb47d46.js +1 -0
  524. package/.next/static/chunks/app/api/github/file-content/route-bf8153dffcb47d46.js +1 -0
  525. package/.next/static/chunks/app/api/github/orgs/route-bf8153dffcb47d46.js +1 -0
  526. package/.next/static/chunks/app/api/github/prs/checks/route-bf8153dffcb47d46.js +1 -0
  527. package/.next/static/chunks/app/api/github/prs/diff/route-bf8153dffcb47d46.js +1 -0
  528. package/.next/static/chunks/app/api/github/prs/review/route-bf8153dffcb47d46.js +1 -0
  529. package/.next/static/chunks/app/api/github/prs/route-bf8153dffcb47d46.js +1 -0
  530. package/.next/static/chunks/app/api/github/prs/view/route-bf8153dffcb47d46.js +1 -0
  531. package/.next/static/chunks/app/api/github/repos/route-bf8153dffcb47d46.js +1 -0
  532. package/.next/static/chunks/app/api/github/review-session/route-bf8153dffcb47d46.js +1 -0
  533. package/.next/static/chunks/app/api/health/route-bf8153dffcb47d46.js +1 -0
  534. package/.next/static/chunks/app/api/hooks/route-bf8153dffcb47d46.js +1 -0
  535. package/.next/static/chunks/app/api/inbox/[id]/route-bf8153dffcb47d46.js +1 -0
  536. package/.next/static/chunks/app/api/inbox/route-bf8153dffcb47d46.js +1 -0
  537. package/.next/static/chunks/app/api/jobs/[id]/route-bf8153dffcb47d46.js +1 -0
  538. package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/route-bf8153dffcb47d46.js +1 -0
  539. package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/transcript/route-bf8153dffcb47d46.js +1 -0
  540. package/.next/static/chunks/app/api/jobs/[id]/runs/route-bf8153dffcb47d46.js +1 -0
  541. package/.next/static/chunks/app/api/jobs/[id]/stop/route-bf8153dffcb47d46.js +1 -0
  542. package/.next/static/chunks/app/api/jobs/[id]/trigger/route-bf8153dffcb47d46.js +1 -0
  543. package/.next/static/chunks/app/api/jobs/mcp-discover/route-bf8153dffcb47d46.js +1 -0
  544. package/.next/static/chunks/app/api/jobs/route-bf8153dffcb47d46.js +1 -0
  545. package/.next/static/chunks/app/api/jobs/status/route-bf8153dffcb47d46.js +1 -0
  546. package/.next/static/chunks/app/api/mcp-servers/[name]/route-bf8153dffcb47d46.js +1 -0
  547. package/.next/static/chunks/app/api/mcp-servers/[name]/test/route-bf8153dffcb47d46.js +1 -0
  548. package/.next/static/chunks/app/api/mcp-servers/[name]/tools/route-bf8153dffcb47d46.js +1 -0
  549. package/.next/static/chunks/app/api/mcp-servers/route-bf8153dffcb47d46.js +1 -0
  550. package/.next/static/chunks/app/api/notifications/route-bf8153dffcb47d46.js +1 -0
  551. package/.next/static/chunks/app/api/notifications/test/route-bf8153dffcb47d46.js +1 -0
  552. package/.next/static/chunks/app/api/plugins/[id]/route-bf8153dffcb47d46.js +1 -0
  553. package/.next/static/chunks/app/api/plugins/install/route-bf8153dffcb47d46.js +1 -0
  554. package/.next/static/chunks/app/api/plugins/marketplaces/[name]/route-bf8153dffcb47d46.js +1 -0
  555. package/.next/static/chunks/app/api/plugins/marketplaces/route-bf8153dffcb47d46.js +1 -0
  556. package/.next/static/chunks/app/api/plugins/route-bf8153dffcb47d46.js +1 -0
  557. package/.next/static/chunks/app/api/providers/[id]/route-bf8153dffcb47d46.js +1 -0
  558. package/.next/static/chunks/app/api/providers/route-bf8153dffcb47d46.js +1 -0
  559. package/.next/static/chunks/app/api/reviews/pinned/route-bf8153dffcb47d46.js +1 -0
  560. package/.next/static/chunks/app/api/sessions/[id]/context/route-bf8153dffcb47d46.js +1 -0
  561. package/.next/static/chunks/app/api/sessions/[id]/mcp/route-bf8153dffcb47d46.js +1 -0
  562. package/.next/static/chunks/app/api/sessions/[id]/route-bf8153dffcb47d46.js +1 -0
  563. package/.next/static/chunks/app/api/sessions/[id]/search/route-bf8153dffcb47d46.js +1 -0
  564. package/.next/static/chunks/app/api/sessions/[id]/tabs/route-bf8153dffcb47d46.js +1 -0
  565. package/.next/static/chunks/app/api/sessions/bulk-delete/route-bf8153dffcb47d46.js +1 -0
  566. package/.next/static/chunks/app/api/sessions/by-ids/route-bf8153dffcb47d46.js +1 -0
  567. package/.next/static/chunks/app/api/sessions/group/route-bf8153dffcb47d46.js +1 -0
  568. package/.next/static/chunks/app/api/sessions/pinned/route-bf8153dffcb47d46.js +1 -0
  569. package/.next/static/chunks/app/api/sessions/route-bf8153dffcb47d46.js +1 -0
  570. package/.next/static/chunks/app/api/sessions/search/route-bf8153dffcb47d46.js +1 -0
  571. package/.next/static/chunks/app/api/sessions/thinking/route-bf8153dffcb47d46.js +1 -0
  572. package/.next/static/chunks/app/api/skills/[name]/route-bf8153dffcb47d46.js +1 -0
  573. package/.next/static/chunks/app/api/skills/route-bf8153dffcb47d46.js +1 -0
  574. package/.next/static/chunks/app/api/terminal/[id]/route-bf8153dffcb47d46.js +1 -0
  575. package/.next/static/chunks/app/api/terminal/route-bf8153dffcb47d46.js +1 -0
  576. package/.next/static/chunks/app/api/usage/route-bf8153dffcb47d46.js +1 -0
  577. package/.next/static/chunks/app/api/version/changelog/route-bf8153dffcb47d46.js +1 -0
  578. package/.next/static/chunks/app/api/version/cockpit/changelog/route-bf8153dffcb47d46.js +1 -0
  579. package/.next/static/chunks/app/api/version/cockpit/route-bf8153dffcb47d46.js +1 -0
  580. package/.next/static/chunks/app/api/version/route-bf8153dffcb47d46.js +1 -0
  581. package/.next/static/chunks/{framework-6fd9f138158c42e0.js → framework-45a1aae1a0f575fd.js} +1 -1
  582. package/.next/static/chunks/{main-5dac9bfffcc23702.js → main-eb9ff0b73c75808a.js} +3 -3
  583. package/.next/static/chunks/next/dist/client/components/builtin/app-error-bf8153dffcb47d46.js +1 -0
  584. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-bf8153dffcb47d46.js +1 -0
  585. package/.next/static/chunks/next/dist/client/components/builtin/not-found-bf8153dffcb47d46.js +1 -0
  586. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-bf8153dffcb47d46.js +1 -0
  587. package/.next/static/chunks/webpack-76a545b642140725.js +1 -0
  588. package/.next/static/css/483101dd9c42fb97.css +1 -0
  589. package/.next/static/mmHo0MmzQHWjZATtI-VbH/_buildManifest.js +1 -0
  590. package/README.md +2 -2
  591. package/dist/server.js +10 -0
  592. package/dist/src/lib/cli-commands.js +147 -0
  593. package/dist/src/lib/models.js +8 -0
  594. package/dist/src/lib/paste-detect.js +161 -0
  595. package/dist/src/server/assistant-settings.js +35 -0
  596. package/dist/src/server/claude-bin.js +21 -0
  597. package/dist/src/server/cli-init-fetch.js +6 -1
  598. package/dist/src/server/inbox.js +2 -2
  599. package/dist/src/server/job-scheduler.js +146 -4
  600. package/dist/src/server/job-storage.js +33 -0
  601. package/dist/src/server/mcp/cockpit-agent-prompt.js +5 -0
  602. package/dist/src/server/mcp/cockpit-config-server.js +632 -0
  603. package/dist/src/server/mcp/run-context.js +23 -0
  604. package/dist/src/server/notifications.js +51 -10
  605. package/dist/src/server/plugins.js +103 -0
  606. package/dist/src/server/providers.js +25 -2
  607. package/dist/src/server/pty-runtime.js +112 -3
  608. package/dist/src/server/pty-session.js +7 -4
  609. package/dist/src/server/session-manager.js +338 -100
  610. package/dist/src/server/singleton.js +9 -0
  611. package/dist/src/server/terminal-buffer.js +17 -0
  612. package/dist/src/server/terminal-manager.js +9 -13
  613. package/dist/src/server/transcript.js +39 -22
  614. package/dist/src/server/ws-handler.js +18 -6
  615. package/next.config.ts +1 -0
  616. package/package.json +3 -2
  617. package/.next/server/app/(app)/changes/page.js +0 -2
  618. package/.next/server/app/(app)/changes/page.js.nft.json +0 -1
  619. package/.next/server/app/(app)/changes/page_client-reference-manifest.js +0 -1
  620. package/.next/server/app/(app)/files/page.js +0 -2
  621. package/.next/server/app/(app)/files/page_client-reference-manifest.js +0 -1
  622. package/.next/server/app/changes.html +0 -1
  623. package/.next/server/app/changes.segments/!KGFwcCk/changes/__PAGE__.segment.rsc +0 -9
  624. package/.next/server/app/changes.segments/_index.segment.rsc +0 -5
  625. package/.next/server/app/files.html +0 -1
  626. package/.next/server/app/files.meta +0 -16
  627. package/.next/server/app/files.rsc +0 -23
  628. package/.next/server/app/files.segments/!KGFwcCk/files.segment.rsc +0 -5
  629. package/.next/server/app/files.segments/!KGFwcCk.segment.rsc +0 -7
  630. package/.next/server/app/files.segments/_full.segment.rsc +0 -23
  631. package/.next/server/app/files.segments/_head.segment.rsc +0 -6
  632. package/.next/server/app/files.segments/_tree.segment.rsc +0 -2
  633. package/.next/server/chunks/3006.js +0 -199
  634. package/.next/server/chunks/4342.js +0 -1
  635. package/.next/server/chunks/4352.js +0 -1
  636. package/.next/server/chunks/4445.js +0 -1
  637. package/.next/server/chunks/63.js +0 -45
  638. package/.next/server/chunks/7782.js +0 -6
  639. package/.next/server/chunks/8148.js +0 -1
  640. package/.next/server/chunks/9599.js +0 -11
  641. package/.next/static/I-rxZaJEzhe3ZUTjSqB11/_buildManifest.js +0 -1
  642. package/.next/static/chunks/18977.a98edaf19c6df2d4.js +0 -1
  643. package/.next/static/chunks/26126-97874904b42befb8.js +0 -1
  644. package/.next/static/chunks/31010-6e87f77b97544424.js +0 -1
  645. package/.next/static/chunks/33072.9c3cd19e8d515dea.js +0 -1
  646. package/.next/static/chunks/3765-d323c6675307a63e.js +0 -20
  647. package/.next/static/chunks/39267.ef60669ade47cf4c.js +0 -1
  648. package/.next/static/chunks/41487-d802643f4a8fad3c.js +0 -199
  649. package/.next/static/chunks/48273-fb393846bb4333c0.js +0 -6
  650. package/.next/static/chunks/52333.f98d1cca9a127b34.js +0 -1
  651. package/.next/static/chunks/6935-f436a624267529fb.js +0 -1
  652. package/.next/static/chunks/70400.1816c247ad90f9bc.js +0 -1
  653. package/.next/static/chunks/7113.39704408fef3d26e.js +0 -1
  654. package/.next/static/chunks/85853.39872899093b140a.js +0 -1
  655. package/.next/static/chunks/86155.40f687f9aaa13854.js +0 -1
  656. package/.next/static/chunks/86339.4dbd51a9b9871f65.js +0 -1
  657. package/.next/static/chunks/86939-dfc6f8eb395caa89.js +0 -1
  658. package/.next/static/chunks/93794-5f89a674d8cefcff.js +0 -32
  659. package/.next/static/chunks/989-94bf2b9d242776c3.js +0 -3
  660. package/.next/static/chunks/app/(app)/agents/[name]/page-8bdd0359043537d4.js +0 -8
  661. package/.next/static/chunks/app/(app)/changes/page-4549a5bd72d77e3e.js +0 -1
  662. package/.next/static/chunks/app/(app)/claude-md/edit/page-08e6e120e71979f4.js +0 -1
  663. package/.next/static/chunks/app/(app)/commands/[name]/page-7cdfdef29ded0aa0.js +0 -6
  664. package/.next/static/chunks/app/(app)/files/page-f526eb95821e000e.js +0 -1
  665. package/.next/static/chunks/app/(app)/inbox/[id]/page-bc1ff3a0db0114a4.js +0 -1
  666. package/.next/static/chunks/app/(app)/inbox/page-82e03870103ce9bd.js +0 -1
  667. package/.next/static/chunks/app/(app)/jobs/[id]/edit/page-7fb788f772ff2129.js +0 -1
  668. package/.next/static/chunks/app/(app)/jobs/[id]/page-a5856b9ae967ff59.js +0 -1
  669. package/.next/static/chunks/app/(app)/jobs/[id]/runs/[runId]/page-b7c513402db11db6.js +0 -1
  670. package/.next/static/chunks/app/(app)/jobs/page-e9bbd6c116b9699f.js +0 -1
  671. package/.next/static/chunks/app/(app)/mcp-servers/page-4b7276d43451cd43.js +0 -1
  672. package/.next/static/chunks/app/(app)/reviews/[owner]/[repo]/[number]/page-9ab2955c455bb5fa.js +0 -13
  673. package/.next/static/chunks/app/(app)/sessions/[id]/page-94f891e1b54fd05f.js +0 -1
  674. package/.next/static/chunks/app/(app)/settings/notifications/page-229f1db6beb1d19c.js +0 -1
  675. package/.next/static/chunks/app/(app)/settings/providers/[id]/page-13654263246617b3.js +0 -1
  676. package/.next/static/chunks/app/(app)/settings/providers/new/page-e1798e321ccbc6df.js +0 -1
  677. package/.next/static/chunks/app/(app)/settings/providers/page-0bb4c1db2ee35b3d.js +0 -1
  678. package/.next/static/chunks/app/(app)/settings/session/page-ab216a8fa37a0f76.js +0 -1
  679. package/.next/static/chunks/app/(app)/skills/[name]/page-8ab85d5090967ee4.js +0 -6
  680. package/.next/static/chunks/app/_global-error/page-fc747760bd4c8a4b.js +0 -1
  681. package/.next/static/chunks/app/api/agents/[name]/route-fc747760bd4c8a4b.js +0 -1
  682. package/.next/static/chunks/app/api/agents/route-fc747760bd4c8a4b.js +0 -1
  683. package/.next/static/chunks/app/api/auth/check/route-fc747760bd4c8a4b.js +0 -1
  684. package/.next/static/chunks/app/api/auth/login/route-fc747760bd4c8a4b.js +0 -1
  685. package/.next/static/chunks/app/api/auth/setup/route-fc747760bd4c8a4b.js +0 -1
  686. package/.next/static/chunks/app/api/auth/ws-token/route-fc747760bd4c8a4b.js +0 -1
  687. package/.next/static/chunks/app/api/btw/route-fc747760bd4c8a4b.js +0 -1
  688. package/.next/static/chunks/app/api/claude-md/route-fc747760bd4c8a4b.js +0 -1
  689. package/.next/static/chunks/app/api/commands/[name]/route-fc747760bd4c8a4b.js +0 -1
  690. package/.next/static/chunks/app/api/commands/route-fc747760bd4c8a4b.js +0 -1
  691. package/.next/static/chunks/app/api/defaults/route-fc747760bd4c8a4b.js +0 -1
  692. package/.next/static/chunks/app/api/filesystem/browse/route-fc747760bd4c8a4b.js +0 -1
  693. package/.next/static/chunks/app/api/filesystem/files/route-fc747760bd4c8a4b.js +0 -1
  694. package/.next/static/chunks/app/api/filesystem/mkdir/route-fc747760bd4c8a4b.js +0 -1
  695. package/.next/static/chunks/app/api/filesystem/read/route-fc747760bd4c8a4b.js +0 -1
  696. package/.next/static/chunks/app/api/git/clone/route-fc747760bd4c8a4b.js +0 -1
  697. package/.next/static/chunks/app/api/git/commit/route-fc747760bd4c8a4b.js +0 -1
  698. package/.next/static/chunks/app/api/git/diff/route-fc747760bd4c8a4b.js +0 -1
  699. package/.next/static/chunks/app/api/git/discard/route-fc747760bd4c8a4b.js +0 -1
  700. package/.next/static/chunks/app/api/git/generate-message/route-fc747760bd4c8a4b.js +0 -1
  701. package/.next/static/chunks/app/api/git/push/route-fc747760bd4c8a4b.js +0 -1
  702. package/.next/static/chunks/app/api/git/status/route-fc747760bd4c8a4b.js +0 -1
  703. package/.next/static/chunks/app/api/github/file-content/route-fc747760bd4c8a4b.js +0 -1
  704. package/.next/static/chunks/app/api/github/orgs/route-fc747760bd4c8a4b.js +0 -1
  705. package/.next/static/chunks/app/api/github/prs/checks/route-fc747760bd4c8a4b.js +0 -1
  706. package/.next/static/chunks/app/api/github/prs/diff/route-fc747760bd4c8a4b.js +0 -1
  707. package/.next/static/chunks/app/api/github/prs/review/route-fc747760bd4c8a4b.js +0 -1
  708. package/.next/static/chunks/app/api/github/prs/route-fc747760bd4c8a4b.js +0 -1
  709. package/.next/static/chunks/app/api/github/prs/view/route-fc747760bd4c8a4b.js +0 -1
  710. package/.next/static/chunks/app/api/github/repos/route-fc747760bd4c8a4b.js +0 -1
  711. package/.next/static/chunks/app/api/github/review-session/route-fc747760bd4c8a4b.js +0 -1
  712. package/.next/static/chunks/app/api/health/route-fc747760bd4c8a4b.js +0 -1
  713. package/.next/static/chunks/app/api/hooks/route-fc747760bd4c8a4b.js +0 -1
  714. package/.next/static/chunks/app/api/inbox/[id]/route-fc747760bd4c8a4b.js +0 -1
  715. package/.next/static/chunks/app/api/inbox/route-fc747760bd4c8a4b.js +0 -1
  716. package/.next/static/chunks/app/api/jobs/[id]/route-fc747760bd4c8a4b.js +0 -1
  717. package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/route-fc747760bd4c8a4b.js +0 -1
  718. package/.next/static/chunks/app/api/jobs/[id]/runs/[runId]/transcript/route-fc747760bd4c8a4b.js +0 -1
  719. package/.next/static/chunks/app/api/jobs/[id]/runs/route-fc747760bd4c8a4b.js +0 -1
  720. package/.next/static/chunks/app/api/jobs/[id]/trigger/route-fc747760bd4c8a4b.js +0 -1
  721. package/.next/static/chunks/app/api/jobs/mcp-discover/route-fc747760bd4c8a4b.js +0 -1
  722. package/.next/static/chunks/app/api/jobs/route-fc747760bd4c8a4b.js +0 -1
  723. package/.next/static/chunks/app/api/jobs/status/route-fc747760bd4c8a4b.js +0 -1
  724. package/.next/static/chunks/app/api/mcp-servers/[name]/route-fc747760bd4c8a4b.js +0 -1
  725. package/.next/static/chunks/app/api/mcp-servers/[name]/test/route-fc747760bd4c8a4b.js +0 -1
  726. package/.next/static/chunks/app/api/mcp-servers/route-fc747760bd4c8a4b.js +0 -1
  727. package/.next/static/chunks/app/api/notifications/route-fc747760bd4c8a4b.js +0 -1
  728. package/.next/static/chunks/app/api/notifications/test/route-fc747760bd4c8a4b.js +0 -1
  729. package/.next/static/chunks/app/api/providers/[id]/route-fc747760bd4c8a4b.js +0 -1
  730. package/.next/static/chunks/app/api/providers/route-fc747760bd4c8a4b.js +0 -1
  731. package/.next/static/chunks/app/api/reviews/pinned/route-fc747760bd4c8a4b.js +0 -1
  732. package/.next/static/chunks/app/api/sessions/[id]/context/route-fc747760bd4c8a4b.js +0 -1
  733. package/.next/static/chunks/app/api/sessions/[id]/mcp/route-fc747760bd4c8a4b.js +0 -1
  734. package/.next/static/chunks/app/api/sessions/[id]/route-fc747760bd4c8a4b.js +0 -1
  735. package/.next/static/chunks/app/api/sessions/[id]/search/route-fc747760bd4c8a4b.js +0 -1
  736. package/.next/static/chunks/app/api/sessions/[id]/tabs/route-fc747760bd4c8a4b.js +0 -1
  737. package/.next/static/chunks/app/api/sessions/bulk-delete/route-fc747760bd4c8a4b.js +0 -1
  738. package/.next/static/chunks/app/api/sessions/by-ids/route-fc747760bd4c8a4b.js +0 -1
  739. package/.next/static/chunks/app/api/sessions/group/route-fc747760bd4c8a4b.js +0 -1
  740. package/.next/static/chunks/app/api/sessions/pinned/route-fc747760bd4c8a4b.js +0 -1
  741. package/.next/static/chunks/app/api/sessions/route-fc747760bd4c8a4b.js +0 -1
  742. package/.next/static/chunks/app/api/sessions/search/route-fc747760bd4c8a4b.js +0 -1
  743. package/.next/static/chunks/app/api/sessions/thinking/route-fc747760bd4c8a4b.js +0 -1
  744. package/.next/static/chunks/app/api/skills/[name]/route-fc747760bd4c8a4b.js +0 -1
  745. package/.next/static/chunks/app/api/skills/route-fc747760bd4c8a4b.js +0 -1
  746. package/.next/static/chunks/app/api/terminal/[id]/route-fc747760bd4c8a4b.js +0 -1
  747. package/.next/static/chunks/app/api/terminal/route-fc747760bd4c8a4b.js +0 -1
  748. package/.next/static/chunks/app/api/usage/route-fc747760bd4c8a4b.js +0 -1
  749. package/.next/static/chunks/app/api/version/changelog/route-fc747760bd4c8a4b.js +0 -1
  750. package/.next/static/chunks/app/api/version/cockpit/changelog/route-fc747760bd4c8a4b.js +0 -1
  751. package/.next/static/chunks/app/api/version/cockpit/route-fc747760bd4c8a4b.js +0 -1
  752. package/.next/static/chunks/app/api/version/route-fc747760bd4c8a4b.js +0 -1
  753. package/.next/static/chunks/next/dist/client/components/builtin/app-error-fc747760bd4c8a4b.js +0 -1
  754. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-fc747760bd4c8a4b.js +0 -1
  755. package/.next/static/chunks/next/dist/client/components/builtin/not-found-fc747760bd4c8a4b.js +0 -1
  756. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-fc747760bd4c8a4b.js +0 -1
  757. package/.next/static/chunks/webpack-e31bb45fa59caed8.js +0 -1
  758. package/.next/static/css/3f8af4ae6f812d5c.css +0 -1
  759. /package/.next/static/{I-rxZaJEzhe3ZUTjSqB11 → mmHo0MmzQHWjZATtI-VbH}/_ssgManifest.js +0 -0
@@ -0,0 +1,632 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CockpitMcpServer = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_http_1 = require("node:http");
7
+ const node_path_1 = require("node:path");
8
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
9
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
10
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
11
+ const defaults_1 = require("../../server/defaults");
12
+ const job_storage_1 = require("../../server/job-storage");
13
+ const notification_settings_1 = require("../../server/notification-settings");
14
+ const paths_1 = require("../../server/paths");
15
+ const providers_1 = require("../../server/providers");
16
+ const singleton_1 = require("../../server/singleton");
17
+ const run_context_1 = require("./run-context");
18
+ const TOOL_DEFINITIONS = [
19
+ {
20
+ name: "list_jobs",
21
+ description: "List all scheduled jobs",
22
+ inputSchema: { type: "object", properties: {}, required: [] },
23
+ },
24
+ {
25
+ name: "get_job",
26
+ description: "Get a scheduled job by ID",
27
+ inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
28
+ },
29
+ {
30
+ name: "create_job",
31
+ description: "Create a new scheduled job",
32
+ inputSchema: {
33
+ type: "object",
34
+ properties: {
35
+ name: { type: "string" },
36
+ schedule: { type: "object", properties: { type: { type: "string", enum: ["simple", "cron"] } }, required: ["type"] },
37
+ schedules: {
38
+ type: "array",
39
+ items: { type: "object" },
40
+ description: "Multiple schedules (use instead of schedule for multi-schedule jobs)",
41
+ },
42
+ prompt: { type: "string" },
43
+ cwd: { type: "string" },
44
+ enabled: { type: "boolean" },
45
+ model: { type: "string" },
46
+ contextSize: { type: "string" },
47
+ thinkingLevel: { type: "string" },
48
+ bypassPermissions: { type: "boolean" },
49
+ maxDurationMinutes: { type: "number" },
50
+ retentionDays: { type: "number" },
51
+ skipIfMissed: { type: "boolean" },
52
+ inboxOutput: { type: "boolean" },
53
+ runtime: { type: "string", enum: ["stream", "pty"], description: "Execution runtime: stream (default) or pty" },
54
+ allowedTools: { type: "array", items: { type: "string" }, description: "Tool names the job is allowed to use" },
55
+ mcpServers: { type: "array", items: { type: "string" }, description: "MCP server names to enable for this job" },
56
+ mcpToolFilters: { type: "object", description: 'Per-MCP-server tool filter: { serverName: ["tool1", "tool2"] }' },
57
+ notifyProviders: { type: "array", items: { type: "string" }, description: "Notification provider IDs to alert on job completion" },
58
+ },
59
+ required: ["name", "schedule", "prompt", "cwd"],
60
+ },
61
+ },
62
+ {
63
+ name: "update_job",
64
+ description: "Update an existing scheduled job",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ id: { type: "string" },
69
+ name: { type: "string" },
70
+ schedule: { type: "object", properties: { type: { type: "string", enum: ["simple", "cron"] } }, required: ["type"] },
71
+ schedules: { type: "array", items: { type: "object" } },
72
+ prompt: { type: "string" },
73
+ cwd: { type: "string" },
74
+ enabled: { type: "boolean" },
75
+ model: { type: "string" },
76
+ contextSize: { type: "string" },
77
+ thinkingLevel: { type: "string" },
78
+ bypassPermissions: { type: "boolean" },
79
+ maxDurationMinutes: { type: "number" },
80
+ retentionDays: { type: "number" },
81
+ skipIfMissed: { type: "boolean" },
82
+ inboxOutput: { type: "boolean" },
83
+ runtime: { type: "string", enum: ["stream", "pty"] },
84
+ allowedTools: { type: "array", items: { type: "string" } },
85
+ mcpServers: { type: "array", items: { type: "string" } },
86
+ mcpToolFilters: { type: "object" },
87
+ notifyProviders: { type: "array", items: { type: "string" } },
88
+ updates: { type: "array", items: { type: "object" } },
89
+ },
90
+ },
91
+ },
92
+ {
93
+ name: "delete_job",
94
+ description: "Delete a scheduled job by ID",
95
+ inputSchema: {
96
+ type: "object",
97
+ properties: { id: { type: "string" }, ids: { type: "array", items: { type: "string" } } },
98
+ },
99
+ },
100
+ {
101
+ name: "get_settings",
102
+ description: "Get current application settings",
103
+ inputSchema: { type: "object", properties: {}, required: [] },
104
+ },
105
+ {
106
+ name: "update_settings",
107
+ description: "Update application settings",
108
+ inputSchema: {
109
+ type: "object",
110
+ properties: {
111
+ thinkingLevel: { type: "string", enum: ["low", "medium", "high", "xhigh", "max"] },
112
+ diffStyle: { type: "string", enum: ["split", "unified"] },
113
+ dismissKeyboardOnSend: { type: "boolean" },
114
+ thinkingExpanded: { type: "boolean" },
115
+ readExpanded: { type: "boolean" },
116
+ editExpanded: { type: "boolean" },
117
+ toolCallsExpanded: { type: "boolean" },
118
+ messageStitching: { type: "boolean" },
119
+ reviewsEnabled: { type: "boolean" },
120
+ bypassAllPermissions: { type: "boolean" },
121
+ modelSlots: {
122
+ type: "object",
123
+ properties: {
124
+ main: { type: "string", description: "Model ID (e.g. claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)" },
125
+ mainContext: { type: "string", enum: ["50k", "100k", "200k"], description: "Context window size" },
126
+ },
127
+ },
128
+ },
129
+ },
130
+ },
131
+ {
132
+ name: "list_providers",
133
+ description: "List all model providers",
134
+ inputSchema: { type: "object", properties: {}, required: [] },
135
+ },
136
+ {
137
+ name: "add_provider",
138
+ description: "Add a new model provider",
139
+ inputSchema: { type: "object", properties: { name: { type: "string" }, envVars: { type: "object" } }, required: ["name", "envVars"] },
140
+ },
141
+ {
142
+ name: "update_provider",
143
+ description: "Update an existing model provider",
144
+ inputSchema: {
145
+ type: "object",
146
+ properties: {
147
+ id: { type: "string" },
148
+ name: { type: "string" },
149
+ envVars: { type: "object" },
150
+ },
151
+ required: ["id"],
152
+ },
153
+ },
154
+ {
155
+ name: "delete_provider",
156
+ description: "Delete a model provider by ID",
157
+ inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
158
+ },
159
+ {
160
+ name: "list_mcp_servers",
161
+ description: "List all configured MCP servers from ~/.claude.json",
162
+ inputSchema: { type: "object", properties: {}, required: [] },
163
+ },
164
+ {
165
+ name: "get_mcp_server",
166
+ description: "Get an MCP server configuration by name",
167
+ inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"] },
168
+ },
169
+ {
170
+ name: "save_mcp_server",
171
+ description: "Create or update an MCP server configuration",
172
+ inputSchema: {
173
+ type: "object",
174
+ properties: { name: { type: "string" }, command: { type: "string" }, args: { type: "array", items: { type: "string" } } },
175
+ required: ["name", "command", "args"],
176
+ },
177
+ },
178
+ {
179
+ name: "delete_mcp_server",
180
+ description: "Delete an MCP server configuration by name",
181
+ inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"] },
182
+ },
183
+ {
184
+ name: "get_notification_settings",
185
+ description: "Get current notification settings",
186
+ inputSchema: { type: "object", properties: {}, required: [] },
187
+ },
188
+ {
189
+ name: "update_notification_settings",
190
+ description: "Update notification settings",
191
+ inputSchema: {
192
+ type: "object",
193
+ properties: {
194
+ baseUrl: { type: "string", description: "Webhook URL for notifications" },
195
+ },
196
+ },
197
+ },
198
+ {
199
+ name: "list_notification_providers",
200
+ description: "List all notification providers",
201
+ inputSchema: { type: "object", properties: {}, required: [] },
202
+ },
203
+ {
204
+ name: "add_notification_provider",
205
+ description: "Add a notification provider (telegram or ntfy)",
206
+ inputSchema: {
207
+ type: "object",
208
+ properties: {
209
+ type: { type: "string", enum: ["telegram", "ntfy"] },
210
+ name: { type: "string" },
211
+ enabled: { type: "boolean" },
212
+ config: { type: "object", description: "For telegram: {botToken, chatId}. For ntfy: {serverUrl, topic, token?}" },
213
+ filterPriorities: { type: "array", items: { type: "string", enum: ["info", "warning", "error"] } },
214
+ },
215
+ required: ["type", "name", "config"],
216
+ },
217
+ },
218
+ {
219
+ name: "update_notification_provider",
220
+ description: "Update an existing notification provider by ID",
221
+ inputSchema: {
222
+ type: "object",
223
+ properties: {
224
+ id: { type: "string" },
225
+ name: { type: "string" },
226
+ enabled: { type: "boolean" },
227
+ config: { type: "object" },
228
+ filterPriorities: { type: "array", items: { type: "string", enum: ["info", "warning", "error"] } },
229
+ },
230
+ required: ["id"],
231
+ },
232
+ },
233
+ {
234
+ name: "delete_notification_provider",
235
+ description: "Delete a notification provider by ID",
236
+ inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"] },
237
+ },
238
+ {
239
+ name: "run_job",
240
+ description: "Trigger one or more scheduled jobs to run immediately, regardless of their enabled state; returns as soon as the run is queued and does not wait for completion",
241
+ inputSchema: { type: "object", properties: { id: { type: "string" }, ids: { type: "array", items: { type: "string" } } } },
242
+ },
243
+ {
244
+ name: "stop_job",
245
+ description: "Stop a currently running scheduled job by ID",
246
+ inputSchema: {
247
+ type: "object",
248
+ properties: { id: { type: "string" } },
249
+ required: ["id"],
250
+ },
251
+ },
252
+ {
253
+ name: "list_running_jobs",
254
+ description: "List scheduled jobs that are currently running",
255
+ inputSchema: { type: "object", properties: {}, required: [] },
256
+ },
257
+ ];
258
+ function readClaudeConfig() {
259
+ try {
260
+ return JSON.parse((0, node_fs_1.readFileSync)((0, paths_1.getClaudeUserConfigFile)(), "utf-8"));
261
+ }
262
+ catch {
263
+ return { mcpServers: {} };
264
+ }
265
+ }
266
+ function writeClaudeConfig(data) {
267
+ const file = (0, paths_1.getClaudeUserConfigFile)();
268
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(file), { recursive: true });
269
+ (0, node_fs_1.writeFileSync)(file, JSON.stringify(data, null, 2) + "\n");
270
+ }
271
+ function handleToolCall(name, args, _token) {
272
+ try {
273
+ switch (name) {
274
+ case "list_jobs":
275
+ return { content: [{ type: "text", text: JSON.stringify((0, job_storage_1.loadJobs)(), null, 2) }] };
276
+ case "get_job": {
277
+ const job = (0, job_storage_1.getJob)(args.id);
278
+ if (!job)
279
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Job not found: ${args.id}` }) }], isError: true };
280
+ return { content: [{ type: "text", text: JSON.stringify(job, null, 2) }] };
281
+ }
282
+ case "create_job": {
283
+ const now = Date.now();
284
+ const job = {
285
+ id: (0, node_crypto_1.randomUUID)(),
286
+ name: args.name,
287
+ schedule: args.schedule,
288
+ prompt: args.prompt,
289
+ cwd: args.cwd,
290
+ enabled: args.enabled ?? true,
291
+ createdAt: now,
292
+ updatedAt: now,
293
+ };
294
+ (0, job_storage_1.saveJob)(job);
295
+ return { content: [{ type: "text", text: JSON.stringify({ created: job }, null, 2) }] };
296
+ }
297
+ case "update_job": {
298
+ if (Array.isArray(args.updates)) {
299
+ const results = args.updates.map((entry) => {
300
+ const id = entry.id;
301
+ const existing = (0, job_storage_1.getJob)(id);
302
+ if (!existing)
303
+ return { id, error: `Job not found: ${id}` };
304
+ const before = { ...existing };
305
+ const update = { ...entry };
306
+ delete update.id;
307
+ const updated = { ...existing, ...update, updatedAt: Date.now() };
308
+ (0, job_storage_1.saveJob)(updated);
309
+ return { id, before, after: updated };
310
+ });
311
+ return { content: [{ type: "text", text: JSON.stringify({ results }, null, 2) }] };
312
+ }
313
+ if (!args.id) {
314
+ return { content: [{ type: "text", text: JSON.stringify({ error: "missing id or updates" }) }], isError: true };
315
+ }
316
+ const existing = (0, job_storage_1.getJob)(args.id);
317
+ if (!existing)
318
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Job not found: ${args.id}` }) }], isError: true };
319
+ const before = { ...existing };
320
+ const update = { ...args };
321
+ delete update.id;
322
+ const updated = { ...existing, ...update, updatedAt: Date.now() };
323
+ (0, job_storage_1.saveJob)(updated);
324
+ return { content: [{ type: "text", text: JSON.stringify({ before, after: updated }, null, 2) }] };
325
+ }
326
+ case "delete_job": {
327
+ if (Array.isArray(args.ids)) {
328
+ const results = args.ids.map((id) => {
329
+ const job = (0, job_storage_1.getJob)(id);
330
+ if (!job)
331
+ return { id, error: `Job not found: ${id}` };
332
+ (0, job_storage_1.deleteJob)(id);
333
+ return { id, deleted: true };
334
+ });
335
+ return { content: [{ type: "text", text: JSON.stringify({ results }, null, 2) }] };
336
+ }
337
+ const job = (0, job_storage_1.getJob)(args.id);
338
+ if (!job)
339
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Job not found: ${args.id}` }) }], isError: true };
340
+ (0, job_storage_1.deleteJob)(args.id);
341
+ return { content: [{ type: "text", text: JSON.stringify({ deleted: job }, null, 2) }] };
342
+ }
343
+ case "get_settings":
344
+ return { content: [{ type: "text", text: JSON.stringify((0, defaults_1.getDefaults)(), null, 2) }] };
345
+ case "update_settings": {
346
+ const before = (0, defaults_1.getDefaults)();
347
+ const allowed = [
348
+ "thinkingLevel",
349
+ "diffStyle",
350
+ "dismissKeyboardOnSend",
351
+ "thinkingExpanded",
352
+ "readExpanded",
353
+ "editExpanded",
354
+ "toolCallsExpanded",
355
+ "messageStitching",
356
+ "reviewsEnabled",
357
+ "bypassAllPermissions",
358
+ "modelSlots",
359
+ ];
360
+ const safe = Object.fromEntries(Object.entries(args).filter(([k]) => allowed.includes(k)));
361
+ const after = (0, defaults_1.setDefaults)(safe);
362
+ return { content: [{ type: "text", text: JSON.stringify({ before, after }, null, 2) }] };
363
+ }
364
+ case "list_providers":
365
+ return { content: [{ type: "text", text: JSON.stringify((0, providers_1.getProviders)(), null, 2) }] };
366
+ case "add_provider": {
367
+ const provider = (0, providers_1.addProvider)({
368
+ name: args.name,
369
+ envVars: args.envVars,
370
+ models: [],
371
+ });
372
+ return { content: [{ type: "text", text: JSON.stringify({ created: provider }, null, 2) }] };
373
+ }
374
+ case "update_provider": {
375
+ const { id, ...rest } = args;
376
+ const before = (0, providers_1.getProviders)().find((p) => p.id === id);
377
+ if (!before)
378
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Provider not found: ${id}` }) }], isError: true };
379
+ const after = (0, providers_1.updateProvider)(id, rest);
380
+ return { content: [{ type: "text", text: JSON.stringify({ before, after }, null, 2) }] };
381
+ }
382
+ case "delete_provider": {
383
+ const provider = (0, providers_1.getProviders)().find((p) => p.id === args.id);
384
+ if (!provider)
385
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Provider not found: ${args.id}` }) }], isError: true };
386
+ (0, providers_1.deleteProvider)(args.id);
387
+ return { content: [{ type: "text", text: JSON.stringify({ deleted: provider }, null, 2) }] };
388
+ }
389
+ case "list_mcp_servers": {
390
+ const config = readClaudeConfig();
391
+ const entries = Object.entries(config.mcpServers ?? {}).map(([n, c]) => ({ name: n, ...c }));
392
+ return { content: [{ type: "text", text: JSON.stringify(entries, null, 2) }] };
393
+ }
394
+ case "get_mcp_server": {
395
+ const config = readClaudeConfig();
396
+ const entry = config.mcpServers?.[args.name];
397
+ if (!entry)
398
+ return { content: [{ type: "text", text: JSON.stringify({ error: `MCP server not found: ${args.name}` }) }], isError: true };
399
+ return { content: [{ type: "text", text: JSON.stringify({ name: args.name, ...entry }, null, 2) }] };
400
+ }
401
+ case "save_mcp_server": {
402
+ const config = readClaudeConfig();
403
+ const servers = config.mcpServers ?? {};
404
+ const before = servers[args.name] ? { ...servers[args.name] } : null;
405
+ servers[args.name] = {
406
+ command: args.command,
407
+ args: args.args,
408
+ env: args.env,
409
+ };
410
+ writeClaudeConfig({ ...config, mcpServers: servers });
411
+ return { content: [{ type: "text", text: JSON.stringify({ before, after: servers[args.name] }, null, 2) }] };
412
+ }
413
+ case "delete_mcp_server": {
414
+ const config = readClaudeConfig();
415
+ const servers = config.mcpServers ?? {};
416
+ if (!servers[args.name])
417
+ return { content: [{ type: "text", text: JSON.stringify({ error: `MCP server not found: ${args.name}` }) }], isError: true };
418
+ const deleted = servers[args.name];
419
+ delete servers[args.name];
420
+ writeClaudeConfig({ ...config, mcpServers: servers });
421
+ return { content: [{ type: "text", text: JSON.stringify({ deleted }, null, 2) }] };
422
+ }
423
+ case "get_notification_settings":
424
+ return { content: [{ type: "text", text: JSON.stringify((0, notification_settings_1.getNotificationSettings)(), null, 2) }] };
425
+ case "update_notification_settings": {
426
+ const before = (0, notification_settings_1.getNotificationSettings)();
427
+ const after = (0, notification_settings_1.updateNotificationSettings)(args);
428
+ return { content: [{ type: "text", text: JSON.stringify({ before, after }, null, 2) }] };
429
+ }
430
+ case "list_notification_providers": {
431
+ const settings = (0, notification_settings_1.getNotificationSettings)();
432
+ return { content: [{ type: "text", text: JSON.stringify(settings.providers, null, 2) }] };
433
+ }
434
+ case "add_notification_provider": {
435
+ const settings = (0, notification_settings_1.getNotificationSettings)();
436
+ const entry = {
437
+ id: (0, node_crypto_1.randomUUID)(),
438
+ type: args.type,
439
+ name: args.name,
440
+ enabled: args.enabled ?? true,
441
+ config: args.config,
442
+ filter: Array.isArray(args.filterPriorities) && args.filterPriorities.length > 0
443
+ ? { priorities: args.filterPriorities }
444
+ : undefined,
445
+ };
446
+ const after = (0, notification_settings_1.setNotificationSettings)({ ...settings, providers: [...settings.providers, entry] });
447
+ return { content: [{ type: "text", text: JSON.stringify({ created: entry, providers: after.providers }, null, 2) }] };
448
+ }
449
+ case "update_notification_provider": {
450
+ const settings = (0, notification_settings_1.getNotificationSettings)();
451
+ const idx = settings.providers.findIndex((p) => p.id === args.id);
452
+ if (idx === -1)
453
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Provider not found: ${args.id}` }) }], isError: true };
454
+ const before = settings.providers[idx];
455
+ const updated = {
456
+ ...before,
457
+ ...(args.name !== undefined ? { name: args.name } : {}),
458
+ ...(args.enabled !== undefined ? { enabled: args.enabled } : {}),
459
+ ...(args.config !== undefined ? { config: args.config } : {}),
460
+ ...(Array.isArray(args.filterPriorities)
461
+ ? {
462
+ filter: args.filterPriorities.length > 0
463
+ ? { ...before.filter, priorities: args.filterPriorities }
464
+ : before.filter?.sources?.length
465
+ ? { ...before.filter, priorities: undefined }
466
+ : undefined,
467
+ }
468
+ : {}),
469
+ };
470
+ const providers = [...settings.providers];
471
+ providers[idx] = updated;
472
+ const after = (0, notification_settings_1.setNotificationSettings)({ ...settings, providers });
473
+ return { content: [{ type: "text", text: JSON.stringify({ before, after: after.providers[idx] }, null, 2) }] };
474
+ }
475
+ case "delete_notification_provider": {
476
+ const settings = (0, notification_settings_1.getNotificationSettings)();
477
+ const provider = settings.providers.find((p) => p.id === args.id);
478
+ if (!provider)
479
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Provider not found: ${args.id}` }) }], isError: true };
480
+ const after = (0, notification_settings_1.setNotificationSettings)({ ...settings, providers: settings.providers.filter((p) => p.id !== args.id) });
481
+ return { content: [{ type: "text", text: JSON.stringify({ deleted: provider, providers: after.providers }, null, 2) }] };
482
+ }
483
+ case "run_job": {
484
+ const ids = Array.isArray(args.ids) ? args.ids : args.id ? [args.id] : [];
485
+ if (ids.length === 0) {
486
+ return { content: [{ type: "text", text: JSON.stringify({ error: "no job id provided" }) }], isError: true };
487
+ }
488
+ const scheduler = (0, singleton_1.getJobScheduler)();
489
+ if (!scheduler) {
490
+ return {
491
+ content: [{ type: "text", text: JSON.stringify({ results: ids.map((id) => ({ id, status: "scheduler not available" })) }) }],
492
+ };
493
+ }
494
+ const running = scheduler.getRunningJobs();
495
+ const jobs = (0, job_storage_1.loadJobs)();
496
+ const results = ids.map((id) => {
497
+ const job = jobs.find((j) => j.id === id);
498
+ if (!job)
499
+ return { id, status: "not_found" };
500
+ if (running.has(id))
501
+ return { id, name: job.name, status: "already_running" };
502
+ void scheduler.triggerJob(id).catch((err) => console.error("[cockpit-mcp] run_job", id, err));
503
+ return { id, name: job.name, status: "started" };
504
+ });
505
+ return { content: [{ type: "text", text: JSON.stringify({ results }, null, 2) }] };
506
+ }
507
+ case "stop_job": {
508
+ const jobId = args.id;
509
+ if (!jobId) {
510
+ return { content: [{ type: "text", text: JSON.stringify({ error: "no job id provided" }) }], isError: true };
511
+ }
512
+ const scheduler = (0, singleton_1.getJobScheduler)();
513
+ if (!scheduler) {
514
+ return { content: [{ type: "text", text: JSON.stringify({ error: "scheduler not available" }) }], isError: true };
515
+ }
516
+ try {
517
+ const run = scheduler.stopJob(jobId);
518
+ const jobs = (0, job_storage_1.loadJobs)();
519
+ const nameMap = new Map(jobs.map((j) => [j.id, j.name]));
520
+ return {
521
+ content: [
522
+ {
523
+ type: "text",
524
+ text: JSON.stringify({
525
+ jobId: run.jobId,
526
+ name: nameMap.get(run.jobId) ?? "unknown",
527
+ runId: run.id,
528
+ status: run.status,
529
+ startedAt: run.startedAt,
530
+ elapsedMs: run.durationMs ?? Date.now() - run.startedAt,
531
+ messageCount: run.messageCount,
532
+ toolCount: run.toolsUsed.length,
533
+ }, null, 2),
534
+ },
535
+ ],
536
+ };
537
+ }
538
+ catch (err) {
539
+ return {
540
+ content: [{ type: "text", text: JSON.stringify({ error: err instanceof Error ? err.message : String(err) }) }],
541
+ isError: true,
542
+ };
543
+ }
544
+ }
545
+ case "list_running_jobs": {
546
+ const scheduler = (0, singleton_1.getJobScheduler)();
547
+ if (!scheduler) {
548
+ return { content: [{ type: "text", text: JSON.stringify({ running: [], count: 0, note: "scheduler not available" }) }] };
549
+ }
550
+ const jobs = (0, job_storage_1.loadJobs)();
551
+ const nameMap = new Map(jobs.map((j) => [j.id, j.name]));
552
+ const running = Array.from(scheduler.getRunningJobs().values()).map((r) => ({
553
+ jobId: r.jobId,
554
+ name: nameMap.get(r.jobId) ?? "unknown",
555
+ runId: r.id,
556
+ sessionId: r.sessionId,
557
+ status: r.status,
558
+ startedAt: r.startedAt,
559
+ elapsedMs: Date.now() - r.startedAt,
560
+ messageCount: r.messageCount,
561
+ toolCount: r.toolsUsed.length,
562
+ }));
563
+ return { content: [{ type: "text", text: JSON.stringify({ running, count: running.length }, null, 2) }] };
564
+ }
565
+ default:
566
+ return { content: [{ type: "text", text: JSON.stringify({ error: `Unknown tool: ${name}` }) }], isError: true };
567
+ }
568
+ }
569
+ catch (err) {
570
+ return {
571
+ content: [{ type: "text", text: JSON.stringify({ error: err instanceof Error ? err.message : String(err) }) }],
572
+ isError: true,
573
+ };
574
+ }
575
+ }
576
+ class CockpitMcpServer {
577
+ httpServer = null;
578
+ port = 0;
579
+ async start(host = "127.0.0.1", port = 0) {
580
+ this.httpServer = (0, node_http_1.createServer)((req, res) => {
581
+ (async () => {
582
+ if (req.url !== "/mcp" || req.method !== "POST") {
583
+ res.writeHead(404, { "Content-Type": "application/json" });
584
+ res.end(JSON.stringify({ error: "not found" }));
585
+ return;
586
+ }
587
+ const authHeader = req.headers.authorization ?? "";
588
+ const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : "";
589
+ if (!(0, run_context_1.isValidToken)(token)) {
590
+ res.writeHead(401, { "Content-Type": "application/json" });
591
+ res.end(JSON.stringify({ error: "unauthorized" }));
592
+ return;
593
+ }
594
+ const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
595
+ const mcpServer = new index_js_1.Server({ name: "cockpit-config", version: "1.0.0" }, { capabilities: { tools: {} } });
596
+ mcpServer.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({ tools: TOOL_DEFINITIONS }));
597
+ mcpServer.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
598
+ const toolName = request.params.name;
599
+ const toolArgs = request.params.arguments ?? {};
600
+ return handleToolCall(toolName, toolArgs, token);
601
+ });
602
+ await mcpServer.connect(transport);
603
+ await transport.handleRequest(req, res);
604
+ })().catch((err) => {
605
+ console.error("[cockpit-mcp] request handler error:", err);
606
+ if (!res.writableEnded) {
607
+ res.writeHead(500, { "Content-Type": "application/json" });
608
+ res.end(JSON.stringify({ error: "internal error" }));
609
+ }
610
+ });
611
+ });
612
+ await new Promise((resolve, reject) => {
613
+ this.httpServer.once("error", reject);
614
+ this.httpServer.listen(port, host, () => {
615
+ const addr = this.httpServer.address();
616
+ if (addr && typeof addr === "object")
617
+ this.port = addr.port;
618
+ resolve();
619
+ });
620
+ });
621
+ }
622
+ getUrl(host = "127.0.0.1") {
623
+ return `http://${host}:${this.port}`;
624
+ }
625
+ async stop() {
626
+ if (!this.httpServer)
627
+ return;
628
+ await new Promise((resolve) => this.httpServer.close(() => resolve()));
629
+ this.httpServer = null;
630
+ }
631
+ }
632
+ exports.CockpitMcpServer = CockpitMcpServer;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAuthToken = registerAuthToken;
4
+ exports.registerRunContext = registerRunContext;
5
+ exports.isValidToken = isValidToken;
6
+ exports.lookupRunContext = lookupRunContext;
7
+ exports.clearToken = clearToken;
8
+ const tokens = new Map();
9
+ function registerAuthToken(token) {
10
+ tokens.set(token, null);
11
+ }
12
+ function registerRunContext(token, ctx) {
13
+ tokens.set(token, ctx);
14
+ }
15
+ function isValidToken(token) {
16
+ return tokens.has(token);
17
+ }
18
+ function lookupRunContext(token) {
19
+ return tokens.get(token) ?? null;
20
+ }
21
+ function clearToken(token) {
22
+ tokens.delete(token);
23
+ }