@gavinc-cn/touchstone-dsh 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +22 -1
  3. package/README.zh.md +12 -1
  4. package/agents.py +0 -0
  5. package/auth.py +0 -0
  6. package/board.py +1119 -93
  7. package/builtin_assets.py +0 -0
  8. package/builtin_prompts/free_style/flow.md +0 -0
  9. package/builtin_prompts/free_style/load_test.md +0 -0
  10. package/builtin_prompts/free_style/templates/bug_report_template.md +0 -0
  11. package/builtin_prompts/free_style/templates/case_template.md +0 -0
  12. package/builtin_prompts/free_style/templates/index_template.md +0 -0
  13. package/builtin_prompts/free_style/templates/load_charts_template.md +0 -0
  14. package/builtin_prompts/free_style/templates/load_index_template.md +0 -0
  15. package/builtin_prompts/free_style/templates/load_plan_template.md +0 -0
  16. package/builtin_prompts/free_style/templates/load_scenario_template.md +0 -0
  17. package/builtin_prompts/free_style/templates/status_template.md +0 -0
  18. package/chat.py +590 -17
  19. package/db.py +63 -12
  20. package/dsh-plugin/cordis.patch.yml +7 -3
  21. package/dsh-plugin/install.sh +8 -5
  22. package/dsh-plugin/lib/agent-driver.js +895 -126
  23. package/dsh-plugin/lib/client.bundle.js +94 -9
  24. package/dsh-plugin/lib/index.js +399 -20
  25. package/dsh-plugin/scripts/build.mjs +0 -0
  26. package/dsh-plugin/scripts/prepack-check.mjs +0 -0
  27. package/dsh-plugin/scripts/select-bundle.mjs +0 -0
  28. package/dsh-plugin/src/client.js +94 -9
  29. package/dshdriver.py +74 -5
  30. package/dshevents.py +100 -6
  31. package/export_cases.py +0 -0
  32. package/extensions/dsh-autocommit/asset.json +0 -0
  33. package/extensions/dsh-autocommit/pkg/lib/index.mjs +0 -0
  34. package/extensions/dsh-autocommit/pkg/package.json +0 -0
  35. package/feishu.py +1226 -42
  36. package/feishu_conv.py +920 -0
  37. package/lib.py +0 -0
  38. package/lifecycle.py +0 -0
  39. package/loadcase.py +0 -0
  40. package/loadgen.py +0 -0
  41. package/localbus.py +0 -0
  42. package/migrate_p7b.py +0 -0
  43. package/package.json +8 -3
  44. package/platcompat.py +0 -0
  45. package/prompts.py +0 -0
  46. package/rag.py +0 -0
  47. package/requirements.txt +2 -1
  48. package/runner.py +11 -0
  49. package/server.py +264 -30
  50. package/sessparse.py +244 -44
  51. package/touchstone.py +8 -4
  52. package/waitq.py +23 -0
  53. package/webui/dist-plugin/assets/index-JLwyZZxC.js +484 -0
  54. package/webui/dist-plugin/assets/index-tJ0TlvQ3.css +1 -0
  55. package/webui/dist-plugin/index.html +2 -2
  56. package/worktree.py +100 -0
  57. package/webui/dist-plugin/assets/index-B0WoP1Qy.css +0 -1
  58. package/webui/dist-plugin/assets/index-eHpxBfP6.js +0 -473
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  **An AI-agent-driven automated testing platform.** Point it at a repository; it explores the code, writes and runs test cases, files what breaks, fixes it, and re-verifies the fix.
6
6
 
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
+ [![npm](https://img.shields.io/npm/v/@gavinc-cn/touchstone-dsh?logo=npm&color=cb3837)](https://www.npmjs.com/package/@gavinc-cn/touchstone-dsh)
8
9
  [![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-3776AB.svg)](https://www.python.org/)
9
10
  [![Node 22.19+ | 24+](https://img.shields.io/badge/Node-22.19%2B%20%7C%2024%2B-339933.svg)](https://nodejs.org/)
10
11
  [![DeepSeek Harness plugin](https://img.shields.io/badge/DeepSeek%20Harness-plugin-4D6BFE.svg)](https://github.com/deepseek-ai/deepseek-harness)
@@ -164,6 +165,14 @@ grep '一次性初始口令' .run/server.log # or: ./touchstone.sh status
164
165
  You will be asked to change it on first login. Set `TS_ADMIN_PASSWORD=<your-password>` before the first
165
166
  start to skip the one-time password (and the forced change).
166
167
 
168
+ > **Plugin mode (`dsh`) is password-free by default** (2026-10-08): the shell passes
169
+ > `TS_ADMIN_PASSWORDLESS=1`, so the seeded `admin` has an **empty password** and no forced change — the
170
+ > panel is auto-logged-in as `admin` anyway. Set a password in **Settings → Change password** whenever you
171
+ > want one (it then becomes the password used for direct/standalone logins). The plugin also writes the
172
+ > backend's stdout/stderr line by line to `<db dir>/plugin-backend.log` (next to
173
+ > `~/.touchstone/touchstone.db`) — that is where the plugin-mode startup banner and the
174
+ > `[board]`/`[waitq]`/`[runner]` diagnostics can be read.
175
+
167
176
  > Standalone mode gives you the full site — projects, case library, bug reports, board, queue, monitoring —
168
177
  > but **agent execution needs plugin mode** (below), because the agent runs inside the `dsh` host process.
169
178
 
@@ -187,6 +196,17 @@ The platform's own Python dependencies are installed with pip, not npm:
187
196
 
188
197
  ```bash
189
198
  pip install -r ~/.dsh/profiles/web/node_modules/@gavinc-cn/touchstone-dsh/requirements.txt
199
+ # Windows: python -m pip install ... (the official installer ships python.exe, not python3)
200
+ ```
201
+
202
+ The plugin resolves the interpreter itself when you do not configure one: it probes `python` first, then
203
+ `python3` (the same order as `touchstone.cmd`), and uses the first one that actually runs. If that is not the
204
+ interpreter where you installed the dependencies, the missing-dependency page prints the exact command for the
205
+ interpreter it picked; to pin another one, set `pythonPath` in the profile patch:
206
+
207
+ ```yaml
208
+ - id: touchstone-dsh
209
+ config: { pythonPath: /path/to/python }
190
210
  ```
191
211
 
192
212
  No `repoDir` is needed: the package carries `server.py` and `webui/dist-plugin`, so the plugin falls back to
@@ -203,7 +223,7 @@ The installer prints the optional profile patch for pointing the plugin at your
203
223
  specific interpreter); skip it to use the package's own directory:
204
224
 
205
225
  ```yaml
206
- - id: touchstone
226
+ - id: touchstone-dsh
207
227
  config: { repoDir: /path/to/touchstone-dsh, pythonPath: /path/to/python3 }
208
228
  ```
209
229
 
@@ -235,6 +255,7 @@ python touchstone.py start | stop | restart | status | build | test
235
255
  | `TS_PYTHON` | `python3` | Interpreter used by the launcher (must have the runtime dependencies) |
236
256
  | `TOUCHSTONE_DB` | `~/.touchstone/touchstone.db` | SQLite database. Must live on a local disk — file locking does not work on CIFS/network shares |
237
257
  | `TS_ADMIN_PASSWORD` | *(random, printed once)* | Initial `admin` password; setting it skips the forced change |
258
+ | `TS_ADMIN_PASSWORDLESS` | `1` in plugin mode | Seed `admin` with an empty password and no forced change (the plugin shell sets this); ignored when `TS_ADMIN_PASSWORD` is set |
238
259
  | `TS_WEB_DIR` | `webui/dist` | Static front-end directory the server serves |
239
260
  | `TOUCHSTONE_RUN_DIR` | `.run/` in the repository | PID / log / port files |
240
261
  | `TS_EXT_DIR` | `extensions` | Root of the built-in asset manifests |
package/README.zh.md CHANGED
@@ -6,6 +6,7 @@
6
6
  把失败沉淀成 bug 报告,修完再复测一遍。
7
7
 
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
9
+ [![npm](https://img.shields.io/npm/v/@gavinc-cn/touchstone-dsh?logo=npm&color=cb3837)](https://www.npmjs.com/package/@gavinc-cn/touchstone-dsh)
9
10
  [![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-3776AB.svg)](https://www.python.org/)
10
11
  [![Node 22.19+ | 24+](https://img.shields.io/badge/Node-22.19%2B%20%7C%2024%2B-339933.svg)](https://nodejs.org/)
11
12
  [![DeepSeek Harness plugin](https://img.shields.io/badge/DeepSeek%20Harness-plugin-4D6BFE.svg)](https://github.com/deepseek-ai/deepseek-harness)
@@ -177,6 +178,16 @@ node ~/.dsh/profiles/web/node_modules/@gavinc-cn/touchstone-dsh/dsh-plugin/scrip
177
178
 
178
179
  ```bash
179
180
  pip install -r ~/.dsh/profiles/web/node_modules/@gavinc-cn/touchstone-dsh/requirements.txt
181
+ # Windows 用 python -m pip install ...(官方安装器只装 python.exe,没有 python3)
182
+ ```
183
+
184
+ 解释器不用配也行:插件自己探——先试 `python`、再试 `python3`(与 `touchstone.cmd` 同序),
185
+ 用第一个真能跑起来的那个。如果探到的不是你装依赖的那支,缺依赖提示页里给的就是**它探到的那支**
186
+ 的解释器命令;想指定别支,在 profile patch 里写 `pythonPath`:
187
+
188
+ ```yaml
189
+ - id: touchstone-dsh
190
+ config: { pythonPath: /path/to/python }
180
191
  ```
181
192
 
182
193
  **不需要配 `repoDir`**:包里带着 `server.py` 与 `webui/dist-plugin`,插件缺省就用包自身目录。
@@ -191,7 +202,7 @@ cd touchstone-dsh
191
202
  安装脚本会打印**可选**的 profile 覆盖(指向本机工作副本、或指定解释器);不写就用包自身目录:
192
203
 
193
204
  ```yaml
194
- - id: touchstone
205
+ - id: touchstone-dsh
195
206
  config: { repoDir: /path/to/touchstone-dsh, pythonPath: /path/to/python3 }
196
207
  ```
197
208
 
package/agents.py CHANGED
File without changes
package/auth.py CHANGED
File without changes