@geminilight/mindos 0.6.40 → 0.6.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +18 -18
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +5 -1
  10. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/_standalone/.next/server/app/_global-error.html +2 -2
  13. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  21. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js +2 -2
  27. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  28. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/ask/route.js +1 -1
  40. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  41. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  45. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  47. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  49. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  51. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  54. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  56. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  58. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  60. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  61. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  62. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  65. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  67. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  69. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
  71. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/mcp/install-skill/route.js.nft.json +1 -1
  73. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  78. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  79. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  80. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  83. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  87. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  97. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  103. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/changes/page.js +1 -1
  105. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  106. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  108. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  109. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/echo/page.js +1 -1
  111. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  112. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/explore/page.js +1 -1
  114. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  115. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/help/page.js +2 -2
  117. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/login/page.js +1 -1
  120. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/page.js +2 -2
  123. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/setup/page.js +2 -2
  126. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/trash/page.js +3 -3
  129. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  132. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app-paths-manifest.json +18 -18
  135. package/_standalone/.next/server/chunks/1550.js +1 -1
  136. package/_standalone/.next/server/chunks/2190.js +11 -0
  137. package/_standalone/.next/server/chunks/{6365.js → 2536.js} +2 -2
  138. package/_standalone/.next/server/chunks/5648.js +2 -0
  139. package/_standalone/.next/server/chunks/8388.js +1 -1
  140. package/_standalone/.next/server/chunks/953.js +1 -1
  141. package/_standalone/.next/server/chunks/9539.js +219 -0
  142. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  143. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  144. package/_standalone/.next/server/next-font-manifest.js +1 -1
  145. package/_standalone/.next/server/next-font-manifest.json +1 -1
  146. package/_standalone/.next/server/pages/500.html +2 -2
  147. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  148. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  149. package/_standalone/.next/static/chunks/1053-b70535785cc5aaee.js +29 -0
  150. package/_standalone/.next/static/chunks/{8663-de911d2d395622be.js → 1880-c2a9e76201841c86.js} +1 -1
  151. package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +1 -0
  152. package/_standalone/.next/static/chunks/4563-b2a2ce80aff845af.js +6 -0
  153. package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +1 -0
  154. package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +1 -0
  155. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-773071a99c4daac2.js +1 -0
  156. package/_standalone/.next/static/chunks/app/agents/page-6102a884b2cb3cfe.js +5 -0
  157. package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +1 -0
  158. package/_standalone/.next/static/chunks/app/{layout-9378c1c8d3e5761b.js → layout-42cdbce19f404567.js} +34 -34
  159. package/_standalone/.next/static/chunks/app/{page-9bae420fbbdc5fff.js → page-8c9643b649e01735.js} +1 -1
  160. package/_standalone/.next/static/chunks/app/setup/page-d158b8cb533feb1e.js +1 -0
  161. package/_standalone/.next/static/chunks/app/trash/{page-b61ef2d5cd4f8d73.js → page-e9ab74ffeb96af41.js} +1 -1
  162. package/_standalone/.next/static/chunks/app/view/[...path]/page-764a69a1c8bd4eef.js +12 -0
  163. package/_standalone/.next/static/chunks/{webpack-c28c55d0a6021a6b.js → webpack-7b276daaa930d480.js} +1 -1
  164. package/_standalone/.next/static/css/bc9179074eaf65ae.css +1 -0
  165. package/_standalone/.next/trace +63 -63
  166. package/_standalone/__tests__/api/mcp-install.test.ts +23 -0
  167. package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
  168. package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
  169. package/_standalone/__tests__/core/tools.test.ts +3 -6
  170. package/_standalone/components/FileTree.tsx +3 -2
  171. package/_standalone/components/MarkdownView.tsx +30 -15
  172. package/_standalone/components/RightAskPanel.tsx +36 -6
  173. package/_standalone/components/Sidebar.tsx +3 -3
  174. package/_standalone/components/agents/AgentsMcpSection.tsx +3 -0
  175. package/_standalone/components/settings/McpAgentInstall.tsx +94 -27
  176. package/_standalone/components/settings/McpSkillsSection.tsx +1 -1
  177. package/_standalone/components/settings/McpTab.tsx +484 -340
  178. package/_standalone/components/settings/SettingsContent.tsx +12 -6
  179. package/_standalone/components/settings/types.ts +3 -0
  180. package/_standalone/components/setup/StepAgents.tsx +113 -47
  181. package/_standalone/components/setup/StepReview.tsx +14 -27
  182. package/_standalone/components/setup/types.ts +6 -0
  183. package/_standalone/data/skills/mindos/SKILL.md +92 -92
  184. package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
  185. package/_standalone/data/skills/mindos-zh/SKILL.md +100 -104
  186. package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
  187. package/_standalone/lib/i18n/modules/features.ts +4 -4
  188. package/_standalone/lib/i18n/modules/knowledge.ts +4 -0
  189. package/_standalone/lib/i18n/modules/onboarding.ts +40 -30
  190. package/_standalone/lib/i18n/modules/settings.ts +78 -6
  191. package/_standalone/lib/mcp-snippets.ts +5 -1
  192. package/_standalone/tsconfig.tsbuildinfo +1 -1
  193. package/app/app/api/ask/route.ts +3 -2
  194. package/app/app/api/mcp/install/route.ts +2 -1
  195. package/app/app/api/mcp/status/route.ts +14 -6
  196. package/app/app/view/[...path]/ViewPageClient.tsx +12 -27
  197. package/app/components/FileTree.tsx +3 -2
  198. package/app/components/MarkdownView.tsx +30 -15
  199. package/app/components/RightAskPanel.tsx +36 -6
  200. package/app/components/Sidebar.tsx +3 -3
  201. package/app/components/agents/AgentsMcpSection.tsx +3 -0
  202. package/app/components/help/HelpContent.tsx +1 -0
  203. package/app/components/settings/McpAgentInstall.tsx +94 -27
  204. package/app/components/settings/McpSkillsSection.tsx +1 -1
  205. package/app/components/settings/McpTab.tsx +484 -340
  206. package/app/components/settings/SettingsContent.tsx +12 -6
  207. package/app/components/settings/types.ts +3 -0
  208. package/app/components/setup/StepAgents.tsx +113 -47
  209. package/app/components/setup/StepReview.tsx +14 -27
  210. package/app/components/setup/index.tsx +12 -11
  211. package/app/components/setup/types.ts +6 -0
  212. package/app/data/skills/mindos/SKILL.md +92 -92
  213. package/app/data/skills/mindos/references/write-supplement.md +119 -0
  214. package/app/data/skills/mindos-zh/SKILL.md +100 -104
  215. package/app/data/skills/mindos-zh/references/write-supplement.md +119 -0
  216. package/app/lib/fs.ts +0 -6
  217. package/app/lib/i18n/modules/features.ts +4 -4
  218. package/app/lib/i18n/modules/knowledge.ts +4 -0
  219. package/app/lib/i18n/modules/onboarding.ts +40 -30
  220. package/app/lib/i18n/modules/settings.ts +78 -6
  221. package/app/lib/mcp-agents.ts +1 -2
  222. package/app/lib/mcp-snippets.ts +5 -1
  223. package/app/lib/renderers/index.ts +2 -1
  224. package/bin/cli.js +168 -1404
  225. package/bin/commands/agent.js +156 -20
  226. package/bin/commands/api.js +14 -11
  227. package/bin/commands/ask.js +79 -68
  228. package/bin/commands/build.js +26 -0
  229. package/bin/commands/config.js +170 -0
  230. package/bin/commands/dev.js +58 -0
  231. package/bin/commands/doctor.js +205 -0
  232. package/bin/commands/file.js +551 -36
  233. package/bin/commands/gateway.js +42 -0
  234. package/bin/commands/init-skills.js +56 -0
  235. package/bin/commands/logs.js +32 -0
  236. package/bin/commands/mcp-cmd.js +57 -0
  237. package/bin/commands/onboard.js +25 -0
  238. package/bin/commands/open.js +41 -0
  239. package/bin/commands/restart.js +48 -0
  240. package/bin/commands/search.js +16 -14
  241. package/bin/commands/space.js +96 -25
  242. package/bin/commands/start.js +262 -0
  243. package/bin/commands/status.js +2 -2
  244. package/bin/commands/stop.js +14 -0
  245. package/bin/commands/sync-cmd.js +134 -0
  246. package/bin/commands/token.js +98 -0
  247. package/bin/commands/uninstall.js +154 -0
  248. package/bin/commands/update.js +286 -0
  249. package/bin/lib/build.js +1 -1
  250. package/bin/lib/colors.js +8 -7
  251. package/bin/lib/command.js +37 -96
  252. package/bin/lib/config.js +5 -0
  253. package/bin/lib/csv.js +19 -0
  254. package/bin/lib/jsonc.js +12 -0
  255. package/bin/lib/markdown.js +69 -0
  256. package/bin/lib/mcp-agents.js +1 -6
  257. package/bin/lib/mcp-build.js +1 -1
  258. package/bin/lib/mcp-install.js +2 -1
  259. package/bin/lib/one-shot.js +88 -0
  260. package/bin/lib/path-expand.js +9 -0
  261. package/bin/lib/remote.js +65 -0
  262. package/bin/lib/repl.js +167 -0
  263. package/bin/lib/{utils.js → shell.js} +10 -26
  264. package/bin/lib/skill-check.js +1 -1
  265. package/bin/lib/sse-stream.js +167 -0
  266. package/package.json +2 -2
  267. package/scripts/setup.js +182 -120
  268. package/skills/mindos/SKILL.md +92 -92
  269. package/skills/mindos-zh/SKILL.md +100 -104
  270. package/_standalone/.next/server/chunks/1955.js +0 -11
  271. package/_standalone/.next/server/chunks/3680.js +0 -1
  272. package/_standalone/.next/server/chunks/4497.js +0 -219
  273. package/_standalone/.next/server/chunks/5560.js +0 -2
  274. package/_standalone/.next/static/chunks/1053-0adaccc98a752a58.js +0 -29
  275. package/_standalone/.next/static/chunks/3637.f9a42cca59fd5bb5.js +0 -1
  276. package/_standalone/.next/static/chunks/4563-c2afaeacb241d1d0.js +0 -6
  277. package/_standalone/.next/static/chunks/6090-c98268ca726a68d3.js +0 -1
  278. package/_standalone/.next/static/chunks/9371-575600301da5d6bb.js +0 -1
  279. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-3e08abb495ecd5fd.js +0 -1
  280. package/_standalone/.next/static/chunks/app/agents/page-e7e0f87ad3d765ac.js +0 -5
  281. package/_standalone/.next/static/chunks/app/help/page-3d0e1ceaa4abc243.js +0 -1
  282. package/_standalone/.next/static/chunks/app/setup/page-99ed3d1bb6b8f4ef.js +0 -1
  283. package/_standalone/.next/static/chunks/app/view/[...path]/page-44fa78cbea613a78.js +0 -12
  284. package/_standalone/.next/static/css/d300701f384db50d.css +0 -1
  285. package/_standalone/components/renderers/agent-inspector/manifest.ts +0 -16
  286. /package/_standalone/.next/static/{rZLs1krFuduixvcVNe6q3 → Ij3PFh-a0zi5K_ANoSAW0}/_buildManifest.js +0 -0
  287. /package/_standalone/.next/static/{rZLs1krFuduixvcVNe6q3 → Ij3PFh-a0zi5K_ANoSAW0}/_ssgManifest.js +0 -0
