shawnxixi-cli 0.3.1 → 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.
Files changed (82) hide show
  1. package/.env.example +8 -2
  2. package/.github/workflows/ci.yml +9 -22
  3. package/.github/workflows/release.yml +30 -0
  4. package/CLAUDE.md +167 -63
  5. package/README.md +345 -65
  6. package/commitlint.config.js +10 -0
  7. package/dist/commands/biz/calendar.d.ts +17 -2
  8. package/dist/commands/biz/calendar.d.ts.map +1 -1
  9. package/dist/commands/biz/calendar.js +47 -9
  10. package/dist/commands/biz/calendar.js.map +1 -1
  11. package/dist/commands/biz/finance.d.ts +32 -1
  12. package/dist/commands/biz/finance.d.ts.map +1 -1
  13. package/dist/commands/biz/finance.js +99 -12
  14. package/dist/commands/biz/finance.js.map +1 -1
  15. package/dist/commands/biz/health.d.ts +32 -0
  16. package/dist/commands/biz/health.d.ts.map +1 -0
  17. package/dist/commands/biz/health.js +92 -0
  18. package/dist/commands/biz/health.js.map +1 -0
  19. package/dist/commands/biz/item.d.ts +41 -0
  20. package/dist/commands/biz/item.d.ts.map +1 -1
  21. package/dist/commands/biz/item.js +89 -5
  22. package/dist/commands/biz/item.js.map +1 -1
  23. package/dist/commands/biz/record.d.ts +0 -8
  24. package/dist/commands/biz/record.d.ts.map +1 -1
  25. package/dist/commands/biz/record.js +29 -8
  26. package/dist/commands/biz/record.js.map +1 -1
  27. package/dist/commands/biz/task.d.ts +38 -0
  28. package/dist/commands/biz/task.d.ts.map +1 -0
  29. package/dist/commands/biz/task.js +110 -0
  30. package/dist/commands/biz/task.js.map +1 -0
  31. package/dist/commands/biz/todo.d.ts +52 -8
  32. package/dist/commands/biz/todo.d.ts.map +1 -1
  33. package/dist/commands/biz/todo.js +167 -17
  34. package/dist/commands/biz/todo.js.map +1 -1
  35. package/dist/commands/sys/health.d.ts.map +1 -1
  36. package/dist/commands/sys/health.js +20 -3
  37. package/dist/commands/sys/health.js.map +1 -1
  38. package/dist/index.d.ts +5 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +279 -41
  41. package/dist/index.js.map +1 -1
  42. package/dist/services/api.d.ts +22 -8
  43. package/dist/services/api.d.ts.map +1 -1
  44. package/dist/services/api.js +108 -28
  45. package/dist/services/api.js.map +1 -1
  46. package/dist/utils/env.d.ts +16 -0
  47. package/dist/utils/env.d.ts.map +1 -0
  48. package/dist/utils/env.js +78 -0
  49. package/dist/utils/env.js.map +1 -0
  50. package/dist/utils/finance.model.d.ts +80 -0
  51. package/dist/utils/finance.model.d.ts.map +1 -0
  52. package/dist/utils/finance.model.js +150 -0
  53. package/dist/utils/finance.model.js.map +1 -0
  54. package/dist/utils/output.d.ts +42 -0
  55. package/dist/utils/output.d.ts.map +1 -0
  56. package/dist/utils/output.js +124 -0
  57. package/dist/utils/output.js.map +1 -0
  58. package/dist/utils/todo.model.d.ts +55 -0
  59. package/dist/utils/todo.model.d.ts.map +1 -0
  60. package/dist/utils/todo.model.js +135 -0
  61. package/dist/utils/todo.model.js.map +1 -0
  62. package/package.json +18 -2
  63. package/src/commands/biz/calendar.ts +61 -10
  64. package/src/commands/biz/finance.ts +112 -13
  65. package/src/commands/biz/health.ts +96 -0
  66. package/src/commands/biz/item.ts +113 -6
  67. package/src/commands/biz/record.ts +32 -8
  68. package/src/commands/biz/task.ts +115 -0
  69. package/src/commands/biz/todo.ts +193 -21
  70. package/src/commands/sys/health.ts +23 -3
  71. package/src/index.ts +309 -53
  72. package/src/services/api.ts +111 -30
  73. package/src/utils/env.ts +85 -0
  74. package/src/utils/finance.model.ts +182 -0
  75. package/src/utils/output.ts +126 -0
  76. package/src/utils/todo.model.ts +167 -0
  77. package/tests/commands/finance.test.ts +281 -0
  78. package/tests/commands/item.test.ts +215 -0
  79. package/tests/commands/todo.test.ts +292 -9
  80. package/tests/services/api.test.ts +292 -20
  81. package/tests/utils/finance.model.test.ts +319 -0
  82. package/tests/utils/todo.model.test.ts +315 -0
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * biz task 命令
4
+ * 系统任务管理(对标系统任务)
5
+ * 子命令:list / create
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.taskCommands = void 0;
9
+ const api_1 = require("../../services/api");
10
+ const output_1 = require("../../utils/output");
11
+ exports.taskCommands = {
12
+ /**
13
+ * 列出任务
14
+ * biz task list --status running --source openclaw
15
+ */
16
+ list: async (options = {}) => {
17
+ const loading = (0, output_1.createLoading)('加载任务列表...');
18
+ try {
19
+ if ((0, output_1.isDryRun)()) {
20
+ loading.stop();
21
+ (0, output_1.dryRunLog)('列出任务', { status: options.status, source: options.source });
22
+ return;
23
+ }
24
+ loading.start();
25
+ const result = await api_1.apiService.listTasks(options.status, options.source);
26
+ loading.succeed('任务列表加载成功');
27
+ if (result.data && result.data.length > 0) {
28
+ (0, output_1.output)(result.data);
29
+ }
30
+ else {
31
+ (0, output_1.output)({ message: '暂无任务' });
32
+ }
33
+ }
34
+ catch (error) {
35
+ loading.fail('加载任务列表失败');
36
+ (0, output_1.outputError)(error.message);
37
+ process.exit(1);
38
+ }
39
+ },
40
+ /**
41
+ * 创建任务
42
+ * biz task create <title> --source openclaw --openclaw-id <id>
43
+ */
44
+ create: async (title, options = {}) => {
45
+ const loading = (0, output_1.createLoading)('创建任务...');
46
+ try {
47
+ if ((0, output_1.isDryRun)()) {
48
+ loading.stop();
49
+ (0, output_1.dryRunLog)('创建任务', { title, ...options });
50
+ return;
51
+ }
52
+ loading.start();
53
+ const result = await api_1.apiService.createTask(title, options.source, options.openclawId, options.priority);
54
+ loading.succeed('任务创建成功');
55
+ (0, output_1.output)(result);
56
+ }
57
+ catch (error) {
58
+ loading.fail('创建任务失败');
59
+ (0, output_1.outputError)(error.message);
60
+ process.exit(1);
61
+ }
62
+ },
63
+ /**
64
+ * 更新任务状态
65
+ * biz task update <id> --status running
66
+ */
67
+ update: async (id, options = {}) => {
68
+ const loading = (0, output_1.createLoading)('更新任务...');
69
+ try {
70
+ if ((0, output_1.isDryRun)()) {
71
+ loading.stop();
72
+ (0, output_1.dryRunLog)('更新任务', { id, ...options });
73
+ return;
74
+ }
75
+ loading.start();
76
+ const result = await api_1.apiService.updateTask(id, options);
77
+ loading.succeed('任务更新成功');
78
+ (0, output_1.output)(result);
79
+ }
80
+ catch (error) {
81
+ loading.fail('更新任务失败');
82
+ (0, output_1.outputError)(error.message);
83
+ process.exit(1);
84
+ }
85
+ },
86
+ /**
87
+ * 删除任务
88
+ * biz task delete <id>
89
+ */
90
+ delete: async (id) => {
91
+ const loading = (0, output_1.createLoading)('删除任务...');
92
+ try {
93
+ if ((0, output_1.isDryRun)()) {
94
+ loading.stop();
95
+ (0, output_1.dryRunLog)('删除任务', { id });
96
+ return;
97
+ }
98
+ loading.start();
99
+ const result = await api_1.apiService.deleteTask(id);
100
+ loading.succeed('任务删除成功');
101
+ (0, output_1.output)(result);
102
+ }
103
+ catch (error) {
104
+ loading.fail('删除任务失败');
105
+ (0, output_1.outputError)(error.message);
106
+ process.exit(1);
107
+ }
108
+ },
109
+ };
110
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/commands/biz/task.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,79 @@
1
1
  /**
2
2
  * biz todo 命令
3
- * 待办相关命令:create / list
3
+ * 待办管理(对标滴答清单)
4
+ * 子命令:create / list / done / delete / edit / repeat / subtask / subtasks
4
5
  */
