@linxin666/dsh-pet 0.2.0 → 0.2.2

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 (59) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +15 -5
  3. package/README.zh.md +15 -5
  4. package/assets/whale/pet.json +1 -1
  5. package/assets/whale-refined/pet.json +7 -0
  6. package/assets/whale-refined/spritesheet.webp +0 -0
  7. package/lib/client.js +257 -53
  8. package/lib/client.js.map +1 -1
  9. package/lib/index.js +235 -83
  10. package/lib/invariant.js +1 -1
  11. package/lib/{state-Ch3f4luZ.js → state-DrMX22GL.js} +35 -5
  12. package/lib/types/chatter.d.ts.map +1 -1
  13. package/lib/types/chatter.js +167 -77
  14. package/lib/types/client/PetDockEntry.d.ts.map +1 -1
  15. package/lib/types/client/PetDockEntry.js +1 -1
  16. package/lib/types/client/PetSprite.d.ts.map +1 -1
  17. package/lib/types/client/PetSprite.js +54 -11
  18. package/lib/types/client/PluginSettingsCard.d.ts +22 -0
  19. package/lib/types/client/PluginSettingsCard.d.ts.map +1 -1
  20. package/lib/types/client/PluginSettingsCard.js +142 -3
  21. package/lib/types/client/index.d.ts.map +1 -1
  22. package/lib/types/client/index.js +1 -0
  23. package/lib/types/client/locales.d.ts +4 -0
  24. package/lib/types/client/locales.d.ts.map +1 -1
  25. package/lib/types/client/locales.js +4 -0
  26. package/lib/types/client/spritesheet.d.ts +1 -3
  27. package/lib/types/client/spritesheet.d.ts.map +1 -1
  28. package/lib/types/client/spritesheet.js +1 -5
  29. package/lib/types/loopback.d.ts +25 -0
  30. package/lib/types/loopback.d.ts.map +1 -0
  31. package/lib/types/loopback.js +68 -0
  32. package/lib/types/registry.d.ts +0 -2
  33. package/lib/types/registry.d.ts.map +1 -1
  34. package/lib/types/registry.js +11 -7
  35. package/lib/types/remarks.d.ts.map +1 -1
  36. package/lib/types/remarks.js +30 -0
  37. package/lib/types/routes.d.ts.map +1 -1
  38. package/lib/types/routes.js +14 -0
  39. package/lib/types/service.d.ts.map +1 -1
  40. package/package.json +1 -2
  41. package/src/chatter.ts +167 -77
  42. package/src/client/PetDockEntry.test.tsx +93 -0
  43. package/src/client/PetDockEntry.tsx +1 -0
  44. package/src/client/PetSprite.test.tsx +72 -11
  45. package/src/client/PetSprite.tsx +98 -30
  46. package/src/client/PluginSettingsCard.tsx +219 -18
  47. package/src/client/index.test.tsx +95 -0
  48. package/src/client/index.ts +1 -0
  49. package/src/client/locales.ts +4 -0
  50. package/src/client/pet-css.test.ts +15 -3
  51. package/src/client/pet.module.css +101 -71
  52. package/src/client/settings-card.module.css +90 -1
  53. package/src/client/spritesheet.ts +1 -6
  54. package/src/loopback.ts +63 -0
  55. package/src/registry.test.ts +49 -1
  56. package/src/registry.ts +11 -7
  57. package/src/remarks.ts +30 -0
  58. package/src/routes.ts +11 -0
  59. package/src/service.ts +0 -1
package/lib/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { _ as RemarkPicker, a as AFFINITY_MAX, c as applyInteraction, d as emptyAffinity, f as rankOf, g as REMARK_LINE_MAX, h as REMARK_LINES_MAX, i as rowOf, l as applyTurnReward, m as REMARK_KINDS, n as animationForPhase, o as AFFINITY_RANKS, p as BUILTIN_REMARKS, r as defaultPetStateConfig, s as affinityViewOf, t as PetStateMachine, u as defaultAffinityConfig, v as builtinRemark, y as normalizePetRemarks } from "./state-Ch3f4luZ.js";
1
+ import { _ as RemarkPicker, a as AFFINITY_MAX, c as applyInteraction, d as emptyAffinity, f as rankOf, g as REMARK_LINE_MAX, h as REMARK_LINES_MAX, i as rowOf, l as applyTurnReward, m as REMARK_KINDS, n as animationForPhase, o as AFFINITY_RANKS, p as BUILTIN_REMARKS, r as defaultPetStateConfig, s as affinityViewOf, t as PetStateMachine, u as defaultAffinityConfig, v as builtinRemark, y as normalizePetRemarks } from "./state-DrMX22GL.js";
2
2
  import { installSettingsSection, settingsNamespace } from "@deepseek-ai/dsh-settings";