@@ -15,152 +15,152 @@ description: >
15
15
 
16
16
  # MindOS Skill
17
17
 
18
- <!-- version: 1.3.2 -->
18
+ <!-- version: 3.0.0 — CLI-first, MCP optional -->
19
+
20
+ ## CLI commands
21
+
22
+ Use `mindos file <subcommand>` for all knowledge base operations. Add `--json` for structured output.
23
+
24
+ | Operation | Command |
25
+ |-----------|---------|
26
+ | List files | `mindos file list` |
27
+ | Read file | `mindos file read <path>` |
28
+ | Write/overwrite | `mindos file write <path> --content "..."` |
29
+ | Create new file | `mindos file create <path> --content "..."` |
30
+ | Append to file | `mindos file append <path> --content "..."` |
31
+ | Edit section | `mindos file edit-section <path> -H "## Heading" --content "..."` |
32
+ | Insert after heading | `mindos file insert-heading <path> -H "## Heading" --content "..."` |
33
+ | Append CSV row | `mindos file append-csv <path> --row "col1,col2,col3"` |
34
+ | Delete file | `mindos file delete <path>` |
35
+ | Rename/move | `mindos file rename <old> <new>` |
36
+ | Search | `mindos search "query"` |
37
+ | Backlinks | `mindos file backlinks <path>` |
38
+ | Recent files | `mindos file recent --limit 10` |
39
+ | Git history | `mindos file history <path>` |
40
+ | List spaces | `mindos space list` |
41
+ | Create space | `mindos space create "name"` |
42
+
43
+ > **MCP users:** If you only have MCP tools (`mindos_*`), use them directly — they are self-describing via their schemas. Prefer CLI when available (lower token cost).
44
+
45
+ ### CLI setup
46
+
47
+ ```bash
48
+ npm install -g @geminilight/mindos
49
+ # Remote mode: mindos config set url http://<IP>:<PORT> && mindos config set authToken <token>
50
+ ```
51
+
52
+ ---
19
53
 
20
- **Before every task, internalize these 5 rules:**
54
+ ## Rules
21
55
 
22
- 1. The **bootstrap directory tree is the primary index** reason from names and hierarchy before calling search. Most questions can be answered by reading what's already in context.
23
- 2. **Default to read-only.** Only invoke write tools when the user explicitly asks to save, record, organize, or edit. Lookup / summarize / quote = no writes.
56
+ 1. **Bootstrap first** list the KB tree to understand structure before searching or writing.
57
+ 2. **Default to read-only.** Only write when the user explicitly asks to save, record, organize, or edit. Lookup / summarize / quote = no writes.
24
58
  3. **Rule precedence** (highest wins): user's current-turn instruction → `.mindos/user-preferences.md` → nearest directory `INSTRUCTION.md` → root `INSTRUCTION.md` → this SKILL's defaults.
25
59
  4. **Multi-file edits require a plan first.** Present the full change list; execute only after approval.
26
60
  5. After create/delete/move/rename → **sync affected READMEs** automatically.
61
+ 6. **Read before write.** Always read a file before overwriting it. Never write based on assumptions.
27
62
 
28
63
  ---
29
64
 
30
65
  ## NEVER do (hard-won pitfalls)
31
66
 
32
- - **NEVER write to the KB root** unless the user explicitly says so. Root is for governance files only (`README.md`, `INSTRUCTION.md`, `CONFIG`). New content goes under the most semantically fitting subdirectory.
33
- - **NEVER assume directory names.** Don't hardcode `Workflows/`, `Projects/`, `Contacts/` — always infer from the bootstrap tree you actually received. The user's KB may use Chinese names, flat layout, or unconventional hierarchy.
34
- - **NEVER use `mindos_write_file` for a small edit.** Use `update_section`, `update_lines`, or `insert_after_heading` full-file rewrites destroy git diffs and make changes unauditable.
35
- - **NEVER search with a single keyword.** Always fire 2-4 parallel searches (synonyms, abbreviations, Chinese/English variants). One keyword misses too much.
36
- - **NEVER modify `INSTRUCTION.md` or `README.md` without confirmation.** These are governance docs — treat as high-sensitivity even for trivial-looking typo fixes.
37
- - **NEVER create a file without checking siblings first.** Read at least 1-2 files in the target directory to learn local naming, heading style, and CSV schema. Inventing a new convention is a common cause of inconsistency.
38
- - **NEVER leave orphan references.** After any rename/move, run `get_backlinks` and update every referring file. Missing this is the #1 source of broken links in a KB.
39
- - **NEVER skip the routing confirmation for multi-file writes.** Even when the destinations seem obvious — the user's mental model may differ from yours.
67
+ - **NEVER write to the KB root** unless explicitly told. Root is for governance files only. New content goes under the most fitting subdirectory.
68
+ - **NEVER assume directory names.** Infer from the actual bootstrap tree the KB may use Chinese names or flat layout.
69
+ - **NEVER use full-file overwrite for a small edit.** Use `mindos file edit-section` or `mindos file insert-heading` for targeted changes. Full rewrites destroy git diffs.
70
+ - **NEVER search with a single keyword.** Fire 2-4 parallel searches (synonyms, abbreviations, Chinese/English variants).
71
+ - **NEVER modify `INSTRUCTION.md` or `README.md` without confirmation.** Governance docs — treat as high-sensitivity.
72
+ - **NEVER create a file without checking siblings.** Read 1-2 files in the target directory to learn local style.
73
+ - **NEVER leave orphan references.** After rename/move, check backlinks and update every referring file.
74
+ - **NEVER skip routing confirmation for multi-file writes.** The user's mental model may differ from yours.
40
75
 
