@geminilight/mindos 0.6.34 → 0.6.36
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/.env.local.example +2 -2
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +15 -15
- package/_standalone/.next/build-manifest.json +2 -2
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- 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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +5 -5
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.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_client-reference-manifest.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_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-pdf/route_client-reference-manifest.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/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.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/install/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/login/page.js +1 -1
- 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 +1 -1
- 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/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/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- 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-paths-manifest.json +15 -15
- package/_standalone/.next/server/chunks/4931.js +27 -27
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/7670.js +1 -1
- package/_standalone/.next/server/chunks/{1225.js → 9360.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/{1263-31c1efe3fd8f3f99.js → 1263-79beb8734dee7bbd.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-1ad561312a9a5b5b.js → layout-d0f6dc4d3e6f0be4.js} +11 -11
- package/_standalone/.next/static/chunks/app/{page-e2a6e96831efa703.js → page-404b0bfb5721b7f8.js} +2 -2
- package/_standalone/.next/static/chunks/app/setup/page-01ab1f549d636057.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/{page-c6e9de9ca4ab4bf7.js → page-a79804c1df44d3cc.js} +1 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/{page-ff57a587c3f5490e.js → page-d3aceca36a1a9eb2.js} +2 -2
- package/_standalone/.next/trace +53 -53
- package/_standalone/components/SyncStatusBar.tsx +1 -1
- package/_standalone/components/TableOfContents.tsx +7 -0
- package/_standalone/components/setup/StepAI.tsx +66 -3
- package/_standalone/components/setup/StepDots.tsx +18 -10
- package/_standalone/components/setup/StepKB.tsx +26 -0
- package/_standalone/components/setup/constants.tsx +4 -3
- package/_standalone/data/skills/mindos/SKILL.md +4 -22
- package/_standalone/data/skills/mindos-zh/SKILL.md +2 -20
- package/_standalone/lib/agent/context.ts +29 -20
- package/_standalone/lib/i18n/modules/onboarding.ts +14 -6
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/ask/route.ts +77 -24
- package/app/app/api/bootstrap/route.ts +4 -0
- package/app/app/api/export/route.ts +5 -0
- package/app/app/api/git/route.ts +2 -1
- package/app/app/api/recent-files/route.ts +3 -2
- package/app/app/api/setup/route.ts +1 -0
- package/app/components/SyncStatusBar.tsx +1 -1
- package/app/components/TableOfContents.tsx +7 -0
- package/app/components/setup/StepAI.tsx +66 -3
- package/app/components/setup/StepDots.tsx +18 -10
- package/app/components/setup/StepKB.tsx +26 -0
- package/app/components/setup/constants.tsx +4 -3
- package/app/components/setup/index.tsx +22 -32
- package/app/data/skills/mindos/SKILL.md +4 -22
- package/app/data/skills/mindos-zh/SKILL.md +2 -20
- package/app/lib/acp/subprocess.ts +3 -2
- package/app/lib/agent/context.ts +29 -20
- package/app/lib/fs.ts +77 -0
- package/app/lib/i18n/modules/onboarding.ts +14 -6
- package/app/lib/settings.ts +6 -0
- package/bin/cli.js +14 -4
- package/bin/lib/stop.js +5 -2
- package/package.json +6 -2
- package/scripts/setup.js +16 -0
- package/skills/mindos/SKILL.md +4 -22
- package/skills/mindos/references/write-supplement.md +35 -0
- package/skills/mindos-zh/SKILL.md +2 -20
- package/skills/mindos-zh/references/README.md +2 -1
- package/skills/mindos-zh/references/write-supplement.md +35 -0
- package/_standalone/.next/static/chunks/app/setup/page-f8a85accc3be554f.js +0 -1
- /package/_standalone/.next/static/{K1Y12u2jxCR7efUgJVpyl → VWZDVb8DL1Pbykh9EOj_Y}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{K1Y12u2jxCR7efUgJVpyl → VWZDVb8DL1Pbykh9EOj_Y}/_ssgManifest.js +0 -0
package/skills/mindos/SKILL.md
CHANGED
|
@@ -96,21 +96,12 @@ It covers: startup protocol, write tool selection, and step-by-step execution de
|
|
|
96
96
|
| List top-level Mind Spaces | `mindos_list_spaces` | Full `mindos_list_files` when you only need zone names and README blurbs |
|
|
97
97
|
| Find files | `mindos_search_notes` (2-4 parallel keyword variants) | Single-keyword search |
|
|
98
98
|
| Read content | `mindos_read_file` or `mindos_read_lines` (for large files) | Reading entire large file when you need 10 lines |
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
| Full file replacement | `mindos_write_file` | Using this when a section edit suffices |
|
|
102
|
-
| New file | `mindos_create_file` | Creates parent dirs but does NOT scaffold Space files |
|
|
103
|
-
| New Mind Space (zone + README + INSTRUCTION) | `mindos_create_space` | The only way to create a Space. `create_file` creates plain folders |
|
|
104
|
-
| Rename a Space directory | `mindos_rename_space` | `rename_file` (files only; does not rename folders) |
|
|
105
|
-
| Add CSV row | `mindos_append_csv` (validates header) | Manual string append without header check |
|
|
106
|
-
| Check impact before rename | `mindos_get_backlinks` | Renaming without checking references |
|
|
107
|
-
| Inspect recent changes | `mindos_get_recent` | Guessing what changed recently |
|
|
108
|
-
| Recover old version | `mindos_get_file_at_version` | Asking user to recall what was there |
|
|
99
|
+
|
|
100
|
+
Write, structural, and history tools → [references/write-supplement.md](./references/write-supplement.md).
|
|
109
101
|
|
|
110
102
|
### Fallbacks
|
|
111
103
|
|
|
112
104
|
- `mindos_bootstrap` unavailable → manual reads of root `INSTRUCTION.md` + `README.md`.
|
|
113
|
-
- Line/section tools unavailable → read + constrained `mindos_write_file` (simulate minimal edit).
|
|
114
105
|
- 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.
|
|
115
106
|
|
|
116
107
|
---
|
|
@@ -120,17 +111,8 @@ It covers: startup protocol, write tool selection, and step-by-step execution de
|
|
|
120
111
|
| Pattern | When | Key steps |
|
|
121
112
|
|---------|------|-----------|
|
|
122
113
|
| **Read-only Q&A** | Lookup / summarize / quote | Tree reasoning → search → read → answer with citations → state gaps |
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| **Conversation retrospective** | Distill / capture session | Confirm scope → extract decisions/pitfalls/actions → route → trace changes |
|
|
126
|
-
| **SOP execution** | Repeatable procedure | Read SOP fully → execute stepwise → update stale sections → propose SOP update if diverged |
|
|
127
|
-
| **Structural change** | Rename / move / delete | `get_backlinks` → impact report → confirm → execute → update refs → sync READMEs |
|
|
128
|
-
| **CSV append** | Add row to a table | Read header → validate fields → `mindos_append_csv` |
|
|
129
|
-
| **Cross-agent handoff** | Continue another agent's work | Read task state + decisions → continue without re-discovery → write back progress |
|
|
130
|
-
| **Periodic review** | Summarize recent changes | `get_recent`/`get_history` → read changed files → structured summary |
|
|
131
|
-
| **Handoff doc** | Create a briefing | Read sources → synthesize (background, decisions, status, open items) → place in project dir |
|
|
132
|
-
|
|
133
|
-
For detailed execution steps on write patterns → [references/write-supplement.md](./references/write-supplement.md).
|
|
114
|
+
|
|
115
|
+
For write, SOP, structural, and handoff patterns → [references/write-supplement.md](./references/write-supplement.md).
|
|
134
116
|
|
|
135
117
|
---
|
|
136
118
|
|
|
@@ -5,6 +5,25 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## Write tool selection
|
|
9
|
+
|
|
10
|
+
| Intent | Best tool | Avoid |
|
|
11
|
+
|--------|-----------|-------|
|
|
12
|
+
| Small text edit | `mindos_update_section` / `mindos_update_lines` / `mindos_insert_after_heading` | `mindos_write_file` for small changes |
|
|
13
|
+
| Append to end | `mindos_append_to_file` | Rewriting entire file to add a line |
|
|
14
|
+
| Full file replacement | `mindos_write_file` | Using this when a section edit suffices |
|
|
15
|
+
| New file | `mindos_create_file` | Creates parent dirs but does NOT scaffold Space files |
|
|
16
|
+
| New Mind Space (zone + README + INSTRUCTION) | `mindos_create_space` | The only way to create a Space. `create_file` creates plain folders |
|
|
17
|
+
| Rename a Space directory | `mindos_rename_space` | `rename_file` (files only; does not rename folders) |
|
|
18
|
+
| Add CSV row | `mindos_append_csv` (validates header) | Manual string append without header check |
|
|
19
|
+
| Check impact before rename | `mindos_get_backlinks` | Renaming without checking references |
|
|
20
|
+
| Inspect recent changes | `mindos_get_recent` | Guessing what changed recently |
|
|
21
|
+
| Recover old version | `mindos_get_file_at_version` | Asking user to recall what was there |
|
|
22
|
+
|
|
23
|
+
**Fallback:** Line/section tools unavailable → read + constrained `mindos_write_file` (simulate minimal edit).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
8
27
|
## Startup protocol
|
|
9
28
|
|
|
10
29
|
Run this before executing any write path:
|
|
@@ -20,6 +39,22 @@ If context is missing, continue with best effort and state assumptions.
|
|
|
20
39
|
|
|
21
40
|
---
|
|
22
41
|
|
|
42
|
+
## Execution patterns
|
|
43
|
+
|
|
44
|
+
| Pattern | When | Key steps |
|
|
45
|
+
|---------|------|-----------|
|
|
46
|
+
| **Single-file edit** | One clear target file | Startup → read target + local conventions → minimal edit → verify → summarize |
|
|
47
|
+
| **Multi-file routing** | Unstructured input, multiple destinations | Parse into semantic units → routing table → confirm → edit → summarize |
|
|
48
|
+
| **Conversation retrospective** | Distill / capture session | Confirm scope → extract decisions/pitfalls/actions → route → trace changes |
|
|
49
|
+
| **SOP execution** | Repeatable procedure | Read SOP fully → execute stepwise → update stale sections → propose SOP update if diverged |
|
|
50
|
+
| **Structural change** | Rename / move / delete | `get_backlinks` → impact report → confirm → execute → update refs → sync READMEs |
|
|
51
|
+
| **CSV append** | Add row to a table | Read header → validate fields → `mindos_append_csv` |
|
|
52
|
+
| **Cross-agent handoff** | Continue another agent's work | Read task state + decisions → continue without re-discovery → write back progress |
|
|
53
|
+
| **Periodic review** | Summarize recent changes | `get_recent`/`get_history` → read changed files → structured summary |
|
|
54
|
+
| **Handoff doc** | Create a briefing | Read sources → synthesize (background, decisions, status, open items) → place in project dir |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
23
58
|
## Detailed execution steps
|
|
24
59
|
|
|
25
60
|
### Single-file edit
|
|
@@ -95,21 +95,12 @@ description: >
|
|
|
95
95
|
| 列出顶层心智空间 | `mindos_list_spaces` | 只需分区概览却拉整棵 `list_files` |
|
|
96
96
|
| 找文件 | `mindos_search_notes`(2-4 条并行关键词变体)| 单关键词搜索 |
|
|
97
97
|
| 读内容 | `mindos_read_file` 或 `mindos_read_lines`(大文件) | 只需 10 行却读整文件 |
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
| 整文件替换 | `mindos_write_file` | 用它做章节级编辑 |
|
|
101
|
-
| 新建文件 | `mindos_create_file` | 自动创建父目录,但不会生成空间脚手架文件 |
|
|
102
|
-
| 新建心智空间(目录 + README + INSTRUCTION)| `mindos_create_space` | 创建空间的唯一方式。`create_file` 只创建普通目录 |
|
|
103
|
-
| 重命名空间目录 | `mindos_rename_space` | `rename_file`(仅文件,不能重命名文件夹)|
|
|
104
|
-
| 追加 CSV | `mindos_append_csv`(校验表头)| 手动拼字符串不校验 |
|
|
105
|
-
| 重命名前查影响 | `mindos_get_backlinks` | 不查引用就重命名 |
|
|
106
|
-
| 查看近期变动 | `mindos_get_recent` | 猜最近改了什么 |
|
|
107
|
-
| 恢复历史版本 | `mindos_get_file_at_version` | 让用户回忆之前内容 |
|
|
98
|
+
|
|
99
|
+
写入、结构变更、历史工具 → [references/write-supplement.md](./references/write-supplement.md)。
|
|
108
100
|
|
|
109
101
|
### 回退
|
|
110
102
|
|
|
111
103
|
- `mindos_bootstrap` 不可用 → 手动读根 `INSTRUCTION.md` + `README.md`。
|
|
112
|
-
- 行级/章节级工具不可用 → 读 + 受限 `mindos_write_file`(模拟最小修改)。
|
|
113
104
|
- 搜索无结果 → 不放弃:(1) 扫上下文中的树;(2) 直接读候选文件;(3) `mindos_list_files` 细化子目录;(4) 用同义词/中英文变体重试。
|
|
114
105
|
|
|
115
106
|
---
|
|
@@ -119,15 +110,6 @@ description: >
|
|
|
119
110
|
| 模式 | 适用场景 | 关键步骤 |
|
|
120
111
|
|------|----------|----------|
|
|
121
112
|
| **只读问答** | 查找 / 总结 / 引用 | 目录树推断 → 搜索 → 读取 → 标注来源 → 明确说信息缺口 |
|
|
122
|
-
| **单文件编辑** | 目标文件明确 | 启动协议 → 读目标 + 局部约定 → 最小修改 → 验证 → 总结 |
|
|
123
|
-
| **多文件路由** | 非结构化输入,多个目的地 | 解析为语义单元 → 路由表 → 确认 → 编辑 → 汇总 |
|
|
124
|
-
| **对话复盘** | 提炼 / 沉淀会话 | 确认范围 → 抽取决策/踩坑/下一步 → 路由 → 记录变更 |
|
|
125
|
-
| **SOP 执行** | 可重复流程 | 完整读 SOP → 分步执行 → 更新过时段落 → 偏差则提议更新 |
|
|
126
|
-
| **结构变更** | 重命名 / 移动 / 删除 | `get_backlinks` → 影响报告 → 确认 → 执行 → 更新引用 → 同步 README |
|
|
127
|
-
| **CSV 追加** | 追加表格行 | 读表头 → 校验字段 → `mindos_append_csv` |
|
|
128
|
-
| **跨 Agent 接力** | 继续其他 Agent 的工作 | 读任务状态+决策 → 无需重新探索直接接续 → 回写进度 |
|
|
129
|
-
| **周期性回顾** | 汇总近期变动 | `get_recent`/`get_history` → 读变动文件 → 结构化总结 |
|
|
130
|
-
| **交接文档** | 创建简报 | 读来源 → 合成(背景、决策、状态、待办)→ 放项目目录 |
|
|
131
113
|
|
|
132
114
|
写入模式详细执行步骤 → [references/write-supplement.md](./references/write-supplement.md)。
|
|
133
115
|
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| 文件 | 何时阅读 |
|
|
6
6
|
|------|----------|
|
|
7
|
+
| [write-supplement.md](./write-supplement.md) | 任何写入 / SOP / 结构变更任务(启动协议 + 执行步骤) |
|
|
8
|
+
| [post-task-hooks.md](./post-task-hooks.md) | 仅当 SKILL.md 中的 hook 条件已确认触发时 |
|
|
7
9
|
| [sop-template.md](./sop-template.md) | 在知识库中新建或重写流程类 SOP |
|
|
8
|
-
| [post-task-hooks.md](./post-task-hooks.md) | 写入/多步任务完成后,考虑是否一句话跟进 |
|
|
9
10
|
| [preference-capture.md](./preference-capture.md) | 用户表达要长期记住的偏好 |
|
|
10
11
|
|
|
11
12
|
英文版见 `skills/mindos/references/`(结构一致)。
|
|
@@ -5,6 +5,25 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## 写入工具选型
|
|
9
|
+
|
|
10
|
+
| 意图 | 推荐工具 | 避免 |
|
|
11
|
+
|------|----------|------|
|
|
12
|
+
| 小范围文字修改 | `mindos_update_section` / `update_lines` / `insert_after_heading` | 小修改用 `write_file` |
|
|
13
|
+
| 追加到末尾 | `mindos_append_to_file` | 为了加一行重写整文件 |
|
|
14
|
+
| 整文件替换 | `mindos_write_file` | 用它做章节级编辑 |
|
|
15
|
+
| 新建文件 | `mindos_create_file` | 自动创建父目录,但不会生成空间脚手架文件 |
|
|
16
|
+
| 新建心智空间(目录 + README + INSTRUCTION)| `mindos_create_space` | 创建空间的唯一方式。`create_file` 只创建普通目录 |
|
|
17
|
+
| 重命名空间目录 | `mindos_rename_space` | `rename_file`(仅文件,不能重命名文件夹)|
|
|
18
|
+
| 追加 CSV | `mindos_append_csv`(校验表头)| 手动拼字符串不校验 |
|
|
19
|
+
| 重命名前查影响 | `mindos_get_backlinks` | 不查引用就重命名 |
|
|
20
|
+
| 查看近期变动 | `mindos_get_recent` | 猜最近改了什么 |
|
|
21
|
+
| 恢复历史版本 | `mindos_get_file_at_version` | 让用户回忆之前内容 |
|
|
22
|
+
|
|
23
|
+
**回退:** 行级/章节级工具不可用 → 读 + 受限 `mindos_write_file`(模拟最小修改)。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
8
27
|
## 启动协议
|
|
9
28
|
|
|
10
29
|
所有写入任务执行前运行:
|
|
@@ -20,6 +39,22 @@
|
|
|
20
39
|
|
|
21
40
|
---
|
|
22
41
|
|
|
42
|
+
## 执行模式
|
|
43
|
+
|
|
44
|
+
| 模式 | 适用场景 | 关键步骤 |
|
|
45
|
+
|------|----------|----------|
|
|
46
|
+
| **单文件编辑** | 目标文件明确 | 启动协议 → 读目标 + 局部约定 → 最小修改 → 验证 → 总结 |
|
|
47
|
+
| **多文件路由** | 非结构化输入,多个目的地 | 解析为语义单元 → 路由表 → 确认 → 编辑 → 汇总 |
|
|
48
|
+
| **对话复盘** | 提炼 / 沉淀会话 | 确认范围 → 抽取决策/踩坑/下一步 → 路由 → 记录变更 |
|
|
49
|
+
| **SOP 执行** | 可重复流程 | 完整读 SOP → 分步执行 → 更新过时段落 → 偏差则提议更新 |
|
|
50
|
+
| **结构变更** | 重命名 / 移动 / 删除 | `get_backlinks` → 影响报告 → 确认 → 执行 → 更新引用 → 同步 README |
|
|
51
|
+
| **CSV 追加** | 追加表格行 | 读表头 → 校验字段 → `mindos_append_csv` |
|
|
52
|
+
| **跨 Agent 接力** | 继续其他 Agent 的工作 | 读任务状态+决策 → 无需重新探索直接接续 → 回写进度 |
|
|
53
|
+
| **周期性回顾** | 汇总近期变动 | `get_recent`/`get_history` → 读变动文件 → 结构化总结 |
|
|
54
|
+
| **交接文档** | 创建简报 | 读来源 → 合成(背景、决策、状态、待办)→ 放项目目录 |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
23
58
|
## 详细执行步骤
|
|
24
59
|
|
|
25
60
|
### 单文件编辑
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[620],{4235:(e,t,r)=>{"use strict";r.d(t,{B1:()=>l,X8:()=>d,dV:()=>i,oR:()=>u});let a=[],s=[],o=0;function n(){for(let e of s)e()}function l(e){return s=[...s,e],()=>{s=s.filter(t=>t!==e)}}function i(){return a}function d(e){a=a.filter(t=>t.id!==e),n()}function c(e){let t=`toast-${++o}`,r={id:t,message:e.message,type:e.type??"info",duration:e.duration??2e3,action:e.action};a=[...a,r].slice(-3),n(),r.duration>0&&setTimeout(()=>d(t),r.duration)}function u(e,t){c({message:e,...t})}u.success=(e,t)=>c({message:e,type:"success",duration:t}),u.undo=(e,t,r)=>c({message:e,type:"info",duration:r?.duration??5e3,action:{label:r?.label??"Undo",onClick:t}}),u.error=(e,t)=>c({message:e,type:"error",duration:t}),u.copy=(e="Copied")=>c({message:e,type:"success",duration:1500})},6296:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},7834:(e,t,r)=>{"use strict";async function a(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}}r.d(t,{l:()=>a})},12651:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},15721:(e,t,r)=>{Promise.resolve().then(r.bind(r,60641))},20171:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>m,Bt:()=>u,D0:()=>i,L7:()=>h,eN:()=>l,jn:()=>x,l6:()=>c,lM:()=>p,pM:()=>g,pd:()=>d});var a=r(95155),s=r(12115),o=r(66088),n=r(94514);function l({children:e}){return(0,a.jsx)("p",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-3",children:e})}function i({label:e,hint:t,children:r}){return(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("label",{className:"text-sm text-foreground font-medium",children:e}),r,t&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]})}function d({className:e="",...t}){return(0,a.jsx)("input",{...t,className:`w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 ${e}`})}function c({value:e,onChange:t,children:r,className:l="",disabled:i}){let d=(0,s.useId)(),[c,u]=(0,s.useState)(!1),[p,m]=(0,s.useState)(-1),x=(0,s.useRef)(null),h=(0,s.useRef)(null),g=(0,s.useMemo)(()=>s.Children.toArray(r).filter(e=>s.isValidElement(e)&&"option"===e.type).map(e=>({value:String(e.props.value??""),label:String(e.props.children??e.props.value??"")})),[r]),b=g.findIndex(t=>t.value===e),f=g[b]?.label??"";(0,s.useEffect)(()=>{if(!c)return;let e=e=>{x.current&&!x.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]),(0,s.useEffect)(()=>{if(c&&h.current&&p>=0){let e=h.current.children[p];e?.scrollIntoView({block:"nearest"})}},[c,p]);let v=(0,s.useCallback)(e=>{e>=0&&e<g.length&&(t?.({target:{value:g[e].value}}),u(!1))},[g,t]),y=(0,s.useCallback)(e=>{if(!c){["Enter"," ","ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),u(!0),m(b>=0?b:0));return}switch(e.key){case"ArrowDown":e.preventDefault(),m(e=>Math.min(e+1,g.length-1));break;case"ArrowUp":e.preventDefault(),m(e=>Math.max(e-1,0));break;case"Enter":case" ":e.preventDefault(),v(p);break;case"Escape":e.preventDefault(),u(!1);break;case"Tab":u(!1)}},[c,g.length,b,p,v]);return(0,a.jsxs)("div",{ref:x,className:`relative ${l}`,children:[(0,a.jsxs)("button",{type:"button",disabled:i,onClick:()=>{u(e=>!e),m(b>=0?b:0)},onKeyDown:y,"aria-haspopup":"listbox","aria-expanded":c,className:"w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground text-left flex items-center justify-between gap-2 outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:`truncate ${f?"":"text-muted-foreground"}`,children:f||"—"}),(0,a.jsx)(o.A,{size:14,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${c?"rotate-180":""}`})]}),c&&(0,a.jsx)("div",{ref:h,role:"listbox","aria-activedescendant":p>=0?`${d}-opt-${p}`:void 0,className:"absolute z-20 w-full mt-1 py-1 border border-border rounded-lg bg-card shadow-lg max-h-60 overflow-auto animate-in fade-in-0 zoom-in-95 duration-100",children:g.map((t,r)=>{let s=t.value===e,o=r===p;return(0,a.jsxs)("button",{id:`${d}-opt-${r}`,role:"option","aria-selected":s,type:"button",onMouseDown:e=>{e.preventDefault(),v(r)},onMouseEnter:()=>m(r),className:`w-full px-3 py-1.5 text-sm text-left flex items-center gap-2 transition-colors ${o?"bg-accent text-accent-foreground":"text-foreground"}`,children:[(0,a.jsx)(n.A,{size:14,className:`shrink-0 ${s?"text-[var(--amber)]":"invisible"}`}),(0,a.jsx)("span",{className:"truncate",children:t.label})]},t.value)})})]})}function u({overridden:e}){return e?(0,a.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-mono ml-1.5",children:"env"}):null}function p({checked:e,onChange:t,size:r="md",disabled:s,title:o,onClick:n}){let l="sm"===r;return(0,a.jsx)("button",{type:"button",role:"switch","aria-checked":e,disabled:s,title:o,onClick:n??(()=>t?.(!e)),className:`relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 ${l?"h-4 w-7":"h-5 w-9"} ${e?"bg-[var(--amber)]":"bg-muted"}`,children:(0,a.jsx)("span",{className:`pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform ${l?"h-3 w-3":"h-4 w-4"} ${e?l?"translate-x-3":"translate-x-4":"translate-x-0"}`})})}function m({value:e,onChange:t,placeholder:r,disabled:s}){let o="***set***"===e;return(0,a.jsx)("input",{type:"password",value:o?"••••••••••••••••":e,onChange:e=>t(e.target.value),placeholder:r??"sk-...",disabled:s,className:"w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50",onFocus:()=>{o&&t("")}})}function x({children:e,disabled:t,onClick:r,type:s="button",className:o="",...n}){return(0,a.jsx)("button",{type:s,onClick:r,disabled:t,className:`px-4 py-2 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] transition-colors disabled:opacity-40 disabled:cursor-not-allowed ${o}`,...n,children:e})}function h({icon:e,title:t,description:r,badge:s,children:o,className:n=""}){return(0,a.jsxs)("div",{className:`rounded-xl border border-border/50 bg-card/50 p-5 ${n}`,children:[(0,a.jsxs)("div",{className:"flex items-start gap-3 mb-4",children:[(0,a.jsx)("div",{className:"w-8 h-8 rounded-lg bg-muted/50 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)("span",{className:"text-muted-foreground",children:e})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:t}),s]}),r&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 leading-relaxed",children:r})]})]}),(0,a.jsx)("div",{className:"space-y-4 pl-11",children:o})]})}function g({label:e,hint:t,children:r}){return(0,a.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-sm text-foreground",children:e}),t&&(0,a.jsx)("div",{className:"text-xs text-muted-foreground mt-0.5",children:t})]}),(0,a.jsx)("div",{className:"shrink-0",children:r})]})}},21362:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},30125:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("skip-forward",[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]])},41585:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},41641:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},48368:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},53961:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},60641:(e,t,r)=>{"use strict";r.d(t,{default:()=>H});var a=r(95155),s=r(12115),o=r(86901),n=r(41641),l=r(21362),i=r(6296),d=r(61263),c=r(7834),u=r(4235),p=r(92451),m=r(97810),x=r(48368);let h=[{id:"en",icon:(0,a.jsx)(p.A,{size:18}),dirs:["Profile/","Connections/","Notes/","Workflows/","Resources/","Projects/"]},{id:"zh",icon:(0,a.jsx)(m.A,{size:18}),dirs:["画像/","关系/","笔记/","流程/","资源/","项目/"]},{id:"empty",icon:(0,a.jsx)(x.A,{size:18}),dirs:["README.md","CONFIG.json","INSTRUCTION.md"]}];var g=r(20171);function b({state:e,update:t,t:r,homeDir:o}){let n=r.setup,l=o.includes("\\")?"\\":"/",i="~"!==o?[o,"MindOS","mind"].join(l):n.kbPathDefault,[d,c]=(0,s.useState)(null),[u,p]=(0,s.useState)([]),[m,x]=(0,s.useState)(!1),[b,f]=(0,s.useState)(-1),[v,y]=(0,s.useState)(!1),k=(0,s.useRef)(null),j=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(j.current){j.current=!1;return}if(!e.mindRoot.trim())return void p([]);let t=setTimeout(()=>{let t=function(e){if(!e.trim())return"";let t=e.trim();if(t.endsWith("/")||t.endsWith("\\"))return t;let r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return r>=0?t.slice(0,r+1):""}(e.mindRoot)||o;fetch("/api/setup/ls",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})}).then(e=>e.json()).then(r=>{if(!r.dirs?.length)return void p([]);let a=t.endsWith("/")||t.endsWith("\\"),s=t.includes("\\")?"\\":"/",o=a?t:t+s,n=e.mindRoot.trim(),l=r.dirs.map(e=>o+e),i=n.endsWith("/")||n.endsWith("\\")?l:l.filter(e=>e.startsWith(n));p(i.slice(0,20)),x(i.length>0),f(-1)}).catch(e=>{console.warn("[SetupWizard] autocomplete fetch failed:",e),p([])})},300);return()=>clearTimeout(t)},[e.mindRoot,o]),(0,s.useEffect)(()=>{if(!e.mindRoot.trim())return void c(null);let r=setTimeout(()=>{fetch("/api/setup/check-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.mindRoot})}).then(e=>e.json()).then(e=>{c(e),y(!1),e?.exists&&!e.empty&&t("template","")}).catch(e=>{console.warn("[SetupWizard] check-path failed:",e),c(null)})},600);return()=>clearTimeout(r)},[e.mindRoot,t]);let N=()=>{p([]),x(!1),f(-1)},w=e=>{j.current=!0,t("mindRoot",e),N(),k.current?.focus()};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(g.D0,{label:n.kbPath,hint:n.kbPathHint,children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{ref:k,value:e.mindRoot,onChange:e=>{t("mindRoot",e.target.value),x(!0)},onKeyDown:e=>{m&&0!==u.length&&("ArrowDown"===e.key?(e.preventDefault(),f(e=>Math.min(e+1,u.length-1))):"ArrowUp"===e.key?(e.preventDefault(),f(e=>Math.max(e-1,-1))):"Enter"===e.key&&b>=0?(e.preventDefault(),w(u[b])):"Escape"===e.key&&x(!1))},onBlur:()=>setTimeout(()=>N(),150),onFocus:()=>u.length>0&&x(!0),placeholder:i,className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus-visible:ring-1 focus-visible:ring-ring",style:{background:"var(--input, var(--card))",borderColor:"var(--border)",color:"var(--foreground)"}}),m&&u.length>0&&(0,a.jsx)("div",{role:"listbox",className:"absolute z-50 left-0 right-0 top-full mt-1 rounded-lg border overflow-auto",style:{background:"var(--card)",borderColor:"var(--border)",boxShadow:"0 4px 16px rgba(0,0,0,0.12)",maxHeight:"220px"},children:u.map((e,t)=>(0,a.jsx)("button",{type:"button",role:"option","aria-selected":t===b,onMouseDown:()=>w(e),className:"w-full text-left px-3 py-2 text-sm font-mono transition-colors",style:{background:t===b?"var(--muted)":"transparent",color:"var(--foreground)",borderTop:t>0?"1px solid var(--border)":void 0},children:e},e))})]}),e.mindRoot!==i&&i!==n.kbPathDefault&&(0,a.jsx)("button",{type:"button",onClick:()=>t("mindRoot",i),className:"mt-1.5 px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:n.kbPathUseDefault(i)})]}),d&&d.exists&&!d.empty&&!v?(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,a.jsxs)("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--amber)",background:"color-mix(in srgb, var(--amber) 6%, transparent)"},children:[(0,a.jsx)("p",{style:{color:"var(--amber)"},children:n.kbPathHasFiles(d.count)}),(0,a.jsxs)("div",{className:"flex gap-2 mt-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>t("template",""),className:"px-2.5 py-1 text-xs rounded-md border transition-colors",style:{borderColor:"var(--amber)",color:""===e.template?"var(--background)":"var(--amber)",background:""===e.template?"var(--amber)":"transparent"},children:""===e.template?(0,a.jsxs)(a.Fragment,{children:[n.kbTemplateSkip," ✓"]}):n.kbTemplateSkip}),(0,a.jsx)("button",{type:"button",onClick:()=>y(!0),className:"px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:n.kbTemplateMerge})]})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:h.map(s=>(0,a.jsxs)("button",{onClick:()=>t("template",s.id),className:"flex flex-col items-start gap-2 p-4 rounded-xl border text-left transition-all duration-150",style:{background:e.template===s.id?"var(--amber-dim)":"var(--card)",borderColor:e.template===s.id?"var(--amber)":"var(--border)"},children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{style:{color:"var(--amber)"},children:s.icon}),(0,a.jsx)("span",{className:"text-sm font-medium",style:{color:"var(--foreground)"},children:r.onboarding.templates[s.id].title})]}),(0,a.jsx)("div",{className:"w-full rounded-lg px-2.5 py-1.5 text-xs leading-relaxed font-display",style:{background:"var(--muted)",color:"var(--muted-foreground)"},children:s.dirs.map(e=>(0,a.jsx)("div",{children:e},e))})]},s.id))})]})]})}var f=r(90718),v=r(53961),y=r(30125),k=r(12651);function j({state:e,update:t,s:r}){let s=[{id:"anthropic",icon:(0,a.jsx)(f.A,{size:18}),label:"Anthropic",desc:"Claude — claude-sonnet-4-6"},{id:"openai",icon:(0,a.jsx)(v.A,{size:18}),label:"OpenAI",desc:"GPT or any OpenAI-compatible API"},{id:"skip",icon:(0,a.jsx)(y.A,{size:18}),label:r.aiSkipTitle,desc:r.aiSkipDesc}];return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)("div",{className:"grid grid-cols-1 gap-3",children:s.map(r=>(0,a.jsxs)("button",{onClick:()=>t("provider",r.id),className:"flex items-start gap-3 p-4 rounded-xl border text-left transition-all duration-150",style:{background:e.provider===r.id?"var(--amber-dim)":"var(--card)",borderColor:e.provider===r.id?"var(--amber)":"var(--border)"},children:[(0,a.jsx)("span",{className:"mt-0.5",style:{color:e.provider===r.id?"var(--amber)":"var(--muted-foreground)"},children:r.icon}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium",style:{color:"var(--foreground)"},children:r.label}),(0,a.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--muted-foreground)"},children:r.desc})]}),e.provider===r.id&&(0,a.jsx)(k.A,{size:16,className:"ml-auto mt-0.5 shrink-0",style:{color:"var(--amber)"}})]},r.id))}),"skip"!==e.provider&&(0,a.jsxs)("div",{className:"space-y-4 pt-2",children:[(0,a.jsxs)(g.D0,{label:r.apiKey,children:[(0,a.jsx)(g.Ak,{value:"anthropic"===e.provider?e.anthropicKey:e.openaiKey,onChange:r=>t("anthropic"===e.provider?"anthropicKey":"openaiKey",r),placeholder:("anthropic"===e.provider?e.anthropicKeyMask:e.openaiKeyMask)||("anthropic"===e.provider?"sk-ant-...":"sk-...")}),("anthropic"===e.provider?e.anthropicKeyMask:e.openaiKeyMask)&&!("anthropic"===e.provider?e.anthropicKey:e.openaiKey)&&(0,a.jsx)("p",{className:"text-xs mt-1",style:{color:"var(--muted-foreground)"},children:r.apiKeyExisting??"Existing key configured. Leave blank to keep it."})]}),(0,a.jsx)(g.D0,{label:r.model,children:(0,a.jsx)(g.pd,{value:"anthropic"===e.provider?e.anthropicModel:e.openaiModel,onChange:r=>t("anthropic"===e.provider?"anthropicModel":"openaiModel",r.target.value)})}),"openai"===e.provider&&(0,a.jsx)(g.D0,{label:r.baseUrl,hint:r.baseUrlHint,children:(0,a.jsx)(g.pd,{value:e.openaiBaseUrl,onChange:e=>t("openaiBaseUrl",e.target.value),placeholder:"https://api.openai.com/v1"})})]})]})}var N=r(41585),w=r(68822);function A({label:e,hint:t,value:r,onChange:o,status:n,onCheckPort:l,s:d}){let c=(0,s.useRef)(void 0);return(0,s.useEffect)(()=>()=>clearTimeout(c.current),[]),(0,a.jsx)(g.D0,{label:e,hint:t,children:(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(g.pd,{type:"number",min:1024,max:65535,value:r,onChange:e=>{let t=parseInt(e.target.value,10)||r;o(t),clearTimeout(c.current),t>=1024&&t<=65535&&(c.current=setTimeout(()=>l(t),500))},onBlur:()=>{clearTimeout(c.current),l(r)}}),n.checking&&(0,a.jsxs)("p",{className:"text-xs flex items-center gap-1",role:"status",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(i.A,{size:11,className:"animate-spin"})," ",d.portChecking]}),!n.checking&&!1===n.available&&(0,a.jsxs)("div",{className:"flex items-center gap-2",role:"alert",children:[(0,a.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--amber)"},children:[(0,a.jsx)(N.A,{size:11})," ",d.portInUse(r)]}),null!==n.suggestion&&(0,a.jsx)("button",{type:"button",onClick:()=>{o(n.suggestion),setTimeout(()=>l(n.suggestion),0)},className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:d.portSuggest(n.suggestion)})]}),!n.checking&&!0===n.available&&(0,a.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--success)"},children:[(0,a.jsx)(k.A,{size:11})," ",n.isSelf?d.portSelf:d.portAvailable]})]})})}function S({state:e,update:t,webPortStatus:r,mcpPortStatus:s,setWebPortStatus:o,setMcpPortStatus:n,checkPort:l,portConflict:i,s:d}){return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)(A,{label:d.webPort,hint:d.portHint,value:e.webPort,onChange:e=>{t("webPort",e),o({checking:!1,available:null,isSelf:!1,suggestion:null})},status:r,onCheckPort:e=>l(e,"web"),s:d}),(0,a.jsx)(A,{label:d.mcpPort,hint:d.portHint,value:e.mcpPort,onChange:e=>{t("mcpPort",e),n({checking:!1,available:null,isSelf:!1,suggestion:null})},status:s,onCheckPort:e=>l(e,"mcp"),s:d}),i&&(0,a.jsxs)("p",{className:"text-xs flex items-center gap-1.5",role:"alert",style:{color:"var(--amber)"},children:[(0,a.jsx)(N.A,{size:12})," ",d.portConflict]}),!i&&(null===r.available||null===s.available)&&!r.checking&&!s.checking&&(0,a.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:d.portVerifyHint}),(0,a.jsxs)("p",{className:"text-xs flex items-center gap-1.5",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(w.A,{size:12})," ",d.portRestartWarning]})]})}var C=r(67635),T=r(91958);function P({authToken:e,onCopy:t,onGenerate:r,webPassword:o,onPasswordChange:n,s:l}){let[i,d]=(0,s.useState)(""),[c,u]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1);return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)(g.D0,{label:l.authToken,hint:l.authTokenHint,children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(g.pd,{value:e,readOnly:!0,className:"font-mono text-xs"}),(0,a.jsxs)("button",{onClick:t,className:"flex items-center gap-1 px-3 py-2 text-xs rounded-lg border border-border hover:bg-muted transition-colors shrink-0",style:{color:"var(--foreground)"},children:[(0,a.jsx)(C.A,{size:14}),l.copyToken]}),(0,a.jsx)("button",{onClick:()=>r(),"aria-label":l.generateToken,className:"flex items-center gap-1 px-3 py-2 text-xs rounded-lg border border-border hover:bg-muted transition-colors shrink-0",style:{color:"var(--foreground)"},children:(0,a.jsx)(T.A,{size:14})})]})}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("button",{onClick:()=>m(!p),className:"text-xs underline","aria-expanded":p,style:{color:"var(--muted-foreground)"},children:l.authTokenUsageWhat}),p&&(0,a.jsx)("p",{className:"text-xs leading-relaxed px-3 py-2 rounded-lg",style:{background:"var(--muted)",color:"var(--muted-foreground)"},children:l.authTokenUsage})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{onClick:()=>u(!c),className:"text-xs underline","aria-expanded":c,style:{color:"var(--muted-foreground)"},children:l.authTokenSeed}),c&&(0,a.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,a.jsx)(g.pd,{value:i,onChange:e=>d(e.target.value),placeholder:l.authTokenSeedHint}),(0,a.jsx)("button",{onClick:()=>{i.trim()&&r(i)},className:"px-3 py-2 text-xs rounded-lg border border-border hover:bg-muted transition-colors shrink-0",style:{color:"var(--foreground)"},children:l.generateToken})]})]}),(0,a.jsx)(g.D0,{label:l.webPassword,hint:l.webPasswordHint,children:(0,a.jsx)(g.pd,{type:"password",value:o,onChange:e=>n(e.target.value),placeholder:"(optional)"})})]})}var M=r(62791),z=r(66088);function D({agents:e,agentsLoading:t,selectedAgents:r,setSelectedAgents:o,agentTransport:n,setAgentTransport:l,agentScope:d,setAgentScope:c,agentStatuses:u,s:p,settingsMcp:m,template:x}){let[h,b]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),{detected:j,other:N}=(0,s.useMemo)(()=>({detected:e.filter(e=>e.installed||e.present),other:e.filter(e=>!e.installed&&!e.present)}),[e]),w=(e,t)=>(0,a.jsxs)("label",{className:"flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-muted/50 transition-colors",style:{background:t%2==0?"var(--card)":"transparent",borderTop:t>0?"1px solid var(--border)":void 0},children:[(0,a.jsx)("input",{type:"checkbox",checked:r.has(e.key),onChange:()=>{var t;return t=e.key,void o(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"form-check",disabled:u[e.key]?.state==="installing"}),(0,a.jsx)("span",{className:"text-sm flex-1",style:{color:"var(--foreground)"},children:e.name}),(0,a.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded font-mono",style:{background:"color-mix(in srgb, var(--muted-foreground) 8%, transparent)",color:"var(--muted-foreground)"},children:"auto"===n?e.preferredTransport:n}),((e,t)=>{let r=u[e];if(r){if("installing"===r.state)return(0,a.jsxs)("span",{className:"flex items-center gap-1 text-xs",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(i.A,{size:10,className:"animate-spin"})," ",p.agentInstalling]});if("ok"===r.state)return(0,a.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:[(0,a.jsx)(k.A,{size:10})," ",p.agentStatusOk]});if("error"===r.state)return(0,a.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)",color:"var(--error)"},children:[(0,a.jsx)(M.A,{size:10})," ",p.agentStatusError,r.message&&(0,a.jsxs)("span",{className:"ml-1 text-2xs",children:["(",r.message,")"]})]})}return t.installed?(0,a.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:m.installed}):t.present?(0,a.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"var(--amber-dim)",color:"var(--amber)"},children:p.agentDetected}):(0,a.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--muted-foreground) 10%, transparent)",color:"var(--muted-foreground)"},children:p.agentNotFound})})(e.key,e)]},e.key);return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:p.agentToolsHint}),t?(0,a.jsxs)("div",{className:"flex items-center gap-2 py-4",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(i.A,{size:14,className:"animate-spin"}),(0,a.jsx)("span",{className:"text-sm",children:p.agentToolsLoading})]}):0===e.length?(0,a.jsx)("p",{className:"text-sm py-4 text-center",style:{color:"var(--muted-foreground)"},children:p.agentToolsEmpty}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-4 text-2xs",style:{color:"var(--muted-foreground)"},children:[(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--success)"}}),p.badgeInstalled]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--amber)"}}),p.badgeDetected]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--muted-foreground)"}}),p.badgeNotFound]})]}),j.length>0?(0,a.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:j.map((e,t)=>w(e,t))}):(0,a.jsx)("p",{className:"text-xs py-2",style:{color:"var(--muted-foreground)"},children:p.agentNoneDetected}),N.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("button",{type:"button",onClick:()=>b(!h),"aria-expanded":h,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(z.A,{size:12,className:`transition-transform ${h?"rotate-180":""}`}),p.agentShowMore(N.length)]}),h&&(0,a.jsx)("div",{className:"rounded-xl border overflow-hidden mt-1",style:{borderColor:"var(--border)"},children:N.map((e,t)=>w(e,t))})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:p.skillWhat}),(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg text-xs",style:{background:"color-mix(in srgb, var(--muted-foreground) 6%, transparent)",color:"var(--muted-foreground)"},children:[(0,a.jsx)(f.A,{size:13,className:"shrink-0"}),(0,a.jsx)("span",{children:p.skillAutoHint("zh"===x?"mindos-zh":"mindos")})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("button",{type:"button",onClick:()=>y(!v),"aria-expanded":v,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,a.jsx)(z.A,{size:12,className:`transition-transform ${v?"rotate-180":""}`}),p.agentAdvanced]}),v&&(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4 mt-2",children:[(0,a.jsx)(g.D0,{label:p.agentTransport,children:(0,a.jsxs)(g.l6,{value:n,onChange:e=>l(e.target.value),children:[(0,a.jsx)("option",{value:"auto",children:p.agentTransportAuto}),(0,a.jsx)("option",{value:"stdio",children:m.transportStdio}),(0,a.jsx)("option",{value:"http",children:m.transportHttp})]})}),(0,a.jsx)(g.D0,{label:p.agentScope,children:(0,a.jsxs)(g.l6,{value:d,onChange:e=>c(e.target.value),children:[(0,a.jsx)("option",{value:"global",children:p.agentScopeGlobal}),(0,a.jsx)("option",{value:"project",children:p.agentScopeProject})]})})]})]}),(0,a.jsxs)("div",{className:"flex gap-2 mt-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>o(new Set(e.filter(e=>e.installed||e.present).map(e=>e.key))),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:p.agentSelectDetected}),(0,a.jsx)("button",{type:"button",onClick:()=>o(new Set),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:p.agentSkipLater})]})]})]})}function R({s:e}){return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"p-3 rounded-lg text-sm flex items-center gap-2",style:{background:"color-mix(in srgb, var(--amber) 10%, transparent)",color:"var(--amber)"},children:[(0,a.jsx)(N.A,{size:14})," ",e.restartRequired]}),(0,a.jsxs)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:[e.restartManual," ",(0,a.jsx)("code",{className:"font-mono",children:"mindos start"})]})]})}function E({s:e,newPort:t}){let[r,o]=(0,s.useState)(!1),[n,l]=(0,s.useState)(!1),d=(0,s.useRef)(void 0);(0,s.useEffect)(()=>()=>{clearInterval(d.current)},[]);let c=async()=>{o(!0);try{await fetch("/api/restart",{method:"POST"}),l(!0);let e=()=>{window.location.href=`http://localhost:${t}/?welcome=1`},r=0;clearInterval(d.current),d.current=setInterval(async()=>{r++;try{if((await fetch(`http://localhost:${t}/api/health`)).status<500){clearInterval(d.current),e();return}}catch{}r>=10&&(clearInterval(d.current),e())},800)}catch(e){console.warn("[SetupWizard] restart request failed:",e),o(!1)}};return n?(0,a.jsxs)("span",{className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg",style:{background:"color-mix(in srgb, var(--success) 15%, transparent)",color:"var(--success)"},children:[(0,a.jsx)(k.A,{size:14})," ",e.restartDone]}):(0,a.jsxs)("button",{type:"button",onClick:c,disabled:r,className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[r?(0,a.jsx)(i.A,{size:13,className:"animate-spin"}):null,r?e.restarting:e.restartNow]})}function O({state:e,selectedAgents:t,agentStatuses:r,onRetryAgent:s,error:o,needsRestart:n,s:l,skillInstallResult:d,setupPhase:c}){let u=Object.entries(r).filter(([,e])=>"error"===e.state),p=[[l.kbPath,e.mindRoot],[l.webPort,`${e.webPort} / ${e.mcpPort}`],[l.agentToolsTitle,t.size>0?l.agentCountSummary(t.size):"—"]],m=[{key:"saving",label:l.phaseSaving},{key:"agents",label:l.phaseAgents},{key:"skill",label:l.phaseSkill},{key:"done",label:l.phaseDone}],x=["saving","agents","skill","done"],h=x.indexOf(c);return(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:p.map(([e,t],r)=>(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 text-sm",style:{background:r%2==0?"var(--card)":"transparent",borderTop:r>0?"1px solid var(--border)":void 0},children:[(0,a.jsx)("span",{style:{color:"var(--muted-foreground)"},children:e}),(0,a.jsx)("span",{className:"font-mono text-xs truncate ml-4",style:{color:"var(--foreground)"},children:t})]},r))}),"review"===c&&(0,a.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:l.reviewHint}),"review"!==c&&(0,a.jsx)("div",{className:"space-y-2 py-2",children:m.map(({key:e,label:t},r)=>{let s=x.indexOf(e),o=h>s||"done"===e&&"done"===c,n=c===e&&"done"!==e;return(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 text-2xs",style:{background:o?"color-mix(in srgb, var(--success) 15%, transparent)":n?"color-mix(in srgb, var(--amber) 15%, transparent)":"var(--muted)",color:o?"var(--success)":n?"var(--amber)":"var(--muted-foreground)"},children:o?(0,a.jsx)(k.A,{size:12}):n?(0,a.jsx)(i.A,{size:12,className:"animate-spin"}):r+1}),(0,a.jsx)("span",{className:"text-sm",style:{color:o?"var(--success)":n?"var(--foreground)":"var(--muted-foreground)",fontWeight:n?500:400,opacity:h<s?.5:1},children:t})]},e)})}),u.length>0&&"done"===c&&(0,a.jsxs)("div",{className:"p-3 rounded-lg space-y-2",style:{background:"color-mix(in srgb, var(--error) 8%, transparent)"},children:[(0,a.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--error)"},children:l.agentFailedCount(u.length)}),u.map(([e,t])=>(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"text-xs flex items-center gap-1",style:{color:"var(--error)"},children:[(0,a.jsx)(M.A,{size:11})," ",e,t.message?` — ${t.message}`:""]}),(0,a.jsx)("button",{type:"button",onClick:()=>s(e),className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--error)",color:"var(--error)"},children:l.retryAgent})]},e)),(0,a.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:l.agentFailureNote})]}),d&&"done"===c&&(0,a.jsx)("div",{className:"flex items-center gap-2 text-xs px-3 py-2 rounded-lg",style:{background:d.ok?"color-mix(in srgb, var(--success) 6%, transparent)":"color-mix(in srgb, var(--error) 6%, transparent)"},children:d.ok?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(k.A,{size:11,className:"text-success shrink-0"}),(0,a.jsxs)("span",{style:{color:"var(--foreground)"},children:[l.skillInstalled," — ",d.skill]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(M.A,{size:11,className:"text-error shrink-0"}),(0,a.jsxs)("span",{style:{color:"var(--error)"},children:[l.skillFailed,d.error?`: ${d.error}`:""]})]})}),o&&(0,a.jsxs)("div",{className:"p-3 rounded-lg text-sm text-error",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)"},children:[l.completeFailed,": ",o]}),n&&"done"===c&&(0,a.jsx)(R,{s:l})]})}function $({step:e,setStep:t,stepTitles:r,disabled:s}){let{t:o}=(0,d.Y)();return(0,a.jsx)("div",{className:"flex items-center gap-2 mb-8",role:"navigation","aria-label":"Setup steps",children:r.map((r,n)=>(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[n>0&&(0,a.jsx)("div",{className:"w-8 h-px",style:{background:n<=e?"var(--amber)":"var(--border)"}}),(0,a.jsxs)("button",{onClick:()=>t(n),"aria-current":n===e?"step":void 0,"aria-label":r,className:"flex flex-col items-center gap-1 p-1 -m-1 disabled:cursor-not-allowed disabled:opacity-60",disabled:s||n>=e,title:s||n>=e?o.hints.cannotJumpForward:void 0,children:[(0,a.jsx)("div",{className:"w-6 h-6 rounded-full text-xs font-medium flex items-center justify-center transition-colors",style:{background:n<=e?"var(--amber)":"var(--muted)",color:n<=e?"var(--amber-foreground)":"var(--muted-foreground)",opacity:n<=e?1:.5},children:n+1}),(0,a.jsx)("span",{className:"text-[10px] leading-tight hidden sm:inline max-w-[4rem] text-center truncate",style:{color:n===e?"var(--foreground)":"var(--muted-foreground)",opacity:n<=e?1:.5},children:r})]})]},n))})}function W(e,t,r,a){let s=t.find(t=>t.key===e);return{key:e,scope:a,transport:"auto"===r?s?.preferredTransport||"stdio":r}}function K(e){return{state:"ok"===e.status?"ok":"error",message:e.message,transport:e.transport,verified:e.verified,verifyError:e.verifyError}}async function I(e){let t={mindRoot:e.mindRoot,template:e.template||void 0,port:e.webPort,mcpPort:e.mcpPort,authToken:e.authToken,webPassword:e.webPassword,ai:"skip"===e.provider?void 0:{provider:e.provider,providers:{anthropic:{apiKey:e.anthropicKey,model:e.anthropicModel},openai:{apiKey:e.openaiKey,model:e.openaiModel,baseUrl:e.openaiBaseUrl}}}},r=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await r.json();if(!r.ok)throw Error(a.error||`HTTP ${r.status}`);return!!a.needsRestart}async function U(e,t,r,a,s,o){let n=e.map(e=>W(e,t,r,a)),l=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:n,transport:r,url:`http://localhost:${s}/mcp`,token:o||void 0})}),i=await l.json(),d={};if(i.results)for(let e of i.results)d[e.agent]=K(e);return d}function H(){let{t:e}=(0,d.Y)(),t=e.setup,[r,p]=(0,s.useState)(0),[m,x]=(0,s.useState)({mindRoot:"~/MindOS/mind",template:"en",provider:"anthropic",anthropicKey:"",anthropicModel:"claude-sonnet-4-6",anthropicKeyMask:"",openaiKey:"",openaiModel:"gpt-5.4",openaiBaseUrl:"",openaiKeyMask:"",webPort:3e3,mcpPort:8787,authToken:"",webPassword:""}),[h,g]=(0,s.useState)("~"),[f,v]=(0,s.useState)(!1),[y,k]=(0,s.useState)(!1),[N,w]=(0,s.useState)(""),[A,C]=(0,s.useState)(!1),[T,M]=(0,s.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[z,R]=(0,s.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[H,F]=(0,s.useState)([]),[L,q]=(0,s.useState)(!1),[B,J]=(0,s.useState)(!1),[V,_]=(0,s.useState)(new Set),[G,Y]=(0,s.useState)("auto"),[Z,X]=(0,s.useState)("global"),[Q,ee]=(0,s.useState)({}),[et,er]=(0,s.useState)(null),[ea,es]=(0,s.useState)("review");(0,s.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.homeDir&&g(e.homeDir),x(t=>({...t,mindRoot:e.mindRoot||t.mindRoot,webPort:"number"==typeof e.port?e.port:t.webPort,mcpPort:"number"==typeof e.mcpPort?e.mcpPort:t.mcpPort,authToken:e.authToken||t.authToken,webPassword:e.webPassword||t.webPassword,provider:"anthropic"===e.provider||"openai"===e.provider?e.provider:t.provider,anthropicModel:e.anthropicModel||t.anthropicModel,anthropicKeyMask:e.anthropicApiKey||"",openaiModel:e.openaiModel||t.openaiModel,openaiBaseUrl:e.openaiBaseUrl??t.openaiBaseUrl,openaiKeyMask:e.openaiApiKey||""})),e.authToken||fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&x(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Token generation failed:",e))}).catch(e=>{console.warn("[SetupWizard] Failed to load config, generating token as fallback:",e),fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&x(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Fallback token generation also failed:",e))})},[]),(0,s.useEffect)(()=>{2===r&&(ei(m.webPort,"web"),ei(m.mcpPort,"mcp"))},[r]),(0,s.useEffect)(()=>{4!==r||B||L||(q(!0),fetch("/api/mcp/agents").then(e=>e.json()).then(e=>{e.agents&&(F(e.agents),_(new Set(e.agents.filter(e=>e.installed||e.present).map(e=>e.key)))),J(!0)}).catch(e=>{console.warn("[SetupWizard] Failed to load agents:",e),J(!0)}).finally(()=>q(!1)))},[r,B,L]);let eo=(0,s.useCallback)((e,t)=>{x(r=>({...r,[e]:t}))},[]),en=(0,s.useCallback)(async e=>{try{let t=await fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({seed:e||void 0})}),r=await t.json();r.token&&x(e=>({...e,authToken:r.token}))}catch(e){console.warn("[SetupWizard] generateToken failed:",e)}},[]),el=(0,s.useCallback)(()=>{(0,c.l)(m.authToken).then(e=>{e&&u.oR.copy()})},[m.authToken]),ei=(0,s.useCallback)(async(e,t)=>{if(e<1024||e>65535)return;let r="web"===t?M:R;r({checking:!0,available:null,isSelf:!1,suggestion:null});try{let t=await fetch("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})}),a=await t.json();r({checking:!1,available:a.available??null,isSelf:!!a.isSelf,suggestion:a.suggestion??null})}catch(e){console.warn("[SetupWizard] checkPort failed:",e),r({checking:!1,available:null,isSelf:!1,suggestion:null})}},[]),ed=m.webPort===m.mcpPort,ec=async()=>{v(!0),w("");let e=Array.from(V);es("saving");let t=!1;try{(t=await I(m))&&C(!0)}catch(e){w(e instanceof Error?e.message:String(e)),es("review"),v(!1);return}if(es("agents"),e.length>0){let t={};for(let r of e)t[r]={state:"installing"};ee(t);try{let t=await U(e,H,G,Z,m.mcpPort,m.authToken);ee(t)}catch(r){console.warn("[SetupWizard] agent batch install failed:",r);let t={};for(let r of e)t[r]={state:"error"};ee(t)}}v(!1),k(!0),es("done"),t||(window.location.href="/?welcome=1")},eu=(0,s.useCallback)(async e=>{ee(t=>({...t,[e]:{state:"installing"}}));try{let t=W(e,H,G,Z),r=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:[t],transport:G,url:`http://localhost:${m.mcpPort}/mcp`,token:m.authToken||void 0})}),a=await r.json();if(a.results?.[0]){let t=a.results[0];ee(r=>({...r,[e]:K(t)}))}}catch(t){console.warn("[SetupWizard] retryAgent failed:",t),ee(t=>({...t,[e]:{state:"error"}}))}},[H,Z,G,m.mcpPort,m.authToken]);return(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center overflow-y-auto",role:"dialog","aria-modal":"true","aria-labelledby":"setup-title",style:{background:"var(--background)"},children:(0,a.jsxs)("div",{className:"w-full max-w-xl mx-auto px-6 py-12",children:[(0,a.jsx)("div",{className:"text-center mb-8",children:(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 mb-2",children:[(0,a.jsx)(o.A,{size:18,style:{color:"var(--amber)"}}),(0,a.jsx)("h1",{id:"setup-title",className:"text-2xl font-semibold tracking-tight font-display",style:{color:"var(--foreground)"},children:"MindOS"})]})}),(0,a.jsx)("div",{className:"flex justify-center",children:(0,a.jsx)($,{step:r,setStep:p,stepTitles:t.stepTitles,disabled:f||y})}),(0,a.jsx)("h2",{className:"text-lg font-semibold mb-5",style:{color:"var(--foreground)"},children:t.stepTitles[r]}),0===r&&(0,a.jsx)(b,{state:m,update:eo,t:e,homeDir:h}),1===r&&(0,a.jsx)(j,{state:m,update:eo,s:t}),2===r&&(0,a.jsx)(S,{state:m,update:eo,webPortStatus:T,mcpPortStatus:z,setWebPortStatus:M,setMcpPortStatus:R,checkPort:ei,portConflict:ed,s:t}),3===r&&(0,a.jsx)(P,{authToken:m.authToken,onCopy:el,onGenerate:en,webPassword:m.webPassword,onPasswordChange:e=>eo("webPassword",e),s:t}),4===r&&(0,a.jsx)(D,{agents:H,agentsLoading:L,selectedAgents:V,setSelectedAgents:_,agentTransport:G,setAgentTransport:Y,agentScope:Z,setAgentScope:X,agentStatuses:Q,s:t,settingsMcp:e.settings.mcp,template:m.template}),5===r&&(0,a.jsx)(O,{state:m,selectedAgents:V,agentStatuses:Q,onRetryAgent:eu,error:N,needsRestart:A,s:t,skillInstallResult:et,setupPhase:ea}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-8 pt-6",style:{borderTop:"1px solid var(--border)"},children:[(0,a.jsxs)("button",{onClick:()=>p(r-1),disabled:0===r||f||y,className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg border border-border hover:bg-muted transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{color:"var(--foreground)"},children:[(0,a.jsx)(n.A,{size:14})," ",t.back]}),r<5?(0,a.jsxs)("button",{onClick:()=>p(r+1),disabled:!(0===r?m.mindRoot.trim().length>0:2!==r||!ed&&!T.checking&&!z.checking&&!0===T.available&&!0===z.available&&m.webPort>=1024&&m.webPort<=65535&&m.mcpPort>=1024&&m.mcpPort<=65535),className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.next," ",(0,a.jsx)(l.A,{size:14})]}):y?A?(0,a.jsx)(E,{s:t,newPort:m.webPort}):(0,a.jsxs)("a",{href:"/?welcome=1",className:"flex items-center gap-1 px-5 py-2 text-sm font-medium rounded-lg transition-colors",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.completeDone," →"]}):(0,a.jsxs)("button",{onClick:ec,disabled:f,className:"flex items-center gap-1 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[f&&(0,a.jsx)(i.A,{size:14,className:"animate-spin"}),f?t.completing:t.complete]})]})]})})}},62791:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},66088:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},67635:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},68822:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},86901:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]])},90425:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var a=r(12115);let s=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),o=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,a.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:o,className:l="",children:i,iconNode:d,...c},u)=>(0,a.createElement)("svg",{ref:u,...n,width:t,height:t,stroke:e,strokeWidth:o?24*Number(r)/Number(t):r,className:s("lucide",l),...!i&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...d.map(([e,t])=>(0,a.createElement)(e,t)),...Array.isArray(i)?i:[i]])),i=(e,t)=>{let r=(0,a.forwardRef)(({className:r,...n},i)=>(0,a.createElement)(l,{ref:i,iconNode:t,className:s(`lucide-${o(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...n}));return r.displayName=o(e),r}},90718:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]])},91958:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},92451:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},94514:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},97810:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(90425).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])}},e=>{e.O(0,[1263,8441,3794,7358],()=>e(e.s=15721)),_N_E=e.O()}]);
|
/package/_standalone/.next/static/{K1Y12u2jxCR7efUgJVpyl → VWZDVb8DL1Pbykh9EOj_Y}/_buildManifest.js
RENAMED
|
File without changes
|
/package/_standalone/.next/static/{K1Y12u2jxCR7efUgJVpyl → VWZDVb8DL1Pbykh9EOj_Y}/_ssgManifest.js
RENAMED
|
File without changes
|