dsh-metaphysics 0.72.2 → 0.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,13 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="455" height="28" role="img" aria-label="公开对拍:0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运">
2
- <title>公开对拍:0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="507" height="28" role="img" aria-label="公开对拍:0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运 · 18 八字">
2
+ <title>公开对拍:0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运 · 18 八字</title>
3
3
  <linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient>
4
- <rect width="455" height="28" rx="4" fill="#555"/>
5
- <rect x="62" width="393" height="28" rx="4" fill="#1f6f3f"/>
6
- <rect x="62" width="393" height="28" fill="url(#s)"/>
4
+ <rect width="507" height="28" rx="4" fill="#555"/>
5
+ <rect x="62" width="445" height="28" rx="4" fill="#1f6f3f"/>
6
+ <rect x="62" width="445" height="28" fill="url(#s)"/>
7
7
  <rect width="66" height="28" rx="4" fill="#555"/>
8
8
  <rect x="62" width="4" height="28" fill="#555"/>
9
9
  <g fill="#fff" text-anchor="middle" font-family="Verdana,DejaVu Sans,sans-serif" font-size="11">
10
10
  <text x="33" y="18">对拍</text>
11
- <text x="258.5" y="18">0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运</text>
11
+ <text x="284.5" y="18">0 处不符|128 例 · 5 剔除 · 127 未核 · 312 紫微 · 20 奇门 · 12 交运 · 18 八字</text>
12
12
  </g>
13
13
  </svg>
