mingpan 0.1.3 → 0.1.5

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 (199) hide show
  1. package/README.en.md +64 -0
  2. package/README.ja.md +64 -0
  3. package/README.md +80 -11
  4. package/dist/core/bazi/BaziCore.d.ts +7 -1
  5. package/dist/core/bazi/BaziCore.d.ts.map +1 -1
  6. package/dist/core/bazi/BaziCore.js +41 -15
  7. package/dist/core/bazi/BaziCore.js.map +1 -1
  8. package/dist/core/bazi/TrueSolarTime.js +8 -8
  9. package/dist/core/bazi/TrueSolarTime.js.map +1 -1
  10. package/dist/core/bazi/types.d.ts +4 -0
  11. package/dist/core/bazi/types.d.ts.map +1 -1
  12. package/dist/core/calendar/SolarTermsCalculator.js +2 -2
  13. package/dist/core/calendar/SolarTermsCalculator.js.map +1 -1
  14. package/dist/core/calendar/astronomicalCalendar.d.ts +0 -13
  15. package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -1
  16. package/dist/core/calendar/astronomicalCalendar.js +0 -56
  17. package/dist/core/calendar/astronomicalCalendar.js.map +1 -1
  18. package/dist/core/calendar/calendar.d.ts.map +1 -1
  19. package/dist/core/calendar/calendar.js +11 -11
  20. package/dist/core/calendar/calendar.js.map +1 -1
  21. package/dist/core/calendar/lunarCalendar.js +1 -1
  22. package/dist/core/calendar/lunarCalendar.js.map +1 -1
  23. package/dist/core/calendar/solarTerms.js +10 -10
  24. package/dist/core/calendar/solarTerms.js.map +1 -1
  25. package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -1
  26. package/dist/core/ziwei/IztroAdapter.js +11 -4
  27. package/dist/core/ziwei/IztroAdapter.js.map +1 -1
  28. package/dist/index.d.ts +10 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +13 -1582
  31. package/dist/index.js.map +1 -1
  32. package/dist/output/fortuneTextRenderer.d.ts +8 -7
  33. package/dist/output/fortuneTextRenderer.d.ts.map +1 -1
  34. package/dist/output/fortuneTextRenderer.js +89 -25
  35. package/dist/output/fortuneTextRenderer.js.map +1 -1
  36. package/dist/output/listTextRenderer.js +7 -7
  37. package/dist/output/listTextRenderer.js.map +1 -1
  38. package/dist/output/qimenTextRenderer.d.ts +2 -6
  39. package/dist/output/qimenTextRenderer.d.ts.map +1 -1
  40. package/dist/output/qimenTextRenderer.js +12 -145
  41. package/dist/output/qimenTextRenderer.js.map +1 -1
  42. package/dist/server.d.ts +11 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +35 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/services/bazi/BaziService.d.ts +1 -17
  47. package/dist/services/bazi/BaziService.d.ts.map +1 -1
  48. package/dist/services/bazi/BaziService.js +11 -195
  49. package/dist/services/bazi/BaziService.js.map +1 -1
  50. package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1 -1
  51. package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -1
  52. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +12 -12
  53. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -1
  54. package/dist/services/bazi/calculators/DaYunCalculator.js +1 -1
  55. package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -1
  56. package/dist/services/bazi/calculators/LiuRiCalculator.js +2 -2
  57. package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -1
  58. package/dist/services/bazi/calculators/LiuYueCalculator.js +2 -2
  59. package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -1
  60. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -1
  61. package/dist/services/bazi/calculators/LuckCycleCalculator.js +55 -43
  62. package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -1
  63. package/dist/services/bazi/index.d.ts +0 -2
  64. package/dist/services/bazi/index.d.ts.map +1 -1
  65. package/dist/services/bazi/index.js +1 -5
  66. package/dist/services/bazi/index.js.map +1 -1
  67. package/dist/services/bazi/types.d.ts +4 -112
  68. package/dist/services/bazi/types.d.ts.map +1 -1
  69. package/dist/services/bazi/types.js +3 -102
  70. package/dist/services/bazi/types.js.map +1 -1
  71. package/dist/services/daliuren/DaliurenService.d.ts +11 -1
  72. package/dist/services/daliuren/DaliurenService.d.ts.map +1 -1
  73. package/dist/services/daliuren/DaliurenService.js +30 -0
  74. package/dist/services/daliuren/DaliurenService.js.map +1 -1
  75. package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -1
  76. package/dist/services/daliuren/calculators/TianDiPanCalculator.js +3 -4
  77. package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -1
  78. package/dist/services/daliuren/data/constants.d.ts +7 -0
  79. package/dist/services/daliuren/data/constants.d.ts.map +1 -1
  80. package/dist/services/daliuren/data/constants.js +17 -1
  81. package/dist/services/daliuren/data/constants.js.map +1 -1
  82. package/dist/services/daliuren/types.d.ts +11 -2
  83. package/dist/services/daliuren/types.d.ts.map +1 -1
  84. package/dist/services/liuyao/LiuyaoService.d.ts.map +1 -1
  85. package/dist/services/liuyao/LiuyaoService.js +1 -0
  86. package/dist/services/liuyao/LiuyaoService.js.map +1 -1
  87. package/dist/services/meihua/MeihuaService.d.ts.map +1 -1
  88. package/dist/services/meihua/MeihuaService.js +4 -3
  89. package/dist/services/meihua/MeihuaService.js.map +1 -1
  90. package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -1
  91. package/dist/services/meihua/calculators/TiyongCalculator.js +6 -5
  92. package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -1
  93. package/dist/services/qimen/QimenService.d.ts +1 -18
  94. package/dist/services/qimen/QimenService.d.ts.map +1 -1
  95. package/dist/services/qimen/QimenService.js +13 -45
  96. package/dist/services/qimen/QimenService.js.map +1 -1
  97. package/dist/services/qimen/calculators/BaMenCalculator.d.ts +14 -22
  98. package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -1
  99. package/dist/services/qimen/calculators/BaMenCalculator.js +41 -59
  100. package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -1
  101. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +6 -13
  102. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -1
  103. package/dist/services/qimen/calculators/JiuGongCalculator.js +11 -41
  104. package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -1
  105. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +13 -23
  106. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -1
  107. package/dist/services/qimen/calculators/JiuXingCalculator.js +23 -68
  108. package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -1
  109. package/dist/services/qimen/calculators/JuShuCalculator.d.ts +8 -5
  110. package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -1
  111. package/dist/services/qimen/calculators/JuShuCalculator.js +16 -21
  112. package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -1
  113. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +19 -14
  114. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -1
  115. package/dist/services/qimen/calculators/PanTypeCalculator.js +34 -36
  116. package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -1
  117. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +11 -20
  118. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -1
  119. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +29 -42
  120. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -1
  121. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +34 -41
  122. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -1
  123. package/dist/services/qimen/calculators/ZhuanPanCalculator.js +102 -130
  124. package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -1
  125. package/dist/services/qimen/types.d.ts +3 -77
  126. package/dist/services/qimen/types.d.ts.map +1 -1
  127. package/dist/services/qimen/types.js +3 -2
  128. package/dist/services/qimen/types.js.map +1 -1
  129. package/dist/services/ziwei/ZiweiService.d.ts.map +1 -1
  130. package/dist/services/ziwei/ZiweiService.js +4 -3
  131. package/dist/services/ziwei/ZiweiService.js.map +1 -1
  132. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -1
  133. package/dist/services/ziwei/calculators/DecadeCalculator.js +2 -1
  134. package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -1
  135. package/dist/shared/logger.d.ts +5 -0
  136. package/dist/shared/logger.d.ts.map +1 -1
  137. package/dist/shared/logger.js +16 -4
  138. package/dist/shared/logger.js.map +1 -1
  139. package/dist/tools/baziTools.d.ts +13 -0
  140. package/dist/tools/baziTools.d.ts.map +1 -0
  141. package/dist/tools/baziTools.js +331 -0
  142. package/dist/tools/baziTools.js.map +1 -0
  143. package/dist/tools/calendarTools.d.ts +12 -0
  144. package/dist/tools/calendarTools.d.ts.map +1 -0
  145. package/dist/tools/calendarTools.js +121 -0
  146. package/dist/tools/calendarTools.js.map +1 -0
  147. package/dist/tools/divinationTools.d.ts +9 -0
  148. package/dist/tools/divinationTools.d.ts.map +1 -0
  149. package/dist/tools/divinationTools.js +205 -0
  150. package/dist/tools/divinationTools.js.map +1 -0
  151. package/dist/tools/qimenTools.d.ts +10 -0
  152. package/dist/tools/qimenTools.d.ts.map +1 -0
  153. package/dist/tools/qimenTools.js +132 -0
  154. package/dist/tools/qimenTools.js.map +1 -0
  155. package/dist/tools/schemas.d.ts +99 -0
  156. package/dist/tools/schemas.d.ts.map +1 -0
  157. package/dist/tools/schemas.js +163 -0
  158. package/dist/tools/schemas.js.map +1 -0
  159. package/dist/tools/ziweiTools.d.ts +14 -0
  160. package/dist/tools/ziweiTools.d.ts.map +1 -0
  161. package/dist/tools/ziweiTools.js +484 -0
  162. package/dist/tools/ziweiTools.js.map +1 -0
  163. package/dist/utils/ageCalculator.d.ts +1 -1
  164. package/dist/utils/ageCalculator.d.ts.map +1 -1
  165. package/dist/utils/ageCalculator.js +10 -6
  166. package/dist/utils/ageCalculator.js.map +1 -1
  167. package/dist/utils/timeNormalization.d.ts +42 -17
  168. package/dist/utils/timeNormalization.d.ts.map +1 -1
  169. package/dist/utils/timeNormalization.js +99 -41
  170. package/dist/utils/timeNormalization.js.map +1 -1
  171. package/dist/utils/wallTime.d.ts +25 -0
  172. package/dist/utils/wallTime.d.ts.map +1 -0
  173. package/dist/utils/wallTime.js +33 -0
  174. package/dist/utils/wallTime.js.map +1 -0
  175. package/dist/worker.d.ts +23 -0
  176. package/dist/worker.d.ts.map +1 -0
  177. package/dist/worker.js +47 -0
  178. package/dist/worker.js.map +1 -0
  179. package/package.json +21 -11
  180. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +0 -16
  181. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +0 -1
  182. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +0 -60
  183. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +0 -1
  184. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +0 -33
  185. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +0 -1
  186. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +0 -209
  187. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +0 -1
  188. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +0 -236
  189. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +0 -1
  190. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +0 -2079
  191. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +0 -1
  192. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +0 -46
  193. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +0 -1
  194. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +0 -260
  195. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +0 -1
  196. package/dist/services/qimen/calculators/ZeRiCalculator.d.ts +0 -78
  197. package/dist/services/qimen/calculators/ZeRiCalculator.d.ts.map +0 -1
  198. package/dist/services/qimen/calculators/ZeRiCalculator.js +0 -431
  199. package/dist/services/qimen/calculators/ZeRiCalculator.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * 占卜類 MCP 工具:六爻、梅花易數、大六壬
