mosage 0.2.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.
Files changed (121) hide show
  1. package/README.md +16 -15
  2. package/bin.js +2 -0
  3. package/dist/build-C7NW_3Pk.js +14 -0
  4. package/dist/check-CP4873Wx.js +41 -0
  5. package/dist/cli/bin.d.ts +1 -0
  6. package/dist/cli/bin.js +228 -0
  7. package/dist/config-DPm1BBAb.js +2619 -0
  8. package/dist/config-TlTe7Ona.d.ts +24 -0
  9. package/dist/context-BqsdSrAQ.js +1084 -0
  10. package/dist/dev-Biz42qlu.js +17 -0
  11. package/dist/diagram-xlVDekYk.js +763 -0
  12. package/dist/export-Bi6nuxjT.js +31 -0
  13. package/dist/import-D2jNB07F.js +25 -0
  14. package/dist/index.d.ts +455 -0
  15. package/dist/index.js +693 -0
  16. package/dist/{cli.js → init-Bbtj2pxF.js} +34 -68
  17. package/dist/preview-CLm51aRt.js +19 -0
  18. package/dist/sdk-DjpX6mCv.js +51 -0
  19. package/dist/vite/index.d.ts +25 -0
  20. package/dist/vite/index.js +2 -0
  21. package/env.d.ts +83 -0
  22. package/package.json +59 -12
  23. package/{template/.agents/skills → skills}/create-doc/SKILL.md +1 -1
  24. package/{template/.agents/skills → skills}/create-theme/SKILL.md +1 -1
  25. package/{template/.agents/skills → skills}/doc-authoring/SKILL.md +8 -9
  26. package/{template/.agents/skills → skills}/doc-authoring/references/assets.md +1 -1
  27. package/{template/.agents/skills → skills}/doc-authoring/references/design-system.md +1 -1
  28. package/{template/.agents/skills → skills}/doc-authoring/references/long-form.md +4 -4
  29. package/{template/.agents/skills → skills}/doc-authoring/references/pagination.md +1 -1
  30. package/src/app/app.tsx +42 -0
  31. package/src/app/components/data-table.tsx +196 -0
  32. package/src/app/components/design-panel/design-panel.tsx +318 -0
  33. package/src/app/components/design-panel/design-provider.tsx +121 -0
  34. package/src/app/components/design-panel/use-design.ts +85 -0
  35. package/src/app/components/diagram.tsx +76 -0
  36. package/src/app/components/doc-assets.tsx +129 -0
  37. package/src/app/components/doc-search.tsx +248 -0
  38. package/src/app/components/doc-sidebar.tsx +162 -0
  39. package/src/app/components/flow-page.tsx +93 -0
  40. package/src/app/components/footnote.tsx +204 -0
  41. package/src/app/components/image-placeholder.tsx +50 -0
  42. package/src/app/components/inspector/inspector.tsx +518 -0
  43. package/src/app/components/numbering.tsx +224 -0
  44. package/src/app/components/page-frame.tsx +70 -0
  45. package/src/app/components/sidebar/folder-item.tsx +212 -0
  46. package/src/app/components/sidebar/icon-picker.tsx +99 -0
  47. package/src/app/components/sidebar/sidebar.tsx +252 -0
  48. package/src/app/components/table-of-contents.tsx +93 -0
  49. package/src/app/components/theme-toggle.tsx +50 -0
  50. package/src/app/components/themes/markdown.tsx +249 -0
  51. package/src/app/components/themes/theme-preview.tsx +74 -0
  52. package/src/app/components/ui/menu.tsx +143 -0
  53. package/src/app/index.html +12 -0
  54. package/src/app/lib/agent-bridge.ts +140 -0
  55. package/src/app/lib/assets.ts +151 -0
  56. package/src/app/lib/design-presets.ts +109 -0
  57. package/src/app/lib/design.ts +88 -0
  58. package/src/app/lib/diagnostics.ts +282 -0
  59. package/src/app/lib/doc-preview.tsx +29 -0
  60. package/src/app/lib/docs.ts +26 -0
  61. package/src/app/lib/docx/extract.ts +1623 -0
  62. package/src/app/lib/docx/fonts.test.ts +136 -0
  63. package/src/app/lib/docx/fonts.ts +166 -0
  64. package/src/app/lib/docx/media.ts +102 -0
  65. package/src/app/lib/docx/model.ts +206 -0
  66. package/src/app/lib/docx/paragraph.test.ts +92 -0
  67. package/src/app/lib/docx/paragraph.ts +107 -0
  68. package/src/app/lib/docx/props.ts +187 -0
  69. package/src/app/lib/docx/styles.ts +306 -0
  70. package/src/app/lib/docx/units.ts +35 -0
  71. package/src/app/lib/docx/write.test.ts +507 -0
  72. package/src/app/lib/docx/write.ts +581 -0
  73. package/src/app/lib/docx/xml.ts +39 -0
  74. package/src/app/lib/export-docx.ts +289 -0
  75. package/src/app/lib/export-dom.ts +318 -0
  76. package/src/app/lib/export-html.ts +156 -0
  77. package/src/app/lib/export-image.ts +70 -0
  78. package/src/app/lib/export-pdf.ts +165 -0
  79. package/src/app/lib/flow-measure.test.ts +31 -0
  80. package/src/app/lib/flow-measure.ts +183 -0
  81. package/src/app/lib/flow.test.ts +110 -0
  82. package/src/app/lib/flow.ts +136 -0
  83. package/src/app/lib/folders.ts +192 -0
  84. package/src/app/lib/footnotes.test.tsx +102 -0
  85. package/src/app/lib/footnotes.ts +94 -0
  86. package/src/app/lib/inspector/fiber.ts +99 -0
  87. package/src/app/lib/labels.test.ts +18 -0
  88. package/src/app/lib/labels.ts +181 -0
  89. package/src/app/lib/outline.ts +118 -0
  90. package/src/app/lib/page-context.tsx +43 -0
  91. package/src/app/lib/page-range.test.ts +95 -0
  92. package/src/app/lib/page-range.ts +90 -0
  93. package/src/app/lib/print-ready.ts +69 -0
  94. package/src/app/lib/rasterize.ts +173 -0
  95. package/src/app/lib/scan.ts +26 -0
  96. package/src/app/lib/sdk.test.ts +32 -0
  97. package/src/app/lib/sdk.ts +115 -0
  98. package/src/app/lib/themes.ts +31 -0
  99. package/src/app/lib/use-doc-module.ts +53 -0
  100. package/src/app/lib/use-doc-pages.ts +147 -0
  101. package/src/app/lib/utils.ts +6 -0
  102. package/src/app/lib/view-mode.test.ts +91 -0
  103. package/src/app/lib/view-mode.ts +104 -0
  104. package/src/app/main.tsx +14 -0
  105. package/src/app/routes/assets.tsx +257 -0
  106. package/src/app/routes/doc.tsx +877 -0
  107. package/src/app/routes/home-shell.tsx +203 -0
  108. package/src/app/routes/home.tsx +269 -0
  109. package/src/app/routes/themes.tsx +121 -0
  110. package/src/app/styles.css +97 -0
  111. package/src/app/virtual.d.ts +30 -0
  112. package/template/AGENTS.md +1 -1
  113. package/template/README.md +24 -52
  114. package/template/docs/getting-started/index.tsx +2 -2
  115. package/template/mosage.config.ts +1 -1
  116. package/template/package.json +1 -1
  117. package/template/tsconfig.json +1 -1
  118. package/README.zh-TW.md +0 -28
  119. /package/{template/.agents/skills → skills}/apply-comments/SKILL.md +0 -0
  120. /package/{template/.agents/skills → skills}/current-doc/SKILL.md +0 -0
  121. /package/{template/.agents/skills → skills}/doc-authoring/references/tables-and-charts.md +0 -0