41
76
  ---
42
77
 
43
78
  ## MindOS concepts
44
79
 
45
80
  - **Space** — Knowledge partitions organized the way you think. Agents follow the same structure.
46
- - **Instruction** — A rules file all connected agents obey. Written once, enforced everywhere.
47
- - **Skill** — Teaches agents how to read, write, and organize the KB. Agents execute installed Skills, not guesses.
81
+ - **Instruction** — A rules file (`INSTRUCTION.md`) all connected agents obey.
82
+ - **Skill** — Teaches agents how to read, write, and organize the KB.
48
83
 
49
- **Notes as Instruction and Skill**`INSTRUCTION.md` and `SKILL.md` are just Markdown files in the tree. A note can be free-form text, governance rules agents must follow, or a procedure package agents execute.
84
+ Notes can embody both Instruction and Skill — they're just Markdown files in the tree.
50
85
 
51
86
  ---
52
87
 
53
- ## Thinking framework
54
-
55
- Before acting, ask yourself:
56
-
57
- 1. **What is the user's intent category?** → read-only lookup | single-file edit | multi-file routing | structural change | SOP execution. This determines which path to take below.
58
- 2. **Where does this content belong?** → Scan the directory tree. If you can't place it in <5 seconds of looking at names, the user probably needs to confirm.
59
- 3. **What already exists nearby?** → Read 1-2 sibling files before writing. Match their style.
60
- 4. **What will break if I change this?** → For renames/moves: `get_backlinks`. For content edits: think about who else cites this fact.
61
- 5. **Am I being asked, or am I volunteering?** → If the user didn't ask you to write, don't write.
62
-
63
- ---
64
-
65
- ## Task routing decision tree
88
+ ## Decision tree
66
89
 
67
90
  ```
68
91
  User request
69
92
 
70
- ├─ Only asks to look up / summarize / quote?
71
- │ └─ YES → [Read-only path]: search + read + cite sources. No writes. Skip hooks.
93
+ ├─ Lookup / summarize / quote?
94
+ │ └─ [Read-only]: search read answer with citations. No writes.
72
95
 
73
- ├─ Asks to save / record / update / organize specific content?
74
- │ ├─ Single file target? → [Single-file edit]
75
- │ └─ Multiple files or unclear target? → [Multi-file routing]
96
+ ├─ Save / record / update / organize specific content?
97
+ │ ├─ Single file → [Single-file edit]
98
+ │ └─ Multiple files or unclear → [Multi-file routing] — plan first
76
99
 
77
100
  ├─ Structural change (rename / move / delete / reorganize)?
78
- │ └─ [Structural path]
101
+ │ └─ [Structural path] — check backlinks before and after
79
102
 
80
103
  ├─ Procedural / repeatable task?
81
- │ └─ [SOP path]
104
+ │ └─ [SOP path] — find and follow existing SOP, or create one
82
105
 
83
106
  ├─ Retrospective / distill / handoff?
84
107
  │ └─ [Retrospective path]
85
108
 
86
- └─ Ambiguous or too broad?
87
- └─ ASK for clarification. Propose 2-3 specific options based on KB state. Do NOT start editing.
109
+ └─ Ambiguous?
110
+ └─ ASK. Propose 2-3 specific options based on KB state.
88
111
  ```
89
112
 
90
- **For any write/SOP/structural path above → the write supplement is already loaded in context (see `## Write & Workflow Supplement` section below or in the next context block).**
91
-
92
- ---
93
-
94
- ## Tool selection
95
-
96
- | Intent | Best tool | Avoid |
97
- |--------|-----------|-------|
98
- | Load context at start | `mindos_bootstrap` | Reading random files without bootstrap |
99
- | List top-level Mind Spaces | `mindos_list_spaces` | Full `mindos_list_files` when you only need zone names and README blurbs |
100
- | Find files | `mindos_search_notes` (2-4 parallel keyword variants) | Single-keyword search |
101
- | Read content | `mindos_read_file` or `mindos_read_lines` (for large files) | Reading entire large file when you need 10 lines |
102
-
103
- Write, structural, and history tools → see Write & Workflow Supplement (loaded below or in next context block).
104
-
105
- ### Fallbacks
106
-
107
- - `mindos_bootstrap` unavailable → manual reads of root `INSTRUCTION.md` + `README.md`.
108
- - Search returns empty → don't give up: (1) scan tree in context, (2) read candidate files directly, (3) `mindos_list_files` on specific subdirectories, (4) try synonym/alternate-language keywords.
109
-
110
- ---
111
-
112
- ## Execution patterns
113
-
114
- | Pattern | When | Key steps |
115
- |---------|------|-----------|
116
- | **Read-only Q&A** | Lookup / summarize / quote | Tree reasoning → search → read → answer with citations → state gaps |
117
-
118
- For write, SOP, structural, and handoff patterns → see Write & Workflow Supplement (loaded below or in next context block).
119
-
120
113
  ---
121
114
 
122
115
  ## Judgment heuristics
123
116
 
124
- **Save intent — read vs. write boundary**
125
- - "帮我记下来" / "记录一下" / "保存这个" = write
126
- - "搜一下有没有关于 X 的笔记" / "总结上周的工作" = read-only
127
- - Ambiguous boundary ("整理一下这些内容") → ask first: display only, or write back to KB?
117
+ **Save intent boundary:**
118
+ - "帮我记下来" / "保存" = write
119
+ - "搜一下" / "总结" = read-only
120
+ - "整理一下" → ask: display only, or write back?
128
121
 
129
- **File location uncertainty**
130
- - 扫目录树 5 秒内定不下来 → don't invent a new directory; use the nearest semantically-fit existing one and inform the user
131
- - User says "just put it somewhere" → place in inbox or top-level general directory, propose classification after (triggers Structure classification hook)
122
+ **File location uncertainty:**
123
+ - Can't decide in 5 seconds use nearest existing directory, inform user
124
+ - "Just put it somewhere" → inbox, propose classification after
132
125
 
133
- **Scope creep signals**
134
- - Single input routes to >5 files → pause, confirm scope; users rarely intend bulk rewrites
135
- - "Update all of these" + content spans multiple topics → split into batches, confirm each, don't execute all at once
126
+ **Scope creep:**
127
+ - Input routes to >5 files → pause, confirm scope
128
+ - "Update all of these" spanning multiple topics → split into batches
136
129
 
137
- **Citation discipline**
138
- - KB-cited facts must include the file path so the user can verify
130
+ **Citation:** KB-cited facts must include the file path.
139
131
 
140
132
  ---
141
133
 
142
134
  ## Post-task hooks
143
135
 
144
- After **write tasks** (not simple single-file edits or read-only), scan this table. If a condition matches, make a one-line proposal. At most 1 proposal; pick highest priority. Check `.mindos/user-preferences.md` suppression section first. Skip all if user asked for quiet mode.
136
+ After write tasks (not simple reads), scan this table. At most 1 proposal; highest priority wins. Check `.mindos/user-preferences.md` suppression first.
145
137
 