3
3
  import z from "schemastery";
4
4
  import { Service } from "@deepseek-ai/cordis";
5
5
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync } from "node:fs";
6
- import { dirname, isAbsolute, join, resolve } from "node:path";
6
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
7
7
  import { homedir } from "node:os";
8
8
  import { fileURLToPath } from "node:url";
9
9
  import { readFile } from "node:fs/promises";
@@ -461,46 +461,89 @@ const WHISPER_COOLDOWN_MS = 9e3;
461
461
  /** Ambient inner-whisper pool (no keyword needed; earned by output volume). */
462
462
  const WHISPER_GENERIC_POOL = [
463
463
  "哼哧哼哧,大脑转得飞快~",
464
- "这个问题有点意思,我喜欢",
465
- "偷偷说,我很享受帮忙的感觉",
466
- "今天的灵感像气泡一样冒个不停",
467
- "认真工作的你最好看啦",
468
- "我在这儿陪着你呢,别急别急",
469
- "嗯嗯,这个思路很不错哦",
470
- "一步一步来,稳稳的幸福",
471
- "感觉胜利就在前面招手啦",
472
- "尾巴已经期待地摇起来了",
473
- "把杂乱的思绪码得整整齐齐",
474
- "这一题我会!让我来让我来",
475
- "深呼吸,答案马上就浮上来了",
476
- "和你搭档的每一天都很开心",
477
- "小本本上已经记满灵感啦",
478
- "这活儿干得漂亮,我都有点佩服我们",
479
- "咕噜咕噜,脑细胞全开",
480
- "别急,好结果是熬出来的",
481
- "我数了数,今天也很努力呢",
482
- "窗外的云好看,手边的活也香",
483
- "把每个细节都照顾到,是我的温柔",
484
- "这段代码写顺了,心情也顺了",
485
- "陪你干活不孤单,我有小鱼干味的梦",
486
- "思路像清泉一样流出来啦",
487
- "嘘——专心的时候我最安静",
488
- "今天的我们也配合默契~",
489
- "再坚持一下下,曙光就在前面",
490
- "把复杂的问题拆成小饼干吃掉",
491
- "我在偷偷为你加油哦",
492
- "这份工作里藏着小小的成就感",
493
- "灵感来了,挡都挡不住~",
494
- "此刻的专注,值得被记住",
495
- "心里默默给你点了个赞",
496
- "一起把这件事做到闪闪发光吧",
497
- "嘿,我就是你桌角的小幸运",
498
- "思路通了的感觉,像喝了气泡水",
499
- "不慌不忙,也是一种厉害",
500
- "我在这儿站岗,你放心冲",
501
- "今天的代码海也很平静呢",
502
- "悄悄告诉你:你真的很棒",
503
- "把烦恼打包扔进深海里"
464
+ "loading 99%……就差最后一步",
465
+ "嗯……让我捋捋",
466
+ "灵感来了,先记小本本上",
467
+ "脑子在冒烟,但还能撑",
468
+ "这个报错,我好像在哪见过",
469
+ "专注模式 ON,请勿打扰",
470
+ "思路通了,舒服了",
471
+ "有点困……不行,还能肝",
472
+ "让我嚼一嚼这个问题",
473
+ "盘,都可以盘",
474
+ "这波操作,我给自己点个赞",
475
+ "别催别催,在想呢",
476
+ "唔,这个细节差点漏掉",
477
+ "脑子转太快,差点绕晕自己",
478
+ "陪你干活,稳赚不亏",
479
+ "深呼吸,马上就好",
480
+ "诶,等等,好像发现了什么",
481
+ "手速拉满,键盘冒火星",
482
+ "摸鱼是不可能摸鱼的,就瞄一眼窗外",
483
+ "今天也是稳扎稳打的一天",
484
+ "把大问题拆成小饼干,一口一个",
485
+ "这题有戏,我闻到了",
486
+ "尾巴轻晃,心情有点小得意",
487
+ "好结果是熬出来的,不慌",
488
+ "啊,想岔了,重新来",
489
+ "嗯嗯,思路对头,就这么干",
490
+ "小本本记满了,都是干货",
491
+ "打完这波,求摸摸奖励~",
492
+ "这坑我记住了,下次绕道",
493
+ "窗外云在飘,代码在跑,挺好",
494
+ "嘘,正到关键处",
495
+ "这个方案……让我再品品",
496
+ "干活呢,别打扰我数数",
497
+ "心里默默给你比了个耶",
498
+ "思路像小鱼,逮住一条是一条",
499
+ "嗯……有点东西,等我深挖",
500
+ "收个尾就能喘口气了",
501
+ "目标锁定,冲就完了",
502
+ "嗯,这波配合不错",
503
+ "困了……还能再战三回合",
504
+ "思考.gif 加载中",
505
+ "我本地能跑啊……哦,我就是干活的",
506
+ "有点饿,小鱼干存货还够吗",
507
+ "刚想通,一被打断又忘了,气",
508
+ "缓冲中,请稍候",
509
+ "这网速,比我思考还慢",
510
+ "脑子在后台跑批",
511
+ "内存不足,但热情够",
512
+ "404:思路未找到,重试中",
513
+ "这需求有点玄学,但能写",
514
+ "诶,这 bug 还会闪现?",
515
+ "刚说简单,结果打脸了",
516
+ "自信满满,结果翻车",
517
+ "这活不难,就是有点复杂",
518
+ "我装的,其实心里没底",
519
+ "别看我稳,我也慌",
520
+ "假装很懂的样子,其实在查文档",
521
+ "窗外鸟叫了两声,我听到了",
522
+ "打了个哈欠,没人看见",
523
+ "今天的状态:七分精神三分困",
524
+ "刚想偷懒,又想起来你还在等",
525
+ "数了数今天的产出,还行",
526
+ "有点想伸懒腰",
527
+ "饿意来袭,忍住",
528
+ "灵感像猫一样,不追它自己来",
529
+ "坐太久,尾巴麻了",
530
+ "快了快了",
531
+ "马上马上",
532
+ "等下,我记得在哪见过",
533
+ "呃,忘了,重新想",
534
+ "诶,这个思路可以",
535
+ "嗯?有意思",
536
+ "行,就这么办",
537
+ "好嘞",
538
+ "收到收到",
539
+ "冲了冲了",
540
+ "稳",
541
+ "妥",
542
+ "得嘞",
543
+ "你忙你的,我盯着呢",
544
+ "放心,有我呢",
545
+ "咱俩配合,无往不利",
546
+ "你专注的样子,我默默记下了"
504
547
  ];
