papilot 0.8.0 → 0.8.1
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/README.md +52 -121
- package/README.zh-CN.md +51 -120
- package/bin/doctor.mjs +7 -5
- package/dist/assets/{_virtual_papilot-licenses-D7ro6ecN.js → _virtual_papilot-licenses-CMfCtEYQ.js} +1 -1
- package/dist/assets/index-BlLyIqT9.js +265 -0
- package/dist/assets/index-DVZtyZvu.css +1 -0
- package/dist/assets/{math-V9uUaUzA.js → math-Bu3xEyrC.js} +1 -1
- package/dist/assets/{pdf-view-Bnb2uIBE.js → pdf-view-PbkCuTZ-.js} +1 -1
- package/dist/index.html +2 -2
- package/examples/papilot-paper/preview/main.pdf +0 -0
- package/examples/papilot-paper/preview/main.synctex.gz +0 -0
- package/package.json +9 -3
- package/src/server/acp.ts +35 -2
- package/src/server/agents.ts +1 -1
- package/src/server/app.ts +3 -3
- package/src/server/desktop-demo.ts +38 -0
- package/src/server/manuscript.ts +18 -0
- package/src/server/reconcile.ts +20 -0
- package/src/server/review.ts +3 -2
- package/src/server/start.ts +19 -4
- package/src/server/updates.ts +7 -1
- package/src/server/workspace.ts +54 -13
- package/src/shared.ts +17 -9
- package/vendor/latex-review/dist/web/assets/{index-7VKAte5x.js → index-CXdnUjct.js} +2 -2
- package/vendor/latex-review/dist/web/index.html +1 -1
- package/vendor/latex-review/src/core/current-commit.ts +104 -0
- package/vendor/latex-review/src/core/delivery.ts +62 -16
- package/vendor/latex-review/src/core/git.ts +2 -1
- package/vendor/latex-review/src/core/publish.ts +7 -1
- package/vendor/latex-review/src/core/reconcile.ts +101 -0
- package/vendor/latex-review/src/core/review.ts +5 -2
- package/vendor/latex-review/src/core/store.ts +1 -0
- package/vendor/latex-review/src/core/tasks.ts +1 -1
- package/vendor/latex-review/src/server.ts +12 -1
- package/vendor/latex-review/src/types.ts +5 -2
- package/vendor/latex-review/src/web/review.tsx +7 -5
- package/vendor/latex-review/src/web/zh-CN.ts +4 -2
- package/dist/assets/index-Cc-awdNn.css +0 -1
- package/dist/assets/index-D_VX51no.js +0 -265
package/README.md
CHANGED
|
@@ -1,169 +1,100 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<h1>
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
<img src="docs/assets/logo.svg" width="48" height="48" align="absmiddle" alt="Papilot logo">
|
|
7
|
-
</picture>
|
|
8
|
-
Papilot
|
|
4
|
+
<img src="docs/assets/wordmark.svg#gh-light-mode-only" width="280" height="88" alt="Papilot">
|
|
5
|
+
<img src="docs/assets/wordmark-dark.svg#gh-dark-mode-only" width="280" height="88" alt="Papilot">
|
|
9
6
|
</h1>
|
|
10
7
|
|
|
11
|
-
<p><b>
|
|
8
|
+
<p><b>Revise LaTeX papers with AI, and review the changes on the PDF.</b></p>
|
|
12
9
|
|
|
13
|
-
<p>English · <a href="README.zh-CN.md">简体中文</a></p>
|
|
10
|
+
<p><a href="https://papilot.ai">Website</a> · <a href="docs/guide.md">Documentation</a> · English · <a href="README.zh-CN.md">简体中文</a></p>
|
|
14
11
|
|
|
15
|
-
[](https://github.com/PapilotAI/papilot/actions/workflows/ci.yml)
|
|
16
13
|
[](https://www.npmjs.com/package/papilot)
|
|
17
14
|
[](LICENSE)
|
|
18
|
-
[](https://nodejs.org)
|
|
19
|
-
[](https://www.typescriptlang.org)
|
|
20
|
-
[](https://react.dev)
|
|
21
|
-
[](https://www.latex-project.org)
|
|
22
|
-
[](https://github.com/cu1ch3n/papilot/pulls)
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<img src="docs/assets/demo.gif" alt="Papilot: mark up a passage of the PDF, hand it to an agent, accept the typeset change and commit it" width="100%">
|
|
16
|
+
<p><img src="docs/assets/demo.gif" alt="Papilot: mark up a passage on the PDF, hand it to an agent, and review the typeset change" width="100%"></p>
|
|
27
17
|
|
|
28
18
|
</div>
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
> [!TIP]
|
|
33
|
-
> **New in 0.7:** a redesigned workspace, color-grouped notes, files and images in tasks, a skill library, and a choice of where accepted changes go. See the [changelog](CHANGELOG.md).
|
|
20
|
+
Papilot is a local workspace for writing and revising LaTeX papers with AI agents. Mark up passages and equations on the PDF, let an agent edit a separate copy of the source, then review the typeset changes and choose which ones to keep.
|
|
34
21
|
|
|
35
|
-
##
|
|
22
|
+
## Features
|
|
36
23
|
|
|
37
24
|
<table>
|
|
38
25
|
<tr>
|
|
39
26
|
<td width="50%" valign="top">
|
|
40
|
-
<img src="docs/assets/readme-note.jpg" alt="
|
|
41
|
-
<h3
|
|
42
|
-
Select a sentence or box an equation and say what should change.
|
|
43
|
-
</td>
|
|
44
|
-
<td width="50%" valign="top">
|
|
45
|
-
<img src="docs/assets/readme-review.jpg" alt="A change shown before and after on the typeset page, with Accept, Reject and Comment">
|
|
46
|
-
<h3>✅ Approve change by change</h3>
|
|
47
|
-
Each edit comes back as a typeset diff, together with the places it moves elsewhere, such as renumbered equations and the table of contents. Accept, reject or comment, and undo any decision.
|
|
48
|
-
</td>
|
|
49
|
-
</tr>
|
|
50
|
-
<tr>
|
|
51
|
-
<td width="50%" valign="top">
|
|
52
|
-
<img src="docs/assets/readme-deliver.jpg" alt="The finished review with an agent-written commit message, Apply to working directory and Commit">
|
|
53
|
-
<h3>📦 Choose where it goes</h3>
|
|
54
|
-
Accepted changes stay inside the task until you finish reviewing. Then apply them to your working directory, or commit them to a separate <code>papilot/…</code> branch with a message the agent writes.
|
|
27
|
+
<a href="docs/assets/readme-note.jpg"><img src="docs/assets/readme-note.jpg" alt="Color-grouped passage notes and a boxed equation note on the PDF"></a>
|
|
28
|
+
<h3>Annotate the PDF</h3>
|
|
29
|
+
Select a sentence or box an equation and say what should change. Group related notes by color to give several passages one instruction.
|
|
55
30
|
</td>
|
|
56
31
|
<td width="50%" valign="top">
|
|
57
|
-
<img src="docs/assets/readme-
|
|
58
|
-
<h3
|
|
59
|
-
|
|
32
|
+
<a href="docs/assets/readme-review.jpg"><img src="docs/assets/readme-review.jpg" alt="Before-and-after typeset diff on the page with Accept, Reject, and Comment buttons"></a>
|
|
33
|
+
<h3>Review each change</h3>
|
|
34
|
+
Compare the typeset pages before and after, including changes elsewhere such as renumbered equations. Accept, reject, or comment on each edit, and undo decisions as you review.
|
|
60
35
|
</td>
|
|
61
36
|
</tr>
|
|
62
37
|
<tr>
|
|
63
38
|
<td width="50%" valign="top">
|
|
64
|
-
<img src="docs/assets/readme-
|
|
65
|
-
<h3
|
|
66
|
-
|
|
39
|
+
<a href="docs/assets/readme-deliver.jpg"><img src="docs/assets/readme-deliver.jpg" alt="Apply accepted edits to the manuscript"></a>
|
|
40
|
+
<h3>Choose where edits go</h3>
|
|
41
|
+
Each new task works on its own copy of the paper. Review the edits, then choose **Commit to manuscript** to save this task as one commit on your current branch, or **Apply to workspace** to leave the edits uncommitted. If the same passage changed meanwhile, AI resolves the conflict automatically and asks you only when the intended content is unclear. Review the merged PDF before saving. Push from the Git panel when you are ready.
|
|
67
42
|
</td>
|
|
68
43
|
<td width="50%" valign="top">
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
<li>📎 <b>Files and images</b> attached to any task or message</li>
|
|
73
|
-
<li>🤖 <b>Codex, Claude, Cursor, Kimi Code, GLM, DeepSeek, Qwen Code, OpenCode or Antigravity</b>: whichever is on your computer, with your own login</li>
|
|
74
|
-
<li>🌳 <b>A Git worktree for every task</b>, up to two running at once</li>
|
|
75
|
-
<li>🌗 <b>Light and dark</b>, in English or Chinese</li>
|
|
76
|
-
<li>📱 <b>Runs on your computer</b>, and you can open it from your phone</li>
|
|
77
|
-
</ul>
|
|
44
|
+
<a href="docs/assets/readme-git.jpg"><img src="docs/assets/readme-git.jpg" alt="Git panel with staged files, generated commit message, and commit graph"></a>
|
|
45
|
+
<h3>Work with Git</h3>
|
|
46
|
+
Stage and commit files, pull, and push from the workspace. An agent can draft commit messages and help resolve merge conflicts; the commit graph shows each task’s worktree.
|
|
78
47
|
</td>
|
|
79
48
|
</tr>
|
|
80
49
|
</table>
|
|
81
50
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
> [!NOTE]
|
|
85
|
-
> You need **Node.js 22.22+**, **Git** and a full **TeX** distribution ([MacTeX](https://www.tug.org/mactex/) or [TeX Live](https://www.tug.org/texlive/)). Revising also needs one [signed-in agent](#-agents).
|
|
86
|
-
|
|
87
|
-
```sh
|
|
88
|
-
npm install -g papilot
|
|
89
|
-
papilot demo
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Open **http://127.0.0.1:7274** and choose **Manuscript** in the sidebar. The demo adds an example paper to revise: a 26-page LaTeX paper about Papilot itself, full of equations. When you are ready, run `papilot` and choose **Add paper…** from the paper menu to select a LaTeX folder or drop a ZIP. Papilot identifies the main file, prepares Git history and tries compilation, with help for any errors during import.
|
|
51
|
+
- **[Skills](docs/guide.md#skills) and [attachments](docs/guide.md#task-attachments):** Run `/` skills to polish prose, proofread, or check math, define custom skills in Settings, and attach reference files or images to tasks and messages.
|
|
52
|
+
- **Reading and workspace:** Navigate manuscripts with the PDF table of contents and full-text search, with light and dark themes and an English or Chinese interface.
|
|
93
53
|
|
|
94
|
-
##
|
|
54
|
+
## Quick start
|
|
95
55
|
|
|
96
|
-
|
|
97
|
-
| --- | --- | --- |
|
|
98
|
-
| **Codex** | `papilot codex login` | Through the Codex app server, in its workspace sandbox. Papilot uses your `codex` if you have one, or installs it on first start. |
|
|
99
|
-
| **Claude** | Install [Claude Code](https://code.claude.com) and run `claude auth login`, or start `papilot` with `ANTHROPIC_API_KEY` set | With Claude Code installed, runs `claude -p` on your own login (your Claude plan or a key), in Claude Code's sandbox. Without it, through the Claude Agent SDK, which needs an API key. |
|
|
100
|
-
| **Cursor** | Start `papilot` with `CURSOR_API_KEY` set | Through the Cursor SDK, downloaded the first time, in Cursor's sandbox. The SDK does not use the Cursor app or CLI login. |
|
|
101
|
-
| **Kimi Code** | Install [Kimi Code CLI](https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started) and run `kimi login` | Runs `kimi acp` with your local configuration; streams replies, resumes sessions and forwards tool approvals. |
|
|
102
|
-
| **GLM** | Start `papilot` with `ZHIPU_API_KEY` (or `ZAI_API_KEY`) set | Claude Code on Zhipu's Anthropic-compatible endpoint, as Zhipu documents for GLM Coding Plan. |
|
|
103
|
-
| **DeepSeek** | Install [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`npm install -g @deepseek-ai/dsh`) and set up a model in it | Runs `dsh acp` in its workspace sandbox; anything outside the worktree asks for approval. |
|
|
104
|
-
| **Qwen Code** | Install [Qwen Code](https://github.com/QwenLM/qwen-code) and sign in by running `qwen` | Runs `qwen --acp` in Auto Edit mode: edits go ahead, commands ask for approval. |
|
|
105
|
-
| **OpenCode** | Install [OpenCode](https://opencode.ai) and connect a provider with `opencode auth login` | Runs `opencode acp` with your providers; commands and anything outside the worktree ask for approval. |
|
|
106
|
-
| **Antigravity** | Install Antigravity and sign in to `agy` | `agy -p`, one process per turn, editing files only. If your region needs it, set `PAPILOT_AGY_PROXY`. |
|
|
56
|
+
For the macOS and Linux desktop apps and local build instructions, see [Papilot Desktop](desktop/README.md). Desktop CI builds Apple Silicon and Intel Mac installers, plus Linux x64 AppImage and deb packages.
|
|
107
57
|
|
|
108
|
-
Papilot
|
|
109
|
-
|
|
110
|
-
Papilot never stores your credentials. CLI agents use their own login, and a key you set for Claude, Cursor or GLM goes only to that service. An agent that is found but not signed in shows as unavailable.
|
|
111
|
-
|
|
112
|
-
Having trouble getting started? Open **Settings → Runtime** and choose **Agents** for agent setup or **LaTeX** for the detected distribution, version, and location, or run `papilot doctor` for environment checks and fixes and `papilot doctor --repo /path/to/paper` to check a paper too. Add `--json` for a machine-readable report. Diagnostics do not install software, start the server or change your paper. See the [diagnostics guide](docs/guide.md#diagnostics) for what is checked.
|
|
113
|
-
|
|
114
|
-
<details>
|
|
115
|
-
<summary><b>⚙️ Options and remote access</b></summary>
|
|
116
|
-
|
|
117
|
-
<br>
|
|
58
|
+
Papilot requires **Node.js 22.22+**, **Git**, and a full **TeX** distribution with `latexmk` and `synctex` ([MacTeX](https://www.tug.org/mactex/) or [TeX Live](https://www.tug.org/texlive/)). Revising a paper also requires at least one configured [agent](#agents).
|
|
118
59
|
|
|
119
60
|
```sh
|
|
120
|
-
|
|
121
|
-
papilot
|
|
122
|
-
papilot service install # macOS: start after login, restart if it exits
|
|
123
|
-
npm uninstall -g papilot # remove it; your state stays in ~/.papilot until you delete it
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
When a release is available, **New version** appears next to **Settings**. Click it to install from the browser. Papilot waits for tasks and PDF builds to finish, restarts, and reconnects the page. Updates keep your data and preserve the previous installation for rollback. See [Updates](docs/guide.md#updates).
|
|
127
|
-
|
|
128
|
-
Papilot listens only on `127.0.0.1`. To use it from another device, publish it on your tailnet with Tailscale Serve and set `PAPILOT_PUBLIC_ORIGIN` and `PAPILOT_TAILSCALE_LOGIN`. Papilot then checks the host, the browser origin and the Tailscale identity of every request. The [guide](docs/guide.md#remote-access-with-tailscale) has the steps.
|
|
129
|
-
|
|
130
|
-
To invite an advisor or co-authors, give Papilot a public HTTPS address with `PAPILOT_ACCOUNT_ORIGIN` and open **Settings → Sharing**: each person signs in with a passkey and sees only the papers you share. Invite only people you would trust with access to the computer Papilot runs on; see [Collaborators](docs/guide.md#collaborators).
|
|
131
|
-
|
|
132
|
-
</details>
|
|
133
|
-
|
|
134
|
-
<details>
|
|
135
|
-
<summary><b>🛠️ Develop</b></summary>
|
|
136
|
-
|
|
137
|
-
<br>
|
|
138
|
-
|
|
139
|
-
```sh
|
|
140
|
-
git clone https://github.com/cu1ch3n/papilot && cd papilot
|
|
141
|
-
npm ci && npm run setup:review
|
|
142
|
-
npm run build && npm start
|
|
61
|
+
npm install -g papilot
|
|
62
|
+
papilot demo
|
|
143
63
|
```
|
|
144
64
|
|
|
145
|
-
|
|
65
|
+
Open [http://127.0.0.1:7274](http://127.0.0.1:7274) and select **Manuscript** in the sidebar to explore the bundled example paper.
|
|
146
66
|
|
|
147
|
-
|
|
67
|
+
To work on your own manuscript, run `papilot` and choose **Add paper…** to open a local LaTeX folder or ZIP archive. Papilot looks for the main `.tex` file, prepares Git history when needed, and attempts compilation. If the main file is ambiguous or the build fails, the import dialog helps you choose a file or fix the problem.
|
|
148
68
|
|
|
149
|
-
|
|
69
|
+
Check your setup in **Settings → Runtime**, under **Agents** or **LaTeX**. Run `papilot doctor` for environment checks, or `papilot doctor --repo /path/to/paper` to check a manuscript too ([diagnostics](docs/guide.md#diagnostics)).
|
|
150
70
|
|
|
151
|
-
|
|
71
|
+
## Agents
|
|
152
72
|
|
|
153
|
-
|
|
73
|
+
<!-- BEGIN AGENT ICONS -->
|
|
74
|
+
<p align="center">
|
|
75
|
+
<a href="docs/guide.md#agents">
|
|
76
|
+
<picture>
|
|
77
|
+
<source media="(prefers-color-scheme: dark) and (max-width: 600px)" srcset="docs/assets/readme-agents/compact-dark.svg">
|
|
78
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-agents/desktop-dark.svg">
|
|
79
|
+
<source media="(max-width: 600px)" srcset="docs/assets/readme-agents/compact.svg">
|
|
80
|
+
<img src="docs/assets/readme-agents/desktop.svg" alt="Codex, Claude, Cursor, Copilot, Grok, Antigravity, Kimi, GLM, DeepSeek, Qwen, OpenCode" width="816">
|
|
81
|
+
</picture>
|
|
82
|
+
</a>
|
|
83
|
+
</p>
|
|
84
|
+
<!-- END AGENT ICONS -->
|
|
154
85
|
|
|
155
|
-
|
|
156
|
-
- 🐛 **Something broke**: [open an issue](https://github.com/cu1ch3n/papilot/issues/new/choose)
|
|
157
|
-
- 🤝 **Want to help**: pick a [good first issue](https://github.com/cu1ch3n/papilot/labels/good%20first%20issue) and read [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
86
|
+
You can choose an agent and model for each task. Depending on the integration, Papilot runs agents using their local CLI sign-in or provider API credentials you supply, without storing your keys.
|
|
158
87
|
|
|
159
|
-
|
|
88
|
+
Open **Settings → Runtime → Agents** to check status, models, and setup instructions (such as `papilot codex login`). Click **Reconnect** after installing or signing in to an agent while Papilot is running, or restart `papilot` after changing environment variables. See the [agent guide](docs/guide.md#agents) for per-agent requirements and capabilities.
|
|
160
89
|
|
|
161
|
-
|
|
90
|
+
## Documentation and community
|
|
162
91
|
|
|
163
|
-
|
|
92
|
+
- **Documentation:** Read the [User Guide](docs/guide.md) for workspace workflows, configuration, [in-app updates](docs/guide.md#updates), [remote access with Tailscale](docs/guide.md#remote-access-with-tailscale), and [passkey sharing for collaborators](docs/guide.md#collaborators).
|
|
93
|
+
- **Design and history:** Explore [`examples/papilot-paper`](examples/papilot-paper) for the formal design paper and proofs, and check the [Changelog](CHANGELOG.md) for release notes.
|
|
94
|
+
- **Community and support:** Ask questions in [Discussions](https://github.com/PapilotAI/papilot/discussions), report bugs in [Issues](https://github.com/PapilotAI/papilot/issues), or read [CONTRIBUTING.md](CONTRIBUTING.md) to contribute.
|
|
164
95
|
|
|
165
|
-
|
|
96
|
+
---
|
|
166
97
|
|
|
167
|
-
|
|
98
|
+
[MIT](LICENSE) © 2026 PapilotAI
|
|
168
99
|
|
|
169
|
-
[
|
|
100
|
+
Friends: [LINUX DO](https://linux.do/).
|
package/README.zh-CN.md
CHANGED
|
@@ -1,169 +1,100 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<h1>
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
<img src="docs/assets/logo.svg" width="48" height="48" align="absmiddle" alt="Papilot 标志">
|
|
7
|
-
</picture>
|
|
8
|
-
Papilot
|
|
4
|
+
<img src="docs/assets/wordmark.svg#gh-light-mode-only" width="280" height="88" alt="Papilot">
|
|
5
|
+
<img src="docs/assets/wordmark-dark.svg#gh-dark-mode-only" width="280" height="88" alt="Papilot">
|
|
9
6
|
</h1>
|
|
10
7
|
|
|
11
|
-
<p><b
|
|
8
|
+
<p><b>在 PDF 上批注和审阅,让 AI 修改 LaTeX 论文。</b></p>
|
|
12
9
|
|
|
13
|
-
<p><a href="README.md">English</a> · 简体中文</p>
|
|
10
|
+
<p><a href="https://papilot.ai">官网</a> · <a href="docs/guide.md">使用指南</a> · <a href="README.md">English</a> · 简体中文</p>
|
|
14
11
|
|
|
15
|
-
[](https://github.com/PapilotAI/papilot/actions/workflows/ci.yml)
|
|
16
13
|
[](https://www.npmjs.com/package/papilot)
|
|
17
14
|
[](LICENSE)
|
|
18
|
-
[](https://nodejs.org)
|
|
19
|
-
[](https://www.typescriptlang.org)
|
|
20
|
-
[](https://react.dev)
|
|
21
|
-
[](https://www.latex-project.org)
|
|
22
|
-
[](https://github.com/cu1ch3n/papilot/pulls)
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<img src="docs/assets/demo.gif" alt="Papilot:在 PDF 上批注一段文字,交给智能体,接受排版后的改动并提交" width="100%">
|
|
16
|
+
<p><img src="docs/assets/demo.gif" alt="Papilot:在 PDF 上批注一段话,交给智能体修改,并审阅排版后的改动" width="100%"></p>
|
|
27
17
|
|
|
28
18
|
</div>
|
|
29
19
|
|
|
30
|
-
|
|
20
|
+
Papilot 是运行在本机的 LaTeX 论文工作台。你在 PDF 上批注,智能体在独立副本中修改源码;改好后先看排版对比,再决定接受哪些改动、保存到哪里。
|
|
31
21
|
|
|
32
|
-
|
|
33
|
-
> **0.7 新功能**:全新设计的工作台、按颜色分组的批注、任务中附带文件和图片、技能库,以及接受的改动保存到哪里由你选择。详见[更新日志](CHANGELOG.md)。
|
|
22
|
+
macOS、Linux 桌面版与本地构建方法见 [Papilot Desktop](desktop/README.md)。桌面 CI 构建 Apple Silicon、Intel Mac 安装包,以及 Linux x64 的 AppImage、deb 安装包。
|
|
34
23
|
|
|
35
|
-
##
|
|
24
|
+
## 功能
|
|
36
25
|
|
|
37
26
|
<table>
|
|
38
27
|
<tr>
|
|
39
28
|
<td width="50%" valign="top">
|
|
40
|
-
<img src="docs/assets/readme-note.zh-CN.jpg" alt="
|
|
41
|
-
<h3
|
|
42
|
-
|
|
43
|
-
</td>
|
|
44
|
-
<td width="50%" valign="top">
|
|
45
|
-
<img src="docs/assets/readme-review.zh-CN.jpg" alt="排版页面上改动的修改前后对比,带接受、拒绝和评论按钮">
|
|
46
|
-
<h3>✅ 逐条点头</h3>
|
|
47
|
-
每处改动都以排版后的差异呈现,连同它在别处引起的变化,比如重新编号的公式和目录。接受、拒绝或评论,任何决定都能撤销。
|
|
48
|
-
</td>
|
|
49
|
-
</tr>
|
|
50
|
-
<tr>
|
|
51
|
-
<td width="50%" valign="top">
|
|
52
|
-
<img src="docs/assets/readme-deliver.zh-CN.jpg" alt="审阅结束后,带智能体写好的提交信息,以及「应用到工作目录」和「提交」按钮">
|
|
53
|
-
<h3>📦 改动去哪由你定</h3>
|
|
54
|
-
审阅结束前,接受的改动只保存在任务里。之后可以应用到工作目录,也可以提交到独立的 <code>papilot/…</code> 分支,提交信息由智能体来写。
|
|
29
|
+
<a href="docs/assets/readme-note.zh-CN.jpg"><img src="docs/assets/readme-note.zh-CN.jpg" alt="PDF 上的同色分组文字批注与公式框选批注"></a>
|
|
30
|
+
<h3>在 PDF 上批注</h3>
|
|
31
|
+
选中句子或框出公式,写下修改要求。相关批注可以按颜色归成一组,一次说明多处修改。
|
|
55
32
|
</td>
|
|
56
33
|
<td width="50%" valign="top">
|
|
57
|
-
<img src="docs/assets/readme-
|
|
58
|
-
<h3
|
|
59
|
-
|
|
34
|
+
<a href="docs/assets/readme-review.zh-CN.jpg"><img src="docs/assets/readme-review.zh-CN.jpg" alt="排版页面上的修改前后对比,带接受、拒绝和评论按钮"></a>
|
|
35
|
+
<h3>逐处审阅改动</h3>
|
|
36
|
+
对比修改前后的排版,也能看到公式重编号等连带变化。逐条接受、拒绝或评论,做过的决定可以撤销。
|
|
60
37
|
</td>
|
|
61
38
|
</tr>
|
|
62
39
|
<tr>
|
|
63
40
|
<td width="50%" valign="top">
|
|
64
|
-
<img src="docs/assets/readme-
|
|
65
|
-
<h3
|
|
66
|
-
|
|
41
|
+
<a href="docs/assets/readme-deliver.zh-CN.jpg"><img src="docs/assets/readme-deliver.zh-CN.jpg" alt="将接受的改动应用到论文"></a>
|
|
42
|
+
<h3>选择保存方式</h3>
|
|
43
|
+
每个新任务在独立副本里改稿。审阅完成后,可以选择 **提交到论文**,将这个任务的改动保存为当前分支上的一个 commit;也可以选择 **应用到工作区**,保留为未提交改动。如果同一段落期间有了其他修改,AI 会自动处理冲突,只有无法确定内容时才询问你。审核合并后的 PDF,再确认保存。需要推送时,在 Git 面板操作。
|
|
67
44
|
</td>
|
|
68
45
|
<td width="50%" valign="top">
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
<li>📎 任务和消息都能附带<b>文件和图片</b></li>
|
|
73
|
-
<li>🤖 <b>Codex、Claude、Cursor、Kimi Code、GLM、DeepSeek、Qwen Code、OpenCode 或 Antigravity</b>:电脑上装了哪个就用哪个,各用你自己的登录</li>
|
|
74
|
-
<li>🌳 <b>每个任务都有独立的 Git 工作树</b>,最多两个同时运行</li>
|
|
75
|
-
<li>🌗 <b>浅色与深色</b>,界面支持中文和英文</li>
|
|
76
|
-
<li>📱 <b>运行在你的电脑上</b>,也能用手机打开</li>
|
|
77
|
-
</ul>
|
|
46
|
+
<a href="docs/assets/readme-git.zh-CN.jpg"><img src="docs/assets/readme-git.zh-CN.jpg" alt="Git 面板:已暂存文件、自动生成的提交说明与提交关系图"></a>
|
|
47
|
+
<h3>内置 Git</h3>
|
|
48
|
+
在工作台里暂存、提交、拉取和推送,提交关系图也会显示各任务的工作树。提交说明和合并冲突,可以请智能体帮忙。
|
|
78
49
|
</td>
|
|
79
50
|
</tr>
|
|
80
51
|
</table>
|
|
81
52
|
|
|
82
|
-
|
|
53
|
+
- **[技能](docs/guide.md#skills)与[任务附件](docs/guide.md#task-attachments):** 输入 `/` 选择润色、校对、检查数学等技能,也能在设置里写自己的技能。任务和消息可以附带参考文件与图片。
|
|
54
|
+
- **阅读与界面:** 支持通过 PDF 目录跳转章节与全文搜索,提供浅色/深色主题及中英文界面。
|
|
83
55
|
|
|
84
|
-
|
|
85
|
-
|
|
56
|
+
## 快速开始
|
|
57
|
+
|
|
58
|
+
运行需要 **Node.js 22.22+**、**Git**,以及包含 `latexmk` 和 `synctex` 的完整 **TeX** 发行版([MacTeX](https://www.tug.org/mactex/) 或 [TeX Live](https://www.tug.org/texlive/))。修改论文还需要配置至少一个[智能体](#智能体)。
|
|
86
59
|
|
|
87
60
|
```sh
|
|
88
61
|
npm install -g papilot
|
|
89
62
|
papilot demo
|
|
90
63
|
```
|
|
91
64
|
|
|
92
|
-
打开
|
|
93
|
-
|
|
94
|
-
## 🤖 智能体
|
|
95
|
-
|
|
96
|
-
| 智能体 | 登录(一次即可) | Papilot 如何运行它 |
|
|
97
|
-
| --- | --- | --- |
|
|
98
|
-
| **Codex** | `papilot codex login` | 通过 Codex app server 在其工作区沙箱中运行;已装有 `codex` 就直接用,没有则在首次启动时自动安装。 |
|
|
99
|
-
| **Claude** | 安装 [Claude Code](https://code.claude.com) 并运行 `claude auth login`,或设置好 `ANTHROPIC_API_KEY` 再启动 `papilot` | 装了 Claude Code 时,用你自己的登录(Claude 订阅或密钥)运行 `claude -p`,在 Claude Code 的沙箱中工作;没装时通过 Claude Agent SDK 运行,需要 API 密钥。 |
|
|
100
|
-
| **Cursor** | 设置好 `CURSOR_API_KEY` 再启动 `papilot` | 通过 Cursor SDK 在 Cursor 的沙箱中运行,首次使用时下载;该 SDK 不使用 Cursor 应用或 CLI 的登录。 |
|
|
101
|
-
| **Kimi Code** | 安装 [Kimi Code CLI](https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started),运行 `kimi login` | 通过 `kimi acp` 使用本机配置,支持流式回复、会话恢复和工具审批。 |
|
|
102
|
-
| **GLM** | 设置好 `ZHIPU_API_KEY`(或 `ZAI_API_KEY`)再启动 `papilot` | 按智谱为 GLM Coding Plan 给出的方式,让 Claude Code 连接智谱的 Anthropic 兼容接口。 |
|
|
103
|
-
| **DeepSeek** | 安装 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`npm install -g @deepseek-ai/dsh`)并在其中配置好模型 | 通过 `dsh acp` 在其工作区沙箱中运行;工作树以外的操作需要审批。 |
|
|
104
|
-
| **Qwen Code** | 安装 [Qwen Code](https://github.com/QwenLM/qwen-code),运行 `qwen` 登录 | 以自动编辑模式运行 `qwen --acp`:改文件直接进行,运行命令需要审批。 |
|
|
105
|
-
| **OpenCode** | 安装 [OpenCode](https://opencode.ai),用 `opencode auth login` 连接模型服务商 | 用你配置的服务商运行 `opencode acp`;运行命令和工作树以外的操作需要审批。 |
|
|
106
|
-
| **Antigravity** | 安装 Antigravity 并登录 `agy` | 运行 `agy -p`,每轮一个进程,只编辑文件;所在地区需要代理时设置 `PAPILOT_AGY_PROXY`。 |
|
|
107
|
-
|
|
108
|
-
Papilot 会自动找出电脑上已有的智能体,只列出这些;Codex 始终可用。Papilot 运行期间安装或登录了新的智能体,点击 **重新连接** 即可。如果服务找不到 CLI,可以用 `PAPILOT_KIMI_BIN`、`PAPILOT_DSH_BIN`、`PAPILOT_QWEN_BIN` 或 `PAPILOT_OPENCODE_BIN` 指定其路径。各智能体支持的功能和已验证的版本见[智能体指南](docs/guide.md#agents)。
|
|
109
|
-
|
|
110
|
-
Papilot 从不保存你的凭据。CLI 智能体使用各自的登录;为 Claude、Cursor 或 GLM 设置的密钥只会交给对应的服务。已找到但没有登录的智能体会显示为不可用。
|
|
111
|
-
|
|
112
|
-
启动遇到问题?打开 **设置 → 运行环境**,在**智能体**中查看智能体配置,或在 **LaTeX** 中查看识别到的发行版、版本和位置,或运行 `papilot doctor` 检查环境并查看修复建议,用 `papilot doctor --repo /path/to/paper` 一并检查论文。加上 `--json` 可输出机器可读的报告。诊断不会安装软件、启动服务或修改论文。检查范围见[诊断指南](docs/guide.md#diagnostics)。
|
|
113
|
-
|
|
114
|
-
<details>
|
|
115
|
-
<summary><b>⚙️ 选项与远程访问</b></summary>
|
|
116
|
-
|
|
117
|
-
<br>
|
|
118
|
-
|
|
119
|
-
```sh
|
|
120
|
-
papilot --port 4400 # 使用其他本地端口
|
|
121
|
-
papilot --data ~/papilot-data # 把状态放在别处(默认 ~/.papilot)
|
|
122
|
-
papilot service install # macOS:登录后自动启动,退出后自动重启
|
|
123
|
-
npm uninstall -g papilot # 卸载;状态仍保留在 ~/.papilot,可自行删除
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
有新版本时,**设置** 旁会出现 **有新版本**,点击即可在浏览器中安装。Papilot 会等任务和 PDF 编译结束后重启,并重新连接页面。更新会保留你的数据,也会保留上一版安装以便回滚。详见[更新](docs/guide.md#updates)。
|
|
127
|
-
|
|
128
|
-
Papilot 只监听 `127.0.0.1`。若要从其他设备访问,用 Tailscale Serve 把它发布到你的 tailnet,并设置 `PAPILOT_PUBLIC_ORIGIN` 和 `PAPILOT_TAILSCALE_LOGIN`;Papilot 会校验每个请求的主机、浏览器来源和 Tailscale 身份。具体步骤见[指南](docs/guide.md#remote-access-with-tailscale)。
|
|
129
|
-
|
|
130
|
-
要邀请导师或合作者,用 `PAPILOT_ACCOUNT_ORIGIN` 给 Papilot 一个公开的 HTTPS 地址,然后打开 **设置 → 共享**:每个人用通行密钥登录,只能看到你共享的论文。只邀请你愿意让其访问运行 Papilot 的这台电脑的人,详见[协作者](docs/guide.md#collaborators)。
|
|
131
|
-
|
|
132
|
-
</details>
|
|
133
|
-
|
|
134
|
-
<details>
|
|
135
|
-
<summary><b>🛠️ 参与开发</b></summary>
|
|
136
|
-
|
|
137
|
-
<br>
|
|
138
|
-
|
|
139
|
-
```sh
|
|
140
|
-
git clone https://github.com/cu1ch3n/papilot && cd papilot
|
|
141
|
-
npm ci && npm run setup:review
|
|
142
|
-
npm run build && npm start
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
提交 pull request 前,请运行 `npm run typecheck`、`npm test` 和 `npm run test:ui`。
|
|
65
|
+
打开 [http://127.0.0.1:7274](http://127.0.0.1:7274),在侧栏选择 **稿件** 即可体验内置的示例论文。
|
|
146
66
|
|
|
147
|
-
|
|
67
|
+
处理自己的论文时,运行 `papilot` 并在论文菜单中选择 **添加论文…**,打开本地 LaTeX 文件夹或拖入 ZIP 压缩包。Papilot 会自动识别主 `.tex` 文件、准备 Git 记录并尝试编译,遇到问题时可在导入界面中选择主文件或尝试修复。
|
|
148
68
|
|
|
149
|
-
|
|
69
|
+
在 **设置 → 运行环境** 的 **智能体** 或 **LaTeX** 页面查看配置状态。运行 `papilot doctor` 检查环境,加上 `--repo /path/to/paper` 可一并检查论文([诊断说明](docs/guide.md#diagnostics))。
|
|
150
70
|
|
|
151
|
-
|
|
71
|
+
## 智能体
|
|
152
72
|
|
|
153
|
-
|
|
73
|
+
<!-- BEGIN AGENT ICONS -->
|
|
74
|
+
<p align="center">
|
|
75
|
+
<a href="docs/guide.md#agents">
|
|
76
|
+
<picture>
|
|
77
|
+
<source media="(prefers-color-scheme: dark) and (max-width: 600px)" srcset="docs/assets/readme-agents/compact-dark.svg">
|
|
78
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-agents/desktop-dark.svg">
|
|
79
|
+
<source media="(max-width: 600px)" srcset="docs/assets/readme-agents/compact.svg">
|
|
80
|
+
<img src="docs/assets/readme-agents/desktop.svg" alt="Codex, Claude, Cursor, Copilot, Grok, Antigravity, Kimi, GLM, DeepSeek, Qwen, OpenCode" width="816">
|
|
81
|
+
</picture>
|
|
82
|
+
</a>
|
|
83
|
+
</p>
|
|
84
|
+
<!-- END AGENT ICONS -->
|
|
154
85
|
|
|
155
|
-
|
|
156
|
-
- 🐛 **遇到问题**:[提交 issue](https://github.com/cu1ch3n/papilot/issues/new/choose)
|
|
157
|
-
- 🤝 **想参与**:从 [good first issue](https://github.com/cu1ch3n/papilot/labels/good%20first%20issue) 开始,并阅读 [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
86
|
+
每个任务都可以选择智能体和模型。Papilot 使用智能体在本机的登录,或你为对应服务配置的 API 凭据,不另行保存密钥。
|
|
158
87
|
|
|
159
|
-
|
|
88
|
+
打开 **设置 → 运行环境 → 智能体** 可查看状态、可用模型与配置说明(例如运行 `papilot codex login` 登录 Codex)。安装或登录智能体后,点击 **重新连接** 刷新状态;修改环境变量后则需重启 `papilot`。各智能体的具体要求与支持范围见[智能体指南](docs/guide.md#agents)。
|
|
160
89
|
|
|
161
|
-
|
|
90
|
+
## 文档与社区
|
|
162
91
|
|
|
163
|
-
|
|
92
|
+
- **使用文档:** 阅读[使用指南](docs/guide.md)了解完整工作流、配置项、[应用内更新](docs/guide.md#updates)、[Tailscale 远程访问](docs/guide.md#remote-access-with-tailscale)以及[邀请协作者](docs/guide.md#collaborators)。
|
|
93
|
+
- **设计与版本:** 在 [`examples/papilot-paper`](examples/papilot-paper) 中查看阐述系统设计与证明的示例论文,在[更新日志](CHANGELOG.md)中查看各版本变更。
|
|
94
|
+
- **社区与支持:** 欢迎在 [Discussions](https://github.com/PapilotAI/papilot/discussions) 交流想法、在 [Issues](https://github.com/PapilotAI/papilot/issues) 反馈问题,或阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 参与贡献。
|
|
164
95
|
|
|
165
|
-
|
|
96
|
+
---
|
|
166
97
|
|
|
167
|
-
|
|
98
|
+
[MIT](LICENSE) © 2026 PapilotAI
|
|
168
99
|
|
|
169
|
-
[
|
|
100
|
+
友情链接:[LINUX DO](https://linux.do/)。
|
package/bin/doctor.mjs
CHANGED
|
@@ -38,7 +38,7 @@ function executable(command, env = process.env) {
|
|
|
38
38
|
function agentExecutable(command) {
|
|
39
39
|
if (command.includes('/') || command.includes('\\')) return executable(command);
|
|
40
40
|
const home = process.env.HOME || os.homedir();
|
|
41
|
-
const dirs = ['.local/bin', '.claude/local', '.kimi-code/bin', '.opencode/bin', '.bun/bin', '.npm-global/bin'].map(dir => path.join(home, dir)).concat('/opt/homebrew/bin', '/usr/local/bin');
|
|
41
|
+
const dirs = ['.local/bin', '.claude/local', '.kimi-code/bin', '.grok/bin', '.opencode/bin', '.bun/bin', '.npm-global/bin'].map(dir => path.join(home, dir)).concat('/opt/homebrew/bin', '/usr/local/bin');
|
|
42
42
|
return executable(command) || executable(command, { PATH: dirs.join(path.delimiter) });
|
|
43
43
|
}
|
|
44
44
|
function command(file, args, options = {}) {
|
|
@@ -178,15 +178,17 @@ export async function doctor(args) {
|
|
|
178
178
|
return process.env[variable] ? `${variable} does not resolve to a runnable executable in Papilot's environment.`
|
|
179
179
|
: `${command} was not found on the PATH or in the standard agent folders available to Papilot. It may be installed for a different user or shell.`;
|
|
180
180
|
}
|
|
181
|
-
async function acpCheck(id, name, bin, help, install, update) {
|
|
181
|
+
async function acpCheck(id, name, bin, help, install, update, supported = /\bACP\b|Agent Client Protocol/i) {
|
|
182
182
|
const file = agentExecutable(process.env[bin.env] || bin.name);
|
|
183
183
|
if (!file) { check(`agent.${id}`, false, 'info', missingAgent(bin.name, bin.env), `${install}. If already installed, correct ${bin.env} or the server PATH, then restart Papilot.`); return false; }
|
|
184
184
|
const result = await command(file, help);
|
|
185
|
-
const ready = result.ok &&
|
|
185
|
+
const ready = result.ok && supported.test(result.stdout + '\n' + result.stderr);
|
|
186
186
|
check(`agent.${id}`, ready, 'warn', `${file}: ${ready ? 'ACP command available; login and generation were not tested' : result.reason || 'ACP command unavailable'}.`, `${update} Set ${bin.env} if needed.`);
|
|
187
187
|
return ready;
|
|
188
188
|
}
|
|
189
189
|
const kimiCheck = () => acpCheck('kimi', 'Kimi CLI', { env: 'PAPILOT_KIMI_BIN', name: 'kimi' }, ['acp', '--help'], 'Install Kimi Code CLI and run kimi login', 'Update Kimi Code CLI and run kimi login.');
|
|
190
|
+
const copilotCheck = () => acpCheck('copilot', 'GitHub Copilot CLI', { env: 'PAPILOT_COPILOT_BIN', name: 'copilot' }, ['--help'], 'Install GitHub Copilot CLI with npm install -g @github/copilot and run copilot login', 'Update GitHub Copilot CLI and run copilot login.');
|
|
191
|
+
const grokCheck = () => acpCheck('grok', 'Grok Build CLI', { env: 'PAPILOT_GROK_BIN', name: 'grok' }, ['--no-auto-update', 'agent', '--no-leader', 'stdio', '--help'], 'Install Grok Build CLI from https://x.ai/cli and run grok login or configure XAI_API_KEY', 'Update Grok Build CLI and run grok login or configure XAI_API_KEY.', /Usage:\s+grok agent stdio\b/i);
|
|
190
192
|
const qwenCheck = () => acpCheck('qwen', 'Qwen Code', { env: 'PAPILOT_QWEN_BIN', name: 'qwen' }, ['--help'], 'Install Qwen Code and sign in by running qwen once', 'Update Qwen Code and sign in by running qwen once.');
|
|
191
193
|
const deepseekCheck = () => acpCheck('deepseek', 'DeepSeek Harness (dsh)', { env: 'PAPILOT_DSH_BIN', name: 'dsh' }, ['acp', '--help'], 'Install DeepSeek Harness with npm install -g @deepseek-ai/dsh and set up a model in dsh', 'Update DeepSeek Harness and set up a model in dsh.');
|
|
192
194
|
const opencodeCheck = () => acpCheck('opencode', 'OpenCode', { env: 'PAPILOT_OPENCODE_BIN', name: 'opencode' }, ['acp', '--help'], 'Install OpenCode and connect a provider with opencode auth login', 'Update OpenCode and connect a provider with opencode auth login.');
|
|
@@ -203,7 +205,7 @@ export async function doctor(args) {
|
|
|
203
205
|
check('agent.glm', Boolean(configured && sdk), configured ? 'warn' : 'info', !configured ? 'ZHIPU_API_KEY or ZAI_API_KEY is not set, so Papilot does not offer GLM.' : sdk ? `GLM key configured for ${process.env.ZHIPU_API_KEY ? 'open.bigmodel.cn' : 'api.z.ai'} (not validated).` : 'GLM key configured; the Claude Agent SDK that runs GLM is installed on first use.', !configured ? 'Start Papilot with ZHIPU_API_KEY (open.bigmodel.cn) or ZAI_API_KEY (api.z.ai) set to your GLM Coding Plan or API key.' : 'Start papilot and choose GLM once to install the Claude Agent SDK.');
|
|
204
206
|
return configured;
|
|
205
207
|
}
|
|
206
|
-
const agents = await Promise.all([codexCheck(), claudeCheck(), cursorCheck(), agyCheck(), kimiCheck(), glmCheck(), deepseekCheck(), qwenCheck(), opencodeCheck()]);
|
|
208
|
+
const agents = await Promise.all([codexCheck(), claudeCheck(), cursorCheck(), copilotCheck(), grokCheck(), agyCheck(), kimiCheck(), glmCheck(), deepseekCheck(), qwenCheck(), opencodeCheck()]);
|
|
207
209
|
check('agents', agents.some(Boolean), 'warn', agents.some(Boolean) ? 'At least one agent passed its configuration check; live editing was not tested.' : 'No agent passed its configuration check. PDF reading can still be used with a working TeX installation.', 'Configure one agent before starting editing tasks.');
|
|
208
210
|
|
|
209
211
|
if (repo) {
|
|
@@ -279,7 +281,7 @@ export async function doctor(args) {
|
|
|
279
281
|
}
|
|
280
282
|
}
|
|
281
283
|
// Keep reports stable even though independent probes finish in any order.
|
|
282
|
-
const order = ['node', 'dependencies', 'frontend', 'review-engine', 'data', 'git', 'latexmk', 'synctex', 'tex-engines', 'agent.codex', 'agent.claude', 'agent.cursor', 'agent.antigravity', 'agent.kimi', 'agent.glm', 'agent.deepseek', 'agent.qwen', 'agent.opencode', 'agents', 'project', 'project.git', 'project.head', 'project.main', 'project.engine', 'project.worktrees', 'remote', 'server', 'service', 'service.tools', 'service.data'];
|
|
284
|
+
const order = ['node', 'dependencies', 'frontend', 'review-engine', 'data', 'git', 'latexmk', 'synctex', 'tex-engines', 'agent.codex', 'agent.claude', 'agent.cursor', 'agent.copilot', 'agent.grok', 'agent.antigravity', 'agent.kimi', 'agent.glm', 'agent.deepseek', 'agent.qwen', 'agent.opencode', 'agents', 'project', 'project.git', 'project.head', 'project.main', 'project.engine', 'project.worktrees', 'remote', 'server', 'service', 'service.tools', 'service.data'];
|
|
283
285
|
checks.sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id));
|
|
284
286
|
const report = { name: 'Papilot', version: pkg.version, ok: !checks.some(item => !item.ok && item.severity === 'error'), checks };
|
|
285
287
|
if (json) console.log(JSON.stringify(report, null, 2));
|
package/dist/assets/{_virtual_papilot-licenses-D7ro6ecN.js → _virtual_papilot-licenses-CMfCtEYQ.js}
RENAMED
|
@@ -2398,7 +2398,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
2398
2398
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
2399
2399
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
2400
2400
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
2401
|
-
SOFTWARE.`},{name:`Icon sources`,text:`Agent icons: @lobehub/icons-static-svg 1.101.0 (MIT), https://github.com/lobehub/lobe-icons. GLM uses the ChatGLM mark.
|
|
2401
|
+
SOFTWARE.`},{name:`Icon sources`,text:`Agent icons: @lobehub/icons-static-svg 1.101.0 (MIT), https://github.com/lobehub/lobe-icons. GLM uses the ChatGLM mark; Copilot uses the GithubCopilot mark; Grok uses the Grok mark.
|
|
2402
2402
|
Git and LaTeX icons: simple-icons 16.36.0 (CC0-1.0), https://github.com/simple-icons/simple-icons.
|
|
2403
2403
|
Unmodified SVG artwork; rendered locally with CSS masks. Brand marks belong to their respective owners.`}]},{name:`longest-streak`,version:`3.1.0`,license:`MIT`,url:`https://www.npmjs.com/package/longest-streak/v/3.1.0`,notices:[{name:`license`,text:`(The MIT License)
|
|
2404
2404
|
|