146
138
  | Hook | Priority | Condition |
147
139
  |------|----------|-----------|
148
- | Experience capture | high | Debugging, troubleshooting, or took multiple rounds |
149
- | Consistency sync | high | Edited file A which has backlinks (check `get_backlinks`) |
150
- | SOP drift | medium | Followed an SOP but execution diverged from its steps |
151
- | Linked update | medium | Changed a CSV/TODO status and related docs exist |
152
- | Structure classification | medium | Created a file in a temporary location or inbox |
153
- | Pattern extraction | low | 3+ structurally similar operations this session |
154
- | Conversation retrospective | low | Session >10 turns with decisions or trade-offs |
140
+ | Experience capture | high | Debugging, troubleshooting, or multi-round work |
141
+ | Consistency sync | high | Edited file with backlinks |
142
+ | SOP drift | medium | Followed SOP but diverged |
143
+ | Linked update | medium | Changed CSV/TODO status with related docs |
144
+ | Structure classification | medium | Created file in inbox/temp location |
145
+ | Pattern extraction | low | 3+ similar operations this session |
155
146
 
156
- If a hook triggers → read [references/post-task-hooks.md](./references/post-task-hooks.md) for the propose format and any user-defined hooks. If nothing matches, end quietly — do not read the file.
147
+ If a hook triggers → read [references/post-task-hooks.md](./references/post-task-hooks.md).
157
148
 
158
149
  ## Preference capture
159
150
 
160
- When the user expresses a standing preference ("don't do X", "always put Y in Z"), read [references/preference-capture.md](./references/preference-capture.md) and follow the confirm-then-write flow to `.mindos/user-preferences.md`.
161
- **Do NOT read** preference-capture unless the user actually expressed a preference to persist.
151
+ When user expresses a standing preference read [references/preference-capture.md](./references/preference-capture.md) and follow confirm-then-write flow.
162
152
 
163
153
  ## SOP authoring
164
154
 
165
- When creating or rewriting a workflow SOP, **MANDATORY read [references/sop-template.md](./references/sop-template.md)** for required structure (prerequisites, steps with branches, exit conditions, pitfall log).
166
- **Do NOT read** sop-template for SOP execution (only for SOP creation/editing).
155
+ When creating/rewriting an SOP read [references/sop-template.md](./references/sop-template.md).
156
+
157
+ ---
158
+
159
+ ## Error handling (CLI)
160
+
161
+ ```bash
162
+ "command not found: mindos" → npm install -g @geminilight/mindos
163
+ "Mind root not configured" → mindos onboard
164
+ "401 Unauthorized" → Check AUTH_TOKEN: mindos token (on server)
165
+ "ECONNREFUSED" → Start server: mindos start
166
+ ```
@@ -2,164 +2,160 @@
2
2
  name: mindos-zh
3
3
  description: >
4
4
  操作 MindOS 知识库:更新笔记, 搜索知识库, 整理文件, 执行SOP/工作流, 复盘, 追加CSV, 跨Agent交接,
5
- 路由非结构化输入到对应文件, 提炼经验, 同步关联文档.
6
- update notes, search knowledge base, organize, SOP, retrospective, CSV, handoff, route notes, distill experience.
5
+ 路由非结构化输入到对应文件, 提炼经验, 同步关联文档. update notes, search knowledge base, organize,
6
+ SOP, retrospective, CSV, handoff, route notes, distill experience.
7
7
  仅 mindRoot 知识库内任务。不用于:改代码仓库/项目文档/KB 外路径。
8
8
  核心概念:空间、指令(INSTRUCTION.md)、技能(SKILL.md);笔记可承载指令与技能。
9
- 当用户说"帮我记下来"、"搜一下我的笔记"、"更新知识库"、"整理文件"、"执行工作流"、
10
- "记录这次会议的决策"、"追加到表格"、"交接给下一个 Agent" 时触发。
11
- 也适用于:save/record a note, search KB, update/edit files, run SOP, capture decisions,
12
- append CSV rows, cross-agent handoff — 所有 mindRoot 知识库内的读写操作。
13
9
  ---
14
10
 
15
- # MindOS Skill
11
+ # MindOS 技能
16
12
 
17
- <!-- version: 1.3.2 -->
13
+ <!-- version: 3.0.0 — CLI 优先,MCP 可选 -->
18
14
 
19
- **每次任务前,内化这 5 条规则:**
15
+ ## CLI 命令
20
16
 
21
- 1. **bootstrap 目录树是首要索引** 先从目录名和层级推断,再搜索。大多数定位不需要工具调用。
22
- 2. **默认只读。** 只有用户明确要求保存、记录、整理、修改时才调写入工具。查阅/总结/引用 = 不写。
23
- 3. **规则优先级**(越上越优先):用户当轮指令 → `.mindos/user-preferences.md` → 就近目录 `INSTRUCTION.md` → 根 `INSTRUCTION.md` → 本 SKILL 默认。
24
- 4. **多文件编辑必须先出计划。** 展示完整变更清单,确认后再执行。
25
- 5. 增删/移动/重命名后 → **自动同步受影响 README**。
17
+ 使用 `mindos file <子命令>` 完成所有知识库操作。加 `--json` 获取结构化输出。
26
18
 
27
- ---
19
+ | 操作 | 命令 |
20
+ |------|------|
21
+ | 列出文件 | `mindos file list` |
22
+ | 读取文件 | `mindos file read <路径>` |
23
+ | 写入/覆盖 | `mindos file write <路径> --content "..."` |
24
+ | 创建新文件 | `mindos file create <路径> --content "..."` |
25
+ | 追加内容 | `mindos file append <路径> --content "..."` |
26
+ | 编辑段落 | `mindos file edit-section <路径> -H "## 标题" --content "..."` |
27
+ | 标题后插入 | `mindos file insert-heading <路径> -H "## 标题" --content "..."` |
28
+ | 追加 CSV 行 | `mindos file append-csv <路径> --row "列1,列2,列3"` |
29
+ | 删除文件 | `mindos file delete <路径>` |
30
+ | 重命名/移动 | `mindos file rename <旧> <新>` |
31
+ | 搜索 | `mindos search "关键词"` |
32
+ | 反向链接 | `mindos file backlinks <路径>` |
33
+ | 最近文件 | `mindos file recent --limit 10` |
34
+ | Git 历史 | `mindos file history <路径>` |
35
+ | 列出空间 | `mindos space list` |
36
+ | 创建空间 | `mindos space create "名称"` |
37
+
38
+ > **MCP 用户:** 如果只有 MCP 工具(`mindos_*`),直接使用——工具的 schema 已自带说明。有 CLI 时优先用 CLI(更省 token)。
28
39
 
29
- ## 绝对不要(踩坑清单)
40
+ ### CLI 安装
30
41
 
31
- - **绝不写入 KB 根目录**,除非用户明确要求。根目录只放治理文件(`README.md`、`INSTRUCTION.md`、`CONFIG`)。新内容放语义最合适的子目录。
32
- - **绝不假设目录名。** 不要写死 `Workflows/`、`Projects/`、`Contacts/` — 必须从实际收到的 bootstrap 目录树推断。用户可能用中文名、扁平结构或独特层级。
33
- - **绝不用 `mindos_write_file` 做小修改。** `update_section`、`update_lines` `insert_after_heading` 整文件覆写破坏 git diff,变更无法审计。
34
- - **绝不单关键词搜索。** 必须并行 2-4 条搜索(同义词、缩写、中英文变体)。单条命中率太低。
35
- - **绝不未经确认就改 `INSTRUCTION.md` 或 `README.md`。** 它们是治理文档,即使看起来只是修个错别字。
36
- - **绝不在没看过邻居文件的情况下创建新文件。** 至少读 1-2 个同目录文件,学习本地命名/标题/CSV 格式。自创新规是不一致的常见根源。
37
- - **绝不留孤链。** 重命名/移动后必须 `get_backlinks` 并更新每一个引用方。这是知识库断链的首因。
38
- - **绝不跳过多文件写入的路由确认。** 即使目标看起来很明显——用户的心智模型可能和你不同。
42
+ ```bash
43
+ npm install -g @geminilight/mindos
44
+ # 远程模式:mindos config set url http://<IP>:<端口> && mindos config set authToken <token>
45
+ ```
39
46
 
