shawnxixi-cli 0.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 (51) hide show
  1. package/.env.example +2 -0
  2. package/.github/workflows/ci.yml +48 -0
  3. package/AUTH-RESEARCH.md +230 -0
  4. package/CLAUDE.md +102 -0
  5. package/NPM-PUBLISH-RESEARCH.md +163 -0
  6. package/README.md +136 -0
  7. package/dist/commands/biz/calendar.d.ts +12 -0
  8. package/dist/commands/biz/calendar.d.ts.map +1 -0
  9. package/dist/commands/biz/calendar.js +35 -0
  10. package/dist/commands/biz/calendar.js.map +1 -0
  11. package/dist/commands/biz/finance.d.ts +12 -0
  12. package/dist/commands/biz/finance.d.ts.map +1 -0
  13. package/dist/commands/biz/finance.js +34 -0
  14. package/dist/commands/biz/finance.js.map +1 -0
  15. package/dist/commands/biz/item.d.ts +12 -0
  16. package/dist/commands/biz/item.d.ts.map +1 -0
  17. package/dist/commands/biz/item.js +32 -0
  18. package/dist/commands/biz/item.js.map +1 -0
  19. package/dist/commands/biz/record.d.ts +28 -0
  20. package/dist/commands/biz/record.d.ts.map +1 -0
  21. package/dist/commands/biz/record.js +34 -0
  22. package/dist/commands/biz/record.js.map +1 -0
  23. package/dist/commands/biz/todo.d.ts +35 -0
  24. package/dist/commands/biz/todo.d.ts.map +1 -0
  25. package/dist/commands/biz/todo.js +73 -0
  26. package/dist/commands/biz/todo.js.map +1 -0
  27. package/dist/commands/sys/health.d.ts +9 -0
  28. package/dist/commands/sys/health.d.ts.map +1 -0
  29. package/dist/commands/sys/health.js +28 -0
  30. package/dist/commands/sys/health.js.map +1 -0
  31. package/dist/index.d.ts +8 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +199 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/services/api.d.ts +37 -0
  36. package/dist/services/api.d.ts.map +1 -0
  37. package/dist/services/api.js +218 -0
  38. package/dist/services/api.js.map +1 -0
  39. package/jest.config.js +11 -0
  40. package/package.json +40 -0
  41. package/src/commands/biz/calendar.ts +31 -0
  42. package/src/commands/biz/finance.ts +30 -0
  43. package/src/commands/biz/item.ts +28 -0
  44. package/src/commands/biz/record.ts +38 -0
  45. package/src/commands/biz/todo.ts +74 -0
  46. package/src/commands/sys/health.ts +23 -0
  47. package/src/index.ts +209 -0
  48. package/src/services/api.ts +226 -0
  49. package/tests/commands/todo.test.ts +39 -0
  50. package/tests/services/api.test.ts +39 -0
  51. package/tsconfig.json +20 -0
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calendarCommands = void 0;
4
+ const api_1 = require("../../services/api");
5
+ exports.calendarCommands = {
6
+ create: async (title, options = {}) => {
7
+ if (!options.start || !options.end) {
8
+ console.error('必须指定 --start 和 --end 时间');
9
+ process.exit(1);
10
+ }
11
+ try {
12
+ const result = await api_1.apiService.createCalendarEvent
13
+ ? api_1.apiService.createCalendarEvent(title, options.start, options.end, options.desc)
14
+ : { error: 'Calendar API not yet implemented in service' };
15
+ console.log(JSON.stringify(result, null, 2));
16
+ }
17
+ catch (error) {
18
+ console.error('创建日程失败:', error.message);
19
+ process.exit(1);
20
+ }
21
+ },
22
+ list: async (options = {}) => {
23
+ try {
24
+ const result = await api_1.apiService.listCalendarEvents
25
+ ? api_1.apiService.listCalendarEvents(options)
26
+ : { error: 'Calendar API not yet implemented in service' };
27
+ console.log(JSON.stringify(result, null, 2));
28
+ }
29
+ catch (error) {
30
+ console.error('查询日程失败:', error.message);
31
+ process.exit(1);
32
+ }
33
+ },
34
+ };
35
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/commands/biz/calendar.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEnC,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,UAA2D,EAAE,EAAE,EAAE;QAC7F,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAO,gBAAkB,CAAC,mBAAmB;gBAC1D,CAAC,CAAE,gBAAkB,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;gBAC1F,CAAC,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,UAA0C,EAAE,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAO,gBAAkB,CAAC,kBAAkB;gBACzD,CAAC,CAAE,gBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACjD,CAAC,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const financeCommands: {
2
+ create: (amount: string, options?: {
3
+ type?: string;
4
+ category?: string;
5
+ desc?: string;
6
+ }) => Promise<void>;
7
+ list: (options?: {
8
+ type?: string;
9
+ category?: string;
10
+ }) => Promise<void>;
11
+ };
12
+ //# sourceMappingURL=finance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/finance.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;qBACH,MAAM,YAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;qBAiBrE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CAS3D,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.financeCommands = void 0;
4
+ const api_1 = require("../../services/api");
5
+ exports.financeCommands = {
6
+ create: async (amount, options = {}) => {
7
+ const num = parseFloat(amount);
8
+ if (isNaN(num)) {
9
+ console.error('金额必须是数字:', amount);
10
+ process.exit(1);
11
+ }
12
+ const type = options.type || (num >= 0 ? 'income' : 'expense');
13
+ const category = options.category || 'other';
14
+ try {
15
+ const result = await api_1.apiService.createFinance(Math.abs(num), type, category, options.desc);
16
+ console.log(JSON.stringify(result, null, 2));
17
+ }
18
+ catch (error) {
19
+ console.error('创建财务记录失败:', error.message);
20
+ process.exit(1);
21
+ }
22
+ },
23
+ list: async (options = {}) => {
24
+ try {
25
+ const result = await api_1.apiService.listFinances(options.type, options.category);
26
+ console.log(JSON.stringify(result, null, 2));
27
+ }
28
+ catch (error) {
29
+ console.error('查询财务记录失败:', error.message);
30
+ process.exit(1);
31
+ }
32
+ },
33
+ };
34
+ //# sourceMappingURL=finance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance.js","sourceRoot":"","sources":["../../../src/commands/biz/finance.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEnC,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,KAAK,EAAE,MAAc,EAAE,UAA+D,EAAE,EAAE,EAAE;QAClG,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,UAAgD,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const itemCommands: {
2
+ create: (name: string, options?: {
3
+ location?: string;
4
+ expire?: string;
5
+ category?: string;
6
+ }) => Promise<void>;
7
+ list: (options?: {
8
+ category?: string;
9
+ expiring?: boolean;
10
+ }) => Promise<void>;
11
+ };
12
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/item.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;mBACF,MAAM,YAAW;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;qBAazE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;CAWhE,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.itemCommands = void 0;
4
+ const api_1 = require("../../services/api");
5
+ exports.itemCommands = {
6
+ create: async (name, options = {}) => {
7
+ try {
8
+ // Item API is not yet in apiService, use generic approach
9
+ const result = await api_1.apiService.createItem
10
+ ? api_1.apiService.createItem(name, options)
11
+ : { error: 'Item API not yet implemented in service' };
12
+ console.log(JSON.stringify(result, null, 2));
13
+ }
14
+ catch (error) {
15
+ console.error('创建物品失败:', error.message);
16
+ process.exit(1);
17
+ }
18
+ },
19
+ list: async (options = {}) => {
20
+ try {
21
+ const result = await api_1.apiService.listItems
22
+ ? api_1.apiService.listItems(options)
23
+ : { error: 'Item API not yet implemented in service' };
24
+ console.log(JSON.stringify(result, null, 2));
25
+ }
26
+ catch (error) {
27
+ console.error('查询物品失败:', error.message);
28
+ process.exit(1);
29
+ }
30
+ },
31
+ };
32
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/commands/biz/item.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEnC,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,UAAqE,EAAE,EAAE,EAAE;QACtG,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,MAAM,GAAG,MAAO,gBAAkB,CAAC,UAAU;gBACjD,CAAC,CAAE,gBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC/C,CAAC,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,UAAqD,EAAE,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAO,gBAAkB,CAAC,SAAS;gBAChD,CAAC,CAAE,gBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC;gBACxC,CAAC,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * biz record 命令
3
+ * 记录相关命令:create / list
4
+ */
5
+ export interface RecordItem {
6
+ id: string;
7
+ content: string;
8
+ createdAt: string;
9
+ }
10
+ export declare const recordCommands: {
11
+ create: (title: string, content: string, options?: {
12
+ type?: string;
13
+ tags?: string;
14
+ }) => Promise<void>;
15
+ list: (options?: {
16
+ type?: string;
17
+ tags?: string;
18
+ }) => Promise<void>;
19
+ };
20
+ export declare const createRecord: (title: string, content: string, options?: {
21
+ type?: string;
22
+ tags?: string;
23
+ }) => Promise<void>;
24
+ export declare const listRecords: (options?: {
25
+ type?: string;
26
+ tags?: string;
27
+ }) => Promise<void>;
28
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/record.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc;oBACH,MAAM,WAAW,MAAM,YAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;qBAUlE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;CASvD,CAAC;AAGF,eAAO,MAAM,YAAY,UAtBD,MAAM,WAAW,MAAM,YAAW;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,kBAsBzC,CAAC;AAClD,eAAO,MAAM,WAAW,aAbA;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,kBAaV,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * biz record 命令
4
+ * 记录相关命令:create / list
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.listRecords = exports.createRecord = exports.recordCommands = void 0;
8
+ const api_1 = require("../../services/api");
9
+ exports.recordCommands = {
10
+ create: async (title, content, options = {}) => {
11
+ try {
12
+ const result = await api_1.apiService.createRecord(title, content, options.type, options.tags);
13
+ console.log(JSON.stringify(result, null, 2));
14
+ }
15
+ catch (error) {
16
+ console.error('创建记录失败:', error.message);
17
+ process.exit(1);
18
+ }
19
+ },
20
+ list: async (options = {}) => {
21
+ try {
22
+ const result = await api_1.apiService.listRecords(options.type, options.tags);
23
+ console.log(JSON.stringify(result, null, 2));
24
+ }
25
+ catch (error) {
26
+ console.error('查询记录失败:', error.message);
27
+ process.exit(1);
28
+ }
29
+ },
30
+ };
31
+ // 兼容旧导出
32
+ exports.createRecord = exports.recordCommands.create;
33
+ exports.listRecords = exports.recordCommands.list;
34
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/commands/biz/record.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4CAAgD;AAQnC,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,OAAe,EAAE,UAA4C,EAAE,EAAE,EAAE;QAC/F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,UAA4C,EAAE,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC;AAEF,QAAQ;AACK,QAAA,YAAY,GAAG,sBAAc,CAAC,MAAM,CAAC;AACrC,QAAA,WAAW,GAAG,sBAAc,CAAC,IAAI,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * biz todo 命令
3
+ * 待办相关命令:create / list
4
+ */
5
+ export interface TodoItem {
6
+ id: string;
7
+ title: string;
8
+ completed: boolean;
9
+ createdAt: string;
10
+ }
11
+ export declare const todoCommands: {
12
+ create: (title: string, options?: {
13
+ due?: string;
14
+ priority?: string;
15
+ }) => Promise<void>;
16
+ list: (options?: {
17
+ status?: string;
18
+ }) => Promise<void>;
19
+ update: (id: number, options?: {
20
+ title?: string;
21
+ status?: string;
22
+ priority?: string;
23
+ due?: string;
24
+ }) => Promise<void>;
25
+ done: (id: number) => Promise<void>;
26
+ delete: (id: number) => Promise<void>;
27
+ };
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
+ //# sourceMappingURL=todo.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * biz todo 命令
4
+ * 待办相关命令:create / list
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.listTodos = exports.createTodo = exports.todoCommands = void 0;
8
+ const api_1 = require("../../services/api");
9
+ exports.todoCommands = {
10
+ create: async (title, options = {}) => {
11
+ try {
12
+ const result = await api_1.apiService.createTodo(title, options.due, options.priority);
13
+ console.log(JSON.stringify(result, null, 2));
14
+ }
15
+ catch (error) {
16
+ console.error('创建待办失败:', error.message);
17
+ process.exit(1);
18
+ }
19
+ },
20
+ list: async (options = {}) => {
21
+ try {
22
+ const result = await api_1.apiService.listTodos(options.status);
23
+ console.log(JSON.stringify(result, null, 2));
24
+ }
25
+ catch (error) {
26
+ console.error('查询待办失败:', error.message);
27
+ process.exit(1);
28
+ }
29
+ },
30
+ update: async (id, options = {}) => {
31
+ try {
32
+ const updates = {};
33
+ if (options.title)
34
+ updates.title = options.title;
35
+ if (options.status)
36
+ updates.status = options.status;
37
+ if (options.priority)
38
+ updates.priority = options.priority;
39
+ if (options.due)
40
+ updates.dueDate = options.due;
41
+ const result = await api_1.apiService.updateTodo(id, updates);
42
+ console.log(JSON.stringify(result, null, 2));
43
+ }
44
+ catch (error) {
45
+ console.error('更新待办失败:', error.message);
46
+ process.exit(1);
47
+ }
48
+ },
49
+ done: async (id) => {
50
+ try {
51
+ const result = await api_1.apiService.updateTodo(id, { status: 'done' });
52
+ console.log(JSON.stringify(result, null, 2));
53
+ }
54
+ catch (error) {
55
+ console.error('标记待办完成失败:', error.message);
56
+ process.exit(1);
57
+ }
58
+ },
59
+ delete: async (id) => {
60
+ try {
61
+ const result = await api_1.apiService.deleteTodo(id);
62
+ console.log(JSON.stringify(result, null, 2));
63
+ }
64
+ catch (error) {
65
+ console.error('删除待办失败:', error.message);
66
+ process.exit(1);
67
+ }
68
+ },
69
+ };
70
+ // 兼容旧导出
71
+ exports.createTodo = exports.todoCommands.create;
72
+ exports.listTodos = exports.todoCommands.list;
73
+ //# sourceMappingURL=todo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/commands/biz/todo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * sys health 命令
3
+ * 健康数据命令:sync / query
4
+ */
5
+ export declare const syncHealth: (dataType?: string, options?: {
6
+ startDate?: string;
7
+ endDate?: string;
8
+ }) => Promise<void>;
9
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * sys health 命令
4
+ * 健康数据命令:sync / query
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.syncHealth = void 0;
8
+ const api_1 = require("../../services/api");
9
+ const syncHealth = async (dataType, options = {}) => {
10
+ try {
11
+ if (dataType || options.startDate || options.endDate) {
12
+ // 查询模式
13
+ const result = await api_1.apiService.queryHealthData(dataType, options.startDate, options.endDate);
14
+ console.log(JSON.stringify(result, null, 2));
15
+ }
16
+ else {
17
+ // 同步模式
18
+ const result = await api_1.apiService.syncHealthData();
19
+ console.log(JSON.stringify(result, null, 2));
20
+ }
21
+ }
22
+ catch (error) {
23
+ console.error('健康数据操作失败:', error.message);
24
+ process.exit(1);
25
+ }
26
+ };
27
+ exports.syncHealth = syncHealth;
28
+ //# sourceMappingURL=health.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * shawnxixi-cli
4
+ * 肖嘻 CLI 工具入口
5
+ * 命令命名空间:biz:*(日常业务)、sys:*(系统操作)
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
package/dist/index.js ADDED
@@ -0,0 +1,199 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * shawnxixi-cli
5
+ * 肖嘻 CLI 工具入口
6
+ * 命令命名空间:biz:*(日常业务)、sys:*(系统操作)
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const todo_1 = require("./commands/biz/todo");
10
+ const record_1 = require("./commands/biz/record");
11
+ const finance_1 = require("./commands/biz/finance");
12
+ const item_1 = require("./commands/biz/item");
13
+ const calendar_1 = require("./commands/biz/calendar");
14
+ const health_1 = require("./commands/sys/health");
15
+ const commands = {
16
+ // Todo
17
+ 'biz:todo:create': async (title, args) => {
18
+ const options = parseTodoOptions(args);
19
+ await todo_1.todoCommands.create(title, options);
20
+ },
21
+ 'biz:todo:list': async () => {
22
+ await todo_1.todoCommands.list({});
23
+ },
24
+ 'biz:todo:done': async (id) => {
25
+ await todo_1.todoCommands.done(parseInt(id, 10));
26
+ },
27
+ 'biz:todo:delete': async (id) => {
28
+ await todo_1.todoCommands.delete(parseInt(id, 10));
29
+ },
30
+ // Record
31
+ 'biz:record:create': async (title, args) => {
32
+ const options = parseRecordOptions(args);
33
+ await record_1.recordCommands.create(title, options.content || '', options);
34
+ },
35
+ 'biz:record:list': async () => {
36
+ await record_1.recordCommands.list({});
37
+ },
38
+ // Finance
39
+ 'biz:finance:create': async (amount, args) => {
40
+ const options = parseFinanceOptions(args);
41
+ await finance_1.financeCommands.create(amount, options);
42
+ },
43
+ 'biz:finance:list': async (args) => {
44
+ const options = parseFinanceOptions(args);
45
+ await finance_1.financeCommands.list(options);
46
+ },
47
+ // Item
48
+ 'biz:item:create': async (name, args) => {
49
+ const options = parseItemOptions(args);
50
+ await item_1.itemCommands.create(name, options);
51
+ },
52
+ 'biz:item:list': async () => {
53
+ await item_1.itemCommands.list({});
54
+ },
55
+ // Calendar
56
+ 'biz:calendar:create': async (title, args) => {
57
+ const options = parseCalendarOptions(args);
58
+ await calendar_1.calendarCommands.create(title, options);
59
+ },
60
+ 'biz:calendar:list': async () => {
61
+ await calendar_1.calendarCommands.list({});
62
+ },
63
+ // System
64
+ 'sys:health:sync': async () => {
65
+ await (0, health_1.syncHealth)();
66
+ },
67
+ 'sys:health:query': async (dataType, args) => {
68
+ const options = parseHealthOptions(args);
69
+ await (0, health_1.syncHealth)(dataType, options);
70
+ },
71
+ };
72
+ // ============ Option Parsers ============
73
+ function parseTodoOptions(args) {
74
+ const options = {};
75
+ for (let i = 0; i < args.length; i++) {
76
+ if (args[i] === '--due' && args[i + 1])
77
+ options.due = args[++i];
78
+ if (args[i] === '--priority' && args[i + 1])
79
+ options.priority = args[++i];
80
+ }
81
+ return options;
82
+ }
83
+ function parseRecordOptions(args) {
84
+ const options = {};
85
+ for (let i = 0; i < args.length; i++) {
86
+ if (args[i] === '--content' && args[i + 1])
87
+ options.content = args[++i];
88
+ if (args[i] === '--type' && args[i + 1])
89
+ options.type = args[++i];
90
+ if (args[i] === '--tags' && args[i + 1])
91
+ options.tags = args[++i];
92
+ }
93
+ return options;
94
+ }
95
+ function parseFinanceOptions(args) {
96
+ const options = {};
97
+ for (let i = 0; i < args.length; i++) {
98
+ if (args[i] === '--type' && args[i + 1])
99
+ options.type = args[++i];
100
+ if (args[i] === '--category' && args[i + 1])
101
+ options.category = args[++i];
102
+ if (args[i] === '--desc' && args[i + 1])
103
+ options.desc = args[++i];
104
+ }
105
+ return options;
106
+ }
107
+ function parseItemOptions(args) {
108
+ const options = {};
109
+ for (let i = 0; i < args.length; i++) {
110
+ if (args[i] === '--location' && args[i + 1])
111
+ options.location = args[++i];
112
+ if (args[i] === '--expire' && args[i + 1])
113
+ options.expire = args[++i];
114
+ if (args[i] === '--category' && args[i + 1])
115
+ options.category = args[++i];
116
+ }
117
+ return options;
118
+ }
119
+ function parseCalendarOptions(args) {
120
+ const options = {};
121
+ for (let i = 0; i < args.length; i++) {
122
+ if (args[i] === '--start' && args[i + 1])
123
+ options.start = args[++i];
124
+ if (args[i] === '--end' && args[i + 1])
125
+ options.end = args[++i];
126
+ if (args[i] === '--desc' && args[i + 1])
127
+ options.desc = args[++i];
128
+ }
129
+ return options;
130
+ }
131
+ function parseHealthOptions(args) {
132
+ const options = {};
133
+ for (let i = 0; i < args.length; i++) {
134
+ if (args[i] === '--from' && args[i + 1])
135
+ options.startDate = args[++i];
136
+ if (args[i] === '--to' && args[i + 1])
137
+ options.endDate = args[++i];
138
+ }
139
+ return options;
140
+ }
141
+ // ============ CLI Entry ============
142
+ function printUsage() {
143
+ console.log(`
144
+ shawnxixi CLI - 肖嘻 CLI 工具
145
+
146
+ Usage: shawnxixi <command> [args...]
147
+
148
+ Business Commands (biz:*):
149
+ biz todo create <title> [--due YYYY-MM-DD] [--priority low|medium|high]
150
+ biz todo list
151
+ biz todo done <id>
152
+ biz todo delete <id>
153
+ biz record create <title> [--content TEXT] [--type diary|pet|note|idea] [--tags TAG1,TAG2]
154
+ biz record list
155
+ biz finance create <amount> [--type income|expense] [--category CAT] [--desc TEXT]
156
+ biz finance list [--type income|expense] [--category CAT]
157
+ biz item create <name> [--location LOC] [--expire YYYY-MM-DD] [--category CAT]
158
+ biz item list
159
+ biz calendar create <title> --start DATETIME --end DATETIME [--desc TEXT]
160
+ biz calendar list
161
+
162
+ System Commands (sys:*):
163
+ sys health sync [--from YYYY-MM-DD] [--to YYYY-MM-DD]
164
+ sys health query <dataType> [--from YYYY-MM-DD] [--to YYYY-MM-DD]
165
+
166
+ Examples:
167
+ shawnxixi biz todo create "开会" --due 2026-04-12 --priority high
168
+ shawnxixi biz finance create 50 --category food --desc "午饭"
169
+ shawnxixi biz calendar create "面试" --start "2026-04-15 14:00" --end "2026-04-15 15:00"
170
+ `);
171
+ }
172
+ function main() {
173
+ const args = process.argv.slice(2);
174
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
175
+ printUsage();
176
+ process.exit(0);
177
+ }
178
+ // Handle special case: "biz todo list" -> "biz:todo:list"
179
+ let commandKey;
180
+ if (args[0] === 'biz' || args[0] === 'sys') {
181
+ commandKey = args.join(':');
182
+ }
183
+ else {
184
+ commandKey = args[0];
185
+ }
186
+ const handler = commands[commandKey];
187
+ if (!handler) {
188
+ console.error(`Unknown command: ${commandKey}`);
189
+ printUsage();
190
+ process.exit(1);
191
+ }
192
+ const handlerArgs = args.slice(1);
193
+ handler(...handlerArgs).catch((error) => {
194
+ console.error('Command failed:', error);
195
+ process.exit(1);
196
+ });
197
+ }
198
+ main();
199
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}