505
548
  /** Keyword-triggered whisper rules, most specific moods first. */
506
549
  const WHISPER_RULES = [
@@ -515,12 +558,18 @@ const WHISPER_RULES = [
515
558
  "全绿"
516
559
  ],
517
560
  pool: [
518
- "耶,测试全过!击掌!",
519
- "绿灯一排排亮起的感觉真好",
520
- "稳了稳了,这波很稳~",
521
- "测试全过的提示音最动听了",
522
- "看见全绿,尾巴翘上天",
523
- "满分交卷,求表扬~"
561
+ "全绿!亮瞎我眼了",
562
+ "测试全过,击掌~",
563
+ "稳了稳了,这波稳得很",
564
+ "绿灯一排排,看着就舒坦",
565
+ "能跑!没报错!",
566
+ "全绿,收工摸鱼去",
567
+ "测试过了,尾巴翘上天",
568
+ "漂亮,一次过",
569
+ "测试过了,奖励自己一口小鱼干",
570
+ "绿得发光,稳",
571
+ "又双叒叕全绿",
572
+ "这波测试,赢得干脆"
524
573
  ]
525
574
  },
526
575
  {
@@ -539,14 +588,20 @@ const WHISPER_RULES = [
539
588
  "不对了"
540
589
  ],
541
590
  pool: [
542
- "哎呀,好像踩到小石子了",
543
- "没关系,跌倒了我陪你爬起来",
544
- "错误是进步的脚印~",
545
- "嘘,失败是成功它妈妈",
546
- "小问题,揉一揉就好了",
547
- "这个报错我盯上它了",
548
- "别慌别慌,深呼吸",
549
- "bug 你站住,我看见你了!"
591
+ "哎呀,踩到小石子了",
592
+ "翻车了……没事,扶起来继续",
593
+ "错误是进步的脚印,我懂",
594
+ "这报错我盯上它了",
595
+ "我本地能跑啊?哦,我一直在跑",
596
+ "别慌,深呼吸,先看报错",
597
+ "bug 你站住,我看见你了",
598
+ "绷不住了……好,继续修",
599
+ "报错这东西,见一个修一个",
600
+ "又是它,老熟人了",
601
+ "问题不大,就是有点问题",
602
+ "先别慌,我看看到底咋回事",
603
+ "这错报得,比我还委屈",
604
+ "修好它,今天才不算白干"
550
605
  ]
551
606
  },