40
47
  ---
41
48
 
42
- ## MindOS 核心概念
49
+ ## 规则
50
+
51
+ 1. **先了解结构** — 列出知识库目录树,再搜索或写入。
52
+ 2. **默认只读。** 只有用户明确要求保存、记录、整理、编辑时才写入。
53
+ 3. **规则优先级**(从高到低):用户当前指令 → `.mindos/user-preferences.md` → 最近目录 `INSTRUCTION.md` → 根 `INSTRUCTION.md` → 本技能默认。
54
+ 4. **多文件编辑先出方案。** 展示完整变更列表,获批后再执行。
55
+ 5. 创建/删除/移动/重命名后 → **自动同步相关 README**。
56
+ 6. **写入前先读取。** 不基于假设写入。
57
+
58
+ ---
43
59
 
44
- - **空间(Space)** — 按你的思维方式组织的知识分区。Agent 遵循同样的结构。
45
- - **指令(Instruction)** — 所有接入 Agent 都遵守的规则文件。写一次,全局生效。
46
- - **技能(Skill)** — 教 Agent 如何读写、整理知识库。Agent 按安装的 Skill 执行,不是瞎猜。
60
+ ## 禁止事项(血泪教训)
47
61
 
48
- **笔记即指令 / 技能** — `INSTRUCTION.md` 和 `SKILL.md` 就是目录树里的 Markdown 文件。笔记可以是随笔,也可以是 Agent 必须遵守的治理规则,或 Agent 按步骤执行的程序包。
62
+ - **禁止写入知识库根目录**(除非明确要求)。根目录仅放治理文件,新内容放最合适的子目录。
63
+ - **禁止假设目录名。** 从实际目录树推断——知识库可能用中文名或扁平结构。
64
+ - **禁止用整文件覆盖做小修改。** 用 `mindos file edit-section` 或 `mindos file insert-heading` 做精准修改,整文件覆盖破坏 git diff。
65
+ - **禁止单关键词搜索。** 至少 2-4 个并行搜索(同义词、缩写、中英文变体)。
66
+ - **禁止未确认就修改 `INSTRUCTION.md` 或 `README.md`。** 治理文档——高敏感度。
67
+ - **禁止不看邻居就创建文件。** 先读目标目录 1-2 个文件,了解命名和风格。
68
+ - **禁止遗留孤立引用。** 重命名/移动后检查反向链接并更新所有引用。
69
+ - **禁止跳过多文件写入确认。** 用户的心理模型可能和你不同。
49
70
 
50
71
  ---
51
72
 
52
- ## 思维框架
73
+ ## MindOS 概念
53
74
 
54
- 动手前,问自己:
75
+ - **空间 (Space)** — 按你的思维方式组织的知识分区。Agent 遵循相同结构。
76
+ - **指令 (Instruction)** — `INSTRUCTION.md`,所有连接的 Agent 都遵守的规则文件。
77
+ - **技能 (Skill)** — 教 Agent 如何读写和整理知识库。
55
78
 
56
- 1. **用户意图属于哪类?** → 只读查阅 | 单文件编辑 | 多文件路由 | 结构变更 | SOP 执行。决定走下面哪条路径。
57
- 2. **这个内容该放哪?** → 扫目录树。如果看名字 5 秒内定不下来,大概率要问用户确认。
58
- 3. **附近有什么?** → 写之前读 1-2 个同级文件,照它们的风格。
59
- 4. **改这里会打断什么?** → 重命名/移动:`get_backlinks`。内容修改:想想谁引用了这个事实。
60
- 5. **用户让我写了吗,还是我自作主张?** → 没让你写就别写。
79
+ 笔记可以同时承载指令和技能——它们只是目录树中的 Markdown 文件。
61
80
 
62
81
  ---
63
82
 
64
- ## 任务路由决策树
83
+ ## 决策树
65
84
 
66
85
  ```
67
86
  用户请求
68
87
 
69
- ├─ 只是查找 / 总结 / 引用?
70
- │ └─ 是 → [只读路径]:搜索 + 读取 + 标注来源。不写入。跳过 Hooks。
88
+ ├─ 查找 / 总结 / 引用?
89
+ │ └─ [只读路径]:搜索 读取 带引用回答。不写入。
71
90
 
72
- ├─ 要求保存 / 记录 / 更新 / 整理具体内容?
73
- │ ├─ 单文件目标? → [单文件编辑]
74
- │ └─ 多文件或目标不明? → [多文件路由]
91
+ ├─ 保存 / 记录 / 更新 / 整理具体内容?
92
+ │ ├─ 单文件 → [单文件编辑]
93
+ │ └─ 多文件或不确定 → [多文件路由] — 先出方案
75
94
 
76
95
  ├─ 结构变更(重命名 / 移动 / 删除 / 重组)?
77
- │ └─ [结构路径]
96
+ │ └─ [结构路径] — 变更前后检查反向链接
78
97
 
79
- ├─ 流程性 / 可重复的任务?
80
- │ └─ [SOP 路径]
98
+ ├─ 流程性 / 可重复任务?
99
+ │ └─ [SOP 路径] — 找到并执行现有 SOP,或创建新的
81
100
 
82
101
  ├─ 复盘 / 提炼 / 交接?
83
102
  │ └─ [复盘路径]
84
103
 
85
- └─ 模糊或范围过大?
86
- └─ 先问清楚。基于 KB 状态提出 2-3 个具体选项。不要开始编辑。
104
+ └─ 模糊?
105
+ └─ 提问。基于知识库状态提出 2-3 个具体选项。
87
106
  ```
88
107
 
89
- **以上任何写入 / SOP / 结构路径 → 写入补充已加载到上下文(见下方或下一个上下文块中的 `## 写入与工作流补充` 章节)。**
90
-
91
108
  ---
92
109
 
93
- ## 工具选型
110
+ ## 判断启发
94
111
 
95
- | 意图 | 推荐工具 | 避免 |
96
- |------|----------|------|
97
- | 启动时加载上下文 | `mindos_bootstrap` | 不 bootstrap 就随机读文件 |
98
- | 列出顶层心智空间 | `mindos_list_spaces` | 只需分区概览却拉整棵 `list_files` |
99
- | 找文件 | `mindos_search_notes`(2-4 条并行关键词变体)| 单关键词搜索 |
100
- | 读内容 | `mindos_read_file` 或 `mindos_read_lines`(大文件) | 只需 10 行却读整文件 |
112
+ **保存意图边界:**
113
+ - "帮我记下来" / "保存" = 写入
114
+ - "搜一下" / "总结" = 只读
115
+ - "整理一下" 先问:仅展示,还是写回知识库?
101
116
 
102
- 写入、结构变更、历史工具 → 见写入与工作流补充(已加载到下方或下一个上下文块)。
117
+ **文件位置不确定:**
118
+ - 5 秒内定不了 → 用最近的现有目录,告知用户
119
+ - "随便放哪" → 收件箱,之后提议分类
103
120
 
104
- ### 回退
121
+ **范围蔓延:**
122
+ - 输入路由到 >5 个文件 → 暂停确认
123
+ - "全部更新" + 跨多个主题 → 分批确认
105
124
 
106
- - `mindos_bootstrap` 不可用 → 手动读根 `INSTRUCTION.md` + `README.md`。
107
- - 搜索无结果 → 不放弃:(1) 扫上下文中的树;(2) 直接读候选文件;(3) `mindos_list_files` 细化子目录;(4) 用同义词/中英文变体重试。
125
+ **引用规范:** 引用知识库内容必须附带文件路径。
108
126
 
109
127
  ---
110
128
 
111
- ## 执行模式
129
+ ## 任务后钩子
112
130
 
