@euraika-labs/pan-ui 0.2.4 → 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 (366) hide show
  1. package/.next/standalone/node_modules/next/node_modules/postcss/package.json +0 -0
  2. package/.next/standalone/package.json +7 -2
  3. package/.next/standalone/server.js +1 -1
  4. package/.next/{standalone/.next/static/chunks/app/_not-found/page-9c90a6b39424f003.js → static/chunks/app/_not-found/page-c4591bba1afe868d.js} +1 -1
  5. package/.next/static/chunks/app/chat/page-49d2aa1477960093.js +1 -0
  6. package/.next/{standalone/.next/static/chunks/app/extensions/[id]/page-cca6df1771ec04d2.js → static/chunks/app/extensions/[id]/page-18e579a71a9d93c3.js} +1 -1
  7. package/.next/static/chunks/app/extensions/{page-c0fbb8efa9a3700c.js → page-82f358e2fcabc6a3.js} +1 -1
  8. package/.next/static/chunks/app/layout-f3c578dd4202f2f5.js +1 -0
  9. package/.next/static/chunks/app/login/page-a3820386479beb5e.js +1 -0
  10. package/.next/{standalone/.next/static/chunks/app/memory/page-0684ff3ce6888ae7.js → static/chunks/app/memory/page-a90ea51b004acc94.js} +1 -1
  11. package/.next/static/chunks/app/profiles/page-7b5924f80e882d7e.js +1 -0
  12. package/.next/{standalone/.next/static/chunks/app/settings/approvals/page-6843c585791e4db7.js → static/chunks/app/settings/approvals/page-1fd1b90371c02705.js} +1 -1
  13. package/.next/static/chunks/app/settings/artifacts/page-35ee6c14a4836aad.js +1 -0
  14. package/.next/static/chunks/app/settings/audit/page-a11b23ffa1e40949.js +1 -0
  15. package/.next/static/chunks/app/settings/health/page-9b7914bfd7bf665b.js +1 -0
  16. package/.next/static/chunks/app/settings/mcp-diagnostics/page-102367ef8b2cc105.js +1 -0
  17. package/.next/{standalone/.next/static/chunks/app/settings/page-8a40bdf895f43430.js → static/chunks/app/settings/page-5f9f8ba836ac9b7e.js} +1 -1
  18. package/.next/static/chunks/app/settings/runs/[id]/page-d0184e7e90f5867c.js +1 -0
  19. package/.next/{standalone/.next/static/chunks/app/settings/runs/page-cb4d1617e199c38e.js → static/chunks/app/settings/runs/page-312bdcd82b1f3a64.js} +1 -1
  20. package/.next/{standalone/.next/static/chunks/app/settings/telemetry/page-c0446baefa5496cb.js → static/chunks/app/settings/telemetry/page-e61a1efd390b87a4.js} +1 -1
  21. package/.next/static/chunks/app/skills/[id]/page-9dccad9f9e4b356e.js +1 -0
  22. package/.next/static/chunks/app/skills/page-d480e9f5081fd9b6.js +1 -0
  23. package/.next/{standalone/.next/static/chunks/main-app-a9e2c007d433eaf9.js → static/chunks/main-app-f0e3f2828aa879c4.js} +1 -1
  24. package/.next/static/css/ecc1661163318581.css +3 -0
  25. package/README.md +161 -143
  26. package/bin/pan-ui.mjs +0 -0
  27. package/package.json +6 -1
  28. package/.env.example +0 -30
  29. package/.next/standalone/.next/BUILD_ID +0 -1
  30. package/.next/standalone/.next/app-build-manifest.json +0 -508
  31. package/.next/standalone/.next/app-path-routes-manifest.json +0 -67
  32. package/.next/standalone/.next/build-manifest.json +0 -33
  33. package/.next/standalone/.next/package.json +0 -1
  34. package/.next/standalone/.next/prerender-manifest.json +0 -119
  35. package/.next/standalone/.next/react-loadable-manifest.json +0 -1
  36. package/.next/standalone/.next/required-server-files.json +0 -321
  37. package/.next/standalone/.next/routes-manifest.json +0 -295
  38. package/.next/standalone/.next/server/app/_not-found/page.js +0 -2
  39. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +0 -1
  40. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  41. package/.next/standalone/.next/server/app/_not-found.html +0 -1
  42. package/.next/standalone/.next/server/app/_not-found.meta +0 -8
  43. package/.next/standalone/.next/server/app/_not-found.rsc +0 -18
  44. package/.next/standalone/.next/server/app/api/audit/route.js +0 -36
  45. package/.next/standalone/.next/server/app/api/audit/route.js.nft.json +0 -1
  46. package/.next/standalone/.next/server/app/api/audit/route_client-reference-manifest.js +0 -1
  47. package/.next/standalone/.next/server/app/api/auth/login/route.js +0 -1
  48. package/.next/standalone/.next/server/app/api/auth/login/route.js.nft.json +0 -1
  49. package/.next/standalone/.next/server/app/api/auth/login/route_client-reference-manifest.js +0 -1
  50. package/.next/standalone/.next/server/app/api/auth/logout/route.js +0 -1
  51. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
  52. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +0 -1
  53. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route.js +0 -1
  54. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route.js.nft.json +0 -1
  55. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route_client-reference-manifest.js +0 -1
  56. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route.js +0 -1
  57. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route.js.nft.json +0 -1
  58. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +0 -1
  59. package/.next/standalone/.next/server/app/api/chat/sessions/route.js +0 -1
  60. package/.next/standalone/.next/server/app/api/chat/sessions/route.js.nft.json +0 -1
  61. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +0 -1
  62. package/.next/standalone/.next/server/app/api/chat/stream/route.js +0 -170
  63. package/.next/standalone/.next/server/app/api/chat/stream/route.js.nft.json +0 -1
  64. package/.next/standalone/.next/server/app/api/chat/stream/route_client-reference-manifest.js +0 -1
  65. package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route.js +0 -1
  66. package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route.js.nft.json +0 -1
  67. package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route_client-reference-manifest.js +0 -1
  68. package/.next/standalone/.next/server/app/api/extensions/[id]/route.js +0 -1
  69. package/.next/standalone/.next/server/app/api/extensions/[id]/route.js.nft.json +0 -1
  70. package/.next/standalone/.next/server/app/api/extensions/[id]/route_client-reference-manifest.js +0 -1
  71. package/.next/standalone/.next/server/app/api/extensions/[id]/test/route.js +0 -1
  72. package/.next/standalone/.next/server/app/api/extensions/[id]/test/route.js.nft.json +0 -1
  73. package/.next/standalone/.next/server/app/api/extensions/[id]/test/route_client-reference-manifest.js +0 -1
  74. package/.next/standalone/.next/server/app/api/extensions/mcp/route.js +0 -11
  75. package/.next/standalone/.next/server/app/api/extensions/mcp/route.js.nft.json +0 -1
  76. package/.next/standalone/.next/server/app/api/extensions/mcp/route_client-reference-manifest.js +0 -1
  77. package/.next/standalone/.next/server/app/api/extensions/route.js +0 -1
  78. package/.next/standalone/.next/server/app/api/extensions/route.js.nft.json +0 -1
  79. package/.next/standalone/.next/server/app/api/extensions/route_client-reference-manifest.js +0 -1
  80. package/.next/standalone/.next/server/app/api/memory/agent/route.js +0 -36
  81. package/.next/standalone/.next/server/app/api/memory/agent/route.js.nft.json +0 -1
  82. package/.next/standalone/.next/server/app/api/memory/agent/route_client-reference-manifest.js +0 -1
  83. package/.next/standalone/.next/server/app/api/memory/context-inspector/route.js +0 -1
  84. package/.next/standalone/.next/server/app/api/memory/context-inspector/route.js.nft.json +0 -1
  85. package/.next/standalone/.next/server/app/api/memory/context-inspector/route_client-reference-manifest.js +0 -1
  86. package/.next/standalone/.next/server/app/api/memory/session-search/route.js +0 -1
  87. package/.next/standalone/.next/server/app/api/memory/session-search/route.js.nft.json +0 -1
  88. package/.next/standalone/.next/server/app/api/memory/session-search/route_client-reference-manifest.js +0 -1
  89. package/.next/standalone/.next/server/app/api/memory/user/route.js +0 -36
  90. package/.next/standalone/.next/server/app/api/memory/user/route.js.nft.json +0 -1
  91. package/.next/standalone/.next/server/app/api/memory/user/route_client-reference-manifest.js +0 -1
  92. package/.next/standalone/.next/server/app/api/profiles/[id]/config/route.js +0 -92
  93. package/.next/standalone/.next/server/app/api/profiles/[id]/config/route.js.nft.json +0 -1
  94. package/.next/standalone/.next/server/app/api/profiles/[id]/config/route_client-reference-manifest.js +0 -1
  95. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js +0 -31
  96. package/.next/standalone/.next/server/app/api/profiles/[id]/route.js.nft.json +0 -1
  97. package/.next/standalone/.next/server/app/api/profiles/[id]/route_client-reference-manifest.js +0 -1
  98. package/.next/standalone/.next/server/app/api/profiles/route.js +0 -31
  99. package/.next/standalone/.next/server/app/api/profiles/route.js.nft.json +0 -1
  100. package/.next/standalone/.next/server/app/api/profiles/route_client-reference-manifest.js +0 -1
  101. package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route.js +0 -133
  102. package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route.js.nft.json +0 -1
  103. package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route_client-reference-manifest.js +0 -1
  104. package/.next/standalone/.next/server/app/api/runtime/approvals/route.js +0 -133
  105. package/.next/standalone/.next/server/app/api/runtime/approvals/route.js.nft.json +0 -1
  106. package/.next/standalone/.next/server/app/api/runtime/approvals/route_client-reference-manifest.js +0 -1
  107. package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route.js +0 -133
  108. package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route.js.nft.json +0 -1
  109. package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route_client-reference-manifest.js +0 -1
  110. package/.next/standalone/.next/server/app/api/runtime/artifacts/route.js +0 -133
  111. package/.next/standalone/.next/server/app/api/runtime/artifacts/route.js.nft.json +0 -1
  112. package/.next/standalone/.next/server/app/api/runtime/artifacts/route_client-reference-manifest.js +0 -1
  113. package/.next/standalone/.next/server/app/api/runtime/export/route.js +0 -143
  114. package/.next/standalone/.next/server/app/api/runtime/export/route.js.nft.json +0 -1
  115. package/.next/standalone/.next/server/app/api/runtime/export/route_client-reference-manifest.js +0 -1
  116. package/.next/standalone/.next/server/app/api/runtime/health/route.js +0 -18
  117. package/.next/standalone/.next/server/app/api/runtime/health/route.js.nft.json +0 -1
  118. package/.next/standalone/.next/server/app/api/runtime/health/route_client-reference-manifest.js +0 -1
  119. package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route.js +0 -133
  120. package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route.js.nft.json +0 -1
  121. package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route_client-reference-manifest.js +0 -1
  122. package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route.js +0 -51
  123. package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route.js.nft.json +0 -1
  124. package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route_client-reference-manifest.js +0 -1
  125. package/.next/standalone/.next/server/app/api/runtime/runs/route.js +0 -51
  126. package/.next/standalone/.next/server/app/api/runtime/runs/route.js.nft.json +0 -1
  127. package/.next/standalone/.next/server/app/api/runtime/runs/route_client-reference-manifest.js +0 -1
  128. package/.next/standalone/.next/server/app/api/runtime/status/route.js +0 -18
  129. package/.next/standalone/.next/server/app/api/runtime/status/route.js.nft.json +0 -1
  130. package/.next/standalone/.next/server/app/api/runtime/status/route_client-reference-manifest.js +0 -1
  131. package/.next/standalone/.next/server/app/api/runtime/telemetry/route.js +0 -133
  132. package/.next/standalone/.next/server/app/api/runtime/telemetry/route.js.nft.json +0 -1
  133. package/.next/standalone/.next/server/app/api/runtime/telemetry/route_client-reference-manifest.js +0 -1
  134. package/.next/standalone/.next/server/app/api/runtime/timeline/route.js +0 -133
  135. package/.next/standalone/.next/server/app/api/runtime/timeline/route.js.nft.json +0 -1
  136. package/.next/standalone/.next/server/app/api/runtime/timeline/route_client-reference-manifest.js +0 -1
  137. package/.next/standalone/.next/server/app/api/skills/[id]/disable/route.js +0 -1
  138. package/.next/standalone/.next/server/app/api/skills/[id]/disable/route.js.nft.json +0 -1
  139. package/.next/standalone/.next/server/app/api/skills/[id]/disable/route_client-reference-manifest.js +0 -1
  140. package/.next/standalone/.next/server/app/api/skills/[id]/enable/route.js +0 -21
  141. package/.next/standalone/.next/server/app/api/skills/[id]/enable/route.js.nft.json +0 -1
  142. package/.next/standalone/.next/server/app/api/skills/[id]/enable/route_client-reference-manifest.js +0 -1
  143. package/.next/standalone/.next/server/app/api/skills/[id]/files/route.js +0 -21
  144. package/.next/standalone/.next/server/app/api/skills/[id]/files/route.js.nft.json +0 -1
  145. package/.next/standalone/.next/server/app/api/skills/[id]/files/route_client-reference-manifest.js +0 -1
  146. package/.next/standalone/.next/server/app/api/skills/[id]/install/route.js +0 -56
  147. package/.next/standalone/.next/server/app/api/skills/[id]/install/route.js.nft.json +0 -1
  148. package/.next/standalone/.next/server/app/api/skills/[id]/install/route_client-reference-manifest.js +0 -1
  149. package/.next/standalone/.next/server/app/api/skills/[id]/load/route.js +0 -17
  150. package/.next/standalone/.next/server/app/api/skills/[id]/load/route.js.nft.json +0 -1
  151. package/.next/standalone/.next/server/app/api/skills/[id]/load/route_client-reference-manifest.js +0 -1
  152. package/.next/standalone/.next/server/app/api/skills/[id]/route.js +0 -21
  153. package/.next/standalone/.next/server/app/api/skills/[id]/route.js.nft.json +0 -1
  154. package/.next/standalone/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +0 -1
  155. package/.next/standalone/.next/server/app/api/skills/catalog/route.js +0 -1
  156. package/.next/standalone/.next/server/app/api/skills/catalog/route.js.nft.json +0 -1
  157. package/.next/standalone/.next/server/app/api/skills/catalog/route_client-reference-manifest.js +0 -1
  158. package/.next/standalone/.next/server/app/api/skills/categories/route.js +0 -21
  159. package/.next/standalone/.next/server/app/api/skills/categories/route.js.nft.json +0 -1
  160. package/.next/standalone/.next/server/app/api/skills/categories/route_client-reference-manifest.js +0 -1
  161. package/.next/standalone/.next/server/app/api/skills/hub/install/route.js +0 -1
  162. package/.next/standalone/.next/server/app/api/skills/hub/install/route.js.nft.json +0 -1
  163. package/.next/standalone/.next/server/app/api/skills/hub/install/route_client-reference-manifest.js +0 -1
  164. package/.next/standalone/.next/server/app/api/skills/hub/route.js +0 -21
  165. package/.next/standalone/.next/server/app/api/skills/hub/route.js.nft.json +0 -1
  166. package/.next/standalone/.next/server/app/api/skills/hub/route_client-reference-manifest.js +0 -1
  167. package/.next/standalone/.next/server/app/api/skills/route.js +0 -21
  168. package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +0 -1
  169. package/.next/standalone/.next/server/app/api/skills/route_client-reference-manifest.js +0 -1
  170. package/.next/standalone/.next/server/app/api/telemetry/route.js +0 -133
  171. package/.next/standalone/.next/server/app/api/telemetry/route.js.nft.json +0 -1
  172. package/.next/standalone/.next/server/app/api/telemetry/route_client-reference-manifest.js +0 -1
  173. package/.next/standalone/.next/server/app/api/uploads/route.js +0 -36
  174. package/.next/standalone/.next/server/app/api/uploads/route.js.nft.json +0 -1
  175. package/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +0 -1
  176. package/.next/standalone/.next/server/app/chat/page.js +0 -4
  177. package/.next/standalone/.next/server/app/chat/page.js.nft.json +0 -1
  178. package/.next/standalone/.next/server/app/chat/page_client-reference-manifest.js +0 -1
  179. package/.next/standalone/.next/server/app/extensions/[id]/page.js +0 -2
  180. package/.next/standalone/.next/server/app/extensions/[id]/page.js.nft.json +0 -1
  181. package/.next/standalone/.next/server/app/extensions/[id]/page_client-reference-manifest.js +0 -1
  182. package/.next/standalone/.next/server/app/extensions/page.js +0 -2
  183. package/.next/standalone/.next/server/app/extensions/page.js.nft.json +0 -1
  184. package/.next/standalone/.next/server/app/extensions/page_client-reference-manifest.js +0 -1
  185. package/.next/standalone/.next/server/app/favicon.ico/route.js +0 -1
  186. package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  187. package/.next/standalone/.next/server/app/favicon.ico.body +0 -0
  188. package/.next/standalone/.next/server/app/favicon.ico.meta +0 -1
  189. package/.next/standalone/.next/server/app/icon.svg/route.js +0 -1
  190. package/.next/standalone/.next/server/app/icon.svg/route.js.nft.json +0 -1
  191. package/.next/standalone/.next/server/app/icon.svg.body +0 -10
  192. package/.next/standalone/.next/server/app/icon.svg.meta +0 -1
  193. package/.next/standalone/.next/server/app/index.html +0 -1
  194. package/.next/standalone/.next/server/app/index.meta +0 -9
  195. package/.next/standalone/.next/server/app/index.rsc +0 -19
  196. package/.next/standalone/.next/server/app/login/page.js +0 -2
  197. package/.next/standalone/.next/server/app/login/page.js.nft.json +0 -1
  198. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +0 -1
  199. package/.next/standalone/.next/server/app/memory/page.js +0 -2
  200. package/.next/standalone/.next/server/app/memory/page.js.nft.json +0 -1
  201. package/.next/standalone/.next/server/app/memory/page_client-reference-manifest.js +0 -1
  202. package/.next/standalone/.next/server/app/page.js +0 -2
  203. package/.next/standalone/.next/server/app/page.js.nft.json +0 -1
  204. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +0 -1
  205. package/.next/standalone/.next/server/app/profiles/page.js +0 -2
  206. package/.next/standalone/.next/server/app/profiles/page.js.nft.json +0 -1
  207. package/.next/standalone/.next/server/app/profiles/page_client-reference-manifest.js +0 -1
  208. package/.next/standalone/.next/server/app/settings/approvals/page.js +0 -2
  209. package/.next/standalone/.next/server/app/settings/approvals/page.js.nft.json +0 -1
  210. package/.next/standalone/.next/server/app/settings/approvals/page_client-reference-manifest.js +0 -1
  211. package/.next/standalone/.next/server/app/settings/artifacts/page.js +0 -2
  212. package/.next/standalone/.next/server/app/settings/artifacts/page.js.nft.json +0 -1
  213. package/.next/standalone/.next/server/app/settings/artifacts/page_client-reference-manifest.js +0 -1
  214. package/.next/standalone/.next/server/app/settings/audit/page.js +0 -2
  215. package/.next/standalone/.next/server/app/settings/audit/page.js.nft.json +0 -1
  216. package/.next/standalone/.next/server/app/settings/audit/page_client-reference-manifest.js +0 -1
  217. package/.next/standalone/.next/server/app/settings/health/page.js +0 -2
  218. package/.next/standalone/.next/server/app/settings/health/page.js.nft.json +0 -1
  219. package/.next/standalone/.next/server/app/settings/health/page_client-reference-manifest.js +0 -1
  220. package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page.js +0 -2
  221. package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page.js.nft.json +0 -1
  222. package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page_client-reference-manifest.js +0 -1
  223. package/.next/standalone/.next/server/app/settings/page.js +0 -2
  224. package/.next/standalone/.next/server/app/settings/page.js.nft.json +0 -1
  225. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +0 -1
  226. package/.next/standalone/.next/server/app/settings/runs/[id]/page.js +0 -2
  227. package/.next/standalone/.next/server/app/settings/runs/[id]/page.js.nft.json +0 -1
  228. package/.next/standalone/.next/server/app/settings/runs/[id]/page_client-reference-manifest.js +0 -1
  229. package/.next/standalone/.next/server/app/settings/runs/page.js +0 -2
  230. package/.next/standalone/.next/server/app/settings/runs/page.js.nft.json +0 -1
  231. package/.next/standalone/.next/server/app/settings/runs/page_client-reference-manifest.js +0 -1
  232. package/.next/standalone/.next/server/app/settings/telemetry/page.js +0 -2
  233. package/.next/standalone/.next/server/app/settings/telemetry/page.js.nft.json +0 -1
  234. package/.next/standalone/.next/server/app/settings/telemetry/page_client-reference-manifest.js +0 -1
  235. package/.next/standalone/.next/server/app/skills/[id]/page.js +0 -2
  236. package/.next/standalone/.next/server/app/skills/[id]/page.js.nft.json +0 -1
  237. package/.next/standalone/.next/server/app/skills/[id]/page_client-reference-manifest.js +0 -1
  238. package/.next/standalone/.next/server/app/skills/page.js +0 -2
  239. package/.next/standalone/.next/server/app/skills/page.js.nft.json +0 -1
  240. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +0 -1
  241. package/.next/standalone/.next/server/app-paths-manifest.json +0 -67
  242. package/.next/standalone/.next/server/chunks/1331.js +0 -22
  243. package/.next/standalone/.next/server/chunks/1692.js +0 -1
  244. package/.next/standalone/.next/server/chunks/2043.js +0 -1
  245. package/.next/standalone/.next/server/chunks/4337.js +0 -143
  246. package/.next/standalone/.next/server/chunks/4561.js +0 -1
  247. package/.next/standalone/.next/server/chunks/4689.js +0 -25
  248. package/.next/standalone/.next/server/chunks/5611.js +0 -6
  249. package/.next/standalone/.next/server/chunks/6111.js +0 -1
  250. package/.next/standalone/.next/server/chunks/6143.js +0 -9
  251. package/.next/standalone/.next/server/chunks/6516.js +0 -143
  252. package/.next/standalone/.next/server/chunks/6802.js +0 -1
  253. package/.next/standalone/.next/server/chunks/9546.js +0 -1
  254. package/.next/standalone/.next/server/functions-config-manifest.json +0 -4
  255. package/.next/standalone/.next/server/middleware-build-manifest.js +0 -1
  256. package/.next/standalone/.next/server/middleware-manifest.json +0 -6
  257. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +0 -1
  258. package/.next/standalone/.next/server/next-font-manifest.js +0 -1
  259. package/.next/standalone/.next/server/next-font-manifest.json +0 -1
  260. package/.next/standalone/.next/server/pages/404.html +0 -1
  261. package/.next/standalone/.next/server/pages/500.html +0 -1
  262. package/.next/standalone/.next/server/pages/_app.js +0 -1
  263. package/.next/standalone/.next/server/pages/_app.js.nft.json +0 -1
  264. package/.next/standalone/.next/server/pages/_document.js +0 -1
  265. package/.next/standalone/.next/server/pages/_document.js.nft.json +0 -1
  266. package/.next/standalone/.next/server/pages/_error.js +0 -19
  267. package/.next/standalone/.next/server/pages/_error.js.nft.json +0 -1
  268. package/.next/standalone/.next/server/pages-manifest.json +0 -6
  269. package/.next/standalone/.next/server/server-reference-manifest.js +0 -1
  270. package/.next/standalone/.next/server/server-reference-manifest.json +0 -1
  271. package/.next/standalone/.next/server/webpack-runtime.js +0 -1
  272. package/.next/standalone/.next/static/chunks/1255-aadf393aa3a56bfa.js +0 -1
  273. package/.next/standalone/.next/static/chunks/1309-d826505bfad78fd1.js +0 -1
  274. package/.next/standalone/.next/static/chunks/2231-e0d8768bfce5fe57.js +0 -1
  275. package/.next/standalone/.next/static/chunks/4879-36321f505e9ce82a.js +0 -1
  276. package/.next/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
  277. package/.next/standalone/.next/static/chunks/5449-aba2dafba76d4508.js +0 -1
  278. package/.next/standalone/.next/static/chunks/9657-3ff4bf56070f324f.js +0 -1
  279. package/.next/standalone/.next/static/chunks/app/api/audit/route-bb3f5b9060cdc631.js +0 -1
  280. package/.next/standalone/.next/static/chunks/app/api/auth/login/route-bb3f5b9060cdc631.js +0 -1
  281. package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-bb3f5b9060cdc631.js +0 -1
  282. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/fork/route-bb3f5b9060cdc631.js +0 -1
  283. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-bb3f5b9060cdc631.js +0 -1
  284. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-bb3f5b9060cdc631.js +0 -1
  285. package/.next/standalone/.next/static/chunks/app/api/chat/stream/route-bb3f5b9060cdc631.js +0 -1
  286. package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/capabilities/[capabilityId]/route-bb3f5b9060cdc631.js +0 -1
  287. package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/route-bb3f5b9060cdc631.js +0 -1
  288. package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/test/route-bb3f5b9060cdc631.js +0 -1
  289. package/.next/standalone/.next/static/chunks/app/api/extensions/mcp/route-bb3f5b9060cdc631.js +0 -1
  290. package/.next/standalone/.next/static/chunks/app/api/extensions/route-bb3f5b9060cdc631.js +0 -1
  291. package/.next/standalone/.next/static/chunks/app/api/memory/agent/route-bb3f5b9060cdc631.js +0 -1
  292. package/.next/standalone/.next/static/chunks/app/api/memory/context-inspector/route-bb3f5b9060cdc631.js +0 -1
  293. package/.next/standalone/.next/static/chunks/app/api/memory/session-search/route-bb3f5b9060cdc631.js +0 -1
  294. package/.next/standalone/.next/static/chunks/app/api/memory/user/route-bb3f5b9060cdc631.js +0 -1
  295. package/.next/standalone/.next/static/chunks/app/api/profiles/[id]/config/route-bb3f5b9060cdc631.js +0 -1
  296. package/.next/standalone/.next/static/chunks/app/api/profiles/[id]/route-bb3f5b9060cdc631.js +0 -1
  297. package/.next/standalone/.next/static/chunks/app/api/profiles/route-bb3f5b9060cdc631.js +0 -1
  298. package/.next/standalone/.next/static/chunks/app/api/runtime/approvals/[toolCallId]/route-bb3f5b9060cdc631.js +0 -1
  299. package/.next/standalone/.next/static/chunks/app/api/runtime/approvals/route-bb3f5b9060cdc631.js +0 -1
  300. package/.next/standalone/.next/static/chunks/app/api/runtime/artifacts/download/route-bb3f5b9060cdc631.js +0 -1
  301. package/.next/standalone/.next/static/chunks/app/api/runtime/artifacts/route-bb3f5b9060cdc631.js +0 -1
  302. package/.next/standalone/.next/static/chunks/app/api/runtime/export/route-bb3f5b9060cdc631.js +0 -1
  303. package/.next/standalone/.next/static/chunks/app/api/runtime/health/route-bb3f5b9060cdc631.js +0 -1
  304. package/.next/standalone/.next/static/chunks/app/api/runtime/mcp-probes/route-bb3f5b9060cdc631.js +0 -1
  305. package/.next/standalone/.next/static/chunks/app/api/runtime/runs/[id]/route-bb3f5b9060cdc631.js +0 -1
  306. package/.next/standalone/.next/static/chunks/app/api/runtime/runs/route-bb3f5b9060cdc631.js +0 -1
  307. package/.next/standalone/.next/static/chunks/app/api/runtime/status/route-bb3f5b9060cdc631.js +0 -1
  308. package/.next/standalone/.next/static/chunks/app/api/runtime/telemetry/route-bb3f5b9060cdc631.js +0 -1
  309. package/.next/standalone/.next/static/chunks/app/api/runtime/timeline/route-bb3f5b9060cdc631.js +0 -1
  310. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/disable/route-bb3f5b9060cdc631.js +0 -1
  311. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/enable/route-bb3f5b9060cdc631.js +0 -1
  312. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/files/route-bb3f5b9060cdc631.js +0 -1
  313. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/install/route-bb3f5b9060cdc631.js +0 -1
  314. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/load/route-bb3f5b9060cdc631.js +0 -1
  315. package/.next/standalone/.next/static/chunks/app/api/skills/[id]/route-bb3f5b9060cdc631.js +0 -1
  316. package/.next/standalone/.next/static/chunks/app/api/skills/catalog/route-bb3f5b9060cdc631.js +0 -1
  317. package/.next/standalone/.next/static/chunks/app/api/skills/categories/route-bb3f5b9060cdc631.js +0 -1
  318. package/.next/standalone/.next/static/chunks/app/api/skills/hub/install/route-bb3f5b9060cdc631.js +0 -1
  319. package/.next/standalone/.next/static/chunks/app/api/skills/hub/route-bb3f5b9060cdc631.js +0 -1
  320. package/.next/standalone/.next/static/chunks/app/api/skills/route-bb3f5b9060cdc631.js +0 -1
  321. package/.next/standalone/.next/static/chunks/app/api/telemetry/route-bb3f5b9060cdc631.js +0 -1
  322. package/.next/standalone/.next/static/chunks/app/api/uploads/route-bb3f5b9060cdc631.js +0 -1
  323. package/.next/standalone/.next/static/chunks/app/chat/page-117a5b54aee7eae4.js +0 -1
  324. package/.next/standalone/.next/static/chunks/app/extensions/page-c0fbb8efa9a3700c.js +0 -1
  325. package/.next/standalone/.next/static/chunks/app/layout-0bc970399be389b5.js +0 -1
  326. package/.next/standalone/.next/static/chunks/app/login/page-984e33272681e1e0.js +0 -1
  327. package/.next/standalone/.next/static/chunks/app/page-bb3f5b9060cdc631.js +0 -1
  328. package/.next/standalone/.next/static/chunks/app/profiles/page-46a0ad35feda9741.js +0 -1
  329. package/.next/standalone/.next/static/chunks/app/settings/artifacts/page-d3fddd43ac1243af.js +0 -1
  330. package/.next/standalone/.next/static/chunks/app/settings/audit/page-378bee43dd7c4903.js +0 -1
  331. package/.next/standalone/.next/static/chunks/app/settings/health/page-d34eadc11bc90af5.js +0 -1
  332. package/.next/standalone/.next/static/chunks/app/settings/mcp-diagnostics/page-3778d2842d5bdd79.js +0 -1
  333. package/.next/standalone/.next/static/chunks/app/settings/runs/[id]/page-7837ec57d531ef2b.js +0 -1
  334. package/.next/standalone/.next/static/chunks/app/skills/[id]/page-88bc62488ddf6c10.js +0 -1
  335. package/.next/standalone/.next/static/chunks/app/skills/page-e47c6a5f9559edc1.js +0 -1
  336. package/.next/standalone/.next/static/chunks/framework-f31701c9d93f12a4.js +0 -1
  337. package/.next/standalone/.next/static/chunks/main-1ac9e0711a0eb944.js +0 -1
  338. package/.next/standalone/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +0 -1
  339. package/.next/standalone/.next/static/chunks/pages/_error-94812ad32cad7365.js +0 -1
  340. package/.next/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  341. package/.next/standalone/.next/static/chunks/webpack-0100acb42ec0d4c7.js +0 -1
  342. package/.next/standalone/.next/static/css/f5a43afa8024b892.css +0 -3
  343. package/.next/static/Pqhqpl3ZPqKI0qfvpIPeN/_buildManifest.js +0 -1
  344. package/.next/static/Pqhqpl3ZPqKI0qfvpIPeN/_ssgManifest.js +0 -1
  345. package/.next/static/chunks/app/_not-found/page-9c90a6b39424f003.js +0 -1
  346. package/.next/static/chunks/app/chat/page-117a5b54aee7eae4.js +0 -1
  347. package/.next/static/chunks/app/extensions/[id]/page-cca6df1771ec04d2.js +0 -1
  348. package/.next/static/chunks/app/layout-0bc970399be389b5.js +0 -1
  349. package/.next/static/chunks/app/login/page-984e33272681e1e0.js +0 -1
  350. package/.next/static/chunks/app/memory/page-0684ff3ce6888ae7.js +0 -1
  351. package/.next/static/chunks/app/profiles/page-46a0ad35feda9741.js +0 -1
  352. package/.next/static/chunks/app/settings/approvals/page-6843c585791e4db7.js +0 -1
  353. package/.next/static/chunks/app/settings/artifacts/page-d3fddd43ac1243af.js +0 -1
  354. package/.next/static/chunks/app/settings/audit/page-378bee43dd7c4903.js +0 -1
  355. package/.next/static/chunks/app/settings/health/page-d34eadc11bc90af5.js +0 -1
  356. package/.next/static/chunks/app/settings/mcp-diagnostics/page-3778d2842d5bdd79.js +0 -1
  357. package/.next/static/chunks/app/settings/page-8a40bdf895f43430.js +0 -1
  358. package/.next/static/chunks/app/settings/runs/[id]/page-7837ec57d531ef2b.js +0 -1
  359. package/.next/static/chunks/app/settings/runs/page-cb4d1617e199c38e.js +0 -1
  360. package/.next/static/chunks/app/settings/telemetry/page-c0446baefa5496cb.js +0 -1
  361. package/.next/static/chunks/app/skills/[id]/page-88bc62488ddf6c10.js +0 -1
  362. package/.next/static/chunks/app/skills/page-e47c6a5f9559edc1.js +0 -1
  363. package/.next/static/chunks/main-app-a9e2c007d433eaf9.js +0 -1
  364. package/.next/static/css/f5a43afa8024b892.css +0 -3
  365. /package/.next/{standalone/.next/static/Pqhqpl3ZPqKI0qfvpIPeN → static/GRY0Lg42m80lHYHfaVVa0}/_buildManifest.js +0 -0
  366. /package/.next/{standalone/.next/static/Pqhqpl3ZPqKI0qfvpIPeN → static/GRY0Lg42m80lHYHfaVVa0}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -1,211 +1,229 @@