@@ -0,0 +1,30 @@
1
+ declare module 'virtual:mosage/docs' {
2
+ import type { DocModule } from './lib/sdk';
3
+
4
+ export const docIds: string[];
5
+ export const docCreatedAt: Record<string, number>;
6
+ export const docThemes: Record<string, string>;
7
+ export function loadDoc(id: string): Promise<DocModule>;
8
+ }
9
+
10
+ declare module 'virtual:mosage/themes' {
11
+ import type { ThemeDemoModule, ThemeMeta } from './lib/themes';
12
+
13
+ export const themes: ThemeMeta[];
14
+ export function loadThemeDemo(id: string): Promise<ThemeDemoModule>;
15
+ }
16
+
17
+ declare module 'virtual:mosage/folders' {
18
+ import type { FoldersManifest } from './lib/sdk';
19
+
20
+ const manifest: FoldersManifest;
21
+ export default manifest;
22
+ }
23
+
24
+ declare module 'virtual:mosage/config' {
25
+ import type { MoSageConfig } from '../config';
26
+
27
+ type ResolvedBuild = { showDocBrowser: boolean; allowHtmlExport: boolean };
28
+ const config: MoSageConfig & { build: ResolvedBuild; version: string };
29
+ export default config;
30
+ }
@@ -5,7 +5,7 @@ You author **documents** here — reports, proposals, whitepapers, memos. Each d
5
5
  ## Rules
