@geminilight/mindos 0.6.72 → 0.6.73
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/_standalone/.antigravity/mcp_config.json +14 -0
- package/_standalone/.mindos-build-version +1 -0
- package/_standalone/.next/BUILD_ID +1 -0
- package/_standalone/.next/app-path-routes-manifest.json +92 -0
- package/_standalone/.next/build-manifest.json +20 -0
- package/_standalone/.next/cache/.previewinfo +1 -0
- package/_standalone/.next/cache/.rscinfo +1 -0
- package/_standalone/.next/cache/config.json +7 -0
- package/_standalone/.next/diagnostics/build-diagnostics.json +6 -0
- package/_standalone/.next/diagnostics/framework.json +1 -0
- package/_standalone/.next/lock +0 -0
- package/_standalone/.next/package.json +1 -0
- package/_standalone/.next/prerender-manifest.json +65 -0
- package/_standalone/.next/react-loadable-manifest.json +179 -0
- package/_standalone/.next/required-server-files.json +339 -0
- package/_standalone/.next/routes-manifest.json +591 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route.js +1 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/_global-error/page.js +3 -0
- package/_standalone/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/_global-error.html +2 -0
- package/_standalone/.next/server/app/_global-error.meta +16 -0
- package/_standalone/.next/server/app/_global-error.rsc +18 -0
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +4 -0
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +10 -0
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/_standalone/.next/server/app/_not-found/page.js +2 -0
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +2 -0
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/agents/page.js +2 -0
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/a2a/agents/route.js +1 -0
- package/_standalone/.next/server/app/api/a2a/agents/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/a2a/delegations/route.js +1 -0
- package/_standalone/.next/server/app/api/a2a/delegations/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/a2a/discover/route.js +1 -0
- package/_standalone/.next/server/app/api/a2a/discover/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/a2a/route.js +1 -0
- package/_standalone/.next/server/app/api/a2a/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/acp/config/route.js +1 -0
- package/_standalone/.next/server/app/api/acp/config/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/acp/detect/route.js +1 -0
- package/_standalone/.next/server/app/api/acp/detect/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/acp/install/route.js +1 -0
- package/_standalone/.next/server/app/api/acp/install/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/acp/registry/route.js +1 -0
- package/_standalone/.next/server/app/api/acp/registry/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/acp/session/route.js +1 -0
- package/_standalone/.next/server/app/api/acp/session/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/agent-activity/route.js +1 -0
- package/_standalone/.next/server/app/api/agent-activity/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/agents/copy-skill/route.js +1 -0
- package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/detect/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/ask/route.js +130 -0
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/ask-sessions/route.js +1 -0
- package/_standalone/.next/server/app/api/ask-sessions/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/auth/route.js +1 -0
- package/_standalone/.next/server/app/api/auth/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/backlinks/route.js +1 -0
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/bootstrap/route.js +1 -0
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/changes/route.js +1 -0
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/channels/verify/route.js +1 -0
- package/_standalone/.next/server/app/api/channels/verify/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/connect/route.js +1 -0
- package/_standalone/.next/server/app/api/connect/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/embedding/route.js +1 -0
- package/_standalone/.next/server/app/api/embedding/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/export/route.js +57 -0
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/extract-pdf/route.js +3 -0
- package/_standalone/.next/server/app/api/extract-pdf/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/file/import/route.js +4 -0
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/file/raw/route.js +1 -0
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/file/route.js +1 -0
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/files/route.js +1 -0
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/git/route.js +1 -0
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/graph/route.js +1 -0
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/health/route.js +1 -0
- package/_standalone/.next/server/app/api/health/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/activity/route.js +1 -0
- package/_standalone/.next/server/app/api/im/activity/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/config/route.js +1 -0
- package/_standalone/.next/server/app/api/im/config/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/status/route.js +7 -0
- package/_standalone/.next/server/app/api/im/status/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/test/route.js +1 -0
- package/_standalone/.next/server/app/api/im/test/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/webhook/feishu/route.js +7 -0
- package/_standalone/.next/server/app/api/im/webhook/feishu/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/im/webhook-status/route.js +7 -0
- package/_standalone/.next/server/app/api/im/webhook-status/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/inbox/clip/route.js +8 -0
- package/_standalone/.next/server/app/api/inbox/clip/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/inbox/route.js +1 -0
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/init/route.js +1 -0
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/lint/route.js +1 -0
- package/_standalone/.next/server/app/api/lint/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/direct-tools/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/direct-tools/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/install/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/install/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/install-skill/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/install-skill/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/restart/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/restart/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/status/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/status/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/tools/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/tools/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/mcp/uninstall/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/uninstall/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/monitoring/route.js +1 -0
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/recent-files/route.js +1 -0
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/restart/route.js +1 -0
- package/_standalone/.next/server/app/api/restart/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/search/route.js +1 -0
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -0
- package/_standalone/.next/server/app/api/settings/list-models/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -0
- package/_standalone/.next/server/app/api/settings/reset-token/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/settings/route.js +1 -0
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -0
- package/_standalone/.next/server/app/api/settings/test-key/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/setup/check-path/route.js +1 -0
- package/_standalone/.next/server/app/api/setup/check-path/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/setup/check-port/route.js +1 -0
- package/_standalone/.next/server/app/api/setup/check-port/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/setup/generate-token/route.js +1 -0
- package/_standalone/.next/server/app/api/setup/generate-token/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/setup/ls/route.js +1 -0
- package/_standalone/.next/server/app/api/setup/ls/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/setup/route.js +1 -0
- package/_standalone/.next/server/app/api/setup/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/skills/route.js +6 -0
- package/_standalone/.next/server/app/api/skills/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/space-overview/route.js +60 -0
- package/_standalone/.next/server/app/api/space-overview/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/sync/route.js +1 -0
- package/_standalone/.next/server/app/api/sync/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/tree-version/route.js +1 -0
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/uninstall/route.js +4 -0
- package/_standalone/.next/server/app/api/uninstall/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/update/route.js +1 -0
- package/_standalone/.next/server/app/api/update/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/update-check/route.js +1 -0
- package/_standalone/.next/server/app/api/update-check/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/update-status/route.js +1 -0
- package/_standalone/.next/server/app/api/update-status/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/workflows/route.js +9 -0
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/changelog/page.js +2 -0
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/changes/page.js +2 -0
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/echo/[segment]/page.js +158 -0
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/echo/page.js +2 -0
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/explore/page.js +5 -0
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/help/page.js +2 -0
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/icon.svg/route.js +1 -0
- package/_standalone/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/icon.svg.body +37 -0
- package/_standalone/.next/server/app/icon.svg.meta +1 -0
- package/_standalone/.next/server/app/inbox/history/page.js +2 -0
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/login/page.js +2 -0
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/page.js +2 -0
- package/_standalone/.next/server/app/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/setup/page.js +2 -0
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/trash/page.js +3 -0
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/view/[...path]/page.js +13 -0
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app-paths-manifest.json +92 -0
- package/_standalone/.next/server/chunks/1076.js +1 -0
- package/_standalone/.next/server/chunks/1104.js +1 -0
- package/_standalone/.next/server/chunks/1299.js +133 -0
- package/_standalone/.next/server/chunks/1546.js +1 -0
- package/_standalone/.next/server/chunks/1549.js +1 -0
- package/_standalone/.next/server/chunks/1550.js +1 -0
- package/_standalone/.next/server/chunks/206.js +2 -0
- package/_standalone/.next/server/chunks/2250.js +38 -0
- package/_standalone/.next/server/chunks/2449.js +54 -0
- package/_standalone/.next/server/chunks/3036.js +1 -0
- package/_standalone/.next/server/chunks/3123.js +3 -0
- package/_standalone/.next/server/chunks/3437.js +60 -0
- package/_standalone/.next/server/chunks/3445.js +22 -0
- package/_standalone/.next/server/chunks/3528.js +1 -0
- package/_standalone/.next/server/chunks/3800.js +1 -0
- package/_standalone/.next/server/chunks/3965.js +11 -0
- package/_standalone/.next/server/chunks/4241.js +1 -0
- package/_standalone/.next/server/chunks/5165.js +1 -0
- package/_standalone/.next/server/chunks/5299.js +1 -0
- package/_standalone/.next/server/chunks/5464.js +9 -0
- package/_standalone/.next/server/chunks/5576.js +36 -0
- package/_standalone/.next/server/chunks/5592.js +1 -0
- package/_standalone/.next/server/chunks/5945.js +1 -0
- package/_standalone/.next/server/chunks/6022.js +193 -0
- package/_standalone/.next/server/chunks/6117.js +13 -0
- package/_standalone/.next/server/chunks/6140.js +1 -0
- package/_standalone/.next/server/chunks/6539.js +1 -0
- package/_standalone/.next/server/chunks/6949.js +1 -0
- package/_standalone/.next/server/chunks/7032.js +1 -0
- package/_standalone/.next/server/chunks/7198.js +23 -0
- package/_standalone/.next/server/chunks/7712.js +1 -0
- package/_standalone/.next/server/chunks/791.js +1 -0
- package/_standalone/.next/server/chunks/7948.js +2 -0
- package/_standalone/.next/server/chunks/8326.js +1 -0
- package/_standalone/.next/server/chunks/8388.js +17 -0
- package/_standalone/.next/server/chunks/9503.js +1 -0
- package/_standalone/.next/server/chunks/953.js +57 -0
- package/_standalone/.next/server/chunks/9938.js +24 -0
- package/_standalone/.next/server/functions-config-manifest.json +22 -0
- package/_standalone/.next/server/instrumentation.js +1 -0
- package/_standalone/.next/server/middleware-build-manifest.js +1 -0
- package/_standalone/.next/server/middleware-manifest.json +6 -0
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/_standalone/.next/server/middleware.js +15 -0
- package/_standalone/.next/server/next-font-manifest.js +1 -0
- package/_standalone/.next/server/next-font-manifest.json +1 -0
- package/_standalone/.next/server/pages/500.html +2 -0
- package/_standalone/.next/server/pages-manifest.json +3 -0
- package/_standalone/.next/server/server-reference-manifest.js +1 -0
- package/_standalone/.next/server/server-reference-manifest.json +1 -0
- package/_standalone/.next/server/webpack-runtime.js +1 -0
- package/_standalone/.next/static/Dn8EHqUedSzanCfrM8WWS/_buildManifest.js +1 -0
- package/_standalone/.next/static/Dn8EHqUedSzanCfrM8WWS/_ssgManifest.js +1 -0
- package/_standalone/.next/static/chunks/1239.10a0710c2772ab34.js +1 -0
- package/_standalone/.next/static/chunks/1477.33df3cce509578c2.js +1 -0
- package/_standalone/.next/static/chunks/1814.8a1fef15856dce84.js +1 -0
- package/_standalone/.next/static/chunks/1a258343-9803591e4aaee1f6.js +2 -0
- package/_standalone/.next/static/chunks/2631.dc56e83472bde281.js +1 -0
- package/_standalone/.next/static/chunks/2647.e0b67d0c432ad7e7.js +18 -0
- package/_standalone/.next/static/chunks/2872.045858d00bd8307f.js +8 -0
- package/_standalone/.next/static/chunks/2935.a7fdb3a7fb681d61.js +1 -0
- package/_standalone/.next/static/chunks/2968.f10ccee9e7e2324d.js +2 -0
- package/_standalone/.next/static/chunks/3013-3d4aa69636f4a7bd.js +1 -0
- package/_standalone/.next/static/chunks/3523-4e4bb442a2d2f4f5.js +1 -0
- package/_standalone/.next/static/chunks/3562-fadd7213646defa8.js +1 -0
- package/_standalone/.next/static/chunks/362.2bfa40005767b578.js +2 -0
- package/_standalone/.next/static/chunks/363642f4.1ab94f095d889c3a.js +1 -0
- package/_standalone/.next/static/chunks/3637.2b2697198968d83f.js +1 -0
- package/_standalone/.next/static/chunks/3794-c66343cd6a42366f.js +2 -0
- package/_standalone/.next/static/chunks/4033.6666700547b20141.js +1 -0
- package/_standalone/.next/static/chunks/4094.09364c01df411380.js +1 -0
- package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
- package/_standalone/.next/static/chunks/4568-6791c1bc47a63f80.js +1 -0
- package/_standalone/.next/static/chunks/4925-6e9a5eb97c10d532.js +1 -0
- package/_standalone/.next/static/chunks/4bd1b696-10cb4c9d2844a506.js +1 -0
- package/_standalone/.next/static/chunks/516.24ee058b1d4b1fed.js +8 -0
- package/_standalone/.next/static/chunks/5331.c89084fd7f67887d.js +48 -0
- package/_standalone/.next/static/chunks/5358-15618fc9b20018ee.js +28 -0
- package/_standalone/.next/static/chunks/54a60aa6.7a74f547ec1bdd5a.js +79 -0
- package/_standalone/.next/static/chunks/5576.c468f41f1126e837.js +9 -0
- package/_standalone/.next/static/chunks/5581-c3be891101a3e511.js +29 -0
- package/_standalone/.next/static/chunks/5592-85f69f6161d7a028.js +1 -0
- package/_standalone/.next/static/chunks/5627.c4337d7289acb31f.js +1 -0
- package/_standalone/.next/static/chunks/5956.b445072b35915129.js +1 -0
- package/_standalone/.next/static/chunks/6087.e4ec392aa2239719.js +1 -0
- package/_standalone/.next/static/chunks/6636-1b6d7047cffa7dbc.js +6 -0
- package/_standalone/.next/static/chunks/6826.7b7d94dd0fd83812.js +1 -0
- package/_standalone/.next/static/chunks/6902-edc5c487c696bd0b.js +3 -0
- package/_standalone/.next/static/chunks/7025-9a4369e5f94b3915.js +1 -0
- package/_standalone/.next/static/chunks/70e0d97a.6903b8594c742784.js +1 -0
- package/_standalone/.next/static/chunks/7249-b0a9c77b9a84b11c.js +11 -0
- package/_standalone/.next/static/chunks/7540-811b466ff82538ac.js +13 -0
- package/_standalone/.next/static/chunks/7753.63831cfc54a55fbb.js +1 -0
- package/_standalone/.next/static/chunks/8252-888b87f30fde5786.js +1 -0
- package/_standalone/.next/static/chunks/8409-de5726a4a278d28f.js +1 -0
- package/_standalone/.next/static/chunks/862.9f526e964489e2e5.js +1 -0
- package/_standalone/.next/static/chunks/8719-becd06dd739825ea.js +1 -0
- package/_standalone/.next/static/chunks/9207-3b19c55a3c974a09.js +1 -0
- package/_standalone/.next/static/chunks/9300.118b8c840634383f.js +28 -0
- package/_standalone/.next/static/chunks/95247769.3b5caae1c1a76ce1.js +4 -0
- package/_standalone/.next/static/chunks/9688-85f7c423a1dce82c.js +1 -0
- package/_standalone/.next/static/chunks/9748-3e19c82c77c98c0a.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/_global-error/page-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/_not-found/page-a4fd983951533d8f.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-d4d8277433073461.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-6f021b5bec8169d5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/channels/verify/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/connect/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/embedding/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/raw/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/activity/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/config/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/status/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/test/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/webhook/feishu/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/webhook-status/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/clip/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/lint/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/tools/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/space-overview/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/changelog/page-297e0af14471e935.js +1 -0
- package/_standalone/.next/static/chunks/app/changes/page-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-75a6330292613587.js +157 -0
- package/_standalone/.next/static/chunks/app/echo/page-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/error-fc1491d554a28327.js +1 -0
- package/_standalone/.next/static/chunks/app/explore/page-d9f58000bc445360.js +4 -0
- package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
- package/_standalone/.next/static/chunks/app/help/page-f8cb806371b3175f.js +1 -0
- package/_standalone/.next/static/chunks/app/inbox/history/page-26e71fb6f716a4c4.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-fcbde5bee626d21a.js +133 -0
- package/_standalone/.next/static/chunks/app/loading-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/login/page-686d7c84262f2e7c.js +1 -0
- package/_standalone/.next/static/chunks/app/page-174dadc481ca9c86.js +1 -0
- package/_standalone/.next/static/chunks/app/setup/page-e40f3c5704c3c857.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/error-ec03f5d0a5b93073.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-6e0c75ad26ce8572.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
- package/_standalone/.next/static/chunks/e71f6c19-4df85185bf989b49.js +1 -0
- package/_standalone/.next/static/chunks/framework-a17258b880e6120c.js +1 -0
- package/_standalone/.next/static/chunks/main-app-85439cf6d0f88401.js +1 -0
- package/_standalone/.next/static/chunks/main-dbbd70b57dd91565.js +5 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2471b275cd82ff8d.js +1 -0
- package/_standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/_standalone/.next/static/chunks/webpack-dc486b68118d1328.js +1 -0
- package/_standalone/.next/static/css/86153be34ee0f215.css +1 -0
- package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
- package/_standalone/.next/static/media/0086f8992871c45b-s.woff2 +0 -0
- package/_standalone/.next/static/media/011e180705008d6f-s.woff2 +0 -0
- package/_standalone/.next/static/media/03b436aa846269de-s.woff2 +0 -0
- package/_standalone/.next/static/media/05a58683eb2ffca7-s.woff2 +0 -0
- package/_standalone/.next/static/media/08aedeceaf1dcd57-s.woff2 +0 -0
- package/_standalone/.next/static/media/110cbef534704ef8-s.p.woff2 +0 -0
- package/_standalone/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
- package/_standalone/.next/static/media/20535187d867b7b9-s.woff2 +0 -0
- package/_standalone/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
- package/_standalone/.next/static/media/26d4368bf94c0ec4-s.p.woff2 +0 -0
- package/_standalone/.next/static/media/2801417b65625cf5-s.woff2 +0 -0
- package/_standalone/.next/static/media/28793f5c5e3d822d-s.woff2 +0 -0
- package/_standalone/.next/static/media/36008747766f78c6-s.woff2 +0 -0
- package/_standalone/.next/static/media/4f19a67e08e18f3c-s.woff2 +0 -0
- package/_standalone/.next/static/media/5356a6a4f2c8c8d8-s.woff2 +0 -0
- package/_standalone/.next/static/media/58f386aa6b1a2a92-s.woff2 +0 -0
- package/_standalone/.next/static/media/5c0c2bcbaa4149ca-s.p.woff2 +0 -0
- package/_standalone/.next/static/media/6d38f9d4e0f4772b-s.woff2 +0 -0
- package/_standalone/.next/static/media/714ad00c3d008517-s.woff2 +0 -0
- package/_standalone/.next/static/media/73cb51aac9c97f90-s.woff2 +0 -0
- package/_standalone/.next/static/media/7b19b489dc6743ba-s.woff2 +0 -0
- package/_standalone/.next/static/media/7ba5fb2a8c88521c-s.woff2 +0 -0
- package/_standalone/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
- package/_standalone/.next/static/media/92eeb95d069020cc-s.woff2 +0 -0
- package/_standalone/.next/static/media/99bbede094da1c3f-s.woff2 +0 -0
- package/_standalone/.next/static/media/ab00a911ac2adf48-s.woff2 +0 -0
- package/_standalone/.next/static/media/b3bf17a9041d9433-s.woff2 +0 -0
- package/_standalone/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
- package/_standalone/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
- package/_standalone/.next/static/media/c80eef6a0c97798e-s.woff2 +0 -0
- package/_standalone/.next/static/media/c9c3823090ec8b55-s.woff2 +0 -0
- package/_standalone/.next/static/media/d26bbd13d6b70f89-s.woff2 +0 -0
- package/_standalone/.next/static/media/d2f466e69dd54845-s.woff2 +0 -0
- package/_standalone/.next/static/media/d3ebbfd689654d3a-s.p.woff2 +0 -0
- package/_standalone/.next/static/media/db96af6b531dc71f-s.p.woff2 +0 -0
- package/_standalone/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
- package/_standalone/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
- package/_standalone/.next/trace +72 -0
- package/_standalone/.next/types/routes.d.ts +158 -0
- package/_standalone/.next/types/validator.ts +844 -0
- package/_standalone/__tests__/a2a/agent-card.test.ts +60 -0
- package/_standalone/__tests__/a2a/client.test.ts +264 -0
- package/_standalone/__tests__/a2a/delegation-history.test.ts +133 -0
- package/_standalone/__tests__/a2a/orchestrator.test.ts +280 -0
- package/_standalone/__tests__/a2a/task-handler.test.ts +86 -0
- package/_standalone/__tests__/acp/acp-types.test.ts +273 -0
- package/_standalone/__tests__/acp/agent-descriptors.test.ts +284 -0
- package/_standalone/__tests__/acp/bridge.test.ts +188 -0
- package/_standalone/__tests__/acp/registry.test.ts +193 -0
- package/_standalone/__tests__/acp/session.test.ts +466 -0
- package/_standalone/__tests__/agent/backend-retry.test.ts +143 -0
- package/_standalone/__tests__/agent/chat-mode.test.ts +103 -0
- package/_standalone/__tests__/agent/loop-detection.test.ts +85 -0
- package/_standalone/__tests__/agent/paragraph-extract.test.ts +76 -0
- package/_standalone/__tests__/agent/prompt.test.ts +21 -0
- package/_standalone/__tests__/agent/provider-endpoints.test.ts +70 -0
- package/_standalone/__tests__/agent/retry-reconnect.test.ts +120 -0
- package/_standalone/__tests__/agent/stream-consumer-status.test.ts +103 -0
- package/_standalone/__tests__/agent/token-estimation.test.ts +54 -0
- package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +181 -0
- package/_standalone/__tests__/agents/agents-content-model.test.ts +209 -0
- package/_standalone/__tests__/api/ask-attachments.test.ts +194 -0
- package/_standalone/__tests__/api/backlinks.test.ts +55 -0
- package/_standalone/__tests__/api/bootstrap.test.ts +70 -0
- package/_standalone/__tests__/api/changes.test.ts +96 -0
- package/_standalone/__tests__/api/channels-verify.test.ts +75 -0
- package/_standalone/__tests__/api/check-port.test.ts +100 -0
- package/_standalone/__tests__/api/extract-pdf.test.ts +265 -0
- package/_standalone/__tests__/api/file.test.ts +423 -0
- package/_standalone/__tests__/api/files.test.ts +43 -0
- package/_standalone/__tests__/api/git.test.ts +80 -0
- package/_standalone/__tests__/api/im-activity.test.ts +36 -0
- package/_standalone/__tests__/api/im-config-feishu-conversation.test.ts +103 -0
- package/_standalone/__tests__/api/im-webhook-feishu.test.ts +88 -0
- package/_standalone/__tests__/api/install-skill.test.ts +283 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +400 -0
- package/_standalone/__tests__/api/recent-files.test.ts +43 -0
- package/_standalone/__tests__/api/retry.test.ts +49 -0
- package/_standalone/__tests__/api/search.test.ts +48 -0
- package/_standalone/__tests__/api/settings.test.ts +56 -0
- package/_standalone/__tests__/api/setup-paths.test.ts +81 -0
- package/_standalone/__tests__/api/setup.test.ts +428 -0
- package/_standalone/__tests__/api/skills.test.ts +362 -0
- package/_standalone/__tests__/api/space-overview.test.ts +79 -0
- package/_standalone/__tests__/api/test-key.test.ts +187 -0
- package/_standalone/__tests__/ask/ask-content-agent-selection.test.tsx +266 -0
- package/_standalone/__tests__/ask/ask-content-attach-menu.test.tsx +205 -0
- package/_standalone/__tests__/ask/ask-content-input-during-run.test.tsx +248 -0
- package/_standalone/__tests__/ask/auto-reconnect.test.ts +142 -0
- package/_standalone/__tests__/ask/message-list-agent-attribution.test.tsx +71 -0
- package/_standalone/__tests__/ask/mode-capsule.test.ts +95 -0
- package/_standalone/__tests__/ask/non-streaming-api.test.ts +281 -0
- package/_standalone/__tests__/ask/save-insight.test.ts +84 -0
- package/_standalone/__tests__/ask/save-session.test.ts +73 -0
- package/_standalone/__tests__/channel-cli-layers.test.ts +108 -0
- package/_standalone/__tests__/channel-cli-subprocess.test.ts +73 -0
- package/_standalone/__tests__/channel-command-env.test.ts +82 -0
- package/_standalone/__tests__/channel-mgmt.test.js +75 -0
- package/_standalone/__tests__/channel-prompts.test.ts +48 -0
- package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
- package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
- package/_standalone/__tests__/compile/compile-incremental.test.ts +103 -0
- package/_standalone/__tests__/compile/compile-meta.test.ts +74 -0
- package/_standalone/__tests__/compile/compile.test.ts +98 -0
- package/_standalone/__tests__/components/UpdateToast.test.ts +344 -0
- package/_standalone/__tests__/components/breadcrumb-header-ux.test.ts +14 -0
- package/_standalone/__tests__/components/channel-detail-redesign.test.tsx +222 -0
- package/_standalone/__tests__/components/header-toc-vertical-alignment.test.ts +23 -0
- package/_standalone/__tests__/components/line-diff.test.ts +37 -0
- package/_standalone/__tests__/components/search-modal-drag-drop.test.tsx +466 -0
- package/_standalone/__tests__/components/table-of-contents-header-layout.test.ts +15 -0
- package/_standalone/__tests__/components/view-page-header-layout.test.ts +13 -0
- package/_standalone/__tests__/components/view-page-header-scroll-stability.test.ts +34 -0
- package/_standalone/__tests__/core/agent-audit-log.test.ts +71 -0
- package/_standalone/__tests__/core/api.test.ts +135 -0
- package/_standalone/__tests__/core/atomic-append.test.ts +47 -0
- package/_standalone/__tests__/core/backlinks.test.ts +72 -0
- package/_standalone/__tests__/core/bm25-search.test.ts +78 -0
- package/_standalone/__tests__/core/chinese-segmentation.test.ts +69 -0
- package/_standalone/__tests__/core/config.test.ts +101 -0
- package/_standalone/__tests__/core/content-changes.test.ts +131 -0
- package/_standalone/__tests__/core/context.test.ts +50 -0
- package/_standalone/__tests__/core/create-space.test.ts +39 -0
- package/_standalone/__tests__/core/csv.test.ts +49 -0
- package/_standalone/__tests__/core/detect-agents.test.ts +139 -0
- package/_standalone/__tests__/core/errors.test.ts +119 -0
- package/_standalone/__tests__/core/file-convert.test.ts +148 -0
- package/_standalone/__tests__/core/fs-ops.test.ts +162 -0
- package/_standalone/__tests__/core/helpers.ts +35 -0
- package/_standalone/__tests__/core/hybrid-search.test.ts +109 -0
- package/_standalone/__tests__/core/inbox-url-utils.test.ts +37 -0
- package/_standalone/__tests__/core/inbox.test.ts +418 -0
- package/_standalone/__tests__/core/jwt.test.ts +62 -0
- package/_standalone/__tests__/core/lines.test.ts +148 -0
- package/_standalone/__tests__/core/link-index.test.ts +107 -0
- package/_standalone/__tests__/core/list-spaces.test.ts +45 -0
- package/_standalone/__tests__/core/metrics.test.ts +103 -0
- package/_standalone/__tests__/core/organize.test.ts +90 -0
- package/_standalone/__tests__/core/request-scoped-tools.test.ts +19 -0
- package/_standalone/__tests__/core/resolve-script.test.ts +115 -0
- package/_standalone/__tests__/core/search-index.test.ts +239 -0
- package/_standalone/__tests__/core/search.test.ts +68 -0
- package/_standalone/__tests__/core/security.test.ts +85 -0
- package/_standalone/__tests__/core/skill-install-logic.test.ts +230 -0
- package/_standalone/__tests__/core/space-aware-tree.test.ts +162 -0
- package/_standalone/__tests__/core/space-scaffold.test.ts +120 -0
- package/_standalone/__tests__/core/sync-status.test.ts +121 -0
- package/_standalone/__tests__/core/sync.test.ts +354 -0
- package/_standalone/__tests__/core/tools.test.ts +339 -0
- package/_standalone/__tests__/core/tree-async.test.ts +43 -0
- package/_standalone/__tests__/core/tree.test.ts +160 -0
- package/_standalone/__tests__/core/web-clip.test.ts +229 -0
- package/_standalone/__tests__/hooks/useAiOrganize.test.ts +633 -0
- package/_standalone/__tests__/hooks/useMention.test.ts +92 -0
- package/_standalone/__tests__/hooks/useSlashCommand.test.ts +152 -0
- package/_standalone/__tests__/im/activity.test.ts +74 -0
- package/_standalone/__tests__/im/config.test.ts +114 -0
- package/_standalone/__tests__/im/dingtalk.test.ts +23 -0
- package/_standalone/__tests__/im/feishu-conversation-processing.test.ts +96 -0
- package/_standalone/__tests__/im/feishu-webhook.test.ts +159 -0
- package/_standalone/__tests__/im/format.test.ts +134 -0
- package/_standalone/__tests__/im/qq.test.ts +23 -0
- package/_standalone/__tests__/im/types.test.ts +97 -0
- package/_standalone/__tests__/im/wechat.test.ts +23 -0
- package/_standalone/__tests__/integration/drag-drop-format-verification.test.ts +289 -0
- package/_standalone/__tests__/integration/search-askcontent-drag-drop.test.tsx +565 -0
- package/_standalone/__tests__/lib/ask-agent.test.ts +84 -0
- package/_standalone/__tests__/lib/daily-echo-aggregation.test.ts +225 -0
- package/_standalone/__tests__/lib/daily-echo-config.test.ts +254 -0
- package/_standalone/__tests__/lib/daily-echo-prompts.test.ts +236 -0
- package/_standalone/__tests__/lib/daily-echo-snapshot.test.ts +86 -0
- package/_standalone/__tests__/lib/daily-echo-storage.test.ts +392 -0
- package/_standalone/__tests__/lib/echo-insight-prompt.test.ts +57 -0
- package/_standalone/__tests__/lib/echo-pages-visual-i18n.test.ts +31 -0
- package/_standalone/__tests__/lib/echo-segments.test.ts +48 -0
- package/_standalone/__tests__/lib/explore-use-cases.test.ts +70 -0
- package/_standalone/__tests__/lib/i18n-new-keys.test.ts +153 -0
- package/_standalone/__tests__/lib/mcp-snippets.test.ts +163 -0
- package/_standalone/__tests__/lib/mindos-copy-alignment.test.ts +36 -0
- package/_standalone/__tests__/lib/pi-extensions.test.ts +42 -0
- package/_standalone/__tests__/lib/pi-skills.test.ts +117 -0
- package/_standalone/__tests__/lib/session-store.test.ts +58 -0
- package/_standalone/__tests__/lib/settings-ai-client.test.ts +93 -0
- package/_standalone/__tests__/lib/walkthrough-steps.test.ts +25 -0
- package/_standalone/__tests__/lib/web-search.test.ts +141 -0
- package/_standalone/__tests__/lint/lint.test.ts +257 -0
- package/_standalone/__tests__/middleware.test.ts +112 -0
- package/_standalone/__tests__/obsidian-compat/command-registry.test.ts +56 -0
- package/_standalone/__tests__/obsidian-compat/component-plugin.test.ts +130 -0
- package/_standalone/__tests__/obsidian-compat/integration.test.ts +160 -0
- package/_standalone/__tests__/obsidian-compat/loader.test.ts +130 -0
- package/_standalone/__tests__/obsidian-compat/manifest.test.ts +58 -0
- package/_standalone/__tests__/obsidian-compat/plugin-manager.test.ts +112 -0
- package/_standalone/__tests__/obsidian-compat/ui.test.ts +71 -0
- package/_standalone/__tests__/obsidian-compat/vault.test.ts +93 -0
- package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +66 -0
- package/_standalone/__tests__/panels/search-panel-drag-drop.test.tsx +259 -0
- package/_standalone/__tests__/renderers/csv-core-builtin.test.ts +11 -0
- package/_standalone/__tests__/renderers/plugin-renderers-filtering.test.ts +49 -0
- package/_standalone/__tests__/renderers/renderer-surface-classification.test.ts +45 -0
- package/_standalone/__tests__/renderers/workflow-yaml-execution.test.ts +232 -0
- package/_standalone/__tests__/renderers/workflow-yaml-parser.test.ts +181 -0
- package/_standalone/__tests__/renderers/workflow-yaml-serializer.test.ts +64 -0
- package/_standalone/__tests__/settings/activity-bar-rail-navigation.test.tsx +178 -0
- package/_standalone/__tests__/settings/activity-bar-update-badge.test.tsx +91 -0
- package/_standalone/__tests__/settings/settings-update-badge.test.tsx +134 -0
- package/_standalone/__tests__/settings/update-tab-availability-sync.test.tsx +115 -0
- package/_standalone/__tests__/settings/update-tab-browser.test.tsx +159 -0
- package/_standalone/__tests__/settings/update-tab-desktop.test.tsx +169 -0
- package/_standalone/__tests__/setup.ts +100 -0
- package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +27 -0
- package/_standalone/app/globals.css +534 -0
- package/_standalone/app/icon.svg +37 -0
- package/_standalone/components/ActivityBar.tsx +293 -0
- package/_standalone/components/AskFab.tsx +57 -0
- package/_standalone/components/AskModal.tsx +48 -0
- package/_standalone/components/Backlinks.tsx +75 -0
- package/_standalone/components/Breadcrumb.tsx +72 -0
- package/_standalone/components/CreateSpaceModal.tsx +235 -0
- package/_standalone/components/CsvView.tsx +346 -0
- package/_standalone/components/CustomSelect.tsx +256 -0
- package/_standalone/components/DirPicker.tsx +217 -0
- package/_standalone/components/EchoSpotlight.tsx +115 -0
- package/_standalone/components/Editor.tsx +242 -0
- package/_standalone/components/EditorWrapper.tsx +17 -0
- package/_standalone/components/ExportModal.tsx +223 -0
- package/_standalone/components/FileTree.tsx +619 -0
- package/_standalone/components/FindInPage.tsx +211 -0
- package/_standalone/components/GuideCard.tsx +358 -0
- package/_standalone/components/ImportModal.tsx +521 -0
- package/_standalone/components/JsonView.tsx +23 -0
- package/_standalone/components/KeyboardShortcuts.tsx +102 -0
- package/_standalone/components/Logo.tsx +39 -0
- package/_standalone/components/MarkdownEditor.tsx +94 -0
- package/_standalone/components/MarkdownView.tsx +192 -0
- package/_standalone/components/OnboardingView.tsx +164 -0
- package/_standalone/components/OrganizeToast.tsx +543 -0
- package/_standalone/components/Panel.tsx +385 -0
- package/_standalone/components/QuickSuggestion.tsx +69 -0
- package/_standalone/components/RightAgentDetailPanel.tsx +125 -0
- package/_standalone/components/RightAskPanel.tsx +174 -0
- package/_standalone/components/SearchModal.tsx +446 -0
- package/_standalone/components/SettingsModal.tsx +30 -0
- package/_standalone/components/Sidebar.tsx +190 -0
- package/_standalone/components/SidebarLayout.tsx +713 -0
- package/_standalone/components/SpaceInitToast.tsx +173 -0
- package/_standalone/components/SyncStatusBar.tsx +294 -0
- package/_standalone/components/SystemPulse.tsx +216 -0
- package/_standalone/components/TableOfContents.tsx +207 -0
- package/_standalone/components/ThemeToggle.tsx +36 -0
- package/_standalone/components/WysiwygEditor.tsx +165 -0
- package/_standalone/components/agents/AcpRegistrySection.tsx +457 -0
- package/_standalone/components/agents/ActivitySection.tsx +35 -0
- package/_standalone/components/agents/AgentActivitySection.tsx +225 -0
- package/_standalone/components/agents/AgentsContentChannelDetail.tsx +815 -0
- package/_standalone/components/agents/AgentsContentChannels.tsx +150 -0
- package/_standalone/components/agents/AgentsMcpSection.tsx +568 -0
- package/_standalone/components/agents/AgentsOverviewSection.tsx +488 -0
- package/_standalone/components/agents/AgentsPanelA2aTab.tsx +298 -0
- package/_standalone/components/agents/AgentsPanelSessionsTab.tsx +171 -0
- package/_standalone/components/agents/AgentsPrimitives.tsx +360 -0
- package/_standalone/components/agents/AgentsSkillsByAgent.tsx +231 -0
- package/_standalone/components/agents/AgentsSkillsSection.tsx +655 -0
- package/_standalone/components/agents/CustomAgentModal.tsx +691 -0
- package/_standalone/components/agents/DiscoverAgentModal.tsx +149 -0
- package/_standalone/components/agents/EnvPermSection.tsx +82 -0
- package/_standalone/components/agents/KnowledgeInteractionSection.tsx +241 -0
- package/_standalone/components/agents/RecentActivityFeed.tsx +137 -0
- package/_standalone/components/agents/RuntimeDiagSection.tsx +93 -0
- package/_standalone/components/agents/SkillDetailPopover.tsx +584 -0
- package/_standalone/components/agents/agent-activity-shared.tsx +110 -0
- package/_standalone/components/agents/agent-detail-primitives.tsx +43 -0
- package/_standalone/components/ask/AgentSelectorCapsule.tsx +218 -0
- package/_standalone/components/ask/AskContent.tsx +849 -0
- package/_standalone/components/ask/AskHeader.tsx +279 -0
- package/_standalone/components/ask/FileChip.tsx +181 -0
- package/_standalone/components/ask/HighlightMatch.tsx +14 -0
- package/_standalone/components/ask/MentionPopover.tsx +92 -0
- package/_standalone/components/ask/MessageList.tsx +371 -0
- package/_standalone/components/ask/ModeCapsule.tsx +180 -0
- package/_standalone/components/ask/ProviderModelCapsule.tsx +589 -0
- package/_standalone/components/ask/SaveInsightInline.tsx +286 -0
- package/_standalone/components/ask/SaveSessionInline.tsx +491 -0
- package/_standalone/components/ask/SessionHistory.tsx +164 -0
- package/_standalone/components/ask/SessionHistoryPanel.tsx +398 -0
- package/_standalone/components/ask/SessionTabBar.tsx +78 -0
- package/_standalone/components/ask/SlashCommandPopover.tsx +82 -0
- package/_standalone/components/ask/ThinkingBlock.tsx +56 -0
- package/_standalone/components/ask/ToolCallBlock.tsx +187 -0
- package/_standalone/components/ask/save-insight-utils.ts +101 -0
- package/_standalone/components/changes/ChangesBanner.tsx +145 -0
- package/_standalone/components/changes/ChangesContentPage.tsx +540 -0
- package/_standalone/components/echo/DailyEcho/DailyEchoReportButton.tsx +88 -0
- package/_standalone/components/echo/DailyEcho/DailyEchoReportDrawer.tsx +129 -0
- package/_standalone/components/echo/DailyEcho/sections/DailyEchoAlignmentSection.tsx +76 -0
- package/_standalone/components/echo/DailyEcho/sections/DailyEchoReflectionSection.tsx +37 -0
- package/_standalone/components/echo/DailyEcho/sections/DailyEchoSnapshotSection.tsx +39 -0
- package/_standalone/components/echo/DailyEcho/sections/DailyEchoThemesSection.tsx +44 -0
- package/_standalone/components/echo/EchoHero.tsx +35 -0
- package/_standalone/components/echo/EchoInsightCollapsible.tsx +197 -0
- package/_standalone/components/echo/EchoPageSections.tsx +51 -0
- package/_standalone/components/echo/EchoSegmentNav.tsx +57 -0
- package/_standalone/components/explore/UseCaseCard.tsx +56 -0
- package/_standalone/components/explore/use-cases.generated.ts +76 -0
- package/_standalone/components/explore/use-cases.yaml +185 -0
- package/_standalone/components/file-tree/FileTreeContextMenus.tsx +160 -0
- package/_standalone/components/home/InboxSection.tsx +707 -0
- package/_standalone/components/panels/AgentsPanel.tsx +203 -0
- package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +191 -0
- package/_standalone/components/panels/AgentsPanelAgentGroups.tsx +113 -0
- package/_standalone/components/panels/AgentsPanelAgentListRow.tsx +133 -0
- package/_standalone/components/panels/AgentsPanelHubNav.tsx +76 -0
- package/_standalone/components/panels/DiscoverPanel.tsx +212 -0
- package/_standalone/components/panels/EchoPanel.tsx +49 -0
- package/_standalone/components/panels/EchoSidebarStats.tsx +136 -0
- package/_standalone/components/panels/IMChannelsView.tsx +114 -0
- package/_standalone/components/panels/ImportHistoryPanel.tsx +195 -0
- package/_standalone/components/panels/PanelHeader.tsx +35 -0
- package/_standalone/components/panels/PanelNavRow.tsx +77 -0
- package/_standalone/components/panels/PluginsPanel.tsx +168 -0
- package/_standalone/components/panels/SearchPanel.tsx +283 -0
- package/_standalone/components/panels/SyncPopover.tsx +105 -0
- package/_standalone/components/panels/WorkflowsPanel.tsx +206 -0
- package/_standalone/components/panels/agents-panel-resolve-status.ts +13 -0
- package/_standalone/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +322 -0
- package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
- package/_standalone/components/renderers/backlinks/BacklinksRenderer.tsx +147 -0
- package/_standalone/components/renderers/change-log/ChangeLogRenderer.tsx +472 -0
- package/_standalone/components/renderers/config/ConfigRenderer.tsx +236 -0
- package/_standalone/components/renderers/csv/BoardView.tsx +146 -0
- package/_standalone/components/renderers/csv/ConfigPanel.tsx +119 -0
- package/_standalone/components/renderers/csv/CsvRenderer.tsx +70 -0
- package/_standalone/components/renderers/csv/EditableCell.tsx +43 -0
- package/_standalone/components/renderers/csv/GalleryView.tsx +40 -0
- package/_standalone/components/renderers/csv/TableView.tsx +163 -0
- package/_standalone/components/renderers/csv/types.ts +87 -0
- package/_standalone/components/renderers/graph/GraphRenderer.tsx +427 -0
- package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
- package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
- package/_standalone/components/renderers/summary/SummaryRenderer.tsx +226 -0
- package/_standalone/components/renderers/timeline/TimelineRenderer.tsx +213 -0
- package/_standalone/components/renderers/todo/FilterBar.tsx +106 -0
- package/_standalone/components/renderers/todo/SectionCard.tsx +354 -0
- package/_standalone/components/renderers/todo/TodoRenderer.tsx +137 -0
- package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
- package/_standalone/components/renderers/workflow-yaml/StepEditor.tsx +164 -0
- package/_standalone/components/renderers/workflow-yaml/WorkflowEditor.tsx +201 -0
- package/_standalone/components/renderers/workflow-yaml/WorkflowRunner.tsx +282 -0
- package/_standalone/components/renderers/workflow-yaml/WorkflowYamlRenderer.tsx +126 -0
- package/_standalone/components/renderers/workflow-yaml/execution.ts +229 -0
- package/_standalone/components/renderers/workflow-yaml/index.ts +6 -0
- package/_standalone/components/renderers/workflow-yaml/parser.ts +172 -0
- package/_standalone/components/renderers/workflow-yaml/selectors.tsx +574 -0
- package/_standalone/components/renderers/workflow-yaml/serializer.ts +56 -0
- package/_standalone/components/renderers/workflow-yaml/types.ts +46 -0
- package/_standalone/components/settings/AiTab.tsx +610 -0
- package/_standalone/components/settings/AppearanceTab.tsx +268 -0
- package/_standalone/components/settings/CustomProviderFields.tsx +121 -0
- package/_standalone/components/settings/CustomProvidersCard.tsx +154 -0
- package/_standalone/components/settings/DesktopUpdateCards.tsx +517 -0
- package/_standalone/components/settings/KnowledgeTab.tsx +719 -0
- package/_standalone/components/settings/McpAgentInstall.tsx +280 -0
- package/_standalone/components/settings/McpConnectGuides.tsx +439 -0
- package/_standalone/components/settings/McpExternalTools.tsx +252 -0
- package/_standalone/components/settings/McpPortSection.tsx +207 -0
- package/_standalone/components/settings/McpSkillCreateForm.tsx +177 -0
- package/_standalone/components/settings/McpSkillRow.tsx +144 -0
- package/_standalone/components/settings/McpSkillsSection.tsx +460 -0
- package/_standalone/components/settings/McpTab.tsx +310 -0
- package/_standalone/components/settings/MonitoringTab.tsx +202 -0
- package/_standalone/components/settings/PluginsTab.tsx +75 -0
- package/_standalone/components/settings/Primitives.tsx +325 -0
- package/_standalone/components/settings/ProviderModal.tsx +87 -0
- package/_standalone/components/settings/SettingsContent.tsx +437 -0
- package/_standalone/components/settings/ShortcutsTab.tsx +20 -0
- package/_standalone/components/settings/SyncEmptyState.tsx +233 -0
- package/_standalone/components/settings/SyncTab.tsx +556 -0
- package/_standalone/components/settings/TestButton.tsx +65 -0
- package/_standalone/components/settings/UninstallTab.tsx +169 -0
- package/_standalone/components/settings/UpdateTab.tsx +362 -0
- package/_standalone/components/settings/WebPortSection.tsx +263 -0
- package/_standalone/components/settings/types.ts +210 -0
- package/_standalone/components/settings/useCustomProviderForm.ts +132 -0
- package/_standalone/components/setup/StepAI.tsx +217 -0
- package/_standalone/components/setup/StepAgents.tsx +324 -0
- package/_standalone/components/setup/StepDots.tsx +51 -0
- package/_standalone/components/setup/StepKB.tsx +263 -0
- package/_standalone/components/setup/StepPorts.tsx +121 -0
- package/_standalone/components/setup/StepReview.tsx +414 -0
- package/_standalone/components/setup/StepSecurity.tsx +77 -0
- package/_standalone/components/setup/constants.tsx +14 -0
- package/_standalone/components/setup/types.ts +61 -0
- package/_standalone/components/shared/ModelInput.tsx +220 -0
- package/_standalone/components/shared/ProviderSelect.tsx +224 -0
- package/_standalone/components/ui/button.tsx +60 -0
- package/_standalone/components/ui/dialog.tsx +157 -0
- package/_standalone/components/ui/input.tsx +20 -0
- package/_standalone/components/ui/scroll-area.tsx +55 -0
- package/_standalone/components/ui/toggle.tsx +44 -0
- package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +266 -0
- package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +131 -0
- package/_standalone/components/walkthrough/index.ts +3 -0
- package/_standalone/components/walkthrough/steps.ts +23 -0
- package/_standalone/components.json +25 -0
- package/_standalone/eslint.config.mjs +18 -0
- package/_standalone/hooks/useA2aRegistry.ts +58 -0
- package/_standalone/hooks/useAcpConfig.ts +96 -0
- package/_standalone/hooks/useAcpDetection.ts +126 -0
- package/_standalone/hooks/useAcpRegistry.ts +86 -0
- package/_standalone/hooks/useAiOrganize.ts +464 -0
- package/_standalone/hooks/useAskChat.ts +339 -0
- package/_standalone/hooks/useAskModal.ts +51 -0
- package/_standalone/hooks/useAskPanel.ts +164 -0
- package/_standalone/hooks/useAskSession.ts +310 -0
- package/_standalone/hooks/useComposerVerticalResize.ts +74 -0
- package/_standalone/hooks/useDelegationHistory.ts +49 -0
- package/_standalone/hooks/useEditorImageUpload.ts +113 -0
- package/_standalone/hooks/useFileImport.ts +233 -0
- package/_standalone/hooks/useFileUpload.ts +206 -0
- package/_standalone/hooks/useImageUpload.ts +153 -0
- package/_standalone/hooks/useLeftPanel.ts +81 -0
- package/_standalone/hooks/useMention.ts +108 -0
- package/_standalone/hooks/useResizeDrag.ts +84 -0
- package/_standalone/hooks/useSettingsAiAvailable.ts +35 -0
- package/_standalone/hooks/useSlashCommand.ts +128 -0
- package/_standalone/instrumentation.ts +60 -0
- package/_standalone/lib/a2a/index.ts +31 -0
- package/_standalone/lib/acp/bridge.ts +144 -0
- package/_standalone/lib/acp/index.ts +38 -0
- package/_standalone/lib/acp/types.ts +247 -0
- package/_standalone/lib/agent/diff-worker.ts +51 -0
- package/_standalone/lib/agent/file-context.ts +116 -0
- package/_standalone/lib/agent/index.ts +8 -0
- package/_standalone/lib/agent/stream-consumer.ts +231 -0
- package/_standalone/lib/api/request-utils.ts +57 -0
- package/_standalone/lib/api.ts +83 -0
- package/_standalone/lib/ask-agent.ts +46 -0
- package/_standalone/lib/clipboard.ts +29 -0
- package/_standalone/lib/config/animation.ts +76 -0
- package/_standalone/lib/config/icon-scale.ts +35 -0
- package/_standalone/lib/config/panel-sizes.ts +58 -0
- package/_standalone/lib/core/types.ts +53 -0
- package/_standalone/lib/daily-echo/aggregator.ts +149 -0
- package/_standalone/lib/daily-echo/ask-llm.ts +77 -0
- package/_standalone/lib/daily-echo/config.ts +72 -0
- package/_standalone/lib/daily-echo/generator.ts +192 -0
- package/_standalone/lib/daily-echo/prompts.ts +200 -0
- package/_standalone/lib/daily-echo/snapshot.ts +19 -0
- package/_standalone/lib/daily-echo/types.ts +340 -0
- package/_standalone/lib/db/daily-echo-db.ts +194 -0
- package/_standalone/lib/echo-insight-prompt.ts +38 -0
- package/_standalone/lib/hooks/useDirectoryDragDrop.ts +94 -0
- package/_standalone/lib/hooks/useFocusTrap.ts +65 -0
- package/_standalone/lib/hooks/usePinnedFiles.ts +95 -0
- package/_standalone/lib/i18n/_core.ts +22 -0
- package/_standalone/lib/im/adapters/dingtalk.ts +210 -0
- package/_standalone/lib/im/adapters/discord.ts +128 -0
- package/_standalone/lib/im/adapters/feishu.ts +248 -0
- package/_standalone/lib/im/adapters/qq.ts +176 -0
- package/_standalone/lib/im/adapters/slack.ts +150 -0
- package/_standalone/lib/im/adapters/telegram.ts +156 -0
- package/_standalone/lib/im/adapters/wechat.ts +127 -0
- package/_standalone/lib/im/adapters/wecom.ts +160 -0
- package/_standalone/lib/im/index.ts +122 -0
- package/_standalone/lib/im/platforms.ts +152 -0
- package/_standalone/lib/image.ts +47 -0
- package/_standalone/lib/inbox-upload.ts +260 -0
- package/_standalone/lib/mcp-snippets.ts +107 -0
- package/_standalone/lib/obsidian-compat/command-registry.ts +85 -0
- package/_standalone/lib/obsidian-compat/component.ts +84 -0
- package/_standalone/lib/obsidian-compat/errors.ts +27 -0
- package/_standalone/lib/obsidian-compat/events.ts +50 -0
- package/_standalone/lib/obsidian-compat/index.ts +18 -0
- package/_standalone/lib/obsidian-compat/loader.ts +225 -0
- package/_standalone/lib/obsidian-compat/manifest.ts +90 -0
- package/_standalone/lib/obsidian-compat/plugin-manager.ts +149 -0
- package/_standalone/lib/obsidian-compat/shims/app.ts +74 -0
- package/_standalone/lib/obsidian-compat/shims/metadata-cache.ts +125 -0
- package/_standalone/lib/obsidian-compat/shims/obsidian.ts +25 -0
- package/_standalone/lib/obsidian-compat/shims/plugin.ts +111 -0
- package/_standalone/lib/obsidian-compat/shims/settings.ts +173 -0
- package/_standalone/lib/obsidian-compat/shims/ui.ts +73 -0
- package/_standalone/lib/obsidian-compat/shims/vault.ts +247 -0
- package/_standalone/lib/obsidian-compat/types.ts +197 -0
- package/_standalone/lib/organize-history.ts +80 -0
- package/_standalone/lib/parsing/parse-todos.ts +325 -0
- package/_standalone/lib/pdf-extract.ts +37 -0
- package/_standalone/lib/pi-integration/session-store.ts +62 -0
- package/_standalone/lib/renderers/useRendererState.ts +114 -0
- package/_standalone/lib/settings-ai-client.ts +36 -0
- package/_standalone/lib/space-ai-init.ts +66 -0
- package/_standalone/lib/stores/McpStoreInit.tsx +18 -0
- package/_standalone/lib/stores/WalkthroughInit.tsx +20 -0
- package/_standalone/lib/stores/hidden-files.ts +43 -0
- package/_standalone/lib/stores/locale-store.ts +69 -0
- package/_standalone/lib/stores/mcp-store.ts +166 -0
- package/_standalone/lib/stores/walkthrough-store.ts +150 -0
- package/_standalone/lib/toast.ts +85 -0
- package/_standalone/lib/utils.ts +45 -0
- package/_standalone/next-env.d.ts +6 -0
- package/_standalone/next.config.ts +44 -0
- package/_standalone/package-lock.json +18646 -0
- package/_standalone/package.json +104 -0
- package/_standalone/postcss.config.mjs +7 -0
- package/_standalone/proxy.ts +88 -0
- package/_standalone/public/file.svg +1 -0
- package/_standalone/public/globe.svg +1 -0
- package/_standalone/public/icons/icon-192.png +0 -0
- package/_standalone/public/icons/icon-512.png +0 -0
- package/_standalone/public/logo-square.svg +37 -0
- package/_standalone/public/logo.svg +37 -0
- package/_standalone/public/manifest.json +26 -0
- package/_standalone/public/next.svg +1 -0
- package/_standalone/public/sw.js +66 -0
- package/_standalone/public/vercel.svg +1 -0
- package/_standalone/public/window.svg +1 -0
- package/_standalone/scripts/extract-pdf.cjs +163 -0
- package/_standalone/scripts/generate-explore.ts +145 -0
- package/_standalone/server.js +38 -0
- package/_standalone/tsconfig.json +34 -0
- package/_standalone/tsconfig.tsbuildinfo +1 -0
- package/_standalone/types/semver.d.ts +8 -0
- package/_standalone/vitest.config.ts +14 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5358],{2431:(e,t,r)=>{r.d(t,{z:()=>a});var n=r(12115);let s="mindos:acp-detection";function a(){let e=(0,n.useRef)(function(){try{let e=sessionStorage.getItem(s);if(!e)return null;let t=JSON.parse(e);if("number"!=typeof t.ts||Date.now()-t.ts>18e5)return null;return t}catch{return null}}()),[t,r]=(0,n.useState)(e.current?.installed??[]),[a,o]=(0,n.useState)(e.current?.notInstalled??[]),[l,i]=(0,n.useState)(!e.current),[u,c]=(0,n.useState)(null),[d,m]=(0,n.useState)(0),f=(0,n.useRef)(!1),p=(0,n.useRef)(!1),x=(0,n.useCallback)(()=>{try{sessionStorage.removeItem(s)}catch{}e.current=null,p.current=!0,m(e=>e+1)},[]);return(0,n.useEffect)(()=>{let e=()=>x();return window.addEventListener("mindos:settings-changed",e),()=>window.removeEventListener("mindos:settings-changed",e)},[x]),(0,n.useEffect)(()=>{let n=p.current;if(p.current=!1,e.current&&Date.now()-e.current.ts<18e5&&0===d||f.current)return;f.current=!0;let l=t.length>0||a.length>0;l||i(!0),c(null);let u=!1;return fetch(`/api/acp/detect${n?"?force=1":""}`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(t=>{if(u)return;let n=t.installed??[],a=t.notInstalled??[];try{sessionStorage.setItem(s,JSON.stringify({installed:n,notInstalled:a,ts:Date.now()}))}catch{}e.current={installed:n,notInstalled:a,ts:Date.now()},r(n),o(a)}).catch(e=>{!u&&(l||c(e.message))}).finally(()=>{f.current=!1,u||i(!1)}),()=>{u=!0,f.current=!1}},[d]),{installedAgents:t,notInstalledAgents:a,loading:l,error:u,refresh:x}}},48391:(e,t,r)=>{r.d(t,{Oo:()=>s,dB:()=>c});var n=r(12115);function s(e){let t=e.replace(/<(thinking|reasoning|scratchpad)>[\s\S]*?<\/\1>/gi,"");return(t=t.replace(/<(?:thinking|reasoning|scratchpad)>[\s\S]*$/gi,"")).trim()}let a=new Set(["create_file","write_file","batch_create_files","append_to_file","insert_after_heading","update_section","edit_lines","delete_file","rename_file","move_file","append_csv"]),o=new Set(["read_file","read_lines","search","list_files"]);function l(e,t){return t&&"object"==typeof t?"string"==typeof t.path?t.path:"string"==typeof t.from_path?t.from_path:"batch_create_files"===e&&Array.isArray(t.files)?t.files.map(e=>e.path??"").filter(Boolean).join(", "):"":""}async function i(e){try{let t=await fetch(`/api/file?path=${encodeURIComponent(e)}&op=read_file`);if(!t.ok)return"";return(await t.json()).content??""}catch{return""}}async function u(e,t,r,n){let u=e.getReader(),c=new TextDecoder,d="",m=[],f=new Map,p="",x=0,g=new Set;try{for(;!n?.aborted;){let{done:e,value:n}=await u.read();if(e)break;let y=(d+=c.decode(n,{stream:!0})).split("\n");for(let e of(d=y.pop()??"",y)){let n,u=e.trim();if(!u.startsWith("data:"))continue;let c=u.slice(5).trim();if(!c)continue;try{n=JSON.parse(c)}catch{continue}let d=n.type;switch(d){case"tool_start":{var h,b,v;let e=n.toolName,s=n.toolCallId,u=n.args;x++;let c=(h=d,b=e,v=u,"text_delta"===h?{stage:"analyzing"}:"tool_start"===h&&b?a.has(b)?{stage:"writing",detail:l(b,v)||void 0}:o.has(b)?{stage:"reading",detail:v&&"object"==typeof v&&"path"in v&&"string"==typeof v.path?v.path:void 0}:{stage:"analyzing"}:null);if(c&&t({stageHint:c}),a.has(e)){let n=l(e,u),a="update";"create_file"===e||"batch_create_files"===e?a="create":("delete_file"===e||"rename_file"===e||"move_file"===e)&&(a="unknown"),"update"===a&&n&&!g.has(n)&&(g.add(n),i(n).then(e=>{e&&r(n,e)})),f.set(s,{name:e,path:n,action:a}),t({currentTool:{name:e,path:n}})}break}case"tool_end":{let e=n.toolCallId,r=!!n.isError,s=f.get(e);if(s){if("batch_create_files"===s.name)for(let t of s.path.split(", ").filter(Boolean))m.push({action:s.action,path:t,toolCallId:e,ok:!r});else m.push({action:s.action,path:s.path,toolCallId:e,ok:!r});f.delete(e),t({changes:[...m],currentTool:null})}break}case"text_delta":p+=n.delta??"",t({stageHint:{stage:"analyzing"},summary:s(p)});break;case"error":throw Error(n.message||"AI organize failed")}}}}finally{u.releaseLock()}return{changes:m,summary:s(p),toolCallCount:x}}function c(){let[e,t]=(0,n.useState)("idle"),[r,s]=(0,n.useState)([]),[a,o]=(0,n.useState)(null),[l,i]=(0,n.useState)(null),[c,d]=(0,n.useState)(""),[m,f]=(0,n.useState)(null),[p,x]=(0,n.useState)(0),g=(0,n.useRef)(null),h=(0,n.useRef)(0),b=(0,n.useRef)(new Map),[v,y]=(0,n.useState)([]),[j,w]=(0,n.useState)("upload"),k=(0,n.useRef)(0),[N,S]=(0,n.useState)(0),C=(0,n.useCallback)(async(e,r,n="upload")=>{t("organizing"),s([]),o(null),i({stage:"connecting"}),d(""),f(null),x(0),y(e.map(e=>e.name)),w(n),k.current=Date.now(),S(0),b.current=new Map,h.current=Date.now();let a=new AbortController;g.current=a;let l=e.map(e=>({name:e.name,content:e.content.length>2e4?e.content.slice(0,2e4)+"\n\n[...truncated to first ~20000 chars]":e.content}));try{let e=await fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:r}],uploadedFiles:l,maxSteps:15,mode:"organize"}),signal:a.signal});if(!e.ok){let t=`Request failed (${e.status})`;try{let r=await e.json();"string"==typeof r?.error?t=r.error:"object"==typeof r?.error&&r.error?.message?t=r.error.message:r?.message&&(t=r.message)}catch{}throw Error(t)}if(!e.body)throw Error("No response body");let n=await u(e.body,e=>{h.current=Date.now(),e.changes&&s(e.changes),void 0!==e.currentTool&&o(e.currentTool),e.stageHint&&i(e.stageHint),void 0!==e.summary&&d(e.summary)},(e,t)=>{b.current.set(e,t)},a.signal);s(n.changes),d(n.summary),x(n.toolCallCount),o(null),S(Date.now()-k.current),t("done")}catch(e){"AbortError"===e.name?t("idle"):(f(e.message),t("error"))}finally{g.current=null}},[]),A=(0,n.useCallback)(()=>{g.current?.abort()},[]),E=(0,n.useCallback)(async e=>{let t=r.find(t=>t.path===e&&t.ok&&!t.undone);if(!t)return!1;try{if("create"===t.action){if(!(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"delete_file",path:t.path})})).ok)return!1}else{if("update"!==t.action)return!1;let r=b.current.get(e);if(!r||!(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"write_file",path:t.path,content:r})})).ok)return!1}return s(t=>t.map(t=>t.path===e&&t.ok&&!t.undone?{...t,undone:!0}:t)),!0}catch{return!1}},[r]),R=(0,n.useCallback)(async()=>{let e=r.filter(e=>e.ok&&!e.undone&&("create"===e.action||"update"===e.action&&b.current.has(e.path))),t=0;for(let r of e)try{if("create"===r.action)(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"delete_file",path:r.path})})).ok&&t++;else if("update"===r.action){let e=b.current.get(r.path);e&&(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"write_file",path:r.path,content:e})})).ok&&t++}}catch{}return t>0&&s(e=>e.map(e=>!e.ok||e.undone?e:"create"===e.action||"update"===e.action&&b.current.has(e.path)?{...e,undone:!0}:e)),t},[r]),z=(0,n.useCallback)(e=>{let t=r.find(t=>t.path===e&&t.ok&&!t.undone);return!!t&&("create"===t.action||"update"===t.action&&b.current.has(e))},[r]),T=r.some(e=>e.ok&&!e.undone&&("create"===e.action||"update"===e.action&&b.current.has(e.path))),$=(0,n.useCallback)(()=>{t("idle"),s([]),o(null),i(null),d(""),f(null),x(0),y([]),w("upload"),S(0),k.current=0,b.current=new Map,h.current=0},[]);return{phase:e,changes:r,currentTool:a,stageHint:l,summary:c,error:m,toolCallCount:p,sourceFileNames:v,source:j,durationMs:N,snapshots:b,start:C,abort:A,undoOne:E,undoAll:R,canUndo:z,hasAnyUndoable:T,reset:$}}},59960:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(95155);function s({id:e,className:t="w-8 h-4"}){return(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 80 40",fill:"none",className:`${t} text-[var(--amber)]`,"aria-hidden":"true",children:[(0,n.jsxs)("defs",{children:[(0,n.jsxs)("linearGradient",{id:`grad-human-${e}`,x1:"35",y1:"20",x2:"5",y2:"20",gradientUnits:"userSpaceOnUse",children:[(0,n.jsx)("stop",{offset:"0%",stopColor:"currentColor",stopOpacity:"0.8"}),(0,n.jsx)("stop",{offset:"100%",stopColor:"currentColor",stopOpacity:"0.3"})]}),(0,n.jsxs)("linearGradient",{id:`grad-agent-${e}`,x1:"35",y1:"20",x2:"75",y2:"20",gradientUnits:"userSpaceOnUse",children:[(0,n.jsx)("stop",{offset:"0%",stopColor:"currentColor",stopOpacity:"0.8"}),(0,n.jsx)("stop",{offset:"100%",stopColor:"currentColor",stopOpacity:"1"})]})]}),(0,n.jsx)("path",{d:"M35,20 C25,35 8,35 8,20 C8,5 25,5 35,20",stroke:`url(#grad-human-${e})`,strokeWidth:"3",strokeDasharray:"2 4",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M35,20 C45,2 75,2 75,20 C75,38 45,38 35,20",stroke:`url(#grad-agent-${e})`,strokeWidth:"4.5",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M35,17.5 Q35,20 37.5,20 Q35,20 35,22.5 Q35,20 32.5,20 Q35,20 35,17.5 Z",fill:"#FEF3C7"})]})}},60112:(e,t,r)=>{function n(){return"p_"+Math.random().toString(36).slice(2,10)}function s(e){return"string"==typeof e&&e.startsWith("p_")}function a(e,t){return e.find(e=>e.id===t)}r.d(t,{Ny:()=>s,lh:()=>a,mV:()=>n}),r(47376)},68041:(e,t,r)=>{r.d(t,{A:()=>ti});var n=r(95155),s=r(12115),a=r(47650),o=r(51914),l=r(48368),i=r(17243),u=r(33210),c=r(46757),d=r(56204),m=r(35581),f=r(96035),p=r(86901),x=r(94514),g=r(66088);let h="mindos-ask-mode",b=["agent","chat"];function v({mode:e,onChange:t,disabled:r}){let{t:o}=(0,m.Y)(),[l,i]=(0,s.useState)(!1),[u,c]=(0,s.useState)(null),d=(0,s.useRef)(null),v=(0,s.useRef)(null),y=(0,s.useCallback)(()=>{if(!d.current)return;let e=d.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>120?"up":"down";c({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})},[]);(0,s.useEffect)(()=>{l&&y()},[l,y]),(0,s.useEffect)(()=>{if(!l)return;let e=e=>{let t=e.target;d.current&&!d.current.contains(t)&&v.current&&!v.current.contains(t)&&i(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[l]),(0,s.useEffect)(()=>{if(!l)return;let e=e=>{"Escape"===e.key&&i(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[l]),(0,s.useEffect)(()=>{if(l)return window.addEventListener("scroll",y,!0),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y)}},[l,y]);let j=(0,s.useCallback)(e=>{t(e);try{localStorage.setItem(h,e)}catch{}i(!1)},[t]),w="chat"===e,k=(e,t)=>"chat"===e?(0,n.jsx)(f.A,{size:t,className:"shrink-0"}):(0,n.jsx)(p.A,{size:t,className:"shrink-0"}),N=e=>"chat"===e?o.ask.modeChat:o.ask.modeAgent,S=e=>"chat"===e?o.ask.modeChatHint:o.ask.modeAgentHint,C=l&&u?(0,n.jsx)("div",{ref:v,role:"listbox","aria-label":"Select mode",className:"fixed z-50 min-w-[200px] max-w-[260px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{left:u.left,..."up"===u.direction?{bottom:window.innerHeight-u.top}:{top:u.top}},children:b.map(t=>{let r=e===t;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":r,onClick:()=>j(t),className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:k(t,13)}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("div",{className:"font-medium",children:N(t)}),(0,n.jsx)("div",{className:"text-2xs text-muted-foreground mt-0.5",children:S(t)})]}),r&&(0,n.jsx)(x.A,{size:12,className:"shrink-0 text-[var(--amber)]"})]},t)})}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:d,type:"button",onClick:()=>{r||i(e=>!e)},disabled:r,className:`
|
|
2
|
+
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
3
|
+
text-2xs font-medium transition-colors select-none
|
|
4
|
+
border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
5
|
+
disabled:opacity-40 disabled:cursor-not-allowed
|
|
6
|
+
${w?"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground":"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15"}
|
|
7
|
+
`,title:S(e),"aria-expanded":l,"aria-haspopup":"listbox",children:[k(e,11),(0,n.jsx)("span",{className:"truncate max-w-[80px]",children:N(e)}),(0,n.jsx)(g.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&C&&(0,a.createPortal)(C,document.body)]})}let y={id:"mindos",name:"MindOS"};function j(e,t){let r=t??y;return{...e,agentId:r.id,agentName:r.name}}function w(e){let t=Date.now();return{id:`${t}-${Math.random().toString(36).slice(2,8)}`,currentFile:e,createdAt:t,updatedAt:t,messages:[]}}function k(e){if(e.title)return e.title;let t=e.messages.find(e=>"user"===e.role);if(!t)return"(empty session)";let r=t.content.replace(/\s+/g," ").trim();return!r&&t.images&&t.images.length>0?`[${t.images.length} image${t.images.length>1?"s":""}]`:r.length>42?`${r.slice(0,42)}...`:r||"(empty session)"}async function N(){try{let e=await fetch("/api/ask-sessions",{cache:"no-store"});if(!e.ok)return[];let t=await e.json();if(!Array.isArray(t))return[];return t.slice(0,30)}catch{return[]}}async function S(e){try{let t={...e,messages:e.messages.map(e=>e.images&&0!==e.images.length?{...e,images:e.images.map(e=>({...e,data:""}))}:e)};await fetch("/api/ask-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({session:t})})}catch{}}async function C(e){try{await fetch("/api/ask-sessions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e})})}catch{}}async function A(e){try{await fetch("/api/ask-sessions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e})})}catch{}}let E=new Set([".txt",".md",".markdown",".csv",".json",".yaml",".yml",".xml",".html",".htm",".pdf"]);function R(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t).toLowerCase():""}async function z(e){let t=e.name;try{let r=await e.arrayBuffer(),n=function(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,r+32768));return btoa(t)}(new Uint8Array(r)),s=await fetch("/api/extract-pdf",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,dataBase64:n})}),a={};try{a=await s.json()}catch{throw Error("Failed to parse extraction response")}if(!s.ok)throw Error(a.error||`PDF extraction failed (${s.status})`);if("error"===a.extracted)return{name:t,content:`[PDF: ${t}] Failed to extract text from this PDF.`,status:"error",error:a.extractionError||"PDF extraction failed (unable to parse PDF)"};let o="success"===a.extracted&&a.text||"";if(!o)return{name:t,content:`[PDF: ${t}] Could not extract readable text (possibly scanned/image PDF).`,status:"error",error:"No extractable text found — PDF may be scanned, image-only, or have no text content"};let l={name:t,content:`[PDF TEXT EXTRACTED: ${t}]
|
|
8
|
+
|
|
9
|
+
${o}`,status:"success"};return a.truncated&&a.totalChars&&(l.truncatedInfo={totalChars:a.totalChars,includedChars:o.length,totalPages:a.pagesParsed??0}),l}catch(e){return{name:t,content:`[PDF: ${t}] Failed to extract text from this PDF.`,status:"error",error:e instanceof Error?e.message:"Unknown error"}}}let T=new Set(["image/png","image/jpeg","image/gif","image/webp"]);async function $(e){let t=e.type;if(e.size<=5242880){let r=new Uint8Array(await e.arrayBuffer()),n="";for(let e=0;e<r.length;e+=32768)n+=String.fromCharCode(...r.subarray(e,e+32768));return{data:btoa(n),mimeType:t}}return new Promise((t,r)=>{let n=new Image,s=URL.createObjectURL(e);n.onload=()=>{let{width:e,height:a}=n;if(e>1920||a>1920){let t=Math.min(1920/e,1920/a);e=Math.round(e*t),a=Math.round(a*t)}let o=document.createElement("canvas");o.width=e,o.height=a;let l=o.getContext("2d");if(!l){URL.revokeObjectURL(s),r(Error("Canvas not supported"));return}l.drawImage(n,0,0,e,a);let i=o.toDataURL("image/jpeg",.85).split(",")[1];URL.revokeObjectURL(s),t({data:i,mimeType:"image/jpeg"})},n.onerror=()=>{URL.revokeObjectURL(s),r(Error("Failed to load image"))},n.src=s})}function L(e){let t=[];for(let r of Array.from(e))if("file"===r.kind&&T.has(r.type)){let e=r.getAsFile();e&&t.push(e)}return t}var D=r(67635),M=r(53961),_=r(56558),F=r(6296),P=r(32967),I=r(59511),O=r(61878),H=r(37618),B=r(31885),U=r(13545),W=r(84755),Y=r(56842),J=r(66804),K=r(32957),q=r(48391),Q=r(7834),V=r(42129),Z=r(97810),G=r(49387),X=r(93631),ee=r(45049),et=r(68459),er=r(48334),en=r(97233),es=r(50538),ea=r(84980),eo=r(33078),el=r(21362),ei=r(41585),eu=r(12651),ec=r(62791);let ed=new Set(["delete_file","move_file","rename_file","write_file"]),em=new Set(["write_file","create_file","update_section","insert_after_heading","edit_lines","append_to_file"]),ef={search:O.A,list_files:V.A,read_file:Z.A,write_file:G.A,create_file:X.A,append_to_file:l.A,insert_after_heading:ee.A,update_section:G.A,delete_file:et.A,rename_file:l.A,move_file:er.A,get_backlinks:en.A,get_history:es.A,get_file_at_version:es.A,get_recent:ea.A,append_csv:eo.A},ep="--- changes ---";function ex({part:e}){let t=em.has(e.toolName),r="done"===e.state,[a,o]=(0,s.useState)(null),l=a??(t&&r),i=ef[e.toolName]??P.A,u=ed.has(e.toolName),c=(0,s.useMemo)(()=>(function(e){if(!e)return{header:"",stats:"",diffLines:[]};let t=e.indexOf(ep);if(-1===t)return{header:e,stats:"",diffLines:[]};let r=e.slice(0,t).trim(),n=e.slice(t+ep.length).trim(),s=r.match(/\((\+\d+\s*−\d+)\)/);return{header:r,stats:s?s[1]:"",diffLines:n.split("\n").map(e=>e.startsWith("+ ")?{prefix:"+",text:e.slice(2)}:e.startsWith("- ")?{prefix:"-",text:e.slice(2)}:e.startsWith(" ")?{prefix:" ",text:e.slice(2)}:{prefix:" ",text:e})}})(e.output),[e.output]),d=(0,s.useMemo)(()=>e.input&&"object"==typeof e.input?e.input.path??"":"",[e.input]),m=d?`${d.split("/").pop()??d}${c.stats?` (${c.stats})`:""}`:function(e){if(!e||"object"!=typeof e)return String(e??"");let t=[];for(let r of Object.values(e))"string"==typeof r?t.push(r.length>60?`${r.slice(0,60)}…`:r):Array.isArray(r)?t.push(`[${r.length} items]`):null!=r&&t.push(String(r));return t.join(", ")}(e.input);return(0,n.jsxs)("div",{className:`my-1.5 rounded-lg border text-xs font-mono ${u?"border-[var(--amber)]/30 bg-background/60":"border-border/40 bg-background/50"}`,children:[(0,n.jsxs)("button",{type:"button",onClick:()=>o(e=>null===e?!l:!e),"aria-expanded":l,className:"w-full flex items-center gap-1.5 px-2.5 py-2 text-left hover:bg-muted/30 transition-colors rounded-lg",children:[l?(0,n.jsx)(g.A,{size:12,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)(el.A,{size:12,className:"shrink-0 text-muted-foreground"}),u&&(0,n.jsx)(ei.A,{size:11,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)(i,{size:12,className:`shrink-0 ${u?"text-[var(--amber)]":"text-muted-foreground"}`}),(0,n.jsx)("span",{className:`font-medium ${u?"text-[var(--amber)]":"text-foreground"}`,children:e.toolName}),(0,n.jsx)("span",{className:"text-muted-foreground truncate flex-1",children:m}),(0,n.jsx)("span",{className:"shrink-0 ml-auto",children:"pending"===e.state||"running"===e.state?(0,n.jsx)(F.A,{size:12,className:"animate-spin text-[var(--amber)]"}):"done"===e.state?(0,n.jsx)(eu.A,{size:12,className:"text-success"}):(0,n.jsx)(ec.A,{size:12,className:"text-error"})})]}),l&&(0,n.jsx)("div",{className:"border-t border-border/30",children:t&&r&&c.diffLines.length>0?(0,n.jsx)("div",{className:"max-h-64 overflow-y-auto",children:c.diffLines.map((e,t)=>(0,n.jsxs)("div",{className:`px-2 py-px flex items-start gap-1.5 ${"+"===e.prefix?"bg-success/8":"-"===e.prefix?"bg-error/8":""}`,children:[(0,n.jsx)("span",{className:`select-none w-3 shrink-0 text-right ${"+"===e.prefix?"text-success":"-"===e.prefix?"text-error":"text-muted-foreground/50"}`,children:e.prefix}),(0,n.jsx)("span",{className:`whitespace-pre-wrap break-all flex-1 ${"+"===e.prefix?"text-success":"-"===e.prefix?"text-error":"text-muted-foreground"}`,children:e.text||"\xa0"})]},t))}):(0,n.jsxs)("div",{className:"px-2.5 pb-2.5 pt-1.5 space-y-1.5",children:["running"===e.state&&(0,n.jsxs)("div",{className:"text-muted-foreground/60 text-2xs flex items-center gap-1.5",children:[(0,n.jsx)(F.A,{size:10,className:"animate-spin"})," Running..."]}),(0,n.jsxs)("div",{className:"text-muted-foreground leading-relaxed",children:[(0,n.jsx)("span",{className:"font-semibold text-foreground/70",children:"Input: "}),(0,n.jsx)("span",{className:"break-all whitespace-pre-wrap",children:JSON.stringify(e.input,null,2)})]}),void 0!==e.output&&""!==e.output&&(0,n.jsxs)("div",{className:"text-muted-foreground leading-relaxed",children:[(0,n.jsx)("span",{className:"font-semibold text-foreground/70",children:"Output: "}),(0,n.jsx)("span",{className:"break-all whitespace-pre-wrap",children:e.output.length>500?e.output.slice(0,500)+"…":e.output})]})]})})]})}var eg=r(90718);function eh({text:e,isStreaming:t}){let[r,a]=(0,s.useState)(!1),{t:o}=(0,m.Y)();return e||t?(0,n.jsxs)("div",{className:"my-1.5 rounded-lg border border-border/30 bg-muted/15 text-xs",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>a(e=>!e),"aria-expanded":r,className:"w-full flex items-center gap-1.5 px-2.5 py-2 text-left hover:bg-muted/30 transition-colors rounded-lg",children:[r?(0,n.jsx)(g.A,{size:12,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)(el.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsx)(eg.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsxs)("span",{className:"text-muted-foreground font-medium",children:[o.ask.thinkingLabel,t&&!r&&(0,n.jsx)("span",{className:"ml-1 animate-pulse",children:"..."})]}),!r&&e&&(0,n.jsxs)("span",{className:"text-muted-foreground/50 truncate flex-1 ml-1",children:[e.slice(0,80),e.length>80?"...":""]})]}),r&&(0,n.jsx)("div",{className:"px-2.5 pb-2.5 pt-1 border-t border-border/20",children:(0,n.jsxs)("div",{className:"text-muted-foreground whitespace-pre-wrap leading-relaxed",children:[e,t&&(0,n.jsx)("span",{className:"inline-block w-1 h-3 bg-muted-foreground/40 ml-0.5 align-middle animate-pulse rounded-full"})]})})]}):null}var eb=r(22356),ev=r(4235),ey=r(70620);function ej(e,t,r=new Date){let n=r.getFullYear(),s=String(r.getMonth()+1).padStart(2,"0"),a=String(r.getDate()).padStart(2,"0"),o=`> Saved session from MindOS Ask \xb7 ${n}-${s}-${a}`;if("full"===t){let t=e.map(e=>{let t=(0,q.Oo)(e.content).trim();if(!t)return null;let r="user"===e.role?"**User**":"**Assistant**";return`### ${r}
|
|
10
|
+
|
|
11
|
+
${t}`}).filter(Boolean);return`${o}
|
|
12
|
+
|
|
13
|
+
${t.join("\n\n---\n\n")}`}if("ai-only"===t){let t=e.filter(e=>"assistant"===e.role).map(e=>(0,q.Oo)(e.content).trim()).filter(Boolean);return`${o}
|
|
14
|
+
|
|
15
|
+
${t.join("\n\n---\n\n")}`}return ej(e,"full",r)}function ew(e,t){let r="ai-only"===t?e.filter(e=>"assistant"===e.role):e,n=r.reduce((e,t)=>e+(0,q.Oo)(t.content).trim().length,0);return{msgCount:r.length,charCount:n}}function ek({text:e}){let{t}=(0,m.Y)(),[r,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),l=(0,q.Oo)(e).trim();return l?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{ref:o,type:"button",onClick:e=>{e.stopPropagation(),a(e=>!e)},className:`p-1 rounded-md border transition-colors ${r?"border-[var(--amber)]/40 bg-[var(--amber)]/10 text-[var(--amber)]":"border-border/60 bg-card text-muted-foreground hover:text-[var(--amber)] shadow-sm"}`,title:t.ask?.saveToKB??"Save to knowledge base",children:(0,n.jsx)(I.A,{size:11})}),r&&(0,n.jsx)(eN,{anchorRef:o,content:l,onClose:()=>a(!1)})]}):null}function eN({anchorRef:e,content:t,onClose:r}){let{t:a}=(0,m.Y)(),o=a.ask,[l,i]=(0,s.useState)("select"),[u,c]=(0,s.useState)([]);(0,s.useEffect)(()=>{(0,eb.n)("/api/file?op=dirs").then(e=>c(e.dirs??[])).catch(()=>{})},[]);let d=[{role:"assistant",content:t}];return(0,n.jsxs)(eA,{anchorRef:e,onClose:r,children:["select"===l&&(0,n.jsx)(eS,{content:t,onSelect:i,onClose:r,ask:o}),"archive"===l&&(0,n.jsx)(eE,{content:t,defaultFilenamePrefix:"insight",dirPaths:u,onClose:r,ask:o}),"digest"===l&&(0,n.jsx)(e$,{messages:d,onClose:r,ask:o})]})}function eS({content:e,onSelect:t,onClose:r,ask:s}){let a=e.length>1e3?`~${(e.length/1e3).toFixed(1)}k`:`${e.length}`;return(0,n.jsxs)("div",{className:"p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-2.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(I.A,{size:11,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs font-semibold text-foreground",children:s?.saveToKBTitle??"Save to KB"}),(0,n.jsxs)("span",{className:"text-2xs text-muted-foreground",children:["(",a," chars)"]})]}),(0,n.jsx)("button",{type:"button",onClick:r,className:"text-2xs text-muted-foreground hover:text-foreground",children:s?.cancelSave??"Cancel"})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>t("archive"),className:"flex flex-col items-center gap-1 p-2.5 border border-[var(--amber)]/30 rounded-lg hover:border-[var(--amber)]/60 hover:shadow-sm active:scale-[0.98] transition-all",children:[(0,n.jsx)(I.A,{size:16,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-foreground",children:s?.saveDirectly??"Save directly"}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground text-center leading-tight",children:s?.saveDirectlyDesc??"Save as-is"})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>t("digest"),className:"flex flex-col items-center gap-1 p-2.5 border border-border rounded-lg hover:border-[var(--amber)]/50 hover:shadow-sm active:scale-[0.98] transition-all",children:[(0,n.jsx)(p.A,{size:16,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-foreground",children:s?.organizeToNote??"Organize to note"}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground text-center leading-tight",children:s?.organizeToNoteDesc??"AI organizes"})]})]})]})}function eC({messages:e,disabled:t}){let{t:r}=(0,m.Y)(),[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(null);return e.some(e=>"assistant"===e.role&&e.content.trim())?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{ref:l,type:"button",onClick:e=>{e.stopPropagation(),o(e=>!e)},disabled:t,className:`p-2 rounded-lg transition-colors ${a?"bg-[var(--amber)]/10 text-[var(--amber)]":"text-muted-foreground hover:text-foreground hover:bg-muted"} disabled:opacity-40`,title:r.ask?.saveSession??"Save session",children:(0,n.jsx)(I.A,{size:14})}),a&&(0,n.jsx)(eR,{anchorRef:l,messages:e,onClose:()=>o(!1)})]}):null}function eA({anchorRef:e,onClose:t,children:r}){let o=(0,s.useRef)(null),[l,i]=(0,s.useState)(null),u=(0,s.useCallback)(()=>{if(!e.current)return;let t=e.current.getBoundingClientRect();i({top:t.bottom+6,right:Math.max(8,window.innerWidth-t.right)})},[e]);return((0,s.useEffect)(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[u]),(0,s.useEffect)(()=>{let r=e=>{"Escape"===e.key&&(e.preventDefault(),t())},n=r=>{let n=r.target;e.current?.contains(n)||o.current?.contains(n)||t()};return document.addEventListener("keydown",r),document.addEventListener("mousedown",n),()=>{document.removeEventListener("keydown",r),document.removeEventListener("mousedown",n)}},[e,t]),!l||"u"<typeof document)?null:(0,a.createPortal)((0,n.jsx)("div",{ref:o,className:"fixed z-50 rounded-xl border border-border bg-card shadow-lg animate-in fade-in-0 slide-in-from-top-1 duration-100",style:{top:l.top,right:l.right,width:300},children:r}),document.body)}function eE({content:e,defaultFilenamePrefix:t,dirPaths:r,onClose:a,ask:o}){let l,i,u=new Date,c=`${t}-${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")}.md`,[d,m]=(0,s.useState)(""),[f,p]=(0,s.useState)(c),[g,h]=(0,s.useState)(!1),[b,v]=(0,s.useState)(!1),[y,j]=(0,s.useState)(""),w=(0,s.useRef)(null);(0,s.useEffect)(()=>{setTimeout(()=>{w.current?.focus(),w.current?.select()},100)},[]);let k=(i=(l=f.trim()||c).endsWith(".md")?l:`${l}.md`,d?`${d}/${i}`:i),N=(0,s.useCallback)(async()=>{h(!0),j("");try{await (0,eb.n)("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:k,op:"create_file",content:function(e,t=new Date){let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`> Saved from MindOS Ask \xb7 ${r}-${n}-${s}
|
|
16
|
+
|
|
17
|
+
${e}`}(e),source:"user"})}),v(!0),ev.oR.success(o?.savedToKB?.replace("{path}",k.split("/").pop())??"Saved"),setTimeout(a,1e3)}catch(e){j(e?.message?.includes("exist")?o?.fileExistsSwitch??"File exists":e?.message??"Failed")}finally{h(!1)}},[e,k,o,a]);return(0,n.jsxs)("div",{className:"p-3 space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(I.A,{size:11,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs font-semibold",children:o?.saveToKBTitle??"Save to KB"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-2xs text-muted-foreground mb-0.5 block",children:o?.targetFolder??"Folder"}),(0,n.jsx)(ey.A,{dirPaths:r,value:d,onChange:m,rootLabel:"Root"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-2xs text-muted-foreground mb-0.5 block",children:o?.fileName??"Filename"}),(0,n.jsx)("input",{ref:w,type:"text",value:f,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N(),"Escape"===e.key&&a()},className:"w-full px-2 py-1 text-xs font-mono rounded-md border border-border bg-background text-foreground outline-none focus-visible:border-[var(--amber)]/50"})]}),(0,n.jsx)("div",{className:"text-[10px] text-muted-foreground/60 font-mono truncate",children:k}),y&&(0,n.jsxs)("div",{className:"flex items-center gap-1 text-2xs text-error",children:[(0,n.jsx)(U.A,{size:10}),y]}),(0,n.jsxs)("div",{className:"flex justify-end gap-1.5 pt-1 border-t border-border/30",children:[(0,n.jsx)("button",{type:"button",onClick:a,className:"px-2 py-0.5 text-2xs rounded text-muted-foreground hover:bg-muted",children:o?.cancelSave??"Cancel"}),(0,n.jsxs)("button",{type:"button",onClick:N,disabled:g||b||!f.trim(),className:`flex items-center gap-1 px-2.5 py-0.5 text-2xs font-medium rounded transition-colors ${b?"bg-success/10 text-success":"bg-[var(--amber)] text-[var(--amber-foreground)]"} disabled:opacity-50`,children:[g&&(0,n.jsx)(F.A,{size:9,className:"animate-spin"}),b&&(0,n.jsx)(x.A,{size:9}),o?.confirmSave??"Save"]})]})]})}function eR({anchorRef:e,messages:t,onClose:r}){let{t:a}=(0,m.Y)(),o=a.ask,[l,i]=(0,s.useState)("select"),[u,c]=(0,s.useState)([]);return(0,s.useEffect)(()=>{(0,eb.n)("/api/file?op=dirs").then(e=>c(e.dirs??[])).catch(()=>{})},[]),(0,n.jsxs)(eA,{anchorRef:e,onClose:r,children:["select"===l&&(0,n.jsx)(ez,{messages:t,onSelect:i,onClose:r,ask:o}),"archive"===l&&(0,n.jsx)(eT,{messages:t,dirPaths:u,onBack:()=>i("select"),onClose:r,ask:o}),"digest"===l&&(0,n.jsx)(e$,{messages:t,onClose:r,ask:o})]})}function ez({messages:e,onSelect:t,onClose:r,ask:s}){let a=ew(e,"full");return(0,n.jsxs)("div",{className:"p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-2.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(I.A,{size:11,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs font-semibold text-foreground",children:s?.saveSession??"Save Session"}),(0,n.jsxs)("span",{className:"text-2xs text-muted-foreground",children:["(",a.msgCount,")"]})]}),(0,n.jsx)("button",{type:"button",onClick:r,className:"text-2xs text-muted-foreground hover:text-foreground",children:s?.cancelSave??"Cancel"})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>t("archive"),className:"flex flex-col items-center gap-1 p-2.5 border border-[var(--amber)]/30 rounded-lg hover:border-[var(--amber)]/60 hover:shadow-sm active:scale-[0.98] transition-all",children:[(0,n.jsx)(I.A,{size:16,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-foreground",children:s?.saveDirectly??"Save directly"}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground text-center leading-tight",children:s?.saveDirectlyDesc??"Save as-is"})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>t("digest"),className:"flex flex-col items-center gap-1 p-2.5 border border-border rounded-lg hover:border-[var(--amber)]/50 hover:shadow-sm active:scale-[0.98] transition-all",children:[(0,n.jsx)(p.A,{size:16,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-foreground",children:s?.organizeToNote??"Organize to note"}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground text-center leading-tight",children:s?.organizeToNoteDesc??"AI extracts insights"})]})]})]})}function eT({messages:e,dirPaths:t,onBack:r,onClose:a,ask:o}){let l,i,u=new Date,c=`session-${u.getFullYear()}-${String(u.getMonth()+1).padStart(2,"0")}-${String(u.getDate()).padStart(2,"0")}.md`,[d,m]=(0,s.useState)(""),[f,p]=(0,s.useState)(c),[h,b]=(0,s.useState)("full"),[v,y]=(0,s.useState)(!1),[j,w]=(0,s.useState)(!1),[k,N]=(0,s.useState)(!1),[S,C]=(0,s.useState)(""),A=(0,s.useRef)(null);(0,s.useEffect)(()=>{setTimeout(()=>{A.current?.focus(),A.current?.select()},100)},[]);let E=(i=(l=f.trim()||c).endsWith(".md")?l:`${l}.md`,d?`${d}/${i}`:i),R=ew(e,h),z=(0,s.useCallback)(async()=>{w(!0),C("");try{await (0,eb.n)("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:E,op:"create_file",content:ej(e,h),source:"user"})}),N(!0),ev.oR.success(o?.savedToKB?.replace("{path}",E.split("/").pop())??"Saved"),setTimeout(a,1e3)}catch(e){C(e?.message?.includes("exist")?o?.fileExistsSwitch??"File exists":e?.message??"Failed")}finally{w(!1)}},[e,h,E,o,a]),T=ej(e,h).slice(0,300);return(0,n.jsxs)("div",{className:"p-3 space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("button",{type:"button",onClick:r,className:"text-muted-foreground hover:text-foreground",children:(0,n.jsx)(el.A,{size:11,className:"rotate-180"})}),(0,n.jsx)(I.A,{size:11,className:"text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs font-semibold",children:o?.saveDirectly??"Save directly"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-2xs text-muted-foreground mb-0.5 block",children:o?.targetFolder??"Folder"}),(0,n.jsx)(ey.A,{dirPaths:t,value:d,onChange:m,rootLabel:"Root"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-2xs text-muted-foreground mb-0.5 block",children:o?.fileName??"Filename"}),(0,n.jsx)("input",{ref:A,type:"text",value:f,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"===e.key&&z(),"Escape"===e.key&&a()},className:"w-full px-2 py-1 text-xs font-mono rounded-md border border-border bg-background text-foreground outline-none focus-visible:border-[var(--amber)]/50"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2.5",children:[["full","ai-only"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1 cursor-pointer",children:[(0,n.jsx)("input",{type:"radio",name:"fmt",checked:h===e,onChange:()=>b(e),className:"w-2.5 h-2.5 accent-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-2xs",children:"full"===e?o?.formatFull??"Full":o?.formatAiOnly??"AI only"})]},e)),(0,n.jsxs)("span",{className:"text-[10px] text-muted-foreground ml-auto",children:[R.msgCount," msgs"]})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>y(e=>!e),className:"flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground",children:[v?(0,n.jsx)(g.A,{size:9}):(0,n.jsx)(el.A,{size:9})," Preview"]}),v&&(0,n.jsxs)("pre",{className:"px-2 py-1 text-[10px] text-muted-foreground bg-muted/30 rounded-md max-h-24 overflow-auto whitespace-pre-wrap font-mono",children:[T,T.length>=300?"...":""]}),(0,n.jsx)("div",{className:"text-[10px] text-muted-foreground/60 font-mono truncate",children:E}),S&&(0,n.jsxs)("div",{className:"flex items-center gap-1 text-2xs text-error",children:[(0,n.jsx)(U.A,{size:10}),S]}),(0,n.jsxs)("div",{className:"flex justify-end gap-1.5 pt-1 border-t border-border/30",children:[(0,n.jsx)("button",{type:"button",onClick:a,className:"px-2 py-0.5 text-2xs rounded text-muted-foreground hover:bg-muted",children:o?.cancelSave??"Cancel"}),(0,n.jsxs)("button",{type:"button",onClick:z,disabled:j||k||!f.trim(),className:`flex items-center gap-1 px-2.5 py-0.5 text-2xs font-medium rounded transition-colors ${k?"bg-success/10 text-success":"bg-[var(--amber)] text-[var(--amber-foreground)]"} disabled:opacity-50`,children:[j&&(0,n.jsx)(F.A,{size:9,className:"animate-spin"}),k&&(0,n.jsx)(x.A,{size:9}),o?.confirmSave??"Save"]})]})]})}function e$({messages:e,onClose:t,ask:r}){let n=(0,s.useCallback)(()=>{let n=ej(e,"full");window.dispatchEvent(new CustomEvent("mindos:session-organize",{detail:{content:n,name:"conversation.md"}})),t(),ev.oR.success(r?.organizing??"AI is organizing...")},[e,t,r]);return(0,s.useEffect)(()=>{n()},[n]),null}let eL=/^Use the skill ([^:]+):\s*/;function eD({text:e,label:t}){let[r,a]=(0,s.useState)(!1),o=(0,s.useCallback)(()=>{(0,Q.l)(e).then(e=>{e&&(a(!0),setTimeout(()=>a(!1),2e3))})},[e]);return(0,n.jsx)("button",{type:"button",onClick:o,className:"p-1 rounded-md bg-card border border-border/60 shadow-sm text-muted-foreground hover:text-foreground transition-colors",title:t??"Copy",children:r?(0,n.jsx)(x.A,{size:11,className:"text-success"}):(0,n.jsx)(D.A,{size:11})})}function eM({content:e,skillName:t,images:r,attachedFiles:s,uploadedFileNames:a}){let o=t??e.match(eL)?.[1],i=e.match(eL),u=i?e.slice(i[0].length):e,c=new Set(a??[]),d=s?.filter(e=>!c.has(e.split("/").pop()??e)),m=d&&d.length>0||a&&a.length>0;return(0,n.jsxs)(n.Fragment,{children:[r&&r.length>0&&(0,n.jsx)("div",{className:`flex flex-wrap gap-1.5${e?" mb-2":""}`,children:r.map((e,t)=>e.data?(0,n.jsx)("img",{src:`data:${e.mimeType};base64,${e.data}`,alt:`Image ${t+1}`,className:"max-h-48 max-w-full rounded-md object-contain"},t):(0,n.jsx)("div",{className:"h-12 px-3 rounded-md bg-muted flex items-center gap-1.5 text-xs text-muted-foreground",children:(0,n.jsxs)("span",{children:["[Image ",t+1,"]"]})},t))}),o&&(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-medium bg-white/20 text-white/90 mr-1 align-middle",children:[(0,n.jsx)(M.A,{size:10,className:"shrink-0"}),o]}),o?u:e,m&&(0,n.jsxs)("div",{className:"mt-2 pt-1.5 border-t border-white/15 flex flex-wrap gap-1 whitespace-normal",role:"list","aria-label":"Attached files",children:[d?.map(e=>(0,n.jsxs)("span",{role:"listitem",className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] bg-white/10 text-white/80 min-w-0",title:e,children:[(0,n.jsx)(l.A,{size:9,className:"shrink-0 opacity-70"}),(0,n.jsx)("span",{className:"truncate max-w-[120px]",children:e.split("/").pop()})]},e)),a?.map(e=>(0,n.jsxs)("span",{role:"listitem",className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] bg-white/10 text-white/80 min-w-0",title:e,children:[(0,n.jsx)(_.A,{size:9,className:"shrink-0 opacity-70"}),(0,n.jsx)("span",{className:"truncate max-w-[120px]",children:e})]},e))]})]})}function e_({agentName:e}){return e?(0,n.jsxs)("div",{className:"mb-2 inline-flex items-center gap-1 rounded-full border border-[var(--amber)]/15 bg-[var(--amber)]/8 px-2 py-0.5 text-[10px] font-medium tracking-wide text-[var(--amber)]",children:[(0,n.jsx)(p.A,{size:10,className:"shrink-0"}),(0,n.jsx)("span",{children:e})]}):null}function eF({content:e,isStreaming:t}){let r=(0,q.Oo)(e);return r||t?(0,n.jsxs)("div",{className:"prose prose-sm prose-panel dark:prose-invert max-w-none text-foreground prose-p:my-2 prose-p:leading-relaxed prose-headings:font-semibold prose-headings:my-3 prose-h1:text-base prose-h2:text-[15px] prose-h3:text-sm prose-ul:my-1.5 prose-li:my-0.5 prose-ol:my-1.5 prose-code:text-[0.8em] prose-code:bg-muted/80 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-code:before:content-none prose-code:after:content-none prose-code:font-mono prose-pre:bg-muted/60 prose-pre:text-foreground prose-pre:text-xs prose-pre:rounded-lg prose-blockquote:border-l-[var(--amber)] prose-blockquote:text-muted-foreground prose-blockquote:not-italic prose-a:text-[var(--amber)] prose-a:no-underline hover:prose-a:underline prose-strong:text-foreground prose-strong:font-semibold prose-table:text-xs prose-th:py-1.5 prose-td:py-1 ",children:[(0,n.jsx)(J.oz,{remarkPlugins:[K.A],children:r}),t&&(0,n.jsx)("span",{className:"inline-block w-1.5 h-3.5 bg-[var(--amber)] ml-0.5 align-middle animate-pulse rounded-full"})]}):null}function eP({message:e,isStreaming:t}){let r=e.parts;if(!r||0===r.length)return e.content?(0,n.jsx)(eF,{content:e.content,isStreaming:t}):null;let s=r[r.length-1],a=t&&"tool-call"===s.type&&("running"===s.state||"pending"===s.state);return(0,n.jsxs)("div",{children:[r.map((e,s)=>{if("reasoning"===e.type){let a=t&&s===r.length-1;return(0,n.jsx)(eh,{text:e.text,isStreaming:a},`reasoning-${s}`)}if("text"===e.type){let a=t&&s===r.length-1;return e.text?(0,n.jsx)(eF,{content:e.text,isStreaming:a},s):null}return"tool-call"===e.type?(0,n.jsx)(ex,{part:e},e.toolCallId):null}),a&&(0,n.jsxs)("div",{className:"flex items-center gap-2 py-1.5 mt-1.5",children:[(0,n.jsx)(F.A,{size:12,className:"animate-spin text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground animate-pulse",children:"Executing tool…"})]})]})}function eI({parts:e}){if(!e)return null;let t=e.filter(e=>"tool-call"===e.type);if(0===t.length)return null;let r=t[t.length-1],s="tool-call"===r.type?r.toolName:"";return(0,n.jsxs)("div",{className:"flex items-center gap-1.5 mt-2 pt-1.5 border-t border-border/15 text-xs text-muted-foreground/60",children:[(0,n.jsx)(P.A,{size:10}),(0,n.jsxs)("span",{className:"font-medium",children:["Step ",t.length,s?` — ${s}`:""]})]})}let eO=(0,s.memo)(function({messages:e,isLoading:t,loadingPhase:r,emptyPrompt:a,emptyHint:o,suggestions:l,onSuggestionClick:i,labels:u}){let c=(0,s.useRef)(null),d=(0,s.useRef)(null),[m,f]=(0,s.useState)(!1),x=(0,s.useCallback)(()=>{let e=d.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]);return(0,s.useEffect)(()=>{x()},[e,x]),(0,s.useEffect)(()=>{let e=d.current;if(!e)return;let t=()=>{let{scrollTop:t,scrollHeight:r,clientHeight:n}=e;f(r-t-n>100)};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[]),(0,n.jsxs)("div",{ref:d,role:"log","aria-live":"polite",className:"relative flex-1 overflow-y-auto overflow-x-hidden px-4 py-5 space-y-5 min-h-0",children:[0===e.length&&(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center flex-1 min-h-[260px] px-6 pt-10 pb-4",children:[(0,n.jsxs)("div",{className:"relative w-12 h-12 rounded-2xl bg-[var(--amber)]/10 flex items-center justify-center mb-6",children:[(0,n.jsx)("div",{className:"absolute inset-0 rounded-2xl bg-[var(--amber)]/5 scale-[1.4]"}),(0,n.jsx)(p.A,{size:22,className:"text-[var(--amber)] relative z-10"})]}),(0,n.jsx)("p",{className:"text-center text-[15px] font-semibold text-foreground tracking-tight mb-2",children:a}),o&&(0,n.jsx)("p",{className:"text-center text-xs text-muted-foreground/80 mb-10 tracking-wide",children:o}),(0,n.jsx)("div",{className:"flex flex-col gap-2.5 max-w-[280px] w-full",children:l.map((e,t)=>{let r=[I.A,O.A,H.A,B.A],s=r[t%r.length];return(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.prompt),className:"group/sug flex items-center gap-3 text-left text-[13px] px-3.5 py-3 rounded-xl border border-border/40 bg-transparent text-muted-foreground hover:text-foreground hover:border-[var(--amber)]/30 hover:bg-[var(--amber)]/5 transition-all leading-snug","aria-label":e.prompt,children:[(0,n.jsx)("span",{className:"shrink-0 w-8 h-8 rounded-lg bg-muted/60 flex items-center justify-center group-hover/sug:bg-[var(--amber)]/10 transition-colors",children:(0,n.jsx)(s,{size:15,className:"text-muted-foreground/70 group-hover/sug:text-[var(--amber)] transition-colors"})}),(0,n.jsx)("span",{className:"flex-1",children:e.label})]},t)})})]}),e.map((s,a)=>(0,n.jsxs)("div",{className:`flex gap-3 animate-[fadeSlideUp_0.22s_ease_both] ${"user"===s.role?"justify-end":"justify-start"}`,children:["assistant"===s.role&&(0,n.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center shrink-0 mt-0.5 bg-[var(--amber)]/8",children:(0,n.jsx)(p.A,{size:13,className:"text-[var(--amber)]"})}),"user"===s.role?(0,n.jsx)("div",{className:"max-w-[85%] px-3.5 py-2.5 rounded-2xl rounded-br-lg text-sm leading-relaxed whitespace-pre-wrap bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm shadow-[var(--amber)]/10",children:(0,n.jsx)(eM,{content:s.content,skillName:s.skillName,images:s.images,attachedFiles:s.attachedFiles,uploadedFileNames:s.uploadedFileNames})}):s.content.startsWith("__error__")?(0,n.jsxs)("div",{className:"max-w-[85%] px-3.5 py-3 rounded-2xl rounded-bl-md border border-error/30 bg-error/10 text-sm shadow-sm",children:[(0,n.jsx)(e_,{agentName:s.agentName}),(0,n.jsxs)("div",{className:"flex items-start gap-2.5 text-error",children:[(0,n.jsx)(U.A,{size:15,className:"shrink-0 mt-0.5"}),(0,n.jsx)("span",{className:"leading-relaxed font-medium",children:s.content.slice(9)})]})]}):(0,n.jsxs)("div",{className:"group relative max-w-[85%] px-3.5 py-2.5 rounded-2xl rounded-bl-lg bg-card border border-border/30 shadow-sm text-foreground text-sm",children:[(0,n.jsx)(e_,{agentName:s.agentName}),s.parts&&s.parts.length>0||(0,q.Oo)(s.content)?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eP,{message:s,isStreaming:t&&a===e.length-1}),t&&a===e.length-1&&(0,n.jsx)(eI,{parts:s.parts}),!(t&&a===e.length-1)&&(0,q.Oo)(s.content)&&(0,n.jsxs)("div",{className:"absolute -bottom-1 right-1 z-10 flex items-center gap-1 opacity-100 md:opacity-0 md:group-hover:opacity-100 transition-opacity",children:[(0,n.jsx)(ek,{text:s.content}),(0,n.jsx)(eD,{text:(0,q.Oo)(s.content),label:u.copyMessage})]})]}):t&&a===e.length-1?(0,n.jsxs)("div",{className:"flex items-center gap-2.5 py-1",children:["reconnecting"===r?(0,n.jsx)(W.A,{size:14,className:"text-[var(--amber)] animate-pulse"}):(0,n.jsx)(F.A,{size:14,className:"animate-spin text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,n.jsxs)("span",{className:"inline-flex items-center gap-1",children:["reconnecting"===r?u.reconnecting??"Reconnecting...":"connecting"===r?u.connecting:"thinking"===r?u.thinking:u.generating,(0,n.jsxs)("span",{className:"inline-flex gap-0.5",children:[(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:0ms]"}),(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:150ms]"}),(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:300ms]"})]})]})})]}):null]})]},a)),(0,n.jsx)("div",{ref:c}),m&&e.length>0&&(0,n.jsx)("button",{type:"button",onClick:x,className:"sticky bottom-2 left-1/2 -translate-x-1/2 z-10 p-2 rounded-full border border-border/60 bg-card shadow-md text-muted-foreground hover:text-foreground hover:bg-muted transition-all hover:shadow-lg",title:"Scroll to bottom",children:(0,n.jsx)(Y.A,{size:14})})]})});function eH({text:e,query:t}){if(!t)return(0,n.jsx)(n.Fragment,{children:e});let r=e.toLowerCase().indexOf(t.toLowerCase());return -1===r?(0,n.jsx)(n.Fragment,{children:e}):(0,n.jsxs)(n.Fragment,{children:[e.slice(0,r),(0,n.jsx)("span",{className:"text-[var(--amber)] font-semibold",children:e.slice(r,r+t.length)}),e.slice(r+t.length)]})}function eB({results:e,selectedIndex:t,query:r,onSelect:a}){let o=(0,s.useRef)(null),i=(0,s.useRef)(null),[u,c]=(0,s.useState)(280);return((0,s.useEffect)(()=>{let e=i.current;e&&c(Math.max(120,Math.min(320,Math.min(e.getBoundingClientRect().top-8,.5*window.innerHeight)-80)))},[e.length]),(0,s.useEffect)(()=>{let e=o.current;if(!e)return;let r=e.children[t];r?.scrollIntoView({block:"nearest"})},[t]),0===e.length)?null:(0,n.jsxs)("div",{ref:i,className:"border border-border rounded-lg bg-card shadow-lg overflow-hidden",children:[(0,n.jsxs)("div",{className:"px-3 py-1.5 border-b border-border flex items-center gap-1.5",children:[(0,n.jsx)(V.A,{size:11,className:"text-muted-foreground/50"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground/70 uppercase tracking-wider",children:"Files"}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 ml-auto",children:e.length})]}),(0,n.jsx)("div",{ref:o,className:"overflow-y-auto",style:{maxHeight:u},children:e.map((e,s)=>{let o=e.split("/").pop()??e,i=e.split("/").slice(0,-1).join("/"),u=o.endsWith(".csv");return(0,n.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),a(e)},className:`w-full flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${s===t?"bg-accent text-foreground":"text-muted-foreground hover:bg-muted"}`,children:[u?(0,n.jsx)(eo.A,{size:13,className:"text-success shrink-0"}):(0,n.jsx)(l.A,{size:13,className:"text-muted-foreground shrink-0"}),(0,n.jsx)("span",{className:"truncate font-medium flex-1",title:o,children:(0,n.jsx)(eH,{text:o,query:r})}),i&&(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 truncate max-w-[140px] shrink-0",title:i,children:(0,n.jsx)(eH,{text:i,query:r})})]},e)})}),(0,n.jsxs)("div",{className:"px-3 py-1.5 border-t border-border flex gap-3 text-2xs text-muted-foreground/40 shrink-0",children:[(0,n.jsx)("span",{children:"↑↓ navigate"}),(0,n.jsx)("span",{children:"↵ select"}),(0,n.jsx)("span",{children:"ESC dismiss"})]})]})}function eU({results:e,selectedIndex:t,query:r,onSelect:a}){let o=(0,s.useRef)(null),l=(0,s.useRef)(null),[i,u]=(0,s.useState)(280);return((0,s.useEffect)(()=>{let e=l.current;e&&u(Math.max(120,Math.min(320,Math.min(e.getBoundingClientRect().top-8,.5*window.innerHeight)-80)))},[e.length]),(0,s.useEffect)(()=>{let e=o.current;if(!e)return;let r=e.children[t];r?.scrollIntoView({block:"nearest"})},[t]),0===e.length)?null:(0,n.jsxs)("div",{ref:l,className:"border border-border rounded-lg bg-card shadow-lg overflow-hidden",children:[(0,n.jsxs)("div",{className:"px-3 py-1.5 border-b border-border flex items-center gap-1.5",children:[(0,n.jsx)(M.A,{size:11,className:"text-[var(--amber)]/50"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground/70 uppercase tracking-wider",children:"Skills"}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 ml-auto",children:e.length})]}),(0,n.jsx)("div",{ref:o,className:"overflow-y-auto",style:{maxHeight:i},children:e.map((e,s)=>(0,n.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),a(e)},className:`w-full flex items-center gap-2.5 px-3 py-2 text-left transition-colors ${s===t?"bg-accent text-foreground":"text-muted-foreground hover:bg-muted"}`,children:[(0,n.jsx)(M.A,{size:13,className:"text-[var(--amber)] shrink-0"}),(0,n.jsxs)("span",{className:"text-sm font-medium shrink-0",children:["/",(0,n.jsx)(eH,{text:e.name,query:r})]}),e.description&&(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/50 truncate min-w-0 flex-1",title:e.description,children:e.description})]},e.name))}),(0,n.jsxs)("div",{className:"px-3 py-1.5 border-t border-border flex gap-3 text-2xs text-muted-foreground/40 shrink-0",children:[(0,n.jsx)("span",{children:"↑↓ navigate"}),(0,n.jsx)("span",{children:"↵ / Tab select"}),(0,n.jsx)("span",{children:"ESC dismiss"})]})]})}var eW=r(89823),eY=r(36261);function eJ({sessions:e,activeSessionId:t,onLoad:r,onDelete:a,onRename:o,onTogglePin:l,onClearAll:i,onClose:c,onNewChat:d}){let{t:p}=(0,m.Y)(),x=p.ask,[g,h]=(0,s.useState)(""),[b,v]=(0,s.useState)(null),[y,j]=(0,s.useState)(""),[w,N]=(0,s.useState)(!1),S=(0,s.useRef)(void 0),C=(0,s.useRef)(null),A=(0,s.useRef)(null);(0,s.useEffect)(()=>{C.current?.focus()},[]),(0,s.useEffect)(()=>{b&&setTimeout(()=>A.current?.focus(),0)},[b]),(0,s.useEffect)(()=>()=>{S.current&&clearTimeout(S.current)},[]);let E=(0,s.useMemo)(()=>{if(!g.trim())return e;let t=g.toLowerCase();return e.filter(e=>!!k(e).toLowerCase().includes(t)||e.messages.some(e=>e.content.toLowerCase().includes(t)))},[e,g]),R=(0,s.useMemo)(()=>{let e=[],t=[],r=[],n=[],s=[];for(let a of E){if(a.pinned){e.push(a);continue}let o=function(e){let t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),n=r-864e5*t.getDay();return e>=r?"today":e>=r-864e5?"yesterday":e>=n?"week":"older"}(a.updatedAt);"today"===o?t.push(a):"yesterday"===o?r.push(a):"week"===o?n.push(a):s.push(a)}return{pinned:e,today:t,yesterday:r,week:n,older:s}},[E]),z=e.filter(e=>e.pinned).length,T=e.filter(e=>e.messages.length>0).length,$=(0,s.useCallback)(e=>{r(e),c()},[r,c]),L=(0,s.useCallback)(()=>{d(),c()},[d,c]),D=(0,s.useCallback)(e=>{v(e.id),j(k(e))},[]),M=(0,s.useCallback)(()=>{b&&y.trim()&&o(b,y.trim()),v(null)},[b,y,o]),_=(0,s.useCallback)(()=>{if(!w){N(!0),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>N(!1),3e3);return}S.current&&clearTimeout(S.current),i(),N(!1)},[w,i]);(0,s.useEffect)(()=>{let e=e=>{"Escape"!==e.key||b||c()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[c,b]);let F=(e,r)=>0===r.length?null:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-2xs font-medium text-muted-foreground/50 uppercase tracking-wider px-1 py-2",children:e}),(0,n.jsx)("div",{className:"flex flex-col gap-1",children:r.map(e=>(0,n.jsx)(eK,{session:e,isActive:e.id===t,editing:b===e.id,editValue:y,onEditValueChange:j,inputRef:A,onLoad:()=>$(e.id),onStartRename:()=>D(e),onCommitRename:M,onCancelRename:()=>v(null),onDelete:()=>a(e.id),onTogglePin:()=>l(e.id),ask:x},e.id))})]},e),P=E.length>0;return(0,n.jsxs)("div",{className:"flex flex-col flex-1 min-h-0 animate-in fade-in-0 duration-150",children:[(0,n.jsx)("div",{className:"px-4 pt-3 pb-2 shrink-0",children:(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(O.A,{size:13,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground/50"}),(0,n.jsx)("input",{ref:C,type:"text",value:g,onChange:e=>h(e.target.value),placeholder:x?.historySearch??"Search conversations...",className:"w-full pl-8 pr-8 py-2 text-xs rounded-lg border border-border bg-background text-foreground placeholder:text-muted-foreground/40 outline-none focus-visible:border-[var(--amber)]/40 transition-colors"}),g&&(0,n.jsx)("button",{type:"button",onClick:()=>h(""),className:"absolute right-2 top-1/2 -translate-y-1/2 p-0.5 rounded text-muted-foreground/40 hover:text-foreground",children:(0,n.jsx)(u.A,{size:12})})]})}),(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 pb-2 shrink-0",children:[(0,n.jsxs)("span",{className:"text-2xs text-muted-foreground/60",children:[x?.historyStats?.(T)??`${T} conversations`,z>0&&(0,n.jsxs)(n.Fragment,{children:[" \xb7 ",z," ",x?.historyPinned??"pinned"]})]}),(0,n.jsxs)("button",{type:"button",onClick:L,className:"flex items-center gap-1 text-2xs text-[var(--amber)] hover:text-[var(--amber)]/80 transition-colors",children:[(0,n.jsx)(eW.A,{size:11}),(0,n.jsx)("span",{children:p.hints?.newChat??"New chat"})]})]}),(0,n.jsx)("div",{className:"flex-1 overflow-y-auto min-h-0 px-3 pb-3",children:P?(0,n.jsxs)("div",{className:"flex flex-col gap-1",children:[F(x?.historyPinned??"Pinned",R.pinned),F(x?.historyToday??"Today",R.today),F(x?.historyYesterday??"Yesterday",R.yesterday),F(x?.historyThisWeek??"This week",R.week),F(x?.historyOlder??"Older",R.older)]}):(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,n.jsx)(f.A,{size:32,className:"text-muted-foreground/20 mb-3"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground/60",children:g?"No matching conversations":x?.historyEmpty??"No conversations yet"}),!g&&(0,n.jsx)("p",{className:"text-2xs text-muted-foreground/40 mt-1",children:x?.historyEmptyHint??"Start a new chat to begin"})]})}),T>0&&(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-t border-border/40 shrink-0",children:[(0,n.jsx)("button",{type:"button",onClick:_,className:`text-2xs px-2 py-0.5 rounded-md transition-colors ${w?"bg-error/10 text-error font-medium":"text-muted-foreground/50 hover:text-error hover:bg-muted"}`,children:(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)(et.A,{size:10}),w?x?.confirmClear??"Confirm clear?":x?.clearAll??"Clear all"]})}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 tabular-nums",children:x?.historyCapacity?.(T)??`${T} of 30`})]})]})}function eK({session:e,isActive:t,editing:r,editValue:s,onEditValueChange:a,inputRef:o,onLoad:l,onStartRename:i,onCommitRename:u,onCancelRename:c,onDelete:d,onTogglePin:m,ask:p}){let x=k(e),g=function(e){let t=e.messages.find(e=>"user"===e.role);if(!t)return"";let r=t.content.replace(/\s+/g," ").trim();return r.length>60?`${r.slice(0,60)}...`:r}(e),h=e.messages.length;return(0,n.jsxs)("div",{className:`group relative rounded-lg transition-colors cursor-pointer ${t?"bg-[var(--amber)]/8 border border-[var(--amber)]/15":"hover:bg-muted/60 border border-transparent"}`,onClick:l,children:[t&&(0,n.jsx)("span",{className:"absolute left-0 top-3 bottom-3 w-[2px] rounded-r-full bg-[var(--amber)]"}),(0,n.jsxs)("div",{className:"px-3 py-2.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5 mb-0.5",children:[e.pinned&&(0,n.jsx)(ee.A,{size:10,className:"shrink-0 text-[var(--amber)]/60 -rotate-45"}),r?(0,n.jsx)("input",{ref:o,type:"text",value:s,onChange:e=>a(e.target.value),onBlur:u,onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u()),"Escape"===e.key&&(e.preventDefault(),c())},onClick:e=>e.stopPropagation(),className:"flex-1 min-w-0 bg-transparent border-b border-[var(--amber)] outline-none text-xs font-medium text-foreground"}):(0,n.jsx)("span",{className:"flex-1 min-w-0 text-xs font-medium text-foreground truncate",children:x}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 shrink-0 tabular-nums",children:function(e){let t=Math.floor((Date.now()-e.getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let r=Math.floor(t/60);if(r<24)return`${r}h ago`;let n=Math.floor(r/24);return n<7?`${n}d ago`:e.toLocaleDateString(void 0,{month:"short",day:"numeric"})}(new Date(e.updatedAt))})]}),!r&&g&&(0,n.jsx)("p",{className:"text-2xs text-muted-foreground/50 truncate mt-0.5 pl-0.5",children:g}),!r&&(0,n.jsxs)("div",{className:"flex items-center justify-between mt-1.5",children:[(0,n.jsxs)("span",{className:"text-2xs text-muted-foreground/40 flex items-center gap-1",children:[(0,n.jsx)(f.A,{size:9}),p?.historyMsgs?.(h)??`${h} msgs`]}),(0,n.jsxs)("div",{className:"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",onClick:e=>e.stopPropagation(),children:[(0,n.jsx)("button",{type:"button",onClick:m,className:`p-1 rounded-md transition-colors ${e.pinned?"text-[var(--amber)] hover:text-muted-foreground":"text-muted-foreground/40 hover:text-[var(--amber)]"}`,title:e.pinned?"Unpin":"Pin",children:e.pinned?(0,n.jsx)(eY.A,{size:11}):(0,n.jsx)(ee.A,{size:11})}),(0,n.jsx)("button",{type:"button",onClick:i,className:"p-1 rounded-md text-muted-foreground/40 hover:text-foreground hover:bg-muted/60 transition-colors",title:p?.renameSession??"Rename",children:(0,n.jsx)(G.A,{size:11})}),(0,n.jsx)("button",{type:"button",onClick:d,className:"p-1 rounded-md text-muted-foreground/40 hover:text-error hover:bg-error/5 transition-colors",title:"Delete",children:(0,n.jsx)(et.A,{size:11})})]})]})]})]})}var eq=r(60241),eQ=r(24371),eV=r(52335),eZ=r(94852);let eG=(0,s.memo)(function({isPanel:e,showHistory:t,onToggleHistory:r,onReset:o,isLoading:l,maximized:i,onMaximize:c,askMode:d,onModeSwitch:f,onClose:h,onDockToPanel:b,hideTitle:v,sessions:y,activeSessionId:j,onLoadSession:w,onDeleteSession:N,onRenameSession:S,onTogglePinSession:C,messages:A}){let{t:E}=(0,m.Y)(),R=y&&y.length>=2,z=y?.find(e=>e.id===j),T=z?k(z):null,[$,L]=(0,s.useState)(!1),D=(0,s.useRef)(null),M=(0,s.useRef)(null),[_,F]=(0,s.useState)(null),[P,I]=(0,s.useState)(""),O=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!$)return;let e=e=>{let t=e.target;D.current&&!D.current.contains(t)&&M.current&&!M.current.contains(t)&&(L(!1),F(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[$]),(0,s.useEffect)(()=>{if(!$)return;let e=e=>{"Escape"===e.key&&(_?F(null):L(!1))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[$,_]),(0,s.useEffect)(()=>{_&&setTimeout(()=>O.current?.focus(),0)},[_]);let H=(0,s.useCallback)(e=>{w?.(e),L(!1)},[w]),B=(0,s.useCallback)((e,t)=>{F(e),I("(empty session)"===t?"":t)},[]),U=(0,s.useCallback)(()=>{_&&S&&P.trim()&&S(_,P.trim()),F(null)},[_,P,S]),[W,Y]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!$||!D.current)return;let e=D.current.getBoundingClientRect();Y({top:e.bottom+4,left:e.left,width:Math.max(e.width,280)})},[$]);let J=$&&W&&y?(0,a.createPortal)((0,n.jsx)("div",{ref:M,className:"fixed z-50 rounded-xl border border-border/50 bg-card shadow-lg py-1 animate-in fade-in-0 slide-in-from-top-1 duration-100 max-h-[60vh] overflow-y-auto",style:{top:W.top,left:W.left,minWidth:Math.max(W.width,280),maxWidth:340},role:"listbox",children:y.map(e=>{let t=e.id===j,r=k(e),s="(empty session)"===r?E.hints?.newChat??"New chat":r;return _===e.id?(0,n.jsx)("div",{className:"flex items-center gap-1 px-2 py-1.5",children:(0,n.jsx)("input",{ref:O,type:"text",value:P,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&F(null)},onBlur:U,className:"flex-1 min-w-0 px-2 py-1 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:border-[var(--amber)]/50",placeholder:"Session name..."})},e.id):(0,n.jsxs)("div",{className:"group/item flex items-center",children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":t,onClick:()=>H(e.id),className:`flex-1 min-w-0 flex items-center gap-2 px-3 py-2.5 text-xs text-left transition-colors ${t?"text-foreground font-medium":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.pinned&&(0,n.jsx)(ee.A,{size:10,className:"shrink-0 text-[var(--amber)]/60 -rotate-45"}),t&&!e.pinned&&(0,n.jsx)(x.A,{size:11,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)("span",{className:"truncate",children:s})]}),(0,n.jsxs)("div",{className:"shrink-0 flex items-center gap-0.5 mr-1 opacity-0 group-hover/item:opacity-100 transition-opacity",children:[C&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),C(e.id)},className:`p-1.5 rounded-md transition-colors ${e.pinned?"text-[var(--amber)] hover:text-muted-foreground hover:bg-muted/60":"text-muted-foreground/40 hover:text-[var(--amber)] hover:bg-[var(--amber)]/5"}`,"aria-label":e.pinned?"Unpin":"Pin",children:e.pinned?(0,n.jsx)(eY.A,{size:10}):(0,n.jsx)(ee.A,{size:10})}),S&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),B(e.id,r)},className:"p-1.5 rounded-md text-muted-foreground/40 hover:text-foreground hover:bg-muted/60","aria-label":`Rename: ${s}`,children:(0,n.jsx)(G.A,{size:10})}),y.length>1&&N&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),N(e.id)},className:"p-1.5 rounded-md text-muted-foreground/40 hover:text-error hover:bg-error/5","aria-label":`Delete: ${s}`,children:(0,n.jsx)(et.A,{size:10})})]})]},e.id)})}),document.body):null;return(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 shrink-0",children:[!e&&(0,n.jsx)("div",{className:"absolute top-2 left-1/2 -translate-x-1/2 w-8 h-1 rounded-full bg-muted-foreground/20 md:hidden"}),!v&&(0,n.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,n.jsx)("div",{className:"w-6 h-6 rounded-lg bg-[var(--amber)]/10 flex items-center justify-center shrink-0",children:t?(0,n.jsx)(es.A,{size:13,className:"text-[var(--amber)]"}):(0,n.jsx)(p.A,{size:13,className:"text-[var(--amber)]"})}),t?(0,n.jsx)("span",{className:"text-sm font-medium text-[var(--amber)]",children:E.ask?.sessionHistory??"Session History"}):R&&T?(0,n.jsxs)("button",{ref:D,type:"button",onClick:()=>{y&&y.length>=2?L(e=>!e):r()},className:"flex items-center gap-1 min-w-0 text-sm font-medium text-[var(--amber)] hover:text-[var(--amber)]/80 transition-colors","aria-expanded":$,"aria-haspopup":"listbox",children:[(0,n.jsx)("span",{className:"truncate max-w-[180px]",children:"(empty session)"===T?E.hints?.newChat??"New chat":T}),(0,n.jsx)(g.A,{size:12,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${$?"rotate-180":""}`})]}):T?(0,n.jsx)("span",{className:"text-sm font-medium text-muted-foreground/60 truncate max-w-[180px]",children:"(empty session)"===T?E.hints?.newChat??"New chat":T}):(0,n.jsx)("span",{className:"text-sm font-medium text-muted-foreground/40",children:E.hints?.newChat??"New chat"})]}),v&&(0,n.jsx)("div",{}),(0,n.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),r()},"aria-pressed":t,className:`p-2 rounded-lg transition-colors ${t?"bg-[var(--amber)]/10 text-[var(--amber)]":"text-muted-foreground hover:text-foreground hover:bg-muted"}`,title:E.hints.sessionHistory,children:(0,n.jsx)(es.A,{size:14})}),A&&A.length>0&&(0,n.jsx)(eC,{messages:A,disabled:l}),(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),o()},disabled:l,className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors disabled:opacity-40",title:E.hints.newSession,children:(0,n.jsx)(eW.A,{size:14})}),c&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),c()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:i?E.hints.restorePanel:E.hints.maximizePanel,children:i?(0,n.jsx)(eq.A,{size:14}):(0,n.jsx)(eQ.A,{size:14})}),b&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),b()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:E.hints.dockToSide??"Dock to side panel",children:(0,n.jsx)(eV.A,{size:14})}),f&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),f()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:"popup"===d?E.hints.dockToSide:E.hints.openAsPopup,children:"popup"===d?(0,n.jsx)(eV.A,{size:14}):(0,n.jsx)(eZ.A,{size:14})}),h&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),h()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:E.hints.closePanel,"aria-label":"Close",children:(0,n.jsx)(u.A,{size:14})})]}),"u">typeof document&&J]})});var eX=r(49619),e0=r(38798);let e1={kb:{icon:l.A,cls:"text-muted-foreground"},upload:{icon:_.A,cls:"text-muted-foreground"},image:{icon:i.A,cls:"text-muted-foreground"},skill:{icon:M.A,cls:"text-[var(--amber)]"},agent:{icon:eX.A,cls:"text-muted-foreground"}},e2={kb:"border-border bg-muted text-foreground",upload:"border-border bg-muted text-foreground",image:"border-border bg-muted text-foreground",skill:"border-[var(--amber)]/25 bg-[var(--amber)]/10 text-foreground",agent:"border-[var(--amber)]/25 bg-[var(--amber)]/10 text-foreground"};function e5({path:e,onRemove:t,variant:r="kb",imageData:o,imageMime:l,status:i,error:c,truncatedInfo:d}){let[m,f]=(0,s.useState)(!1),[p,x]=(0,s.useState)(!1),[g,h]=(0,s.useState)(!1),b=(0,s.useRef)(null),[v,y]=(0,s.useState)(null),[j,w]=(0,s.useState)(null);(0,s.useEffect)(()=>h(!0),[]);let k="kb"===r&&e.endsWith("/"),N=k?e.slice(0,-1):e,S=N.split("/").pop()??N,C="kb"===r&&!k&&S.endsWith(".csv"),{icon:A,cls:E}=k?{icon:e0.A,cls:"text-yellow-400"}:C?{icon:eo.A,cls:"text-success"}:e1[r],R=!!d,z=null,T="";"loading"===i?(z=F.A,T="text-muted-foreground animate-spin"):"error"===i?(z=U.A,T="text-destructive"):R?(z=ei.A,T="text-[var(--amber)]"):"success"===i&&(z=eu.A,T="text-emerald-500");let $="error"===i?"border-destructive/30 bg-destructive/5 text-foreground":R?"border-[var(--amber)]/30 bg-[var(--amber)]/5 text-foreground":e2[r],L=null;if("error"===i&&c)L=c;else if(R){let e=d.totalChars>0?Math.round(d.includedChars/d.totalChars*100):0;L=`Document truncated — only ${e}% included (${Math.round(d.includedChars/1e3)}K / ${Math.round(d.totalChars/1e3)}K chars, ${d.totalPages} pages total)`}(0,s.useEffect)(()=>{if(!m||!b.current)return void y(null);let e=b.current.getBoundingClientRect();y({top:e.top-8,left:e.left})},[m]),(0,s.useEffect)(()=>{if(!p||!b.current)return void w(null);let e=b.current.getBoundingClientRect();w({top:e.top-8,left:e.left})},[p]);let D=m&&v&&o&&l?(0,n.jsx)("div",{className:"fixed z-50 p-1 rounded-lg border border-border bg-card shadow-lg pointer-events-none",style:{left:v.left,bottom:window.innerHeight-v.top},children:(0,n.jsx)("img",{src:`data:${l};base64,${o}`,alt:S,className:"max-h-48 max-w-64 rounded object-contain"})}):null,M=p&&j&&L?(0,n.jsx)("div",{className:`fixed z-50 px-2.5 py-1.5 rounded-lg border bg-card text-xs shadow-lg pointer-events-none max-w-[280px] ${"error"===i?"border-destructive/20 text-destructive":"border-[var(--amber)]/20 text-[var(--amber-text)]"}`,style:{left:j.left,bottom:window.innerHeight-j.top},children:L}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{ref:b,className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs border max-w-[220px] ${$}`,onMouseEnter:()=>{o&&f(!0),L&&x(!0)},onMouseLeave:()=>{f(!1),x(!1)},children:[(0,n.jsx)(A,{size:11,className:`${E} shrink-0`}),(0,n.jsx)("span",{className:"truncate",title:k?N:e,children:S}),z&&(0,n.jsx)(z,{size:10,className:`${T} shrink-0`}),(0,n.jsx)("button",{type:"button",onClick:t,"aria-label":`Remove ${S}`,className:"p-0.5 -mr-1 rounded hover:text-foreground transition-colors shrink-0 text-muted-foreground",children:(0,n.jsx)(u.A,{size:10})})]}),g&&D&&(0,a.createPortal)(D,document.body),g&&M&&(0,a.createPortal)(M,document.body)]})}function e3({selectedAgent:e,onSelect:t,installedAgents:r,loading:o=!1}){let{t:l}=(0,m.Y)(),i=l.panels.agents,[c,d]=(0,s.useState)(!1),[f,p]=(0,s.useState)(null),h=(0,s.useRef)(null),b=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!c||!h.current)return;let e=h.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>200?"up":"down";p({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})},[c]),(0,s.useEffect)(()=>{if(!c)return;let e=e=>{let t=e.target;h.current&&!h.current.contains(t)&&b.current&&!b.current.contains(t)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]),(0,s.useEffect)(()=>{if(!c)return;let e=e=>{"Escape"===e.key&&d(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[c]),(0,s.useEffect)(()=>{if(!c||!h.current)return;let e=()=>{if(!h.current)return;let e=h.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>200?"up":"down";p({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})};return window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),()=>{window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)}},[c]);let v=(0,s.useCallback)(()=>{t(null),d(!1)},[t]),y=(0,s.useCallback)(e=>{t({id:e.id,name:e.name}),d(!1)},[t]),j=(0,s.useCallback)(e=>{e.stopPropagation(),t(null)},[t]),w=!e,k=e?.name??i.acpDefaultAgent;if(!o&&0===r.length&&!e)return null;let N=c&&f?(0,n.jsxs)("div",{ref:b,role:"listbox","aria-label":i.acpSelectAgent,className:"fixed z-50 min-w-[180px] max-w-[240px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{left:f.left,..."up"===f.direction?{bottom:window.innerHeight-f.top}:{top:f.top}},children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":w,onClick:v,className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)(eX.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsx)("span",{className:"flex-1 truncate font-medium",children:i.acpDefaultAgent}),w&&(0,n.jsx)(x.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]}),r.length>0&&(0,n.jsx)("div",{className:"mx-2 my-1 border-t border-border/60"}),r.map(t=>{let r=e?.id===t.id;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":r,onClick:()=>y(t),className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)("span",{className:"w-2 h-2 rounded-full bg-[var(--success)] shrink-0"}),(0,n.jsx)("span",{className:"flex-1 truncate",children:t.name}),r&&(0,n.jsx)(x.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]},t.id)})]}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:h,type:"button",onClick:()=>d(e=>!e),className:`
|
|
18
|
+
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
19
|
+
text-2xs font-medium transition-colors
|
|
20
|
+
border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
21
|
+
${w?"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground":"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15"}
|
|
22
|
+
`,title:i.acpChangeAgent,"aria-expanded":c,"aria-haspopup":"listbox",children:[w?(0,n.jsx)(eX.A,{size:11,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-[var(--success)] shrink-0"}),(0,n.jsx)("span",{className:"truncate max-w-[120px]",children:k}),e?(0,n.jsx)("span",{role:"button",tabIndex:0,onClick:j,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),j(e))},className:"p-0.5 -mr-1 rounded-full text-muted-foreground hover:text-foreground transition-colors","aria-label":`Remove ${e.name}`,children:(0,n.jsx)(u.A,{size:9})}):(0,n.jsx)(g.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&N&&(0,a.createPortal)(N,document.body)]})}var e4=r(91958),e8=r(65576),e6=r(47376),e9=r(60112);let e7="mindos-provider-model";function te(e,t){try{e||t?localStorage.setItem(e7,JSON.stringify({provider:e,model:t})):localStorage.removeItem(e7),localStorage.removeItem("mindos-provider-override")}catch{}}function tt({providerValue:e,onProviderChange:t,modelValue:r,onModelChange:o,disabled:l=!1}){let i,{t:u,locale:c}=(0,m.Y)(),[d,f]=(0,s.useState)(!1),p=(0,s.useRef)(null),h=(0,s.useRef)(null),b=(0,s.useRef)(null),v=(0,s.useRef)(null),y=(0,s.useRef)(null),[j,w]=(0,s.useState)(null),k=(0,s.useRef)(null),N=(0,s.useRef)(null),[S,C]=(0,s.useState)(null),[A,E]=(0,s.useState)({}),[R,z]=(0,s.useState)(null),[T,$]=(0,s.useState)(!1),[L,D]=(0,s.useState)(""),[M,_]=(0,s.useState)(""),[P,I]=(0,s.useState)(-1),H=(0,s.useRef)(0),B=(0,s.useRef)({}),U=(0,s.useRef)(void 0),W=(0,s.useRef)(void 0),Y=(0,s.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=void 0)},[]),J=(0,s.useCallback)(()=>{Y(),U.current=setTimeout(()=>{C(null),_("")},300)},[Y]);(0,s.useEffect)(()=>()=>{U.current&&clearTimeout(U.current),W.current&&clearTimeout(W.current),eo.current&&clearTimeout(eo.current)},[]),(0,s.useEffect)(()=>{let e=!1,t=()=>{fetch("/api/settings",{cache:"no-store"}).then(e=>e.json()).then(t=>{e||w(t)}).catch(()=>{})};t();let r=()=>{"visible"===document.visibilityState&&t()},n=()=>t();return document.addEventListener("visibilitychange",r),window.addEventListener("mindos:settings-changed",n),()=>{e=!0,document.removeEventListener("visibilitychange",r),window.removeEventListener("mindos:settings-changed",n)}},[]);let K=j?.ai?.activeProvider||"",q=(0,s.useMemo)(()=>j?(j.ai?.providers??[]).map(e=>e.id):[],[j]),Q=(0,s.useRef)(t);Q.current=t;let V=(0,s.useRef)(o);V.current=o;let Z=(0,s.useRef)(!1);(0,s.useEffect)(()=>{j&&!Z.current&&(Z.current=!0,e&&!q.includes(e)&&(Q.current(null),V.current(null),te(null,null)))},[j]);let G=e??K,X=(0,e9.lh)(j?.ai?.providers??[],String(G)),ee=X?e6.T_[X.protocol]:null,et=X?.model||ee?.defaultModel||"",er=r||et,en=X?.name||(ee?"zh"===c?ee.nameZh:ee.name:String(G)),[es,ea]=(0,s.useState)({}),eo=(0,s.useRef)(void 0),ei=(0,s.useCallback)(()=>{if(!p.current)return;let e=p.current.getBoundingClientRect(),t=e.top>window.innerHeight-e.bottom&&e.top>280;ea({position:"fixed",left:Math.min(e.left,window.innerWidth-270),...t?{bottom:window.innerHeight-e.top+6}:{top:e.bottom+6},zIndex:50})},[]),eu=(0,s.useCallback)(()=>{eo.current&&clearTimeout(eo.current),eo.current=setTimeout(()=>{ei()},0)},[ei]);(0,s.useEffect)(()=>{d&&ei()},[d,ei]),(0,s.useEffect)(()=>{if(d)return window.addEventListener("scroll",eu,!0),window.addEventListener("resize",eu),()=>{window.removeEventListener("scroll",eu,!0),window.removeEventListener("resize",eu),eo.current&&clearTimeout(eo.current)}},[d,eu]),(0,s.useEffect)(()=>{if(!d)return;let e=e=>{let t=e.target;p.current?.contains(t)||h.current?.contains(t)||b.current?.contains(t)||(f(!1),C(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[d]),(0,s.useEffect)(()=>{if(!d)return;let e=e=>{"Escape"===e.key&&(S?(C(null),_("")):f(!1))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[d,S]);let ec=(0,s.useCallback)(async(e,t=!1)=>{if(!t&&B.current[e]){z(B.current[e]),$(!1);return}t&&delete B.current[e],$(!0),D(""),z(null);let r=++H.current;try{let t=await fetch("/api/settings/list-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})});if(r!==H.current)return;let n=await t.json();if(r!==H.current)return;n.ok&&Array.isArray(n.models)?(B.current[e]=n.models,z(n.models)):D(n.error||"Failed")}catch{r===H.current&&D("Network error")}finally{r===H.current&&$(!1)}},[]),ed=(0,s.useCallback)(e=>{let t=(0,e9.lh)(j?.ai?.providers??[],e);if(!t)return!1;let r=e6.T_[t.protocol];return r?.supportsListModels??!1},[j]),em=(0,s.useCallback)(()=>{let e=k.current,t=N.current;if(!e||!t)return;let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),s=r.right+4,a=n.top;window.innerHeight-a<320&&(a=Math.max(8,n.bottom-320)),E({position:"fixed",left:s+220>window.innerWidth-8?r.left-220-4:s,top:a,zIndex:51})},[]),ef=(0,s.useCallback)(e=>{Y(),W.current&&clearTimeout(W.current),W.current=setTimeout(()=>{if(!ed(e)){C(null),_("");return}C(e),_(""),I(-1),D(""),z(B.current[e]??null),B.current[e]||ec(e),requestAnimationFrame(()=>{em(),setTimeout(()=>v.current?.focus(),50)})},80)},[Y,ec,em,ed]),ep=(0,s.useCallback)(()=>{Y(),W.current&&(clearTimeout(W.current),W.current=void 0),C(null),_("")},[Y]),ex=(0,s.useCallback)(e=>{Q.current(e),V.current(null),te(e,null),f(!1),C(null),_("")},[]),eg=(0,s.useCallback)((e,t)=>{Q.current(e),V.current(t),te(e,t),f(!1),C(null),_("")},[]),eh=(0,s.useMemo)(()=>{if(!R)return[];if(!M.trim())return R;let e=M.toLowerCase();return R.filter(t=>t.toLowerCase().includes(e))},[R,M]);(0,s.useEffect)(()=>{I(-1)},[eh]);let eb=(0,s.useCallback)(e=>{eh.length&&("ArrowDown"===e.key?(e.preventDefault(),I(e=>(e+1)%eh.length)):"ArrowUp"===e.key?(e.preventDefault(),I(e=>(e-1+eh.length)%eh.length)):"Enter"===e.key&&P>=0&&P<eh.length&&S?(e.preventDefault(),eg(S,eh[P])):"Escape"===e.key&&(e.preventDefault(),C(null),_("")))},[eh,P,S,eg]);if((0,s.useEffect)(()=>{if(P<0||!y.current)return;let e=y.current.querySelectorAll("[data-model-item]");e[P]?.scrollIntoView({block:"nearest"})},[P]),!j||0===q.length)return null;let ev=(er||"").length>20?(er||"").slice(0,18)+"…":er,ey=(i=X?.name||"")&&i.length>12?i.slice(0,10)+"…":i||ee?.shortLabel||en,ej=`${en} \xb7 ${er}`,ew=!!(r&&r!==et),ek=d?(0,n.jsx)("div",{ref:h,style:es,children:(0,n.jsx)("div",{ref:k,role:"listbox","aria-label":u.ask?.providerCapsule??"Provider",className:"w-[260px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{maxHeight:"70vh",overflowY:"auto"},children:q.map(t=>{let s=(0,e9.lh)(j?.ai?.providers??[],t);if(!s)return null;let a=e6.T_[s.protocol],o=s.name||("zh"===c?a?.nameZh:a?.name)||t,l=r&&e===t?r:s.model||a?.defaultModel||"",i=e===t||!e&&K===t,d=S===t,m=ed(t);return(0,n.jsx)("div",{ref:d?N:void 0,onMouseEnter:()=>m?ef(t):ep(),onMouseLeave:J,children:(0,n.jsxs)("div",{className:`flex w-full items-center text-xs transition-colors ${d?"bg-accent/60":"hover:bg-muted/60"}`,children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":i,onClick:()=>ex(t),className:"flex flex-1 items-center gap-2 px-3 py-1.5 min-w-0 text-left",children:[(0,n.jsx)("span",{className:`shrink-0 text-xs ${i?"font-medium text-foreground":"text-foreground/80"}`,children:o}),l&&(0,n.jsx)("span",{className:"min-w-0 truncate rounded bg-muted/70 px-1.5 py-px text-[10px] font-mono leading-tight text-muted-foreground",children:l}),i&&(0,n.jsx)(x.A,{size:11,className:"shrink-0 ml-auto text-[var(--amber)]"})]}),m&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),S===t?ep():ef(t)},className:`shrink-0 px-1.5 py-1.5 mr-1 rounded transition-colors ${d?"text-foreground":"text-muted-foreground/40 hover:text-muted-foreground"}`,title:u.ask?.selectModel??"Select model",children:(0,n.jsx)(el.A,{size:11})})]})},t)})})}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:p,type:"button",onClick:()=>{!l&&(f(e=>!e),d&&(C(null),_("")))},disabled:l,className:`
|
|
23
|
+
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
24
|
+
text-2xs font-medium transition-colors select-none max-w-[260px]
|
|
25
|
+
border focus:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
26
|
+
disabled:opacity-40 disabled:cursor-not-allowed
|
|
27
|
+
${e||ew?"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15":"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground"}
|
|
28
|
+
`,title:ej,"aria-expanded":d,"aria-haspopup":"listbox",children:[(0,n.jsx)(e8.A,{size:11,className:"shrink-0"}),(0,n.jsxs)("span",{className:"truncate",children:[ey,(0,n.jsx)("span",{className:"text-muted-foreground",children:" \xb7 "}),(0,n.jsx)("span",{className:ew?"text-[var(--amber)]":"text-muted-foreground",children:ev})]}),(0,n.jsx)(g.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&ek&&(0,a.createPortal)(ek,document.body),"u">typeof document&&d&&(()=>{if(!S)return null;let t=(0,e9.lh)(j?.ai?.providers??[],S),s=t?e6.T_[t.protocol]:null,o=t?.name||(s?"zh"===c?s.nameZh:s.name:String(S));return(0,a.createPortal)((0,n.jsxs)("div",{ref:b,style:A,className:"w-[220px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",onMouseEnter:Y,onMouseLeave:J,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-border/40",children:[(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground",children:o}),(0,n.jsx)("button",{type:"button",onClick:()=>ec(S,!0),disabled:T,className:"p-1 text-muted-foreground/50 hover:text-foreground transition-colors disabled:opacity-30",title:"Refresh",children:(0,n.jsx)(e4.A,{size:10,className:T?"animate-spin":""})})]}),(0,n.jsx)("div",{className:"px-2 pt-1.5 pb-1",children:(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(O.A,{size:10,className:"absolute left-2 top-1/2 -translate-y-1/2 text-muted-foreground/40"}),(0,n.jsx)("input",{ref:v,type:"text",value:M,onChange:e=>_(e.target.value),onKeyDown:eb,placeholder:u.ask?.searchModels??"Search...",className:"w-full text-2xs pl-6 pr-2 py-1 rounded border border-border/50 bg-transparent text-foreground placeholder:text-muted-foreground/40 focus:outline-none focus-visible:border-[var(--amber)]/50",autoComplete:"off"})]})}),(0,n.jsxs)("div",{ref:y,className:"max-h-[240px] overflow-y-auto px-1 pb-1",children:[T&&!R&&(0,n.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-3 text-2xs text-muted-foreground justify-center",children:[(0,n.jsx)(F.A,{size:10,className:"animate-spin"}),u.ask?.loadingModels??"Loading..."]}),L&&!T&&(0,n.jsx)("div",{className:"px-2 py-3 text-2xs text-destructive text-center",children:L}),!T&&!L&&0===eh.length&&null!==R&&(0,n.jsx)("div",{className:"px-2 py-3 text-2xs text-muted-foreground text-center",children:M?"No matches":"No models"}),eh.map((a,o)=>{let l=e===S&&r===a,i=t?.model||s?.defaultModel;return(0,n.jsxs)("button",{type:"button","data-model-item":!0,onClick:()=>eg(S,a),className:`w-full text-left px-2 py-1 text-2xs rounded transition-colors flex items-center gap-1 ${l?"bg-[var(--amber)]/12 text-foreground font-medium":o===P?"bg-accent":"hover:bg-accent/60"}`,children:[l?(0,n.jsx)(x.A,{size:9,className:"shrink-0 text-[var(--amber)]"}):(0,n.jsx)("span",{className:"w-[9px] shrink-0"}),(0,n.jsx)("span",{className:"truncate",children:a}),a===i&&!l&&(0,n.jsx)("span",{className:"ml-auto text-[9px] text-muted-foreground/30 shrink-0",children:"default"})]},a)})]})]}),document.body)})()]})}var tr=r(68589);let tn=new Set([401,403,429]),ts=[/api.?key/i,/model.*not.?found/i,/authentication/i,/unauthorized/i,/forbidden/i];var ta=r(91337),to=r(2431);let tl=new WeakMap;function ti({visible:e,currentFile:t,initialMessage:r,initialAcpAgent:f,onFirstMessage:p,variant:x,onClose:g,maximized:b,onMaximize:k,askMode:D,onModeSwitch:M,onDockToPanel:_}){let F="panel"===x,P="home"===x,I=(0,s.useRef)(null),O=(0,s.useRef)(null),{t:H}=(0,m.Y)(),[B,U]=(0,s.useState)(!1);(0,s.useEffect)(()=>U(!0),[]);let[W,Y]=(0,s.useState)(""),J=(0,s.useRef)("");J.current=W;let[K,q]=(0,s.useState)([]),Q=(0,s.useRef)(K);Q.current=K;let[V,Z]=(0,s.useState)(!1),[G,X]=(0,s.useState)(!1),[ee,et]=(0,s.useState)(!1),er=(0,s.useRef)(null),en=(0,s.useRef)(null),[es,ea]=(0,s.useState)(null),[eo,el]=(0,s.useState)(null),ei=(0,s.useRef)(eo);ei.current=eo;let[eu,ec]=(0,s.useState)(null),ed=(0,s.useRef)(eu),em=(0,s.useRef)(null);ed.current=eu;let[ef,ep]=(0,s.useState)("agent"),[ex,eg]=(0,s.useState)(null),[eh,eb]=(0,s.useState)(null);(0,s.useEffect)(()=>{ep(function(){try{let e=localStorage.getItem(h);if("chat"===e||"agent"===e)return e}catch{}return"agent"}());let e=function(){try{let e=localStorage.getItem(e7);if(!e){let e=localStorage.getItem("mindos-provider-override");if(e&&((0,e6.rl)(e)||(0,e9.Ny)(e)))return{provider:e,model:null};return{provider:null,model:null}}let t=JSON.parse(e),r=t?.provider&&((0,e6.rl)(t.provider)||(0,e9.Ny)(t.provider))?t.provider:null,n="string"==typeof t?.model?t.model:null;return{provider:r,model:n}}catch{return{provider:null,model:null}}}();eg(e.provider),eb(e.model)},[]);let ev=function(e){let[t,r]=(0,s.useState)([]),[n,a]=(0,s.useState)([]),[o,l]=(0,s.useState)(null),i=(0,s.useRef)(null),u=(0,s.useCallback)(async()=>{let t=(await N()).sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30),n=t.filter(e=>0===e.messages.length).map(e=>e.id),s=n.length>0?t.filter(e=>!n.includes(e.id)):t;n.length>0&&A(n);let o=w(e),i=e?s.find(t=>t.currentFile===e):s[0];i?(l(i.id),r(i.messages),a([...s])):(l(o.id),r([]),a([o,...s].slice(0,30)))},[e]),c=(0,s.useCallback)((t,r)=>{if(!r||0===t.length)return;let n=null;a(s=>{let a=Date.now(),o=s.find(e=>e.id===r);n=o?{...o,currentFile:e,updatedAt:a,messages:t}:{id:r,currentFile:e,createdAt:a,updatedAt:a,messages:t};let l=s.filter(e=>e.id!==r);return[n,...l].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30)}),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{n&&S(n)},600)},[e]),d=(0,s.useCallback)(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),m=(0,s.useCallback)(()=>{a(t=>{let n=t.find(e=>e.id===o);if(n&&0===n.messages.length)return t;let s=w(e);return l(s.id),r([]),[s,...t].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30)})},[e,o]),f=(0,s.useCallback)(e=>{let t=n.find(t=>t.id===e);if(!t)return;let s=o?n.find(e=>e.id===o):null;s&&0===s.messages.length&&s.id!==e&&a(e=>e.filter(e=>e.id!==s.id)),l(t.id),r(t.messages)},[n,o]),p=(0,s.useCallback)(t=>{let s=n.find(e=>e.id===t);s&&s.messages.length>0&&C(t);let i=n.filter(e=>e.id!==t);if(a(i),o===t){let t=w(e);l(t.id),r([]),a([t,...i].slice(0,30))}},[o,e,n]),x=(0,s.useCallback)((e,t)=>{let r=t.trim();a(t=>{let n=t.findIndex(t=>t.id===e);if(n<0)return t;let s={...t[n],title:r||void 0},a=[...t];return a[n]=s,S(s),a})},[]),g=(0,s.useCallback)(e=>{a(t=>{let r=t.findIndex(t=>t.id===e);if(r<0)return t;let n={...t[r],pinned:!t[r].pinned},s=[...t];return s[r]=n,n.messages.length>0&&S(n),s})},[]),h=(0,s.useCallback)(t=>{var r;if(!o)return;let s=n.find(e=>e.id===o);if(!s)return;let l=(r={...s,currentFile:s.currentFile??e,updatedAt:Date.now()},{...r,defaultAcpAgent:t});a(e=>[l,...e.filter(e=>e.id!==o)].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30)),i.current&&clearTimeout(i.current),l.messages.length>0&&(i.current=setTimeout(()=>{S(l)},600))},[o,e,n]),b=(0,s.useCallback)(()=>{let t=n.filter(e=>e.messages.length>0).map(e=>e.id);t.length>0&&A(t);let s=w(e);l(s.id),r([]),a([s])},[e,n]);return{messages:t,setMessages:r,sessions:[...n].sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:t.updatedAt-e.updatedAt),activeSession:n.find(e=>e.id===o)??null,activeSessionId:o,initSessions:u,persistSession:c,clearPersistTimer:d,resetSession:m,loadSession:f,deleteSession:p,renameSession:x,togglePinSession:g,setSessionDefaultAcpAgent:h,clearAllSessions:b}}(t),ey=(0,s.useRef)(ev);ey.current=ev;let ej=function(e){let[t,r]=(0,s.useState)([]),[n,a]=(0,s.useState)(""),o=(0,s.useRef)(null),l=(0,s.useRef)(e);l.current=e;let i=(0,s.useCallback)(async e=>{if(!e||0===e.length)return;let t=Array.from(e).slice(0,8),n=[],s=[];for(let e of t){let t=R(e.name);E.has(t)?n.push(e):s.push(e.name)}if(s.length>0){let e=l.current?.unsupportedType??"Unsupported file type";a(`${e}: ${s.join(", ")}`)}else a("");let o=[],i=[];for(let e of n)".pdf"===R(e.name)?(i.push({name:e.name,content:"",status:"loading"}),o.push(e)):i.push({name:e.name,content:await e.text(),status:"success"});if(r(e=>{let t=[...e];for(let e of i)t.some(t=>t.name===e.name)||t.push(e);return t}),o.length>0){let e=await Promise.all(o.map(z));r(t=>t.map(t=>"loading"!==t.status?t:e.find(e=>e.name===t.name)??t))}},[]),u=(0,s.useCallback)(e=>{r(t=>t.filter((t,r)=>r!==e))},[]);return{localAttachments:t,uploadError:n,uploadInputRef:o,pickFiles:i,removeAttachment:u,clearAttachments:(0,s.useCallback)(()=>{r([]),a("")},[]),injectFiles:(0,s.useCallback)(e=>{r(t=>{let r=[...t];for(let t of e)r.some(e=>e.name===t.name)||r.push(t);return r})},[])}}((0,s.useMemo)(()=>({unsupportedType:H.fileImport?.unsupported}),[H])),ew=(0,s.useRef)(ej);ew.current=ej;let ek=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(""),a=(0,s.useCallback)(async e=>{n("");let r=e.slice(0,4),s=[];for(let e of r){var a;if(a=e.type,!T.has(a)){n(`Unsupported image type: ${e.type}`);continue}try{let{data:t,mimeType:r}=await $(e);s.push({type:"image",data:t,mimeType:r,fileName:e.name||void 0})}catch{n(`Failed to process image: ${e.name}`)}}t(e=>{let t=[...e,...s];return t.length>4?(n("Maximum 4 images allowed"),t.slice(0,4)):t})},[]),o=(0,s.useCallback)(async e=>{let t=e.clipboardData?.items;if(!t)return!1;let r=L(t);return 0!==r.length&&(await a(r),!0)},[a]),l=(0,s.useCallback)(async e=>{let t=e.dataTransfer?.items;if(!t)return;let r=L(t);r.length>0&&(e.preventDefault(),await a(r))},[a]),i=(0,s.useCallback)(async e=>{if(!e)return;let t=Array.from(e).filter(e=>{var t;return t=e.type,T.has(t)});await a(t)},[a]);return{images:e,imageError:r,addImages:a,handlePaste:o,handleDrop:l,handleFileSelect:i,removeImage:(0,s.useCallback)(e=>{t(t=>t.filter((t,r)=>r!==e))},[]),clearImages:(0,s.useCallback)(()=>{t([]),n("")},[])}}(),eN=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[l,i]=(0,s.useState)(0),u=(0,s.useCallback)(()=>{fetch("/api/files").then(e=>e.ok?e.json():[]).then(e=>Array.isArray(e)?e:[]).catch(()=>[]).then(t)},[]);(0,s.useEffect)(()=>{u();let e=()=>u();return window.addEventListener("mindos:files-changed",e),()=>window.removeEventListener("mindos:files-changed",e)},[u]);let c=(0,s.useCallback)((t,r)=>{let s=r??t.length,a=t.slice(0,s),l=a.lastIndexOf("@");if(-1===l||l>0&&" "!==a[l-1]&&"\n"!==a[l-1])return void n(null);let u=a.slice(l+1);if(u.includes(" ")||u.includes("\n")){n(null),o([]),i(0);return}let c=u.toLowerCase();if(!c){n(u),o(e.slice(0,30)),i(0);return}let d=e.map(e=>{let t=(e.split("/").pop()??e).toLowerCase(),r=e.toLowerCase(),n=0;return t.startsWith(c)?n=100:t.includes(c)?n=50:r.includes(c)&&(n=10),{path:e,score:n}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).slice(0,30);if(0===d.length){n(null),o([]),i(0);return}n(u),o(d.map(e=>e.path)),i(0)},[e]),d=(0,s.useCallback)(e=>{0!==a.length&&("down"===e?i(e=>Math.min(e+1,a.length-1)):i(e=>Math.max(e-1,0)))},[a.length]);return{mentionQuery:r,mentionResults:a,mentionIndex:l,updateMentionFromInput:c,navigateMention:d,resetMention:(0,s.useCallback)(()=>{n(null),o([]),i(0)},[])}}(),eS=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[l,i]=(0,s.useState)(0),u=(0,s.useRef)(!1),c=(0,s.useCallback)(async()=>{t((await fetch("/api/skills").then(e=>e.ok?e.json():{skills:[]}).then(e=>Array.isArray(e?.skills)?e.skills:[]).catch(()=>[])).filter(e=>e.enabled)),u.current=!0},[]);(0,s.useEffect)(()=>{c();let e=()=>c();return window.addEventListener("mindos:skills-changed",e),()=>window.removeEventListener("mindos:skills-changed",e)},[c]);let d=(0,s.useCallback)((t,r)=>{let s=t.slice(0,r),a=s.lastIndexOf("/");if(-1===a||a>0&&" "!==s[a-1]&&"\n"!==s[a-1])return void n(null);let l=s.slice(a+1);if(l.includes(" "))return void n(null);if(!u.current){c(),n(null);return}let d=l.toLowerCase(),m=d?e.map(e=>{let t=e.name.toLowerCase(),r=0;return t.startsWith(d)?r=100:t.includes(d)?r=50:e.description.toLowerCase().includes(d)&&(r=10),{s:e,score:r}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).slice(0,20).map(e=>({type:"skill",name:e.s.name,description:e.s.description})):e.slice(0,20).map(e=>({type:"skill",name:e.name,description:e.description}));if(0===m.length){n(null),o([]),i(0);return}n(l),o(m),i(0)},[e,c]),m=(0,s.useCallback)(e=>{0!==a.length&&("down"===e?i(e=>Math.min(e+1,a.length-1)):i(e=>Math.max(e-1,0)))},[a.length]);return{slashQuery:r,slashResults:a,slashIndex:l,updateSlashFromInput:d,navigateSlash:m,resetSlash:(0,s.useCallback)(()=>{n(null),o([]),i(0)},[])}}(),eC=(0,to.z)(),eA=(0,s.useRef)(ek);eA.current=ek;let eE=(0,s.useRef)(eN);eE.current=eN;let eR=(0,s.useRef)(eS);eR.current=eS;let ez=(0,s.useCallback)(()=>{Y(""),el(null),q(t?[t]:[]),ew.current.clearAttachments()},[t]),eT=(0,s.useCallback)(e=>{Y(e.content),e.images&&e.images.length>0&&eA.current.clearImages(),e.attachedFiles&&q(e.attachedFiles),e.skillName&&eR.current.resetSlash(),ec(e.agentId&&e.agentName&&e.agentId!==y.id?{id:e.agentId,name:e.agentName}:null),setTimeout(()=>I.current?.focus(),50)},[]),e$=(0,s.useRef)({inputValueRef:J,mentionRef:eE,slashRef:eR,imageUploadRef:eA,sessionRef:ey,uploadRef:ew,selectedSkillRef:ei,selectedAcpAgentRef:ed,attachedFilesRef:Q}),eL=function({currentFile:e,chatMode:t,providerOverride:r,modelOverride:n,onFirstMessage:a,refs:o,errorLabels:l,resetInputState:i,onRestoreInput:u}){let[c,d]=(0,s.useState)(!1),[m,f]=(0,s.useState)("connecting"),[p,x]=(0,s.useState)(0),g=(0,s.useRef)(3),h=(0,s.useRef)(null),b=(0,s.useRef)(!1),v=(0,s.useRef)(!1),y=(0,s.useRef)(null),w=(0,s.useRef)(!1),k=(0,s.useCallback)(()=>{let e=y.current;h.current?.abort(),e&&(w.current=!0,o.sessionRef.current?.setMessages(t=>{let r=[...t],n=e.userMessageIndex;return n+1<r.length&&r[n+1]?.role==="assistant"&&r.splice(n+1,1),n<r.length&&r[n]?.role==="user"&&r.splice(n,1),r}),u?.(e.userMessage),y.current=null,v.current=!0,setTimeout(()=>{v.current=!1},300))},[o,u]),N=(0,s.useCallback)(async s=>{if(s.preventDefault(),v.current)return;let u=o.mentionRef.current,c=o.slashRef.current,m=o.imageUploadRef.current,p=o.sessionRef.current,k=o.uploadRef.current;if(!u||!c||!m||!p||!k||null!==u.mentionQuery||null!==c.slashQuery)return;let N=o.inputValueRef.current?.trim()??"";if(k.localAttachments.some(e=>"loading"===e.status)||!N&&0===m.images.length||S.current)return;let C=o.selectedSkillRef.current,A=o.selectedAcpAgentRef.current,E=m.images.length>0?[...m.images]:void 0,R=o.attachedFilesRef.current.filter(t=>t!==e),z=R.length>0?R:void 0,T=k.localAttachments.filter(e=>"loading"!==e.status).map(e=>e.name),$=j({role:"user",content:N,timestamp:Date.now(),...C&&{skillName:C.name},...E&&{images:E},...z&&{attachedFiles:z},...T.length>0&&{uploadedFileNames:T}},A);m.clearImages();let L=[...p.messages,$];y.current={userMessageIndex:L.length-1,userMessage:$},w.current=!1,p.setMessages([...L,j({role:"assistant",content:"",timestamp:Date.now()},A)]),i(),a&&!b.current&&(b.current=!0,a()),d(!0),f("connecting"),x(0);let D=new AbortController;h.current=D;let M=3;try{let e=localStorage.getItem("mindos-reconnect-retries");if(null!==e){let t=parseInt(e,10);Number.isFinite(t)&&(M=Math.max(0,Math.min(10,t)))}}catch{}g.current=M;let _=JSON.stringify({messages:L,currentFile:e,attachedFiles:o.attachedFilesRef.current,uploadedFiles:k.localAttachments.filter(e=>"loading"!==e.status).map(e=>({name:e.name,content:e.content.length>8e4?e.content.slice(0,8e4)+"\n\n[...truncated to first ~80000 chars]":e.content})),selectedAcpAgent:A,mode:t,providerOverride:r??void 0,modelOverride:n??void 0}),F=async()=>{let e=await fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:_,signal:D.signal});if(!e.ok){let t=`Request failed (${e.status})`;try{let r=await e.json();"string"==typeof r?.error&&r.error.trim()?t=r.error:"object"==typeof r?.error&&"string"==typeof r.error?.message&&r.error.message.trim()?t=r.error.message:"string"==typeof r?.message&&r.message.trim()&&(t=r.message)}catch(e){console.warn("[useAskChat] error body parse failed:",e)}let r=Error(t);throw r.httpStatus=e.status,r}if(!e.body)throw Error("No response body");return f("thinking"),{finalMessage:await (0,tr.m)(e.body,e=>{f("streaming"),o.sessionRef.current?.setMessages(t=>{let r=[...t];return r[r.length-1]=j(e,A),r})},D.signal)}};try{let e=null;for(let t=0;t<=M&&!D.signal.aborted;t++){if(t>0){var P;x(t),f("reconnecting"),o.sessionRef.current?.setMessages(e=>{let t=[...e];return t[t.length-1]=j({role:"assistant",content:"",timestamp:Date.now()},A),t}),await function(e,t){return new Promise((r,n)=>{let s=()=>t?.reason??new DOMException("The operation was aborted.","AbortError");if(t?.aborted)return void n(s());let a=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(a),n(s())},{once:!0})})}((P=t-1,Math.min(1e3*2**P,1e4)),D.signal),f("connecting")}try{let{finalMessage:e}=await F();e.content.trim()||e.parts&&0!==e.parts.length||o.sessionRef.current?.setMessages(e=>{let t=[...e];return t[t.length-1]=j({role:"assistant",content:`__error__${l.noResponse}`},A),t}),y.current=null;return}catch(n){e=n instanceof Error?n:Error(String(n));let r=n.httpStatus;if(!function(e,t){if(e instanceof DOMException&&"AbortError"===e.name||t&&tn.has(t))return!1;if(e instanceof Error){let t=e.message;if(ts.some(e=>e.test(t)))return!1}return!0}(n,r)||t>=M)break}}if(e)throw e}catch(e){if("AbortError"===e.name)w.current||o.sessionRef.current?.setMessages(e=>{let t=[...e],r=t.length-1;if(r>=0&&"assistant"===t[r].role){let e=t[r];e.content.trim()||e.parts&&e.parts.length>0||(t[r]=j({role:"assistant",content:`__error__${l.stopped}`},A))}return t});else{let t=e instanceof Error?e.message:"Something went wrong";o.sessionRef.current?.setMessages(e=>{let r=[...e],n=r.length-1;if(n>=0&&"assistant"===r[n].role){let e=r[n];if(!(e.content.trim()||e.parts&&e.parts.length>0))return r[n]=j({role:"assistant",content:`__error__${t}`},A),r}return[...r,j({role:"assistant",content:`__error__${t}`},A)]})}}finally{d(!1),x(0),h.current=null,y.current=null}},[e,t,r,l.noResponse,l.stopped,a,o,i]),S=(0,s.useRef)(c);return S.current=c,{isLoading:c,isLoadingRef:S,loadingPhase:m,reconnectAttempt:p,reconnectMaxRef:g,abortRef:h,firstMessageFired:b,submit:N,stop:k}}({currentFile:t,chatMode:ef,providerOverride:ex,modelOverride:eh,onFirstMessage:p,refs:e$.current,errorLabels:{noResponse:H.ask.errorNoResponse,stopped:H.ask.stopped},resetInputState:ez,onRestoreInput:eT}),{isLoading:eD,loadingPhase:eM,reconnectAttempt:e_,reconnectMaxRef:eF}=eL,eP=eL.submit,eI=eL.stop,eH=(0,s.useCallback)(e=>{ec(e),ev.setSessionDefaultAcpAgent(e)},[ev]),eW=ej.localAttachments.some(e=>"loading"===e.status),eY=ej.uploadError||ek.imageError||(eW?H.ask.uploadsProcessing??"Wait for uploaded files to finish processing before sending.":"");(0,s.useEffect)(()=>{let e=e=>{let t=e.detail?.files;Array.isArray(t)&&t.length>0&&ew.current.injectFiles(t)};return window.addEventListener("mindos:inject-ask-files",e),()=>window.removeEventListener("mindos:inject-ask-files",e)},[]),(0,s.useEffect)(()=>{if(!ee||!er.current)return void ea(null);let e=er.current.getBoundingClientRect();ea({top:e.top-8,left:e.left})},[ee]),(0,s.useEffect)(()=>{if(!ee)return;let e=e=>{let t=e.target;!t||er.current?.contains(t)||en.current?.contains(t)||et(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[ee]),(0,s.useEffect)(()=>{if(!P)return;let e=e=>{let t=e.detail?.text;"string"==typeof t&&(Y(t),setTimeout(()=>I.current?.focus(),50))};return window.addEventListener("mindos:home-suggestion",e),()=>window.removeEventListener("mindos:home-suggestion",e)},[P]);let eK=(0,s.useRef)(!1),eq=(0,s.useRef)(t);(0,s.useEffect)(()=>{let n="panel"===x||"home"===x?e&&!eK.current:e,s=e&&eK.current&&t!==eq.current;n?(em.current=f??null,setTimeout(()=>I.current?.focus(),50),ev.initSessions(),Y(r||""),eL.firstMessageFired.current=!1,q(t?[t]:[]),ej.clearAttachments(),ek.clearImages(),eN.resetMention(),eS.resetSlash(),el(null),ec(f??null),Z(!1)):s?q(t?[t]:[]):e||"modal"!==x||eL.abortRef.current?.abort(),"home"===x&&e&&!eK.current&&setTimeout(()=>I.current?.focus(),150),eK.current=e,eq.current=t},[e,t]),(0,s.useEffect)(()=>{if(!e||!ev.activeSessionId)return;let t=em.current;ec(function({sessionAgent:e,initialAgent:t}){return e??t??null}({sessionAgent:ev.activeSession?.defaultAcpAgent??null,initialAgent:t})),t&&!ev.activeSession?.defaultAcpAgent&&ev.activeSession?.messages.length===0&&ev.setSessionDefaultAcpAgent(t),em.current=null},[e,ev.activeSessionId,ev.activeSession?.defaultAcpAgent,ev.activeSession?.messages.length,ev.setSessionDefaultAcpAgent]);let eQ=(0,s.useRef)(ev.clearPersistTimer);eQ.current=ev.clearPersistTimer,(0,s.useEffect)(()=>{if(!e||!ev.activeSessionId)return;let t=ev.messages;if(eL.isLoading&&t.length>0){let e=t[t.length-1];if("assistant"===e.role&&!e.content.trim()&&(!e.parts||0===e.parts.length))return}return ev.persistSession(t,ev.activeSessionId),()=>eQ.current()},[e,ev.messages,ev.activeSessionId,eL.isLoading]),(0,s.useEffect)(()=>{if(!e||"home"===x)return;let t="modal"===x,r="panel"===x&&b;if(!t&&!r)return;let n=e=>{if("Escape"===e.key){if(null!==eE.current.mentionQuery)return void eE.current.resetMention();if(null!==eR.current.slashQuery)return void eR.current.resetSlash();if(r&&k)return void k();t&&g&&g()}};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[x,e,g,b,k]);let eV=(0,s.useRef)(null);(0,s.useLayoutEffect)(()=>{if(!e)return;let t=I.current;t&&t instanceof HTMLTextAreaElement&&function(e,t){let r=tl.get(e);if(!r){let t=getComputedStyle(e),n=parseFloat(t.lineHeight),s=parseFloat(t.fontSize),a=Number.isFinite(s)?s:14,o=8*(Number.isFinite(n)?n:1.375*a)+((Number.isFinite(parseFloat(t.paddingTop))?parseFloat(t.paddingTop):0)+(Number.isFinite(parseFloat(t.paddingBottom))?parseFloat(t.paddingBottom):0));if(!Number.isFinite(o)||o<=0)return;r={maxH:o},tl.set(e,r)}let{maxH:n}=r;e.style.height="auto";let s=e.scrollHeight,a=Math.min(s,n);e.style.height=`${a}px`,e.style.overflowY=s>n?"auto":"hidden"}(t,0)},[W,eD,e]),(0,s.useEffect)(()=>{let e=I.current;if(!e)return;let t=()=>tl.delete(e);return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);let eZ=(0,s.useRef)(null),eX=(0,s.useRef)(null),e0=(0,s.useCallback)((e,t)=>{Y(e);let r=t??e.length;eZ.current&&clearTimeout(eZ.current),eX.current&&clearTimeout(eX.current),eZ.current=setTimeout(()=>eE.current.updateMentionFromInput(e,r),80),eX.current=setTimeout(()=>eR.current.updateSlashFromInput(e,r),80)},[]);(0,s.useEffect)(()=>()=>{eZ.current&&clearTimeout(eZ.current),eX.current&&clearTimeout(eX.current)},[]);let e1=(0,s.useCallback)(e=>{let t=I.current,r=J.current,n=t?.selectionStart??r.length,s=r.slice(0,n).lastIndexOf("@");Y(r.slice(0,s)+r.slice(n)),eE.current.resetMention(),Q.current.includes(e)||q(t=>[...t,e]),setTimeout(()=>{I.current?.focus(),I.current?.setSelectionRange(s,s)},0)},[]),e2=(0,s.useCallback)(e=>{let t=I.current,r=J.current,n=t?.selectionStart??r.length,s=r.slice(0,n).lastIndexOf("/");Y(r.slice(0,s)+r.slice(n)),el(e),eR.current.resetSlash(),setTimeout(()=>{I.current?.focus(),I.current?.setSelectionRange(s,s)},0)},[]),e4=(0,s.useRef)(e1);e4.current=e1;let e8=(0,s.useRef)(e2);e8.current=e2;let te=(0,s.useCallback)(e=>{let t=eE.current,r=eR.current;if(null!==t.mentionQuery){if("Escape"===e.key){e.preventDefault(),t.resetMention();return}if("ArrowDown"===e.key)e.preventDefault(),t.navigateMention("down");else if("ArrowUp"===e.key)e.preventDefault(),t.navigateMention("up");else if("Enter"===e.key||"Tab"===e.key){if("Enter"===e.key&&(e.shiftKey||e.nativeEvent.isComposing))return;t.mentionResults.length>0&&(e.preventDefault(),e4.current(t.mentionResults[t.mentionIndex]))}return}if(null!==r.slashQuery){if("Escape"===e.key){e.preventDefault(),r.resetSlash();return}if("ArrowDown"===e.key)e.preventDefault(),r.navigateSlash("down");else if("ArrowUp"===e.key)e.preventDefault(),r.navigateSlash("up");else if("Enter"===e.key||"Tab"===e.key){if("Enter"===e.key&&(e.shiftKey||e.nativeEvent.isComposing))return;r.slashResults.length>0&&(e.preventDefault(),e8.current(r.slashResults[r.slashIndex]))}return}"Enter"===e.key&&!e.shiftKey&&!e.nativeEvent.isComposing&&!eL.isLoadingRef.current&&(J.current.trim()||eA.current.images.length>0)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},[]),ti=(0,s.useCallback)(()=>{eL.isLoadingRef.current||(ey.current.resetSession(),Y(""),q(t?[t]:[]),ew.current.clearAttachments(),eA.current.clearImages(),eE.current.resetMention(),eR.current.resetSlash(),el(null),ec(null),em.current=null,Z(!1),eL.firstMessageFired.current=!1,setTimeout(()=>I.current?.focus(),0))},[t]),tu=(0,s.useCallback)(e=>{(e.dataTransfer.types.includes("text/mindos-path")||e.dataTransfer.types.includes("Files"))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",X(!0))},[]),tc=(0,s.useCallback)(()=>X(!1),[]),td=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),X(!1);let t=e.dataTransfer.getData("text/mindos-path");if(t){let r="directory"===e.dataTransfer.getData("text/mindos-type")?t.replace(/\/?$/,"/"):t;Q.current.includes(r)||q(e=>[...e,r]);return}let r=e.dataTransfer.files;if(r.length>0){let t=Array.from(r).some(e=>e.type.startsWith("image/")),n=Array.from(r).filter(e=>!e.type.startsWith("image/"));(async()=>{try{if(t&&await eA.current.handleDrop(e),n.length>0){let e=new DataTransfer;n.forEach(t=>e.items.add(t)),await ew.current.pickFiles(e.files)}}catch(e){console.warn("[AskContent] Drop file processing failed:",e)}})()}},[]),tm=(0,s.useCallback)(e=>{let t=e.clipboardData?.items;!t||Array.from(t).some(e=>"file"===e.kind&&e.type.startsWith("image/"))&&(e.preventDefault(),eA.current.handlePaste(e))},[]),tf=(0,s.useCallback)(e=>{if(eL.isLoadingRef.current)return;let r=ev.sessions.find(t=>t.id===e)??null;ey.current.loadSession(e),Z(!1),Y(""),q(t?[t]:[]),ew.current.clearAttachments(),eA.current.clearImages(),eE.current.resetMention(),eR.current.resetSlash(),el(null),ec(r?.defaultAcpAgent??null),setTimeout(()=>I.current?.focus(),0)},[t,ev.sessions]),tp=(0,s.useCallback)(()=>Z(e=>!e),[]),tx=(0,s.useMemo)(()=>({connecting:H.ask.connecting,thinking:H.ask.thinking,generating:H.ask.generating,reconnecting:e_>0?H.ask.reconnecting(e_,eF.current):void 0,copyMessage:H.ask.copyMessage}),[H,e_]),tg=(0,s.useCallback)(e=>{eg(e),eb(null)},[]);return(0,n.jsxs)("div",{className:"flex min-h-0 w-full flex-col h-full",children:[(0,n.jsx)(eG,{isPanel:F||P,showHistory:V,onToggleHistory:tp,onReset:ti,isLoading:eD,maximized:b,onMaximize:k,askMode:P?void 0:D,onModeSwitch:P?void 0:M,onClose:P?void 0:g,onDockToPanel:b?_:void 0,sessions:ev.sessions,activeSessionId:ev.activeSessionId,onLoadSession:tf,onDeleteSession:ev.deleteSession,onRenameSession:ev.renameSession,onTogglePinSession:ev.togglePinSession,messages:ev.messages}),V&&(0,n.jsx)(eJ,{sessions:ev.sessions,activeSessionId:ev.activeSessionId,onLoad:tf,onDelete:ev.deleteSession,onRename:ev.renameSession,onTogglePin:ev.togglePinSession,onClearAll:ev.clearAllSessions,onClose:()=>Z(!1),onNewChat:ti}),!V&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col",children:[!P&&(0,n.jsx)(eO,{messages:ev.messages,isLoading:eD,loadingPhase:eM,emptyPrompt:H.ask.emptyPrompt,emptyHint:H.ask.emptyHint,suggestions:H.ask.suggestions,onSuggestionClick:Y,labels:tx}),P&&(ev.messages.length>0||b)&&(0,n.jsx)(eO,{messages:ev.messages,isLoading:eD,loadingPhase:eM,emptyPrompt:H.ask.emptyPrompt,emptyHint:H.ask.emptyHint,suggestions:b&&0===ev.messages.length?H.ask.suggestions:[],onSuggestionClick:Y,labels:tx})]}),null!==eN.mentionQuery&&eN.mentionResults.length>0&&(0,n.jsx)("div",{className:"shrink-0 px-3 pb-1",children:(0,n.jsx)(eB,{results:eN.mentionResults,selectedIndex:eN.mentionIndex,query:eN.mentionQuery??void 0,onSelect:e1})}),null!==eS.slashQuery&&eS.slashResults.length>0&&(0,n.jsx)("div",{className:"shrink-0 px-3 pb-1",children:(0,n.jsx)(eU,{results:eS.slashResults,selectedIndex:eS.slashIndex,query:eS.slashQuery??void 0,onSelect:e2})}),(0,n.jsx)("div",{className:(0,ta.cn)("shrink-0",P?"px-2 pb-2 pt-0.5":"px-3 pb-2.5 pt-1"),children:(0,n.jsxs)("div",{className:(0,ta.cn)("rounded-xl bg-muted/40 transition-all focus-within:bg-muted/60",G&&"ring-2 ring-[var(--amber)] bg-[var(--amber-dim)]"),onDragOver:tu,onDragLeave:tc,onDrop:td,children:[(K.length>0||ej.localAttachments.length>0||ek.images.length>0||eo||eu||ej.uploadError||ek.imageError)&&(0,n.jsxs)("div",{className:(0,ta.cn)("px-3 pt-2.5 pb-1",F?"max-h-24 overflow-y-auto":"max-h-28 overflow-y-auto"),children:[(0,n.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[K.map(e=>(0,n.jsx)(e5,{path:e,variant:"kb",onRemove:()=>q(t=>t.filter(t=>t!==e))},e)),ej.localAttachments.map((e,t)=>(0,n.jsx)(e5,{path:e.name,variant:"upload",status:e.status,error:e.error,truncatedInfo:e.truncatedInfo,onRemove:()=>ej.removeAttachment(t)},`up-${e.name}-${t}`)),ek.images.map((e,t)=>(0,n.jsx)(e5,{path:e.fileName||`Image ${t+1}`,variant:"image",imageData:e.data,imageMime:e.mimeType,onRemove:()=>ek.removeImage(t)},`img-${t}`)),eo&&(0,n.jsx)(e5,{path:eo.name,variant:"skill",onRemove:()=>{el(null),I.current?.focus()}}),eu&&(0,n.jsx)(e5,{path:"object"==typeof eu&&"name"in eu?eu.name:"Remote Agent",variant:"agent",onRemove:()=>{eH(null),I.current?.focus()}})]}),eY&&(0,n.jsx)("div",{className:"mt-1 text-xs text-error",children:eY})]}),(0,n.jsxs)("form",{ref:eV,onSubmit:eP,className:(0,ta.cn)("flex items-end gap-1.5",P?"px-2 py-1.5":"px-3 py-2"),children:[(0,n.jsx)("div",{className:"relative shrink-0",children:(0,n.jsx)("button",{ref:er,type:"button",onClick:()=>et(e=>!e),className:"p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted/60 transition-colors",title:H.hints.attachFile,children:(0,n.jsx)(o.A,{size:15})})}),B&&ee&&es&&(0,a.createPortal)((0,n.jsxs)("div",{ref:en,className:"fixed py-1 rounded-xl border border-border/60 bg-card shadow-lg z-50 min-w-[150px] animate-in fade-in-0 slide-in-from-bottom-2 duration-150",style:{top:`${es.top}px`,left:`${es.left}px`,transform:"translateY(-100%)"},onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs hover:bg-muted transition-colors text-left rounded-lg",onClick:()=>{ej.uploadInputRef.current?.click(),et(!1)},children:[(0,n.jsx)(l.A,{size:12,className:"shrink-0 text-muted-foreground"}),H.ask.attachFileLabel]}),(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs hover:bg-muted transition-colors text-left rounded-lg",onClick:()=>{O.current?.click(),et(!1)},children:[(0,n.jsx)(i.A,{size:12,className:"shrink-0 text-muted-foreground"}),H.ask.attachImageLabel]})]}),document.body),(0,n.jsx)("input",{ref:ej.uploadInputRef,type:"file",className:"hidden",multiple:!0,accept:".txt,.md,.markdown,.csv,.json,.yaml,.yml,.xml,.html,.htm,.pdf,text/plain,text/markdown,text/csv,application/json,application/pdf",onChange:async e=>{let t=e.currentTarget;await ej.pickFiles(t.files),t.value=""}}),(0,n.jsx)("input",{ref:O,type:"file",className:"hidden",multiple:!0,accept:"image/png,image/jpeg,image/gif,image/webp",onChange:async e=>{let t=e.currentTarget;await ek.handleFileSelect(t.files),t.value=""}}),(0,n.jsx)("textarea",{ref:e=>{I.current=e},value:W,onChange:e=>e0(e.target.value,e.target.selectionStart??void 0),onKeyDown:te,onPaste:tm,placeholder:H.ask.placeholder,rows:1,className:(0,ta.cn)("min-w-0 flex-1 resize-none overflow-y-hidden bg-transparent py-2 leading-relaxed text-foreground placeholder:text-muted-foreground/50 outline-none focus-visible:ring-0",P?"text-xs":"text-sm")}),eD?(0,n.jsx)("button",{type:"button",onClick:eI,className:"p-2 rounded-xl transition-colors shrink-0 text-foreground bg-muted hover:bg-muted/80",title:"reconnecting"===eM?H.ask.cancelReconnect:H.ask.stopTitle,children:"reconnecting"===eM?(0,n.jsx)(u.A,{size:15}):(0,n.jsx)(c.A,{size:15})}):(0,n.jsx)("button",{type:"submit",title:eW?H.ask.uploadsProcessing??"Wait for uploaded files to finish processing before sending.":H.ask.send,disabled:eW||!W.trim()&&0===ek.images.length,className:"p-2 rounded-xl disabled:opacity-20 disabled:scale-95 disabled:cursor-not-allowed transition-all duration-150 shrink-0 bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm shadow-[var(--amber)]/15 hover:shadow-md hover:shadow-[var(--amber)]/20 active:scale-95",children:(0,n.jsx)(d.A,{size:14})})]}),(0,n.jsxs)("div",{className:(0,ta.cn)("flex items-center justify-between border-t border-border/10",F?"px-2 pb-1.5 pt-1 gap-1":"px-3 pb-2 pt-1.5"),children:[(0,n.jsxs)("div",{className:(0,ta.cn)("flex items-center flex-wrap",F?"gap-1":"gap-2"),children:[(0,n.jsx)(v,{mode:ef,onChange:ep,disabled:eD}),B&&eC.installedAgents.length>0&&(0,n.jsx)(e3,{selectedAgent:eu,onSelect:eH,installedAgents:eC.installedAgents,loading:eC.loading}),B&&(0,n.jsx)(tt,{providerValue:ex,onProviderChange:tg,modelValue:eh,onModelChange:eb,disabled:eD})]}),!F&&!P&&(0,n.jsxs)("span",{className:"hidden md:inline text-2xs text-muted-foreground/40 select-none shrink-0",children:[(0,n.jsx)("kbd",{className:"font-mono",children:"Enter"})," ",H.ask.send," \xb7 ",(0,n.jsx)("kbd",{className:"font-mono",children:"Shift+Enter"})," ",H.ask.newlineHint]})]})]})})]})]})}},70620:(e,t,r)=>{r.d(t,{A:()=>d});var n=r(95155),s=r(12115),a=r(47650),o=r(21362),l=r(38798),i=r(94514),u=r(66088),c=r(91337);function d({dirPaths:e,value:t,onChange:r,rootLabel:d="Root"}){let[m,f]=(0,s.useState)(!1),[p,x]=(0,s.useState)(t),[g,h]=(0,s.useState)(null),b=(0,s.useRef)(null),v=(0,s.useRef)(null);(0,s.useEffect)(()=>{x(t)},[t]);let y=(0,s.useCallback)(()=>{if(!b.current)return;let e=b.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,r=e.top,n=t<208&&r>t;h({top:n?e.top:e.bottom,left:e.left,width:e.width,flipUp:n})},[]),j=(0,s.useRef)(0),w=(0,s.useCallback)(()=>{j.current||(j.current=requestAnimationFrame(()=>{j.current=0,y()}))},[y]);(0,s.useEffect)(()=>m?(y(),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w),()=>{window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w),j.current&&(cancelAnimationFrame(j.current),j.current=0)}):void h(null),[m,y,w]);let k=(0,s.useCallback)(()=>f(!1),[]);(0,s.useEffect)(()=>{if(!m)return;let e=e=>{"Escape"===e.key&&(e.preventDefault(),k())},t=e=>{let t=e.target;b.current?.contains(t)||v.current?.contains(t)||k()};return document.addEventListener("keydown",e),document.addEventListener("mousedown",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("mousedown",t)}},[m,k]);let N=(0,s.useMemo)(()=>{let t=p?p+"/":"";return e.filter(e=>{if(!e.startsWith(t))return!1;let r=e.slice(t.length);return r.length>0&&!r.includes("/")}).sort()},[e,p]),S=(0,s.useMemo)(()=>p?p.split("/"):[],[p]),C=e=>{if(e<0)x(""),r("");else{let t=S.slice(0,e+1).join("/");x(t),r(t)}},A=t?t.split("/").map(e=>(0,c.vr)(e)).join(" / "):"/ "+d,E=m&&g&&(0,a.createPortal)((0,n.jsxs)("div",{ref:v,className:"fixed z-50 rounded-lg border border-[var(--amber)] bg-card shadow-lg overflow-hidden flex flex-col",style:{left:g.left,width:g.width,maxHeight:200,...g.flipUp?{bottom:window.innerHeight-g.top+4}:{top:g.top+4}},children:[(0,n.jsxs)("div",{className:"flex items-center gap-0.5 px-3 py-1.5 bg-muted/30 border-b border-border overflow-x-auto text-xs shrink-0",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>C(-1),className:`shrink-0 px-1.5 py-0.5 rounded transition-colors ${""===p?"text-[var(--amber)] font-medium":"text-muted-foreground hover:text-foreground"}`,children:["/ ",d]}),S.map((e,t)=>(0,n.jsxs)("span",{className:"flex items-center gap-0.5 shrink-0",children:[(0,n.jsx)(o.A,{size:10,className:"text-muted-foreground/50"}),(0,n.jsx)("button",{type:"button",onClick:()=>C(t),className:`px-1.5 py-0.5 rounded transition-colors truncate max-w-[100px] ${t===S.length-1?"text-[var(--amber)] font-medium":"text-muted-foreground hover:text-foreground"}`,children:e})]},t))]}),N.length>0?(0,n.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:N.map(t=>{let s=t.split("/").pop()||t,a=e.some(e=>e.startsWith(t+"/"));return(0,n.jsxs)("button",{type:"button",onClick:()=>{x(t),r(t)},className:"w-full flex items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-muted/60 transition-colors",children:[(0,n.jsx)(l.A,{size:12,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)("span",{className:"flex-1 text-left truncate",children:s}),a&&(0,n.jsx)(o.A,{size:11,className:"shrink-0 text-muted-foreground/40"})]},t)})}):(0,n.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground/50 text-center",children:"—"}),(0,n.jsx)("button",{type:"button",onClick:k,className:"w-full py-1.5 flex items-center justify-center gap-1 text-xs font-medium text-[var(--amber)] border-t border-border hover:bg-muted/30 transition-colors shrink-0",children:(0,n.jsx)(i.A,{size:12})})]}),document.body);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:b,type:"button",onClick:()=>f(e=>!e),"aria-haspopup":"true","aria-expanded":m,className:`w-full flex items-center gap-2 px-3 py-2 text-sm rounded-lg border bg-background text-foreground transition-colors text-left focus-visible:ring-1 focus-visible:ring-ring outline-none ${m?"border-[var(--amber)]":"border-border hover:border-[var(--amber)]/40"}`,children:[(0,n.jsx)(l.A,{size:14,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)("span",{className:"flex-1 truncate",children:A}),(0,n.jsx)(u.A,{size:14,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${m?"rotate-180":""}`})]}),E]})}},76449:(e,t,r)=>{r.d(t,{g:()=>n});let n=[{anchor:"files-panel",position:"right"},{anchor:"ask-button",position:"bottom"},{anchor:"agents-panel",position:"right"}]}}]);
|