1
- # Pan by Euraika
1
+ <p align="center">
2
+ <img src="docs/assets/pan-logo.svg" alt="Pan by Euraika" width="120" />
3
+ </p>
2
4
 
3
- [![CI](https://github.com/Euraika-Labs/pan-ui/actions/workflows/ci.yml/badge.svg)](https://github.com/Euraika-Labs/pan-ui/actions/workflows/ci.yml)
4
- [![CodeQL](https://github.com/Euraika-Labs/pan-ui/actions/workflows/codeql.yml/badge.svg)](https://github.com/Euraika-Labs/pan-ui/actions/workflows/codeql.yml)
5
- [![npm](https://img.shields.io/npm/v/@euraika-labs/pan-ui)](https://www.npmjs.com/package/@euraika-labs/pan-ui)
6
- [![Release](https://img.shields.io/github/v/release/Euraika-Labs/pan-ui?display_name=tag)](https://github.com/Euraika-Labs/pan-ui/releases)
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
5
+ <h1 align="center">Pan by Euraika</h1>
8
6
 
9
- A self-hosted web interface for [Hermes Agent](https://github.com/NousResearch/hermes-agent) — the AI agent by Nous Research. Chat with your agent, manage skills from the skills.sh marketplace, control extensions and MCP integrations, inspect memory, and operate profiles — all from a single dashboard with live runtime awareness.
7
+ <p align="center">
8
+ <strong>Beautiful WebUI for <a href="https://github.com/NousResearch/hermes-agent">Hermes Agent</a></strong>
9
+ </p>
10
10
 
11
- ![Pan chat with runtime tools](docs/assets/screenshots/chat-runtime.png)
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/@euraika-labs/pan-ui"><img src="https://img.shields.io/npm/v/@euraika-labs/pan-ui" alt="npm" /></a>
13
+ <a href="https://github.com/Euraika-Labs/pan-ui/actions/workflows/ci.yml"><img src="https://github.com/Euraika-Labs/pan-ui/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
14
+ <a href="https://github.com/Euraika-Labs/pan-ui/actions/workflows/codeql.yml"><img src="https://github.com/Euraika-Labs/pan-ui/actions/workflows/codeql.yml/badge.svg" alt="CodeQL" /></a>
15
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
16
+ </p>
12
17
 
13
- ## Why Pan
18
+ <p align="center">
19
+ <a href="#install">Install</a> •
20
+ <a href="#features">Features</a> •
21
+ <a href="#screenshots">Screenshots</a> •
22
+ <a href="#configuration">Configuration</a> •
23
+ <a href="#development">Development</a> •
24
+ <a href="CHANGELOG.md">Changelog</a>
25
+ </p>
14
26
 
15
- Pan is not a generic chat wrapper. It exposes the full operational surface of a running Hermes Agent instance:
27
+ ---
16
28
 
17
- - **Chat with streaming** SSE-based streaming connected to a real Hermes runtime, with tool timelines, approval cards, and artifact rendering
18
- - **Skills marketplace** — Browse 112+ installed skills across 27 categories, discover and install 268+ more from [skills.sh](https://skills.sh) with one click
19
- - **MCP integrations** — View installed MCP servers, their tools, health status, and diagnostics
20
- - **Persistent memory** — Inspect and edit both global (shared) and profile-scoped user/agent memory, with proper `§`-separated entry parsing
21
- - **Profile isolation** — Each profile is a full workspace boundary with its own sessions, skills, memory, API keys, and policy presets
22
- - **Runtime operations** — Approvals, run history, audit trails, telemetry, runtime health, and JSON/CSV exports
29
+ Pan is a self-hosted web dashboard for [Hermes Agent](https://github.com/NousResearch/hermes-agent). Chat with your agent, manage skills from [skills.sh](https://skills.sh), control MCP integrations, inspect memory, and operate profiles — all from one place.
23
30
 
24
- ## Screenshots
31
+ ![Pan chat with runtime tools](docs/assets/screenshots/chat-runtime.png)
25
32
 
26
- ### Login
33
+ ## Install
27
34
 
28
- ![Login screen](docs/assets/screenshots/login.png)
35
+ ### Prerequisites
29
36
 
30
- ### Chat
37
+ - [Node.js](https://nodejs.org/) 18+ installed
38
+ - [Hermes Agent](https://github.com/NousResearch/hermes-agent) installed and configured (`~/.hermes`)
31
39
 
32
- Streaming chat connected to a live Hermes runtime. Session sidebar with search, pinning, and archiving. Tool timelines expand inline. Composer shows active model, mode, tools, and profile.
40
+ ### One command
33
41
 
34
- ![Empty chat workspace](docs/assets/screenshots/chat-empty.png)
42
+ ```bash
43
+ npx @euraika-labs/pan-ui
44
+ ```
35
45
 
36
- ![Active chat with runtime output](docs/assets/screenshots/chat-runtime.png)
46
+ A setup wizard runs on first launch to connect Pan to your Hermes instance. After setup, open [localhost:3199](http://localhost:3199).
37
47
 
38
- ### Skills Installed
48
+ > **First time?** The wizard auto-detects your Hermes home directory, API server, and installed binary. Just press Enter through the defaults to get started.
39
49
 
40
- 112 installed skills across 27 categories. Search by name, tag, or category. Each card shows source, tags, linked files count, and whether it's loaded in the current session.
50
+ ### Run in the background
41
51
 
42
- ![Skills installed tab](docs/assets/screenshots/skills-installed.png)
52
+ ```bash
53
+ npx @euraika-labs/pan-ui --daemon # Fork to background
54
+ npx pan-ui status # Check if running
55
+ npx pan-ui logs # Tail log output
56
+ npx pan-ui stop # Stop the daemon
57
+ ```
43
58
 
44
- ### Skills Discover
59
+ ### Run as a system service (Linux)
45
60
 
46
- Browse and install skills from the skills.sh hub. Trust badges (Trusted / Official / Community), install counts, security audit results, and direct links to repos.
61
+ ```bash
62
+ npx @euraika-labs/pan-ui service install # Creates a systemd user service
63
+ npx pan-ui service remove # Uninstall it
64
+ ```
47
65
 
48
- ![Skills discover tab](docs/assets/screenshots/skills-discover.png)
66
+ The service starts on login and survives logout. Manage it with standard `systemctl --user` commands.
49
67
 
50
- ### Extensions & MCP
68
+ ### Update
51
69
 
52
- Installed MCP servers with tool inventories, health badges, and capability toggles. Test connections and view diagnostics.
70
+ ```bash
71
+ npx @euraika-labs/pan-ui@latest
72
+ ```
53
73
 
54
- ![Extensions page](docs/assets/screenshots/extensions.png)
74
+ Your configuration in `~/.pan-ui/` is preserved across updates.
55
75
 
56
- ### Memory
76
+ ## Features
57
77
 
58
- Global memory (shared across profiles) displayed as read-only cards with a blue "shared" badge. Profile-scoped memory is editable. Entries are separated by `§` and counted correctly.
78
+ | Feature | Description |
79
+ |---------|-------------|
80
+ | **Chat** | SSE streaming connected to a live Hermes runtime, with tool timelines, approval cards, and artifact rendering |
81
+ | **Sessions** | Unified session sidebar with source badges (CLI, Discord, Telegram, WhatsApp, …), source filtering, and cross-platform session resumption |
82
+ | **Skills** | Browse installed skills, discover and install 268+ more from [skills.sh](https://skills.sh) |
83
+ | **Extensions** | View MCP servers, their tools, health status, and diagnostics |
84
+ | **Memory** | Inspect and edit global and profile-scoped agent memory |
85
+ | **Profiles** | Isolated workspaces — each with its own sessions, skills, memory, and API keys |
86
+ | **Operations** | Approvals, run history, audit trails, telemetry, health monitoring, and exports |
87
+ | **Daemon** | Background process with PID management, log tailing, and systemd integration |
59
88
 
60
- ![Memory page](docs/assets/screenshots/memory.png)
89
+ ## Screenshots
61
90
 
62
- ### Profiles
91
+ <details>
92
+ <summary><strong>Login</strong></summary>
63
93
 
64
- Profile-based workspace isolation. Each profile scopes sessions, skills, memory, extensions, and API keys. Policy presets (safe-chat, research, builder, full-power) control tool access and guardrails.
94
+ ![Login screen](docs/assets/screenshots/login.png)
95
+ </details>
65
96
 
66
- ![Profiles page](docs/assets/screenshots/profiles.png)
97
+ <details open>
98
+ <summary><strong>Chat</strong></summary>
67
99
 
68
- ### Settings
100
+ Streaming chat with session sidebar, tool timelines, and runtime-aware composer.
69
101
 
70
- Runtime status, health monitoring, model selection, run history, audit browser, telemetry, approvals, and MCP diagnostics.
102
+ ![Empty chat workspace](docs/assets/screenshots/chat-empty.png)
103
+ ![Active chat with runtime output](docs/assets/screenshots/chat-runtime.png)
104
+ </details>
71
105
 
72
- ![Settings page](docs/assets/screenshots/settings.png)
106
+ <details>
107
+ <summary><strong>Skills</strong></summary>
73
108
 
74
- ## Tech Stack
109
+ Installed skills with search and category filters. Discover tab for the skills.sh hub.
75
110
 
76
- | Layer | Technology |
77
- |-------|-----------|
78
- | Framework | Next.js 15 (App Router) |
79
- | Language | TypeScript |
80
- | State | TanStack Query v5 |
81
- | Styling | Tailwind CSS 4 |
82
- | Testing | Vitest + Playwright |
83
- | Runtime | Node.js 20+ |
111
+ ![Skills installed tab](docs/assets/screenshots/skills-installed.png)
112
+ ![Skills discover tab](docs/assets/screenshots/skills-discover.png)
113
+ </details>
84
114
 
85
- ## Quick Start
115
+ <details>
116
+ <summary><strong>Extensions & MCP</strong></summary>
86
117
 
87
- ### Via npx (recommended)
118
+ ![Extensions page](docs/assets/screenshots/extensions.png)
119
+ </details>
88
120
 
89
- ```bash
90
- npx @euraika-labs/pan-ui
91
- ```
121
+ <details>
122
+ <summary><strong>Memory</strong></summary>
92
123
 
93
- The setup wizard will guide you through connecting to your Hermes runtime on first launch.
124
+ ![Memory page](docs/assets/screenshots/memory.png)
125
+ </details>
94
126
 
95
- ### From source
127
+ <details>
128
+ <summary><strong>Profiles</strong></summary>
96
129
 
97
- ```bash
98
- # 1. Clone and install
99
- git clone https://github.com/Euraika-Labs/pan-ui.git
100
- cd pan-ui
101
- npm install
130
+ ![Profiles page](docs/assets/screenshots/profiles.png)
131
+ </details>
102
132
 
103
- # 2. Start in dev mode (connects to local Hermes instance)
104
- npm run dev
133
+ <details>
134
+ <summary><strong>Settings</strong></summary>
105
135
 
106
- # 3. Open in browser
107
- open http://localhost:3199
108
- ```
136
+ ![Settings page](docs/assets/screenshots/settings.png)
137
+ </details>
138
+
139
+ ## Configuration
140
+
141
+ ### CLI Reference
109
142
 
110
- Default credentials: `admin` / `changeme`
143
+ | Command | Description |
144
+ |---------|-------------|
145
+ | `npx pan-ui` | Start in foreground |
146
+ | `npx pan-ui --daemon` | Start in background |
147
+ | `npx pan-ui stop` | Stop daemon |
148
+ | `npx pan-ui status` | Show running state |
149
+ | `npx pan-ui logs` | Tail daemon logs |
150
+ | `npx pan-ui setup` | Re-run setup wizard |
151
+ | `npx pan-ui --port 8080` | Override port |
152
+ | `npx pan-ui service install` | Install systemd service |
153
+ | `npx pan-ui service remove` | Remove systemd service |
111
154
 
112
155
  ### Environment Variables
113
156
 
157
+ The setup wizard writes these to `.env.local`. You can also edit them directly or re-run `npx pan-ui setup`.
158
+
114
159
  | Variable | Default | Description |
115
160
  |----------|---------|-------------|
116
- | `HERMES_MOCK_MODE` | `true` | Set `false` to connect to a real Hermes instance |
117
161
  | `HERMES_HOME` | `~/.hermes` | Hermes home directory |
118
162
  | `HERMES_API_BASE_URL` | `http://127.0.0.1:8642` | Hermes API endpoint |
119
- | `HERMES_API_KEY` | — | API key for Hermes (if configured) |
163
+ | `HERMES_API_KEY` | — | API key (if Hermes requires one) |
120
164
  | `HERMES_WORKSPACE_USERNAME` | `admin` | Login username |
121
165
  | `HERMES_WORKSPACE_PASSWORD` | `changeme` | Login password |
122
- | `HERMES_WORKSPACE_SESSION_SECRET` | | Cookie signing secret |
123
- | `PORT` | `3199` | Pan UI port |
166
+ | `HERMES_WORKSPACE_SECRET` | *(auto-generated)* | Cookie signing secret |
167
+ | `HERMES_MOCK_MODE` | `false` | Use mock data when runtime is unavailable |
168
+ | `PORT` | `3199` | Server port |
124
169
 
125
- ## Architecture
170
+ ### File Locations
126
171
 
127
- ```
128
- ┌─────────────────────────────────────────────────┐
129
- │ Browser │
130
- │ Next.js App Router + TanStack Query + Tailwind │
131
- └───────────────────────┬─────────────────────────┘
132
- fetch / SSE
133
- ┌───────────────────────▼─────────────────────────┐
134
- │ Next.js API Routes │
135
- │ /api/chat/stream /api/skills /api/memory │
136
- │ /api/profiles /api/extensions /api/runtime│
137
- └──────┬────────────────┬─────────────────────────┘
138
- │ │
139
- ▼ ▼
140
- ┌──────────────┐ ┌──────────────────────────────┐
141
- │ Hermes API │ │ Hermes Filesystem │
142
- │ :8642 │ │ ~/.hermes/ │
143
- │ OpenAI-compat│ │ ├─ profiles/ │
144
- │ SSE streaming│ │ ├─ skills/ │
145
- └──────────────┘ │ ├─ memories/ │
146
- │ └─ state.db │
147
- └──────────────────────────────┘
148
- ```
172
+ | Path | Purpose |
173
+ |------|---------|
174
+ | `~/.pan-ui/pan-ui.pid` | Daemon PID file |
175
+ | `~/.pan-ui/pan-ui.log` | Daemon log output |
176
+ | `~/.config/systemd/user/pan-ui.service` | Systemd service unit (when installed) |
177
+ | `.env.local` (in package dir) | Configuration from setup wizard |
149
178
 
150
- - **Chat streaming** bridges the Hermes OpenAI-compatible `/v1/chat/completions` SSE endpoint to Pan
151
- - **Skills** are read from `~/.hermes/skills/` with YAML frontmatter parsing; hub skills come from the skills.sh cache
152
- - **Sessions** are read from `state.db` (SQLite) via the Hermes filesystem
153
- - **Memory** reads/writes `USER.md` and `MEMORY.md` files at both global and profile scope
154
- - **Profiles** map to `~/.hermes/profiles/<name>/` directories, each with their own config, memories, sessions, and skills
179
+ ## How It Works
155
180
 
156
- ## Project Structure
181
+ Pan runs as a standalone Next.js server that bridges your browser to the Hermes runtime. On startup it **automatically launches the Hermes gateway** if it isn't already running — no manual gateway setup required.
157
182
 
158
183
  ```
159
- src/
160
- ├── app/ # Next.js routes and API endpoints
161
- │ ├── api/ # Server-side API routes
162
- │ ├── chat/ # Chat stream, sessions
163
- │ │ ├── skills/ # Skills CRUD, hub, categories
164
- │ ├── memory/ # User/agent memory, context inspector
165
- │ ├── profiles/ # Profile CRUD
166
- │ │ ├── extensions/ # MCP extensions
167
- │ │ └── runtime/ # Health, approvals, runs, export
168
- │ └── [page]/ # Client page routes
169
- ├── features/ # UI feature modules
170
- │ ├── chat/ # Chat screen, composer, transcript, tools
171
- │ ├── skills/ # Skills browser, detail, hub cards
172
- │ ├── memory/ # Memory editor, context inspector
173
- │ ├── extensions/ # Extension cards, tool inventory
174
- │ ├── profiles/ # Profile management, switcher
175
- │ ├── sessions/ # Session sidebar, search
176
- │ └── settings/ # Runtime, health, audit, approvals, runs
177
- ├── server/ # Server-side logic
178
- │ └── hermes/ # Hermes filesystem bridge
179
- ├── components/ # Shared layout and UI components
180
- ├── lib/ # Types, schemas, stores, utilities
181
- └── styles/ # Global CSS and theme variables
182
- tests/
183
- ├── unit/ # Vitest unit tests
184
- └── e2e/ # Playwright end-to-end tests
185
- docs/ # Architecture, specs, and screenshots
184
+ Browser ──── fetch / SSE ────▶ Pan (Next.js API routes)
185
+ │ │
186
+ ▼ ▼
187
+ Hermes Gateway Hermes Filesystem
188
+ :8642 ~/.hermes/
189
+ (auto-managed) (skills, memory, profiles, state.db)
190
+
191
+
192
+ Hermes Agent sessions
193
+ (tools, streaming, full agent capabilities)
186
194
  ```
187
195
 
188
- ## Verification
196
+ - **Gateway** — Pan's startup hook detects whether the Hermes gateway is reachable. If not, it spawns `hermes gateway run` as a child process with health monitoring and auto-restart. The gateway uses the active Hermes profile — no hardcoded names or paths.
197
+ - **Chat** streams through Hermes's OpenAI-compatible SSE endpoint
198
+ - **Skills** are read from `~/.hermes/skills/` with YAML frontmatter parsing
199
+ - **Memory** reads/writes `USER.md` and `MEMORY.md` at global and profile scope
200
+ - **Profiles** map to `~/.hermes/profiles/<name>/` directories
201
+
202
+ > **Already running a gateway?** Pan detects it and skips auto-launch. This works with systemd services, manual `hermes gateway run`, or any external process on the configured port.
203
+
204
+ ## Development
205
+
206
+ Want to contribute or run from source? See [CONTRIBUTING.md](CONTRIBUTING.md) for full setup instructions.
189
207
 
190
208
  ```bash
191
- npm run lint # ESLint
192
- npm run test # Vitest unit tests
193
- npm run build # Production build
194
- npm run test:e2e # Playwright e2e (requires running dev server)
209
+ git clone https://github.com/Euraika-Labs/pan-ui.git
210
+ cd pan-ui
211
+ npm install
212
+ npm run dev
195
213
  ```
196
214
 
197
- ## Security
198
-
199
- - CLI commands use an allowlist guard (`ALLOWED_COMMANDS`) before `execFileSync` no arbitrary command injection
200
- - Profile isolation ensures each workspace boundary has its own sessions, memory, and API keys
201
- - CodeQL scanning runs on every push and PR
202
- - File path parameters are sanitized to prevent directory traversal
203
- - Login is cookie-based with configurable credentials
215
+ | Command | Description |
216
+ |---------|-------------|
217
+ | `npm run dev` | Dev server with hot reload |
218
+ | `npm run build` | Production build |
219
+ | `npm run lint` | ESLint |
220
+ | `npm run test` | Vitest unit tests |
221
+ | `npm run test:e2e` | Playwright end-to-end tests |
204
222
 
205
- ## Contributing
223
+ ## Security
206
224
 
207
- Please read `CONTRIBUTING.md` before opening issues or pull requests.
225
+ See [SECURITY.md](SECURITY.md) for reporting vulnerabilities.
208
226
 
209
227
  ## License
210
228
 
211
- MIT
229
+ [MIT](LICENSE) © [Euraika Labs](https://github.com/Euraika-Labs)
package/bin/pan-ui.mjs CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@euraika-labs/pan-ui",
3
- "version": "0.2.4",
3
+ "version": "0.4.0",
4
4
  "description": "Beautiful WebUI for Hermes Agent — chat, skills, plugins, memory, profiles, and runtime diagnostics in one workspace.",
5
5
  "keywords": [
6
6
  "hermes",
@@ -79,6 +79,11 @@
79
79
  "typescript": "^5.6.3",
80
80
  "vitest": "^4.1.2"
81
81
  },
82
+ "prettier": {
83
+ "semi": true,
84
+ "singleQuote": true,
85
+ "trailingComma": "all"
86
+ },
82
87
  "engines": {
83
88
  "node": ">=18.18.0"
84
89
  }
package/.env.example DELETED
@@ -1,30 +0,0 @@
1
- # Pan UI configuration
2
- # Copy to .env.local and customize, or run: npx pan-ui setup
3
-
4
- # ── Hermes Runtime ───────────────────────────────────────────────────────────
5
- # Path to Hermes home directory (auto-detected if omitted)
6
- # HERMES_HOME=~/.hermes
7
-
8
- # Hermes API server URL (started with: hermes acp or hermes gateway)
9
- HERMES_API_BASE_URL=http://127.0.0.1:8642
10
-
11
- # Optional API key for the Hermes API server
12
- # HERMES_API_KEY=
13
-
14
- # API request timeout in milliseconds
15
- # HERMES_API_TIMEOUT_MS=30000
16
-
17
- # ── Workspace Auth ───────────────────────────────────────────────────────────
18
- # Login credentials for the web UI
19
- HERMES_WORKSPACE_USERNAME=admin
20
- HERMES_WORKSPACE_PASSWORD=changeme
21
-
22
- # Session signing secret (auto-generated by setup wizard if empty)
23
- # HERMES_WORKSPACE_SECRET=
24
-
25
- # ── Server ───────────────────────────────────────────────────────────────────
26
- # Port for the workspace UI
27
- PORT=3199
28
-
29
- # Enable mock data when Hermes runtime is unavailable (true/false)
30
- HERMES_MOCK_MODE=false
@@ -1 +0,0 @@
1
- Pqhqpl3ZPqKI0qfvpIPeN