6
6
 
7
7
  - Write only inside `docs/<id>/`. Don't touch `package.json`, `mosage.config.ts`, or other documents.
8
- - No new dependencies. Only `react`, `mosage-core`, and standard web APIs are available.
8
+ - No new dependencies. Only `react`, `mosage`, and standard web APIs are available.
9
9
  - A document is one `index.tsx` plus an optional `assets/` folder. No sibling components files.
10
10
 
11
11
  ## Skills
@@ -1,67 +1,39 @@
1
- # My documents
1
+ # 我的文件
2
2
 
3
- Built with [MoSage](https://github.com/nickchen1998/MoSage) — documents as React, one component per printed page.
3
+ 這個資料夾是一個 [MoSage](https://github.com/nickchen1998/MoSage) 專案:用 AI 寫文件,在瀏覽器裡預覽成真實的紙張,最後匯出 PDF、Word 或 HTML。
4
4
 
5
- ```bash
6
- pnpm install
7
- pnpm dev
8
- ```
9
-
10
- Open http://localhost:5273. Every folder under `docs/` with an `index.tsx` shows up.
11
-
12
- ## Letting an agent drive it
5
+ ## 開始
13
6
 
14
7
  ```bash
15
- pnpm add -D mosage-mcp
16
- mosage dev --mcp
8
+ npm install # 如果建立專案時跳過了安裝
9
+ npm run dev # 開啟 http://localhost:5273
17
10
  ```
18
11
 
19
- That mounts an MCP endpoint at `/mcp` on the same port, so any agent framework can list, read, and write documents while the page hot-reloads in front of you.
20
-
21
- ## Writing a document
22
-
23
- Ask your coding agent: *"draft a Q3 report on X"*. The bundled `create-doc` skill runs the workflow — scoping questions, page plan, then the file.
12
+ 在同一個資料夾開啟 Claude Code 或 Codex,描述你要的文件,例如「幫我寫一份 Q3 營運報告,給主管看,大約 6 頁」。
13
+ AI 會用內建的 `create-doc` skill 先確認主題與資料來源,再規劃頁面、撰寫。
24
14
 
25
- Or write it yourself:
15
+ ## 資料夾
26
16
 
27
17
  ```
28
18
  docs/
29
- my-report/
30
- index.tsx # export default [Cover, Summary, …]
31
- assets/ # optional images
19
+ <文件代號>/
20
+ index.tsx 每份文件一個檔案,預設匯出頁面陣列
21
+ assets/ 這份文件用到的圖片(選用)
22
+ themes/ 可重複使用的主題(選用)
23
+ mosage.config.ts 專案設定
32
24
  ```
33
25
 
34
- ## Starting from Markdown
26
+ ## 常用指令
35
27
 
36
- ```bash
37
- mosage import notes.md --id my-report --contents
38
- ```
39
-
40
- Turns a Markdown file into a real document — cover page, self-filling contents, tables, and any local images copied into the document's own `assets/`.
28
+ | 指令 | 說明 |
29
+ | --- | --- |
30
+ | `npm run dev` | 開啟檢視器,檔案一改就即時更新 |
31
+ | `npx mosage check` | 找出超出紙張的內容、空白頁、落在頁尾的標題等問題 |
32
+ | `npx mosage export <文件> --format docx` | 匯出 Word;也可以用 `pdf`、`html`、`png` |
33
+ | `npx mosage import notes.md` | 把 Markdown 轉成一份文件 |
34
+ | `npm run build` | 輸出靜態網站 |
41
35
 
42
- ## Checking the layout
43
-
44
- ```bash
45
- mosage check # every document; add an id to narrow it
46
- ```
47
-
48
- Renders each sheet at true page size and reports what a reader would call a mistake: content clipped by the page edge, a blank sheet, a heading stranded at the foot of a page, type too small to print. It exits non-zero on errors, so it works in CI. Your agent should run it after writing or editing a document — it cannot see the pages otherwise.
49
-
50
- ## Exporting
51
-
52
- The toolbar in the document view has **PDF** (prints at the true page size — pick "Save as PDF" in the print dialog), **HTML** (a self-contained file, or a zip when the document has assets), and **DOCX** (an editable Word file — the text reflows, headings and footnotes stay headings and footnotes).
53
-
54
- Without a browser:
55
-
56
- ```bash
57
- mosage export my-report --format pdf # or html, docx, or one png per page
58
- mosage export --all --out-dir out
59
- ```
60
-
61
- `check` and `export` render in headless Chromium, so they need Playwright once:
62
-
63
- ```bash
64
- pnpm add -D playwright && pnpm exec playwright install chromium
65
- ```
36
+ `check` 與 `export` 需要 Playwright:`npm i -D playwright && npx playwright install chromium`。
37
+ 在瀏覽器裡用右上角的 **Download** 匯出則不需要。
66
38
 
67
- `pnpm build` produces a static site you can deploy anywhere.
39
+ 升級 mosage 後,執行 `npx mosage sync:skills` 更新 `.agents/skills` 與 `.claude/skills`。
@@ -5,7 +5,7 @@ import {
5
5
  TableOfContents,
6
6
  useDocPageCount,
7
7
  useDocPageNumber,
8
- } from 'mosage-core';
8
+ } from 'mosage';
9
9
  import type { CSSProperties, ReactNode } from 'react';
10
10
 
11
11
  export const design: DesignSystem = {
@@ -195,7 +195,7 @@ const Authoring: DocPage = () => (
195
195
  and <code>useDocPageCount()</code>; never hardcode them.
196
196
  </p>
197
197
 
198
- <Code>{`import { useDocPageNumber, useDocPageCount } from 'mosage-core';
198
+ <Code>{`import { useDocPageNumber, useDocPageCount } from 'mosage';
199
199
 
200
200
  const Footer = () => {
201
201
  const n = useDocPageNumber();
@@ -1,4 +1,4 @@
1
- import type { MoSageConfig } from 'mosage-core';
1
+ import type { MoSageConfig } from 'mosage';
2
2
 
3
3
  const mosageConfig: MoSageConfig = {};
4
4
 
@@ -12,7 +12,7 @@
12
12
  "sync:skills": "mosage sync:skills"
13
13
  },
14
14
  "dependencies": {
15
- "mosage-core": "^0.1.0",
15
+ "mosage": "^0.1.0",
16
16
  "react": "^18.3.1",
17
17
  "react-dom": "^18.3.1"
18
18
  },
@@ -11,7 +11,7 @@
11
11
  "noEmit": true,
12
12
  "strict": true,
13
13
  "skipLibCheck": true,
14
- "types": ["mosage-core/env"]
14
+ "types": ["mosage/env"]
15
15
  },
16
16
  "include": ["docs/**/*", "mosage.config.ts"]
17
17
  }
package/README.zh-TW.md DELETED
@@ -1,28 +0,0 @@
1
- # mosage
2
-
3
- [English](README.md) · **繁體中文**
4
-
5
- 建立 [MoSage](https://github.com/nickchen1998/MoSage) 工作區——文件即 React,一個元件對應一張印出來的頁面。
6
-
7
- ```bash
8
- npx mosage init my-docs
9
- cd my-docs
10
- pnpm dev
11
- ```
12
-
13
- 產生的工作區已預先配置好 `create-doc` 與 `doc-authoring` 兩個 agent skill(放在 `.agents/skills`,並連結進 `.claude/skills`)、一份範例文件,以及 `mosage` 的 dev/build/preview 指令。
14
-
15
- 它也會寫入一份 `pnpm-workspace.yaml`,允許 esbuild 執行 postinstall。pnpm 預設封鎖 build script,而少了這一個 Vite 就無法啟動;這個檔案在 npm、yarn 與 bun 之下是惰性的,不會有影響。
16
-
17
- ## 參數
18
-
19
- ```
20
- mosage init [dir]
21
- -f, --force 覆寫非空的目標目錄
22
- -n, --name <name> 套件名稱(預設取資料夾名稱)
23
- --use-pnpm (或 --use-npm / --use-yarn / --use-bun)
24
- --no-install 略過安裝相依套件
25
- --no-git 略過 git init 與初始 commit
26
- ```
27
-
28
- MIT