@michengai/dsh-codex-pet 0.1.1 → 0.1.3

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/CHANGELOG.md CHANGED
@@ -1,20 +1,31 @@
1
- # Changelog
2
-
1
+ # Changelog
2
+
3
+ ## [0.1.3] - 2026-09-11
4
+
5
+ - Support DSH Web `0.1.5-rc.2` and correct client service injection so the plugin loads with the updated host. Older DSH versions are outside the supported range.
6
+ - Known upstream limitation: stopping before the model returns an HTTP response may produce a `turn/end` serialization error and a failure notification; stopping after streaming starts is supported.
7
+
8
+ ## [0.1.2] - 2026-09-09
9
+
10
+ - License original plugin code under Apache-2.0 and include LICENSE and third-party artwork NOTICE in the npm package.
11
+ - Automate npm publishing through GitHub Actions Trusted Publishing with provenance, version checks, tests, browser smoke checks, and package validation.
12
+ - Create bilingual normal GitHub Releases after npm publishing, without tarball or checksum attachments; document npm installation and publisher configuration.
13
+
3
14
  ## [0.1.1] - 2026-09-09
4
-
5
- - Keep pet rendering inside DSH Web and expose a versioned consumer API for state, notifications, commands, and display handoff. Native window adaptation belongs to the consumer; remove native routes, renderer, bridge calls, and sibling-project tests.
6
- - Use only the verified DSH CLI for npm updates, with a ten-minute timeout and an installation lock retained until process completion. Return stable localized error codes.
7
- - Localize pet names, descriptions, settings, notifications, and menus; preserve user content. Add version and project links, shared update dialog, and Windows folder opening.
8
- - Share library polling and publish only changed notification snapshots.
9
- - Run independent Playwright Chromium smoke tests in temporary directories with automatic cleanup. No Electron or sibling checkout is needed.
10
- - Pass type checking, 25 automated tests, build, and browser smoke checks. Real image generation, real-model interaction, and real npm updates still require acceptance testing.
11
-
12
- ## [0.1.0] - 2026-09-09
13
-
14
- - Bundle nine pets, pet settings, and a DSH Skill-based entry for creating custom companions.
15
- - Support in-page Web companions and native windows through a compatible Desktop pet bridge.
16
- - Add multiple-task notifications, task navigation, current-turn cancellation, and approval, question, and plan request handling.
17
- - Exclude subagent sessions to prevent subagent routing errors when opening or stopping tasks.
18
- - Simplify the creation prompt by removing the Codex dependency disclaimer.
19
- - Provide English and Chinese READMEs, a banner, and real plugin screenshots; keep local docs outside version control.
20
- - Pass type checking, 17 automated tests, and the build; complete image generation, real-model interaction, and the normal Desktop installation still need end-to-end acceptance testing.
15
+
16
+ - Keep pet rendering inside DSH Web and expose a versioned consumer API for state, notifications, commands, and display handoff. Native window adaptation belongs to the consumer; remove native routes, renderer, bridge calls, and sibling-project tests.
17
+ - Use only the verified DSH CLI for npm updates, with a ten-minute timeout and an installation lock retained until process completion. Return stable localized error codes.
18
+ - Localize pet names, descriptions, settings, notifications, and menus; preserve user content. Add version and project links, shared update dialog, and Windows folder opening.
19
+ - Share library polling and publish only changed notification snapshots.
20
+ - Run independent Playwright Chromium smoke tests in temporary directories with automatic cleanup. No Electron or sibling checkout is needed.
21
+ - Pass type checking, 25 automated tests, build, and browser smoke checks. Real image generation, real-model interaction, and real npm updates still require acceptance testing.
22
+
23
+ ## [0.1.0] - 2026-09-09
24
+
25
+ - Bundle nine pets, pet settings, and a DSH Skill-based entry for creating custom companions.
26
+ - Support in-page Web companions and native windows through a compatible Desktop pet bridge.
27
+ - Add multiple-task notifications, task navigation, current-turn cancellation, and approval, question, and plan request handling.
28
+ - Exclude subagent sessions to prevent subagent routing errors when opening or stopping tasks.
29
+ - Simplify the creation prompt by removing the Codex dependency disclaimer.
30
+ - Provide English and Chinese READMEs, a banner, and real plugin screenshots; keep local docs outside version control.
31
+ - Pass type checking, 17 automated tests, and the build; complete image generation, real-model interaction, and the normal Desktop installation still need end-to-end acceptance testing.
@@ -1,20 +1,31 @@
1
- # 更新日志
2
-
1
+ # 更新日志
2
+
3
+ ## [0.1.3] - 2026-09-11
4
+
5
+ - 支持 DSH Web `0.1.5-rc.2`,修正客户端服务注入声明,使插件可在新版宿主加载;旧版 DSH 不在支持范围内。
6
+ - 已知上游限制:模型尚未返回 HTTP 响应时停止任务,可能产生 `turn/end` 序列化错误并显示失败通知;已开始流式响应后的停止操作可用。
7
+
8
+ ## [0.1.2] - 2026-09-09
9
+
10
+ - 原创插件代码采用 Apache-2.0,npm 包包含 LICENSE 和第三方宠物素材 NOTICE。
11
+ - 通过 GitHub Actions Trusted Publishing 自动发布 npm,附带来源证明,并执行版本校验、测试、浏览器冒烟及包校验。
12
+ - npm 发布后自动创建双语正式 GitHub Release,不附加安装包或校验文件;完善 npm 安装及发布绑定说明。
13
+
3
14
  ## [0.1.1] - 2026-09-09