4
+ *
5
+ * 設計原則:占卜工具的時間參數為「起卦/起課時間」,
6
+ * 節氣、干支等曆法量一律由 MCP 自動推得(LLM 手推干支極易出錯)。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.registerDivinationTools = registerDivinationTools;
10
+ const zod_1 = require("zod");
11
+ const LiuyaoService_1 = require("../services/liuyao/LiuyaoService");
12
+ const liuyaoTextRenderer_1 = require("../output/liuyaoTextRenderer");
13
+ const MeihuaService_1 = require("../services/meihua/MeihuaService");
14
+ const meihuaTextRenderer_1 = require("../output/meihuaTextRenderer");
15
+ const DaliurenService_1 = require("../services/daliuren/DaliurenService");
16
+ const daliurenTextRenderer_1 = require("../output/daliurenTextRenderer");
17
+ const schemas_1 = require("./schemas");
18
+ const liuyaoService = new LiuyaoService_1.LiuyaoService();
19
+ const meihuaService = new MeihuaService_1.MeihuaService();
20
+ const yaoValue = zod_1.z.union([zod_1.z.literal(6), zod_1.z.literal(7), zod_1.z.literal(8), zod_1.z.literal(9)]);
21
+ function registerDivinationTools(server) {
22
+ // ============= 六爻 =============
23
+ server.registerTool('liuyao_basic', {
24
+ title: '六爻排盤',
25
+ description: `六爻排盤(基礎排盤)。
26
+
27
+ 輸入六個爻值和起卦時間,返回完整的六爻盤面:
28
+ - 本卦/變卦(含卦名、卦宮、五行)
29
+ - 六爻納甲(每爻地支及五行)
30
+ - 六親(父母/兄弟/子孫/妻財/官鬼)
31
+ - 六神(青龍/朱雀/勾陳/螣蛇/白虎/玄武)
32
+ - 世應位置
33
+ - 動爻標註
34
+ - 日干支、月建、旬空
35
+
36
+ 爻值說明:
37
+ - 6 = 老陰(動爻,陰變陽)
38
+ - 7 = 少陽(靜爻,陽)
39
+ - 8 = 少陰(靜爻,陰)
40
+ - 9 = 老陽(動爻,陽變陰)
41
+
42
+ 輸入順序:自下而上(初爻到上爻)
43
+ 起卦時間默認北京時間,可提供 timezone 换算。
44
+
45
+ 輸出為 Markdown 格式,便於 AI 分析解讀。`,
46
+ inputSchema: {
47
+ yaoValues: zod_1.z.tuple([yaoValue, yaoValue, yaoValue, yaoValue, yaoValue, yaoValue])
48
+ .describe('六個爻值(自下而上,初爻到上爻)。6=老陰(動), 7=少陽(靜), 8=少陰(靜), 9=老陽(動)'),
49
+ ...schemas_1.birthTimeFields,
50
+ },
51
+ }, async (args) => (0, schemas_1.textResult)('liuyao_basic', async () => {
52
+ const { normalized, sourceTimezone } = (0, schemas_1.normalizeBirthInfo)(args);
53
+ const result = liuyaoService.calculate({
54
+ yaoValues: args.yaoValues,
55
+ year: normalized.year,
56
+ month: normalized.month,
57
+ day: normalized.day,
58
+ hour: normalized.hour,
59
+ isLunar: false,
60
+ });
61
+ return (0, schemas_1.timezoneNote)(sourceTimezone) + (0, liuyaoTextRenderer_1.renderLiuyaoText)(result);
62
+ }));
63
+ // ============= 梅花易數 =============
64
+ server.registerTool('meihua_basic', {
65
+ title: '梅花易數排盤',
66
+ description: `梅花易數排盤(基礎排盤)。
67
+
68
+ 支持兩種起卦方式:
69
+ 1. 時間起卦(method='time'):根據農曆年月日時起卦
70
+ 2. 數字起卦(method='number'):根據兩個數字起卦
71
+
72
+ 返回完整的梅花盤面:
73
+ - 本卦/變卦/互卦
74
+ - 上卦/下卦(含卦象、五行)
75
+ - 動爻位置
76
+ - 體用分析(體卦、用卦、五行生剋關係)
77
+ - 起卦數據詳情
78
+
79
+ 時間起卦算法(農曆):
80
+ - 上卦 = (年支序數 + 月 + 日) % 8
81
+ - 下卦 = (年支序數 + 月 + 日 + 時辰序數) % 8
82
+ - 動爻 = (年支序數 + 月 + 日 + 時辰序數) % 6
83
+
84
+ 輸出為 Markdown 格式,便於 AI 分析解讀。`,
85
+ inputSchema: {
86
+ method: zod_1.z.enum(['time', 'number']).describe("起卦方式:time=時間起卦,number=數字起卦"),
87
+ year: schemas_1.yearField.optional().describe('起卦年份(公曆,time 模式必填)'),
88
+ month: schemas_1.monthField.optional().describe('起卦月份(1-12,time 模式必填)'),
89
+ day: schemas_1.dayField.optional().describe('起卦日期(1-31,time 模式必填)'),
90
+ hour: schemas_1.hourField.optional().describe('起卦時辰(0-23,time 模式必填)'),
91
+ isLunar: zod_1.z.boolean().optional().default(false).describe('輸入是否為農曆,默認 false'),
92
+ timezone: zod_1.z.string().optional().describe('IANA 時區名(time 模式,默認北京時間)'),
93
+ upperNumber: zod_1.z.number().int().min(1).optional().describe('上卦數(number 模式必填)'),
94
+ lowerNumber: zod_1.z.number().int().min(1).optional().describe('下卦數(number 模式必填)'),
95
+ yaoNumber: zod_1.z.number().int().min(1).optional().describe('動爻數(可選,默認用上下卦數之和)'),
96
+ },
97
+ }, async (args) => (0, schemas_1.textResult)('meihua_basic', async () => {
98
+ let year = args.year;
99
+ let month = args.month;
100
+ let day = args.day;
101
+ let hour = args.hour;
102
+ let isLunar = args.isLunar;
103
+ // 時間模式:入口層完成時區歸一化後再交給服務層
104
+ if (args.method === 'time' && year !== undefined && month !== undefined && day !== undefined && hour !== undefined) {
105
+ const { normalized } = (0, schemas_1.normalizeBirthInfo)({
106
+ year, month, day, hour,
107
+ isLunar,
108
+ timezone: args.timezone,
109
+ });
110
+ year = normalized.year;
111
+ month = normalized.month;
112
+ day = normalized.day;
113
+ hour = normalized.hour;
114
+ isLunar = false;
115
+ }
116
+ const result = meihuaService.calculate({
117
+ method: args.method,
118
+ year,
119
+ month,
120
+ day,
121
+ hour,
122
+ isLunar,
123
+ upperNumber: args.upperNumber,
124
+ lowerNumber: args.lowerNumber,
125
+ yaoNumber: args.yaoNumber,
126
+ });
127
+ return (0, meihuaTextRenderer_1.renderMeihuaText)(result);
128
+ }));
129
+ // ============= 大六壬 =============
130
+ server.registerTool('daliuren_basic', {
131
+ title: '大六壬排盤',
132
+ description: `大六壬排盤(基礎排盤)。
133
+
134
+ 大六壬是中國古老三大占卜術之一,與奇門遁甲、太乙神數並稱三式。
135
+
136
+ 【推薦用法】直接輸入公曆起課時間,系統自動推得節氣、月將、日干支、時干支:
137
+ - year/month/day/hour(+ 可選 minute、timezone、isLunar)
138
+
139
+ 【專家模式】也可顯式指定曆法量(一般無需使用):
140
+ - jieqi:節氣(如:立春、驚蟄,簡繁均可)
141
+ - dayGanZhi / hourGanZhi:完整干支(如:甲子、乙丑)
142
+
143
+ 返回完整的六壬盤面:
144
+ - 天地盤(月將加時辰起盤)
145
+ - 四課(日干支推演)
146
+ - 三傳(九宗門推演:賊尅、比用、涉害、遙尅、昴星、別責、八專、伏吟、返吟)
147
+ - 十二天將(貴人、螣蛇、朱雀、六合、勾陳、青龍、天空、白虎、太常、玄武、太陰、天后)
148
+ - 格局判斷
149
+ - 神煞(日馬、月馬、丁馬、華蓋、閃電)
150
+
151
+ 本工具只負責排盤,斷課解讀交給 Agent。
152
+
153
+ 輸出為 Markdown 格式,便於 AI 分析解讀。`,
154
+ inputSchema: {
155
+ // 推薦:時間輸入
156
+ year: schemas_1.yearField.optional().describe('起課年份(公曆,推薦用法)'),
157
+ month: schemas_1.monthField.optional().describe('起課月份(1-12)'),
158
+ day: schemas_1.dayField.optional().describe('起課日期(1-31)'),
159
+ hour: schemas_1.hourField.optional().describe('起課時辰(0-23)'),
160
+ minute: zod_1.z.number().int().min(0).max(59).optional().describe('分鐘(0-59),默認 0'),
161
+ isLunar: zod_1.z.boolean().optional().default(false).describe('輸入是否為農曆,默認 false'),
162
+ timezone: zod_1.z.string().optional().describe('IANA 時區名(默認北京時間)'),
163
+ // 專家模式:顯式曆法量
164
+ jieqi: zod_1.z.string().optional().describe('【專家模式】節氣(如:立春、驚蟄,簡繁均可)'),
165
+ lunarMonth: zod_1.z.number().int().min(1).max(12).optional().describe('【專家模式】農曆月份(1-12)'),
166
+ dayGanZhi: zod_1.z.string().optional().describe('【專家模式】日干支(如:甲子、乙丑)'),
167
+ hourGanZhi: zod_1.z.string().optional().describe('【專家模式】時干支(如:甲子、乙丑)'),
168
+ },
169
+ }, async (args) => (0, schemas_1.textResult)('daliuren_basic', async () => {
170
+ const daliurenService = new DaliurenService_1.DaliurenService();
171
+ // 推薦路徑:由時間自動推節氣/月將/干支
172
+ const hasTime = args.year !== undefined && args.month !== undefined && args.day !== undefined && args.hour !== undefined;
173
+ if (hasTime) {
174
+ const { normalized, sourceTimezone } = (0, schemas_1.normalizeBirthInfo)({
175
+ year: args.year,
176
+ month: args.month,
177
+ day: args.day,
178
+ hour: args.hour,
179
+ minute: args.minute,
180
+ isLunar: args.isLunar,
181
+ timezone: args.timezone,
182
+ });
183
+ const result = daliurenService.calculateFromTime({
184
+ year: normalized.year,
185
+ month: normalized.month,
186
+ day: normalized.day,
187
+ hour: normalized.hour,
188
+ minute: normalized.minute,
189
+ });
190
+ return (0, schemas_1.timezoneNote)(sourceTimezone) + (0, daliurenTextRenderer_1.renderDaliurenText)(result);
191
+ }
192
+ // 專家模式:顯式曆法量
193
+ if (args.jieqi && args.lunarMonth !== undefined && args.dayGanZhi && args.hourGanZhi) {
194
+ const result = daliurenService.calculate({
195
+ jieqi: args.jieqi,
196
+ lunarMonth: args.lunarMonth,
197
+ dayGanZhi: args.dayGanZhi,
198
+ hourGanZhi: args.hourGanZhi,
199
+ });
200
+ return (0, daliurenTextRenderer_1.renderDaliurenText)(result);
201
+ }
202
+ throw new Error('輸入不完整:請提供起課時間(year/month/day/hour),或完整專家參數(jieqi + lunarMonth + dayGanZhi + hourGanZhi)');
203
+ }));
204
+ }
205
+ //# sourceMappingURL=divinationTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divinationTools.js","sourceRoot":"","sources":["../../src/tools/divinationTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 奇門遁甲 MCP 工具
3
+ *
4
+ * 工具列表:
5
+ * - qimen_basic 基礎排盤(九宮布局、三奇六儀、八門九星八神、格局檢測)
6
+ * - qimen_yongshen 用神分析(按事類,僅確定性信息)
7
+ */
8
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ export declare function registerQimenTools(server: McpServer): void;
10
+ //# sourceMappingURL=qimenTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qimenTools.d.ts","sourceRoot":"","sources":["../../src/tools/qimenTools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmH1D"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * 奇門遁甲 MCP 工具
4
+ *
5
+ * 工具列表:
6
+ * - qimen_basic 基礎排盤(九宮布局、三奇六儀、八門九星八神、格局檢測)
7
+ * - qimen_yongshen 用神分析(按事類,僅確定性信息)
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.registerQimenTools = registerQimenTools;
11
+ const zod_1 = require("zod");
12
+ const QimenService_1 = require("../services/qimen/QimenService");
13
+ const qimenTextRenderer_1 = require("../output/qimenTextRenderer");
14
+ const schemas_1 = require("./schemas");
15
+ const SHI_LEI_VALUES = [
16
+ '求财', '婚姻', '疾病', '出行', '诉讼', '考试', '工作',
17
+ '失物', '置业', '求官', '孕产', '寻人', '合作', '其他',
18
+ ];
19
+ const panTypeField = zod_1.z.enum(['时盘', '日盘', '月盘', '年盘']).optional().default('时盘')
20
+ .describe('盤類型:时盘(默認)、日盘、月盘、年盘');
21
+ const panStyleField = zod_1.z.enum(['转盘', '飞盘']).optional().default('转盘')
22
+ .describe('盤式:转盘(默認,遵循《神奇之門》)或飞盘');
23
+ const zhiRunMethodField = zod_1.z.enum(['chaibu', 'maoshan']).optional().default('chaibu')
24
+ .describe('置閏方法:chaibu=拆補法(默認),maoshan=茅山法');
25
+ const shiLeiField = zod_1.z.enum(SHI_LEI_VALUES).describe('事類(用於確定用神)');
26
+ function registerQimenTools(server) {
27
+ server.registerTool('qimen_basic', {
28
+ title: '奇門遁甲排盤',
29
+ description: `奇門遁甲排盤(基礎排盤)。
30
+
31
+ 奇門遁甲是中國古代三式之一,與大六壬、太乙神數並稱,用於預測和決策。
32
+
33
+ 輸入時間信息,返回完整的奇門盤面:
34
+ - 陰陽遁和局數(根據節氣判定)
35
+ - 九宮布局(地盤干、天盤干)
36
+ - 八門飛布(休、生、傷、杜、景、死、驚、開)
37
+ - 九星飛布(天蓬、天芮、天沖、天輔、天禽、天心、天柱、天任、天英)
38
+ - 八神排布(值符、螣蛇、太陰、六合、白虎、玄武、九地、九天)
39
+ - 旬首信息(符頭、值符星、值使門、空亡)
40
+ - 日干/時干落宮
41
+ - 格局判斷(吉格/凶格約20-30種)
42
+
43
+ 支持選項:
44
+ - 盤類型:時盤(默認)、日盤、月盤、年盤
45
+ - 盤式:轉盤(默認,遵循《神奇之門》)或飛盤
46
+ - 置閏法:拆補法(默認)或茅山法
47
+
48
+ 盤類型說明:
49
+ - 時盤:以時辰為主導,適用於即時預測
50
+ - 日盤:以日干支為主導,適用於當日吉凶
51
+ - 月盤:以月干支為主導,適用於月度運勢
52
+ - 年盤:以年干支為主導,適用於年度規劃
53
+
54
+ 盤式說明:
55
+ - 轉盤:天盤、八門、九星按物理方向旋轉(《神奇之門》派)
56
+ - 飛盤:天盤、八門、九星按宮位數字飛布(傳統飛宮法)
57
+
58
+ 輸出為 Markdown 格式,含 ASCII 九宮格,便於 AI 分析解讀。`,
59
+ inputSchema: {
60
+ ...schemas_1.birthTimeFields,
61
+ panType: panTypeField,
62
+ panStyle: panStyleField,
63
+ zhiRunMethod: zhiRunMethodField,
64
+ },
65
+ }, async (args) => (0, schemas_1.textResult)('qimen_basic', async () => {
66
+ const { normalized, sourceTimezone } = (0, schemas_1.normalizeBirthInfo)(args);
67
+ const qimenService = new QimenService_1.QimenService();
68
+ const result = qimenService.calculate({
69
+ year: normalized.year,
70
+ month: normalized.month,
71
+ day: normalized.day,
72
+ hour: normalized.hour,
73
+ minute: normalized.minute,
74
+ isLunar: false,
75
+ panType: args.panType,
76
+ panStyle: args.panStyle,
77
+ zhiRunMethod: args.zhiRunMethod,
78
+ });
79
+ return (0, schemas_1.timezoneNote)(sourceTimezone) + (0, qimenTextRenderer_1.renderQimenText)(result);
80
+ }));
81
+ server.registerTool('qimen_yongshen', {
82
+ title: '奇門用神分析',
83
+ description: `奇門遁甲用神分析。
84
+
85
+ 在基礎排盤基礎上,根據事類選取用神並分析:
86
+
87
+ **支持 14 種事類**:
88
+ 求財、婚姻、疾病、出行、訴訟、考試、工作、失物、置業、求官、孕產、尋人、合作、其他
89
+
90
+ **分析內容**(僅確定性事實):
91
+ - 主用神/輔用神識別及落宮(依《神奇之門》通行用神表)
92
+ - 用神旺相休囚死狀態(依月令)
93
+ - 用神空亡、入墓、擊刑檢測
94
+ - 與日干生克關係
95
+ - 主客落宮與生克關係(涉及雙方的事類)
96
+ - 年命落宮(可選)
97
+
98
+ 定位說明:用神吉凶、格局利弊等判斷無權威統一口徑,
99
+ 請由 AI 結合盤面(含格局檢測)自行分析。
100
+
101
+ 輸出為結構化 Markdown,便於 AI 斷卦分析。`,
102
+ inputSchema: {
103
+ ...schemas_1.birthTimeFields,
104
+ panType: panTypeField,
105
+ panStyle: panStyleField,
106
+ zhiRunMethod: zhiRunMethodField,
107
+ shiLei: shiLeiField,
108
+ nianGan: zod_1.z.enum(['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'])
109
+ .optional().describe('年干(用於年命分析,可選)'),
110
+ includeShenSha: zod_1.z.boolean().optional().default(true).describe('是否包含神煞分析'),
111
+ },
112
+ }, async (args) => (0, schemas_1.textResult)('qimen_yongshen', async () => {
113
+ const { normalized, sourceTimezone } = (0, schemas_1.normalizeBirthInfo)(args);
114
+ const qimenService = new QimenService_1.QimenService();
115
+ const result = qimenService.calculateWithYongShen({
116
+ year: normalized.year,
117
+ month: normalized.month,
118
+ day: normalized.day,
119
+ hour: normalized.hour,
120
+ minute: normalized.minute,
121
+ isLunar: false,
122
+ panType: args.panType,
123
+ panStyle: args.panStyle,
124
+ zhiRunMethod: args.zhiRunMethod,
125
+ }, args.shiLei, {
126
+ nianGan: args.nianGan,
127
+ includeShenSha: args.includeShenSha,
128
+ });
129
+ return (0, schemas_1.timezoneNote)(sourceTimezone) + (0, qimenTextRenderer_1.renderQimenYongShenText)(result);
130
+ }));
131
+ }
132
+ //# sourceMappingURL=qimenTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qimenTools.js","sourceRoot":"","sources":["../../src/tools/qimenTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * MCP 工具共享 Schema 與輔助函數
3
+ *
4
+ * 各領域工具模組(bazi/ziwei/liuyao/meihua/daliuren/qimen)復用此處的
5
+ * 字段級 Zod schema 與出生信息歸一化邏輯。
6
+ *
7
+ * 設計說明:
8
+ * - registerTool 的 inputSchema 為 ZodRawShape(字段名 → Zod schema),
9
+ * 因此此處導出字段級 schema 而非 z.object
10
+ * - 時間歸一化(農曆轉公曆、時區換算)統一在入口層完成,
11
+ * 服務層只消費北京時間規範分量
12
+ */
13
+ import { z } from 'zod';
14
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
15
+ export declare const yearField: z.ZodNumber;
16
+ export declare const monthField: z.ZodNumber;
17
+ export declare const dayField: z.ZodNumber;
18
+ export declare const hourField: z.ZodNumber;
19
+ export declare const minuteField: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
20
+ export declare const genderField: z.ZodEnum<{
21
+ male: "male";
22
+ female: "female";
23
+ }>;
24
+ export declare const longitudeField: z.ZodOptional<z.ZodNumber>;
25
+ export declare const nameField: z.ZodOptional<z.ZodString>;
26
+ export declare const isLunarField: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
27
+ export declare const timezoneField: z.ZodOptional<z.ZodString>;
28
+ /** 出生/起卦時間字段(公曆或農曆,含可選時區) */
29
+ export declare const birthTimeFields: {
30
+ year: z.ZodNumber;
31
+ month: z.ZodNumber;
32
+ day: z.ZodNumber;
33
+ hour: z.ZodNumber;
34
+ minute: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
35
+ isLunar: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
36
+ timezone: z.ZodOptional<z.ZodString>;
37
+ };
38
+ /** 完整出生信息字段(含性別與可選經度/姓名) */
39
+ export declare const baseBirthInfoFields: {
40
+ gender: z.ZodEnum<{
41
+ male: "male";
42
+ female: "female";
43
+ }>;
44
+ longitude: z.ZodOptional<z.ZodNumber>;
45
+ name: z.ZodOptional<z.ZodString>;
46
+ year: z.ZodNumber;
47
+ month: z.ZodNumber;
48
+ day: z.ZodNumber;
49
+ hour: z.ZodNumber;
50
+ minute: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
51
+ isLunar: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
52
+ timezone: z.ZodOptional<z.ZodString>;
53
+ };
54
+ export interface NormalizableBirthInfo {
55
+ year: number;
56
+ month: number;
57
+ day: number;
58
+ hour: number;
59
+ minute?: number;
60
+ isLunar?: boolean;
61
+ timezone?: string;
62
+ }
63
+ export interface NormalizedBirthInfo<T> {
64
+ normalized: T;
65
+ /** 原始輸入是否為農曆 */
66
+ isLunarInput: boolean;
67
+ /** 發生時區換算時的來源時區 */
68
+ sourceTimezone?: string;
69
+ }
70
+ /**
71
+ * 歸一化出生信息:農曆→公曆、時區→北京時間
72
+ * 每個工具 handler 開頭調用,得到統一的北京時間分量
73
+ */
74
+ export declare function normalizeBirthInfo<T extends NormalizableBirthInfo>(input: T): NormalizedBirthInfo<T>;
75
+ /**
76
+ * 包裝工具回調:成功返回文本結果,異常返回 isError 結果
77
+ * (與協議錯誤區分,便於 LLM 看到可讀的失敗原因並自行修正參數)
78
+ */
79
+ export declare function textResult(toolName: string, fn: () => Promise<string> | string): Promise<CallToolResult>;
80
+ /** 時區換算提示(僅當發生換算時輸出,避免 Agent 對出生時間產生困惑) */
81
+ export declare function timezoneNote(sourceTimezone?: string, isLunarInput?: boolean): string;
82
+ /** 由公曆年推年干支(以 1984 甲子年為基準) */
83
+ export declare function getYearStemBranch(year: number): {
84
+ stem: string;
85
+ branch: string;
86
+ };
87
+ /** 解析干支年輸入("乙巳" 或公曆年數字) */
88
+ export declare function parseGanzhiYear(input: string | number): {
89
+ year: number;
90
+ ganzhi: string;
91
+ };
92
+ /** 解析干支月輸入("丙寅" 或月序數字 1-12,1=寅月) */
93
+ export declare function parseGanzhiMonth(input: string | number): number;
94
+ /** 五虎遁年起月:由公曆年與月序(1=寅月)推月干支 */
95
+ export declare function getMonthStemBranch(year: number, monthNum: number): {
96
+ stem: string;
97
+ branch: string;
98
+ };
99
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAOzE,eAAO,MAAM,SAAS,aAAiE,CAAC;AACxF,eAAO,MAAM,UAAU,aAAqD,CAAC;AAC7E,eAAO,MAAM,QAAQ,aAAqD,CAAC;AAC3E,eAAO,MAAM,SAAS,aAAqD,CAAC;AAC5E,eAAO,MAAM,WAAW,0CAAgF,CAAC;AACzG,eAAO,MAAM,WAAW;;;EAAoD,CAAC;AAC7E,eAAO,MAAM,cAAc,4BAAwE,CAAC;AACpG,eAAO,MAAM,SAAS,4BAA6C,CAAC;AAEpE,eAAO,MAAM,YAAY,2CAAmE,CAAC;AAE7F,eAAO,MAAM,aAAa,4BAEzB,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,eAAe;;;;;;;;CAQ3B,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CAK/B,CAAC;AAMF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC;IACd,gBAAgB;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,qBAAqB,EAAE,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAyBpG;AAWD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GACjC,OAAO,CAAC,cAAc,CAAC,CAYzB;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAGpF;AAUD,8BAA8B;AAC9B,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAMhF;AAED,2BAA2B;AAC3B,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAcxF;AAED,oCAAoC;AACpC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAO/D;AAED,+BAA+B;AAC/B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQnG"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * MCP 工具共享 Schema 與輔助函數
4
+ *
5
+ * 各領域工具模組(bazi/ziwei/liuyao/meihua/daliuren/qimen)復用此處的
6
+ * 字段級 Zod schema 與出生信息歸一化邏輯。
7
+ *
8
+ * 設計說明:
9
+ * - registerTool 的 inputSchema 為 ZodRawShape(字段名 → Zod schema),
10
+ * 因此此處導出字段級 schema 而非 z.object
11
+ * - 時間歸一化(農曆轉公曆、時區換算)統一在入口層完成,
12
+ * 服務層只消費北京時間規範分量
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.baseBirthInfoFields = exports.birthTimeFields = exports.timezoneField = exports.isLunarField = exports.nameField = exports.longitudeField = exports.genderField = exports.minuteField = exports.hourField = exports.dayField = exports.monthField = exports.yearField = void 0;
16
+ exports.normalizeBirthInfo = normalizeBirthInfo;
17
+ exports.textResult = textResult;
18
+ exports.timezoneNote = timezoneNote;
19
+ exports.getYearStemBranch = getYearStemBranch;
20
+ exports.parseGanzhiYear = parseGanzhiYear;
21
+ exports.parseGanzhiMonth = parseGanzhiMonth;
22
+ exports.getMonthStemBranch = getMonthStemBranch;
23
+ const zod_1 = require("zod");
24
+ const timeNormalization_1 = require("../utils/timeNormalization");
25
+ // ============================================
26
+ // 共享字段 Schema
27
+ // ============================================
28
+ exports.yearField = zod_1.z.number().int().min(1900).max(2100).describe('公曆年 1900-2100');
29
+ exports.monthField = zod_1.z.number().int().min(1).max(12).describe('月 1-12');
30
+ exports.dayField = zod_1.z.number().int().min(1).max(31).describe('日 1-31');
31
+ exports.hourField = zod_1.z.number().int().min(0).max(23).describe('時 0-23');
32
+ exports.minuteField = zod_1.z.number().int().min(0).max(59).optional().default(0).describe('分 0-59,默認 0');
33
+ exports.genderField = zod_1.z.enum(['male', 'female']).describe('性別(影響大運順逆)');
34
+ exports.longitudeField = zod_1.z.number().min(-180).max(180).optional().describe('出生地經度(真太陽時校正,可選)');
35
+ exports.nameField = zod_1.z.string().optional().describe('命主姓名(可選)');
36
+ exports.isLunarField = zod_1.z.boolean().optional().default(false).describe('輸入日期是否為農曆,默認公曆');
37
+ exports.timezoneField = zod_1.z.string().optional().describe('IANA 時區名(如 America/New_York)。默認北京時間;設置後輸入時間按此時區換算為北京時間排盤。農曆輸入時忽略');
38
+ /** 出生/起卦時間字段(公曆或農曆,含可選時區) */
39
+ exports.birthTimeFields = {
40
+ year: exports.yearField,
41
+ month: exports.monthField,
42
+ day: exports.dayField,
43
+ hour: exports.hourField,
44
+ minute: exports.minuteField,
45
+ isLunar: exports.isLunarField,
46
+ timezone: exports.timezoneField,
47
+ };
48
+ /** 完整出生信息字段(含性別與可選經度/姓名) */
49
+ exports.baseBirthInfoFields = {
50
+ ...exports.birthTimeFields,
51
+ gender: exports.genderField,
52
+ longitude: exports.longitudeField,
53
+ name: exports.nameField,
54
+ };
55
+ /**
56
+ * 歸一化出生信息:農曆→公曆、時區→北京時間
57
+ * 每個工具 handler 開頭調用,得到統一的北京時間分量
58
+ */
59
+ function normalizeBirthInfo(input) {
60
+ const normalized = (0, timeNormalization_1.normalizeBirthDateTime)({
61
+ year: input.year,
62
+ month: input.month,
63
+ day: input.day,
64
+ hour: input.hour,
65
+ minute: input.minute,
66
+ isLunar: input.isLunar,
67
+ timezone: input.timezone,
68
+ });
69
+ return {
70
+ normalized: {
71
+ ...input,
72
+ year: normalized.year,
73
+ month: normalized.month,
74
+ day: normalized.day,
75
+ hour: normalized.hour,
76
+ minute: normalized.minute,
77
+ isLunar: false, // 歸一化後一律為公曆(北京時間)
78
+ timezone: undefined,
79
+ },
80
+ isLunarInput: normalized.isLunarInput,
81
+ sourceTimezone: normalized.sourceTimezone,
82
+ };
83
+ }
84
+ // ============================================
85
+ // 結果輔助
86
+ // ============================================
87
+ const logger_1 = require("../shared/logger");
88
+ const wallTime_1 = require("../utils/wallTime");
89
+ const logger = new logger_1.Logger('mingpan');
90
+ /**
91
+ * 包裝工具回調:成功返回文本結果,異常返回 isError 結果
92
+ * (與協議錯誤區分,便於 LLM 看到可讀的失敗原因並自行修正參數)
93
+ */
94
+ async function textResult(toolName, fn) {
95
+ try {
96
+ const text = await fn();
97
+ return { content: [{ type: 'text', text }] };
98
+ }
99
+ catch (error) {
100
+ logger.error(`Tool ${toolName} failed`, error);
101
+ const message = error instanceof Error ? error.message : String(error);
102
+ return {
103
+ content: [{ type: 'text', text: `Error: ${message}` }],
104
+ isError: true,
105
+ };
106
+ }
107
+ }
108
+ /** 時區換算提示(僅當發生換算時輸出,避免 Agent 對出生時間產生困惑) */
109
+ function timezoneNote(sourceTimezone, isLunarInput) {
110
+ if (!sourceTimezone)
111
+ return '';
112
+ return `> 注:輸入時間(${sourceTimezone})已換算為北京時間後排盤。\n\n`;
113
+ }
114
+ // ============================================
115
+ // 干支輔助(列表工具用)
116
+ // ============================================
117
+ const STEMS = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
118
+ const BRANCHES = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
119
+ const MONTH_BRANCHES = ['寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥', '子', '丑'];
120
+ /** 由公曆年推年干支(以 1984 甲子年為基準) */
121
+ function getYearStemBranch(year) {
122
+ const yearDiff = year - 1984;
123
+ return {
124
+ stem: STEMS[((yearDiff % 10) + 10) % 10],
125
+ branch: BRANCHES[((yearDiff % 12) + 12) % 12],
126
+ };
127
+ }
128
+ /** 解析干支年輸入("乙巳" 或公曆年數字) */
129
+ function parseGanzhiYear(input) {
130
+ if (typeof input === 'number') {
131
+ const { stem, branch } = getYearStemBranch(input);
132
+ return { year: input, ganzhi: stem + branch };
133
+ }
134
+ const currentYear = (0, wallTime_1.nowBeijingParts)().year;
135
+ for (let y = currentYear - 60; y <= currentYear + 60; y++) {
136
+ const { stem, branch } = getYearStemBranch(y);
137
+ if (stem + branch === input) {
138
+ return { year: y, ganzhi: input };
139
+ }
140
+ }
141
+ const { stem, branch } = getYearStemBranch(currentYear);
142
+ return { year: currentYear, ganzhi: stem + branch };
143
+ }
144
+ /** 解析干支月輸入("丙寅" 或月序數字 1-12,1=寅月) */
145
+ function parseGanzhiMonth(input) {
146
+ if (typeof input === 'number') {
147
+ return input;
148
+ }
149
+ const branch = input.substring(1, 2);
150
+ const idx = MONTH_BRANCHES.indexOf(branch);
151
+ return idx >= 0 ? idx + 1 : 1;
152
+ }
153
+ /** 五虎遁年起月:由公曆年與月序(1=寅月)推月干支 */
154
+ function getMonthStemBranch(year, monthNum) {
155
+ const branch = MONTH_BRANCHES[(monthNum - 1) % 12];
156
+ const { stem: yearStem } = getYearStemBranch(year);
157
+ const firstMonthStemMap = {
158
+ 0: 2, 1: 4, 2: 6, 3: 8, 4: 0, 5: 2, 6: 4, 7: 6, 8: 8, 9: 0,
159
+ };
160
+ const monthStemIndex = (firstMonthStemMap[STEMS.indexOf(yearStem)] + monthNum - 1) % 10;
161
+ return { stem: STEMS[monthStemIndex], branch };
162
+ }
163
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}