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.
- package/README.md +120 -47
- package/dist/core/bazi/BaziCore.d.ts +7 -1
- package/dist/core/bazi/BaziCore.d.ts.map +1 -1
- package/dist/core/bazi/BaziCore.js +37 -11
- package/dist/core/bazi/BaziCore.js.map +1 -1
- package/dist/core/bazi/types.d.ts +4 -0
- package/dist/core/bazi/types.d.ts.map +1 -1
- package/dist/core/qimen/FlyingRule.d.ts +60 -0
- package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
- package/dist/core/qimen/FlyingRule.js +94 -0
- package/dist/core/qimen/FlyingRule.js.map +1 -0
- package/dist/core/qimen/GongMapping.d.ts +29 -0
- package/dist/core/qimen/GongMapping.d.ts.map +1 -0
- package/dist/core/qimen/GongMapping.js +83 -0
- package/dist/core/qimen/GongMapping.js.map +1 -0
- package/dist/core/qimen/RotatingRule.d.ts +76 -0
- package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
- package/dist/core/qimen/RotatingRule.js +126 -0
- package/dist/core/qimen/RotatingRule.js.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.js +79 -0
- package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
- package/dist/core/qimen/index.d.ts +10 -0
- package/dist/core/qimen/index.d.ts.map +1 -0
- package/dist/core/qimen/index.js +58 -0
- package/dist/core/qimen/index.js.map +1 -0
- package/dist/core/qimen/types.d.ts +19 -0
- package/dist/core/qimen/types.d.ts.map +1 -0
- package/dist/core/qimen/types.js +7 -0
- package/dist/core/qimen/types.js.map +1 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1311
- package/dist/index.js.map +1 -1
- package/dist/output/fortuneTextRenderer.d.ts +8 -7
- package/dist/output/fortuneTextRenderer.d.ts.map +1 -1
- package/dist/output/fortuneTextRenderer.js +83 -21
- package/dist/output/fortuneTextRenderer.js.map +1 -1
- package/dist/output/qimenTextRenderer.d.ts +36 -0
- package/dist/output/qimenTextRenderer.d.ts.map +1 -0
- package/dist/output/qimenTextRenderer.js +230 -0
- package/dist/output/qimenTextRenderer.js.map +1 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +33 -0
- package/dist/server.js.map +1 -0
- package/dist/services/bazi/BaziService.d.ts +1 -17
- package/dist/services/bazi/BaziService.d.ts.map +1 -1
- package/dist/services/bazi/BaziService.js +9 -194
- package/dist/services/bazi/BaziService.js.map +1 -1
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +12 -12
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -1
- package/dist/services/bazi/index.d.ts +0 -2
- package/dist/services/bazi/index.d.ts.map +1 -1
- package/dist/services/bazi/index.js +1 -5
- package/dist/services/bazi/index.js.map +1 -1
- package/dist/services/bazi/types.d.ts +4 -112
- package/dist/services/bazi/types.d.ts.map +1 -1
- package/dist/services/bazi/types.js +3 -102
- package/dist/services/bazi/types.js.map +1 -1
- package/dist/services/daliuren/DaliurenService.d.ts +11 -1
- package/dist/services/daliuren/DaliurenService.d.ts.map +1 -1
- package/dist/services/daliuren/DaliurenService.js +30 -0
- package/dist/services/daliuren/DaliurenService.js.map +1 -1
- package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -1
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js +3 -4
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -1
- package/dist/services/daliuren/data/constants.d.ts +7 -0
- package/dist/services/daliuren/data/constants.d.ts.map +1 -1
- package/dist/services/daliuren/data/constants.js +17 -1
- package/dist/services/daliuren/data/constants.js.map +1 -1
- package/dist/services/daliuren/types.d.ts +13 -0
- package/dist/services/daliuren/types.d.ts.map +1 -1
- package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -1
- package/dist/services/meihua/calculators/TiyongCalculator.js +6 -5
- package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -1
- package/dist/services/qimen/QimenService.d.ts +76 -0
- package/dist/services/qimen/QimenService.d.ts.map +1 -0
- package/dist/services/qimen/QimenService.js +393 -0
- package/dist/services/qimen/QimenService.js.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts +45 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js +87 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +49 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js +68 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +44 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js +72 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts +60 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js +110 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +41 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +73 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +111 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js +232 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
- package/dist/services/qimen/data/constants.d.ts +105 -0
- package/dist/services/qimen/data/constants.d.ts.map +1 -0
- package/dist/services/qimen/data/constants.js +295 -0
- package/dist/services/qimen/data/constants.js.map +1 -0
- package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
- package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/shensha-rules.js +397 -0
- package/dist/services/qimen/data/shensha-rules.js.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.js +365 -0
- package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
- package/dist/services/qimen/index.d.ts +20 -0
- package/dist/services/qimen/index.d.ts.map +1 -0
- package/dist/services/qimen/index.js +43 -0
- package/dist/services/qimen/index.js.map +1 -0
- package/dist/services/qimen/types.d.ts +316 -0
- package/dist/services/qimen/types.d.ts.map +1 -0
- package/dist/services/qimen/types.js +21 -0
- package/dist/services/qimen/types.js.map +1 -0
- package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
- package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
- package/dist/services/qimen/utils/gongUtils.js +164 -0
- package/dist/services/qimen/utils/gongUtils.js.map +1 -0
- package/dist/shared/logger.d.ts +5 -0
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/logger.js +11 -4
- package/dist/shared/logger.js.map +1 -1
- package/dist/tools/baziTools.d.ts +13 -0
- package/dist/tools/baziTools.d.ts.map +1 -0
- package/dist/tools/baziTools.js +331 -0
- package/dist/tools/baziTools.js.map +1 -0
- package/dist/tools/divinationTools.d.ts +9 -0
- package/dist/tools/divinationTools.d.ts.map +1 -0
- package/dist/tools/divinationTools.js +209 -0
- package/dist/tools/divinationTools.js.map +1 -0
- package/dist/tools/qimenTools.d.ts +10 -0
- package/dist/tools/qimenTools.d.ts.map +1 -0
- package/dist/tools/qimenTools.js +132 -0
- package/dist/tools/qimenTools.js.map +1 -0
- package/dist/tools/schemas.d.ts +99 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +162 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/ziweiTools.d.ts +14 -0
- package/dist/tools/ziweiTools.d.ts.map +1 -0
- package/dist/tools/ziweiTools.js +483 -0
- package/dist/tools/ziweiTools.js.map +1 -0
- package/dist/utils/timeNormalization.d.ts +42 -17
- package/dist/utils/timeNormalization.d.ts.map +1 -1
- package/dist/utils/timeNormalization.js +99 -41
- package/dist/utils/timeNormalization.js.map +1 -1
- package/package.json +15 -9
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +0 -16
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +0 -1
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +0 -60
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +0 -1
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +0 -33
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +0 -1
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js +0 -209
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +0 -1
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +0 -236
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +0 -1
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +0 -2079
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +0 -1
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +0 -46
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +0 -1
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +0 -260
- 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"}
|