mingpan 0.1.2 → 0.1.4

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 (194) hide show
  1. package/README.md +120 -47
  2. package/dist/core/bazi/BaziCore.d.ts +7 -1
  3. package/dist/core/bazi/BaziCore.d.ts.map +1 -1
  4. package/dist/core/bazi/BaziCore.js +37 -11
  5. package/dist/core/bazi/BaziCore.js.map +1 -1
  6. package/dist/core/bazi/types.d.ts +4 -0
  7. package/dist/core/bazi/types.d.ts.map +1 -1
  8. package/dist/core/qimen/FlyingRule.d.ts +60 -0
  9. package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
  10. package/dist/core/qimen/FlyingRule.js +94 -0
  11. package/dist/core/qimen/FlyingRule.js.map +1 -0
  12. package/dist/core/qimen/GongMapping.d.ts +29 -0
  13. package/dist/core/qimen/GongMapping.d.ts.map +1 -0
  14. package/dist/core/qimen/GongMapping.js +83 -0
  15. package/dist/core/qimen/GongMapping.js.map +1 -0
  16. package/dist/core/qimen/RotatingRule.d.ts +76 -0
  17. package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
  18. package/dist/core/qimen/RotatingRule.js +126 -0
  19. package/dist/core/qimen/RotatingRule.js.map +1 -0
  20. package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
  21. package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
  22. package/dist/core/qimen/YinYangDunCalculator.js +79 -0
  23. package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
  24. package/dist/core/qimen/index.d.ts +10 -0
  25. package/dist/core/qimen/index.d.ts.map +1 -0
  26. package/dist/core/qimen/index.js +58 -0
  27. package/dist/core/qimen/index.js.map +1 -0
  28. package/dist/core/qimen/types.d.ts +19 -0
  29. package/dist/core/qimen/types.d.ts.map +1 -0
  30. package/dist/core/qimen/types.js +7 -0
  31. package/dist/core/qimen/types.js.map +1 -0
  32. package/dist/index.d.ts +10 -5
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +14 -1311
  35. package/dist/index.js.map +1 -1
  36. package/dist/output/fortuneTextRenderer.d.ts +8 -7
  37. package/dist/output/fortuneTextRenderer.d.ts.map +1 -1
  38. package/dist/output/fortuneTextRenderer.js +83 -21
  39. package/dist/output/fortuneTextRenderer.js.map +1 -1
  40. package/dist/output/qimenTextRenderer.d.ts +36 -0
  41. package/dist/output/qimenTextRenderer.d.ts.map +1 -0
  42. package/dist/output/qimenTextRenderer.js +230 -0
  43. package/dist/output/qimenTextRenderer.js.map +1 -0
  44. package/dist/server.d.ts +11 -0
  45. package/dist/server.d.ts.map +1 -0
  46. package/dist/server.js +33 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/services/bazi/BaziService.d.ts +1 -17
  49. package/dist/services/bazi/BaziService.d.ts.map +1 -1
  50. package/dist/services/bazi/BaziService.js +9 -194
  51. package/dist/services/bazi/BaziService.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/index.d.ts +0 -2
  55. package/dist/services/bazi/index.d.ts.map +1 -1
  56. package/dist/services/bazi/index.js +1 -5
  57. package/dist/services/bazi/index.js.map +1 -1
  58. package/dist/services/bazi/types.d.ts +4 -112
  59. package/dist/services/bazi/types.d.ts.map +1 -1
  60. package/dist/services/bazi/types.js +3 -102
  61. package/dist/services/bazi/types.js.map +1 -1
  62. package/dist/services/daliuren/DaliurenService.d.ts +11 -1
  63. package/dist/services/daliuren/DaliurenService.d.ts.map +1 -1
  64. package/dist/services/daliuren/DaliurenService.js +30 -0
  65. package/dist/services/daliuren/DaliurenService.js.map +1 -1
  66. package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -1
  67. package/dist/services/daliuren/calculators/TianDiPanCalculator.js +3 -4
  68. package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -1
  69. package/dist/services/daliuren/data/constants.d.ts +7 -0
  70. package/dist/services/daliuren/data/constants.d.ts.map +1 -1
  71. package/dist/services/daliuren/data/constants.js +17 -1
  72. package/dist/services/daliuren/data/constants.js.map +1 -1
  73. package/dist/services/daliuren/types.d.ts +13 -0
  74. package/dist/services/daliuren/types.d.ts.map +1 -1
  75. package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -1
  76. package/dist/services/meihua/calculators/TiyongCalculator.js +6 -5
  77. package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -1
  78. package/dist/services/qimen/QimenService.d.ts +76 -0
  79. package/dist/services/qimen/QimenService.d.ts.map +1 -0
  80. package/dist/services/qimen/QimenService.js +393 -0
  81. package/dist/services/qimen/QimenService.js.map +1 -0
  82. package/dist/services/qimen/calculators/BaMenCalculator.d.ts +45 -0
  83. package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
  84. package/dist/services/qimen/calculators/BaMenCalculator.js +87 -0
  85. package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
  86. package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
  87. package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
  88. package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
  89. package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
  90. package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
  91. package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
  92. package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
  93. package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
  94. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +49 -0
  95. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
  96. package/dist/services/qimen/calculators/JiuGongCalculator.js +68 -0
  97. package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
  98. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +44 -0
  99. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
  100. package/dist/services/qimen/calculators/JiuXingCalculator.js +72 -0
  101. package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
  102. package/dist/services/qimen/calculators/JuShuCalculator.d.ts +60 -0
  103. package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
  104. package/dist/services/qimen/calculators/JuShuCalculator.js +110 -0
  105. package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
  106. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
  107. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
  108. package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
  109. package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
  110. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +41 -0
  111. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
  112. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +73 -0
  113. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
  114. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
  115. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
  116. package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
  117. package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
  118. package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
  119. package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
  120. package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
  121. package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
  122. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +111 -0
  123. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
  124. package/dist/services/qimen/calculators/ZhuanPanCalculator.js +232 -0
  125. package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
  126. package/dist/services/qimen/data/constants.d.ts +105 -0
  127. package/dist/services/qimen/data/constants.d.ts.map +1 -0
  128. package/dist/services/qimen/data/constants.js +295 -0
  129. package/dist/services/qimen/data/constants.js.map +1 -0
  130. package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
  131. package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
  132. package/dist/services/qimen/data/shensha-rules.js +397 -0
  133. package/dist/services/qimen/data/shensha-rules.js.map +1 -0
  134. package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
  135. package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
  136. package/dist/services/qimen/data/yongshen-rules.js +365 -0
  137. package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
  138. package/dist/services/qimen/index.d.ts +20 -0
  139. package/dist/services/qimen/index.d.ts.map +1 -0
  140. package/dist/services/qimen/index.js +43 -0
  141. package/dist/services/qimen/index.js.map +1 -0
  142. package/dist/services/qimen/types.d.ts +316 -0
  143. package/dist/services/qimen/types.d.ts.map +1 -0
  144. package/dist/services/qimen/types.js +21 -0
  145. package/dist/services/qimen/types.js.map +1 -0
  146. package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
  147. package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
  148. package/dist/services/qimen/utils/gongUtils.js +164 -0
  149. package/dist/services/qimen/utils/gongUtils.js.map +1 -0
  150. package/dist/shared/logger.d.ts +5 -0
  151. package/dist/shared/logger.d.ts.map +1 -1
  152. package/dist/shared/logger.js +11 -4
  153. package/dist/shared/logger.js.map +1 -1
  154. package/dist/tools/baziTools.d.ts +13 -0
  155. package/dist/tools/baziTools.d.ts.map +1 -0
  156. package/dist/tools/baziTools.js +331 -0
  157. package/dist/tools/baziTools.js.map +1 -0
  158. package/dist/tools/divinationTools.d.ts +9 -0
  159. package/dist/tools/divinationTools.d.ts.map +1 -0
  160. package/dist/tools/divinationTools.js +209 -0
  161. package/dist/tools/divinationTools.js.map +1 -0
  162. package/dist/tools/qimenTools.d.ts +10 -0
  163. package/dist/tools/qimenTools.d.ts.map +1 -0
  164. package/dist/tools/qimenTools.js +132 -0
  165. package/dist/tools/qimenTools.js.map +1 -0
  166. package/dist/tools/schemas.d.ts +99 -0
  167. package/dist/tools/schemas.d.ts.map +1 -0
  168. package/dist/tools/schemas.js +162 -0
  169. package/dist/tools/schemas.js.map +1 -0
  170. package/dist/tools/ziweiTools.d.ts +14 -0
  171. package/dist/tools/ziweiTools.d.ts.map +1 -0
  172. package/dist/tools/ziweiTools.js +483 -0
  173. package/dist/tools/ziweiTools.js.map +1 -0
  174. package/dist/utils/timeNormalization.d.ts +42 -17
  175. package/dist/utils/timeNormalization.d.ts.map +1 -1
  176. package/dist/utils/timeNormalization.js +99 -41
  177. package/dist/utils/timeNormalization.js.map +1 -1
  178. package/package.json +15 -9
  179. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +0 -16
  180. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +0 -1
  181. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +0 -60
  182. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +0 -1
  183. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +0 -33
  184. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +0 -1
  185. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +0 -209
  186. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +0 -1
  187. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +0 -236
  188. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +0 -1
  189. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +0 -2079
  190. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +0 -1
  191. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +0 -46
  192. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +0 -1
  193. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +0 -260
  194. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +0 -1
