@geminilight/mindos-windows-arm64 1.0.7 → 1.0.9
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/.mindos-build-version +1 -1
- package/_standalone/__next/BUILD_ID +1 -1
- package/_standalone/__next/app-path-routes-manifest.json +33 -33
- package/_standalone/__next/build-manifest.json +4 -4
- package/_standalone/__next/prerender-manifest.json +3 -3
- package/_standalone/__next/react-loadable-manifest.json +50 -9
- package/_standalone/__next/required-server-files.json +4 -4
- package/_standalone/__next/server/app/.well-known/agent-card.json/route.js +1 -1
- package/_standalone/__next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/_global-error/page.js +3 -3
- package/_standalone/__next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/_global-error.html +2 -2
- package/_standalone/__next/server/app/_global-error.rsc +3 -3
- package/_standalone/__next/server/app/_global-error.segments/_full.segment.rsc +3 -3
- package/_standalone/__next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_index.segment.rsc +2 -2
- package/_standalone/__next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/__next/server/app/_not-found/page.js +2 -2
- package/_standalone/__next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/agents/[agentKey]/page.js +2 -2
- package/_standalone/__next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/agents/page.js +2 -2
- package/_standalone/__next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/agents/route.js +1 -1
- package/_standalone/__next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/delegations/route.js +1 -1
- package/_standalone/__next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/discover/route.js +1 -1
- package/_standalone/__next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/route.js +1 -1
- package/_standalone/__next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/config/route.js +1 -1
- package/_standalone/__next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/detect/route.js +1 -1
- package/_standalone/__next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/install/route.js +1 -1
- package/_standalone/__next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/registry/route.js +1 -1
- package/_standalone/__next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/session/route.js +1 -1
- package/_standalone/__next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agent-activity/route.js +1 -1
- package/_standalone/__next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/copy-skill/route.js +1 -1
- package/_standalone/__next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/detect/route.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/route.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/ask/route.js +6 -6
- package/_standalone/__next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/ask-sessions/route.js +1 -1
- package/_standalone/__next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/auth/route.js +1 -1
- package/_standalone/__next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/backlinks/route.js +1 -1
- package/_standalone/__next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route.js +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/changes/route.js +1 -1
- package/_standalone/__next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/channels/verify/route.js +1 -1
- package/_standalone/__next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/connect/route.js +1 -1
- package/_standalone/__next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/embedding/route.js +1 -1
- package/_standalone/__next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/export/route.js +1 -1
- package/_standalone/__next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/extract-docx/route.js +1 -1
- package/_standalone/__next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/extract-pdf/route.js +2 -2
- package/_standalone/__next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/import/route.js +1 -1
- package/_standalone/__next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/raw/route.js +1 -1
- package/_standalone/__next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/route.js +1 -1
- package/_standalone/__next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/files/route.js +1 -1
- package/_standalone/__next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/git/route.js +1 -1
- package/_standalone/__next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/graph/route.js +1 -1
- package/_standalone/__next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/health/route.js +1 -1
- package/_standalone/__next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/activity/route.js +1 -1
- package/_standalone/__next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/config/route.js +1 -1
- package/_standalone/__next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/route.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/status/route.js +1 -1
- package/_standalone/__next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/test/route.js +1 -1
- package/_standalone/__next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook/feishu/route.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook-status/route.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/inbox/clip/route.js +2 -2
- package/_standalone/__next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/inbox/route.js +1 -1
- package/_standalone/__next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/init/route.js +1 -1
- package/_standalone/__next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/lint/route.js +1 -1
- package/_standalone/__next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/direct-tools/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install-skill/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/restart/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/status/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/tools/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/uninstall/route.js +1 -1
- package/_standalone/__next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/monitoring/route.js +1 -1
- package/_standalone/__next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/compat-report/route.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/import/route.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route.js +2 -2
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/recent-files/route.js +1 -1
- package/_standalone/__next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/restart/route.js +1 -1
- package/_standalone/__next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/search/prewarm/route.js +1 -1
- package/_standalone/__next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/search/route.js +1 -1
- package/_standalone/__next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/list-models/route.js +1 -1
- package/_standalone/__next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/reset-token/route.js +1 -1
- package/_standalone/__next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/route.js +1 -1
- package/_standalone/__next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/__next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-path/route.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-port/route.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/generate-token/route.js +1 -1
- package/_standalone/__next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/ls/route.js +1 -1
- package/_standalone/__next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/route.js +1 -1
- package/_standalone/__next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/skills/route.js +1 -1
- package/_standalone/__next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/space-overview/route.js +1 -1
- package/_standalone/__next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/sync/route.js +1 -1
- package/_standalone/__next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/tree-version/route.js +1 -1
- package/_standalone/__next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/uninstall/route.js +1 -1
- package/_standalone/__next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update/route.js +1 -1
- package/_standalone/__next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update-check/route.js +1 -1
- package/_standalone/__next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update-status/route.js +1 -1
- package/_standalone/__next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/workflows/route.js +1 -1
- package/_standalone/__next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/capture/history/page.js +2 -2
- package/_standalone/__next/server/app/capture/history/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/capture/history/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/capture/page.js +2 -2
- package/_standalone/__next/server/app/capture/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/capture/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/changelog/page.js +2 -2
- package/_standalone/__next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/changes/page.js +2 -2
- package/_standalone/__next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/echo/[segment]/page.js +5 -5
- package/_standalone/__next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/echo/page.js +2 -2
- package/_standalone/__next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/explore/page.js +3 -3
- package/_standalone/__next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/help/page.js +2 -2
- package/_standalone/__next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/icon.svg/route.js +1 -1
- package/_standalone/__next/server/app/inbox/history/page.js +2 -2
- package/_standalone/__next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/login/page.js +2 -2
- package/_standalone/__next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/page.js +2 -2
- package/_standalone/__next/server/app/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/settings/page.js +8 -3
- package/_standalone/__next/server/app/settings/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/setup/page.js +2 -2
- package/_standalone/__next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/todo/page.js +2 -2
- package/_standalone/__next/server/app/todo/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/todo/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/trash/page.js +3 -3
- package/_standalone/__next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/view/[...path]/page.js +3 -3
- package/_standalone/__next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/wiki/page.js +2 -2
- package/_standalone/__next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app-paths-manifest.json +33 -33
- package/_standalone/__next/server/chunks/103.js +1 -1
- package/_standalone/__next/server/chunks/1665.js +3 -3
- package/_standalone/__next/server/chunks/{9773.js → 1855.js} +4 -4
- package/_standalone/__next/server/chunks/1976.js +1 -1
- package/_standalone/__next/server/chunks/2428.js +3 -3
- package/_standalone/__next/server/chunks/3466.js +1 -1
- package/_standalone/__next/server/chunks/4466.js +4 -4
- package/_standalone/__next/server/chunks/4793.js +1 -1
- package/_standalone/__next/server/chunks/6343.js +1 -0
- package/_standalone/__next/server/chunks/6377.js +3 -3
- package/_standalone/__next/server/chunks/6602.js +187 -0
- package/_standalone/__next/server/chunks/6646.js +16 -0
- package/_standalone/__next/server/chunks/8461.js +17 -17
- package/_standalone/__next/server/chunks/9868.js +2 -0
- package/_standalone/__next/server/middleware-build-manifest.js +1 -1
- package/_standalone/__next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/__next/server/middleware.js +2 -2
- package/_standalone/__next/server/pages/500.html +2 -2
- package/_standalone/__next/server/server-reference-manifest.js +1 -1
- package/_standalone/__next/server/server-reference-manifest.json +1 -1
- package/_standalone/__next/static/chunks/{1430-c4ffa328888515c1.js → 1104-0822d9349a412b9b.js} +7 -2
- package/_standalone/__next/static/chunks/1495-4e4ece56ffa8d568.js +1 -0
- package/_standalone/__next/static/chunks/1655.0a559759973b42e9.js +1 -0
- package/{static-web/_next/static/chunks/2073-3f913ebb13702b7e.js → _standalone/__next/static/chunks/2073-758ad3659b9d2cfc.js} +4 -4
- package/_standalone/__next/static/chunks/2303.da761b42cec4cd5c.js +1 -0
- package/{static-web/_next/static/chunks/4937-4101fcdadacf46e3.js → _standalone/__next/static/chunks/2409-244f9b90dceb0c04.js} +1 -1
- package/_standalone/__next/static/chunks/308-25a235e97ee9bfd4.js +14 -0
- package/_standalone/__next/static/chunks/3181-8c6aaeedf700984c.js +33 -0
- package/_standalone/__next/static/chunks/3279-b49c25a4f2964b16.js +1 -0
- package/_standalone/__next/static/chunks/3966.ea75f9c5490955de.js +1 -0
- package/_standalone/__next/static/chunks/4010.48b219cb22dfa5d8.js +10 -0
- package/_standalone/__next/static/chunks/5026-7fed7ca22272c18f.js +1 -0
- package/_standalone/__next/static/chunks/5152-87e6ed56dfd7d17d.js +1 -0
- package/_standalone/__next/static/chunks/525-b830b69e910a03f2.js +53 -0
- package/_standalone/__next/static/chunks/577.5e448c99068f1323.js +1 -0
- package/_standalone/__next/static/chunks/5840.ad2131db64e173a7.js +1 -0
- package/_standalone/__next/static/chunks/5881-f2bcf9869b07f268.js +1 -0
- package/_standalone/__next/static/chunks/5913.b07379f3c130378c.js +1 -0
- package/_standalone/__next/static/chunks/596.9cbaf6ba90cb204f.js +7 -0
- package/_standalone/__next/static/chunks/6223-3fb90852221bda56.js +1 -0
- package/_standalone/__next/static/chunks/6343.582d063078c45d73.js +6 -0
- package/_standalone/__next/static/chunks/7083-00c0b48d2a6b06dd.js +1 -0
- package/_standalone/__next/static/chunks/{5913.3cee388e26959b62.js → 8294.cc9f9ff2f8b219ed.js} +1 -1
- package/_standalone/__next/static/chunks/8626-7da79d9ab2504eed.js +1 -0
- package/{static-web/_next/static/chunks/6728.e1841cddb63308b0.js → _standalone/__next/static/chunks/8629.de25b1f455fe4ffa.js} +1 -1
- package/_standalone/__next/static/chunks/{8732.9002f42201b06fe8.js → 8732.87554c78e8825fac.js} +4 -4
- package/_standalone/__next/static/chunks/9479-ebd5043c9039f447.js +34 -0
- package/{static-web/_next/static/chunks/9602.4e99e3525e5f062c.js → _standalone/__next/static/chunks/9602.218427fc7b3d6b11.js} +1 -1
- package/_standalone/__next/static/chunks/app/_not-found/{page-eaedcec1b693c03c.js → page-ec6fa498a07e6fd9.js} +1 -1
- package/_standalone/__next/static/chunks/app/agents/[agentKey]/page-ef111ea0a3368752.js +1 -0
- package/_standalone/__next/static/chunks/app/agents/page-aacead0f47cedb0d.js +1 -0
- package/_standalone/__next/static/chunks/app/capture/history/page-d157ce945ad84c23.js +1 -0
- package/_standalone/__next/static/chunks/app/capture/page-7f9e43ada77e7ad4.js +1 -0
- package/_standalone/__next/static/chunks/app/changelog/page-5a39d8fe531f4d45.js +1 -0
- package/_standalone/__next/static/chunks/app/changes/page-64cf8d751245eee9.js +1 -0
- package/_standalone/__next/static/chunks/app/echo/[segment]/{page-44b6b8e7fd0bbe31.js → page-c5ea40ac04f2dc29.js} +2 -2
- package/_standalone/__next/static/chunks/app/echo/page-64cf8d751245eee9.js +1 -0
- package/_standalone/__next/static/chunks/app/{error-1cfcd6abd93c3837.js → error-c46d1b03d5e3289c.js} +1 -1
- package/{static-web/_next/static/chunks/app/explore/page-117fcf54b8b9765c.js → _standalone/__next/static/chunks/app/explore/page-5d6dd4af8d1bb468.js} +1 -1
- package/_standalone/__next/static/chunks/app/global-error-d42727c6c6c48879.js +1 -0
- package/_standalone/__next/static/chunks/app/help/{page-6efb8aa3a3c169fa.js → page-3f0a1a8e51249cb2.js} +1 -1
- package/_standalone/__next/static/chunks/app/inbox/history/page-b2930c2ef04e00b0.js +1 -0
- package/_standalone/__next/static/chunks/app/layout-859f69bfc1960d30.js +99 -0
- package/_standalone/__next/static/chunks/app/login/page-a4f9f9053c75ae8d.js +1 -0
- package/_standalone/__next/static/chunks/app/page-98737d491e89d3e1.js +1 -0
- package/_standalone/__next/static/chunks/app/settings/{page-f816f13a34613538.js → page-36ffdd1a8cc7eb2b.js} +1 -1
- package/_standalone/__next/static/chunks/app/setup/{page-a1027871dc33ffbd.js → page-034a608f19d04653.js} +1 -1
- package/_standalone/__next/static/chunks/app/todo/page-c7629a0c102c634f.js +1 -0
- package/_standalone/__next/static/chunks/app/trash/page-417d4e6dc8cd8d9b.js +1 -0
- package/_standalone/__next/static/chunks/app/view/[...path]/{error-c9a3f6de7c963c74.js → error-f73092e638a4e999.js} +1 -1
- package/_standalone/__next/static/chunks/app/view/[...path]/{not-found-5a4f2b4fbe28d617.js → not-found-80e5f4054819b372.js} +1 -1
- package/_standalone/__next/static/chunks/app/view/[...path]/page-3b0976dc13f3c49a.js +12 -0
- package/_standalone/__next/static/chunks/app/wiki/{page-7afd3b97c1ea1b8c.js → page-53dfa7d9fd1a0080.js} +2 -2
- package/_standalone/__next/static/chunks/{main-app-8a6081b103b8f494.js → main-app-23adfdc06470abb6.js} +1 -1
- package/_standalone/__next/static/chunks/webpack-e80a45ffc99584ae.js +1 -0
- package/_standalone/__next/static/css/db8559f3a861a510.css +1 -0
- package/_standalone/__node_modules/@aws-sdk/xml-builder/node_modules/.bin/fxparser +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-agent-core/node_modules/.bin/pi-ai +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-agent-core/node_modules/@mariozechner/pi-ai/node_modules/.bin/anthropic-ai-sdk +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-agent-core/node_modules/@mariozechner/pi-ai/node_modules/.bin/openai +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-ai/node_modules/.bin/anthropic-ai-sdk +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-ai/node_modules/.bin/openai +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/extract-zip +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/highlight +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/jiti +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/marked +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/pi-ai +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/.bin/yaml +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/@mariozechner/pi-ai/node_modules/.bin/anthropic-ai-sdk +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/@mariozechner/pi-ai/node_modules/.bin/openai +2 -2
- package/_standalone/__node_modules/@mariozechner/pi-tui/node_modules/.bin/marked +2 -2
- package/_standalone/__node_modules/degenerator/node_modules/.bin/escodegen +2 -2
- package/_standalone/__node_modules/degenerator/node_modules/.bin/esgenerate +2 -2
- package/_standalone/__node_modules/degenerator/node_modules/.bin/esparse +2 -2
- package/_standalone/__node_modules/degenerator/node_modules/.bin/esvalidate +2 -2
- package/_standalone/__node_modules/escodegen/node_modules/.bin/esparse +2 -2
- package/_standalone/__node_modules/escodegen/node_modules/.bin/esvalidate +2 -2
- package/_standalone/__node_modules/global-agent/node_modules/.bin/semver +2 -2
- package/_standalone/__node_modules/jsdom/node_modules/.bin/specificity +2 -2
- package/_standalone/__node_modules/postcss/node_modules/.bin/nanoid +2 -2
- package/_standalone/__node_modules/tough-cookie/node_modules/.bin/tldts +2 -2
- package/_standalone/public/agent-icons/claude.svg +1 -0
- package/_standalone/public/agent-icons/cursor.svg +1 -0
- package/_standalone/public/agent-icons/github-copilot.svg +1 -0
- package/_standalone/public/agent-icons/google.svg +1 -0
- package/_standalone/public/agent-icons/openai.svg +1 -0
- package/_standalone/public/agent-icons/windsurf.svg +1 -0
- package/_standalone/server.js +1 -1
- package/bin/lib/stop.js +45 -0
- package/bin/lib/sync.js +32 -19
- package/dist/server/handlers/file.js +5 -2
- package/dist/server/handlers/file.js.map +1 -1
- package/dist/server/handlers/inbox.d.ts.map +1 -1
- package/dist/server/handlers/inbox.js +23 -2
- package/dist/server/handlers/inbox.js.map +1 -1
- package/dist/server/handlers/mcp-restart.d.ts +2 -0
- package/dist/server/handlers/mcp-restart.d.ts.map +1 -1
- package/dist/server/handlers/mcp-restart.js +45 -2
- package/dist/server/handlers/mcp-restart.js.map +1 -1
- package/dist/server/handlers/skills.d.ts.map +1 -1
- package/dist/server/handlers/skills.js +76 -8
- package/dist/server/handlers/skills.js.map +1 -1
- package/dist/server/handlers/sync.d.ts.map +1 -1
- package/dist/server/handlers/sync.js +28 -10
- package/dist/server/handlers/sync.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/runtime.d.ts +1 -0
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +30 -22
- package/dist/server/runtime.js.map +1 -1
- package/package.json +1 -1
- package/runtime-manifest.json +1 -1
- package/scripts/build-bun-binary.mjs +139 -6
- package/scripts/prepare-static-web.mjs +52 -4
- package/scripts/release.sh +1 -1
- package/scripts/setup.js +115 -2
- package/static-web/.mindos-build-version +1 -1
- package/static-web/_next/static/chunks/{1430-c4ffa328888515c1.js → 1104-0822d9349a412b9b.js} +7 -2
- package/static-web/_next/static/chunks/1495-4e4ece56ffa8d568.js +1 -0
- package/static-web/_next/static/chunks/1655.0a559759973b42e9.js +1 -0
- package/{_standalone/__next/static/chunks/2073-3f913ebb13702b7e.js → static-web/_next/static/chunks/2073-758ad3659b9d2cfc.js} +4 -4
- package/static-web/_next/static/chunks/2303.da761b42cec4cd5c.js +1 -0
- package/{_standalone/__next/static/chunks/4937-4101fcdadacf46e3.js → static-web/_next/static/chunks/2409-244f9b90dceb0c04.js} +1 -1
- package/static-web/_next/static/chunks/308-25a235e97ee9bfd4.js +14 -0
- package/static-web/_next/static/chunks/3181-8c6aaeedf700984c.js +33 -0
- package/static-web/_next/static/chunks/3279-b49c25a4f2964b16.js +1 -0
- package/static-web/_next/static/chunks/3966.ea75f9c5490955de.js +1 -0
- package/static-web/_next/static/chunks/4010.48b219cb22dfa5d8.js +10 -0
- package/static-web/_next/static/chunks/5026-7fed7ca22272c18f.js +1 -0
- package/static-web/_next/static/chunks/5152-87e6ed56dfd7d17d.js +1 -0
- package/static-web/_next/static/chunks/525-b830b69e910a03f2.js +53 -0
- package/static-web/_next/static/chunks/577.5e448c99068f1323.js +1 -0
- package/static-web/_next/static/chunks/5840.ad2131db64e173a7.js +1 -0
- package/static-web/_next/static/chunks/5881-f2bcf9869b07f268.js +1 -0
- package/static-web/_next/static/chunks/5913.b07379f3c130378c.js +1 -0
- package/static-web/_next/static/chunks/596.9cbaf6ba90cb204f.js +7 -0
- package/static-web/_next/static/chunks/6223-3fb90852221bda56.js +1 -0
- package/static-web/_next/static/chunks/6343.582d063078c45d73.js +6 -0
- package/static-web/_next/static/chunks/7083-00c0b48d2a6b06dd.js +1 -0
- package/static-web/_next/static/chunks/{5913.3cee388e26959b62.js → 8294.cc9f9ff2f8b219ed.js} +1 -1
- package/static-web/_next/static/chunks/8626-7da79d9ab2504eed.js +1 -0
- package/{_standalone/__next/static/chunks/6728.e1841cddb63308b0.js → static-web/_next/static/chunks/8629.de25b1f455fe4ffa.js} +1 -1
- package/static-web/_next/static/chunks/{8732.9002f42201b06fe8.js → 8732.87554c78e8825fac.js} +4 -4
- package/static-web/_next/static/chunks/9479-ebd5043c9039f447.js +34 -0
- package/{_standalone/__next/static/chunks/9602.4e99e3525e5f062c.js → static-web/_next/static/chunks/9602.218427fc7b3d6b11.js} +1 -1
- package/static-web/_next/static/chunks/app/_not-found/{page-eaedcec1b693c03c.js → page-ec6fa498a07e6fd9.js} +1 -1
- package/static-web/_next/static/chunks/app/agents/[agentKey]/page-ef111ea0a3368752.js +1 -0
- package/static-web/_next/static/chunks/app/agents/page-aacead0f47cedb0d.js +1 -0
- package/static-web/_next/static/chunks/app/capture/history/page-d157ce945ad84c23.js +1 -0
- package/static-web/_next/static/chunks/app/capture/page-7f9e43ada77e7ad4.js +1 -0
- package/static-web/_next/static/chunks/app/changelog/page-5a39d8fe531f4d45.js +1 -0
- package/static-web/_next/static/chunks/app/changes/page-64cf8d751245eee9.js +1 -0
- package/static-web/_next/static/chunks/app/echo/[segment]/{page-44b6b8e7fd0bbe31.js → page-c5ea40ac04f2dc29.js} +2 -2
- package/static-web/_next/static/chunks/app/echo/page-64cf8d751245eee9.js +1 -0
- package/static-web/_next/static/chunks/app/{error-1cfcd6abd93c3837.js → error-c46d1b03d5e3289c.js} +1 -1
- package/{_standalone/__next/static/chunks/app/explore/page-117fcf54b8b9765c.js → static-web/_next/static/chunks/app/explore/page-5d6dd4af8d1bb468.js} +1 -1
- package/static-web/_next/static/chunks/app/global-error-d42727c6c6c48879.js +1 -0
- package/static-web/_next/static/chunks/app/help/{page-6efb8aa3a3c169fa.js → page-3f0a1a8e51249cb2.js} +1 -1
- package/static-web/_next/static/chunks/app/inbox/history/page-b2930c2ef04e00b0.js +1 -0
- package/static-web/_next/static/chunks/app/layout-859f69bfc1960d30.js +99 -0
- package/static-web/_next/static/chunks/app/login/page-a4f9f9053c75ae8d.js +1 -0
- package/static-web/_next/static/chunks/app/page-98737d491e89d3e1.js +1 -0
- package/static-web/_next/static/chunks/app/settings/{page-f816f13a34613538.js → page-36ffdd1a8cc7eb2b.js} +1 -1
- package/static-web/_next/static/chunks/app/setup/{page-a1027871dc33ffbd.js → page-034a608f19d04653.js} +1 -1
- package/static-web/_next/static/chunks/app/todo/page-c7629a0c102c634f.js +1 -0
- package/static-web/_next/static/chunks/app/trash/page-417d4e6dc8cd8d9b.js +1 -0
- package/static-web/_next/static/chunks/app/view/[...path]/{error-c9a3f6de7c963c74.js → error-f73092e638a4e999.js} +1 -1
- package/static-web/_next/static/chunks/app/view/[...path]/{not-found-5a4f2b4fbe28d617.js → not-found-80e5f4054819b372.js} +1 -1
- package/static-web/_next/static/chunks/app/view/[...path]/page-3b0976dc13f3c49a.js +12 -0
- package/static-web/_next/static/chunks/app/wiki/{page-7afd3b97c1ea1b8c.js → page-53dfa7d9fd1a0080.js} +2 -2
- package/static-web/_next/static/chunks/{main-app-8a6081b103b8f494.js → main-app-23adfdc06470abb6.js} +1 -1
- package/static-web/_next/static/chunks/webpack-e80a45ffc99584ae.js +1 -0
- package/static-web/_next/static/css/db8559f3a861a510.css +1 -0
- package/static-web/agent-icons/claude.svg +1 -0
- package/static-web/agent-icons/cursor.svg +1 -0
- package/static-web/agent-icons/github-copilot.svg +1 -0
- package/static-web/agent-icons/google.svg +1 -0
- package/static-web/agent-icons/openai.svg +1 -0
- package/static-web/agent-icons/windsurf.svg +1 -0
- package/static-web/help/index.html +13 -24
- package/static-web/index.html +15 -25
- package/static-web/setup/index.html +13 -24
- package/static-web/static-web-manifest.json +1 -1
- package/static-web/wiki/index.html +12 -23
- package/_standalone/__next/server/chunks/1834.js +0 -210
- package/_standalone/__next/server/chunks/2037.js +0 -2
- package/_standalone/__next/server/chunks/3727.js +0 -1
- package/_standalone/__next/server/chunks/9350.js +0 -11
- package/_standalone/__next/static/chunks/1957-723ac4eb5200214c.js +0 -33
- package/_standalone/__next/static/chunks/2288-4dcb8ad3ccbd651e.js +0 -1
- package/_standalone/__next/static/chunks/2303.ac755d2213a6ba9e.js +0 -1
- package/_standalone/__next/static/chunks/2737-f4970f0684c334d6.js +0 -48
- package/_standalone/__next/static/chunks/3424-060f01a8983e438d.js +0 -1
- package/_standalone/__next/static/chunks/4172-4fc551f07f7d082f.js +0 -1
- package/_standalone/__next/static/chunks/4454-f582e17b76ccf1d1.js +0 -1
- package/_standalone/__next/static/chunks/5152-2db55438be7ecb94.js +0 -1
- package/_standalone/__next/static/chunks/5200-6c82e5ce54a95b4b.js +0 -6
- package/_standalone/__next/static/chunks/5840.b812d86b830668e3.js +0 -1
- package/_standalone/__next/static/chunks/6272-6889f9239e888604.js +0 -14
- package/_standalone/__next/static/chunks/6274-f173cb227ad1ef21.js +0 -1
- package/_standalone/__next/static/chunks/6947.fb89346ef2f6be17.js +0 -1
- package/_standalone/__next/static/chunks/725-3b648bf7929ff78d.js +0 -1
- package/_standalone/__next/static/chunks/9479-7b304601a56304cd.js +0 -32
- package/_standalone/__next/static/chunks/app/agents/[agentKey]/page-1dac12945bfbaf35.js +0 -1
- package/_standalone/__next/static/chunks/app/agents/page-7ff2e39ca12eb20a.js +0 -1
- package/_standalone/__next/static/chunks/app/capture/history/page-51db96203209a441.js +0 -1
- package/_standalone/__next/static/chunks/app/capture/page-3bf09d1f5e1c379c.js +0 -1
- package/_standalone/__next/static/chunks/app/changelog/page-01dc22b6d2230c7f.js +0 -1
- package/_standalone/__next/static/chunks/app/changes/page-c9f8d5632a001849.js +0 -1
- package/_standalone/__next/static/chunks/app/echo/page-c9f8d5632a001849.js +0 -1
- package/_standalone/__next/static/chunks/app/global-error-11b333dcf222bc09.js +0 -1
- package/_standalone/__next/static/chunks/app/inbox/history/page-913645bbd6161116.js +0 -1
- package/_standalone/__next/static/chunks/app/layout-24a31ea28c556e82.js +0 -114
- package/_standalone/__next/static/chunks/app/login/page-7f9aca3d51266bec.js +0 -1
- package/_standalone/__next/static/chunks/app/page-35662964020c0ea9.js +0 -1
- package/_standalone/__next/static/chunks/app/todo/page-54c3ec77f662ff73.js +0 -1
- package/_standalone/__next/static/chunks/app/trash/page-50622e3df2047204.js +0 -1
- package/_standalone/__next/static/chunks/app/view/[...path]/page-b10d3819827da1c2.js +0 -12
- package/_standalone/__next/static/chunks/webpack-7d8c24c6af17dd51.js +0 -1
- package/_standalone/__next/static/css/0d2fd378b5449176.css +0 -1
- package/static-web/_next/static/chunks/1957-723ac4eb5200214c.js +0 -33
- package/static-web/_next/static/chunks/2288-4dcb8ad3ccbd651e.js +0 -1
- package/static-web/_next/static/chunks/2303.ac755d2213a6ba9e.js +0 -1
- package/static-web/_next/static/chunks/2737-f4970f0684c334d6.js +0 -48
- package/static-web/_next/static/chunks/3424-060f01a8983e438d.js +0 -1
- package/static-web/_next/static/chunks/4172-4fc551f07f7d082f.js +0 -1
- package/static-web/_next/static/chunks/4454-f582e17b76ccf1d1.js +0 -1
- package/static-web/_next/static/chunks/5152-2db55438be7ecb94.js +0 -1
- package/static-web/_next/static/chunks/5200-6c82e5ce54a95b4b.js +0 -6
- package/static-web/_next/static/chunks/5840.b812d86b830668e3.js +0 -1
- package/static-web/_next/static/chunks/6272-6889f9239e888604.js +0 -14
- package/static-web/_next/static/chunks/6274-f173cb227ad1ef21.js +0 -1
- package/static-web/_next/static/chunks/6947.fb89346ef2f6be17.js +0 -1
- package/static-web/_next/static/chunks/725-3b648bf7929ff78d.js +0 -1
- package/static-web/_next/static/chunks/9479-7b304601a56304cd.js +0 -32
- package/static-web/_next/static/chunks/app/agents/[agentKey]/page-1dac12945bfbaf35.js +0 -1
- package/static-web/_next/static/chunks/app/agents/page-7ff2e39ca12eb20a.js +0 -1
- package/static-web/_next/static/chunks/app/capture/history/page-51db96203209a441.js +0 -1
- package/static-web/_next/static/chunks/app/capture/page-3bf09d1f5e1c379c.js +0 -1
- package/static-web/_next/static/chunks/app/changelog/page-01dc22b6d2230c7f.js +0 -1
- package/static-web/_next/static/chunks/app/changes/page-c9f8d5632a001849.js +0 -1
- package/static-web/_next/static/chunks/app/echo/page-c9f8d5632a001849.js +0 -1
- package/static-web/_next/static/chunks/app/global-error-11b333dcf222bc09.js +0 -1
- package/static-web/_next/static/chunks/app/inbox/history/page-913645bbd6161116.js +0 -1
- package/static-web/_next/static/chunks/app/layout-24a31ea28c556e82.js +0 -114
- package/static-web/_next/static/chunks/app/login/page-7f9aca3d51266bec.js +0 -1
- package/static-web/_next/static/chunks/app/page-35662964020c0ea9.js +0 -1
- package/static-web/_next/static/chunks/app/todo/page-54c3ec77f662ff73.js +0 -1
- package/static-web/_next/static/chunks/app/trash/page-50622e3df2047204.js +0 -1
- package/static-web/_next/static/chunks/app/view/[...path]/page-b10d3819827da1c2.js +0 -12
- package/static-web/_next/static/chunks/webpack-7d8c24c6af17dd51.js +0 -1
- package/static-web/_next/static/css/0d2fd378b5449176.css +0 -1
- /package/_standalone/__next/static/{3FkuJxcda957EywJ5ZWWG → nrLECSDKmE4psF72Jmkoa}/_buildManifest.js +0 -0
- /package/_standalone/__next/static/{3FkuJxcda957EywJ5ZWWG → nrLECSDKmE4psF72Jmkoa}/_ssgManifest.js +0 -0
- /package/static-web/_next/static/{3FkuJxcda957EywJ5ZWWG → nrLECSDKmE4psF72Jmkoa}/_buildManifest.js +0 -0
- /package/static-web/_next/static/{3FkuJxcda957EywJ5ZWWG → nrLECSDKmE4psF72Jmkoa}/_ssgManifest.js +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
exports.id=8461,exports.ids=[8461],exports.modules={17409:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,e:()=>j});let d=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),e={allow:0,ask:1,deny:2};function f(a){return a.replace(/\\/g,"/").replace(/^\/+/,"")}function g(a,b){return b.actorScore-a.actorScore||b.opScore-a.opScore||b.pathScore-a.pathScore||b.effectScore-a.effectScore}function h(a){var b;let c,h;if(!("agent"!==(b=a).actor.type||f(b.path).includes("/"))&&new Set(b.protectedRootFiles??d).has(-1===(h=(c=f(b.path)).lastIndexOf("/"))?c:c.slice(h+1)))return{effect:"deny",reason:`Root-level system file "${f(a.path)}" is protected and cannot be modified by agents`};let i=(a.rules??[]).map(b=>{var c,d,g,h,i,j;return c=b,d=a,function(a,b){return"*"===a||a===("agent"===b.actor.type&&b.actor.agentName?.trim()?b.actor.agentName.trim():b.actor.type)}(c.actor,d)&&(g=c.op,h=d.op,"*"===g||g===h)&&(i=c.path,j=d.path,(function(a){let b=f(a||"**"),c="";for(let a=0;a<b.length;a++){let d=b[a]??"",e=b[a+1];"*"===d&&"*"===e?(c+=".*",a++):"*"===d?c+="[^/]*":c+=d.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return RegExp(`^${c}$`)})(i).test(f(j)))?{rule:c,actorScore:+("*"!==c.actor),opScore:+("*"!==c.op),pathScore:f(c.path).replace(/\*/g,"").length,effectScore:e[c.effect]}:null}).filter(a=>null!==a).sort(g)[0];return i?{effect:i.rule.effect,reason:i.rule.reason??`Matched permission rule for ${i.rule.op} on ${i.rule.path}`,rule:i.rule}:{effect:"allow",reason:"Default allow"}}function i(a){var b;return a&&"object"==typeof a&&"string"==typeof a.actor&&a.actor.trim()&&"string"==typeof a.op&&a.op.trim()&&"string"==typeof a.path&&a.path.trim()?"allow"!==(b=a.effect)&&"deny"!==b&&"ask"!==b?null:{actor:a.actor.trim(),op:a.op.trim(),path:a.path.trim(),effect:a.effect,reason:"string"==typeof a.reason&&a.reason.trim()?a.reason.trim():void 0}:null}function j(a){if(!a)return[];try{let b=JSON.parse(a);if(!Array.isArray(b))return[];return b.map(i).filter(a=>null!==a)}catch{return[]}}},22763:()=>{},39741:(a,b,c)=>{"use strict";function d(a,b,c,d,e,f){return{path:a,webRouteFile:`packages/web/app${a}/route.ts`,owner:b,adapter:c,phase:d,risk:e,residualRisk:f}}c.d(b,{Ig:()=>eb,GO:()=>ah,FV:()=>aj,jU:()=>av,kS:()=>aw,GN:()=>ax,Jz:()=>au,PZ:()=>at,Se:()=>aO,nT:()=>aM,JO:()=>aN,A0:()=>aP,o0:()=>aQ,Ac:()=>aR,u4:()=>aU,xE:()=>aS,RS:()=>aT,TF:()=>X,wF:()=>bo,oU:()=>_,Pq:()=>Z,Jj:()=>$,pe:()=>b0,TL:()=>bp,au:()=>bN,YO:()=>bO,_2:()=>bu,hc:()=>bP,qe:()=>bm,vD:()=>bk,Yz:()=>bi,px:()=>bj,eu:()=>bU,mN:()=>bV,T:()=>by,x5:()=>bz,aT:()=>b$,v1:()=>cd,fn:()=>b_,DR:()=>ci,tk:()=>cj,YN:()=>cp,eo:()=>cv,Jc:()=>ct,iy:()=>cu,Bn:()=>cB,L0:()=>cz,Zh:()=>cA,fx:()=>cJ,L2:()=>cO,e2:()=>cK,sS:()=>cX,dT:()=>cV,hN:()=>cW,bk:()=>cl,ts:()=>dg,X5:()=>dx,Kb:()=>db,h3:()=>dz,XC:()=>dE,zq:()=>dI,Wo:()=>dw,VD:()=>dd,fW:()=>c_,nx:()=>dK,nW:()=>dL,mm:()=>eS,RX:()=>dM,hU:()=>dN,Ei:()=>dQ,Cr:()=>dU,aq:()=>dR,gt:()=>dS,P2:()=>d_,dv:()=>ed,Dm:()=>d6,eA:()=>ea,sv:()=>en,Vf:()=>ee,g:()=>ep,QG:()=>eo,JD:()=>eq,tv:()=>er,I3:()=>eu,uk:()=>ez,CD:()=>eA,LL:()=>eN,Ph:()=>d5,I8:()=>eR,EL:()=>eT,mk:()=>eQ,f$:()=>e$,vd:()=>e_,gO:()=>i,Sj:()=>ch,Ut:()=>ec});let e=(a,b="low")=>d(a,"product-owned","next-response","Phase 1: migrated Product Server adapter",b,"No residual product ownership expected; this route should remain a thin Next adapter."),f=(a,b,c,e)=>d(a,"optional-capability","optional-capability",b,c,e),g=(a,b,c="medium")=>d(a,"host-owned","host","Host-owned",c,b);[e("/api/a2a/agents","medium"),e("/api/a2a/delegations","medium"),e("/api/a2a/discover","medium"),e("/api/a2a","medium"),e("/api/acp/config","high"),e("/api/acp/detect","medium"),e("/api/acp/install","high"),e("/api/acp/registry","medium"),e("/api/acp/session","high"),e("/api/agent-activity"),e("/api/agents/copy-skill","high"),e("/api/agents/custom/detect","medium"),e("/api/agents/custom","high"),e("/api/ask-sessions"),d("/api/ask","product-owned","stream","Phase 6: generated client and stream adapter","high","Ask is mostly Product runtime-owned through session and agent modules, but the streaming Web route still owns host assembly and should become a generated stream adapter."),g("/api/auth","Auth cookie/session handling is host-specific today; Product Server will need an auth context adapter before direct HTTP exposure.","high"),e("/api/backlinks"),e("/api/bootstrap"),e("/api/changes"),e("/api/channels/verify","medium"),e("/api/connect"),e("/api/embedding","medium"),f("/api/export","Phase 5: content ingestion optional capabilities","high","Export/archive logic carries heavy dependencies and filesystem writes that need optional capability packaging."),f("/api/extract-docx","Phase 5: content ingestion optional capabilities","high","DOCX extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/extract-pdf","Phase 5: content ingestion optional capabilities","high","PDF extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/file/import","Phase 5: content ingestion optional capabilities","high","File import is a content-ingestion write path and needs capability-level size limits, conflict checks, and rollback."),e("/api/file/raw"),e("/api/file","high"),e("/api/files"),e("/api/git"),e("/api/graph"),e("/api/health"),e("/api/im/activity","medium"),e("/api/im/config","high"),g("/api/im/feishu/long-connection/event","Raw long-connection event delivery is host-specific, but event parsing and state updates should stay behind Product protocol handlers.","medium"),e("/api/im/feishu/long-connection","high"),e("/api/im/status","medium"),e("/api/im/test","medium"),e("/api/im/webhook-status","medium"),g("/api/im/webhook/feishu","Raw inbound Feishu webhook receipt is host-owned, while signature verification and state writes should move to Product protocol handlers.","high"),f("/api/inbox/clip","Phase 5: content ingestion optional capabilities","high","Inbox clipping is still Web-owned ingestion and needs optional capability packaging plus fetch timeout and content limits."),e("/api/inbox","medium"),e("/api/init","high"),f("/api/lint","Phase 5: content ingestion optional capabilities","medium","Knowledge linting remains Web-owned and should become an optional Product capability with bounded filesystem traversal."),e("/api/mcp/agents","high"),e("/api/mcp/direct-tools","medium"),e("/api/mcp/install-skill","high"),e("/api/mcp/install","high"),e("/api/mcp/restart","high"),e("/api/mcp/status"),e("/api/mcp/tools","medium"),e("/api/mcp/uninstall","high"),e("/api/monitoring","medium"),f("/api/obsidian-plugins/settings","Phase 5: content ingestion optional capabilities","medium","Obsidian plugin settings remain Web-owned and should be modeled as an optional Product compatibility capability."),f("/api/obsidian/compat-report","Phase 5: content ingestion optional capabilities","medium","Obsidian compatibility reporting remains Web-owned and should use optional capability diagnostics."),f("/api/obsidian/import","Phase 5: content ingestion optional capabilities","high","Obsidian import remains a Web-owned bulk write path and needs optional capability size limits and rollback."),e("/api/recent-files"),e("/api/restart","high"),e("/api/search/prewarm"),e("/api/search"),e("/api/settings/list-models","medium"),e("/api/settings/reset-token","high"),e("/api/settings","medium"),e("/api/settings/test-key","medium"),e("/api/setup/check-path","medium"),e("/api/setup/check-port","medium"),e("/api/setup/generate-token","medium"),e("/api/setup/ls","medium"),e("/api/setup","high"),e("/api/skills","high"),e("/api/space-overview"),e("/api/sync","high"),e("/api/tree-version"),e("/api/uninstall","high"),e("/api/update-check"),e("/api/update-status"),e("/api/update","high"),e("/api/workflows","medium")].map(a=>[a.path,a]);let h={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With"};function i(a,b={}){return{status:b.status??200,body:a,headers:b.headers}}function j(a){return{status:204,headers:a}}function k(a,b){return{"Cache-Control":`public, max-age=${a}`,...b?{ETag:b}:{}}}function l(a){return{"Cache-Control":`private, max-age=${a}`}}function m(a,b=500){return i({error:a instanceof Error?a.message:String(a||"Unknown error")},{status:b})}var n=c(51455),o=c(73024),p=c(76760),q=c(58569);function r(a){return{ok:!0,value:a}}function s(a){return{ok:!1,error:a}}var t=c(77598),u=c(64770);class v{constructor(a){this.logger=a}async readFile(a,b="utf-8"){try{let c=await (0,n.readFile)(a,b);return this.logger?.debug(`Read file: ${a}`),r(c)}catch(b){return this.logger?.error(`Failed to read file: ${a}`,b),s((0,u.$5)("FILE_READ_ERROR",`Failed to read file: ${a}`,{cause:b}))}}async writeFile(a,b,c="utf-8"){try{let d=(0,p.dirname)(a);return await (0,n.mkdir)(d,{recursive:!0}),await (0,n.writeFile)(a,b,c),this.logger?.debug(`Wrote file: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to write file: ${a}`,b),s((0,u.$5)("FILE_WRITE_ERROR",`Failed to write file: ${a}`,{cause:b}))}}async exists(a){try{return await (0,n.access)(a,o.constants.F_OK),r(!0)}catch{return r(!1)}}async stat(a){try{let b=await (0,n.stat)(a),c={path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:b.isDirectory(),isFile:b.isFile()};return r(c)}catch(b){return this.logger?.error(`Failed to stat file: ${a}`,b),s((0,u.$5)("FILE_STAT_ERROR",`Failed to stat file: ${a}`,{cause:b}))}}async readdir(a){try{let b=(await (0,n.readdir)(a,{withFileTypes:!0})).map(b=>({name:b.name,path:(0,p.join)(a,b.name),isDirectory:b.isDirectory(),isFile:b.isFile()}));return r(b)}catch(b){return this.logger?.error(`Failed to read directory: ${a}`,b),s((0,u.$5)("DIRECTORY_READ_ERROR",`Failed to read directory: ${a}`,{cause:b}))}}async mkdir(a,b=!0){try{return await (0,n.mkdir)(a,{recursive:b}),this.logger?.debug(`Created directory: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to create directory: ${a}`,b),s((0,u.$5)("DIRECTORY_CREATE_ERROR",`Failed to create directory: ${a}`,{cause:b}))}}async remove(a,b=!1){try{return await (0,n.rm)(a,{recursive:b,force:!0}),this.logger?.debug(`Removed: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to remove: ${a}`,b),s((0,u.$5)("FILE_REMOVE_ERROR",`Failed to remove: ${a}`,{cause:b}))}}async copy(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.copyFile)(a,b),this.logger?.debug(`Copied: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to copy: ${a} -> ${b}`,c),s((0,u.$5)("FILE_COPY_ERROR",`Failed to copy: ${a} -> ${b}`,{cause:c}))}}async move(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.rename)(a,b),this.logger?.debug(`Moved: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to move: ${a} -> ${b}`,c),s((0,u.$5)("FILE_MOVE_ERROR",`Failed to move: ${a} -> ${b}`,{cause:c}))}}async watch(a,b,c){try{let d=(0,q.wB)(a,{ignored:b.ignored,persistent:b.persistent??!0,ignoreInitial:b.ignoreInitial??!0,depth:b.depth});d.on("add",(a,b)=>{c({type:"add",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("change",(a,b)=>{c({type:"change",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("unlink",a=>{c({type:"unlink",path:a})}).on("addDir",a=>{c({type:"addDir",path:a})}).on("unlinkDir",a=>{c({type:"unlinkDir",path:a})}),this.logger?.info(`Started watching: ${a}`);let e=()=>{d.close(),this.logger?.info(`Stopped watching: ${a}`)};return r(e)}catch(b){return this.logger?.error(`Failed to watch: ${a}`,b),s((0,u.$5)("FILE_WATCH_ERROR",`Failed to watch: ${a}`,{cause:b}))}}}var w=c(96081),x=c(33873);function y(a){return{ok:!0,value:a}}function z(a){return{ok:!1,error:a}}let A=".mindos";function B(){return new Date().toISOString()}function C(a,b){return(0,o.existsSync)(a)?(0,w.n2)(a,b):x.join(a,b)}function D(a){return C(a,x.posix.join(A,"change-log.json"))}function E(){return{version:1,lastSeenAt:null,events:[],legacy:{agentDiffImportedCount:0,lastImportedAt:null}}}function F(a){return"string"!=typeof a?{value:void 0,truncated:!1}:a.length<=12e3?{value:a,truncated:!1}:{value:a.slice(0,12e3),truncated:!0}}async function G(a,b){let c;try{c=D(b)}catch{return E()}let d=await a.exists(c);if(!d.ok||!d.value)return E();let e=await a.readFile(c);if(!e.ok)return E();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return E();return{version:1,lastSeenAt:"string"==typeof a.lastSeenAt?a.lastSeenAt:null,events:a.events,legacy:{agentDiffImportedCount:"number"==typeof a.legacy?.agentDiffImportedCount?a.legacy.agentDiffImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return E()}}async function H(a,b,c){let d;try{d=D(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid change log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}async function I(a,b,c){let d;try{d=C(b,"Agent-Diff.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-diff\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{let a=JSON.parse(b[1].trim());c.push(a)}catch{}return c}(f.value),h=c.legacy?.agentDiffImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>{let c=F(a.before),d=F(a.after),e="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",f="string"==typeof a.path&&a.path.trim()?a.path:"Agent-Diff.md";return{id:`legacy-${Date.now().toString(36)}-${b.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),op:"legacy_agent_diff_import",path:f,source:"agent",summary:`Imported legacy agent diff (${e})`,before:c.value,after:d.value,truncated:c.truncated||d.truncated||void 0}}),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()),k={...c,events:j.slice(0,500),legacy:{agentDiffImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function J(a,b){let c=await G(a,b),d=await I(a,b,c);return((c.legacy?.agentDiffImportedCount??0)!==(d.legacy?.agentDiffImportedCount??0)||c.events.length!==d.events.length)&&await H(a,b,d),d}async function K(a,b,c={}){let d=await J(a,b),e=Math.max(1,Math.min(c.limit??50,200)),f=c.path?.trim(),g=c.source,h=c.op?.trim(),i=c.q?.trim().toLowerCase();return y(d.events.filter(a=>(!f||a.path===f||a.beforePath===f||a.afterPath===f)&&(!g||a.source===g)&&(!h||a.op===h)&&(!i||!!`${a.path} ${a.beforePath??""} ${a.afterPath??""} ${a.summary} ${a.op} ${a.source}`.toLowerCase().includes(i))&&!0).slice(0,e))}async function L(a,b){let c=await J(a,b);return c.lastSeenAt=B(),await H(a,b,c)}async function M(a,b){let c=await J(a,b),d=c.lastSeenAt?new Date(c.lastSeenAt).getTime():0;return y({unreadCount:c.events.filter(a=>new Date(a.ts).getTime()>d).length,totalCount:c.events.length,lastSeenAt:c.lastSeenAt,latest:c.events[0]??null})}function N(){return{version:1,events:[],legacy:{mdImportedCount:0,jsonlImportedCount:0,lastImportedAt:null}}}function O(a){return C(a,x.posix.join(A,"agent-audit-log.json"))}async function P(a,b){let c;try{c=O(b)}catch{return N()}let d=await a.exists(c);if(!d.ok||!d.value)return N();let e=await a.readFile(c);if(!e.ok)return N();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return N();return{version:1,events:a.events,legacy:{mdImportedCount:"number"==typeof a.legacy?.mdImportedCount?a.legacy.mdImportedCount:0,jsonlImportedCount:"number"==typeof a.legacy?.jsonlImportedCount?a.legacy.jsonlImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return N()}}async function Q(a,b,c){let d;try{d=O(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid audit log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}function R(a,b,c){let d="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",e="error"===a.result?"error":"ok",f=a.params&&"object"==typeof a.params?a.params:{};return{id:`legacy-${Date.now().toString(36)}-${c.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),tool:d,params:f,result:e,message:function(a){if("string"==typeof a)return a.length<=2e3?a:a.slice(0,2e3)}(a.message),durationMs:"number"==typeof a.durationMs?a.durationMs:void 0,op:b}}async function S(a,b,c){let d;try{d=C(b,"Agent-Audit.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-op\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{c.push(JSON.parse(b[1].trim()))}catch{}return c}(f.value),h=c.legacy?.mdImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_audit_md_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:g.length,jsonlImportedCount:c.legacy?.jsonlImportedCount??0,lastImportedAt:B()}};return await a.remove(d),k}async function T(a,b,c){let d;try{d=C(b,".agent-log.json")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{b.push(JSON.parse(a))}catch{}}return b}(f.value),h=c.legacy?.jsonlImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_log_jsonl_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:c.legacy?.mdImportedCount??0,jsonlImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function U(a,b){let c=await P(a,b),d=await S(a,b,c),e=await T(a,b,d);return(c.events.length!==e.events.length||(c.legacy?.mdImportedCount??0)!==(e.legacy?.mdImportedCount??0)||(c.legacy?.jsonlImportedCount??0)!==(e.legacy?.jsonlImportedCount??0))&&await Q(a,b,e),e}async function V(a,b,c=100){let d=await U(a,b),e=Math.max(1,Math.min(c,1e3));return y(d.events.slice(0,e))}function W(a,b){if(!a)return;if(a instanceof URLSearchParams)return a.get(b)??void 0;let c=a[b];return Array.isArray(c)?c[0]:c}async function X(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,500)):10,f=await V(new v,b.mindRoot,e);return f.ok?i({events:f.value},{headers:l(30)}):i({error:f.error.message},{status:500})}var Y=c(48161);function Z(a={}){return i(ab(aa(a)))}function $(a,b={}){let c=a?.session;if(!ad(c))return i({error:"Invalid session payload"},{status:400});let d=aa(b),e=ab(d),f=e.findIndex(a=>a.id===c.id);return f>=0?e[f]=c:e.push(c),e.sort((a,b)=>ae(b)-ae(a)),ac(d,e),i({ok:!0})}function _(a,b={}){let c=Array.isArray(a?.ids)?a.ids.filter(a=>"string"==typeof a&&a.length>0):"string"==typeof a?.id&&a.id.length>0?[a.id]:[];if(0===c.length)return i({error:"id or ids is required"},{status:400});let d=aa(b),e=new Set(c);return ac(d,ab(d).filter(a=>!e.has(a.id))),i({ok:!0})}function aa(a){return a.storePath??(0,p.join)((0,Y.homedir)(),".mindos","sessions.json")}function ab(a){try{if(!(0,o.existsSync)(a))return[];let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if(!Array.isArray(b))return[];return b.filter(ad).sort((a,b)=>ae(b)-ae(a)).slice(0,30)}catch{return[]}}function ac(a,b){(0,o.mkdirSync)((0,p.dirname)(a),{recursive:!0}),(0,o.writeFileSync)(a,JSON.stringify(b.slice(0,30),null,2),"utf-8")}function ad(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&Array.isArray(a.messages))}function ae(a){return"number"==typeof a.updatedAt?a.updatedAt:0}c(37067),c(73136);let af=new Set([".md",".csv",".json",".pdf",".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".mp3",".wav",".m4a",".ogg",".flac",".aac",".mp4",".webm",".mov",".mkv"]),ag=new Set([".git","node_modules","app",".next",".DS_Store",".media","mcp"]);function ah(a={}){let b=a.env??process.env,c=a.homeDir??(0,Y.homedir)();return function(a){if(a.readSettings)try{return a.readSettings()}catch{return{}}try{let b=a.homeDir??(0,Y.homedir)(),c=(0,o.readFileSync)((0,p.join)(b,".mindos","config.json"),"utf-8"),d=JSON.parse(c);if(d&&"object"==typeof d)return d}catch{}return{}}(a).mindRoot||b.MIND_ROOT||(0,p.join)(c,"MindOS","mind")}function ai(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[];return function a(b,c,d,e={}){let f=!0===e.includeDirectories,g=!1!==e.includeFiles;for(let h of(0,o.readdirSync)(c,{withFileTypes:!0})){if(h.isDirectory()&&ag.has(h.name))continue;let i=(0,p.join)(c,h.name),j=(0,p.relative)(b,i).split("\\").join("/");if(h.isDirectory()){f&&d(i,j,h),a(b,i,d,e);continue}g&&h.isFile()&&d(i,j,h)}}(b,b,(a,b)=>{af.has((0,p.extname)(a).toLowerCase())&&c.push(b)}),c.sort((a,b)=>a.localeCompare(b)),c}function aj(a){let b=a.homeDir??(0,Y.homedir)(),c=a.runtimeRoot?(0,p.resolve)(a.runtimeRoot):process.cwd(),d=a.settings??{},e=[{path:(0,p.join)(c,"packages","web","data","skills"),source:"builtin",origin:"app-builtin",editable:!1},{path:(0,p.join)(c,"skills"),source:"builtin",origin:"project-builtin",editable:!1},{path:(0,p.join)(a.mindRoot,".skills"),source:"user",origin:"mindos-user",editable:!0},{path:(0,p.join)(b,".mindos","skills"),source:"user",origin:"mindos-global",editable:!0}];for(let a of(d.skillPaths?.enableAgentsDir!==!1&&e.push({path:(0,p.join)(b,".agents","skills"),source:"user",origin:"agents-global",editable:!0}),Array.isArray(d.skillPaths?.custom)?d.skillPaths.custom:[])){if("string"!=typeof a)continue;let b=a.trim();b&&e.push({path:b,source:"user",origin:"custom",editable:!0})}return e}function ak(a){return"darwin"===process.platform?a.darwin:"win32"===process.platform?`${(process.env.APPDATA||(0,p.join)((0,Y.homedir)(),"AppData","Roaming")).replace(/\\/g,"/").replace(/\/+$/,"")}/${a.win32}`:a.linux}ak({darwin:"~/Library/Application Support/Code/User",linux:"~/.config/Code/User",win32:"Code/User"}),ak({darwin:"~/Library/Application Support/Code",linux:"~/.config/Code",win32:"Code"}),ak({darwin:"~/Library/Application Support/Trae CN",linux:"~/.config/Trae CN",win32:"Trae CN"});let al={code:-32001,message:"Task not found"},am={code:-32002,message:"Task not cancelable"},an={code:-32700,message:"Parse error"},ao={code:-32600,message:"Invalid request"},ap={code:-32601,message:"Method not found"},aq={code:-32602,message:"Invalid params"},ar={code:-32603,message:"Internal error"},as={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, A2A-Version"};async function at(a,b={}){if((a.contentLength??0)>1e5)return ay(aA(null,{code:-32600,message:"Request too large (max 100000 bytes)"}),413);if(a.parseError)return ay(aA(null,an),400);let c=a.body&&"object"==typeof a.body?a.body:{};if("2.0"!==c.jsonrpc||"string"!=typeof c.method)return ay(aA(aB(c),ao),400);try{switch(c.method){case"SendMessage":{var d;let a;if(a=(d=c.params)&&"object"==typeof d?d.message:void 0,!Array.isArray(a?.parts)||!(a.parts.length>0))return ay(aA(aB(c),aq));let e=b.handleSendMessage??aD;return ay(az(aB(c),await e(c.params)))}case"GetTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let a=(b.handleGetTask??function(){return null})(c.params);if(!a)return ay(aA(aB(c),al));return ay(az(aB(c),a))}case"CancelTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let{task:a,reason:d}=(b.handleCancelTask??function(){return{task:null,reason:"not_found"}})(c.params);if("not_found"===d)return ay(aA(aB(c),al));if("not_cancelable"===d)return ay(aA(aB(c),am));return ay(az(aB(c),a))}default:return ay(aA(aB(c),ap))}}catch(a){return ay(aA(aB(c),{...ar,data:a instanceof Error?a.message:String(a)}),500)}}function au(){return j(as)}function av(a={}){return i({agents:a.getDiscoveredAgents?.()??[]})}function aw(a={}){return i({delegations:a.getDelegationHistory?.()??[]})}async function ax(a,b={}){let c=a&&"object"==typeof a?a:{};if(!c.url||"string"!=typeof c.url)return i({error:"URL is required"},{status:400});let d=c.url.trim();if(!function(a){if(!a||a.length>2048)return!1;try{let b=new URL(a);if("http:"!==b.protocol&&"https:"!==b.protocol||b.username||b.password)return!1;return!!b.hostname}catch{return!1}}(d))return i({error:"Invalid URL",agent:null},{status:400});let e=b.discoverAgent??aE,f=await e(d);return f?i({agent:f}):i({error:"No A2A agent found",agent:null})}function ay(a,b=200){return i(a,{status:b,headers:as})}function az(a,b){return{jsonrpc:"2.0",id:a,result:b}}function aA(a,b){return{jsonrpc:"2.0",id:a,error:b}}function aB(a){return"string"==typeof a.id||"number"==typeof a.id?a.id:null}function aC(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&a.id)}async function aD(){throw Error("A2A SendMessage service is not configured")}async function aE(){return null}var aF=c(31421),aG=c(75791);let aH=null;function aI(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function aJ(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!aI(a)}function aK(a,b="agentId"){let c=a&&"object"==typeof a?a[b]:void 0;if("string"!=typeof c)return null;let d=c.trim();return aJ(d)?d:null}function aL(a){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(a)&&!aI(a)}function aM(a){return i({agents:aW(a.readSettings().acpAgents)??{}})}function aN(a,b){let c=a&&"object"==typeof a?a:{},d=aK(c);if(!d)return i({error:"agentId is required"},{status:400});let e=b.readSettings(),f={...aW(e.acpAgents)??{}},g=aV(c.config);return g&&(f[d]=g),b.writeSettings({...e,acpAgents:f}),i({ok:!0,agents:f})}function aO(a,b){let c=aK(a&&"object"==typeof a?a:{});if(!c)return i({error:"agentId is required"},{status:400});let d=b.readSettings(),e={...aW(d.acpAgents)??{}};delete e[c];let f=Object.keys(e).length>0?{...d,acpAgents:e}:{...d,acpAgents:void 0};return b.writeSettings(f),i({ok:!0,agents:f.acpAgents??{}})}async function aP(a,b={}){try{let c="1"===a.get("force"),d=b.now?.()??Date.now();if(!c&&aH&&d-aH.ts<18e5)return i(aH.data);let e=b.detectLocalAcpAgents??aG.Tn,f=await e({overrides:function(a){try{let b=a.readSettings?.();return aW(b?.acpAgents)}catch{return}}(b)});return aH={data:f,ts:d},i(f)}catch(a){return m(a)}}async function aQ(a,b={}){try{let c,d=a&&"object"==typeof a?a:{},e=aK(d);if(!e||!d.packageName||"string"!=typeof d.packageName)return i({error:"agentId and packageName are required"},{status:400});if(c=d.packageName.trim(),!(!(0===c.length||c.length>214||c.includes("\\"))&&/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i.test(c)))return i({error:"Invalid package name"},{status:400});let f=b.installPackage??aX;return i(await f(e,d.packageName))}catch(a){return m(a)}}async function aR(a,b={}){try{let c=a.get("agent");if(c){if(!aJ(c.trim()))return i({error:"Invalid agent id",agent:null},{status:400});let a=b.findAcpAgent??aG.l3,d=await a(c.trim());if(!d)return i({error:"Agent not found",agent:null},{status:404});return i({agent:d})}let d=b.fetchAcpRegistry??aG.Ew,e=await d();if(!e)return i({error:"Failed to fetch registry",registry:null},{status:502});return i({registry:e})}catch(a){return m(a)}}function aS(a={}){try{return i({sessions:(a.getActiveSessions??aG.EF)()})}catch(a){return m(a)}}async function aT(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"create";switch(d){case"create":return await aY(c,b);case"load":return await aZ(c,b);case"prompt":return await a$(c,b);case"cancel":return await a_(c,b);case"set_mode":return await a0(c,b);case"set_config":return await a1(c,b);case"list_sessions":return await a2(c,b);default:return i({error:`Unknown action: ${d}`},{status:400})}}catch(d){var c;let a,b;return b=(a=(c=d)instanceof Error?c.message:String(c||"Unknown error")).includes("not found")?404:a.includes("not support")?501:500,i({error:a},{status:b})}}async function aU(a,b={}){try{let c=a3(a,"sessionId");if(!c)return i({error:"sessionId is required"},{status:400});if(!(b.getSession??aG.Ht)(c))return i({error:"Session not found"},{status:404});return await (b.closeSession??aG.Vu)(c),i({ok:!0})}catch(a){return m(a)}}function aV(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};if("string"==typeof a.command&&a.command.trim()&&(b.command=a.command.trim()),Array.isArray(a.args)&&(b.args=a.args.filter(a=>"string"==typeof a)),a.env&&"object"==typeof a.env&&!Array.isArray(a.env)){let c={};for(let[b,d]of Object.entries(a.env))"string"==typeof d&&aL(b)&&(c[b]=d);Object.keys(c).length>0&&(b.env=c)}return"boolean"==typeof a.enabled&&(b.enabled=a.enabled),b}function aW(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!aJ(c))continue;let a=aV(d);a&&(b[c]=a)}return Object.keys(b).length>0?b:void 0}async function aX(a,b){let c=function(a,b={}){if("win32"!==(b.platform??process.platform))return{command:"npm",args:a};let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&(b.npm_execpath.endsWith("npm-cli.js")?d.add(b.npm_execpath):d.add((0,p.join)((0,p.dirname)(b.npm_execpath),"npm-cli.js")));let e=(0,p.dirname)(a);for(let a of(d.add((0,p.join)(e,"node_modules","npm","bin","npm-cli.js")),d.add((0,p.resolve)(e,"..","lib","node_modules","npm","bin","npm-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??o.existsSync);if(!e)throw Error("Unable to locate npm-cli.js for shell-free ACP package installation on Windows");return{command:d,args:[e,...a]}}(["install","-g",b]);return(0,aF.execFile)(c.command,c.args,{timeout:12e4}).unref(),{status:"installing",agentId:a,packageName:b}}async function aY(a,b){let c=aK(a);if(!c)return i({error:"agentId is required"},{status:400});let d={env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0},e=b.createSession??aG.jw,f=await e(c,d),g="string"==typeof a.prompt?a.prompt:void 0;if(!g)return i({session:f});let h=b.prompt??aG.J1,j=b.closeSession??aG.Vu;try{let a=await h(a5(f),g);return await j(a5(f)).catch(()=>{}),i({session:f,response:a})}catch(a){return await j(a5(f)).catch(()=>{}),m(a)}}async function aZ(a,b){let c=aK(a),d=a3(a,"sessionId");return c?d?i({session:await (b.loadSession??aG.L6)(c,d,{env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0})}):i({error:"sessionId is required"},{status:400}):i({error:"agentId is required"},{status:400})}async function a$(a,b){let c=a3(a,"sessionId"),d=a3(a,"text");return c?d?i({response:await (b.prompt??aG.J1)(c,d)}):i({error:"text is required"},{status:400}):i({error:"sessionId is required"},{status:400})}async function a_(a,b){let c=a3(a,"sessionId");return c?(await (b.cancelPrompt??aG.zl)(c),i({ok:!0})):i({error:"sessionId is required"},{status:400})}async function a0(a,b){let c=a3(a,"sessionId"),d=a3(a,"modeId");return c&&d?(await (b.setMode??aG.iY)(c,d),i({ok:!0})):i({error:"sessionId and modeId are required"},{status:400})}async function a1(a,b){let c=a3(a,"sessionId"),d=a3(a,"configId");return c&&d&&void 0!==a.value?i({configOptions:await (b.setConfigOption??aG.Et)(c,d,String(a.value))}):i({error:"sessionId, configId, and value are required"},{status:400})}async function a2(a,b){let c=a3(a,"sessionId");return c?i(await (b.listSessions??aG.GW)(c,{cursor:"string"==typeof a.cursor?a.cursor:void 0,cwd:"string"==typeof a.cwd?a.cwd:void 0})):i({error:"sessionId is required"},{status:400})}function a3(a,b){let c=a&&"object"==typeof a?a[b]:void 0;return"string"==typeof c&&c?c:void 0}function a4(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&aL(c)&&(b[c]=d);return Object.keys(b).length>0?b:void 0}function a5(a){if(a&&"object"==typeof a&&"string"==typeof a.id)return a.id;throw Error("ACP session response did not include an id")}let a6=["mindos","claude-code","cursor","windsurf","cline","trae","gemini-cli","openclaw","codebuddy","iflow-cli","kimi-cli","opencode","pi","augment","qwen-code","qoder","trae-cn","roo","github-copilot","codex","antigravity","qclaw","workbuddy","lingma","copaw","hermes"];function a7(a){return a.toLowerCase().replace(/[^\x20-\x7E]/g,"").replace(/[_\s]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-{2,}/g,"-").replace(/^-|-$/g,"")||""}function a8(a){return a.endsWith("/")||a.endsWith("\\")?a:`${a}/`}function a9(a,b){return`${a8(a)}${b}`}function ba(a){return!!(a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||"win32"===process.platform&&(/^[A-Z]:[\\/]/i.test(a)||a.startsWith("\\\\")))}function bb(a){return a.split(/[\\/]+/).includes("..")}function bc(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function bd(a){return/^[a-z0-9][a-z0-9-]*$/.test(a)&&!bc(a)}function be(a,b){let c=a.split(".");return 0===c.length||c.some(a=>!a.trim()||bc(a.trim()))?`${b} contains an unsafe key`:null}function bf(a,b){let c=a.trim();return c?bb(c)?`${b} cannot contain parent directory segments`:ba(c)?null:`${b} must be an absolute path`:`${b} is required`}function bg(a){if(void 0!==a.key){if("string"!=typeof a.key)return"Agent key must be a string";if(!bd(a.key.trim()))return"Agent key must use lowercase letters, numbers, and hyphens only"}if(void 0!==a.format&&!["json","toml"].includes(String(a.format)))return'format must be "json" or "toml"';if(void 0!==a.preferredTransport&&!["stdio","http"].includes(String(a.preferredTransport)))return'preferredTransport must be "stdio" or "http"';if(void 0!==a.configKey){if("string"!=typeof a.configKey)return"configKey must be a string";let b=be(a.configKey.trim(),"configKey");if(b)return b}if(void 0!==a.globalNestedKey&&""!==a.globalNestedKey){if("string"!=typeof a.globalNestedKey)return"globalNestedKey must be a string";let b=be(a.globalNestedKey.trim(),"globalNestedKey");if(b)return b}for(let[c,d]of[["baseDir","baseDir"],["global","global"],["skillDir","skillDir"]]){var b;let e=(b=a[c],null==b||""===b?null:"string"!=typeof b?`${d} must be a string`:bf(b,d));if(e)return e}if(void 0!==a.presenceDirs){if(!Array.isArray(a.presenceDirs))return"presenceDirs must be an array";for(let b of a.presenceDirs){if("string"!=typeof b)return"presenceDirs must contain only strings";let a=bf(b,"presenceDirs");if(a)return a}}return void 0!==a.presenceCli&&""!==a.presenceCli&&"string"!=typeof a.presenceCli?"presenceCli must be a string":null}function bh(a){let b=a.customAgents;return Array.isArray(b)?b.filter(a=>null!=a&&"object"==typeof a&&"string"==typeof a.name&&"string"==typeof a.key&&"string"==typeof a.baseDir):[]}function bi(a,b){try{var c,d;let e,{name:f,baseDir:g,...h}=a;if(!f?.trim()||!g?.trim())return i({error:"name and baseDir are required"},{status:400});let j=b.readSettings(),k=bh(j),l=new Set(b.builtInAgentKeys??a6),m=new Set([...l,...k.map(a=>a.key)]),n=bg(h);if(n)return i({error:n},{status:400});let o="string"==typeof h.key&&h.key.trim()?h.key.trim():function(a,b){let c=a7(a);if(!c){let a=1;for(;b.has(`custom-${a}`);)a+=1;return`custom-${a}`}if(!b.has(c))return c;let d=2;for(;b.has(`${c}-${d}`);)d+=1;return`${c}-${d}`}(f.trim(),m),p=function(a,b,c,d=!1){if(!a.name?.trim())return"Agent name is required";if(!a.baseDir?.trim())return"Config directory is required";let e=a.baseDir.trim();if(bb(e))return"Config directory cannot contain parent directory segments";if(!ba(e))return"Must be an absolute path (e.g. ~/.qclaw/)";if(!d){let d=a.key||a7(a.name.trim());if(!d)return"Cannot generate a valid key from this name";if(!bd(d))return"Agent key must use lowercase letters, numbers, and hyphens only";if(c.has(d))return`Conflicts with built-in agent "${d}"`;if(b.has(d))return`An agent with key "${d}" already exists`}return null}({name:f,baseDir:g,key:o},m,l);if(p)return i({error:p},{status:400});let q={...(c=f.trim(),d=g.trim(),e=a8(d),{name:c,baseDir:e,global:a9(e,"mcp.json"),project:null,configKey:"mcpServers",format:"json",preferredTransport:"stdio",presenceDirs:[e],skillDir:a9(e,"skills/")}),key:o,...h.global&&{global:h.global},...void 0!==h.project&&{project:h.project},...h.configKey&&{configKey:h.configKey},...h.format&&{format:h.format},...h.preferredTransport&&{preferredTransport:h.preferredTransport},...h.presenceDirs&&{presenceDirs:h.presenceDirs},...h.presenceCli&&{presenceCli:h.presenceCli},...h.globalNestedKey&&{globalNestedKey:h.globalNestedKey},...h.skillDir&&{skillDir:h.skillDir}};return b.writeSettings({...j,customAgents:[...k,q]}),i({agent:q},{status:201})}catch(a){return m(a)}}function bj(a,b){try{let{key:c,...d}=a,e="string"==typeof c?c.trim():"";if(!e)return i({error:"key is required"},{status:400});if(!bd(e))return i({error:"Invalid agent key"},{status:400});let f=b.readSettings(),g=bh(f),h=g.findIndex(a=>a.key===e);if(-1===h)return i({error:`Custom agent "${e}" not found`},{status:404});let j=bg(d);if(j)return i({error:j},{status:400});let k=g[h];if(!k)return i({error:`Custom agent "${e}" not found`},{status:404});let l={...k,...d.name&&{name:d.name},...d.baseDir&&{baseDir:d.baseDir},...d.global&&{global:d.global},...void 0!==d.project&&{project:d.project},...d.configKey&&{configKey:d.configKey},...d.format&&{format:d.format},...d.preferredTransport&&{preferredTransport:d.preferredTransport},...void 0!==d.presenceCli&&{presenceCli:d.presenceCli||void 0},...void 0!==d.globalNestedKey&&{globalNestedKey:d.globalNestedKey||void 0},...void 0!==d.skillDir&&{skillDir:d.skillDir||void 0}};d.presenceDirs?l.presenceDirs=d.presenceDirs:d.baseDir&&(l.presenceDirs=[a8(d.baseDir)]),!d.skillDir&&d.baseDir&&(l.skillDir=a9(d.baseDir,"skills/"));let m=g.slice();return m[h]=l,b.writeSettings({...f,customAgents:m}),i({agent:l})}catch(a){return m(a)}}function bk(a,b){try{let{key:c}=a;if(!c)return i({error:"key is required"},{status:400});let d=b.readSettings(),e=bh(d),f=e.filter(a=>a.key!==c);if(f.length===e.length)return i({error:`Custom agent "${c}" not found`},{status:404});return b.writeSettings({...d,customAgents:f}),i({removed:c})}catch(a){return m(a)}}function bl(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function bm(a,b={}){try{if(!a.baseDir?.trim())return i({error:"baseDir is required"},{status:400});let c=a.baseDir.trim();if(!ba(c))return i({error:"baseDir must be an absolute path (e.g. ~/.qclaw/)"},{status:400});let d=function(a,b=(0,Y.homedir)()){let c,d=bl(a,b);if(!(0,o.existsSync)(d)){let a=(0,p.basename)(d.replace(/[\\/]+$/,""));return{exists:!1,hasSkillsDir:!1,suggestedName:a.charAt(0).toUpperCase()+a.slice(1)}}let e={exists:!0,hasSkillsDir:!1},f=(0,p.basename)(d.replace(/[\\/]+$/,""));e.suggestedName=f.charAt(0).toUpperCase()+f.slice(1);let g=(0,p.join)(d,"skills");if((0,o.existsSync)(g)){e.hasSkillsDir=!0,e.detectedSkillDir=a9(a,"skills/");try{let a=(0,o.readdirSync)(g,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b));e.skillCount=a.length,e.skillNames=a}catch{e.skillCount=0}}try{c=(0,o.readdirSync)(d).slice(0,20)}catch{return e}for(let b of c){if(!b.endsWith(".json"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;let f=JSON.parse((0,o.readFileSync)(c,"utf-8"));if("mcpServers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="mcpServers",e;if("servers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="servers",e}catch{}}for(let b of c){if(!b.endsWith(".toml"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;for(let d of(0,o.readFileSync)(c,"utf-8").split("\n").slice(0,50))if(/^\s*\[mcp_servers/i.test(d)||/^\s*\[mcpServers/i.test(d)){let c=d.toLowerCase();return e.detectedConfig=a9(a,b),e.detectedFormat="toml",e.detectedConfigKey=c.includes("mcp_servers")?"mcp_servers":"mcpServers",e}}catch{}}return e}(c,b.homeDir);if(d.detectedConfig&&d.detectedConfigKey){let a=function(a,b,c,d=(0,Y.homedir)()){let e=bl(a,d),f=bl(b,d),g=b.toLowerCase().endsWith(".toml")?"toml":"json",h={mcpServers:[],skillNames:[],skillDir:"",configFormat:g};if((0,o.existsSync)(f))try{let a=(0,o.readFileSync)(f,"utf-8");h.mcpServers="json"===g?function(a,b){try{let c,d=(!(c=(c=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a)).replace(/\/\*[\s\S]*?\*\//g,"")).trim()?{}:JSON.parse(c))[b];if(d&&"object"==typeof d)return Object.keys(d).sort((a,b)=>a.localeCompare(b))}catch{}return[]}(a,c):function(a,b){let c=new Set,d=a.split("\n"),e=`${b}.`;for(let a of d){let b=a.trim();if(!b.startsWith("[")||!b.endsWith("]"))continue;let d=b.slice(1,-1).trim();if(!d.startsWith(e))continue;let f=d.slice(e.length).split(".")[0]?.trim();f&&c.add(f)}return[...c].sort((a,b)=>a.localeCompare(b))}(a,c)}catch(a){h.parseError=`Failed to parse MCP config: ${a instanceof Error?a.message:"Unknown error"}`}let i=(0,p.join)(e,"skills");if(h.skillDir=a9(a,"skills/"),!(0,o.existsSync)(i))return h;try{h.skillNames=(0,o.readdirSync)(i,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{}return h}(c,d.detectedConfig,d.detectedConfigKey,b.homeDir);d.mcpServers=a.mcpServers,d.skillNames=a.skillNames,a.parseError&&(d.mcpParseError=a.parseError)}return i(d)}catch(a){return m(a)}}async function bn(a,b){for(let c of((0,o.mkdirSync)(b,{recursive:!0}),(0,o.readdirSync)(a,{withFileTypes:!0}))){let d=(0,p.join)(a,c.name),e=(0,p.join)(b,c.name);c.isDirectory()?await bn(d,e):c.isFile()&&(0,o.writeFileSync)(e,(0,o.readFileSync)(d))}}async function bo(a,b){try{if(!a.skillName?.trim())return i({error:"skillName is required"},{status:400});if(!a.targetPath?.trim())return i({error:"targetPath is required"},{status:400});let c=a.skillName.trim();if("."===c||".."===c||c.includes("/")||c.includes("\\"))return i({error:"Invalid skill name"},{status:400});let d=a.targetPath.trim();if(bb(d))return i({error:"Invalid target path"},{status:400});if(!ba(d))return i({error:"Target path must be absolute (starting with / or ~/)"},{status:400});let e=function(a,b){for(let c of b){let b=(0,p.join)(c.path,a);if((0,o.existsSync)(b))return b}return null}(c,b.skillRoots);if(!e)return i({error:`Skill "${c}" not found`},{status:404});let f=b.homeDir??(0,Y.homedir)(),g=bl(d,f).replace(/\/$/,""),h=(0,p.join)(g,c);if((0,o.existsSync)(h))return i({error:`Skill "${c}" already exists in target directory`},{status:409});return(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),await (b.copyDirectory??bn)(e,h),i({success:!0,skillName:c,targetPath:h})}catch(a){return m(a)}}function bp(a,b){var c;let d=a.get("target_dir")??void 0;if(d&&((c=d).split(/[\\/]+/).includes("..")||p.isAbsolute(c)||p.win32.isAbsolute(c)||c.includes("\\")))return i({error:"invalid target_dir"},{status:400});let e={instruction:bq(b,"INSTRUCTION.md"),index:bq(b,"README.md"),config_json:bq(b,"CONFIG.json"),user_skill_rules:bq(b,".mindos/user-preferences.md"),file_index:function(a,b={}){let c=b.maxDepth??2,d=b.maxFilesPerDir??15,e=[];for(let b of[...a].sort((a,b)=>a.localeCompare(b)))!function a(b,c){let[d,...e]=c;if(!d)return;if(0===e.length)return void b.push({name:d,type:"file"});let f=b.find(a=>"directory"===a.type&&a.name===d);f||(f={name:d,type:"directory",children:[]},b.push(f)),a(f.children??[],e)}(e,b.split("/").filter(Boolean));if(0===e.length)return"(empty knowledge base)";let f=[];return function a(b,e){let g=" ".repeat(e),h=b.filter(a=>"directory"===a.type),i=b.filter(a=>"file"===a.type);for(let b of h){let d=function a(b){let c=0;for(let d of b)"file"===d.type?c++:c+=a(d.children??[]);return c}(b.children??[]),h=1===d?"1 file":`${d} files`;f.push(`${g}${b.name}/ (${h})`),e<c&&a(b.children??[],e+1)}let j=i.slice(0,d);for(let a of j)f.push(`${g}${a.name}`);let k=i.length-j.length;k>0&&f.push(`${g}... (${k} more)`)}(e,0),f.join("\n")}(b.collectAllFiles())};return d&&(e.target_readme=bq(b,p.join(d,"README.md")),e.target_instruction=bq(b,p.join(d,"INSTRUCTION.md")),e.target_config_json=bq(b,p.join(d,"CONFIG.json"))),i(e,{headers:k(300,function(a){let b=0,c=JSON.stringify(a);for(let a=0;a<c.length;a++)b=(b<<5)-b+c.charCodeAt(a)|0;return`W/"${Math.abs(b).toString(16)}"`}(e))})}function bq(a,b){try{return a.readTextFile(b)}catch{return}}let br=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),bs={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},bt={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};async function bu(a,b={}){try{var c;let d=a&&"object"==typeof a?a:{},e=d.platform,f=d.credentials;if(!e||(c=e,!br.has(c)))return i({ok:!1,error:"Invalid platform"},{status:400});if(!f||"object"!=typeof f)return i({ok:!1,error:"Missing credentials"},{status:400});let g=function(a,b){if(!b||"object"!=typeof b)return{valid:!1,missing:["(no config)"]};let c=bs[a],d=bt[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(e,f);if(!g.valid)return i({ok:!1,error:`Missing required fields: ${g.missing?.join(", ")||"unknown"}`},{status:400});let h=b.verifyCredentials??bv,j=await h(e,f);if(!j.ok)return i({ok:!1,error:j.error||"Credential verification failed"},{status:401});return i({ok:!0,botName:j.botName,botId:j.botId})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}}async function bv(){return{ok:!1,error:"Credential verifier is not configured"}}var bw=c(17409),bx=c(66451);function by(a,b){let c=W(a,"op")??"read_file";if("list_spaces"===c){var d;let a;return i({spaces:b.mindRoot?(d=b.mindRoot,a=(0,p.resolve)(d),(0,o.existsSync)(a)?(0,o.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>{var b;let c,e,f=a.name;return{name:a.name,path:f,fileCount:(b=(0,w.n2)(d,f),c=0,(e=a=>{for(let b of(0,o.readdirSync)(a,{withFileTypes:!0})){if(b.name.startsWith(".")||"node_modules"===b.name||b.isSymbolicLink())continue;let d=(0,p.join)(a,b.name);b.isDirectory()?e(d):c++}})(b),c),description:function(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,p.posix.join(b,"README.md")),"utf-8").split(/\r?\n/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("#"))[0]??""}catch{return""}}(d,f)}}).filter(a=>a.fileCount>0||a.description).sort((a,b)=>a.path.localeCompare(b.path)):[]):b.listSpaces()})}if("list_dirs"===c)return i({dirs:b.mindRoot?function(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[],d=a=>{for(let e of(0,o.readdirSync)(a,{withFileTypes:!0})){if(!e.isDirectory()||e.name.startsWith("."))continue;let f=(0,p.join)(a,e.name);c.push((0,p.relative)(b,f).split("\\").join("/")),d(f)}};return d(b),c.sort((a,b)=>a.localeCompare(b))}(b.mindRoot):b.listDirectories()});if("check_conflicts"===c)return function(a,b){let c=W(a,"names");if(!c)return i({error:"missing names"},{status:400});if(!b.mindRoot)return i({error:"MIND_ROOT not configured"},{status:400});try{let e=W(a,"space")??"",f=[];for(let a of c.split(",").map(a=>a.trim()).filter(Boolean)){var d;let c=function(a){let b=(0,p.extname)(a).toLowerCase();if(".md"===b||".csv"===b)return a;let c=b?a.slice(0,-b.length):a;return`${c||"untitled"}.md`}((d=a,(0,p.basename)(d).replace(/[<>:"|?*\x00-\x1f]/g,"_").trim())),g=e?p.posix.join(e,c):c;(0,o.existsSync)((0,w.n2)(b.mindRoot,g))&&f.push(a)}return i({conflicts:f})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}(a,b);let e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});try{if("read_lines"===c)return i({lines:b.readLines(e)});if("read_file"===c)return i({content:b.readTextFile(e)});return i({error:`Unknown op: ${c}`},{status:400})}catch(b){let a=b instanceof Error?b.message:String(b);if(/not found|ENOENT/i.test(a))return i({error:"File not found"},{status:404});if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}async function bz(a,b,c={}){var d,e,f,g;if(!a||"object"!=typeof a)return i({error:"Invalid JSON body"},{status:400});let h=(0,bx.aH)({hasAgentHeader:!!c.agentHeader,bodySource:a.source,headerSource:c.sourceHeader});try{let g=await (0,bx.XT)({body:a,source:h,actor:(0,bx.bt)(h,c.agentHeader),handlers:(d=b.mindRoot,{save_file:(a,b)=>(function(a,b,c){let d=bK(c.content,"content"),e=(0,w.n2)(a,b),f=bB(a,e);if("number"==typeof c.expectedMtime&&(0,o.existsSync)(e)&&(0,o.statSync)(e).mtimeMs>c.expectedMtime)return{response:i({error:"conflict",serverMtime:(0,o.statSync)(e).mtimeMs},{status:409}),changeEvent:null};let g=bH(a,b);return bE(e,d),{response:i({ok:!0,path:f,mtime:(0,o.statSync)(e).mtimeMs}),changeEvent:{op:"save_file",path:f,summary:"Updated file content",before:g,after:d}}})(d,a,b),create_file:(a,b)=>{var c,e,f;let g,h,j;return c=d,e=a,f=b,g=bA(f.content,""),h=(0,w.n2)(c,e),j=bB(c,h),(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),(0,o.writeFileSync)(h,g,{encoding:"utf-8",flag:"wx"}),{response:i({ok:!0,path:j,mtime:(0,o.statSync)(h).mtimeMs}),changeEvent:{op:"create_file",path:j,summary:"Created file",before:"",after:g}}},append_to_file:(a,b)=>(function(a,b,c){var d;let e=bK(c.content,"content");if(".agent-log.json"===b){for(let b of function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{let c=JSON.parse(a);b.push({ts:"string"==typeof c.ts?c.ts:new Date().toISOString(),tool:"string"==typeof c.tool&&c.tool.trim()?c.tool:"unknown-tool",params:c.params&&"object"==typeof c.params?c.params:{},result:"error"===c.result?"error":"ok",message:"string"==typeof c.message?c.message:void 0,durationMs:"number"==typeof c.durationMs?c.durationMs:void 0,agentName:"string"==typeof c.agentName?c.agentName:void 0})}catch{}}return b}(e))!function(a,b){let c=(0,w.n2)(a,".mindos/agent-audit-log.json"),d={version:1,events:[]};try{if((0,o.existsSync)(c)){let a=JSON.parse((0,o.readFileSync)(c,"utf-8"));Array.isArray(a.events)&&(d={version:1,events:a.events})}}catch{d={version:1,events:[]}}d.events.unshift({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,...b,op:"append"}),(0,o.mkdirSync)((0,p.dirname)(c),{recursive:!0}),(0,o.writeFileSync)(c,JSON.stringify(d,null,2),"utf-8")}(a,b);return{response:i({ok:!0,path:b}),changeEvent:null}}let f=bH(a,b),g=(0,w.n2)(a,b),h=bB(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,(d=g,((0,o.existsSync)(d)&&0!==(0,o.statSync)(d).size?(0,o.readFileSync)(d,"utf-8").endsWith("\n\n")?"":"\n":"")+e),"utf-8"),{response:i({ok:!0,path:h,mtime:(0,o.statSync)(g).mtimeMs}),changeEvent:{op:"append_to_file",path:h,summary:"Appended content to file",before:f,after:bH(a,h)}}})(d,a,b),insert_lines:(a,b)=>(function(a,b,c){let d=bL(c.after_index,"after_index"),e=bM(c.lines,"lines"),f=bH(a,b),g=bF(a,b),h=bC(a,b);if(d>=g.length)throw Error(`Invalid after_index: ${d} >= total lines (${g.length})`);return g.splice(d<0?0:d+1,0,...e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_lines",path:h,summary:`Inserted ${e.length} line(s)`,before:f,after:bH(a,h)}}})(d,a,b),update_lines:(a,b)=>(function(a,b,c){let d=bL(c.start,"start"),e=bL(c.end,"end"),f=bM(c.lines,"lines");if(d<0||e<0)throw Error("start/end must be >= 0");if(d>e)throw Error("start must be <= end");let g=bH(a,b),h=bF(a,b),j=bC(a,b);if(d>=h.length)throw Error(`Invalid line index: start (${d}) >= total lines (${h.length})`);return h.splice(d,e-d+1,...f),bG(a,j,h.join("\n")),{response:i({ok:!0,path:j}),changeEvent:{op:"update_lines",path:j,summary:`Updated lines ${d}-${e}`,before:g,after:bH(a,j)}}})(d,a,b),insert_after_heading:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=j+1;for(;k<g.length&&""===(g[k]??"").trim();)k++;return g.splice(k,0,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_after_heading",path:h,summary:`Inserted content after heading "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),update_section:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=((g[j]??"").match(/^#+/)??[""])[0].length,l=g.length-1;for(let a=j+1;a<g.length;a++){let b=/^(#+)\s/.exec(g[a]??"");if((b?.[1]?.length??1/0)<=k){l=a-1;break}}for(;l>j&&""===(g[l]??"").trim();)l--;return g.splice(j+1,l-j,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"update_section",path:h,summary:`Updated section "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),delete_file:a=>(function(a,b){if(!b.includes("/")&&"TODO.md"===(0,p.basename)(b))return{response:i({error:`"${b}" is a protected file and cannot be deleted`},{status:403}),changeEvent:null};let c=(0,w.n2)(a,b),d=bB(a,c),e=bH(a,b),f=function(a,b){let c=(0,w.n2)(a,b);if(!(0,o.existsSync)(c))throw Error(`File not found: ${b}`);let d=(0,o.statSync)(c).isDirectory(),e=`${Date.now()}_${(0,p.basename)(b).replace(/[^a-zA-Z0-9._\-\u4e00-\u9fff]/g,"_")}`,f=bJ(a,".trash"),g=bJ(a,".trash-meta");(0,o.mkdirSync)(f,{recursive:!0}),(0,o.mkdirSync)(g,{recursive:!0});let h=(0,p.join)(f,e);try{(0,o.renameSync)(c,h)}catch(a){if("EXDEV"!==(a&&"object"==typeof a&&"code"in a?a.code:void 0))throw a;d?((0,o.cpSync)(c,h,{recursive:!0}),(0,o.rmSync)(c,{recursive:!0,force:!0})):((0,o.copyFileSync)(c,h),(0,o.unlinkSync)(c))}let i=new Date,j={id:e,originalPath:b,deletedAt:i.toISOString(),expiresAt:new Date(i.getTime()+2592e6).toISOString(),fileName:(0,p.basename)(b),isDirectory:d};return(0,o.writeFileSync)((0,p.join)(g,`${e}.json`),JSON.stringify(j,null,2),"utf-8"),j}(a,d);return{response:i({ok:!0,path:d,trashId:f.id}),changeEvent:{op:"delete_file",path:d,summary:"Moved to trash",before:e,after:""}}})(d,a),rename_file:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name");bD(d,"filename");let e=(0,w.n2)(a,b),f=bB(a,e),g=p.posix.join(p.posix.dirname(f),d),h=(0,w.eX)(a,g);if((0,p.dirname)(h)!==(0,p.dirname)(e))throw Error("Invalid filename: must stay in the same directory");if((0,o.existsSync)(h))throw Error("A file with that name already exists");let j=bH(a,b);(0,o.renameSync)(e,h);let k=bB(a,h);return{response:i({ok:!0,newPath:k}),changeEvent:{op:"rename_file",path:k,summary:`Renamed file to ${d}`,before:j,after:bH(a,k),beforePath:f,afterPath:k}}})(d,a,b),move_file:(a,b)=>(function(a,b,c){let d=bK(c.to_path??c.toPath??c.newPath,"to_path"),e=bH(a,b),f=(0,w.n2)(a,b),g=(0,w.n2)(a,d),h=bB(a,f),j=bB(a,g);if((0,o.existsSync)(g))throw Error(`Destination already exists: ${d}`);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.renameSync)(f,g),{response:i({ok:!0,path:j,newPath:j,affectedFiles:[]}),changeEvent:{op:"move_file",path:j,summary:`Moved file to ${j}`,before:e,after:bH(a,j),beforePath:h,afterPath:j}}})(d,a,b),create_space:(a,b)=>(function(a,b){let c=bK(b.name,"name").trim();bD(c,"name");let d="string"==typeof b.parent_path&&b.parent_path.trim()?b.parent_path.trim():"",e=d?p.posix.join(d,c):c,f=(0,w.n2)(a,e);if((0,o.existsSync)(f))throw Error("Space already exists");(0,o.mkdirSync)(f,{recursive:!0});let g=bB(a,f),h=bA(b.description,"");return(0,o.writeFileSync)((0,p.join)(f,"INSTRUCTION.md"),`# ${c}
|
|
1
|
+
exports.id=8461,exports.ids=[8461],exports.modules={17409:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,e:()=>j});let d=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),e={allow:0,ask:1,deny:2};function f(a){return a.replace(/\\/g,"/").replace(/^\/+/,"")}function g(a,b){return b.actorScore-a.actorScore||b.opScore-a.opScore||b.pathScore-a.pathScore||b.effectScore-a.effectScore}function h(a){var b;let c,h;if(!("agent"!==(b=a).actor.type||f(b.path).includes("/"))&&new Set(b.protectedRootFiles??d).has(-1===(h=(c=f(b.path)).lastIndexOf("/"))?c:c.slice(h+1)))return{effect:"deny",reason:`Root-level system file "${f(a.path)}" is protected and cannot be modified by agents`};let i=(a.rules??[]).map(b=>{var c,d,g,h,i,j;return c=b,d=a,function(a,b){return"*"===a||a===("agent"===b.actor.type&&b.actor.agentName?.trim()?b.actor.agentName.trim():b.actor.type)}(c.actor,d)&&(g=c.op,h=d.op,"*"===g||g===h)&&(i=c.path,j=d.path,(function(a){let b=f(a||"**"),c="";for(let a=0;a<b.length;a++){let d=b[a]??"",e=b[a+1];"*"===d&&"*"===e?(c+=".*",a++):"*"===d?c+="[^/]*":c+=d.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return RegExp(`^${c}$`)})(i).test(f(j)))?{rule:c,actorScore:+("*"!==c.actor),opScore:+("*"!==c.op),pathScore:f(c.path).replace(/\*/g,"").length,effectScore:e[c.effect]}:null}).filter(a=>null!==a).sort(g)[0];return i?{effect:i.rule.effect,reason:i.rule.reason??`Matched permission rule for ${i.rule.op} on ${i.rule.path}`,rule:i.rule}:{effect:"allow",reason:"Default allow"}}function i(a){var b;return a&&"object"==typeof a&&"string"==typeof a.actor&&a.actor.trim()&&"string"==typeof a.op&&a.op.trim()&&"string"==typeof a.path&&a.path.trim()?"allow"!==(b=a.effect)&&"deny"!==b&&"ask"!==b?null:{actor:a.actor.trim(),op:a.op.trim(),path:a.path.trim(),effect:a.effect,reason:"string"==typeof a.reason&&a.reason.trim()?a.reason.trim():void 0}:null}function j(a){if(!a)return[];try{let b=JSON.parse(a);if(!Array.isArray(b))return[];return b.map(i).filter(a=>null!==a)}catch{return[]}}},22763:()=>{},39741:(a,b,c)=>{"use strict";function d(a,b,c,d,e,f){return{path:a,webRouteFile:`packages/web/app${a}/route.ts`,owner:b,adapter:c,phase:d,risk:e,residualRisk:f}}c.d(b,{Ig:()=>eg,GO:()=>ah,FV:()=>aj,jU:()=>av,kS:()=>aw,GN:()=>ax,Jz:()=>au,PZ:()=>at,Se:()=>aO,nT:()=>aM,JO:()=>aN,A0:()=>aP,o0:()=>aQ,Ac:()=>aR,u4:()=>aU,xE:()=>aS,RS:()=>aT,TF:()=>X,wF:()=>bo,oU:()=>_,Pq:()=>Z,Jj:()=>$,pe:()=>b0,TL:()=>bp,au:()=>bN,YO:()=>bO,_2:()=>bu,hc:()=>bP,qe:()=>bm,vD:()=>bk,Yz:()=>bi,px:()=>bj,eu:()=>bU,mN:()=>bV,T:()=>by,x5:()=>bz,aT:()=>b$,v1:()=>cd,fn:()=>b_,DR:()=>ci,tk:()=>cj,YN:()=>cp,eo:()=>cv,Jc:()=>ct,iy:()=>cu,Bn:()=>cB,L0:()=>cz,Zh:()=>cA,fx:()=>cJ,L2:()=>cO,e2:()=>cK,sS:()=>cY,dT:()=>cW,hN:()=>cX,bk:()=>cl,ts:()=>dj,X5:()=>dA,Kb:()=>de,h3:()=>dC,XC:()=>dH,zq:()=>dN,Wo:()=>dz,VD:()=>dg,fW:()=>c2,nx:()=>dP,nW:()=>dQ,mm:()=>eZ,RX:()=>dR,hU:()=>dS,Ei:()=>dV,Cr:()=>dZ,aq:()=>dW,gt:()=>dX,P2:()=>d4,dv:()=>ei,Dm:()=>eb,eA:()=>ef,sv:()=>es,Vf:()=>ej,g:()=>eu,QG:()=>et,JD:()=>ev,tv:()=>ew,I3:()=>eA,uk:()=>eF,CD:()=>eG,LL:()=>eU,Ph:()=>ea,I8:()=>eY,EL:()=>e$,mk:()=>eX,f$:()=>e5,vd:()=>e6,gO:()=>i,Sj:()=>ch,Ut:()=>eh});let e=(a,b="low")=>d(a,"product-owned","next-response","Phase 1: migrated Product Server adapter",b,"No residual product ownership expected; this route should remain a thin Next adapter."),f=(a,b,c,e)=>d(a,"optional-capability","optional-capability",b,c,e),g=(a,b,c="medium")=>d(a,"host-owned","host","Host-owned",c,b);[e("/api/a2a/agents","medium"),e("/api/a2a/delegations","medium"),e("/api/a2a/discover","medium"),e("/api/a2a","medium"),e("/api/acp/config","high"),e("/api/acp/detect","medium"),e("/api/acp/install","high"),e("/api/acp/registry","medium"),e("/api/acp/session","high"),e("/api/agent-activity"),e("/api/agents/copy-skill","high"),e("/api/agents/custom/detect","medium"),e("/api/agents/custom","high"),e("/api/ask-sessions"),d("/api/ask","product-owned","stream","Phase 6: generated client and stream adapter","high","Ask is mostly Product runtime-owned through session and agent modules, but the streaming Web route still owns host assembly and should become a generated stream adapter."),g("/api/auth","Auth cookie/session handling is host-specific today; Product Server will need an auth context adapter before direct HTTP exposure.","high"),e("/api/backlinks"),e("/api/bootstrap"),e("/api/changes"),e("/api/channels/verify","medium"),e("/api/connect"),e("/api/embedding","medium"),f("/api/export","Phase 5: content ingestion optional capabilities","high","Export/archive logic carries heavy dependencies and filesystem writes that need optional capability packaging."),f("/api/extract-docx","Phase 5: content ingestion optional capabilities","high","DOCX extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/extract-pdf","Phase 5: content ingestion optional capabilities","high","PDF extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/file/import","Phase 5: content ingestion optional capabilities","high","File import is a content-ingestion write path and needs capability-level size limits, conflict checks, and rollback."),e("/api/file/raw"),e("/api/file","high"),e("/api/files"),e("/api/git"),e("/api/graph"),e("/api/health"),e("/api/im/activity","medium"),e("/api/im/config","high"),g("/api/im/feishu/long-connection/event","Raw long-connection event delivery is host-specific, but event parsing and state updates should stay behind Product protocol handlers.","medium"),e("/api/im/feishu/long-connection","high"),e("/api/im/status","medium"),e("/api/im/test","medium"),e("/api/im/webhook-status","medium"),g("/api/im/webhook/feishu","Raw inbound Feishu webhook receipt is host-owned, while signature verification and state writes should move to Product protocol handlers.","high"),f("/api/inbox/clip","Phase 5: content ingestion optional capabilities","high","Inbox clipping is still Web-owned ingestion and needs optional capability packaging plus fetch timeout and content limits."),e("/api/inbox","medium"),e("/api/init","high"),f("/api/lint","Phase 5: content ingestion optional capabilities","medium","Knowledge linting remains Web-owned and should become an optional Product capability with bounded filesystem traversal."),e("/api/mcp/agents","high"),e("/api/mcp/direct-tools","medium"),e("/api/mcp/install-skill","high"),e("/api/mcp/install","high"),e("/api/mcp/restart","high"),e("/api/mcp/status"),e("/api/mcp/tools","medium"),e("/api/mcp/uninstall","high"),e("/api/monitoring","medium"),f("/api/obsidian-plugins/settings","Phase 5: content ingestion optional capabilities","medium","Obsidian plugin settings remain Web-owned and should be modeled as an optional Product compatibility capability."),f("/api/obsidian/compat-report","Phase 5: content ingestion optional capabilities","medium","Obsidian compatibility reporting remains Web-owned and should use optional capability diagnostics."),f("/api/obsidian/import","Phase 5: content ingestion optional capabilities","high","Obsidian import remains a Web-owned bulk write path and needs optional capability size limits and rollback."),e("/api/recent-files"),e("/api/restart","high"),e("/api/search/prewarm"),e("/api/search"),e("/api/settings/list-models","medium"),e("/api/settings/reset-token","high"),e("/api/settings","medium"),e("/api/settings/test-key","medium"),e("/api/setup/check-path","medium"),e("/api/setup/check-port","medium"),e("/api/setup/generate-token","medium"),e("/api/setup/ls","medium"),e("/api/setup","high"),e("/api/skills","high"),e("/api/space-overview"),e("/api/sync","high"),e("/api/tree-version"),e("/api/uninstall","high"),e("/api/update-check"),e("/api/update-status"),e("/api/update","high"),e("/api/workflows","medium")].map(a=>[a.path,a]);let h={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With"};function i(a,b={}){return{status:b.status??200,body:a,headers:b.headers}}function j(a){return{status:204,headers:a}}function k(a,b){return{"Cache-Control":`public, max-age=${a}`,...b?{ETag:b}:{}}}function l(a){return{"Cache-Control":`private, max-age=${a}`}}function m(a,b=500){return i({error:a instanceof Error?a.message:String(a||"Unknown error")},{status:b})}var n=c(51455),o=c(73024),p=c(76760),q=c(58569);function r(a){return{ok:!0,value:a}}function s(a){return{ok:!1,error:a}}var t=c(77598),u=c(64770);class v{constructor(a){this.logger=a}async readFile(a,b="utf-8"){try{let c=await (0,n.readFile)(a,b);return this.logger?.debug(`Read file: ${a}`),r(c)}catch(b){return this.logger?.error(`Failed to read file: ${a}`,b),s((0,u.$5)("FILE_READ_ERROR",`Failed to read file: ${a}`,{cause:b}))}}async writeFile(a,b,c="utf-8"){try{let d=(0,p.dirname)(a);return await (0,n.mkdir)(d,{recursive:!0}),await (0,n.writeFile)(a,b,c),this.logger?.debug(`Wrote file: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to write file: ${a}`,b),s((0,u.$5)("FILE_WRITE_ERROR",`Failed to write file: ${a}`,{cause:b}))}}async exists(a){try{return await (0,n.access)(a,o.constants.F_OK),r(!0)}catch{return r(!1)}}async stat(a){try{let b=await (0,n.stat)(a),c={path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:b.isDirectory(),isFile:b.isFile()};return r(c)}catch(b){return this.logger?.error(`Failed to stat file: ${a}`,b),s((0,u.$5)("FILE_STAT_ERROR",`Failed to stat file: ${a}`,{cause:b}))}}async readdir(a){try{let b=(await (0,n.readdir)(a,{withFileTypes:!0})).map(b=>({name:b.name,path:(0,p.join)(a,b.name),isDirectory:b.isDirectory(),isFile:b.isFile()}));return r(b)}catch(b){return this.logger?.error(`Failed to read directory: ${a}`,b),s((0,u.$5)("DIRECTORY_READ_ERROR",`Failed to read directory: ${a}`,{cause:b}))}}async mkdir(a,b=!0){try{return await (0,n.mkdir)(a,{recursive:b}),this.logger?.debug(`Created directory: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to create directory: ${a}`,b),s((0,u.$5)("DIRECTORY_CREATE_ERROR",`Failed to create directory: ${a}`,{cause:b}))}}async remove(a,b=!1){try{return await (0,n.rm)(a,{recursive:b,force:!0}),this.logger?.debug(`Removed: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to remove: ${a}`,b),s((0,u.$5)("FILE_REMOVE_ERROR",`Failed to remove: ${a}`,{cause:b}))}}async copy(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.copyFile)(a,b),this.logger?.debug(`Copied: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to copy: ${a} -> ${b}`,c),s((0,u.$5)("FILE_COPY_ERROR",`Failed to copy: ${a} -> ${b}`,{cause:c}))}}async move(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.rename)(a,b),this.logger?.debug(`Moved: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to move: ${a} -> ${b}`,c),s((0,u.$5)("FILE_MOVE_ERROR",`Failed to move: ${a} -> ${b}`,{cause:c}))}}async watch(a,b,c){try{let d=(0,q.wB)(a,{ignored:b.ignored,persistent:b.persistent??!0,ignoreInitial:b.ignoreInitial??!0,depth:b.depth});d.on("add",(a,b)=>{c({type:"add",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("change",(a,b)=>{c({type:"change",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("unlink",a=>{c({type:"unlink",path:a})}).on("addDir",a=>{c({type:"addDir",path:a})}).on("unlinkDir",a=>{c({type:"unlinkDir",path:a})}),this.logger?.info(`Started watching: ${a}`);let e=()=>{d.close(),this.logger?.info(`Stopped watching: ${a}`)};return r(e)}catch(b){return this.logger?.error(`Failed to watch: ${a}`,b),s((0,u.$5)("FILE_WATCH_ERROR",`Failed to watch: ${a}`,{cause:b}))}}}var w=c(96081),x=c(33873);function y(a){return{ok:!0,value:a}}function z(a){return{ok:!1,error:a}}let A=".mindos";function B(){return new Date().toISOString()}function C(a,b){return(0,o.existsSync)(a)?(0,w.n2)(a,b):x.join(a,b)}function D(a){return C(a,x.posix.join(A,"change-log.json"))}function E(){return{version:1,lastSeenAt:null,events:[],legacy:{agentDiffImportedCount:0,lastImportedAt:null}}}function F(a){return"string"!=typeof a?{value:void 0,truncated:!1}:a.length<=12e3?{value:a,truncated:!1}:{value:a.slice(0,12e3),truncated:!0}}async function G(a,b){let c;try{c=D(b)}catch{return E()}let d=await a.exists(c);if(!d.ok||!d.value)return E();let e=await a.readFile(c);if(!e.ok)return E();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return E();return{version:1,lastSeenAt:"string"==typeof a.lastSeenAt?a.lastSeenAt:null,events:a.events,legacy:{agentDiffImportedCount:"number"==typeof a.legacy?.agentDiffImportedCount?a.legacy.agentDiffImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return E()}}async function H(a,b,c){let d;try{d=D(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid change log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}async function I(a,b,c){let d;try{d=C(b,"Agent-Diff.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-diff\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{let a=JSON.parse(b[1].trim());c.push(a)}catch{}return c}(f.value),h=c.legacy?.agentDiffImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>{let c=F(a.before),d=F(a.after),e="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",f="string"==typeof a.path&&a.path.trim()?a.path:"Agent-Diff.md";return{id:`legacy-${Date.now().toString(36)}-${b.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),op:"legacy_agent_diff_import",path:f,source:"agent",summary:`Imported legacy agent diff (${e})`,before:c.value,after:d.value,truncated:c.truncated||d.truncated||void 0}}),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()),k={...c,events:j.slice(0,500),legacy:{agentDiffImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function J(a,b){let c=await G(a,b),d=await I(a,b,c);return((c.legacy?.agentDiffImportedCount??0)!==(d.legacy?.agentDiffImportedCount??0)||c.events.length!==d.events.length)&&await H(a,b,d),d}async function K(a,b,c={}){let d=await J(a,b),e=Math.max(1,Math.min(c.limit??50,200)),f=c.path?.trim(),g=c.source,h=c.op?.trim(),i=c.q?.trim().toLowerCase();return y(d.events.filter(a=>(!f||a.path===f||a.beforePath===f||a.afterPath===f)&&(!g||a.source===g)&&(!h||a.op===h)&&(!i||!!`${a.path} ${a.beforePath??""} ${a.afterPath??""} ${a.summary} ${a.op} ${a.source}`.toLowerCase().includes(i))&&!0).slice(0,e))}async function L(a,b){let c=await J(a,b);return c.lastSeenAt=B(),await H(a,b,c)}async function M(a,b){let c=await J(a,b),d=c.lastSeenAt?new Date(c.lastSeenAt).getTime():0;return y({unreadCount:c.events.filter(a=>new Date(a.ts).getTime()>d).length,totalCount:c.events.length,lastSeenAt:c.lastSeenAt,latest:c.events[0]??null})}function N(){return{version:1,events:[],legacy:{mdImportedCount:0,jsonlImportedCount:0,lastImportedAt:null}}}function O(a){return C(a,x.posix.join(A,"agent-audit-log.json"))}async function P(a,b){let c;try{c=O(b)}catch{return N()}let d=await a.exists(c);if(!d.ok||!d.value)return N();let e=await a.readFile(c);if(!e.ok)return N();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return N();return{version:1,events:a.events,legacy:{mdImportedCount:"number"==typeof a.legacy?.mdImportedCount?a.legacy.mdImportedCount:0,jsonlImportedCount:"number"==typeof a.legacy?.jsonlImportedCount?a.legacy.jsonlImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return N()}}async function Q(a,b,c){let d;try{d=O(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid audit log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}function R(a,b,c){let d="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",e="error"===a.result?"error":"ok",f=a.params&&"object"==typeof a.params?a.params:{};return{id:`legacy-${Date.now().toString(36)}-${c.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),tool:d,params:f,result:e,message:function(a){if("string"==typeof a)return a.length<=2e3?a:a.slice(0,2e3)}(a.message),durationMs:"number"==typeof a.durationMs?a.durationMs:void 0,op:b}}async function S(a,b,c){let d;try{d=C(b,"Agent-Audit.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-op\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{c.push(JSON.parse(b[1].trim()))}catch{}return c}(f.value),h=c.legacy?.mdImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_audit_md_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:g.length,jsonlImportedCount:c.legacy?.jsonlImportedCount??0,lastImportedAt:B()}};return await a.remove(d),k}async function T(a,b,c){let d;try{d=C(b,".agent-log.json")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{b.push(JSON.parse(a))}catch{}}return b}(f.value),h=c.legacy?.jsonlImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_log_jsonl_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:c.legacy?.mdImportedCount??0,jsonlImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function U(a,b){let c=await P(a,b),d=await S(a,b,c),e=await T(a,b,d);return(c.events.length!==e.events.length||(c.legacy?.mdImportedCount??0)!==(e.legacy?.mdImportedCount??0)||(c.legacy?.jsonlImportedCount??0)!==(e.legacy?.jsonlImportedCount??0))&&await Q(a,b,e),e}async function V(a,b,c=100){let d=await U(a,b),e=Math.max(1,Math.min(c,1e3));return y(d.events.slice(0,e))}function W(a,b){if(!a)return;if(a instanceof URLSearchParams)return a.get(b)??void 0;let c=a[b];return Array.isArray(c)?c[0]:c}async function X(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,500)):10,f=await V(new v,b.mindRoot,e);return f.ok?i({events:f.value},{headers:l(30)}):i({error:f.error.message},{status:500})}var Y=c(48161);function Z(a={}){return i(ab(aa(a)))}function $(a,b={}){let c=a?.session;if(!ad(c))return i({error:"Invalid session payload"},{status:400});let d=aa(b),e=ab(d),f=e.findIndex(a=>a.id===c.id);return f>=0?e[f]=c:e.push(c),e.sort((a,b)=>ae(b)-ae(a)),ac(d,e),i({ok:!0})}function _(a,b={}){let c=Array.isArray(a?.ids)?a.ids.filter(a=>"string"==typeof a&&a.length>0):"string"==typeof a?.id&&a.id.length>0?[a.id]:[];if(0===c.length)return i({error:"id or ids is required"},{status:400});let d=aa(b),e=new Set(c);return ac(d,ab(d).filter(a=>!e.has(a.id))),i({ok:!0})}function aa(a){return a.storePath??(0,p.join)((0,Y.homedir)(),".mindos","sessions.json")}function ab(a){try{if(!(0,o.existsSync)(a))return[];let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if(!Array.isArray(b))return[];return b.filter(ad).sort((a,b)=>ae(b)-ae(a)).slice(0,30)}catch{return[]}}function ac(a,b){(0,o.mkdirSync)((0,p.dirname)(a),{recursive:!0}),(0,o.writeFileSync)(a,JSON.stringify(b.slice(0,30),null,2),"utf-8")}function ad(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&Array.isArray(a.messages))}function ae(a){return"number"==typeof a.updatedAt?a.updatedAt:0}c(37067),c(73136);let af=new Set([".md",".csv",".json",".pdf",".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".mp3",".wav",".m4a",".ogg",".flac",".aac",".mp4",".webm",".mov",".mkv"]),ag=new Set([".git","node_modules","app",".next",".DS_Store",".media","mcp"]);function ah(a={}){let b=a.env??process.env,c=a.homeDir??(0,Y.homedir)();return function(a){if(a.readSettings)try{return a.readSettings()}catch{return{}}try{let b=a.homeDir??(0,Y.homedir)(),c=(0,o.readFileSync)((0,p.join)(b,".mindos","config.json"),"utf-8"),d=JSON.parse(c);if(d&&"object"==typeof d)return d}catch{}return{}}(a).mindRoot||b.MIND_ROOT||(0,p.join)(c,"MindOS","mind")}function ai(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[];return function a(b,c,d,e={}){let f=!0===e.includeDirectories,g=!1!==e.includeFiles;for(let h of(0,o.readdirSync)(c,{withFileTypes:!0})){if(h.isDirectory()&&ag.has(h.name))continue;let i=(0,p.join)(c,h.name),j=(0,p.relative)(b,i).split("\\").join("/");if(h.isDirectory()){f&&d(i,j,h),a(b,i,d,e);continue}g&&h.isFile()&&d(i,j,h)}}(b,b,(a,b)=>{af.has((0,p.extname)(a).toLowerCase())&&c.push(b)}),c.sort((a,b)=>a.localeCompare(b)),c}function aj(a){let b=a.homeDir??(0,Y.homedir)(),c=a.runtimeRoot?(0,p.resolve)(a.runtimeRoot):process.cwd(),d=a.settings??{},e=[{path:(0,p.join)(c,"packages","web","data","skills"),source:"builtin",origin:"app-builtin",editable:!1},{path:(0,p.join)(c,"skills"),source:"builtin",origin:"project-builtin",editable:!1},{path:(0,p.join)(a.mindRoot,".skills"),source:"user",origin:"mindos-user",editable:!0},{path:(0,p.join)(b,".mindos","skills"),source:"user",origin:"mindos-global",editable:!0}];for(let a of(d.skillPaths?.enableAgentsDir!==!1&&e.push({path:(0,p.join)(b,".agents","skills"),source:"user",origin:"agents-global",editable:!0}),Array.isArray(d.skillPaths?.custom)?d.skillPaths.custom:[])){if("string"!=typeof a)continue;let c=function(a,b){let c=a.trim();return"~"===c?b:c.startsWith("~/")||c.startsWith("~\\")?(0,p.join)(b,c.slice(2)):c}(a,b);c&&e.push({path:c,source:"user",origin:"custom",editable:!0})}return e}function ak(a){return"darwin"===process.platform?a.darwin:"win32"===process.platform?`${(process.env.APPDATA||(0,p.join)((0,Y.homedir)(),"AppData","Roaming")).replace(/\\/g,"/").replace(/\/+$/,"")}/${a.win32}`:a.linux}ak({darwin:"~/Library/Application Support/Code/User",linux:"~/.config/Code/User",win32:"Code/User"}),ak({darwin:"~/Library/Application Support/Code",linux:"~/.config/Code",win32:"Code"}),ak({darwin:"~/Library/Application Support/Trae CN",linux:"~/.config/Trae CN",win32:"Trae CN"});let al={code:-32001,message:"Task not found"},am={code:-32002,message:"Task not cancelable"},an={code:-32700,message:"Parse error"},ao={code:-32600,message:"Invalid request"},ap={code:-32601,message:"Method not found"},aq={code:-32602,message:"Invalid params"},ar={code:-32603,message:"Internal error"},as={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, A2A-Version"};async function at(a,b={}){if((a.contentLength??0)>1e5)return ay(aA(null,{code:-32600,message:"Request too large (max 100000 bytes)"}),413);if(a.parseError)return ay(aA(null,an),400);let c=a.body&&"object"==typeof a.body?a.body:{};if("2.0"!==c.jsonrpc||"string"!=typeof c.method)return ay(aA(aB(c),ao),400);try{switch(c.method){case"SendMessage":{var d;let a;if(a=(d=c.params)&&"object"==typeof d?d.message:void 0,!Array.isArray(a?.parts)||!(a.parts.length>0))return ay(aA(aB(c),aq));let e=b.handleSendMessage??aD;return ay(az(aB(c),await e(c.params)))}case"GetTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let a=(b.handleGetTask??function(){return null})(c.params);if(!a)return ay(aA(aB(c),al));return ay(az(aB(c),a))}case"CancelTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let{task:a,reason:d}=(b.handleCancelTask??function(){return{task:null,reason:"not_found"}})(c.params);if("not_found"===d)return ay(aA(aB(c),al));if("not_cancelable"===d)return ay(aA(aB(c),am));return ay(az(aB(c),a))}default:return ay(aA(aB(c),ap))}}catch(a){return ay(aA(aB(c),{...ar,data:a instanceof Error?a.message:String(a)}),500)}}function au(){return j(as)}function av(a={}){return i({agents:a.getDiscoveredAgents?.()??[]})}function aw(a={}){return i({delegations:a.getDelegationHistory?.()??[]})}async function ax(a,b={}){let c=a&&"object"==typeof a?a:{};if(!c.url||"string"!=typeof c.url)return i({error:"URL is required"},{status:400});let d=c.url.trim();if(!function(a){if(!a||a.length>2048)return!1;try{let b=new URL(a);if("http:"!==b.protocol&&"https:"!==b.protocol||b.username||b.password)return!1;return!!b.hostname}catch{return!1}}(d))return i({error:"Invalid URL",agent:null},{status:400});let e=b.discoverAgent??aE,f=await e(d);return f?i({agent:f}):i({error:"No A2A agent found",agent:null})}function ay(a,b=200){return i(a,{status:b,headers:as})}function az(a,b){return{jsonrpc:"2.0",id:a,result:b}}function aA(a,b){return{jsonrpc:"2.0",id:a,error:b}}function aB(a){return"string"==typeof a.id||"number"==typeof a.id?a.id:null}function aC(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&a.id)}async function aD(){throw Error("A2A SendMessage service is not configured")}async function aE(){return null}var aF=c(31421),aG=c(75791);let aH=null;function aI(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function aJ(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!aI(a)}function aK(a,b="agentId"){let c=a&&"object"==typeof a?a[b]:void 0;if("string"!=typeof c)return null;let d=c.trim();return aJ(d)?d:null}function aL(a){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(a)&&!aI(a)}function aM(a){return i({agents:aW(a.readSettings().acpAgents)??{}})}function aN(a,b){let c=a&&"object"==typeof a?a:{},d=aK(c);if(!d)return i({error:"agentId is required"},{status:400});let e=b.readSettings(),f={...aW(e.acpAgents)??{}},g=aV(c.config);return g&&(f[d]=g),b.writeSettings({...e,acpAgents:f}),i({ok:!0,agents:f})}function aO(a,b){let c=aK(a&&"object"==typeof a?a:{});if(!c)return i({error:"agentId is required"},{status:400});let d=b.readSettings(),e={...aW(d.acpAgents)??{}};delete e[c];let f=Object.keys(e).length>0?{...d,acpAgents:e}:{...d,acpAgents:void 0};return b.writeSettings(f),i({ok:!0,agents:f.acpAgents??{}})}async function aP(a,b={}){try{let c="1"===a.get("force"),d=b.now?.()??Date.now();if(!c&&aH&&d-aH.ts<18e5)return i(aH.data);let e=b.detectLocalAcpAgents??aG.Tn,f=await e({overrides:function(a){try{let b=a.readSettings?.();return aW(b?.acpAgents)}catch{return}}(b)});return aH={data:f,ts:d},i(f)}catch(a){return m(a)}}async function aQ(a,b={}){try{let c,d=a&&"object"==typeof a?a:{},e=aK(d);if(!e||!d.packageName||"string"!=typeof d.packageName)return i({error:"agentId and packageName are required"},{status:400});if(c=d.packageName.trim(),!(!(0===c.length||c.length>214||c.includes("\\"))&&/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i.test(c)))return i({error:"Invalid package name"},{status:400});let f=b.installPackage??aX;return i(await f(e,d.packageName))}catch(a){return m(a)}}async function aR(a,b={}){try{let c=a.get("agent");if(c){if(!aJ(c.trim()))return i({error:"Invalid agent id",agent:null},{status:400});let a=b.findAcpAgent??aG.l3,d=await a(c.trim());if(!d)return i({error:"Agent not found",agent:null},{status:404});return i({agent:d})}let d=b.fetchAcpRegistry??aG.Ew,e=await d();if(!e)return i({error:"Failed to fetch registry",registry:null},{status:502});return i({registry:e})}catch(a){return m(a)}}function aS(a={}){try{return i({sessions:(a.getActiveSessions??aG.EF)()})}catch(a){return m(a)}}async function aT(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"create";switch(d){case"create":return await aY(c,b);case"load":return await aZ(c,b);case"prompt":return await a$(c,b);case"cancel":return await a_(c,b);case"set_mode":return await a0(c,b);case"set_config":return await a1(c,b);case"list_sessions":return await a2(c,b);default:return i({error:`Unknown action: ${d}`},{status:400})}}catch(d){var c;let a,b;return b=(a=(c=d)instanceof Error?c.message:String(c||"Unknown error")).includes("not found")?404:a.includes("not support")?501:500,i({error:a},{status:b})}}async function aU(a,b={}){try{let c=a3(a,"sessionId");if(!c)return i({error:"sessionId is required"},{status:400});if(!(b.getSession??aG.Ht)(c))return i({error:"Session not found"},{status:404});return await (b.closeSession??aG.Vu)(c),i({ok:!0})}catch(a){return m(a)}}function aV(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};if("string"==typeof a.command&&a.command.trim()&&(b.command=a.command.trim()),Array.isArray(a.args)&&(b.args=a.args.filter(a=>"string"==typeof a)),a.env&&"object"==typeof a.env&&!Array.isArray(a.env)){let c={};for(let[b,d]of Object.entries(a.env))"string"==typeof d&&aL(b)&&(c[b]=d);Object.keys(c).length>0&&(b.env=c)}return"boolean"==typeof a.enabled&&(b.enabled=a.enabled),b}function aW(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!aJ(c))continue;let a=aV(d);a&&(b[c]=a)}return Object.keys(b).length>0?b:void 0}async function aX(a,b){let c=function(a,b={}){if("win32"!==(b.platform??process.platform))return{command:"npm",args:a};let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&(b.npm_execpath.endsWith("npm-cli.js")?d.add(b.npm_execpath):d.add((0,p.join)((0,p.dirname)(b.npm_execpath),"npm-cli.js")));let e=(0,p.dirname)(a);for(let a of(d.add((0,p.join)(e,"node_modules","npm","bin","npm-cli.js")),d.add((0,p.resolve)(e,"..","lib","node_modules","npm","bin","npm-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??o.existsSync);if(!e)throw Error("Unable to locate npm-cli.js for shell-free ACP package installation on Windows");return{command:d,args:[e,...a]}}(["install","-g",b]);return(0,aF.execFile)(c.command,c.args,{timeout:12e4}).unref(),{status:"installing",agentId:a,packageName:b}}async function aY(a,b){let c=aK(a);if(!c)return i({error:"agentId is required"},{status:400});let d={env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0},e=b.createSession??aG.jw,f=await e(c,d),g="string"==typeof a.prompt?a.prompt:void 0;if(!g)return i({session:f});let h=b.prompt??aG.J1,j=b.closeSession??aG.Vu;try{let a=await h(a5(f),g);return await j(a5(f)).catch(()=>{}),i({session:f,response:a})}catch(a){return await j(a5(f)).catch(()=>{}),m(a)}}async function aZ(a,b){let c=aK(a),d=a3(a,"sessionId");return c?d?i({session:await (b.loadSession??aG.L6)(c,d,{env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0})}):i({error:"sessionId is required"},{status:400}):i({error:"agentId is required"},{status:400})}async function a$(a,b){let c=a3(a,"sessionId"),d=a3(a,"text");return c?d?i({response:await (b.prompt??aG.J1)(c,d)}):i({error:"text is required"},{status:400}):i({error:"sessionId is required"},{status:400})}async function a_(a,b){let c=a3(a,"sessionId");return c?(await (b.cancelPrompt??aG.zl)(c),i({ok:!0})):i({error:"sessionId is required"},{status:400})}async function a0(a,b){let c=a3(a,"sessionId"),d=a3(a,"modeId");return c&&d?(await (b.setMode??aG.iY)(c,d),i({ok:!0})):i({error:"sessionId and modeId are required"},{status:400})}async function a1(a,b){let c=a3(a,"sessionId"),d=a3(a,"configId");return c&&d&&void 0!==a.value?i({configOptions:await (b.setConfigOption??aG.Et)(c,d,String(a.value))}):i({error:"sessionId, configId, and value are required"},{status:400})}async function a2(a,b){let c=a3(a,"sessionId");return c?i(await (b.listSessions??aG.GW)(c,{cursor:"string"==typeof a.cursor?a.cursor:void 0,cwd:"string"==typeof a.cwd?a.cwd:void 0})):i({error:"sessionId is required"},{status:400})}function a3(a,b){let c=a&&"object"==typeof a?a[b]:void 0;return"string"==typeof c&&c?c:void 0}function a4(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&aL(c)&&(b[c]=d);return Object.keys(b).length>0?b:void 0}function a5(a){if(a&&"object"==typeof a&&"string"==typeof a.id)return a.id;throw Error("ACP session response did not include an id")}let a6=["mindos","claude-code","cursor","windsurf","cline","trae","gemini-cli","openclaw","codebuddy","iflow-cli","kimi-cli","opencode","pi","augment","qwen-code","qoder","trae-cn","roo","github-copilot","codex","antigravity","qclaw","workbuddy","lingma","copaw","hermes"];function a7(a){return a.toLowerCase().replace(/[^\x20-\x7E]/g,"").replace(/[_\s]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-{2,}/g,"-").replace(/^-|-$/g,"")||""}function a8(a){return a.endsWith("/")||a.endsWith("\\")?a:`${a}/`}function a9(a,b){return`${a8(a)}${b}`}function ba(a){return!!(a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||"win32"===process.platform&&(/^[A-Z]:[\\/]/i.test(a)||a.startsWith("\\\\")))}function bb(a){return a.split(/[\\/]+/).includes("..")}function bc(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function bd(a){return/^[a-z0-9][a-z0-9-]*$/.test(a)&&!bc(a)}function be(a,b){let c=a.split(".");return 0===c.length||c.some(a=>!a.trim()||bc(a.trim()))?`${b} contains an unsafe key`:null}function bf(a,b){let c=a.trim();return c?bb(c)?`${b} cannot contain parent directory segments`:ba(c)?null:`${b} must be an absolute path`:`${b} is required`}function bg(a){if(void 0!==a.key){if("string"!=typeof a.key)return"Agent key must be a string";if(!bd(a.key.trim()))return"Agent key must use lowercase letters, numbers, and hyphens only"}if(void 0!==a.format&&!["json","toml"].includes(String(a.format)))return'format must be "json" or "toml"';if(void 0!==a.preferredTransport&&!["stdio","http"].includes(String(a.preferredTransport)))return'preferredTransport must be "stdio" or "http"';if(void 0!==a.configKey){if("string"!=typeof a.configKey)return"configKey must be a string";let b=be(a.configKey.trim(),"configKey");if(b)return b}if(void 0!==a.globalNestedKey&&""!==a.globalNestedKey){if("string"!=typeof a.globalNestedKey)return"globalNestedKey must be a string";let b=be(a.globalNestedKey.trim(),"globalNestedKey");if(b)return b}for(let[c,d]of[["baseDir","baseDir"],["global","global"],["skillDir","skillDir"]]){var b;let e=(b=a[c],null==b||""===b?null:"string"!=typeof b?`${d} must be a string`:bf(b,d));if(e)return e}if(void 0!==a.presenceDirs){if(!Array.isArray(a.presenceDirs))return"presenceDirs must be an array";for(let b of a.presenceDirs){if("string"!=typeof b)return"presenceDirs must contain only strings";let a=bf(b,"presenceDirs");if(a)return a}}return void 0!==a.presenceCli&&""!==a.presenceCli&&"string"!=typeof a.presenceCli?"presenceCli must be a string":null}function bh(a){let b=a.customAgents;return Array.isArray(b)?b.filter(a=>null!=a&&"object"==typeof a&&"string"==typeof a.name&&"string"==typeof a.key&&"string"==typeof a.baseDir):[]}function bi(a,b){try{var c,d;let e,{name:f,baseDir:g,...h}=a;if(!f?.trim()||!g?.trim())return i({error:"name and baseDir are required"},{status:400});let j=b.readSettings(),k=bh(j),l=new Set(b.builtInAgentKeys??a6),m=new Set([...l,...k.map(a=>a.key)]),n=bg(h);if(n)return i({error:n},{status:400});let o="string"==typeof h.key&&h.key.trim()?h.key.trim():function(a,b){let c=a7(a);if(!c){let a=1;for(;b.has(`custom-${a}`);)a+=1;return`custom-${a}`}if(!b.has(c))return c;let d=2;for(;b.has(`${c}-${d}`);)d+=1;return`${c}-${d}`}(f.trim(),m),p=function(a,b,c,d=!1){if(!a.name?.trim())return"Agent name is required";if(!a.baseDir?.trim())return"Config directory is required";let e=a.baseDir.trim();if(bb(e))return"Config directory cannot contain parent directory segments";if(!ba(e))return"Must be an absolute path (e.g. ~/.qclaw/)";if(!d){let d=a.key||a7(a.name.trim());if(!d)return"Cannot generate a valid key from this name";if(!bd(d))return"Agent key must use lowercase letters, numbers, and hyphens only";if(c.has(d))return`Conflicts with built-in agent "${d}"`;if(b.has(d))return`An agent with key "${d}" already exists`}return null}({name:f,baseDir:g,key:o},m,l);if(p)return i({error:p},{status:400});let q={...(c=f.trim(),d=g.trim(),e=a8(d),{name:c,baseDir:e,global:a9(e,"mcp.json"),project:null,configKey:"mcpServers",format:"json",preferredTransport:"stdio",presenceDirs:[e],skillDir:a9(e,"skills/")}),key:o,...h.global&&{global:h.global},...void 0!==h.project&&{project:h.project},...h.configKey&&{configKey:h.configKey},...h.format&&{format:h.format},...h.preferredTransport&&{preferredTransport:h.preferredTransport},...h.presenceDirs&&{presenceDirs:h.presenceDirs},...h.presenceCli&&{presenceCli:h.presenceCli},...h.globalNestedKey&&{globalNestedKey:h.globalNestedKey},...h.skillDir&&{skillDir:h.skillDir}};return b.writeSettings({...j,customAgents:[...k,q]}),i({agent:q},{status:201})}catch(a){return m(a)}}function bj(a,b){try{let{key:c,...d}=a,e="string"==typeof c?c.trim():"";if(!e)return i({error:"key is required"},{status:400});if(!bd(e))return i({error:"Invalid agent key"},{status:400});let f=b.readSettings(),g=bh(f),h=g.findIndex(a=>a.key===e);if(-1===h)return i({error:`Custom agent "${e}" not found`},{status:404});let j=bg(d);if(j)return i({error:j},{status:400});let k=g[h];if(!k)return i({error:`Custom agent "${e}" not found`},{status:404});let l={...k,...d.name&&{name:d.name},...d.baseDir&&{baseDir:d.baseDir},...d.global&&{global:d.global},...void 0!==d.project&&{project:d.project},...d.configKey&&{configKey:d.configKey},...d.format&&{format:d.format},...d.preferredTransport&&{preferredTransport:d.preferredTransport},...void 0!==d.presenceCli&&{presenceCli:d.presenceCli||void 0},...void 0!==d.globalNestedKey&&{globalNestedKey:d.globalNestedKey||void 0},...void 0!==d.skillDir&&{skillDir:d.skillDir||void 0}};d.presenceDirs?l.presenceDirs=d.presenceDirs:d.baseDir&&(l.presenceDirs=[a8(d.baseDir)]),!d.skillDir&&d.baseDir&&(l.skillDir=a9(d.baseDir,"skills/"));let m=g.slice();return m[h]=l,b.writeSettings({...f,customAgents:m}),i({agent:l})}catch(a){return m(a)}}function bk(a,b){try{let{key:c}=a;if(!c)return i({error:"key is required"},{status:400});let d=b.readSettings(),e=bh(d),f=e.filter(a=>a.key!==c);if(f.length===e.length)return i({error:`Custom agent "${c}" not found`},{status:404});return b.writeSettings({...d,customAgents:f}),i({removed:c})}catch(a){return m(a)}}function bl(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function bm(a,b={}){try{if(!a.baseDir?.trim())return i({error:"baseDir is required"},{status:400});let c=a.baseDir.trim();if(!ba(c))return i({error:"baseDir must be an absolute path (e.g. ~/.qclaw/)"},{status:400});let d=function(a,b=(0,Y.homedir)()){let c,d=bl(a,b);if(!(0,o.existsSync)(d)){let a=(0,p.basename)(d.replace(/[\\/]+$/,""));return{exists:!1,hasSkillsDir:!1,suggestedName:a.charAt(0).toUpperCase()+a.slice(1)}}let e={exists:!0,hasSkillsDir:!1},f=(0,p.basename)(d.replace(/[\\/]+$/,""));e.suggestedName=f.charAt(0).toUpperCase()+f.slice(1);let g=(0,p.join)(d,"skills");if((0,o.existsSync)(g)){e.hasSkillsDir=!0,e.detectedSkillDir=a9(a,"skills/");try{let a=(0,o.readdirSync)(g,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b));e.skillCount=a.length,e.skillNames=a}catch{e.skillCount=0}}try{c=(0,o.readdirSync)(d).slice(0,20)}catch{return e}for(let b of c){if(!b.endsWith(".json"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;let f=JSON.parse((0,o.readFileSync)(c,"utf-8"));if("mcpServers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="mcpServers",e;if("servers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="servers",e}catch{}}for(let b of c){if(!b.endsWith(".toml"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;for(let d of(0,o.readFileSync)(c,"utf-8").split("\n").slice(0,50))if(/^\s*\[mcp_servers/i.test(d)||/^\s*\[mcpServers/i.test(d)){let c=d.toLowerCase();return e.detectedConfig=a9(a,b),e.detectedFormat="toml",e.detectedConfigKey=c.includes("mcp_servers")?"mcp_servers":"mcpServers",e}}catch{}}return e}(c,b.homeDir);if(d.detectedConfig&&d.detectedConfigKey){let a=function(a,b,c,d=(0,Y.homedir)()){let e=bl(a,d),f=bl(b,d),g=b.toLowerCase().endsWith(".toml")?"toml":"json",h={mcpServers:[],skillNames:[],skillDir:"",configFormat:g};if((0,o.existsSync)(f))try{let a=(0,o.readFileSync)(f,"utf-8");h.mcpServers="json"===g?function(a,b){try{let c,d=(!(c=(c=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a)).replace(/\/\*[\s\S]*?\*\//g,"")).trim()?{}:JSON.parse(c))[b];if(d&&"object"==typeof d)return Object.keys(d).sort((a,b)=>a.localeCompare(b))}catch{}return[]}(a,c):function(a,b){let c=new Set,d=a.split("\n"),e=`${b}.`;for(let a of d){let b=a.trim();if(!b.startsWith("[")||!b.endsWith("]"))continue;let d=b.slice(1,-1).trim();if(!d.startsWith(e))continue;let f=d.slice(e.length).split(".")[0]?.trim();f&&c.add(f)}return[...c].sort((a,b)=>a.localeCompare(b))}(a,c)}catch(a){h.parseError=`Failed to parse MCP config: ${a instanceof Error?a.message:"Unknown error"}`}let i=(0,p.join)(e,"skills");if(h.skillDir=a9(a,"skills/"),!(0,o.existsSync)(i))return h;try{h.skillNames=(0,o.readdirSync)(i,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{}return h}(c,d.detectedConfig,d.detectedConfigKey,b.homeDir);d.mcpServers=a.mcpServers,d.skillNames=a.skillNames,a.parseError&&(d.mcpParseError=a.parseError)}return i(d)}catch(a){return m(a)}}async function bn(a,b){for(let c of((0,o.mkdirSync)(b,{recursive:!0}),(0,o.readdirSync)(a,{withFileTypes:!0}))){let d=(0,p.join)(a,c.name),e=(0,p.join)(b,c.name);c.isDirectory()?await bn(d,e):c.isFile()&&(0,o.writeFileSync)(e,(0,o.readFileSync)(d))}}async function bo(a,b){try{if(!a.skillName?.trim())return i({error:"skillName is required"},{status:400});if(!a.targetPath?.trim())return i({error:"targetPath is required"},{status:400});let c=a.skillName.trim();if("."===c||".."===c||c.includes("/")||c.includes("\\"))return i({error:"Invalid skill name"},{status:400});let d=a.targetPath.trim();if(bb(d))return i({error:"Invalid target path"},{status:400});if(!ba(d))return i({error:"Target path must be absolute (starting with / or ~/)"},{status:400});let e=function(a,b){for(let c of b){let b=(0,p.join)(c.path,a);if((0,o.existsSync)(b))return b}return null}(c,b.skillRoots);if(!e)return i({error:`Skill "${c}" not found`},{status:404});let f=b.homeDir??(0,Y.homedir)(),g=bl(d,f).replace(/\/$/,""),h=(0,p.join)(g,c);if((0,o.existsSync)(h))return i({error:`Skill "${c}" already exists in target directory`},{status:409});return(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),await (b.copyDirectory??bn)(e,h),i({success:!0,skillName:c,targetPath:h})}catch(a){return m(a)}}function bp(a,b){var c;let d=a.get("target_dir")??void 0;if(d&&((c=d).split(/[\\/]+/).includes("..")||p.isAbsolute(c)||p.win32.isAbsolute(c)||c.includes("\\")))return i({error:"invalid target_dir"},{status:400});let e={instruction:bq(b,"INSTRUCTION.md"),index:bq(b,"README.md"),config_json:bq(b,"CONFIG.json"),user_skill_rules:bq(b,".mindos/user-preferences.md"),file_index:function(a,b={}){let c=b.maxDepth??2,d=b.maxFilesPerDir??15,e=[];for(let b of[...a].sort((a,b)=>a.localeCompare(b)))!function a(b,c){let[d,...e]=c;if(!d)return;if(0===e.length)return void b.push({name:d,type:"file"});let f=b.find(a=>"directory"===a.type&&a.name===d);f||(f={name:d,type:"directory",children:[]},b.push(f)),a(f.children??[],e)}(e,b.split("/").filter(Boolean));if(0===e.length)return"(empty knowledge base)";let f=[];return function a(b,e){let g=" ".repeat(e),h=b.filter(a=>"directory"===a.type),i=b.filter(a=>"file"===a.type);for(let b of h){let d=function a(b){let c=0;for(let d of b)"file"===d.type?c++:c+=a(d.children??[]);return c}(b.children??[]),h=1===d?"1 file":`${d} files`;f.push(`${g}${b.name}/ (${h})`),e<c&&a(b.children??[],e+1)}let j=i.slice(0,d);for(let a of j)f.push(`${g}${a.name}`);let k=i.length-j.length;k>0&&f.push(`${g}... (${k} more)`)}(e,0),f.join("\n")}(b.collectAllFiles())};return d&&(e.target_readme=bq(b,p.join(d,"README.md")),e.target_instruction=bq(b,p.join(d,"INSTRUCTION.md")),e.target_config_json=bq(b,p.join(d,"CONFIG.json"))),i(e,{headers:k(300,function(a){let b=0,c=JSON.stringify(a);for(let a=0;a<c.length;a++)b=(b<<5)-b+c.charCodeAt(a)|0;return`W/"${Math.abs(b).toString(16)}"`}(e))})}function bq(a,b){try{return a.readTextFile(b)}catch{return}}let br=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),bs={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},bt={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};async function bu(a,b={}){try{var c;let d=a&&"object"==typeof a?a:{},e=d.platform,f=d.credentials;if(!e||(c=e,!br.has(c)))return i({ok:!1,error:"Invalid platform"},{status:400});if(!f||"object"!=typeof f)return i({ok:!1,error:"Missing credentials"},{status:400});let g=function(a,b){if(!b||"object"!=typeof b)return{valid:!1,missing:["(no config)"]};let c=bs[a],d=bt[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(e,f);if(!g.valid)return i({ok:!1,error:`Missing required fields: ${g.missing?.join(", ")||"unknown"}`},{status:400});let h=b.verifyCredentials??bv,j=await h(e,f);if(!j.ok)return i({ok:!1,error:j.error||"Credential verification failed"},{status:401});return i({ok:!0,botName:j.botName,botId:j.botId})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}}async function bv(){return{ok:!1,error:"Credential verifier is not configured"}}var bw=c(17409),bx=c(66451);function by(a,b){let c=W(a,"op")??"read_file";if("list_spaces"===c){var d;let a;return i({spaces:b.mindRoot?(d=b.mindRoot,a=(0,p.resolve)(d),(0,o.existsSync)(a)?(0,o.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>{var b;let c,e,f=a.name;return{name:a.name,path:f,fileCount:(b=(0,w.n2)(d,f),c=0,(e=a=>{for(let b of(0,o.readdirSync)(a,{withFileTypes:!0})){if(b.name.startsWith(".")||"node_modules"===b.name||b.isSymbolicLink())continue;let d=(0,p.join)(a,b.name);b.isDirectory()?e(d):c++}})(b),c),description:function(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,p.posix.join(b,"README.md")),"utf-8").split(/\r?\n/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("#"))[0]??""}catch{return""}}(d,f)}}).filter(a=>a.fileCount>0||a.description).sort((a,b)=>a.path.localeCompare(b.path)):[]):b.listSpaces()})}if("list_dirs"===c)return i({dirs:b.mindRoot?function(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[],d=a=>{for(let e of(0,o.readdirSync)(a,{withFileTypes:!0})){if(!e.isDirectory()||e.name.startsWith("."))continue;let f=(0,p.join)(a,e.name);c.push((0,p.relative)(b,f).split("\\").join("/")),d(f)}};return d(b),c.sort((a,b)=>a.localeCompare(b))}(b.mindRoot):b.listDirectories()});if("check_conflicts"===c)return function(a,b){let c=W(a,"names");if(!c)return i({error:"missing names"},{status:400});if(!b.mindRoot)return i({error:"MIND_ROOT not configured"},{status:400});try{let e=W(a,"space")??"",f=[];for(let a of c.split(",").map(a=>a.trim()).filter(Boolean)){var d;let c=function(a){let b=(0,p.extname)(a).toLowerCase();if(".md"===b||".csv"===b)return a;let c=b?a.slice(0,-b.length):a;return`${c||"untitled"}.md`}((d=a,(0,p.basename)(d).replace(/[<>:"|?*\x00-\x1f]/g,"_").trim())),g=e?p.posix.join(e,c):c;(0,o.existsSync)((0,w.n2)(b.mindRoot,g))&&f.push(a)}return i({conflicts:f})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}(a,b);let e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});try{if("read_lines"===c)return i({lines:b.readLines(e)});if("read_file"===c)return i({content:b.readTextFile(e)});return i({error:`Unknown op: ${c}`},{status:400})}catch(b){let a=b instanceof Error?b.message:String(b);if(/not found|ENOENT/i.test(a))return i({error:"File not found"},{status:404});if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}async function bz(a,b,c={}){var d,e,f,g;if(!a||"object"!=typeof a)return i({error:"Invalid JSON body"},{status:400});let h=(0,bx.aH)({hasAgentHeader:!!c.agentHeader,bodySource:a.source,headerSource:c.sourceHeader});try{let g=await (0,bx.XT)({body:a,source:h,actor:(0,bx.bt)(h,c.agentHeader),handlers:(d=b.mindRoot,{save_file:(a,b)=>(function(a,b,c){let d=bK(c.content,"content"),e=(0,w.n2)(a,b),f=bB(a,e);if("number"==typeof c.expectedMtime&&(0,o.existsSync)(e)&&(0,o.statSync)(e).mtimeMs>c.expectedMtime)return{response:i({error:"conflict",serverMtime:(0,o.statSync)(e).mtimeMs},{status:409}),changeEvent:null};let g=bH(a,b);return bE(e,d),{response:i({ok:!0,path:f,mtime:(0,o.statSync)(e).mtimeMs}),changeEvent:{op:"save_file",path:f,summary:"Updated file content",before:g,after:d}}})(d,a,b),create_file:(a,b)=>{var c,e,f;let g,h,j;return c=d,e=a,f=b,g=bA(f.content,""),h=(0,w.n2)(c,e),j=bB(c,h),(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),(0,o.writeFileSync)(h,g,{encoding:"utf-8",flag:"wx"}),{response:i({ok:!0,path:j,mtime:(0,o.statSync)(h).mtimeMs}),changeEvent:{op:"create_file",path:j,summary:"Created file",before:"",after:g}}},append_to_file:(a,b)=>(function(a,b,c){var d;let e=bK(c.content,"content");if(".agent-log.json"===b){for(let b of function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{let c=JSON.parse(a);b.push({ts:"string"==typeof c.ts?c.ts:new Date().toISOString(),tool:"string"==typeof c.tool&&c.tool.trim()?c.tool:"unknown-tool",params:c.params&&"object"==typeof c.params?c.params:{},result:"error"===c.result?"error":"ok",message:"string"==typeof c.message?c.message:void 0,durationMs:"number"==typeof c.durationMs?c.durationMs:void 0,agentName:"string"==typeof c.agentName?c.agentName:void 0})}catch{}}return b}(e))!function(a,b){let c=(0,w.n2)(a,".mindos/agent-audit-log.json"),d={version:1,events:[]};try{if((0,o.existsSync)(c)){let a=JSON.parse((0,o.readFileSync)(c,"utf-8"));Array.isArray(a.events)&&(d={version:1,events:a.events})}}catch{d={version:1,events:[]}}d.events.unshift({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,...b,op:"append"}),(0,o.mkdirSync)((0,p.dirname)(c),{recursive:!0}),(0,o.writeFileSync)(c,JSON.stringify(d,null,2),"utf-8")}(a,b);return{response:i({ok:!0,path:b}),changeEvent:null}}let f=bH(a,b),g=(0,w.n2)(a,b),h=bB(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,(d=g,((0,o.existsSync)(d)&&0!==(0,o.statSync)(d).size?(0,o.readFileSync)(d,"utf-8").endsWith("\n\n")?"":"\n":"")+e),"utf-8"),{response:i({ok:!0,path:h,mtime:(0,o.statSync)(g).mtimeMs}),changeEvent:{op:"append_to_file",path:h,summary:"Appended content to file",before:f,after:bH(a,h)}}})(d,a,b),insert_lines:(a,b)=>(function(a,b,c){let d=bL(c.after_index,"after_index"),e=bM(c.lines,"lines"),f=bH(a,b),g=bF(a,b),h=bC(a,b);if(d>=g.length)throw Error(`Invalid after_index: ${d} >= total lines (${g.length})`);return g.splice(d<0?0:d+1,0,...e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_lines",path:h,summary:`Inserted ${e.length} line(s)`,before:f,after:bH(a,h)}}})(d,a,b),update_lines:(a,b)=>(function(a,b,c){let d=bL(c.start,"start"),e=bL(c.end,"end"),f=bM(c.lines,"lines");if(d<0||e<0)throw Error("start/end must be >= 0");if(d>e)throw Error("start must be <= end");let g=bH(a,b),h=bF(a,b),j=bC(a,b);if(d>=h.length)throw Error(`Invalid line index: start (${d}) >= total lines (${h.length})`);return h.splice(d,e-d+1,...f),bG(a,j,h.join("\n")),{response:i({ok:!0,path:j}),changeEvent:{op:"update_lines",path:j,summary:`Updated lines ${d}-${e}`,before:g,after:bH(a,j)}}})(d,a,b),insert_after_heading:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=j+1;for(;k<g.length&&""===(g[k]??"").trim();)k++;return g.splice(k,0,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_after_heading",path:h,summary:`Inserted content after heading "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),update_section:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=((g[j]??"").match(/^#+/)??[""])[0].length,l=g.length-1;for(let a=j+1;a<g.length;a++){let b=/^(#+)\s/.exec(g[a]??"");if((b?.[1]?.length??1/0)<=k){l=a-1;break}}for(;l>j&&""===(g[l]??"").trim();)l--;return g.splice(j+1,l-j,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"update_section",path:h,summary:`Updated section "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),delete_file:a=>(function(a,b){if(!b.includes("/")&&"TODO.md"===(0,p.basename)(b))return{response:i({error:`"${b}" is a protected file and cannot be deleted`},{status:403}),changeEvent:null};let c=(0,w.n2)(a,b),d=bB(a,c),e=bH(a,b),f=function(a,b){let c=(0,w.n2)(a,b);if(!(0,o.existsSync)(c))throw Error(`File not found: ${b}`);let d=(0,o.statSync)(c).isDirectory(),e=`${Date.now()}_${(0,p.basename)(b).replace(/[^a-zA-Z0-9._\-\u4e00-\u9fff]/g,"_")}`,f=bJ(a,".trash"),g=bJ(a,".trash-meta");(0,o.mkdirSync)(f,{recursive:!0}),(0,o.mkdirSync)(g,{recursive:!0});let h=(0,p.join)(f,e);try{(0,o.renameSync)(c,h)}catch(a){if("EXDEV"!==(a&&"object"==typeof a&&"code"in a?a.code:void 0))throw a;d?((0,o.cpSync)(c,h,{recursive:!0}),(0,o.rmSync)(c,{recursive:!0,force:!0})):((0,o.copyFileSync)(c,h),(0,o.unlinkSync)(c))}let i=new Date,j={id:e,originalPath:b,deletedAt:i.toISOString(),expiresAt:new Date(i.getTime()+2592e6).toISOString(),fileName:(0,p.basename)(b),isDirectory:d};return(0,o.writeFileSync)((0,p.join)(g,`${e}.json`),JSON.stringify(j,null,2),"utf-8"),j}(a,d);return{response:i({ok:!0,path:d,trashId:f.id}),changeEvent:{op:"delete_file",path:d,summary:"Moved to trash",before:e,after:""}}})(d,a),rename_file:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name");bD(d,"filename");let e=(0,w.n2)(a,b),f=bB(a,e),g=p.posix.join(p.posix.dirname(f),d),h=(0,w.eX)(a,g);if((0,p.dirname)(h)!==(0,p.dirname)(e))throw Error("Invalid filename: must stay in the same directory");if((0,o.existsSync)(h))throw Error("A file with that name already exists");let j=bH(a,b);(0,o.renameSync)(e,h);let k=bB(a,h);return{response:i({ok:!0,newPath:k}),changeEvent:{op:"rename_file",path:k,summary:`Renamed file to ${d}`,before:j,after:bH(a,k),beforePath:f,afterPath:k}}})(d,a,b),move_file:(a,b)=>(function(a,b,c){let d=bK(c.to_path??c.toPath??c.newPath,"to_path"),e=bH(a,b),f=(0,w.n2)(a,b),g=(0,w.n2)(a,d),h=bB(a,f),j=bB(a,g);if((0,o.existsSync)(g))throw Error(`Destination already exists: ${d}`);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.renameSync)(f,g),{response:i({ok:!0,path:j,newPath:j,affectedFiles:[]}),changeEvent:{op:"move_file",path:j,summary:`Moved file to ${j}`,before:e,after:bH(a,j),beforePath:h,afterPath:j}}})(d,a,b),create_space:(a,b)=>(function(a,b){let c=bK(b.name,"name").trim();bD(c,"name");let d="string"==typeof b.parent_path&&b.parent_path.trim()?b.parent_path.trim():"",e=d?p.posix.join(d,c):c,f=(0,w.n2)(a,e);if((0,o.existsSync)(f))throw Error("Space already exists");(0,o.mkdirSync)(f,{recursive:!0});let g=bB(a,f),h=bA(b.description,"");return(0,o.writeFileSync)((0,p.join)(f,"INSTRUCTION.md"),`# ${c}
|
|
2
2
|
|
|
3
3
|
${h}
|
|
4
4
|
`,"utf-8"),(0,o.writeFileSync)((0,p.join)(f,"README.md"),`# ${c}
|
|
5
5
|
|
|
6
6
|
${h}
|
|
7
|
-
`,"utf-8"),{response:i({ok:!0,path:g}),changeEvent:{op:"create_space",path:g,summary:"Created space",before:"",after:h}}})(d,b),rename_space:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name").trim();bD(d,"space name");let e=(0,w.n2)(a,b);if(!(0,o.statSync)(e).isDirectory())throw Error(`Not a directory: ${b}`);let f=(
|
|
7
|
+
`,"utf-8"),{response:i({ok:!0,path:g}),changeEvent:{op:"create_space",path:g,summary:"Created space",before:"",after:h}}})(d,b),rename_space:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name").trim();bD(d,"space name");let e=(0,w.n2)(a,b);if(!(0,o.statSync)(e).isDirectory())throw Error(`Not a directory: ${b}`);let f=bB(a,e),g=p.posix.join(p.posix.dirname(f),d),h=(0,w.eX)(a,g);if((0,p.dirname)(h)!==(0,p.dirname)(e))throw Error("Invalid space name: must stay in the same directory");if((0,o.existsSync)(h))throw Error("A space with that name already exists");(0,o.renameSync)(e,h);let j=bB(a,h);return{response:i({ok:!0,newPath:j}),changeEvent:{op:"rename_space",path:j,summary:`Renamed space to ${d}`,beforePath:f,afterPath:j}}})(d,a,b),append_csv:(a,b)=>(function(a,b,c){let d=bM(c.row,"row");if(0===d.length)throw Error("row must be non-empty array");if(!b.endsWith(".csv"))throw Error("Only .csv files support row append");let e=bH(a,b),f=d.map(a=>a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a),g=(0,w.n2)(a,b),h=bB(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,`${f.join(",")}
|
|
8
8
|
`,"utf-8"),{response:i({ok:!0,path:h,newRowCount:(0,o.readFileSync)(g,"utf-8").trim().split("\n").filter(Boolean).length}),changeEvent:{op:"append_csv",path:h,summary:`Appended CSV row (${d.length} cell${1===d.length?"":"s"})`,before:e,after:bH(a,h)}}})(d,a,b)}),permissionRules:c.permissionRules??(0,bw.e)(process.env.MINDOS_PERMISSION_RULES),protectedRootFiles:c.protectedRootFiles,responses:{badRequest:a=>i({error:a},{status:400}),denied:a=>i({error:a},{status:403}),permissionRequired:({op:a,path:b,reason:c,requestId:d})=>i({error:"permission_required",requestId:d,message:`${c} (${a} ${b})`},{status:403})}});return e=g.response,f=g,Object.assign(e,{changeEvent:f.changeEvent,source:f.source,treeChanged:f.treeChanged})}catch(b){let a;return a=(g=b)instanceof Error?g.message:String(g),/missing |must be|Invalid |Heading not found|row must|Only \.csv|start|after_index|line index|not a directory/i.test(a)?i({error:a},{status:400}):/EEXIST|already exists/i.test(a)?i({error:"File already exists"},{status:409}):/ENOENT|not found/i.test(a)?i({error:"File not found"},{status:404}):/access denied|outside root|absolute paths/i.test(a)?i({error:"Access denied"},{status:403}):i({error:a},{status:500})}}function bA(a,b){return"string"==typeof a?a:b}function bB(a,b){return(0,p.relative)((0,p.resolve)(a),b).split("\\").join("/")}function bC(a,b){return bB(a,(0,w.n2)(a,b))}function bD(a,b){if(!a)throw Error(`missing or empty ${b}`);if("."===a||".."===a)throw Error(`Invalid ${b}: must not be "." or ".."`);if(a.includes("/")||a.includes("\\"))throw Error(`Invalid ${b}: must not contain path separators`)}function bE(a,b){let c=(0,p.dirname)(a),d=`${a}.tmp-${process.pid}-${Date.now()}`;(0,o.mkdirSync)(c,{recursive:!0});try{(0,o.writeFileSync)(d,b,"utf-8"),(0,o.renameSync)(d,a)}catch(a){try{(0,o.unlinkSync)(d)}catch{}throw a}}function bF(a,b){return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8").split("\n")}function bG(a,b,c){bE((0,w.n2)(a,b),c)}function bH(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8")}catch{return""}}function bI(a,b){return a.findIndex(a=>{let c=a.trim();return c===b||c.replace(/^#+\s*/,"")===b.replace(/^#+\s*/,"")})}function bJ(a,b){if(!b||b.includes("/")||b.includes("\\")||(0,p.basename)(b)!==b)throw Error("Invalid sibling directory name");let c=(0,p.resolve)((0,p.dirname)(a)),d=(0,p.resolve)(c,b),e=(0,p.relative)(c,d);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent");if((0,o.existsSync)(d)){if((0,o.lstatSync)(d).isSymbolicLink())throw Error("Access denied: sibling directory must not be a symlink");let a=(0,o.realpathSync)(c),b=(0,o.realpathSync)(d),e=(0,p.relative)(a,b);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent")}return d}function bK(a,b){if("string"!=typeof a)throw Error(`missing ${b}`);return a}function bL(a,b){if("number"!=typeof a)throw Error(`missing ${b}`);return a}function bM(a,b){if(!Array.isArray(a)||!a.every(a=>"string"==typeof a))throw Error(`${b} must be array`);return a}async function bN(a,b){let c=W(a,"op")??"summary",d=new v;if("summary"===c){let a=await M(d,b.mindRoot);return a.ok?i(a.value):i({error:a.error.message},{status:500})}if("list"===c){let c=W(a,"limit"),e=c?Number(c):50;if(!Number.isFinite(e)||e<=0)return i({error:"invalid limit"},{status:400});let f=W(a,"source"),g=await K(d,b.mindRoot,{path:W(a,"path"),source:"user"===f||"agent"===f||"system"===f?f:void 0,op:W(a,"event_op"),q:W(a,"q"),limit:e});return g.ok?i({events:g.value}):i({error:g.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}async function bO(a,b){if(!a||"object"!=typeof a)return i({error:"invalid JSON"},{status:400});let c=a.op;if("string"!=typeof c)return i({error:"missing op"},{status:400});if("mark_seen"===c){let a=await L(new v,b.mindRoot);return a.ok?i({ok:!0}):i({error:a.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}function bP(a={}){let b=a.port??process.env.MINDOS_WEB_PORT??"3456",c=Number(b),d=function(a=Y.networkInterfaces){let b=[];for(let[c,d]of Object.entries(a()))for(let a of d||[]){if("IPv4"!==a.family||a.internal)continue;let d=c.toLowerCase(),e=0;d.startsWith("en")||d.startsWith("eth")||d.startsWith("wlan")?e=10:d.startsWith("wl")||d.startsWith("wi")?e=8:(d.includes("docker")||d.includes("veth")||d.includes("br-"))&&(e=-10),b.push({address:a.address,priority:e})}return b.sort((a,b)=>b.priority-a.priority),b[0]?.address||"127.0.0.1"}(a.networkInterfaces??Y.networkInterfaces);return i({url:`http://${d}:${b}`,ip:d,port:c,hostname:(a.hostname??Y.hostname)()})}let bQ="Xenova/bge-small-zh-v1.5",bR=[{id:"Xenova/bge-small-zh-v1.5",label:"BGE Small ZH (33MB)",size:"~33MB",lang:"zh+en"},{id:"Xenova/all-MiniLM-L6-v2",label:"MiniLM L6 (23MB)",size:"~23MB",lang:"en"},{id:"Xenova/bge-small-en-v1.5",label:"BGE Small EN (33MB)",size:"~33MB",lang:"en"}],bS=!1,bT=null;async function bU(a={}){let b=await bW(void 0,a),c=a.getEmbeddingStatus?.()??{};return i({downloaded:b,defaultModel:a.defaultLocalModel??bQ,models:a.localModelOptions??bR,...c})}async function bV(a,b={}){let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"",e="string"==typeof c.model&&c.model?c.model:void 0;if("download"===d){if(bS)return i({ok:!1,error:"Download already in progress"});let a=e??b.defaultLocalModel??bQ;return bS=!0,bT=null,(b.downloadLocalModel??bY)(a).then(a=>{bS=!1,a||(bT="Download failed. Check your network connection and try again.")}).catch(a=>{var b;let c,d;bS=!1,bT=(d=(c=(b=a)instanceof Error?b.message:String(b)).toLowerCase()).includes("timeout")||d.includes("took too long")?"Download timeout. Your connection may be too slow. Try again or use API mode.":d.includes("enotfound")||d.includes("econnrefused")||d.includes("econnreset")||d.includes("net::err_internet_disconnected")?"Network connection failed. Check your internet and try again.":d.includes("permission denied")||d.includes("eacces")?"Permission denied. Check cache directory permissions (~/.cache/huggingface/).":d.includes("npm is required")?"npm is required to install the optional local embedding runtime. Install Node.js/npm, or use API mode.":d.includes("local embedding runtime")?"Local embedding runtime is not installed. Click Download Model to install it, or use API embedding mode.":d.includes("disk quota")||d.includes("no space")?"Not enough disk space. Free up space and try again.":`Download failed: ${c.slice(0,200)}`}),i({ok:!0,message:`Downloading ${a}...`})}if("status"===d){let a=await bW(e,b);return i({downloading:bS,downloaded:a,error:bT})}return i({ok:!1,error:"Unknown action"},{status:400})}async function bW(a,b){let c=b.isLocalModelDownloaded??bX;return await c(a)}async function bX(){return!1}async function bY(){return!1}function bZ(a,b){if(void 0===a)return b;let c=Number.parseInt(a,10);return Number.isFinite(c)&&c>=0?c:b}function b$(a,b){var c;let d=b.collectAllFiles(),e=W(a,"limit"),f=bZ(W(a,"offset"),0),g=bZ(e,0),h=k(60,(c=d.join("\n"),`"${(0,t.createHash)("sha1").update(c).digest("hex")}"`));return void 0!==e&&g>0?i({files:d.slice(f,f+g),total:d.length,offset:f,limit:g},{headers:h}):i(d,{headers:h})}function b_(a){let b=function(a){let b=b2(a),c=b.map(a=>({id:a,label:p.posix.basename(a,".md"),folder:p.posix.dirname(a)})),d=new Set,e=[];for(let c of b1(a,b)){if(c.source===c.target)continue;let a=`${c.source}\0${c.target}`;d.has(a)||(d.add(a),e.push({source:c.source,target:c.target}))}return e.sort((a,b)=>a.source.localeCompare(b.source)||a.target.localeCompare(b.target)),{nodes:c,edges:e}}(a);return i(b,{headers:k(300,b5(b))})}function b0(a,b){let c=b4(W(a,"path"));if(!c)return i({error:"path required"},{status:400});let d=new Map;for(let a of b1(b)){if(a.target!==c)continue;let b=d.get(a.source)??[];b.push(a.snippet),d.set(a.source,b)}let e=[...d.entries()].map(([a,b])=>({filePath:a,snippets:[...new Set(b)]})).sort((a,b)=>a.filePath.localeCompare(b.filePath));return i(e,{headers:k(300,b5(e))})}function b1(a,b=b2(a)){let c=new Set(b),d=function(a){let b=new Map;for(let c of a){let a=p.posix.basename(c).toLowerCase(),d=b.get(a)??[];d.push(c),b.set(a,d)}return b}(b),e=[];for(let f of b){let b="";try{b=function(a,b){if(a.readTextFile)return a.readTextFile(b);if(a.mindRoot){var c;return c=a.mindRoot,(0,o.readFileSync)((0,w.n2)(c,b),"utf-8")}throw Error("readTextFile service required")}(a,f)}catch{continue}e.push(...function(a,b,c,d){let e=[],f=p.posix.dirname(b);for(let g of a.split(/\r?\n/)){let a,h=g.trim();if(!h)continue;let i=/\[\[([^\]|#]+)(?:#[^\]|]+)?(?:\|[^\]]+)?\]\]/g;for(;null!==(a=i.exec(g));){let g=b3(a[1],f,c,d,!1);g&&e.push({source:b,target:g,snippet:h})}let j=/\[[^\]]+\]\(([^)#]+)(?:#[^)]+)?\)/g;for(;null!==(a=j.exec(g));){let g=b3(a[1],f,c,d,!0);g&&e.push({source:b,target:g,snippet:h})}}return e}(b,f,c,d))}return e}function b2(a){return(a.collectAllFiles?a.collectAllFiles():a.mindRoot?ai(a.mindRoot):[]).filter(a=>".md"===(0,p.extname)(a).toLowerCase()).map(b4).filter(a=>!!a).sort((a,b)=>a.localeCompare(b))}function b3(a,b,c,d,e){let f=b4(a);if(!f||/^(https?:|mailto:|tel:)/i.test(f))return;let g=new Set;for(let a of(g.add(f),g.add(f.endsWith(".md")?f:`${f}.md`),e&&(g.add(p.posix.normalize(p.posix.join(b,f))),g.add(p.posix.normalize(p.posix.join(b,f.endsWith(".md")?f:`${f}.md`)))),g))if(c.has(a))return a;let h=p.posix.basename(f.endsWith(".md")?f:`${f}.md`).toLowerCase(),i=d.get(h);if(i?.length===1)return i[0]}function b4(a){if(!a)return;let b=a.trim();if(b){try{b=decodeURIComponent(b)}catch{}if(b=(b=b.split("#")[0]?.trim()??"").replace(/\\/g,"/").replace(/^\/+/,""),!(!(b=p.posix.normalize(b))||"."===b||b.startsWith("../"))&&".."!==b)return b}}function b5(a){return`"${(0,t.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}"`}var b6=c(79646);let b7=(0,c(28354).promisify)(b6.execFile);function b8(a){return{ok:!0,value:a}}function b9(a){return{ok:!1,error:a}}async function ca(a){try{return await b7("git",["rev-parse","--is-inside-work-tree"],{cwd:a,encoding:"utf-8"}),b8(!0)}catch{return b8(!1)}}async function cb(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b9(d.error);try{let{stdout:b}=await b7("git",["log","--follow","--format=%H%x00%aI%x00%s%x00%an","-n",String(c),"--",d.value],{cwd:a,encoding:"utf-8"}),e=b.trim();if(!e)return b8([]);let f=e.split("\n").map(a=>{let[b,c,d,e]=a.split("\0");return{hash:b||"",date:c||"",message:d||"",author:e||""}});return b8(f)}catch(a){return b9((0,u.$5)("INTERNAL_ERROR","Failed to get git log",{context:{filePath:b,error:a instanceof Error?a.message:String(a)}}))}}async function cc(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b9(d.error);try{let e="";try{let{stdout:b}=await b7("git",["ls-files","--full-name",d.value],{cwd:a,encoding:"utf-8"});e=b.trim()}catch{}let f=e||b,{stdout:g}=await b7("git",["show",`${c}:${f}`],{cwd:a,encoding:"utf-8"});return b8(g)}catch(a){return b9((0,u.$5)("INTERNAL_ERROR","Failed to show git file",{context:{filePath:b,commitHash:c,error:a instanceof Error?a.message:String(a)}}))}}async function cd(a,b){let c=W(a,"op")??"is_repo";if("is_repo"===c)return i({isRepo:await ce(b)});if("history"===c){var d;let c,e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});let f=Number.isFinite(c=(d=W(a,"limit"))?Number.parseInt(d,10):10)?Math.max(1,Math.min(c,100)):10,g=await cf(b,e,f);return Array.isArray(g)?i({entries:g}):g}if("show"===c){let c=W(a,"path"),d=W(a,"commit");if(!c)return i({error:"missing path"},{status:400});if(!d)return i({error:"missing commit"},{status:400});let e=await cg(b,c,d);return"string"==typeof e?i({content:e}):e}return i({error:`unknown op: ${c}`},{status:400})}async function ce(a){if(a.isGitRepo)return a.isGitRepo();if(!a.mindRoot)return!1;let b=await ca(a.mindRoot);return!!b.ok&&b.value}async function cf(a,b,c){if(a.gitLog)return a.gitLog(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await cb(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}async function cg(a,b,c){if(a.gitShowFile)return a.gitShowFile(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await cc(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}function ch(a={}){let b=a.env??process.env;if(b.npm_package_version)return b.npm_package_version;for(let b of[a.projectRoot?(0,p.join)(a.projectRoot,"packages","mindos","package.json"):void 0,a.projectRoot?(0,p.join)(a.projectRoot,"package.json"):void 0,(0,p.join)(a.cwd??process.cwd(),"package.json")].filter(a=>"string"==typeof a)){let a=function(a){try{if(!(0,o.existsSync)(a))return;let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if("@geminilight/mindos"===b.name&&b.version)return b.version}catch{}}(b);if(a)return a}return"0.0.0"}function ci(a={}){return i(function(a={}){let b=a.env??process.env;return{ok:!0,service:"mindos",version:a.version??ch(a),authRequired:a.authRequired??!!b.WEB_PASSWORD,runtime:{platform:process.platform,arch:process.arch,node:process.version,root:a.runtimeRoot}}}({projectRoot:a.projectRoot,runtimeRoot:a.runtimeRoot??a.projectRoot,env:a.env}),{headers:h})}function cj(){return j(h)}let ck=new Set(["en","zh","empty"]);function cl(a,b){try{var c,d;let e=a&&"object"==typeof a&&"string"==typeof a.template?a.template:void 0;if(!e||!ck.has(e))return i({error:`Invalid template: ${String(e)}`},{status:400});let f=(c=e,d=b,cm(d).map(a=>(0,p.join)(a,c)).find(a=>(0,o.existsSync)(a)));if(!f)return i({error:`Template "${e}" not found at ${cm(b).join(", ")}`},{status:404});return(0,o.existsSync)(b.mindRoot)||(0,o.mkdirSync)(b.mindRoot,{recursive:!0}),function a(b,c){if((0,o.statSync)(b).isDirectory()){for(let d of((0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0}),(0,o.readdirSync)(b)))a((0,p.join)(b,d),(0,p.join)(c,d));return}if((0,o.existsSync)(c))return;let d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0}),(0,o.copyFileSync)(b,c)}(f,b.mindRoot),i({ok:!0,template:e})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function cm(a){if(a.templateRoots&&a.templateRoots.length>0)return[...new Set(a.templateRoots)];let b=a.env??process.env;return[...new Set([a.projectRoot?(0,p.join)(a.projectRoot,"templates"):void 0,b.MINDOS_PROJECT_ROOT?(0,p.join)(b.MINDOS_PROJECT_ROOT,"templates"):void 0,a.runtimeRoot?(0,p.join)(a.runtimeRoot,"templates"):void 0,(0,p.join)(function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(a.cwd??process.cwd())??"","templates"),(0,p.resolve)(a.cwd??process.cwd(),"..","templates"),(0,p.resolve)(a.cwd??process.cwd(),"templates")].filter(a=>!!a))]}let cn=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),co=(0,p.join)((0,Y.homedir)(),".mindos","im-activity.json");function cp(a,b={}){var c;let d=a.get("platform"),e=a.get("limit");if(!d||(c=d,!cn.has(c)))return i({error:"Invalid or missing platform parameter"},{status:400});let f=e?Math.min(Math.max(Number.parseInt(e,10)||10,1),100):10;return i({activities:b.getActivities?b.getActivities(d,f):function(a,b,c){try{if(!(0,o.existsSync)(c))return[];let d=JSON.parse((0,o.readFileSync)(c,"utf-8"));if(1!==d.version||!d.activities||"object"!=typeof d.activities)return[];let e=d.activities[a];return Array.isArray(e)?e.slice(0,b):[]}catch{return[]}}(d,f,b.activityPath??co)})}let cq=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cr={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},cs={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};function ct(a={}){try{let b=cw(a),c={};for(let[a,d]of Object.entries(b.providers??{})){if(!d||"object"!=typeof d)continue;let b={};for(let[a,c]of Object.entries(d))"string"==typeof c&&c.length>4?b[a]=`${c.slice(0,4)}••••${c.slice(-2)}`:b[a]="string"==typeof c?"••••":"";c[a]=b}return i({providers:c})}catch{return i({error:"Failed to read config"},{status:500})}}function cu(a,b={}){try{let{platform:c,credentials:d,conversation:e}=a&&"object"==typeof a?a:{};if(!c||(!d||"object"!=typeof d)&&(!e||"object"!=typeof e))return i({error:"Missing platform credentials or conversation settings"},{status:400});let f=cw(b);f.providers??={};let g=f.providers[c]??{};if(d&&"object"==typeof d){let a={...g,...d},b=function(a,b){let c=cr[a];if(!c)return{valid:!1,missing:["(unknown platform)"]};let d=cs[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(c,a);if(!b.valid)return i({error:`Invalid config: missing ${b.missing?.join(", ")}`,missing:b.missing},{status:422});f.providers[c]=a}if("feishu"===c&&e&&"object"==typeof e){if(!g.app_id||!g.app_secret)return i({error:"Save Feishu App ID and App Secret before enabling conversations"},{status:422});let a=f.providers[c]??g;a.conversation={...a.conversation??{},enabled:!!e.enabled,transport:e.transport??a.conversation?.transport??"webhook",encrypt_key:e.encrypt_key??a.conversation?.encrypt_key,verification_token:e.verification_token??a.conversation?.verification_token,public_base_url:e.public_base_url??a.conversation?.public_base_url,allow_group_mentions:e.allow_group_mentions??a.conversation?.allow_group_mentions??!0},f.providers[c]=a}return cx(f,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to save"},{status:500})}}function cv(a,b={}){try{let c=a.get("platform");if(!c)return i({error:"Missing platform parameter"},{status:400});let d=cw(b);return d.providers??={},delete d.providers[c],cx(d,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to delete"},{status:500})}}function cw(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cq;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cx(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cq,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
|
|
9
9
|
`,"utf-8"),(0,o.renameSync)(e,c)}let cy=(0,p.join)((0,Y.homedir)(),".mindos","im.json");function cz(a={}){return i({ok:!0,...cC(a)})}async function cA(a={}){try{let b=cE(a),c=b.providers?.feishu;if(!c||"object"!=typeof c)return i({ok:!1,error:"Feishu is not configured. Save App ID and App Secret first."},{status:422});c.conversation={...c.conversation??{},enabled:!0,transport:"long_connection"},b.providers.feishu=c,cF(b,a);let d=a.startFeishuWSClient??cD;return await d(c),i({ok:!0,...cC(a)})}catch(b){return i({ok:!1,error:b instanceof Error?b.message:"Failed to start",...cC(a)},{status:500})}}function cB(a={}){(a.stopFeishuWSClient??function(){})();try{let b=cE(a),c=b.providers?.feishu;c&&"object"==typeof c&&c.conversation&&"object"==typeof c.conversation&&(c.conversation.transport="webhook",b.providers.feishu=c,cF(b,a))}catch{}return i({ok:!0,...cC(a)})}function cC(a){return(a.getFeishuWSClientStatus??function(){return{running:!1}})()}async function cD(){throw Error("Feishu long connection starter is not configured")}function cE(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cy;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cF(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cy,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
|
|
10
|
-
`,"utf-8"),(0,o.renameSync)(e,c)}let cG=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cH={telegram:["text","markdown"],discord:["text","markdown"],feishu:["text","markdown"],slack:["text","markdown"],wecom:["text","markdown"],dingtalk:["text","markdown"],wechat:["text"],qq:["text"]},cI={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]};async function cJ(a={}){try{if(!(a.hasAnyIMConfig?a.hasAnyIMConfig():Object.keys(cM(a).providers).length>0))return i({platforms:[]});let b=a.listConfiguredIM??(()=>{var b;let c;return b=a,c=cM(b),Object.keys(c.providers).filter(a=>(function(a,b){if(!(a in cI))return!1;let c=b.providers[a];return!!c&&"object"==typeof c&&cI[a].some(a=>a.every(a=>"string"==typeof c[a]&&!!c[a]?.trim()))})(a,c)).map(a=>({platform:a,connected:!1,capabilities:cH[a]??["text"]}))}),c=await b(),d=a.getPlatformConfig??(b=>cM(a).providers[b]),e=a.buildFeishuWebhookStatus??cL,f=d("feishu"),g=e(f),h=c.map(a=>"feishu"===a.platform?{...a,webhook:g}:a);return i({platforms:h})}catch{return i({platforms:[],error:"Failed to fetch IM status"},{status:500})}}function cK(a,b={}){if("feishu"!==a.get("platform"))return i({error:"Invalid or unsupported platform parameter"},{status:400});let c=b.getPlatformConfig??(a=>cM(b).providers[a]);return i({status:(b.buildFeishuWebhookStatus??cL)(c("feishu"))})}function cL(a){let b=a&&"object"==typeof a?a:void 0,c=b?.conversation&&"object"==typeof b.conversation?b.conversation:void 0,d=c?.transport==="long_connection"?"long_connection":"webhook",e="string"==typeof c?.public_base_url&&c.public_base_url.trim()?c.public_base_url.trim().replace(/\/+$/,""):void 0,f=e?`${e}/api/im/webhook/feishu`:void 0;return c?.enabled?"long_connection"===d?b?.app_id&&b?.app_secret?{platform:"feishu",state:"pending",transport:d,lastError:"Start the Feishu long connection client to receive events locally."}:{platform:"feishu",state:"error",transport:d,lastError:"Feishu App ID and App Secret are required for long connection mode."}:c.encrypt_key?e?{platform:"feishu",state:"ready",transport:d,publicBaseUrl:e,webhookUrl:f}:{platform:"feishu",state:"pending",transport:d,lastError:"Public base URL is required for Feishu event callbacks."}:{platform:"feishu",state:"error",transport:d,publicBaseUrl:e,webhookUrl:f,lastError:"Encrypt Key is required to enable Feishu conversations."}:{platform:"feishu",state:"disabled",transport:d,publicBaseUrl:e,webhookUrl:f}}function cM(a){let b=a.configPath??cG;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}let cN=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]);async function cO(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.platform?c.platform.trim():"",e="string"==typeof c.recipient_id?c.recipient_id.trim():"",f="string"==typeof c.message?c.message:"";if(!d||!e||!f)return i({ok:!1,error:"Missing required fields: platform, recipient_id, message"},{status:400});if(!cN.has(d))return i({ok:!1,error:"Invalid platform"},{status:400});let g=b.sendIMMessage??cP,h=await g({platform:d,recipientId:e,text:f,format:"text"},void 0,{activityType:"test"});if(h.ok)return i({ok:!0,messageId:h.messageId,timestamp:h.timestamp});return i({ok:!1,error:h.error??"Failed to send test message"},{status:422})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Internal error"},{status:500})}}async function cP(){return{ok:!1,error:"IM sender is not configured",timestamp:new Date().toISOString()}}let cQ="Inbox",cR=".processed",cS=new Set([".txt",".md",".markdown",".csv",".json",".yaml",".yml",".xml",".html",".htm",".pdf",".doc",".docx",".docm"]),cT=`# Inbox Instruction Set
|
|
10
|
+
`,"utf-8"),(0,o.renameSync)(e,c)}let cG=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cH={telegram:["text","markdown"],discord:["text","markdown"],feishu:["text","markdown"],slack:["text","markdown"],wecom:["text","markdown"],dingtalk:["text","markdown"],wechat:["text"],qq:["text"]},cI={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]};async function cJ(a={}){try{if(!(a.hasAnyIMConfig?a.hasAnyIMConfig():Object.keys(cM(a).providers).length>0))return i({platforms:[]});let b=a.listConfiguredIM??(()=>{var b;let c;return b=a,c=cM(b),Object.keys(c.providers).filter(a=>(function(a,b){if(!(a in cI))return!1;let c=b.providers[a];return!!c&&"object"==typeof c&&cI[a].some(a=>a.every(a=>"string"==typeof c[a]&&!!c[a]?.trim()))})(a,c)).map(a=>({platform:a,connected:!1,capabilities:cH[a]??["text"]}))}),c=await b(),d=a.getPlatformConfig??(b=>cM(a).providers[b]),e=a.buildFeishuWebhookStatus??cL,f=d("feishu"),g=e(f),h=c.map(a=>"feishu"===a.platform?{...a,webhook:g}:a);return i({platforms:h})}catch{return i({platforms:[],error:"Failed to fetch IM status"},{status:500})}}function cK(a,b={}){if("feishu"!==a.get("platform"))return i({error:"Invalid or unsupported platform parameter"},{status:400});let c=b.getPlatformConfig??(a=>cM(b).providers[a]);return i({status:(b.buildFeishuWebhookStatus??cL)(c("feishu"))})}function cL(a){let b=a&&"object"==typeof a?a:void 0,c=b?.conversation&&"object"==typeof b.conversation?b.conversation:void 0,d=c?.transport==="long_connection"?"long_connection":"webhook",e="string"==typeof c?.public_base_url&&c.public_base_url.trim()?c.public_base_url.trim().replace(/\/+$/,""):void 0,f=e?`${e}/api/im/webhook/feishu`:void 0;return c?.enabled?"long_connection"===d?b?.app_id&&b?.app_secret?{platform:"feishu",state:"pending",transport:d,lastError:"Start the Feishu long connection client to receive events locally."}:{platform:"feishu",state:"error",transport:d,lastError:"Feishu App ID and App Secret are required for long connection mode."}:c.encrypt_key?e?{platform:"feishu",state:"ready",transport:d,publicBaseUrl:e,webhookUrl:f}:{platform:"feishu",state:"pending",transport:d,lastError:"Public base URL is required for Feishu event callbacks."}:{platform:"feishu",state:"error",transport:d,publicBaseUrl:e,webhookUrl:f,lastError:"Encrypt Key is required to enable Feishu conversations."}:{platform:"feishu",state:"disabled",transport:d,publicBaseUrl:e,webhookUrl:f}}function cM(a){let b=a.configPath??cG;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}let cN=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]);async function cO(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.platform?c.platform.trim():"",e="string"==typeof c.recipient_id?c.recipient_id.trim():"",f="string"==typeof c.message?c.message:"";if(!d||!e||!f)return i({ok:!1,error:"Missing required fields: platform, recipient_id, message"},{status:400});if(!cN.has(d))return i({ok:!1,error:"Invalid platform"},{status:400});let g=b.sendIMMessage??cP,h=await g({platform:d,recipientId:e,text:f,format:"text"},void 0,{activityType:"test"});if(h.ok)return i({ok:!0,messageId:h.messageId,timestamp:h.timestamp});return i({ok:!1,error:h.error??"Failed to send test message"},{status:422})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Internal error"},{status:500})}}async function cP(){return{ok:!1,error:"IM sender is not configured",timestamp:new Date().toISOString()}}let cQ="Inbox",cR=".processed",cS=new Set([".txt",".md",".markdown",".csv",".tsv",".json",".yaml",".yml",".xml",".html",".htm",".pdf",".doc",".docx",".docm",".xls",".xlsx",".ppt",".pptx",".png",".jpg",".jpeg",".webp",".gif"]),cT=new Set([".pdf",".doc",".docx",".docm",".xls",".xlsx",".ppt",".pptx",".png",".jpg",".jpeg",".webp",".gif"]),cU=`# Inbox Instruction Set
|
|
11
11
|
|
|
12
12
|
## Goal
|
|
13
13
|
This is the **Inbox** - a staging area for unprocessed files.
|
|
@@ -23,44 +23,44 @@ Files here are waiting to be organized into the right location in the knowledge
|
|
|
23
23
|
## Boundary
|
|
24
24
|
- Root INSTRUCTION.md rules take precedence.
|
|
25
25
|
- This INSTRUCTION.md only applies to the Inbox directory.
|
|
26
|
-
`,
|
|
26
|
+
`,cV=`# Inbox
|
|
27
27
|
|
|
28
28
|
Quick capture staging area. Drop files here and organize them later with AI.
|
|
29
29
|
|
|
30
30
|
## Usage
|
|
31
31
|
- Drag files onto the MindOS window to save them here instantly.
|
|
32
32
|
- Click "AI Organize" on the homepage to sort everything into the right place.
|
|
33
|
-
`;function
|
|
33
|
+
`;function cW(a){if(!a.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});try{return cZ(a.mindRoot),i({files:function(a){let b=(0,w.n2)(a,cQ);if(!(0,o.existsSync)(b))return[];let c=Date.now(),d=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile())continue;let e=a.name.toLowerCase();if("instruction.md"===e||"readme.md"===e||a.name.startsWith("."))continue;let f=(0,p.join)(b,a.name);try{let b=(0,o.statSync)(f);d.push({name:a.name,path:`${cQ}/${a.name}`,size:b.size,modifiedAt:b.mtime.toISOString(),isAging:c-b.mtime.getTime()>6048e5})}catch{}}return d.sort((a,b)=>new Date(b.modifiedAt).getTime()-new Date(a.modifiedAt).getTime())}(a.mindRoot)})}catch(a){return c$(a)}}function cX(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});if(!a||"object"!=typeof a||!Array.isArray(a.files))return i({error:"Request body must contain a files array"},{status:400});let{files:c,source:d}=a;try{return i(function(a,b,c){let d=cZ(a),e=[],f=[];for(let c of b){if(!c.name||"string"!=typeof c.name){f.push({name:c.name||"(empty)",reason:"Invalid file name"});continue}if(null==c.content||"string"!=typeof c.content){f.push({name:c.name,reason:"Missing or invalid content"});continue}let b=(0,p.extname)(c.name).toLowerCase();if(!cS.has(b)){f.push({name:c.name,reason:`Unsupported format: ${b}`});continue}try{var g,h;let i=c1(c.name);if(cT.has(b)){if("base64"!==c.encoding){f.push({name:c.name,reason:`Binary format requires base64 encoding: ${b}`});continue}let g=c_(c.content),h=c0(d,i),j=`${cQ}/${h}`;(0,w.eX)(a,j),(0,o.writeFileSync)((0,p.join)(d,h),g),e.push({original:c.name,path:j});continue}let j=(g=c.encoding,h=c.content,"base64"===g?c_(h).toString("utf-8"):h),k=function(a,b){let c,d,e=(0,p.extname)(a).toLowerCase(),f=(0,p.basename)(a,e)||"note",g=(d=((c=(0,p.extname)(a))?a.slice(0,-c.length):a).replace(/^\.+/,"").replace(/[-_]+/g," ").trim().split(/\s+/),0!==d.length&&(1!==d.length||d[0])?d.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" "):"Untitled");return".md"===e||".markdown"===e||".csv"===e||".tsv"===e||".json"===e?{content:b,targetName:c1(a)}:".txt"===e?{content:`# ${g}
|
|
34
34
|
|
|
35
|
-
${b}`,targetName:
|
|
35
|
+
${b}`,targetName:c1(`${f}.md`)}:".yaml"===e||".yml"===e?{content:`# ${g}
|
|
36
36
|
|
|
37
37
|
\`\`\`yaml
|
|
38
38
|
${b}
|
|
39
39
|
\`\`\`
|
|
40
|
-
`,targetName:
|
|
40
|
+
`,targetName:c1(`${f}.md`)}:".html"===e||".htm"===e?{content:`# ${g}
|
|
41
41
|
|
|
42
42
|
${b.replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<style[\s\S]*?<\/style>/gi,"").replace(/<[^>]+>/g,"").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/\n{3,}/g,"\n\n").trim()}
|
|
43
|
-
`,targetName:
|
|
43
|
+
`,targetName:c1(`${f}.md`)}:".xml"===e?{content:`# ${g}
|
|
44
44
|
|
|
45
45
|
\`\`\`xml
|
|
46
46
|
${b}
|
|
47
47
|
\`\`\`
|
|
48
|
-
`,targetName:
|
|
48
|
+
`,targetName:c1(`${f}.md`)}:{content:`# ${g}
|
|
49
49
|
|
|
50
|
-
${b}`,targetName:
|
|
50
|
+
${b}`,targetName:c1(`${f}.md`)}}(i,j),l=c0(d,k.targetName),m=`${cQ}/${l}`;(0,w.eX)(a,m),(0,o.writeFileSync)((0,p.join)(d,l),k.content,"utf-8"),e.push({original:c.name,path:m})}catch(a){f.push({name:c.name,reason:a instanceof Error?a.message:String(a)})}}return{saved:e,skipped:f,source:c}}(b.mindRoot,c,d))}catch(a){return c$(a)}}function cY(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});let{names:c}=a??{};if(!Array.isArray(c)||0===c.length)return i({error:"Request body must contain a non-empty names array"},{status:400});try{return i(function(a,b){let c=(0,w.n2)(a,cQ),d=(0,w.n2)(a,`${cQ}/${cR}`);(0,o.mkdirSync)(d,{recursive:!0});let e=[],f=[],g=new Date().toISOString().replace(/[-:]/g,"").replace("T","-").slice(0,15);for(let d of b){if(!d)continue;let b=d.toLowerCase();if("instruction.md"===b||"readme.md"===b)continue;let h=(0,p.basename)(d),i=(0,p.join)(c,h);try{if((0,w.eX)(a,`${cQ}/${h}`),!(0,o.existsSync)(i)){f.push(d);continue}let b=`${g}_${h}`,c=`${cQ}/${cR}/${b}`;(0,o.renameSync)(i,(0,w.n2)(a,c)),e.push({original:d,archivedPath:c})}catch{f.push(d)}}return{archived:e,notFound:f}}(b.mindRoot,c.filter(a=>"string"==typeof a)))}catch(a){return c$(a)}}function cZ(a){let b=(0,w.n2)(a,cQ);(0,o.mkdirSync)(b,{recursive:!0});let c=(0,p.join)(b,"INSTRUCTION.md");(0,o.existsSync)(c)||(0,o.writeFileSync)(c,cU,"utf-8");let d=(0,p.join)(b,"README.md");return(0,o.existsSync)(d)||(0,o.writeFileSync)(d,cV,"utf-8"),b}function c$(a){let b=a instanceof Error?a.message:String(a);return/access denied|outside root|absolute paths/i.test(b)?i({error:"Access denied"},{status:403}):i({error:b},{status:500})}function c_(a){let b=a.replace(/\s/g,"");if(b.length%4==1||/[^A-Za-z0-9+/=]/.test(b)||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(b))throw Error("Invalid base64 content");return Buffer.from(b,"base64")}function c0(a,b){let c=(0,p.join)(a,b);if(!(0,o.existsSync)(c))return b;let d=(0,p.extname)(b),e=d?b.slice(0,-d.length):b,f=1;for(;(0,o.existsSync)(c);){let b=`${e}-${f}${d}`;if(c=(0,p.join)(a,b),!(0,o.existsSync)(c))return b;f++}return b}function c1(a){let b=a.replace(/\\/g,"/").split("/").pop()??"";return b=(b=(b=(b=(b=b.replace(/\.\./g,"").replace(/^\/+/,"")).replace(/[\\/:*?"<>|\x00-\x1f]/g,"-")).replace(/-{2,}/g,"-")).replace(/^[-\s]+|[-\s]+$/g,"")).replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i.test(b)&&(b=`_${b}`),b||"imported-file"}function c2(a){var b;let c,d,e=(a.metricsSnapshot??function(){return{processStartTime:Date.now(),agentRequests:0,toolExecutions:0,totalTokens:{input:0,output:0},avgResponseTimeMs:0,errors:0}})(),f=(a.memoryUsage??process.memoryUsage)(),g=(b=a.mindRoot,c=0,d=0,(0,o.existsSync)(b)&&!function a(b){let e;try{e=(0,o.readdirSync)(b,{withFileTypes:!0})}catch{return}for(let f of e){if(ag.has(f.name))continue;let e=(0,p.join)(b,f.name);if(f.isDirectory())a(e);else if(f.isFile())try{let a=(0,o.statSync)(e);c++,d+=a.size}catch{}}}(b),{fileCount:c,totalSizeBytes:d}),h=a.mcpPort??(Number(process.env.MINDOS_MCP_PORT)||Number(process.env.MCP_PORT)||8781);return i({system:{uptimeMs:Date.now()-e.processStartTime,memory:{heapUsed:f.heapUsed,heapTotal:f.heapTotal,rss:f.rss},nodeVersion:a.nodeVersion??process.version},application:{agentRequests:e.agentRequests,toolExecutions:e.toolExecutions,totalTokens:e.totalTokens,avgResponseTimeMs:e.avgResponseTimeMs,errors:e.errors},knowledgeBase:{root:a.mindRoot,fileCount:g.fileCount,totalSizeBytes:g.totalSizeBytes},mcp:{running:!0,port:h}})}function c3(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function c4(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function c5(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function c6(a,b){let c=a.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(c5))throw Error(`Invalid ${b}`);return c}function c7(a,b){if(!a||c5(a))throw Error(`Invalid ${b}`)}function c8(a,b){if(!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function c9(a){return JSON.stringify(String(a))}function da(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c9(a)}function db(a,b,...c){return[...a.split(".").filter(Boolean).map(da),da(b),...c.map(da)].join(".")}function dc(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c9(a)}async function dd(a,b,c=fetch){try{let d={"Content-Type":"application/json"};b&&(d.Authorization=`Bearer ${b}`);let e=new AbortController,f=setTimeout(()=>e.abort(),2e3);try{let b=await c(a,{method:"POST",headers:d,body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list",params:{}}),signal:e.signal});if(b.ok)return{verified:!0};return{verified:!1,verifyError:`HTTP ${b.status}`}}finally{clearTimeout(f)}}catch(a){return{verified:!1,verifyError:a instanceof Error?a.message:String(a)}}}async function de(a,b){try{let c=[],d=a.transport??"auto";for(let e of a.agents??[]){let{key:f,scope:g}=e,h=b.agents[f];if(!h){c.push({agent:f,status:"error",message:`Unknown agent: ${f}`});continue}let i=e.transport&&"auto"!==e.transport?e.transport:"auto"!==d?d:h.preferredTransport,j="global"===g?h.global:h.project;if(!j){c.push({agent:f,status:"error",message:`${h.name} does not support ${g} scope`});continue}let k=c4(j,b.homeDir),l=function(a,b,c,d){if("stdio"===a)return{type:"stdio",command:"mindos",args:["mcp"],env:{MCP_TRANSPORT:"stdio"}};let e=Number(b.env?.MINDOS_MCP_PORT)||b.readSettings?.().mcpPort||8781,f={url:c||`http://localhost:${e}/mcp`};return d&&(f.headers={Authorization:`Bearer ${d}`}),f}(i,b,a.url,a.token);try{if((0,o.mkdirSync)((0,p.dirname)(k),{recursive:!0}),"toml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=`[${db(b,c)}]`,f=`[${db(b,c,"env")}]`,g=`[${db(b,c,"headers")}]`,h=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),i=[],j=!1;for(let b of a.split("\n")){let a=b.trim();if(a===e||a===f||a===g||h.has(a)){j=!0;continue}j&&a.startsWith("[")&&(j=!1),j||i.push(b)}for(;i.length>0&&i[i.length-1]?.trim()==="";)i.pop();return i.push("",function(a,b,c){let d=[`[${db(a,b)}]`];if(c.type&&d.push(`type = ${c9(c.type)}`),c.command&&d.push(`command = ${c9(c.command)}`),c.url&&d.push(`url = ${c9(c.url)}`),Array.isArray(c.args)&&d.push(`args = [${c.args.map(c9).join(", ")}]`),c.env&&"object"==typeof c.env)for(let[e,f]of(d.push("",`[${db(a,b,"env")}]`),Object.entries(c.env)))d.push(`${da(e)} = ${c9(f)}`);if(c.headers&&"object"==typeof c.headers)for(let[e,f]of(d.push("",`[${db(a,b,"headers")}]`),Object.entries(c.headers)))d.push(`${da(e)} = ${c9(f)}`);return d.join("\n")}(b,c,d),""),i.join("\n")}(a,h.key,"mindos",l),"utf-8")}else if("yaml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=function(a,b){let c=[` ${dc(a)}:`];if(b.type&&c.push(` type: ${c9(b.type)}`),b.command&&c.push(` command: ${c9(b.command)}`),b.url&&c.push(` url: ${c9(b.url)}`),Array.isArray(b.args)&&c.push(` args: [${b.args.map(c9).join(", ")}]`),b.env&&"object"==typeof b.env)for(let[a,d]of(c.push(" env:"),Object.entries(b.env)))c.push(` ${dc(a)}: ${c9(d)}`);if(b.headers&&"object"==typeof b.headers)for(let[a,d]of(c.push(" headers:"),Object.entries(b.headers)))c.push(` ${dc(a)}: ${c9(d)}`);return c.join("\n")}(c,d);if(!a.trim())return`${b}:
|
|
51
51
|
${e}
|
|
52
|
-
`;let f=[],g=!1,h=!1,i=-1,j=!1,k=-1;for(let d of a.split("\n")){let a=d.trim(),l=d.length-d.trimStart().length;if(0===l&&a===`${b}:`){g=!0,h=!0,i=-1,f.push(d);continue}if(0===l&&a&&!a.startsWith("#")&&g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e,"",d),g=!1,j=!1;continue}if(!g){f.push(d);continue}if(!a||a.startsWith("#")){j||f.push(d);continue}if(i<0&&(i=l),l===i){if(a===`${c}:`||a===`${
|
|
53
|
-
`,"utf-8")}let d={agent:f,status:"ok",path:j,transport:i};if(await
|
|
54
|
-
`,"utf-8"))}c.push({agent:a,status:"ok",path:g})}catch(b){c.push({agent:a,status:"error",message:String(b)})}}return i({results:c})}catch(a){return m(a)}}var de=c(29021),df=c(21820);async function dg(a){try{let b=a.env??process.env,c=a.customAgents??[],d=Object.fromEntries(c.map(a=>[a.key,a])),e=new Set(c.map(a=>a.key)),f=a.builtInAgents??{},g=Object.entries(a.agents).map(([b,c])=>{var g,h,i,j,k,l,m,n,o,p,q,r,s,t;let u,v,w,y,z,A,B,C=e.has(b)&&!(b in f),D=d[b],E=C?(g=c,u=(h=a).pathExists??de.existsSync,v=g.presenceDirs?.some(a=>u(dr(a,h.homeDir)))??!1,g.presenceCli&&(h.commandExists??du)(g.presenceCli)&&(v=!0),v):a.detectAgentPresence?.(b)??(i=c,w=(j=a).pathExists??de.existsSync,!!i.presenceDirs?.some(a=>w(dr(a,j.homeDir)))||!!i.presenceCli&&(j.commandExists??du)(i.presenceCli)),F=C?function(a,b){let c=dr(a.global,b.homeDir);if(!(b.pathExists??de.existsSync)(c))return{installed:!1};try{let d=b.readTextFile??dt,e=JSON.parse(d(c)),f=a.globalNestedKey?dm(e,a.globalNestedKey)??{}:e,g=dn(f,a.key)??{};if(g&&"object"==typeof g&&"mindos"in g)return{installed:!0,scope:"global",configPath:c}}catch{}return{installed:!1}}(c,a):a.detectInstalled?.(b)??function(a,b){for(let[c,d]of[["global",a.global],["project",a.project]]){if(!d)continue;let e=ds(d,c,b);if((b.pathExists??de.existsSync)(e))try{let f=(b.readTextFile??dt)(e),g=function(a,b,c){if("toml"===b.format)return function(a,b,c){let d=`[${b}.${c}]`,e=`[${b}]`,f=!1,g=!1,h=!1,i={};for(let b of a.split("\n")){let a=b.trim();if(!a||a.startsWith("#"))continue;if(a.startsWith("[")&&a.endsWith("]")){if((f||h)&&(i.type||i.url))return i;f=a===d,g=a===e,h=!1,i={};continue}let j=a.match(/^([a-zA-Z0-9_-]+)\s*=\s*(.+)$/);if(!j)continue;let k=j[1],l=j[2];if(!k||!l)continue;let m=l.replace(/^["'](.+)["']$/,"$1");f?("type"===k&&(i.type=m),"url"===k&&(i.url=m)):g&&k===c&&(i.type=l.match(/type\s*=\s*["']([^"']+)["']/)?.[1],i.url=l.match(/url\s*=\s*["']([^"']+)["']/)?.[1],h=!0)}return(f||h)&&(i.type||i.url)?i:null}(a,b.key,"mindos");if("yaml"===b.format)return function(a,b,c){let d=!1,e=!1,f=-1,g=-1,h={};for(let i of a.split("\n")){if(!i.trim()||i.trim().startsWith("#"))continue;let a=i.length-i.trimStart().length,j=i.trim();if(0===a&&j===`${b}:`){d=!0,e=!1,f=-1,g=-1;continue}if(0===a&&j){if(e)return Object.keys(h).length>0?h:{};d=!1;continue}if(!d)continue;if(f<0&&(f=a),a===f){if(e)return Object.keys(h).length>0?h:{};e=j.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1]===c,g=-1;continue}if(!e||(g<0&&(g=a),a!==g))continue;let k=j.match(/^(command|url)\s*:\s*["']?([^"'\n]+)["']?\s*$/);if(!k)continue;let l=k[1],m=k[2];l&&m&&("command"===l&&(h.command=m.trim()),"url"===l&&(h.url=m.trim()))}return e?h:null}(a,b.key,"mindos");let d=dq(a),e="global"===c&&b.globalNestedKey?dm(d,b.globalNestedKey):dn(d,b.key),f=dn(e,"mindos");return f?{type:"string"==typeof f.type?f.type:void 0,command:"string"==typeof f.command?f.command:void 0,url:"string"==typeof f.url?f.url:void 0}:null}(f,a,c);if(!g)continue;let h="stdio"===g.type||g.command?"stdio":g.url?"http":"unknown";return{installed:!0,scope:c,transport:h,configPath:d,url:g.url}}catch{continue}}return{installed:!1}}(c,a),G=C&&D?(k=D,l=c,m=a,y=k.baseDir.endsWith("/")?`${k.baseDir}skills/`:`${k.baseDir}/skills/`,{mode:"additional",skillAgentName:k.key,workspacePath:dr(k.skillDir||l.presenceDirs?.[0]&&`${l.presenceDirs[0]}skills/`||y,m.homeDir)}):a.resolveSkillWorkspaceProfile?.(b)??(n=b,o=c,p=a,z=dl(o,p),{mode:"mindos"===n?"universal":"unsupported",workspacePath:(0,x.join)(z,"skills")}),H=C?{hiddenRootPath:"",hiddenRootPresent:!1,conversationSignal:!1,usageSignal:!1}:a.detectAgentRuntimeSignals?.(b)??(q=c,r=a,{hiddenRootPath:A=dl(q,r),hiddenRootPresent:(r.pathExists??de.existsSync)(A),conversationSignal:!1,usageSignal:!1}),I=C&&D?function(a,b={}){let c=dr(a.global,b.homeDir);if(!(b.pathExists??de.existsSync)(c))return{servers:[],sources:[]};try{let d=(b.readTextFile??dt)(c),e="toml"===a.format?dh(d,a.configKey):function(a,b){try{let c=dq(a),d=dn(c,b);if(d)return Object.keys(d).sort()}catch{}return[]}(d,a.configKey);return{servers:e,sources:e.length>0?[`local:${c}`]:[]}}catch{return{servers:[],sources:[]}}}(D,a):a.detectAgentConfiguredMcpServers?.(b)??function(a,b){let c=new Set,d=[];for(let[e,f]of[["global",a.global],["project",a.project]]){if(!f)continue;let g=ds(f,e,b);if((b.pathExists??de.existsSync)(g))try{let h=(b.readTextFile??dt)(g),i=function(a,b,c){if("toml"===b.format)return dh(a,b.key);if("yaml"===b.format)return function(a,b){let c=new Set,d=!1,e=-1;for(let f of a.split("\n")){if(!f.trim()||f.trim().startsWith("#"))continue;let a=f.length-f.trimStart().length,g=f.trim();if(0===a&&g===`${b}:`){d=!0,e=-1;continue}if(0===a&&g){d=!1;continue}if(!d||(e<0&&(e=a),a!==e))continue;let h=g.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1];h&&c.add(h)}return[...c].sort()}(a,b.key);let d=dq(a);return Object.keys(("global"===c&&b.globalNestedKey?dm(d,b.globalNestedKey):dn(d,b.key))??{}).sort((a,b)=>a.localeCompare(b))}(h,a,e);for(let a of i)c.add(a);i.length>0&&d.push(`${e}:${f}`)}catch{continue}}return{servers:[...c].sort((a,b)=>a.localeCompare(b)),sources:d}}(c,a),J=C&&D?a.scanCustomAgentSkills?.(D)??(s=D,t=a,B=dr(s.skillDir||(s.baseDir.endsWith("/")?`${s.baseDir}skills/`:`${s.baseDir}/skills/`),t.homeDir),{skills:t.listSkillNames?.(B)??function(a){if(!(0,de.existsSync)(a))return[];try{return(0,de.readdirSync)(a,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{return[]}}(B),sourcePath:B}):a.detectAgentInstalledSkills?.(b)??{skills:[],sourcePath:G.workspacePath};return{key:b,name:c.name,present:E,installed:F.installed,scope:F.scope,transport:F.transport,configPath:F.configPath,url:F.url,hasProjectScope:!!c.project,hasGlobalScope:!!c.global,preferredTransport:c.preferredTransport,format:c.format??"json",configKey:c.key,globalNestedKey:c.globalNestedKey,globalPath:c.global,projectPath:c.project,skillMode:G.mode,skillAgentName:G.skillAgentName,skillWorkspacePath:G.workspacePath,hiddenRootPath:H.hiddenRootPath,hiddenRootPresent:H.hiddenRootPresent,runtimeConversationSignal:H.conversationSignal,runtimeUsageSignal:H.usageSignal,runtimeLastActivityAt:H.lastActivityAt,configuredMcpServers:I.servers,configuredMcpServerCount:I.servers.length,configuredMcpSources:I.sources,installedSkillNames:J.skills,installedSkillCount:J.skills.length,installedSkillSourcePath:J.sourcePath,isCustom:C,customBaseDir:C?D?.baseDir:void 0}}),h=g.find(a=>"mindos"===a.key);return h&&function(a,b,c){a.present=!0,a.installed=!0,a.scope="builtin";try{let d=Number(c.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(b.readSettings?.(),"mcpPort")||8781;a.transport=`http :${d}`}catch{a.transport="http :8781"}try{let c=b.loadMindosSkills?.();c&&(a.installedSkillNames=c.names,a.installedSkillCount=c.names.length,a.installedSkillSourcePath=c.sourcePath,a.skillMode="universal",a.skillWorkspacePath=c.workspacePath)}catch{}let d=b.homeDir??(0,df.homedir)(),e=b.mindRoot??(0,x.join)(d,".mindos"),f=(0,x.join)(d,".mindos","mcp.json");try{if((b.pathExists??de.existsSync)(f)){let c=b.readTextFile??dt,d=JSON.parse(c(f)),e=Object.keys(d.mcpServers??{});a.configuredMcpServers=e,a.configuredMcpServerCount=e.length,a.configuredMcpSources=e.length>0?[`local:${f}`]:[]}}catch{}a.runtimeConversationSignal=!0,a.runtimeLastActivityAt=(b.now??(()=>new Date))().toISOString(),a.hiddenRootPath=e,a.hiddenRootPresent=!0}(h,a,b),await di(g,a),g.sort(dj),i({agents:g})}catch(a){return m(a)}}function dh(a,b){let c=new Set,d=`${b}.`,e=!1;for(let f of a.split("\n")){let a=f.trim();if(!(!a||a.startsWith("#"))){if(a.startsWith("[")&&a.endsWith("]")){let f=a.slice(1,-1).trim();if(e=f===b,f.startsWith(d)){let a=f.slice(d.length).split(".")[0];a&&c.add(a)}continue}if(e){let b=a.match(/^([a-zA-Z0-9_-]+)\s*=/)?.[1];b&&c.add(b)}}}return[...c].sort()}async function di(a,b){let c=b.fetchHead??dv;await Promise.all(a.map(async a=>{if(a.installed&&a.url&&a.transport?.startsWith("http"))try{let b=new AbortController,d=setTimeout(()=>b.abort(),1e3);try{let d=await c(a.url,{signal:b.signal});d.status>=300&&405!==d.status&&(a.installed=!1)}finally{clearTimeout(d)}}catch{a.installed=!1}}))}function dj(a,b){return"mindos"===a.key?-1:"mindos"===b.key?1:dk(a)-dk(b)}function dk(a){return a.installed?0:a.present?1:2}function dl(a,b){let c=b.pathExists??de.existsSync;for(let d of a.presenceDirs??[]){let a=dr(d,b.homeDir);if(c(a))return a}return(0,x.dirname)(dr(a.global,b.homeDir))}function dm(a,b){let c=b.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(dp))return null;let d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}function dn(a,b){if(!a||"object"!=typeof a||dp(b)||!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function dp(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function dq(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function dr(a,b){return a.startsWith("~/")||a.startsWith("~\\")?(0,x.resolve)(b??(0,df.homedir)(),a.slice(2)):a}function ds(a,b,c){let d=dr(a,c.homeDir);return"project"!==b||(0,x.isAbsolute)(d)?d:(0,x.resolve)(c.projectRoot??process.cwd(),d)}function dt(a){return(0,de.readFileSync)(a,"utf-8")}function du(a){try{return(0,b6.execFileSync)("win32"===process.platform?"where":"which",[a],{stdio:"pipe"}),!0}catch{return!1}}async function dv(a,b){return"function"!=typeof fetch?{status:200}:{status:(await fetch(a,{method:"HEAD",signal:b.signal})).status}}function dw(a){let b,c;try{var d;b=(d=a.readMcpConfig())&&"object"==typeof d&&d.mcpServers&&"object"==typeof d.mcpServers?d:{mcpServers:{}},c=a.readMcpToolCache()}catch(a){return m(a)}return i({servers:Object.entries(b.mcpServers).map(([a,b])=>{let d=c?.[a],e=(d?.tools??[]).map(a=>({name:a.name,description:a.description??""}));return{name:a,toolCount:e.length,tools:e,directTools:b.directTools??!1,lifecycle:b.lifecycle??"lazy",cached:!!d}})})}function dx(a,b){var c,d;let e=(c=a)&&"object"==typeof c?c:{};if(!e.server||"string"!=typeof e.server)return i({error:'Missing or invalid "server" field'},{status:400});let f=e.server.trim();if(!f||"__proto__"===(d=f)||"prototype"===d||"constructor"===d)return i({error:"Invalid server name"},{status:400});let g=e.directTools;if(!0!==g&&!1!==g&&!Array.isArray(g))return i({error:'"directTools" must be true, false, or string[]'},{status:400});if(Array.isArray(g)&&!g.every(a=>"string"==typeof a))return i({error:'"directTools" array must contain only strings'},{status:400});try{b.updateServerDirectTools(f,g)}catch(a){return m(a)}return i({ok:!0,server:f,directTools:g})}let dy=new Set(["mindos","mindos-zh"]);function dz(a,b={}){try{var c,d,e,f,g,h,j;let k=(c=a)&&"object"==typeof c?c:{},l=k.skill;if(!l||!dy.has(l))return i({error:"Invalid skill name"},{status:400});let m=Array.isArray(k.agents)?k.agents:[],n=m.find(a=>"string"!=typeof a||!dA(a.trim()));if(void 0!==n)return i({error:"Invalid agent name"},{status:400});let o=(d=m.map(a=>a.trim()),e=b.skillAgentRegistry??{},d.flatMap(a=>{if(!dA(a))return[];let b=Object.prototype.hasOwnProperty.call(e,a)?e[a]:void 0;if(!b)return[a];if("unsupported"===b.mode||"universal"===b.mode)return[];let c=b.skillAgentName||a;return dA(c)?[c]:[]})),p=["GeminiLight/MindOS"],q=function(a){let b=a.projectRoot??process.cwd(),c=a.cwd??process.cwd(),d=a.pathExists??de.existsSync;for(let a of[(0,x.resolve)(c,"data/skills"),(0,x.join)(b,"skills"),(0,x.join)(b,"packages","web","data","skills")])if(d(a))return a;return null}(b);q&&p.push(q);let r="",s="",t="",u=b.runCommand??dC;for(let a of p){let c=(f=a,g=l,h=o,["skills","add",f,"--skill",g,...(h.length>0?h:["universal"]).flatMap(a=>["-a",a]),"-g","-y"]),d=(j=c,["npx",...j].map(dB).join(" "));r=d;try{return s=u("npx",c,{encoding:"utf-8",timeout:3e4,env:{...process.env,...b.env??{},NODE_ENV:"production"},stdio:"pipe"}),i({ok:!0,skill:l,agents:o,cmd:d,stdout:s.trim()})}catch(a){s=a.stdout||"",t=a.stderr||a.message||"Unknown error"}}return i({ok:!1,skill:l,agents:o,cmd:r,stdout:s,stderr:t})}catch(a){return m(a)}}function dA(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&"__proto__"!==a&&"prototype"!==a&&"constructor"!==a}function dB(a){return/^[A-Za-z0-9._=-]+$/.test(a)?a:`"${a.replace(/(["\\$`])/g,"\\$1")}"`}function dC(a,b,c){let d="npx"===a?function(a,b={}){let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&d.add((0,x.join)((0,x.dirname)(b.npm_execpath),"npx-cli.js"));let e=(0,x.dirname)(a);for(let a of(d.add((0,x.join)(e,"node_modules","npm","bin","npx-cli.js")),d.add((0,x.resolve)(e,"..","lib","node_modules","npm","bin","npx-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??de.existsSync);if(e)return{command:d,args:[e,...a]};if((b.platform??process.platform)==="win32")throw Error("Unable to locate npm npx-cli.js for shell-free skill installation on Windows");return{command:"npx",args:a}}(b,{env:c.env}):{command:a,args:b};return(0,b6.execFileSync)(d.command,d.args,c)}var dD=c(77030);async function dE(a){try{let b=a.env??process.env,c=a.readSettings?.(),d=Number(b.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(c,"mcpPort")||8781,e=b.MINDOS_WEB_PORT||"3456",f=b.AUTH_TOKEN||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];return"string"==typeof c&&c.length>0?c:void 0}(c,"authToken"),g="1"===b.MINDOS_MANAGED;if((a.killByPort??function(a){let b=process.platform;for(let c of function(a,b={}){var c;if(!(Number.isInteger(c=a)&&c>0&&c<=65535))return[];let d=b.platform??process.platform,e=b.execFile??((a,b)=>(0,aF.execFileSync)(a,b,{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}));if("win32"===d)try{return function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(!/LISTENING/i.test(f))continue;let b=f.trim().split(/\s+/);if(b.length<5)continue;let g=b[1],h=Number(b[b.length-1]);d=g,e=a,d?.endsWith(`:${e}`)&&h>0&&c.add(h)}return[...c]}(a,e("netstat",["-ano"]))}catch{return[]}let f=new Set;try{for(let b of e("lsof",["-ti",`:${a}`]).split(/\r?\n/).map(a=>Number(a.trim())).filter(a=>a>0))f.add(b)}catch{}if(0===f.size)try{for(let b of function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(d=f,e=a,RegExp(`:${e}(?!\\d)`).test(d))for(let a of f.matchAll(/pid=(\d+)/g)){let b=Number(a[1]);b>0&&c.add(b)}}return[...c]}(a,e("ss",["-tlnp"])))f.add(b)}catch{}return[...f]}(a,{platform:b}))try{"win32"===b?(0,aF.execFileSync)("taskkill",["/PID",String(c),"/T","/F"],{stdio:"ignore"}):process.kill(c,"SIGKILL")}catch{}})(d),g)return i({ok:!0,port:d,note:"ProcessManager will respawn"});let h=a.waitForPortFree??dF;if(!await h(d,5e3))return i({error:`MCP port ${d} still in use after kill`},{status:500});let j=a.pathExists??o.existsSync,{mcpDir:k,mcpBundle:l}=function(a,b){let c=[(0,p.resolve)(a,"packages","mindos"),a];for(let a of c){let c=(0,p.resolve)(a,"dist","protocols","mcp-server","index.cjs");if(b(c))return{mcpDir:a,mcpBundle:c}}let d=c[0]??a;return{mcpDir:d,mcpBundle:(0,p.resolve)(d,"dist","protocols","mcp-server","index.cjs")}}(a.projectRoot,j);if(!j(l))return i({error:"MCP bundle not found — reinstall @geminilight/mindos"},{status:500});let m={...b,MCP_TRANSPORT:"http",MCP_PORT:String(d),MCP_HOST:b.MCP_HOST||"0.0.0.0",MINDOS_URL:b.MINDOS_URL||`http://127.0.0.1:${e}`,...f?{AUTH_TOKEN:f}:{}},n=(a.spawnDetached??function(a,b,c){return(0,aF.spawn)(a,b,c)})(a.execPath??process.execPath,[l],{cwd:k,detached:!0,stdio:"ignore",env:m});return n.unref(),i({ok:!0,pid:n.pid,port:d})}catch(a){return m(a)}}function dF(a,b){return dG(a,b,dH)}async function dG(a,b,c){let d=Date.now();for(;Date.now()-d<b;){if(!await c(a))return!0;await new Promise(a=>setTimeout(a,300))}return!1}function dH(a){return new Promise(b=>{let c=(0,dD.createServer)();c.once("error",()=>b(!0)),c.once("listening",()=>{c.close(),b(!1)}),c.listen(a,"127.0.0.1")})}async function dI(a,b={}){try{let c=a.readSettings(),d=Number(a.env?.MINDOS_MCP_PORT)||c.mcpPort||8781,e=c.authToken??"",f=!!e,g=b.host??`127.0.0.1:${d}`,h=function(a){if(a.includes("]"))return a.slice(0,a.lastIndexOf("]")+1);let b=a.lastIndexOf(":");return b>0?a.slice(0,b):a}(g),j=`http://${h}:${d}/mcp`,k=`http://127.0.0.1:${d}/api/health`,l=!1;try{let b=await a.fetchHealth(k,2e3);l=b.ok&&b.body?.ok===!0&&"mindos"===b.body.service}catch{l=!1}return i({running:l,transport:"http",endpoint:j,port:d,toolCount:24*!!l,authConfigured:f,maskedToken:f?a.maskToken(e):void 0,authToken:f?e:void 0,localIP:a.getLocalIP(),connectionMode:c.connectionMode??{cli:!0,mcp:!1}})}catch(a){return m(a)}}let dJ={".pdf":"application/pdf",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".bmp":"image/bmp",".ico":"image/x-icon",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".flac":"audio/flac",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".mkv":"video/x-matroska"};function dK(a,b,c={}){let d,e=W(a,"path");if(!e)return i({error:"Missing path parameter"},{status:400});let f=e.toLowerCase(),g=f.slice(f.lastIndexOf(".")),h=dJ[g];if(!h)return i({error:`Unsupported binary file type: ${g}`},{status:400});try{d=(0,w.n2)(b.mindRoot,e)}catch{return i({error:"Access denied"},{status:403})}if(!(0,o.existsSync)(d))return i({error:"File not found"},{status:404});let j=(0,o.statSync)(d);if(j.size>0xc800000)return i({error:`File too large (${Math.round(j.size/1024/1024)}MB). Max: 200MB`},{status:413});let k=j.size,m=c.range;if(m){let a=m.match(/bytes=(\d+)-(\d*)/);if(a){let b=Math.min(Number.parseInt(a[1]??"0",10),k-1),c=Math.min(a[2]?Number.parseInt(a[2],10):k-1,k-1),e=c-b+1,f=Buffer.alloc(e),g=(0,o.openSync)(d,"r");try{(0,o.readSync)(g,f,0,e,b)}finally{(0,o.closeSync)(g)}return{status:206,body:f,headers:{"Content-Type":h,"Content-Length":String(e),"Content-Range":`bytes ${b}-${c}/${k}`,"Accept-Ranges":"bytes",...l(60)}}}}return{status:200,body:(0,o.readFileSync)(d),headers:{"Content-Type":h,"Content-Length":String(k),"Accept-Ranges":"bytes","Content-Disposition":"inline",...l(60)}}}function dL(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,30)):10;return i(b.getRecentlyModified(e),{headers:l(30)})}async function dM(a,b){let c=W(a,"q")??"";return c.trim()?i(await b.search(c,{limit:20}),{headers:l(300)}):i([])}function dN(a){if(a.prewarmSearch)return i(a.prewarmSearch(),{headers:l(60)});let b=a.collectAllFiles();return i({warmed:!0,cacheState:"built",documentCount:b.length,core:{cacheState:"built",fileCount:b.length}},{headers:l(60)})}function dO(a){return a?"••••••":""}function dP(){return{enabled:!1,provider:"local",baseUrl:"",apiKey:"",model:""}}function dQ(a){try{let b=a.readSettings(),c=b.ai??{},d=a.env??{},e={AI_PROVIDER:!!d.AI_PROVIDER,MIND_ROOT:!!d.MIND_ROOT},f={AI_PROVIDER:d.AI_PROVIDER||"",MIND_ROOT:d.MIND_ROOT||""};for(let b of a.providerEnv.ids){let c=a.providerEnv.getApiKeyEnvVar(b);if(!c)continue;let d=a.providerEnv.getApiKeyFromEnv(b);e[c]=!!d,f[c]=d?"***set***":""}let g=a.readWebSearchConfig();return i({ai:{activeProvider:c.activeProvider??"",providers:c.providers??[]},embedding:b.embedding??dP(),embeddingStatus:a.getEmbeddingStatus(),webSearch:{provider:g.provider??"auto",exaApiKey:dO(g.exaApiKey),perplexityApiKey:dO(g.perplexityApiKey),geminiApiKey:dO(g.geminiApiKey)},mindRoot:b.mindRoot,webPassword:b.webPassword??"",authToken:function(a){if(!a)return"";let b=a.split("-");return b.length>=2?`${b[0]}-${b.slice(1,-1).map(()=>"••••").join("-")}-${b[b.length-1]}`:a.length>8?`${a.slice(0,4)}••••••••${a.slice(-4)}`:"***set***"}(b.authToken),allowNetworkAccess:!0===b.allowNetworkAccess,port:Number(d.MINDOS_WEB_PORT)||b.port||3456,mcpPort:b.mcpPort??8781,agent:b.agent??{},skillPaths:b.skillPaths??{},envOverrides:e,envValues:f})}catch(a){return m(a)}}function dR(a,b){try{var c,d;let e,f=b.readSettings(),g={...f.ai??{}};a.ai&&(void 0!==a.ai.activeProvider&&(g.activeProvider=a.ai.activeProvider),void 0!==a.ai.providers&&(g.providers=b.parseProviders(a.ai.providers)));let h=b.readWebSearchConfig(),j=function(a,b){if(!a||"object"!=typeof a)return;let c={};return"string"==typeof a.provider&&(c.provider=a.provider),"string"==typeof a.exaApiKey&&(c.exaApiKey=a.exaApiKey.includes("••")?b.exaApiKey:a.exaApiKey),"string"==typeof a.perplexityApiKey&&(c.perplexityApiKey=a.perplexityApiKey.includes("••")?b.perplexityApiKey:a.perplexityApiKey),"string"==typeof a.geminiApiKey&&(c.geminiApiKey=a.geminiApiKey.includes("••")?b.geminiApiKey:a.geminiApiKey),{...b,...c}}(a.webSearch,h);j&&b.writeWebSearchConfig(j);let k=""===a.authToken?"":f.authToken,l={ai:g,embedding:a.embedding&&"object"==typeof a.embedding?function(a){if(!a||"object"!=typeof a)return dP();let b="local"===a.provider||"api"===a.provider?a.provider:"api";return{enabled:!0===a.enabled,provider:b,baseUrl:"string"==typeof a.baseUrl?a.baseUrl:"",apiKey:"string"==typeof a.apiKey?a.apiKey:"",model:"string"==typeof a.model?a.model:""}}(a.embedding):f.embedding,mindRoot:a.mindRoot??f.mindRoot,agent:a.agent??f.agent,skillPaths:function(a,b){if(void 0===b||!b||"object"!=typeof b)return a;let c={...a??{}};return"boolean"==typeof b.enableAgentsDir&&(c.enableAgentsDir=b.enableAgentsDir),Array.isArray(b.custom)&&(c.custom=b.custom.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean)),c}(f.skillPaths,a.skillPaths),webPassword:a.webPassword??f.webPassword,authToken:k,allowNetworkAccess:"boolean"==typeof a.allowNetworkAccess?a.allowNetworkAccess:!0===f.allowNetworkAccess,port:"number"==typeof a.port?a.port:f.port,mcpPort:"number"==typeof a.mcpPort?a.mcpPort:f.mcpPort,startMode:a.startMode??f.startMode,connectionMode:(c=f.connectionMode,d=a.connectionMode,e=c??{cli:!0,mcp:!1},d&&"object"==typeof d?"boolean"!=typeof d.cli||"boolean"!=typeof d.mcp?e:{cli:d.cli,mcp:d.mcp}:e),baseUrlCompat:f.baseUrlCompat};if(b.writeSettings(l),JSON.stringify(l.ai)!==JSON.stringify(f.ai)){let a=b.readSettings();a.baseUrlCompat&&Object.keys(a.baseUrlCompat).length>0&&b.writeSettings({...a,baseUrlCompat:{}})}return l.mindRoot!==f.mindRoot&&b.invalidateCache(),i({ok:!0})}catch(a){return m(a)}}function dS(a){try{let b,c=a.readSettings(),d=((b=(0,t.randomBytes)(12).toString("hex")).match(/.{4}/g)??[b]).join("-");return a.writeSettings({...c,authToken:d}),i({ok:!0,token:d})}catch(a){return m(a)}}c(86761);let dT=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function dU(a,b={}){try{var c,d,e,f,g,h;let j=a&&"object"==typeof a?a:{},k=dZ(j.provider),l=dZ(j.apiKey),m=dZ(j.baseUrl);if(k&&(c=k,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,k);if(!d)return i({ok:!1,error:"Provider not found"},{status:404});return await dV({provider:d.protocol,apiKey:l||d.apiKey||"",baseUrl:m||d.baseUrl||"",services:b})}if(!k||(e=k,(f=b).isProviderId?!f.isProviderId(e):!dT.has(e)))return i({ok:!1,error:"Invalid provider"},{status:400});if(b.supportsListModels?.(k)===!1){return i({ok:!0,models:(g=k,h=b,(h.getRegistryModels?.(g)??[]).filter(Boolean).sort())})}let n=b.effectiveAiConfig?.(k)??{provider:k,apiKey:"",baseUrl:""},o=l||n.apiKey||"",p=m||n.baseUrl||"";if(!o&&!p)return i({ok:!1,error:"No API key configured"});return await dV({provider:k,apiKey:o,baseUrl:p,services:b})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}}async function dV(a){let b=new AbortController,c=setTimeout(()=>b.abort(),a.services.timeoutMs??1e4);try{let c=await dW(a.provider,a.apiKey,a.baseUrl,b.signal,a.services);return i({ok:!0,models:c})}catch(a){if(a instanceof Error&&"AbortError"===a.name)return i({ok:!1,error:"Request timed out"});return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}finally{clearTimeout(c)}}async function dW(a,b,c,d,e){let f=e.getProviderApiType?.(a)??"openai-completions",g=function(a,b,c,d){let e=d.buildEndpointCandidates??((a,b)=>[`${a.replace(/\/+$/,"")}${b}`]);if(b)return e(b,"/models",c);let f=d.getDefaultBaseUrl?.(a)??"";return f?e(f,"/models",c):["https://api.openai.com/v1/models"]}(a,c,f,e);return await dX(g,b,f,d,e)}async function dX(a,b,c,d,e){let f=e.fetch??dY,g="No endpoint candidates",h=[];for(let e of a){h.push(e);let a={};"anthropic-messages"===c?(b&&(a["x-api-key"]=b),a["anthropic-version"]="2023-06-01"):b&&(a.Authorization=`Bearer ${b}`);let i=await f(e,{headers:a,signal:d});if(!i.ok){let a=await i.text().catch(()=>"");if(g=`HTTP ${i.status} @ ${e}: ${a.slice(0,200)}`,400===i.status||404===i.status||405===i.status)continue;throw Error(`Failed to list models: ${g}`)}let j=await i.json();if(j&&"object"==typeof j&&Array.isArray(j.data))return j.data.map(a=>a.id).filter(a=>"string"==typeof a&&!!a).sort();if(j&&"object"==typeof j&&Array.isArray(j.models))return j.models.map(a=>"string"==typeof a?a:a?.id).filter(a=>"string"==typeof a&&!!a).sort();throw Error(`Failed to list models: incompatible response shape from ${e}; tried ${h.length} endpoint candidate(s)`)}throw Error(`Failed to list models: ${g}; tried ${h.length} endpoint candidate(s)`)}async function dY(a,b){return fetch(a,b)}function dZ(a){return"string"==typeof a?a:""}let d$=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function d_(a,b={}){try{var c,d;let e=a&&"object"==typeof a?a:{},f=d3(e.provider),g=d3(e.apiKey),h=d3(e.model),j=d3(e.baseUrl),k=d3(e.baseProviderId);if(k&&d4(k,b)){if(!g)return i({ok:!1,code:"auth_error",error:"No API key configured"});if(!h)return i({ok:!1,code:"unknown",error:"Model is required"},{status:400});return await d1({provider:k,apiKey:g,model:h,baseUrl:j,services:b})}if(f&&(c=f,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,f);if(!d)return i({ok:!1,code:"unknown",error:"Provider not found"},{status:400});let e=g||d.apiKey||"";if(!e)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d1({provider:d.protocol,apiKey:e,model:h||d.model||void 0,baseUrl:j||d.baseUrl||void 0,services:b})}if(!f||!d4(f,b))return i({ok:!1,code:"unknown",error:"Invalid provider"},{status:400});let l=b.effectiveAiConfig?.(f)??{provider:f,apiKey:"",model:void 0,baseUrl:void 0},m=g||l.apiKey||"";if(!m)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d1({provider:f,apiKey:m,model:h||l.model||void 0,baseUrl:j||void 0,services:b})}catch(a){return i({ok:!1,...d0(a)})}}function d0(a){let b=a instanceof Error?a.message:String(a),c=b.toLowerCase();return a instanceof Error&&"AbortError"===a.name?{code:"network_error",error:"Request timed out"}:c.includes("401")||c.includes("403")||c.includes("invalid")&&c.includes("key")||c.includes("authentication")||c.includes("unauthorized")||c.includes("api key")&&(c.includes("not valid")||c.includes("incorrect"))?{code:"auth_error",error:"Invalid API key"}:c.includes("model")&&(c.includes("not found")||c.includes("does not exist"))?{code:"model_not_found",error:`Model not found: ${b.slice(0,200)}`}:c.includes("404")||c.includes("page not found")||c.includes("invalid url")?{code:"endpoint_error",error:`Endpoint or protocol mismatch: ${b.slice(0,200)}`}:c.includes("429")||c.includes("rate")||c.includes("quota")?{code:"rate_limited",error:"Rate limited — try again later"}:c.includes("econnrefused")||c.includes("enotfound")||c.includes("etimedout")||c.includes("fetch failed")||c.includes("network")?{code:"network_error",error:b.slice(0,200)}:{code:"unknown",error:b.slice(0,200)}}async function d1(a){let b=a.services.now?.()??Date.now(),c=new AbortController,d=setTimeout(()=>c.abort(),a.services.timeoutMs??15e3);try{let d=a.services.testModel??d2;return await d({provider:a.provider,apiKey:a.apiKey,model:a.model,baseUrl:a.baseUrl,signal:c.signal}),a.services.clearCompatCacheForBaseUrl?.(a.baseUrl),i({ok:!0,latency:(a.services.now?.()??Date.now())-b})}catch(a){return i({ok:!1,...d0(a)})}finally{clearTimeout(d)}}async function d2(){throw Error("Provider test service is not configured")}function d3(a){return"string"==typeof a?a:""}function d4(a,b){return b.isProviderId?b.isProviderId(a):d$.has(a)}function d5(a,b={}){try{var c,d;let e=!(c=a)||"object"!=typeof c||!1!==c.removeConfig,f=function(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}(b.env??process.env),g=b.spawn??aF.spawn,h=b.nodeBin??f.MINDOS_NODE_BIN??process.execPath,j=b.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:b.env??process.env,runtimeRoot:b.runtimeRoot,projectRoot:b.projectRoot}),k=g(h,[j,"uninstall"],{detached:!0,stdio:["pipe","ignore","ignore"],env:f});return k.stdin?.write((d=e,`Y
|
|
52
|
+
`;let f=[],g=!1,h=!1,i=-1,j=!1,k=-1;for(let d of a.split("\n")){let a=d.trim(),l=d.length-d.trimStart().length;if(0===l&&a===`${b}:`){g=!0,h=!0,i=-1,f.push(d);continue}if(0===l&&a&&!a.startsWith("#")&&g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e,"",d),g=!1,j=!1;continue}if(!g){f.push(d);continue}if(!a||a.startsWith("#")){j||f.push(d);continue}if(i<0&&(i=l),l===i){if(a===`${c}:`||a===`${dc(c)}:`){j=!0,k=l;continue}j=!1}if(j){if(l>k)continue;j=!1}f.push(d)}if(g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e)}if(!h){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push("",`${b}:`,e)}let l=f.join("\n");return l.endsWith("\n")||(l+="\n"),l}(a,h.key,"mindos",l),"utf-8")}else{let a=(0,o.existsSync)(k)?c3((0,o.readFileSync)(k,"utf-8")):{};("global"===g&&h.globalNestedKey?function(a,b){let c=c6(b,"nested config path"),d=a;for(let a of c)c8(d,a)||(d[a]={}),d=d[a];return d}(a,h.globalNestedKey):(c7(h.key,"agent config key"),!c8(a,h.key)&&(a[h.key]={}),a[h.key])).mindos=l,(0,o.writeFileSync)(k,`${JSON.stringify(a,null,2)}
|
|
53
|
+
`,"utf-8")}let d={agent:f,status:"ok",path:j,transport:i};if(await df(f,b),"http"===i){let c=await dd(String(l.url),a.token,b.fetcher);d.verified=c.verified,c.verifyError&&(d.verifyError=c.verifyError)}c.push(d)}catch(a){c.push({agent:f,status:"error",message:String(a)})}}return i({results:c})}catch(a){return m(a)}}async function df(a,b){if(b.resolveSkillWorkspaceProfile)try{let c=b.resolveSkillWorkspaceProfile(a),d=b.readSettings?.()??{},e=d.disabledSkills?.includes("mindos")?"mindos-zh":"mindos",f=(0,p.join)(c.workspacePath,e,"SKILL.md");b.recordSkillInstall?.(a,e,f);let g=b.skillAgentRegistry?.[a];if(g&&("additional"===g.mode||"unsupported"===g.mode)&&(0,o.mkdirSync)(c.workspacePath,{recursive:!0}),g?.mode!=="unsupported"||!b.projectRoot||!b.copyDirectory)return;let h=[(0,p.join)(b.projectRoot,"skills",e),(0,p.join)(b.projectRoot,"packages","web","data","skills",e)],i=b.directoryExists??o.existsSync,j=h.find(a=>i(a)),k=(0,p.join)(c.workspacePath,e);j&&!i(k)&&await b.copyDirectory(j,k)}catch{}}function dg(a,b){try{let c=[];for(let d of a.agents??[]){let{key:a,scope:e}=d,f=b.agents[a];if(!f){c.push({agent:a,status:"error",message:`Unknown agent: ${a}`});continue}let g="global"===e?f.global:f.project;if(!g){c.push({agent:a,status:"error",message:`${f.name} does not support ${e} scope`});continue}let h=c4(g,b.homeDir);if(!(0,o.existsSync)(h)){c.push({agent:a,status:"ok",message:"Config file does not exist"});continue}try{if("toml"===f.format)(0,o.writeFileSync)(h,function(a,b,c){let d=`[${db(b,c)}]`,e=`[${db(b,c,"env")}]`,f=`[${db(b,c,"headers")}]`,g=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),h=[],i=!1;for(let b of a.split("\n")){let a=b.trim();if(a===d||a===e||a===f||g.has(a)){i=!0;continue}i&&a.startsWith("[")&&(i=!1),i||h.push(b)}let j=[];for(let a of h)""===a.trim()&&j.length>0&&j[j.length-1]?.trim()===""||j.push(a);return j.join("\n")}((0,o.readFileSync)(h,"utf-8"),f.key,"mindos"),"utf-8");else{let a=c3((0,o.readFileSync)(h,"utf-8")),b="global"===e&&f.globalNestedKey?function(a,b){let c=c6(b,"nested config path"),d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}(a,f.globalNestedKey):(c7(f.key,"agent config key"),c8(a,f.key)??void 0);b&&"mindos"in b&&(delete b.mindos,(0,o.writeFileSync)(h,`${JSON.stringify(a,null,2)}
|
|
54
|
+
`,"utf-8"))}c.push({agent:a,status:"ok",path:g})}catch(b){c.push({agent:a,status:"error",message:String(b)})}}return i({results:c})}catch(a){return m(a)}}var dh=c(29021),di=c(21820);async function dj(a){try{let b=a.env??process.env,c=a.customAgents??[],d=Object.fromEntries(c.map(a=>[a.key,a])),e=new Set(c.map(a=>a.key)),f=a.builtInAgents??{},g=Object.entries(a.agents).map(([b,c])=>{var g,h,i,j,k,l,m,n,o,p,q,r,s,t;let u,v,w,y,z,A,B,C=e.has(b)&&!(b in f),D=d[b],E=C?(g=c,u=(h=a).pathExists??dh.existsSync,v=g.presenceDirs?.some(a=>u(du(a,h.homeDir)))??!1,g.presenceCli&&(h.commandExists??dx)(g.presenceCli)&&(v=!0),v):a.detectAgentPresence?.(b)??(i=c,w=(j=a).pathExists??dh.existsSync,!!i.presenceDirs?.some(a=>w(du(a,j.homeDir)))||!!i.presenceCli&&(j.commandExists??dx)(i.presenceCli)),F=C?function(a,b){let c=du(a.global,b.homeDir);if(!(b.pathExists??dh.existsSync)(c))return{installed:!1};try{let d=b.readTextFile??dw,e=JSON.parse(d(c)),f=a.globalNestedKey?dq(e,a.globalNestedKey)??{}:e,g=dr(f,a.key)??{};if(g&&"object"==typeof g&&"mindos"in g)return{installed:!0,scope:"global",configPath:c}}catch{}return{installed:!1}}(c,a):a.detectInstalled?.(b)??function(a,b){for(let[c,d]of[["global",a.global],["project",a.project]]){if(!d)continue;let e=dv(d,c,b);if((b.pathExists??dh.existsSync)(e))try{let f=(b.readTextFile??dw)(e),g=function(a,b,c){if("toml"===b.format)return function(a,b,c){let d=`[${b}.${c}]`,e=`[${b}]`,f=!1,g=!1,h=!1,i={};for(let b of a.split("\n")){let a=b.trim();if(!a||a.startsWith("#"))continue;if(a.startsWith("[")&&a.endsWith("]")){if((f||h)&&(i.type||i.url))return i;f=a===d,g=a===e,h=!1,i={};continue}let j=a.match(/^([a-zA-Z0-9_-]+)\s*=\s*(.+)$/);if(!j)continue;let k=j[1],l=j[2];if(!k||!l)continue;let m=l.replace(/^["'](.+)["']$/,"$1");f?("type"===k&&(i.type=m),"url"===k&&(i.url=m)):g&&k===c&&(i.type=l.match(/type\s*=\s*["']([^"']+)["']/)?.[1],i.url=l.match(/url\s*=\s*["']([^"']+)["']/)?.[1],h=!0)}return(f||h)&&(i.type||i.url)?i:null}(a,b.key,"mindos");if("yaml"===b.format)return function(a,b,c){let d=!1,e=!1,f=-1,g=-1,h={};for(let i of a.split("\n")){if(!i.trim()||i.trim().startsWith("#"))continue;let a=i.length-i.trimStart().length,j=i.trim();if(0===a&&j===`${b}:`){d=!0,e=!1,f=-1,g=-1;continue}if(0===a&&j){if(e)return Object.keys(h).length>0?h:{};d=!1;continue}if(!d)continue;if(f<0&&(f=a),a===f){if(e)return Object.keys(h).length>0?h:{};e=j.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1]===c,g=-1;continue}if(!e||(g<0&&(g=a),a!==g))continue;let k=j.match(/^(command|url)\s*:\s*["']?([^"'\n]+)["']?\s*$/);if(!k)continue;let l=k[1],m=k[2];l&&m&&("command"===l&&(h.command=m.trim()),"url"===l&&(h.url=m.trim()))}return e?h:null}(a,b.key,"mindos");let d=dt(a),e="global"===c&&b.globalNestedKey?dq(d,b.globalNestedKey):dr(d,b.key),f=dr(e,"mindos");return f?{type:"string"==typeof f.type?f.type:void 0,command:"string"==typeof f.command?f.command:void 0,url:"string"==typeof f.url?f.url:void 0}:null}(f,a,c);if(!g)continue;let h="stdio"===g.type||g.command?"stdio":g.url?"http":"unknown";return{installed:!0,scope:c,transport:h,configPath:d,url:g.url}}catch{continue}}return{installed:!1}}(c,a),G=C&&D?(k=D,l=c,m=a,y=k.baseDir.endsWith("/")?`${k.baseDir}skills/`:`${k.baseDir}/skills/`,{mode:"additional",skillAgentName:k.key,workspacePath:du(k.skillDir||l.presenceDirs?.[0]&&`${l.presenceDirs[0]}skills/`||y,m.homeDir)}):a.resolveSkillWorkspaceProfile?.(b)??(n=b,o=c,p=a,z=dp(o,p),{mode:"mindos"===n?"universal":"unsupported",workspacePath:(0,x.join)(z,"skills")}),H=C?{hiddenRootPath:"",hiddenRootPresent:!1,conversationSignal:!1,usageSignal:!1}:a.detectAgentRuntimeSignals?.(b)??(q=c,r=a,{hiddenRootPath:A=dp(q,r),hiddenRootPresent:(r.pathExists??dh.existsSync)(A),conversationSignal:!1,usageSignal:!1}),I=C&&D?function(a,b={}){let c=du(a.global,b.homeDir);if(!(b.pathExists??dh.existsSync)(c))return{servers:[],sources:[]};try{let d=(b.readTextFile??dw)(c),e="toml"===a.format?dk(d,a.configKey):function(a,b){try{let c=dt(a),d=dr(c,b);if(d)return Object.keys(d).sort()}catch{}return[]}(d,a.configKey);return{servers:e,sources:e.length>0?[`local:${c}`]:[]}}catch{return{servers:[],sources:[]}}}(D,a):a.detectAgentConfiguredMcpServers?.(b)??function(a,b){let c=new Set,d=[];for(let[e,f]of[["global",a.global],["project",a.project]]){if(!f)continue;let g=dv(f,e,b);if((b.pathExists??dh.existsSync)(g))try{let h=(b.readTextFile??dw)(g),i=function(a,b,c){if("toml"===b.format)return dk(a,b.key);if("yaml"===b.format)return function(a,b){let c=new Set,d=!1,e=-1;for(let f of a.split("\n")){if(!f.trim()||f.trim().startsWith("#"))continue;let a=f.length-f.trimStart().length,g=f.trim();if(0===a&&g===`${b}:`){d=!0,e=-1;continue}if(0===a&&g){d=!1;continue}if(!d||(e<0&&(e=a),a!==e))continue;let h=g.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1];h&&c.add(h)}return[...c].sort()}(a,b.key);let d=dt(a);return Object.keys(("global"===c&&b.globalNestedKey?dq(d,b.globalNestedKey):dr(d,b.key))??{}).sort((a,b)=>a.localeCompare(b))}(h,a,e);for(let a of i)c.add(a);i.length>0&&d.push(`${e}:${f}`)}catch{continue}}return{servers:[...c].sort((a,b)=>a.localeCompare(b)),sources:d}}(c,a),J=C&&D?a.scanCustomAgentSkills?.(D)??(s=D,t=a,B=du(s.skillDir||(s.baseDir.endsWith("/")?`${s.baseDir}skills/`:`${s.baseDir}/skills/`),t.homeDir),{skills:t.listSkillNames?.(B)??function(a){if(!(0,dh.existsSync)(a))return[];try{return(0,dh.readdirSync)(a,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{return[]}}(B),sourcePath:B}):a.detectAgentInstalledSkills?.(b)??{skills:[],sourcePath:G.workspacePath};return{key:b,name:c.name,present:E,installed:F.installed,scope:F.scope,transport:F.transport,configPath:F.configPath,url:F.url,hasProjectScope:!!c.project,hasGlobalScope:!!c.global,preferredTransport:c.preferredTransport,format:c.format??"json",configKey:c.key,globalNestedKey:c.globalNestedKey,globalPath:c.global,projectPath:c.project,skillMode:G.mode,skillAgentName:G.skillAgentName,skillWorkspacePath:G.workspacePath,hiddenRootPath:H.hiddenRootPath,hiddenRootPresent:H.hiddenRootPresent,runtimeConversationSignal:H.conversationSignal,runtimeUsageSignal:H.usageSignal,runtimeLastActivityAt:H.lastActivityAt,configuredMcpServers:I.servers,configuredMcpServerCount:I.servers.length,configuredMcpSources:I.sources,installedSkillNames:J.skills,installedSkillCount:J.skills.length,installedSkillSourcePath:J.sourcePath,isCustom:C,customBaseDir:C?D?.baseDir:void 0}}),h=g.find(a=>"mindos"===a.key);return h&&function(a,b,c){a.present=!0,a.installed=!0,a.scope="builtin";try{let d=Number(c.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(b.readSettings?.(),"mcpPort")||8781;a.transport=`http :${d}`}catch{a.transport="http :8781"}try{let c=b.loadMindosSkills?.();c&&(a.installedSkillNames=c.names,a.installedSkillCount=c.names.length,a.installedSkillSourcePath=c.sourcePath,a.skillMode="universal",a.skillWorkspacePath=c.workspacePath)}catch{}let d=b.homeDir??(0,di.homedir)(),e=b.mindRoot??(0,x.join)(d,".mindos"),f=(0,x.join)(d,".mindos","mcp.json");try{if((b.pathExists??dh.existsSync)(f)){let c=b.readTextFile??dw,d=JSON.parse(c(f)),e=Object.keys(d.mcpServers??{});a.configuredMcpServers=e,a.configuredMcpServerCount=e.length,a.configuredMcpSources=e.length>0?[`local:${f}`]:[]}}catch{}a.runtimeConversationSignal=!0,a.runtimeLastActivityAt=(b.now??(()=>new Date))().toISOString(),a.hiddenRootPath=e,a.hiddenRootPresent=!0}(h,a,b),await dl(g,a),g.sort(dm),i({agents:g})}catch(a){return m(a)}}function dk(a,b){let c=new Set,d=`${b}.`,e=!1;for(let f of a.split("\n")){let a=f.trim();if(!(!a||a.startsWith("#"))){if(a.startsWith("[")&&a.endsWith("]")){let f=a.slice(1,-1).trim();if(e=f===b,f.startsWith(d)){let a=f.slice(d.length).split(".")[0];a&&c.add(a)}continue}if(e){let b=a.match(/^([a-zA-Z0-9_-]+)\s*=/)?.[1];b&&c.add(b)}}}return[...c].sort()}async function dl(a,b){let c=b.fetchHead??dy;await Promise.all(a.map(async a=>{if(a.installed&&a.url&&a.transport?.startsWith("http"))try{let b=new AbortController,d=setTimeout(()=>b.abort(),1e3);try{let d=await c(a.url,{signal:b.signal});d.status>=300&&405!==d.status&&(a.installed=!1)}finally{clearTimeout(d)}}catch{a.installed=!1}}))}function dm(a,b){return"mindos"===a.key?-1:"mindos"===b.key?1:dn(a)-dn(b)}function dn(a){return a.installed?0:a.present?1:2}function dp(a,b){let c=b.pathExists??dh.existsSync;for(let d of a.presenceDirs??[]){let a=du(d,b.homeDir);if(c(a))return a}return(0,x.dirname)(du(a.global,b.homeDir))}function dq(a,b){let c=b.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(ds))return null;let d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}function dr(a,b){if(!a||"object"!=typeof a||ds(b)||!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function ds(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function dt(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function du(a,b){return a.startsWith("~/")||a.startsWith("~\\")?(0,x.resolve)(b??(0,di.homedir)(),a.slice(2)):a}function dv(a,b,c){let d=du(a,c.homeDir);return"project"!==b||(0,x.isAbsolute)(d)?d:(0,x.resolve)(c.projectRoot??process.cwd(),d)}function dw(a){return(0,dh.readFileSync)(a,"utf-8")}function dx(a){try{return(0,b6.execFileSync)("win32"===process.platform?"where":"which",[a],{stdio:"pipe"}),!0}catch{return!1}}async function dy(a,b){return"function"!=typeof fetch?{status:200}:{status:(await fetch(a,{method:"HEAD",signal:b.signal})).status}}function dz(a){let b,c;try{var d;b=(d=a.readMcpConfig())&&"object"==typeof d&&d.mcpServers&&"object"==typeof d.mcpServers?d:{mcpServers:{}},c=a.readMcpToolCache()}catch(a){return m(a)}return i({servers:Object.entries(b.mcpServers).map(([a,b])=>{let d=c?.[a],e=(d?.tools??[]).map(a=>({name:a.name,description:a.description??""}));return{name:a,toolCount:e.length,tools:e,directTools:b.directTools??!1,lifecycle:b.lifecycle??"lazy",cached:!!d}})})}function dA(a,b){var c,d;let e=(c=a)&&"object"==typeof c?c:{};if(!e.server||"string"!=typeof e.server)return i({error:'Missing or invalid "server" field'},{status:400});let f=e.server.trim();if(!f||"__proto__"===(d=f)||"prototype"===d||"constructor"===d)return i({error:"Invalid server name"},{status:400});let g=e.directTools;if(!0!==g&&!1!==g&&!Array.isArray(g))return i({error:'"directTools" must be true, false, or string[]'},{status:400});if(Array.isArray(g)&&!g.every(a=>"string"==typeof a))return i({error:'"directTools" array must contain only strings'},{status:400});try{b.updateServerDirectTools(f,g)}catch(a){return m(a)}return i({ok:!0,server:f,directTools:g})}let dB=new Set(["mindos","mindos-zh"]);function dC(a,b={}){try{var c,d,e,f,g,h,j;let k=(c=a)&&"object"==typeof c?c:{},l=k.skill;if(!l||!dB.has(l))return i({error:"Invalid skill name"},{status:400});let m=Array.isArray(k.agents)?k.agents:[],n=m.find(a=>"string"!=typeof a||!dD(a.trim()));if(void 0!==n)return i({error:"Invalid agent name"},{status:400});let o=(d=m.map(a=>a.trim()),e=b.skillAgentRegistry??{},d.flatMap(a=>{if(!dD(a))return[];let b=Object.prototype.hasOwnProperty.call(e,a)?e[a]:void 0;if(!b)return[a];if("unsupported"===b.mode||"universal"===b.mode)return[];let c=b.skillAgentName||a;return dD(c)?[c]:[]})),p=["GeminiLight/MindOS"],q=function(a){let b=a.projectRoot??process.cwd(),c=a.cwd??process.cwd(),d=a.pathExists??dh.existsSync;for(let a of[(0,x.resolve)(c,"data/skills"),(0,x.join)(b,"skills"),(0,x.join)(b,"packages","web","data","skills")])if(d(a))return a;return null}(b);q&&p.push(q);let r="",s="",t="",u=b.runCommand??dF;for(let a of p){let c=(f=a,g=l,h=o,["skills","add",f,"--skill",g,...(h.length>0?h:["universal"]).flatMap(a=>["-a",a]),"-g","-y"]),d=(j=c,["npx",...j].map(dE).join(" "));r=d;try{return s=u("npx",c,{encoding:"utf-8",timeout:3e4,env:{...process.env,...b.env??{},NODE_ENV:"production"},stdio:"pipe"}),i({ok:!0,skill:l,agents:o,cmd:d,stdout:s.trim()})}catch(a){s=a.stdout||"",t=a.stderr||a.message||"Unknown error"}}return i({ok:!1,skill:l,agents:o,cmd:r,stdout:s,stderr:t})}catch(a){return m(a)}}function dD(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&"__proto__"!==a&&"prototype"!==a&&"constructor"!==a}function dE(a){return/^[A-Za-z0-9._=-]+$/.test(a)?a:`"${a.replace(/(["\\$`])/g,"\\$1")}"`}function dF(a,b,c){let d="npx"===a?function(a,b={}){let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&d.add((0,x.join)((0,x.dirname)(b.npm_execpath),"npx-cli.js"));let e=(0,x.dirname)(a);for(let a of(d.add((0,x.join)(e,"node_modules","npm","bin","npx-cli.js")),d.add((0,x.resolve)(e,"..","lib","node_modules","npm","bin","npx-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??dh.existsSync);if(e)return{command:d,args:[e,...a]};if((b.platform??process.platform)==="win32")throw Error("Unable to locate npm npx-cli.js for shell-free skill installation on Windows");return{command:"npx",args:a}}(b,{env:c.env}):{command:a,args:b};return(0,b6.execFileSync)(d.command,d.args,c)}var dG=c(77030);async function dH(a){try{let b=a.env??process.env,c=a.readSettings?.(),d=Number(b.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(c,"mcpPort")||8781,e=b.MINDOS_WEB_PORT||"3456",f=b.AUTH_TOKEN||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];return"string"==typeof c&&c.length>0?c:void 0}(c,"authToken"),g="1"===b.MINDOS_MANAGED;if((a.killByPort??function(a){let b=process.platform;for(let c of function(a,b={}){var c;let d;if(!(Number.isInteger(c=a)&&c>0&&c<=65535))return[];let e=b.platform??process.platform,f=b.execFile??((a,b)=>(0,aF.execFileSync)(a,b,{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}));if("win32"===e){try{d=function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(!/LISTENING/i.test(f))continue;let b=f.trim().split(/\s+/);if(b.length<5)continue;let g=b[1],h=Number(b[b.length-1]);d=g,e=a,d?.endsWith(`:${e}`)&&h>0&&c.add(h)}return[...c]}(a,f("netstat",["-ano"]))}catch{return[]}return dI(d,e,b)}let g=new Set;try{for(let b of f("lsof",["-ti",`:${a}`]).split(/\r?\n/).map(a=>Number(a.trim())).filter(a=>a>0))g.add(b)}catch{}if(0===g.size)try{for(let b of function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(d=f,e=a,RegExp(`:${e}(?!\\d)`).test(d))for(let a of f.matchAll(/pid=(\d+)/g)){let b=Number(a[1]);b>0&&c.add(b)}}return[...c]}(a,f("ss",["-tlnp"])))g.add(b)}catch{}return dI([...g],e,b)}(a,{platform:b}))try{"win32"===b?(0,aF.execFileSync)("taskkill",["/PID",String(c),"/T","/F"],{stdio:"ignore"}):process.kill(c,"SIGKILL")}catch{}})(d),g)return i({ok:!0,port:d,note:"ProcessManager will respawn"});let h=a.waitForPortFree??dK;if(!await h(d,5e3))return i({error:`MCP port ${d} still in use after kill`},{status:500});let j=a.pathExists??o.existsSync,{mcpDir:k,mcpBundle:l}=function(a,b){let c=[(0,p.resolve)(a,"packages","mindos"),a];for(let a of c){let c=(0,p.resolve)(a,"dist","protocols","mcp-server","index.cjs");if(b(c))return{mcpDir:a,mcpBundle:c}}let d=c[0]??a;return{mcpDir:d,mcpBundle:(0,p.resolve)(d,"dist","protocols","mcp-server","index.cjs")}}(a.projectRoot,j);if(!j(l))return i({error:"MCP bundle not found — reinstall @geminilight/mindos"},{status:500});let m={...b,MCP_TRANSPORT:"http",MCP_PORT:String(d),MCP_HOST:b.MCP_HOST||"0.0.0.0",MINDOS_URL:b.MINDOS_URL||`http://127.0.0.1:${e}`,...f?{AUTH_TOKEN:f}:{}},n=(a.spawnDetached??function(a,b,c){return(0,aF.spawn)(a,b,c)})(a.execPath??process.execPath,[l],{cwd:k,detached:!0,stdio:"ignore",env:m});return n.unref(),i({ok:!0,pid:n.pid,port:d})}catch(a){return m(a)}}function dI(a,b,c){let d=c.getCommandLine??dJ;return a.filter(a=>{let c,e=d(a,b);return"string"==typeof e&&((c=e.replace(/\\/g,"/").toLowerCase()).includes("/dist/protocols/mcp-server/index.cjs")||c.includes("/protocols/mcp-server/dist/index.cjs"))})}function dJ(a,b){try{if("win32"===b)try{return String((0,aF.execFileSync)("powershell.exe",["-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId = ${a}" -ErrorAction SilentlyContinue).CommandLine`],{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}))}catch{return String((0,aF.execFileSync)("wmic",["process","where",`ProcessId=${a}`,"get","CommandLine","/format:value"],{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}))}return String((0,aF.execFileSync)("ps",["-p",String(a),"-o","args="],{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}))}catch{return null}}function dK(a,b){return dL(a,b,dM)}async function dL(a,b,c){let d=Date.now();for(;Date.now()-d<b;){if(!await c(a))return!0;await new Promise(a=>setTimeout(a,300))}return!1}function dM(a){return new Promise(b=>{let c=(0,dG.createServer)();c.once("error",()=>b(!0)),c.once("listening",()=>{c.close(),b(!1)}),c.listen(a,"127.0.0.1")})}async function dN(a,b={}){try{let c=a.readSettings(),d=Number(a.env?.MINDOS_MCP_PORT)||c.mcpPort||8781,e=c.authToken??"",f=!!e,g=b.host??`127.0.0.1:${d}`,h=function(a){if(a.includes("]"))return a.slice(0,a.lastIndexOf("]")+1);let b=a.lastIndexOf(":");return b>0?a.slice(0,b):a}(g),j=`http://${h}:${d}/mcp`,k=`http://127.0.0.1:${d}/api/health`,l=!1;try{let b=await a.fetchHealth(k,2e3);l=b.ok&&b.body?.ok===!0&&"mindos"===b.body.service}catch{l=!1}return i({running:l,transport:"http",endpoint:j,port:d,toolCount:24*!!l,authConfigured:f,maskedToken:f?a.maskToken(e):void 0,authToken:f?e:void 0,localIP:a.getLocalIP(),connectionMode:c.connectionMode??{cli:!0,mcp:!1}})}catch(a){return m(a)}}let dO={".pdf":"application/pdf",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".bmp":"image/bmp",".ico":"image/x-icon",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".flac":"audio/flac",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".mkv":"video/x-matroska"};function dP(a,b,c={}){let d,e=W(a,"path");if(!e)return i({error:"Missing path parameter"},{status:400});let f=e.toLowerCase(),g=f.slice(f.lastIndexOf(".")),h=dO[g];if(!h)return i({error:`Unsupported binary file type: ${g}`},{status:400});try{d=(0,w.n2)(b.mindRoot,e)}catch{return i({error:"Access denied"},{status:403})}if(!(0,o.existsSync)(d))return i({error:"File not found"},{status:404});let j=(0,o.statSync)(d);if(j.size>0xc800000)return i({error:`File too large (${Math.round(j.size/1024/1024)}MB). Max: 200MB`},{status:413});let k=j.size,m=c.range;if(m){let a=m.match(/bytes=(\d+)-(\d*)/);if(a){let b=Math.min(Number.parseInt(a[1]??"0",10),k-1),c=Math.min(a[2]?Number.parseInt(a[2],10):k-1,k-1),e=c-b+1,f=Buffer.alloc(e),g=(0,o.openSync)(d,"r");try{(0,o.readSync)(g,f,0,e,b)}finally{(0,o.closeSync)(g)}return{status:206,body:f,headers:{"Content-Type":h,"Content-Length":String(e),"Content-Range":`bytes ${b}-${c}/${k}`,"Accept-Ranges":"bytes",...l(60)}}}}return{status:200,body:(0,o.readFileSync)(d),headers:{"Content-Type":h,"Content-Length":String(k),"Accept-Ranges":"bytes","Content-Disposition":"inline",...l(60)}}}function dQ(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,30)):10;return i(b.getRecentlyModified(e),{headers:l(30)})}async function dR(a,b){let c=W(a,"q")??"";return c.trim()?i(await b.search(c,{limit:20}),{headers:l(300)}):i([])}function dS(a){if(a.prewarmSearch)return i(a.prewarmSearch(),{headers:l(60)});let b=a.collectAllFiles();return i({warmed:!0,cacheState:"built",documentCount:b.length,core:{cacheState:"built",fileCount:b.length}},{headers:l(60)})}function dT(a){return a?"••••••":""}function dU(){return{enabled:!1,provider:"local",baseUrl:"",apiKey:"",model:""}}function dV(a){try{let b=a.readSettings(),c=b.ai??{},d=a.env??{},e={AI_PROVIDER:!!d.AI_PROVIDER,MIND_ROOT:!!d.MIND_ROOT},f={AI_PROVIDER:d.AI_PROVIDER||"",MIND_ROOT:d.MIND_ROOT||""};for(let b of a.providerEnv.ids){let c=a.providerEnv.getApiKeyEnvVar(b);if(!c)continue;let d=a.providerEnv.getApiKeyFromEnv(b);e[c]=!!d,f[c]=d?"***set***":""}let g=a.readWebSearchConfig();return i({ai:{activeProvider:c.activeProvider??"",providers:c.providers??[]},embedding:b.embedding??dU(),embeddingStatus:a.getEmbeddingStatus(),webSearch:{provider:g.provider??"auto",exaApiKey:dT(g.exaApiKey),perplexityApiKey:dT(g.perplexityApiKey),geminiApiKey:dT(g.geminiApiKey)},mindRoot:b.mindRoot,webPassword:b.webPassword??"",authToken:function(a){if(!a)return"";let b=a.split("-");return b.length>=2?`${b[0]}-${b.slice(1,-1).map(()=>"••••").join("-")}-${b[b.length-1]}`:a.length>8?`${a.slice(0,4)}••••••••${a.slice(-4)}`:"***set***"}(b.authToken),allowNetworkAccess:!0===b.allowNetworkAccess,port:Number(d.MINDOS_WEB_PORT)||b.port||3456,mcpPort:b.mcpPort??8781,agent:b.agent??{},skillPaths:b.skillPaths??{},envOverrides:e,envValues:f})}catch(a){return m(a)}}function dW(a,b){try{var c,d;let e,f=b.readSettings(),g={...f.ai??{}};a.ai&&(void 0!==a.ai.activeProvider&&(g.activeProvider=a.ai.activeProvider),void 0!==a.ai.providers&&(g.providers=b.parseProviders(a.ai.providers)));let h=b.readWebSearchConfig(),j=function(a,b){if(!a||"object"!=typeof a)return;let c={};return"string"==typeof a.provider&&(c.provider=a.provider),"string"==typeof a.exaApiKey&&(c.exaApiKey=a.exaApiKey.includes("••")?b.exaApiKey:a.exaApiKey),"string"==typeof a.perplexityApiKey&&(c.perplexityApiKey=a.perplexityApiKey.includes("••")?b.perplexityApiKey:a.perplexityApiKey),"string"==typeof a.geminiApiKey&&(c.geminiApiKey=a.geminiApiKey.includes("••")?b.geminiApiKey:a.geminiApiKey),{...b,...c}}(a.webSearch,h);j&&b.writeWebSearchConfig(j);let k=""===a.authToken?"":f.authToken,l={ai:g,embedding:a.embedding&&"object"==typeof a.embedding?function(a){if(!a||"object"!=typeof a)return dU();let b="local"===a.provider||"api"===a.provider?a.provider:"api";return{enabled:!0===a.enabled,provider:b,baseUrl:"string"==typeof a.baseUrl?a.baseUrl:"",apiKey:"string"==typeof a.apiKey?a.apiKey:"",model:"string"==typeof a.model?a.model:""}}(a.embedding):f.embedding,mindRoot:a.mindRoot??f.mindRoot,agent:a.agent??f.agent,skillPaths:function(a,b){if(void 0===b||!b||"object"!=typeof b)return a;let c={...a??{}};return"boolean"==typeof b.enableAgentsDir&&(c.enableAgentsDir=b.enableAgentsDir),Array.isArray(b.custom)&&(c.custom=b.custom.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean)),c}(f.skillPaths,a.skillPaths),webPassword:a.webPassword??f.webPassword,authToken:k,allowNetworkAccess:"boolean"==typeof a.allowNetworkAccess?a.allowNetworkAccess:!0===f.allowNetworkAccess,port:"number"==typeof a.port?a.port:f.port,mcpPort:"number"==typeof a.mcpPort?a.mcpPort:f.mcpPort,startMode:a.startMode??f.startMode,connectionMode:(c=f.connectionMode,d=a.connectionMode,e=c??{cli:!0,mcp:!1},d&&"object"==typeof d?"boolean"!=typeof d.cli||"boolean"!=typeof d.mcp?e:{cli:d.cli,mcp:d.mcp}:e),baseUrlCompat:f.baseUrlCompat};if(b.writeSettings(l),JSON.stringify(l.ai)!==JSON.stringify(f.ai)){let a=b.readSettings();a.baseUrlCompat&&Object.keys(a.baseUrlCompat).length>0&&b.writeSettings({...a,baseUrlCompat:{}})}return l.mindRoot!==f.mindRoot&&b.invalidateCache(),i({ok:!0})}catch(a){return m(a)}}function dX(a){try{let b,c=a.readSettings(),d=((b=(0,t.randomBytes)(12).toString("hex")).match(/.{4}/g)??[b]).join("-");return a.writeSettings({...c,authToken:d}),i({ok:!0,token:d})}catch(a){return m(a)}}c(86761);let dY=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function dZ(a,b={}){try{var c,d,e,f,g,h;let j=a&&"object"==typeof a?a:{},k=d2(j.provider),l=d2(j.apiKey),m=d2(j.baseUrl);if(k&&(c=k,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,k);if(!d)return i({ok:!1,error:"Provider not found"},{status:404});return await d$({provider:d.protocol,apiKey:l||d.apiKey||"",baseUrl:m||d.baseUrl||"",services:b})}if(!k||(e=k,(f=b).isProviderId?!f.isProviderId(e):!dY.has(e)))return i({ok:!1,error:"Invalid provider"},{status:400});if(b.supportsListModels?.(k)===!1){return i({ok:!0,models:(g=k,h=b,(h.getRegistryModels?.(g)??[]).filter(Boolean).sort())})}let n=b.effectiveAiConfig?.(k)??{provider:k,apiKey:"",baseUrl:""},o=l||n.apiKey||"",p=m||n.baseUrl||"";if(!o&&!p)return i({ok:!1,error:"No API key configured"});return await d$({provider:k,apiKey:o,baseUrl:p,services:b})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}}async function d$(a){let b=new AbortController,c=setTimeout(()=>b.abort(),a.services.timeoutMs??1e4);try{let c=await d_(a.provider,a.apiKey,a.baseUrl,b.signal,a.services);return i({ok:!0,models:c})}catch(a){if(a instanceof Error&&"AbortError"===a.name)return i({ok:!1,error:"Request timed out"});return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}finally{clearTimeout(c)}}async function d_(a,b,c,d,e){let f=e.getProviderApiType?.(a)??"openai-completions",g=function(a,b,c,d){let e=d.buildEndpointCandidates??((a,b)=>[`${a.replace(/\/+$/,"")}${b}`]);if(b)return e(b,"/models",c);let f=d.getDefaultBaseUrl?.(a)??"";return f?e(f,"/models",c):["https://api.openai.com/v1/models"]}(a,c,f,e);return await d0(g,b,f,d,e)}async function d0(a,b,c,d,e){let f=e.fetch??d1,g="No endpoint candidates",h=[];for(let e of a){h.push(e);let a={};"anthropic-messages"===c?(b&&(a["x-api-key"]=b),a["anthropic-version"]="2023-06-01"):b&&(a.Authorization=`Bearer ${b}`);let i=await f(e,{headers:a,signal:d});if(!i.ok){let a=await i.text().catch(()=>"");if(g=`HTTP ${i.status} @ ${e}: ${a.slice(0,200)}`,400===i.status||404===i.status||405===i.status)continue;throw Error(`Failed to list models: ${g}`)}let j=await i.json();if(j&&"object"==typeof j&&Array.isArray(j.data))return j.data.map(a=>a.id).filter(a=>"string"==typeof a&&!!a).sort();if(j&&"object"==typeof j&&Array.isArray(j.models))return j.models.map(a=>"string"==typeof a?a:a?.id).filter(a=>"string"==typeof a&&!!a).sort();throw Error(`Failed to list models: incompatible response shape from ${e}; tried ${h.length} endpoint candidate(s)`)}throw Error(`Failed to list models: ${g}; tried ${h.length} endpoint candidate(s)`)}async function d1(a,b){return fetch(a,b)}function d2(a){return"string"==typeof a?a:""}let d3=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function d4(a,b={}){try{var c,d;let e=a&&"object"==typeof a?a:{},f=d8(e.provider),g=d8(e.apiKey),h=d8(e.model),j=d8(e.baseUrl),k=d8(e.baseProviderId);if(k&&d9(k,b)){if(!g)return i({ok:!1,code:"auth_error",error:"No API key configured"});if(!h)return i({ok:!1,code:"unknown",error:"Model is required"},{status:400});return await d6({provider:k,apiKey:g,model:h,baseUrl:j,services:b})}if(f&&(c=f,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,f);if(!d)return i({ok:!1,code:"unknown",error:"Provider not found"},{status:400});let e=g||d.apiKey||"";if(!e)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d6({provider:d.protocol,apiKey:e,model:h||d.model||void 0,baseUrl:j||d.baseUrl||void 0,services:b})}if(!f||!d9(f,b))return i({ok:!1,code:"unknown",error:"Invalid provider"},{status:400});let l=b.effectiveAiConfig?.(f)??{provider:f,apiKey:"",model:void 0,baseUrl:void 0},m=g||l.apiKey||"";if(!m)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d6({provider:f,apiKey:m,model:h||l.model||void 0,baseUrl:j||void 0,services:b})}catch(a){return i({ok:!1,...d5(a)})}}function d5(a){let b=a instanceof Error?a.message:String(a),c=b.toLowerCase();return a instanceof Error&&"AbortError"===a.name?{code:"network_error",error:"Request timed out"}:c.includes("401")||c.includes("403")||c.includes("invalid")&&c.includes("key")||c.includes("authentication")||c.includes("unauthorized")||c.includes("api key")&&(c.includes("not valid")||c.includes("incorrect"))?{code:"auth_error",error:"Invalid API key"}:c.includes("model")&&(c.includes("not found")||c.includes("does not exist"))?{code:"model_not_found",error:`Model not found: ${b.slice(0,200)}`}:c.includes("404")||c.includes("page not found")||c.includes("invalid url")?{code:"endpoint_error",error:`Endpoint or protocol mismatch: ${b.slice(0,200)}`}:c.includes("429")||c.includes("rate")||c.includes("quota")?{code:"rate_limited",error:"Rate limited — try again later"}:c.includes("econnrefused")||c.includes("enotfound")||c.includes("etimedout")||c.includes("fetch failed")||c.includes("network")?{code:"network_error",error:b.slice(0,200)}:{code:"unknown",error:b.slice(0,200)}}async function d6(a){let b=a.services.now?.()??Date.now(),c=new AbortController,d=setTimeout(()=>c.abort(),a.services.timeoutMs??15e3);try{let d=a.services.testModel??d7;return await d({provider:a.provider,apiKey:a.apiKey,model:a.model,baseUrl:a.baseUrl,signal:c.signal}),a.services.clearCompatCacheForBaseUrl?.(a.baseUrl),i({ok:!0,latency:(a.services.now?.()??Date.now())-b})}catch(a){return i({ok:!1,...d5(a)})}finally{clearTimeout(d)}}async function d7(){throw Error("Provider test service is not configured")}function d8(a){return"string"==typeof a?a:""}function d9(a,b){return b.isProviderId?b.isProviderId(a):d3.has(a)}function ea(a,b={}){try{var c,d;let e=!(c=a)||"object"!=typeof c||!1!==c.removeConfig,f=function(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}(b.env??process.env),g=b.spawn??aF.spawn,h=b.nodeBin??f.MINDOS_NODE_BIN??process.execPath,j=b.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:b.env??process.env,runtimeRoot:b.runtimeRoot,projectRoot:b.projectRoot}),k=g(h,[j,"uninstall"],{detached:!0,stdio:["pipe","ignore","ignore"],env:f});return k.stdin?.write((d=e,`Y
|
|
55
55
|
${d?"Y":"N"}
|
|
56
56
|
N
|
|
57
|
-
`)),k.stdin?.end(),k.unref(),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function d6(a,b={}){let c=a&&"object"==typeof a?Number(a.port):0;if(!c||c<1024||c>65535)return i({error:"Invalid port"},{status:400});if(b.myWebPort&&c===b.myWebPort||b.myMcpPort&&c===b.myMcpPort)return i({available:!0,isSelf:!0});let d=b.isPortInUse??d7;if(!await d(c))return i({available:!0,isSelf:!1});let e=b.isSelfPort??d8;if(await e(c))return i({available:!0,isSelf:!0});let f=new Set;b.myWebPort&&f.add(b.myWebPort),b.myMcpPort&&f.add(b.myMcpPort);let g=b.findFreePort??d9;return i({available:!1,isSelf:!1,suggestion:await g(c+1,f)})}async function d7(a){return new Promise(b=>{let c=(0,dD.createConnection)({port:a,host:"127.0.0.1"}),d=a=>{c.destroy(),b(a)};c.setTimeout(500,()=>d(!0)),c.once("connect",()=>d(!0)),c.once("error",a=>{b("ECONNREFUSED"!==a.code)})})}async function d8(a){for(let b of["127.0.0.1","localhost"])try{let c=await fetch(`http://${b}:${a}/api/health`,{signal:AbortSignal.timeout(2e3)});if(!c.ok)continue;let d=await c.json();if("mindos"===d.service)return!0}catch{}return!1}async function d9(a,b){for(let c=a;c<=65535;c++)if(!b.has(c)&&!await d7(c))return c;return null}function ea(a,b={}){let c=a&&"object"==typeof a?a.seed:void 0,d="string"==typeof c&&c.trim()?(0,t.createHash)("sha256").update(c.trim()).digest("hex").slice(0,24):(b.randomBytes??t.randomBytes)(12).toString("hex");return i({token:d.match(/.{4}/g)?.join("-")??d})}function eb(a,b={}){let c=b.homeDir??(0,Y.homedir)();return"~"===a?c:a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(c,a.slice(2)):a}function ec(a,b={}){let c=ef(a),d=b.homeDir??(0,Y.homedir)(),e=ef(d);if(!eg(a))return{safe:!1,reason:"Knowledge base path must be an absolute path or start with ~/.",reasonZh:"知识库路径必须是绝对路径,或以 ~/ 开头。"};if(eh(c,`${e}/.mindos`))return{safe:!1,reason:"Cannot use ~/.mindos/ - this is the MindOS system directory (config, cache, updater). It gets modified during updates.",reasonZh:"不能使用 ~/.mindos/ 目录——这是 MindOS 系统目录(配置、缓存、更新器),更新时会被修改。"};if("win32"===process.platform){let a=ef(process.env.APPDATA||p.join(d,"AppData","Roaming")),b=ef(process.env.LOCALAPPDATA||p.join(d,"AppData","Local")),e=`${b}/mindos`;if(eh(c,`${a}/mindos`)||eh(c,e))return{safe:!1,reason:"Cannot use AppData\\MindOS - this is the Electron app data directory. It may be cleared when uninstalling.",reasonZh:"不能使用 AppData\\MindOS 目录——这是 Electron 应用数据目录,卸载时可能被清除。"};let f=ef(process.env.ProgramFiles||"C:\\Program Files"),g=ef(process.env["ProgramFiles(x86)"]||"C:\\Program Files (x86)");if(eh(c,f)||eh(c,g))return{safe:!1,reason:"Cannot use Program Files - this is the Windows application directory. It gets cleared when reinstalling apps.",reasonZh:"不能使用 Program Files 目录——这是 Windows 应用程序目录,重装时会被清除。"}}if("darwin"===process.platform){if(c.includes(".app/")||c.endsWith(".app"))return{safe:!1,reason:"Cannot use a path inside an .app bundle - it gets replaced when updating the app.",reasonZh:"不能使用 .app 包内的路径——更新应用时会被替换。"};if(c.startsWith("/applications/mindos"))return{safe:!1,reason:"Cannot use /Applications/MindOS - this is the app install location. Use ~/MindOS/mind or ~/Documents instead.",reasonZh:"不能使用 /Applications/MindOS——这是应用安装位置。请使用 ~/MindOS/mind 或 ~/Documents。"}}if("linux"===process.platform&&(c.startsWith("/opt/mindos")||c.startsWith("/usr/share/mindos")))return{safe:!1,reason:"Cannot use /opt/MindOS or /usr/share/MindOS - these are system install directories. Use ~/MindOS/mind instead.",reasonZh:"不能使用 /opt/MindOS 或 /usr/share/MindOS——这些是系统安装目录。请使用 ~/MindOS/mind。"};let f=process.env.MINDOS_INSTALL_DIR;return f&&eh(c,ef(f))?{safe:!1,reason:"Cannot use a path inside the MindOS Desktop installation directory - it gets deleted when reinstalling or uninstalling the app.",reasonZh:"不能使用 MindOS Desktop 安装目录内的路径——重装或卸载应用时会被删除。"}:{safe:!0}}function ed(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({error:"Invalid path"},{status:400});let d=eb(c.trim(),b),e=ec(d,b);if(!e.safe)return i({exists:!1,empty:!0,count:0,unsafe:!0,reason:e.reason,reasonZh:e.reasonZh});let f=(0,o.existsSync)(d),g=!0,h=0;if(f)try{h=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).length,g=0===h}catch{g=!1}return i({exists:f,empty:g,count:h,unsafe:!1})}function ee(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({dirs:[]});let d=eb(c.trim(),b);if(!eg(d)||!(0,o.existsSync)(d))return i({dirs:[]});try{let a=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).filter(a=>{try{return(0,o.statSync)((0,p.join)(d,a)).isDirectory()}catch{return!1}}).sort().slice(0,20);return i({dirs:a})}catch{return i({dirs:[]})}}function ef(a){return p.normalize(a).toLowerCase().replace(/\\/g,"/")}function eg(a){return p.isAbsolute(a)||p.win32.isAbsolute(a)}function eh(a,b){return a===b||a.startsWith(`${b}/`)}let ei={anthropic:{name:"Anthropic",defaultModel:"claude-sonnet-4-6"},openai:{name:"OpenAI",defaultModel:"gpt-5.4"},google:{name:"Google Gemini",defaultModel:"gemini-2.5-flash"},groq:{name:"Groq",defaultModel:"llama-3.3-70b-versatile"},xai:{name:"xAI (Grok)",defaultModel:"grok-3"},openrouter:{name:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4"},mistral:{name:"Mistral",defaultModel:"mistral-large-latest"},deepseek:{name:"DeepSeek",defaultModel:"deepseek-chat"},zai:{name:"ZhipuAI (GLM)",defaultModel:"glm-4-plus"},"zai-cn":{name:"ZhipuAI (GLM China)",defaultModel:"glm-4-plus"},"kimi-coding":{name:"Kimi Coding",defaultModel:"kimi-k2-thinking"},ollama:{name:"Ollama",defaultModel:"llama3.2"},"lm-studio":{name:"LM Studio",defaultModel:""},vllm:{name:"vLLM",defaultModel:""}};function ej(a){return{...a,ai:{activeProvider:a.ai?.activeProvider??"",providers:Array.isArray(a.ai?.providers)?a.ai.providers:[]},mindRoot:a.mindRoot??""}}function ek(a){return a.homeDir?.()??(0,Y.homedir)()}function el(a,b,c,d,e){let f=String(b),g=e.providerPresets?.[f]??ei[f];return{id:a,name:"string"==typeof c.name&&c.name?c.name:d?.name??g?.name??f,protocol:f,apiKey:"string"==typeof c.apiKey&&c.apiKey?c.apiKey:d?.apiKey??"",model:"string"==typeof c.model&&c.model?c.model:d?.model??g?.defaultModel??"",baseUrl:"string"==typeof c.baseUrl?c.baseUrl:d?.baseUrl??""}}function em(a,b){return"string"==typeof a&&(b.isProviderId?.(a)??Object.prototype.hasOwnProperty.call(ei,a))}function en(a){let b,c,d,e,f;return b=ej(a.readSettings()),c=ek(a),d=a.pathSep?.()??p.sep,e=b.mindRoot||[c,"MindOS","mind"].join(d),f=b.ai.providers.map(a=>{var b;return{id:a.id,name:a.name,protocol:a.protocol,model:a.model,baseUrl:a.baseUrl,apiKeyMask:(b=a.apiKey)&&!(b.length<6)?`${b.slice(0,6)}***`:b?"***":""}}),i({mindRoot:e,homeDir:c,platform:a.platform?.()??(0,Y.platform)(),port:b.port??3456,mcpPort:b.mcpPort??8781,authToken:b.authToken??"",webPassword:b.webPassword??"",activeProvider:b.ai.activeProvider,providerConfigs:f,guideState:b.guideState??null})}function eo(a,b){return function(a,b){var c,d,e,f,g,h,j;let k=a&&"object"==typeof a?a:{},l="string"==typeof k.mindRoot?k.mindRoot:"";if(!l)return i({error:"mindRoot is required"},{status:400});let m=(c=l.trim(),d=b,d.expandPathHome?.(c)??eb(c,{homeDir:ek(d)})),n=(e=m,f=b,f.validateMindRootPath?.(e)??ec(e,{homeDir:ek(f)}));if(!n.safe)return i({error:n.reason??"Unsafe path",errorZh:n.reasonZh,unsafePath:!0},{status:400});let p="number"==typeof k.port?k.port:3456,q="number"==typeof k.mcpPort?k.mcpPort:8781;if(p<1024||p>65535)return i({error:`Invalid web port: ${p}`},{status:400});if(q<1024||q>65535)return i({error:`Invalid MCP port: ${q}`},{status:400});let r="string"==typeof k.template?k.template:void 0,s=(b.existsSync??o.existsSync)(m);if(r){let a=function(a,b,c){if(c.applyTemplate)return c.applyTemplate(a,b);let d=cl({template:a},{mindRoot:b});return d.status>=400?{error:d.body?.error??`Failed to apply template: ${a}`,status:d.status}:{ok:!0}}(r,m,b);if("error"in a)return i({error:a.error},{status:a.status??500})}else s||(b.mkdirSync??(a=>(0,o.mkdirSync)(a,{recursive:!0})))(m);let t=ej(b.readSettings()),u=t.port??3456,v="string"==typeof k.authToken?k.authToken:void 0,w="string"==typeof k.webPassword?k.webPassword:void 0,x=v??t.authToken??"",y=w??"",z=!0===t.setupPending||!t.mindRoot||p!==(t.port??3456)||q!==(t.mcpPort??8781)||m!==(t.mindRoot||"")||x!==(t.authToken??"")||y!==(t.webPassword??""),A={...t,ai:function(a,b,c){if(!b||"object"!=typeof b)return a;let d=[...a.providers],e=b.providers;if(Array.isArray(e)){for(let a of e){if(!a||"object"!=typeof a)continue;let b=a;if("string"!=typeof b.id||!em(b.protocol,c))continue;let e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g=el(b.id,b.protocol,b,f,c);e>=0?d[e]=g:d.push(g)}return{activeProvider:"string"==typeof b.activeProvider?b.activeProvider:a.activeProvider,providers:d}}if(e&&"object"==typeof e){for(let[a,b]of Object.entries(e)){if(!em(a,c)||!b||"object"!=typeof b)continue;let e=d.findIndex(b=>b.protocol===a),f=e>=0?d[e]:void 0,g=el(f?.id??c.generateProviderId?.()??`p_${Math.random().toString(36).slice(2,10)}`,a,b,f,c);e>=0?d[e]=g:d.push(g)}let f=a.activeProvider;return"string"==typeof b.provider&&em(b.provider,c)&&(f=d.find(a=>a.protocol===b.provider)?.id??f),{activeProvider:f,providers:d}}return a}(t.ai,k.ai,b),mindRoot:m,port:p,mcpPort:q,authToken:v??t.authToken,webPassword:w??"",startMode:t.startMode,setupPending:!1,setupPort:void 0,disabledSkills:"zh"===r?["mindos"]:["mindos-zh"],guideState:{active:!0,dismissed:!1,template:"zh"===(g=r)?"zh":"empty"===g?"empty":"en",step1Done:!1,askedAI:!1,nextStepIndex:0},connectionMode:(h=t.connectionMode,(j=k.connectionMode)&&"object"==typeof j&&"boolean"==typeof j.cli&&"boolean"==typeof j.mcp?{cli:j.cli,mcp:j.mcp}:h??{cli:!0,mcp:!1})};return b.writeSettings(A),i({ok:!0,portChanged:p!==u,needsRestart:z,newPort:p})}(a,b)}function ep(a,b){let c=(a&&"object"==typeof a?a:{}).guideState;if(!c||"object"!=typeof c||Array.isArray(c))return i({error:"guideState object required"},{status:400});let d=ej(b.readSettings()),e={...d.guideState??{active:!1,dismissed:!1,template:"en",step1Done:!1,askedAI:!1,nextStepIndex:0}};return"boolean"==typeof c.dismissed&&(e.dismissed=c.dismissed),"boolean"==typeof c.step1Done&&(e.step1Done=c.step1Done),"boolean"==typeof c.askedAI&&(e.askedAI=c.askedAI),"number"==typeof c.nextStepIndex&&c.nextStepIndex>=0&&(e.nextStepIndex=c.nextStepIndex),"boolean"==typeof c.active&&(e.active=c.active),"number"==typeof c.walkthroughStep&&c.walkthroughStep>=0&&(e.walkthroughStep=c.walkthroughStep),"boolean"==typeof c.walkthroughDismissed&&(e.walkthroughDismissed=c.walkthroughDismissed),b.writeSettings({...d,guideState:e}),i({ok:!0,guideState:e})}function eq(a){let b=new Set(a.disabledSkills??[]),c=new Map;for(let d of a.skillRoots)for(let a of function(a,b){if(!(0,o.existsSync)(a.path)||"mindos-user"===a.origin&&(0,o.lstatSync)(a.path).isSymbolicLink())return[];let c=[];for(let d of(0,o.readdirSync)(a.path,{withFileTypes:!0})){if(!d.isDirectory())continue;let e=(0,p.join)(a.path,d.name,"SKILL.md");if(!(0,o.existsSync)(e)||!(0,o.statSync)(e).isFile())continue;let f=et((0,o.readFileSync)(e,"utf-8")),g=f.name||d.name;c.push({name:g,description:f.description||g,path:e,source:a.source,enabled:!b.has(g),editable:a.editable,origin:a.origin})}return c}(d,b))c.has(a.name)||c.set(a.name,a);return i({skills:[...c.values()].sort((a,b)=>a.name.localeCompare(b.name))},{headers:k(300)})}function er(a,b){let c=(g=a)&&"object"==typeof g?g:{},{action:d,name:e}=c,f=b.readSettings();if(e&&(h=e,!/^[a-z0-9][a-z0-9-]*$/.test(h)))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});switch(d){case"toggle":if(!e)return i({error:"name required"},{status:400});var g,h,j,k,l,m,n,q=e,r=c.enabled,s=f,t=b;let u=[...s.disabledSkills??[]];if(!1===r)u.includes(q)||u.push(q);else{let a=u.indexOf(q);a>=0&&u.splice(a,1)}return t.writeSettings({...s,disabledSkills:u}),i({ok:!0});case"create":if(!e)return i({error:"name required"},{status:400});{let a=es(b.mindRoot);if("response"in a)return a.response;var v={name:e,description:c.description,content:c.content,userSkillsDir:a.path,skillRoots:b.skillRoots};for(let a of v.skillRoots)if(!a.editable&&(0,o.existsSync)((0,p.join)(a.path,v.name)))return i({error:"A built-in skill with this name already exists"},{status:409});let d=(0,p.join)(v.userSkillsDir,v.name);if((0,o.existsSync)(d))return i({error:"A skill with this name already exists"},{status:409});(0,o.mkdirSync)(d,{recursive:!0});let f=v.content&&v.content.trimStart().startsWith("---")?v.content:`---
|
|
57
|
+
`)),k.stdin?.end(),k.unref(),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function eb(a,b={}){let c=a&&"object"==typeof a?Number(a.port):0;if(!c||c<1024||c>65535)return i({error:"Invalid port"},{status:400});if(b.myWebPort&&c===b.myWebPort||b.myMcpPort&&c===b.myMcpPort)return i({available:!0,isSelf:!0});let d=b.isPortInUse??ec;if(!await d(c))return i({available:!0,isSelf:!1});let e=b.isSelfPort??ed;if(await e(c))return i({available:!0,isSelf:!0});let f=new Set;b.myWebPort&&f.add(b.myWebPort),b.myMcpPort&&f.add(b.myMcpPort);let g=b.findFreePort??ee;return i({available:!1,isSelf:!1,suggestion:await g(c+1,f)})}async function ec(a){return new Promise(b=>{let c=(0,dG.createConnection)({port:a,host:"127.0.0.1"}),d=a=>{c.destroy(),b(a)};c.setTimeout(500,()=>d(!0)),c.once("connect",()=>d(!0)),c.once("error",a=>{b("ECONNREFUSED"!==a.code)})})}async function ed(a){for(let b of["127.0.0.1","localhost"])try{let c=await fetch(`http://${b}:${a}/api/health`,{signal:AbortSignal.timeout(2e3)});if(!c.ok)continue;let d=await c.json();if("mindos"===d.service)return!0}catch{}return!1}async function ee(a,b){for(let c=a;c<=65535;c++)if(!b.has(c)&&!await ec(c))return c;return null}function ef(a,b={}){let c=a&&"object"==typeof a?a.seed:void 0,d="string"==typeof c&&c.trim()?(0,t.createHash)("sha256").update(c.trim()).digest("hex").slice(0,24):(b.randomBytes??t.randomBytes)(12).toString("hex");return i({token:d.match(/.{4}/g)?.join("-")??d})}function eg(a,b={}){let c=b.homeDir??(0,Y.homedir)();return"~"===a?c:a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(c,a.slice(2)):a}function eh(a,b={}){let c=ek(a),d=b.homeDir??(0,Y.homedir)(),e=ek(d);if(!el(a))return{safe:!1,reason:"Knowledge base path must be an absolute path or start with ~/.",reasonZh:"知识库路径必须是绝对路径,或以 ~/ 开头。"};if(em(c,`${e}/.mindos`))return{safe:!1,reason:"Cannot use ~/.mindos/ - this is the MindOS system directory (config, cache, updater). It gets modified during updates.",reasonZh:"不能使用 ~/.mindos/ 目录——这是 MindOS 系统目录(配置、缓存、更新器),更新时会被修改。"};if("win32"===process.platform){let a=ek(process.env.APPDATA||p.join(d,"AppData","Roaming")),b=ek(process.env.LOCALAPPDATA||p.join(d,"AppData","Local")),e=`${b}/mindos`;if(em(c,`${a}/mindos`)||em(c,e))return{safe:!1,reason:"Cannot use AppData\\MindOS - this is the Electron app data directory. It may be cleared when uninstalling.",reasonZh:"不能使用 AppData\\MindOS 目录——这是 Electron 应用数据目录,卸载时可能被清除。"};let f=ek(process.env.ProgramFiles||"C:\\Program Files"),g=ek(process.env["ProgramFiles(x86)"]||"C:\\Program Files (x86)");if(em(c,f)||em(c,g))return{safe:!1,reason:"Cannot use Program Files - this is the Windows application directory. It gets cleared when reinstalling apps.",reasonZh:"不能使用 Program Files 目录——这是 Windows 应用程序目录,重装时会被清除。"}}if("darwin"===process.platform){if(c.includes(".app/")||c.endsWith(".app"))return{safe:!1,reason:"Cannot use a path inside an .app bundle - it gets replaced when updating the app.",reasonZh:"不能使用 .app 包内的路径——更新应用时会被替换。"};if(c.startsWith("/applications/mindos"))return{safe:!1,reason:"Cannot use /Applications/MindOS - this is the app install location. Use ~/MindOS/mind or ~/Documents instead.",reasonZh:"不能使用 /Applications/MindOS——这是应用安装位置。请使用 ~/MindOS/mind 或 ~/Documents。"}}if("linux"===process.platform&&(c.startsWith("/opt/mindos")||c.startsWith("/usr/share/mindos")))return{safe:!1,reason:"Cannot use /opt/MindOS or /usr/share/MindOS - these are system install directories. Use ~/MindOS/mind instead.",reasonZh:"不能使用 /opt/MindOS 或 /usr/share/MindOS——这些是系统安装目录。请使用 ~/MindOS/mind。"};let f=process.env.MINDOS_INSTALL_DIR;return f&&em(c,ek(f))?{safe:!1,reason:"Cannot use a path inside the MindOS Desktop installation directory - it gets deleted when reinstalling or uninstalling the app.",reasonZh:"不能使用 MindOS Desktop 安装目录内的路径——重装或卸载应用时会被删除。"}:{safe:!0}}function ei(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({error:"Invalid path"},{status:400});let d=eg(c.trim(),b),e=eh(d,b);if(!e.safe)return i({exists:!1,empty:!0,count:0,unsafe:!0,reason:e.reason,reasonZh:e.reasonZh});let f=(0,o.existsSync)(d),g=!0,h=0;if(f)try{h=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).length,g=0===h}catch{g=!1}return i({exists:f,empty:g,count:h,unsafe:!1})}function ej(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({dirs:[]});let d=eg(c.trim(),b);if(!el(d)||!(0,o.existsSync)(d))return i({dirs:[]});try{let a=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).filter(a=>{try{return(0,o.statSync)((0,p.join)(d,a)).isDirectory()}catch{return!1}}).sort().slice(0,20);return i({dirs:a})}catch{return i({dirs:[]})}}function ek(a){return p.normalize(a).toLowerCase().replace(/\\/g,"/")}function el(a){return p.isAbsolute(a)||p.win32.isAbsolute(a)}function em(a,b){return a===b||a.startsWith(`${b}/`)}let en={anthropic:{name:"Anthropic",defaultModel:"claude-sonnet-4-6"},openai:{name:"OpenAI",defaultModel:"gpt-5.4"},google:{name:"Google Gemini",defaultModel:"gemini-2.5-flash"},groq:{name:"Groq",defaultModel:"llama-3.3-70b-versatile"},xai:{name:"xAI (Grok)",defaultModel:"grok-3"},openrouter:{name:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4"},mistral:{name:"Mistral",defaultModel:"mistral-large-latest"},deepseek:{name:"DeepSeek",defaultModel:"deepseek-chat"},zai:{name:"ZhipuAI (GLM)",defaultModel:"glm-4-plus"},"zai-cn":{name:"ZhipuAI (GLM China)",defaultModel:"glm-4-plus"},"kimi-coding":{name:"Kimi Coding",defaultModel:"kimi-k2-thinking"},ollama:{name:"Ollama",defaultModel:"llama3.2"},"lm-studio":{name:"LM Studio",defaultModel:""},vllm:{name:"vLLM",defaultModel:""}};function eo(a){return{...a,ai:{activeProvider:a.ai?.activeProvider??"",providers:Array.isArray(a.ai?.providers)?a.ai.providers:[]},mindRoot:a.mindRoot??""}}function ep(a){return a.homeDir?.()??(0,Y.homedir)()}function eq(a,b,c,d,e){let f=String(b),g=e.providerPresets?.[f]??en[f];return{id:a,name:"string"==typeof c.name&&c.name?c.name:d?.name??g?.name??f,protocol:f,apiKey:"string"==typeof c.apiKey&&c.apiKey?c.apiKey:d?.apiKey??"",model:"string"==typeof c.model&&c.model?c.model:d?.model??g?.defaultModel??"",baseUrl:"string"==typeof c.baseUrl?c.baseUrl:d?.baseUrl??""}}function er(a,b){return"string"==typeof a&&(b.isProviderId?.(a)??Object.prototype.hasOwnProperty.call(en,a))}function es(a){let b,c,d,e,f;return b=eo(a.readSettings()),c=ep(a),d=a.pathSep?.()??p.sep,e=b.mindRoot||[c,"MindOS","mind"].join(d),f=b.ai.providers.map(a=>{var b;return{id:a.id,name:a.name,protocol:a.protocol,model:a.model,baseUrl:a.baseUrl,apiKeyMask:(b=a.apiKey)&&!(b.length<6)?`${b.slice(0,6)}***`:b?"***":""}}),i({mindRoot:e,homeDir:c,platform:a.platform?.()??(0,Y.platform)(),port:b.port??3456,mcpPort:b.mcpPort??8781,authToken:b.authToken??"",webPassword:b.webPassword??"",activeProvider:b.ai.activeProvider,providerConfigs:f,guideState:b.guideState??null})}function et(a,b){return function(a,b){var c,d,e,f,g,h,j;let k=a&&"object"==typeof a?a:{},l="string"==typeof k.mindRoot?k.mindRoot:"";if(!l)return i({error:"mindRoot is required"},{status:400});let m=(c=l.trim(),d=b,d.expandPathHome?.(c)??eg(c,{homeDir:ep(d)})),n=(e=m,f=b,f.validateMindRootPath?.(e)??eh(e,{homeDir:ep(f)}));if(!n.safe)return i({error:n.reason??"Unsafe path",errorZh:n.reasonZh,unsafePath:!0},{status:400});let p="number"==typeof k.port?k.port:3456,q="number"==typeof k.mcpPort?k.mcpPort:8781;if(p<1024||p>65535)return i({error:`Invalid web port: ${p}`},{status:400});if(q<1024||q>65535)return i({error:`Invalid MCP port: ${q}`},{status:400});let r="string"==typeof k.template?k.template:void 0,s=(b.existsSync??o.existsSync)(m);if(r){let a=function(a,b,c){if(c.applyTemplate)return c.applyTemplate(a,b);let d=cl({template:a},{mindRoot:b});return d.status>=400?{error:d.body?.error??`Failed to apply template: ${a}`,status:d.status}:{ok:!0}}(r,m,b);if("error"in a)return i({error:a.error},{status:a.status??500})}else s||(b.mkdirSync??(a=>(0,o.mkdirSync)(a,{recursive:!0})))(m);let t=eo(b.readSettings()),u=t.port??3456,v="string"==typeof k.authToken?k.authToken:void 0,w="string"==typeof k.webPassword?k.webPassword:void 0,x=v??t.authToken??"",y=w??"",z=!0===t.setupPending||!t.mindRoot||p!==(t.port??3456)||q!==(t.mcpPort??8781)||m!==(t.mindRoot||"")||x!==(t.authToken??"")||y!==(t.webPassword??""),A={...t,ai:function(a,b,c){if(!b||"object"!=typeof b)return a;let d=[...a.providers],e=b.providers;if(Array.isArray(e)){for(let a of e){if(!a||"object"!=typeof a)continue;let b=a;if("string"!=typeof b.id||!er(b.protocol,c))continue;let e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g=eq(b.id,b.protocol,b,f,c);e>=0?d[e]=g:d.push(g)}return{activeProvider:"string"==typeof b.activeProvider?b.activeProvider:a.activeProvider,providers:d}}if(e&&"object"==typeof e){for(let[a,b]of Object.entries(e)){if(!er(a,c)||!b||"object"!=typeof b)continue;let e=d.findIndex(b=>b.protocol===a),f=e>=0?d[e]:void 0,g=eq(f?.id??c.generateProviderId?.()??`p_${Math.random().toString(36).slice(2,10)}`,a,b,f,c);e>=0?d[e]=g:d.push(g)}let f=a.activeProvider;return"string"==typeof b.provider&&er(b.provider,c)&&(f=d.find(a=>a.protocol===b.provider)?.id??f),{activeProvider:f,providers:d}}return a}(t.ai,k.ai,b),mindRoot:m,port:p,mcpPort:q,authToken:v??t.authToken,webPassword:w??"",startMode:t.startMode,setupPending:!1,setupPort:void 0,disabledSkills:"zh"===r?["mindos"]:["mindos-zh"],guideState:{active:!0,dismissed:!1,template:"zh"===(g=r)?"zh":"empty"===g?"empty":"en",step1Done:!1,askedAI:!1,nextStepIndex:0},connectionMode:(h=t.connectionMode,(j=k.connectionMode)&&"object"==typeof j&&"boolean"==typeof j.cli&&"boolean"==typeof j.mcp?{cli:j.cli,mcp:j.mcp}:h??{cli:!0,mcp:!1})};return b.writeSettings(A),i({ok:!0,portChanged:p!==u,needsRestart:z,newPort:p})}(a,b)}function eu(a,b){let c=(a&&"object"==typeof a?a:{}).guideState;if(!c||"object"!=typeof c||Array.isArray(c))return i({error:"guideState object required"},{status:400});let d=eo(b.readSettings()),e={...d.guideState??{active:!1,dismissed:!1,template:"en",step1Done:!1,askedAI:!1,nextStepIndex:0}};return"boolean"==typeof c.dismissed&&(e.dismissed=c.dismissed),"boolean"==typeof c.step1Done&&(e.step1Done=c.step1Done),"boolean"==typeof c.askedAI&&(e.askedAI=c.askedAI),"number"==typeof c.nextStepIndex&&c.nextStepIndex>=0&&(e.nextStepIndex=c.nextStepIndex),"boolean"==typeof c.active&&(e.active=c.active),"number"==typeof c.walkthroughStep&&c.walkthroughStep>=0&&(e.walkthroughStep=c.walkthroughStep),"boolean"==typeof c.walkthroughDismissed&&(e.walkthroughDismissed=c.walkthroughDismissed),b.writeSettings({...d,guideState:e}),i({ok:!0,guideState:e})}function ev(a){let b=new Set(a.disabledSkills??[]),c=new Map;for(let d of a.skillRoots)for(let a of function(a,b){if(!(0,o.existsSync)(a.path)||"mindos-user"===a.origin&&(0,o.lstatSync)(a.path).isSymbolicLink())return[];let c=[],d=function(a,b){let c=(0,p.join)(a.path,"SKILL.md");if(!(0,o.existsSync)(c)||!(0,o.statSync)(c).isFile())return null;let d=ey((0,o.readFileSync)(c,"utf-8")),e=d.name||(0,p.basename)(a.path);return{name:e,description:d.description||e,path:c,source:a.source,enabled:!b.has(e),editable:a.editable,origin:a.origin}}(a,b);for(let e of(d&&c.push(d),(0,o.readdirSync)(a.path,{withFileTypes:!0}))){if(!function(a,b){if(b.isDirectory())return!0;if(!b.isSymbolicLink()||"mindos-user"===a.origin)return!1;try{return(0,o.statSync)((0,p.join)(a.path,b.name)).isDirectory()}catch{return!1}}(a,e))continue;let d=(0,p.join)(a.path,e.name,"SKILL.md");if(!(0,o.existsSync)(d)||!(0,o.statSync)(d).isFile())continue;let f=ey((0,o.readFileSync)(d,"utf-8")),g=f.name||e.name;c.push({name:g,description:f.description||g,path:d,source:a.source,enabled:!b.has(g),editable:a.editable,origin:a.origin})}return c}(d,b))c.has(a.name)||c.set(a.name,a);return i({skills:[...c.values()].sort((a,b)=>a.name.localeCompare(b.name))},{headers:{"Cache-Control":"no-store"}})}function ew(a,b){let c=(g=a)&&"object"==typeof g?g:{},{action:d,name:e}=c,f=b.readSettings();if(e&&!((h=e).trim().length>0&&"."!==h&&".."!==h&&!h.includes("/")&&!h.includes("\\")&&!h.includes("\0")))return i({error:"Invalid skill name"},{status:400});switch(d){case"toggle":if(!e)return i({error:"name required"},{status:400});var g,h,j,k,l,m,n,q=e,r=c.enabled,s=f,t=b;let u=[...s.disabledSkills??[]];if(!1===r)u.includes(q)||u.push(q);else{let a=u.indexOf(q);a>=0&&u.splice(a,1)}return t.writeSettings({...s,disabledSkills:u}),i({ok:!0});case"create":if(!e)return i({error:"name required"},{status:400});if(!ez(e))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});{let a=ex(b.mindRoot);if("response"in a)return a.response;var v={name:e,description:c.description,content:c.content,userSkillsDir:a.path,skillRoots:b.skillRoots};for(let a of v.skillRoots)if(!a.editable&&(0,o.existsSync)((0,p.join)(a.path,v.name)))return i({error:"A built-in skill with this name already exists"},{status:409});let d=(0,p.join)(v.userSkillsDir,v.name);if((0,o.existsSync)(d))return i({error:"A skill with this name already exists"},{status:409});(0,o.mkdirSync)(d,{recursive:!0});let f=v.content&&v.content.trimStart().startsWith("---")?v.content:`---
|
|
58
58
|
name: ${v.name}
|
|
59
59
|
description: ${v.description||v.name}
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
-
${v.content||""}`;return(0,o.writeFileSync)((0,p.join)(d,"SKILL.md"),f,"utf-8"),i({ok:!0})}case"update":if(!e)return i({error:"name required"},{status:400});{let a,d=
|
|
63
|
-
`,"utf-8"),(0,o.renameSync)(d,a)}function
|
|
62
|
+
${v.content||""}`;return(0,o.writeFileSync)((0,p.join)(d,"SKILL.md"),f,"utf-8"),i({ok:!0})}case"update":if(!e)return i({error:"name required"},{status:400});if(!ez(e))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});{let a,d=ex(b.mindRoot);if("response"in d)return d.response;return j=e,k=c.content,l=d.path,a=(0,p.join)(l,j),(0,o.existsSync)(a)?(void 0!==k&&(0,o.writeFileSync)((0,p.join)(a,"SKILL.md"),k,"utf-8"),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"delete":if(!e)return i({error:"name required"},{status:400});if(!ez(e))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});{let a,c=ex(b.mindRoot);if("response"in c)return c.response;return m=e,n=c.path,a=(0,p.join)(n,m),(0,o.existsSync)(a)?((0,o.rmSync)(a,{recursive:!0,force:!0}),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"read":if(!e)return i({error:"name required"},{status:400});return function(a,b){for(let c of b){let b=(0,p.join)(c.path,a,"SKILL.md");if((0,o.existsSync)(b))return i({content:(0,o.readFileSync)(b,"utf-8")})}for(let c of b){let b=(0,p.join)(c.path,"SKILL.md");if(!(0,o.existsSync)(b))continue;let d=(0,o.readFileSync)(b,"utf-8");if((ey(d).name||(0,p.basename)(c.path))===a)return i({content:d})}return i({error:"Skill not found"},{status:404})}(e,b.skillRoots);case"read-native":if(!e||!c.sourcePath)return i({error:"name and sourcePath required"},{status:400});return function(a,b,c){var d;let e=(0,p.resolve)(b);if(d=e,!c.some(a=>(0,p.resolve)(a.path)===d))return i({error:"Invalid sourcePath"},{status:400});let f=(0,p.resolve)(e,a,"SKILL.md"),g=(0,p.relative)(e,f);if(g.startsWith("..")||(0,p.isAbsolute)(g))return i({error:"Invalid path"},{status:400});if(!(0,o.existsSync)(f)){let b=(0,p.resolve)(e,"SKILL.md");if(!(0,o.existsSync)(b))return i({error:"Skill not found"},{status:404});let c=(0,o.readFileSync)(b,"utf-8"),d=ey(c);return(d.name||(0,p.basename)(e))!==a?i({error:"Skill not found"},{status:404}):i({content:c,description:d.description})}let h=(0,o.readFileSync)(f,"utf-8");return i({content:h,description:ey(h).description})}(e,c.sourcePath,b.skillRoots);case"record-install":return function(a,b,c){let d=a.agentKey,e=a.name,f=a.installPath;if(!d||!e||!f)return i({error:"agentKey, name, and installPath are required"},{status:400});let g=Array.isArray(b.installedSkillAgents)?[...b.installedSkillAgents]:[],h={agent:d,skill:e,path:f},j=g.findIndex(a=>a.agent===d&&a.skill===e);return j>=0?g[j]=h:g.push(h),c.writeSettings({...b,installedSkillAgents:g}),i({ok:!0})}(c,f,b);default:return i({error:`Unknown action: ${String(d)}`},{status:400})}}function ex(a){try{var b;return{path:(b=a,(0,o.existsSync)(b)?(0,w.n2)(b,".skills"):(0,p.join)(b,".skills"))}}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return{response:i({error:"Access denied"},{status:403})};return{response:i({error:a},{status:500})}}}function ey(a){let b=a.match(/^---\s*\n([\s\S]*?)\n---/);if(!b)return{};let c=b[1]??"",d={};for(let a of c.split(/\r?\n/)){let b=a.indexOf(":");if(b<0)continue;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim().replace(/^['"]|['"]$/g,"");"name"===c&&(d.name=e),"description"===c&&(d.description=e)}return d}function ez(a){return/^[a-z0-9][a-z0-9-]*$/.test(a)}function eA(a,b){let c=eB(W(a,"space"));if(!c)return i({error:"space parameter required"},{status:400});try{(0,w.n2)(b.mindRoot,c)}catch{return i({error:"Access denied"},{status:403})}let d=b.collectAllFiles?.()??ai(b.mindRoot),e="."===c?"":`${c}/`;return i({fileCount:d.filter(a=>{let b=eB(a);return!!b&&b.startsWith(e)}).length},{headers:l(30)})}function eB(a){if(!a)return;let b=p.posix.normalize(a.trim().replace(/\\/g,"/").replace(/^\/+/,""));return b&&".."!==b&&b.startsWith("../"),b}let eC=(0,p.join)((0,Y.homedir)(),".mindos"),eD=(0,p.join)(eC,"config.json"),eE=(0,p.join)(eC,"sync-state.json");async function eF(a={}){try{let b=eJ(a),c=b.sync??{},d=eL(a),e=b.mindRoot;if(!c.enabled)return i({enabled:!1});let f=!!e&&eP(a,e),g=f&&e?function(a,b){if(a.getRemoteUrl)return a.getRemoteUrl(b);try{return eQ(b,["remote","get-url","origin"])}catch{return null}}(a,e):null;if(!f||!g)return i({enabled:!0,needsSetup:!0,provider:c.provider||"git",remote:g||"(not configured)",branch:"main",lastSync:null,lastPull:null,unpushed:"?",conflicts:[],lastError:f?"Remote not configured. Please re-configure sync.":"Git repository not found in knowledge base directory. Please re-configure sync.",autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300});return i({enabled:!0,provider:c.provider||"git",remote:g,branch:function(a,b){if(a.getBranch)return a.getBranch(b);try{return eQ(b,["rev-parse","--abbrev-ref","HEAD"])}catch{return"main"}}(a,e)||"main",lastSync:d.lastSync||null,lastPull:d.lastPull||null,unpushed:function(a,b){if(a.getUnpushedCount)return a.getUnpushedCount(b);try{return eQ(b,["rev-list","--count","@{u}..HEAD"])}catch{return"?"}}(a,e),conflicts:d.conflicts||[],lastError:d.lastError||null,autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function eG(a,b={}){try{let n=a&&"object"==typeof a?a:{},p=eJ(b),q=p.mindRoot;if("reset"===n.action){var c,d,e,f=p,g=b;delete f.sync,eK(f,g);try{eM({},g)}catch{}return i({ok:!0,enabled:!1})}if(!q)return i({error:"No mindRoot configured"},{status:400});switch(n.action){case"init":return await eH(n,b);case"now":return await eI(q,b);case"on":return p.sync={...p.sync??{},enabled:!0},eK(p,b),i({ok:!0,enabled:!0});case"off":return p.sync={...p.sync??{},enabled:!1},eK(p,b),i({ok:!0,enabled:!1});case"gitignore-get":var h=q;try{return i({content:(0,o.readFileSync)((0,w.n2)(h,".gitignore"),"utf-8")})}catch{return i({content:""})}case"gitignore-save":var j=q,k=n;if("string"!=typeof k.content)return i({error:"Missing content"},{status:400});try{return(0,o.writeFileSync)((0,w.n2)(j,".gitignore"),k.content,"utf-8"),i({ok:!0})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}case"resolve-conflict":return function(a,b,c){let d=b.remote,e=b.branch??"keep-local";if(!d||"string"!=typeof d)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eR(a,b)}(a,d))return i({error:"Invalid file path"},{status:400});let f=eR(a,`${d}.sync-conflict`),g=eR(a,d);if(!f||!g)return i({error:"Invalid file path"},{status:400});"keep-remote"===e&&(0,o.existsSync)(f)&&(0,o.writeFileSync)(g,(0,o.readFileSync)(f,"utf-8"),"utf-8"),(0,o.existsSync)(f)&&(0,o.unlinkSync)(f);let h=eL(c);return h.conflicts&&(h.conflicts=h.conflicts.filter(a=>a.file!==d),eM(h,c)),i({ok:!0})}(q,n,b);case"conflict-preview":var l=q,m=n;let r=m.remote;if(!r||"string"!=typeof r)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eR(a,b)}(l,r))return i({error:"Invalid file path"},{status:400});let s=eR(l,r),t=eR(l,`${r}.sync-conflict`);return s&&t?i({local:(0,o.existsSync)(s)?(0,o.readFileSync)(s,"utf-8"):"",remote:(0,o.existsSync)(t)?(0,o.readFileSync)(t,"utf-8"):""}):i({error:"Invalid file path"},{status:400});case"update-intervals":let u,v;return c=n,d=p,e=b,u="number"==typeof c.autoCommitInterval?c.autoCommitInterval:void 0,v="number"==typeof c.autoPullInterval?c.autoPullInterval:void 0,void 0===u&&void 0===v?i({error:"At least one interval must be provided"},{status:400}):void 0!==u&&(!Number.isInteger(u)||u<10||u>300)?i({error:"autoCommitInterval must be an integer between 10 and 300 seconds"},{status:400}):void 0!==v&&(!Number.isInteger(v)||v<60||v>3600)?i({error:"autoPullInterval must be an integer between 60 and 3600 seconds"},{status:400}):(d.sync=d.sync??{},void 0!==u&&(d.sync.autoCommitInterval=u),void 0!==v&&(d.sync.autoPullInterval=v),eK(d,e),i({autoCommitInterval:d.sync.autoCommitInterval||30,autoPullInterval:d.sync.autoPullInterval||300}));default:return i({error:`Unknown action: ${n.action}`},{status:400})}}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function eH(a,b){let c=a.remote?.trim();if(!c)return i({error:"Remote URL is required"},{status:400});let d=c.startsWith("https://"),e=/^git@[\w.-]+:.+/.test(c);if(!d&&!e)return i({error:"Invalid remote URL — must be HTTPS or SSH format"},{status:400});let f=["sync","init","--non-interactive","--remote",c,"--branch",a.branch?.trim()||"main"];a.token&&f.push("--token",a.token);try{return await eS(f,12e4,b),i({success:!0,message:"Sync initialized"})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:400})}}async function eI(a,b){if(!eP(b,a))return i({error:"Not a git repository"},{status:400});try{return await eS(["sync","now"],12e4,b),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eJ(a){return a.readConfig?a.readConfig():eN(a.configPath??eD)}function eK(a,b){b.writeConfig?b.writeConfig(a):eO(b.configPath??eD,a)}function eL(a){return a.readState?a.readState():eN(a.statePath??eE)}function eM(a,b){b.writeState?b.writeState(a):eO(b.statePath??eE,a)}function eN(a){try{return JSON.parse((0,o.readFileSync)(a,"utf-8"))}catch{return{}}}function eO(a,b){let c=(0,p.dirname)(a);(0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0});let d=`${a}.tmp`;(0,o.writeFileSync)(d,`${JSON.stringify(b,null,2)}
|
|
63
|
+
`,"utf-8"),(0,o.renameSync)(d,a)}function eP(a,b){return a.isGitRepo?a.isGitRepo(b):(0,o.existsSync)((0,p.join)(b,".git"))}function eQ(a,b){return(0,aF.execFileSync)("git",b,{cwd:a,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()}function eR(a,b){try{return(0,w.n2)(a,b)}catch{return null}}async function eS(a,b,c){if(c.runCli)return void await c.runCli(a,b);let d=c.env??process.env,e=c.nodeBin??d.MINDOS_NODE_BIN??process.execPath,f=c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:d,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot});await new Promise((c,d)=>{(0,aF.execFile)(e,[f,...a],{timeout:b,encoding:"utf-8"},(a,b,e)=>{var f,g;let h;a?d(Error((f=a,g=b,(h=[eT(e),eT(g),f.message].filter(Boolean)[0]??"Command failed").length>4e3?`${h.slice(0,4e3)}...`:h))):c()})})}function eT(a){return a?a.toString().trim():""}function eU(a){return i({v:a.getTreeVersion()},{headers:l(0)})}let eV={stage:"idle",stages:[],error:null,version:null,startedAt:null},eW=["https://registry.npmmirror.com/@geminilight/mindos/latest","https://registry.npmjs.org/@geminilight/mindos/latest"];function eX(a={}){let b=a.statusPath??(0,p.resolve)((0,Y.homedir)(),".mindos","update-status.json");try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));return i(a)}catch{return i(eV)}}async function eY(a={}){let b=a.currentVersion??function(a){for(let b of a??[...process.env.MINDOS_PROJECT_ROOT?[(0,p.resolve)(process.env.MINDOS_PROJECT_ROOT,"package.json")]:[],(0,p.resolve)(process.cwd(),"..","package.json")])try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if("string"==typeof a.version)return a.version}catch{}return"0.0.0"}(a.packageJsonPaths),c=b,d=a.fetcher??e1;for(let b of a.registries??eW)try{let a=new AbortController,e=setTimeout(()=>a.abort(),2e3);try{let e=await d(b,{signal:a.signal});if(!e.ok)continue;let f=await e.json(),g=f&&"object"==typeof f?f.version:void 0;if("string"==typeof g&&g){c=g;break}}finally{clearTimeout(e)}}catch{continue}return i({current:b,latest:c,hasUpdate:function(a,b){let c=e2(a),d=e2(b);if(!c||!d)return 0;for(let a of[0,1,2])if(c[a]!==d[a])return c[a]-d[a];return 0}(c,b)>0})}function eZ(a={}){try{var b;let c,d,e,f=(b=a.env??process.env,c=e0(b),d=b.MINDOS_WEB_PORT,e=b.MINDOS_MCP_PORT,d&&(c.MINDOS_OLD_WEB_PORT=d),e&&(c.MINDOS_OLD_MCP_PORT=e),c);return e_("restart",f,a),(a.scheduleExit??(a=>setTimeout(()=>process.exit(0),a)))(1500),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function e$(a={}){try{var b;let c=(b=a.env??process.env,e0(b));return e_("update",c,a),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function e_(a,b,c){(c.spawn??aF.spawn)(c.nodeBin??b.MINDOS_NODE_BIN??process.execPath,[c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:c.env??process.env,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot}),a],{detached:!0,stdio:"ignore",env:b}).unref()}function e0(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}async function e1(a,b){return fetch(a,{signal:b.signal})}function e2(a){let b=a.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);return b?[Number(b[1]),Number(b[2]),Number(b[3])]:null}let e3=".mindos/workflows",e4=`title: {TITLE}
|
|
64
64
|
description: ""
|
|
65
65
|
|
|
66
66
|
steps:
|
|
@@ -68,7 +68,7 @@ steps:
|
|
|
68
68
|
name: Step 1
|
|
69
69
|
prompt: |
|
|
70
70
|
Describe what this step should do.
|
|
71
|
-
`;function e$(a){return i({workflows:function(a){let b;try{b=(0,w.n2)(a,eY)}catch{return[]}if(!(0,o.existsSync)(b))return[];let c=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile()||!/\.flow\.(yaml|yml)$/i.test(a.name))continue;let d=(0,p.join)(b,a.name),e=(0,o.statSync)(d).mtimeMs;try{let b=(0,o.readFileSync)(d,"utf-8"),f=function(a,b){let c=e0(a.match(/^title:\s*(.*)$/m)?.[1])||e1(b),d=e0(a.match(/^description:\s*(.*)$/m)?.[1])||void 0,e=a.search(/^steps:\s*$/m);return{title:c,description:d,stepCount:((e>=0?a.slice(e):"").match(/^\s*-\s+/gm)??[]).length}}(b,a.name);c.push({path:`${eY}/${a.name}`,fileName:a.name,mtime:e,...f})}catch(b){c.push({path:`${eY}/${a.name}`,fileName:a.name,title:e1(a.name),stepCount:0,mtime:e,error:b instanceof Error?b.message:"Parse error"})}}return c.sort((a,b)=>b.mtime-a.mtime)}(a.mindRoot)})}function e_(a,b){let c=a&&"object"==typeof a&&"string"==typeof a.name?a.name.trim():"";if(!c)return i({error:"name is required"},{status:400});let d=c.trim().replace(/\s+/g," ").slice(0,200),e=d.replace(/[/\\:*?"<>|\x00-\x1F]/g,"-").replace(/-{2,}/g,"-").replace(/^[-.\s]+|[-.\s]+$/g,"").slice(0,120).trim();if(!e)return i({error:"name must contain at least one valid filename character"},{status:400});let f=`${e}.flow.yaml`;try{let c=(0,w.n2)(b.mindRoot,eY);(0,o.mkdirSync)(c,{recursive:!0});let e=(0,w.n2)(b.mindRoot,`${eY}/${f}`);if((0,o.existsSync)(e))return i({error:"Workflow already exists"},{status:409});let g=a&&"object"==typeof a&&"string"==typeof a.template?a.template:"blank",h=function(a,b,c){if("blank"!==b)try{let d=(0,w.n2)(a,eY),e=(0,o.readdirSync)(d).find(a=>a.toLowerCase().includes(b.toLowerCase())&&/\.workflow\.(yaml|yml)$/i.test(a));if(e){let b=(0,w.n2)(a,`${eY}/${e}`);return(0,o.readFileSync)(b,"utf-8").replace(/^title:.*$/m,`title: ${e2(c)}`)}}catch{}return eZ.replace("{TITLE}",e2(c))}(b.mindRoot,g,d);return(0,o.writeFileSync)(e,h,"utf-8"),i({path:`${eY}/${f}`})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}function e0(a){return(a??"").trim().replace(/^['"]|['"]$/g,"")}function e1(a){return a.replace(/\.flow\.(yaml|yml)$/i,"")}function e2(a){return`'${a.replace(/'/g,"''")}'`}[{id:"health",method:"GET",path:"/api/health",auth:"public"},{id:"files",method:"GET",path:"/api/files",auth:"required"},{id:"recent-files",method:"GET",path:"/api/recent-files",auth:"required"},{id:"tree-version",method:"GET",path:"/api/tree-version",auth:"required"},{id:"file.read",method:"GET",path:"/api/file",auth:"required"},{id:"file.write",method:"POST",path:"/api/file",auth:"required"},{id:"file.raw",method:"GET",path:"/api/file/raw",auth:"required"},{id:"search",method:"GET",path:"/api/search",auth:"required"},{id:"search.prewarm",method:"GET",path:"/api/search/prewarm",auth:"required"},{id:"a2a",method:"POST",path:"/api/a2a",auth:"required"},{id:"a2a.options",method:"OPTIONS",path:"/api/a2a",auth:"public"},{id:"a2a.agents",method:"GET",path:"/api/a2a/agents",auth:"required"},{id:"a2a.delegations",method:"GET",path:"/api/a2a/delegations",auth:"required"},{id:"a2a.discover",method:"POST",path:"/api/a2a/discover",auth:"required"},{id:"acp.config",method:"GET",path:"/api/acp/config",auth:"required"},{id:"acp.config.update",method:"POST",path:"/api/acp/config",auth:"required"},{id:"acp.config.delete",method:"DELETE",path:"/api/acp/config",auth:"required"},{id:"acp.detect",method:"GET",path:"/api/acp/detect",auth:"required"},{id:"acp.install",method:"POST",path:"/api/acp/install",auth:"required"},{id:"acp.registry",method:"GET",path:"/api/acp/registry",auth:"required"},{id:"acp.session",method:"GET",path:"/api/acp/session",auth:"required"},{id:"acp.session.action",method:"POST",path:"/api/acp/session",auth:"required"},{id:"acp.session.close",method:"DELETE",path:"/api/acp/session",auth:"required"},{id:"backlinks",method:"GET",path:"/api/backlinks",auth:"required"},{id:"graph",method:"GET",path:"/api/graph",auth:"required"},{id:"agent-activity",method:"GET",path:"/api/agent-activity",auth:"required"},{id:"bootstrap",method:"GET",path:"/api/bootstrap",auth:"required"},{id:"connect",method:"GET",path:"/api/connect",auth:"required"},{id:"embedding",method:"GET",path:"/api/embedding",auth:"required"},{id:"embedding.action",method:"POST",path:"/api/embedding",auth:"required"},{id:"channels.verify",method:"POST",path:"/api/channels/verify",auth:"required"},{id:"im.activity",method:"GET",path:"/api/im/activity",auth:"required"},{id:"im.config",method:"GET",path:"/api/im/config",auth:"required"},{id:"im.config.update",method:"PUT",path:"/api/im/config",auth:"required"},{id:"im.config.delete",method:"DELETE",path:"/api/im/config",auth:"required"},{id:"im.status",method:"GET",path:"/api/im/status",auth:"required"},{id:"im.test",method:"POST",path:"/api/im/test",auth:"required"},{id:"im.webhook-status",method:"GET",path:"/api/im/webhook-status",auth:"required"},{id:"im.feishu.long-connection",method:"GET",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.start",method:"POST",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.stop",method:"DELETE",path:"/api/im/feishu/long-connection",auth:"required"},{id:"monitoring",method:"GET",path:"/api/monitoring",auth:"required"},{id:"update-status",method:"GET",path:"/api/update-status",auth:"required"},{id:"update-check",method:"GET",path:"/api/update-check",auth:"required"},{id:"restart",method:"POST",path:"/api/restart",auth:"required"},{id:"update",method:"POST",path:"/api/update",auth:"required"},{id:"uninstall",method:"POST",path:"/api/uninstall",auth:"required"},{id:"init",method:"POST",path:"/api/init",auth:"required"},{id:"sync",method:"GET",path:"/api/sync",auth:"required"},{id:"sync.action",method:"POST",path:"/api/sync",auth:"required"},{id:"inbox",method:"GET",path:"/api/inbox",auth:"required"},{id:"inbox.save",method:"POST",path:"/api/inbox",auth:"required"},{id:"inbox.archive",method:"DELETE",path:"/api/inbox",auth:"required"},{id:"setup.check-path",method:"POST",path:"/api/setup/check-path",auth:"required"},{id:"setup.check-port",method:"POST",path:"/api/setup/check-port",auth:"required"},{id:"setup.generate-token",method:"POST",path:"/api/setup/generate-token",auth:"required"},{id:"setup.ls",method:"POST",path:"/api/setup/ls",auth:"required"},{id:"setup",method:"GET",path:"/api/setup",auth:"required"},{id:"setup.apply",method:"POST",path:"/api/setup",auth:"required"},{id:"setup.guide-state",method:"PATCH",path:"/api/setup",auth:"required"},{id:"workflows",method:"GET",path:"/api/workflows",auth:"required"},{id:"workflows.create",method:"POST",path:"/api/workflows",auth:"required"},{id:"ask.stream",method:"POST",path:"/api/ask",auth:"required"},{id:"ask-sessions",method:"GET",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.save",method:"POST",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.delete",method:"DELETE",path:"/api/ask-sessions",auth:"required"},{id:"space-overview",method:"GET",path:"/api/space-overview",auth:"required"},{id:"git",method:"GET",path:"/api/git",auth:"required"},{id:"settings",method:"GET",path:"/api/settings",auth:"required"},{id:"settings.update",method:"POST",path:"/api/settings",auth:"required"},{id:"settings.reset-token",method:"POST",path:"/api/settings/reset-token",auth:"required"},{id:"settings.test-key",method:"POST",path:"/api/settings/test-key",auth:"required"},{id:"settings.list-models",method:"POST",path:"/api/settings/list-models",auth:"required"},{id:"mcp.status",method:"GET",path:"/api/mcp/status",auth:"required"},{id:"mcp.agents",method:"GET",path:"/api/mcp/agents",auth:"required"},{id:"mcp.tools",method:"GET",path:"/api/mcp/tools",auth:"required"},{id:"mcp.direct-tools",method:"POST",path:"/api/mcp/direct-tools",auth:"required"},{id:"mcp.install",method:"POST",path:"/api/mcp/install",auth:"required"},{id:"mcp.install-skill",method:"POST",path:"/api/mcp/install-skill",auth:"required"},{id:"mcp.restart",method:"POST",path:"/api/mcp/restart",auth:"required"},{id:"mcp.uninstall",method:"POST",path:"/api/mcp/uninstall",auth:"required"},{id:"skills",method:"GET",path:"/api/skills",auth:"required"},{id:"skills.action",method:"POST",path:"/api/skills",auth:"required"},{id:"changes",method:"GET",path:"/api/changes",auth:"required"},{id:"changes.mark-seen",method:"POST",path:"/api/changes",auth:"required"},{id:"agents.custom.create",method:"POST",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.update",method:"PUT",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.delete",method:"DELETE",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.detect",method:"POST",path:"/api/agents/custom/detect",auth:"required"},{id:"agents.copy-skill",method:"POST",path:"/api/agents/copy-skill",auth:"required"}].map(a=>[`${a.method} ${a.path}`,a.auth])},64770:(a,b,c)=>{"use strict";c.d(b,{uV:()=>d,$5:()=>g});class d extends Error{constructor(a,b,c,d){super(a),this.name=this.constructor.name,this.code=b,this.statusCode=c,this.context=d?.context,this.cause=d?.cause,this.metadata={timestamp:Date.now(),...d?.metadata},Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,metadata:this.metadata,stack:this.stack}}toUserMessage(){return this.message}}let e={VALIDATION_ERROR:400,NOT_FOUND:404,UNAUTHORIZED:401,FORBIDDEN:403,CONFLICT:409,INTERNAL_ERROR:500,SERVICE_UNAVAILABLE:503,TIMEOUT:408,RATE_LIMIT_EXCEEDED:429,FILE_SYSTEM_ERROR:500,FILE_READ_ERROR:500,FILE_WRITE_ERROR:500,FILE_STAT_ERROR:500,FILE_REMOVE_ERROR:500,FILE_COPY_ERROR:500,FILE_MOVE_ERROR:500,FILE_WATCH_ERROR:500,DIRECTORY_READ_ERROR:500,DIRECTORY_CREATE_ERROR:500,DATABASE_ERROR:500,NETWORK_ERROR:500,CONFIGURATION_ERROR:500,SEARCH_ERROR:500,VECTOR_ERROR:500,MCP_ERROR:500},f={VALIDATION_ERROR:"Validation failed",NOT_FOUND:"Resource not found",UNAUTHORIZED:"Unauthorized access",FORBIDDEN:"Access forbidden",CONFLICT:"Resource conflict",INTERNAL_ERROR:"Internal server error",SERVICE_UNAVAILABLE:"Service unavailable",TIMEOUT:"Operation timed out",RATE_LIMIT_EXCEEDED:"Rate limit exceeded",FILE_SYSTEM_ERROR:"File system operation failed",FILE_READ_ERROR:"Failed to read file",FILE_WRITE_ERROR:"Failed to write file",FILE_STAT_ERROR:"Failed to get file stats",FILE_REMOVE_ERROR:"Failed to remove file",FILE_COPY_ERROR:"Failed to copy file",FILE_MOVE_ERROR:"Failed to move file",FILE_WATCH_ERROR:"Failed to watch file",DIRECTORY_READ_ERROR:"Failed to read directory",DIRECTORY_CREATE_ERROR:"Failed to create directory",DATABASE_ERROR:"Database operation failed",NETWORK_ERROR:"Network operation failed",CONFIGURATION_ERROR:"Configuration error",SEARCH_ERROR:"Search operation failed",VECTOR_ERROR:"Vector operation failed",MCP_ERROR:"MCP operation failed"};function g(a,b,c){let g=e[a],h=f[a];return new d(b??h,a,g,{...c,metadata:{...c?.metadata,retryable:["SERVICE_UNAVAILABLE","TIMEOUT","NETWORK_ERROR"].includes(a),retryAfter:function(a){switch(a){case"RATE_LIMIT_EXCEEDED":return 6e4;case"SERVICE_UNAVAILABLE":return 5e3;case"TIMEOUT":return 1e3;case"NETWORK_ERROR":return 2e3;default:return 0}}(a)}})}},66451:(a,b,c)=>{"use strict";c.d(b,{XT:()=>j,aH:()=>g,bt:()=>h});var d=c(17409);let e=new Set(["create_file","delete_file","rename_file","move_file","create_space","rename_space"]);function f(a){return"user"===a||"agent"===a||"system"===a}function g(a){return a.hasAgentHeader?"agent":f(a.bodySource)?a.bodySource:f(a.headerSource)?a.headerSource:"user"}function h(a,b){let c=b?.replace(/[\x00-\x1f]/g,"").slice(0,100);return c?{type:a,agentName:c}:{type:a}}function i(a,b){return{response:a,changeEvent:null,source:b,treeChanged:!1}}async function j(a){let{op:b,path:c,...f}=a.body,{source:g,responses:h}=a;if(!b||"string"!=typeof b)return i(h.badRequest("missing op"),g);if(!c||"string"!=typeof c)return i(h.badRequest("missing path"),g);let j=a.handlers[b];if(!j)return i(h.badRequest(`unknown op: ${b}`),g);let k=(0,d.R)({actor:a.actor,op:b,path:c,rules:a.permissionRules,protectedRootFiles:a.protectedRootFiles});if("deny"===k.effect)return i(h.denied(k.reason),g);if("ask"===k.effect)return i(h.permissionRequired({op:b,path:c,reason:k.reason,requestId:`perm_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}),g);let l=await j(c,f),m=a.treeChangingOps??e;return{response:l.response,changeEvent:l.changeEvent,source:g,treeChanged:new Set(m).has(b)}}},75791:(a,b,c)=>{"use strict";c.d(b,{EF:()=>mz,Et:()=>mw,Ew:()=>s,GW:()=>mr,Ht:()=>my,J1:()=>ms,L6:()=>mq,Rf:()=>u,Tn:()=>L,Vu:()=>mx,bK:()=>mt,gG:()=>p,iY:()=>mv,jw:()=>mo,l3:()=>v,tM:()=>mp,zl:()=>mu});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(57075),i=Object.defineProperty,j=(a,b)=>{for(var c in b)i(a,c,{get:b[c],enumerable:!0})},k={"gemini-cli":"gemini","claude-code":"claude","claude-acp":"claude",codebuddy:"codebuddy-code",codex:"codex-acp","pi-acp":"pi"};function l(a){return k[a]??a}var m={gemini:{binary:"gemini",detectCommands:["gemini"],presenceDirs:["~/.gemini/"],cmd:"gemini",args:["--experimental-acp"],installCmd:"npm install -g @google/gemini-cli",displayName:"Gemini CLI",description:"Google Gemini 驱动的编程智能体。支持多文件编辑、代码审查、调试和项目级重构,原生集成 Google 搜索实时查询技术文档。"},claude:{binary:"claude",detectCommands:["claude"],presenceDirs:["~/.claude/"],cmd:"npx",args:["--yes","@agentclientprotocol/claude-agent-acp"],installCmd:"npm install -g @anthropic-ai/claude-code",displayName:"Claude Code",description:"Anthropic Claude 驱动的编程智能体。擅长复杂推理、长上下文理解和安全代码生成,支持多文件编辑与 agentic 工作流。"},"codebuddy-code":{binary:"codebuddy",detectCommands:["codebuddy"],presenceDirs:["~/.codebuddy/"],cmd:"codebuddy",args:["--acp"],installCmd:"npm install -g @tencent-ai/codebuddy-code",displayName:"CodeBuddy Code",description:"腾讯云智能编程助手。基于混元大模型,支持代码补全、生成、审查和多文件重构,深度理解中文语境,适配国内开发生态。"},"codex-acp":{binary:"codex",detectCommands:["codex"],presenceDirs:["~/.codex/"],cmd:"codex",args:[],installCmd:"npm install -g @openai/codex",displayName:"Codex",description:"OpenAI Codex 编程智能体。基于 GPT 系列模型,擅长代码生成、自动化任务和多语言编程支持。"},cursor:{binary:"cursor",detectCommands:["cursor"],presenceDirs:["~/.cursor/extensions/"],cmd:"cursor",args:[],displayName:"Cursor",description:"Cursor AI 编程智能体。AI-first 代码编辑器的 CLI 模式,支持上下文感知的代码编辑、Tab 补全和多文件协同修改。"},cline:{binary:"cline",detectCommands:["cline"],presenceDirs:["~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/","~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/","%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/"],cmd:"cline",args:[],installCmd:"npm install -g cline",displayName:"Cline",description:"开源自主编程智能体。支持多模型后端,内置文件编辑、终端执行和浏览器自动化能力。"},"github-copilot-cli":{binary:"github-copilot",cmd:"github-copilot",args:[],installCmd:"npm install -g @github/copilot",displayName:"GitHub Copilot",description:"GitHub Copilot 编程智能体。基于海量开源代码训练,擅长代码补全、测试生成和跨语言编程支持。"},goose:{binary:"goose",cmd:"goose",args:[],installCmd:"pip install goose-ai",displayName:"Goose",description:"Block 开源自主编程智能体。支持多模型后端,可扩展插件架构,擅长复杂任务自动化。"},opencode:{binary:"opencode",cmd:"opencode",args:[],installCmd:"go install github.com/opencode-ai/opencode@latest",displayName:"OpenCode",description:"开源终端编程智能体。Go 实现,轻量快速,支持多模型后端和丰富的代码编辑工具。"},kilo:{binary:"kilo",cmd:"kilo",args:[],installCmd:"npm install -g @kilocode/cli",displayName:"Kilo Code",description:"Kilo Code 编程智能体。开源 VS Code 扩展的 CLI 模式,支持多模型、自动审批和代码差异预览。"},openclaw:{binary:"openclaw",detectCommands:["openclaw"],presenceDirs:["~/.openclaw/"],cmd:"openclaw",args:[],displayName:"OpenClaw",description:"OpenClaw 编程智能体。开源 Claude Code 替代方案,支持多模型后端和完整的 agentic 工作流。"},pi:{binary:"pi",detectCommands:["pi"],presenceDirs:["~/.pi/"],cmd:"pi",args:[],displayName:"Pi Agent",description:"Pi Agent 编程智能体。轻量级终端编程助手。"},auggie:{binary:"auggie",detectCommands:["auggie"],presenceDirs:["~/.augment/"],cmd:"auggie",args:[],displayName:"Auggie",description:"Augment Code 编程智能体。支持代码理解、生成和全仓库上下文感知。"},iflow:{binary:"iflow",detectCommands:["iflow"],presenceDirs:["~/.iflow/"],cmd:"iflow",args:[],displayName:"iFlow",description:"iFlow 编程智能体。AI 驱动的工作流自动化工具。"},kimi:{binary:"kimi",detectCommands:["kimi"],presenceDirs:["~/.kimi/"],cmd:"kimi",args:[],displayName:"Kimi",description:"Moonshot AI Kimi 编程智能体。擅长超长上下文理解,支持中文语境下的代码生成与分析。"},"qwen-code":{binary:"qwen-code",detectCommands:["qwen-code","qwen"],presenceDirs:["~/.qwen/"],cmd:"qwen-code",args:[],installCmd:"npm install -g @qwen-code/qwen-code",displayName:"Qwen Code",description:"阿里通义千问 Qwen 编程智能体。基于 Qwen 大模型,支持代码生成、审查和多语言编程,深度适配中文开发场景。"},lingma:{binary:"lingma",detectCommands:["lingma"],presenceDirs:["~/.lingma/"],cmd:"lingma",args:[],displayName:"Lingma",description:"阿里通义灵码智能编程助手。提供代码补全、智能问答、多文件修改和编程智能体能力,支持 MCP 工具扩展。"}};function n(a,b,c){let d=m[l(a)],e=c?.enabled!==!1;if(c&&(c.command||c.args))return{cmd:c.command??d?.cmd??b?.command??a,args:c.args??d?.args??[],env:c.env,source:"user-override",binary:d?.binary??a,installCmd:d?.installCmd,enabled:e};if(d)return{cmd:d.cmd,args:d.args,env:c?.env,source:"descriptor",binary:d.binary,installCmd:d.installCmd,enabled:e};if(b){let{cmd:d,args:f}=function(a){switch(a.transport){case"npx":return{cmd:"npx",args:["--yes",a.command,...a.args??[]]};case"uvx":return{cmd:"uvx",args:[a.command,...a.args??[]]};default:return{cmd:a.command,args:a.args??[]}}}(b);return{cmd:d,args:f,env:c?.env,source:"registry",binary:a,installCmd:b.packageName?`npm install -g ${b.packageName}`:void 0,enabled:e}}return{cmd:a,args:[],env:c?.env,source:"registry",binary:a,enabled:e}}function o(a,b){if(!b)return;if(b[a])return b[a];let c=l(a);if(c!==a&&b[c])return b[c];for(let[c,d]of Object.entries(k))if(d===a&&b[c])return b[c]}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={},c=!1;for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let a={};if("string"==typeof e.command&&e.command.trim()&&(a.command=e.command.trim()),Array.isArray(e.args)&&(a.args=e.args.filter(a=>"string"==typeof a)),e.env&&"object"==typeof e.env&&!Array.isArray(e.env)){let b={};for(let[a,c]of Object.entries(e.env))"string"==typeof c&&(b[a]=c);Object.keys(b).length>0&&(a.env=b)}"boolean"==typeof e.enabled&&(a.enabled=e.enabled),Object.keys(a).length>0&&(b[d]=a,c=!0)}return c?b:void 0}var q=null,r=null;async function s(){if(r&&Date.now()-new Date(r.fetchedAt).getTime()<6048e5)return r;let a=(q||(q=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,description:b.description??"",transport:"npx"===b.cmd?"npx":"stdio",command:b.cmd,args:b.args,packageName:b.installCmd?.match(/npm install -g (.+)/)?.[1]}))),q);try{var b;let c=await fetch("https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json",{headers:{Accept:"application/json"},signal:AbortSignal.timeout(3e3)});if(!c.ok)return r??t(a,"builtin");let d=await c.json(),e=(b=d)&&"object"==typeof b?(Array.isArray(b.agents)?b.agents:Array.isArray(b)?b:Object.entries(b).filter(([a])=>"version"!==a&&"$schema"!==a).map(([a,b])=>({...b,id:a}))).map(w).filter(a=>null!==a):[],f=function(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b){let b=c.get(a.id),d=l(a.id),e=d!==a.id?c.get(d):void 0;b?c.set(a.id,{...b,tags:a.tags??b.tags,homepage:a.homepage??b.homepage,version:a.version??b.version}):e||c.set(a.id,a)}return Array.from(c.values())}(a,e);return r={version:d.version??"1",agents:f,fetchedAt:new Date().toISOString()}}catch{return r??t(a,"builtin")}}function t(a,b){return{version:b,agents:a,fetchedAt:new Date().toISOString()}}async function u(){return(await s()).agents}async function v(a){let b=await u(),c=l(a);return b.find(b=>b.id===a||b.id===c)??null}function w(a){if(!a||"object"!=typeof a)return null;let b=String(a.id??a.name??""),c=String(a.name??a.id??"");if(!b&&!c)return null;let{transport:d,command:e,packageName:f,args:g}=function(a){let b,c=a.distribution;if(c&&"object"==typeof c){if(c.npx&&"object"==typeof c.npx){let a=c.npx,b=x(String(a.package??""));return{transport:"npx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.uvx&&"object"==typeof c.uvx){let a=c.uvx,b=x(String(a.package??""));return{transport:"uvx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.binary&&"object"==typeof c.binary)return{transport:"binary",command:""}}return{transport:"npx"===(b=String(a.transport??"stdio").toLowerCase())||"uvx"===b||"binary"===b?b:"stdio",command:String(a.command??a.cmd??"")}}(a),h=b||c,i=m[l(h)]?.displayName,j=m[l(h)]?.description;return{id:h,name:i??c??b,description:j??String(a.description??""),version:a.version?String(a.version):void 0,transport:d,command:e,packageName:f,args:g??(Array.isArray(a.args)?a.args.map(String):void 0),env:a.env&&"object"==typeof a.env?a.env:void 0,tags:Array.isArray(a.tags)?a.tags.map(String):void 0,homepage:a.homepage??a.website?String(a.homepage??a.website):void 0}}function x(a){if(!a)return"";let b=a.lastIndexOf("@");return b>0?a.slice(0,b):a}function y(a){let b=a;return"~"===a?b=e.homedir():(a.startsWith("~/")||a.startsWith("~\\"))&&(b=f.resolve(e.homedir(),a.slice(2))),b.replace(/%([A-Za-z_][A-Za-z0-9_]*)%/g,(a,b)=>process.env[b]??a)}function z(a){return a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.includes("\\")||/^[A-Za-z]:[\\/]/.test(a)}function A(a){if(!a)return null;let b=a.trim();if(!b||!z(b))return null;let c=y(b);return d.existsSync(c)?c:null}function B(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a of b){let b=y(a);if(z(b)&&d.existsSync(b))return b}for(let a of b)if(z(a))return y(a);return null}function C(a){return`'${a.replace(/'/g,"'\\''")}'`}function D(){return"win32"===process.platform?[]:[...new Set([process.env.SHELL,"darwin"===process.platform?"/bin/zsh":void 0,"/bin/bash","/bin/sh"].filter(a=>!!a))]}function E(a,b){return new Promise(c=>{(0,g.execFile)(a,b,{encoding:"utf-8",timeout:3e3},(a,b)=>{a?c(null):c(b)})})}function F(a,b){try{return(0,g.execFileSync)(a,b,{encoding:"utf-8",timeout:3e3})}catch{return null}}async function G(a){let b=await E("win32"===process.platform?"where":"which",[a]);return b?B(b):null}async function H(a){for(let b of D()){let c=await E(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}async function I(a){if(!a)return null;let b=A(a);if(b)return b;let c=a.trim();return!c||z(c)?null:await G(c)??await H(c)}function J(a){let b;if(!a)return null;let c=A(a);if(c)return c;let d=a.trim();return!d||z(d)?null:((b=F("win32"===process.platform?"where":"which",[d]))?B(b):null)??function(a){for(let b of D()){let c=F(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}(d)}async function K(a){let b=[...new Set(a.map(a=>a.trim()).filter(Boolean))];return new Map(await Promise.all(b.map(async a=>[a,await I(a)])))}async function L(a={}){let b=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,binary:b.binary,detectCommands:b.detectCommands,presenceDirs:b.presenceDirs,installCmd:b.installCmd,description:b.description})).map(b=>{let c=o(b.id,a.overrides),d=n(b.id,void 0,c),e=A(c?.command),f=[...new Set([...b.detectCommands??[b.binary],...c?.command&&!z(c.command)?[c.command]:[]])];return{agent:b,resolved:d,directOverridePath:e,presenceCommands:f}}),c=await K(b.flatMap(a=>a.presenceCommands)),e=await K(b.map(a=>a.resolved.cmd)),f=[],g=[];for(let{agent:a,resolved:h,directOverridePath:i,presenceCommands:j}of b){let b=j.map(a=>c.get(a)??null).find(Boolean),k=i??b??function(a){if(!a||0===a.length)return null;for(let b of a){let a=y(b);if(d.existsSync(a))return a}return null}(a.presenceDirs),l=i??e.get(h.cmd)??(j.includes(h.cmd)?b:null)??null;if(k&&l)f.push({id:a.id,name:a.name,binaryPath:l,resolvedCommand:{cmd:h.cmd,args:h.args,source:h.source}});else{let b=a.installCmd?.match(/npm install -g (.+)/)?.[1];g.push({id:a.id,name:a.name,installCmd:a.installCmd??(b?`npm install -g ${b}`:""),packageName:b})}}return{installed:f,notInstalled:g}}var M={};j(M,{$brand:()=>Q,$input:()=>d9,$output:()=>d8,NEVER:()=>O,TimePrecision:()=>eB,ZodAny:()=>hj,ZodArray:()=>ht,ZodBase64:()=>gQ,ZodBase64URL:()=>gS,ZodBigInt:()=>g8,ZodBigIntFormat:()=>ha,ZodBoolean:()=>g6,ZodCIDRv4:()=>gM,ZodCIDRv6:()=>gO,ZodCUID:()=>gy,ZodCUID2:()=>gA,ZodCatch:()=>h9,ZodCustom:()=>ip,ZodCustomStringFormat:()=>gY,ZodDate:()=>hr,ZodDefault:()=>h1,ZodDiscriminatedUnion:()=>hC,ZodE164:()=>gU,ZodEmail:()=>gj,ZodEmoji:()=>gu,ZodEnum:()=>hP,ZodError:()=>f8,ZodFile:()=>hU,ZodGUID:()=>gl,ZodIPv4:()=>gI,ZodIPv6:()=>gK,ZodISODate:()=>f1,ZodISODateTime:()=>f_,ZodISODuration:()=>f5,ZodISOTime:()=>f3,ZodIntersection:()=>hE,ZodIssueCode:()=>iy,ZodJWT:()=>gW,ZodKSUID:()=>gG,ZodLazy:()=>ik,ZodLiteral:()=>hS,ZodMap:()=>hL,ZodNaN:()=>ib,ZodNanoID:()=>gw,ZodNever:()=>hn,ZodNonOptional:()=>h5,ZodNull:()=>hh,ZodNullable:()=>h$,ZodNumber:()=>g$,ZodNumberFormat:()=>g0,ZodObject:()=>hw,ZodOptional:()=>hY,ZodPipe:()=>id,ZodPrefault:()=>h3,ZodPromise:()=>im,ZodReadonly:()=>ig,ZodRealError:()=>f9,ZodRecord:()=>hI,ZodSet:()=>hN,ZodString:()=>gg,ZodStringFormat:()=>gi,ZodSuccess:()=>h7,ZodSymbol:()=>hd,ZodTemplateLiteral:()=>ii,ZodTransform:()=>hW,ZodTuple:()=>hG,ZodType:()=>ge,ZodULID:()=>gC,ZodURL:()=>gs,ZodUUID:()=>gn,ZodUndefined:()=>hf,ZodUnion:()=>hA,ZodUnknown:()=>hl,ZodVoid:()=>hp,ZodXID:()=>gE,_ZodString:()=>gf,_default:()=>h2,any:()=>hk,array:()=>hu,base64:()=>gR,base64url:()=>gT,bigint:()=>g9,boolean:()=>g7,catch:()=>ia,check:()=>iq,cidrv4:()=>gN,cidrv6:()=>gP,clone:()=>au,coerce:()=>iB,config:()=>T,core:()=>N,cuid:()=>gz,cuid2:()=>gB,custom:()=>ir,date:()=>hs,discriminatedUnion:()=>hD,e164:()=>gV,email:()=>gk,emoji:()=>gv,endsWith:()=>fl,enum:()=>hQ,file:()=>hV,flattenError:()=>aT,float32:()=>g2,float64:()=>g3,formatError:()=>aU,function:()=>fW,getErrorMap:()=>iA,globalRegistry:()=>ec,gt:()=>e3,gte:()=>e4,guid:()=>gm,includes:()=>fj,instanceof:()=>iu,int:()=>g1,int32:()=>g4,int64:()=>hb,intersection:()=>hF,ipv4:()=>gJ,ipv6:()=>gL,iso:()=>f$,json:()=>iw,jwt:()=>gX,keyof:()=>hv,ksuid:()=>gH,lazy:()=>il,length:()=>ff,literal:()=>hT,locales:()=>du,looseObject:()=>hz,lowercase:()=>fh,lt:()=>e1,lte:()=>e2,map:()=>hM,maxLength:()=>fd,maxSize:()=>fa,mime:()=>fn,minLength:()=>fe,minSize:()=>fb,multipleOf:()=>e9,nan:()=>ic,nanoid:()=>gx,nativeEnum:()=>hR,negative:()=>e6,never:()=>ho,nonnegative:()=>e8,nonoptional:()=>h6,nonpositive:()=>e7,normalize:()=>fp,null:()=>hi,nullable:()=>h_,nullish:()=>h0,number:()=>g_,object:()=>hx,optional:()=>hZ,overwrite:()=>fo,parse:()=>ga,parseAsync:()=>gb,partialRecord:()=>hK,pipe:()=>ie,positive:()=>e5,prefault:()=>h4,preprocess:()=>ix,prettifyError:()=>aX,promise:()=>io,property:()=>fm,readonly:()=>ih,record:()=>hJ,refine:()=>is,regex:()=>fg,regexes:()=>a4,registry:()=>eb,safeParse:()=>gc,safeParseAsync:()=>gd,set:()=>hO,setErrorMap:()=>iz,size:()=>fc,startsWith:()=>fk,strictObject:()=>hy,string:()=>gh,stringFormat:()=>gZ,stringbool:()=>iv,success:()=>h8,superRefine:()=>it,symbol:()=>he,templateLiteral:()=>ij,toJSONSchema:()=>fY,toLowerCase:()=>fr,toUpperCase:()=>fs,transform:()=>hX,treeifyError:()=>aV,trim:()=>fq,tuple:()=>hH,uint32:()=>g5,uint64:()=>hc,ulid:()=>gD,undefined:()=>hg,union:()=>hB,unknown:()=>hm,uppercase:()=>fi,url:()=>gt,uuid:()=>go,uuidv4:()=>gp,uuidv6:()=>gq,uuidv7:()=>gr,void:()=>hq,xid:()=>gF});var N={};j(N,{$ZodAny:()=>cM,$ZodArray:()=>cS,$ZodAsyncError:()=>R,$ZodBase64:()=>cx,$ZodBase64URL:()=>cz,$ZodBigInt:()=>cH,$ZodBigIntFormat:()=>cI,$ZodBoolean:()=>cG,$ZodCIDRv4:()=>cu,$ZodCIDRv6:()=>cv,$ZodCUID:()=>cj,$ZodCUID2:()=>ck,$ZodCatch:()=>di,$ZodCheck:()=>bM,$ZodCheckBigIntFormat:()=>bS,$ZodCheckEndsWith:()=>b3,$ZodCheckGreaterThan:()=>bP,$ZodCheckIncludes:()=>b1,$ZodCheckLengthEquals:()=>bY,$ZodCheckLessThan:()=>bO,$ZodCheckLowerCase:()=>b_,$ZodCheckMaxLength:()=>bW,$ZodCheckMaxSize:()=>bT,$ZodCheckMimeType:()=>b6,$ZodCheckMinLength:()=>bX,$ZodCheckMinSize:()=>bU,$ZodCheckMultipleOf:()=>bQ,$ZodCheckNumberFormat:()=>bR,$ZodCheckOverwrite:()=>b7,$ZodCheckProperty:()=>b5,$ZodCheckRegex:()=>b$,$ZodCheckSizeEquals:()=>bV,$ZodCheckStartsWith:()=>b2,$ZodCheckStringFormat:()=>bZ,$ZodCheckUpperCase:()=>b0,$ZodCustom:()=>ds,$ZodCustomStringFormat:()=>cD,$ZodDate:()=>cQ,$ZodDefault:()=>dc,$ZodDiscriminatedUnion:()=>cY,$ZodE164:()=>cA,$ZodEmail:()=>cf,$ZodEmoji:()=>ch,$ZodEnum:()=>c6,$ZodError:()=>aR,$ZodFile:()=>c8,$ZodFunction:()=>fV,$ZodGUID:()=>cd,$ZodIPv4:()=>cs,$ZodIPv6:()=>ct,$ZodISODate:()=>cp,$ZodISODateTime:()=>co,$ZodISODuration:()=>cr,$ZodISOTime:()=>cq,$ZodIntersection:()=>cZ,$ZodJWT:()=>cC,$ZodKSUID:()=>cn,$ZodLazy:()=>dr,$ZodLiteral:()=>c7,$ZodMap:()=>c2,$ZodNaN:()=>dj,$ZodNanoID:()=>ci,$ZodNever:()=>cO,$ZodNonOptional:()=>df,$ZodNull:()=>cL,$ZodNullable:()=>db,$ZodNumber:()=>cE,$ZodNumberFormat:()=>cF,$ZodObject:()=>cV,$ZodOptional:()=>da,$ZodPipe:()=>dk,$ZodPrefault:()=>de,$ZodPromise:()=>dq,$ZodReadonly:()=>dm,$ZodRealError:()=>aS,$ZodRecord:()=>c1,$ZodRegistry:()=>ea,$ZodSet:()=>c4,$ZodString:()=>cb,$ZodStringFormat:()=>cc,$ZodSuccess:()=>dh,$ZodSymbol:()=>cJ,$ZodTemplateLiteral:()=>dp,$ZodTransform:()=>c9,$ZodTuple:()=>c_,$ZodType:()=>ca,$ZodULID:()=>cl,$ZodURL:()=>cg,$ZodUUID:()=>ce,$ZodUndefined:()=>cK,$ZodUnion:()=>cX,$ZodUnknown:()=>cN,$ZodVoid:()=>cP,$ZodXID:()=>cm,$brand:()=>Q,$constructor:()=>P,$input:()=>d9,$output:()=>d8,Doc:()=>b8,JSONSchema:()=>fZ,JSONSchemaGenerator:()=>fX,NEVER:()=>O,TimePrecision:()=>eB,_any:()=>eW,_array:()=>ft,_base64:()=>ex,_base64url:()=>ey,_bigint:()=>eP,_boolean:()=>eN,_catch:()=>fL,_cidrv4:()=>ev,_cidrv6:()=>ew,_coercedBigint:()=>eQ,_coercedBoolean:()=>eO,_coercedDate:()=>e_,_coercedNumber:()=>eH,_coercedString:()=>ee,_cuid:()=>eo,_cuid2:()=>ep,_custom:()=>fR,_date:()=>e$,_default:()=>fI,_discriminatedUnion:()=>fv,_e164:()=>ez,_email:()=>ef,_emoji:()=>em,_endsWith:()=>fl,_enum:()=>fB,_file:()=>fE,_float32:()=>eJ,_float64:()=>eK,_gt:()=>e3,_gte:()=>e4,_guid:()=>eg,_includes:()=>fj,_int:()=>eI,_int32:()=>eL,_int64:()=>eR,_intersection:()=>fw,_ipv4:()=>et,_ipv6:()=>eu,_isoDate:()=>eD,_isoDateTime:()=>eC,_isoDuration:()=>eF,_isoTime:()=>eE,_jwt:()=>eA,_ksuid:()=>es,_lazy:()=>fP,_length:()=>ff,_literal:()=>fD,_lowercase:()=>fh,_lt:()=>e1,_lte:()=>e2,_map:()=>fz,_max:()=>e2,_maxLength:()=>fd,_maxSize:()=>fa,_mime:()=>fn,_min:()=>e4,_minLength:()=>fe,_minSize:()=>fb,_multipleOf:()=>e9,_nan:()=>e0,_nanoid:()=>en,_nativeEnum:()=>fC,_negative:()=>e6,_never:()=>eY,_nonnegative:()=>e8,_nonoptional:()=>fJ,_nonpositive:()=>e7,_normalize:()=>fp,_null:()=>eV,_nullable:()=>fH,_number:()=>eG,_optional:()=>fG,_overwrite:()=>fo,_parse:()=>aY,_parseAsync:()=>a$,_pipe:()=>fM,_positive:()=>e5,_promise:()=>fQ,_property:()=>fm,_readonly:()=>fN,_record:()=>fy,_refine:()=>fS,_regex:()=>fg,_safeParse:()=>a0,_safeParseAsync:()=>a2,_set:()=>fA,_size:()=>fc,_startsWith:()=>fk,_string:()=>ed,_stringFormat:()=>fU,_stringbool:()=>fT,_success:()=>fK,_symbol:()=>eT,_templateLiteral:()=>fO,_toLowerCase:()=>fr,_toUpperCase:()=>fs,_transform:()=>fF,_trim:()=>fq,_tuple:()=>fx,_uint32:()=>eM,_uint64:()=>eS,_ulid:()=>eq,_undefined:()=>eU,_union:()=>fu,_unknown:()=>eX,_uppercase:()=>fi,_url:()=>el,_uuid:()=>eh,_uuidv4:()=>ei,_uuidv6:()=>ej,_uuidv7:()=>ek,_void:()=>eZ,_xid:()=>er,clone:()=>au,config:()=>T,flattenError:()=>aT,formatError:()=>aU,function:()=>fW,globalConfig:()=>S,globalRegistry:()=>ec,isValidBase64:()=>cw,isValidBase64URL:()=>cy,isValidJWT:()=>cB,locales:()=>du,parse:()=>aZ,parseAsync:()=>a_,prettifyError:()=>aX,regexes:()=>a4,registry:()=>eb,safeParse:()=>a1,safeParseAsync:()=>a3,toDotPath:()=>aW,toJSONSchema:()=>fY,treeifyError:()=>aV,util:()=>U,version:()=>b9});var O=Object.freeze({status:"aborted"});function P(a,b,c){function d(c,d){var e;for(let f in Object.defineProperty(c,"_zod",{value:c._zod??{},enumerable:!1}),(e=c._zod).traits??(e.traits=new Set),c._zod.traits.add(a),b(c,d),g.prototype)f in c||Object.defineProperty(c,f,{value:g.prototype[f].bind(c)});c._zod.constr=g,c._zod.def=d}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}var Q=Symbol("zod_brand"),R=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},S={};function T(a){return a&&Object.assign(S,a),S}var U={};function V(a){return a}function W(a){return a}function X(a){}function Y(a){throw Error()}function Z(a){}function $(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function _(a,b="|"){return a.map(a=>ax(a)).join(b)}function aa(a,b){return"bigint"==typeof b?b.toString():b}function ab(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function ac(a){return null==a}function ad(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}function ae(a,b){let c=(a.toString().split(".")[1]||"").length,d=(b.toString().split(".")[1]||"").length,e=c>d?c:d;return Number.parseInt(a.toFixed(e).replace(".",""))%Number.parseInt(b.toFixed(e).replace(".",""))/10**e}function af(a,b,c){Object.defineProperty(a,b,{get(){{let d=c();return a[b]=d,d}},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function ag(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function ah(a,b){return b?b.reduce((a,b)=>a?.[b],a):a}function ai(a){let b=Object.keys(a);return Promise.all(b.map(b=>a[b])).then(a=>{let c={};for(let d=0;d<b.length;d++)c[b[d]]=a[d];return c})}function aj(a=10){let b="abcdefghijklmnopqrstuvwxyz",c="";for(let d=0;d<a;d++)c+=b[Math.floor(Math.random()*b.length)];return c}function ak(a){return JSON.stringify(a)}j(U,{BIGINT_FORMAT_RANGES:()=>aA,Class:()=>aP,NUMBER_FORMAT_RANGES:()=>az,aborted:()=>aH,allowsEval:()=>an,assert:()=>Z,assertEqual:()=>V,assertIs:()=>X,assertNever:()=>Y,assertNotEqual:()=>W,assignProp:()=>ag,cached:()=>ab,captureStackTrace:()=>al,cleanEnum:()=>aO,cleanRegex:()=>ad,clone:()=>au,createTransparentProxy:()=>aw,defineLazy:()=>af,esc:()=>ak,escapeRegex:()=>at,extend:()=>aD,finalizeIssue:()=>aK,floatSafeRemainder:()=>ae,getElementAtPath:()=>ah,getEnumValues:()=>$,getLengthableOrigin:()=>aM,getParsedType:()=>aq,getSizableOrigin:()=>aL,isObject:()=>am,isPlainObject:()=>ao,issue:()=>aN,joinValues:()=>_,jsonStringifyReplacer:()=>aa,merge:()=>aE,normalizeParams:()=>av,nullish:()=>ac,numKeys:()=>ap,omit:()=>aC,optionalKeys:()=>ay,partial:()=>aF,pick:()=>aB,prefixIssues:()=>aI,primitiveTypes:()=>as,promiseAllObject:()=>ai,propertyKeyTypes:()=>ar,randomString:()=>aj,required:()=>aG,stringifyPrimitive:()=>ax,unwrapMessage:()=>aJ});var al=Error.captureStackTrace?Error.captureStackTrace:(...a)=>{};function am(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}var an=ab(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch{return!1}});function ao(a){if(!1===am(a))return!1;let b=a.constructor;if(void 0===b)return!0;let c=b.prototype;return!1!==am(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function ap(a){let b=0;for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b++;return b}var aq=a=>{let b=typeof a;switch(b){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(a)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(a)?"array":null===a?"null":a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch?"promise":"u">typeof Map&&a instanceof Map?"map":"u">typeof Set&&a instanceof Set?"set":"u">typeof Date&&a instanceof Date?"date":"u">typeof File&&a instanceof File?"file":"object";default:throw Error(`Unknown data type: ${b}`)}},ar=new Set(["string","number","symbol"]),as=new Set(["string","number","bigint","boolean","symbol","undefined"]);function at(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function au(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function av(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return delete a.message,"string"==typeof a.error?{...a,error:()=>a.error}:a}function aw(a){let b;return new Proxy({},{get:(c,d,e)=>(b??(b=a()),Reflect.get(b,d,e)),set:(c,d,e,f)=>(b??(b=a()),Reflect.set(b,d,e,f)),has:(c,d)=>(b??(b=a()),Reflect.has(b,d)),deleteProperty:(c,d)=>(b??(b=a()),Reflect.deleteProperty(b,d)),ownKeys:c=>(b??(b=a()),Reflect.ownKeys(b)),getOwnPropertyDescriptor:(c,d)=>(b??(b=a()),Reflect.getOwnPropertyDescriptor(b,d)),defineProperty:(c,d,e)=>(b??(b=a()),Reflect.defineProperty(b,d,e))})}function ax(a){return"bigint"==typeof a?a.toString()+"n":"string"==typeof a?`"${a}"`:`${a}`}function ay(a){return Object.keys(a).filter(b=>"optional"===a[b]._zod.optin&&"optional"===a[b]._zod.optout)}var az={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},aA={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function aB(a,b){let c={},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&(c[a]=d.shape[a])}return au(a,{...a._zod.def,shape:c,checks:[]})}function aC(a,b){let c={...a._zod.def.shape},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&delete c[a]}return au(a,{...a._zod.def,shape:c,checks:[]})}function aD(a,b){if(!ao(b))throw Error("Invalid input to extend: expected a plain object");let c={...a._zod.def,get shape(){let c={...a._zod.def.shape,...b};return ag(this,"shape",c),c},checks:[]};return au(a,c)}function aE(a,b){return au(a,{...a._zod.def,get shape(){let c={...a._zod.def.shape,...b._zod.def.shape};return ag(this,"shape",c),c},catchall:b._zod.def.catchall,checks:[]})}function aF(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in d))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=a?new a({type:"optional",innerType:d[b]}):d[b])}else for(let b in d)e[b]=a?new a({type:"optional",innerType:d[b]}):d[b];return au(b,{...b._zod.def,shape:e,checks:[]})}function aG(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in e))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=new a({type:"nonoptional",innerType:d[b]}))}else for(let b in d)e[b]=new a({type:"nonoptional",innerType:d[b]});return au(b,{...b._zod.def,shape:e,checks:[]})}function aH(a,b=0){for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function aI(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function aJ(a){return"string"==typeof a?a:a?.message}function aK(a,b,c){let d={...a,path:a.path??[]};return a.message||(d.message=aJ(a.inst?._zod.def?.error?.(a))??aJ(b?.error?.(a))??aJ(c.customError?.(a))??aJ(c.localeError?.(a))??"Invalid input"),delete d.inst,delete d.continue,b?.reportInput||delete d.input,d}function aL(a){return a instanceof Set?"set":a instanceof Map?"map":a instanceof File?"file":"unknown"}function aM(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function aN(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}function aO(a){return Object.entries(a).filter(([a,b])=>Number.isNaN(Number.parseInt(a,10))).map(a=>a[1])}var aP=class{constructor(...a){}},aQ=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),Object.defineProperty(a,"message",{get:()=>JSON.stringify(b,aa,2),enumerable:!0}),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aR=P("$ZodError",aQ),aS=P("$ZodError",aQ,{Parent:Error});function aT(a,b=a=>a.message){let c={},d=[];for(let e of a.issues)e.path.length>0?(c[e.path[0]]=c[e.path[0]]||[],c[e.path[0]].push(b(e))):d.push(b(e));return{formErrors:d,fieldErrors:c}}function aU(a,b){let c=b||function(a){return a.message},d={_errors:[]},e=a=>{for(let b of a.issues)if("invalid_union"===b.code&&b.errors.length)b.errors.map(a=>e({issues:a}));else if("invalid_key"===b.code)e({issues:b.issues});else if("invalid_element"===b.code)e({issues:b.issues});else if(0===b.path.length)d._errors.push(c(b));else{let a=d,e=0;for(;e<b.path.length;){let d=b.path[e];e===b.path.length-1?(a[d]=a[d]||{_errors:[]},a[d]._errors.push(c(b))):a[d]=a[d]||{_errors:[]},a=a[d],e++}}};return e(a),d}function aV(a,b){let c=b||function(a){return a.message},d={errors:[]},e=(a,b=[])=>{var f,g;for(let h of a.issues)if("invalid_union"===h.code&&h.errors.length)h.errors.map(a=>e({issues:a},h.path));else if("invalid_key"===h.code)e({issues:h.issues},h.path);else if("invalid_element"===h.code)e({issues:h.issues},h.path);else{let a=[...b,...h.path];if(0===a.length){d.errors.push(c(h));continue}let e=d,i=0;for(;i<a.length;){let b=a[i],d=i===a.length-1;"string"==typeof b?(e.properties??(e.properties={}),(f=e.properties)[b]??(f[b]={errors:[]}),e=e.properties[b]):(e.items??(e.items=[]),(g=e.items)[b]??(g[b]={errors:[]}),e=e.items[b]),d&&e.errors.push(c(h)),i++}}};return e(a),d}function aW(a){let b=[];for(let c of a)"number"==typeof c?b.push(`[${c}]`):"symbol"==typeof c?b.push(`[${JSON.stringify(String(c))}]`):/[^\w$]/.test(c)?b.push(`[${JSON.stringify(c)}]`):(b.length&&b.push("."),b.push(c));return b.join("")}function aX(a){let b=[];for(let c of[...a.issues].sort((a,b)=>a.path.length-b.path.length))b.push(`\u2716 ${c.message}`),c.path?.length&&b.push(` \u2192 at ${aW(c.path)}`);return b.join(`
|
|
71
|
+
`;function e5(a){return i({workflows:function(a){let b;try{b=(0,w.n2)(a,e3)}catch{return[]}if(!(0,o.existsSync)(b))return[];let c=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile()||!/\.flow\.(yaml|yml)$/i.test(a.name))continue;let d=(0,p.join)(b,a.name),e=(0,o.statSync)(d).mtimeMs;try{let b=(0,o.readFileSync)(d,"utf-8"),f=function(a,b){let c=e7(a.match(/^title:\s*(.*)$/m)?.[1])||e8(b),d=e7(a.match(/^description:\s*(.*)$/m)?.[1])||void 0,e=a.search(/^steps:\s*$/m);return{title:c,description:d,stepCount:((e>=0?a.slice(e):"").match(/^\s*-\s+/gm)??[]).length}}(b,a.name);c.push({path:`${e3}/${a.name}`,fileName:a.name,mtime:e,...f})}catch(b){c.push({path:`${e3}/${a.name}`,fileName:a.name,title:e8(a.name),stepCount:0,mtime:e,error:b instanceof Error?b.message:"Parse error"})}}return c.sort((a,b)=>b.mtime-a.mtime)}(a.mindRoot)})}function e6(a,b){let c=a&&"object"==typeof a&&"string"==typeof a.name?a.name.trim():"";if(!c)return i({error:"name is required"},{status:400});let d=c.trim().replace(/\s+/g," ").slice(0,200),e=d.replace(/[/\\:*?"<>|\x00-\x1F]/g,"-").replace(/-{2,}/g,"-").replace(/^[-.\s]+|[-.\s]+$/g,"").slice(0,120).trim();if(!e)return i({error:"name must contain at least one valid filename character"},{status:400});let f=`${e}.flow.yaml`;try{let c=(0,w.n2)(b.mindRoot,e3);(0,o.mkdirSync)(c,{recursive:!0});let e=(0,w.n2)(b.mindRoot,`${e3}/${f}`);if((0,o.existsSync)(e))return i({error:"Workflow already exists"},{status:409});let g=a&&"object"==typeof a&&"string"==typeof a.template?a.template:"blank",h=function(a,b,c){if("blank"!==b)try{let d=(0,w.n2)(a,e3),e=(0,o.readdirSync)(d).find(a=>a.toLowerCase().includes(b.toLowerCase())&&/\.workflow\.(yaml|yml)$/i.test(a));if(e){let b=(0,w.n2)(a,`${e3}/${e}`);return(0,o.readFileSync)(b,"utf-8").replace(/^title:.*$/m,`title: ${e9(c)}`)}}catch{}return e4.replace("{TITLE}",e9(c))}(b.mindRoot,g,d);return(0,o.writeFileSync)(e,h,"utf-8"),i({path:`${e3}/${f}`})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}function e7(a){return(a??"").trim().replace(/^['"]|['"]$/g,"")}function e8(a){return a.replace(/\.flow\.(yaml|yml)$/i,"")}function e9(a){return`'${a.replace(/'/g,"''")}'`}[{id:"health",method:"GET",path:"/api/health",auth:"public"},{id:"files",method:"GET",path:"/api/files",auth:"required"},{id:"recent-files",method:"GET",path:"/api/recent-files",auth:"required"},{id:"tree-version",method:"GET",path:"/api/tree-version",auth:"required"},{id:"file.read",method:"GET",path:"/api/file",auth:"required"},{id:"file.write",method:"POST",path:"/api/file",auth:"required"},{id:"file.raw",method:"GET",path:"/api/file/raw",auth:"required"},{id:"search",method:"GET",path:"/api/search",auth:"required"},{id:"search.prewarm",method:"GET",path:"/api/search/prewarm",auth:"required"},{id:"a2a",method:"POST",path:"/api/a2a",auth:"required"},{id:"a2a.options",method:"OPTIONS",path:"/api/a2a",auth:"public"},{id:"a2a.agents",method:"GET",path:"/api/a2a/agents",auth:"required"},{id:"a2a.delegations",method:"GET",path:"/api/a2a/delegations",auth:"required"},{id:"a2a.discover",method:"POST",path:"/api/a2a/discover",auth:"required"},{id:"acp.config",method:"GET",path:"/api/acp/config",auth:"required"},{id:"acp.config.update",method:"POST",path:"/api/acp/config",auth:"required"},{id:"acp.config.delete",method:"DELETE",path:"/api/acp/config",auth:"required"},{id:"acp.detect",method:"GET",path:"/api/acp/detect",auth:"required"},{id:"acp.install",method:"POST",path:"/api/acp/install",auth:"required"},{id:"acp.registry",method:"GET",path:"/api/acp/registry",auth:"required"},{id:"acp.session",method:"GET",path:"/api/acp/session",auth:"required"},{id:"acp.session.action",method:"POST",path:"/api/acp/session",auth:"required"},{id:"acp.session.close",method:"DELETE",path:"/api/acp/session",auth:"required"},{id:"backlinks",method:"GET",path:"/api/backlinks",auth:"required"},{id:"graph",method:"GET",path:"/api/graph",auth:"required"},{id:"agent-activity",method:"GET",path:"/api/agent-activity",auth:"required"},{id:"bootstrap",method:"GET",path:"/api/bootstrap",auth:"required"},{id:"connect",method:"GET",path:"/api/connect",auth:"required"},{id:"embedding",method:"GET",path:"/api/embedding",auth:"required"},{id:"embedding.action",method:"POST",path:"/api/embedding",auth:"required"},{id:"channels.verify",method:"POST",path:"/api/channels/verify",auth:"required"},{id:"im.activity",method:"GET",path:"/api/im/activity",auth:"required"},{id:"im.config",method:"GET",path:"/api/im/config",auth:"required"},{id:"im.config.update",method:"PUT",path:"/api/im/config",auth:"required"},{id:"im.config.delete",method:"DELETE",path:"/api/im/config",auth:"required"},{id:"im.status",method:"GET",path:"/api/im/status",auth:"required"},{id:"im.test",method:"POST",path:"/api/im/test",auth:"required"},{id:"im.webhook-status",method:"GET",path:"/api/im/webhook-status",auth:"required"},{id:"im.feishu.long-connection",method:"GET",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.start",method:"POST",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.stop",method:"DELETE",path:"/api/im/feishu/long-connection",auth:"required"},{id:"monitoring",method:"GET",path:"/api/monitoring",auth:"required"},{id:"update-status",method:"GET",path:"/api/update-status",auth:"required"},{id:"update-check",method:"GET",path:"/api/update-check",auth:"required"},{id:"restart",method:"POST",path:"/api/restart",auth:"required"},{id:"update",method:"POST",path:"/api/update",auth:"required"},{id:"uninstall",method:"POST",path:"/api/uninstall",auth:"required"},{id:"init",method:"POST",path:"/api/init",auth:"required"},{id:"sync",method:"GET",path:"/api/sync",auth:"required"},{id:"sync.action",method:"POST",path:"/api/sync",auth:"required"},{id:"inbox",method:"GET",path:"/api/inbox",auth:"required"},{id:"inbox.save",method:"POST",path:"/api/inbox",auth:"required"},{id:"inbox.archive",method:"DELETE",path:"/api/inbox",auth:"required"},{id:"setup.check-path",method:"POST",path:"/api/setup/check-path",auth:"required"},{id:"setup.check-port",method:"POST",path:"/api/setup/check-port",auth:"required"},{id:"setup.generate-token",method:"POST",path:"/api/setup/generate-token",auth:"required"},{id:"setup.ls",method:"POST",path:"/api/setup/ls",auth:"required"},{id:"setup",method:"GET",path:"/api/setup",auth:"required"},{id:"setup.apply",method:"POST",path:"/api/setup",auth:"required"},{id:"setup.guide-state",method:"PATCH",path:"/api/setup",auth:"required"},{id:"workflows",method:"GET",path:"/api/workflows",auth:"required"},{id:"workflows.create",method:"POST",path:"/api/workflows",auth:"required"},{id:"ask.stream",method:"POST",path:"/api/ask",auth:"required"},{id:"ask-sessions",method:"GET",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.save",method:"POST",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.delete",method:"DELETE",path:"/api/ask-sessions",auth:"required"},{id:"space-overview",method:"GET",path:"/api/space-overview",auth:"required"},{id:"git",method:"GET",path:"/api/git",auth:"required"},{id:"settings",method:"GET",path:"/api/settings",auth:"required"},{id:"settings.update",method:"POST",path:"/api/settings",auth:"required"},{id:"settings.reset-token",method:"POST",path:"/api/settings/reset-token",auth:"required"},{id:"settings.test-key",method:"POST",path:"/api/settings/test-key",auth:"required"},{id:"settings.list-models",method:"POST",path:"/api/settings/list-models",auth:"required"},{id:"mcp.status",method:"GET",path:"/api/mcp/status",auth:"required"},{id:"mcp.agents",method:"GET",path:"/api/mcp/agents",auth:"required"},{id:"mcp.tools",method:"GET",path:"/api/mcp/tools",auth:"required"},{id:"mcp.direct-tools",method:"POST",path:"/api/mcp/direct-tools",auth:"required"},{id:"mcp.install",method:"POST",path:"/api/mcp/install",auth:"required"},{id:"mcp.install-skill",method:"POST",path:"/api/mcp/install-skill",auth:"required"},{id:"mcp.restart",method:"POST",path:"/api/mcp/restart",auth:"required"},{id:"mcp.uninstall",method:"POST",path:"/api/mcp/uninstall",auth:"required"},{id:"skills",method:"GET",path:"/api/skills",auth:"required"},{id:"skills.action",method:"POST",path:"/api/skills",auth:"required"},{id:"changes",method:"GET",path:"/api/changes",auth:"required"},{id:"changes.mark-seen",method:"POST",path:"/api/changes",auth:"required"},{id:"agents.custom.create",method:"POST",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.update",method:"PUT",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.delete",method:"DELETE",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.detect",method:"POST",path:"/api/agents/custom/detect",auth:"required"},{id:"agents.copy-skill",method:"POST",path:"/api/agents/copy-skill",auth:"required"}].map(a=>[`${a.method} ${a.path}`,a.auth])},64770:(a,b,c)=>{"use strict";c.d(b,{uV:()=>d,$5:()=>g});class d extends Error{constructor(a,b,c,d){super(a),this.name=this.constructor.name,this.code=b,this.statusCode=c,this.context=d?.context,this.cause=d?.cause,this.metadata={timestamp:Date.now(),...d?.metadata},Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,metadata:this.metadata,stack:this.stack}}toUserMessage(){return this.message}}let e={VALIDATION_ERROR:400,NOT_FOUND:404,UNAUTHORIZED:401,FORBIDDEN:403,CONFLICT:409,INTERNAL_ERROR:500,SERVICE_UNAVAILABLE:503,TIMEOUT:408,RATE_LIMIT_EXCEEDED:429,FILE_SYSTEM_ERROR:500,FILE_READ_ERROR:500,FILE_WRITE_ERROR:500,FILE_STAT_ERROR:500,FILE_REMOVE_ERROR:500,FILE_COPY_ERROR:500,FILE_MOVE_ERROR:500,FILE_WATCH_ERROR:500,DIRECTORY_READ_ERROR:500,DIRECTORY_CREATE_ERROR:500,DATABASE_ERROR:500,NETWORK_ERROR:500,CONFIGURATION_ERROR:500,SEARCH_ERROR:500,VECTOR_ERROR:500,MCP_ERROR:500},f={VALIDATION_ERROR:"Validation failed",NOT_FOUND:"Resource not found",UNAUTHORIZED:"Unauthorized access",FORBIDDEN:"Access forbidden",CONFLICT:"Resource conflict",INTERNAL_ERROR:"Internal server error",SERVICE_UNAVAILABLE:"Service unavailable",TIMEOUT:"Operation timed out",RATE_LIMIT_EXCEEDED:"Rate limit exceeded",FILE_SYSTEM_ERROR:"File system operation failed",FILE_READ_ERROR:"Failed to read file",FILE_WRITE_ERROR:"Failed to write file",FILE_STAT_ERROR:"Failed to get file stats",FILE_REMOVE_ERROR:"Failed to remove file",FILE_COPY_ERROR:"Failed to copy file",FILE_MOVE_ERROR:"Failed to move file",FILE_WATCH_ERROR:"Failed to watch file",DIRECTORY_READ_ERROR:"Failed to read directory",DIRECTORY_CREATE_ERROR:"Failed to create directory",DATABASE_ERROR:"Database operation failed",NETWORK_ERROR:"Network operation failed",CONFIGURATION_ERROR:"Configuration error",SEARCH_ERROR:"Search operation failed",VECTOR_ERROR:"Vector operation failed",MCP_ERROR:"MCP operation failed"};function g(a,b,c){let g=e[a],h=f[a];return new d(b??h,a,g,{...c,metadata:{...c?.metadata,retryable:["SERVICE_UNAVAILABLE","TIMEOUT","NETWORK_ERROR"].includes(a),retryAfter:function(a){switch(a){case"RATE_LIMIT_EXCEEDED":return 6e4;case"SERVICE_UNAVAILABLE":return 5e3;case"TIMEOUT":return 1e3;case"NETWORK_ERROR":return 2e3;default:return 0}}(a)}})}},66451:(a,b,c)=>{"use strict";c.d(b,{XT:()=>j,aH:()=>g,bt:()=>h});var d=c(17409);let e=new Set(["create_file","delete_file","rename_file","move_file","create_space","rename_space"]);function f(a){return"user"===a||"agent"===a||"system"===a}function g(a){return a.hasAgentHeader?"agent":f(a.bodySource)?a.bodySource:f(a.headerSource)?a.headerSource:"user"}function h(a,b){let c=b?.replace(/[\x00-\x1f]/g,"").slice(0,100);return c?{type:a,agentName:c}:{type:a}}function i(a,b){return{response:a,changeEvent:null,source:b,treeChanged:!1}}async function j(a){let{op:b,path:c,...f}=a.body,{source:g,responses:h}=a;if(!b||"string"!=typeof b)return i(h.badRequest("missing op"),g);if(!c||"string"!=typeof c)return i(h.badRequest("missing path"),g);let j=a.handlers[b];if(!j)return i(h.badRequest(`unknown op: ${b}`),g);let k=(0,d.R)({actor:a.actor,op:b,path:c,rules:a.permissionRules,protectedRootFiles:a.protectedRootFiles});if("deny"===k.effect)return i(h.denied(k.reason),g);if("ask"===k.effect)return i(h.permissionRequired({op:b,path:c,reason:k.reason,requestId:`perm_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}),g);let l=await j(c,f),m=a.treeChangingOps??e;return{response:l.response,changeEvent:l.changeEvent,source:g,treeChanged:new Set(m).has(b)}}},75791:(a,b,c)=>{"use strict";c.d(b,{EF:()=>mz,Et:()=>mw,Ew:()=>s,GW:()=>mr,Ht:()=>my,J1:()=>ms,L6:()=>mq,Rf:()=>u,Tn:()=>L,Vu:()=>mx,bK:()=>mt,gG:()=>p,iY:()=>mv,jw:()=>mo,l3:()=>v,tM:()=>mp,zl:()=>mu});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(57075),i=Object.defineProperty,j=(a,b)=>{for(var c in b)i(a,c,{get:b[c],enumerable:!0})},k={"gemini-cli":"gemini","claude-code":"claude","claude-acp":"claude",codebuddy:"codebuddy-code",codex:"codex-acp","pi-acp":"pi"};function l(a){return k[a]??a}var m={gemini:{binary:"gemini",detectCommands:["gemini"],presenceDirs:["~/.gemini/"],cmd:"gemini",args:["--experimental-acp"],installCmd:"npm install -g @google/gemini-cli",displayName:"Gemini CLI",description:"Google Gemini 驱动的编程智能体。支持多文件编辑、代码审查、调试和项目级重构,原生集成 Google 搜索实时查询技术文档。"},claude:{binary:"claude",detectCommands:["claude"],presenceDirs:["~/.claude/"],cmd:"npx",args:["--yes","@agentclientprotocol/claude-agent-acp"],installCmd:"npm install -g @anthropic-ai/claude-code",displayName:"Claude Code",description:"Anthropic Claude 驱动的编程智能体。擅长复杂推理、长上下文理解和安全代码生成,支持多文件编辑与 agentic 工作流。"},"codebuddy-code":{binary:"codebuddy",detectCommands:["codebuddy"],presenceDirs:["~/.codebuddy/"],cmd:"codebuddy",args:["--acp"],installCmd:"npm install -g @tencent-ai/codebuddy-code",displayName:"CodeBuddy Code",description:"腾讯云智能编程助手。基于混元大模型,支持代码补全、生成、审查和多文件重构,深度理解中文语境,适配国内开发生态。"},"codex-acp":{binary:"codex",detectCommands:["codex"],presenceDirs:["~/.codex/"],cmd:"codex",args:[],installCmd:"npm install -g @openai/codex",displayName:"Codex",description:"OpenAI Codex 编程智能体。基于 GPT 系列模型,擅长代码生成、自动化任务和多语言编程支持。"},cursor:{binary:"cursor",detectCommands:["cursor"],presenceDirs:["~/.cursor/extensions/"],cmd:"cursor",args:[],displayName:"Cursor",description:"Cursor AI 编程智能体。AI-first 代码编辑器的 CLI 模式,支持上下文感知的代码编辑、Tab 补全和多文件协同修改。"},cline:{binary:"cline",detectCommands:["cline"],presenceDirs:["~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/","~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/","%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/"],cmd:"cline",args:[],installCmd:"npm install -g cline",displayName:"Cline",description:"开源自主编程智能体。支持多模型后端,内置文件编辑、终端执行和浏览器自动化能力。"},"github-copilot-cli":{binary:"github-copilot",cmd:"github-copilot",args:[],installCmd:"npm install -g @github/copilot",displayName:"GitHub Copilot",description:"GitHub Copilot 编程智能体。基于海量开源代码训练,擅长代码补全、测试生成和跨语言编程支持。"},goose:{binary:"goose",cmd:"goose",args:[],installCmd:"pip install goose-ai",displayName:"Goose",description:"Block 开源自主编程智能体。支持多模型后端,可扩展插件架构,擅长复杂任务自动化。"},opencode:{binary:"opencode",cmd:"opencode",args:[],installCmd:"go install github.com/opencode-ai/opencode@latest",displayName:"OpenCode",description:"开源终端编程智能体。Go 实现,轻量快速,支持多模型后端和丰富的代码编辑工具。"},kilo:{binary:"kilo",cmd:"kilo",args:[],installCmd:"npm install -g @kilocode/cli",displayName:"Kilo Code",description:"Kilo Code 编程智能体。开源 VS Code 扩展的 CLI 模式,支持多模型、自动审批和代码差异预览。"},openclaw:{binary:"openclaw",detectCommands:["openclaw"],presenceDirs:["~/.openclaw/"],cmd:"openclaw",args:[],displayName:"OpenClaw",description:"OpenClaw 编程智能体。开源 Claude Code 替代方案,支持多模型后端和完整的 agentic 工作流。"},pi:{binary:"pi",detectCommands:["pi"],presenceDirs:["~/.pi/"],cmd:"pi",args:[],displayName:"Pi Agent",description:"Pi Agent 编程智能体。轻量级终端编程助手。"},auggie:{binary:"auggie",detectCommands:["auggie"],presenceDirs:["~/.augment/"],cmd:"auggie",args:[],displayName:"Auggie",description:"Augment Code 编程智能体。支持代码理解、生成和全仓库上下文感知。"},iflow:{binary:"iflow",detectCommands:["iflow"],presenceDirs:["~/.iflow/"],cmd:"iflow",args:[],displayName:"iFlow",description:"iFlow 编程智能体。AI 驱动的工作流自动化工具。"},kimi:{binary:"kimi",detectCommands:["kimi"],presenceDirs:["~/.kimi/"],cmd:"kimi",args:[],displayName:"Kimi",description:"Moonshot AI Kimi 编程智能体。擅长超长上下文理解,支持中文语境下的代码生成与分析。"},"qwen-code":{binary:"qwen-code",detectCommands:["qwen-code","qwen"],presenceDirs:["~/.qwen/"],cmd:"qwen-code",args:[],installCmd:"npm install -g @qwen-code/qwen-code",displayName:"Qwen Code",description:"阿里通义千问 Qwen 编程智能体。基于 Qwen 大模型,支持代码生成、审查和多语言编程,深度适配中文开发场景。"},lingma:{binary:"lingma",detectCommands:["lingma"],presenceDirs:["~/.lingma/"],cmd:"lingma",args:[],displayName:"Lingma",description:"阿里通义灵码智能编程助手。提供代码补全、智能问答、多文件修改和编程智能体能力,支持 MCP 工具扩展。"}};function n(a,b,c){let d=m[l(a)],e=c?.enabled!==!1;if(c&&(c.command||c.args))return{cmd:c.command??d?.cmd??b?.command??a,args:c.args??d?.args??[],env:c.env,source:"user-override",binary:d?.binary??a,installCmd:d?.installCmd,enabled:e};if(d)return{cmd:d.cmd,args:d.args,env:c?.env,source:"descriptor",binary:d.binary,installCmd:d.installCmd,enabled:e};if(b){let{cmd:d,args:f}=function(a){switch(a.transport){case"npx":return{cmd:"npx",args:["--yes",a.command,...a.args??[]]};case"uvx":return{cmd:"uvx",args:[a.command,...a.args??[]]};default:return{cmd:a.command,args:a.args??[]}}}(b);return{cmd:d,args:f,env:c?.env,source:"registry",binary:a,installCmd:b.packageName?`npm install -g ${b.packageName}`:void 0,enabled:e}}return{cmd:a,args:[],env:c?.env,source:"registry",binary:a,enabled:e}}function o(a,b){if(!b)return;if(b[a])return b[a];let c=l(a);if(c!==a&&b[c])return b[c];for(let[c,d]of Object.entries(k))if(d===a&&b[c])return b[c]}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={},c=!1;for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let a={};if("string"==typeof e.command&&e.command.trim()&&(a.command=e.command.trim()),Array.isArray(e.args)&&(a.args=e.args.filter(a=>"string"==typeof a)),e.env&&"object"==typeof e.env&&!Array.isArray(e.env)){let b={};for(let[a,c]of Object.entries(e.env))"string"==typeof c&&(b[a]=c);Object.keys(b).length>0&&(a.env=b)}"boolean"==typeof e.enabled&&(a.enabled=e.enabled),Object.keys(a).length>0&&(b[d]=a,c=!0)}return c?b:void 0}var q=null,r=null;async function s(){if(r&&Date.now()-new Date(r.fetchedAt).getTime()<6048e5)return r;let a=(q||(q=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,description:b.description??"",transport:"npx"===b.cmd?"npx":"stdio",command:b.cmd,args:b.args,packageName:b.installCmd?.match(/npm install -g (.+)/)?.[1]}))),q);try{var b;let c=await fetch("https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json",{headers:{Accept:"application/json"},signal:AbortSignal.timeout(3e3)});if(!c.ok)return r??t(a,"builtin");let d=await c.json(),e=(b=d)&&"object"==typeof b?(Array.isArray(b.agents)?b.agents:Array.isArray(b)?b:Object.entries(b).filter(([a])=>"version"!==a&&"$schema"!==a).map(([a,b])=>({...b,id:a}))).map(w).filter(a=>null!==a):[],f=function(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b){let b=c.get(a.id),d=l(a.id),e=d!==a.id?c.get(d):void 0;b?c.set(a.id,{...b,tags:a.tags??b.tags,homepage:a.homepage??b.homepage,version:a.version??b.version}):e||c.set(a.id,a)}return Array.from(c.values())}(a,e);return r={version:d.version??"1",agents:f,fetchedAt:new Date().toISOString()}}catch{return r??t(a,"builtin")}}function t(a,b){return{version:b,agents:a,fetchedAt:new Date().toISOString()}}async function u(){return(await s()).agents}async function v(a){let b=await u(),c=l(a);return b.find(b=>b.id===a||b.id===c)??null}function w(a){if(!a||"object"!=typeof a)return null;let b=String(a.id??a.name??""),c=String(a.name??a.id??"");if(!b&&!c)return null;let{transport:d,command:e,packageName:f,args:g}=function(a){let b,c=a.distribution;if(c&&"object"==typeof c){if(c.npx&&"object"==typeof c.npx){let a=c.npx,b=x(String(a.package??""));return{transport:"npx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.uvx&&"object"==typeof c.uvx){let a=c.uvx,b=x(String(a.package??""));return{transport:"uvx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.binary&&"object"==typeof c.binary)return{transport:"binary",command:""}}return{transport:"npx"===(b=String(a.transport??"stdio").toLowerCase())||"uvx"===b||"binary"===b?b:"stdio",command:String(a.command??a.cmd??"")}}(a),h=b||c,i=m[l(h)]?.displayName,j=m[l(h)]?.description;return{id:h,name:i??c??b,description:j??String(a.description??""),version:a.version?String(a.version):void 0,transport:d,command:e,packageName:f,args:g??(Array.isArray(a.args)?a.args.map(String):void 0),env:a.env&&"object"==typeof a.env?a.env:void 0,tags:Array.isArray(a.tags)?a.tags.map(String):void 0,homepage:a.homepage??a.website?String(a.homepage??a.website):void 0}}function x(a){if(!a)return"";let b=a.lastIndexOf("@");return b>0?a.slice(0,b):a}function y(a){let b=a;return"~"===a?b=e.homedir():(a.startsWith("~/")||a.startsWith("~\\"))&&(b=f.resolve(e.homedir(),a.slice(2))),b.replace(/%([A-Za-z_][A-Za-z0-9_]*)%/g,(a,b)=>process.env[b]??a)}function z(a){return a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.includes("\\")||/^[A-Za-z]:[\\/]/.test(a)}function A(a){if(!a)return null;let b=a.trim();if(!b||!z(b))return null;let c=y(b);return d.existsSync(c)?c:null}function B(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a of b){let b=y(a);if(z(b)&&d.existsSync(b))return b}for(let a of b)if(z(a))return y(a);return null}function C(a){return`'${a.replace(/'/g,"'\\''")}'`}function D(){return"win32"===process.platform?[]:[...new Set([process.env.SHELL,"darwin"===process.platform?"/bin/zsh":void 0,"/bin/bash","/bin/sh"].filter(a=>!!a))]}function E(a,b){return new Promise(c=>{(0,g.execFile)(a,b,{encoding:"utf-8",timeout:3e3},(a,b)=>{a?c(null):c(b)})})}function F(a,b){try{return(0,g.execFileSync)(a,b,{encoding:"utf-8",timeout:3e3})}catch{return null}}async function G(a){let b=await E("win32"===process.platform?"where":"which",[a]);return b?B(b):null}async function H(a){for(let b of D()){let c=await E(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}async function I(a){if(!a)return null;let b=A(a);if(b)return b;let c=a.trim();return!c||z(c)?null:await G(c)??await H(c)}function J(a){let b;if(!a)return null;let c=A(a);if(c)return c;let d=a.trim();return!d||z(d)?null:((b=F("win32"===process.platform?"where":"which",[d]))?B(b):null)??function(a){for(let b of D()){let c=F(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}(d)}async function K(a){let b=[...new Set(a.map(a=>a.trim()).filter(Boolean))];return new Map(await Promise.all(b.map(async a=>[a,await I(a)])))}async function L(a={}){let b=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,binary:b.binary,detectCommands:b.detectCommands,presenceDirs:b.presenceDirs,installCmd:b.installCmd,description:b.description})).map(b=>{let c=o(b.id,a.overrides),d=n(b.id,void 0,c),e=A(c?.command),f=[...new Set([...b.detectCommands??[b.binary],...c?.command&&!z(c.command)?[c.command]:[]])];return{agent:b,resolved:d,directOverridePath:e,presenceCommands:f}}),c=await K(b.flatMap(a=>a.presenceCommands)),e=await K(b.map(a=>a.resolved.cmd)),f=[],g=[];for(let{agent:a,resolved:h,directOverridePath:i,presenceCommands:j}of b){let b=j.map(a=>c.get(a)??null).find(Boolean),k=i??b??function(a){if(!a||0===a.length)return null;for(let b of a){let a=y(b);if(d.existsSync(a))return a}return null}(a.presenceDirs),l=i??e.get(h.cmd)??(j.includes(h.cmd)?b:null)??null;if(k&&l)f.push({id:a.id,name:a.name,binaryPath:l,resolvedCommand:{cmd:h.cmd,args:h.args,source:h.source}});else{let b=a.installCmd?.match(/npm install -g (.+)/)?.[1];g.push({id:a.id,name:a.name,installCmd:a.installCmd??(b?`npm install -g ${b}`:""),packageName:b})}}return{installed:f,notInstalled:g}}var M={};j(M,{$brand:()=>Q,$input:()=>d9,$output:()=>d8,NEVER:()=>O,TimePrecision:()=>eB,ZodAny:()=>hj,ZodArray:()=>ht,ZodBase64:()=>gQ,ZodBase64URL:()=>gS,ZodBigInt:()=>g8,ZodBigIntFormat:()=>ha,ZodBoolean:()=>g6,ZodCIDRv4:()=>gM,ZodCIDRv6:()=>gO,ZodCUID:()=>gy,ZodCUID2:()=>gA,ZodCatch:()=>h9,ZodCustom:()=>ip,ZodCustomStringFormat:()=>gY,ZodDate:()=>hr,ZodDefault:()=>h1,ZodDiscriminatedUnion:()=>hC,ZodE164:()=>gU,ZodEmail:()=>gj,ZodEmoji:()=>gu,ZodEnum:()=>hP,ZodError:()=>f8,ZodFile:()=>hU,ZodGUID:()=>gl,ZodIPv4:()=>gI,ZodIPv6:()=>gK,ZodISODate:()=>f1,ZodISODateTime:()=>f_,ZodISODuration:()=>f5,ZodISOTime:()=>f3,ZodIntersection:()=>hE,ZodIssueCode:()=>iy,ZodJWT:()=>gW,ZodKSUID:()=>gG,ZodLazy:()=>ik,ZodLiteral:()=>hS,ZodMap:()=>hL,ZodNaN:()=>ib,ZodNanoID:()=>gw,ZodNever:()=>hn,ZodNonOptional:()=>h5,ZodNull:()=>hh,ZodNullable:()=>h$,ZodNumber:()=>g$,ZodNumberFormat:()=>g0,ZodObject:()=>hw,ZodOptional:()=>hY,ZodPipe:()=>id,ZodPrefault:()=>h3,ZodPromise:()=>im,ZodReadonly:()=>ig,ZodRealError:()=>f9,ZodRecord:()=>hI,ZodSet:()=>hN,ZodString:()=>gg,ZodStringFormat:()=>gi,ZodSuccess:()=>h7,ZodSymbol:()=>hd,ZodTemplateLiteral:()=>ii,ZodTransform:()=>hW,ZodTuple:()=>hG,ZodType:()=>ge,ZodULID:()=>gC,ZodURL:()=>gs,ZodUUID:()=>gn,ZodUndefined:()=>hf,ZodUnion:()=>hA,ZodUnknown:()=>hl,ZodVoid:()=>hp,ZodXID:()=>gE,_ZodString:()=>gf,_default:()=>h2,any:()=>hk,array:()=>hu,base64:()=>gR,base64url:()=>gT,bigint:()=>g9,boolean:()=>g7,catch:()=>ia,check:()=>iq,cidrv4:()=>gN,cidrv6:()=>gP,clone:()=>au,coerce:()=>iB,config:()=>T,core:()=>N,cuid:()=>gz,cuid2:()=>gB,custom:()=>ir,date:()=>hs,discriminatedUnion:()=>hD,e164:()=>gV,email:()=>gk,emoji:()=>gv,endsWith:()=>fl,enum:()=>hQ,file:()=>hV,flattenError:()=>aT,float32:()=>g2,float64:()=>g3,formatError:()=>aU,function:()=>fW,getErrorMap:()=>iA,globalRegistry:()=>ec,gt:()=>e3,gte:()=>e4,guid:()=>gm,includes:()=>fj,instanceof:()=>iu,int:()=>g1,int32:()=>g4,int64:()=>hb,intersection:()=>hF,ipv4:()=>gJ,ipv6:()=>gL,iso:()=>f$,json:()=>iw,jwt:()=>gX,keyof:()=>hv,ksuid:()=>gH,lazy:()=>il,length:()=>ff,literal:()=>hT,locales:()=>du,looseObject:()=>hz,lowercase:()=>fh,lt:()=>e1,lte:()=>e2,map:()=>hM,maxLength:()=>fd,maxSize:()=>fa,mime:()=>fn,minLength:()=>fe,minSize:()=>fb,multipleOf:()=>e9,nan:()=>ic,nanoid:()=>gx,nativeEnum:()=>hR,negative:()=>e6,never:()=>ho,nonnegative:()=>e8,nonoptional:()=>h6,nonpositive:()=>e7,normalize:()=>fp,null:()=>hi,nullable:()=>h_,nullish:()=>h0,number:()=>g_,object:()=>hx,optional:()=>hZ,overwrite:()=>fo,parse:()=>ga,parseAsync:()=>gb,partialRecord:()=>hK,pipe:()=>ie,positive:()=>e5,prefault:()=>h4,preprocess:()=>ix,prettifyError:()=>aX,promise:()=>io,property:()=>fm,readonly:()=>ih,record:()=>hJ,refine:()=>is,regex:()=>fg,regexes:()=>a4,registry:()=>eb,safeParse:()=>gc,safeParseAsync:()=>gd,set:()=>hO,setErrorMap:()=>iz,size:()=>fc,startsWith:()=>fk,strictObject:()=>hy,string:()=>gh,stringFormat:()=>gZ,stringbool:()=>iv,success:()=>h8,superRefine:()=>it,symbol:()=>he,templateLiteral:()=>ij,toJSONSchema:()=>fY,toLowerCase:()=>fr,toUpperCase:()=>fs,transform:()=>hX,treeifyError:()=>aV,trim:()=>fq,tuple:()=>hH,uint32:()=>g5,uint64:()=>hc,ulid:()=>gD,undefined:()=>hg,union:()=>hB,unknown:()=>hm,uppercase:()=>fi,url:()=>gt,uuid:()=>go,uuidv4:()=>gp,uuidv6:()=>gq,uuidv7:()=>gr,void:()=>hq,xid:()=>gF});var N={};j(N,{$ZodAny:()=>cM,$ZodArray:()=>cS,$ZodAsyncError:()=>R,$ZodBase64:()=>cx,$ZodBase64URL:()=>cz,$ZodBigInt:()=>cH,$ZodBigIntFormat:()=>cI,$ZodBoolean:()=>cG,$ZodCIDRv4:()=>cu,$ZodCIDRv6:()=>cv,$ZodCUID:()=>cj,$ZodCUID2:()=>ck,$ZodCatch:()=>di,$ZodCheck:()=>bM,$ZodCheckBigIntFormat:()=>bS,$ZodCheckEndsWith:()=>b3,$ZodCheckGreaterThan:()=>bP,$ZodCheckIncludes:()=>b1,$ZodCheckLengthEquals:()=>bY,$ZodCheckLessThan:()=>bO,$ZodCheckLowerCase:()=>b_,$ZodCheckMaxLength:()=>bW,$ZodCheckMaxSize:()=>bT,$ZodCheckMimeType:()=>b6,$ZodCheckMinLength:()=>bX,$ZodCheckMinSize:()=>bU,$ZodCheckMultipleOf:()=>bQ,$ZodCheckNumberFormat:()=>bR,$ZodCheckOverwrite:()=>b7,$ZodCheckProperty:()=>b5,$ZodCheckRegex:()=>b$,$ZodCheckSizeEquals:()=>bV,$ZodCheckStartsWith:()=>b2,$ZodCheckStringFormat:()=>bZ,$ZodCheckUpperCase:()=>b0,$ZodCustom:()=>ds,$ZodCustomStringFormat:()=>cD,$ZodDate:()=>cQ,$ZodDefault:()=>dc,$ZodDiscriminatedUnion:()=>cY,$ZodE164:()=>cA,$ZodEmail:()=>cf,$ZodEmoji:()=>ch,$ZodEnum:()=>c6,$ZodError:()=>aR,$ZodFile:()=>c8,$ZodFunction:()=>fV,$ZodGUID:()=>cd,$ZodIPv4:()=>cs,$ZodIPv6:()=>ct,$ZodISODate:()=>cp,$ZodISODateTime:()=>co,$ZodISODuration:()=>cr,$ZodISOTime:()=>cq,$ZodIntersection:()=>cZ,$ZodJWT:()=>cC,$ZodKSUID:()=>cn,$ZodLazy:()=>dr,$ZodLiteral:()=>c7,$ZodMap:()=>c2,$ZodNaN:()=>dj,$ZodNanoID:()=>ci,$ZodNever:()=>cO,$ZodNonOptional:()=>df,$ZodNull:()=>cL,$ZodNullable:()=>db,$ZodNumber:()=>cE,$ZodNumberFormat:()=>cF,$ZodObject:()=>cV,$ZodOptional:()=>da,$ZodPipe:()=>dk,$ZodPrefault:()=>de,$ZodPromise:()=>dq,$ZodReadonly:()=>dm,$ZodRealError:()=>aS,$ZodRecord:()=>c1,$ZodRegistry:()=>ea,$ZodSet:()=>c4,$ZodString:()=>cb,$ZodStringFormat:()=>cc,$ZodSuccess:()=>dh,$ZodSymbol:()=>cJ,$ZodTemplateLiteral:()=>dp,$ZodTransform:()=>c9,$ZodTuple:()=>c_,$ZodType:()=>ca,$ZodULID:()=>cl,$ZodURL:()=>cg,$ZodUUID:()=>ce,$ZodUndefined:()=>cK,$ZodUnion:()=>cX,$ZodUnknown:()=>cN,$ZodVoid:()=>cP,$ZodXID:()=>cm,$brand:()=>Q,$constructor:()=>P,$input:()=>d9,$output:()=>d8,Doc:()=>b8,JSONSchema:()=>fZ,JSONSchemaGenerator:()=>fX,NEVER:()=>O,TimePrecision:()=>eB,_any:()=>eW,_array:()=>ft,_base64:()=>ex,_base64url:()=>ey,_bigint:()=>eP,_boolean:()=>eN,_catch:()=>fL,_cidrv4:()=>ev,_cidrv6:()=>ew,_coercedBigint:()=>eQ,_coercedBoolean:()=>eO,_coercedDate:()=>e_,_coercedNumber:()=>eH,_coercedString:()=>ee,_cuid:()=>eo,_cuid2:()=>ep,_custom:()=>fR,_date:()=>e$,_default:()=>fI,_discriminatedUnion:()=>fv,_e164:()=>ez,_email:()=>ef,_emoji:()=>em,_endsWith:()=>fl,_enum:()=>fB,_file:()=>fE,_float32:()=>eJ,_float64:()=>eK,_gt:()=>e3,_gte:()=>e4,_guid:()=>eg,_includes:()=>fj,_int:()=>eI,_int32:()=>eL,_int64:()=>eR,_intersection:()=>fw,_ipv4:()=>et,_ipv6:()=>eu,_isoDate:()=>eD,_isoDateTime:()=>eC,_isoDuration:()=>eF,_isoTime:()=>eE,_jwt:()=>eA,_ksuid:()=>es,_lazy:()=>fP,_length:()=>ff,_literal:()=>fD,_lowercase:()=>fh,_lt:()=>e1,_lte:()=>e2,_map:()=>fz,_max:()=>e2,_maxLength:()=>fd,_maxSize:()=>fa,_mime:()=>fn,_min:()=>e4,_minLength:()=>fe,_minSize:()=>fb,_multipleOf:()=>e9,_nan:()=>e0,_nanoid:()=>en,_nativeEnum:()=>fC,_negative:()=>e6,_never:()=>eY,_nonnegative:()=>e8,_nonoptional:()=>fJ,_nonpositive:()=>e7,_normalize:()=>fp,_null:()=>eV,_nullable:()=>fH,_number:()=>eG,_optional:()=>fG,_overwrite:()=>fo,_parse:()=>aY,_parseAsync:()=>a$,_pipe:()=>fM,_positive:()=>e5,_promise:()=>fQ,_property:()=>fm,_readonly:()=>fN,_record:()=>fy,_refine:()=>fS,_regex:()=>fg,_safeParse:()=>a0,_safeParseAsync:()=>a2,_set:()=>fA,_size:()=>fc,_startsWith:()=>fk,_string:()=>ed,_stringFormat:()=>fU,_stringbool:()=>fT,_success:()=>fK,_symbol:()=>eT,_templateLiteral:()=>fO,_toLowerCase:()=>fr,_toUpperCase:()=>fs,_transform:()=>fF,_trim:()=>fq,_tuple:()=>fx,_uint32:()=>eM,_uint64:()=>eS,_ulid:()=>eq,_undefined:()=>eU,_union:()=>fu,_unknown:()=>eX,_uppercase:()=>fi,_url:()=>el,_uuid:()=>eh,_uuidv4:()=>ei,_uuidv6:()=>ej,_uuidv7:()=>ek,_void:()=>eZ,_xid:()=>er,clone:()=>au,config:()=>T,flattenError:()=>aT,formatError:()=>aU,function:()=>fW,globalConfig:()=>S,globalRegistry:()=>ec,isValidBase64:()=>cw,isValidBase64URL:()=>cy,isValidJWT:()=>cB,locales:()=>du,parse:()=>aZ,parseAsync:()=>a_,prettifyError:()=>aX,regexes:()=>a4,registry:()=>eb,safeParse:()=>a1,safeParseAsync:()=>a3,toDotPath:()=>aW,toJSONSchema:()=>fY,treeifyError:()=>aV,util:()=>U,version:()=>b9});var O=Object.freeze({status:"aborted"});function P(a,b,c){function d(c,d){var e;for(let f in Object.defineProperty(c,"_zod",{value:c._zod??{},enumerable:!1}),(e=c._zod).traits??(e.traits=new Set),c._zod.traits.add(a),b(c,d),g.prototype)f in c||Object.defineProperty(c,f,{value:g.prototype[f].bind(c)});c._zod.constr=g,c._zod.def=d}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}var Q=Symbol("zod_brand"),R=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},S={};function T(a){return a&&Object.assign(S,a),S}var U={};function V(a){return a}function W(a){return a}function X(a){}function Y(a){throw Error()}function Z(a){}function $(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function _(a,b="|"){return a.map(a=>ax(a)).join(b)}function aa(a,b){return"bigint"==typeof b?b.toString():b}function ab(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function ac(a){return null==a}function ad(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}function ae(a,b){let c=(a.toString().split(".")[1]||"").length,d=(b.toString().split(".")[1]||"").length,e=c>d?c:d;return Number.parseInt(a.toFixed(e).replace(".",""))%Number.parseInt(b.toFixed(e).replace(".",""))/10**e}function af(a,b,c){Object.defineProperty(a,b,{get(){{let d=c();return a[b]=d,d}},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function ag(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function ah(a,b){return b?b.reduce((a,b)=>a?.[b],a):a}function ai(a){let b=Object.keys(a);return Promise.all(b.map(b=>a[b])).then(a=>{let c={};for(let d=0;d<b.length;d++)c[b[d]]=a[d];return c})}function aj(a=10){let b="abcdefghijklmnopqrstuvwxyz",c="";for(let d=0;d<a;d++)c+=b[Math.floor(Math.random()*b.length)];return c}function ak(a){return JSON.stringify(a)}j(U,{BIGINT_FORMAT_RANGES:()=>aA,Class:()=>aP,NUMBER_FORMAT_RANGES:()=>az,aborted:()=>aH,allowsEval:()=>an,assert:()=>Z,assertEqual:()=>V,assertIs:()=>X,assertNever:()=>Y,assertNotEqual:()=>W,assignProp:()=>ag,cached:()=>ab,captureStackTrace:()=>al,cleanEnum:()=>aO,cleanRegex:()=>ad,clone:()=>au,createTransparentProxy:()=>aw,defineLazy:()=>af,esc:()=>ak,escapeRegex:()=>at,extend:()=>aD,finalizeIssue:()=>aK,floatSafeRemainder:()=>ae,getElementAtPath:()=>ah,getEnumValues:()=>$,getLengthableOrigin:()=>aM,getParsedType:()=>aq,getSizableOrigin:()=>aL,isObject:()=>am,isPlainObject:()=>ao,issue:()=>aN,joinValues:()=>_,jsonStringifyReplacer:()=>aa,merge:()=>aE,normalizeParams:()=>av,nullish:()=>ac,numKeys:()=>ap,omit:()=>aC,optionalKeys:()=>ay,partial:()=>aF,pick:()=>aB,prefixIssues:()=>aI,primitiveTypes:()=>as,promiseAllObject:()=>ai,propertyKeyTypes:()=>ar,randomString:()=>aj,required:()=>aG,stringifyPrimitive:()=>ax,unwrapMessage:()=>aJ});var al=Error.captureStackTrace?Error.captureStackTrace:(...a)=>{};function am(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}var an=ab(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch{return!1}});function ao(a){if(!1===am(a))return!1;let b=a.constructor;if(void 0===b)return!0;let c=b.prototype;return!1!==am(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function ap(a){let b=0;for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b++;return b}var aq=a=>{let b=typeof a;switch(b){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(a)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(a)?"array":null===a?"null":a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch?"promise":"u">typeof Map&&a instanceof Map?"map":"u">typeof Set&&a instanceof Set?"set":"u">typeof Date&&a instanceof Date?"date":"u">typeof File&&a instanceof File?"file":"object";default:throw Error(`Unknown data type: ${b}`)}},ar=new Set(["string","number","symbol"]),as=new Set(["string","number","bigint","boolean","symbol","undefined"]);function at(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function au(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function av(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return delete a.message,"string"==typeof a.error?{...a,error:()=>a.error}:a}function aw(a){let b;return new Proxy({},{get:(c,d,e)=>(b??(b=a()),Reflect.get(b,d,e)),set:(c,d,e,f)=>(b??(b=a()),Reflect.set(b,d,e,f)),has:(c,d)=>(b??(b=a()),Reflect.has(b,d)),deleteProperty:(c,d)=>(b??(b=a()),Reflect.deleteProperty(b,d)),ownKeys:c=>(b??(b=a()),Reflect.ownKeys(b)),getOwnPropertyDescriptor:(c,d)=>(b??(b=a()),Reflect.getOwnPropertyDescriptor(b,d)),defineProperty:(c,d,e)=>(b??(b=a()),Reflect.defineProperty(b,d,e))})}function ax(a){return"bigint"==typeof a?a.toString()+"n":"string"==typeof a?`"${a}"`:`${a}`}function ay(a){return Object.keys(a).filter(b=>"optional"===a[b]._zod.optin&&"optional"===a[b]._zod.optout)}var az={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},aA={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function aB(a,b){let c={},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&(c[a]=d.shape[a])}return au(a,{...a._zod.def,shape:c,checks:[]})}function aC(a,b){let c={...a._zod.def.shape},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&delete c[a]}return au(a,{...a._zod.def,shape:c,checks:[]})}function aD(a,b){if(!ao(b))throw Error("Invalid input to extend: expected a plain object");let c={...a._zod.def,get shape(){let c={...a._zod.def.shape,...b};return ag(this,"shape",c),c},checks:[]};return au(a,c)}function aE(a,b){return au(a,{...a._zod.def,get shape(){let c={...a._zod.def.shape,...b._zod.def.shape};return ag(this,"shape",c),c},catchall:b._zod.def.catchall,checks:[]})}function aF(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in d))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=a?new a({type:"optional",innerType:d[b]}):d[b])}else for(let b in d)e[b]=a?new a({type:"optional",innerType:d[b]}):d[b];return au(b,{...b._zod.def,shape:e,checks:[]})}function aG(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in e))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=new a({type:"nonoptional",innerType:d[b]}))}else for(let b in d)e[b]=new a({type:"nonoptional",innerType:d[b]});return au(b,{...b._zod.def,shape:e,checks:[]})}function aH(a,b=0){for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function aI(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function aJ(a){return"string"==typeof a?a:a?.message}function aK(a,b,c){let d={...a,path:a.path??[]};return a.message||(d.message=aJ(a.inst?._zod.def?.error?.(a))??aJ(b?.error?.(a))??aJ(c.customError?.(a))??aJ(c.localeError?.(a))??"Invalid input"),delete d.inst,delete d.continue,b?.reportInput||delete d.input,d}function aL(a){return a instanceof Set?"set":a instanceof Map?"map":a instanceof File?"file":"unknown"}function aM(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function aN(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}function aO(a){return Object.entries(a).filter(([a,b])=>Number.isNaN(Number.parseInt(a,10))).map(a=>a[1])}var aP=class{constructor(...a){}},aQ=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),Object.defineProperty(a,"message",{get:()=>JSON.stringify(b,aa,2),enumerable:!0}),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aR=P("$ZodError",aQ),aS=P("$ZodError",aQ,{Parent:Error});function aT(a,b=a=>a.message){let c={},d=[];for(let e of a.issues)e.path.length>0?(c[e.path[0]]=c[e.path[0]]||[],c[e.path[0]].push(b(e))):d.push(b(e));return{formErrors:d,fieldErrors:c}}function aU(a,b){let c=b||function(a){return a.message},d={_errors:[]},e=a=>{for(let b of a.issues)if("invalid_union"===b.code&&b.errors.length)b.errors.map(a=>e({issues:a}));else if("invalid_key"===b.code)e({issues:b.issues});else if("invalid_element"===b.code)e({issues:b.issues});else if(0===b.path.length)d._errors.push(c(b));else{let a=d,e=0;for(;e<b.path.length;){let d=b.path[e];e===b.path.length-1?(a[d]=a[d]||{_errors:[]},a[d]._errors.push(c(b))):a[d]=a[d]||{_errors:[]},a=a[d],e++}}};return e(a),d}function aV(a,b){let c=b||function(a){return a.message},d={errors:[]},e=(a,b=[])=>{var f,g;for(let h of a.issues)if("invalid_union"===h.code&&h.errors.length)h.errors.map(a=>e({issues:a},h.path));else if("invalid_key"===h.code)e({issues:h.issues},h.path);else if("invalid_element"===h.code)e({issues:h.issues},h.path);else{let a=[...b,...h.path];if(0===a.length){d.errors.push(c(h));continue}let e=d,i=0;for(;i<a.length;){let b=a[i],d=i===a.length-1;"string"==typeof b?(e.properties??(e.properties={}),(f=e.properties)[b]??(f[b]={errors:[]}),e=e.properties[b]):(e.items??(e.items=[]),(g=e.items)[b]??(g[b]={errors:[]}),e=e.items[b]),d&&e.errors.push(c(h)),i++}}};return e(a),d}function aW(a){let b=[];for(let c of a)"number"==typeof c?b.push(`[${c}]`):"symbol"==typeof c?b.push(`[${JSON.stringify(String(c))}]`):/[^\w$]/.test(c)?b.push(`[${JSON.stringify(c)}]`):(b.length&&b.push("."),b.push(c));return b.join("")}function aX(a){let b=[];for(let c of[...a.issues].sort((a,b)=>a.path.length-b.path.length))b.push(`\u2716 ${c.message}`),c.path?.length&&b.push(` \u2192 at ${aW(c.path)}`);return b.join(`
|
|
72
72
|
`)}var aY=a=>(b,c,d,e)=>{let f=d?Object.assign(d,{async:!1}):{async:!1},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise)throw new R;if(g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>aK(a,f,T())));throw al(b,e?.callee),b}return g.value},aZ=aY(aS),a$=a=>async(b,c,d,e)=>{let f=d?Object.assign(d,{async:!0}):{async:!0},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>aK(a,f,T())));throw al(b,e?.callee),b}return g.value},a_=a$(aS),a0=a=>(b,c,d)=>{let e=d?{...d,async:!1}:{async:!1},f=b._zod.run({value:c,issues:[]},e);if(f instanceof Promise)throw new R;return f.issues.length?{success:!1,error:new(a??aR)(f.issues.map(a=>aK(a,e,T())))}:{success:!0,data:f.value}},a1=a0(aS),a2=a=>async(b,c,d)=>{let e=d?Object.assign(d,{async:!0}):{async:!0},f=b._zod.run({value:c,issues:[]},e);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new a(f.issues.map(a=>aK(a,e,T())))}:{success:!0,data:f.value}},a3=a2(aS),a4={};j(a4,{_emoji:()=>bn,base64:()=>bt,base64url:()=>bu,bigint:()=>bE,boolean:()=>bH,browserEmail:()=>bm,cidrv4:()=>br,cidrv6:()=>bs,cuid:()=>a5,cuid2:()=>a6,date:()=>bz,datetime:()=>bC,domain:()=>bw,duration:()=>bb,e164:()=>bx,email:()=>bi,emoji:()=>bo,extendedDuration:()=>bc,guid:()=>bd,hostname:()=>bv,html5Email:()=>bj,integer:()=>bF,ipv4:()=>bp,ipv6:()=>bq,ksuid:()=>a9,lowercase:()=>bK,nanoid:()=>ba,null:()=>bI,number:()=>bG,rfc5322Email:()=>bk,string:()=>bD,time:()=>bB,ulid:()=>a7,undefined:()=>bJ,unicodeEmail:()=>bl,uppercase:()=>bL,uuid:()=>be,uuid4:()=>bf,uuid6:()=>bg,uuid7:()=>bh,xid:()=>a8});var a5=/^[cC][^\s-]{8,}$/,a6=/^[0-9a-z]+$/,a7=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,a8=/^[0-9a-vA-V]{20}$/,a9=/^[A-Za-z0-9]{27}$/,ba=/^[a-zA-Z0-9_-]{21}$/,bb=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,bc=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,bd=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,be=a=>a?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${a}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,bf=be(4),bg=be(6),bh=be(7),bi=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,bj=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bk=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,bl=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,bm=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function bo(){return RegExp(bn,"u")}var bp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,bq=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,br=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bs=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,bt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,bu=/^[A-Za-z0-9_-]*$/,bv=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,bw=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,bx=/^\+(?:[0-9]){6,14}[0-9]$/,by="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",bz=RegExp(`^${by}$`);function bA(a){let b="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof a.precision?-1===a.precision?`${b}`:0===a.precision?`${b}:[0-5]\\d`:`${b}:[0-5]\\d\\.\\d{${a.precision}}`:`${b}(?::[0-5]\\d(?:\\.\\d+)?)?`}function bB(a){return RegExp(`^${bA(a)}$`)}function bC(a){let b=bA({precision:a.precision}),c=["Z"];a.local&&c.push(""),a.offset&&c.push("([+-]\\d{2}:\\d{2})");let d=`${b}(?:${c.join("|")})`;return RegExp(`^${by}T(?:${d})$`)}var bD=a=>{let b=a?`[\\s\\S]{${a?.minimum??0},${a?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${b}$`)},bE=/^\d+n?$/,bF=/^\d+$/,bG=/^-?\d+(?:\.\d+)?/i,bH=/true|false/i,bI=/null/i,bJ=/undefined/i,bK=/^[^A-Z]*$/,bL=/^[^a-z]*$/,bM=P("$ZodCheck",(a,b)=>{var c;a._zod??(a._zod={}),a._zod.def=b,(c=a._zod).onattach??(c.onattach=[])}),bN={number:"number",bigint:"bigint",object:"date"},bO=P("$ZodCheckLessThan",(a,b)=>{bM.init(a,b);let c=bN[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.maximum:c.exclusiveMaximum)??1/0;b.value<d&&(b.inclusive?c.maximum=b.value:c.exclusiveMaximum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value<=b.value:d.value<b.value)||d.issues.push({origin:c,code:"too_big",maximum:b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),bP=P("$ZodCheckGreaterThan",(a,b)=>{bM.init(a,b);let c=bN[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.minimum:c.exclusiveMinimum)??-1/0;b.value>d&&(b.inclusive?c.minimum=b.value:c.exclusiveMinimum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value>=b.value:d.value>b.value)||d.issues.push({origin:c,code:"too_small",minimum:b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),bQ=P("$ZodCheckMultipleOf",(a,b)=>{bM.init(a,b),a._zod.onattach.push(a=>{var c;(c=a._zod.bag).multipleOf??(c.multipleOf=b.value)}),a._zod.check=c=>{if(typeof c.value!=typeof b.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof c.value?c.value%b.value===BigInt(0):0===ae(c.value,b.value))||c.issues.push({origin:typeof c.value,code:"not_multiple_of",divisor:b.value,input:c.value,inst:a,continue:!b.abort})}}),bR=P("$ZodCheckNumberFormat",(a,b)=>{bM.init(a,b),b.format=b.format||"float64";let c=b.format?.includes("int"),d=c?"int":"number",[e,f]=az[b.format];a._zod.onattach.push(a=>{let d=a._zod.bag;d.format=b.format,d.minimum=e,d.maximum=f,c&&(d.pattern=bF)}),a._zod.check=g=>{let h=g.value;if(c){if(!Number.isInteger(h))return void g.issues.push({expected:d,format:b.format,code:"invalid_type",input:h,inst:a});if(!Number.isSafeInteger(h))return void(h>0?g.issues.push({input:h,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,continue:!b.abort}):g.issues.push({input:h,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,continue:!b.abort}))}h<e&&g.issues.push({origin:"number",input:h,code:"too_small",minimum:e,inclusive:!0,inst:a,continue:!b.abort}),h>f&&g.issues.push({origin:"number",input:h,code:"too_big",maximum:f,inst:a})}}),bS=P("$ZodCheckBigIntFormat",(a,b)=>{bM.init(a,b);let[c,d]=aA[b.format];a._zod.onattach.push(a=>{let e=a._zod.bag;e.format=b.format,e.minimum=c,e.maximum=d}),a._zod.check=e=>{let f=e.value;f<c&&e.issues.push({origin:"bigint",input:f,code:"too_small",minimum:c,inclusive:!0,inst:a,continue:!b.abort}),f>d&&e.issues.push({origin:"bigint",input:f,code:"too_big",maximum:d,inst:a})}}),bT=P("$ZodCheckMaxSize",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;d.size<=b.maximum||c.issues.push({origin:aL(d),code:"too_big",maximum:b.maximum,input:d,inst:a,continue:!b.abort})}}),bU=P("$ZodCheckMinSize",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;d.size>=b.minimum||c.issues.push({origin:aL(d),code:"too_small",minimum:b.minimum,input:d,inst:a,continue:!b.abort})}}),bV=P("$ZodCheckSizeEquals",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.size,c.maximum=b.size,c.size=b.size}),a._zod.check=c=>{let d=c.value,e=d.size;if(e===b.size)return;let f=e>b.size;c.issues.push({origin:aL(d),...f?{code:"too_big",maximum:b.size}:{code:"too_small",minimum:b.size},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),bW=P("$ZodCheckMaxLength",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;if(d.length<=b.maximum)return;let e=aM(d);c.issues.push({origin:e,code:"too_big",maximum:b.maximum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),bX=P("$ZodCheckMinLength",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;if(d.length>=b.minimum)return;let e=aM(d);c.issues.push({origin:e,code:"too_small",minimum:b.minimum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),bY=P("$ZodCheckLengthEquals",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.length,c.maximum=b.length,c.length=b.length}),a._zod.check=c=>{let d=c.value,e=d.length;if(e===b.length)return;let f=aM(d),g=e>b.length;c.issues.push({origin:f,...g?{code:"too_big",maximum:b.length}:{code:"too_small",minimum:b.length},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),bZ=P("$ZodCheckStringFormat",(a,b)=>{var c,d;bM.init(a,b),a._zod.onattach.push(a=>{let c=a._zod.bag;c.format=b.format,b.pattern&&(c.patterns??(c.patterns=new Set),c.patterns.add(b.pattern))}),b.pattern?(c=a._zod).check??(c.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:b.format,input:c.value,...b.pattern?{pattern:b.pattern.toString()}:{},inst:a,continue:!b.abort})}):(d=a._zod).check??(d.check=()=>{})}),b$=P("$ZodCheckRegex",(a,b)=>{bZ.init(a,b),a._zod.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:"regex",input:c.value,pattern:b.pattern.toString(),inst:a,continue:!b.abort})}}),b_=P("$ZodCheckLowerCase",(a,b)=>{b.pattern??(b.pattern=bK),bZ.init(a,b)}),b0=P("$ZodCheckUpperCase",(a,b)=>{b.pattern??(b.pattern=bL),bZ.init(a,b)}),b1=P("$ZodCheckIncludes",(a,b)=>{bM.init(a,b);let c=at(b.includes),d=new RegExp("number"==typeof b.position?`^.{${b.position}}${c}`:c);b.pattern=d,a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(d)}),a._zod.check=c=>{c.value.includes(b.includes,b.position)||c.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:b.includes,input:c.value,inst:a,continue:!b.abort})}}),b2=P("$ZodCheckStartsWith",(a,b)=>{bM.init(a,b);let c=RegExp(`^${at(b.prefix)}.*`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.startsWith(b.prefix)||c.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:b.prefix,input:c.value,inst:a,continue:!b.abort})}}),b3=P("$ZodCheckEndsWith",(a,b)=>{bM.init(a,b);let c=RegExp(`.*${at(b.suffix)}$`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.endsWith(b.suffix)||c.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:b.suffix,input:c.value,inst:a,continue:!b.abort})}});function b4(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues))}var b5=P("$ZodCheckProperty",(a,b)=>{bM.init(a,b),a._zod.check=a=>{let c=b.schema._zod.run({value:a.value[b.property],issues:[]},{});if(c instanceof Promise)return c.then(c=>b4(c,a,b.property));b4(c,a,b.property)}}),b6=P("$ZodCheckMimeType",(a,b)=>{bM.init(a,b);let c=new Set(b.mime);a._zod.onattach.push(a=>{a._zod.bag.mime=b.mime}),a._zod.check=d=>{c.has(d.value.type)||d.issues.push({code:"invalid_value",values:b.mime,input:d.value.type,inst:a})}}),b7=P("$ZodCheckOverwrite",(a,b)=>{bM.init(a,b),a._zod.check=a=>{a.value=b.tx(a.value)}}),b8=class{constructor(a=[]){this.content=[],this.indent=0,this&&(this.args=a)}indented(a){this.indent+=1,a(this),this.indent-=1}write(a){if("function"==typeof a){a(this,{execution:"sync"}),a(this,{execution:"async"});return}let b=a.split(`
|
|
73
73
|
`).filter(a=>a),c=Math.min(...b.map(a=>a.length-a.trimStart().length));for(let a of b.map(a=>a.slice(c)).map(a=>" ".repeat(2*this.indent)+a))this.content.push(a)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(a=>` ${a}`)].join(`
|
|
74
74
|
`))}},b9={major:4,minor:0,patch:0},ca=P("$ZodType",(a,b)=>{var c;a??(a={}),a._zod.def=b,a._zod.bag=a._zod.bag||{},a._zod.version=b9;let d=[...a._zod.def.checks??[]];for(let b of(a._zod.traits.has("$ZodCheck")&&d.unshift(a),d))for(let c of b._zod.onattach)c(a);if(0===d.length)(c=a._zod).deferred??(c.deferred=[]),a._zod.deferred?.push(()=>{a._zod.run=a._zod.parse});else{let b=(a,b,c)=>{let d=aH(a),e;for(let f of b){if(f._zod.def.when){if(!f._zod.def.when(a))continue}else if(d)continue;let b=a.issues.length,g=f._zod.check(a);if(g instanceof Promise&&c?.async===!1)throw new R;if(e||g instanceof Promise)e=(e??Promise.resolve()).then(async()=>{await g,a.issues.length!==b&&(d||(d=aH(a,b)))});else{if(a.issues.length===b)continue;d||(d=aH(a,b))}}return e?e.then(()=>a):a};a._zod.run=(c,e)=>{let f=a._zod.parse(c,e);if(f instanceof Promise){if(!1===e.async)throw new R;return f.then(a=>b(a,d,e))}return b(f,d,e)}}a["~standard"]={validate:b=>{try{let c=a1(a,b);return c.success?{value:c.data}:{issues:c.error?.issues}}catch{return a3(a,b).then(a=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}}),cb=P("$ZodString",(a,b)=>{ca.init(a,b),a._zod.pattern=[...a?._zod.bag?.patterns??[]].pop()??bD(a._zod.bag),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=String(c.value)}catch{}return"string"==typeof c.value||c.issues.push({expected:"string",code:"invalid_type",input:c.value,inst:a}),c}}),cc=P("$ZodStringFormat",(a,b)=>{bZ.init(a,b),cb.init(a,b)}),cd=P("$ZodGUID",(a,b)=>{b.pattern??(b.pattern=bd),cc.init(a,b)}),ce=P("$ZodUUID",(a,b)=>{if(b.version){let a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[b.version];if(void 0===a)throw Error(`Invalid UUID version: "${b.version}"`);b.pattern??(b.pattern=be(a))}else b.pattern??(b.pattern=be());cc.init(a,b)}),cf=P("$ZodEmail",(a,b)=>{b.pattern??(b.pattern=bi),cc.init(a,b)}),cg=P("$ZodURL",(a,b)=>{cc.init(a,b),a._zod.check=c=>{try{let d=c.value,e=new URL(d),f=e.href;b.hostname&&(b.hostname.lastIndex=0,b.hostname.test(e.hostname)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:bv.source,input:c.value,inst:a,continue:!b.abort})),b.protocol&&(b.protocol.lastIndex=0,b.protocol.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:b.protocol.source,input:c.value,inst:a,continue:!b.abort})),!d.endsWith("/")&&f.endsWith("/")?c.value=f.slice(0,-1):c.value=f;return}catch{c.issues.push({code:"invalid_format",format:"url",input:c.value,inst:a,continue:!b.abort})}}}),ch=P("$ZodEmoji",(a,b)=>{b.pattern??(b.pattern=bo()),cc.init(a,b)}),ci=P("$ZodNanoID",(a,b)=>{b.pattern??(b.pattern=ba),cc.init(a,b)}),cj=P("$ZodCUID",(a,b)=>{b.pattern??(b.pattern=a5),cc.init(a,b)}),ck=P("$ZodCUID2",(a,b)=>{b.pattern??(b.pattern=a6),cc.init(a,b)}),cl=P("$ZodULID",(a,b)=>{b.pattern??(b.pattern=a7),cc.init(a,b)}),cm=P("$ZodXID",(a,b)=>{b.pattern??(b.pattern=a8),cc.init(a,b)}),cn=P("$ZodKSUID",(a,b)=>{b.pattern??(b.pattern=a9),cc.init(a,b)}),co=P("$ZodISODateTime",(a,b)=>{b.pattern??(b.pattern=bC(b)),cc.init(a,b)}),cp=P("$ZodISODate",(a,b)=>{b.pattern??(b.pattern=bz),cc.init(a,b)}),cq=P("$ZodISOTime",(a,b)=>{b.pattern??(b.pattern=bB(b)),cc.init(a,b)}),cr=P("$ZodISODuration",(a,b)=>{b.pattern??(b.pattern=bb),cc.init(a,b)}),cs=P("$ZodIPv4",(a,b)=>{b.pattern??(b.pattern=bp),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.format="ipv4"})}),ct=P("$ZodIPv6",(a,b)=>{b.pattern??(b.pattern=bq),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.format="ipv6"}),a._zod.check=c=>{try{new URL(`http://[${c.value}]`)}catch{c.issues.push({code:"invalid_format",format:"ipv6",input:c.value,inst:a,continue:!b.abort})}}}),cu=P("$ZodCIDRv4",(a,b)=>{b.pattern??(b.pattern=br),cc.init(a,b)}),cv=P("$ZodCIDRv6",(a,b)=>{b.pattern??(b.pattern=bs),cc.init(a,b),a._zod.check=c=>{let[d,e]=c.value.split("/");try{if(!e)throw Error();let a=Number(e);if(`${a}`!==e||a<0||a>128)throw Error();new URL(`http://[${d}]`)}catch{c.issues.push({code:"invalid_format",format:"cidrv6",input:c.value,inst:a,continue:!b.abort})}}});function cw(a){if(""===a)return!0;if(a.length%4!=0)return!1;try{return atob(a),!0}catch{return!1}}var cx=P("$ZodBase64",(a,b)=>{b.pattern??(b.pattern=bt),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.contentEncoding="base64"}),a._zod.check=c=>{cw(c.value)||c.issues.push({code:"invalid_format",format:"base64",input:c.value,inst:a,continue:!b.abort})}});function cy(a){if(!bu.test(a))return!1;let b=a.replace(/[-_]/g,a=>"-"===a?"+":"/");return cw(b.padEnd(4*Math.ceil(b.length/4),"="))}var cz=P("$ZodBase64URL",(a,b)=>{b.pattern??(b.pattern=bu),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.contentEncoding="base64url"}),a._zod.check=c=>{cy(c.value)||c.issues.push({code:"invalid_format",format:"base64url",input:c.value,inst:a,continue:!b.abort})}}),cA=P("$ZodE164",(a,b)=>{b.pattern??(b.pattern=bx),cc.init(a,b)});function cB(a,b=null){try{let c=a.split(".");if(3!==c.length)return!1;let[d]=c;if(!d)return!1;let e=JSON.parse(atob(d));return!("typ"in e&&e?.typ!=="JWT"||!e.alg||b&&(!("alg"in e)||e.alg!==b))}catch{return!1}}var cC=P("$ZodJWT",(a,b)=>{cc.init(a,b),a._zod.check=c=>{cB(c.value,b.alg)||c.issues.push({code:"invalid_format",format:"jwt",input:c.value,inst:a,continue:!b.abort})}}),cD=P("$ZodCustomStringFormat",(a,b)=>{cc.init(a,b),a._zod.check=c=>{b.fn(c.value)||c.issues.push({code:"invalid_format",format:b.format,input:c.value,inst:a,continue:!b.abort})}}),cE=P("$ZodNumber",(a,b)=>{ca.init(a,b),a._zod.pattern=a._zod.bag.pattern??bG,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=Number(c.value)}catch{}let e=c.value;if("number"==typeof e&&!Number.isNaN(e)&&Number.isFinite(e))return c;let f="number"==typeof e?Number.isNaN(e)?"NaN":Number.isFinite(e)?void 0:"Infinity":void 0;return c.issues.push({expected:"number",code:"invalid_type",input:e,inst:a,...f?{received:f}:{}}),c}}),cF=P("$ZodNumber",(a,b)=>{bR.init(a,b),cE.init(a,b)}),cG=P("$ZodBoolean",(a,b)=>{ca.init(a,b),a._zod.pattern=bH,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=!!c.value}catch{}let e=c.value;return"boolean"==typeof e||c.issues.push({expected:"boolean",code:"invalid_type",input:e,inst:a}),c}}),cH=P("$ZodBigInt",(a,b)=>{ca.init(a,b),a._zod.pattern=bE,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=BigInt(c.value)}catch{}return"bigint"==typeof c.value||c.issues.push({expected:"bigint",code:"invalid_type",input:c.value,inst:a}),c}}),cI=P("$ZodBigInt",(a,b)=>{bS.init(a,b),cH.init(a,b)}),cJ=P("$ZodSymbol",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>{let d=b.value;return"symbol"==typeof d||b.issues.push({expected:"symbol",code:"invalid_type",input:d,inst:a}),b}}),cK=P("$ZodUndefined",(a,b)=>{ca.init(a,b),a._zod.pattern=bJ,a._zod.values=new Set([void 0]),a._zod.optin="optional",a._zod.optout="optional",a._zod.parse=(b,c)=>{let d=b.value;return typeof d>"u"||b.issues.push({expected:"undefined",code:"invalid_type",input:d,inst:a}),b}}),cL=P("$ZodNull",(a,b)=>{ca.init(a,b),a._zod.pattern=bI,a._zod.values=new Set([null]),a._zod.parse=(b,c)=>{let d=b.value;return null===d||b.issues.push({expected:"null",code:"invalid_type",input:d,inst:a}),b}}),cM=P("$ZodAny",(a,b)=>{ca.init(a,b),a._zod.parse=a=>a}),cN=P("$ZodUnknown",(a,b)=>{ca.init(a,b),a._zod.parse=a=>a}),cO=P("$ZodNever",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>(b.issues.push({expected:"never",code:"invalid_type",input:b.value,inst:a}),b)}),cP=P("$ZodVoid",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>{let d=b.value;return typeof d>"u"||b.issues.push({expected:"void",code:"invalid_type",input:d,inst:a}),b}}),cQ=P("$ZodDate",(a,b)=>{ca.init(a,b),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=new Date(c.value)}catch{}let e=c.value,f=e instanceof Date;return f&&!Number.isNaN(e.getTime())||c.issues.push({expected:"date",code:"invalid_type",input:e,...f?{received:"Invalid Date"}:{},inst:a}),c}});function cR(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues)),b.value[c]=a.value}var cS=P("$ZodArray",(a,b)=>{ca.init(a,b),a._zod.parse=(c,d)=>{let e=c.value;if(!Array.isArray(e))return c.issues.push({expected:"array",code:"invalid_type",input:e,inst:a}),c;c.value=Array(e.length);let f=[];for(let a=0;a<e.length;a++){let g=e[a],h=b.element._zod.run({value:g,issues:[]},d);h instanceof Promise?f.push(h.then(b=>cR(b,c,a))):cR(h,c,a)}return f.length?Promise.all(f).then(()=>c):c}});function cT(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues)),b.value[c]=a.value}function cU(a,b,c,d){a.issues.length?void 0===d[c]?c in d?b.value[c]=void 0:b.value[c]=a.value:b.issues.push(...aI(c,a.issues)):void 0===a.value?c in d&&(b.value[c]=void 0):b.value[c]=a.value}var cV=P("$ZodObject",(a,b)=>{ca.init(a,b);let c=ab(()=>{let a=Object.keys(b.shape);for(let c of a)if(!(b.shape[c]instanceof ca))throw Error(`Invalid element at key "${c}": expected a Zod schema`);let c=ay(b.shape);return{shape:b.shape,keys:a,keySet:new Set(a),numKeys:a.length,optionalKeys:new Set(c)}});af(a._zod,"propValues",()=>{let a=b.shape,c={};for(let b in a){let d=a[b]._zod;if(d.values)for(let a of(c[b]??(c[b]=new Set),d.values))c[b].add(a)}return c});let d,e=!S.jitless,f=e&&an.value,g=b.catchall,h;a._zod.parse=(i,j)=>{h??(h=c.value);let k=i.value;if(!am(k))return i.issues.push({expected:"object",code:"invalid_type",input:k,inst:a}),i;let l=[];if(e&&f&&j?.async===!1&&!0!==j.jitless)d||(d=(a=>{let b=new b8(["shape","payload","ctx"]),d=c.value,e=a=>{let b=ak(a);return`shape[${b}]._zod.run({ value: input[${b}], issues: [] }, ctx)`};b.write("const input = payload.value;");let f=Object.create(null),g=0;for(let a of d.keys)f[a]=`key_${g++}`;for(let a of(b.write("const newResult = {}"),d.keys))if(d.optionalKeys.has(a)){let c=f[a];b.write(`const ${c} = ${e(a)};`);let d=ak(a);b.write(`
|