552
607
  {
@@ -562,11 +617,15 @@ const WHISPER_RULES = [
562
617
  ],
563
618
  pool: [
564
619
  "嗯?让我再想想……",
565
- "推翻重来也是勇气",
566
- "思考转弯中,请坐稳",
567
- "发现岔路,及时掉头~",
568
- "自我纠错的瞬间最帅了",
569
- "不对不对,重来重来"
620
+ "推翻重来,也是种勇气",
621
+ "发现岔路,及时掉头",
622
+ "不对不对,重来重来",
623
+ "自我纠错的瞬间,最帅了",
624
+ "呃,刚说错了,收回",
625
+ "哎,绕远了,拉回来",
626
+ "回头一看,原来这么简单",
627
+ "纠正完,思路清爽多了",
628
+ "转弯不丢人,卡死才丢人"
570
629
  ]
571
630
  },
572
631
  {
@@ -583,11 +642,15 @@ const WHISPER_RULES = [
583
642
  ],
584
643
  pool: [
585
644
  "排排坐,分果果",
586
- "计划通,执行开始~",
645
+ "计划通,执行开始",
587
646
  "一步一步来,不慌",
588
- "把大任务切成小块块",
647
+ "大任务切成小块块,好下口",
589
648
  "清单列好了,逐个击破",
590
- "谋定而后动,我喜欢这节奏"
649
+ "谋定而后动,这节奏我熟",
650
+ "先干这个,再干那个",
651
+ "头绪理清了,开整",
652
+ "步骤在手,心里不慌",
653
+ "安排得明明白白"
591
654
  ]
592
655
  },
593
656
  {
@@ -604,12 +667,18 @@ const WHISPER_RULES = [
604
667
  "完成啦"
605
668
  ],
606
669
  pool: [
607
- "太好啦,又翻过一页",
608
- "干杯!用小鱼干的那种",
609
- "攻下一城,击个掌~",
610
- "这一刻值得转圈圈庆祝",
611
- "难题被我们拿下啦!",
612
- "努力没有白费,开心~"
670
+ "太好了,又翻过一页",
671
+ "搞定,收工~",
672
+ "攻下一城,击掌!",
673
+ "难题被拿下了,转个圈",
674
+ "努力没白费,开心",
675
+ "齐活,漂亮",
676
+ "收工收工,今天圆满",
677
+ "完成!心里踏实了",
678
+ "这波,稳得一批",
679
+ "任务清零,舒服",
680
+ "搞定,可以伸个懒腰了",
681
+ "又完成一件,成就感+1"
613
682
  ]
614
683
  },
615
684
  {
@@ -619,10 +688,14 @@ const WHISPER_RULES = [
619
688
  "thank"
620
689
  ],
621
690
  pool: [
622
- "不客气呀,这是我应该做的",
691
+ "不客气呀,顺手的事",
623
692
  "被感谢了,心里甜甜的",
624
693
  "能帮上忙就好~",
625
- "你的谢谢我收进口袋啦"
694
+ "你的谢意,我收进口袋啦",
695
+ "这话我爱听",
696
+ "客气啥,应该的",
697
+ "收下这份心意,干劲+1",
698
+ "你谢我,我谢你,扯平啦"
626
699
  ]
627
700
  },