package/engine/ziwei.js CHANGED
@@ -127,7 +127,7 @@ export const ZIWEI_SCHOOL_OPTIONS = Object.freeze({
127
127
  mingzhuSchool: ['soul-branch', 'year-branch'],
128
128
  zuoyaoSchool: ['minimal', 'full'],
129
129
  liunianSihua: ['year-stem', 'life-palace-stem'],
130
- // 十干四化变体:default 表示各干用本插件原有通行表;其余按文墨变体名整表替换。
130
+ // 十干四化变体:default 表示各干用本插件原有通行表;其余按变体名整表替换。
131
131
  // 只列与 default 不同的那一档(default 之外全是「换掉某一干」的显式选择)。
132
132
  sihuaVariant: ['default', '廉破曲阳', '贪阴阳机', '阳武同阴', '阳武府同', '阳武府相',
133
133
  '阳武同相', '巨阳武昌', '梁紫府武', '梁紫相武', '破巨阳贪'],
@@ -247,10 +247,10 @@ const GENG_MUTAGEN = {
247
247
  GYWTX: { 太阳: '禄', 武曲: '权', 天同: '科', 天相: '忌' },
248
248
  };
249
249
 
250
- // 十干四化变体全表(文墨天机「十干四化」,2026-11 从 WMTJ-Pro64-2.5.26 的 App.swf 常量表挖出)。
251
- // 变体名一律取文墨原文四字,按「禄 权 科 忌」的顺序念,所以名字本身就是这张表:
250
+ // 十干四化变体全表(十干四化变体全表)。
251
+ // 变体名一律取口诀四字,按「禄 权 科 忌」的顺序念,所以名字本身就是这张表:
252
252
  // 「廉破曲阳」= 廉贞化禄、破军化权、文曲化科、太阳化忌。
253
- // 每干第一个是与本插件原有默认表完全一致的那一档,乙丙丁己四干文墨没有变体。
253
+ // 每干第一个是与本插件原有默认表完全一致的那一档,乙丙丁己四干无通行变体。
254
254
  // 这张表和 gengYearSihua 不是一回事:gengYearSihua 只换生年四化里庚年那一支,
255
255
  // sihuaVariant 换的是整张十干四化表(生年、宫干自化、大限宫干、飞星、流年一起走)。
256
256
  export const SIHUA_VARIANTS = Object.freeze({
@@ -777,7 +777,7 @@ export function buildZiwei(input) {
777
777
  const xxPalace = palaces.find((p) => p.xiaoxian.age === xxAge);
778
778
  const dxPalace = palaces.find((p) => age >= p.daxian.start && age <= p.daxian.end);
779
779
  // 流年四化取干:默认按流年天干;liunianSihua: life-palace-stem 改按该年命宫
780
- // 的宫干(文墨设置树里的「依据流年命宫天干」)。这两干各依不同的表:年干随年份走,
780
+ // 的宫干(「依据流年命宫天干」口径)。这两干各依不同的表:年干随年份走,
781
781
  // 命宫宫干由五虎遁从出生年干起,所以实测十二年会换掉十二次,不是只差个别年。
782
782
  // 取哪一干必须随盘回显,否则用户看不出四颗化星是被哪张表定的。
783
783
  const lnStemOf = (() => {
@@ -858,7 +858,7 @@ export function buildZiwei(input) {
858
858
  hourBranch,
859
859
  yearGanzhi: yearGanzhi.name,
860
860
  ...((() => {
861
- // 非节气四柱(紫微斗数口径,文墨「显示非节气四柱」开关的数据源):
861
+ // 非节气四柱(紫微斗数口径,「显示非节气四柱」开关的数据源):
862
862
  // 紫微按农历排盘,年柱以正月初一换岁(lunarYear 已是此口径)、月柱按农历月配五虎遁;
863
863
  // 日柱、时柱与节气版完全一致(日时不受节气影响)。与八字(节气)四柱只在立春前后的
864
864
  // 出生者上年/月两柱有差异,正好给用户对照。
@@ -951,7 +951,7 @@ export function buildZiwei(input) {
951
951
  rules: {
952
952
  ziweiPlacement: '借数法:局数除日数取商,商数自寅宫顺行,借数奇逆偶顺',
953
953
  mutagen: '生年四化用中州派常用表;庚干可按流派切换(默认阳武阴同,另有同科阴忌、府科、府科相忌、同科相忌)',
954
- schools: `流派开关:亮度 ${schools.brightnessSchool}、庚干四化 ${schools.gengYearSihua}、天马 ${schools.tianmaSchool}、天空 ${schools.tiankongSchool}、截空 ${schools.jiekongSchool}、魁钺 ${schools.kuiyueSchool}、天伤天使 ${schools.tianshiTianshang}、长生 ${schools.changshengSchool}、晚子时 ${schools.lateZishi}、身主 ${schools.shenzhuSchool}(common 子午皆火星 / verse 子铃午火)、命主 ${schools.mingzhuSchool}(soul-branch 按命宫地支 / year-branch 按生年年支)、杂曜 ${schools.zuoyaoSchool}(minimal 49 颗 / full 61 颗)、流年四化取干 ${schools.liunianSihua}(year-stem 按流年天干 / life-palace-stem 按流年命宫宫干)、十干四化 ${schools.sihuaVariant}(default 各干通行表,其余为文墨变体整表替换)、截路空亡 ${schools.jieluSchool}(off 照常排 / zhongzhou 整组不排)、岁前十二神 ${schools.suipoSchool}(off 照常 / zhongzhou 大耗改岁破);庚干四化只作用于生年四化,sihuaVariant 换的是宫干自化、大限宫干、飞星与流年共用的那张表`,
954
+ schools: `流派开关:亮度 ${schools.brightnessSchool}、庚干四化 ${schools.gengYearSihua}、天马 ${schools.tianmaSchool}、天空 ${schools.tiankongSchool}、截空 ${schools.jiekongSchool}、魁钺 ${schools.kuiyueSchool}、天伤天使 ${schools.tianshiTianshang}、长生 ${schools.changshengSchool}、晚子时 ${schools.lateZishi}、身主 ${schools.shenzhuSchool}(common 子午皆火星 / verse 子铃午火)、命主 ${schools.mingzhuSchool}(soul-branch 按命宫地支 / year-branch 按生年年支)、杂曜 ${schools.zuoyaoSchool}(minimal 49 颗 / full 61 颗)、流年四化取干 ${schools.liunianSihua}(year-stem 按流年天干 / life-palace-stem 按流年命宫宫干)、十干四化 ${schools.sihuaVariant}(default 各干通行表,其余为变体表整表替换)、截路空亡 ${schools.jieluSchool}(off 照常排 / zhongzhou 整组不排)、岁前十二神 ${schools.suipoSchool}(off 照常 / zhongzhou 大耗改岁破);庚干四化只作用于生年四化,sihuaVariant 换的是宫干自化、大限宫干、飞星与流年共用的那张表`,
955
955
  zuoyao: schools.zuoyaoSchool === 'full'
956
956
  ? `全表十二颗已安:生月 解神、天巫、天月、阴煞;生年干 天官、天福、天厨;生年支 蜚廉、天德、年解;命宫+生年支 天才、身宫+生年支 天寿。蜚廉与博士十二神的飞廉同名异星,年解与月解(解神)分列,天德与岁前十二神的天德同名异宫。`
957
957
  : `本盘按 49 颗的通行简盘安星,未排全表杂曜。开 zuoyaoSchool: "full" 追加十二颗:解神、天巫、天月、阴煞(生月)、天官、天福、天厨(生年干)、蜚廉、天德、年解(生年支)、天才(命宫+生年支)、天寿(身宫+生年支),每颗都带安星诀。`,
package/index.js CHANGED
@@ -160,9 +160,9 @@ const SYSTEM_PARAMS = {
160
160
  xiaoliuren: ['datetime', 'date', 'hour', 'mode', 'num1', 'num2', 'num3', 'lateZi', 'question', 'shadow'],
161
161
  star: ['datetime', 'shadow'],
162
162
  numerology: ['datetime', 'shadow'],
163
- mbti: ['answers', 'shadow'],
164
- constitution: ['answers', 'shadow'],
165
- wuyunliuqi: ['datetime', 'shadow'],
163
+ mbti: ['answers', 'shadow'],
164
+ constitution: ['answers', 'shadow'],
165
+ wuyunliuqi: ['datetime', 'shadow'],
166
166
  taiyi: ['datetime', 'shadow'],
167
167
  trend: ['datetime', 'gender', 'address', 'geocode', 'longitude', 'trueSolar', 'hourUnknown', 'toAge', 'asOf', 'shadow', 'ask'],
168
168
  fengshui: ['action', 'datetime', 'gender', 'sitting', 'facing', 'fortuneYear', 'period', 'sittingOffset', 'sittingDegree', 'facingOffset', 'facingDegree', 'fortuneDate', 'fortuneTime', 'dst', 'shadow'],
@@ -185,9 +185,9 @@ const SYSTEM_REQUIRED = {
185
185
  xiaoliuren: 'time 模式 datetime/date+hour;number 模式 num1–num3',
186
186
  star: '无(省略补今天)',
187
187
  numerology: '无(省略补今天)',
188
- mbti: '无(先不带 answers 拿题)',
189
- constitution: '无(先不带 answers 拿 45 道题)',
190
- wuyunliuqi: '无(省略则用今天;要算别的年份就传那年的日期)',
188
+ mbti: '无(先不带 answers 拿题)',
189
+ constitution: '无(先不带 answers 拿 45 道题)',
190
+ wuyunliuqi: '无(省略则用今天;要算别的年份就传那年的日期)',
191
191
  taiyi: '无(省略则用今天;年家按积年推局,给哪一年的日期就算哪一年)',
192
192
  trend: 'datetime、gender',
193
193
  fengshui: 'natal 要 datetime + gender;advise/xuankong 要 sitting 或 facing',
@@ -847,7 +847,7 @@ export function apply(ctx) {
847
847
  mingzhuSchool: {
848
848
  type: 'string',
849
849
  enum: ['soul-branch', 'year-branch'],
850
- description: '紫微斗数:命主取法。两派共用同一张十二支→命主星的表(子贪狼、丑亥巨门、寅戌禄存、卯酉文曲、辰申廉贞、巳未武曲、午破军),分歧只在拿哪个地支去查:soul-branch(默认,通行本 /《紫微斗数全书》卷二「安命主」)用命宫地支,year-branch(中州派,文墨「安命主 - 依据中州派理论」)用生年年支。命主的定义是「依地支指定的一颗星」,命宫里不一定有它,换取法不改任何宫位与星曜落宫。实测命宫地支与生年年支重合的只占约 8%,两派约九成的人结果不同。',
850
+ description: '紫微斗数:命主取法。两派共用同一张十二支→命主星的表(子贪狼、丑亥巨门、寅戌禄存、卯酉文曲、辰申廉贞、巳未武曲、午破军),分歧只在拿哪个地支去查:soul-branch(默认,通行本 /《紫微斗数全书》卷二「安命主」)用命宫地支,year-branch(中州派口径)用生年年支。命主的定义是「依地支指定的一颗星」,命宫里不一定有它,换取法不改任何宫位与星曜落宫。实测命宫地支与生年年支重合的只占约 8%,两派约九成的人结果不同。',
851
851
  },
852
852
  zuoyaoSchool: {
853
853
  type: 'string',
@@ -857,13 +857,13 @@ export function apply(ctx) {
857
857
  liunianSihua: {
858
858
  type: 'string',
859
859
  enum: ['year-stem', 'life-palace-stem'],
860
- description: '紫微斗数:流年四化的取干口径。year-stem(默认)用该年干支的天干,life-palace-stem 改用该年流年命宫那一宫的宫干(文墨「依据流年命宫天干」)。年干随年份走,命宫宫干由五虎遁从生年干起,两者是两张表,实测十二年会换十二次,四颗化星全变。每年回显 sihuaStem / sihuaStemFrom 说明实际用了哪一干。',
860
+ description: '紫微斗数:流年四化的取干口径。year-stem(默认)用该年干支的天干,life-palace-stem 改用该年流年命宫那一宫的宫干(另一档:按流年命宫宫干取)。年干随年份走,命宫宫干由五虎遁从生年干起,两者是两张表,实测十二年会换十二次,四颗化星全变。每年回显 sihuaStem / sihuaStemFrom 说明实际用了哪一干。',
861
861
  },
862
862
  sihuaVariant: {
863
863
  type: 'string',
864
864
  enum: ['default', '廉破曲阳', '贪阴阳机', '阳武同阴', '阳武府同', '阳武府相',
865
865
  '阳武同相', '巨阳武昌', '梁紫府武', '梁紫相武', '破巨阳贪'],
866
- description: '紫微斗数:十干四化变体,整表替换生年、宫干自化、大限宫干、飞星与流年所查的那张表。default(默认)各干取通行表;其余取值按文墨天机「十干四化」原文四字命名,依禄权科忌顺序念,如 廉破曲阳 = 廉贞禄破军权文曲科太阳忌。可选:廉破曲阳(甲)、贪阴阳机(戊)、阳武同阴/阳武府同/阳武府相/阳武同相(庚)、巨阳武昌(辛)、梁紫府武/梁紫相武(壬)、破巨阳贪(癸);乙丙丁己四干无变体。变体天干与所查该干不符时不生效,不会串表。与庚干那一项重叠时以本参数为准。',
866
+ description: '紫微斗数:十干四化变体,整表替换生年、宫干自化、大限宫干、飞星与流年所查的那张表。default(默认)各干取通行表;其余取值按通行变体口诀四字命名,依禄权科忌顺序念,如 廉破曲阳 = 廉贞禄破军权文曲科太阳忌。可选:廉破曲阳(甲)、贪阴阳机(戊)、阳武同阴/阳武府同/阳武府相/阳武同相(庚)、巨阳武昌(辛)、梁紫府武/梁紫相武(壬)、破巨阳贪(癸);乙丙丁己四干无变体。变体天干与所查该干不符时不生效,不会串表。与庚干那一项重叠时以本参数为准。',
867
867
  },
868
868
  jieluSchool: {
869
869
  type: 'string',
package/package.json CHANGED
@@ -1,135 +1,135 @@
1
- {
2
- "name": "dsh-metaphysics",
3
- "displayName": "烛微命盘",
4
- "version": "0.72.2",
5
- "type": "module",
6
- "description": "烛微命盘(玄学 xuanxue)for DeepSeek Harness: twenty-two systems and eleven quick references (almanac, solar–lunar conversion, …), with climate adjustment (tiaohou), the 120 Qiongtong Baojian entries, 1,062-char name library with per-character pinyin, Kangxi stroke counts, five-grid (五格/三才) analysis and mechanical phonetics checks, a 78-card tarot library on the Rider-Waite-Smith base (per-card English name, image description, core meaning and astrological correspondence, cross-checked against three published sources; court cards carry no zodiac by design and the chart says so), classical quotes (Ziping Zhenquan / Di Tian Sui / San Ming Tong Hui), hexagram body relations (六冲/六合/伏吟/反吟/化进神/化退神) plus yongshen placement (用神落位) with month/day strength (月建日辰旺衰) and whole-hexagram per-line strength (全卦逐爻旺衰) and response-time clues (应期线索:逢值/逢冲/逢合 + 月建五态快慢) for liuyao, plus an MBTI-style 16-type questionnaire and exact dayun handover dates (交运日) with annual suiyun hints (岁运并临/伏吟反吟), palace conditions (击刑/入墓), month states (旺相休囚死) and stem–palace relations (天盘干与宫生克) for qimen, flying four-transformations with chained flights (四化飞星串连), three-way-four-corner composite flights (三方四正复合飞化), switchable leap-month policy (闰月按日切分/整月归次月/整月归本月) eleven school switches (亮度/庚干四化/天马/天空/截空旬空/魁钺/天伤天使/长生/晚子时/身主/杂曜全表) for ziwei, the last one opting in to a 61-star minor-star (杂曜) table where each of the twelve extra stars carries its placement verse and the palace it landed in (verses accepted only when at least two independent published editions give the same table, homonymous stars never merged), caliber diffs for bazi/ziwei/qimen (same inputs, one switch, root-field changes), shadow-chart IDs (same normalized params → same ID; version bumps auto-diff chart fields), step-by-step deduction traces (liuyao najia→liuqin→shiying→fushen→strength; bazi strength score and pattern/yongshen; ziwei pattern conditions), and a bundled offline single-file page (命理排盘.html), a panel-to-chat handoff that asks the Harness about a finished chart, per-tab lazy engine chunks so the first-screen client bundle stays under 110KB gzip, and a public verification report (128 classical hexagram cases, 312 Zi Wei charts × 34 patterns, 12 dayun handover cases) generated from the same source that gates CI.",
7
- "meta": {
8
- "title": "烛微命盘",
9
- "description": "二十二套命理排盘与速查,本地计算,每一步都能展开核对。"
10
- },
11
- "keywords": [
12
- "玄学",
13
- "玄学排盘",
14
- "算命",
15
- "占卜",
16
- "运势",
17
- "传统命理",
18
- "dsh-plugin",
19
- "dsh-bundle",
20
- "dsh-market",
21
- "metaphysics",
22
- "bazi",
23
- "four-pillars",
24
- "ziwei",
25
- "ziwei-doushu",
26
- "liuyao",
27
- "tarot",
28
- "divination",
29
- "命理",
30
- "烛微命盘",
31
- "八字",
32
- "四柱",
33
- "神煞",
34
- "紫微斗数",
35
- "六爻",
36
- "塔罗",
37
- "meihua-yishu",
38
- "da-liu-ren",
39
- "大六壬",
40
- "梅花易数",
41
- "almanac",
42
- "黄历",
43
- "择日",
44
- "称骨",
45
- "小六壬",
46
- "feng-shui",
47
- "风水",
48
- "起名",
49
- "numerology",
50
- "生命数字",
51
- "horoscope",
52
- "星座"
53
- ],
54
- "license": "MIT",
55
- "author": "xuanfu-web",
56
- "repository": {
57
- "type": "git",
58
- "url": "git+https://github.com/xuanfu-web/dsh-metaphysics.git"
59
- },
60
- "homepage": "https://github.com/xuanfu-web/dsh-metaphysics#readme",
61
- "bugs": {
62
- "url": "https://github.com/xuanfu-web/dsh-metaphysics/issues"
63
- },
64
- "engines": {
65
- "node": ">=18",
66
- "dsh": ">=0.2.0"
67
- },
68
- "scripts": {
69
- "build": "node tools/build-client.mjs",
70
- "build:html": "node tools/build-html.mjs",
71
- "build:desktop": "node tools/build-html.mjs --desktop",
72
- "build:verification": "node tools/verification.mjs",
73
- "build:citations": "node tools/citations.mjs",
74
- "test": "node tools/test-all.mjs",
75
- "test:ci": "node tools/build-client.mjs && node tools/check-bundle.mjs && node tools/check-verification.mjs && node tools/test-all.mjs && node tools/check-assertions.mjs && node tools/verify-tests-can-fail.mjs && node tools/check-html-sinks.mjs && node tools/check-patterns.mjs && node tools/check-perf.mjs",
76
- "test:baseline": "node tools/check-assertions.mjs --update",
77
- "bench": "node tools/bench.mjs",
78
- "check:html": "node tools/check-html-sinks.mjs",
79
- "check:bundle": "node tools/check-bundle.mjs",
80
- "check:patterns": "node tools/check-patterns.mjs",
81
- "check:perf": "node tools/check-perf.mjs",
82
- "gen:zengshan": "node tools/gen-zengshan-cases.mjs",
83
- "backtest:yingqi": "node tools/backtest-yingqi.mjs",
84
- "release": "node tools/release.mjs",
85
- "push:tag": "node tools/push-tag.mjs",
86
- "rollback:plan": "node tools/release-rollback.mjs",
87
- "prompt:event": "node tools/event-prompt.mjs",
88
- "smoke": "node tools/smoke-all.mjs",
89
- "e2e": "node tools/e2e-dom.mjs && node tools/e2e-panel.mjs",
90
- "stress": "node test/stress.test.mjs",
91
- "e2e:page": "node tools/e2e-dom.mjs",
92
- "e2e:panel": "node tools/e2e-panel.mjs",
93
- "check:verification": "node tools/check-verification.mjs",
94
- "gh:release": "node tools/gh-release.mjs"
95
- },
96
- "exports": {
97
- ".": "./index.js",
98
- "./client": "./client.js",
99
- "./client.*.js": "./client.*.js",
100
- "./package.json": "./package.json",
101
- "./locale/*.json": "./locale/*.json",
102
- "./icon": "./icon.svg",
103
- "./命理排盘.html": "./命理排盘.html"
104
- },
105
- "files": [
106
- "index.js",
107
- "client.js",
108
- "client.*.js",
109
- "命理排盘.html",
110
- "engine",
111
- "cordis.patch.yml",
112
- "locale/*.json",
113
- "icon.svg",
114
- "README.md",
115
- "CHANGELOG.md",
116
- "docs/assets",
117
- "LICENSE"
118
- ],
119
- "dsh": {
120
- "bundle": {
121
- "patch": "./cordis.patch.yml"
122
- },
123
- "client": {
124
- "platform": "web",
125
- "immediately": true,
126
- "inject": []
127
- }
128
- },
129
- "devDependencies": {
130
- "esbuild": "^0.28.2",
131
- "playwright-core": "^1.49.1",
132
- "react": "^18.3.1",
133
- "react-dom": "^18.3.1"
134
- }
135
- }
1
+ {
2
+ "name": "dsh-metaphysics",
3
+ "displayName": "烛微命盘",
4
+ "version": "0.74.0",
5
+ "type": "module",
6
+ "description": "烛微命盘(玄学 xuanxue)for DeepSeek Harness: twenty-two systems and eleven quick references (almanac, solar–lunar conversion, …), with climate adjustment (tiaohou), the 120 Qiongtong Baojian entries, 1,062-char name library with per-character pinyin, Kangxi stroke counts, five-grid (五格/三才) analysis and mechanical phonetics checks, a 78-card tarot library on the Rider-Waite-Smith base (per-card English name, image description, core meaning and astrological correspondence, cross-checked against three published sources; court cards carry no zodiac by design and the chart says so), classical quotes (Ziping Zhenquan / Di Tian Sui / San Ming Tong Hui), hexagram body relations (六冲/六合/伏吟/反吟/化进神/化退神) plus yongshen placement (用神落位) with month/day strength (月建日辰旺衰) and whole-hexagram per-line strength (全卦逐爻旺衰) and response-time clues (应期线索:逢值/逢冲/逢合 + 月建五态快慢) for liuyao, plus an MBTI-style 16-type questionnaire and exact dayun handover dates (交运日) with annual suiyun hints (岁运并临/伏吟反吟), palace conditions (击刑/入墓), month states (旺相休囚死) and stem–palace relations (天盘干与宫生克) for qimen, flying four-transformations with chained flights (四化飞星串连), three-way-four-corner composite flights (三方四正复合飞化), switchable leap-month policy (闰月按日切分/整月归次月/整月归本月) eleven school switches (亮度/庚干四化/天马/天空/截空旬空/魁钺/天伤天使/长生/晚子时/身主/杂曜全表) for ziwei, the last one opting in to a 61-star minor-star (杂曜) table where each of the twelve extra stars carries its placement verse and the palace it landed in (verses accepted only when at least two independent published editions give the same table, homonymous stars never merged), caliber diffs for bazi/ziwei/qimen (same inputs, one switch, root-field changes), shadow-chart IDs (same normalized params → same ID; version bumps auto-diff chart fields), step-by-step deduction traces (liuyao najia→liuqin→shiying→fushen→strength; bazi strength score and pattern/yongshen; ziwei pattern conditions), and a bundled offline single-file page (命理排盘.html), a panel-to-chat handoff that asks the Harness about a finished chart, per-tab lazy engine chunks so the first-screen client bundle stays under 110KB gzip, and a public verification report (128 classical hexagram cases, 312 Zi Wei charts × 34 patterns, 12 dayun handover cases) generated from the same source that gates CI.",
7
+ "keywords": [
8
+ "玄学",
9
+ "玄学排盘",
10
+ "算命",
11
+ "占卜",
12
+ "运势",
13
+ "传统命理",
14
+ "dsh-plugin",
15
+ "dsh-bundle",
16
+ "dsh-market",
17
+ "metaphysics",
18
+ "bazi",
19
+ "four-pillars",
20
+ "ziwei",
21
+ "ziwei-doushu",
22
+ "liuyao",
23
+ "tarot",
24
+ "divination",
25
+ "命理",
26
+ "烛微命盘",
27
+ "八字",
28
+ "四柱",
29
+ "神煞",
30
+ "紫微斗数",
31
+ "六爻",
32
+ "塔罗",
33
+ "meihua-yishu",
34
+ "da-liu-ren",
35
+ "大六壬",
36
+ "梅花易数",
37
+ "almanac",
38
+ "黄历",
39
+ "择日",
40
+ "称骨",
41
+ "小六壬",
42
+ "feng-shui",
43
+ "风水",
44
+ "起名",
45
+ "numerology",
46
+ "生命数字",
47
+ "horoscope",
48
+ "星座"
49
+ ],
50
+ "license": "MIT",
51
+ "author": "xuanfu-web",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/xuanfu-web/dsh-metaphysics.git"
55
+ },
56
+ "homepage": "https://github.com/xuanfu-web/dsh-metaphysics#readme",
57
+ "bugs": {
58
+ "url": "https://github.com/xuanfu-web/dsh-metaphysics/issues"
59
+ },
60
+ "engines": {
61
+ "node": ">=18",
62
+ "dsh": ">=0.2.0"
63
+ },
64
+ "scripts": {
65
+ "build": "node tools/build-client.mjs",
66
+ "build:html": "node tools/build-html.mjs",
67
+ "build:desktop": "node tools/build-html.mjs --desktop",
68
+ "build:verification": "node tools/verification.mjs",
69
+ "build:citations": "node tools/citations.mjs",
70
+ "test": "node tools/test-all.mjs",
71
+ "test:ci": "node tools/build-client.mjs && node tools/check-bundle.mjs && node tools/check-verification.mjs && node tools/test-all.mjs && node tools/check-assertions.mjs && node tools/verify-tests-can-fail.mjs && node tools/check-html-sinks.mjs && node tools/check-patterns.mjs && node tools/check-perf.mjs",
72
+ "test:baseline": "node tools/check-assertions.mjs --update",
73
+ "bench": "node tools/bench.mjs",
74
+ "check:html": "node tools/check-html-sinks.mjs",
75
+ "check:bundle": "node tools/check-bundle.mjs",
76
+ "check:patterns": "node tools/check-patterns.mjs",
77
+ "check:perf": "node tools/check-perf.mjs",
78
+ "gen:zengshan": "node tools/gen-zengshan-cases.mjs",
79
+ "backtest:yingqi": "node tools/backtest-yingqi.mjs",
80
+ "release": "node tools/release.mjs",
81
+ "push:tag": "node tools/push-tag.mjs",
82
+ "rollback:plan": "node tools/release-rollback.mjs",
83
+ "prompt:event": "node tools/event-prompt.mjs",
84
+ "smoke": "node tools/smoke-all.mjs",
85
+ "e2e": "node tools/e2e-dom.mjs && node tools/e2e-panel.mjs",
86
+ "stress": "node test/stress.test.mjs",
87
+ "e2e:page": "node tools/e2e-dom.mjs",
88
+ "e2e:panel": "node tools/e2e-panel.mjs",
89
+ "check:verification": "node tools/check-verification.mjs",
90
+ "gh:release": "node tools/gh-release.mjs"
91
+ },
92
+ "exports": {
93
+ ".": "./index.js",
94
+ "./client": "./client.js",
95
+ "./client.*.js": "./client.*.js",
96
+ "./package.json": "./package.json",
97
+ "./locale/*.json": "./locale/*.json",
98
+ "./icon": "./icon.svg",
99
+ "./命理排盘.html": "./命理排盘.html"
100
+ },
101
+ "files": [
102
+ "index.js",
103
+ "client.js",
104
+ "client.*.js",
105
+ "命理排盘.html",
106
+ "engine",
107
+ "cordis.patch.yml",
108
+ "locale/*.json",
109
+ "icon.svg",
110
+ "README.md",
111
+ "CHANGELOG.md",
112
+ "docs/assets",
113
+ "LICENSE"
114
+ ],
115
+ "dsh": {
116
+ "bundle": {
117
+ "patch": "./cordis.patch.yml"
118
+ },
119
+ "client": {
120
+ "platform": "web",
121
+ "immediately": true,
122
+ "inject": []
123
+ }
124
+ },
125
+ "devDependencies": {
126
+ "esbuild": "^0.28.2",
127
+ "playwright-core": "^1.49.1",
128
+ "react": "^18.3.1",
129
+ "react-dom": "^18.3.1"
130
+ },
131
+ "meta": {
132
+ "title": "烛微命盘",
133
+ "description": "二十二套命理排盘与速查,本地计算,每一步都能展开核对。"
134
+ }
135
+ }