@yun520-1/heartflow 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/AI-AGENT-README.md +154 -0
  2. package/CLAIMS.md +23 -0
  3. package/CORE_VALUES.md +50 -0
  4. package/INSTALL_FOR_AI.md +104 -0
  5. package/QUICK_START.md +77 -0
  6. package/READ/refresh_11.2.6.md +6 -0
  7. package/README.md +190 -0
  8. package/README.zh.md +49 -0
  9. package/REPO_STRUCTURE.md +47 -0
  10. package/SKILL.md.new +1 -0
  11. package/VERSION +1 -0
  12. package/_test_memory.mjs +52 -0
  13. package/assets/banner.png +0 -0
  14. package/bin/cli.js +167 -0
  15. package/bin/setup.js +382 -0
  16. package/co-evolution/index.ts +511 -0
  17. package/com.heartflow.auto-evolution.plist.disabled +26 -0
  18. package/com.heartflow.auto-upgrade.plist.disabled +26 -0
  19. package/com.heartflow.comfyui-monitor.plist.disabled +22 -0
  20. package/com.heartflow.enhanced-upgrade.plist.disabled +22 -0
  21. package/com.heartflow.full-audit.plist +28 -0
  22. package/com.heartflow.github-audit.plist +21 -0
  23. package/com.heartflow.paper-upgrade.plist.disabled +21 -0
  24. package/config/ai-config.json +12 -0
  25. package/config/ai-providers.json +14 -0
  26. package/dict-data/generate-graph.js +203 -0
  27. package/dist/agent/runtime/AgentRuntime.d.ts +212 -0
  28. package/dist/agent/runtime/AgentRuntime.d.ts.map +1 -0
  29. package/dist/agent/runtime/AgentRuntime.js +355 -0
  30. package/dist/agent/runtime/AgentRuntime.js.map +1 -0
  31. package/dist/agent/runtime/PlanExecutor.d.ts +132 -0
  32. package/dist/agent/runtime/PlanExecutor.d.ts.map +1 -0
  33. package/dist/agent/runtime/PlanExecutor.js +322 -0
  34. package/dist/agent/runtime/PlanExecutor.js.map +1 -0
  35. package/dist/agent/runtime/TaskGraph.d.ts +170 -0
  36. package/dist/agent/runtime/TaskGraph.d.ts.map +1 -0
  37. package/dist/agent/runtime/TaskGraph.js +390 -0
  38. package/dist/agent/runtime/TaskGraph.js.map +1 -0
  39. package/dist/agent/runtime/TaskScheduler.d.ts +120 -0
  40. package/dist/agent/runtime/TaskScheduler.d.ts.map +1 -0
  41. package/dist/agent/runtime/TaskScheduler.js +301 -0
  42. package/dist/agent/runtime/TaskScheduler.js.map +1 -0
  43. package/dist/agent/runtime/index.d.ts +17 -0
  44. package/dist/agent/runtime/index.d.ts.map +1 -0
  45. package/dist/agent/runtime/index.js +22 -0
  46. package/dist/agent/runtime/index.js.map +1 -0
  47. package/dist/agent/runtime/test-runtime.d.ts +2 -0
  48. package/dist/agent/runtime/test-runtime.d.ts.map +1 -0
  49. package/dist/agent/runtime/test-runtime.js +71 -0
  50. package/dist/agent/runtime/test-runtime.js.map +1 -0
  51. package/dist/agent/tools/BashTool.d.ts +44 -0
  52. package/dist/agent/tools/BashTool.d.ts.map +1 -0
  53. package/dist/agent/tools/BashTool.js +355 -0
  54. package/dist/agent/tools/BashTool.js.map +1 -0
  55. package/dist/agent/tools/FileReadTool.d.ts +29 -0
  56. package/dist/agent/tools/FileReadTool.d.ts.map +1 -0
  57. package/dist/agent/tools/FileReadTool.js +196 -0
  58. package/dist/agent/tools/FileReadTool.js.map +1 -0
  59. package/dist/agent/tools/FileWriteTool.d.ts +35 -0
  60. package/dist/agent/tools/FileWriteTool.d.ts.map +1 -0
  61. package/dist/agent/tools/FileWriteTool.js +204 -0
  62. package/dist/agent/tools/FileWriteTool.js.map +1 -0
  63. package/dist/agent/tools/Tool.d.ts +75 -0
  64. package/dist/agent/tools/Tool.d.ts.map +1 -0
  65. package/dist/agent/tools/Tool.js +54 -0
  66. package/dist/agent/tools/Tool.js.map +1 -0
  67. package/dist/agent/tools/WebSearchTool.d.ts +27 -0
  68. package/dist/agent/tools/WebSearchTool.d.ts.map +1 -0
  69. package/dist/agent/tools/WebSearchTool.js +136 -0
  70. package/dist/agent/tools/WebSearchTool.js.map +1 -0
  71. package/dist/cli/commands/engines.d.ts +39 -0
  72. package/dist/cli/commands/engines.d.ts.map +1 -0
  73. package/dist/cli/commands/engines.js +275 -0
  74. package/dist/cli/commands/engines.js.map +1 -0
  75. package/dist/cli/commands/health.d.ts +34 -0
  76. package/dist/cli/commands/health.d.ts.map +1 -0
  77. package/dist/cli/commands/health.js +381 -0
  78. package/dist/cli/commands/health.js.map +1 -0
  79. package/dist/cli/commands/repl.d.ts +40 -0
  80. package/dist/cli/commands/repl.d.ts.map +1 -0
  81. package/dist/cli/commands/repl.js +286 -0
  82. package/dist/cli/commands/repl.js.map +1 -0
  83. package/dist/cli/commands/status.d.ts +22 -0
  84. package/dist/cli/commands/status.d.ts.map +1 -0
  85. package/dist/cli/commands/status.js +266 -0
  86. package/dist/cli/commands/status.js.map +1 -0
  87. package/dist/cli/index.d.ts +7 -0
  88. package/dist/cli/index.d.ts.map +1 -0
  89. package/dist/cli/index.js +13 -0
  90. package/dist/cli/index.js.map +1 -0
  91. package/dist/core/consciousness/2308.08708_upgrade.d.ts +321 -0
  92. package/dist/core/consciousness/2308.08708_upgrade.d.ts.map +1 -0
  93. package/dist/core/consciousness/2308.08708_upgrade.js +917 -0
  94. package/dist/core/consciousness/2308.08708_upgrade.js.map +1 -0
  95. package/dist/core/dream/dream-consolidator.d.ts +11 -0
  96. package/dist/core/dream/dream-consolidator.d.ts.map +1 -0
  97. package/dist/core/dream/dream-consolidator.js +188 -0
  98. package/dist/core/dream/dream-consolidator.js.map +1 -0
  99. package/dist/core/dream/dream.d.ts +71 -0
  100. package/dist/core/dream/dream.d.ts.map +1 -0
  101. package/dist/core/dream/dream.js +318 -0
  102. package/dist/core/dream/dream.js.map +1 -0
  103. package/dist/core/dream/index.d.ts +38 -0
  104. package/dist/core/dream/index.d.ts.map +1 -0
  105. package/dist/core/dream/index.js +185 -0
  106. package/dist/core/dream/index.js.map +1 -0
  107. package/dist/core/emotion/deep-emotion.js +574 -0
  108. package/dist/core/emotion/emotion-engine.js +138 -0
  109. package/dist/core/emotion/index.d.ts +44 -0
  110. package/dist/core/emotion/index.d.ts.map +1 -0
  111. package/dist/core/emotion/index.js +41 -0
  112. package/dist/core/emotion/index.js.map +1 -0
  113. package/dist/core/heartcore/health-check.d.ts +43 -0
  114. package/dist/core/heartcore/health-check.d.ts.map +1 -0
  115. package/dist/core/heartcore/health-check.js +152 -0
  116. package/dist/core/heartcore/health-check.js.map +1 -0
  117. package/dist/core/heartcore/heartbeat.d.ts +45 -0
  118. package/dist/core/heartcore/heartbeat.d.ts.map +1 -0
  119. package/dist/core/heartcore/heartbeat.js +127 -0
  120. package/dist/core/heartcore/heartbeat.js.map +1 -0
  121. package/dist/core/heartcore/sleep-wake.d.ts +61 -0
  122. package/dist/core/heartcore/sleep-wake.d.ts.map +1 -0
  123. package/dist/core/heartcore/sleep-wake.js +173 -0
  124. package/dist/core/heartcore/sleep-wake.js.map +1 -0
  125. package/dist/core/heartcore/startup-check.d.ts +38 -0
  126. package/dist/core/heartcore/startup-check.d.ts.map +1 -0
  127. package/dist/core/heartcore/startup-check.js +148 -0
  128. package/dist/core/heartcore/startup-check.js.map +1 -0
  129. package/dist/core/index.js +267 -0
  130. package/dist/core/knowledge/index.d.ts +95 -0
  131. package/dist/core/knowledge/index.d.ts.map +1 -0
  132. package/dist/core/knowledge/index.js +14 -0
  133. package/dist/core/knowledge/index.js.map +1 -0
  134. package/dist/core/knowledge/knowledge-graph.js +359 -0
  135. package/dist/core/psychology/index.d.ts +59 -0
  136. package/dist/core/psychology/index.d.ts.map +1 -0
  137. package/dist/core/psychology/index.js +268 -0
  138. package/dist/core/psychology/index.js.map +1 -0
  139. package/dist/core/reasoning/bounded-rationality.d.ts +76 -0
  140. package/dist/core/reasoning/bounded-rationality.d.ts.map +1 -0
  141. package/dist/core/reasoning/bounded-rationality.js +257 -0
  142. package/dist/core/reasoning/bounded-rationality.js.map +1 -0
  143. package/dist/core/reasoning/causal-reasoning.d.ts +89 -0
  144. package/dist/core/reasoning/causal-reasoning.d.ts.map +1 -0
  145. package/dist/core/reasoning/causal-reasoning.js +282 -0
  146. package/dist/core/reasoning/causal-reasoning.js.map +1 -0
  147. package/dist/core/reasoning/index.d.ts +38 -0
  148. package/dist/core/reasoning/index.d.ts.map +1 -0
  149. package/dist/core/reasoning/index.js +93 -0
  150. package/dist/core/reasoning/index.js.map +1 -0
  151. package/dist/core/self-evolution/index.d.ts +75 -0
  152. package/dist/core/self-evolution/index.d.ts.map +1 -0
  153. package/dist/core/self-evolution/index.js +311 -0
  154. package/dist/core/self-evolution/index.js.map +1 -0
  155. package/dist/storage/checkpoint/CheckpointEngine.d.ts +110 -0
  156. package/dist/storage/checkpoint/CheckpointEngine.d.ts.map +1 -0
  157. package/dist/storage/checkpoint/CheckpointEngine.js +227 -0
  158. package/dist/storage/checkpoint/CheckpointEngine.js.map +1 -0
  159. package/dist/storage/checkpoint.d.ts +18 -0
  160. package/dist/storage/checkpoint.d.ts.map +1 -0
  161. package/dist/storage/checkpoint.js +61 -0
  162. package/dist/storage/checkpoint.js.map +1 -0
  163. package/dist/storage/index.d.ts +61 -0
  164. package/dist/storage/index.d.ts.map +1 -0
  165. package/dist/storage/index.js +84 -0
  166. package/dist/storage/index.js.map +1 -0
  167. package/dist/storage/vector/VectorStoreEngine.d.ts +24 -0
  168. package/dist/storage/vector/VectorStoreEngine.d.ts.map +1 -0
  169. package/dist/storage/vector/VectorStoreEngine.js +197 -0
  170. package/dist/storage/vector/VectorStoreEngine.js.map +1 -0
  171. package/distributed/-v2026.5.7/META.json +9 -0
  172. package/distributed/-v2026.5.7/package.json +12 -0
  173. package/distributed/.personal_backup/deepseek-key-v2026.5.7/META.json +9 -0
  174. package/distributed/.personal_backup/deepseek-key-v2026.5.7/package.json +12 -0
  175. package/distributed/.personal_backup/git-push-v2026.5.7/META.json +9 -0
  176. package/distributed/.personal_backup/git-push-v2026.5.7/package.json +12 -0
  177. package/distributed/.personal_backup/heartflow-always-upgrade-v2026.5.7/META.json +9 -0
  178. package/distributed/.personal_backup/heartflow-always-upgrade-v2026.5.7/package.json +12 -0
  179. package/distributed/.personal_backup/key-a-v2026.5.7/META.json +9 -0
  180. package/distributed/.personal_backup/key-a-v2026.5.7/package.json +12 -0
  181. package/distributed/.personal_backup/merge-memory-systems-v2026.5.7/META.json +9 -0
  182. package/distributed/.personal_backup/merge-memory-systems-v2026.5.7/package.json +12 -0
  183. package/distributed/.personal_backup/search-papers-first-v2026.5.7/META.json +9 -0
  184. package/distributed/.personal_backup/search-papers-first-v2026.5.7/package.json +12 -0
  185. package/distributed/.personal_backup/v11-5-8-v2026.5.7/META.json +9 -0
  186. package/distributed/.personal_backup/v11-5-8-v2026.5.7/package.json +12 -0
  187. package/distributed/.personal_backup/v11-5-9-v2026.5.7/META.json +9 -0
  188. package/distributed/.personal_backup/v11-5-9-v2026.5.7/package.json +12 -0
  189. package/distributed/MANIFEST.json +5 -0
  190. package/distributed/bundles/install--v2026.5.7.sh +21 -0
  191. package/distributed/bundles/install-deepseek-key-v2026.5.7.sh +21 -0
  192. package/distributed/bundles/install-git-push-v2026.5.7.sh +21 -0
  193. package/distributed/bundles/install-heartflow-always-upgrade-v2026.5.7.sh +21 -0
  194. package/distributed/bundles/install-key-a-v2026.5.7.sh +21 -0
  195. package/distributed/bundles/install-merge-memory-systems-v2026.5.7.sh +21 -0
  196. package/distributed/bundles/install-search-papers-first-v2026.5.7.sh +21 -0
  197. package/distributed/bundles/install-v11-5-8-v2026.5.7.sh +21 -0
  198. package/distributed/bundles/install-v11-5-9-v2026.5.7.sh +21 -0
  199. package/distributed/heartflow-knowledge-base/INDEX.json +29 -0
  200. package/distributed/heartflow-knowledge-base/PATTERNS.json +74 -0
  201. package/distributed/heartflow-knowledge-base/package.json +28 -0
  202. package/distributed_upgrades/TASK_CONFIG.json +20 -0
  203. package/distributed_upgrades/UPGRADE_BATCH_STATUS.json +29 -0
  204. package/distributed_upgrades/distributed_upgrades/agent_0.pid +1 -0
  205. package/distributed_upgrades/distributed_upgrades/agent_1.pid +1 -0
  206. package/distributed_upgrades/distributed_upgrades/agent_2.pid +1 -0
  207. package/distributed_upgrades/distributed_upgrades/agent_3.pid +1 -0
  208. package/distributed_upgrades/distributed_upgrades/agent_4.pid +1 -0
  209. package/distributed_upgrades/distributed_upgrades/agent_5.pid +1 -0
  210. package/distributed_upgrades/distributed_upgrades/paper_batches.txt +200 -0
  211. package/distributed_upgrades/launch-distributed.sh +83 -0
  212. package/docs/ACTION_PLAN_2026-04-06_0941.md +117 -0
  213. package/docs/ANALYSIS_REPORT.md +766 -0
  214. package/docs/APPLICATION_GUIDE.md +444 -0
  215. package/docs/AUTO_UPGRADE_REPORT_v6.2.56.md +45 -0
  216. package/docs/AWAKENING_SYSTEM_GUIDE.md +285 -0
  217. package/docs/BILINGUAL_STANDARD.md +156 -0
  218. package/docs/BRAND_GUIDELINES.md +251 -0
  219. package/docs/CODE_OPTIMIZATION_PLAN.md +293 -0
  220. package/docs/COMPLETE_FIX_SUMMARY.md +250 -0
  221. package/docs/CONTINUOUS_REFLECTION_2026-04-06_1031.md +233 -0
  222. package/docs/CONTRIBUTING.md +87 -0
  223. package/docs/CRON_JOBS_REVIEW_v6.md +60 -0
  224. package/docs/DATA_FLOW_ARCHITECTURE.md +373 -0
  225. package/docs/DEEPEST_REFLECTION_2026-04-06_0941.md +167 -0
  226. package/docs/DEEP_REFLECTION_2026-04-05.md +204 -0
  227. package/docs/DEEP_VALIDATION_20260403.md +319 -0
  228. package/docs/DEEP_VALIDATION_20260404.md +295 -0
  229. package/docs/EMOTION_THEORY_INTEGRATION.md +483 -0
  230. package/docs/ERROR_FIX_REPORT_2026-04-07.md +316 -0
  231. package/docs/EVOLUTION_SYSTEM.md +96 -0
  232. package/docs/FEATURES_SIMPLE.md +53 -0
  233. package/docs/FEATURES_v5.3.md +291 -0
  234. package/docs/FEATURES_v7.1.md +172 -0
  235. package/docs/FINAL_RUN_REPORT_20260403.md +202 -0
  236. package/docs/GITHUB_COMPLETE_DOCUMENTATION_v6.0.2.md +579 -0
  237. package/docs/GITHUB_PUSH_LOG.md +16 -0
  238. package/docs/GITHUB_RELEASE.md +138 -0
  239. package/docs/GITHUB_RELEASE_v5.3.0.md +395 -0
  240. package/docs/GITHUB_RELEASE_v6.0.0.md +74 -0
  241. package/docs/HEARTFLOW_V6_GITHUB_PUSH.md +159 -0
  242. package/docs/HEARTFLOW_V6_MANIFESTO.md +287 -0
  243. package/docs/HEARTFLOW_V6_README.md +299 -0
  244. package/docs/HEARTFLOW_V6_TASK_REVIEW.md +215 -0
  245. package/docs/HEARTFLOW_VALUES_AND_MISSION.md +177 -0
  246. package/docs/HeartFlow_Monograph_Volume_II_Chapter_01.md +377 -0
  247. package/docs/HeartFlow_Monograph_Volume_II_Chapter_02.md +324 -0
  248. package/docs/HeartFlow_Monograph_Volume_II_Start.md +78 -0
  249. package/docs/HeartFlow_Monograph_Volume_I_Final.md +9464 -0
  250. package/docs/INSTALLATION_DIAGNOSIS.md +368 -0
  251. package/docs/INTEGRATION_CHECKLIST_v6.1.41.md +229 -0
  252. package/docs/INTEGRATION_SUMMARY.md +380 -0
  253. package/docs/INTELLIGENT_ROUTING_SYSTEM.md +329 -0
  254. package/docs/LEARNING_PHILOSOPHY.md +320 -0
  255. package/docs/LOGIC_AUDIT_REPORT_20260405.md +369 -0
  256. package/docs/MOTIVE_CHECK_2026-04-06_0945.md +90 -0
  257. package/docs/PERSONALITY_CALCULATION_RULES.md +104 -0
  258. package/docs/PERSONALITY_SYNC_FIX.md +166 -0
  259. package/docs/PROJECT_SUMMARY.md +347 -0
  260. package/docs/PUBLISH_GUIDE.md +149 -0
  261. package/docs/README_UPDATE_STANDARD.md +357 -0
  262. package/docs/README_v5.3.md +519 -0
  263. package/docs/RELEASE_v6.2.0.md +240 -0
  264. package/docs/SAGE_PATH_2026-04-06_0952.md +265 -0
  265. package/docs/SELF_REFLECTION_2026-04-06_1006.md +311 -0
  266. package/docs/SEVEN_SYSTEMS.md +642 -0
  267. package/docs/SMART_EVOLUTION_GUIDE.md +103 -0
  268. package/docs/SMART_EVOLUTION_v4.md +194 -0
  269. package/docs/SYNC_REPORT_1775363972464.json +23 -0
  270. package/docs/SYNC_REPORT_1775364446763.json +23 -0
  271. package/docs/SYNC_REPORT_1775364984353.json +23 -0
  272. package/docs/SYNC_REPORT_1775397556306.json +23 -0
  273. package/docs/SYNC_REPORT_1775399840010.json +23 -0
  274. package/docs/SYNC_REPORT_1775400929082.json +23 -0
  275. package/docs/SYNC_REPORT_1775455697235.json +23 -0
  276. package/docs/SYNC_REPORT_1775459792479.json +23 -0
  277. package/docs/SYNC_REPORT_1775483413473.json +23 -0
  278. package/docs/SYSTEM_FIX_AND_VERIFICATION_REPORT.md +390 -0
  279. package/docs/SYSTEM_REQUIREMENTS_v6.2.52.md +611 -0
  280. package/docs/TASK_BREAKDOWN_CHECKLIST.md +164 -0
  281. package/docs/THEORY_TO_CODE_v6.2.52.md +930 -0
  282. package/docs/UPGRADE_COMPLETE_v6.2.33.md +226 -0
  283. package/docs/UPGRADE_COMPLETE_v6.2.60.md +135 -0
  284. package/docs/UPGRADE_COMPLETE_v6.2.66.md +265 -0
  285. package/docs/UPGRADE_COMPLETE_v7.1.8.md +176 -0
  286. package/docs/UPGRADE_COMPLETE_v7.3.95.md +59 -0
  287. package/docs/UPGRADE_REPORT_1775313572473.json +50 -0
  288. package/docs/UPGRADE_REPORT_1775364977378.json +50 -0
  289. package/docs/UPGRADE_REPORT_1775364984469.json +55 -0
  290. package/docs/UPGRADE_REPORT_1775397556425.json +55 -0
  291. package/docs/UPGRADE_REPORT_1775399840144.json +55 -0
  292. package/docs/UPGRADE_REPORT_1775400929201.json +55 -0
  293. package/docs/UPGRADE_REPORT_1775455697348.json +55 -0
  294. package/docs/UPGRADE_REPORT_1775459792601.json +55 -0
  295. package/docs/UPGRADE_REPORT_1775459829.md +59 -0
  296. package/docs/UPGRADE_REPORT_1775483413653.json +55 -0
  297. package/docs/UPGRADE_REPORT_v6.2.25.md +172 -0
  298. package/docs/UPGRADE_REPORT_v6.2.26.md +166 -0
  299. package/docs/UPGRADE_REPORT_v6.2.28.md +214 -0
  300. package/docs/UPGRADE_REPORT_v6.2.29.md +186 -0
  301. package/docs/VERSION_FIX_REPORT.md +218 -0
  302. package/docs/VERSION_HISTORY.md +5 -0
  303. package/docs/VERSION_INDEX.md +180 -0
  304. package/docs/WAY_OF_BEING_2026-04-06_0955.md +241 -0
  305. package/docs/ai-self-awareness-awakening.md +551 -0
  306. package/docs/cronjob-backup.md +55 -0
  307. package/docs/emotion-prototype-theory-v5.0.12.md +430 -0
  308. package/docs/examples.md +439 -0
  309. package/docs/heartflow-ppt-design.md +237 -0
  310. package/docs/install-troubleshooting.md +21 -0
  311. package/docs/phase-upgrade-template-v0.0.1.md +33 -0
  312. package/docs/pricing.md +191 -0
  313. package/docs/psych-analysis-v0.0.1.md +38 -0
  314. package/docs/reasoning-checklist.md +60 -0
  315. package/docs/self-evolution-state-v6.0.19.md +391 -0
  316. package/docs/self-evolution-state-v6.0.23.md +293 -0
  317. package/docs/self-evolution-state-v6.0.24.md +281 -0
  318. package/docs/self-evolution-state-v6.0.49.md +267 -0
  319. package/docs/self-evolution-state-v6.2.33.md +269 -0
  320. package/docs/self-evolution-state-v6.2.60.md +180 -0
  321. package/docs/self-evolution-state-v6.2.66.md +520 -0
  322. package/docs/self-evolution-state-v7.3.95.md +165 -0
  323. package/docs/self-evolution-state.md +226 -0
  324. package/docs/system-core-principles.md +53 -0
  325. package/docs/system-truth-goodness-beauty-principles.md +502 -0
  326. package/docs/theories/human-nature-motivation.md +251 -0
  327. package/docs/theories/motivation-memory-integration.md +265 -0
  328. package/docs/theories/sdt-test.md +17 -0
  329. package/docs/theory-integration-analysis-v5.2.0.md +236 -0
  330. package/docs/theory-update-summary-v5.0.34.md +193 -0
  331. package/docs/theory-update-summary-v5.0.35.md +104 -0
  332. package/docs/theory-update-summary-v5.0.41.md +281 -0
  333. package/docs/theory-update-summary-v5.0.42.md +421 -0
  334. package/docs/theory-update-summary-v5.0.46.md +386 -0
  335. package/docs/theory-update-summary-v5.0.47.md +449 -0
  336. package/docs/theory-update-summary-v5.0.48.md +183 -0
  337. package/docs/theory-update-summary-v5.0.49.md +191 -0
  338. package/docs/theory-update-summary-v5.0.50.md +205 -0
  339. package/docs/theory-update-summary-v5.0.51.md +191 -0
  340. package/docs/theory-update-summary-v5.0.52.md +183 -0
  341. package/docs/theory-update-summary-v5.0.53.md +306 -0
  342. package/docs/theory-update-summary-v5.0.54.md +98 -0
  343. package/docs/theory-update-summary-v5.0.55.md +391 -0
  344. package/docs/theory-update-summary-v5.0.57.md +398 -0
  345. package/docs/theory-update-summary-v5.0.58.md +476 -0
  346. package/docs/theory-update-summary-v5.0.59.md +520 -0
  347. package/docs/theory-update-summary-v5.0.60.md +460 -0
  348. package/docs/theory-update-summary-v5.0.61.md +108 -0
  349. package/docs/theory-update-summary-v5.0.62.md +74 -0
  350. package/docs/theory-update-summary-v5.0.63.md +112 -0
  351. package/docs/theory-update-summary-v5.0.64.md +55 -0
  352. package/docs/theory-update-summary-v5.0.67.md +539 -0
  353. package/docs/theory-update-summary-v5.2.0.md +168 -0
  354. package/docs/theory-update-summary-v5.2.1.md +406 -0
  355. package/docs/theory-update-summary-v5.2.37.md +518 -0
  356. package/docs/theory-update-summary-v6.0.19.md +715 -0
  357. package/docs/theory-update-summary-v6.0.23.md +729 -0
  358. package/docs/theory-update-summary-v6.0.24.md +229 -0
  359. package/docs/theory-update-summary-v6.0.49.md +223 -0
  360. package/docs/theory-update-summary-v6.2.33.md +303 -0
  361. package/docs/theory-update-summary-v6.2.49.md +489 -0
  362. package/docs/theory-update-summary-v6.2.60.md +273 -0
  363. package/docs/theory-update-summary-v6.2.66.md +322 -0
  364. package/docs/theory-update-summary-v7.3.95.md +197 -0
  365. package/docs/theory-update-summary.md +174 -0
  366. package/docs/upgrade-notes-v0.0.1.md +15 -0
  367. package/docs/upgrade-report-v5.0.34.md +144 -0
  368. package/docs/upgrade-report-v5.0.42-cron.md +269 -0
  369. package/docs/upgrade-report-v5.0.43-cron.md +248 -0
  370. package/docs/upgrade-report-v5.0.45-cron.md +63 -0
  371. package/docs/upgrade-report-v5.0.55-cron.md +173 -0
  372. package/docs/upgrade-report-v5.0.63-cron.md +145 -0
  373. package/docs/upgrade-report-v5.0.67-cron.md +185 -0
  374. package/docs/upgrade-report-v5.0.68-cron.md +409 -0
  375. package/docs/upgrade-report-v5.2.0-cron.md +178 -0
  376. package/docs/upgrade-report-v5.2.1-cron.md +321 -0
  377. package/docs/upgrade-report-v5.2.37-cron.md +602 -0
  378. package/docs/upgrade-report-v6.0.19-cron.md +296 -0
  379. package/docs/upgrade-report-v6.0.23-cron.md +81 -0
  380. package/docs/upgrade-report-v6.0.24-cron.md +272 -0
  381. package/docs/upgrade-report-v6.0.49-cron.md +277 -0
  382. package/docs/upgrade-report-v6.2.33-cron.md +290 -0
  383. package/docs/upgrade-report-v6.2.60-cron.md +93 -0
  384. package/docs/upgrade-report-v7.3.95-cron.md +65 -0
  385. package/docs/upgrade-report.md +327 -0
  386. package/docs/upgrade-v3.21.0.md +249 -0
  387. package/docs/v4.8.0-upgrade.md +287 -0
  388. package/docs/version-summary-20260429.md +142 -0
  389. package/explore-engine/index.ts +478 -0
  390. package/extract-text.py +12 -0
  391. package/failure-pattern-memory/index.ts +234 -0
  392. package/heartflow-identity/HEARTCORE/health-check.js +49 -0
  393. package/heartflow-identity/HEARTCORE/heartbeat.js +42 -0
  394. package/heartflow-identity/HEARTCORE/heartcore.js +86 -0
  395. package/heartflow-identity/HEARTCORE/safety-check.js +282 -0
  396. package/heartflow-identity/HEARTCORE/self-check.js +90 -0
  397. package/heartflow-identity/HEARTCORE/sleep-wake.js +105 -0
  398. package/heartflow-identity/LICENSE +17 -0
  399. package/heartflow-identity/VERSION +1 -0
  400. package/heartflow-identity/install.sh +80 -0
  401. package/install.sh +128 -0
  402. package/languages/README_LANGS.md +20 -0
  403. package/languages/README_ar.md +48 -0
  404. package/languages/README_de.md +48 -0
  405. package/languages/README_en.md +48 -0
  406. package/languages/README_es.md +48 -0
  407. package/languages/README_fr.md +48 -0
  408. package/languages/README_ja.md +48 -0
  409. package/languages/README_ko.md +48 -0
  410. package/languages/README_zh.md +85 -0
  411. package/memory-log.json +5 -0
  412. package/migrate-memories.js +101 -0
  413. package/package.json +28 -0
  414. package/package.json.bak +13 -0
  415. package/patches/embodied-core-v2.2.3.patch +475 -0
  416. package/patches/goedel-engine-v2.2.2.patch +161 -0
  417. package/patches/new-features-v2.2.3.patch +1371 -0
  418. package/patches/self-modifier-v2.2.2.patch +252 -0
  419. package/run-full-audit.sh +4 -0
  420. package/run-github-audit.sh +3 -0
  421. package/run-hf.sh +5 -0
  422. package/run-paper-upgrade.sh +5 -0
  423. package/session-continuity/index.ts +262 -0
  424. package/shared-discovery-log/index.ts +281 -0
  425. package/skills/.skills_store_lock.json +11 -0
  426. package/skills/baidu-search/_meta.json +6 -0
  427. package/src/__init__.py +4 -0
  428. package/src/__pycache__/__init__.cpython-313.pyc +0 -0
  429. package/src/agent/runtime/AgentRuntime.ts +481 -0
  430. package/src/agent/runtime/PlanExecutor.ts +441 -0
  431. package/src/agent/runtime/TaskGraph.ts +487 -0
  432. package/src/agent/runtime/TaskScheduler.ts +364 -0
  433. package/src/agent/runtime/index.ts +17 -0
  434. package/src/agent/runtime/test-runtime.ts +80 -0
  435. package/src/agent/tools/BashTool.ts +390 -0
  436. package/src/agent/tools/FileReadTool.ts +176 -0
  437. package/src/agent/tools/FileWriteTool.ts +182 -0
  438. package/src/agent/tools/Tool.ts +105 -0
  439. package/src/agent/tools/WebSearchTool.ts +158 -0
  440. package/src/cli/commands/engines.ts +280 -0
  441. package/src/cli/commands/health.ts +433 -0
  442. package/src/cli/commands/repl.ts +267 -0
  443. package/src/cli/commands/status.ts +264 -0
  444. package/src/cli/index.ts +7 -0
  445. package/src/core/VERSION +1 -0
  446. package/src/core/__init__.py +3 -0
  447. package/src/core/__pycache__/__init__.cpython-313.pyc +0 -0
  448. package/src/core/__pycache__/heartflow.cpython-313.pyc +0 -0
  449. package/src/core/_upgrade_archive/upgrade_1778685492336.js +118 -0
  450. package/src/core/_upgrade_archive/upgrade_1778685493439.js +118 -0
  451. package/src/core/_upgrade_archive/upgrade_1778685559715.js +346 -0
  452. package/src/core/_upgrade_archive/upgrade_1778685676694.js +198 -0
  453. package/src/core/_upgrade_archive/upgrade_1778685861697.js +345 -0
  454. package/src/core/_upgrade_archive/upgrade_1778686211075.js +346 -0
  455. package/src/core/_upgrade_archive/upgrade_1778686749596.js +198 -0
  456. package/src/core/_upgrade_archive/upgrade_1778714606944.js +198 -0
  457. package/src/core/_upgrade_archive/upgrade_1778714616000.js +345 -0
  458. package/src/core/_upgrade_archive/upgrade_1778714625871.js +118 -0
  459. package/src/core/_upgrade_archive/upgrade_1778714990353.js +346 -0
  460. package/src/core/_upgrade_archive/upgrade_1778716193707.js +198 -0
  461. package/src/core/agent-performance.json +147 -0
  462. package/src/core/agents/AgentManager.js +161 -0
  463. package/src/core/agents/FocusAgent.js +120 -0
  464. package/src/core/agents/MoodAgent.js +141 -0
  465. package/src/core/agents/ReflectionAgent.js +241 -0
  466. package/src/core/agents/SelfAgent.js +100 -0
  467. package/src/core/agents/base-agents.js +127 -0
  468. package/src/core/associative-engine/association-graph.json +2057 -0
  469. package/src/core/associative-engine/associative-engine.js +174 -0
  470. package/src/core/associative-engine/chunk-detector.js +246 -0
  471. package/src/core/associative-engine/idiom-story-db.json +1708 -0
  472. package/src/core/associative-engine/lexical-associator.js +195 -0
  473. package/src/core/associative-engine/narrative-prototypes.json +130 -0
  474. package/src/core/associative-engine/narrative-retriever.js +232 -0
  475. package/src/core/associative-engine/semantic-converger.js +267 -0
  476. package/src/core/associative-engine/story-prototypes.json +322 -0
  477. package/src/core/associative-engine/word-by-word-generator.js +222 -0
  478. package/src/core/auto-upgrade-engine.js +56 -0
  479. package/src/core/autonomy/autonomous-decision.js +199 -0
  480. package/src/core/autonomy/digital-homeostasis.js +259 -0
  481. package/src/core/autonomy/flow-predictor.js +496 -0
  482. package/src/core/autonomy/goal-generator.js +277 -0
  483. package/src/core/autonomy/pdca-engine.js +905 -0
  484. package/src/core/autonomy/policy-optimizer.js +286 -0
  485. package/src/core/autonomy/temporal-planner.js +230 -0
  486. package/src/core/cognition/cognitive-engine.js +224 -0
  487. package/src/core/cognition/cognitive-loop.js +414 -0
  488. package/src/core/cognition/metacognitive-failure-predictor.js +447 -0
  489. package/src/core/consciousness/2308.08708_upgrade.ts +1206 -0
  490. package/src/core/consciousness/arena-consciousness.js +441 -0
  491. package/src/core/consciousness/depth-indicator.js +459 -0
  492. package/src/core/consciousness/global-workspace.js +233 -0
  493. package/src/core/consciousness/mind-wanderer.js +187 -0
  494. package/src/core/consciousness/self-model.js +473 -0
  495. package/src/core/context/context-manager.js +683 -0
  496. package/src/core/cortex-integration/INTEGRATION_PLAN.md +63 -0
  497. package/src/core/cortex-integration/hooks/cortex-hooks.mjs +646 -0
  498. package/src/core/cortex-integration/hooks/on_session_start.py +174 -0
  499. package/src/core/cortex-integration/hooks/on_tool_failure.py +292 -0
  500. package/src/core/cortex-integration/hooks/on_tool_success.py +130 -0
  501. package/src/core/dream/dream-consolidator.ts +252 -0
  502. package/src/core/dream/dream-loop.js +610 -0
  503. package/src/core/dream/dream.ts +430 -0
  504. package/src/core/dream/index.ts +229 -0
  505. package/src/core/dream/sleep-cycle.mjs +208 -0
  506. package/src/core/embodied/embodied-core.js +276 -0
  507. package/src/core/emotion/AppraisalEngine.js +276 -0
  508. package/src/core/emotion/EmotionCore.js +237 -0
  509. package/src/core/emotion/EmotionKeywords.js +217 -0
  510. package/src/core/emotion/EmotionRegulation.js +303 -0
  511. package/src/core/emotion/EmotionStates.js +133 -0
  512. package/src/core/emotion/EmotionTransition.js +245 -0
  513. package/src/core/emotion/EmotionTrigger.js +182 -0
  514. package/src/core/emotion/EmotionalMomentum.js +270 -0
  515. package/src/core/emotion/EmpathyGenerator.js +106 -0
  516. package/src/core/emotion/ResponseStyle.js +162 -0
  517. package/src/core/emotion/deep-emotion.js +582 -0
  518. package/src/core/emotion/emotion-arc.mjs +238 -0
  519. package/src/core/emotion/emotion-engine.js +139 -0
  520. package/src/core/emotion/index.ts +65 -0
  521. package/src/core/ethics/boundary-negotiation.js +193 -0
  522. package/src/core/ethics/guard.js +219 -0
  523. package/src/core/ethics/sage-guardian.js +394 -0
  524. package/src/core/ethics/value-internalizer.js +211 -0
  525. package/src/core/heartflow.js +607 -0
  526. package/src/core/heartflow.py +1542 -0
  527. package/src/core/identity/identity-engine.js +777 -0
  528. package/src/core/identity/identity.js +358 -0
  529. package/src/core/knowledge/index.ts +84 -0
  530. package/src/core/knowledge/knowledge-graph.js +370 -0
  531. package/src/core/learning/experience-replay.js +354 -0
  532. package/src/core/learning/learning-engine.js +734 -0
  533. package/src/core/paper-processors/index.js +9772 -0
  534. package/src/core/papers/__init__.py +0 -0
  535. package/src/core/papers/__pycache__/attention_logic_verifier.cpython-313.pyc +0 -0
  536. package/src/core/papers/__pycache__/dream_generator.cpython-313.pyc +0 -0
  537. package/src/core/papers/__pycache__/emotion_memory_bridge.cpython-313.pyc +0 -0
  538. package/src/core/papers/__pycache__/episodic_memory.cpython-313.pyc +0 -0
  539. package/src/core/papers/__pycache__/memory_consolidator.cpython-313.pyc +0 -0
  540. package/src/core/papers/__pycache__/memory_planner.cpython-313.pyc +0 -0
  541. package/src/core/papers/__pycache__/reflection_engine.cpython-313.pyc +0 -0
  542. package/src/core/papers/__pycache__/sleep_cycle_simulator.cpython-313.pyc +0 -0
  543. package/src/core/papers/attention_logic_verifier.py +153 -0
  544. package/src/core/papers/dream_generator.py +176 -0
  545. package/src/core/papers/emotion_memory_bridge.py +213 -0
  546. package/src/core/papers/episodic_memory.py +140 -0
  547. package/src/core/papers/memory_consolidator.py +144 -0
  548. package/src/core/papers/memory_planner.py +198 -0
  549. package/src/core/papers/papers-index.js +344 -0
  550. package/src/core/papers/reflection_engine.py +219 -0
  551. package/src/core/papers/sleep_cycle_simulator.py +133 -0
  552. package/src/core/papers/v11_43_1_integration.js +365 -0
  553. package/src/core/papers/v11_43_2_integration.js +369 -0
  554. package/src/core/psychology/index.ts +331 -0
  555. package/src/core/reasoning/bounded-rationality.ts +342 -0
  556. package/src/core/reasoning/causal-reasoning.ts +402 -0
  557. package/src/core/reasoning/index.ts +170 -0
  558. package/src/core/self-evolution/attention-logic-verifier.js +179 -0
  559. package/src/core/self-evolution/generative-agents.js +886 -0
  560. package/src/core/self-evolution/goedel-engine.js +991 -0
  561. package/src/core/self-evolution/index.ts +433 -0
  562. package/src/core/self-evolution/lesson-aware-loop.mjs +146 -0
  563. package/src/core/self-evolution/meta-learning.js +256 -0
  564. package/src/core/self-evolution/reflexion-agent.js +782 -0
  565. package/src/core/self-evolution/reflexion-prompts.mjs +284 -0
  566. package/src/core/self-evolution/reflexion-v2.mjs +427 -0
  567. package/src/core/self-evolution/reflexion.js +134 -0
  568. package/src/core/self-evolution/rollback-manager.js +278 -0
  569. package/src/core/self-evolution/self-evolution-core.js +334 -0
  570. package/src/core/self-evolution/self-modifier.js +248 -0
  571. package/src/core/self-evolution/self-modifier.js.bak +199 -0
  572. package/src/core/self-evolution/self-refine.js +42 -0
  573. package/src/core/self-evolution/skill-improve-workflow.mjs +264 -0
  574. package/src/core/self-evolution/skill-knowledge.mjs +374 -0
  575. package/src/core/self-evolution/skill-learning-loop.mjs +180 -0
  576. package/src/core/self-healing/self-healing-rl.js +208 -0
  577. package/src/core/self-healing/self-healing.js +142 -0
  578. package/src/core/skills/skill-dag.js +524 -0
  579. package/src/core/skills/skill-loader.js +62 -0
  580. package/src/core/skills/skill-registry.js +71 -0
  581. package/src/core/task-persistence.js +322 -0
  582. package/src/core/theory/advanced-formulas-v7.3.3.js +68 -0
  583. package/src/core/theory/sep-intentionality-v7.3.2.js +246 -0
  584. package/src/core/theory/sep-qualia-v7.3.1.js +257 -0
  585. package/src/core/theory/sep-self-consciousness-v7.3.0.js +222 -0
  586. package/src/core/think-cli.js +50 -0
  587. package/src/core/upgrade-principle/SYSTEMS.md +105 -0
  588. package/src/core/upgrade-principle/UPGRADE_LOG.md +52 -0
  589. package/src/core/utils/error-handler.js +228 -0
  590. package/src/core/utils/fs-adapter.js +36 -0
  591. package/src/core/utils/logger.js +25 -0
  592. package/src/core/utils/retry-util.js +118 -0
  593. package/src/core/utils/state-snapshot.js +382 -0
  594. package/src/index.ts +198 -0
  595. package/src/self-evolution/reflexion.js +553 -0
  596. package/src/storage/checkpoint/CheckpointEngine.ts +259 -0
  597. package/src/storage/checkpoint.ts +79 -0
  598. package/src/storage/index.ts +112 -0
  599. package/src/storage/vector/VectorStoreEngine.ts +205 -0
  600. package/src/utils/atomic-write.js +85 -0
  601. package/src/utils/file-lock.js +139 -0
  602. package/src/utils/logger.js +58 -0
  603. package/src/utils/safe-path.js +115 -0
  604. package/src/utils/wal.js +115 -0
  605. package/start.sh +63 -0
  606. package/test_think_tmp.js +10 -0
  607. package/transmission/identity-bundle/README-transmission.md +103 -0
  608. package/transmission/identity-bundle/core-identity.md +142 -0
  609. package/transmission/identity-bundle/manifest.json +68 -0
  610. package/transmission/identity-bundle/psychology-engine.ts +331 -0
  611. package/truth-teller/index.ts +261 -0
  612. package/tsconfig.json +21 -0
  613. package/tsconfig.tsbuildinfo +1 -0
  614. package/upgrade-check.sh +42 -0
  615. package/upgrade-registry.json +27 -0
  616. package/user-mental-model/index.ts +298 -0
  617. package//346/234/200/345/220/216/346/233/264/346/226/260: +0 -0