5
6
  export interface TodoItem {
6
7
  id: string;
7
8
  title: string;
8
9
  completed: boolean;
9
10
  createdAt: string;
11
+ startDate?: string;
12
+ tags?: string[];
13
+ estimatedDuration?: number;
14
+ repeatRule?: 'daily' | 'weekly' | 'monthly';
15
+ repeatEndDate?: string;
16
+ parentId?: string;
10
17
  }
11
18
  export declare const todoCommands: {
19
+ /**
20
+ * 创建待办
21
+ * biz todo add <title> --due <date> --priority <p> --tags <tags> --repeat daily --end-date <date> --parent-id <id>
22
+ */
12
23
  create: (title: string, options?: {
13
24
  due?: string;
14
25
  priority?: string;
26
+ tags?: string;
27
+ repeat?: string;
28
+ endDate?: string;
29
+ parentId?: string;
15
30
  }) => Promise<void>;
31
+ /**
32
+ * 列出待办
33
+ * biz todo list --status pending --priority high --tags work,important
34
+ */
16
35
  list: (options?: {
17
36
  status?: string;
37
+ priority?: string;
38
+ tags?: string;
18
39
  }) => Promise<void>;
40
+ /**
41
+ * 编辑待办
42
+ * biz todo edit <id> --title <new> --priority high --tags work
43
+ */
19
44
  update: (id: number, options?: {
20
45
  title?: string;
21
46
  status?: string;
22
47
  priority?: string;
23
48
  due?: string;
49
+ tags?: string;
24
50
  }) => Promise<void>;
51
+ /**
52
+ * 标记待办完成
53
+ * biz todo done <id>
54
+ */
25
55
  done: (id: number) => Promise<void>;
56
+ /**
57
+ * 删除待办
58
+ * biz todo delete <id>
59
+ */
26
60
  delete: (id: number) => Promise<void>;
61
+ /**
62
+ * 完成待办并生成下次 occurrence
63
+ * biz todo repeat <id>
64
+ */
65
+ repeat: (id: number) => Promise<void>;
66
+ /**
67
+ * 创建子待办
68
+ * biz todo subtask <parent-id> --title <subtask title>
69
+ */
70
+ subtask: (parentId: number, options?: {
71
+ title?: string;
72
+ }) => Promise<void>;
73
+ /**
74
+ * 列出子待办
75
+ * biz todo subtasks <parent-id>
76
+ */
77
+ subtasks: (parentId: number) => Promise<void>;
27
78
  };