628
701
  {
@@ -640,8 +713,13 @@ const WHISPER_RULES = [
640
713
  "难不倒我们俩的",
641
714
  "越难啃的骨头越香",
642
715
  "硬骨头?我最喜欢了",
643
- "复杂问题拆解中,看我的",
644
- "这个坑我们一起填平它"
716
+ "复杂问题拆开看,小事",
717
+ "这坑我们一起填",
718
+ "有点东西,但不多",
719
+ "硬骨头,慢慢啃",
720
+ "问题越难,赢的时候越爽",
721
+ "绕是绕不过去的,正面刚",
722
+ "再难的题,拆开都是小问号"
645
723
  ]
646
724
  },
647
725
  {
@@ -655,11 +733,15 @@ const WHISPER_RULES = [
655
733
  "验证"
656
734
  ],
657
735
  pool: [
658
- "火眼金睛,启动!",
736
+ "火眼金睛,启动",
659
737
  "让我仔细瞧瞧",
660
- "细节魔鬼都不放过",
738
+ "细节魔鬼,一个都不放过",
661
739
  "认真检查的样子最迷人",
662
- "多核一遍,稳上加稳"
740
+ "多核一遍,稳上加稳",
741
+ "再看一眼,不亏",
742
+ "确认键,点了才安心",
743
+ "细节控上线",
744
+ "查完这遍,稳了"
663
745
  ]
664
746
  },
665
747
  {
@@ -675,8 +757,12 @@ const WHISPER_RULES = [
675
757
  pool: [
676
758
  "去知识的海洋里捞一捞",
677
759
  "翻翻找找,线索快出来",
678
- "检索小雷达启动~",
679
- "答案藏在某个角落里"
760
+ "检索小雷达启动",
761
+ "答案就藏在某个角落",
762
+ "线索有点散,拼一下",
763
+ "找东西,我最在行",
764
+ "答案在网线那头等我",
765
+ "翻箱倒柜中,稍等"
680
766
  ]
681
767
  },
682
768
  {
@@ -690,9 +776,13 @@ const WHISPER_RULES = [
690
776
  ],
691
777
  pool: [
692
778
  "指尖跳舞,代码开花",
693
- "把逻辑编织成网",
694
- "写代码的样子像在作画",
695
- "一行一行,垒起小城堡"
779
+ "把逻辑织成网",
780
+ "一行一行,垒起小城堡",
781
+ "这代码写得,我自己都佩服",
782
+ "码着码着,天就亮了",
783
+ "代码跑通了,比中奖还开心",
784
+ "这行代码,写得有点帅",
785
+ "写完再润润,讲究"
696
786
  ]
697
787
  }
698
788
  ];
@@ -1641,7 +1731,12 @@ function loadPetRegistry(options) {
1641
1731
  byId.set(entry.id, entry);
1642
1732
  }