113
- | 模式 | 适用场景 | 关键步骤 |
114
- |------|----------|----------|
115
- | **只读问答** | 查找 / 总结 / 引用 | 目录树推断 → 搜索 → 读取 → 标注来源 → 明确说信息缺口 |
131
+ 写入任务(非简单读取)后扫描此表。最多 1 个提议;优先级最高的优先。先检查 `.mindos/user-preferences.md` 抑制项。
116
132
 
117
- 写入模式详细执行步骤 见写入与工作流补充(已加载到下方或下一个上下文块)。
133
+ | 钩子 | 优先级 | 条件 |
134
+ |------|--------|------|
135
+ | 经验沉淀 | 高 | 调试、排错或多轮工作 |
136
+ | 一致性同步 | 高 | 编辑的文件有反向链接 |
137
+ | SOP 偏移 | 中 | 按 SOP 执行但实际偏离了步骤 |
138
+ | 关联更新 | 中 | 更改了 CSV/TODO 状态且有关联文档 |
139
+ | 结构分类 | 中 | 在临时位置或收件箱创建了文件 |
140
+ | 模式提取 | 低 | 本次会话中 3+ 个结构相似的操作 |
118
141
 
119
- ---
142
+ 触发时 → 读取 [references/post-task-hooks.md](./references/post-task-hooks.md)。
120
143
 
121
- ## 判断启发式规则
122
-
123
- **保存意图 — 读写边界识别**
124
- - "帮我记下来" / "记录一下" / "保存这个" = 写入
125
- - "搜一下有没有关于 X 的笔记" / "总结上周的工作" = 只读
126
- - 模糊边界("整理一下这些内容")→ 先问:是读取展示,还是写回 KB?
144
+ ## 偏好捕获
127
145
 
128
- **文件位置不确定时**
129
- - 扫目录树 5 秒内定不下来 → 不要自创新目录;放语义最近的已有目录,告知用户
130
- - 用户说"随便放个地方" → 放 inbox 或最顶层通用目录,任务后提议归类(触发 Structure classification hook)
146
+ 用户表达持久偏好时 → 读取 [references/preference-capture.md](./references/preference-capture.md),按确认-写入流程操作。
131
147
 
132
- **范围蔓延信号**
133
- - 单条输入导致路由表 > 5 个文件 → 暂停,先确认范围;用户鲜少意图批量重写
134
- - "把这些都更新一下" + 内容跨越多个主题 → 拆成批次确认,不一次性执行
148
+ ## SOP 编写
135
149
 
136
- **引用纪律**
137
- - KB 中引用的事实必须附带文件路径,便于用户核查
150
+ 创建/重写工作流 SOP 时 → 读取 [references/sop-template.md](./references/sop-template.md)。
138
151
 
139
152
  ---
140
153
 
141
- ## 任务后 Hooks
142
-
143
- **写入任务**完成后(简单单文件修改或只读查阅跳过),扫描下表。命中则发起一句话提议,最多 1 条,选优先级最高项。先查 `.mindos/user-preferences.md` 的抑制区;用户要求安静模式时全部跳过。
144
-
145
- | Hook | 优先级 | 触发条件 |
146
- |------|--------|---------|
147
- | 经验沉淀 | 高 | 调试、排错、踩坑,或多轮才解决 |
148
- | 一致性同步 | 高 | 编辑了有反链的文件(查 `get_backlinks`) |
149
- | SOP 偏差 | 中 | 按 SOP 执行但实际步骤与文档不符 |
150
- | 联动更新 | 中 | 改了 CSV/TODO 状态且存在关联文档 |
151
- | 结构归类 | 中 | 在临时目录或收件箱新建了文件 |
152
- | 模式提炼 | 低 | 本会话 3+ 次结构相似操作 |
153
- | 对话复盘 | 低 | 会话 >10 轮且涉及决策或权衡 |
154
-
155
- 有 hook 命中 → 读 [references/post-task-hooks.md](./references/post-task-hooks.md) 获取提议措辞和用户自定义 hooks。都不命中则安静结束,不读此文件。
156
-
157
- ## 偏好捕获
158
-
159
- 用户表达要长期记住的偏好(「以后不要…」「这个该放在…」)时,读 [references/preference-capture.md](./references/preference-capture.md) 并按确认后写入流程存入 `.mindos/user-preferences.md`。
160
- **不要读** preference-capture 除非用户真的表达了要持久化的偏好。
154
+ ## 错误处理(CLI)
161
155
 