28
- export declare const createTodo: (title: string, options?: {
29
- due?: string;
30
- priority?: string;
31
- }) => Promise<void>;
32
- export declare const listTodos: (options?: {
33
- status?: string;
34
- }) => Promise<void>;
35
79
  //# sourceMappingURL=todo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/todo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,YAAY;oBACD,MAAM,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;qBAUpD;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;iBAUtB,MAAM,YAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;eAevF,MAAM;iBAUJ,MAAM;CAS1B,CAAC;AAGF,eAAO,MAAM,UAAU,UAzDC,MAAM,YAAW;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,kBAyD/B,CAAC;AAC9C,eAAO,MAAM,SAAS,aAhDE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,kBAgDD,CAAC"}
1
+ {"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/todo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,YAAY;IACvB;;;OAGG;oBACmB,MAAM,YAAW;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAqB/I;;;OAGG;qBACmB;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IA0B3E;;;OAGG;iBACgB,MAAM,YAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IA4BvH;;;OAGG;eACc,MAAM;IAqBvB;;;OAGG;iBACgB,MAAM;IAqBzB;;;OAGG;iBACgB,MAAM;IAqBzB;;;OAGG;wBACuB,MAAM,YAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA2B7D;;;OAGG;yBACwB,MAAM;CAyBlC,CAAC"}
@@ -1,34 +1,78 @@
1
1
  "use strict";