@@ -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;AAUD;;;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,162 @@
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 logger = new logger_1.Logger('mingpan');
89
+ /**
90
+ * 包裝工具回調:成功返回文本結果,異常返回 isError 結果
91
+ * (與協議錯誤區分,便於 LLM 看到可讀的失敗原因並自行修正參數)
92
+ */
93
+ async function textResult(toolName, fn) {
94
+ try {
95
+ const text = await fn();
96
+ return { content: [{ type: 'text', text }] };
97
+ }
98
+ catch (error) {
99
+ logger.error(`Tool ${toolName} failed`, error);
100
+ const message = error instanceof Error ? error.message : String(error);
101
+ return {
102
+ content: [{ type: 'text', text: `Error: ${message}` }],
103
+ isError: true,
104
+ };
105
+ }
106
+ }
107
+ /** 時區換算提示(僅當發生換算時輸出,避免 Agent 對出生時間產生困惑) */
108
+ function timezoneNote(sourceTimezone, isLunarInput) {
109
+ if (!sourceTimezone)
110
+ return '';
111
+ return `> 注:輸入時間(${sourceTimezone})已換算為北京時間後排盤。\n\n`;
112
+ }
113
+ // ============================================
114
+ // 干支輔助(列表工具用)
115
+ // ============================================
116
+ const STEMS = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
117
+ const BRANCHES = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
118
+ const MONTH_BRANCHES = ['寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥', '子', '丑'];
119
+ /** 由公曆年推年干支(以 1984 甲子年為基準) */
120
+ function getYearStemBranch(year) {
121
+ const yearDiff = year - 1984;
122
+ return {
123
+ stem: STEMS[((yearDiff % 10) + 10) % 10],
124
+ branch: BRANCHES[((yearDiff % 12) + 12) % 12],
125
+ };
126
+ }
127
+ /** 解析干支年輸入("乙巳" 或公曆年數字) */
128
+ function parseGanzhiYear(input) {
129
+ if (typeof input === 'number') {
130
+ const { stem, branch } = getYearStemBranch(input);
131
+ return { year: input, ganzhi: stem + branch };
132
+ }
133
+ const currentYear = new Date().getFullYear();
134
+ for (let y = currentYear - 60; y <= currentYear + 60; y++) {
135
+ const { stem, branch } = getYearStemBranch(y);
136
+ if (stem + branch === input) {
137
+ return { year: y, ganzhi: input };
138
+ }
139
+ }
140
+ const { stem, branch } = getYearStemBranch(currentYear);
141
+ return { year: currentYear, ganzhi: stem + branch };
142
+ }
143
+ /** 解析干支月輸入("丙寅" 或月序數字 1-12,1=寅月) */
144
+ function parseGanzhiMonth(input) {
145
+ if (typeof input === 'number') {
146
+ return input;
147
+ }
148
+ const branch = input.substring(1, 2);
149
+ const idx = MONTH_BRANCHES.indexOf(branch);
150
+ return idx >= 0 ? idx + 1 : 1;
151
+ }
152
+ /** 五虎遁年起月:由公曆年與月序(1=寅月)推月干支 */
153
+ function getMonthStemBranch(year, monthNum) {
154
+ const branch = MONTH_BRANCHES[(monthNum - 1) % 12];
155
+ const { stem: yearStem } = getYearStemBranch(year);
156
+ const firstMonthStemMap = {
157
+ 0: 2, 1: 4, 2: 6, 3: 8, 4: 0, 5: 2, 6: 4, 7: 6, 8: 8, 9: 0,
158
+ };
159
+ const monthStemIndex = (firstMonthStemMap[STEMS.indexOf(yearStem)] + monthNum - 1) % 10;
160
+ return { stem: STEMS[monthStemIndex], branch };
161
+ }
162
+ //# 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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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 紫微斗数 MCP 工具
3
+ *
4
+ * 工具列表:
5
+ * - ziwei_basic 基礎排盤(十二宮、主星、四化)
6
+ * - ziwei_daxian 大限列表
7
+ * - ziwei_xiaoxian 小限列表
8
+ * - ziwei_liunian 流年列表
9
+ * - ziwei_liuyue 流月列表(農曆月)
10
+ * - ziwei_liuri 流日列表(農曆日)
11
+ */
12
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
13
+ export declare function registerZiweiTools(server: McpServer): void;
14
+ //# sourceMappingURL=ziweiTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ziweiTools.d.ts","sourceRoot":"","sources":["../../src/tools/ziweiTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwCzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsgB1D"}