shawnxixi-cli 0.3.0 → 1.1.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.
- package/.env.example +8 -2
- package/.github/workflows/ci.yml +9 -22
- package/.github/workflows/release.yml +30 -0
- package/CLAUDE.md +167 -63
- package/README.md +345 -65
- package/commitlint.config.js +10 -0
- package/dist/commands/biz/calendar.d.ts +17 -2
- package/dist/commands/biz/calendar.d.ts.map +1 -1
- package/dist/commands/biz/calendar.js +47 -9
- package/dist/commands/biz/calendar.js.map +1 -1
- package/dist/commands/biz/finance.d.ts +32 -1
- package/dist/commands/biz/finance.d.ts.map +1 -1
- package/dist/commands/biz/finance.js +99 -12
- package/dist/commands/biz/finance.js.map +1 -1
- package/dist/commands/biz/health.d.ts +32 -0
- package/dist/commands/biz/health.d.ts.map +1 -0
- package/dist/commands/biz/health.js +92 -0
- package/dist/commands/biz/health.js.map +1 -0
- package/dist/commands/biz/item.d.ts +41 -0
- package/dist/commands/biz/item.d.ts.map +1 -1
- package/dist/commands/biz/item.js +89 -5
- package/dist/commands/biz/item.js.map +1 -1
- package/dist/commands/biz/record.d.ts +0 -8
- package/dist/commands/biz/record.d.ts.map +1 -1
- package/dist/commands/biz/record.js +29 -8
- package/dist/commands/biz/record.js.map +1 -1
- package/dist/commands/biz/task.d.ts +38 -0
- package/dist/commands/biz/task.d.ts.map +1 -0
- package/dist/commands/biz/task.js +110 -0
- package/dist/commands/biz/task.js.map +1 -0
- package/dist/commands/biz/todo.d.ts +52 -8
- package/dist/commands/biz/todo.d.ts.map +1 -1
- package/dist/commands/biz/todo.js +167 -17
- package/dist/commands/biz/todo.js.map +1 -1
- package/dist/commands/sys/health.d.ts.map +1 -1
- package/dist/commands/sys/health.js +20 -3
- package/dist/commands/sys/health.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +281 -42
- package/dist/index.js.map +1 -1
- package/dist/services/api.d.ts +22 -8
- package/dist/services/api.d.ts.map +1 -1
- package/dist/services/api.js +108 -28
- package/dist/services/api.js.map +1 -1
- package/dist/utils/env.d.ts +16 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +78 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/finance.model.d.ts +80 -0
- package/dist/utils/finance.model.d.ts.map +1 -0
- package/dist/utils/finance.model.js +150 -0
- package/dist/utils/finance.model.js.map +1 -0
- package/dist/utils/output.d.ts +42 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +124 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/todo.model.d.ts +55 -0
- package/dist/utils/todo.model.d.ts.map +1 -0
- package/dist/utils/todo.model.js +135 -0
- package/dist/utils/todo.model.js.map +1 -0
- package/package.json +18 -2
- package/src/commands/biz/calendar.ts +61 -10
- package/src/commands/biz/finance.ts +112 -13
- package/src/commands/biz/health.ts +96 -0
- package/src/commands/biz/item.ts +113 -6
- package/src/commands/biz/record.ts +32 -8
- package/src/commands/biz/task.ts +115 -0
- package/src/commands/biz/todo.ts +193 -21
- package/src/commands/sys/health.ts +23 -3
- package/src/index.ts +311 -54
- package/src/services/api.ts +111 -30
- package/src/utils/env.ts +85 -0
- package/src/utils/finance.model.ts +182 -0
- package/src/utils/output.ts +126 -0
- package/src/utils/todo.model.ts +167 -0
- package/tests/commands/finance.test.ts +281 -0
- package/tests/commands/item.test.ts +215 -0
- package/tests/commands/todo.test.ts +292 -9
- package/tests/services/api.test.ts +292 -20
- package/tests/utils/finance.model.test.ts +319 -0
- package/tests/utils/todo.model.test.ts +315 -0
package/.env.example
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# 肖嘻 CLI 配置文件
|
|
2
|
+
# 复制此文件为 .env 并填入实际值
|
|
3
|
+
|
|
4
|
+
# API 地址(默认:http://localhost:8080/api/v1)
|
|
5
|
+
SHAWNXIXI_API_URL=http://localhost:8080/api/v1
|
|
6
|
+
|
|
7
|
+
# API Token(可选,用于认证)
|
|
8
|
+
# SHAWNXIXI_API_TOKEN=your_token_here
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
name: CI
|
|
1
|
+
name: CI
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
@@ -14,6 +14,8 @@ jobs:
|
|
|
14
14
|
node-version: [20.x]
|
|
15
15
|
steps:
|
|
16
16
|
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
17
19
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
18
20
|
uses: actions/setup-node@v4
|
|
19
21
|
with:
|
|
@@ -21,28 +23,13 @@ jobs:
|
|
|
21
23
|
cache: npm
|
|
22
24
|
- name: Install dependencies
|
|
23
25
|
run: npm ci
|
|
26
|
+
- name: Run commitlint
|
|
27
|
+
run: npx commitlint --from ${{ github.event.pull_request.base.sha || github.event.commits[0].sha }} --to HEAD --verbose
|
|
28
|
+
if: github.event_name == 'pull_request'
|
|
29
|
+
- name: Run commitlint on last commit
|
|
30
|
+
run: npx commitlint --last --verbose
|
|
31
|
+
if: github.event_name == 'push'
|
|
24
32
|
- name: Build
|
|
25
33
|
run: npm run build
|
|
26
34
|
- name: Test
|
|
27
35
|
run: npm test
|
|
28
|
-
|
|
29
|
-
publish:
|
|
30
|
-
needs: build-test
|
|
31
|
-
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
32
|
-
runs-on: ubuntu-latest
|
|
33
|
-
steps:
|
|
34
|
-
- uses: actions/checkout@v4
|
|
35
|
-
- name: Use Node.js
|
|
36
|
-
uses: actions/setup-node@v4
|
|
37
|
-
with:
|
|
38
|
-
node-version: '20.x'
|
|
39
|
-
registry-url: 'https://registry.npmjs.org'
|
|
40
|
-
- name: Install dependencies
|
|
41
|
-
run: npm ci
|
|
42
|
-
- name: Build
|
|
43
|
-
run: npm run build
|
|
44
|
-
- name: Publish to npm
|
|
45
|
-
run: npm publish --access public
|
|
46
|
-
env:
|
|
47
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
48
|
-
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
release:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write # needed for semantic-release to push tags
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
|
|
17
|
+
- name: Use Node.js
|
|
18
|
+
uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: '20.x'
|
|
21
|
+
cache: npm
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: npm ci
|
|
25
|
+
|
|
26
|
+
- name: Release
|
|
27
|
+
run: npx semantic-release
|
|
28
|
+
env:
|
|
29
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
30
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/CLAUDE.md
CHANGED
|
@@ -2,69 +2,154 @@
|
|
|
2
2
|
|
|
3
3
|
## 项目说明
|
|
4
4
|
|
|
5
|
-
肖嘻 CLI
|
|
5
|
+
肖嘻 CLI 工具,通过 HTTP 调用 shawnxixi-server REST API。
|
|
6
6
|
|
|
7
7
|
## 技术栈
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
9
|
+
- Node.js 18+ + TypeScript
|
|
10
|
+
- Commander.js 14 + Axios
|
|
11
|
+
|
|
12
|
+
## CLI 规范
|
|
13
|
+
|
|
14
|
+
- 命令结构:`biz <module> <action> [args]` 或 `sys <command>`
|
|
15
|
+
- 全局参数:`--url`, `--json`, `--quiet`, `--dry-run`
|
|
16
|
+
- Error 输出格式:红色 `[ERROR] 模块: 描述`
|
|
17
|
+
|
|
18
|
+
## 全局参数
|
|
19
|
+
|
|
20
|
+
| 参数 | 说明 |
|
|
21
|
+
|------|------|
|
|
22
|
+
| `--url` | API 基础地址,默认 `http://localhost:8080` |
|
|
23
|
+
| `--json` | 输出 JSON 格式 |
|
|
24
|
+
| `--quiet` | 静默模式(只输出关键信息)|
|
|
25
|
+
| `--dry-run` | 预览模式(不实际调用 API,打印请求参数)|
|
|
26
|
+
|
|
27
|
+
## 命令格式
|
|
28
|
+
|
|
29
|
+
### biz todo(待办管理,对标滴答清单)
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
biz todo create "<title>" [options] 创建待办
|
|
33
|
+
biz todo list [options] 列出待办
|
|
34
|
+
biz todo edit <id> [options] 编辑待办
|
|
35
|
+
biz todo done <id> 标记待办完成
|
|
36
|
+
biz todo delete <id> 删除待办
|
|
37
|
+
biz todo repeat <id> 完成并生成下次 occurrence(重复待办)
|
|
38
|
+
biz todo subtask <parent-id> --title <title> 创建子待办
|
|
39
|
+
biz todo subtasks <parent-id> 列出子待办
|
|
40
|
+
|
|
41
|
+
Options:
|
|
42
|
+
--due <date> 截止日期 YYYY-MM-DD
|
|
43
|
+
--priority <level> 优先级 low|medium|high (default: medium)
|
|
44
|
+
--tags <tags> 标签,逗号分隔
|
|
45
|
+
--status <status> 状态 pending|done(list/edit)
|
|
46
|
+
--repeat <rule> 重复规则 daily|weekly|monthly
|
|
47
|
+
--end-date <date> 重复结束日期 YYYY-MM-DD
|
|
48
|
+
--parent-id <id> 父待办 ID(创建子待办时)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### biz task(任务管理,对标系统任务)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
biz task create <title> [options] 创建任务
|
|
55
|
+
biz task list [options] 列出任务
|
|
56
|
+
biz task update <id> [options] 更新任务
|
|
57
|
+
biz task delete <id> 删除任务
|
|
58
|
+
|
|
59
|
+
Options:
|
|
60
|
+
--source <source> 来源 openclaw|cli (default: cli)
|
|
61
|
+
--openclaw-id <id> OpenClaw ID
|
|
62
|
+
--priority <level> 优先级 low|medium|high (default: medium)
|
|
63
|
+
--status <status> 状态 pending|running|done
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### biz record(记录管理:日记/宠物/笔记/想法)
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
biz record create <title> [options] 创建记录
|
|
70
|
+
biz record list [options] 列出记录
|
|
71
|
+
|
|
72
|
+
Options:
|
|
73
|
+
--content <text> 内容
|
|
74
|
+
--type <type> 类型 diary|pet|note|idea (default: diary)
|
|
75
|
+
--tags <tags> 标签,逗号分隔
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### biz finance(财务管理,对标记账类 App)
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
biz finance create <amount> [options] 记一笔账
|
|
82
|
+
biz finance list [options] 列出账单
|
|
83
|
+
biz finance stats [options] 账单统计
|
|
84
|
+
biz finance report [options] 月度报表
|
|
85
|
+
|
|
86
|
+
Options:
|
|
87
|
+
--type <type> 类型 income|expense (default: expense)
|
|
88
|
+
--category <cat> 分类
|
|
89
|
+
--note <text> 备注
|
|
90
|
+
--account <act> 账户 cash|card|alipay|wechat (default: cash)
|
|
91
|
+
--date <date> 日期 YYYY-MM-DD
|
|
92
|
+
--tags <tags> 标签,逗号分隔
|
|
93
|
+
--month <month> 月份 YYYY-MM (stats/report)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### biz item(物品管理,对标物品清单 App)
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
biz item create <name> [options] 添加物品
|
|
100
|
+
biz item list [options] 列出物品
|
|
101
|
+
biz item expiring [options] 即将过期的物品
|
|
102
|
+
biz item stats 物品库存统计
|
|
103
|
+
|
|
104
|
+
Options:
|
|
105
|
+
--location <loc> 存放位置
|
|
106
|
+
--expire <date> 过期日期 YYYY-MM-DD
|
|
107
|
+
--category <cat> 分类
|
|
108
|
+
--quantity <n> 数量
|
|
109
|
+
--unit <unit> 单位 个|瓶|盒|kg|g|ml|l
|
|
110
|
+
--brand <brand> 品牌
|
|
111
|
+
--barcode <code> 条码
|
|
112
|
+
--price <price> 价格
|
|
113
|
+
--supplier <supplier> 供应商
|
|
114
|
+
--purchase-date <date> 购买日期 YYYY-MM-DD
|
|
115
|
+
--days <n> 提前多少天提醒 (default: 7, expiring 命令)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### biz calendar(日程管理,对标日历 App)
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
biz calendar create <title> --from <datetime> --to <datetime> [options] 创建日程
|
|
122
|
+
biz calendar list [options] 列出日程
|
|
123
|
+
|
|
124
|
+
Options:
|
|
125
|
+
--from <datetime> 开始时间 YYYY-MM-DD 或 YYYY-MM-DD HH:MM(必需)
|
|
126
|
+
--to <datetime> 结束时间 YYYY-MM-DD 或 YYYY-MM-DD HH:MM(必需)
|
|
127
|
+
--location <loc> 地点
|
|
128
|
+
--color <color> 颜色 HEX 如 #ff0000
|
|
129
|
+
--desc <text> 描述
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### biz health(健康数据管理,对标 Apple Health)
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
biz health log --type <type> --value <value> [options] 记录健康数据
|
|
136
|
+
biz health list [options] 查询健康数据
|
|
137
|
+
biz health sync 同步健康数据(保留兼容)
|
|
138
|
+
|
|
139
|
+
Options:
|
|
140
|
+
--type <type> 数据类型 heart_rate|steps|weight|sleep|blood_pressure|oxygen|body_temp(必需,log 命令)
|
|
141
|
+
--value <value> 数值(必需,log 命令)
|
|
142
|
+
--unit <unit> 单位 bpm|kg|steps|hours|mmHg|%|°C
|
|
143
|
+
--date <date> 日期 YYYY-MM-DD (default: 今天)
|
|
144
|
+
--from <date> 开始日期 YYYY-MM-DD(list 命令)
|
|
145
|
+
--to <date> 结束日期 YYYY-MM-DD(list 命令)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### sys(系统命令)
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
sys health 健康检查(返回 { status: 'ok', timestamp })
|
|
152
|
+
```
|
|
68
153
|
|
|
69
154
|
## 环境变量
|
|
70
155
|
|
|
@@ -78,8 +163,7 @@ shawnxixi <命名空间> <操作> [参数]
|
|
|
78
163
|
## npm 发包
|
|
79
164
|
|
|
80
165
|
- 包名:`shawnxixi-cli`(npmjs.com)
|
|
81
|
-
-
|
|
82
|
-
- CI 自动发包:main 分支合并时通过 GitHub Actions 触发,需配置 `NPM_TOKEN` secret
|
|
166
|
+
- CI 自动发版:main 分支合并触发 semantic-release 自动发版
|
|
83
167
|
|
|
84
168
|
## 启动开发
|
|
85
169
|
|
|
@@ -93,10 +177,30 @@ npm test
|
|
|
93
177
|
|
|
94
178
|
```
|
|
95
179
|
src/
|
|
96
|
-
├── index.ts # CLI
|
|
180
|
+
├── index.ts # CLI 入口(所有命令定义)
|
|
97
181
|
├── commands/ # 命令实现
|
|
98
182
|
│ ├── biz/ # 业务命令
|
|
183
|
+
│ │ ├── todo.ts # 待办:create/list/edit/done/delete/repeat/subtask/subtasks
|
|
184
|
+
│ │ ├── task.ts # 任务:create/list/update/delete
|
|
185
|
+
│ │ ├── record.ts # 记录:create/list
|
|
186
|
+
│ │ ├── finance.ts # 财务:create/list/stats/report
|
|
187
|
+
│ │ ├── item.ts # 物品:create/list/expiring/stats
|
|
188
|
+
│ │ ├── calendar.ts # 日程:create/list
|
|
189
|
+
│ │ └── health.ts # 健康:log/list/sync
|
|
99
190
|
│ └── sys/ # 系统命令
|
|
191
|
+
│ └── health.ts # 健康检查
|
|
100
192
|
└── services/
|
|
101
193
|
└── api.ts # HTTP API 调用层
|
|
102
194
|
```
|
|
195
|
+
|
|
196
|
+
## 发版说明
|
|
197
|
+
|
|
198
|
+
发版由 semantic-release 全自动管理,触发条件:
|
|
199
|
+
- `feat:` → minor 版本 +1
|
|
200
|
+
- `fix:` → patch 版本 +1
|
|
201
|
+
- `BREAKING CHANGE` in commit → major 版本 +1
|
|
202
|
+
- `chore:` / `docs:` 等 → 不发版
|
|
203
|
+
|
|
204
|
+
## API 依赖
|
|
205
|
+
|
|
206
|
+
CLI 完全依赖 `shawnxixi-server` REST API,本地开发需确保 server 运行在 `http://localhost:8080`(或通过 `--url` 指定)。
|