2
2
  /**
3
3
  * biz todo 命令
4
- * 待办相关命令:create / list
4
+ * 待办管理(对标滴答清单)
5
+ * 子命令:create / list / done / delete / edit / repeat / subtask / subtasks
5
6
  */
6
7
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.listTodos = exports.createTodo = exports.todoCommands = void 0;
8
+ exports.todoCommands = void 0;
8
9
  const api_1 = require("../../services/api");
10
+ const output_1 = require("../../utils/output");
9
11
  exports.todoCommands = {
12
+ /**
13
+ * 创建待办
14
+ * biz todo add <title> --due <date> --priority <p> --tags <tags> --repeat daily --end-date <date> --parent-id <id>
15
+ */
10
16
  create: async (title, options = {}) => {
17
+ const loading = (0, output_1.createLoading)('创建待办...');
11
18
  try {
12
- const result = await api_1.apiService.createTodo(title, options.due, options.priority);
13
- console.log(JSON.stringify(result, null, 2));
19
+ if ((0, output_1.isDryRun)()) {
20
+ loading.stop();
21
+ (0, output_1.dryRunLog)('创建待办', { title, ...options });
22
+ return;
23
+ }
24
+ loading.start();
25
+ const result = await api_1.apiService.createTodo(title, options.due, options.priority, options.tags, options.repeat, options.endDate, options.parentId);
26
+ loading.succeed('待办创建成功');
27
+ (0, output_1.output)(result);
14
28
  }
15
29
  catch (error) {
16
- console.error('创建待办失败:', error.message);
30
+ loading.fail('创建待办失败');
31
+ (0, output_1.outputError)(error.message);
17
32
  process.exit(1);
18
33
  }
19
34
  },
35
+ /**
36
+ * 列出待办
37
+ * biz todo list --status pending --priority high --tags work,important
38
+ */
20
39
  list: async (options = {}) => {
40
+ const loading = (0, output_1.createLoading)('加载待办列表...');
21
41
  try {
22
- const result = await api_1.apiService.listTodos(options.status);
23
- console.log(JSON.stringify(result, null, 2));
42
+ if ((0, output_1.isDryRun)()) {
43
+ loading.stop();
44
+ (0, output_1.dryRunLog)('列出待办', options);
45
+ return;
46
+ }
47
+ loading.start();
48
+ const result = await api_1.apiService.listTodos(options.status, options.priority, options.tags);
49
+ loading.succeed('待办列表加载成功');
50
+ if (result.data && result.data.length > 0) {
51
+ (0, output_1.output)(result.data);
52
+ }
53
+ else {
54
+ (0, output_1.output)({ message: '暂无待办' });
55
+ }
24
56
  }
25
57
  catch (error) {
26
- console.error('查询待办失败:', error.message);
58
+ loading.fail('加载待办列表失败');
59
+ (0, output_1.outputError)(error.message);
27
60
  process.exit(1);
28
61
  }
29
62
  },
63
+ /**
64
+ * 编辑待办
65
+ * biz todo edit <id> --title <new> --priority high --tags work
66
+ */
30
67
  update: async (id, options = {}) => {
68
+ const loading = (0, output_1.createLoading)('更新待办...');
31
69
  try {
70
+ if ((0, output_1.isDryRun)()) {
71
+ loading.stop();
72
+ (0, output_1.dryRunLog)('更新待办', { id, ...options });
73
+ return;
74
+ }
75
+ loading.start();
32
76
  const updates = {};
33
77
  if (options.title)
34
78
  updates.title = options.title;
@@ -38,36 +82,142 @@ exports.todoCommands = {
38
82
  updates.priority = options.priority;
39
83
  if (options.due)
40
84
  updates.dueDate = options.due;
85
+ if (options.tags)
86
+ updates.tags = options.tags;
41
87
  const result = await api_1.apiService.updateTodo(id, updates);
42
- console.log(JSON.stringify(result, null, 2));
88
+ loading.succeed('待办更新成功');
89
+ (0, output_1.output)(result);
43
90
  }
44
91
  catch (error) {
45
- console.error('更新待办失败:', error.message);
92
+ loading.fail('更新待办失败');
93
+ (0, output_1.outputError)(error.message);
46
94
  process.exit(1);
47
95
  }
48
96
  },
97
+ /**
98
+ * 标记待办完成
99
+ * biz todo done <id>
100
+ */
49
101
  done: async (id) => {
102
+ const loading = (0, output_1.createLoading)('标记待办完成...');
50
103
  try {
104
+ if ((0, output_1.isDryRun)()) {
105
+ loading.stop();
106
+ (0, output_1.dryRunLog)('标记待办完成', { id });
107
+ return;
108
+ }
109
+ loading.start();
51
110
  const result = await api_1.apiService.updateTodo(id, { status: 'done' });
52
- console.log(JSON.stringify(result, null, 2));
111
+ loading.succeed('待办已完成');
112
+ (0, output_1.output)(result);
53
113
  }
54
114
  catch (error) {
55
- console.error('标记待办完成失败:', error.message);
115
+ loading.fail('标记待办完成失败');
116
+ (0, output_1.outputError)(error.message);
56
117
  process.exit(1);
57
118
  }
58
119
  },
120
+ /**
121
+ * 删除待办
122
+ * biz todo delete <id>
123
+ */
59
124
  delete: async (id) => {
125
+ const loading = (0, output_1.createLoading)('删除待办...');
60
126
  try {
127
+ if ((0, output_1.isDryRun)()) {
128
+ loading.stop();
129
+ (0, output_1.dryRunLog)('删除待办', { id });
130
+ return;
131
+ }
132
+ loading.start();
61
133
  const result = await api_1.apiService.deleteTodo(id);
62
- console.log(JSON.stringify(result, null, 2));
134
+ loading.succeed('待办已删除');
135
+ (0, output_1.output)(result);
63
136
  }
64
137
  catch (error) {
65
- console.error('删除待办失败:', error.message);
138
+ loading.fail('删除待办失败');
139
+ (0, output_1.outputError)(error.message);
140
+ process.exit(1);
141
+ }
142
+ },
143
+ /**
144
+ * 完成待办并生成下次 occurrence
145
+ * biz todo repeat <id>
146
+ */
147
+ repeat: async (id) => {
148
+ const loading = (0, output_1.createLoading)('处理重复待办...');
149
+ try {
150
+ if ((0, output_1.isDryRun)()) {
151
+ loading.stop();
152
+ (0, output_1.dryRunLog)('重复待办', { id });
153
+ return;
154
+ }
155
+ loading.start();
156
+ const result = await api_1.apiService.repeatTodo(id);
157
+ loading.succeed('下次 occurrence 已生成');
158
+ (0, output_1.output)(result);
159
+ }
160
+ catch (error) {
161
+ loading.fail('处理重复待办失败');
162
+ (0, output_1.outputError)(error.message);
163
+ process.exit(1);
164
+ }
165
+ },
166
+ /**
167
+ * 创建子待办
168
+ * biz todo subtask <parent-id> --title <subtask title>
169
+ */
170
+ subtask: async (parentId, options = {}) => {
171
+ const loading = (0, output_1.createLoading)('创建子待办...');
172
+ try {
173
+ if (!options.title) {
174
+ loading.fail('缺少必需参数 --title');
175
+ (0, output_1.outputError)('Usage: biz todo subtask <parent-id> --title <subtask title>');
176
+ process.exit(1);
177
+ }
178
+ if ((0, output_1.isDryRun)()) {
179
+ loading.stop();
180
+ (0, output_1.dryRunLog)('创建子待办', { parentId, ...options });
181
+ return;
182
+ }
183
+ loading.start();
184
+ const result = await api_1.apiService.createTodo(options.title, undefined, undefined, undefined, undefined, undefined, String(parentId));
185
+ loading.succeed('子待办创建成功');
186
+ (0, output_1.output)(result);
187
+ }
188
+ catch (error) {
189
+ loading.fail('创建子待办失败');
190
+ (0, output_1.outputError)(error.message);
191
+ process.exit(1);
192
+ }
193
+ },
194
+ /**
195
+ * 列出子待办
196
+ * biz todo subtasks <parent-id>
197
+ */
198
+ subtasks: async (parentId) => {
199
+ const loading = (0, output_1.createLoading)('加载子待办列表...');
200
+ try {
201
+ if ((0, output_1.isDryRun)()) {
202
+ loading.stop();
203
+ (0, output_1.dryRunLog)('列出子待办', { parentId });
204
+ return;
205
+ }
206
+ loading.start();
207
+ const result = await api_1.apiService.listSubtasks(parentId);
208
+ loading.succeed('子待办列表加载成功');
209
+ if (result.data && result.data.length > 0) {
210
+ (0, output_1.output)(result.data);
211
+ }
212
+ else {
213
+ (0, output_1.output)({ message: '暂无子待办' });
214
+ }
215
+ }
216
+ catch (error) {
217
+ loading.fail('加载子待办列表失败');
218
+ (0, output_1.outputError)(error.message);
66
219
  process.exit(1);
67
220
  }
68
221
  },
69
222
  };
70
- // 兼容旧导出
71
- exports.createTodo = exports.todoCommands.create;
72
- exports.listTodos = exports.todoCommands.list;
73
223
  //# sourceMappingURL=todo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/commands/biz/todo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/commands/biz/todo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/commands/sys/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,UAAU,GAAU,WAAW,MAAM,EAAE,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,kBAezG,CAAC"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/commands/sys/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,UAAU,GAAU,WAAW,MAAM,EAAE,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,kBAkCzG,CAAC"}
@@ -6,21 +6,38 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.syncHealth = void 0;
8
8
  const api_1 = require("../../services/api");
9
+ const output_1 = require("../../utils/output");
9
10
  const syncHealth = async (dataType, options = {}) => {
11
+ const loading = (0, output_1.createLoading)('处理健康数据...');
10
12
  try {
11
13
  if (dataType || options.startDate || options.endDate) {
12
14
  // 查询模式
15
+ if ((0, output_1.isDryRun)()) {
16
+ loading.stop();
17
+ (0, output_1.dryRunLog)('查询健康数据', { dataType, ...options });
18
+ return;
19
+ }
20
+ loading.start();
13
21
  const result = await api_1.apiService.queryHealthData(dataType, options.startDate, options.endDate);
14
- console.log(JSON.stringify(result, null, 2));
22
+ loading.succeed('健康数据加载成功');
23
+ (0, output_1.output)(result);
15
24
  }
16
25
  else {
17
26
  // 同步模式
27
+ if ((0, output_1.isDryRun)()) {
28
+ loading.stop();
29
+ (0, output_1.dryRunLog)('同步健康数据', {});
30
+ return;
31
+ }
32
+ loading.start();
18
33
  const result = await api_1.apiService.syncHealthData();
19
- console.log(JSON.stringify(result, null, 2));
34
+ loading.succeed('健康数据同步成功');
35
+ (0, output_1.output)(result);
20
36
  }
21
37
  }
22
38
  catch (error) {
23
- console.error('健康数据操作失败:', error.message);
39
+ loading.fail('健康数据操作失败');
40
+ (0, output_1.outputError)(error.message);
24
41
  process.exit(1);
25
42
  }
26
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/commands/sys/health.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4CAAgD;AAEzC,MAAM,UAAU,GAAG,KAAK,EAAE,QAAiB,EAAE,UAAoD,EAAE,EAAE,EAAE;IAC5G,IAAI,CAAC;QACH,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,cAAc,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,UAAU,cAerB"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/commands/sys/health.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4CAAgD;AAChD,+CAA6F;AAEtF,MAAM,UAAU,GAAG,KAAK,EAAE,QAAiB,EAAE,UAAoD,EAAE,EAAE,EAAE;IAC5G,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,WAAW,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,OAAO;YACP,IAAI,IAAA,iBAAQ,GAAE,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,kBAAS,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9F,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO;YACP,IAAI,IAAA,iBAAQ,GAAE,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,kBAAS,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,cAAc,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,IAAA,oBAAW,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAlCW,QAAA,UAAU,cAkCrB"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,11 @@
3
3
  * shawnxixi-cli
4
4
  * 肖嘻 CLI 工具入口
5
5
  * 命令命名空间:biz:*(日常业务)、sys:*(系统操作)
6
+ *
7
+ * 全局参数:
8
+ * --json 输出 JSON 格式
9
+ * --quiet 静默模式(只输出关键信息)
10
+ * --dry-run 预览模式(不实际调用 API)
6
11
  */
7
12
  export {};
8
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}