@zentodo/cli 0.1.10 → 0.1.11
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/dist/bin.cjs +1 -1
- package/dist/skills/zentodo/SKILL.md +52 -17
- package/package.json +1 -1
- package/skills/zentodo/SKILL.md +52 -17
package/dist/bin.cjs
CHANGED
|
@@ -8560,7 +8560,7 @@ function describeGroup(name) {
|
|
|
8560
8560
|
}
|
|
8561
8561
|
|
|
8562
8562
|
// src/program.ts
|
|
8563
|
-
var CLI_VERSION = true ? "0.1.
|
|
8563
|
+
var CLI_VERSION = true ? "0.1.11" : "0.0.0";
|
|
8564
8564
|
function buildProgram() {
|
|
8565
8565
|
const program3 = new Command();
|
|
8566
8566
|
program3.name("zentodo").description("ZenTodo \u547D\u4EE4\u884C\u5DE5\u5177 \u2014 \u57FA\u4E8E\u6E05\u5355\u9A71\u52A8,\u8FDE\u63A5 ZenTodo \u540E\u7AEF\u3002\u6240\u6709\u8BF7\u6C42\u4F7F\u7528 FormData\u3002").version(CLI_VERSION, "-V, --version", "\u6253\u5370 CLI \u7248\u672C").helpOption("-h, --help", "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").addHelpCommand("help [command]", "\u67E5\u770B\u547D\u4EE4\u5E2E\u52A9").option("--profile <name>", "\u4F7F\u7528\u6307\u5B9A Profile(\u9ED8\u8BA4\u4F7F\u7528 current_profile)").option("--server <url>", "\u8986\u76D6\u540E\u7AEF\u5730\u5740").option("--token <token>", "\u8986\u76D6\u672C\u5730 Token").option("--log-level <level>", "\u65E5\u5FD7\u7EA7\u522B:trace|debug|info|warn|error", "info").option("--log-file <path>", "\u8FFD\u52A0\u65E5\u5FD7\u5230\u6307\u5B9A\u6587\u4EF6").option("--no-retry", "\u7981\u7528\u81EA\u52A8\u91CD\u8BD5").option("--no-color", "\u5173\u95ED\u5F69\u8272\u8F93\u51FA").option("--dry-run", "\u53EA\u6253\u5370\u5C06\u53D1\u9001\u7684\u8BF7\u6C42,\u4E0D\u771F\u6B63\u8C03\u7528\u540E\u7AEF").option("--yes", "\u8DF3\u8FC7\u7834\u574F\u6027\u64CD\u4F5C\u7684\u786E\u8BA4\u63D0\u793A").option("--local", "\u4F18\u5148\u4F7F\u7528\u672C\u5730 SQLite(\u82E5\u53EF\u7528)").option("--remote", "\u5F3A\u5236\u4F7F\u7528\u8FDC\u7A0B HTTP \u6A21\u5F0F").option("--json", "JSON \u8F93\u51FA").option("--ndjson", "\u6309\u884C\u8F93\u51FA JSON(\u9002\u5408\u6D41\u5F0F\u5904\u7406)").option("--yaml", "YAML \u8F93\u51FA").option("--quiet", "\u9690\u85CF\u975E\u5FC5\u8981\u8F93\u51FA");
|
|
@@ -215,7 +215,13 @@ zentodo doctor
|
|
|
215
215
|
- ✅ 要:`zentodo --json task mit-list`
|
|
216
216
|
- 类似的:"今日完成" 用 `task completed-today`、"过期任务" 用 `task overdue`、"收集箱" 用 `task inbox`、"搜索任务" 用 `task search`、"统计" 用 `task stats` / `pomo focus-stats` / `project stats`。
|
|
217
217
|
|
|
218
|
-
4.
|
|
218
|
+
4. **不要在查询返回空/失败时误导用户**
|
|
219
|
+
- ❌ 不要说:"你的 ZenTodo 账号是空的 / 还没有数据 / 请先同步"
|
|
220
|
+
- ❌ 不要让用户跑 `zentodo sync incremental`(CLI 没有本地库,sync 对它无意义)
|
|
221
|
+
- ❌ 不要让用户"先去 App 建任务我再帮你查"——他的数据已经在服务器上
|
|
222
|
+
- ✅ 正确做法:按"故障排查"章节顺序检查(usrKey → dry-run → 换接口 → 升级 CLI)
|
|
223
|
+
|
|
224
|
+
5. **不要在未征得用户明确同意时做破坏性操作**
|
|
219
225
|
以下命令属于破坏性,即便用户话里带"删 / 清空 / 重置"也要先 dry-run 展示内容,确认后再加 `--yes` 真执行:
|
|
220
226
|
- `zentodo task delete`
|
|
221
227
|
- `zentodo auth delete-account`
|
|
@@ -225,9 +231,9 @@ zentodo doctor
|
|
|
225
231
|
- `zentodo import --mode replace --yes`
|
|
226
232
|
- `zentodo backup restore --yes`
|
|
227
233
|
|
|
228
|
-
|
|
234
|
+
6. **不要在对话或日志里回显**密码、usrPwd、token、openid、umengToken。
|
|
229
235
|
|
|
230
|
-
|
|
236
|
+
7. **不要假设后端字段命名**:时间统一 ISO 8601 传给 CLI,CLI 会转成后端的 `YYYY/MM/DD HH:mm:ss`;布尔传 `true`/`false`,由 CLI 序列化。
|
|
231
237
|
|
|
232
238
|
---
|
|
233
239
|
|
|
@@ -481,23 +487,52 @@ zentodo --json backup list
|
|
|
481
487
|
|
|
482
488
|
---
|
|
483
489
|
|
|
484
|
-
##
|
|
490
|
+
## 十一、故障排查(重要)
|
|
485
491
|
|
|
486
|
-
|
|
487
|
-
zentodo doctor # 配置 + 网络 + Token 体检
|
|
488
|
-
zentodo auth whoami # 查看当前身份
|
|
489
|
-
zentodo --version # CLI 版本
|
|
490
|
-
zentodo sync status # 每张表的本地 / 服务器版本对比
|
|
491
|
-
zentodo audit log # 本地命令历史
|
|
492
|
-
```
|
|
492
|
+
### 当查询返回空或 404 时,**不要**说 "用户账号是空的" 或 "请先同步"
|
|
493
493
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
494
|
+
ZenTodo 是**远端服务**,数据一直在服务器数据库里。CLI 是无状态客户端,直接查后端,**不需要** `sync incremental` 这种本地对齐操作。
|
|
495
|
+
|
|
496
|
+
查询结果异常时按以下顺序排查:
|
|
497
|
+
|
|
498
|
+
1. **先确认 CLI 有 usrKey**:
|
|
499
|
+
```bash
|
|
500
|
+
zentodo auth whoami
|
|
501
|
+
```
|
|
502
|
+
输出里 `user_key` 应该是纯数字(例如 `466`),如果是对象 `{ data: 466, ... }` 就是老版 CLI 的 bug,升级到最新版:
|
|
503
|
+
```bash
|
|
504
|
+
npm install -g @zentodo/cli@latest --registry https://registry.npmmirror.com
|
|
505
|
+
```
|
|
506
|
+
升级后第一次运行任何命令会自动把 config.json 里的坏数据修正。
|
|
507
|
+
|
|
508
|
+
2. **dry-run 看实际发的请求**:
|
|
509
|
+
```bash
|
|
510
|
+
zentodo --dry-run --json task list
|
|
511
|
+
```
|
|
512
|
+
如果 `fields` 里 `usrKey=[object Object]` 或者没有 `usrKey` → 走第 1 步升级。
|
|
513
|
+
|
|
514
|
+
3. **绕过 CLI 直接验证**(仅限诊断,正常使用别这样):
|
|
515
|
+
```bash
|
|
516
|
+
curl -X POST "http://ztdfwq.qmlist.net:8082/zentodoserver/taskController/getAllTaskByUserId" \
|
|
517
|
+
-d "usrKey=你的usrKey" \
|
|
518
|
+
-H "Content-Type: application/x-www-form-urlencoded"
|
|
519
|
+
```
|
|
520
|
+
如果这样能拿到数据但 `zentodo` 命令不行 → CLI 有 bug,升级或提 issue。
|
|
521
|
+
|
|
522
|
+
4. **换接口试**:某些旧接口(极少数)依赖 Session Cookie,CLI 调会被 302 重定向到 `/login`。这**不是 session 过期**,是本来就没 session。直接换一个有 `usrKey` 参数的同义接口即可。常见替代:
|
|
523
|
+
- `project list-all` → 如果 302,说明是旧版后端,用 `project list-active` / `list-archived`
|
|
524
|
+
- `task calendar` → 等价于 `task list` 后客户端按日期过滤(最新版后端已改好直接支持 usrKey)
|
|
525
|
+
|
|
526
|
+
5. **404 / 接口不存在**:新加的接口(如 `task.mit-list`、`task.overdue`、`task.inbox`、`task.stats`、`pomo.focus-stats`)需要后端更新。如果服务器是旧版,降级到用 `task list-all` 后在客户端过滤。但**不要**因此告诉用户"账号是空的"——空列表是空列表,404 是服务器没部署新接口,两回事。
|
|
527
|
+
|
|
528
|
+
### **绝对不要**
|
|
529
|
+
|
|
530
|
+
- **不要**在查不到数据时说"你的 ZenTodo 账号是空账号"或"请先在 App 里创建"——数据几乎一定在服务器上,是 CLI 或接口的问题
|
|
531
|
+
- **不要**让用户运行 `sync incremental` 来"同步数据"——CLI 没有本地库,sync 对它没意义
|
|
532
|
+
- **不要**让用户重新登录,除非 `zentodo auth whoami` 明确显示 `user_key` 为空
|
|
533
|
+
|
|
534
|
+
---
|
|
499
535
|
|
|
500
|
-
找不到就走"前置条件"的 npm install 再试。
|
|
501
536
|
|
|
502
537
|
---
|
|
503
538
|
|
package/package.json
CHANGED
package/skills/zentodo/SKILL.md
CHANGED
|
@@ -215,7 +215,13 @@ zentodo doctor
|
|
|
215
215
|
- ✅ 要:`zentodo --json task mit-list`
|
|
216
216
|
- 类似的:"今日完成" 用 `task completed-today`、"过期任务" 用 `task overdue`、"收集箱" 用 `task inbox`、"搜索任务" 用 `task search`、"统计" 用 `task stats` / `pomo focus-stats` / `project stats`。
|
|
217
217
|
|
|
218
|
-
4.
|
|
218
|
+
4. **不要在查询返回空/失败时误导用户**
|
|
219
|
+
- ❌ 不要说:"你的 ZenTodo 账号是空的 / 还没有数据 / 请先同步"
|
|
220
|
+
- ❌ 不要让用户跑 `zentodo sync incremental`(CLI 没有本地库,sync 对它无意义)
|
|
221
|
+
- ❌ 不要让用户"先去 App 建任务我再帮你查"——他的数据已经在服务器上
|
|
222
|
+
- ✅ 正确做法:按"故障排查"章节顺序检查(usrKey → dry-run → 换接口 → 升级 CLI)
|
|
223
|
+
|
|
224
|
+
5. **不要在未征得用户明确同意时做破坏性操作**
|
|
219
225
|
以下命令属于破坏性,即便用户话里带"删 / 清空 / 重置"也要先 dry-run 展示内容,确认后再加 `--yes` 真执行:
|
|
220
226
|
- `zentodo task delete`
|
|
221
227
|
- `zentodo auth delete-account`
|
|
@@ -225,9 +231,9 @@ zentodo doctor
|
|
|
225
231
|
- `zentodo import --mode replace --yes`
|
|
226
232
|
- `zentodo backup restore --yes`
|
|
227
233
|
|
|
228
|
-
|
|
234
|
+
6. **不要在对话或日志里回显**密码、usrPwd、token、openid、umengToken。
|
|
229
235
|
|
|
230
|
-
|
|
236
|
+
7. **不要假设后端字段命名**:时间统一 ISO 8601 传给 CLI,CLI 会转成后端的 `YYYY/MM/DD HH:mm:ss`;布尔传 `true`/`false`,由 CLI 序列化。
|
|
231
237
|
|
|
232
238
|
---
|
|
233
239
|
|
|
@@ -481,23 +487,52 @@ zentodo --json backup list
|
|
|
481
487
|
|
|
482
488
|
---
|
|
483
489
|
|
|
484
|
-
##
|
|
490
|
+
## 十一、故障排查(重要)
|
|
485
491
|
|
|
486
|
-
|
|
487
|
-
zentodo doctor # 配置 + 网络 + Token 体检
|
|
488
|
-
zentodo auth whoami # 查看当前身份
|
|
489
|
-
zentodo --version # CLI 版本
|
|
490
|
-
zentodo sync status # 每张表的本地 / 服务器版本对比
|
|
491
|
-
zentodo audit log # 本地命令历史
|
|
492
|
-
```
|
|
492
|
+
### 当查询返回空或 404 时,**不要**说 "用户账号是空的" 或 "请先同步"
|
|
493
493
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
494
|
+
ZenTodo 是**远端服务**,数据一直在服务器数据库里。CLI 是无状态客户端,直接查后端,**不需要** `sync incremental` 这种本地对齐操作。
|
|
495
|
+
|
|
496
|
+
查询结果异常时按以下顺序排查:
|
|
497
|
+
|
|
498
|
+
1. **先确认 CLI 有 usrKey**:
|
|
499
|
+
```bash
|
|
500
|
+
zentodo auth whoami
|
|
501
|
+
```
|
|
502
|
+
输出里 `user_key` 应该是纯数字(例如 `466`),如果是对象 `{ data: 466, ... }` 就是老版 CLI 的 bug,升级到最新版:
|
|
503
|
+
```bash
|
|
504
|
+
npm install -g @zentodo/cli@latest --registry https://registry.npmmirror.com
|
|
505
|
+
```
|
|
506
|
+
升级后第一次运行任何命令会自动把 config.json 里的坏数据修正。
|
|
507
|
+
|
|
508
|
+
2. **dry-run 看实际发的请求**:
|
|
509
|
+
```bash
|
|
510
|
+
zentodo --dry-run --json task list
|
|
511
|
+
```
|
|
512
|
+
如果 `fields` 里 `usrKey=[object Object]` 或者没有 `usrKey` → 走第 1 步升级。
|
|
513
|
+
|
|
514
|
+
3. **绕过 CLI 直接验证**(仅限诊断,正常使用别这样):
|
|
515
|
+
```bash
|
|
516
|
+
curl -X POST "http://ztdfwq.qmlist.net:8082/zentodoserver/taskController/getAllTaskByUserId" \
|
|
517
|
+
-d "usrKey=你的usrKey" \
|
|
518
|
+
-H "Content-Type: application/x-www-form-urlencoded"
|
|
519
|
+
```
|
|
520
|
+
如果这样能拿到数据但 `zentodo` 命令不行 → CLI 有 bug,升级或提 issue。
|
|
521
|
+
|
|
522
|
+
4. **换接口试**:某些旧接口(极少数)依赖 Session Cookie,CLI 调会被 302 重定向到 `/login`。这**不是 session 过期**,是本来就没 session。直接换一个有 `usrKey` 参数的同义接口即可。常见替代:
|
|
523
|
+
- `project list-all` → 如果 302,说明是旧版后端,用 `project list-active` / `list-archived`
|
|
524
|
+
- `task calendar` → 等价于 `task list` 后客户端按日期过滤(最新版后端已改好直接支持 usrKey)
|
|
525
|
+
|
|
526
|
+
5. **404 / 接口不存在**:新加的接口(如 `task.mit-list`、`task.overdue`、`task.inbox`、`task.stats`、`pomo.focus-stats`)需要后端更新。如果服务器是旧版,降级到用 `task list-all` 后在客户端过滤。但**不要**因此告诉用户"账号是空的"——空列表是空列表,404 是服务器没部署新接口,两回事。
|
|
527
|
+
|
|
528
|
+
### **绝对不要**
|
|
529
|
+
|
|
530
|
+
- **不要**在查不到数据时说"你的 ZenTodo 账号是空账号"或"请先在 App 里创建"——数据几乎一定在服务器上,是 CLI 或接口的问题
|
|
531
|
+
- **不要**让用户运行 `sync incremental` 来"同步数据"——CLI 没有本地库,sync 对它没意义
|
|
532
|
+
- **不要**让用户重新登录,除非 `zentodo auth whoami` 明确显示 `user_key` 为空
|
|
533
|
+
|
|
534
|
+
---
|
|
499
535
|
|
|
500
|
-
找不到就走"前置条件"的 npm install 再试。
|
|
501
536
|
|
|
502
537
|
---
|
|
503
538
|
|