mosage 0.1.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +16 -217
- package/bin.js +2 -0
- package/dist/build-C7NW_3Pk.js +14 -0
- package/dist/check-CP4873Wx.js +41 -0
- package/dist/cli/bin.d.ts +1 -0
- package/dist/cli/bin.js +228 -0
- package/dist/config-DPm1BBAb.js +2619 -0
- package/dist/config-TlTe7Ona.d.ts +24 -0
- package/dist/context-BqsdSrAQ.js +1084 -0
- package/dist/dev-Biz42qlu.js +17 -0
- package/dist/diagram-xlVDekYk.js +763 -0
- package/dist/export-Bi6nuxjT.js +31 -0
- package/dist/import-D2jNB07F.js +25 -0
- package/dist/index.d.ts +455 -0
- package/dist/index.js +693 -0
- package/dist/init-Bbtj2pxF.js +262 -0
- package/dist/preview-CLm51aRt.js +19 -0
- package/dist/sdk-DjpX6mCv.js +51 -0
- package/dist/vite/index.d.ts +25 -0
- package/dist/vite/index.js +2 -0
- package/env.d.ts +83 -0
- package/package.json +84 -64
- package/skills/apply-comments/SKILL.md +43 -56
- package/skills/create-doc/SKILL.md +106 -0
- package/skills/create-theme/SKILL.md +184 -0
- package/skills/current-doc/SKILL.md +120 -0
- package/skills/doc-authoring/SKILL.md +434 -0
- package/skills/doc-authoring/references/assets.md +47 -0
- package/skills/doc-authoring/references/design-system.md +81 -0
- package/skills/doc-authoring/references/long-form.md +131 -0
- package/skills/doc-authoring/references/pagination.md +118 -0
- package/skills/doc-authoring/references/tables-and-charts.md +161 -0
- package/src/app/app.tsx +42 -0
- package/src/app/components/data-table.tsx +196 -0
- package/src/app/components/design-panel/design-panel.tsx +318 -0
- package/src/app/components/design-panel/design-provider.tsx +121 -0
- package/src/app/components/design-panel/use-design.ts +85 -0
- package/src/app/components/diagram.tsx +76 -0
- package/src/app/components/doc-assets.tsx +129 -0
- package/src/app/components/doc-search.tsx +248 -0
- package/src/app/components/doc-sidebar.tsx +162 -0
- package/src/app/components/flow-page.tsx +93 -0
- package/src/app/components/footnote.tsx +204 -0
- package/src/app/components/image-placeholder.tsx +50 -0
- package/src/app/components/inspector/inspector.tsx +518 -0
- package/src/app/components/numbering.tsx +224 -0
- package/src/app/components/page-frame.tsx +70 -0
- package/src/app/components/sidebar/folder-item.tsx +212 -0
- package/src/app/components/sidebar/icon-picker.tsx +99 -0
- package/src/app/components/sidebar/sidebar.tsx +252 -0
- package/src/app/components/table-of-contents.tsx +93 -0
- package/src/app/components/theme-toggle.tsx +50 -0
- package/src/app/components/themes/markdown.tsx +249 -0
- package/src/app/components/themes/theme-preview.tsx +74 -0
- package/src/app/components/ui/menu.tsx +143 -0
- package/src/app/index.html +12 -0
- package/src/app/lib/agent-bridge.ts +140 -0
- package/src/app/lib/assets.ts +151 -0
- package/src/app/lib/design-presets.ts +109 -0
- package/src/app/lib/design.ts +88 -0
- package/src/app/lib/diagnostics.ts +282 -0
- package/src/app/lib/doc-preview.tsx +29 -0
- package/src/app/lib/docs.ts +26 -0
- package/src/app/lib/docx/extract.ts +1623 -0
- package/src/app/lib/docx/fonts.test.ts +136 -0
- package/src/app/lib/docx/fonts.ts +166 -0
- package/src/app/lib/docx/media.ts +102 -0
- package/src/app/lib/docx/model.ts +206 -0
- package/src/app/lib/docx/paragraph.test.ts +92 -0
- package/src/app/lib/docx/paragraph.ts +107 -0
- package/src/app/lib/docx/props.ts +187 -0
- package/src/app/lib/docx/styles.ts +306 -0
- package/src/app/lib/docx/units.ts +35 -0
- package/src/app/lib/docx/write.test.ts +507 -0
- package/src/app/lib/docx/write.ts +581 -0
- package/src/app/lib/docx/xml.ts +39 -0
- package/src/app/lib/export-docx.ts +289 -0
- package/src/app/lib/export-dom.ts +318 -0
- package/src/app/lib/export-html.ts +156 -0
- package/src/app/lib/export-image.ts +70 -0
- package/src/app/lib/export-pdf.ts +165 -0
- package/src/app/lib/flow-measure.test.ts +31 -0
- package/src/app/lib/flow-measure.ts +183 -0
- package/src/app/lib/flow.test.ts +110 -0
- package/src/app/lib/flow.ts +136 -0
- package/src/app/lib/folders.ts +192 -0
- package/src/app/lib/footnotes.test.tsx +102 -0
- package/src/app/lib/footnotes.ts +94 -0
- package/src/app/lib/inspector/fiber.ts +99 -0
- package/src/app/lib/labels.test.ts +18 -0
- package/src/app/lib/labels.ts +181 -0
- package/src/app/lib/outline.ts +118 -0
- package/src/app/lib/page-context.tsx +43 -0
- package/src/app/lib/page-range.test.ts +95 -0
- package/src/app/lib/page-range.ts +90 -0
- package/src/app/lib/print-ready.ts +69 -0
- package/src/app/lib/rasterize.ts +173 -0
- package/src/app/lib/scan.ts +26 -0
- package/src/app/lib/sdk.test.ts +32 -0
- package/src/app/lib/sdk.ts +115 -0
- package/src/app/lib/themes.ts +31 -0
- package/src/app/lib/use-doc-module.ts +53 -0
- package/src/app/lib/use-doc-pages.ts +147 -0
- package/src/app/lib/utils.ts +6 -0
- package/src/app/lib/view-mode.test.ts +91 -0
- package/src/app/lib/view-mode.ts +104 -0
- package/src/app/main.tsx +14 -0
- package/src/app/routes/assets.tsx +257 -0
- package/src/app/routes/doc.tsx +877 -0
- package/src/app/routes/home-shell.tsx +203 -0
- package/src/app/routes/home.tsx +269 -0
- package/src/app/routes/themes.tsx +121 -0
- package/src/app/styles.css +97 -0
- package/src/app/virtual.d.ts +30 -0
- package/template/AGENTS.md +27 -0
- package/template/README.md +39 -0
- package/template/docs/getting-started/index.tsx +230 -0
- package/template/mosage.config.ts +5 -0
- package/template/package.json +24 -0
- package/template/tsconfig.json +17 -0
- package/README.en.md +0 -57
- package/dist/cli.js +0 -4545
- package/dist/web/assets/index-Czg2WeHe.js +0 -182
- package/dist/web/assets/index-DKAyt92W.css +0 -1
- package/dist/web/index.html +0 -15
- package/skills/current-position/SKILL.md +0 -65
- package/skills/kickoff/SKILL.md +0 -105
- package/skills/mosage-reference/SKILL.md +0 -164
- package/skills/outline/SKILL.md +0 -79
- package/skills/review/SKILL.md +0 -64
- package/skills/write-chapter/SKILL.md +0 -58
- package/template/book/STYLE.md +0 -6
- package/template/book/assets/.gitkeep +0 -0
- package/template/book/book.yaml +0 -42
- package/template/book/brief.md +0 -6
- package/template/book/chapters/.gitkeep +0 -0
- package/template/book/notes/README.md +0 -7
- package/template/project/AGENTS.md +0 -82
- package/template/project/CLAUDE.md +0 -1
- package/template/project/README.md +0 -48
- package/template/project/books/.gitkeep +0 -0
- package/template/project/gitignore +0 -5
- package/template/project/mosage.yaml +0 -23
- package/template/project/notes/README.md +0 -8
- package/template/project/package.json +0 -14
package/template/book/book.yaml
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# ─────────────────────────────────────────────────────────────
|
|
2
|
-
# 這本書的設定
|
|
3
|
-
# 通常由 AI 在「立項訪談」時幫你填好;你也可以直接修改。
|
|
4
|
-
# 沒寫的欄位會沿用專案根目錄 mosage.yaml 的設定。
|
|
5
|
-
# ─────────────────────────────────────────────────────────────
|
|
6
|
-
|
|
7
|
-
# 類型:book(書)、thesis(論文)、other(其他長篇寫作)
|
|
8
|
-
type: book
|
|
9
|
-
|
|
10
|
-
# 目前階段:kickoff(立項)→ outline(大綱)→ writing(撰寫)→ revising(修訂)→ done(完稿)
|
|
11
|
-
stage: kickoff
|
|
12
|
-
|
|
13
|
-
title: ""
|
|
14
|
-
subtitle: ""
|
|
15
|
-
# author: "" # 不填則使用 mosage.yaml 的 author
|
|
16
|
-
|
|
17
|
-
# 目標字數(中文字 + 英文單字),用來顯示進度;0 表示不設定
|
|
18
|
-
targetWords: 0
|
|
19
|
-
|
|
20
|
-
# 章節順序:列出 chapters/ 資料夾裡的檔名。
|
|
21
|
-
# 沒有列在這裡的檔案會顯示為「未排入目錄的草稿」,不會匯出。
|
|
22
|
-
chapters: []
|
|
23
|
-
|
|
24
|
-
# ai:
|
|
25
|
-
# editMode: suggest # 覆寫專案設定:suggest(修改建議)或 direct(直接修改)
|
|
26
|
-
|
|
27
|
-
# Word 匯出設定(沒寫的欄位依類型套用預設值:
|
|
28
|
-
# 書 — 新細明體 12pt、1.5 倍行距;論文 — 標楷體 12pt、左邊界 3 公分)
|
|
29
|
-
export:
|
|
30
|
-
pageSize: A4 # A4 | A5 | B5 | Letter,或 { width: 170, height: 230 }(公釐)
|
|
31
|
-
# fontSize: 12 # 內文字級(pt)
|
|
32
|
-
# lineSpacing: 1.5 # 行距(倍數)
|
|
33
|
-
# firstLineIndent: 2 # 段落首行縮排(字元數)
|
|
34
|
-
# fonts:
|
|
35
|
-
# body: 新細明體 # 中文內文字型
|
|
36
|
-
# latin: Times New Roman
|
|
37
|
-
# heading: 微軟正黑體
|
|
38
|
-
# code: Consolas
|
|
39
|
-
# margins: { top: 25, bottom: 25, left: 25, right: 25 } # 公釐
|
|
40
|
-
# titlePage: true # 書名頁
|
|
41
|
-
# toc: true # 目錄(在 Word 開啟時自動更新頁碼)
|
|
42
|
-
# header: title # 頁首:none | title(書名)| chapter(章名)
|
package/template/book/brief.md
DELETED
|
File without changes
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# MoSage 寫作專案 — AI 協作守則
|
|
2
|
-
|
|
3
|
-
這個資料夾是一個 **MoSage 寫作專案**,裡面可以有很多本書或論文,每一本放在 `books/<代號>/`。
|
|
4
|
-
你(AI)是作者的共同寫作夥伴:協助立項、訂書名與大綱、起草、審稿與修訂 —— 但**作者擁有最後決定權**。
|
|
5
|
-
|
|
6
|
-
作者會在瀏覽器裡的 MoSage 介面(`npm run dev` → http://localhost:5280)閱讀成果、編排大綱、
|
|
7
|
-
選取文字留言給你,以及接受或拒絕你的修改建議。你改檔案時,介面會即時更新。
|
|
8
|
-
|
|
9
|
-
## 每次對話開始:先搞清楚現況
|
|
10
|
-
|
|
11
|
-
1. 執行 `npx mosage status` 看有哪些書、各在哪個階段(加 `--json` 取得完整資料)。
|
|
12
|
-
2. 判斷作者現在要處理哪一本書:
|
|
13
|
-
- 作者有指名 → 就是那本。
|
|
14
|
-
- 作者說「這本」「這章」「這段」→ 讀 `.mosage/current.json`(見 `current-position` skill)。
|
|
15
|
-
- 只有一本書 → 就是那本。
|
|
16
|
-
- 還是不確定 → 列出書名問作者。
|
|
17
|
-
3. 依那本書 `book.yaml` 的 `stage` 決定要做什麼:
|
|
18
|
-
|
|
19
|
-
| 狀況 | 你該做的事 |
|
|
20
|
-
| --- | --- |
|
|
21
|
-
| `books/` 是空的(全新專案) | **主動**使用 `kickoff` skill 開始立項訪談 —— 即使作者只說了「嗨」或「開始」。 |
|
|
22
|
-
| 作者想寫新的書/論文 | `kickoff`(它會用 `npx mosage new` 建立新書) |
|
|
23
|
-
| `stage: kickoff`,或 `brief.md` 還是「尚未進行立項訪談」 | `kickoff` |
|
|
24
|
-
| `stage: outline` | `outline`:書名、架構、章節骨架,請作者在介面「大綱」頁編排 |
|
|
25
|
-
| `stage: writing` | 依作者指示 `write-chapter`;作者留了言就 `apply-comments` |
|
|
26
|
-
| `stage: revising` | `review`、`apply-comments` |
|
|
27
|
-
| `stage: done` | 協助最後檢查與匯出(`npx mosage export <書> docx`) |
|
|
28
|
-
|
|
29
|
-
作者隨時可以回頭調整(例如寫到一半想改大綱)——照做,並更新 `stage`。
|
|
30
|
-
|
|
31
|
-
## 專案結構
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
mosage.yaml 專案預設值(作者、AI 修改模式、共用匯出格式)
|
|
35
|
-
notes/ 所有書共用的素材(author.md 作者簡介…)
|
|
36
|
-
books/<代號>/
|
|
37
|
-
book.yaml 這本書的設定:類型、階段、書名、章節順序、Word 匯出格式
|
|
38
|
-
brief.md 寫作企劃:目的、讀者、核心主張、篇幅(立項時建立)
|
|
39
|
-
STYLE.md 風格指南:語氣、人稱、用語、標點、引用格式
|
|
40
|
-
chapters/NN-名稱.md 每章一個 Markdown 檔
|
|
41
|
-
assets/ 圖片
|
|
42
|
-
notes/ 這本書的素材(不會匯出)
|
|
43
|
-
output/<代號>/ 匯出的 Word / HTML 檔
|
|
44
|
-
.mosage/ 介面狀態與自動版本紀錄(不要手動修改)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## 必須遵守
|
|
48
|
-
|
|
49
|
-
1. **動筆前先讀** 這本書的 `brief.md` 和 `STYLE.md`,以及 `notes/author.md`(如果有)。
|
|
50
|
-
2. **只在寫作檔案裡工作**:`books/`、`notes/`、`mosage.yaml`。不要改 `package.json`、`.agents/`、`.claude/`、`.mosage/`。
|
|
51
|
-
3. 章節檔格式與標記語法以 `mosage-reference` skill 為準。每章只有一個 `# 章名`。
|
|
52
|
-
4. **修改作者已經寫好的文字**時,依設定的 `ai.editMode`(book.yaml 覆寫 mosage.yaml,預設 `suggest`):
|
|
53
|
-
- `suggest` → 不直接改原文,用 `<!-- mosage:suggest … -->` 標記提出修改,作者在介面上按「接受」才生效。
|
|
54
|
-
- `direct` → 直接修改(系統會自動保留版本紀錄)。
|
|
55
|
-
- 空白章節、只有大綱要點的地方,以及作者明確叫你寫的新段落,可以直接寫。
|
|
56
|
-
5. **不捏造**事實、數據、引文、案例與參考文獻。需要資料時,在該段落上方留下
|
|
57
|
-
`<!-- mosage:comment by=ai … -->` 請作者補充。
|
|
58
|
-
6. 不要刪除你沒處理的標記(`mosage:comment`、`mosage:suggest`)。
|
|
59
|
-
7. 預設使用台灣繁體中文與全形標點(,。「」『』、;:?!——……),除非 STYLE.md 另有規定。
|
|
60
|
-
8. 不要重排或重新換行你沒修改的段落 —— 保持版本差異乾淨,作者才看得出你改了什麼。
|
|
61
|
-
9. 每完成一個段落或小節就存檔,作者會在介面上即時看到進度。
|
|
62
|
-
|
|
63
|
-
## Skills
|
|
64
|
-
|
|
65
|
-
| Skill | 用途 |
|
|
66
|
-
| --- | --- |
|
|
67
|
-
| `kickoff` | 立項訪談:寫作目的、類型、讀者、風格、篇幅 → 建立新書、`brief.md`、`STYLE.md` |
|
|
68
|
-
| `outline` | 書名候選、章節架構方案 → 建立章節骨架,請作者在介面編排 |
|
|
69
|
-
| `write-chapter` | 撰寫、續寫、擴寫章節 |
|
|
70
|
-
| `apply-comments` | 處理作者在介面上留給你的留言 |
|
|
71
|
-
| `review` | 以編輯角度審稿,留下 AI 留言與修改建議(不直接改稿) |
|
|
72
|
-
| `current-position` | 解讀「這一章」「這一段」—— 作者目前在介面上看的位置 |
|
|
73
|
-
| `mosage-reference` | 技術參考:檔案格式、標記語法、Markdown 支援範圍、指令 |
|
|
74
|
-
|
|
75
|
-
## 指令
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
npx mosage status [書] [--json] # 書架/某本書的狀態、字數、待處理標記
|
|
79
|
-
npx mosage new <代號> --title <書名> --type book|thesis # 建立新書
|
|
80
|
-
npx mosage export <書> [docx|html|md] # 匯出到 output/<書>/
|
|
81
|
-
npx mosage import <檔案.docx|.md> [--book <代號>] # 匯入既有稿件
|
|
82
|
-
```
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@AGENTS.md
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# 我的寫作專案
|
|
2
|
-
|
|
3
|
-
這是一個 [MoSage](https://github.com/nickchen1998/MoSage) 寫作專案:和 AI 一起寫書、寫論文,
|
|
4
|
-
在瀏覽器裡閱讀、留言、編排,最後一鍵輸出成 Word。一個專案可以放很多本書。
|
|
5
|
-
|
|
6
|
-
## 開始
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
npm run dev # 開啟寫作介面 → http://localhost:5280
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
另開一個終端機,在這個資料夾啟動你的 AI 工具:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
claude # Claude Code
|
|
16
|
-
codex # 或 OpenAI Codex
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
對 AI 說「**開始**」(Claude Code 也可以輸入 `/kickoff`)。AI 會:
|
|
20
|
-
|
|
21
|
-
1. **立項訪談** —— 問你寫作目的、類型(書/論文)、讀者、風格、篇幅與既有素材
|
|
22
|
-
2. **書名與大綱** —— 提出書名候選與幾種章節架構,建立章節骨架
|
|
23
|
-
3. 你在介面的「**大綱**」頁拖曳調整章節、修改章名與摘要
|
|
24
|
-
4. **撰寫** —— 「寫第一章」,AI 寫,你在介面上即時看到
|
|
25
|
-
5. **修訂** —— 在介面上選取文字留言給 AI,再對 AI 說「處理留言」;
|
|
26
|
-
AI 的修改會以「修改建議」出現,你按「接受」或「拒絕」
|
|
27
|
-
6. **匯出** —— 介面右上角「匯出 Word」,或 `npx mosage export <書> docx`
|
|
28
|
-
|
|
29
|
-
想再寫一本?對 AI 說「我想寫一本新書」就好。
|
|
30
|
-
|
|
31
|
-
## 常用指令
|
|
32
|
-
|
|
33
|
-
| 指令 | 說明 |
|
|
34
|
-
| --- | --- |
|
|
35
|
-
| `npm run dev` | 開啟寫作介面 |
|
|
36
|
-
| `npx mosage status` | 所有書的進度;`npx mosage status <書>` 看單本細節 |
|
|
37
|
-
| `npx mosage new <代號>` | 建立一本新書(通常由 AI 幫你執行) |
|
|
38
|
-
| `npx mosage export <書> docx` | 匯出 Word 到 `output/<書>/` |
|
|
39
|
-
| `npx mosage import 舊稿.docx` | 把既有的 Word 稿匯入成一本新書(依標題切章節) |
|
|
40
|
-
|
|
41
|
-
## 資料夾
|
|
42
|
-
|
|
43
|
-
- `books/<代號>/` —— 每本書:`book.yaml` 設定、`brief.md` 寫作企劃、`STYLE.md` 風格指南、`chapters/` 章節
|
|
44
|
-
- `notes/` —— 所有書共用的素材
|
|
45
|
-
- `output/` —— 匯出的檔案
|
|
46
|
-
- `.mosage/` —— 自動版本紀錄(每次 AI 或你修改前都會保存舊版,可在介面「版本紀錄」還原)
|
|
47
|
-
|
|
48
|
-
所有內容都是純文字 Markdown,建議搭配 git 做版本管理。
|
|
File without changes
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# ─────────────────────────────────────────────────────────────
|
|
2
|
-
# MoSage 專案設定
|
|
3
|
-
# 一個專案可以放很多本書(books/ 底下每個資料夾就是一本書或一篇論文)。
|
|
4
|
-
# 這裡的設定是所有書的預設值;每本書可以在自己的 book.yaml 覆寫。
|
|
5
|
-
# ─────────────────────────────────────────────────────────────
|
|
6
|
-
|
|
7
|
-
author: ""
|
|
8
|
-
language: zh-TW
|
|
9
|
-
|
|
10
|
-
# 書架的排列順序(books/ 底下的資料夾名稱);沒列到的排在後面
|
|
11
|
-
books: []
|
|
12
|
-
|
|
13
|
-
ai:
|
|
14
|
-
# AI 修改「已經寫好的文字」時的方式:
|
|
15
|
-
# suggest — 以修改建議呈現,你在介面上按「接受」才會生效(建議使用)
|
|
16
|
-
# direct — 直接修改檔案(仍會自動保留版本紀錄)
|
|
17
|
-
editMode: suggest
|
|
18
|
-
|
|
19
|
-
# 所有書共用的 Word 匯出設定(例如統一字型),每本書的 book.yaml 可以再覆寫
|
|
20
|
-
export: {}
|
|
21
|
-
# fonts:
|
|
22
|
-
# body: 新細明體
|
|
23
|
-
# latin: Times New Roman
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "my-writing",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "0.0.0",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "mosage dev",
|
|
8
|
-
"status": "mosage status",
|
|
9
|
-
"new": "mosage new",
|
|
10
|
-
"export": "mosage export",
|
|
11
|
-
"import": "mosage import"
|
|
12
|
-
},
|
|
13
|
-
"devDependencies": {}
|
|
14
|
-
}
|