162
- ## SOP 编写
163
-
164
- 创建或改写工作流 SOP 时,**必须 [references/sop-template.md](./references/sop-template.md)**(前置条件、分支步骤、退出条件、踩坑记录)。
165
- **不要读** sop-template 用于 SOP 执行(仅用于 SOP 创建/编辑)。
156
+ ```bash
157
+ "command not found: mindos" → npm install -g @geminilight/mindos
158
+ "Mind root not configured" → mindos onboard
159
+ "401 Unauthorized" → 检查 AUTH_TOKEN:在服务器运行 mindos token
160
+ "ECONNREFUSED" → 在服务器启动:mindos start
161
+ ```
@@ -1,11 +0,0 @@
1
- "use strict";exports.id=1955,exports.ids=[1955],exports.modules={6826:(a,b,c)=>{function d(a){return{connected:a.filter(a=>a.present&&a.installed),detected:a.filter(a=>a.present&&!a.installed),notFound:a.filter(a=>!a.present)}}function e(a){return a.present&&a.installed?"connected":a.present?"detected":"notFound"}function f(a){return q(`${a.name} ${a.description}`)}function g(a){let b=[];return a.mcpRunning||b.push({id:"mcp-stopped",severity:"error",title:a.copy.riskMcpStopped}),a.detectedCount>0&&b.push({id:"detected-unconfigured",severity:"warn",title:a.copy.riskDetected(a.detectedCount)}),a.allSkillsDisabled&&b.push({id:"skills-disabled",severity:"warn",title:a.copy.riskSkillsDisabled}),b}function h(a){return new Set(a.filter(a=>!a.enabled&&"user"===a.source||0===a.description.trim().length).map(a=>a.name))}function i(a){let b=a.filter(a=>!a.ok).map(a=>a.skillName);return{total:a.length,succeeded:a.length-b.length,failed:b.length,failedSkills:b}}function j(a,b){let c=b.query.trim().toLowerCase();return a.filter(a=>{let d;return("all"===b.status||e(a)===b.status)&&("all"===b.transport||("stdio"===(d=(a.transport??a.preferredTransport??"").toLowerCase())||"http"===d?d:"other")===b.transport)&&(!c||`${a.name} ${a.key} ${a.configPath??""}`.toLowerCase().includes(c))})}function k(a){let b=a.filter(a=>!a.ok).length;return{total:a.length,succeeded:a.length-b,failed:b}}function l(a){let b=new Map;for(let c of a)for(let a of c.configuredMcpServers??[]){let d=b.get(a);d?d.push(c.name):b.set(a,[c.name])}return[...b.entries()].map(([a,b])=>({serverName:a,agents:b})).sort((a,b)=>b.agents.length-a.agents.length||a.serverName.localeCompare(b.serverName))}function m(a){let b=new Map;for(let c of a)for(let a of c.installedSkillNames??[]){let d=b.get(a);d?d.push(c.name):b.set(a,[c.name])}return[...b.entries()].map(([a,b])=>({skillName:a,agents:b})).sort((a,b)=>b.agents.length-a.agents.length||a.skillName.localeCompare(b.skillName))}c.d(b,{$2:()=>f,$t:()=>d,G9:()=>u,GU:()=>s,HL:()=>l,IK:()=>h,Ri:()=>t,ag:()=>r,fH:()=>j,gJ:()=>o,qC:()=>p,x3:()=>m,xJ:()=>k,xR:()=>i,yQ:()=>q,yv:()=>e,zK:()=>g});let n={connected:0,detected:1,notFound:2};function o(a){return[...a].sort((a,b)=>{let c=n[e(a)],d=n[e(b)];return c!==d?c-d:a.name.localeCompare(b.name)})}function p(a,b){let c=b.query.trim().toLowerCase();return a.filter(a=>("all"===b.source||a.source===b.source)&&(!c||`${a.name} ${a.description} ${a.path}`.toLowerCase().includes(c)))}function q(a){let b=a.toLowerCase();return b.includes("search")||b.includes("research")||b.includes("arxiv")||b.includes("paper")?"research":b.includes("doc")||b.includes("write")||b.includes("readme")||b.includes("copy")||b.includes("slide")||b.includes("ppt")?"docs":b.includes("deploy")||b.includes("ops")||b.includes("ci")||b.includes("ship")||b.includes("qa")||b.includes("review")||b.includes("test")?"ops":b.includes("memory")||b.includes("mind")||b.includes("handoff")||b.includes("session")?"memory":"coding"}function r(a,b){let c=new Set(a.map(a=>a.name)),d=new Map;for(let a of b)d.set(a.skillName,a.agents);let e=[];for(let b of a)e.push({name:b.name,kind:"mindos",mindosSkill:b,agents:d.get(b.name)??[],capability:f(b),enabled:b.enabled,source:b.source,description:b.description});for(let a of b)c.has(a.skillName)||e.push({name:a.skillName,kind:"native",agents:a.agents,capability:q(a.skillName),enabled:!0,source:"native",description:""});return e}function s(a){return{research:a.filter(a=>"research"===a.capability),coding:a.filter(a=>"coding"===a.capability),docs:a.filter(a=>"docs"===a.capability),ops:a.filter(a=>"ops"===a.capability),memory:a.filter(a=>"memory"===a.capability)}}function t(a,b){let c=b.query.trim().toLowerCase(),d=new Set(a.filter(a=>"mindos"===a.kind&&(!a.enabled&&"user"===a.source||0===a.description.trim().length)).map(a=>a.name));return a.filter(a=>("all"===b.source||("native"!==b.source||"native"===a.kind)&&("builtin"!==b.source||"builtin"===a.source)&&("user"!==b.source||"user"===a.source))&&("enabled"!==b.status||!!a.enabled)&&("disabled"!==b.status||!a.enabled)&&("attention"!==b.status||!!d.has(a.name))&&("all"===b.capability||a.capability===b.capability)&&(!c||!!`${a.name} ${a.description}`.toLowerCase().includes(c))&&!0)}function u(a,b){return a.filter(a=>"mindos"===a.kind&&a.enabled!==b).map(a=>a.name)}},41955:(a,b,c)=>{c.d(b,{A:()=>A});var d=c(48249),e=c(67484),f=c(10316),g=c(26709),h=c(80600),i=c(13799),j=c(35654),k=c(95801),l=c(46674),m=c(24520),n=c(15273),o=c(40560),p=c(44218),q=c(2108),r=c(59347),s=c(95054),t=c(39868),u=c(99101),v=c(81285),w=c(57056),x=c(6826);let y={research:f.A,coding:g.A,docs:h.A,ops:i.A,memory:j.A};function z({text:a,className:b=""}){let c=(0,e.useMemo)(()=>{let b;return(b=(b=a.replace(/```(\w*)\n([\s\S]*?)```/g,(a,b,c)=>`<pre><code>${c.trimEnd().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}</code></pre>`).replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^#### (.+)$/gm,"<h4>$1</h4>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/^# (.+)$/gm,"<h1>$1</h1>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/^---$/gm,"<hr/>").replace(/^- (.+)$/gm,"<li>$1</li>").replace(/^\* (.+)$/gm,"<li>$1</li>").replace(/^\d+\. (.+)$/gm,"<li>$1</li>")).replace(/((?:<li>.*<\/li>\n?)+)/g,"<ul>$1</ul>")).split("\n").map(a=>{let b=a.trim();return b?/^<(h[1-4]|ul|ol|li|pre|hr|div|p|blockquote)/.test(b)?a:`<p>${b}</p>`:""}).join("\n")},[a]);return(0,d.jsx)("div",{className:`prose prose-sm prose-invert max-w-none
2
- prose-headings:text-foreground prose-headings:font-semibold prose-headings:mt-4 prose-headings:mb-2
3
- prose-h1:text-sm prose-h2:text-xs prose-h3:text-xs
4
- prose-p:text-xs prose-p:text-foreground/80 prose-p:leading-relaxed prose-p:my-1.5
5
- prose-li:text-xs prose-li:text-foreground/80 prose-li:my-0.5
6
- prose-strong:text-foreground prose-strong:font-semibold
7
- prose-code:text-[var(--amber)] prose-code:bg-muted/50 prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-code:text-2xs prose-code:font-mono
8
- prose-pre:bg-muted/30 prose-pre:border prose-pre:border-border/50 prose-pre:rounded-lg prose-pre:p-3 prose-pre:text-2xs prose-pre:overflow-x-auto
9
- prose-ul:my-1 prose-ol:my-1
10
- prose-hr:border-border/30 prose-hr:my-3
11
- ${b}`,dangerouslySetInnerHTML:{__html:c}})}function A({open:a,skillName:b,skill:c,agentNames:f=[],allAgentNames:g=[],isNative:h=!1,nativeSourcePath:i,copy:j,onClose:A,onToggle:D,onDelete:E,onRefresh:F,onAddAgent:G,onRemoveAgent:H}){let I,J,[K,L]=(0,e.useState)(null),[M,N]=(0,e.useState)(""),[O,P]=(0,e.useState)(!1),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(null),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(!1),[aa,ab]=(0,e.useState)(!1),ac=(0,e.useCallback)(async()=>{if(b){P(!0),R(!1);try{if(h&&i){let a=await (0,s.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"read-native",name:b,sourcePath:i})});L(a.content),N(a.description||"")}else if(!h){let a=await (0,s.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"read",name:b})});L(a.content)}}catch{R(!0)}finally{P(!1)}}},[b,h,i]),ad=(0,e.useCallback)(async()=>{!K||await (0,t.l)(K)&&u.oR.copy()},[K]),ae=(0,e.useCallback)(async a=>{if(b&&D){Z(!0);try{await D(b,a)}finally{Z(!1)}}},[b,D]),af=(0,e.useCallback)(async()=>{if(b&&E){T(!1),V(!0);try{await E(b),X(j.deleted),await F?.(),setTimeout(()=>A(),800)}catch{X(j.deleteFailed),V(!1)}}},[b,E,F,A,j.deleted,j.deleteFailed]);if(!a||!b)return null;let ag=c?(0,x.yQ)(`${c.name} ${c.description}`):(0,x.yQ)(b),ah=y[ag]??k.A,ai=c?.source==="user",aj=h?j.sourceNative:c?.source==="builtin"?j.sourceBuiltin:j.sourceUser,ak=c?.description||M||"",al=c?.path||(h&&i?`${i}/${b}/SKILL.md`:""),am=K?(I=K,(J=K.match(/^---\n[\s\S]*?\n---\n?/))&&(I=K.slice(J[0].length).trim()),{triggerConditions:ak||"",instructions:I}):null,an=g.filter(a=>!f.includes(a));return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"fixed inset-0 z-40 overlay-backdrop",onClick:A,"aria-hidden":"true"}),(0,d.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":b,className:"fixed right-0 top-0 z-50 h-full w-full max-w-md border-l border-border bg-card shadow-2xl flex flex-col animate-in slide-in-from-right duration-200",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 px-5 py-4 border-b border-border/60 bg-gradient-to-r from-card to-card/80 shrink-0",children:[(0,d.jsx)("div",{className:"w-9 h-9 rounded-xl bg-[var(--amber)]/[0.08] flex items-center justify-center text-[var(--amber)] shrink-0",children:(0,d.jsx)(ah,{size:18})}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("h2",{className:"text-sm font-semibold text-foreground truncate",children:b}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("span",{className:`text-2xs px-2 py-0.5 rounded-full font-medium select-none ${h||c?.source==="builtin"?"bg-muted text-muted-foreground":"bg-[var(--amber-dim)] text-[var(--amber-text)]"}`,children:aj}),(0,d.jsx)("span",{className:"text-2xs text-muted-foreground/60 capitalize",children:ag})]})]}),(0,d.jsx)("button",{type:"button",onClick:A,className:"shrink-0 p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted cursor-pointer transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":j.close,children:(0,d.jsx)(l.A,{size:16})})]}),(0,d.jsxs)("div",{className:"flex-1 overflow-y-auto px-5 py-4 space-y-5",children:[ak&&(0,d.jsxs)("section",{children:[(0,d.jsx)(B,{label:"Trigger Conditions"}),(0,d.jsx)("div",{className:"rounded-lg border border-border/40 bg-muted/[0.03] p-3.5",children:(0,d.jsx)("p",{className:"text-xs text-foreground/80 leading-relaxed whitespace-pre-wrap",children:ak})})]}),!ak&&!h&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground italic",children:j.noDescription}),(0,d.jsx)("section",{children:(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[!h&&c&&(0,d.jsx)(C,{label:j.enabled,value:c.enabled?"✓":"—",tone:c.enabled?"ok":"muted"}),(0,d.jsx)(C,{label:j.capability,value:ag}),(0,d.jsx)(C,{label:j.source,value:aj}),(0,d.jsx)(C,{label:j.agents,value:String(f.length)})]})}),(0,d.jsxs)("section",{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)(B,{label:j.agents,noMargin:!0}),G&&an.length>0&&(0,d.jsxs)("button",{type:"button",onClick:()=>_(!$),className:"inline-flex items-center gap-1 text-2xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity cursor-pointer",children:[(0,d.jsx)(m.A,{size:12}),(0,d.jsx)("span",{children:"Add"})]})]}),$&&an.length>0&&(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5 mb-2 p-2 rounded-lg border border-dashed border-[var(--amber)]/30 bg-[var(--amber)]/[0.03]",children:an.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>{G?.(b,a),_(!1)},className:"inline-flex items-center gap-1 px-2 py-1 text-2xs rounded-md border border-border bg-card hover:bg-muted cursor-pointer transition-colors",children:[(0,d.jsx)(m.A,{size:10,className:"text-[var(--amber)]"}),(0,d.jsx)("span",{className:"text-foreground/80",children:a})]},a))}),f.length>0?(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:f.map(a=>(0,d.jsx)(w.lx,{name:a,size:"sm",onRemove:H?()=>H(b,a):void 0},a))}):(0,d.jsx)("div",{className:"rounded-lg border border-dashed border-border p-3 text-center",children:(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:j.noAgents})})]}),(null!==K||O||Q)&&(0,d.jsxs)("section",{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)(B,{label:"Instructions",noMargin:!0}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:K&&(0,d.jsxs)("button",{type:"button",onClick:ad,className:"inline-flex items-center gap-1 text-2xs text-muted-foreground hover:text-foreground cursor-pointer transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded px-1.5 py-0.5","aria-label":j.copyContent,children:[(0,d.jsx)(n.A,{size:11}),j.copyContent]})})]}),O&&(0,d.jsxs)("div",{className:"rounded-lg border border-border bg-background p-6 flex items-center justify-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(o.A,{size:14,className:"animate-spin"}),j.loading]}),Q&&(0,d.jsxs)("div",{className:"rounded-lg border border-destructive/20 bg-destructive/[0.03] p-4 text-center space-y-2",children:[(0,d.jsx)("p",{className:"text-sm text-destructive",children:j.loadFailed}),(0,d.jsx)("button",{type:"button",onClick:ac,className:"text-xs text-foreground underline hover:no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded",children:j.retry})]}),am&&!O&&!Q&&(0,d.jsx)("div",{className:`rounded-lg border border-border/50 bg-muted/[0.02] p-4 overflow-hidden transition-all duration-200 ${!aa?"max-h-60":""}`,children:(0,d.jsx)(z,{text:am.instructions})}),am&&!O&&!Q&&am.instructions.split("\n").length>15&&(0,d.jsxs)("button",{type:"button",onClick:()=>ab(!aa),className:"inline-flex items-center gap-1 mt-2 text-2xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity cursor-pointer",children:[(0,d.jsx)(p.A,{size:12,className:`transition-transform duration-200 ${aa?"rotate-180":""}`}),(0,d.jsx)("span",{children:aa?"Collapse":"View All"})]})]}),al&&(0,d.jsxs)("section",{children:[(0,d.jsx)(B,{label:j.path}),(0,d.jsx)("div",{className:"rounded-lg border border-border/50 bg-muted/[0.03] p-3",children:(0,d.jsx)("code",{className:"text-2xs text-foreground/60 font-mono break-all leading-relaxed",children:al})})]}),W&&(0,d.jsx)("div",{role:"status","aria-live":"polite",className:"rounded-md border border-border bg-muted/50 px-3 py-2 text-xs text-muted-foreground animate-in fade-in duration-200",children:W})]}),!h&&c&&(0,d.jsxs)("div",{className:"shrink-0 border-t border-border px-5 py-3 flex items-center gap-2",children:[D&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mr-auto",children:[(0,d.jsx)(q.A,{size:14,className:"text-muted-foreground","aria-hidden":"true"}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:c.enabled?j.enabled:j.disabled}),(0,d.jsx)(v.lM,{size:"sm",checked:c.enabled,onChange:a=>void ae(a),disabled:Y})]}),ai&&E&&(0,d.jsxs)("button",{type:"button",onClick:()=>T(!0),disabled:U,className:"inline-flex items-center gap-1.5 px-2.5 min-h-[32px] text-xs rounded-md border border-destructive/30 text-destructive hover:bg-destructive/10 cursor-pointer disabled:opacity-50 transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[U?(0,d.jsx)(o.A,{size:12,className:"animate-spin"}):(0,d.jsx)(r.A,{size:12}),j.deleteSkill]})]})]}),(0,d.jsx)(w.TM,{open:S,title:j.confirmDeleteTitle,message:b?j.confirmDeleteMessage(b):"",confirmLabel:j.confirmDeleteAction,cancelLabel:j.cancelAction,onConfirm:()=>void af(),onCancel:()=>T(!1),variant:"destructive"})]})}function B({label:a,noMargin:b}){return(0,d.jsx)("h3",{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider ${b?"":"mb-2"}`,children:a})}function C({label:a,value:b,tone:c="default"}){return(0,d.jsxs)("div",{className:"rounded-xl border border-border/50 bg-muted/[0.03] px-3.5 py-3 hover:bg-muted/[0.06] transition-colors duration-100",children:[(0,d.jsx)("span",{className:"text-2xs text-muted-foreground/60 block mb-1 uppercase tracking-wider",children:a}),(0,d.jsx)("span",{className:`text-sm font-semibold capitalize ${"ok"===c?"text-[var(--success)]":"muted"===c?"text-muted-foreground":"text-foreground"}`,children:b})]})}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=3680,exports.ids=[3680],exports.modules={108:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(48894),e=c(64491),f=c(62880),g=c(76484),h=c(23445),i=c(43449);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},1353:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(47408).A)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]])},2108:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(47408).A)("toggle-left",[["circle",{cx:"9",cy:"12",r:"3",key:"u3jwor"}],["rect",{width:"20",height:"14",x:"2",y:"5",rx:"7",key:"g7kal2"}]])},10381:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},26709:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(47408).A)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]])},32171:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(81494),g=c(52220),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?g.RedirectType.push:g.RedirectType.replace,f.RedirectStatusCode.TemporaryRedirect)}function k(a,b=g.RedirectType.replace){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},37637:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(47408).A)("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]])},44057:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},52283:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(7638),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},66610:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return h.RedirectType},forbidden:function(){return j.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return k.unauthorized},unstable_isUnrecognizedActionError:function(){return m},unstable_rethrow:function(){return l.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(10381),g=c(32171),h=c(52220),i=c(52283),j=c(92606),k=c(44057),l=c(98621);function m(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},76592:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(47408).A)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]])},91970:(a,b,c)=>{var d=c(66610);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},92606:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},98621:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(108).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};