4
-
5
- - 插件仅在 DSH Web 页内显示,提供版本化消费者接口用于状态、通知、操作和展示接管。原生窗口由消费者适配,移除原生路由、渲染入口、桥接调用和跨仓测试。
6
- - npm 更新仅使用已验证的 DSH CLI,十分钟超时且进程结束后才释放安装锁;返回稳定错误码并本地化显示。
7
- - 宠物名称描述、设置、通知和菜单支持中英文,保留用户内容;提供版本号、项目链接、同系列更新弹窗及 Windows 打开文件夹修复。
8
- - 共享宠物库轮询,仅在通知内容变化时发布快照。
9
- - 独立使用 Playwright Chromium 冒烟测试,系统临时目录自动清理,不需要 Electron 或相邻仓库。
10
- - 类型检查、25 项自动化测试、构建及浏览器冒烟通过;真实生图、真实模型联动和真实 npm 更新仍待验收。
11
-
12
- ## [0.1.0] - 2026-09-09
13
-
14
- - 提供 9 只随包内置宠物、宠物设置和基于 DSH Skill 的自定义宠物创建入口。
15
- - 支持 Web 页内陪伴和兼容 Desktop 宠物桥接的原生浮窗。
16
- - 提供多会话通知、跳转、停止当前轮次,以及审批、问题和计划请求处理。
17
- - 排除子代理会话,避免打开或停止操作触发 subagent routing 错误。
18
- - 简化创建提示词,移除“不依赖 Codex”表述。
19
- - 提供中英文 README、Banner 与实际插件截图;本地 docs 不纳入版本控制。
20
- - 类型检查、17 项自动化测试和构建通过;完整生图、真实模型联动与正式 Desktop 安装仍待端到端验收。
15
+
16
+ - 插件仅在 DSH Web 页内显示,提供版本化消费者接口用于状态、通知、操作和展示接管。原生窗口由消费者适配,移除原生路由、渲染入口、桥接调用和跨仓测试。
17
+ - npm 更新仅使用已验证的 DSH CLI,十分钟超时且进程结束后才释放安装锁;返回稳定错误码并本地化显示。
18
+ - 宠物名称描述、设置、通知和菜单支持中英文,保留用户内容;提供版本号、项目链接、同系列更新弹窗及 Windows 打开文件夹修复。
19
+ - 共享宠物库轮询,仅在通知内容变化时发布快照。
20
+ - 独立使用 Playwright Chromium 冒烟测试,系统临时目录自动清理,不需要 Electron 或相邻仓库。
21
+ - 类型检查、25 项自动化测试、构建及浏览器冒烟通过;真实生图、真实模型联动和真实 npm 更新仍待验收。
22
+
23
+ ## [0.1.0] - 2026-09-09
24
+
25
+ - 提供 9 只随包内置宠物、宠物设置和基于 DSH Skill 的自定义宠物创建入口。
26
+ - 支持 Web 页内陪伴和兼容 Desktop 宠物桥接的原生浮窗。
27
+ - 提供多会话通知、跳转、停止当前轮次,以及审批、问题和计划请求处理。
28
+ - 排除子代理会话,避免打开或停止操作触发 subagent routing 错误。
29
+ - 简化创建提示词,移除“不依赖 Codex”表述。
30
+ - 提供中英文 README、Banner 与实际插件截图;本地 docs 不纳入版本控制。
31
+ - 类型检查、17 项自动化测试和构建通过;完整生图、真实模型联动与正式 Desktop 安装仍待端到端验收。
package/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
package/NOTICE ADDED
@@ -0,0 +1,14 @@
1
+ DSH Codex Pet
2
+ Copyright 2026 MichengAI contributors
3
+
4
+ 本项目原创插件代码采用 Apache License 2.0,详见 LICENSE。
5
+ assets/codex 下的宠物图集来源于 OpenAI Codex,并非本项目原创素材。
6
+ Apache License 2.0 不为这些第三方素材授予新的许可或商标权;其权利归原权利人所有。
7
+ 本项目由社区维护,不是 OpenAI 或 DeepSeek 官方产品。
8
+
9
+ Original plugin code is licensed under the Apache License, Version 2.0.
10
+ The pet artwork under assets/codex originates from OpenAI Codex and is not
11
+ original artwork of this project. This project's Apache License does not
12
+ grant new rights to that third-party artwork or its trademarks. Those rights
13
+ remain with their respective owners. This is a community-maintained project,
14
+ not an official OpenAI or DeepSeek product.
package/README.md CHANGED
@@ -1,208 +1,152 @@
1
- <p align="center">
2
- <img src="assets/branding/dsh-codex-pet-banner.png" alt="DSH Codex Pet — a companion for your tasks" width="100%">
3
- </p>
4
-
5
- <div align="center">
6
-
7
- # DSH Codex Pet
8
-
9
- **A little companion for your DeepSeek Harness tasks.**
10
-
11
- [简体中文](README.zh-CN.md) · [Screenshots](#screenshots) · [Features](#features) · [Installation](#installation) · [Usage](#usage) · [Development](#development) · [Changelog](CHANGELOG.md)
12
-
13
- [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/deepseek-ai/deepseek-harness)
14
- [![Node.js 22.19+](https://img.shields.io/badge/Node.js-22.19%2B-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/)
15
- [![Development preview](https://img.shields.io/badge/Status-Development%20preview-d97706.svg)](#validation-and-current-limits)
16
-
17
- </div>
18
-
19
- DSH Codex Pet brings a pet library, task notifications, and a Skill-based creation flow to [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). All nine built-in Codex pet sprite sheets ship with the plugin. Users do not need to install Codex.
20
-
21
- ## Features
22
-
23
- - **Nine built-in pets**: choose a companion and adjust its size in pet settings. Assets are bundled locally.
24
- - **In-page companion**: the plugin displays pets within DSH Web and exposes a consumer API. External hosts own their window and IPC adapters.
25
- - **Multiple tasks at a glance**: follow running tasks, completion, errors, and requests that need your attention. An empty notification list leaves only the pet visible.
26
- - **Act from the notification**: open the associated task, stop its current turn, or handle supported approval, question, and plan requests.
27
- - **Quiet when you need it**: dismiss an individual reminder without stopping its task; collapse or restore the pet through its menu or settings.
28
- - **Create your own companion**: describe a pet in settings and start a dedicated DSH task using the bundled `hatch-pet` Skill.
29
- - **Small interactions**: drag to move, double-click to jump, and right-click for the pet menu.
30
-
31
- ## Screenshots
32
-
33
- ### Multiple task notifications
34
-
35
- See running tasks beside your companion, with separate controls to open the conversation, stop its current turn, or dismiss its reminder.
36
-
37
- <p align="center">
38
- <img src="assets/screenshots/pet-notifications.png" alt="A pet with two running task notifications" width="403">
39
- </p>
40
-
41
- ### Pet settings
42
-
43
- Choose from the nine built-in pets, access the custom pet directory, and adjust the pet size.
44
-
45
- ![Pet library and appearance settings](assets/screenshots/pet-settings.png)
46
-
47
- ### A companion in your conversation
48
-
49
- Keep working in DSH while the pet and task notifications remain in the corner of the page.
50
-
51
- ![Pet and task notifications alongside a DSH conversation](assets/screenshots/pet-conversation.png)
52
-
53
- ## DSH product ecosystem
54
-
55
- Install plugins as needed in an existing DeepSeek Harness environment. External consumers may integrate the pet API independently.
56
-
57
- | Plugin | What you can do |
58
- | --- | --- |
59
- | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | Organize projects and conversations and navigate tasks |
60
- | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | Send tasks and receive replies through messaging platforms |
61
- | [Automation](https://github.com/MichengAI/dsh-automation) | Schedule tasks and review their runs |
62
- | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | Find, enable, create, and import local skills |
63
- | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | Search, restore, and manage archived conversations |
64
- | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | Choose specialists for a task |
65
- | [BTW](https://github.com/MichengAI/dsh-btw) | Ask side questions in the current context |
66
- | [Simplify](https://github.com/MichengAI/dsh-simplify) | Improve code within your Git changes |
67
- | [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | Keep a companion nearby and handle task notifications |
68
-
69
- ## Prerequisites
70
-
71
- - DeepSeek Harness with its Web interface and the `dsh` command available.
72
- - Node.js **22.19 or newer** for building from source.
73
- - A configured image-generation tool in DSH to create custom pets.
74
-
75
- ## Installation
76
-
77
- Compatibility: the host must provide the `locale` client service and support function-valued `settings.section` labels. Local contract checks used `@deepseek-ai/cordis 4.0.2` and `@deepseek-ai/dsh-client-locale 0.1.2-rc.1`, plus the community DSH Codex UI settings implementation. These are checked component versions, not a verified minimum DSH release. Hosts without the locale service are not supported.
78
-
79
- Automatic updates use `--config.minimumReleaseAge=0` for that install command so a newly published version can be installed immediately. This bypasses pnpm’s release-age delay for the command without changing the global configuration. The package name, npm registry, and resolved version remain fixed by the server.
80
-
81
- Version 0.1.1 includes the settings, localization, npm updater, and consumer API changes described here; see the [changelog](CHANGELOG.md).
82
-
83
- The current version is **0.1.1**, available on [npm](https://www.npmjs.com/package/@michengai/dsh-codex-pet). See [GitHub Releases](https://github.com/MichengAI/dsh-codex-pet/releases) for release notes. Replace `web` below with your actual DSH profile.
84
-
85
- Run `dsh plugin --profile web add @michengai/dsh-codex-pet@latest --registry=https://registry.npmjs.org/ --ignore-scripts`, then reload DSH. The source build instructions follow.
86
-
87
- ### Ask an agent to install it
88
-
89
- ```text
90
- Install DSH Codex Pet from my local source checkout into the DSH web profile. In that checkout, run npm ci, npm run check, npm test, and npm pack. If all checks pass, install the generated michengai-dsh-codex-pet-0.1.1.tgz using dsh plugin --profile web add .\michengai-dsh-codex-pet-0.1.1.tgz --ignore-scripts. Run dsh --profile web --dump-config and confirm michengai-codex-pet is present. Explain how to reload DSH and open pet settings. Preserve existing tasks and user data.
91
- ```
92
-
93
- ### Build and install manually
94
-
95
- Run from the project root:
96
-
97
- ```powershell
98
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
99
- $OutputEncoding = [System.Text.Encoding]::UTF8
100
-
101
- npm ci
102
- npm run check
103
- npm test
104
- npm pack
105
- dsh plugin --profile web add .\michengai-dsh-codex-pet-0.1.1.tgz --ignore-scripts
106
- dsh --profile web --dump-config
107
- ```
108
-
109
- Stop if any command fails. `npm pack` builds the plugin and checks that the nine sprite sheets and creation Skill are present. The generated archive includes the runtime assets.
110
-
111
- ### Reloading
112
-
113
- After active tasks finish, restart the relevant DSH Web service and refresh its Web interface. A browser refresh alone does not replace an already loaded Host module.
114
-
115
- ## Usage
116
-
117
- Open **Settings → Pets** (`宠物` in the current UI), or open settings from the pet's right-click menu.
118
-
119
- | Goal | Action |
120
- | --- | --- |
121
- | Pick a companion | Select a pet in settings and adjust its size. |
122
- | Move or play | Drag the pet to move it; double-click to jump. |
123
- | Read task updates | Read the notification bubbles; expand the list when several tasks need attention. |
124
- | Continue a conversation | Click its notification or reply control to open the corresponding DSH task. |
125
- | Handle a request | Open the request details and answer the supported approval, question, or plan prompt. |
126
- | Stop a task turn | Click the stop control on that running task's notification. |
127
- | Dismiss a reminder | Click its close control. The task continues running. |
128
- | Hide or restore the pet | Use the right-click menu or pet settings. |
129
-
130
- The pet is a notification and action surface. Start new conversations and write follow-up messages in the main DSH interface.
131
-
132
- ### Create a custom pet
133
-
134
- 1. Open pet settings, click **Create** (`创建`), and describe the companion.
135
- 2. Click **Create in DSH** (`在 DSH 中创建`). The plugin opens a dedicated task and sends the bundled Skill instructions.
136
- 3. Follow that task's progress. Creation uses DSH's configured model and image tools.
137
- 4. Once the pet files are saved, refresh the pet library and select the new companion.
138
-
139
- The bundled `skills/hatch-pet/SKILL.md` is adapted for DSH and the compatible sprite-sheet format. The creation flow does not invoke the Codex CLI. A missing image tool must be resolved in DSH; opening the creation task alone does not mean a pet has been generated.
140
-
141
- ## Data and assets
142
-
143
- - Built-in sprite sheets: `assets/codex/`, included with the plugin.
144
- - Custom pets: `${DSH_HOME}\codex-pet\pets`; when `DSH_HOME` is unset, the base directory is the user's `.dsh` directory.
145
- - Existing Codex pets are not automatically read, moved, or migrated.
146
- - Uninstalling the plugin leaves custom pet files and configuration in place.
147
-
148
- The plugin is independently implemented and community maintained. The bundled Codex pet artwork comes from Codex; it is not original artwork by this project. This project is not an official OpenAI or DeepSeek product.
149
-
150
- ## Plugin updates
151
-
152
- Pet settings show the running version, GitHub and issue links, and **Check for updates**. The updater queries npm and installs into the current DSH profile using the verified DSH CLI. Unsupported hosts can copy a manual update command. Wait for active tasks to finish before installing an update; reload DSH when prompted.
153
-
154
- ## Uninstallation
155
-
156
- ```powershell
157
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
158
- $OutputEncoding = [System.Text.Encoding]::UTF8
159
-
160
- dsh plugin --profile web remove @michengai/dsh-codex-pet
161
- ```
162
-
163
- Reload DSH afterward. Keep your DSH data directory when switching versions.
164
-
165
- ## Development
166
-
167
- ```powershell
168
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
169
- $OutputEncoding = [System.Text.Encoding]::UTF8
170
-
171
- npm ci
172
- npm run check
173
- npm test
174
- npm run build
175
- ```
176
-
177
- - `src/`: Host service, pet settings, animation, and task notifications.
178
- - `skills/`: the bundled pet creation Skill.
179
- - `test/`: library, creation, and notification regression tests.
180
- - `scripts/`: build, asset maintenance, package verification, and isolated Electron smoke checks.
181
- - `lib/`: generated runtime output; edit `src/` instead.
182
-
183
- There is no standalone HTML preview or native window entry. Verify the plugin inside DSH. `assets:import` is a maintainer command for updating original assets, not an installation requirement.
184
-
185
- For CodeGraph, run `codegraph init .` once, `codegraph sync .` after changes, and `codegraph status .` to check freshness. The index and local project documentation under `docs/` are excluded from Git.
186
-
187
- ## Validation and current limits
188
-
189
- Type checking, 25 automated tests, the build, and controlled browser client interaction checks have passed. These cover task notifications and the creation request flow. Complete image generation, real-model task interaction and real npm updates still need end-to-end acceptance testing.
190
-
191
- ## Browser smoke test
192
-
193
- After `npm ci`, run `npx playwright install chromium`, then `npm run smoke`. Playwright is a development dependency of this project. The test uses headless Chromium and a unique system temporary directory, cleaned after the test process exits. No Electron, sibling repository, `.preview`, or docs output is required.
194
-
195
- ## Consumer API v1
196
-
197
- The plugin publishes `window.dshPet` in the DSH page and emits `dsh-pet-ready` / `dsh-pet-disposed`. Consumers subscribe and render independently; the plugin never imports or probes a consumer. Previous native window routes and window bridges have been removed. Existing native adapters must migrate to this contract.
198
-
199
- | Method | Contract |
200
- | --- | --- |
201
- | `getSnapshot()` | Returns a copied `{pet, config, language, notifications}` or `null` before loading/after disposal. Resolve relative pet asset URLs against the DSH page origin. |
202
- | `subscribe(listener)` | Receives changed snapshots or `null` on disposal; returns an unsubscribe function. Read the initial snapshot separately. |
203
- | `command(value)` | Executes notification commands (`open`, `stop`, `dismiss`, `restore`, `approve`, `reject`, `answer`, `sort`). Targeted commands require the current notification `id` and `token`; request answers also require `requestKey`. Validation and rejection stay in the plugin. |
204
- | `updateConfig(value)` | Updates pet settings through the existing validated Host API. |
205
- | `openSettings()` | Opens plugin settings in DSH. |
206
- | `acquireDisplay()` | Hides only the page overlay and returns an idempotent release function. Call release when disconnecting; the overlay returns after all consumers release. This does not change persisted visibility. |
207
-
208
- Consumers own their renderer, native window, IPC validation, and disconnect cleanup. The interface carries no native window implementation. User titles, questions, and answer options remain unchanged; the `language` field identifies the display locale.
1
+ <p align="center">
2
+ <img src="assets/branding/dsh-codex-pet-banner.png" alt="DSH Codex Pet" width="100%">
3
+ </p>
4
+
5
+ <div align="center">
6
+
7
+ # DSH Codex Pet
8
+
9
+ **A little companion for your DeepSeek Harness tasks**
10
+
11
+ [简体中文](README.zh-CN.md) · [Changelog](CHANGELOG.md) · [Apache-2.0](LICENSE)
12
+
13
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE)
14
+ [![npm package](https://img.shields.io/npm/v/%40michengai%2Fdsh-codex-pet.svg?label=npm%20package)](https://www.npmjs.com/package/@michengai/dsh-codex-pet)
15
+ [![npm downloads](https://img.shields.io/npm/dt/%40michengai%2Fdsh-codex-pet.svg?label=npm%20downloads)](https://www.npmjs.com/package/@michengai/dsh-codex-pet)
16
+ [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/MichengAI/dsh-codex-pet)
17
+ [![Node.js 22.19+](https://img.shields.io/badge/Node.js-22.19%2B-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/)
18
+
19
+ </div>
20
+
21
+ > DSH Codex Pet is a community-maintained pet plugin for DeepSeek Harness (DSH), not an official OpenAI or DeepSeek AI product.
22
+
23
+ ## Features
24
+
25
+ Keep a companion nearby while you work in DSH, follow task progress, and handle requests that need your attention. Choose a built-in pet or create your own with a Skill.
26
+
27
+ - **Nine built-in pets**: choose a companion and adjust its size in pet settings. Assets are bundled locally.
28
+ - **In-page companion**: keep a companion in DSH Web. Floating desktop pets require a desktop app with pet support.
29
+ - **Multiple tasks at a glance**: follow running tasks, completion, errors, and requests that need your attention. An empty notification list leaves only the pet visible.
30
+ - **Act from the notification**: open the associated task, stop its current turn, or handle supported approval, question, and plan requests.
31
+ - **Quiet when you need it**: dismiss an individual reminder without stopping its task; collapse or restore the pet through its menu or settings.
32
+ - **Create your own companion**: describe a pet in settings and start a dedicated DSH task using the bundled `hatch-pet` Skill.
33
+ - **Small interactions**: drag to move, double-click to jump, and right-click for the pet menu.
34
+
35
+ ## Screenshots
36
+
37
+ ### Multiple task notifications
38
+
39
+ See running tasks beside your companion, with separate controls to open the conversation, stop its current turn, or dismiss its reminder.
40
+
41
+ <p align="center">
42
+ <img src="assets/screenshots/pet-notifications.png" alt="A pet with two running task notifications" width="403">
43
+ </p>
44
+
45
+ ### Pet settings
46
+
47
+ Choose from the nine built-in pets, access the custom pet directory, and adjust the pet size.
48
+
49
+ ![Pet library and appearance settings](assets/screenshots/pet-settings.png)
50
+
51
+ ### A companion in your conversation
52
+
53
+ Keep working in DSH while the pet and task notifications remain in the corner of the page.
54
+
55
+ ![Pet and task notifications alongside a DSH conversation](assets/screenshots/pet-conversation.png)
56
+
57
+ ## DSH product ecosystem
58
+
59
+ Add plugins as needed to your existing DeepSeek Harness environment.
60
+
61
+ | Plugin | What you can do |
62
+ | --- | --- |
63
+ | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | Organize projects and conversations and navigate tasks |
64
+ | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | Send tasks and receive replies through messaging platforms |
65
+ | [Automation](https://github.com/MichengAI/dsh-automation) | Schedule tasks and review their runs |
66
+ | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | Find, enable, create, and import local skills |
67
+ | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | Search, restore, and manage archived conversations |
68
+ | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | Choose specialists for a task |
69
+ | [BTW](https://github.com/MichengAI/dsh-btw) | Ask side questions in the current context |
70
+ | [Simplify](https://github.com/MichengAI/dsh-simplify) | Improve code within your Git changes |
71
+ | [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | Keep a companion nearby and handle task notifications |
72
+
73
+ ## Installation
74
+
75
+ DeepSeek Harness **`0.1.5-rc.2`** is supported; older versions are outside the current support range. Make sure the `dsh` command is available. The example uses the `web` profile; replace it with your target profile.
76
+
77
+ ```powershell
78
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
79
+ $OutputEncoding = [System.Text.Encoding]::UTF8
80
+
81
+ dsh plugin --profile web add @michengai/dsh-codex-pet@latest --registry=https://registry.npmjs.org/ --ignore-scripts
82
+ ```
83
+
84
+ Restart DSH after installation, then open **Settings → Pets**.
85
+
86
+ ## Usage
87
+
88
+ Open **Settings → Pets** (`宠物` in the current UI), or open settings from the pet's right-click menu.
89
+
90
+ | Goal | Action |
91
+ | --- | --- |
92
+ | Pick a companion | Select a pet in settings and adjust its size. |
93
+ | Move or play | Drag the pet to move it; double-click to jump. |
94
+ | Read task updates | Read the notification bubbles; expand the list when several tasks need attention. |
95
+ | Continue a conversation | Click its notification or reply control to open the corresponding DSH task. |
96
+ | Handle a request | Open the request details and answer the supported approval, question, or plan prompt. |
97
+ | Stop a task turn | Click the stop control on that running task's notification. |
98
+ | Dismiss a reminder | Click its close control. The task continues running. |
99
+ | Hide or restore the pet | Use the right-click menu or pet settings. |
100
+
101
+ The pet is a notification and action surface. Start new conversations and write follow-up messages in the main DSH interface.
102
+
103
+ Known upstream limitation: cancelling before the model returns an HTTP response in DSH `0.1.5-rc.2` can report a non-JSON-serializable `turn/end` error, which the pet displays as a failure notification. Cancellation after streaming has started passed end-to-end validation.
104
+
105
+ ### Create a custom pet
106
+
107
+ 1. Open pet settings, click **Create** (`创建`), and describe the companion.
108
+ 2. Click **Create in DSH** (`在 DSH 中创建`). The plugin opens a dedicated task and sends the bundled Skill instructions.
109
+ 3. Follow that task's progress. Creation uses DSH's configured model and image tools.
110
+ 4. Once the pet files are saved, refresh the pet library and select the new companion.
111
+
112
+ Creating pets requires an image-generation tool configured in DSH.
113
+
114
+ ## Updates and uninstallation
115
+
116
+ Use **Settings → Pets → Check for updates**. If automatic installation is unavailable, copy the update command shown in the dialog. Wait for running tasks to finish, then update and restart DSH as prompted.
117
+
118
+ To uninstall:
119
+
120
+ ```powershell
121
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
122
+ $OutputEncoding = [System.Text.Encoding]::UTF8
123
+
124
+ dsh plugin --profile web remove @michengai/dsh-codex-pet
125
+ ```
126
+
127
+ Custom pets are stored in `.dsh/codex-pet/pets` under your user directory by default; open the folder from pet settings. If `DSH_HOME` is set, pets are stored in its `codex-pet/pets` folder. Uninstalling keeps those files and settings.
128
+
129
+ ## Development checks
130
+
131
+ Development dependencies and the lockfile pin DSH `0.1.5-rc.2`. Use `npm ci` to reproduce the environment; `npm run check` also checks the plugin against official service types.
132
+
133
+ ```powershell
134
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
135
+ $OutputEncoding = [System.Text.Encoding]::UTF8
136
+ npm ci
137
+ npx playwright install chromium
138
+ npm run check
139
+ npm test
140
+ npm run smoke
141
+ npm run test:e2e
142
+ ```
143
+
144
+ End-to-end tests also require pnpm on PATH (CI uses `11.25.0`). They install the local package through the official CLI and boot the full DSH Web app to test pet settings, persistence, session creation, question responses, completion and failure notifications, and cancellation. Only the external model HTTP service is replaced with a local fixture; no paid model or image generation is used. Tests use a separate `DSH_HOME` and keep logs and screenshots in the ignored `.preview/e2e-latest-*` directory without changing your everyday profile.
145
+
146
+ The official type check verifies structural compatibility, not service lifecycle behavior. E2E runs as a separate CI job with a 25-minute budget; publishing requires a successful main push CI run for the exact tagged commit, including both language jobs. Wait for CI before tagging; missing, running, skipped, or failed checks block publishing. Windows Profile link errors (`EBUSY`) retry after 5 seconds within a shared 120-second startup budget; shutdown may require up to 10 additional seconds. This mitigates transient failures without claiming Windows stability. Other failures remain failures. Reports retain the locale, original failure, retry observations, and separate cleanup errors. PowerShell (`powershell.exe` on Windows, `pwsh` elsewhere) retains the latest five completed, marked runs. Unmarked historical evidence, unfinished runs, and directories containing `.keep` are preserved; pruning never follows directory links. Add `.keep` to release acceptance evidence before subsequent runs.
147
+
148
+ Set `DSH_PET_E2E_LOCALE` to `zh-CN` (default) or `en-US` to choose the browser language; CI tests both.
149
+
150
+ ## License
151
+
152
+ Original plugin code is licensed under [Apache License 2.0](LICENSE). Bundled pet artwork originates from OpenAI Codex and is excluded from this project's Apache-2.0 license grant; see [NOTICE](NOTICE).
package/README.zh-CN.md CHANGED
@@ -1,210 +1,152 @@
1
- <p align="center">
2
- <img src="assets/branding/dsh-codex-pet-banner.png" alt="DSH Codex Pet:任务在跑,宠物相伴" width="100%">
3
- </p>
4
-
5
- <div align="center">
6
-
7
- # DSH Codex Pet
8
-
9
- **任务在跑,宠物相伴。让 DeepSeek Harness 的任务进展触手可及。**
10
-
11
- [English](README.md) · [界面预览](#界面预览) · [功能概览](#功能概览) · [安装](#安装) · [使用](#使用) · [开发](#开发) · [更新日志](CHANGELOG.zh-CN.md)
12
-
13
- [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/deepseek-ai/deepseek-harness)
14
- [![Node.js 22.19+](https://img.shields.io/badge/Node.js-22.19%2B-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/)
15
- [![开发预览版](https://img.shields.io/badge/Status-Development%20preview-d97706.svg)](#验证与当前边界)
16
-
17
- </div>
18
-
19
- DSH Codex Pet 为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供宠物库、任务通知和基于 Skill 的宠物创建功能。全部 9 只 Codex 内置宠物图集随插件提供,使用人员无需安装 Codex。
20
-
21
- ## 功能概览
22
-
23
- - **9 只内置宠物**:在宠物设置中选择伙伴、调整大小,资源随插件本地打包。
24
- - **页内陪伴**:插件在 DSH Web 页面内显示宠物,并提供消费者接口;外部宿主自行适配窗口与 IPC。
25
- - **多会话动态**:查看运行中、完成、错误和待处理请求;没有通知时只显示宠物。
26
- - **就近处理任务**:从通知打开对应会话、停止当前轮次,或处理支持的审批、问题和计划请求。
27
- - **按需安静**:关闭单条提醒不会停止任务;通过菜单或设置收起、恢复宠物。
28
- - **创建自己的伙伴**:在设置中描述宠物,通过随包 `hatch-pet` Skill 发起独立 DSH 创建任务。
29
- - **轻量互动**:拖动移动、双击跳跃、右键打开宠物菜单。
30
-
31
- ## 界面预览
32
-
33
- ### 多会话提醒
34
-
35
- 宠物旁集中展示运行中的任务,可分别打开会话、停止当前轮次或关闭提醒。
36
-
37
- <p align="center">
38
- <img src="assets/screenshots/pet-notifications.png" alt="宠物与两条运行中的任务通知" width="403">
39
- </p>
40
-
41
- ### 宠物设置
42
-
43
- 选择 9 只内置宠物、打开自定义宠物目录,并调整宠物大小。
44
-
45
- ![宠物库与外观设置](assets/screenshots/pet-settings.png)
46
-
47
- ### 会话内陪伴
48
-
49
- 在 DSH 中继续工作,宠物和任务通知显示在页面角落。
50
-
51
- ![DSH 会话中的宠物与任务通知](assets/screenshots/pet-conversation.png)
52
-
53
- ## DSH 产品生态
54
-
55
- 为已有 DeepSeek Harness 环境按需安装插件;外部消费者可独立接入宠物接口。
56
-
57
- | 插件 | 你可以用它做什么 |
58
- | --- | --- |
59
- | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | 整理项目与会话,导航任务 |
60
- | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | 从消息平台下任务、收回复 |
61
- | [Automation](https://github.com/MichengAI/dsh-automation) | 按计划执行任务,查看运行结果 |
62
- | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | 查找、启停、创建和导入本机技能 |
63
- | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | 搜索、恢复和管理已归档会话 |
64
- | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | 为任务选择专业角色 |
65
- | [BTW](https://github.com/MichengAI/dsh-btw) | 在当前上下文中临时旁问 |
66
- | [Simplify](https://github.com/MichengAI/dsh-simplify) | 整理 Git 改动范围内的代码 |
67
- | [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | 宠物陪伴,查看和处理任务通知 |
68
-
69
- ## 前置条件
70
-
71
- - 已安装 DeepSeek Harness,可使用 Web 界面和 `dsh` 命令。
72
- - 从源码构建需要 **Node.js 22.19 或更高版本**。
73
- - 创建自定义宠物需要在 DSH 中配置可用的图像生成工具。
74
-
75
- ## 安装
76
-
77
- 兼容要求:宿主必须提供 `locale` 客户端服务,并支持函数形式的 `settings.section` 标签。本地契约核验使用 `@deepseek-ai/cordis 4.0.2`、`@deepseek-ai/dsh-client-locale 0.1.2-rc.1` 及社区 DSH Codex UI 设置实现。这些是已核验组件版本,不代表已经验证的最低 DSH 版本;不支持缺少 locale 服务的宿主。
78
-
79
- 自动更新命令使用 `--config.minimumReleaseAge=0`,以便立即安装刚发布的版本;该参数仅对本次安装跳过 pnpm 的发布时间等待,不改写全局配置。包名、npm registry 和解析后的版本仍由服务端固定。
80
-
81
- v0.1.1 安装包包含本文描述的设置、本地化、npm 更新器和消费者接口改动,详见[更新日志](CHANGELOG.zh-CN.md)。
82
-
83
- 当前版本为 **0.1.1**,通过 [npm](https://www.npmjs.com/package/@michengai/dsh-codex-pet) 安装;版本记录见 [GitHub Releases](https://github.com/MichengAI/dsh-codex-pet/releases)。以下命令使用 `web` profile,请按实际环境替换。
84
-
85
- 执行 `dsh plugin --profile web add @michengai/dsh-codex-pet@latest --registry=https://registry.npmjs.org/ --ignore-scripts`,然后重新加载 DSH。也可按下面的步骤从源码构建。
86
-
87
- ### 让 Agent 帮你安装
88
-
89
- ```text
90
- 请从我的本地源码目录将 DSH Codex Pet 安装到 DSH 的 web profile。在源码目录依次执行 npm ci、npm run check、npm test 和 npm pack。检查通过后,执行 dsh plugin --profile web add .\michengai-dsh-codex-pet-0.1.1.tgz --ignore-scripts 安装生成的包,再执行 dsh --profile web --dump-config,确认包含 michengai-codex-pet。说明如何重新加载 DSH 并打开宠物设置,保留已有任务和用户数据。
91
- ```
92
-
93
- ### 手动构建并安装
94
-
95
- 在项目根目录执行:
96
-
97
- ```powershell
98
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
99
- $OutputEncoding = [System.Text.Encoding]::UTF8
100
-
101
- npm ci
102
- npm run check
103
- npm test
104
- npm pack
105
- dsh plugin --profile web add .\michengai-dsh-codex-pet-0.1.1.tgz --ignore-scripts
106
- dsh --profile web --dump-config
107
- ```
108
-
109
- 任一步骤失败时先停止并解决错误。`npm pack` 会构建插件并检查 9 只图集和创建 Skill,生成的安装包包含运行所需资源。
110
-
111
- ### 重新加载
112
-
113
- 等待正在执行的任务结束后,重启对应 DSH Web 服务并刷新页面。仅刷新浏览器不能替换已经加载的 Host 模块。
114
-
115
- ## 使用
116
-
117
- 打开 **设置 → 宠物**,也可从宠物右键菜单打开设置。
118
-
119
- | 目标 | 操作 |
120
- | --- | --- |
121
- | 选择伙伴 | 在设置中选择宠物并调整大小。 |
122
- | 移动与互动 | 拖动宠物移动,双击跳跃。 |
123
- | 查看任务动态 | 阅读通知气泡;多个任务需要关注时展开列表。 |
124
- | 继续会话 | 点击通知或回复按钮,打开对应的 DSH 任务。 |
125
- | 处理请求 | 展开请求详情,处理支持的审批、问题或计划。 |
126
- | 停止任务轮次 | 点击对应运行中通知的停止按钮。 |
127
- | 关闭提醒 | 点击通知关闭按钮,任务仍继续运行。 |
128
- | 收起或恢复宠物 | 使用右键菜单或宠物设置。 |
129
-
130
- 宠物承担通知和待处理操作。新建会话、输入后续消息仍在 DSH 主界面完成。
131
-
132
- ### 创建自定义宠物
133
-
134
- 1. 打开宠物设置,点击 **创建**,描述想要的伙伴。
135
- 2. 点击 **在 DSH 中创建**,插件会打开独立任务并发送随包 Skill 指令。
136
- 3. 在该任务中查看进展,创建使用 DSH 当前配置的模型和图像工具。
137
- 4. 宠物文件生成并保存后,刷新宠物库并选择新伙伴。
138
-
139
- 随包 `skills/hatch-pet/SKILL.md` 已针对 DSH 和兼容图集格式适配,创建流程不调用 Codex CLI。缺少生图工具时需要先完善 DSH 配置;成功打开创建任务不等于宠物已经生成。
140
-
141
- ## 数据与资源
142
-
143
- - 内置图集:`assets/codex/`,随插件提供。
144
- - 自定义宠物:`${DSH_HOME}\codex-pet\pets`;未设置 `DSH_HOME` 时,以用户目录下的 `.dsh` 为基础目录。
145
- - 不自动读取、移动或迁移原有 Codex 宠物。
146
- - 卸载插件会保留自定义宠物文件和配置。
147
-
148
- 插件代码独立实现、由社区维护。随包 Codex 宠物图集来源于 Codex,并非本项目原创素材。本项目不是 OpenAI 或 DeepSeek 官方产品。
149
-
150
- ## 插件更新
151
-
152
- 宠物设置页显示当前运行版本、GitHub 和问题反馈链接,以及**检查更新**入口。更新器查询 npm,通过已验证的 DSH CLI 安装到当前 profile;npm 尚未发布时会明确提示。宿主不支持在线安装时,可复制手动更新命令。请等待任务结束后更新,并按提示重新加载 DSH。
153
-
154
- ## 卸载
155
-
156
- ```powershell
157
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
158
- $OutputEncoding = [System.Text.Encoding]::UTF8
159
-
160
- dsh plugin --profile web remove @michengai/dsh-codex-pet
161
- ```
162
-
163
- 完成后重新加载 DSH。切换版本时保留 DSH 数据目录。
164
-
165
- ## 开发
166
-
167
- ```powershell
168
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
169
- $OutputEncoding = [System.Text.Encoding]::UTF8
170
-
171
- npm ci
172
- npm run check
173
- npm test
174
- npm run build
175
- ```
176
-
177
- - `src/`:Host 服务、宠物设置、动画和任务通知。
178
- - `skills/`:随包宠物创建 Skill。
179
- - `test/`:宠物库、创建和通知回归测试。
180
- - `scripts/`:构建、资源维护、安装包校验和隔离 Electron smoke 检查。
181
- - `lib/`:生成的运行产物,修改源码应在 `src/` 中进行。
182
-
183
- 项目不提供独立 HTML 预览页或原生窗口入口,请在 DSH 内验证。`assets:import` 仅供维护者更新原始资源,使用者安装时无需执行。
184
-
185
- 使用 CodeGraph 时,首次运行 `codegraph init .`,修改后运行 `codegraph sync .`,通过 `codegraph status .` 检查索引新鲜度。索引与 `docs/` 下的本地项目文档均不纳入 Git。
186
-
187
- ## 验证与当前边界
188
-
189
- 类型检查、25 项自动化测试、构建和受控浏览器客户端交互验证已通过,覆盖任务通知和创建请求流程。完整图像生成、真实模型任务联动及真实 npm 更新仍待端到端验收。
190
-
191
-
192
-
193
- ## 浏览器冒烟测试
194
-
195
- 执行 `npm ci` 后,运行 `npx playwright install chromium`,再执行 `npm run smoke`。Playwright 是本项目的开发依赖,测试使用无头 Chromium 和独立系统临时目录,测试进程退出后自动清理;不需要 Electron、相邻仓库、`.preview` 或 docs 输出。
196
-
197
- ## 消费者接口 v1
198
-
199
- 插件在 DSH 页面提供 `window.dshPet`,发布 `dsh-pet-ready` / `dsh-pet-disposed` 事件。消费者主动订阅和展示,插件不导入或探测消费者。旧原生窗口路由与窗口桥接已移除,已有原生适配需迁移到此接口。
200
-
201
- | 方法 | 约定 |
202
- | --- | --- |
203
- | `getSnapshot()` | 返回独立副本 `{pet, config, language, notifications}`;未加载或卸载后为 `null`。宠物资源相对 URL 按 DSH 页面 origin 解析。 |
204
- | `subscribe(listener)` | 内容变化时通知,卸载时收到 `null`;返回退订函数。初始状态另行调用 getSnapshot。 |
205
- | `command(value)` | 执行通知操作:open、stop、dismiss、restore、approve、reject、answer、sort。目标操作携带当前通知 id、token;请求回答另带 requestKey。校验和拒绝由插件执行。 |
206
- | `updateConfig(value)` | 通过现有 Host 校验接口更新宠物设置。 |
207
- | `openSettings()` | 在 DSH 打开宠物设置。 |
208
- | `acquireDisplay()` | 暂时隐藏页内浮层,返回幂等释放函数。消费者断开时必须释放,所有接管者释放后恢复页内显示,不改持久化可见性配置。 |
209
-
210
- 消费者负责自身渲染器、原生窗口、IPC 校验和断开清理;接口不携带原生窗口实现。用户标题、问题与回答选项保持原文,language 字段提供显示语言。
1
+ <p align="center">
2
+ <img src="assets/branding/dsh-codex-pet-banner.png" alt="DSH Codex Pet" width="100%">
3
+ </p>
4
+
5
+ <div align="center">
6
+
7
+ # DSH Codex Pet
8
+
9
+ **让宠物陪你处理 DeepSeek Harness 任务**
10
+
11
+ [English](README.md) · [更新日志](CHANGELOG.zh-CN.md) · [Apache-2.0](LICENSE)
12
+
13
+ [![许可证:Apache-2.0](https://img.shields.io/badge/许可证-Apache--2.0-blue.svg)](LICENSE)
14
+ [![npm package](https://img.shields.io/npm/v/%40michengai%2Fdsh-codex-pet.svg?label=npm%20package)](https://www.npmjs.com/package/@michengai/dsh-codex-pet)
15
+ [![npm 下载量](https://img.shields.io/npm/dt/%40michengai%2Fdsh-codex-pet.svg?label=npm%20%E4%B8%8B%E8%BD%BD%E9%87%8F)](https://www.npmjs.com/package/@michengai/dsh-codex-pet)
16
+ [![DSH Web Plugin](https://img.shields.io/badge/DSH%20Web-Plugin-0f766e.svg)](https://github.com/MichengAI/dsh-codex-pet)
17
+ [![Node.js 22.19+](https://img.shields.io/badge/Node.js-22.19%2B-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/)
18
+
19
+ </div>
20
+
21
+ > DSH Codex Pet 是社区维护的 DeepSeek Harness(DSH)宠物插件,并非 OpenAI 或 DeepSeek AI 官方产品。
22
+
23
+ ## 功能概览
24
+
25
+ 让宠物陪你处理 DSH 任务,随时查看会话进展和待处理请求。你可以选择内置宠物,也可以通过 Skill 创建自己的伙伴。
26
+
27
+ - **9 只内置宠物**:在宠物设置中选择伙伴、调整大小,资源随插件本地打包。
28
+ - **页内陪伴**:在 DSH 网页中陪伴工作;桌面浮窗需要使用支持宠物功能的桌面端。
29
+ - **多会话动态**:查看运行中、完成、错误和待处理请求;没有通知时只显示宠物。
30
+ - **就近处理任务**:从通知打开对应会话、停止当前轮次,或处理支持的审批、问题和计划请求。
31
+ - **按需安静**:关闭单条提醒不会停止任务;通过菜单或设置收起、恢复宠物。
32
+ - **创建自己的伙伴**:在设置中描述宠物,通过随包 `hatch-pet` Skill 发起独立 DSH 创建任务。
33
+ - **轻量互动**:拖动移动、双击跳跃、右键打开宠物菜单。
34
+
35
+ ## 界面预览
36
+
37
+ ### 多会话提醒
38
+
39
+ 宠物旁集中展示运行中的任务,可分别打开会话、停止当前轮次或关闭提醒。
40
+
41
+ <p align="center">
42
+ <img src="assets/screenshots/pet-notifications.png" alt="宠物与两条运行中的任务通知" width="403">
43
+ </p>
44
+
45
+ ### 宠物设置
46
+
47
+ 选择 9 只内置宠物、打开自定义宠物目录,并调整宠物大小。
48
+
49
+ ![宠物库与外观设置](assets/screenshots/pet-settings.png)
50
+
51
+ ### 会话内陪伴
52
+
53
+ 在 DSH 中继续工作,宠物和任务通知显示在页面角落。
54
+
55
+ ![DSH 会话中的宠物与任务通知](assets/screenshots/pet-conversation.png)
56
+
57
+ ## DSH 产品生态
58
+
59
+ 为已有 DeepSeek Harness 环境按需添加功能。
60
+
61
+ | 插件 | 你可以用它做什么 |
62
+ | --- | --- |
63
+ | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | 整理项目与会话,导航任务 |
64
+ | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | 从消息平台下任务、收回复 |
65
+ | [Automation](https://github.com/MichengAI/dsh-automation) | 按计划执行任务,查看运行结果 |
66
+ | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | 查找、启停、创建和导入本机技能 |
67
+ | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | 搜索、恢复和管理已归档会话 |
68
+ | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | 为任务选择专业角色 |
69
+ | [BTW](https://github.com/MichengAI/dsh-btw) | 在当前上下文中临时旁问 |
70
+ | [Simplify](https://github.com/MichengAI/dsh-simplify) | 整理 Git 改动范围内的代码 |
71
+ | [Codex Pet](https://github.com/MichengAI/dsh-codex-pet) | 宠物陪伴,查看和处理任务通知 |
72
+
73
+ ## 安装
74
+
75
+ 支持 DeepSeek Harness **`0.1.5-rc.2`**,需要可使用 `dsh` 命令。旧版不在当前支持范围内。以下示例使用 `web` profile,请按实际环境替换。
76
+
77
+ ```powershell
78
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
79
+ $OutputEncoding = [System.Text.Encoding]::UTF8
80
+
81
+ dsh plugin --profile web add @michengai/dsh-codex-pet@latest --registry=https://registry.npmjs.org/ --ignore-scripts
82
+ ```
83
+
84
+ 安装后重启 DSH,再打开 **设置 → 宠物**。
85
+
86
+ ## 使用
87
+
88
+ 打开 **设置 → 宠物**,也可从宠物右键菜单打开设置。
89
+
90
+ | 目标 | 操作 |
91
+ | --- | --- |
92
+ | 选择伙伴 | 在设置中选择宠物并调整大小。 |
93
+ | 移动与互动 | 拖动宠物移动,双击跳跃。 |
94
+ | 查看任务动态 | 阅读通知气泡;多个任务需要关注时展开列表。 |
95
+ | 继续会话 | 点击通知或回复按钮,打开对应的 DSH 任务。 |
96
+ | 处理请求 | 展开请求详情,处理支持的审批、问题或计划。 |
97
+ | 停止任务轮次 | 点击对应运行中通知的停止按钮。 |
98
+ | 关闭提醒 | 点击通知关闭按钮,任务仍继续运行。 |
99
+ | 收起或恢复宠物 | 使用右键菜单或宠物设置。 |
100
+
101
+ 宠物承担通知和待处理操作。新建会话、输入后续消息仍在 DSH 主界面完成。
102
+
103
+ 已知上游边界:DSH `0.1.5-rc.2` 在模型尚未返回 HTTP 响应时停止任务,可能因 `turn/end` 数据不可 JSON 序列化而上报错误,宠物会显示失败通知。已开始流式响应时的停止操作已通过端到端验证。
104
+
105
+ ### 创建自定义宠物
106
+
107
+ 1. 打开宠物设置,点击 **创建**,描述想要的伙伴。
108
+ 2. 点击 **在 DSH 中创建**,插件会打开独立任务并发送随包 Skill 指令。
109
+ 3. 在该任务中查看进展,创建使用 DSH 当前配置的模型和图像工具。
110
+ 4. 宠物文件生成并保存后,刷新宠物库并选择新伙伴。
111
+
112
+ 创建宠物需要先在 DSH 中配置图像生成工具。
113
+
114
+ ## 更新与卸载
115
+
116
+ 在 **设置 → 宠物 → 检查更新** 中更新。若当前环境不支持在线安装,可复制界面提供的更新命令。等待正在运行的任务结束后操作,完成后按提示重启 DSH。
117
+
118
+ 卸载命令:
119
+
120
+ ```powershell
121
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
122
+ $OutputEncoding = [System.Text.Encoding]::UTF8
123
+
124
+ dsh plugin --profile web remove @michengai/dsh-codex-pet
125
+ ```
126
+
127
+ 自定义宠物默认保存在用户目录的 `.dsh/codex-pet/pets` 下,可从宠物设置打开。设置了 `DSH_HOME` 时使用该目录下的 `codex-pet/pets`。卸载插件会保留这些文件与配置。
128
+
129
+ ## 开发验证
130
+
131
+ 开发依赖和锁文件固定 DSH `0.1.5-rc.2`。使用 `npm ci` 复现,`npm run check` 同时检查插件与官方服务类型的兼容性。
132
+
133
+ ```powershell
134
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
135
+ $OutputEncoding = [System.Text.Encoding]::UTF8
136
+ npm ci
137
+ npx playwright install chromium
138
+ npm run check
139
+ npm test
140
+ npm run smoke
141
+ npm run test:e2e
142
+ ```
143
+
144
+ 端到端测试另需 PATH 中有 pnpm(CI 使用 `11.25.0`)。它通过官方 CLI 安装本地发行包、启动完整 DSH Web,验证宠物设置、持久化、创建会话、提问回传、完成与失败通知和停止任务。只有外部模型 HTTP 服务使用本地夹具,不调用付费模型或生成图片。测试使用独立 `DSH_HOME`,日志和截图保存在忽略的 `.preview/e2e-latest-*` 下,不改动日常 Profile。
145
+
146
+ 官方类型检查验证结构兼容性,不替代服务生命周期验证。E2E 拆为独立 CI job,限时 25 分钟;发布前必须验证标签提交对应的 main push CI 成功,且中英文 job 均通过;先等待 CI,再打标签,缺失、运行中、跳过或失败的检查都会阻止发布。Windows Profile 链接错误(`EBUSY`)在共享的 120 秒启动预算内每次等待 5 秒后重试,关闭进程最多另需 10 秒;这只缓解瞬时竞争,不代表 Windows 已稳定,其他错误直接失败。报告同时保留语言、原始失败、重试记录及独立清理错误。通过 PowerShell(Windows 使用 `powershell.exe`,其他平台使用 `pwsh`)保留最近 5 次已标记并结束的运行;未标记的历史证据、未结束运行及含 `.keep` 文件的目录不回收,清理不跟随目录链接。发布验收证据应在后续运行前添加 `.keep`。
147
+
148
+ 可设置 `DSH_PET_E2E_LOCALE` 为 `zh-CN`(默认)或 `en-US` 选择浏览器语言,CI 分别验证两种语言。
149
+
150
+ ## 许可证
151
+
152
+ 原创插件代码采用 [Apache License 2.0](LICENSE)。随包宠物图集来源于 OpenAI Codex,不属于本项目授予的 Apache-2.0 许可范围,详见 [NOTICE](NOTICE)。
package/lib/client.js CHANGED
@@ -759,7 +759,7 @@ function PluginUpdateHeader({ locale }) {
759
759
  zh2 ? "\u5BA0\u7269" : "Pets",
760
760
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "dcp-version", children: [
761
761
  "v",
762
- "0.1.1"
762
+ "0.1.3"
763
763
  ] })
764
764
  ] }),
765
765
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("nav", { className: "dcp-project-links", children: [
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
- {
2
- "name": "@michengai/dsh-codex-pet",
3
- "version": "0.1.1",
4
- "description": "独立实现的 DSH 宠物插件:Codex 原始宠物库、Skill 创建、Web 页内显示与消费者接入接口",
5
- "type": "module",
1
+ {
2
+ "name": "@michengai/dsh-codex-pet",
3
+ "version": "0.1.3",
4
+ "license": "Apache-2.0",
5
+ "description": "独立实现的 DSH 宠物插件:Codex 原始宠物库、Skill 创建、Web 页内显示与消费者接入接口",
6
+ "type": "module",
6
7
  "publishConfig": {
7
8
  "access": "public",
8
9
  "registry": "https://registry.npmjs.org/"
@@ -15,64 +16,81 @@
15
16
  "bugs": {
16
17
  "url": "https://github.com/MichengAI/dsh-codex-pet/issues"
17
18
  },
18
- "main": "lib/index.js",
19
- "exports": {
20
- ".": "./lib/index.js",
21
- "./client": "./lib/client.js",
22
- "./package.json": "./package.json"
23
- },
24
- "files": [
25
- "lib",
26
- "assets/codex/*/spritesheet.webp",
27
- "assets/branding/dsh-codex-pet-banner.png",
28
- "assets/screenshots/*.png",
29
- "skills",
30
- "cordis.patch.yml",
31
- "README.md",
32
- "README.zh-CN.md",
33
- "CHANGELOG.md",
34
- "CHANGELOG.zh-CN.md"
35
- ],
36
- "dsh": {
37
- "bundle": {
38
- "patch": "./cordis.patch.yml"
39
- },
40
- "client": {
41
- "platform": "web",
42
- "inject": [
43
- "@deepseek-ai/dsh-client-runtime",
44
- "@deepseek-ai/dsh-client-ui-slots",
45
- "@deepseek-ai/dsh-client-ui-session",
46
- "@deepseek-ai/dsh-client-locale"
47
- ]
48
- }
49
- },
50
- "scripts": {
51
- "prepack": "npm run build && tsx scripts/verify-package.ts",
52
- "build": "node scripts/build.mjs",
53
- "check": "tsc --noEmit",
54
- "test": "tsx --test test/*.test.ts",
55
- "smoke": "npm run build && node scripts/run-smoke.cjs",
56
- "assets:import": "tsx scripts/import-codex.ts"
57
- },
58
- "peerDependencies": {
59
- "react": "^18.2.0",
60
- "react-dom": "^18.2.0"
61
- },
62
- "devDependencies": {
63
- "@electron/asar": "^3.4.1",
64
- "@radix-ui/react-icons": "^1.3.2",
65
- "@types/node": "^24.0.0",
66
- "@types/react": "^18.3.0",
67
- "@types/react-dom": "^18.3.0",
68
- "esbuild": "^0.25.0",
69
- "playwright": "^1.63.0",
70
- "react": "^18.3.1",
71
- "react-dom": "^18.3.1",
72
- "tsx": "^4.20.0",
73
- "typescript": "^5.9.0"
74
- },
75
- "engines": {
76
- "node": ">=22.19.0"
77
- }
78
- }
19
+ "main": "lib/index.js",
20
+ "exports": {
21
+ ".": "./lib/index.js",
22
+ "./client": "./lib/client.js",
23
+ "./package.json": "./package.json"
24
+ },
25
+ "files": [
26
+ "LICENSE",
27
+ "NOTICE",
28
+ "lib",
29
+ "assets/codex/*/spritesheet.webp",
30
+ "assets/branding/dsh-codex-pet-banner.png",
31
+ "assets/screenshots/*.png",
32
+ "skills",
33
+ "cordis.patch.yml",
34
+ "README.md",
35
+ "README.zh-CN.md",
36
+ "CHANGELOG.md",
37
+ "CHANGELOG.zh-CN.md"
38
+ ],
39
+ "dsh": {
40
+ "bundle": {
41
+ "patch": "./cordis.patch.yml"
42
+ },
43
+ "client": {
44
+ "platform": "web",
45
+ "inject": [
46
+ "@deepseek-ai/dsh-api-session-controller",
47
+ "@deepseek-ai/dsh-client-ui-renderer",
48
+ "@deepseek-ai/dsh-client-ui-session",
49
+ "@deepseek-ai/dsh-client-locale"
50
+ ]
51
+ }
52
+ },
53
+ "scripts": {
54
+ "prepack": "npm run build && tsx scripts/verify-package.ts",
55
+ "build": "node scripts/build.mjs",
56
+ "check": "tsc --noEmit",
57
+ "test": "tsx --test test/*.test.ts test/*.test.mjs",
58
+ "test:e2e": "node scripts/e2e-latest.mjs",
59
+ "smoke": "npm run build && node scripts/run-smoke.cjs",
60
+ "assets:import": "tsx scripts/import-codex.ts"
61
+ },
62
+ "peerDependencies": {
63
+ "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2",
64
+ "react": "^18.2.0",
65
+ "react-dom": "^18.2.0"
66
+ },
67
+ "peerDependenciesMeta": {
68
+ "@deepseek-ai/dsh-host-webserver": {
69
+ "optional": true
70
+ }
71
+ },
72
+ "devDependencies": {
73
+ "@deepseek-ai/cordis": "4.0.2",
74
+ "@deepseek-ai/dsh": "0.1.5-rc.2",
75
+ "@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.2",
76
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
77
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
78
+ "@deepseek-ai/dsh-client-ui-session": "0.1.5-rc.2",
79
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2",
80
+ "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2",
81
+ "@electron/asar": "^3.4.1",
82
+ "@radix-ui/react-icons": "^1.3.2",
83
+ "@types/node": "^24.0.0",
84
+ "@types/react": "^18.3.0",
85
+ "@types/react-dom": "^18.3.0",
86
+ "esbuild": "^0.25.0",
87
+ "playwright": "^1.63.0",
88
+ "react": "^18.3.1",
89
+ "react-dom": "^18.3.1",
90
+ "tsx": "^4.20.0",
91
+ "typescript": "^5.9.0"
92
+ },
93
+ "engines": {
94
+ "node": ">=22.19.0"
95
+ }
96
+ }