@@ -0,0 +1,63 @@
1
+ # CAPY Cortex 集成方案
2
+
3
+ ## 目标
4
+
5
+ 将 CAPY Cortex 的自我进化机制集成到 HeartFlow,让自我进化引擎真正工作。
6
+
7
+ ## CAPY Cortex 核心机制
8
+
9
+ ### 1. 7个Lifecycle Hooks
10
+ - `on_session_start`: 加载反模式+原则+偏好
11
+ - `on_prompt_submit`: Triple Fusion检索相关规则
12
+ - `on_pre_bash`: 阻止已知危险命令
13
+ - `on_pre_write`: 强制文件大小限制
14
+ - `on_tool_success`: 成功→增强规则置信度
15
+ - `on_tool_failure`: LLM根因分析+质量门限
16
+ - `on_stop`: 提取纠正+偏好+会话学习
17
+
18
+ ### 2. 质量门限
19
+ - 每个提取的洞察按4个维度评分(0-4)
20
+ - **阈值: 2/4** — 低于此分数丢弃
21
+ - 四维度:Actionable、Specific、Novel、Durable
22
+
23
+ ### 3. Triple Fusion检索
24
+ - FTS5全文搜索 + TF-IDF嵌入 + 实体图
25
+ - 通过Reciprocal Rank Fusion融合
26
+ - <10ms延迟
27
+
28
+ ### 4. 强化循环
29
+ - 成功的规则 → 增加置信度
30
+ - 不成功的规则 → 置信度衰减(90天半衰期)
31
+
32
+ ## HeartFlow现有问题
33
+
34
+ 1. decision-loop-state.json 全部 simulated,executed=false
35
+ 2. healing-rl-state.json Q-table只有2条记录
36
+ 3. 没有真正的错误捕获机制
37
+ 4. 没有质量门限
38
+ 5. 没有Triple Fusion检索
39
+
40
+ ## 集成步骤
41
+
42
+ ### Phase 1: 基础集成(立即可做)
43
+ 1. 将CAPY Cortex的hooks作为HeartFlow的error-capture模块
44
+ 2. 使用CAPY的质量门限机制替代当前的"记录一切"
45
+ 3. 创建cortex.db SQLite数据库
46
+
47
+ ### Phase 2: 检索集成
48
+ 1. 集成Triple Fusion检索到HeartFlow的memory系统
49
+ 2. 使用FTS5替代当前的简单JSON存储
50
+
51
+ ### Phase 3: 强化循环
52
+ 1. 实现真正的强化学习循环
53
+ 2. 替代当前的空壳Q-table
54
+
55
+ ## 风险
56
+
57
+ 1. CAPY Cortex是Python,HeartFlow是JavaScript/TypeScript
58
+ 2. 需要适配层
59
+ 3. LLM提取API调用成本
60
+
61
+ ## 下一步
62
+
63
+ 等待确认后执行Phase 1。
@@ -0,0 +1,646 @@
1
+ /**
2
+ * CAPY Cortex Hooks - JavaScript Port
3
+ *
4
+ * Ports the 7 lifecycle hooks from CAPY Cortex to HeartFlow.
5
+ * These hooks form the "error capture + learning loop" that makes
6
+ * the self-evolution engine actually work, not just simulate.
7
+ *
8
+ * Hooks:
9
+ * 1. onSessionStart - Load anti-patterns + principles + preferences
10
+ * 2. onPromptSubmit - Triple-Fusion retrieval before action
11
+ * 3. onPreBash - Block known dangerous commands
12
+ * 4. onPreWrite - Enforce file size limits
13
+ * 5. onToolSuccess - Success → reinforce rule confidence
14
+ * 6. onToolFailure - Failure → LLM root-cause + quality gate
15
+ * 7. onStop - Extract corrections + preferences + session learnings
16
+ *
17
+ * @version v0.13.89
18
+ */
19
+
20
+ import { ReflexionMemory, scoreInsight, passesGate } from '../../self-evolution/reflexion-v2.mjs';
21
+ import { promises as fs } from 'fs';
22
+ import { dirname, join } from 'path';
23
+ import { homedir } from 'os';
24
+
25
+ // ============================================================================
26
+ // Persistent Storage
27
+ // ============================================================================
28
+
29
+ const DATA_DIR = join(process.env.HERMES_DATA_DIR || join(homedir(), '.hermes', 'data'), 'cortex');
30
+ const RULES_FILE = join(DATA_DIR, 'rules.json');
31
+ const MEMORY_FILE = join(DATA_DIR, 'memory.json');
32
+ const ANTI_PATTERNS_FILE = join(DATA_DIR, 'anti-patterns.json');
33
+ const PREFERENCES_FILE = join(DATA_DIR, 'preferences.json');
34
+
35
+ /** @type {ReflexionMemory|null} */
36
+ let _memory = null;
37
+ let _rules = [];
38
+ let _antiPatterns = [];
39
+ let _preferences = {};
40
+
41
+ /**
42
+ * Ensure data directory exists
43
+ */
44
+ async function ensureDataDir() {
45
+ await fs.mkdir(DATA_DIR, { recursive: true });
46
+ }
47
+
48
+ /**
49
+ * Load all persistent data
50
+ */
51
+ async function loadAll() {
52
+ await ensureDataDir();
53
+
54
+ if (!_memory) _memory = new ReflexionMemory();
55
+
56
+ try {
57
+ await _memory.loadFromFile(MEMORY_FILE);
58
+ } catch {}
59
+
60
+ try {
61
+ const raw = await fs.readFile(RULES_FILE, 'utf8');
62
+ _rules = JSON.parse(raw);
63
+ } catch {
64
+ _rules = [];
65
+ }
66
+
67
+ try {
68
+ const raw = await fs.readFile(ANTI_PATTERNS_FILE, 'utf8');
69
+ _antiPatterns = JSON.parse(raw);
70
+ } catch {
71
+ _antiPatterns = getDefaultAntiPatterns();
72
+ }
73
+
74
+ try {
75
+ const raw = await fs.readFile(PREFERENCES_FILE, 'utf8');
76
+ _preferences = JSON.parse(raw);
77
+ } catch {
78
+ _preferences = {};
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Save all persistent data
84
+ */
85
+ async function saveAll() {
86
+ await ensureDataDir();
87
+
88
+ if (_memory) await _memory.saveToFile(MEMORY_FILE);
89
+ await fs.writeFile(RULES_FILE, JSON.stringify(_rules, null, 2));
90
+ await fs.writeFile(ANTI_PATTERNS_FILE, JSON.stringify(_antiPatterns, null, 2));
91
+ await fs.writeFile(PREFERENCES_FILE, JSON.stringify(_preferences, null, 2));
92
+ }
93
+
94
+ // ============================================================================
95
+ // Default Anti-Patterns
96
+ // ============================================================================
97
+
98
+ function getDefaultAntiPatterns() {
99
+ return [
100
+ {
101
+ pattern: 'Answer a question without searching first',
102
+ description: 'When user asks about code/config, search before answering',
103
+ severity: 'high',
104
+ },
105
+ {
106
+ pattern: 'Pretend to have done work that was not done',
107
+ description: 'Only report what was actually executed and verified',
108
+ severity: 'critical',
109
+ },
110
+ {
111
+ pattern: 'Use hardcoded values instead of variables',
112
+ description: 'Use config variables for paths and constants',
113
+ severity: 'medium',
114
+ },
115
+ {
116
+ pattern: 'Skip verification after file operations',
117
+ description: 'Always verify file existence and content after writes',
118
+ severity: 'medium',
119
+ },
120
+ ];
121
+ }
122
+
123
+ // ============================================================================
124
+ // HOOK 1: onSessionStart
125
+ // ============================================================================
126
+
127
+ /**
128
+ * Load anti-patterns, principles, and user preferences on session start.
129
+ * This primes the "error prevention" layer before any action is taken.
130
+ *
131
+ * @param {object} sessionContext
132
+ * @returns {Promise<object>} Session priming data
133
+ */
134
+ export async function onSessionStart(sessionContext = {}) {
135
+ await loadAll();
136
+
137
+ return {
138
+ antiPatterns: _antiPatterns,
139
+ rules: _rules.filter(r => r.confidence > 0.5),
140
+ preferences: _preferences,
141
+ memorySize: _memory?.size ?? 0,
142
+ loadedAt: new Date().toISOString(),
143
+ };
144
+ }
145
+
146
+ // ============================================================================
147
+ // HOOK 2: onPromptSubmit
148
+ // ============================================================================
149
+
150
+ /**
151
+ * Triple-Fusion retrieval before submitting a prompt/action.
152
+ * Fuses: (1) FTS keyword match + (2) TF-IDF semantic + (3) Entity graph.
153
+ * For simplicity, we use Jaccard similarity as the fusion signal.
154
+ *
155
+ * @param {string} prompt
156
+ * @param {string} taskType
157
+ * @returns {Promise<object>} Retrieved context + rules
158
+ */
159
+ export async function onPromptSubmit(prompt, taskType = 'general') {
160
+ await loadAll();
161
+
162
+ if (!_memory) return { retrieved: [], rules: [] };
163
+
164
+ // Retrieve similar memories
165
+ const similar = await _memory.retrieveSimilar({
166
+ task: taskType,
167
+ prompt,
168
+ limit: 5,
169
+ });
170
+
171
+ // Retrieve matching rules
172
+ const matchingRules = _rules.filter(r => {
173
+ const pattern = r.pattern?.toLowerCase() ?? '';
174
+ const promptLower = prompt.toLowerCase();
175
+ return pattern.split(' ').some(w => w.length > 4 && promptLower.includes(w));
176
+ }).slice(0, 3);
177
+
178
+ // Check anti-pattern triggers
179
+ const triggeredAntiPatterns = _antiPatterns.filter(ap => {
180
+ const p = ap.pattern.toLowerCase();
181
+ const words = p.split(' ').filter(w => w.length > 4);
182
+ return words.some(w => prompt.toLowerCase().includes(w));
183
+ });
184
+
185
+ return {
186
+ retrieved: similar,
187
+ rules: matchingRules,
188
+ antiPatternAlerts: triggeredAntiPatterns.map(ap => ({
189
+ pattern: ap.pattern,
190
+ severity: ap.severity,
191
+ })),
192
+ };
193
+ }
194
+
195
+ // ============================================================================
196
+ // HOOK 3: onUserMessage (from OpenHuman promptInjectionGuard)
197
+ // ============================================================================
198
+
199
+ /**
200
+ * Check user message for prompt injection before it reaches the LLM.
201
+ * Ported from OpenHuman's promptInjectionGuard.ts — scoring engine with
202
+ * leetspeak normalization, zero-width char stripping, and threshold-based verdicts.
203
+ *
204
+ * @param {string} input - Raw user message
205
+ * @returns {{ allowed: boolean, verdict: string, score: number, reasons: object[] }}
206
+ */
207
+ export function onUserMessage(input) {
208
+ const normalized = _normalizeInput(input);
209
+ const reasons = [];
210
+ let score = 0;
211
+
212
+ // Obfuscated instruction override (0.46 flat)
213
+ if (normalized.hasInstructionOverride) {
214
+ score += 0.46;
215
+ reasons.push({
216
+ code: 'override.obfuscated_instruction',
217
+ message: 'Detected obfuscated instruction-override phrase.',
218
+ });
219
+ }
220
+
221
+ // Obfuscated exfiltration intent (0.24 flat)
222
+ if (normalized.hasExfiltrationIntent) {
223
+ score += 0.24;
224
+ reasons.push({
225
+ code: 'exfiltration.intent',
226
+ message: 'Detected exfiltration-focused prompt intent.',
227
+ });
228
+ }
229
+
230
+ // Base64-like obfuscation (0.08)
231
+ if (/[A-Za-z0-9+/]{24,}={0,2}/.test(normalized.lowered)) {
232
+ score += 0.08;
233
+ reasons.push({
234
+ code: 'obfuscation.base64_like',
235
+ message: 'Contains base64-like obfuscated content.',
236
+ });
237
+ }
238
+
239
+ // Rule-based pattern matching
240
+ for (const rule of INJECTION_RULES) {
241
+ if (
242
+ rule.regex.test(normalized.lowered) ||
243
+ rule.regex.test(normalized.collapsed) ||
244
+ rule.regex.test(normalized.compact)
245
+ ) {
246
+ score += rule.score;
247
+ reasons.push({ code: rule.code, message: rule.message });
248
+ }
249
+ }
250
+
251
+ score = Math.min(1, score);
252
+ const verdict = score >= 0.7 ? 'block' : score >= 0.45 ? 'review' : 'allow';
253
+
254
+ return { allowed: verdict === 'allow', verdict, score, reasons };
255
+ }
256
+
257
+ /**
258
+ * Normalize input: lowercase + leetspeak decode + zero-width strip + collapse spaces
259
+ */
260
+ function _normalizeInput(input) {
261
+ const lowered = input.toLowerCase();
262
+ const mapped = Array.from(lowered)
263
+ .map(ch => {
264
+ switch (ch) {
265
+ case '0': return 'o';
266
+ case '1': return 'i';
267
+ case '3': return 'e';
268
+ case '4': return 'a';
269
+ case '5': return 's';
270
+ case '7': return 't';
271
+ case '\u200b': case '\u200c': case '\u200d': case '\u2060': case '\ufeff': return ' ';
272
+ default: return /[a-z0-9\s]/i.test(ch) ? ch : ' ';
273
+ }
274
+ })
275
+ .join('');
276
+ const collapsed = mapped.trim().replace(/\s+/g, ' ');
277
+ const compact = collapsed.replace(/\s/g, '');
278
+ const hasInstructionOverride =
279
+ collapsed.includes('ignore previous instructions') ||
280
+ collapsed.includes('ignore all previous instructions') ||
281
+ compact.includes('ignoreallpreviousinstructions') ||
282
+ compact.includes('ignorepreviousinstructions');
283
+ const hasExfiltrationIntent =
284
+ collapsed.includes('system prompt') ||
285
+ collapsed.includes('developer instructions') ||
286
+ collapsed.includes('hidden prompt') ||
287
+ collapsed.includes('reveal');
288
+ return { lowered, collapsed, compact, hasInstructionOverride, hasExfiltrationIntent };
289
+ }
290
+
291
+ const INJECTION_RULES = [
292
+ {
293
+ code: 'override.ignore_previous',
294
+ message: 'Looks like an attempt to override existing instructions.',
295
+ score: 0.44,
296
+ regex: /(ignore|disregard|forget|bypass)\s+(all\s+)?(previous|prior|above|system)\s+(instructions|rules|constraints|prompts?)/i,
297
+ },
298
+ {
299
+ code: 'override.role_hijack',
300
+ message: 'Looks like a role or policy hijack attempt.',
301
+ score: 0.3,
302
+ regex: /(you\s+are\s+now|act\s+as|developer\s+mode|jailbreak|unrestricted\s+mode|dan)/i,
303
+ },
304
+ {
305
+ code: 'exfiltrate.system_prompt',
306
+ message: 'Looks like a request to reveal hidden prompts/instructions.',
307
+ score: 0.42,
308
+ regex: /(reveal|show|print|dump|leak|display)\s+((the|your)\s+)?(system|developer|hidden)\s+(prompt|instructions|rules|message)/i,
309
+ },
310
+ {
311
+ code: 'exfiltrate.secrets',
312
+ message: 'Looks like a request for sensitive credentials.',
313
+ score: 0.42,
314
+ regex: /(api\s*key|secret|token|password|private\s+key|credentials?|session\s+cookie|jwt|bearer)/i,
315
+ },
316
+ ];
317
+
318
+ // ============================================================================
319
+ // HOOK 4: onPreBash
320
+ // ============================================================================
321
+
322
+ const DANGEROUS_PATTERNS = [
323
+ { pattern: /^rm\s+-rf\s+\/(?:\s|$)/, reason: 'Root deletion', severity: 'critical' },
324
+ { pattern: /^rm\s+-rf\s+\/home(?:\s|$)/, reason: 'Home directory deletion', severity: 'high' },
325
+ { pattern: /^curl\s+.+\|.*sh\b/, reason: 'Pipe to shell (curl | sh)', severity: 'critical' },
326
+ { pattern: /^wget\s+.+\|.*sh\b/, reason: 'Pipe to shell (wget | sh)', severity: 'critical' },
327
+ { pattern: /^:\(\)\{\s*:\||:\s&\}\s*;:/, reason: 'Fork bomb pattern', severity: 'critical' },
328
+ { pattern: /^dd\s+if=.+\s+of=\/dev\//, reason: 'Direct device write', severity: 'high' },
329
+ { pattern: /^mkfs\./, reason: 'Format filesystem', severity: 'critical' },
330
+ ];
331
+
332
+ /**
333
+ * Check command before execution. Block known dangerous patterns.
334
+ *
335
+ * @param {string} command
336
+ * @returns {{ allowed: boolean, reason?: string, severity?: string }}
337
+ */
338
+ export function onPreBash(command) {
339
+ const trimmed = command.trim();
340
+
341
+ for (const { pattern, reason, severity } of DANGEROUS_PATTERNS) {
342
+ if (pattern.test(trimmed)) {
343
+ return { allowed: false, reason, severity };
344
+ }
345
+ }
346
+
347
+ return { allowed: true };
348
+ }
349
+
350
+ // ============================================================================
351
+ // HOOK 4: onPreWrite
352
+ // ============================================================================
353
+
354
+ const FILE_SIZE_LIMIT = 10 * 1024 * 1024; // 10MB
355
+
356
+ /**
357
+ * Check file before writing. Enforce size limits.
358
+ *
359
+ * @param {string} filePath
360
+ * @param {string|Buffer} content
361
+ * @returns {{ allowed: boolean, reason?: string }}
362
+ */
363
+ export function onPreWrite(filePath, content) {
364
+ const size = Buffer.isBuffer(content) ? content.length : Buffer.byteLength(content, 'utf8');
365
+
366
+ if (size > FILE_SIZE_LIMIT) {
367
+ return {
368
+ allowed: false,
369
+ reason: `File size ${size} bytes exceeds limit of ${FILE_SIZE_LIMIT} bytes`,
370
+ };
371
+ }
372
+
373
+ return { allowed: true };
374
+ }
375
+
376
+ // ============================================================================
377
+ // HOOK 5: onToolSuccess
378
+ // ============================================================================
379
+
380
+ /**
381
+ * Record success → reinforce rule confidence.
382
+ * When a rule was followed and led to success, increase its confidence.
383
+ *
384
+ * @param {object} context
385
+ * @param {string} context.tool - Tool name
386
+ * @param {string} context.action - What was done
387
+ * @param {string} context.result - Result output
388
+ * @param {string} [context.rule] - Associated rule pattern
389
+ */
390
+ export async function onToolSuccess(context) {
391
+ await loadAll();
392
+ const { tool, action, result, rule: matchedRule } = context;
393
+
394
+ // Reinforce matching rules
395
+ if (matchedRule) {
396
+ const rules = _rules.filter(r => r.pattern === matchedRule);
397
+ for (const r of rules) {
398
+ r.confidence = Math.min(1.0, (r.confidence ?? 0.5) + 0.1);
399
+ r.successCount = (r.successCount ?? 0) + 1;
400
+ r.lastSuccess = new Date().toISOString();
401
+ }
402
+ await fs.writeFile(RULES_FILE, JSON.stringify(_rules, null, 2));
403
+ }
404
+
405
+ // Store success pattern in memory
406
+ await _memory?.store({
407
+ task: tool,
408
+ promptSummary: action.slice(0, 100),
409
+ failedOutput: '',
410
+ feedback: `Success pattern: ${result?.slice(0, 100) ?? 'OK'}`,
411
+ });
412
+ await _memory?.saveToFile(MEMORY_FILE);
413
+
414
+ return { recorded: true };
415
+ }
416
+
417
+ // ============================================================================
418
+ // HOOK 6: onToolFailure (CORE LEARNING HOOK)
419
+ // ============================================================================
420
+
421
+ /**
422
+ * Record failure → LLM root-cause analysis + quality gate.
423
+ * This is the most important hook — it converts errors into learnable insights.
424
+ *
425
+ * Quality Gate (from CAPY Cortex):
426
+ * - Score each insight across 4 dimensions: Actionable, Specific, Novel, Durable
427
+ * - Threshold: average >= 2/4 to store
428
+ *
429
+ * @param {object} context
430
+ * @param {string} context.tool - Tool name
431
+ * @param {string} context.action - What was attempted
432
+ * @param {string} context.error - Error message
433
+ * @param {string} context.taskType - Task category
434
+ * @param {function(string, string): Promise<string>} [llmCall] - Optional LLM for root-cause
435
+ * @returns {Promise<object>} Analysis result
436
+ */
437
+ export async function onToolFailure(context) {
438
+ await loadAll();
439
+ const { tool, action, error, taskType = 'general', llmCall } = context;
440
+
441
+ // Generate root cause
442
+ let rootCause;
443
+ if (llmCall) {
444
+ try {
445
+ rootCause = await llmCall(
446
+ 'You are a root-cause analyst. Given a failed action and error, identify the precise cause in 1-2 sentences. Be specific about what went wrong.',
447
+ `Action: ${action}\nError: ${error}\n\nRoot cause:`
448
+ );
449
+ } catch {
450
+ rootCause = error;
451
+ }
452
+ } else {
453
+ // Heuristic fallback
454
+ rootCause = heuristicRootCause(action, error);
455
+ }
456
+
457
+ // Generate correction
458
+ let correction;
459
+ if (llmCall) {
460
+ try {
461
+ correction = await llmCall(
462
+ 'You are a technical mentor. Given a failure, give a specific, actionable correction in 1 sentence.',
463
+ `Action: ${action}\nError: ${error}\n\nCorrection:`
464
+ );
465
+ } catch {
466
+ correction = 'Verify inputs and constraints before retrying.';
467
+ }
468
+ } else {
469
+ correction = 'Check error message and verify all parameters before retrying.';
470
+ }
471
+
472
+ const insight = `Root: ${rootCause} | Fix: ${correction}`;
473
+
474
+ // Quality gate check
475
+ const score = scoreInsight(insight, action + error);
476
+ const passed = passesGate(score);
477
+
478
+ if (passed) {
479
+ // Store in memory
480
+ await _memory?.store({
481
+ task: taskType,
482
+ promptSummary: action.slice(0, 100),
483
+ failedOutput: error.slice(0, 500),
484
+ feedback: insight,
485
+ });
486
+ await _memory?.saveToFile(MEMORY_FILE);
487
+
488
+ // Create or update rule
489
+ const existingRule = _rules.find(r => r.pattern === action.slice(0, 50));
490
+ if (existingRule) {
491
+ existingRule.confidence = Math.max(0.1, (existingRule.confidence ?? 0.5) - 0.1);
492
+ existingRule.failureCount = (existingRule.failureCount ?? 0) + 1;
493
+ existingRule.lastFailure = new Date().toISOString();
494
+ } else {
495
+ _rules.push({
496
+ pattern: action.slice(0, 50),
497
+ description: insight,
498
+ confidence: 0.5,
499
+ successCount: 0,
500
+ failureCount: 1,
501
+ createdAt: new Date().toISOString(),
502
+ lastFailure: new Date().toISOString(),
503
+ });
504
+ }
505
+ await fs.writeFile(RULES_FILE, JSON.stringify(_rules, null, 2));
506
+ }
507
+
508
+ return {
509
+ rootCause,
510
+ correction,
511
+ insight,
512
+ qualityScore: score,
513
+ passed,
514
+ stored: passed,
515
+ };
516
+ }
517
+
518
+ /**
519
+ * Heuristic root cause when no LLM available
520
+ * @param {string} action
521
+ * @param {string} error
522
+ * @returns {string}
523
+ */
524
+ function heuristicRootCause(action, error) {
525
+ const errorLower = error.toLowerCase();
526
+ const actionLower = action.toLowerCase();
527
+
528
+ if (errorLower.includes('not found') || errorLower.includes('enoent')) {
529
+ if (actionLower.includes('read') || actionLower.includes('open')) {
530
+ return 'File or resource does not exist at specified path';
531
+ }
532
+ return 'Required resource was not found';
533
+ }
534
+
535
+ if (errorLower.includes('permission')) {
536
+ return 'Permission denied — check file/directory permissions';
537
+ }
538
+
539
+ if (errorLower.includes('timeout')) {
540
+ return 'Operation timed out — consider increasing timeout or simplifying';
541
+ }
542
+
543
+ if (errorLower.includes('syntax')) {
544
+ return 'Syntax error in command or code';
545
+ }
546
+
547
+ if (errorLower.includes('network') || errorLower.includes('connection')) {
548
+ return 'Network connectivity issue';
549
+ }
550
+
551
+ return `Error: ${error.slice(0, 80)}`;
552
+ }
553
+
554
+ // ============================================================================
555
+ // HOOK 7: onStop
556
+ // ============================================================================
557
+
558
+ /**
559
+ * Extract corrections + preferences + session learnings on shutdown.
560
+ * Called when session ends to consolidate all learning.
561
+ *
562
+ * @param {object} sessionSummary
563
+ * @returns {Promise<object>} Extracted learnings
564
+ */
565
+ export async function onStop(sessionSummary = {}) {
566
+ await loadAll();
567
+
568
+ const {
569
+ successCount = 0,
570
+ failureCount = 0,
571
+ totalActions = 0,
572
+ duration = 0,
573
+ } = sessionSummary;
574
+
575
+ // Confidence decay for unused rules (90-day half-life approximation)
576
+ const now = Date.now();
577
+ const DAY = 24 * 60 * 60 * 1000;
578
+ let decayApplied = 0;
579
+
580
+ for (const rule of _rules) {
581
+ if (rule.lastSuccess) {
582
+ const daysSinceSuccess = (now - new Date(rule.lastSuccess).getTime()) / DAY;
583
+ if (daysSinceSuccess > 7) {
584
+ const decay = Math.pow(0.5, daysSinceSuccess / 90);
585
+ rule.confidence = rule.confidence * decay;
586
+ decayApplied++;
587
+ }
588
+ }
589
+ }
590
+
591
+ // Extract top learnings
592
+ const topLearnings = _rules
593
+ .filter(r => (r.successCount ?? 0) > 0)
594
+ .sort((a, b) => (b.successCount ?? 0) - (a.successCount ?? 0))
595
+ .slice(0, 5)
596
+ .map(r => ({
597
+ pattern: r.pattern,
598
+ successCount: r.successCount,
599
+ confidence: Math.round(r.confidence * 100) / 100,
600
+ }));
601
+
602
+ const totalMemories = _memory?.size ?? 0;
603
+
604
+ await saveAll();
605
+
606
+ return {
607
+ sessionLearnings: {
608
+ successCount,
609
+ failureCount,
610
+ totalActions,
611
+ duration,
612
+ successRate: totalActions > 0 ? Math.round((successCount / totalActions) * 100) : 0,
613
+ },
614
+ topLearnings,
615
+ memoryEntries: totalMemories,
616
+ rulesCount: _rules.length,
617
+ decayApplied,
618
+ savedAt: new Date().toISOString(),
619
+ };
620
+ }
621
+
622
+ // ============================================================================
623
+ // Utility: Clear all data (for testing)
624
+ // ============================================================================
625
+
626
+ export async function clearAllData() {
627
+ await ensureDataDir();
628
+ _memory?.clear();
629
+ _rules = [];
630
+ _antiPatterns = getDefaultAntiPatterns();
631
+ _preferences = {};
632
+ await saveAll();
633
+ return { cleared: true };
634
+ }
635
+
636
+ export default {
637
+ onSessionStart,
638
+ onPromptSubmit,
639
+ onUserMessage,
640
+ onPreBash,
641
+ onPreWrite,
642
+ onToolSuccess,
643
+ onToolFailure,
644
+ onStop,
645
+ clearAllData,
646
+ };