weflow-cli 1.8.0 → 1.8.1

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 (41) hide show
  1. package/CHANGELOG.md +159 -1
  2. package/OPERATIONS.md +42 -6
  3. package/README.en.md +3 -3
  4. package/README.md +3 -3
  5. package/bin/weflow-cli.ts +3 -1
  6. package/dist/bin/weflow-cli.js +3 -1
  7. package/dist/bin/weflow-cli.js.map +1 -1
  8. package/dist/src/panel/server.js +1 -1
  9. package/dist/src/panel/server.js.map +1 -1
  10. package/dist/src/services/assistantPrivacy.d.ts.map +1 -1
  11. package/dist/src/services/assistantPrivacy.js +7 -2
  12. package/dist/src/services/assistantPrivacy.js.map +1 -1
  13. package/dist/src/services/assistantService.d.ts.map +1 -1
  14. package/dist/src/services/assistantService.js +10 -1
  15. package/dist/src/services/assistantService.js.map +1 -1
  16. package/dist/src/services/assistantTools.d.ts +12 -0
  17. package/dist/src/services/assistantTools.d.ts.map +1 -1
  18. package/dist/src/services/assistantTools.js +29 -3
  19. package/dist/src/services/assistantTools.js.map +1 -1
  20. package/dist/src/services/wereadService.d.ts +33 -6
  21. package/dist/src/services/wereadService.d.ts.map +1 -1
  22. package/dist/src/services/wereadService.js +27 -2
  23. package/dist/src/services/wereadService.js.map +1 -1
  24. package/docs/BRANCHES.md +13 -4
  25. package/docs/PROJECT_STATE.md +299 -299
  26. package/package.json +1 -1
  27. package/resources/panel/main.cjs +43 -7
  28. package/resources/panel/mascot-thinking.png +0 -0
  29. package/resources/panel/panel.css +415 -407
  30. package/resources/panel/preload.cjs +79 -72
  31. package/resources/panel/renderer.js +470 -441
  32. package/scripts/_utils.py +23 -1
  33. package/scripts/backfill_articles.py +438 -438
  34. package/scripts/compile_wiki.py +18 -17
  35. package/scripts/wiki_lint.py +429 -397
  36. package/src/panel/server.ts +424 -424
  37. package/src/services/assistantPrivacy.ts +7 -2
  38. package/src/services/assistantService.ts +11 -1
  39. package/src/services/assistantTools.ts +33 -3
  40. package/src/services/wereadService.ts +43 -7
  41. package/resources/panel/mascot-focus.png +0 -0
package/scripts/_utils.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  weflow-cli 公共工具函数 — 供 biz_daily / classify_daily / chat_report 等共用。
3
3
  """
4
- import os, json, base64, socket, urllib.request, hashlib
4
+ import os, json, re, base64, socket, urllib.request, hashlib
5
5
  from functools import wraps
6
6
 
7
7
 
@@ -706,6 +706,28 @@ def parse_frontmatter(content: str) -> tuple[dict, str]:
706
706
  return result, body
707
707
 
708
708
 
709
+ NORM_STRIP_RE = re.compile(r'[\s\-_·、,.。::/\\()()\[\]【】"\’]+')
710
+
711
+
712
+ def normalize_concept_name(name: str) -> str:
713
+ """判「这两个名字是不是同一个概念」用的规范形。
714
+
715
+ 去空格、连字符、下划线、标点,转小写,再去掉英文复数尾 —— 实测这样能把
716
+ `GPT 5.6`/`GPT-5.6`/`GPT5.6`、`AI 工具`/`AI工具`、`AI skill`/`AI skills` 收到一起。
717
+
718
+ **它也会把 `news`/`new` 收到一起**,所以它只用来**提议**合并;真正的裁决是
719
+ "留来源最多的那张页",而且删之前还有 `--dry-run` 可以看名单。
720
+
721
+ 住在这里(而不是 `compile_wiki`)是因为**两个读者必须用同一个口径**:`compile_wiki
722
+ --merge-duplicates` 拿它决定合并谁,`wiki_lint` 拿它报告"还有哪些是同一个节点的两种写法"。
723
+ 两边各写一份的话,体检报出来的名单就会有一半是合并工具不会动的 —— 2026-09-28 之前正是
724
+ 如此:lint 用的是另一套(把所有非字母数字都去掉),于是 `DeepSeek++` 在它眼里等于
725
+ `DeepSeek`,而合并工具并不这么认为。
726
+ """
727
+ stripped = NORM_STRIP_RE.sub('', name.casefold().strip())
728
+ return re.sub(r'(?<=[a-z])s$', '', stripped)
729
+
730
+
709
731
  def format_wikilinks(concepts: list[tuple[str, str]]) -> str:
710
732
  lines = ['## 相关概念', '']
711
733
  for name, desc in concepts: