@furongjun1999/dsh-memory 0.4.3 → 0.4.5

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 (1471) hide show
  1. package/README.md +104 -483
  2. package/cordis.patch.yml +1 -1
  3. package/cordis.yml.example +78 -9
  4. package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md +170 -0
  5. package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md +239 -0
  6. package/docs/README/350/257/246/347/273/206/347/211/210_v0.4.5.md +625 -0
  7. package/docs/cordis-patch-profile-web.example.yml +50 -6
  8. package/docs/release_v0.3.0.md +36 -0
  9. package/docs/release_v0.4.5.md +55 -0
  10. package/docs/tool_table_v0.3.0.md +117 -0
  11. package/docs//344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md +160 -0
  12. package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +221 -0
  13. package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +192 -2
  14. package/docs//347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md +278 -0
  15. package/docs//347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -0
  16. package/docs//347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +198 -0
  17. package/docs//347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md +49 -1
  18. package/docs//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -0
  19. package/docs//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -0
  20. package/docs//350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +491 -0
  21. package/docs//350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md +368 -34
  22. package/docs//350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md +340 -0
  23. package/docs//350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +496 -0
  24. package/docs//350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md +94 -0
  25. package/docs//350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +281 -0
  26. package/lib/bridge.d.ts +4 -4
  27. package/lib/bridge.js +4 -4
  28. package/lib/hooks.d.ts +23 -8
  29. package/lib/hooks.js +75 -26
  30. package/lib/index.d.ts +53 -8
  31. package/lib/index.js +216 -63
  32. package/lib/lib/datapath.d.ts +16 -0
  33. package/lib/lib/datapath.js +114 -0
  34. package/lib/lib/mdcg_client.d.ts +152 -0
  35. package/lib/lib/mdcg_client.js +266 -0
  36. package/lib/lib/mutual.d.ts +121 -0
  37. package/lib/lib/mutual.js +348 -0
  38. package/lib/lib/roleplay_web.d.ts +6 -0
  39. package/{src/roleplay_web.ts → lib/lib/roleplay_web.js} +503 -450
  40. package/lib/lib/whitebox_llm.d.ts +129 -0
  41. package/lib/lib/whitebox_llm.js +249 -0
  42. package/lib/tools.d.ts +13 -6
  43. package/lib/tools.js +41 -55
  44. package/md_cg/__init__.py +7 -0
  45. package/md_cg/__pycache__/__init__.cpython-310.pyc +0 -0
  46. package/md_cg/__pycache__/_dbg_p30.cpython-310.pyc +0 -0
  47. package/md_cg/__pycache__/_diag_p19.cpython-310.pyc +0 -0
  48. package/md_cg/__pycache__/_tmp_dbg.cpython-310.pyc +0 -0
  49. package/md_cg/__pycache__/audit.cpython-310.pyc +0 -0
  50. package/md_cg/__pycache__/backfill.cpython-310.pyc +0 -0
  51. package/md_cg/__pycache__/bench_membench.cpython-310.pyc +0 -0
  52. package/md_cg/__pycache__/bench_p0.cpython-310.pyc +0 -0
  53. package/md_cg/__pycache__/census.cpython-310.pyc +0 -0
  54. package/md_cg/__pycache__/chain.cpython-310.pyc +0 -0
  55. package/md_cg/__pycache__/codeindex.cpython-310.pyc +0 -0
  56. package/md_cg/__pycache__/consistency.cpython-310.pyc +0 -0
  57. package/md_cg/__pycache__/consolidate.cpython-310.pyc +0 -0
  58. package/md_cg/__pycache__/corpus.cpython-310.pyc +0 -0
  59. package/md_cg/__pycache__/crosscheck.cpython-310.pyc +0 -0
  60. package/md_cg/__pycache__/crypto.cpython-310.pyc +0 -0
  61. package/md_cg/__pycache__/datapath.cpython-310.pyc +0 -0
  62. package/md_cg/__pycache__/docindex.cpython-310.pyc +0 -0
  63. package/md_cg/__pycache__/evidence.cpython-310.pyc +0 -0
  64. package/md_cg/__pycache__/evolution.cpython-310.pyc +0 -0
  65. package/md_cg/__pycache__/export.cpython-310.pyc +0 -0
  66. package/md_cg/__pycache__/forgetting.cpython-310.pyc +0 -0
  67. package/md_cg/__pycache__/fsutil.cpython-310.pyc +0 -0
  68. package/md_cg/__pycache__/identity.cpython-310.pyc +0 -0
  69. package/md_cg/__pycache__/insight.cpython-310.pyc +0 -0
  70. package/md_cg/__pycache__/links.cpython-310.pyc +0 -0
  71. package/md_cg/__pycache__/mcp_server.cpython-310.pyc +0 -0
  72. package/md_cg/__pycache__/md_whitebox.cpython-310.pyc +0 -0
  73. package/md_cg/__pycache__/mdcg.cpython-310.pyc +0 -0
  74. package/md_cg/__pycache__/mdcos.cpython-310.pyc +0 -0
  75. package/md_cg/__pycache__/metacognition.cpython-310.pyc +0 -0
  76. package/md_cg/__pycache__/migrate.cpython-310.pyc +0 -0
  77. package/md_cg/__pycache__/migrate_aeis.cpython-310.pyc +0 -0
  78. package/md_cg/__pycache__/migrate_roleplay.cpython-310.pyc +0 -0
  79. package/md_cg/__pycache__/migrate_wisdom_graph.cpython-310.pyc +0 -0
  80. package/md_cg/__pycache__/nodefile.cpython-310.pyc +0 -0
  81. package/md_cg/__pycache__/pooling.cpython-310.pyc +0 -0
  82. package/md_cg/__pycache__/predict.cpython-310.pyc +0 -0
  83. package/md_cg/__pycache__/protect.cpython-310.pyc +0 -0
  84. package/md_cg/__pycache__/provenance.cpython-310.pyc +0 -0
  85. package/md_cg/__pycache__/refindex.cpython-310.pyc +0 -0
  86. package/md_cg/__pycache__/refine.cpython-310.pyc +0 -0
  87. package/md_cg/__pycache__/routing.cpython-310.pyc +0 -0
  88. package/md_cg/__pycache__/scrub.cpython-310.pyc +0 -0
  89. package/md_cg/__pycache__/security.cpython-310.pyc +0 -0
  90. package/md_cg/__pycache__/self_state.cpython-310.pyc +0 -0
  91. package/md_cg/__pycache__/signer.cpython-310.pyc +0 -0
  92. package/md_cg/__pycache__/sources.cpython-310.pyc +0 -0
  93. package/md_cg/__pycache__/stg.cpython-310.pyc +0 -0
  94. package/md_cg/__pycache__/subgraph.cpython-310.pyc +0 -0
  95. package/md_cg/__pycache__/sustain.cpython-310.pyc +0 -0
  96. package/md_cg/__pycache__/test_lock.cpython-310-pytest-9.1.1.pyc +0 -0
  97. package/md_cg/__pycache__/test_lock.cpython-310.pyc +0 -0
  98. package/md_cg/__pycache__/test_p0.cpython-310-pytest-9.1.1.pyc +0 -0
  99. package/md_cg/__pycache__/test_p0.cpython-310.pyc +0 -0
  100. package/md_cg/__pycache__/test_p1.cpython-310-pytest-9.1.1.pyc +0 -0
  101. package/md_cg/__pycache__/test_p1.cpython-310.pyc +0 -0
  102. package/md_cg/__pycache__/test_p10_identity.cpython-310-pytest-9.1.1.pyc +0 -0
  103. package/md_cg/__pycache__/test_p10_identity.cpython-310.pyc +0 -0
  104. package/md_cg/__pycache__/test_p11_consistency.cpython-310-pytest-9.1.1.pyc +0 -0
  105. package/md_cg/__pycache__/test_p11_consistency.cpython-310.pyc +0 -0
  106. package/md_cg/__pycache__/test_p12_metacognition.cpython-310-pytest-9.1.1.pyc +0 -0
  107. package/md_cg/__pycache__/test_p12_metacognition.cpython-310.pyc +0 -0
  108. package/md_cg/__pycache__/test_p13_encryption.cpython-310-pytest-9.1.1.pyc +0 -0
  109. package/md_cg/__pycache__/test_p13_encryption.cpython-310.pyc +0 -0
  110. package/md_cg/__pycache__/test_p14_sustain.cpython-310-pytest-9.1.1.pyc +0 -0
  111. package/md_cg/__pycache__/test_p14_sustain.cpython-310.pyc +0 -0
  112. package/md_cg/__pycache__/test_p15_scrub.cpython-310-pytest-9.1.1.pyc +0 -0
  113. package/md_cg/__pycache__/test_p15_scrub.cpython-310.pyc +0 -0
  114. package/md_cg/__pycache__/test_p16_self_state.cpython-310.pyc +0 -0
  115. package/md_cg/__pycache__/test_p17_predict.cpython-310.pyc +0 -0
  116. package/md_cg/__pycache__/test_p18_whitebox.cpython-310.pyc +0 -0
  117. package/md_cg/__pycache__/test_p19_migrate_roleplay.cpython-310.pyc +0 -0
  118. package/md_cg/__pycache__/test_p2.cpython-310-pytest-9.1.1.pyc +0 -0
  119. package/md_cg/__pycache__/test_p2.cpython-310.pyc +0 -0
  120. package/md_cg/__pycache__/test_p20_evolution.cpython-310.pyc +0 -0
  121. package/md_cg/__pycache__/test_p21_tokens.cpython-310.pyc +0 -0
  122. package/md_cg/__pycache__/test_p22_theory.cpython-310.pyc +0 -0
  123. package/md_cg/__pycache__/test_p23_links.cpython-310.pyc +0 -0
  124. package/md_cg/__pycache__/test_p24_evidence.cpython-310.pyc +0 -0
  125. package/md_cg/__pycache__/test_p25_weights.cpython-310.pyc +0 -0
  126. package/md_cg/__pycache__/test_p26_refindex.cpython-310.pyc +0 -0
  127. package/md_cg/__pycache__/test_p27_docindex.cpython-310.pyc +0 -0
  128. package/md_cg/__pycache__/test_p28_refcheck.cpython-310.pyc +0 -0
  129. package/md_cg/__pycache__/test_p29_session_ingest_export.cpython-310.pyc +0 -0
  130. package/md_cg/__pycache__/test_p2_mcp.cpython-310-pytest-9.1.1.pyc +0 -0
  131. package/md_cg/__pycache__/test_p2_mcp.cpython-310.pyc +0 -0
  132. package/md_cg/__pycache__/test_p3.cpython-310-pytest-9.1.1.pyc +0 -0
  133. package/md_cg/__pycache__/test_p3.cpython-310.pyc +0 -0
  134. package/md_cg/__pycache__/test_p30_maintain.cpython-310.pyc +0 -0
  135. package/md_cg/__pycache__/test_p31_insight.cpython-310.pyc +0 -0
  136. package/md_cg/__pycache__/test_p32_backfill.cpython-310.pyc +0 -0
  137. package/md_cg/__pycache__/test_p33_ccg_wiring.cpython-310.pyc +0 -0
  138. package/md_cg/__pycache__/test_p34_crosscheck.cpython-310.pyc +0 -0
  139. package/md_cg/__pycache__/test_p35_conditioned_claim.cpython-310.pyc +0 -0
  140. package/md_cg/__pycache__/test_p36_kp_align.cpython-310.pyc +0 -0
  141. package/md_cg/__pycache__/test_p37_condition_space.cpython-310.pyc +0 -0
  142. package/md_cg/__pycache__/test_p38_contextualize.cpython-310.pyc +0 -0
  143. package/md_cg/__pycache__/test_p39_vision_evidence.cpython-310.pyc +0 -0
  144. package/md_cg/__pycache__/test_p40_refine_worklist.cpython-310.pyc +0 -0
  145. package/md_cg/__pycache__/test_p41_evolve_patrol.cpython-310.pyc +0 -0
  146. package/md_cg/__pycache__/test_p42_provenance.cpython-310.pyc +0 -0
  147. package/md_cg/__pycache__/test_p43_pooling.cpython-310.pyc +0 -0
  148. package/md_cg/__pycache__/test_p44_md_whitebox.cpython-310.pyc +0 -0
  149. package/md_cg/__pycache__/test_p4_fuzzy.cpython-310-pytest-9.1.1.pyc +0 -0
  150. package/md_cg/__pycache__/test_p4_fuzzy.cpython-310.pyc +0 -0
  151. package/md_cg/__pycache__/test_p5_semantic.cpython-310-pytest-9.1.1.pyc +0 -0
  152. package/md_cg/__pycache__/test_p5_semantic.cpython-310.pyc +0 -0
  153. package/md_cg/__pycache__/test_p6_consolidate.cpython-310-pytest-9.1.1.pyc +0 -0
  154. package/md_cg/__pycache__/test_p6_consolidate.cpython-310.pyc +0 -0
  155. package/md_cg/__pycache__/test_p7_goals_recent.cpython-310-pytest-9.1.1.pyc +0 -0
  156. package/md_cg/__pycache__/test_p7_goals_recent.cpython-310.pyc +0 -0
  157. package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310-pytest-9.1.1.pyc +0 -0
  158. package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310.pyc +0 -0
  159. package/md_cg/__pycache__/test_p9_forget_protect.cpython-310-pytest-9.1.1.pyc +0 -0
  160. package/md_cg/__pycache__/test_p9_forget_protect.cpython-310.pyc +0 -0
  161. package/md_cg/__pycache__/theory.cpython-310.pyc +0 -0
  162. package/md_cg/__pycache__/tokens.cpython-310.pyc +0 -0
  163. package/md_cg/__pycache__/vision_evidence.cpython-310.pyc +0 -0
  164. package/md_cg/__pycache__/weights.cpython-310.pyc +0 -0
  165. package/md_cg/__pycache__/whitebox.cpython-310.pyc +0 -0
  166. package/md_cg/audit.py +223 -0
  167. package/md_cg/backfill.py +1272 -0
  168. package/md_cg/bench_membench.py +602 -0
  169. package/md_cg/bench_p0.py +147 -0
  170. package/md_cg/bench_task_ab.py +237 -0
  171. package/md_cg/bench_task_ab_llm.py +397 -0
  172. package/md_cg/census.py +117 -0
  173. package/md_cg/chain.py +280 -0
  174. package/md_cg/codeindex.py +359 -0
  175. package/md_cg/consistency.py +593 -0
  176. package/md_cg/consolidate.py +1389 -0
  177. package/md_cg/corpus.py +106 -0
  178. package/md_cg/crosscheck.py +1058 -0
  179. package/md_cg/crypto.py +404 -0
  180. package/md_cg/datapath.py +160 -0
  181. package/md_cg/docindex.py +333 -0
  182. package/md_cg/evidence.py +555 -0
  183. package/md_cg/evolution.py +458 -0
  184. package/md_cg/export.py +210 -0
  185. package/md_cg/forgetting.py +552 -0
  186. package/md_cg/fsutil.py +251 -0
  187. package/md_cg/identity.py +374 -0
  188. package/md_cg/insight.py +485 -0
  189. package/md_cg/links.py +595 -0
  190. package/md_cg/mcp_server.py +2445 -0
  191. package/md_cg/md_whitebox.py +271 -0
  192. package/md_cg/mdcg.py +1210 -0
  193. package/md_cg/mdcos.py +2505 -0
  194. package/md_cg/metacognition.py +557 -0
  195. package/md_cg/migrate.py +115 -0
  196. package/md_cg/migrate_aeis.py +213 -0
  197. package/md_cg/migrate_roleplay.py +285 -0
  198. package/md_cg/migrate_wisdom_graph.py +348 -0
  199. package/md_cg/nodefile.py +308 -0
  200. package/md_cg/pooling.py +451 -0
  201. package/md_cg/predict.py +918 -0
  202. package/md_cg/protect.py +260 -0
  203. package/md_cg/provenance.py +321 -0
  204. package/md_cg/refindex.py +585 -0
  205. package/md_cg/refine.py +586 -0
  206. package/md_cg/routing.py +290 -0
  207. package/md_cg/scrub.py +788 -0
  208. package/md_cg/security.py +235 -0
  209. package/md_cg/self_state.py +843 -0
  210. package/md_cg/signer.py +523 -0
  211. package/md_cg/sources.py +547 -0
  212. package/md_cg/stg.py +250 -0
  213. package/md_cg/subgraph.py +706 -0
  214. package/md_cg/sustain.py +874 -0
  215. package/md_cg/test_lock.py +43 -0
  216. package/md_cg/test_p0.py +250 -0
  217. package/md_cg/test_p1.py +317 -0
  218. package/md_cg/test_p10_identity.py +173 -0
  219. package/md_cg/test_p11_consistency.py +233 -0
  220. package/md_cg/test_p12_metacognition.py +212 -0
  221. package/md_cg/test_p13_encryption.py +241 -0
  222. package/md_cg/test_p14_sustain.py +249 -0
  223. package/md_cg/test_p15_scrub.py +280 -0
  224. package/md_cg/test_p16_self_state.py +275 -0
  225. package/md_cg/test_p17_predict.py +341 -0
  226. package/md_cg/test_p18_whitebox.py +171 -0
  227. package/md_cg/test_p19_migrate_roleplay.py +149 -0
  228. package/md_cg/test_p2.py +205 -0
  229. package/md_cg/test_p20_evolution.py +315 -0
  230. package/md_cg/test_p21_tokens.py +270 -0
  231. package/md_cg/test_p22_theory.py +175 -0
  232. package/md_cg/test_p23_links.py +311 -0
  233. package/md_cg/test_p24_evidence.py +227 -0
  234. package/md_cg/test_p25_weights.py +156 -0
  235. package/md_cg/test_p26_refindex.py +387 -0
  236. package/md_cg/test_p27_docindex.py +377 -0
  237. package/md_cg/test_p28_refcheck.py +305 -0
  238. package/md_cg/test_p29_session_ingest_export.py +333 -0
  239. package/md_cg/test_p2_mcp.py +425 -0
  240. package/md_cg/test_p3.py +252 -0
  241. package/md_cg/test_p30_maintain.py +330 -0
  242. package/md_cg/test_p31_insight.py +510 -0
  243. package/md_cg/test_p32_backfill.py +298 -0
  244. package/md_cg/test_p33_ccg_wiring.py +293 -0
  245. package/md_cg/test_p34_crosscheck.py +331 -0
  246. package/md_cg/test_p35_conditioned_claim.py +252 -0
  247. package/md_cg/test_p36_kp_align.py +225 -0
  248. package/md_cg/test_p37_condition_space.py +248 -0
  249. package/md_cg/test_p38_contextualize.py +273 -0
  250. package/md_cg/test_p39_vision_evidence.py +369 -0
  251. package/md_cg/test_p40_refine_worklist.py +241 -0
  252. package/md_cg/test_p41_evolve_patrol.py +224 -0
  253. package/md_cg/test_p42_provenance.py +269 -0
  254. package/md_cg/test_p43_pooling.py +360 -0
  255. package/md_cg/test_p44_md_whitebox.py +218 -0
  256. package/md_cg/test_p4_fuzzy.py +223 -0
  257. package/md_cg/test_p5_semantic.py +226 -0
  258. package/md_cg/test_p6_consolidate.py +387 -0
  259. package/md_cg/test_p7_goals_recent.py +202 -0
  260. package/md_cg/test_p8_subgraph_chain.py +200 -0
  261. package/md_cg/test_p9_forget_protect.py +231 -0
  262. package/md_cg/theory.py +259 -0
  263. package/md_cg/tokens.py +506 -0
  264. package/md_cg/vision_evidence.py +644 -0
  265. package/md_cg/weights.py +602 -0
  266. package/md_cg/whitebox.py +497 -0
  267. package/md_cg/whitebox_kb/__init__.py +37 -0
  268. package/md_cg/whitebox_kb/__pycache__/__init__.cpython-310.pyc +0 -0
  269. package/md_cg/whitebox_kb/__pycache__/engine.cpython-310.pyc +0 -0
  270. package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -0
  271. package/md_cg/whitebox_kb/aeis_core/__pycache__/__init__.cpython-310.pyc +0 -0
  272. package/md_cg/whitebox_kb/aeis_core/__pycache__/core.cpython-310.pyc +0 -0
  273. package/md_cg/whitebox_kb/aeis_core/__pycache__/semantic.cpython-310.pyc +0 -0
  274. package/md_cg/whitebox_kb/aeis_core/__pycache__/time_core.cpython-310.pyc +0 -0
  275. package/md_cg/whitebox_kb/aeis_core/api.py +1042 -0
  276. package/md_cg/whitebox_kb/aeis_core/core.py +5014 -0
  277. package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -0
  278. package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -0
  279. package/md_cg/whitebox_kb/aeis_core/time_core.py +43 -0
  280. package/md_cg/whitebox_kb/data/verify_cache.json +1873 -0
  281. package/md_cg/whitebox_kb/data/verify_savings.jsonl +1330 -0
  282. package/md_cg/whitebox_kb/engine.py +310 -0
  283. package/md_cg/whitebox_kb/knowledge/_ccg_dump.json +1 -0
  284. package/md_cg/whitebox_kb/knowledge/_index.json +15300 -0
  285. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/345/234/260/346/240/207.md +22 -0
  286. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/346/226/207/345/214/226.md +15 -0
  287. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/350/207/252/347/204/266/345/245/207/350/247/202.md +29 -0
  288. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/351/201/227/344/272/247.md +15 -0
  289. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  290. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/220/215/350/203/234.md +15 -0
  291. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/257/223/350/250/200.md +15 -0
  292. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  293. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/245/236/350/257/235.md +22 -0
  294. package/md_cg/whitebox_kb/knowledge//344/271/246/346/263/225/346/226/207/345/214/226.md +22 -0
  295. package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/345/256/211/345/205/250.md +15 -0
  296. package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/351/200/232/350/257/206.md +15 -0
  297. package/md_cg/whitebox_kb/knowledge//344/272/272/344/275/223/347/224/237/347/220/206.md +22 -0
  298. package/md_cg/whitebox_kb/knowledge//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +307 -0
  299. package/md_cg/whitebox_kb/knowledge//344/272/272/346/226/207/351/200/232/350/257/206.md +1296 -0
  300. package/md_cg/whitebox_kb/knowledge//344/272/272/347/211/251/345/216/206/345/217/262.md +15 -0
  301. package/md_cg/whitebox_kb/knowledge//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
  302. package/md_cg/whitebox_kb/knowledge//344/272/272/351/231/205/346/262/237/351/200/232.md +22 -0
  303. package/md_cg/whitebox_kb/knowledge//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
  304. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/344/271/220/345/231/250.md +15 -0
  305. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/205/273/347/224/237.md +15 -0
  306. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/216/206/346/263/225.md +15 -0
  307. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/267/245/350/211/272.md +148 -0
  308. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/273/272/347/255/221.md +29 -0
  309. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/226/207/345/214/226.md +92 -0
  310. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/243/213/347/261/273.md +15 -0
  311. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/255/246/346/234/257.md +15 -0
  312. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/345/276/267.md +29 -0
  313. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/351/243/237.md +36 -0
  314. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/211/272/346/234/257.md +71 -0
  315. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/212/202/346/227/245.md +22 -0
  316. package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262.md +15 -0
  317. package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262/350/277/220/345/212/250.md +15 -0
  318. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/345/256/211/345/205/250.md +15 -0
  319. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/346/212/200/346/234/257.md +22 -0
  320. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
  321. package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/344/271/240/346/203/257.md +15 -0
  322. package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/345/270/270/350/257/206.md +50 -0
  323. package/md_cg/whitebox_kb/knowledge//345/205/211/345/255/246/351/200/232/350/257/206.md +15 -0
  324. package/md_cg/whitebox_kb/knowledge//345/205/273/347/224/237/346/226/271/346/263/225.md +15 -0
  325. package/md_cg/whitebox_kb/knowledge//345/206/233/344/272/213/345/217/262.md +15 -0
  326. package/md_cg/whitebox_kb/knowledge//345/206/234/344/270/232/345/270/270/350/257/206.md +15 -0
  327. package/md_cg/whitebox_kb/knowledge//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  328. package/md_cg/whitebox_kb/knowledge//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  329. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
  330. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +279 -0
  331. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  332. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
  333. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +545 -0
  334. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +426 -0
  335. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  336. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  337. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  338. package/md_cg/whitebox_kb/knowledge//345/210/266/345/272/246/345/217/262.md +64 -0
  339. package/md_cg/whitebox_kb/knowledge//345/211/215/346/262/277/347/247/221/346/212/200.md +36 -0
  340. package/md_cg/whitebox_kb/knowledge//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  341. package/md_cg/whitebox_kb/knowledge//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2081 -0
  342. package/md_cg/whitebox_kb/knowledge//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  343. package/md_cg/whitebox_kb/knowledge//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  344. package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/234/260/347/220/206.md +29 -0
  345. package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +464 -0
  346. package/md_cg/whitebox_kb/knowledge//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  347. package/md_cg/whitebox_kb/knowledge//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  348. package/md_cg/whitebox_kb/knowledge//345/217/244/347/224/237/347/211/251.md +22 -0
  349. package/md_cg/whitebox_kb/knowledge//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  350. package/md_cg/whitebox_kb/knowledge//345/225/206/344/270/232/345/217/262.md +15 -0
  351. package/md_cg/whitebox_kb/knowledge//345/231/250/347/211/251/345/267/245/350/211/272.md +15 -0
  352. package/md_cg/whitebox_kb/knowledge//345/233/255/346/236/227/345/273/272/347/255/221.md +15 -0
  353. package/md_cg/whitebox_kb/knowledge//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  354. package/md_cg/whitebox_kb/knowledge//345/233/276/345/203/217/347/224/237/346/210/220.md +99 -0
  355. package/md_cg/whitebox_kb/knowledge//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  356. package/md_cg/whitebox_kb/knowledge//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +303 -0
  357. package/md_cg/whitebox_kb/knowledge//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  358. package/md_cg/whitebox_kb/knowledge//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  359. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
  360. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  361. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +321 -0
  362. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  363. package/md_cg/whitebox_kb/knowledge//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  364. package/md_cg/whitebox_kb/knowledge//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +173 -0
  365. package/md_cg/whitebox_kb/knowledge//345/255/230/345/234/250/350/256/272.md +43 -0
  366. package/md_cg/whitebox_kb/knowledge//345/255/246/344/271/240/346/226/271/346/263/225.md +57 -0
  367. package/md_cg/whitebox_kb/knowledge//345/256/211/345/205/250/345/270/270/350/257/206.md +22 -0
  368. package/md_cg/whitebox_kb/knowledge//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  369. package/md_cg/whitebox_kb/knowledge//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  370. package/md_cg/whitebox_kb/knowledge//345/256/240/347/211/251.md +29 -0
  371. package/md_cg/whitebox_kb/knowledge//345/256/266/345/272/255/345/205/263/347/263/273.md +29 -0
  372. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  373. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1274 -0
  374. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  375. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  376. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  377. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  378. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +611 -0
  379. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/347/247/221/345/255/246.md +22 -0
  380. package/md_cg/whitebox_kb/knowledge//345/267/245/350/211/272/351/200/232/350/257/206.md +15 -0
  381. package/md_cg/whitebox_kb/knowledge//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  382. package/md_cg/whitebox_kb/knowledge//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
  383. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/344/272/272/346/226/207.md +15 -0
  384. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/345/216/206/345/217/262.md +43 -0
  385. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/350/211/272/346/234/257.md +15 -0
  386. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/351/200/232/350/257/206.md +15 -0
  387. package/md_cg/whitebox_kb/knowledge//345/275/261/350/247/206/345/270/270/350/257/206.md +29 -0
  388. package/md_cg/whitebox_kb/knowledge//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  389. package/md_cg/whitebox_kb/knowledge//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  390. package/md_cg/whitebox_kb/knowledge//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  391. package/md_cg/whitebox_kb/knowledge//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  392. package/md_cg/whitebox_kb/knowledge//346/200/235/347/273/264/345/256/232/345/276/213.md +29 -0
  393. package/md_cg/whitebox_kb/knowledge//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
  394. package/md_cg/whitebox_kb/knowledge//346/210/217/346/233/262/350/211/272/346/234/257.md +22 -0
  395. package/md_cg/whitebox_kb/knowledge//346/210/220/350/257/255/345/205/270/346/225/205.md +15 -0
  396. package/md_cg/whitebox_kb/knowledge//346/211/213/345/267/245/345/270/270/350/257/206.md +15 -0
  397. package/md_cg/whitebox_kb/knowledge//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  398. package/md_cg/whitebox_kb/knowledge//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  399. package/md_cg/whitebox_kb/knowledge//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  400. package/md_cg/whitebox_kb/knowledge//346/224/266/350/227/217/351/233/206/350/227/217.md +92 -0
  401. package/md_cg/whitebox_kb/knowledge//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +387 -0
  402. package/md_cg/whitebox_kb/knowledge//346/225/210/347/216/207/346/226/271/346/263/225.md +15 -0
  403. package/md_cg/whitebox_kb/knowledge//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  404. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  405. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/264/240/345/205/273.md +22 -0
  406. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2074 -0
  407. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +349 -0
  408. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  409. package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  410. package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  411. package/md_cg/whitebox_kb/knowledge//346/226/207/345/205/267/345/270/270/350/257/206.md +15 -0
  412. package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226.md +36 -0
  413. package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226/351/200/232/350/257/206.md +15 -0
  414. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/345/255/246.md +15 -0
  415. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/350/265/267/346/272/220.md +15 -0
  416. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +328 -0
  417. package/md_cg/whitebox_kb/knowledge//346/226/207/346/225/231/345/216/206/345/217/262.md +15 -0
  418. package/md_cg/whitebox_kb/knowledge//346/226/207/347/211/251/351/200/232/350/257/206.md +22 -0
  419. package/md_cg/whitebox_kb/knowledge//346/226/207/347/214/256/345/255/246.md +22 -0
  420. package/md_cg/whitebox_kb/knowledge//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +216 -0
  421. package/md_cg/whitebox_kb/knowledge//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
  422. package/md_cg/whitebox_kb/knowledge//346/230/206/350/231/253/345/270/270/350/257/206.md +29 -0
  423. package/md_cg/whitebox_kb/knowledge//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +441 -0
  424. package/md_cg/whitebox_kb/knowledge//346/233/262/350/211/272/345/270/270/350/257/206.md +15 -0
  425. package/md_cg/whitebox_kb/knowledge//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  426. package/md_cg/whitebox_kb/knowledge//346/234/215/351/245/260/346/226/207/345/214/226.md +22 -0
  427. package/md_cg/whitebox_kb/knowledge//346/234/252/345/210/206/347/261/273.md +52 -0
  428. package/md_cg/whitebox_kb/knowledge//346/234/272/346/242/260/351/200/232/350/257/206.md +15 -0
  429. package/md_cg/whitebox_kb/knowledge//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  430. package/md_cg/whitebox_kb/knowledge//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  431. package/md_cg/whitebox_kb/knowledge//346/243/213/347/211/214/350/247/204/345/210/231.md +15 -0
  432. package/md_cg/whitebox_kb/knowledge//346/243/213/347/261/273/350/247/204/345/210/231.md +36 -0
  433. package/md_cg/whitebox_kb/knowledge//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  434. package/md_cg/whitebox_kb/knowledge//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +230 -0
  435. package/md_cg/whitebox_kb/knowledge//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  436. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227.md +64 -0
  437. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/344/277/241/344/273/260.md +36 -0
  438. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/205/273/347/224/237.md +15 -0
  439. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/216/206/346/263/225.md +15 -0
  440. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/231/250/347/211/251.md +15 -0
  441. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/346/226/207/345/214/226.md +22 -0
  442. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/350/257/255/350/250/200.md +15 -0
  443. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/351/233/205/347/216/251.md +50 -0
  444. package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/345/270/270/350/257/206.md +15 -0
  445. package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/351/200/232/350/257/206.md +15 -0
  446. package/md_cg/whitebox_kb/knowledge//346/261/202/350/201/214/346/212/200/350/203/275.md +29 -0
  447. package/md_cg/whitebox_kb/knowledge//346/262/237/351/200/232.md +29 -0
  448. package/md_cg/whitebox_kb/knowledge//346/263/225/345/276/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +14 -0
  449. package/md_cg/whitebox_kb/knowledge//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  450. package/md_cg/whitebox_kb/knowledge//346/265/267/346/264/213/347/224/237/347/211/251.md +15 -0
  451. package/md_cg/whitebox_kb/knowledge//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  452. package/md_cg/whitebox_kb/knowledge//347/203/271/351/245/252/346/212/200/346/263/225.md +15 -0
  453. package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  454. package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2256 -0
  455. package/md_cg/whitebox_kb/knowledge//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  456. package/md_cg/whitebox_kb/knowledge//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  457. package/md_cg/whitebox_kb/knowledge//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  458. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/215/253/347/224/237.md +15 -0
  459. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/270/270/350/257/206.md +1296 -0
  460. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/346/212/200/350/203/275.md +43 -0
  461. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/347/247/221/346/212/200.md +22 -0
  462. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/351/200/232/350/257/206.md +15 -0
  463. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/344/277/235/346/212/244.md +36 -0
  464. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  465. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1759 -0
  466. package/md_cg/whitebox_kb/knowledge//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  467. package/md_cg/whitebox_kb/knowledge//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  468. package/md_cg/whitebox_kb/knowledge//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  469. package/md_cg/whitebox_kb/knowledge//347/231/275/347/256/261/345/215/217/350/256/256.md +22 -0
  470. package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/346/270/270/346/210/217.md +15 -0
  471. package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/351/200/232/350/257/206.md +15 -0
  472. package/md_cg/whitebox_kb/knowledge//347/244/276/344/272/244/346/212/200/345/267/247.md +15 -0
  473. package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  474. package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/347/247/221/345/255/246.md +43 -0
  475. package/md_cg/whitebox_kb/knowledge//347/245/236/350/257/235/344/274/240/350/257/264.md +15 -0
  476. package/md_cg/whitebox_kb/knowledge//347/247/221/345/255/246/345/217/262.md +22 -0
  477. package/md_cg/whitebox_kb/knowledge//347/247/221/346/212/200/351/200/232/350/257/206.md +78 -0
  478. package/md_cg/whitebox_kb/knowledge//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  479. package/md_cg/whitebox_kb/knowledge//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  480. package/md_cg/whitebox_kb/knowledge//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  481. package/md_cg/whitebox_kb/knowledge//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  482. package/md_cg/whitebox_kb/knowledge//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +181 -0
  483. package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/217/262.md +43 -0
  484. package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +204 -0
  485. package/md_cg/whitebox_kb/knowledge//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  486. package/md_cg/whitebox_kb/knowledge//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
  487. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-Git.md +15 -0
  488. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-JS.md +15 -0
  489. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/346/246/202/345/277/265.md +15 -0
  490. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/350/257/255/350/250/200.md +120 -0
  491. package/md_cg/whitebox_kb/knowledge//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  492. package/md_cg/whitebox_kb/knowledge//347/275/221/347/273/234/345/256/211/345/205/250.md +34 -0
  493. package/md_cg/whitebox_kb/knowledge//350/200/203/345/217/244/345/270/270/350/257/206.md +64 -0
  494. package/md_cg/whitebox_kb/knowledge//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
  495. package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/345/220/215/345/256/266.md +15 -0
  496. package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/346/265/201/346/264/276.md +15 -0
  497. package/md_cg/whitebox_kb/knowledge//350/214/266/346/226/207/345/214/226.md +15 -0
  498. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +4265 -0
  499. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  500. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  501. package/md_cg/whitebox_kb/knowledge//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +373 -0
  502. package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/217/262.md +15 -0
  503. package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/270/270/350/257/206.md +15 -0
  504. package/md_cg/whitebox_kb/knowledge//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  505. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/201/245/345/272/267.md +15 -0
  506. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/270/270/350/257/206.md +15 -0
  507. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/347/247/221/345/255/246.md +22 -0
  508. package/md_cg/whitebox_kb/knowledge//350/277/221/344/270/226/346/234/215/351/245/260.md +15 -0
  509. package/md_cg/whitebox_kb/knowledge//351/200/273/350/276/221/345/255/246.md +14 -0
  510. package/md_cg/whitebox_kb/knowledge//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  511. package/md_cg/whitebox_kb/knowledge//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  512. package/md_cg/whitebox_kb/knowledge//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  513. package/md_cg/whitebox_kb/knowledge//351/235/236/351/201/227/350/211/272/346/234/257.md +43 -0
  514. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220.md +15 -0
  515. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/220/215/345/256/266.md +22 -0
  516. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/270/270/350/257/206.md +29 -0
  517. package/md_cg/whitebox_kb/knowledge//351/243/237/345/223/201/347/247/221/345/255/246.md +57 -0
  518. package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/345/270/270/350/257/206.md +29 -0
  519. package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/346/226/207/345/214/226.md +29 -0
  520. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  521. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  522. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  523. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  524. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  525. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +692 -0
  526. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +440 -0
  527. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  528. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  529. package/md_cg/whitebox_kb/knowledge//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  530. package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +244 -0
  531. package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +384 -0
  532. package/md_cg/whitebox_kb/seed_knowledge/__init__.py +2 -0
  533. package/md_cg/whitebox_kb/seed_knowledge/guardrail-charter.md +164 -0
  534. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  535. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  536. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
  537. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +161 -0
  538. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  539. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
  540. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  541. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  542. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
  543. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  544. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  545. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
  546. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +317 -0
  547. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +261 -0
  548. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  549. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  550. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  551. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  552. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1194 -0
  553. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  554. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  555. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +278 -0
  556. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  557. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  558. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  559. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  560. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  561. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +154 -0
  562. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  563. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
  564. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
  565. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  566. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +201 -0
  567. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  568. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  569. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
  570. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  571. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  572. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +333 -0
  573. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1124 -0
  574. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  575. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  576. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  577. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
  578. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +362 -0
  579. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +81 -0
  580. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  581. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  582. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  583. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  584. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +119 -0
  585. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
  586. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  587. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  588. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  589. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +234 -0
  590. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  591. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  592. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1166 -0
  593. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +217 -0
  594. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  595. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  596. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  597. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  598. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +141 -0
  599. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
  600. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  601. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  602. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  603. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  604. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  605. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +149 -0
  606. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  607. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  608. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  609. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  610. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1302 -0
  611. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  612. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  613. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  614. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  615. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1018 -0
  616. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  617. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  618. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  619. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  620. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  621. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  622. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  623. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  624. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
  625. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
  626. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  627. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
  628. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  629. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
  630. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +698 -0
  631. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  632. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  633. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +226 -0
  634. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  635. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  636. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  637. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  638. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
  639. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  640. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  641. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  642. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
  643. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +365 -0
  644. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +269 -0
  645. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  646. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  647. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  648. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +157 -0
  649. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
  650. package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.3.md +4620 -0
  651. package/md_cg/whitebox_kb/wisdom/__init__.py +6 -0
  652. package/md_cg/whitebox_kb/wisdom/__pycache__/browser_units.cpython-310.pyc +0 -0
  653. package/md_cg/whitebox_kb/wisdom/__pycache__/chat_engine.cpython-310.pyc +0 -0
  654. package/md_cg/whitebox_kb/wisdom/__pycache__/code_compose.cpython-310.pyc +0 -0
  655. package/md_cg/whitebox_kb/wisdom/__pycache__/compiler_code_units.cpython-310.pyc +0 -0
  656. package/md_cg/whitebox_kb/wisdom/__pycache__/condition_frame.cpython-310.pyc +0 -0
  657. package/md_cg/whitebox_kb/wisdom/__pycache__/condition_kb.cpython-310.pyc +0 -0
  658. package/md_cg/whitebox_kb/wisdom/__pycache__/danmaku_audit.cpython-310.pyc +0 -0
  659. package/md_cg/whitebox_kb/wisdom/__pycache__/graph_db_units.cpython-310.pyc +0 -0
  660. package/md_cg/whitebox_kb/wisdom/__pycache__/net_units.cpython-310.pyc +0 -0
  661. package/md_cg/whitebox_kb/wisdom/__pycache__/neural_retrieve.cpython-310.pyc +0 -0
  662. package/md_cg/whitebox_kb/wisdom/__pycache__/os_units.cpython-310.pyc +0 -0
  663. package/md_cg/whitebox_kb/wisdom/__pycache__/python_code_units.cpython-310.pyc +0 -0
  664. package/md_cg/whitebox_kb/wisdom/__pycache__/route_memory.cpython-310.pyc +0 -0
  665. package/md_cg/whitebox_kb/wisdom/__pycache__/semantic_translate.cpython-310.pyc +0 -0
  666. package/md_cg/whitebox_kb/wisdom/__pycache__/verifier.cpython-310.pyc +0 -0
  667. package/md_cg/whitebox_kb/wisdom/__pycache__/verify_answer.cpython-310.pyc +0 -0
  668. package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_book.cpython-310.pyc +0 -0
  669. package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_cloud.cpython-310.pyc +0 -0
  670. package/md_cg/whitebox_kb/wisdom/answer_spec_anchor.py +87 -0
  671. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +26 -0
  672. package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -0
  673. package/md_cg/whitebox_kb/wisdom/card_validator.py +223 -0
  674. package/md_cg/whitebox_kb/wisdom/causal_discover.py +313 -0
  675. package/md_cg/whitebox_kb/wisdom/chat.html +185 -0
  676. package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -0
  677. package/md_cg/whitebox_kb/wisdom/code_compose.py +730 -0
  678. package/md_cg/whitebox_kb/wisdom/code_qa.py +119 -0
  679. package/md_cg/whitebox_kb/wisdom/code_route_bridge.py +90 -0
  680. package/md_cg/whitebox_kb/wisdom/code_solidified.json +6196 -0
  681. package/md_cg/whitebox_kb/wisdom/code_test_runner.py +217 -0
  682. package/md_cg/whitebox_kb/wisdom/codegraph_white.py +312 -0
  683. package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -0
  684. package/md_cg/whitebox_kb/wisdom/compiler_compose.py +160 -0
  685. package/md_cg/whitebox_kb/wisdom/compose_engine.py +1633 -0
  686. package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -0
  687. package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -0
  688. package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -0
  689. package/md_cg/whitebox_kb/wisdom/condition_vm.py +264 -0
  690. package/md_cg/whitebox_kb/wisdom/conflict_map.json +4446 -0
  691. package/md_cg/whitebox_kb/wisdom/core/compiler.py +301 -0
  692. package/md_cg/whitebox_kb/wisdom/core/condition_vm.py +298 -0
  693. package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -0
  694. package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -0
  695. package/md_cg/whitebox_kb/wisdom/core/parser.py +1065 -0
  696. package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -0
  697. package/md_cg/whitebox_kb/wisdom/csre.py +256 -0
  698. package/md_cg/whitebox_kb/wisdom/csre_lexicon_index.npz +0 -0
  699. package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -0
  700. package/md_cg/whitebox_kb/wisdom/danmaku_bridge.py +141 -0
  701. package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6418 -0
  702. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1951 -0
  703. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1297 -0
  704. package/md_cg/whitebox_kb/wisdom/docs/codegraph_ref_rating.md +52 -0
  705. package/md_cg/whitebox_kb/wisdom/docs/daoti_absorb_analysis.md +54 -0
  706. package/md_cg/whitebox_kb/wisdom/docs/dsh_memory_v030_stable.md +34 -0
  707. package/md_cg/whitebox_kb/wisdom/docs/github_absorb_analysis.md +71 -0
  708. package/md_cg/whitebox_kb/wisdom/docs/gliding_horse_absorb_analysis.md +47 -0
  709. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph.md +61 -0
  710. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +60 -0
  711. package/md_cg/whitebox_kb/wisdom/docs/whitebox_code_rating_202609.md +43 -0
  712. package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/346/235/241/344/273/266/350/267/257/347/224/261/345/233/276_CCG/350/256/276/350/256/241.md +150 -0
  713. package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/350/257/255/344/271/211/346/235/241/344/273/266/345/215/217/350/256/256.md +650 -0
  714. package/md_cg/whitebox_kb/wisdom/docs//345/261/200/351/203/250/346/234/200/344/274/230/344/270/216/346/203/205/347/273/252/345/201/217/345/245/275_/347/220/206/350/256/272/345/267/245/347/250/213.md +97 -0
  715. package/md_cg/whitebox_kb/wisdom/docs//346/226/271/345/220/221/346/200/247/346/212/211/346/213/251_/350/207/252/344/270/276vs/350/207/252/350/277/255/344/273/243.md +81 -0
  716. package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242AGI/346/236/266/346/236/204/346/216/242/347/264/242_/346/226/207/346/241/243/350/247/204/345/210/222.md +51 -0
  717. package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242/346/217/222/344/273/266/345/210/206/347/261/273/345/210/206/346/236/220.md +67 -0
  718. package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/346/234/254/345/234/260/346/240/241/351/252/214/345/231/250_ZeroLLM_Verifier.md +276 -0
  719. package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/350/207/252/344/270/276/347/254/254/345/205/255/351/230/266/346/256/265_/346/224/266/345/256/230/346/200/273/347/273/223.md +1207 -0
  720. package/md_cg/whitebox_kb/wisdom/ds_compose.py +177 -0
  721. package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -0
  722. package/md_cg/whitebox_kb/wisdom/graph_qa.py +123 -0
  723. package/md_cg/whitebox_kb/wisdom/human_observer_knowledge.json +43 -0
  724. package/md_cg/whitebox_kb/wisdom/knowledge_points.py +234 -0
  725. package/md_cg/whitebox_kb/wisdom/merge_subgraph.py +178 -0
  726. package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +475 -0
  727. package/md_cg/whitebox_kb/wisdom/mini_python.py +958 -0
  728. package/md_cg/whitebox_kb/wisdom/multilang_ir.py +124 -0
  729. package/md_cg/whitebox_kb/wisdom/navigate.py +248 -0
  730. package/md_cg/whitebox_kb/wisdom/net_units.py +2895 -0
  731. package/md_cg/whitebox_kb/wisdom/neural_index.json +3032 -0
  732. package/md_cg/whitebox_kb/wisdom/neural_index.npz +0 -0
  733. package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -0
  734. package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -0
  735. package/md_cg/whitebox_kb/wisdom/pattern_separation.py +223 -0
  736. package/md_cg/whitebox_kb/wisdom/prereq_map.json +365 -0
  737. package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -0
  738. package/md_cg/whitebox_kb/wisdom/role_compose.py +268 -0
  739. package/md_cg/whitebox_kb/wisdom/role_solidified.json +8 -0
  740. package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -0
  741. package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -0
  742. package/md_cg/whitebox_kb/wisdom/se_compose.py +137 -0
  743. package/md_cg/whitebox_kb/wisdom/semantic_translate.py +4050 -0
  744. package/md_cg/whitebox_kb/wisdom/snr_dashboard.py +219 -0
  745. package/md_cg/whitebox_kb/wisdom/snr_report.json +41 -0
  746. package/md_cg/whitebox_kb/wisdom/spatial_closure.py +96 -0
  747. package/md_cg/whitebox_kb/wisdom/spatial_qa.py +182 -0
  748. package/md_cg/whitebox_kb/wisdom/status_terms.json +21 -0
  749. package/md_cg/whitebox_kb/wisdom/task_discipline.json +43 -0
  750. package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -0
  751. package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -0
  752. package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -0
  753. package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -0
  754. package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -0
  755. package/md_cg/whitebox_kb/wisdom/test_navigate_self_bootstrap.py +69 -0
  756. package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -0
  757. package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4367 -0
  758. package/md_cg/whitebox_kb/wisdom/verifier.py +1012 -0
  759. package/md_cg/whitebox_kb/wisdom/verify_answer.py +116 -0
  760. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
  761. package/md_cg/whitebox_kb/wisdom/wisdom_book.py +2582 -0
  762. package/md_cg/whitebox_kb/wisdom/wisdom_cloud.py +479 -0
  763. package/md_cg/whitebox_kb/wisdom/wisdom_ui.html +863 -0
  764. package/package.json +28 -10
  765. package/skills/README.md +108 -0
  766. package/skills/plugin.json +52 -0
  767. package/skills/skills/analyze-type-infer/SKILL.md +45 -0
  768. package/skills/skills/browser-02898b15/SKILL.md +45 -0
  769. package/skills/skills/browser-03b04f98/SKILL.md +45 -0
  770. package/skills/skills/browser-0754386d/SKILL.md +45 -0
  771. package/skills/skills/browser-093c03ab/SKILL.md +45 -0
  772. package/skills/skills/browser-09e60b35/SKILL.md +45 -0
  773. package/skills/skills/browser-0ab4f2db/SKILL.md +45 -0
  774. package/skills/skills/browser-0c7f88d6/SKILL.md +45 -0
  775. package/skills/skills/browser-0f598430/SKILL.md +45 -0
  776. package/skills/skills/browser-0fd64fa5/SKILL.md +45 -0
  777. package/skills/skills/browser-17906c62/SKILL.md +45 -0
  778. package/skills/skills/browser-18f823e2/SKILL.md +45 -0
  779. package/skills/skills/browser-1bafe81c/SKILL.md +45 -0
  780. package/skills/skills/browser-1f9ab1f0/SKILL.md +45 -0
  781. package/skills/skills/browser-1fdb5852/SKILL.md +45 -0
  782. package/skills/skills/browser-21b0359c/SKILL.md +45 -0
  783. package/skills/skills/browser-22e8de36/SKILL.md +45 -0
  784. package/skills/skills/browser-24163519/SKILL.md +45 -0
  785. package/skills/skills/browser-2471a991/SKILL.md +45 -0
  786. package/skills/skills/browser-25afee4d/SKILL.md +45 -0
  787. package/skills/skills/browser-283a91bd/SKILL.md +45 -0
  788. package/skills/skills/browser-2895ff52/SKILL.md +45 -0
  789. package/skills/skills/browser-2cc1da58/SKILL.md +45 -0
  790. package/skills/skills/browser-3189fe6f/SKILL.md +45 -0
  791. package/skills/skills/browser-31f2b08f/SKILL.md +45 -0
  792. package/skills/skills/browser-37b8339e/SKILL.md +45 -0
  793. package/skills/skills/browser-396ec3a6/SKILL.md +45 -0
  794. package/skills/skills/browser-3df2f904/SKILL.md +45 -0
  795. package/skills/skills/browser-43154cec/SKILL.md +45 -0
  796. package/skills/skills/browser-434b74b8/SKILL.md +45 -0
  797. package/skills/skills/browser-440d4398/SKILL.md +45 -0
  798. package/skills/skills/browser-44d7f183/SKILL.md +45 -0
  799. package/skills/skills/browser-4d6c0788/SKILL.md +45 -0
  800. package/skills/skills/browser-50fecd89/SKILL.md +45 -0
  801. package/skills/skills/browser-555c0626/SKILL.md +45 -0
  802. package/skills/skills/browser-57312d24/SKILL.md +45 -0
  803. package/skills/skills/browser-59a0ada4/SKILL.md +45 -0
  804. package/skills/skills/browser-5a455aeb/SKILL.md +45 -0
  805. package/skills/skills/browser-5ae7623a/SKILL.md +45 -0
  806. package/skills/skills/browser-5dac60b6/SKILL.md +45 -0
  807. package/skills/skills/browser-5e5f1396/SKILL.md +45 -0
  808. package/skills/skills/browser-5ebb01dd/SKILL.md +45 -0
  809. package/skills/skills/browser-5f5453f9/SKILL.md +45 -0
  810. package/skills/skills/browser-5f90f58c/SKILL.md +45 -0
  811. package/skills/skills/browser-609362ee/SKILL.md +45 -0
  812. package/skills/skills/browser-60aefeeb/SKILL.md +45 -0
  813. package/skills/skills/browser-6636d49c/SKILL.md +45 -0
  814. package/skills/skills/browser-6cfcb6db/SKILL.md +45 -0
  815. package/skills/skills/browser-6e1c1158/SKILL.md +45 -0
  816. package/skills/skills/browser-7008e942/SKILL.md +45 -0
  817. package/skills/skills/browser-716cd26c/SKILL.md +45 -0
  818. package/skills/skills/browser-720ce1a1/SKILL.md +45 -0
  819. package/skills/skills/browser-77a97b43/SKILL.md +45 -0
  820. package/skills/skills/browser-7bb4871d/SKILL.md +45 -0
  821. package/skills/skills/browser-7be57bbe/SKILL.md +45 -0
  822. package/skills/skills/browser-7da433f3/SKILL.md +45 -0
  823. package/skills/skills/browser-7e96fe1d/SKILL.md +45 -0
  824. package/skills/skills/browser-7f9cefec/SKILL.md +45 -0
  825. package/skills/skills/browser-80224e71/SKILL.md +45 -0
  826. package/skills/skills/browser-81345ecd/SKILL.md +45 -0
  827. package/skills/skills/browser-822cfa44/SKILL.md +45 -0
  828. package/skills/skills/browser-853690c0/SKILL.md +45 -0
  829. package/skills/skills/browser-85553126/SKILL.md +45 -0
  830. package/skills/skills/browser-87b0ce80/SKILL.md +45 -0
  831. package/skills/skills/browser-900c4484/SKILL.md +45 -0
  832. package/skills/skills/browser-910405c4/SKILL.md +45 -0
  833. package/skills/skills/browser-95fd3c86/SKILL.md +45 -0
  834. package/skills/skills/browser-97a14ca3/SKILL.md +45 -0
  835. package/skills/skills/browser-9de10895/SKILL.md +45 -0
  836. package/skills/skills/browser-9e4914a7/SKILL.md +45 -0
  837. package/skills/skills/browser-a280ec64/SKILL.md +45 -0
  838. package/skills/skills/browser-a2d9b0b0/SKILL.md +45 -0
  839. package/skills/skills/browser-a372edeb/SKILL.md +45 -0
  840. package/skills/skills/browser-a4c793a4/SKILL.md +45 -0
  841. package/skills/skills/browser-a681d0c2/SKILL.md +45 -0
  842. package/skills/skills/browser-a7a2b0c1/SKILL.md +45 -0
  843. package/skills/skills/browser-a990e68e/SKILL.md +45 -0
  844. package/skills/skills/browser-aaac4eec/SKILL.md +45 -0
  845. package/skills/skills/browser-ae6586bb/SKILL.md +45 -0
  846. package/skills/skills/browser-afa4091f/SKILL.md +45 -0
  847. package/skills/skills/browser-b4c8cf65/SKILL.md +45 -0
  848. package/skills/skills/browser-b501767c/SKILL.md +45 -0
  849. package/skills/skills/browser-bcd4288d/SKILL.md +45 -0
  850. package/skills/skills/browser-bfad66a5/SKILL.md +45 -0
  851. package/skills/skills/browser-c45cbfe9/SKILL.md +45 -0
  852. package/skills/skills/browser-c4dd6078/SKILL.md +45 -0
  853. package/skills/skills/browser-c879eb0b/SKILL.md +45 -0
  854. package/skills/skills/browser-c92ac01b/SKILL.md +45 -0
  855. package/skills/skills/browser-cb179242/SKILL.md +45 -0
  856. package/skills/skills/browser-cc7d3d6d/SKILL.md +45 -0
  857. package/skills/skills/browser-cf3c47f0/SKILL.md +45 -0
  858. package/skills/skills/browser-cf9f812e/SKILL.md +45 -0
  859. package/skills/skills/browser-d462581c/SKILL.md +45 -0
  860. package/skills/skills/browser-d5fa0b7f/SKILL.md +45 -0
  861. package/skills/skills/browser-d72e225b/SKILL.md +45 -0
  862. package/skills/skills/browser-df1a919e/SKILL.md +45 -0
  863. package/skills/skills/browser-e84565c1/SKILL.md +45 -0
  864. package/skills/skills/browser-e947a564/SKILL.md +45 -0
  865. package/skills/skills/browser-ea9b2b8e/SKILL.md +45 -0
  866. package/skills/skills/browser-f5ffc6d9/SKILL.md +45 -0
  867. package/skills/skills/browser-f75a4418/SKILL.md +45 -0
  868. package/skills/skills/browser-f8f2966e/SKILL.md +45 -0
  869. package/skills/skills/browser-fa65fa2d/SKILL.md +45 -0
  870. package/skills/skills/browser-faac8812/SKILL.md +45 -0
  871. package/skills/skills/browser-ff94a671/SKILL.md +45 -0
  872. package/skills/skills/check-name-real/SKILL.md +45 -0
  873. package/skills/skills/compile-assign/SKILL.md +45 -0
  874. package/skills/skills/compile-expr-tree/SKILL.md +45 -0
  875. package/skills/skills/compile-full-pipeline/SKILL.md +45 -0
  876. package/skills/skills/compile-func-def/SKILL.md +45 -0
  877. package/skills/skills/compile-if-then/SKILL.md +45 -0
  878. package/skills/skills/compile-logic-expr/SKILL.md +45 -0
  879. package/skills/skills/compile-recursive/SKILL.md +45 -0
  880. package/skills/skills/compile-scope/SKILL.md +45 -0
  881. package/skills/skills/compile-type-check/SKILL.md +45 -0
  882. package/skills/skills/compile-while/SKILL.md +45 -0
  883. package/skills/skills/compiler-0010c4bf/SKILL.md +45 -0
  884. package/skills/skills/compiler-0355bffb/SKILL.md +45 -0
  885. package/skills/skills/compiler-0361708a/SKILL.md +45 -0
  886. package/skills/skills/compiler-054a0414/SKILL.md +45 -0
  887. package/skills/skills/compiler-05a1691a/SKILL.md +45 -0
  888. package/skills/skills/compiler-05eeed1e/SKILL.md +45 -0
  889. package/skills/skills/compiler-0622a1f6/SKILL.md +45 -0
  890. package/skills/skills/compiler-08b54217/SKILL.md +45 -0
  891. package/skills/skills/compiler-0a62b70c/SKILL.md +45 -0
  892. package/skills/skills/compiler-0ab24d00/SKILL.md +45 -0
  893. package/skills/skills/compiler-0e093688/SKILL.md +45 -0
  894. package/skills/skills/compiler-0e82b966/SKILL.md +45 -0
  895. package/skills/skills/compiler-0ee9b9b9/SKILL.md +45 -0
  896. package/skills/skills/compiler-0f3787e6/SKILL.md +45 -0
  897. package/skills/skills/compiler-1028685f/SKILL.md +45 -0
  898. package/skills/skills/compiler-11897630/SKILL.md +45 -0
  899. package/skills/skills/compiler-16661b9b/SKILL.md +45 -0
  900. package/skills/skills/compiler-1f722303/SKILL.md +45 -0
  901. package/skills/skills/compiler-25be1262/SKILL.md +45 -0
  902. package/skills/skills/compiler-2a76ba07/SKILL.md +45 -0
  903. package/skills/skills/compiler-2dbea54a/SKILL.md +45 -0
  904. package/skills/skills/compiler-2df52f16/SKILL.md +45 -0
  905. package/skills/skills/compiler-2ec2c9d2/SKILL.md +45 -0
  906. package/skills/skills/compiler-2f8c8f39/SKILL.md +45 -0
  907. package/skills/skills/compiler-38378ac7/SKILL.md +45 -0
  908. package/skills/skills/compiler-39457d2e/SKILL.md +45 -0
  909. package/skills/skills/compiler-39fb5926/SKILL.md +45 -0
  910. package/skills/skills/compiler-47f4fbfa/SKILL.md +45 -0
  911. package/skills/skills/compiler-4a8cd1f1/SKILL.md +45 -0
  912. package/skills/skills/compiler-4b230b6b/SKILL.md +45 -0
  913. package/skills/skills/compiler-4cbbda95/SKILL.md +45 -0
  914. package/skills/skills/compiler-4d5a68ff/SKILL.md +45 -0
  915. package/skills/skills/compiler-56dc9bdd/SKILL.md +45 -0
  916. package/skills/skills/compiler-57e76ebe/SKILL.md +45 -0
  917. package/skills/skills/compiler-61ff016b/SKILL.md +45 -0
  918. package/skills/skills/compiler-63eae588/SKILL.md +45 -0
  919. package/skills/skills/compiler-64c4224b/SKILL.md +45 -0
  920. package/skills/skills/compiler-66377955/SKILL.md +45 -0
  921. package/skills/skills/compiler-674ab4f6/SKILL.md +45 -0
  922. package/skills/skills/compiler-6af76fd6/SKILL.md +45 -0
  923. package/skills/skills/compiler-6d979db2/SKILL.md +45 -0
  924. package/skills/skills/compiler-6de326c0/SKILL.md +45 -0
  925. package/skills/skills/compiler-6f1c0eea/SKILL.md +45 -0
  926. package/skills/skills/compiler-724d6c9b/SKILL.md +45 -0
  927. package/skills/skills/compiler-7690177f/SKILL.md +45 -0
  928. package/skills/skills/compiler-7b229a7d/SKILL.md +45 -0
  929. package/skills/skills/compiler-7f471b3a/SKILL.md +45 -0
  930. package/skills/skills/compiler-815cad08/SKILL.md +45 -0
  931. package/skills/skills/compiler-83c61634/SKILL.md +45 -0
  932. package/skills/skills/compiler-8c798c81/SKILL.md +45 -0
  933. package/skills/skills/compiler-8dd747ac/SKILL.md +45 -0
  934. package/skills/skills/compiler-90324d0a/SKILL.md +45 -0
  935. package/skills/skills/compiler-94b8d72d/SKILL.md +45 -0
  936. package/skills/skills/compiler-94f12231/SKILL.md +45 -0
  937. package/skills/skills/compiler-95937c16/SKILL.md +45 -0
  938. package/skills/skills/compiler-98a5625b/SKILL.md +45 -0
  939. package/skills/skills/compiler-98b4c42f/SKILL.md +45 -0
  940. package/skills/skills/compiler-98e3894a/SKILL.md +45 -0
  941. package/skills/skills/compiler-9bdfe4b8/SKILL.md +45 -0
  942. package/skills/skills/compiler-9d9b4e83/SKILL.md +45 -0
  943. package/skills/skills/compiler-9f7be5ad/SKILL.md +45 -0
  944. package/skills/skills/compiler-a6daf076/SKILL.md +45 -0
  945. package/skills/skills/compiler-a7995a0c/SKILL.md +45 -0
  946. package/skills/skills/compiler-a8399248/SKILL.md +45 -0
  947. package/skills/skills/compiler-aabbd099/SKILL.md +45 -0
  948. package/skills/skills/compiler-afe169d8/SKILL.md +45 -0
  949. package/skills/skills/compiler-b0678bda/SKILL.md +45 -0
  950. package/skills/skills/compiler-b09bd196/SKILL.md +45 -0
  951. package/skills/skills/compiler-b1396e23/SKILL.md +45 -0
  952. package/skills/skills/compiler-b9b31ce0/SKILL.md +45 -0
  953. package/skills/skills/compiler-c10264a7/SKILL.md +45 -0
  954. package/skills/skills/compiler-cb1e8e4b/SKILL.md +45 -0
  955. package/skills/skills/compiler-ccafd438/SKILL.md +45 -0
  956. package/skills/skills/compiler-cda9c262/SKILL.md +45 -0
  957. package/skills/skills/compiler-ce648068/SKILL.md +45 -0
  958. package/skills/skills/compiler-cf5776a4/SKILL.md +45 -0
  959. package/skills/skills/compiler-d974e5d3/SKILL.md +45 -0
  960. package/skills/skills/compiler-e3979fd3/SKILL.md +45 -0
  961. package/skills/skills/compiler-eb1cf2b5/SKILL.md +45 -0
  962. package/skills/skills/compiler-ecb30d5b/SKILL.md +45 -0
  963. package/skills/skills/compiler-f8c8b24b/SKILL.md +45 -0
  964. package/skills/skills/compiler-f99fedbe/SKILL.md +45 -0
  965. package/skills/skills/compiler-fa8ff5f7/SKILL.md +45 -0
  966. package/skills/skills/compiler-fe1b058d/SKILL.md +45 -0
  967. package/skills/skills/designer-perspective/SKILL.md +157 -0
  968. package/skills/skills/designer-perspective/references/01-observation-position.md +66 -0
  969. package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -0
  970. package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -0
  971. package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -0
  972. package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -0
  973. package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
  974. package/skills/skills/designer-perspective/scripts/designer.py +527 -0
  975. package/skills/skills/designer-perspective/tests/cases.jsonl +17 -0
  976. package/skills/skills/designer-perspective/tests/selftest.py +60 -0
  977. package/skills/skills/graph-04cd431b/SKILL.md +45 -0
  978. package/skills/skills/graph-06e2b1f2/SKILL.md +45 -0
  979. package/skills/skills/graph-0de12477/SKILL.md +45 -0
  980. package/skills/skills/graph-0e564e68/SKILL.md +45 -0
  981. package/skills/skills/graph-10d58a7b/SKILL.md +45 -0
  982. package/skills/skills/graph-12cd830a/SKILL.md +45 -0
  983. package/skills/skills/graph-185f2cd2/SKILL.md +45 -0
  984. package/skills/skills/graph-19a6a301/SKILL.md +45 -0
  985. package/skills/skills/graph-1b266557/SKILL.md +45 -0
  986. package/skills/skills/graph-1b707621/SKILL.md +45 -0
  987. package/skills/skills/graph-1d73b597/SKILL.md +45 -0
  988. package/skills/skills/graph-2041fa98/SKILL.md +45 -0
  989. package/skills/skills/graph-2461bc41/SKILL.md +45 -0
  990. package/skills/skills/graph-2465dff8/SKILL.md +45 -0
  991. package/skills/skills/graph-2508389f/SKILL.md +45 -0
  992. package/skills/skills/graph-276d554d/SKILL.md +45 -0
  993. package/skills/skills/graph-299f4a32/SKILL.md +45 -0
  994. package/skills/skills/graph-2d455cd8/SKILL.md +45 -0
  995. package/skills/skills/graph-2fddf701/SKILL.md +45 -0
  996. package/skills/skills/graph-33385442/SKILL.md +45 -0
  997. package/skills/skills/graph-34a1dba7/SKILL.md +45 -0
  998. package/skills/skills/graph-3721be1c/SKILL.md +45 -0
  999. package/skills/skills/graph-3755dbc9/SKILL.md +45 -0
  1000. package/skills/skills/graph-37a45d4b/SKILL.md +45 -0
  1001. package/skills/skills/graph-3a4a984c/SKILL.md +45 -0
  1002. package/skills/skills/graph-3aa4c941/SKILL.md +45 -0
  1003. package/skills/skills/graph-3b69a528/SKILL.md +45 -0
  1004. package/skills/skills/graph-3bc2eb69/SKILL.md +45 -0
  1005. package/skills/skills/graph-3d255ed4/SKILL.md +45 -0
  1006. package/skills/skills/graph-3d34961d/SKILL.md +45 -0
  1007. package/skills/skills/graph-3e18a380/SKILL.md +45 -0
  1008. package/skills/skills/graph-3f920bf3/SKILL.md +45 -0
  1009. package/skills/skills/graph-40b7bf61/SKILL.md +45 -0
  1010. package/skills/skills/graph-42187d5d/SKILL.md +45 -0
  1011. package/skills/skills/graph-4361c60e/SKILL.md +45 -0
  1012. package/skills/skills/graph-44e56113/SKILL.md +45 -0
  1013. package/skills/skills/graph-4b363727/SKILL.md +45 -0
  1014. package/skills/skills/graph-52e6e216/SKILL.md +45 -0
  1015. package/skills/skills/graph-53fbfef5/SKILL.md +45 -0
  1016. package/skills/skills/graph-54ac2988/SKILL.md +45 -0
  1017. package/skills/skills/graph-580dadcd/SKILL.md +45 -0
  1018. package/skills/skills/graph-5ca34baa/SKILL.md +45 -0
  1019. package/skills/skills/graph-5cb7fbdf/SKILL.md +45 -0
  1020. package/skills/skills/graph-5f894c05/SKILL.md +45 -0
  1021. package/skills/skills/graph-656e7bd4/SKILL.md +45 -0
  1022. package/skills/skills/graph-6dc48231/SKILL.md +45 -0
  1023. package/skills/skills/graph-7186924a/SKILL.md +45 -0
  1024. package/skills/skills/graph-72ce5342/SKILL.md +45 -0
  1025. package/skills/skills/graph-7376a24e/SKILL.md +45 -0
  1026. package/skills/skills/graph-7412a7cb/SKILL.md +45 -0
  1027. package/skills/skills/graph-7becedf0/SKILL.md +45 -0
  1028. package/skills/skills/graph-7c38fbf3/SKILL.md +45 -0
  1029. package/skills/skills/graph-7dc36de7/SKILL.md +45 -0
  1030. package/skills/skills/graph-7fe49de7/SKILL.md +45 -0
  1031. package/skills/skills/graph-80d82194/SKILL.md +45 -0
  1032. package/skills/skills/graph-85bf101e/SKILL.md +45 -0
  1033. package/skills/skills/graph-8650548b/SKILL.md +45 -0
  1034. package/skills/skills/graph-86583b09/SKILL.md +45 -0
  1035. package/skills/skills/graph-8727827c/SKILL.md +45 -0
  1036. package/skills/skills/graph-873fb505/SKILL.md +45 -0
  1037. package/skills/skills/graph-89b11de0/SKILL.md +45 -0
  1038. package/skills/skills/graph-8d7b569b/SKILL.md +45 -0
  1039. package/skills/skills/graph-8e920d5d/SKILL.md +45 -0
  1040. package/skills/skills/graph-8eb38e3d/SKILL.md +45 -0
  1041. package/skills/skills/graph-94582f69/SKILL.md +45 -0
  1042. package/skills/skills/graph-947355f7/SKILL.md +45 -0
  1043. package/skills/skills/graph-9507aff7/SKILL.md +45 -0
  1044. package/skills/skills/graph-95b86a8b/SKILL.md +45 -0
  1045. package/skills/skills/graph-96b85e1f/SKILL.md +45 -0
  1046. package/skills/skills/graph-97b22f09/SKILL.md +45 -0
  1047. package/skills/skills/graph-9833cfda/SKILL.md +45 -0
  1048. package/skills/skills/graph-9aa8a3f4/SKILL.md +45 -0
  1049. package/skills/skills/graph-9f6665c0/SKILL.md +45 -0
  1050. package/skills/skills/graph-a125d282/SKILL.md +45 -0
  1051. package/skills/skills/graph-a49ef4f0/SKILL.md +45 -0
  1052. package/skills/skills/graph-a5cd04ae/SKILL.md +45 -0
  1053. package/skills/skills/graph-add9a63b/SKILL.md +45 -0
  1054. package/skills/skills/graph-b00e3dc7/SKILL.md +45 -0
  1055. package/skills/skills/graph-b33a7662/SKILL.md +45 -0
  1056. package/skills/skills/graph-b76d15ee/SKILL.md +45 -0
  1057. package/skills/skills/graph-b77fa05a/SKILL.md +45 -0
  1058. package/skills/skills/graph-b912fc3b/SKILL.md +45 -0
  1059. package/skills/skills/graph-baf61b7c/SKILL.md +45 -0
  1060. package/skills/skills/graph-c1d5687b/SKILL.md +45 -0
  1061. package/skills/skills/graph-c407bbed/SKILL.md +45 -0
  1062. package/skills/skills/graph-c4676460/SKILL.md +45 -0
  1063. package/skills/skills/graph-c4a59d80/SKILL.md +45 -0
  1064. package/skills/skills/graph-c5815621/SKILL.md +45 -0
  1065. package/skills/skills/graph-ccad55f1/SKILL.md +45 -0
  1066. package/skills/skills/graph-d0677ce1/SKILL.md +45 -0
  1067. package/skills/skills/graph-d1289b39/SKILL.md +45 -0
  1068. package/skills/skills/graph-d15f39b1/SKILL.md +45 -0
  1069. package/skills/skills/graph-d40691ca/SKILL.md +45 -0
  1070. package/skills/skills/graph-d43b387a/SKILL.md +45 -0
  1071. package/skills/skills/graph-d4dd02f4/SKILL.md +45 -0
  1072. package/skills/skills/graph-d724ea18/SKILL.md +45 -0
  1073. package/skills/skills/graph-d74d36fd/SKILL.md +45 -0
  1074. package/skills/skills/graph-d9d3934c/SKILL.md +45 -0
  1075. package/skills/skills/graph-ddf563ff/SKILL.md +45 -0
  1076. package/skills/skills/graph-de00894f/SKILL.md +45 -0
  1077. package/skills/skills/graph-df1ebb63/SKILL.md +45 -0
  1078. package/skills/skills/graph-e2905c20/SKILL.md +45 -0
  1079. package/skills/skills/graph-e4f8cefd/SKILL.md +45 -0
  1080. package/skills/skills/graph-ea3150e7/SKILL.md +45 -0
  1081. package/skills/skills/graph-eb4ac7dd/SKILL.md +45 -0
  1082. package/skills/skills/graph-ee9f6dfa/SKILL.md +45 -0
  1083. package/skills/skills/graph-f055b2ea/SKILL.md +45 -0
  1084. package/skills/skills/graph-f1891287/SKILL.md +45 -0
  1085. package/skills/skills/graph-f1bb5aa1/SKILL.md +45 -0
  1086. package/skills/skills/graph-f56fa220/SKILL.md +45 -0
  1087. package/skills/skills/graph-f729034f/SKILL.md +45 -0
  1088. package/skills/skills/graph-f748a63f/SKILL.md +45 -0
  1089. package/skills/skills/graph-f8c4a59e/SKILL.md +45 -0
  1090. package/skills/skills/graph-fca3d129/SKILL.md +45 -0
  1091. package/skills/skills/graph-fd02d934/SKILL.md +45 -0
  1092. package/skills/skills/graph-fd51ece9/SKILL.md +45 -0
  1093. package/skills/skills/graph-fd6a81ab/SKILL.md +45 -0
  1094. package/skills/skills/lex-chinese-program/SKILL.md +45 -0
  1095. package/skills/skills/lex-dao-de-jing/SKILL.md +45 -0
  1096. package/skills/skills/lex-nine-chapters/SKILL.md +45 -0
  1097. package/skills/skills/net-02090d29/SKILL.md +45 -0
  1098. package/skills/skills/net-05937712/SKILL.md +45 -0
  1099. package/skills/skills/net-059d072f/SKILL.md +45 -0
  1100. package/skills/skills/net-080f6012/SKILL.md +45 -0
  1101. package/skills/skills/net-08a2fc88/SKILL.md +45 -0
  1102. package/skills/skills/net-0935edf1/SKILL.md +45 -0
  1103. package/skills/skills/net-0e7f91e4/SKILL.md +45 -0
  1104. package/skills/skills/net-0f2850e0/SKILL.md +45 -0
  1105. package/skills/skills/net-107ab486/SKILL.md +45 -0
  1106. package/skills/skills/net-111e79b0/SKILL.md +45 -0
  1107. package/skills/skills/net-126876c1/SKILL.md +45 -0
  1108. package/skills/skills/net-13eeb575/SKILL.md +45 -0
  1109. package/skills/skills/net-14102d54/SKILL.md +45 -0
  1110. package/skills/skills/net-14e9ad0d/SKILL.md +45 -0
  1111. package/skills/skills/net-184175d3/SKILL.md +45 -0
  1112. package/skills/skills/net-1da1c695/SKILL.md +45 -0
  1113. package/skills/skills/net-240a14ec/SKILL.md +45 -0
  1114. package/skills/skills/net-2784f98b/SKILL.md +45 -0
  1115. package/skills/skills/net-292ef917/SKILL.md +45 -0
  1116. package/skills/skills/net-3434e92f/SKILL.md +45 -0
  1117. package/skills/skills/net-35019e6b/SKILL.md +45 -0
  1118. package/skills/skills/net-3bbc6afb/SKILL.md +45 -0
  1119. package/skills/skills/net-3bdf9d9d/SKILL.md +45 -0
  1120. package/skills/skills/net-3dcb84d3/SKILL.md +45 -0
  1121. package/skills/skills/net-431cccf9/SKILL.md +45 -0
  1122. package/skills/skills/net-435a9f7f/SKILL.md +45 -0
  1123. package/skills/skills/net-4508101f/SKILL.md +45 -0
  1124. package/skills/skills/net-4585c9e7/SKILL.md +45 -0
  1125. package/skills/skills/net-479612a0/SKILL.md +45 -0
  1126. package/skills/skills/net-47a19838/SKILL.md +45 -0
  1127. package/skills/skills/net-4e36e1e3/SKILL.md +45 -0
  1128. package/skills/skills/net-509b8001/SKILL.md +45 -0
  1129. package/skills/skills/net-51930c5e/SKILL.md +45 -0
  1130. package/skills/skills/net-56dbd63f/SKILL.md +45 -0
  1131. package/skills/skills/net-57387462/SKILL.md +45 -0
  1132. package/skills/skills/net-5c115606/SKILL.md +45 -0
  1133. package/skills/skills/net-5d27f392/SKILL.md +45 -0
  1134. package/skills/skills/net-5f69c938/SKILL.md +45 -0
  1135. package/skills/skills/net-5fa6c13b/SKILL.md +45 -0
  1136. package/skills/skills/net-61580202/SKILL.md +45 -0
  1137. package/skills/skills/net-61926703/SKILL.md +45 -0
  1138. package/skills/skills/net-61f64fbc/SKILL.md +45 -0
  1139. package/skills/skills/net-6200f3b2/SKILL.md +45 -0
  1140. package/skills/skills/net-63c3eda3/SKILL.md +45 -0
  1141. package/skills/skills/net-66e6119b/SKILL.md +45 -0
  1142. package/skills/skills/net-68643014/SKILL.md +45 -0
  1143. package/skills/skills/net-686632aa/SKILL.md +45 -0
  1144. package/skills/skills/net-6967ff14/SKILL.md +45 -0
  1145. package/skills/skills/net-6996f499/SKILL.md +45 -0
  1146. package/skills/skills/net-6c3b02c2/SKILL.md +45 -0
  1147. package/skills/skills/net-6eb37f63/SKILL.md +45 -0
  1148. package/skills/skills/net-6f96c190/SKILL.md +45 -0
  1149. package/skills/skills/net-6fb27488/SKILL.md +45 -0
  1150. package/skills/skills/net-703559d0/SKILL.md +45 -0
  1151. package/skills/skills/net-706d2692/SKILL.md +45 -0
  1152. package/skills/skills/net-70a20e04/SKILL.md +45 -0
  1153. package/skills/skills/net-7376158c/SKILL.md +45 -0
  1154. package/skills/skills/net-74d647cb/SKILL.md +45 -0
  1155. package/skills/skills/net-74e8a576/SKILL.md +45 -0
  1156. package/skills/skills/net-7801c2c0/SKILL.md +45 -0
  1157. package/skills/skills/net-78cae54d/SKILL.md +45 -0
  1158. package/skills/skills/net-78ec0324/SKILL.md +45 -0
  1159. package/skills/skills/net-7998097c/SKILL.md +45 -0
  1160. package/skills/skills/net-7d81ae06/SKILL.md +45 -0
  1161. package/skills/skills/net-7eabbbc8/SKILL.md +45 -0
  1162. package/skills/skills/net-7ed4f2c5/SKILL.md +45 -0
  1163. package/skills/skills/net-80b56cd6/SKILL.md +45 -0
  1164. package/skills/skills/net-83447546/SKILL.md +45 -0
  1165. package/skills/skills/net-8361fe5b/SKILL.md +45 -0
  1166. package/skills/skills/net-85e3996c/SKILL.md +45 -0
  1167. package/skills/skills/net-8897d5cc/SKILL.md +45 -0
  1168. package/skills/skills/net-88ad93a6/SKILL.md +45 -0
  1169. package/skills/skills/net-8e6f359e/SKILL.md +45 -0
  1170. package/skills/skills/net-8edc4cdb/SKILL.md +45 -0
  1171. package/skills/skills/net-8f6169e9/SKILL.md +45 -0
  1172. package/skills/skills/net-91e00638/SKILL.md +45 -0
  1173. package/skills/skills/net-96c61a3c/SKILL.md +45 -0
  1174. package/skills/skills/net-99076a29/SKILL.md +45 -0
  1175. package/skills/skills/net-998f3641/SKILL.md +45 -0
  1176. package/skills/skills/net-a1d7228a/SKILL.md +45 -0
  1177. package/skills/skills/net-a74da501/SKILL.md +45 -0
  1178. package/skills/skills/net-ac57deb7/SKILL.md +45 -0
  1179. package/skills/skills/net-b22d2f2b/SKILL.md +45 -0
  1180. package/skills/skills/net-b2b29d8d/SKILL.md +45 -0
  1181. package/skills/skills/net-b2ddce5d/SKILL.md +45 -0
  1182. package/skills/skills/net-b4151e9a/SKILL.md +45 -0
  1183. package/skills/skills/net-b873d6f7/SKILL.md +45 -0
  1184. package/skills/skills/net-bd3d2d55/SKILL.md +45 -0
  1185. package/skills/skills/net-c2a3f019/SKILL.md +45 -0
  1186. package/skills/skills/net-c685b788/SKILL.md +45 -0
  1187. package/skills/skills/net-c6c1fd79/SKILL.md +45 -0
  1188. package/skills/skills/net-c74a1b5d/SKILL.md +45 -0
  1189. package/skills/skills/net-cdac702d/SKILL.md +45 -0
  1190. package/skills/skills/net-d12dff5c/SKILL.md +45 -0
  1191. package/skills/skills/net-d3747882/SKILL.md +45 -0
  1192. package/skills/skills/net-d5fefa59/SKILL.md +45 -0
  1193. package/skills/skills/net-d67ec725/SKILL.md +45 -0
  1194. package/skills/skills/net-d80c1c4c/SKILL.md +45 -0
  1195. package/skills/skills/net-d9cb43b0/SKILL.md +45 -0
  1196. package/skills/skills/net-da559517/SKILL.md +45 -0
  1197. package/skills/skills/net-db4f414e/SKILL.md +45 -0
  1198. package/skills/skills/net-dc09d67c/SKILL.md +45 -0
  1199. package/skills/skills/net-e2d185de/SKILL.md +45 -0
  1200. package/skills/skills/net-e2fc73f8/SKILL.md +45 -0
  1201. package/skills/skills/net-e33ef0c2/SKILL.md +45 -0
  1202. package/skills/skills/net-e346863c/SKILL.md +45 -0
  1203. package/skills/skills/net-e6b3389a/SKILL.md +45 -0
  1204. package/skills/skills/net-e9758fc0/SKILL.md +45 -0
  1205. package/skills/skills/net-e9a9747a/SKILL.md +45 -0
  1206. package/skills/skills/net-ea14aab8/SKILL.md +45 -0
  1207. package/skills/skills/net-eba92ac1/SKILL.md +45 -0
  1208. package/skills/skills/net-f29d91d2/SKILL.md +45 -0
  1209. package/skills/skills/net-f314dd0d/SKILL.md +45 -0
  1210. package/skills/skills/net-f332b629/SKILL.md +45 -0
  1211. package/skills/skills/net-f7df127c/SKILL.md +45 -0
  1212. package/skills/skills/net-fb9d8f5d/SKILL.md +45 -0
  1213. package/skills/skills/net-fdec2c86/SKILL.md +45 -0
  1214. package/skills/skills/os-0205cf9b/SKILL.md +45 -0
  1215. package/skills/skills/os-027dc9be/SKILL.md +45 -0
  1216. package/skills/skills/os-03c0d7d6/SKILL.md +45 -0
  1217. package/skills/skills/os-040b5505/SKILL.md +45 -0
  1218. package/skills/skills/os-06fa98ed/SKILL.md +45 -0
  1219. package/skills/skills/os-0854291c/SKILL.md +45 -0
  1220. package/skills/skills/os-0c7f14cb/SKILL.md +45 -0
  1221. package/skills/skills/os-0d855af2/SKILL.md +45 -0
  1222. package/skills/skills/os-0e87e997/SKILL.md +45 -0
  1223. package/skills/skills/os-0f8ed882/SKILL.md +45 -0
  1224. package/skills/skills/os-111ce1de/SKILL.md +45 -0
  1225. package/skills/skills/os-1234eb00/SKILL.md +45 -0
  1226. package/skills/skills/os-128f3820/SKILL.md +45 -0
  1227. package/skills/skills/os-15796db5/SKILL.md +45 -0
  1228. package/skills/skills/os-1898928a/SKILL.md +45 -0
  1229. package/skills/skills/os-192b8ca9/SKILL.md +45 -0
  1230. package/skills/skills/os-1d3bcf28/SKILL.md +45 -0
  1231. package/skills/skills/os-1f224514/SKILL.md +45 -0
  1232. package/skills/skills/os-26a4f86a/SKILL.md +45 -0
  1233. package/skills/skills/os-29c96147/SKILL.md +45 -0
  1234. package/skills/skills/os-2ea9a5ff/SKILL.md +45 -0
  1235. package/skills/skills/os-300ef22c/SKILL.md +45 -0
  1236. package/skills/skills/os-310dda5b/SKILL.md +45 -0
  1237. package/skills/skills/os-313ef4ed/SKILL.md +45 -0
  1238. package/skills/skills/os-329a2147/SKILL.md +45 -0
  1239. package/skills/skills/os-34ad4b62/SKILL.md +45 -0
  1240. package/skills/skills/os-350bc623/SKILL.md +45 -0
  1241. package/skills/skills/os-35ee1a30/SKILL.md +45 -0
  1242. package/skills/skills/os-3cd28220/SKILL.md +45 -0
  1243. package/skills/skills/os-3d84e0c9/SKILL.md +45 -0
  1244. package/skills/skills/os-3db42aac/SKILL.md +45 -0
  1245. package/skills/skills/os-3e0aff42/SKILL.md +45 -0
  1246. package/skills/skills/os-3e9405d2/SKILL.md +45 -0
  1247. package/skills/skills/os-41d14544/SKILL.md +45 -0
  1248. package/skills/skills/os-462f3ed4/SKILL.md +45 -0
  1249. package/skills/skills/os-485833fa/SKILL.md +45 -0
  1250. package/skills/skills/os-4a1cf781/SKILL.md +45 -0
  1251. package/skills/skills/os-4bf77933/SKILL.md +45 -0
  1252. package/skills/skills/os-4c14cec2/SKILL.md +45 -0
  1253. package/skills/skills/os-4f05d577/SKILL.md +45 -0
  1254. package/skills/skills/os-4f50ad0b/SKILL.md +45 -0
  1255. package/skills/skills/os-509a4596/SKILL.md +45 -0
  1256. package/skills/skills/os-512b1b6c/SKILL.md +45 -0
  1257. package/skills/skills/os-5192621b/SKILL.md +45 -0
  1258. package/skills/skills/os-55672763/SKILL.md +45 -0
  1259. package/skills/skills/os-5582bce6/SKILL.md +45 -0
  1260. package/skills/skills/os-5a096a1f/SKILL.md +45 -0
  1261. package/skills/skills/os-5ca15108/SKILL.md +45 -0
  1262. package/skills/skills/os-601663e1/SKILL.md +45 -0
  1263. package/skills/skills/os-607f1963/SKILL.md +45 -0
  1264. package/skills/skills/os-6158581b/SKILL.md +45 -0
  1265. package/skills/skills/os-62f9278b/SKILL.md +45 -0
  1266. package/skills/skills/os-63797b86/SKILL.md +45 -0
  1267. package/skills/skills/os-6a1fe224/SKILL.md +45 -0
  1268. package/skills/skills/os-6b0a68bf/SKILL.md +45 -0
  1269. package/skills/skills/os-6e5cee67/SKILL.md +45 -0
  1270. package/skills/skills/os-6fb1ff58/SKILL.md +45 -0
  1271. package/skills/skills/os-71389592/SKILL.md +45 -0
  1272. package/skills/skills/os-72e879a3/SKILL.md +45 -0
  1273. package/skills/skills/os-7598748a/SKILL.md +45 -0
  1274. package/skills/skills/os-80cc3283/SKILL.md +45 -0
  1275. package/skills/skills/os-819f3093/SKILL.md +45 -0
  1276. package/skills/skills/os-83670c2b/SKILL.md +45 -0
  1277. package/skills/skills/os-878c18b3/SKILL.md +45 -0
  1278. package/skills/skills/os-89ed7af1/SKILL.md +45 -0
  1279. package/skills/skills/os-8cb7279d/SKILL.md +45 -0
  1280. package/skills/skills/os-92276145/SKILL.md +45 -0
  1281. package/skills/skills/os-955c4d66/SKILL.md +45 -0
  1282. package/skills/skills/os-97aacf40/SKILL.md +45 -0
  1283. package/skills/skills/os-9b6ed02c/SKILL.md +45 -0
  1284. package/skills/skills/os-9c86a7a2/SKILL.md +45 -0
  1285. package/skills/skills/os-a13ce4aa/SKILL.md +45 -0
  1286. package/skills/skills/os-a568affe/SKILL.md +45 -0
  1287. package/skills/skills/os-abd48f17/SKILL.md +45 -0
  1288. package/skills/skills/os-b0416edc/SKILL.md +45 -0
  1289. package/skills/skills/os-b6509cac/SKILL.md +45 -0
  1290. package/skills/skills/os-b718657b/SKILL.md +45 -0
  1291. package/skills/skills/os-b776ade1/SKILL.md +45 -0
  1292. package/skills/skills/os-ba24fa08/SKILL.md +45 -0
  1293. package/skills/skills/os-bd1fc177/SKILL.md +45 -0
  1294. package/skills/skills/os-bda92711/SKILL.md +45 -0
  1295. package/skills/skills/os-c0fa71bd/SKILL.md +45 -0
  1296. package/skills/skills/os-c3d5cd44/SKILL.md +45 -0
  1297. package/skills/skills/os-c6b6a763/SKILL.md +45 -0
  1298. package/skills/skills/os-c7661eb1/SKILL.md +45 -0
  1299. package/skills/skills/os-c76b5a43/SKILL.md +45 -0
  1300. package/skills/skills/os-c7d35a30/SKILL.md +45 -0
  1301. package/skills/skills/os-c980a25d/SKILL.md +45 -0
  1302. package/skills/skills/os-c9f8df6e/SKILL.md +45 -0
  1303. package/skills/skills/os-cc49ef2f/SKILL.md +45 -0
  1304. package/skills/skills/os-cd9e686a/SKILL.md +45 -0
  1305. package/skills/skills/os-cfa66a1b/SKILL.md +45 -0
  1306. package/skills/skills/os-d237e500/SKILL.md +45 -0
  1307. package/skills/skills/os-d39ef086/SKILL.md +45 -0
  1308. package/skills/skills/os-d4f9e813/SKILL.md +45 -0
  1309. package/skills/skills/os-d97915c0/SKILL.md +45 -0
  1310. package/skills/skills/os-da0aadde/SKILL.md +45 -0
  1311. package/skills/skills/os-da482caf/SKILL.md +45 -0
  1312. package/skills/skills/os-dd4ff45e/SKILL.md +45 -0
  1313. package/skills/skills/os-de0556c5/SKILL.md +45 -0
  1314. package/skills/skills/os-e0ad3364/SKILL.md +45 -0
  1315. package/skills/skills/os-e7612c68/SKILL.md +45 -0
  1316. package/skills/skills/os-ea444e45/SKILL.md +45 -0
  1317. package/skills/skills/os-ea6e7e0b/SKILL.md +45 -0
  1318. package/skills/skills/os-ebc34d83/SKILL.md +45 -0
  1319. package/skills/skills/os-ecbebbe3/SKILL.md +45 -0
  1320. package/skills/skills/os-ecfceae7/SKILL.md +45 -0
  1321. package/skills/skills/os-ed8de3a3/SKILL.md +45 -0
  1322. package/skills/skills/os-f69c0b08/SKILL.md +45 -0
  1323. package/skills/skills/os-f6ae6205/SKILL.md +45 -0
  1324. package/skills/skills/os-f9bf8dd4/SKILL.md +45 -0
  1325. package/skills/skills/os-fcdd828d/SKILL.md +45 -0
  1326. package/skills/skills/pylang-01b23f80/SKILL.md +45 -0
  1327. package/skills/skills/pylang-074fd698/SKILL.md +45 -0
  1328. package/skills/skills/pylang-0b490bb2/SKILL.md +45 -0
  1329. package/skills/skills/pylang-0ca7f08b/SKILL.md +45 -0
  1330. package/skills/skills/pylang-10ce3e91/SKILL.md +45 -0
  1331. package/skills/skills/pylang-15f76c64/SKILL.md +45 -0
  1332. package/skills/skills/pylang-1703046f/SKILL.md +45 -0
  1333. package/skills/skills/pylang-1aa3e939/SKILL.md +45 -0
  1334. package/skills/skills/pylang-1bed54cf/SKILL.md +45 -0
  1335. package/skills/skills/pylang-1dd35612/SKILL.md +45 -0
  1336. package/skills/skills/pylang-24273d7b/SKILL.md +45 -0
  1337. package/skills/skills/pylang-2853f59f/SKILL.md +45 -0
  1338. package/skills/skills/pylang-2a6bc16e/SKILL.md +45 -0
  1339. package/skills/skills/pylang-2ae78997/SKILL.md +45 -0
  1340. package/skills/skills/pylang-2bc88f4c/SKILL.md +45 -0
  1341. package/skills/skills/pylang-31f5b8db/SKILL.md +45 -0
  1342. package/skills/skills/pylang-36d178bc/SKILL.md +45 -0
  1343. package/skills/skills/pylang-38600583/SKILL.md +45 -0
  1344. package/skills/skills/pylang-38e8f9ff/SKILL.md +45 -0
  1345. package/skills/skills/pylang-395085ca/SKILL.md +45 -0
  1346. package/skills/skills/pylang-399b317e/SKILL.md +45 -0
  1347. package/skills/skills/pylang-39c72c78/SKILL.md +45 -0
  1348. package/skills/skills/pylang-3a659480/SKILL.md +45 -0
  1349. package/skills/skills/pylang-482be62b/SKILL.md +45 -0
  1350. package/skills/skills/pylang-486a1e94/SKILL.md +45 -0
  1351. package/skills/skills/pylang-49026041/SKILL.md +45 -0
  1352. package/skills/skills/pylang-4963b28a/SKILL.md +45 -0
  1353. package/skills/skills/pylang-4af9140e/SKILL.md +45 -0
  1354. package/skills/skills/pylang-4ca283f2/SKILL.md +45 -0
  1355. package/skills/skills/pylang-4ddf31f3/SKILL.md +45 -0
  1356. package/skills/skills/pylang-50614726/SKILL.md +45 -0
  1357. package/skills/skills/pylang-5102c069/SKILL.md +45 -0
  1358. package/skills/skills/pylang-521b1bf8/SKILL.md +45 -0
  1359. package/skills/skills/pylang-5880b7a1/SKILL.md +45 -0
  1360. package/skills/skills/pylang-61a9102d/SKILL.md +45 -0
  1361. package/skills/skills/pylang-621123dd/SKILL.md +45 -0
  1362. package/skills/skills/pylang-642cd625/SKILL.md +45 -0
  1363. package/skills/skills/pylang-65ca79b7/SKILL.md +45 -0
  1364. package/skills/skills/pylang-672df225/SKILL.md +45 -0
  1365. package/skills/skills/pylang-67d3368e/SKILL.md +45 -0
  1366. package/skills/skills/pylang-6be54340/SKILL.md +45 -0
  1367. package/skills/skills/pylang-70b2006f/SKILL.md +45 -0
  1368. package/skills/skills/pylang-70b215f1/SKILL.md +45 -0
  1369. package/skills/skills/pylang-730c3fe4/SKILL.md +45 -0
  1370. package/skills/skills/pylang-733c1286/SKILL.md +45 -0
  1371. package/skills/skills/pylang-79845f4d/SKILL.md +45 -0
  1372. package/skills/skills/pylang-7c4cc6f8/SKILL.md +45 -0
  1373. package/skills/skills/pylang-7c7193ad/SKILL.md +45 -0
  1374. package/skills/skills/pylang-7d86ab5d/SKILL.md +45 -0
  1375. package/skills/skills/pylang-7df8ca78/SKILL.md +45 -0
  1376. package/skills/skills/pylang-8182681d/SKILL.md +45 -0
  1377. package/skills/skills/pylang-81ad40ee/SKILL.md +45 -0
  1378. package/skills/skills/pylang-8283d7c0/SKILL.md +45 -0
  1379. package/skills/skills/pylang-82b73f3d/SKILL.md +45 -0
  1380. package/skills/skills/pylang-8404bbde/SKILL.md +45 -0
  1381. package/skills/skills/pylang-8584040d/SKILL.md +45 -0
  1382. package/skills/skills/pylang-85d8617b/SKILL.md +45 -0
  1383. package/skills/skills/pylang-886935a3/SKILL.md +45 -0
  1384. package/skills/skills/pylang-88ab2f96/SKILL.md +45 -0
  1385. package/skills/skills/pylang-8b6f071e/SKILL.md +45 -0
  1386. package/skills/skills/pylang-8d6ec58a/SKILL.md +45 -0
  1387. package/skills/skills/pylang-8fe98252/SKILL.md +45 -0
  1388. package/skills/skills/pylang-9018c39a/SKILL.md +45 -0
  1389. package/skills/skills/pylang-91277748/SKILL.md +45 -0
  1390. package/skills/skills/pylang-943b9dcb/SKILL.md +45 -0
  1391. package/skills/skills/pylang-961e9e43/SKILL.md +45 -0
  1392. package/skills/skills/pylang-962954d9/SKILL.md +45 -0
  1393. package/skills/skills/pylang-9dbd8e2b/SKILL.md +45 -0
  1394. package/skills/skills/pylang-a02eac31/SKILL.md +45 -0
  1395. package/skills/skills/pylang-a4d3d7b1/SKILL.md +45 -0
  1396. package/skills/skills/pylang-a7c3d0e2/SKILL.md +45 -0
  1397. package/skills/skills/pylang-a88db70d/SKILL.md +45 -0
  1398. package/skills/skills/pylang-ab7dddc2/SKILL.md +45 -0
  1399. package/skills/skills/pylang-ac2a4b38/SKILL.md +45 -0
  1400. package/skills/skills/pylang-afaf67c0/SKILL.md +45 -0
  1401. package/skills/skills/pylang-b00660e6/SKILL.md +45 -0
  1402. package/skills/skills/pylang-b4d7616d/SKILL.md +45 -0
  1403. package/skills/skills/pylang-b67b1878/SKILL.md +45 -0
  1404. package/skills/skills/pylang-b8040e1c/SKILL.md +45 -0
  1405. package/skills/skills/pylang-b880c6c6/SKILL.md +45 -0
  1406. package/skills/skills/pylang-b8d45f76/SKILL.md +45 -0
  1407. package/skills/skills/pylang-ba956e52/SKILL.md +45 -0
  1408. package/skills/skills/pylang-bb18b1f9/SKILL.md +45 -0
  1409. package/skills/skills/pylang-bb46f3f2/SKILL.md +45 -0
  1410. package/skills/skills/pylang-be55a094/SKILL.md +45 -0
  1411. package/skills/skills/pylang-beb47b63/SKILL.md +45 -0
  1412. package/skills/skills/pylang-c017681a/SKILL.md +45 -0
  1413. package/skills/skills/pylang-c1317cd9/SKILL.md +45 -0
  1414. package/skills/skills/pylang-c36fabf7/SKILL.md +45 -0
  1415. package/skills/skills/pylang-c42465ec/SKILL.md +45 -0
  1416. package/skills/skills/pylang-c5c76a12/SKILL.md +45 -0
  1417. package/skills/skills/pylang-c910ad31/SKILL.md +45 -0
  1418. package/skills/skills/pylang-ca9332cf/SKILL.md +45 -0
  1419. package/skills/skills/pylang-cce90fa0/SKILL.md +45 -0
  1420. package/skills/skills/pylang-cd4234a5/SKILL.md +45 -0
  1421. package/skills/skills/pylang-cf0fca1c/SKILL.md +45 -0
  1422. package/skills/skills/pylang-d2001e1f/SKILL.md +45 -0
  1423. package/skills/skills/pylang-d616eb28/SKILL.md +45 -0
  1424. package/skills/skills/pylang-d8962e66/SKILL.md +45 -0
  1425. package/skills/skills/pylang-db6214cd/SKILL.md +45 -0
  1426. package/skills/skills/pylang-dcde3040/SKILL.md +45 -0
  1427. package/skills/skills/pylang-dfad3dba/SKILL.md +45 -0
  1428. package/skills/skills/pylang-dfd5aac2/SKILL.md +45 -0
  1429. package/skills/skills/pylang-e1aa3818/SKILL.md +45 -0
  1430. package/skills/skills/pylang-e476915b/SKILL.md +45 -0
  1431. package/skills/skills/pylang-e88e31fd/SKILL.md +45 -0
  1432. package/skills/skills/pylang-ecd569d2/SKILL.md +45 -0
  1433. package/skills/skills/pylang-ecf27e0c/SKILL.md +45 -0
  1434. package/skills/skills/pylang-f124f0e6/SKILL.md +45 -0
  1435. package/skills/skills/pylang-f127a8d1/SKILL.md +45 -0
  1436. package/skills/skills/pylang-f2d6ec27/SKILL.md +45 -0
  1437. package/skills/skills/pylang-f2f40090/SKILL.md +45 -0
  1438. package/skills/skills/pylang-f4aa9e65/SKILL.md +45 -0
  1439. package/skills/skills/pylang-f4f820d4/SKILL.md +45 -0
  1440. package/skills/skills/pylang-f5b34833/SKILL.md +45 -0
  1441. package/skills/skills/pylang-f6ebb66e/SKILL.md +45 -0
  1442. package/skills/skills/pylang-f78bdcd7/SKILL.md +45 -0
  1443. package/skills/skills/pylang-f92bc49b/SKILL.md +45 -0
  1444. package/skills/skills/pylang-fd7595f0/SKILL.md +45 -0
  1445. package/skills/skills/pylang-fda87aa1/SKILL.md +45 -0
  1446. package/skills/skills/vm-arithmetic/SKILL.md +45 -0
  1447. package/skills/skills/vm-array-ops/SKILL.md +45 -0
  1448. package/skills/skills/vm-closure-call/SKILL.md +45 -0
  1449. package/skills/skills/vm-closure-create/SKILL.md +45 -0
  1450. package/skills/skills/vm-compare/SKILL.md +45 -0
  1451. package/skills/skills/vm-cond-jump/SKILL.md +45 -0
  1452. package/skills/skills/vm-cond-space/SKILL.md +45 -0
  1453. package/skills/skills/vm-exception/SKILL.md +45 -0
  1454. package/skills/skills/vm-func-call/SKILL.md +45 -0
  1455. package/skills/skills/vm-loop-run/SKILL.md +45 -0
  1456. package/skills/skills/vm-profiling/SKILL.md +45 -0
  1457. package/skills/skills/vm-refcount/SKILL.md +45 -0
  1458. package/skills/skills/vm-run-loop/SKILL.md +45 -0
  1459. package/skills/skills/vm-short-circuit/SKILL.md +45 -0
  1460. package/skills/skills/vm-stack-guard/SKILL.md +45 -0
  1461. package/skills/skills/vm-stack-ops/SKILL.md +45 -0
  1462. package/skills/skills/vm-trust-accum/SKILL.md +45 -0
  1463. package/src/bridge.ts +7 -7
  1464. package/src/hooks.ts +78 -27
  1465. package/src/index.ts +246 -66
  1466. package/src/lib/datapath.ts +112 -0
  1467. package/src/lib/mdcg_client.ts +329 -0
  1468. package/src/lib/roleplay_web.ts +932 -0
  1469. package/src/{llm_adapter.ts → lib/whitebox_llm.ts} +13 -7
  1470. package/src/tools.ts +41 -55
  1471. /package/src/{mutual.ts → lib/mutual.ts} +0 -0
@@ -0,0 +1,1272 @@
1
+ # -*- coding: utf-8 -*-
2
+ """真实库对齐(P32):CCG 回填 + 能力标签注入。
3
+
4
+ 为什么是「回填」而不是「重写」
5
+ ------------------------------
6
+ 迁移入库的历史节点里,条件信息**往往已经在 frontmatter 里**:
7
+ `condition_space`(四槽)、`non_applicable_conditions`、`verification_basis`、
8
+ `state_attributes.comment.*`。缺的只是把它们渲染成 CCG 正文行(`# 生效条件:…`
9
+ 等)。缺了正文行,`judge_qualification` 一律判 BLINDSPOT——节点从「可检索」
10
+ 掉到「不可判定」。
11
+
12
+ 回填 = 把**已声明的证据**渲染成 CCG 行。它不发明条件,只搬运已有声明。
13
+
14
+ 生效条件的来源链(本轮口径修正:观测位置 ≠ 生效条件)
15
+ ----------------------------------------------------
16
+ 生效条件**只能**来自两处,且优先成文声明:
17
+ ① `state_attributes.comment.生效条件`(人/流程写下的成文声明)
18
+ ② `nodefile.condition_space_text(frontmatter.condition_space)`(四槽合成)
19
+ 旧版曾回退到 `condition_space.observation_position` **单槽**,加前缀「观测位置:」
20
+ 冒充生效条件——那是把坐标的一维当成整条生效条件,真实库因此落了 109 条弱等价行。
21
+ 该回退**已删除**;四槽不齐 → 不写(部分槽不构成完整条件空间声明),转待补台账。
22
+ `fix_conditions_*` 三个函数用于清洗存量:把已落库的单槽冒充行**重渲染**为合规
23
+ 合成声明,或**删除并登记待补**——全程留痕、可回滚、幂等。
24
+
25
+ 纪律(对齐 consolidate 的固化纪律)
26
+ ----------------------------------
27
+ · 不猜测:字段只在**有来源**时才写;来源写进留痕 `basis`;无来源 → 跳过并计入
28
+ `unfillable`,绝不编造。
29
+ · 可预演:`plan()` 只出报表、不改盘;`apply()` 才写。默认只回填「补完即可判定」
30
+ 的节点,`partial`(补完仍不全)默认不写,除非显式 `include_partial=True`。
31
+ · 可留痕:每次写入记一条 `_backfill.jsonl`(字段 / 写入值 / 依据 / 批次 / 操作者)。
32
+ · 可回滚:`rollback()` 按留痕反向应用,且**只在当前值仍等于写入值**时撤销
33
+ (防覆盖后续人工修改),否则计入 `conflict` 跳过。
34
+ · fail-closed:密文节点一律跳过,**绝不解密回写**。
35
+
36
+ 能力标签注入
37
+ ------------
38
+ `cap:<op>` 标签让路由能返回建议能力名(`mcp_server` 读 frontmatter.tags 的
39
+ `cap:` 前缀)。匹配是**关键词启发式**(对标 `tokens.ALL_OPS` 工具名清单),
40
+ 不是语义推断:结果带 `matched_by`(命中的关键词)与 `confidence`,调用方据此
41
+ 判断可信度。只改 frontmatter.tags,不动正文。
42
+ """
43
+ from __future__ import annotations
44
+
45
+ import hashlib
46
+ import os
47
+ import time
48
+ from collections import OrderedDict
49
+
50
+ from . import crypto, nodefile, tokens
51
+ from .consolidate import _has_ccg_line, _upsert_ccg_line
52
+ from .fsutil import append_jsonl, read_jsonl
53
+ from .mdcos import MdCGOS, _ccg_field
54
+
55
+ # ---- 常量 ----------------------------------------------------------------
56
+
57
+ BACKFILL_LOG = "_backfill.jsonl"
58
+
59
+ # 负记忆层是「故意无条件」的(覆盖标记),派生脚手架不该再被回填成事实
60
+ SKIP_LAYERS = ("rejected", "unresolved", "goals")
61
+ # 推断脚手架 / 概念层不得回填:否则会污染锚点解析(见 predict.anchor_from_description)
62
+ SKIP_TAGS = ("gap_hint", "scene", "reconstructed", "concept", "insight")
63
+ # 记忆系统**内部脚手架层**(锚点解析 anchor / 自模型修订 self):不是用户知识,永不可回填;
64
+ # 被回填成事实会污染锚点解析与自模型(与 SKIP_LAYERS 同源理由)。crosscheck 亦复用之。
65
+ INTERNAL_LAYERS = ("anchor", "self")
66
+
67
+ # 验证基底枚举 → 可读声明(人/流程声明,不靠模型生成)
68
+ BASIS_TEXT = OrderedDict((
69
+ ("compiler", "编译器/静态检查通过"),
70
+ ("test", "单元测试/回归测试通过"),
71
+ ("measurement", "实测数据(benchmark / 采样)"),
72
+ ("formal_proof", "形式化证明"),
73
+ ("data", "数据/语料统计"),
74
+ # 来源一致性档(文科):文科知识非可复现的物理事实,以来源表述一致为足够基底
75
+ ("textbook", "依人教版教材表述一致(文科·来源一致性)"),
76
+ ("public_kb", "公开知识库条目一致(文科·来源一致性)"),
77
+ ("other", "人工评审或离线工序声明"),
78
+ ))
79
+ BASIS_ENUM_DEFAULT = "other"
80
+
81
+ BATCH_DEFAULT = "backfill"
82
+
83
+ #: 生效条件的**唯一结构化来源**:condition_space 四槽合成(见 nodefile)
84
+ BASIS_CONDITION_SYNTH = "frontmatter.condition_space(四槽合成)"
85
+ #: 旧口径残留标记:把单槽 observation_position 冒充成生效条件的留痕 basis
86
+ LEGACY_CONDITION_BASIS = "frontmatter.condition_space.observation_position"
87
+ #: 存量清洗批次的默认批次名
88
+ FIX_BATCH_DEFAULT = "cond_fix"
89
+
90
+ #: 槽名 → 人读标签(台账/报告用;与 nodefile.CONDITION_SLOTS 同源)
91
+ _SLOT_LABEL = dict(nodefile.CONDITION_SLOTS)
92
+
93
+ # 能力标签规则:cap → 关键词(小写,中文原样)。仅保留 ALL_OPS 里真实存在的 op。
94
+ _CAP_RULES_RAW = OrderedDict((
95
+ ("route", ("路由", "召回", "检索", "rank", "rrf", "route")),
96
+ ("export", ("导出", "灾备", "备份", "搬运", "export", "evidence_pack")),
97
+ ("ingest", ("摄取", "导入", "摄入", "ingest", "分派")),
98
+ ("session", ("会话", "续接", "上下文压缩", "session", "compact")),
99
+ ("maintain", ("维护", "重要性", "重算", "快照", "前馈", "模式分离", "recalc")),
100
+ ("consolidate", ("固化", "提升", "归纳", "聚类", "升格", "promote", "induce")),
101
+ ("insight", ("洞察", "情景重构", "盲区", "归因", "reconstruct", "outlook")),
102
+ ("whitebox", ("白箱", "资格判定", "裁决", "四态", "whitebox")),
103
+ ("verify", ("验证", "核验", "verdict")),
104
+ ("predict", ("预测", "趋势", "外推", "predict")),
105
+ ("causal", ("因果", "causal")),
106
+ ("metacognition", ("元认知", "metacognition")),
107
+ ("self_state", ("自我状态", "状态卡", "self_state")),
108
+ ("evolution", ("演化", "evolution", "账本")),
109
+ ("sustain", ("维生", "自愈", "心跳", "sustain")),
110
+ ("scrub", ("擦除", "去污", "scrub")),
111
+ ("protect", ("保护", "私有内容", "protect")),
112
+ ("forget", ("遗忘", "失效", "forget")),
113
+ ("link", ("蜂群", "对等", "信任", "link")),
114
+ ("identity", ("身份", "主体", "identity")),
115
+ ("goal", ("目标", "goal")),
116
+ ("recent", ("近期事件", "recent")),
117
+ ("theory", ("协议版本", "theory")),
118
+ ("consistency", ("一致性", "自洽", "consistency")),
119
+ ("ref", ("回读", "漂移", "悬空", "code_ref", "doc_ref")),
120
+ ("index_code", ("代码索引", "index_code")),
121
+ ("index_doc", ("文档索引", "章节索引", "index_doc")),
122
+ ))
123
+ # 只保留真实 op,未知 op 静默丢弃(避免注入无效能力名)
124
+ CAP_RULES = OrderedDict(
125
+ (cap, kws) for cap, kws in _CAP_RULES_RAW.items() if cap in tokens.ALL_OPS)
126
+
127
+
128
+ # ---- 通用工具 ------------------------------------------------------------
129
+
130
+ def _as_cg(x):
131
+ """接受 root 路径或已构造的 cg 实例——保持密级隔离与密钥上下文。"""
132
+ return MdCGOS(x) if isinstance(x, str) else x
133
+
134
+
135
+ def _as_text(v) -> str:
136
+ if isinstance(v, (list, tuple)):
137
+ return ";".join(str(x).strip() for x in v if str(x).strip())
138
+ if v in (None, ""):
139
+ return ""
140
+ return str(v).strip()
141
+
142
+
143
+ def _comment(fm: dict) -> dict:
144
+ st = (fm or {}).get("state_attributes")
145
+ c = st.get("comment") if isinstance(st, dict) else None
146
+ return c if isinstance(c, dict) else {}
147
+
148
+
149
+ def _ensure_comment(fm: dict) -> dict:
150
+ st = fm.get("state_attributes")
151
+ if not isinstance(st, dict):
152
+ st = {}
153
+ fm["state_attributes"] = st
154
+ c = st.get("comment")
155
+ if not isinstance(c, dict):
156
+ c = {}
157
+ st["comment"] = c
158
+ return c
159
+
160
+
161
+ def _node_id(e: dict) -> str:
162
+ return e.get("id") or os.path.basename(e.get("path") or "")[:-3]
163
+
164
+
165
+ def _condition_text(fm: dict) -> str:
166
+ """→ 条件空间四槽合成的生效条件声明;四槽不齐 → ""(不冒充)。
167
+
168
+ **唯一**的 condition_space → 生效条件 路径。旧版在此回退到
169
+ `observation_position` **单槽**加「观测位置:」前缀——那正是
170
+ 「观测位置 ≠ 生效条件」的污染源(真实库 109 条),已删除。
171
+ """
172
+ return nodefile.condition_space_text((fm or {}).get("condition_space"))
173
+
174
+
175
+ def _sha(s: str) -> str:
176
+ return hashlib.sha1((s or "").encode("utf-8")).hexdigest()[:12]
177
+
178
+
179
+ def _entry_id(batch: str, nid: str) -> str:
180
+ return hashlib.sha1(f"{batch}|{nid}".encode("utf-8")).hexdigest()[:12]
181
+
182
+
183
+ def _remove_ccg_line(content: str, field: str) -> str:
184
+ """删掉 `# <字段>:…` 整行(回滚用)。"""
185
+ keep = []
186
+ for ln in (content or "").split("\n"):
187
+ s = ln.strip().lstrip("#").strip()
188
+ name = s.split(":")[0].split(":")[0].strip()
189
+ if ln.strip().startswith("#") and name == field:
190
+ continue
191
+ keep.append(ln)
192
+ return "\n".join(keep)
193
+
194
+
195
+ def _log_path(cg) -> str:
196
+ return os.path.join(cg.root, BACKFILL_LOG)
197
+
198
+
199
+ # ---- 字段推导(唯一入口:只搬运已声明的证据) -----------------------------
200
+
201
+ def derive_fields(fm: dict, content: str, basis_text: str = None,
202
+ placeholder_out: list = None) -> dict:
203
+ """按**已有声明**推导可回填字段 → `{field: (value, basis)}`。
204
+
205
+ 无来源的字段不出现在结果里(不猜测)。
206
+ **占位标记(`骨架锚点`/`内容待填充`)同样不出现**——它不是已声明的事实;
207
+ 被丢弃的字段名记入 `placeholder_out`(可选出参),供报表区分
208
+ 「无来源」与「待填充」两种缺口。
209
+ """
210
+ c = _comment(fm)
211
+ st = fm.get("state_attributes")
212
+ st = st if isinstance(st, dict) else {}
213
+ ph = placeholder_out if placeholder_out is not None else []
214
+ out = {}
215
+
216
+ def _put(field, value, basis):
217
+ """有值且非占位标记才写出;占位值只记名,绝不渲染成事实。"""
218
+ if not value:
219
+ return
220
+ if nodefile.is_placeholder_text(value):
221
+ ph.append(field)
222
+ return
223
+ out[field] = (value, basis)
224
+
225
+ if not _has_ccg_line(content, "功能名"):
226
+ # 优先 state_attributes.name(迁移入库写入的规范功能名),回退 frontmatter.title
227
+ raw_name = st.get("name")
228
+ v = _as_text(raw_name) if isinstance(raw_name, (str, list, tuple)) else ""
229
+ src = "state_attributes.name"
230
+ if not v:
231
+ v, src = _as_text(fm.get("title")), "frontmatter.title"
232
+ _put("功能名", v, src)
233
+
234
+ if not _has_ccg_line(content, "生效条件"):
235
+ v = _as_text(c.get("生效条件") or c.get("适用条件"))
236
+ src = "state_attributes.comment.生效条件"
237
+ if not v:
238
+ # 结构化来源:整条条件空间声明的合成,**不是** observation_position 单槽
239
+ v, src = _condition_text(fm), BASIS_CONDITION_SYNTH
240
+ _put("生效条件", v, src)
241
+
242
+ if not _has_ccg_line(content, "子功能"):
243
+ _put("子功能", _as_text(c.get("子功能") or c.get("子内容")),
244
+ "state_attributes.comment.子功能")
245
+
246
+ if not _has_ccg_line(content, "执行"):
247
+ _put("执行", _as_text(c.get("执行") or c.get("执行方式")),
248
+ "state_attributes.comment.执行")
249
+
250
+ if not _has_ccg_line(content, "验证方式"):
251
+ v = _as_text(c.get("验证方式"))
252
+ src = "state_attributes.comment.验证方式"
253
+ if not v and nodefile.verification_basis_valid(fm):
254
+ vb = fm.get("verification_basis")
255
+ v, src = BASIS_TEXT.get(vb, ""), f"frontmatter.verification_basis={vb}"
256
+ if not v and basis_text:
257
+ v, src = basis_text, "declared.basis_text"
258
+ _put("验证方式", v, src)
259
+
260
+ if not _has_ccg_line(content, "不适用条件"):
261
+ _put("不适用条件",
262
+ _as_text(c.get("不适用条件") or fm.get("non_applicable_conditions")),
263
+ "state_attributes.comment/frontmatter.non_applicable_conditions")
264
+
265
+ return out
266
+
267
+
268
+ # ---- 节点筛选 ------------------------------------------------------------
269
+
270
+ def _readable_guard(cg, e) -> bool:
271
+ fn = getattr(cg, "_readable", None)
272
+ if not callable(fn):
273
+ return True
274
+ try:
275
+ return bool(fn(e))
276
+ except Exception: # noqa: BLE001
277
+ return False
278
+
279
+
280
+ def _classify(cg, e, nid, basis_text=None):
281
+ """→ (skip_reason, item);skip_reason 非空表示不参与回填。"""
282
+ fm, content = cg._read(e)
283
+ if fm is None:
284
+ return "unreadable", None
285
+ if crypto.is_encrypted(content):
286
+ return "locked", None
287
+ tags = fm.get("tags") or []
288
+ if e.get("layer") in SKIP_LAYERS or any(t in SKIP_TAGS for t in tags):
289
+ return "derived", None
290
+ cpl = nodefile.ccg_completeness(content)
291
+ if cpl["complete"]:
292
+ return "present", None
293
+ ph_fields = []
294
+ der = derive_fields(fm, content, basis_text=basis_text,
295
+ placeholder_out=ph_fields)
296
+ fill = {f: der[f] for f in der if not _has_ccg_line(content, f)}
297
+ required_missing = [f for f in nodefile.CCG_REQUIRED
298
+ if not _has_ccg_line(content, f)]
299
+ undeducible = [f for f in required_missing if f not in der]
300
+ if not fill:
301
+ # 无可写字段:区分「无来源」(unfillable)与「字段值全是待填充标记」
302
+ # (placeholder)——后者是空壳节点,须转待填充工单,而非静默计入无来源。
303
+ return ("placeholder" if ph_fields else "unfillable"), None
304
+ cls = "backfillable" if not undeducible else "partial"
305
+ # 待补台账:生效条件既不在正文、也推不出(四槽不全)→ 记缺失槽名。
306
+ # 这不是「无来源」而是**缺证据**:补不动者按裁定判 BLINDSPOT,绝不静默 ACCEPT。
307
+ cond_pending = []
308
+ if not _has_ccg_line(content, "生效条件") and "生效条件" not in der:
309
+ cond_pending = nodefile.condition_space_missing(fm.get("condition_space"))
310
+ return "", {
311
+ "id": nid, "layer": e.get("layer"), "class": cls,
312
+ "fill": {f: {"value": v, "basis": b} for f, (v, b) in fill.items()},
313
+ "missing_undeducible": undeducible,
314
+ "placeholder_fields": ph_fields,
315
+ "conditions_pending": cond_pending,
316
+ "before_ratio": cpl["ratio"],
317
+ }
318
+
319
+
320
+ def plan(x, layer=None, limit=None, ids=None, include_partial=False,
321
+ basis_text=None, prefix=None) -> dict:
322
+ """预演:产出可回填清单,不写盘。
323
+
324
+ `prefix`:按 id 前缀收窄范围(真实库用 `kp_`,与核对工单同一边界);
325
+ 内部 `anchor`/`self` 层一律出局(计入 `skipped_internal`)。
326
+ """
327
+ cg = _as_cg(x)
328
+ rep = {"root": cg.root, "dry_run": True, "action": "backfill",
329
+ "prefix": prefix, "nodes_scanned": 0, "skipped_locked": 0,
330
+ "skipped_derived": 0, "skipped_internal": 0,
331
+ "skipped_present": 0, "skipped_denied": 0, "unfillable": 0,
332
+ "skipped_placeholder": 0, "nodes_with_placeholder": 0,
333
+ "skipped_partial": 0, "targeted": 0,
334
+ # 待写节点中生效条件仍缺声明的数量(全库台账见 conditions_pending)
335
+ "targeted_missing_conditions": 0, "items": []}
336
+ want = set(ids) if ids else None
337
+ for nid, e in list((cg.index.get("nodes") or {}).items()):
338
+ if want is not None and nid not in want:
339
+ continue
340
+ if prefix and not str(nid).startswith(prefix):
341
+ continue
342
+ if layer and e.get("layer") != layer:
343
+ continue
344
+ if e.get("layer") in INTERNAL_LAYERS:
345
+ rep["skipped_internal"] += 1
346
+ continue
347
+ if not _readable_guard(cg, e):
348
+ rep["skipped_denied"] += 1
349
+ continue
350
+ rep["nodes_scanned"] += 1
351
+ reason, item = _classify(cg, e, nid, basis_text=basis_text)
352
+ if reason == "locked":
353
+ rep["skipped_locked"] += 1
354
+ continue
355
+ if reason == "derived":
356
+ rep["skipped_derived"] += 1
357
+ continue
358
+ if reason == "present":
359
+ rep["skipped_present"] += 1
360
+ continue
361
+ if reason == "unfillable":
362
+ rep["unfillable"] += 1
363
+ continue
364
+ if reason == "placeholder":
365
+ rep["skipped_placeholder"] += 1
366
+ continue
367
+ if item.get("placeholder_fields"):
368
+ rep["nodes_with_placeholder"] += 1
369
+ if item.get("conditions_pending"):
370
+ rep["targeted_missing_conditions"] += 1
371
+ if item["class"] == "partial" and not include_partial:
372
+ rep["skipped_partial"] += 1
373
+ continue
374
+ item["entry_id"] = _entry_id("backfill", nid)
375
+ rep["targeted"] += 1
376
+ if limit is None or len(rep["items"]) < limit:
377
+ rep["items"].append(item)
378
+ rep["planned_ids"] = [i["id"] for i in rep["items"]]
379
+ return rep
380
+
381
+
382
+ # ---- 回填写入 / 回滚 / 留痕 ----------------------------------------------
383
+
384
+ def apply(x, ids=None, entry_ids=None, layer=None, limit=None,
385
+ batch=BATCH_DEFAULT, include_partial=False, basis_text=None,
386
+ actor=None, prefix=None) -> dict:
387
+ """执行回填:逐节点改写 md,写 `_backfill.jsonl` 留痕。"""
388
+ cg = _as_cg(x)
389
+ batch = batch or BATCH_DEFAULT
390
+ p = plan(cg, layer=layer, limit=None, ids=ids, prefix=prefix,
391
+ include_partial=include_partial, basis_text=basis_text)
392
+ items = p["items"]
393
+ if entry_ids:
394
+ want = set(entry_ids)
395
+ items = [i for i in items if i["entry_id"] in want]
396
+ rep = {"root": cg.root, "dry_run": False, "action": "backfill",
397
+ "batch": batch, "actor": actor, "planned": len(items),
398
+ "written": 0, "skipped_drift": 0, "skipped_locked": 0,
399
+ "entry_ids": [], "by_field": {}}
400
+ for it in items:
401
+ if limit is not None and rep["written"] >= limit:
402
+ break
403
+ nid = it["id"]
404
+ e = cg.index["nodes"].get(nid)
405
+ if not e:
406
+ rep["skipped_drift"] += 1
407
+ continue
408
+ fm, content = cg._read(e)
409
+ if fm is None or crypto.is_encrypted(content):
410
+ rep["skipped_locked"] += 1
411
+ continue
412
+ # 预演到执行之间节点可能被改动:只写仍缺失的字段
413
+ todo = {f: d for f, d in it["fill"].items()
414
+ if not _has_ccg_line(content, f)}
415
+ if not todo:
416
+ rep["skipped_drift"] += 1
417
+ continue
418
+ comment0 = _comment(fm)
419
+ # 记录改写前的真相:rollback 必须「还原」而非「删除」——否则 comment
420
+ # 里原有的声明会被误删,导致回填不可重复(回滚不是真逆操作)。
421
+ prev_c = {f: comment0[f] for f in todo if f in comment0}
422
+ fm_before = {}
423
+ if "不适用条件" in todo:
424
+ fm_before["non_applicable_conditions"] = {
425
+ "had": "non_applicable_conditions" in fm,
426
+ "value": fm.get("non_applicable_conditions")}
427
+ if "验证方式" in todo and not nodefile.verification_basis_valid(fm):
428
+ fm_before["verification_basis"] = {
429
+ "had": "verification_basis" in fm,
430
+ "value": fm.get("verification_basis")}
431
+ comment = _ensure_comment(fm)
432
+ wid = _sha(f"{nid}|{batch}|{time.time()}")
433
+ applied = {}
434
+ for f, d in todo.items():
435
+ content = _upsert_ccg_line(content, f, d["value"])
436
+ comment[f] = d["value"]
437
+ if f == "不适用条件":
438
+ fm["non_applicable_conditions"] = [
439
+ s.strip() for s in d["value"].split(";") if s.strip()]
440
+ if f == "验证方式" and not nodefile.verification_basis_valid(fm):
441
+ fm["verification_basis"] = BASIS_ENUM_DEFAULT
442
+ applied[f] = {"after": d["value"], "basis": d["basis"],
443
+ "before": prev_c.get(f)}
444
+ rep["by_field"][f] = rep["by_field"].get(f, 0) + 1
445
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
446
+ durable=True)
447
+ append_jsonl(_log_path(cg), {
448
+ "action": "backfill", "ts": time.time(), "batch": batch,
449
+ "actor": actor, "entry_id": it["entry_id"], "write_id": wid,
450
+ "node": nid, "layer": e.get("layer"), "fields": applied,
451
+ "fm_before": fm_before,
452
+ "content_hash_after": _sha(content)})
453
+ rep["written"] += 1
454
+ rep["entry_ids"].append(it["entry_id"])
455
+ if rep["written"]:
456
+ cg.rebuild_index()
457
+ rep["plan_remaining"] = max(0, p["targeted"] - len(items))
458
+ return rep
459
+
460
+
461
+ def rollback(x, batch=None, entry_ids=None, actor=None) -> dict:
462
+ """按留痕反向应用:撤销本批次回填(当前值 ≠ 写入值时跳过,防覆盖)。"""
463
+ cg = _as_cg(x)
464
+ want = set(entry_ids) if entry_ids else None
465
+ rep = {"root": cg.root, "action": "backfill_rollback", "actor": actor,
466
+ "batch": batch, "reverted": 0, "conflict": 0, "missing": 0,
467
+ "fields_reverted": 0, "skipped_done": 0}
468
+ log = list(read_jsonl(_log_path(cg)) or [])
469
+ done = {r.get("write_id") for r in log
470
+ if r.get("action") == "backfill_rollback" and r.get("write_id")}
471
+ for rec in log:
472
+ if rec.get("action") != "backfill":
473
+ continue
474
+ if rec.get("write_id") and rec.get("write_id") in done:
475
+ rep["skipped_done"] += 1
476
+ continue
477
+ if batch and rec.get("batch") != batch:
478
+ continue
479
+ if want is not None and rec.get("entry_id") not in want:
480
+ continue
481
+ nid = rec.get("node")
482
+ e = cg.index["nodes"].get(nid)
483
+ if not e:
484
+ rep["missing"] += 1
485
+ continue
486
+ fm, content = cg._read(e)
487
+ if fm is None:
488
+ rep["missing"] += 1
489
+ continue
490
+ comment = _comment(fm)
491
+ reverted, conflicted = {}, []
492
+ for f, d in (rec.get("fields") or {}).items():
493
+ if _ccg_field(content, f) != d.get("after"):
494
+ conflicted.append(f) # 已被后续修改 → 不撤销
495
+ continue
496
+ content = _remove_ccg_line(content, f)
497
+ b = d.get("before")
498
+ if b is None:
499
+ comment.pop(f, None) # 原本就没有 → 删回「无」
500
+ else:
501
+ comment[f] = b # 原本有 → 还原原值(非删除)
502
+ reverted[f] = d.get("after")
503
+ if not reverted:
504
+ rep["conflict"] += 1
505
+ continue
506
+ for k, box in (rec.get("fm_before") or {}).items():
507
+ if box.get("had"):
508
+ fm[k] = box.get("value")
509
+ else:
510
+ fm.pop(k, None)
511
+ st = fm.get("state_attributes")
512
+ if isinstance(st, dict) and isinstance(st.get("comment"), dict) \
513
+ and not st["comment"]:
514
+ st.pop("comment", None)
515
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
516
+ durable=True)
517
+ append_jsonl(_log_path(cg), {
518
+ "action": "backfill_rollback", "ts": time.time(), "actor": actor,
519
+ "batch": rec.get("batch"), "entry_id": rec.get("entry_id"),
520
+ "write_id": rec.get("write_id"), "node": nid,
521
+ "reverted": list(reverted), "conflict": conflicted})
522
+ rep["reverted"] += 1
523
+ rep["fields_reverted"] += len(reverted)
524
+ if conflicted:
525
+ rep["conflict"] += 1
526
+ if rep["reverted"]:
527
+ cg.rebuild_index()
528
+ return rep
529
+
530
+
531
+ def history(x, limit=100, action=None, batch=None) -> dict:
532
+ cg = _as_cg(x)
533
+ recs = []
534
+ for rec in read_jsonl(_log_path(cg)) or []:
535
+ if action and rec.get("action") != action:
536
+ continue
537
+ if batch and rec.get("batch") != batch:
538
+ continue
539
+ recs.append(rec)
540
+ total = len(recs)
541
+ if limit is not None and limit >= 0:
542
+ recs = recs[-limit:]
543
+ return {"root": cg.root, "total": total, "returned": len(recs),
544
+ "records": recs}
545
+
546
+
547
+ # ---- 能力标签注入(关键词启发式) ----------------------------------------
548
+
549
+ def _cap_text(e, fm, content) -> str:
550
+ parts = [_as_text(fm.get("title")), e.get("id") or "",
551
+ " ".join(str(t) for t in (fm.get("tags") or []))]
552
+ for f in ("功能名", "生效条件", "子功能"):
553
+ v = _ccg_field(content, f)
554
+ if v:
555
+ parts.append(v)
556
+ parts.append((content or "")[:300])
557
+ return " ".join(parts).lower()
558
+
559
+
560
+ def cap_matches(text: str) -> list:
561
+ hits = []
562
+ for cap, kws in CAP_RULES.items():
563
+ m = [k for k in kws if k in text]
564
+ if m:
565
+ hits.append({"cap": cap, "matched_by": m,
566
+ "confidence": round(min(1.0, 0.4 + 0.2 * len(m)), 3)})
567
+ hits.sort(key=lambda h: (-h["confidence"], h["cap"]))
568
+ return hits
569
+
570
+
571
+ def cap_plan(x, layer=None, limit=None, ids=None, min_conf=0.5) -> dict:
572
+ """预演:按关键词启发式给出 `cap:<op>` 标签建议(含依据与置信度),不写盘。"""
573
+ cg = _as_cg(x)
574
+ rep = {"root": cg.root, "dry_run": True, "action": "cap",
575
+ "min_conf": min_conf, "nodes_scanned": 0, "skipped_locked": 0,
576
+ "skipped_present": 0, "skipped_denied": 0, "targeted": 0,
577
+ "items": []}
578
+ want = set(ids) if ids else None
579
+ for nid, e in list((cg.index.get("nodes") or {}).items()):
580
+ if want is not None and nid not in want:
581
+ continue
582
+ if layer and e.get("layer") != layer:
583
+ continue
584
+ if not _readable_guard(cg, e):
585
+ rep["skipped_denied"] += 1
586
+ continue
587
+ fm, content = cg._read(e)
588
+ if fm is None or crypto.is_encrypted(content):
589
+ rep["skipped_locked"] += 1
590
+ continue
591
+ rep["nodes_scanned"] += 1
592
+ have = set(t for t in (fm.get("tags") or []) if isinstance(t, str))
593
+ hits = [h for h in cap_matches(_cap_text(e, fm, content))
594
+ if h["confidence"] >= min_conf
595
+ and f"cap:{h['cap']}" not in have]
596
+ if not hits:
597
+ rep["skipped_present"] += 1
598
+ continue
599
+ item = {"id": nid, "layer": e.get("layer"), "caps": hits,
600
+ "entry_id": _entry_id("cap", nid)}
601
+ rep["targeted"] += 1
602
+ if limit is None or len(rep["items"]) < limit:
603
+ rep["items"].append(item)
604
+ rep["planned_ids"] = [i["id"] for i in rep["items"]]
605
+ return rep
606
+
607
+
608
+ def cap_apply(x, ids=None, entry_ids=None, layer=None, limit=None,
609
+ batch=BATCH_DEFAULT, min_conf=0.5, actor=None) -> dict:
610
+ """注入 `cap:<op>` 标签:只改 frontmatter.tags,不动正文。"""
611
+ cg = _as_cg(x)
612
+ batch = batch or BATCH_DEFAULT
613
+ p = cap_plan(cg, layer=layer, limit=None, ids=ids, min_conf=min_conf)
614
+ items = p["items"]
615
+ if entry_ids:
616
+ want = set(entry_ids)
617
+ items = [i for i in items if i["entry_id"] in want]
618
+ rep = {"root": cg.root, "dry_run": False, "action": "cap", "batch": batch,
619
+ "actor": actor, "min_conf": min_conf, "planned": len(items),
620
+ "written": 0, "skipped_locked": 0, "skipped_drift": 0,
621
+ "tags_added": 0, "entry_ids": []}
622
+ for it in items:
623
+ if limit is not None and rep["written"] >= limit:
624
+ break
625
+ nid = it["id"]
626
+ e = cg.index["nodes"].get(nid)
627
+ if not e:
628
+ rep["skipped_drift"] += 1
629
+ continue
630
+ fm, content = cg._read(e)
631
+ if fm is None or crypto.is_encrypted(content):
632
+ rep["skipped_locked"] += 1
633
+ continue
634
+ tags = list(fm.get("tags") or [])
635
+ added = [f"cap:{h['cap']}" for h in it["caps"] if f"cap:{h['cap']}" not in tags]
636
+ if not added:
637
+ rep["skipped_drift"] += 1
638
+ continue
639
+ fm["tags"] = tags + added
640
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
641
+ durable=True)
642
+ append_jsonl(_log_path(cg), {
643
+ "action": "cap", "ts": time.time(), "batch": batch, "actor": actor,
644
+ "entry_id": it["entry_id"], "write_id": _sha(f"cap|{nid}|{time.time()}"),
645
+ "node": nid, "layer": e.get("layer"),
646
+ "tags_added": added,
647
+ "evidence": {h["cap"]: h["matched_by"] for h in it["caps"]},
648
+ "confidence": {h["cap"]: h["confidence"] for h in it["caps"]}})
649
+ rep["written"] += 1
650
+ rep["tags_added"] += len(added)
651
+ rep["entry_ids"].append(it["entry_id"])
652
+ if rep["written"]:
653
+ cg.rebuild_index()
654
+ rep["plan_remaining"] = max(0, p["targeted"] - len(items))
655
+ return rep
656
+
657
+
658
+ def cap_rollback(x, batch=None, entry_ids=None, actor=None) -> dict:
659
+ """撤销 cap 注入:仅移除**仍在 tags 里**的 `cap:` 标签(防覆盖后续修改)。"""
660
+ cg = _as_cg(x)
661
+ want = set(entry_ids) if entry_ids else None
662
+ rep = {"root": cg.root, "action": "cap_rollback", "actor": actor,
663
+ "batch": batch, "reverted": 0, "conflict": 0, "missing": 0,
664
+ "tags_removed": 0, "skipped_done": 0}
665
+ log = list(read_jsonl(_log_path(cg)) or [])
666
+ done = {r.get("write_id") for r in log
667
+ if r.get("action") == "cap_rollback" and r.get("write_id")}
668
+ for rec in log:
669
+ if rec.get("action") != "cap":
670
+ continue
671
+ if rec.get("write_id") and rec.get("write_id") in done:
672
+ rep["skipped_done"] += 1
673
+ continue
674
+ if batch and rec.get("batch") != batch:
675
+ continue
676
+ if want is not None and rec.get("entry_id") not in want:
677
+ continue
678
+ nid, added = rec.get("node"), rec.get("tags_added") or []
679
+ e = cg.index["nodes"].get(nid)
680
+ if not e:
681
+ rep["missing"] += 1
682
+ continue
683
+ fm, content = cg._read(e)
684
+ if fm is None:
685
+ rep["missing"] += 1
686
+ continue
687
+ tags = list(fm.get("tags") or [])
688
+ removed = [t for t in added if t in tags]
689
+ if not removed:
690
+ rep["conflict"] += 1
691
+ continue
692
+ fm["tags"] = [t for t in tags if t not in set(removed)]
693
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
694
+ durable=True)
695
+ append_jsonl(_log_path(cg), {
696
+ "action": "cap_rollback", "ts": time.time(), "actor": actor,
697
+ "batch": rec.get("batch"), "entry_id": rec.get("entry_id"),
698
+ "write_id": rec.get("write_id"), "node": nid,
699
+ "tags_removed": removed})
700
+ rep["reverted"] += 1
701
+ rep["tags_removed"] += len(removed)
702
+ if rep["reverted"]:
703
+ cg.rebuild_index()
704
+ return rep
705
+
706
+
707
+ # ---- 豁免解除(ccg_exempt 分批摘除) --------------------------------------
708
+
709
+ EXEMPT_FLAG = "ccg_exempt"
710
+
711
+
712
+ def _exempt_ready(fm: dict, content: str):
713
+ """摘豁免前置条件 → `(ready, missing)`。
714
+
715
+ 硬约束(顺序依赖):证据未补齐就摘豁免,节点会从 DEFER **退化为 BLINDSPOT**,
716
+ 比现状更差。故要求「合法 `verification_basis`」+「5 要素齐备(含验证方式行)」
717
+ 同时成立才允许摘除。
718
+ """
719
+ miss = []
720
+ if not nodefile.verification_basis_valid(fm):
721
+ miss.append("verification_basis")
722
+ if not nodefile.ccg_completeness(content).get("complete"):
723
+ miss.append("ccg5")
724
+ return (not miss), miss
725
+
726
+
727
+ def exempt_plan(x, layer=None, limit=None, ids=None, require_ready=True,
728
+ sample=0, prefix=None) -> dict:
729
+ """预演:列出可摘 `ccg_exempt` 的节点(默认要求证据就绪),不写盘。
730
+
731
+ `sample=N` 时按 id 序等距抽取 N 个作为验收样本(确定性,重跑同一样本)。
732
+ `prefix`:按 id 前缀收窄范围(真实库用 `kp_`);内部 `anchor`/`self` 层出局。
733
+ """
734
+ cg = _as_cg(x)
735
+ rep = {"root": cg.root, "dry_run": True, "action": "exempt",
736
+ "require_ready": require_ready, "prefix": prefix, "nodes_scanned": 0,
737
+ "skipped_locked": 0, "skipped_denied": 0, "skipped_not_exempt": 0,
738
+ "skipped_internal": 0, "skipped_unready": 0, "unready_reasons": {},
739
+ "targeted": 0, "items": [], "sample": []}
740
+ want = set(ids) if ids else None
741
+ for nid, e in list((cg.index.get("nodes") or {}).items()):
742
+ if want is not None and nid not in want:
743
+ continue
744
+ if prefix and not str(nid).startswith(prefix):
745
+ continue
746
+ if layer and e.get("layer") != layer:
747
+ continue
748
+ if e.get("layer") in INTERNAL_LAYERS:
749
+ rep["skipped_internal"] += 1
750
+ continue
751
+ if not _readable_guard(cg, e):
752
+ rep["skipped_denied"] += 1
753
+ continue
754
+ fm, content = cg._read(e)
755
+ if fm is None or crypto.is_encrypted(content):
756
+ rep["skipped_locked"] += 1
757
+ continue
758
+ rep["nodes_scanned"] += 1
759
+ if not fm.get(EXEMPT_FLAG):
760
+ rep["skipped_not_exempt"] += 1
761
+ continue
762
+ ready, miss = _exempt_ready(fm, content)
763
+ if require_ready and not ready:
764
+ rep["skipped_unready"] += 1
765
+ for m in miss:
766
+ rep["unready_reasons"][m] = rep["unready_reasons"].get(m, 0) + 1
767
+ # 批量:直接过滤(报表已计数);显式点名:入列交由 apply 判定并留
768
+ # `exempt_skip` 记录——被点名的节点绝不静默丢弃。
769
+ if want is None:
770
+ continue
771
+ item = {"id": nid, "layer": e.get("layer"), "ready": ready,
772
+ "missing": miss, "basis": fm.get("verification_basis"),
773
+ "entry_id": _entry_id("exempt", nid)}
774
+ rep["targeted"] += 1
775
+ if limit is None or len(rep["items"]) < limit:
776
+ rep["items"].append(item)
777
+ rep["planned_ids"] = [i["id"] for i in rep["items"]]
778
+ if sample and rep["items"]:
779
+ ids_all = [i["id"] for i in rep["items"]]
780
+ k = min(int(sample), len(ids_all))
781
+ stride = max(1, len(ids_all) // k)
782
+ rep["sample"] = ids_all[::stride][:k]
783
+ return rep
784
+
785
+
786
+ def exempt_apply(x, ids=None, entry_ids=None, layer=None, limit=None,
787
+ batch=BATCH_DEFAULT, require_ready=True, actor=None,
788
+ prefix=None) -> dict:
789
+ """分批摘除 `ccg_exempt`(置 False 而非删键,便于反向还原)。
790
+
791
+ 就绪校验在**写入前**再查一次(plan 与 apply 之间可能被改动);
792
+ 不满足则计 `skipped_unready` 并留 `exempt_skip` 记录,绝不硬摘。
793
+ """
794
+ cg = _as_cg(x)
795
+ batch = batch or BATCH_DEFAULT
796
+ p = exempt_plan(cg, layer=layer, ids=ids, require_ready=require_ready,
797
+ prefix=prefix)
798
+ items = p["items"]
799
+ if entry_ids:
800
+ want = set(entry_ids)
801
+ items = [i for i in items if i["entry_id"] in want]
802
+ rep = {"root": cg.root, "dry_run": False, "action": "exempt", "batch": batch,
803
+ "actor": actor, "require_ready": require_ready, "planned": len(items),
804
+ "written": 0, "skipped_unready": 0, "skipped_locked": 0,
805
+ "skipped_drift": 0, "entry_ids": []}
806
+ for it in items:
807
+ if limit is not None and rep["written"] >= limit:
808
+ break
809
+ nid = it["id"]
810
+ e = cg.index["nodes"].get(nid)
811
+ if not e:
812
+ rep["skipped_drift"] += 1
813
+ continue
814
+ fm, content = cg._read(e)
815
+ if fm is None or crypto.is_encrypted(content):
816
+ rep["skipped_locked"] += 1
817
+ continue
818
+ if not fm.get(EXEMPT_FLAG):
819
+ rep["skipped_drift"] += 1
820
+ continue
821
+ ready, miss = _exempt_ready(fm, content)
822
+ if require_ready and not ready:
823
+ rep["skipped_unready"] += 1
824
+ append_jsonl(_log_path(cg), {
825
+ "action": "exempt_skip", "ts": time.time(), "batch": batch,
826
+ "actor": actor, "node": nid, "missing": miss})
827
+ continue
828
+ before = fm.get(EXEMPT_FLAG)
829
+ fm[EXEMPT_FLAG] = False
830
+ wid = _sha(f"exempt|{nid}|{time.time()}")
831
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
832
+ durable=True)
833
+ append_jsonl(_log_path(cg), {
834
+ "action": "exempt", "ts": time.time(), "batch": batch, "actor": actor,
835
+ "entry_id": it["entry_id"], "write_id": wid, "node": nid,
836
+ "layer": e.get("layer"), "exempt_before": before,
837
+ "basis": fm.get("verification_basis")})
838
+ rep["written"] += 1
839
+ rep["entry_ids"].append(it["entry_id"])
840
+ if rep["written"]:
841
+ cg.rebuild_index()
842
+ rep["plan_remaining"] = max(0, p["targeted"] - len(items))
843
+ return rep
844
+
845
+
846
+ def exempt_rollback(x, batch=None, entry_ids=None, actor=None) -> dict:
847
+ """反向还原 `ccg_exempt`:仅当当前仍为「已摘」状态时还原,否则计 conflict。"""
848
+ cg = _as_cg(x)
849
+ want = set(entry_ids) if entry_ids else None
850
+ rep = {"root": cg.root, "action": "exempt_rollback", "actor": actor,
851
+ "batch": batch, "reverted": 0, "conflict": 0, "missing": 0,
852
+ "skipped_done": 0}
853
+ log = list(read_jsonl(_log_path(cg)) or [])
854
+ done = {r.get("write_id") for r in log
855
+ if r.get("action") == "exempt_rollback" and r.get("write_id")}
856
+ for rec in log:
857
+ if rec.get("action") != "exempt":
858
+ continue
859
+ if rec.get("write_id") and rec.get("write_id") in done:
860
+ rep["skipped_done"] += 1
861
+ continue
862
+ if batch and rec.get("batch") != batch:
863
+ continue
864
+ if want is not None and rec.get("entry_id") not in want:
865
+ continue
866
+ nid = rec.get("node")
867
+ e = cg.index["nodes"].get(nid)
868
+ if not e:
869
+ rep["missing"] += 1
870
+ continue
871
+ fm, content = cg._read(e)
872
+ if fm is None:
873
+ rep["missing"] += 1
874
+ continue
875
+ if fm.get(EXEMPT_FLAG):
876
+ rep["conflict"] += 1
877
+ continue
878
+ fm[EXEMPT_FLAG] = rec.get("exempt_before", True)
879
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
880
+ durable=True)
881
+ append_jsonl(_log_path(cg), {
882
+ "action": "exempt_rollback", "ts": time.time(), "actor": actor,
883
+ "batch": rec.get("batch"), "entry_id": rec.get("entry_id"),
884
+ "write_id": rec.get("write_id"), "node": nid,
885
+ "exempt_restored": fm.get(EXEMPT_FLAG)})
886
+ rep["reverted"] += 1
887
+ if rep["reverted"]:
888
+ cg.rebuild_index()
889
+ return rep
890
+
891
+
892
+ # ---- 待补台账 / 存量清洗(生效条件口径修正) ------------------------------
893
+ #
894
+ # 背景:旧口径把 `condition_space.observation_position` 单槽加前缀「观测位置:」
895
+ # 当作生效条件写入(真实库 109 条)。观测位置 ≠ 生效条件——生效条件是**整条**
896
+ # 条件空间声明的合成。本段负责三件事:
897
+ # ① conditions_pending 只读台账:未声明且四槽推不出的节点
898
+ # ② fix_conditions_* 清洗:冒充行重渲染为合规声明,或删除并登记待补
899
+ # ③ verify_conditions 只读复算:验收指标 legacy_position == 0
900
+
901
+
902
+ def conditions_pending(x, prefix=None, layer=None, limit=None) -> dict:
903
+ """只读台账:列出「未声明生效条件、且四槽推不出」的节点及其缺失槽。
904
+
905
+ 生效条件已成为必填项(`CCG_REQUIRED`),但存量节点未必有足够声明可补。
906
+ 这类节点**不能静默判 ACCEPT**:进本台账等待后续补充;确实补不动者由资格
907
+ 判定落 BLINDSPOT(而不是被「常用条件默认省略」掩盖)。本函数不写盘。
908
+ """
909
+ cg = _as_cg(x)
910
+ rep = {"root": cg.root, "dry_run": True, "action": "conditions_pending",
911
+ "prefix": prefix, "nodes_scanned": 0, "skipped_locked": 0,
912
+ "skipped_denied": 0, "skipped_internal": 0, "skipped_derived": 0,
913
+ "declared": 0, "derivable": 0, "pending": 0,
914
+ "by_missing": {}, "items": []}
915
+ for nid, e in list((cg.index.get("nodes") or {}).items()):
916
+ if prefix and not str(nid).startswith(prefix):
917
+ continue
918
+ if layer and e.get("layer") != layer:
919
+ continue
920
+ if e.get("layer") in INTERNAL_LAYERS:
921
+ rep["skipped_internal"] += 1
922
+ continue
923
+ if not _readable_guard(cg, e):
924
+ rep["skipped_denied"] += 1
925
+ continue
926
+ fm, content = cg._read(e)
927
+ if fm is None or crypto.is_encrypted(content):
928
+ rep["skipped_locked"] += 1
929
+ continue
930
+ if (e.get("layer") in SKIP_LAYERS
931
+ or any(t in SKIP_TAGS for t in (fm.get("tags") or []))):
932
+ rep["skipped_derived"] += 1
933
+ continue
934
+ rep["nodes_scanned"] += 1
935
+ if _has_ccg_line(content, "生效条件"):
936
+ rep["declared"] += 1
937
+ continue
938
+ if "生效条件" in derive_fields(fm, content):
939
+ # 有来源、只是还没接线 → 属于「待回填」,不是缺证据
940
+ rep["derivable"] += 1
941
+ continue
942
+ cs = fm.get("condition_space")
943
+ miss = nodefile.condition_space_missing(cs)
944
+ if not isinstance(cs, dict) or len(miss) == len(nodefile.CONDITION_SLOTS):
945
+ key = "无条件空间声明"
946
+ else:
947
+ key = "缺" + "+".join(_SLOT_LABEL.get(k, k) for k in miss)
948
+ rep["by_missing"][key] = rep["by_missing"].get(key, 0) + 1
949
+ rep["pending"] += 1
950
+ if limit is None or len(rep["items"]) < limit:
951
+ rep["items"].append({
952
+ "id": nid, "layer": e.get("layer"), "missing_slots": miss,
953
+ "missing_text": key,
954
+ "fallback": "补写生效条件;确实补不动 → 判 BLINDSPOT"})
955
+ if limit is not None:
956
+ rep["items"] = rep["items"][:limit]
957
+ return rep
958
+
959
+
960
+ def _legacy_condition_records(cg) -> dict:
961
+ """→ {node: {after, original, …}}:我们**自己写下的**单槽冒充行(真源 = 留痕)。
962
+
963
+ 只有留痕里 `basis == LEGACY_CONDITION_BASIS` 的行才敢自动改——人写下的
964
+ 「观测位置:…」声明不在其列(宁可漏改,不可误改)。已被回滚的写入剔除;
965
+ 同一节点多次写入时以最后一次为准。
966
+ """
967
+ log = list(read_jsonl(_log_path(cg)) or [])
968
+ undone = {r.get("write_id") for r in log
969
+ if r.get("action") == "backfill_rollback" and r.get("write_id")}
970
+ out = {}
971
+ for rec in log:
972
+ if rec.get("action") != "backfill":
973
+ continue
974
+ if rec.get("write_id") and rec.get("write_id") in undone:
975
+ continue
976
+ f = (rec.get("fields") or {}).get("生效条件")
977
+ if not isinstance(f, dict) or f.get("basis") != LEGACY_CONDITION_BASIS:
978
+ continue
979
+ nid = rec.get("node")
980
+ if not nid:
981
+ continue
982
+ out[nid] = {"after": f.get("after"), "original": f.get("before"),
983
+ "write_id": rec.get("write_id"), "batch": rec.get("batch")}
984
+ return out
985
+
986
+
987
+ def fix_conditions_plan(x, prefix=None, limit=None) -> dict:
988
+ """预演:清洗存量单槽冒充行。不写盘。
989
+
990
+ 逐条判定(都要求「当前值仍等于我们当初写入的值」,否则计 `conflict`、不碰):
991
+ · 四槽齐备 → `rewrite`:改写为 `condition_space_text(cs)` 合成声明;
992
+ · 四槽不全 → `drop`:删掉冒充行并登记待补。补不全的行留着比删掉更危险——
993
+ 它会被当成生效条件读,等于把坐标的一维当成整条声明。
994
+ """
995
+ cg = _as_cg(x)
996
+ rep = {"root": cg.root, "dry_run": True, "action": "fix_conditions",
997
+ "prefix": prefix, "legacy": 0, "targeted": 0, "rewrite": 0,
998
+ "drop": 0, "conflict": 0, "missing": 0, "skipped_locked": 0,
999
+ "skipped_denied": 0, "items": []}
1000
+ for nid, rec in _legacy_condition_records(cg).items():
1001
+ if prefix and not str(nid).startswith(prefix):
1002
+ continue
1003
+ e = cg.index["nodes"].get(nid)
1004
+ if not e:
1005
+ rep["missing"] += 1
1006
+ continue
1007
+ if not _readable_guard(cg, e):
1008
+ rep["skipped_denied"] += 1
1009
+ continue
1010
+ fm, content = cg._read(e)
1011
+ if fm is None or crypto.is_encrypted(content):
1012
+ rep["skipped_locked"] += 1
1013
+ continue
1014
+ rep["legacy"] += 1
1015
+ cur = _ccg_field(content, "生效条件") or ""
1016
+ if cur != (rec.get("after") or ""):
1017
+ rep["conflict"] += 1 # 已被后续改动 → 不碰
1018
+ continue
1019
+ new = _condition_text(fm)
1020
+ act = "rewrite" if new else "drop"
1021
+ rep["targeted"] += 1
1022
+ rep[act] += 1
1023
+ if limit is None or len(rep["items"]) < limit:
1024
+ rep["items"].append({
1025
+ "id": nid, "layer": e.get("layer"), "action": act,
1026
+ "before": cur, "after": new,
1027
+ "missing_slots": nodefile.condition_space_missing(
1028
+ fm.get("condition_space")),
1029
+ "comment_before": (_comment(fm) or {}).get("生效条件"),
1030
+ "comment_original": rec.get("original"),
1031
+ "entry_id": _entry_id(FIX_BATCH_DEFAULT, nid)})
1032
+ rep["planned_ids"] = [i["id"] for i in rep["items"]]
1033
+ return rep
1034
+
1035
+
1036
+ def fix_conditions_apply(x, ids=None, entry_ids=None, prefix=None, limit=None,
1037
+ batch=FIX_BATCH_DEFAULT, actor=None) -> dict:
1038
+ """执行清洗:`rewrite` 改写为四槽合成声明;`drop` 删行并登记待补。
1039
+
1040
+ 写盘与留痕同 `apply`:`_backfill.jsonl` 记 `condition_fix`;`drop` 另记
1041
+ `condition_pending`(待补台账的可追溯副本)。幂等:清洗后不再有候选行。
1042
+ """
1043
+ cg = _as_cg(x)
1044
+ batch = batch or FIX_BATCH_DEFAULT
1045
+ p = fix_conditions_plan(cg, prefix=prefix, limit=None)
1046
+ items = p["items"]
1047
+ if ids:
1048
+ want = set(ids)
1049
+ items = [i for i in items if i["id"] in want]
1050
+ if entry_ids:
1051
+ want = set(entry_ids)
1052
+ items = [i for i in items if i["entry_id"] in want]
1053
+ rep = {"root": cg.root, "dry_run": False, "action": "fix_conditions",
1054
+ "batch": batch, "actor": actor, "planned": len(items),
1055
+ "rewritten": 0, "dropped": 0, "pending_logged": 0,
1056
+ "skipped_drift": 0, "skipped_locked": 0, "skipped_denied": 0,
1057
+ "entry_ids": []}
1058
+ for it in items:
1059
+ if limit is not None and (rep["rewritten"] + rep["dropped"]) >= limit:
1060
+ break
1061
+ nid = it["id"]
1062
+ e = cg.index["nodes"].get(nid)
1063
+ if not e:
1064
+ rep["skipped_drift"] += 1
1065
+ continue
1066
+ fm, content = cg._read(e)
1067
+ if fm is None or crypto.is_encrypted(content):
1068
+ rep["skipped_locked"] += 1
1069
+ continue
1070
+ # 预演 → 执行之间可能被改动:当前值必须仍等于我们当初写入的值
1071
+ cur = _ccg_field(content, "生效条件")
1072
+ comment_before = (_comment(fm) or {}).get("生效条件")
1073
+ if (cur or "") != (it["before"] or "") \
1074
+ or comment_before != it["comment_before"]:
1075
+ rep["skipped_drift"] += 1
1076
+ continue
1077
+ comment = _ensure_comment(fm)
1078
+ if it["action"] == "rewrite":
1079
+ content = _upsert_ccg_line(content, "生效条件", it["after"])
1080
+ comment["生效条件"] = it["after"]
1081
+ else:
1082
+ content = _remove_ccg_line(content, "生效条件")
1083
+ # comment 里那份是同一污染的副本 → 还原为**写入前**的原值(真逆操作)
1084
+ orig = it["comment_original"]
1085
+ if orig in (None, ""):
1086
+ comment.pop("生效条件", None)
1087
+ else:
1088
+ comment["生效条件"] = orig
1089
+ st = fm.get("state_attributes")
1090
+ if isinstance(st, dict) and isinstance(st.get("comment"), dict) \
1091
+ and not st["comment"]:
1092
+ st.pop("comment", None)
1093
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
1094
+ durable=True)
1095
+ append_jsonl(_log_path(cg), {
1096
+ "action": "condition_fix", "ts": time.time(), "batch": batch,
1097
+ "actor": actor, "entry_id": it["entry_id"],
1098
+ "write_id": _sha(f"cond_fix|{nid}|{time.time()}"),
1099
+ "node": nid, "layer": e.get("layer"), "fix": it["action"],
1100
+ "fields": {"生效条件": {
1101
+ "before": it["before"], "after": it["after"],
1102
+ "basis": BASIS_CONDITION_SYNTH if it["action"] == "rewrite"
1103
+ else "dropped:legacy_position"}},
1104
+ "comment_before": comment_before,
1105
+ "comment_original": it["comment_original"],
1106
+ "missing_slots": it["missing_slots"],
1107
+ "content_hash_after": _sha(content)})
1108
+ if it["action"] == "rewrite":
1109
+ rep["rewritten"] += 1
1110
+ else:
1111
+ rep["dropped"] += 1
1112
+ append_jsonl(_log_path(cg), {
1113
+ "action": "condition_pending", "ts": time.time(),
1114
+ "batch": batch, "actor": actor, "node": nid,
1115
+ "layer": e.get("layer"), "missing_slots": it["missing_slots"],
1116
+ "reason": "四槽不可合成:单槽冒充行已删除,等待后续补充;"
1117
+ "确实补不动则判 BLINDSPOT"})
1118
+ rep["pending_logged"] += 1
1119
+ rep["entry_ids"].append(it["entry_id"])
1120
+ if rep["rewritten"] or rep["dropped"]:
1121
+ cg.rebuild_index()
1122
+ rep["plan_remaining"] = max(0, p["targeted"] - len(items))
1123
+ return rep
1124
+
1125
+
1126
+ def fix_conditions_rollback(x, batch=None, entry_ids=None, actor=None) -> dict:
1127
+ """按留痕反向应用:恢复被改写的旧值 / 重建被删除的冒充行。
1128
+
1129
+ 与 `rollback` 同一条纪律:**只在当前值仍等于写入值**时撤销,
1130
+ 否则计 `conflict` 跳过(防覆盖后续人工修改)。
1131
+ """
1132
+ cg = _as_cg(x)
1133
+ want = set(entry_ids) if entry_ids else None
1134
+ rep = {"root": cg.root, "action": "fix_conditions_rollback", "actor": actor,
1135
+ "batch": batch, "reverted": 0, "conflict": 0, "missing": 0,
1136
+ "skipped_done": 0}
1137
+ log = list(read_jsonl(_log_path(cg)) or [])
1138
+ done = {r.get("write_id") for r in log
1139
+ if r.get("action") == "fix_conditions_rollback" and r.get("write_id")}
1140
+ for rec in log:
1141
+ if rec.get("action") != "condition_fix":
1142
+ continue
1143
+ if rec.get("write_id") and rec.get("write_id") in done:
1144
+ rep["skipped_done"] += 1
1145
+ continue
1146
+ if batch and rec.get("batch") != batch:
1147
+ continue
1148
+ if want is not None and rec.get("entry_id") not in want:
1149
+ continue
1150
+ nid = rec.get("node")
1151
+ e = cg.index["nodes"].get(nid)
1152
+ if not e:
1153
+ rep["missing"] += 1
1154
+ continue
1155
+ fm, content = cg._read(e)
1156
+ if fm is None:
1157
+ rep["missing"] += 1
1158
+ continue
1159
+ d = (rec.get("fields") or {}).get("生效条件") or {}
1160
+ cur = _ccg_field(content, "生效条件") or ""
1161
+ if cur != (d.get("after") or ""):
1162
+ rep["conflict"] += 1 # 已被后续改动 → 不撤销
1163
+ continue
1164
+ before = d.get("before")
1165
+ if before in (None, ""):
1166
+ content = _remove_ccg_line(content, "生效条件")
1167
+ else:
1168
+ content = _upsert_ccg_line(content, "生效条件", before)
1169
+ comment = _ensure_comment(fm)
1170
+ cb = rec.get("comment_before")
1171
+ if cb in (None, ""):
1172
+ comment.pop("生效条件", None)
1173
+ else:
1174
+ comment["生效条件"] = cb
1175
+ st = fm.get("state_attributes")
1176
+ if isinstance(st, dict) and isinstance(st.get("comment"), dict) \
1177
+ and not st["comment"]:
1178
+ st.pop("comment", None)
1179
+ cg._write_node(nid, os.path.join(cg.root, e["path"]), fm, content,
1180
+ durable=True)
1181
+ append_jsonl(_log_path(cg), {
1182
+ "action": "fix_conditions_rollback", "ts": time.time(),
1183
+ "actor": actor, "batch": rec.get("batch"),
1184
+ "entry_id": rec.get("entry_id"), "write_id": rec.get("write_id"),
1185
+ "node": nid, "restored": before})
1186
+ rep["reverted"] += 1
1187
+ if rep["reverted"]:
1188
+ cg.rebuild_index()
1189
+ return rep
1190
+
1191
+
1192
+ def verify_conditions(x, prefix=None, limit=None) -> dict:
1193
+ """复算核对(只读):生效条件行的来源分布 + 弱等价残留计数。
1194
+
1195
+ `legacy_position` 必须为 **0**——这是本轮口径修正的验收指标:
1196
+ 「观测位置:X」单槽冒充行不得再出现在任何节点里。
1197
+ """
1198
+ cg = _as_cg(x)
1199
+ rep = {"root": cg.root, "dry_run": True, "action": "verify_conditions",
1200
+ "prefix": prefix, "nodes_scanned": 0, "absent": 0, "declared": 0,
1201
+ "from_synthesis": 0, "from_comment": 0, "legacy_position": 0,
1202
+ "other": 0, "by_prefix": {}, "legacy_ids": []}
1203
+ for nid, e in list((cg.index.get("nodes") or {}).items()):
1204
+ if prefix and not str(nid).startswith(prefix):
1205
+ continue
1206
+ if e.get("layer") in INTERNAL_LAYERS:
1207
+ continue
1208
+ fm, content = cg._read(e)
1209
+ if fm is None or crypto.is_encrypted(content):
1210
+ continue
1211
+ rep["nodes_scanned"] += 1
1212
+ cur = _ccg_field(content, "生效条件")
1213
+ if not cur:
1214
+ rep["absent"] += 1
1215
+ kind = "absent"
1216
+ else:
1217
+ rep["declared"] += 1
1218
+ synth = _condition_text(fm)
1219
+ cmt = _as_text(_comment(fm).get("生效条件"))
1220
+ if nodefile.is_legacy_position_condition(cur):
1221
+ rep["legacy_position"] += 1
1222
+ kind = "legacy_position"
1223
+ if limit is None or len(rep["legacy_ids"]) < limit:
1224
+ rep["legacy_ids"].append(nid)
1225
+ elif synth and cur == synth:
1226
+ rep["from_synthesis"] += 1
1227
+ kind = "from_synthesis"
1228
+ elif cmt and cur == cmt:
1229
+ rep["from_comment"] += 1
1230
+ kind = "from_comment"
1231
+ else:
1232
+ rep["other"] += 1
1233
+ kind = "other"
1234
+ box = rep["by_prefix"].setdefault(str(nid).split("_")[0], {})
1235
+ box[kind] = box.get(kind, 0) + 1
1236
+ return rep
1237
+
1238
+
1239
+ # ---- 统一入口 ------------------------------------------------------------
1240
+
1241
+ ACTIONS = ("backfill", "backfill_rollback", "backfill_history",
1242
+ "cap", "cap_rollback", "cap_history",
1243
+ "exempt", "exempt_rollback", "exempt_history")
1244
+
1245
+
1246
+ def run(x, action, **kw) -> dict:
1247
+ """`maintain` op 的分派入口:action ∈ ACTIONS。"""
1248
+ if action == "backfill":
1249
+ if kw.get("apply"):
1250
+ return apply(x, **{k: v for k, v in kw.items() if k != "apply"})
1251
+ return plan(x, **{k: v for k, v in kw.items() if k != "apply"})
1252
+ if action == "backfill_rollback":
1253
+ return rollback(x, **kw)
1254
+ if action == "backfill_history":
1255
+ return history(x, **kw)
1256
+ if action == "cap":
1257
+ if kw.get("apply"):
1258
+ return cap_apply(x, **{k: v for k, v in kw.items() if k != "apply"})
1259
+ return cap_plan(x, **{k: v for k, v in kw.items() if k != "apply"})
1260
+ if action == "cap_rollback":
1261
+ return cap_rollback(x, **kw)
1262
+ if action == "cap_history":
1263
+ return history(x, action="cap", **kw)
1264
+ if action == "exempt":
1265
+ if kw.get("apply"):
1266
+ return exempt_apply(x, **{k: v for k, v in kw.items() if k != "apply"})
1267
+ return exempt_plan(x, **{k: v for k, v in kw.items() if k != "apply"})
1268
+ if action == "exempt_rollback":
1269
+ return exempt_rollback(x, **kw)
1270
+ if action == "exempt_history":
1271
+ return history(x, action="exempt", **kw)
1272
+ raise ValueError(f"未知 backfill action:{action}(允许:{ACTIONS})")