@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.
- package/.next/standalone/node_modules/next/node_modules/postcss/package.json +0 -0
- package/.next/standalone/package.json +7 -2
- package/.next/standalone/server.js +1 -1
- package/.next/{standalone/.next/static/chunks/app/_not-found/page-9c90a6b39424f003.js → static/chunks/app/_not-found/page-c4591bba1afe868d.js} +1 -1
- package/.next/static/chunks/app/chat/page-49d2aa1477960093.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/extensions/[id]/page-cca6df1771ec04d2.js → static/chunks/app/extensions/[id]/page-18e579a71a9d93c3.js} +1 -1
- package/.next/static/chunks/app/extensions/{page-c0fbb8efa9a3700c.js → page-82f358e2fcabc6a3.js} +1 -1
- package/.next/static/chunks/app/layout-f3c578dd4202f2f5.js +1 -0
- package/.next/static/chunks/app/login/page-a3820386479beb5e.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/memory/page-0684ff3ce6888ae7.js → static/chunks/app/memory/page-a90ea51b004acc94.js} +1 -1
- package/.next/static/chunks/app/profiles/page-7b5924f80e882d7e.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/settings/approvals/page-6843c585791e4db7.js → static/chunks/app/settings/approvals/page-1fd1b90371c02705.js} +1 -1
- package/.next/static/chunks/app/settings/artifacts/page-35ee6c14a4836aad.js +1 -0
- package/.next/static/chunks/app/settings/audit/page-a11b23ffa1e40949.js +1 -0
- package/.next/static/chunks/app/settings/health/page-9b7914bfd7bf665b.js +1 -0
- package/.next/static/chunks/app/settings/mcp-diagnostics/page-102367ef8b2cc105.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/settings/page-8a40bdf895f43430.js → static/chunks/app/settings/page-5f9f8ba836ac9b7e.js} +1 -1
- package/.next/static/chunks/app/settings/runs/[id]/page-d0184e7e90f5867c.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/settings/runs/page-cb4d1617e199c38e.js → static/chunks/app/settings/runs/page-312bdcd82b1f3a64.js} +1 -1
- package/.next/{standalone/.next/static/chunks/app/settings/telemetry/page-c0446baefa5496cb.js → static/chunks/app/settings/telemetry/page-e61a1efd390b87a4.js} +1 -1
- package/.next/static/chunks/app/skills/[id]/page-9dccad9f9e4b356e.js +1 -0
- package/.next/static/chunks/app/skills/page-d480e9f5081fd9b6.js +1 -0
- package/.next/{standalone/.next/static/chunks/main-app-a9e2c007d433eaf9.js → static/chunks/main-app-f0e3f2828aa879c4.js} +1 -1
- package/.next/static/css/ecc1661163318581.css +3 -0
- package/README.md +161 -143
- package/bin/pan-ui.mjs +0 -0
- package/package.json +6 -1
- package/.env.example +0 -30
- package/.next/standalone/.next/BUILD_ID +0 -1
- package/.next/standalone/.next/app-build-manifest.json +0 -508
- package/.next/standalone/.next/app-path-routes-manifest.json +0 -67
- package/.next/standalone/.next/build-manifest.json +0 -33
- package/.next/standalone/.next/package.json +0 -1
- package/.next/standalone/.next/prerender-manifest.json +0 -119
- package/.next/standalone/.next/react-loadable-manifest.json +0 -1
- package/.next/standalone/.next/required-server-files.json +0 -321
- package/.next/standalone/.next/routes-manifest.json +0 -295
- package/.next/standalone/.next/server/app/_not-found/page.js +0 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/_not-found.html +0 -1
- package/.next/standalone/.next/server/app/_not-found.meta +0 -8
- package/.next/standalone/.next/server/app/_not-found.rsc +0 -18
- package/.next/standalone/.next/server/app/api/audit/route.js +0 -36
- package/.next/standalone/.next/server/app/api/audit/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/audit/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/auth/login/route.js +0 -1
- package/.next/standalone/.next/server/app/api/auth/login/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/auth/login/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +0 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/fork/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/route.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/chat/stream/route.js +0 -170
- package/.next/standalone/.next/server/app/api/chat/stream/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/chat/stream/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/capabilities/[capabilityId]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/route.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/test/route.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/test/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/extensions/[id]/test/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/mcp/route.js +0 -11
- package/.next/standalone/.next/server/app/api/extensions/mcp/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/extensions/mcp/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/route.js +0 -1
- package/.next/standalone/.next/server/app/api/extensions/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/extensions/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/agent/route.js +0 -36
- package/.next/standalone/.next/server/app/api/memory/agent/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/memory/agent/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/context-inspector/route.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/context-inspector/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/memory/context-inspector/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/session-search/route.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/session-search/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/memory/session-search/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/memory/user/route.js +0 -36
- package/.next/standalone/.next/server/app/api/memory/user/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/memory/user/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/profiles/[id]/config/route.js +0 -92
- package/.next/standalone/.next/server/app/api/profiles/[id]/config/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/profiles/[id]/config/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/profiles/[id]/route.js +0 -31
- package/.next/standalone/.next/server/app/api/profiles/[id]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/profiles/[id]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/profiles/route.js +0 -31
- package/.next/standalone/.next/server/app/api/profiles/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/profiles/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/approvals/[toolCallId]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/approvals/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/approvals/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/approvals/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/artifacts/download/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/artifacts/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/artifacts/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/artifacts/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/export/route.js +0 -143
- package/.next/standalone/.next/server/app/api/runtime/export/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/export/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/health/route.js +0 -18
- package/.next/standalone/.next/server/app/api/runtime/health/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/health/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/mcp-probes/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route.js +0 -51
- package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/runs/[id]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/runs/route.js +0 -51
- package/.next/standalone/.next/server/app/api/runtime/runs/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/runs/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/status/route.js +0 -18
- package/.next/standalone/.next/server/app/api/runtime/status/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/status/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/telemetry/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/telemetry/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/telemetry/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/runtime/timeline/route.js +0 -133
- package/.next/standalone/.next/server/app/api/runtime/timeline/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/runtime/timeline/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/disable/route.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/disable/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/disable/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/enable/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/[id]/enable/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/enable/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/files/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/[id]/files/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/files/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/install/route.js +0 -56
- package/.next/standalone/.next/server/app/api/skills/[id]/install/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/install/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/load/route.js +0 -17
- package/.next/standalone/.next/server/app/api/skills/[id]/load/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/load/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/[id]/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/catalog/route.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/catalog/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/catalog/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/categories/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/categories/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/categories/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/hub/install/route.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/hub/install/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/hub/install/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/hub/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/hub/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/hub/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/skills/route.js +0 -21
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/skills/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/telemetry/route.js +0 -133
- package/.next/standalone/.next/server/app/api/telemetry/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/telemetry/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/uploads/route.js +0 -36
- package/.next/standalone/.next/server/app/api/uploads/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/chat/page.js +0 -4
- package/.next/standalone/.next/server/app/chat/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/chat/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/extensions/[id]/page.js +0 -2
- package/.next/standalone/.next/server/app/extensions/[id]/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/extensions/[id]/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/extensions/page.js +0 -2
- package/.next/standalone/.next/server/app/extensions/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/extensions/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js +0 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/favicon.ico.body +0 -0
- package/.next/standalone/.next/server/app/favicon.ico.meta +0 -1
- package/.next/standalone/.next/server/app/icon.svg/route.js +0 -1
- package/.next/standalone/.next/server/app/icon.svg/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/icon.svg.body +0 -10
- package/.next/standalone/.next/server/app/icon.svg.meta +0 -1
- package/.next/standalone/.next/server/app/index.html +0 -1
- package/.next/standalone/.next/server/app/index.meta +0 -9
- package/.next/standalone/.next/server/app/index.rsc +0 -19
- package/.next/standalone/.next/server/app/login/page.js +0 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/memory/page.js +0 -2
- package/.next/standalone/.next/server/app/memory/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/memory/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/page.js +0 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/profiles/page.js +0 -2
- package/.next/standalone/.next/server/app/profiles/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/profiles/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/approvals/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/approvals/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/approvals/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/artifacts/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/artifacts/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/artifacts/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/audit/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/audit/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/audit/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/health/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/health/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/health/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/mcp-diagnostics/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/runs/[id]/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/runs/[id]/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/runs/[id]/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/runs/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/runs/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/runs/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/settings/telemetry/page.js +0 -2
- package/.next/standalone/.next/server/app/settings/telemetry/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/settings/telemetry/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/skills/[id]/page.js +0 -2
- package/.next/standalone/.next/server/app/skills/[id]/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/skills/[id]/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/skills/page.js +0 -2
- package/.next/standalone/.next/server/app/skills/page.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +0 -67
- package/.next/standalone/.next/server/chunks/1331.js +0 -22
- package/.next/standalone/.next/server/chunks/1692.js +0 -1
- package/.next/standalone/.next/server/chunks/2043.js +0 -1
- package/.next/standalone/.next/server/chunks/4337.js +0 -143
- package/.next/standalone/.next/server/chunks/4561.js +0 -1
- package/.next/standalone/.next/server/chunks/4689.js +0 -25
- package/.next/standalone/.next/server/chunks/5611.js +0 -6
- package/.next/standalone/.next/server/chunks/6111.js +0 -1
- package/.next/standalone/.next/server/chunks/6143.js +0 -9
- package/.next/standalone/.next/server/chunks/6516.js +0 -143
- package/.next/standalone/.next/server/chunks/6802.js +0 -1
- package/.next/standalone/.next/server/chunks/9546.js +0 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +0 -4
- package/.next/standalone/.next/server/middleware-build-manifest.js +0 -1
- package/.next/standalone/.next/server/middleware-manifest.json +0 -6
- package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/.next/standalone/.next/server/next-font-manifest.js +0 -1
- package/.next/standalone/.next/server/next-font-manifest.json +0 -1
- package/.next/standalone/.next/server/pages/404.html +0 -1
- package/.next/standalone/.next/server/pages/500.html +0 -1
- package/.next/standalone/.next/server/pages/_app.js +0 -1
- package/.next/standalone/.next/server/pages/_app.js.nft.json +0 -1
- package/.next/standalone/.next/server/pages/_document.js +0 -1
- package/.next/standalone/.next/server/pages/_document.js.nft.json +0 -1
- package/.next/standalone/.next/server/pages/_error.js +0 -19
- package/.next/standalone/.next/server/pages/_error.js.nft.json +0 -1
- package/.next/standalone/.next/server/pages-manifest.json +0 -6
- package/.next/standalone/.next/server/server-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +0 -1
- package/.next/standalone/.next/server/webpack-runtime.js +0 -1
- package/.next/standalone/.next/static/chunks/1255-aadf393aa3a56bfa.js +0 -1
- package/.next/standalone/.next/static/chunks/1309-d826505bfad78fd1.js +0 -1
- package/.next/standalone/.next/static/chunks/2231-e0d8768bfce5fe57.js +0 -1
- package/.next/standalone/.next/static/chunks/4879-36321f505e9ce82a.js +0 -1
- package/.next/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
- package/.next/standalone/.next/static/chunks/5449-aba2dafba76d4508.js +0 -1
- package/.next/standalone/.next/static/chunks/9657-3ff4bf56070f324f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/audit/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/login/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/fork/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/stream/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/capabilities/[capabilityId]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/extensions/[id]/test/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/extensions/mcp/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/extensions/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/memory/agent/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/memory/context-inspector/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/memory/session-search/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/memory/user/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/profiles/[id]/config/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/profiles/[id]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/profiles/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/approvals/[toolCallId]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/approvals/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/artifacts/download/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/artifacts/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/export/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/health/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/mcp-probes/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/runs/[id]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/runs/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/status/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/telemetry/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runtime/timeline/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/disable/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/enable/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/files/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/install/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/load/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/[id]/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/catalog/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/categories/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/hub/install/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/hub/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/skills/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/telemetry/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/uploads/route-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/chat/page-117a5b54aee7eae4.js +0 -1
- package/.next/standalone/.next/static/chunks/app/extensions/page-c0fbb8efa9a3700c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-0bc970399be389b5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/page-984e33272681e1e0.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-bb3f5b9060cdc631.js +0 -1
- package/.next/standalone/.next/static/chunks/app/profiles/page-46a0ad35feda9741.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/artifacts/page-d3fddd43ac1243af.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/audit/page-378bee43dd7c4903.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/health/page-d34eadc11bc90af5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/mcp-diagnostics/page-3778d2842d5bdd79.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/runs/[id]/page-7837ec57d531ef2b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/skills/[id]/page-88bc62488ddf6c10.js +0 -1
- package/.next/standalone/.next/static/chunks/app/skills/page-e47c6a5f9559edc1.js +0 -1
- package/.next/standalone/.next/static/chunks/framework-f31701c9d93f12a4.js +0 -1
- package/.next/standalone/.next/static/chunks/main-1ac9e0711a0eb944.js +0 -1
- package/.next/standalone/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +0 -1
- package/.next/standalone/.next/static/chunks/pages/_error-94812ad32cad7365.js +0 -1
- package/.next/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/.next/standalone/.next/static/chunks/webpack-0100acb42ec0d4c7.js +0 -1
- package/.next/standalone/.next/static/css/f5a43afa8024b892.css +0 -3
- package/.next/static/Pqhqpl3ZPqKI0qfvpIPeN/_buildManifest.js +0 -1
- package/.next/static/Pqhqpl3ZPqKI0qfvpIPeN/_ssgManifest.js +0 -1
- package/.next/static/chunks/app/_not-found/page-9c90a6b39424f003.js +0 -1
- package/.next/static/chunks/app/chat/page-117a5b54aee7eae4.js +0 -1
- package/.next/static/chunks/app/extensions/[id]/page-cca6df1771ec04d2.js +0 -1
- package/.next/static/chunks/app/layout-0bc970399be389b5.js +0 -1
- package/.next/static/chunks/app/login/page-984e33272681e1e0.js +0 -1
- package/.next/static/chunks/app/memory/page-0684ff3ce6888ae7.js +0 -1
- package/.next/static/chunks/app/profiles/page-46a0ad35feda9741.js +0 -1
- package/.next/static/chunks/app/settings/approvals/page-6843c585791e4db7.js +0 -1
- package/.next/static/chunks/app/settings/artifacts/page-d3fddd43ac1243af.js +0 -1
- package/.next/static/chunks/app/settings/audit/page-378bee43dd7c4903.js +0 -1
- package/.next/static/chunks/app/settings/health/page-d34eadc11bc90af5.js +0 -1
- package/.next/static/chunks/app/settings/mcp-diagnostics/page-3778d2842d5bdd79.js +0 -1
- package/.next/static/chunks/app/settings/page-8a40bdf895f43430.js +0 -1
- package/.next/static/chunks/app/settings/runs/[id]/page-7837ec57d531ef2b.js +0 -1
- package/.next/static/chunks/app/settings/runs/page-cb4d1617e199c38e.js +0 -1
- package/.next/static/chunks/app/settings/telemetry/page-c0446baefa5496cb.js +0 -1
- package/.next/static/chunks/app/skills/[id]/page-88bc62488ddf6c10.js +0 -1
- package/.next/static/chunks/app/skills/page-e47c6a5f9559edc1.js +0 -1
- package/.next/static/chunks/main-app-a9e2c007d433eaf9.js +0 -1
- package/.next/static/css/f5a43afa8024b892.css +0 -3
- /package/.next/{standalone/.next/static/Pqhqpl3ZPqKI0qfvpIPeN → static/GRY0Lg42m80lHYHfaVVa0}/_buildManifest.js +0 -0
- /package/.next/{standalone/.next/static/Pqhqpl3ZPqKI0qfvpIPeN → static/GRY0Lg42m80lHYHfaVVa0}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,211 +1,229 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/pan-logo.svg" alt="Pan by Euraika" width="120" />
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
[](https://github.com/Euraika-Labs/pan-ui/actions/workflows/codeql.yml)
|
|
5
|
-
[](https://www.npmjs.com/package/@euraika-labs/pan-ui)
|
|
6
|
-
[](https://github.com/Euraika-Labs/pan-ui/releases)
|
|
7
|
-
[](./LICENSE)
|
|
5
|
+
<h1 align="center">Pan by Euraika</h1>
|
|
8
6
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27
|
+
---
|
|
16
28
|
|
|
17
|
-
-
|
|
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
|
-
|
|
31
|
+

|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
## Install
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
### Prerequisites
|
|
29
36
|
|
|
30
|
-
|
|
37
|
+
- [Node.js](https://nodejs.org/) 18+ installed
|
|
38
|
+
- [Hermes Agent](https://github.com/NousResearch/hermes-agent) installed and configured (`~/.hermes`)
|
|
31
39
|
|
|
32
|
-
|
|
40
|
+
### One command
|
|
33
41
|
|
|
34
|
-
|
|
42
|
+
```bash
|
|
43
|
+
npx @euraika-labs/pan-ui
|
|
44
|
+
```
|
|
35
45
|
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
+
### Run in the background
|
|
41
51
|
|
|
42
|
-
|
|
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
|
-
###
|
|
59
|
+
### Run as a system service (Linux)
|
|
45
60
|
|
|
46
|
-
|
|
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
|
-
|
|
66
|
+
The service starts on login and survives logout. Manage it with standard `systemctl --user` commands.
|
|
49
67
|
|
|
50
|
-
###
|
|
68
|
+
### Update
|
|
51
69
|
|
|
52
|
-
|
|
70
|
+
```bash
|
|
71
|
+
npx @euraika-labs/pan-ui@latest
|
|
72
|
+
```
|
|
53
73
|
|
|
54
|
-
|
|
74
|
+
Your configuration in `~/.pan-ui/` is preserved across updates.
|
|
55
75
|
|
|
56
|
-
|
|
76
|
+
## Features
|
|
57
77
|
|
|
58
|
-
|
|
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
|
-
|
|
89
|
+
## Screenshots
|
|
61
90
|
|
|
62
|
-
|
|
91
|
+
<details>
|
|
92
|
+
<summary><strong>Login</strong></summary>
|
|
63
93
|
|
|
64
|
-
|
|
94
|
+

|
|
95
|
+
</details>
|
|
65
96
|
|
|
66
|
-
|
|
97
|
+
<details open>
|
|
98
|
+
<summary><strong>Chat</strong></summary>
|
|
67
99
|
|
|
68
|
-
|
|
100
|
+
Streaming chat with session sidebar, tool timelines, and runtime-aware composer.
|
|
69
101
|
|
|
70
|
-
|
|
102
|
+

|
|
103
|
+

|
|
104
|
+
</details>
|
|
71
105
|
|
|
72
|
-
|
|
106
|
+
<details>
|
|
107
|
+
<summary><strong>Skills</strong></summary>
|
|
73
108
|
|
|
74
|
-
|
|
109
|
+
Installed skills with search and category filters. Discover tab for the skills.sh hub.
|
|
75
110
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
| Language | TypeScript |
|
|
80
|
-
| State | TanStack Query v5 |
|
|
81
|
-
| Styling | Tailwind CSS 4 |
|
|
82
|
-
| Testing | Vitest + Playwright |
|
|
83
|
-
| Runtime | Node.js 20+ |
|
|
111
|
+

|
|
112
|
+

|
|
113
|
+
</details>
|
|
84
114
|
|
|
85
|
-
|
|
115
|
+
<details>
|
|
116
|
+
<summary><strong>Extensions & MCP</strong></summary>
|
|
86
117
|
|
|
87
|
-
|
|
118
|
+

|
|
119
|
+
</details>
|
|
88
120
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```
|
|
121
|
+
<details>
|
|
122
|
+
<summary><strong>Memory</strong></summary>
|
|
92
123
|
|
|
93
|
-
|
|
124
|
+

|
|
125
|
+
</details>
|
|
94
126
|
|
|
95
|
-
|
|
127
|
+
<details>
|
|
128
|
+
<summary><strong>Profiles</strong></summary>
|
|
96
129
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
git clone https://github.com/Euraika-Labs/pan-ui.git
|
|
100
|
-
cd pan-ui
|
|
101
|
-
npm install
|
|
130
|
+

|
|
131
|
+
</details>
|
|
102
132
|
|
|
103
|
-
|
|
104
|
-
|
|
133
|
+
<details>
|
|
134
|
+
<summary><strong>Settings</strong></summary>
|
|
105
135
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
136
|
+

|
|
137
|
+
</details>
|
|
138
|
+
|
|
139
|
+
## Configuration
|
|
140
|
+
|
|
141
|
+
### CLI Reference
|
|
109
142
|
|
|
110
|
-
|
|
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
|
|
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
|
-
| `
|
|
123
|
-
| `
|
|
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
|
-
|
|
170
|
+
### File Locations
|
|
126
171
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
│
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
npm
|
|
194
|
-
npm run
|
|
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
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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
|
-
##
|
|
223
|
+
## Security
|
|
206
224
|
|
|
207
|
-
|
|
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.
|
|
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
|