@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,174 @@
1
+ #!/usr/bin/env python3
2
+ """Capy Cortex Hook: SessionStart - Morning briefing.
3
+ Injects top anti-patterns, preferences, and principles into every new session.
4
+ Runs ONCE per session start. Must be fast (<200ms)."""
5
+
6
+ import json
7
+ import sys
8
+ import sqlite3
9
+ from pathlib import Path
10
+ from datetime import datetime
11
+
12
+ DB_PATH = Path(__file__).parent.parent / "cortex.db"
13
+
14
+
15
+ def is_noise_content(content):
16
+ """Filter out garbage content that shouldn't be injected."""
17
+ if not content or len(content) > 300:
18
+ return True
19
+
20
+ noise_substrings = [
21
+ "session is being continued",
22
+ "Base directory for this skill",
23
+ ]
24
+
25
+ content_lower = content.lower()
26
+ for noise in noise_substrings:
27
+ if noise.lower() in content_lower:
28
+ return True
29
+
30
+ # Skip HTML/XML tags
31
+ if content.strip().startswith("<"):
32
+ return True
33
+
34
+ return False
35
+
36
+
37
+ def main():
38
+ try:
39
+ data = json.loads(sys.stdin.read())
40
+ except Exception:
41
+ data = {}
42
+
43
+ if not DB_PATH.exists():
44
+ return
45
+
46
+ try:
47
+ db = sqlite3.connect(str(DB_PATH))
48
+ db.row_factory = sqlite3.Row
49
+ db.execute("PRAGMA journal_mode=WAL")
50
+ db.execute("PRAGMA busy_timeout=3000")
51
+
52
+ # Get anti-patterns with quality filter
53
+ all_anti_patterns = db.execute(
54
+ "SELECT content, severity, confidence FROM anti_patterns "
55
+ "WHERE confidence >= 0.6 "
56
+ "ORDER BY severity DESC, confidence DESC LIMIT 20"
57
+ ).fetchall()
58
+
59
+ anti_patterns = [
60
+ ap for ap in all_anti_patterns
61
+ if not is_noise_content(ap['content'])
62
+ ][:5] # Max 5 after filtering
63
+
64
+ # Get preferences with quality filter
65
+ all_prefs = db.execute(
66
+ "SELECT content, confidence FROM preferences "
67
+ "WHERE confidence >= 0.6 "
68
+ "ORDER BY confidence DESC, occurrences DESC LIMIT 10"
69
+ ).fetchall()
70
+
71
+ prefs = [
72
+ p for p in all_prefs
73
+ if not is_noise_content(p['content'])
74
+ ][:3] # Max 3 after filtering
75
+
76
+ # Get principles with quality filter
77
+ all_principles = db.execute(
78
+ "SELECT content, confidence FROM principles "
79
+ "WHERE confidence >= 0.6 "
80
+ "ORDER BY confidence DESC LIMIT 15"
81
+ ).fetchall()
82
+
83
+ principles = [
84
+ p for p in all_principles
85
+ if not is_noise_content(p['content'])
86
+ ][:5] # Max 5 after filtering
87
+
88
+ # Get metadata for header
89
+ rule_count = db.execute(
90
+ "SELECT COUNT(*) FROM rules WHERE maturity != 'deprecated'"
91
+ ).fetchone()[0]
92
+
93
+ last_maintenance = db.execute(
94
+ "SELECT value FROM meta WHERE key = 'last_maintenance'"
95
+ ).fetchone()
96
+
97
+ maintenance_date = "unknown"
98
+ if last_maintenance and last_maintenance['value']:
99
+ try:
100
+ dt = datetime.fromisoformat(last_maintenance['value'])
101
+ maintenance_date = dt.strftime("%Y-%m-%d")
102
+ except Exception:
103
+ pass
104
+
105
+ # Phase 4E: Detect topics from workspace path
106
+ detected_topics = []
107
+ cwd = data.get("cwd", "")
108
+ try:
109
+ import importlib.util
110
+ te_path = Path(__file__).resolve().parent.parent / "scripts" / "topic_engine.py"
111
+ # SECURITY: validate resolved path stays within HeartFlow's scripts directory
112
+ # to prevent any path traversal risk from cwd being set to unexpected locations
113
+ if te_path.resolve().parent != (Path(__file__).resolve().parent.parent):
114
+ te_path = None
115
+ if te_path and te_path.exists():
116
+ spec = importlib.util.spec_from_file_location("topic_engine", str(te_path))
117
+ if spec is not None and spec.loader is not None:
118
+ te = importlib.util.module_from_spec(spec)
119
+ spec.loader.exec_module(te) # noqa: S322
120
+ detected_topics = te.detect_topics_fast(cwd, file_paths=[cwd])
121
+ except Exception:
122
+ pass
123
+
124
+ # Log session start event with detected topics
125
+ db.execute(
126
+ "INSERT INTO events (event_type, metadata) VALUES (?, ?)",
127
+ ("session_start", json.dumps({
128
+ "session_id": data.get("session_id", ""),
129
+ "cwd": cwd,
130
+ "detected_topics": detected_topics,
131
+ }))
132
+ )
133
+ db.commit()
134
+ db.close()
135
+
136
+ lines = []
137
+ if anti_patterns or prefs or principles:
138
+ lines.append("## Cortex v3: Knowledge")
139
+ lines.append(f"({rule_count} rules, last maintained: {maintenance_date})\n")
140
+
141
+ if anti_patterns:
142
+ lines.append("### NEVER DO (learned from past mistakes)")
143
+ for ap in anti_patterns:
144
+ lines.append(f"- [{ap['severity'].upper()}] {ap['content']}")
145
+ lines.append("")
146
+
147
+ if prefs:
148
+ lines.append("### User Preferences")
149
+ for p in prefs:
150
+ lines.append(f"- {p['content']}")
151
+ lines.append("")
152
+
153
+ if principles:
154
+ lines.append("### Principles (distilled from experience)")
155
+ for p in principles:
156
+ lines.append(f"- {p['content']}")
157
+ lines.append("")
158
+
159
+ if lines:
160
+ context = "\n".join(lines)
161
+ output = {
162
+ "hookSpecificOutput": {
163
+ "hookEventName": "SessionStart",
164
+ "additionalContext": context
165
+ }
166
+ }
167
+ print(json.dumps(output))
168
+
169
+ except Exception:
170
+ pass # Hooks must NEVER crash
171
+
172
+
173
+ if __name__ == "__main__":
174
+ main()
@@ -0,0 +1,292 @@
1
+ #!/usr/bin/env python3
2
+ """Capy Cortex Hook: PostToolUseFailure - Pain reflex.
3
+ Records actionable tool failures as error patterns. Runs async (non-blocking)."""
4
+
5
+ import json
6
+ import sys
7
+ import sqlite3
8
+ import re
9
+ from pathlib import Path
10
+
11
+ DB_PATH = Path(__file__).parent.parent / "cortex.db"
12
+
13
+ # Tools to skip - errors from these are not actionable
14
+ SKIP_TOOLS = {"TaskOutput", "Read"}
15
+
16
+ # Error pattern extractors with categories
17
+ ERROR_PATTERNS = [
18
+ # npm/yarn dependency errors
19
+ (r"(?:npm|yarn) ERR.*?(?:ERESOLVE|peer dep|conflict)", "dependency_error",
20
+ "npm dependency resolution: use --legacy-peer-deps or resolve version conflicts"),
21
+ (r"Cannot find module ['\"]([^'\"]+)['\"]", "dependency_error",
22
+ lambda m: f"Missing Node.js module '{m.group(1)}': run npm install"),
23
+ (r"ModuleNotFoundError: No module named ['\"]([^'\"]+)['\"]", "dependency_error",
24
+ lambda m: f"Missing Python module '{m.group(1)}': run pip install"),
25
+
26
+ # File system errors
27
+ (r"(?:No such file or directory|ENOENT).*?['\"]([^'\"]+)['\"]", "file_not_found",
28
+ lambda m: f"File not found: verify path exists: {m.group(1)}"),
29
+ (r"(?:Permission denied|EACCES)", "permission_denied",
30
+ "Permission denied: check file permissions or run with appropriate access"),
31
+ (r"(?:EEXIST|File exists)", "file_exists",
32
+ "File already exists: remove existing file or use different path"),
33
+
34
+ # Compilation errors
35
+ (r"(?:SyntaxError|ParseError|Unexpected token)", "syntax_error",
36
+ "Syntax error: review code for syntax issues"),
37
+ (r"TypeError: .* is not a function", "type_error",
38
+ "Type error: verify function exists and is callable"),
39
+ (r"ReferenceError: (\\w+) is not defined", "reference_error",
40
+ lambda m: f"Undefined reference: '{m.group(1)}' not declared"),
41
+ (r"(?:compilation failed|build error|compile error)", "compilation_error",
42
+ "Compilation failed: review error output for specific issues"),
43
+
44
+ # Network errors
45
+ (r"(?:ECONNREFUSED|Connection refused|ETIMEDOUT)", "network_error",
46
+ "Network connection failed: verify service is running and accessible"),
47
+ (r"(?:getaddrinfo|DNS lookup failed|EAI_AGAIN)", "network_error",
48
+ "DNS resolution failed: check network connectivity"),
49
+ (r"(?:404|Not Found|HTTP.*?404)", "network_error",
50
+ "HTTP 404: verify URL endpoint exists"),
51
+ (r"(?:401|403|Unauthorized|Forbidden)", "auth_error",
52
+ "Authentication failed: verify credentials or permissions"),
53
+
54
+ # Git errors
55
+ (r"fatal: (?:not a git repository|Not a git repository)", "git_error",
56
+ "Not a git repository: initialize git or run from git root"),
57
+ (r"error: Your local changes.*?would be overwritten", "git_error",
58
+ "Git conflict: commit or stash local changes before merge/checkout"),
59
+ (r"fatal: remote.*?already exists", "git_error",
60
+ "Git remote exists: use different name or update existing remote"),
61
+
62
+ # Database errors
63
+ (r"(?:OperationalError|database is locked)", "database_error",
64
+ "Database locked: close other connections or retry"),
65
+ (r"(?:IntegrityError|UNIQUE constraint failed)", "database_error",
66
+ "Database integrity violation: check for duplicate entries"),
67
+
68
+ # Port/socket errors
69
+ (r"(?:EADDRINUSE|address already in use).*?port (\\d+)", "port_conflict",
70
+ lambda m: f"Port {m.group(1)} already in use: stop existing service or use different port"),
71
+
72
+ # Memory/resource errors
73
+ (r"(?:OutOfMemoryError|heap out of memory|Cannot allocate memory)", "resource_error",
74
+ "Out of memory: reduce memory usage or increase available memory"),
75
+ (r"(?:EMFILE|too many open files)", "resource_error",
76
+ "Too many open files: close unused file handles or increase limit"),
77
+ ]
78
+
79
+
80
+ def normalize_error_text(text):
81
+ """Remove noise from error text for better pattern matching."""
82
+ # Remove tool IDs (toolu_bdrk_xxxx)
83
+ text = re.sub(r"toolu_[a-zA-Z0-9_]+", "", text)
84
+ # Remove common timestamps
85
+ text = re.sub(r"\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}", "", text)
86
+ # Remove hex addresses/hashes
87
+ text = re.sub(r"0x[0-9a-fA-F]+", "", text)
88
+ # Remove UUIDs
89
+ text = re.sub(r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", "", text)
90
+ # Normalize whitespace
91
+ text = re.sub(r"\s+", " ", text).strip()
92
+ return text
93
+
94
+
95
+ def extract_error_pattern(tool_name, tool_response, tool_input=None):
96
+ """Extract actionable error pattern from tool response.
97
+
98
+ Returns (category, actionable_insight, pattern_key) or None if not actionable.
99
+ """
100
+ # Normalize the error text
101
+ normalized = normalize_error_text(tool_response)
102
+
103
+ # Try to match known patterns
104
+ for pattern_re, category, insight_template in ERROR_PATTERNS:
105
+ match = re.search(pattern_re, tool_response, re.IGNORECASE | re.DOTALL)
106
+ if match:
107
+ # Generate insight (either static string or lambda)
108
+ if callable(insight_template):
109
+ insight = insight_template(match)
110
+ else:
111
+ insight = insight_template
112
+
113
+ # Create pattern key for deduplication (category + normalized pattern)
114
+ pattern_key = f"{category}:{normalized[:200]}"
115
+ return category, insight, pattern_key
116
+
117
+ # Check for generic exit codes without useful info
118
+ if re.search(r"Exit code \d+$", tool_response.strip()):
119
+ return None # Skip generic exit codes
120
+
121
+ # If error is too short or too long, skip
122
+ if len(normalized) < 10 or len(normalized) > 1000:
123
+ return None
124
+
125
+ return None
126
+
127
+
128
+ def find_similar_pattern(db, insight, category):
129
+ """Check if similar error pattern exists in database.
130
+ Uses exact content match (fast, indexed) with FTS5 fallback.
131
+ Returns rule ID if found, None otherwise.
132
+ """
133
+ try:
134
+ # 1. Exact content match (uses unique index)
135
+ result = db.execute(
136
+ "SELECT id FROM rules WHERE content = ? LIMIT 1",
137
+ (insight,)
138
+ ).fetchone()
139
+ if result:
140
+ return result[0]
141
+
142
+ # 2. FTS5 fuzzy fallback - match on significant words
143
+ words = [w for w in insight.lower().split() if len(w) > 4 and w.isalnum()][:5]
144
+ if words:
145
+ fts_q = " AND ".join(words)
146
+ if fts_q:
147
+ result = db.execute("""
148
+ SELECT r.id FROM rules_fts
149
+ JOIN rules r ON rules_fts.rowid = r.id
150
+ WHERE rules_fts MATCH ? AND r.category = ?
151
+ LIMIT 1
152
+ """, (fts_q, category)).fetchone()
153
+ if result:
154
+ return result[0]
155
+ except Exception:
156
+ pass
157
+ return None
158
+
159
+
160
+ def main():
161
+ try:
162
+ data = json.loads(sys.stdin.read())
163
+ except Exception:
164
+ return
165
+
166
+ if not DB_PATH.exists():
167
+ return
168
+
169
+ try:
170
+ tool_name = data.get("tool_name", "unknown")
171
+ tool_response = str(data.get("tool_response", ""))
172
+ session_id = data.get("session_id", "")
173
+ workspace = data.get("source_workspace", "")
174
+
175
+ # Skip non-actionable tools
176
+ if tool_name in SKIP_TOOLS:
177
+ return
178
+
179
+ # Skip empty responses
180
+ if not tool_response or len(tool_response.strip()) < 5:
181
+ return
182
+
183
+ tool_input = data.get("tool_input", {})
184
+ normalized = normalize_error_text(tool_response)
185
+
186
+ # Path 1: Regex extraction (fast, <1ms cache for known patterns)
187
+ result = extract_error_pattern(tool_name, tool_response, tool_input)
188
+ extraction_method = 'regex'
189
+ quality_score = 0
190
+
191
+ if result:
192
+ category, insight, pattern_key = result
193
+ elif len(normalized) >= 30:
194
+ # Path 2: LLM quality-gated extraction (causal analysis + quality score)
195
+ try:
196
+ sys.path.insert(0, str(Path(__file__).parent.parent / "scripts"))
197
+ from llm_extract import extract_with_quality_gate
198
+ llm_rule, score = extract_with_quality_gate(
199
+ tool_name, tool_input, tool_response, session_id=session_id)
200
+ if llm_rule:
201
+ category = llm_rule['category']
202
+ insight = llm_rule['content']
203
+ pattern_key = f"llm_v2:{category}:{normalized[:150]}"
204
+ extraction_method = 'llm_v2'
205
+ quality_score = score
206
+ else:
207
+ return # Below quality threshold or LLM failed
208
+ except Exception:
209
+ return
210
+ else:
211
+ return # Not actionable
212
+
213
+ # Store pattern with deduplication
214
+ db = sqlite3.connect(str(DB_PATH))
215
+ db.execute("PRAGMA journal_mode=WAL")
216
+ db.execute("PRAGMA busy_timeout=3000")
217
+
218
+ # Check for existing similar pattern
219
+ existing_id = find_similar_pattern(db, insight, category)
220
+
221
+ if existing_id:
222
+ # Increment occurrence count
223
+ db.execute("""
224
+ UPDATE rules SET
225
+ occurrences = occurrences + 1,
226
+ last_seen = datetime('now')
227
+ WHERE id = ?
228
+ """, (existing_id,))
229
+ else:
230
+ # Create new error pattern
231
+ evidence_json = json.dumps({
232
+ "pattern_key": pattern_key,
233
+ "tool": tool_name,
234
+ "example_response": tool_response[:300]
235
+ })
236
+
237
+ db.execute("""
238
+ INSERT INTO rules (
239
+ content, category, confidence, occurrences,
240
+ maturity, harmful_count, source_session, source_workspace,
241
+ evidence, quality_score, extraction_method,
242
+ created_at, last_seen
243
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))
244
+ """, (insight, category, 0.5, 1, 'candidate', 0, session_id, workspace,
245
+ evidence_json, quality_score, extraction_method))
246
+
247
+ # Auto-assign topic (Phase 4F)
248
+ new_rule_id = db.execute("SELECT last_insert_rowid()").fetchone()[0]
249
+ try:
250
+ sys.path.insert(0, str(Path(__file__).parent.parent / "scripts"))
251
+ from topic_engine import detect_topic_for_rule
252
+ topic = detect_topic_for_rule(insight, category)
253
+ topic_row = db.execute(
254
+ "SELECT id FROM topics WHERE name = ?", (topic,)
255
+ ).fetchone()
256
+ if topic_row:
257
+ db.execute(
258
+ "INSERT OR IGNORE INTO rule_topics (rule_id, topic_id) VALUES (?, ?)",
259
+ (new_rule_id, topic_row[0])
260
+ )
261
+ db.execute(
262
+ "UPDATE topics SET rule_count = rule_count + 1 WHERE id = ?",
263
+ (topic_row[0],)
264
+ )
265
+ except Exception:
266
+ pass # Topic assignment is best-effort
267
+
268
+ # Log event
269
+ db.execute(
270
+ "INSERT INTO events (event_type, metadata) VALUES (?, ?)",
271
+ ("tool_failure_pattern", json.dumps({
272
+ "tool": tool_name,
273
+ "category": category,
274
+ "pattern_key": pattern_key[:100]
275
+ }))
276
+ )
277
+
278
+ db.commit()
279
+ db.close()
280
+
281
+ # Mark TF-IDF as dirty
282
+ db2 = sqlite3.connect(str(DB_PATH))
283
+ db2.execute("UPDATE meta SET value = '1' WHERE key = 'tfidf_dirty'")
284
+ db2.commit()
285
+ db2.close()
286
+
287
+ except Exception:
288
+ pass # Hooks must NEVER crash
289
+
290
+
291
+ if __name__ == "__main__":
292
+ main()
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env python3
2
+ """Capy Cortex Hook: PostToolUse - Success credit.
3
+ When tools succeed, credit recently surfaced rules to close the feedback loop.
4
+ This is the MISSING PIECE that makes Cortex actually learn from success."""
5
+
6
+ import json
7
+ import sys
8
+ import sqlite3
9
+ from pathlib import Path
10
+
11
+ DB_PATH = Path(__file__).parent.parent / "cortex.db"
12
+
13
+ # Tools where success is meaningful (skip Read, Glob, Grep - they always "succeed")
14
+ CREDIT_TOOLS = {"Bash", "Write", "Edit", "NotebookEdit"}
15
+
16
+ # Skip tools that are internal/meta
17
+ SKIP_TOOLS = {"TaskOutput", "TodoWrite", "SendMessage", "AskUserQuestion"}
18
+
19
+ # Confidence boost per successful credit (small, accumulates over time)
20
+ CONFIDENCE_BOOST = 0.02
21
+ MAX_CONFIDENCE = 0.95
22
+
23
+
24
+ def is_success(tool_name, tool_response):
25
+ """Determine if a tool response indicates success."""
26
+ if not tool_response:
27
+ return False
28
+
29
+ response_str = str(tool_response)
30
+
31
+ # Bash: check for error indicators
32
+ if tool_name == "Bash":
33
+ # Explicit failure indicators
34
+ fail_indicators = [
35
+ "Exit code", "Error:", "error:", "ENOENT", "EACCES",
36
+ "Permission denied", "command not found", "No such file",
37
+ "npm ERR", "ModuleNotFoundError", "SyntaxError",
38
+ "TypeError", "ReferenceError", "fatal:",
39
+ ]
40
+ for indicator in fail_indicators:
41
+ if indicator in response_str:
42
+ return False
43
+ return True
44
+
45
+ # Write/Edit: success if no error
46
+ if tool_name in ("Write", "Edit", "NotebookEdit"):
47
+ if "error" in response_str.lower() or "failed" in response_str.lower():
48
+ return False
49
+ return True
50
+
51
+ return True
52
+
53
+
54
+ def main():
55
+ try:
56
+ data = json.loads(sys.stdin.read())
57
+ except Exception:
58
+ return
59
+
60
+ if not DB_PATH.exists():
61
+ return
62
+
63
+ try:
64
+ tool_name = data.get("tool_name", "unknown")
65
+ tool_response = str(data.get("tool_response", ""))
66
+ session_id = data.get("session_id", "")
67
+
68
+ # Skip non-meaningful tools
69
+ if tool_name in SKIP_TOOLS:
70
+ return
71
+ if tool_name not in CREDIT_TOOLS:
72
+ return
73
+
74
+ # Only credit on success
75
+ if not is_success(tool_name, tool_response):
76
+ return
77
+
78
+ db = sqlite3.connect(str(DB_PATH))
79
+ db.execute("PRAGMA journal_mode=WAL")
80
+ db.execute("PRAGMA busy_timeout=2000")
81
+
82
+ # Find recently surfaced rules for this session (not yet credited)
83
+ surfaced = db.execute("""
84
+ SELECT id, rule_id FROM surfaced_rules
85
+ WHERE session_id = ? AND credited = 0
86
+ ORDER BY surfaced_at DESC LIMIT 10
87
+ """, (session_id,)).fetchall()
88
+
89
+ if not surfaced:
90
+ db.close()
91
+ return
92
+
93
+ credited_count = 0
94
+ for surf_id, rule_id in surfaced:
95
+ # Increment helpful_count and boost confidence
96
+ db.execute("""
97
+ UPDATE rules SET
98
+ helpful_count = helpful_count + 1,
99
+ confidence = MIN(confidence + ?, ?),
100
+ last_seen = datetime('now')
101
+ WHERE id = ? AND maturity != 'deprecated'
102
+ """, (CONFIDENCE_BOOST, MAX_CONFIDENCE, rule_id))
103
+
104
+ # Mark as credited so we don't double-count
105
+ db.execute(
106
+ "UPDATE surfaced_rules SET credited = 1 WHERE id = ?",
107
+ (surf_id,)
108
+ )
109
+ credited_count += 1
110
+
111
+ if credited_count > 0:
112
+ # Log the credit event
113
+ db.execute(
114
+ "INSERT INTO events (event_type, metadata) VALUES (?, ?)",
115
+ ("success_credit", json.dumps({
116
+ "session_id": session_id,
117
+ "tool": tool_name,
118
+ "rules_credited": credited_count,
119
+ }))
120
+ )
121
+
122
+ db.commit()
123
+ db.close()
124
+
125
+ except Exception:
126
+ pass # Hooks must NEVER crash
127
+
128
+
129
+ if __name__ == "__main__":
130
+ main()