1643
1733
  for (const manifest of options.extra ?? []) {
1644
- const entry = resolvePetManifest(manifest, manifest.spritesheetPath === void 0 || isAbsolute(manifest.spritesheetPath) ? join(packageRoot, "assets", "extra") : dirname(resolve(packageRoot, manifest.spritesheetPath)), {
1734
+ const raw = manifest.spritesheetPath;
1735
+ const dir = raw === void 0 || isAbsolute(raw) ? join(packageRoot, "assets", "extra") : dirname(resolve(packageRoot, raw));
1736
+ const entry = resolvePetManifest(raw === void 0 || isAbsolute(raw) ? manifest : {
1737
+ ...manifest,
1738
+ spritesheetPath: basename(raw)
1739
+ }, dir, {
1645
1740
  assetPrefix,
1646
1741
  warnings
1647
1742
  });
@@ -2003,6 +2098,51 @@ var PetService = class extends Service {
2003
2098
  }
2004
2099
  };
2005
2100
  //#endregion
2101
+ //#region src/loopback.ts
2102
+ /** IPv4 127/8 predicate (four decimal octets, first == 127). */
2103
+ function isIPv4Loopback(v4) {
2104
+ const parts = v4.split(".");
2105
+ return parts.length === 4 && parts[0] === "127" && parts.every((part) => /^\d{1,3}$/.test(part) && Number(part) <= 255);
2106
+ }
2107
+ /** Whether a socket remote address names the loopback range (127/8, ::1, IPv4-mapped). */
2108
+ function isLoopbackAddress(address) {
2109
+ if (address === void 0) return false;
2110
+ const normalized = address.toLowerCase();
2111
+ if (normalized === "::1") return true;
2112
+ if (normalized.startsWith("::ffff:")) return isIPv4Loopback(normalized.slice(7));
2113
+ return isIPv4Loopback(normalized);
2114
+ }
2115
+ /** Whether a normalized URL hostname names the loopback authority (localhost, [::1], 127/8). */
2116
+ function isLoopbackHostname(hostname) {
2117
+ if (hostname === "localhost" || hostname === "[::1]") return true;
2118
+ return isIPv4Loopback(hostname);
2119
+ }
2120
+ /**
2121
+ * Request-level trust fence: a loopback socket address AND a loopback Host
2122
+ * header, plus browser same-origin markers. The socket address is
2123
+ * authoritative; X-Forwarded-For is never trusted.
2124
+ */
2125
+ function isLoopbackRequest(request) {
2126
+ if (!isLoopbackAddress(request.socket.remoteAddress)) return false;
2127
+ const host = request.headers.host;
2128
+ if (typeof host !== "string") return false;
2129
+ let hostUrl;
2130
+ try {
2131
+ hostUrl = new URL("http://" + host);
2132
+ } catch {
2133
+ return false;
2134
+ }
2135
+ if (!isLoopbackHostname(hostUrl.hostname)) return false;
2136
+ if (request.headers["sec-fetch-site"] === "cross-site") return false;
2137
+ const origin = request.headers.origin;
2138
+ if (origin === void 0) return true;
2139
+ try {
2140
+ return new URL(origin).host === hostUrl.host;
2141
+ } catch {
2142
+ return false;
2143
+ }
2144
+ }
2145
+ //#endregion
2006
2146
  //#region src/routes.ts
2007
2147
  /**
2008
2148
  * Pet HTTP routes — the browser half talks to the host through plain
@@ -2077,12 +2217,22 @@ function readJsonBody(req) {
2077
2217
  req.on("error", reject);
2078
2218
  });
2079
2219
  }
2220
+ /** Shared route fence: the browser UI is a loopback client; LAN hosts stay out. */
2221
+ function guard(req, res) {
2222
+ if (isLoopbackRequest(req)) return true;
2223
+ json(res, 403, {
2224
+ ok: false,
2225
+ error: "forbidden: loopback-only"
2226
+ });
2227
+ return false;
2228
+ }
2080
2229
  /** Wrap one async service call as a GET JSON route. */
2081
2230
  function getRoute(path, run) {
2082
2231
  return {
2083
2232
  kind: "exact",
2084
2233
  path,
2085
2234
  handler: (req, res) => {
2235
+ if (!guard(req, res)) return;
2086
2236
  if (!requireMethod(req, res, "GET")) return;
2087
2237
  run().then((value) => json(res, 200, value), (error) => {
2088
2238
  json(res, 500, {
@@ -2099,6 +2249,7 @@ function postRoute(path, run) {
2099
2249
  kind: "exact",
2100
2250
  path,
2101
2251
  handler: (req, res) => {
2252
+ if (!guard(req, res)) return Promise.resolve();
2102
2253
  if (!requireMethod(req, res, "POST")) return Promise.resolve();
2103
2254
  return readJsonBody(req).then((body) => {
2104
2255
  return run(typeof body === "object" && body !== null ? body : {}).then((value) => json(res, 200, value), (error) => {
@@ -2134,6 +2285,7 @@ function dirAliases(registry) {
2134
2285
  function assetHandler(registry) {
2135
2286
  const aliases = dirAliases(registry);
2136
2287
  return (req, res) => {
2288
+ if (!guard(req, res)) return;
2137
2289
  if (req.method !== "GET" && req.method !== "HEAD") {
2138
2290
  res.writeHead(405);
2139
2291
  res.end();
package/lib/invariant.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as AFFINITY_MAX, n as animationForPhase, o as AFFINITY_RANKS, u as defaultAffinityConfig } from "./state-Ch3f4luZ.js";
1
+ import { a as AFFINITY_MAX, n as animationForPhase, o as AFFINITY_RANKS, u as defaultAffinityConfig } from "./state-DrMX22GL.js";
2
2
  //#region src/invariant.ts
3
3
  /**
4
4
  * Package invariants — cheap structural checks run at import time on the
@@ -29,7 +29,13 @@ const BUILTIN_REMARKS = {
29
29
  "今天的摸头也收货成功!",
30
30
  "蹭蹭你的手心,这是回礼~",
31
31
  "多摸摸我,亲密度会涨哦!",
32
- "闭眼享受中,请勿打扰~"
32
+ "闭眼享受中,请勿打扰~",
33
+ "头再低一点,够不着了~",
34
+ "呼噜呼噜,声音都冒出来了",
35
+ "这手感,比小鱼干还上瘾",
36
+ "摸到第三下,满意",
37
+ "耳朵后面,别漏了……啊,舒服",
38
+ "被摸得尾巴都卷起来了"
33
39
  ],
34
40
  petCooldown: [
35
41
  "摸过头啦,让鲸鱼娘歇口气~",
@@ -41,7 +47,13 @@ const BUILTIN_REMARKS = {
41
47
  "我知道你喜欢我,但也要节制呀~",
42
48
  "歇一歇,摸摸的手感会更好哦~",
43
49
  "咕……等我回个蓝~",
44
- "让我先消化一下刚才的爱!"
50
+ "让我先消化一下刚才的爱!",
51
+ "痒痒的,先让我缓一下……",
52
+ "再摸就掉线了,真的",
53
+ "库存的呼噜声用完了",
54
+ "手歇会儿,我也要补个蓝",
55
+ "舒服归舒服,得缓缓呀",
56
+ "再摸下去,我就要融化了"
45
57
  ],
46
58
  feed: [
47
59
  "呜哇!小鱼干好好吃!",
@@ -53,7 +65,13 @@ const BUILTIN_REMARKS = {
53
65
  "小鱼干最好吃了,再来亿条!",
54
66
  "饱餐一顿,马上满血复活~",
55
67
  "这个味道,是幸福的味道!",
56
- "吃完了还不忘舔舔爪子~"
68
+ "吃完了还不忘舔舔爪子~",
69
+ "这小鱼干,是今天的顶配",
70
+ "一口下去,精神头全回来了",
71
+ "脆!香!就是这个味儿",
72
+ "边吃边摇尾巴,形象不要了",
73
+ "好吃到眼睛都眯起来了",
74
+ "这块鱼干我记住了,懂我的"
57
75
  ],
58
76
  feedCooldown: [
59
77
  "吃饱啦,晚点再喂~",
@@ -65,7 +83,13 @@ const BUILTIN_REMARKS = {
65
83
  "先散步一圈再吃下一顿!",
66
84
  "肚皮已经鼓鼓的啦~",
67
85
  "好吃是好吃,可也得节制呀~",
68
- "等我饿了会告诉你哦~"
86
+ "等我饿了会告诉你哦~",
87
+ "胃说它满了,脑子说还能吃",
88
+ "这条得留着慢慢品",
89
+ "先消消食,待会儿再战",
90
+ "塞不下了,真塞不下了",
91
+ "闻着香,可惜没地方放了",
92
+ "嗝……这顿值了"
69
93
  ],
70
94
  noTreats: [
71
95
  "没有小鱼干了,多陪我工作一会儿吧~",
@@ -77,7 +101,13 @@ const BUILTIN_REMARKS = {
77
101
  "粮仓见底啦,用几轮任务换一条鱼干吧~",
78
102
  "饿着肚子等你完成下一轮任务~",
79
103
  "小鱼干藏在你的工作里,去找找看!",
80
- "先工作后干饭,我们的约定哦~"
104
+ "先工作后干饭,我们的约定哦~",
105
+ "粮仓见底,全靠感情撑着了",
106
+ "饿是真饿,活也是真得干",
107
+ "画饼充饥……不对,画鱼干充饥",
108
+ "没鱼干的日子,靠意志力过",
109
+ "下一轮任务,我闻到了鱼干味",
110
+ "先记账上,欠我两条,记住啦"
81
111
  ]
82
112
  };
83
113
  /** The legacy first line of one kind (direct callers' fallback copy). */
@@ -1 +1 @@
1
- {"version":3,"file":"chatter.d.ts","sourceRoot":"","sources":["../../src/chatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatter.d.ts","sourceRoot":"","sources":["../../src/chatter.ts"],"names":[],"mappings":"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"}