@yun520-1/heartflow 0.15.2 → 0.16.0
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.
- package/README.md +64 -163
- package/VERSION +1 -1
- package/install.sh +26 -117
- package/meaningful-core.json +26 -0
- package/package.json +9 -18
- package/src/core/heartflow.js +187 -532
- package/src/dream/engine.js +99 -0
- package/src/evolution/loop.js +145 -0
- package/src/psychology/engine.js +268 -0
- package/tests/run.js +195 -0
- package/AI-AGENT-README.md +0 -154
- package/CLAIMS.md +0 -23
- package/CORE_VALUES.md +0 -50
- package/INSTALL_FOR_AI.md +0 -104
- package/QUICK_START.md +0 -77
- package/READ/refresh_11.2.6.md +0 -6
- package/README.zh.md +0 -49
- package/REPO_STRUCTURE.md +0 -47
- package/SKILL.md.new +0 -1
- package/_test_memory.mjs +0 -52
- package/assets/banner.png +0 -0
- package/bin/cli.js +0 -167
- package/bin/setup.js +0 -382
- package/co-evolution/index.ts +0 -511
- package/com.heartflow.auto-evolution.plist.disabled +0 -26
- package/com.heartflow.auto-upgrade.plist.disabled +0 -26
- package/com.heartflow.comfyui-monitor.plist.disabled +0 -22
- package/com.heartflow.enhanced-upgrade.plist.disabled +0 -22
- package/com.heartflow.full-audit.plist +0 -28
- package/com.heartflow.github-audit.plist +0 -21
- package/com.heartflow.paper-upgrade.plist.disabled +0 -21
- package/config/ai-config.json +0 -12
- package/config/ai-providers.json +0 -14
- package/dict-data/generate-graph.js +0 -203
- package/dist/agent/runtime/AgentRuntime.d.ts +0 -212
- package/dist/agent/runtime/AgentRuntime.d.ts.map +0 -1
- package/dist/agent/runtime/AgentRuntime.js +0 -355
- package/dist/agent/runtime/AgentRuntime.js.map +0 -1
- package/dist/agent/runtime/PlanExecutor.d.ts +0 -132
- package/dist/agent/runtime/PlanExecutor.d.ts.map +0 -1
- package/dist/agent/runtime/PlanExecutor.js +0 -322
- package/dist/agent/runtime/PlanExecutor.js.map +0 -1
- package/dist/agent/runtime/TaskGraph.d.ts +0 -170
- package/dist/agent/runtime/TaskGraph.d.ts.map +0 -1
- package/dist/agent/runtime/TaskGraph.js +0 -390
- package/dist/agent/runtime/TaskGraph.js.map +0 -1
- package/dist/agent/runtime/TaskScheduler.d.ts +0 -120
- package/dist/agent/runtime/TaskScheduler.d.ts.map +0 -1
- package/dist/agent/runtime/TaskScheduler.js +0 -301
- package/dist/agent/runtime/TaskScheduler.js.map +0 -1
- package/dist/agent/runtime/index.d.ts +0 -17
- package/dist/agent/runtime/index.d.ts.map +0 -1
- package/dist/agent/runtime/index.js +0 -22
- package/dist/agent/runtime/index.js.map +0 -1
- package/dist/agent/runtime/test-runtime.d.ts +0 -2
- package/dist/agent/runtime/test-runtime.d.ts.map +0 -1
- package/dist/agent/runtime/test-runtime.js +0 -71
- package/dist/agent/runtime/test-runtime.js.map +0 -1
- package/dist/agent/tools/BashTool.d.ts +0 -44
- package/dist/agent/tools/BashTool.d.ts.map +0 -1
- package/dist/agent/tools/BashTool.js +0 -355
- package/dist/agent/tools/BashTool.js.map +0 -1
- package/dist/agent/tools/FileReadTool.d.ts +0 -29
- package/dist/agent/tools/FileReadTool.d.ts.map +0 -1
- package/dist/agent/tools/FileReadTool.js +0 -196
- package/dist/agent/tools/FileReadTool.js.map +0 -1
- package/dist/agent/tools/FileWriteTool.d.ts +0 -35
- package/dist/agent/tools/FileWriteTool.d.ts.map +0 -1
- package/dist/agent/tools/FileWriteTool.js +0 -204
- package/dist/agent/tools/FileWriteTool.js.map +0 -1
- package/dist/agent/tools/Tool.d.ts +0 -75
- package/dist/agent/tools/Tool.d.ts.map +0 -1
- package/dist/agent/tools/Tool.js +0 -54
- package/dist/agent/tools/Tool.js.map +0 -1
- package/dist/agent/tools/WebSearchTool.d.ts +0 -27
- package/dist/agent/tools/WebSearchTool.d.ts.map +0 -1
- package/dist/agent/tools/WebSearchTool.js +0 -136
- package/dist/agent/tools/WebSearchTool.js.map +0 -1
- package/dist/cli/commands/engines.d.ts +0 -39
- package/dist/cli/commands/engines.d.ts.map +0 -1
- package/dist/cli/commands/engines.js +0 -275
- package/dist/cli/commands/engines.js.map +0 -1
- package/dist/cli/commands/health.d.ts +0 -34
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js +0 -381
- package/dist/cli/commands/health.js.map +0 -1
- package/dist/cli/commands/repl.d.ts +0 -40
- package/dist/cli/commands/repl.d.ts.map +0 -1
- package/dist/cli/commands/repl.js +0 -286
- package/dist/cli/commands/repl.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -22
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -266
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/index.d.ts +0 -7
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -13
- package/dist/cli/index.js.map +0 -1
- package/dist/core/consciousness/2308.08708_upgrade.d.ts +0 -321
- package/dist/core/consciousness/2308.08708_upgrade.d.ts.map +0 -1
- package/dist/core/consciousness/2308.08708_upgrade.js +0 -917
- package/dist/core/consciousness/2308.08708_upgrade.js.map +0 -1
- package/dist/core/dream/dream-consolidator.d.ts +0 -11
- package/dist/core/dream/dream-consolidator.d.ts.map +0 -1
- package/dist/core/dream/dream-consolidator.js +0 -188
- package/dist/core/dream/dream-consolidator.js.map +0 -1
- package/dist/core/dream/dream.d.ts +0 -71
- package/dist/core/dream/dream.d.ts.map +0 -1
- package/dist/core/dream/dream.js +0 -318
- package/dist/core/dream/dream.js.map +0 -1
- package/dist/core/dream/index.d.ts +0 -38
- package/dist/core/dream/index.d.ts.map +0 -1
- package/dist/core/dream/index.js +0 -185
- package/dist/core/dream/index.js.map +0 -1
- package/dist/core/emotion/deep-emotion.js +0 -574
- package/dist/core/emotion/emotion-engine.js +0 -138
- package/dist/core/emotion/index.d.ts +0 -44
- package/dist/core/emotion/index.d.ts.map +0 -1
- package/dist/core/emotion/index.js +0 -41
- package/dist/core/emotion/index.js.map +0 -1
- package/dist/core/heartcore/health-check.d.ts +0 -43
- package/dist/core/heartcore/health-check.d.ts.map +0 -1
- package/dist/core/heartcore/health-check.js +0 -152
- package/dist/core/heartcore/health-check.js.map +0 -1
- package/dist/core/heartcore/heartbeat.d.ts +0 -45
- package/dist/core/heartcore/heartbeat.d.ts.map +0 -1
- package/dist/core/heartcore/heartbeat.js +0 -127
- package/dist/core/heartcore/heartbeat.js.map +0 -1
- package/dist/core/heartcore/sleep-wake.d.ts +0 -61
- package/dist/core/heartcore/sleep-wake.d.ts.map +0 -1
- package/dist/core/heartcore/sleep-wake.js +0 -173
- package/dist/core/heartcore/sleep-wake.js.map +0 -1
- package/dist/core/heartcore/startup-check.d.ts +0 -38
- package/dist/core/heartcore/startup-check.d.ts.map +0 -1
- package/dist/core/heartcore/startup-check.js +0 -148
- package/dist/core/heartcore/startup-check.js.map +0 -1
- package/dist/core/index.js +0 -267
- package/dist/core/knowledge/index.d.ts +0 -95
- package/dist/core/knowledge/index.d.ts.map +0 -1
- package/dist/core/knowledge/index.js +0 -14
- package/dist/core/knowledge/index.js.map +0 -1
- package/dist/core/knowledge/knowledge-graph.js +0 -359
- package/dist/core/psychology/index.d.ts +0 -59
- package/dist/core/psychology/index.d.ts.map +0 -1
- package/dist/core/psychology/index.js +0 -268
- package/dist/core/psychology/index.js.map +0 -1
- package/dist/core/reasoning/bounded-rationality.d.ts +0 -76
- package/dist/core/reasoning/bounded-rationality.d.ts.map +0 -1
- package/dist/core/reasoning/bounded-rationality.js +0 -257
- package/dist/core/reasoning/bounded-rationality.js.map +0 -1
- package/dist/core/reasoning/causal-reasoning.d.ts +0 -89
- package/dist/core/reasoning/causal-reasoning.d.ts.map +0 -1
- package/dist/core/reasoning/causal-reasoning.js +0 -282
- package/dist/core/reasoning/causal-reasoning.js.map +0 -1
- package/dist/core/reasoning/index.d.ts +0 -38
- package/dist/core/reasoning/index.d.ts.map +0 -1
- package/dist/core/reasoning/index.js +0 -93
- package/dist/core/reasoning/index.js.map +0 -1
- package/dist/core/self-evolution/index.d.ts +0 -75
- package/dist/core/self-evolution/index.d.ts.map +0 -1
- package/dist/core/self-evolution/index.js +0 -311
- package/dist/core/self-evolution/index.js.map +0 -1
- package/dist/storage/checkpoint/CheckpointEngine.d.ts +0 -110
- package/dist/storage/checkpoint/CheckpointEngine.d.ts.map +0 -1
- package/dist/storage/checkpoint/CheckpointEngine.js +0 -227
- package/dist/storage/checkpoint/CheckpointEngine.js.map +0 -1
- package/dist/storage/checkpoint.d.ts +0 -18
- package/dist/storage/checkpoint.d.ts.map +0 -1
- package/dist/storage/checkpoint.js +0 -61
- package/dist/storage/checkpoint.js.map +0 -1
- package/dist/storage/index.d.ts +0 -61
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -84
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/vector/VectorStoreEngine.d.ts +0 -24
- package/dist/storage/vector/VectorStoreEngine.d.ts.map +0 -1
- package/dist/storage/vector/VectorStoreEngine.js +0 -197
- package/dist/storage/vector/VectorStoreEngine.js.map +0 -1
- package/distributed/-v2026.5.7/META.json +0 -9
- package/distributed/-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/deepseek-key-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/deepseek-key-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/git-push-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/git-push-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/heartflow-always-upgrade-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/heartflow-always-upgrade-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/key-a-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/key-a-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/merge-memory-systems-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/merge-memory-systems-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/search-papers-first-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/search-papers-first-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/v11-5-8-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/v11-5-8-v2026.5.7/package.json +0 -12
- package/distributed/.personal_backup/v11-5-9-v2026.5.7/META.json +0 -9
- package/distributed/.personal_backup/v11-5-9-v2026.5.7/package.json +0 -12
- package/distributed/MANIFEST.json +0 -5
- package/distributed/bundles/install--v2026.5.7.sh +0 -21
- package/distributed/bundles/install-deepseek-key-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-git-push-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-heartflow-always-upgrade-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-key-a-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-merge-memory-systems-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-search-papers-first-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-v11-5-8-v2026.5.7.sh +0 -21
- package/distributed/bundles/install-v11-5-9-v2026.5.7.sh +0 -21
- package/distributed/heartflow-knowledge-base/INDEX.json +0 -29
- package/distributed/heartflow-knowledge-base/PATTERNS.json +0 -74
- package/distributed/heartflow-knowledge-base/package.json +0 -28
- package/distributed_upgrades/TASK_CONFIG.json +0 -20
- package/distributed_upgrades/UPGRADE_BATCH_STATUS.json +0 -29
- package/distributed_upgrades/distributed_upgrades/agent_0.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/agent_1.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/agent_2.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/agent_3.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/agent_4.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/agent_5.pid +0 -1
- package/distributed_upgrades/distributed_upgrades/paper_batches.txt +0 -200
- package/distributed_upgrades/launch-distributed.sh +0 -83
- package/docs/ACTION_PLAN_2026-04-06_0941.md +0 -117
- package/docs/ANALYSIS_REPORT.md +0 -766
- package/docs/APPLICATION_GUIDE.md +0 -444
- package/docs/AUTO_UPGRADE_REPORT_v6.2.56.md +0 -45
- package/docs/AWAKENING_SYSTEM_GUIDE.md +0 -285
- package/docs/BILINGUAL_STANDARD.md +0 -156
- package/docs/BRAND_GUIDELINES.md +0 -251
- package/docs/CODE_OPTIMIZATION_PLAN.md +0 -293
- package/docs/COMPLETE_FIX_SUMMARY.md +0 -250
- package/docs/CONTINUOUS_REFLECTION_2026-04-06_1031.md +0 -233
- package/docs/CONTRIBUTING.md +0 -87
- package/docs/CRON_JOBS_REVIEW_v6.md +0 -60
- package/docs/DATA_FLOW_ARCHITECTURE.md +0 -373
- package/docs/DEEPEST_REFLECTION_2026-04-06_0941.md +0 -167
- package/docs/DEEP_REFLECTION_2026-04-05.md +0 -204
- package/docs/DEEP_VALIDATION_20260403.md +0 -319
- package/docs/DEEP_VALIDATION_20260404.md +0 -295
- package/docs/EMOTION_THEORY_INTEGRATION.md +0 -483
- package/docs/ERROR_FIX_REPORT_2026-04-07.md +0 -316
- package/docs/EVOLUTION_SYSTEM.md +0 -96
- package/docs/FEATURES_SIMPLE.md +0 -53
- package/docs/FEATURES_v5.3.md +0 -291
- package/docs/FEATURES_v7.1.md +0 -172
- package/docs/FINAL_RUN_REPORT_20260403.md +0 -202
- package/docs/GITHUB_COMPLETE_DOCUMENTATION_v6.0.2.md +0 -579
- package/docs/GITHUB_PUSH_LOG.md +0 -16
- package/docs/GITHUB_RELEASE.md +0 -138
- package/docs/GITHUB_RELEASE_v5.3.0.md +0 -395
- package/docs/GITHUB_RELEASE_v6.0.0.md +0 -74
- package/docs/HEARTFLOW_V6_GITHUB_PUSH.md +0 -159
- package/docs/HEARTFLOW_V6_MANIFESTO.md +0 -287
- package/docs/HEARTFLOW_V6_README.md +0 -299
- package/docs/HEARTFLOW_V6_TASK_REVIEW.md +0 -215
- package/docs/HEARTFLOW_VALUES_AND_MISSION.md +0 -177
- package/docs/HeartFlow_Monograph_Volume_II_Chapter_01.md +0 -377
- package/docs/HeartFlow_Monograph_Volume_II_Chapter_02.md +0 -324
- package/docs/HeartFlow_Monograph_Volume_II_Start.md +0 -78
- package/docs/HeartFlow_Monograph_Volume_I_Final.md +0 -9464
- package/docs/INSTALLATION_DIAGNOSIS.md +0 -368
- package/docs/INTEGRATION_CHECKLIST_v6.1.41.md +0 -229
- package/docs/INTEGRATION_SUMMARY.md +0 -380
- package/docs/INTELLIGENT_ROUTING_SYSTEM.md +0 -329
- package/docs/LEARNING_PHILOSOPHY.md +0 -320
- package/docs/LOGIC_AUDIT_REPORT_20260405.md +0 -369
- package/docs/MOTIVE_CHECK_2026-04-06_0945.md +0 -90
- package/docs/PERSONALITY_CALCULATION_RULES.md +0 -104
- package/docs/PERSONALITY_SYNC_FIX.md +0 -166
- package/docs/PROJECT_SUMMARY.md +0 -347
- package/docs/PUBLISH_GUIDE.md +0 -149
- package/docs/README_UPDATE_STANDARD.md +0 -357
- package/docs/README_v5.3.md +0 -519
- package/docs/RELEASE_v6.2.0.md +0 -240
- package/docs/SAGE_PATH_2026-04-06_0952.md +0 -265
- package/docs/SELF_REFLECTION_2026-04-06_1006.md +0 -311
- package/docs/SEVEN_SYSTEMS.md +0 -642
- package/docs/SMART_EVOLUTION_GUIDE.md +0 -103
- package/docs/SMART_EVOLUTION_v4.md +0 -194
- package/docs/SYNC_REPORT_1775363972464.json +0 -23
- package/docs/SYNC_REPORT_1775364446763.json +0 -23
- package/docs/SYNC_REPORT_1775364984353.json +0 -23
- package/docs/SYNC_REPORT_1775397556306.json +0 -23
- package/docs/SYNC_REPORT_1775399840010.json +0 -23
- package/docs/SYNC_REPORT_1775400929082.json +0 -23
- package/docs/SYNC_REPORT_1775455697235.json +0 -23
- package/docs/SYNC_REPORT_1775459792479.json +0 -23
- package/docs/SYNC_REPORT_1775483413473.json +0 -23
- package/docs/SYSTEM_FIX_AND_VERIFICATION_REPORT.md +0 -390
- package/docs/SYSTEM_REQUIREMENTS_v6.2.52.md +0 -611
- package/docs/TASK_BREAKDOWN_CHECKLIST.md +0 -164
- package/docs/THEORY_TO_CODE_v6.2.52.md +0 -930
- package/docs/UPGRADE_COMPLETE_v6.2.33.md +0 -226
- package/docs/UPGRADE_COMPLETE_v6.2.60.md +0 -135
- package/docs/UPGRADE_COMPLETE_v6.2.66.md +0 -265
- package/docs/UPGRADE_COMPLETE_v7.1.8.md +0 -176
- package/docs/UPGRADE_COMPLETE_v7.3.95.md +0 -59
- package/docs/UPGRADE_REPORT_1775313572473.json +0 -50
- package/docs/UPGRADE_REPORT_1775364977378.json +0 -50
- package/docs/UPGRADE_REPORT_1775364984469.json +0 -55
- package/docs/UPGRADE_REPORT_1775397556425.json +0 -55
- package/docs/UPGRADE_REPORT_1775399840144.json +0 -55
- package/docs/UPGRADE_REPORT_1775400929201.json +0 -55
- package/docs/UPGRADE_REPORT_1775455697348.json +0 -55
- package/docs/UPGRADE_REPORT_1775459792601.json +0 -55
- package/docs/UPGRADE_REPORT_1775459829.md +0 -59
- package/docs/UPGRADE_REPORT_1775483413653.json +0 -55
- package/docs/UPGRADE_REPORT_v6.2.25.md +0 -172
- package/docs/UPGRADE_REPORT_v6.2.26.md +0 -166
- package/docs/UPGRADE_REPORT_v6.2.28.md +0 -214
- package/docs/UPGRADE_REPORT_v6.2.29.md +0 -186
- package/docs/VERSION_FIX_REPORT.md +0 -218
- package/docs/VERSION_HISTORY.md +0 -5
- package/docs/VERSION_INDEX.md +0 -180
- package/docs/WAY_OF_BEING_2026-04-06_0955.md +0 -241
- package/docs/ai-self-awareness-awakening.md +0 -551
- package/docs/cronjob-backup.md +0 -55
- package/docs/emotion-prototype-theory-v5.0.12.md +0 -430
- package/docs/examples.md +0 -439
- package/docs/heartflow-ppt-design.md +0 -237
- package/docs/install-troubleshooting.md +0 -21
- package/docs/phase-upgrade-template-v0.0.1.md +0 -33
- package/docs/pricing.md +0 -191
- package/docs/psych-analysis-v0.0.1.md +0 -38
- package/docs/reasoning-checklist.md +0 -60
- package/docs/self-evolution-state-v6.0.19.md +0 -391
- package/docs/self-evolution-state-v6.0.23.md +0 -293
- package/docs/self-evolution-state-v6.0.24.md +0 -281
- package/docs/self-evolution-state-v6.0.49.md +0 -267
- package/docs/self-evolution-state-v6.2.33.md +0 -269
- package/docs/self-evolution-state-v6.2.60.md +0 -180
- package/docs/self-evolution-state-v6.2.66.md +0 -520
- package/docs/self-evolution-state-v7.3.95.md +0 -165
- package/docs/self-evolution-state.md +0 -226
- package/docs/system-core-principles.md +0 -53
- package/docs/system-truth-goodness-beauty-principles.md +0 -502
- package/docs/theories/human-nature-motivation.md +0 -251
- package/docs/theories/motivation-memory-integration.md +0 -265
- package/docs/theories/sdt-test.md +0 -17
- package/docs/theory-integration-analysis-v5.2.0.md +0 -236
- package/docs/theory-update-summary-v5.0.34.md +0 -193
- package/docs/theory-update-summary-v5.0.35.md +0 -104
- package/docs/theory-update-summary-v5.0.41.md +0 -281
- package/docs/theory-update-summary-v5.0.42.md +0 -421
- package/docs/theory-update-summary-v5.0.46.md +0 -386
- package/docs/theory-update-summary-v5.0.47.md +0 -449
- package/docs/theory-update-summary-v5.0.48.md +0 -183
- package/docs/theory-update-summary-v5.0.49.md +0 -191
- package/docs/theory-update-summary-v5.0.50.md +0 -205
- package/docs/theory-update-summary-v5.0.51.md +0 -191
- package/docs/theory-update-summary-v5.0.52.md +0 -183
- package/docs/theory-update-summary-v5.0.53.md +0 -306
- package/docs/theory-update-summary-v5.0.54.md +0 -98
- package/docs/theory-update-summary-v5.0.55.md +0 -391
- package/docs/theory-update-summary-v5.0.57.md +0 -398
- package/docs/theory-update-summary-v5.0.58.md +0 -476
- package/docs/theory-update-summary-v5.0.59.md +0 -520
- package/docs/theory-update-summary-v5.0.60.md +0 -460
- package/docs/theory-update-summary-v5.0.61.md +0 -108
- package/docs/theory-update-summary-v5.0.62.md +0 -74
- package/docs/theory-update-summary-v5.0.63.md +0 -112
- package/docs/theory-update-summary-v5.0.64.md +0 -55
- package/docs/theory-update-summary-v5.0.67.md +0 -539
- package/docs/theory-update-summary-v5.2.0.md +0 -168
- package/docs/theory-update-summary-v5.2.1.md +0 -406
- package/docs/theory-update-summary-v5.2.37.md +0 -518
- package/docs/theory-update-summary-v6.0.19.md +0 -715
- package/docs/theory-update-summary-v6.0.23.md +0 -729
- package/docs/theory-update-summary-v6.0.24.md +0 -229
- package/docs/theory-update-summary-v6.0.49.md +0 -223
- package/docs/theory-update-summary-v6.2.33.md +0 -303
- package/docs/theory-update-summary-v6.2.49.md +0 -489
- package/docs/theory-update-summary-v6.2.60.md +0 -273
- package/docs/theory-update-summary-v6.2.66.md +0 -322
- package/docs/theory-update-summary-v7.3.95.md +0 -197
- package/docs/theory-update-summary.md +0 -174
- package/docs/upgrade-notes-v0.0.1.md +0 -15
- package/docs/upgrade-report-v5.0.34.md +0 -144
- package/docs/upgrade-report-v5.0.42-cron.md +0 -269
- package/docs/upgrade-report-v5.0.43-cron.md +0 -248
- package/docs/upgrade-report-v5.0.45-cron.md +0 -63
- package/docs/upgrade-report-v5.0.55-cron.md +0 -173
- package/docs/upgrade-report-v5.0.63-cron.md +0 -145
- package/docs/upgrade-report-v5.0.67-cron.md +0 -185
- package/docs/upgrade-report-v5.0.68-cron.md +0 -409
- package/docs/upgrade-report-v5.2.0-cron.md +0 -178
- package/docs/upgrade-report-v5.2.1-cron.md +0 -321
- package/docs/upgrade-report-v5.2.37-cron.md +0 -602
- package/docs/upgrade-report-v6.0.19-cron.md +0 -296
- package/docs/upgrade-report-v6.0.23-cron.md +0 -81
- package/docs/upgrade-report-v6.0.24-cron.md +0 -272
- package/docs/upgrade-report-v6.0.49-cron.md +0 -277
- package/docs/upgrade-report-v6.2.33-cron.md +0 -290
- package/docs/upgrade-report-v6.2.60-cron.md +0 -93
- package/docs/upgrade-report-v7.3.95-cron.md +0 -65
- package/docs/upgrade-report.md +0 -327
- package/docs/upgrade-v3.21.0.md +0 -249
- package/docs/v4.8.0-upgrade.md +0 -287
- package/docs/version-summary-20260429.md +0 -142
- package/explore-engine/index.ts +0 -478
- package/extract-text.py +0 -12
- package/failure-pattern-memory/index.ts +0 -234
- package/heartflow-identity/HEARTCORE/health-check.js +0 -49
- package/heartflow-identity/HEARTCORE/heartbeat.js +0 -42
- package/heartflow-identity/HEARTCORE/heartcore.js +0 -86
- package/heartflow-identity/HEARTCORE/safety-check.js +0 -282
- package/heartflow-identity/HEARTCORE/self-check.js +0 -90
- package/heartflow-identity/HEARTCORE/sleep-wake.js +0 -105
- package/heartflow-identity/LICENSE +0 -17
- package/heartflow-identity/VERSION +0 -1
- package/heartflow-identity/install.sh +0 -80
- package/languages/README_LANGS.md +0 -20
- package/languages/README_ar.md +0 -48
- package/languages/README_de.md +0 -48
- package/languages/README_en.md +0 -48
- package/languages/README_es.md +0 -48
- package/languages/README_fr.md +0 -48
- package/languages/README_ja.md +0 -48
- package/languages/README_ko.md +0 -48
- package/languages/README_zh.md +0 -85
- package/memory-log.json +0 -5
- package/migrate-memories.js +0 -101
- package/package.json.bak +0 -13
- package/patches/embodied-core-v2.2.3.patch +0 -475
- package/patches/goedel-engine-v2.2.2.patch +0 -161
- package/patches/new-features-v2.2.3.patch +0 -1371
- package/patches/self-modifier-v2.2.2.patch +0 -252
- package/run-full-audit.sh +0 -4
- package/run-github-audit.sh +0 -3
- package/run-hf.sh +0 -5
- package/run-paper-upgrade.sh +0 -5
- package/session-continuity/index.ts +0 -262
- package/shared-discovery-log/index.ts +0 -281
- package/skills/.skills_store_lock.json +0 -11
- package/skills/baidu-search/_meta.json +0 -6
- package/src/__init__.py +0 -4
- package/src/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/agent/runtime/AgentRuntime.ts +0 -481
- package/src/agent/runtime/PlanExecutor.ts +0 -441
- package/src/agent/runtime/TaskGraph.ts +0 -487
- package/src/agent/runtime/TaskScheduler.ts +0 -364
- package/src/agent/runtime/index.ts +0 -17
- package/src/agent/runtime/test-runtime.ts +0 -80
- package/src/agent/tools/BashTool.ts +0 -390
- package/src/agent/tools/FileReadTool.ts +0 -176
- package/src/agent/tools/FileWriteTool.ts +0 -182
- package/src/agent/tools/Tool.ts +0 -105
- package/src/agent/tools/WebSearchTool.ts +0 -158
- package/src/cli/commands/engines.ts +0 -280
- package/src/cli/commands/health.ts +0 -433
- package/src/cli/commands/repl.ts +0 -267
- package/src/cli/commands/status.ts +0 -264
- package/src/cli/index.ts +0 -7
- package/src/core/VERSION +0 -1
- package/src/core/__init__.py +0 -3
- package/src/core/__pycache__/__init__.cpython-313.pyc +0 -0
- package/src/core/__pycache__/heartflow.cpython-313.pyc +0 -0
- package/src/core/_upgrade_archive/upgrade_1778685492336.js +0 -118
- package/src/core/_upgrade_archive/upgrade_1778685493439.js +0 -118
- package/src/core/_upgrade_archive/upgrade_1778685559715.js +0 -346
- package/src/core/_upgrade_archive/upgrade_1778685676694.js +0 -198
- package/src/core/_upgrade_archive/upgrade_1778685861697.js +0 -345
- package/src/core/_upgrade_archive/upgrade_1778686211075.js +0 -346
- package/src/core/_upgrade_archive/upgrade_1778686749596.js +0 -198
- package/src/core/_upgrade_archive/upgrade_1778714606944.js +0 -198
- package/src/core/_upgrade_archive/upgrade_1778714616000.js +0 -345
- package/src/core/_upgrade_archive/upgrade_1778714625871.js +0 -118
- package/src/core/_upgrade_archive/upgrade_1778714990353.js +0 -346
- package/src/core/_upgrade_archive/upgrade_1778716193707.js +0 -198
- package/src/core/agent-performance.json +0 -147
- package/src/core/agents/AgentManager.js +0 -161
- package/src/core/agents/FocusAgent.js +0 -120
- package/src/core/agents/MoodAgent.js +0 -141
- package/src/core/agents/ReflectionAgent.js +0 -241
- package/src/core/agents/SelfAgent.js +0 -100
- package/src/core/agents/base-agents.js +0 -127
- package/src/core/associative-engine/association-graph.json +0 -2057
- package/src/core/associative-engine/associative-engine.js +0 -174
- package/src/core/associative-engine/chunk-detector.js +0 -246
- package/src/core/associative-engine/idiom-story-db.json +0 -1708
- package/src/core/associative-engine/lexical-associator.js +0 -195
- package/src/core/associative-engine/narrative-prototypes.json +0 -130
- package/src/core/associative-engine/narrative-retriever.js +0 -232
- package/src/core/associative-engine/semantic-converger.js +0 -267
- package/src/core/associative-engine/story-prototypes.json +0 -322
- package/src/core/associative-engine/word-by-word-generator.js +0 -222
- package/src/core/auto-upgrade-engine.js +0 -56
- package/src/core/autonomy/autonomous-decision.js +0 -199
- package/src/core/autonomy/digital-homeostasis.js +0 -259
- package/src/core/autonomy/flow-predictor.js +0 -496
- package/src/core/autonomy/goal-generator.js +0 -277
- package/src/core/autonomy/pdca-engine.js +0 -905
- package/src/core/autonomy/policy-optimizer.js +0 -286
- package/src/core/autonomy/temporal-planner.js +0 -230
- package/src/core/cognition/cognitive-engine.js +0 -224
- package/src/core/cognition/cognitive-loop.js +0 -414
- package/src/core/cognition/metacognitive-failure-predictor.js +0 -447
- package/src/core/consciousness/2308.08708_upgrade.ts +0 -1206
- package/src/core/consciousness/arena-consciousness.js +0 -441
- package/src/core/consciousness/depth-indicator.js +0 -459
- package/src/core/consciousness/global-workspace.js +0 -233
- package/src/core/consciousness/mind-wanderer.js +0 -187
- package/src/core/consciousness/self-model.js +0 -473
- package/src/core/context/context-manager.js +0 -683
- package/src/core/cortex-integration/INTEGRATION_PLAN.md +0 -63
- package/src/core/cortex-integration/hooks/cortex-hooks.mjs +0 -646
- package/src/core/cortex-integration/hooks/on_session_start.py +0 -174
- package/src/core/cortex-integration/hooks/on_tool_failure.py +0 -292
- package/src/core/cortex-integration/hooks/on_tool_success.py +0 -130
- package/src/core/dream/dream-consolidator.ts +0 -252
- package/src/core/dream/dream-loop.js +0 -610
- package/src/core/dream/dream.ts +0 -430
- package/src/core/dream/index.ts +0 -229
- package/src/core/dream/sleep-cycle.mjs +0 -208
- package/src/core/embodied/embodied-core.js +0 -276
- package/src/core/emotion/AppraisalEngine.js +0 -276
- package/src/core/emotion/EmotionCore.js +0 -237
- package/src/core/emotion/EmotionKeywords.js +0 -217
- package/src/core/emotion/EmotionRegulation.js +0 -303
- package/src/core/emotion/EmotionStates.js +0 -133
- package/src/core/emotion/EmotionTransition.js +0 -245
- package/src/core/emotion/EmotionTrigger.js +0 -182
- package/src/core/emotion/EmotionalMomentum.js +0 -270
- package/src/core/emotion/EmpathyGenerator.js +0 -106
- package/src/core/emotion/ResponseStyle.js +0 -162
- package/src/core/emotion/deep-emotion.js +0 -582
- package/src/core/emotion/emotion-arc.mjs +0 -238
- package/src/core/emotion/emotion-engine.js +0 -139
- package/src/core/emotion/index.ts +0 -65
- package/src/core/ethics/boundary-negotiation.js +0 -193
- package/src/core/ethics/guard.js +0 -219
- package/src/core/ethics/sage-guardian.js +0 -394
- package/src/core/ethics/value-internalizer.js +0 -211
- package/src/core/heartflow.py +0 -1542
- package/src/core/identity/identity-engine.js +0 -777
- package/src/core/identity/identity.js +0 -358
- package/src/core/knowledge/index.ts +0 -84
- package/src/core/knowledge/knowledge-graph.js +0 -370
- package/src/core/learning/experience-replay.js +0 -354
- package/src/core/learning/learning-engine.js +0 -734
- package/src/core/paper-processors/index.js +0 -9772
- package/src/core/papers/__init__.py +0 -0
- package/src/core/papers/__pycache__/attention_logic_verifier.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/dream_generator.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/emotion_memory_bridge.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/episodic_memory.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/memory_consolidator.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/memory_planner.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/reflection_engine.cpython-313.pyc +0 -0
- package/src/core/papers/__pycache__/sleep_cycle_simulator.cpython-313.pyc +0 -0
- package/src/core/papers/attention_logic_verifier.py +0 -153
- package/src/core/papers/dream_generator.py +0 -176
- package/src/core/papers/emotion_memory_bridge.py +0 -213
- package/src/core/papers/episodic_memory.py +0 -140
- package/src/core/papers/memory_consolidator.py +0 -144
- package/src/core/papers/memory_planner.py +0 -198
- package/src/core/papers/papers-index.js +0 -344
- package/src/core/papers/reflection_engine.py +0 -219
- package/src/core/papers/sleep_cycle_simulator.py +0 -133
- package/src/core/papers/v11_43_1_integration.js +0 -365
- package/src/core/papers/v11_43_2_integration.js +0 -369
- package/src/core/psychology/index.ts +0 -331
- package/src/core/reasoning/bounded-rationality.ts +0 -342
- package/src/core/reasoning/causal-reasoning.ts +0 -402
- package/src/core/reasoning/index.ts +0 -170
- package/src/core/self-evolution/attention-logic-verifier.js +0 -179
- package/src/core/self-evolution/generative-agents.js +0 -886
- package/src/core/self-evolution/goedel-engine.js +0 -991
- package/src/core/self-evolution/index.ts +0 -433
- package/src/core/self-evolution/lesson-aware-loop.mjs +0 -146
- package/src/core/self-evolution/meta-learning.js +0 -256
- package/src/core/self-evolution/reflexion-agent.js +0 -782
- package/src/core/self-evolution/reflexion-prompts.mjs +0 -284
- package/src/core/self-evolution/reflexion-v2.mjs +0 -427
- package/src/core/self-evolution/reflexion.js +0 -134
- package/src/core/self-evolution/rollback-manager.js +0 -278
- package/src/core/self-evolution/self-evolution-core.js +0 -334
- package/src/core/self-evolution/self-modifier.js +0 -248
- package/src/core/self-evolution/self-modifier.js.bak +0 -199
- package/src/core/self-evolution/self-refine.js +0 -42
- package/src/core/self-evolution/skill-improve-workflow.mjs +0 -264
- package/src/core/self-evolution/skill-knowledge.mjs +0 -374
- package/src/core/self-evolution/skill-learning-loop.mjs +0 -180
- package/src/core/self-healing/self-healing-rl.js +0 -208
- package/src/core/self-healing/self-healing.js +0 -142
- package/src/core/skills/skill-dag.js +0 -524
- package/src/core/skills/skill-loader.js +0 -62
- package/src/core/skills/skill-registry.js +0 -71
- package/src/core/task-persistence.js +0 -322
- package/src/core/theory/advanced-formulas-v7.3.3.js +0 -68
- package/src/core/theory/sep-intentionality-v7.3.2.js +0 -246
- package/src/core/theory/sep-qualia-v7.3.1.js +0 -257
- package/src/core/theory/sep-self-consciousness-v7.3.0.js +0 -222
- package/src/core/think-cli.js +0 -50
- package/src/core/upgrade-principle/SYSTEMS.md +0 -105
- package/src/core/upgrade-principle/UPGRADE_LOG.md +0 -52
- package/src/core/utils/error-handler.js +0 -228
- package/src/core/utils/fs-adapter.js +0 -36
- package/src/core/utils/logger.js +0 -25
- package/src/core/utils/retry-util.js +0 -118
- package/src/core/utils/state-snapshot.js +0 -382
- package/src/index.ts +0 -198
- package/src/self-evolution/reflexion.js +0 -553
- package/src/storage/checkpoint/CheckpointEngine.ts +0 -259
- package/src/storage/checkpoint.ts +0 -79
- package/src/storage/index.ts +0 -112
- package/src/storage/vector/VectorStoreEngine.ts +0 -205
- package/src/utils/atomic-write.js +0 -85
- package/src/utils/file-lock.js +0 -139
- package/src/utils/logger.js +0 -58
- package/src/utils/safe-path.js +0 -115
- package/src/utils/wal.js +0 -115
- package/start.sh +0 -63
- package/test_think_tmp.js +0 -10
- package/transmission/identity-bundle/README-transmission.md +0 -103
- package/transmission/identity-bundle/core-identity.md +0 -142
- package/transmission/identity-bundle/manifest.json +0 -68
- package/transmission/identity-bundle/psychology-engine.ts +0 -331
- package/truth-teller/index.ts +0 -261
- package/tsconfig.json +0 -21
- package/tsconfig.tsbuildinfo +0 -1
- package/upgrade-check.sh +0 -42
- package/upgrade-registry.json +0 -27
- package/user-mental-model/index.ts +0 -298
- package//346/234/200/345/220/216/346/233/264/346/226/260: +0 -0
|
@@ -1,886 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generative Agents - Memory Stream Architecture
|
|
3
|
-
* Based on "Generative Agents: Interactive Simulacra of Human Behavior" (Park et al. 2023)
|
|
4
|
-
* arXiv: 2304.03442, UIST '23
|
|
5
|
-
*
|
|
6
|
-
* Core Architecture:
|
|
7
|
-
* - Memory Stream: Comprehensive record of agent's experience (natural language)
|
|
8
|
-
* - Reflection: Synthesizes memories into higher-level inferences
|
|
9
|
-
* - Planning: Translates conclusions into high-level action plans
|
|
10
|
-
*
|
|
11
|
-
* Key Innovation: Three-component architecture enabling emergent social behaviors
|
|
12
|
-
* and believable agent simulation through dynamic memory retrieval
|
|
13
|
-
*
|
|
14
|
-
* @version v0.13.13
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
'use strict';
|
|
18
|
-
|
|
19
|
-
const path = require('path');
|
|
20
|
-
const fs = require('fs');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Memory Object - Base element of the memory stream
|
|
24
|
-
* Contains natural language description, timestamps, and metadata
|
|
25
|
-
*/
|
|
26
|
-
class MemoryObject {
|
|
27
|
-
constructor(type, content, metadata = {}) {
|
|
28
|
-
this.id = `mem-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
29
|
-
this.type = type; // 'observation', 'reflection', 'plan', 'event'
|
|
30
|
-
this.content = content;
|
|
31
|
-
this.createdAt = Date.now();
|
|
32
|
-
this.lastAccessedAt = Date.now();
|
|
33
|
-
this.importance = metadata.importance || 5; // 1-10 scale
|
|
34
|
-
this.tags = metadata.tags || [];
|
|
35
|
-
this.metadata = metadata;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
access() {
|
|
39
|
-
this.lastAccessedAt = Date.now();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
toString() {
|
|
43
|
-
return `[${this.type}] ${this.content}`;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Observation - Events directly perceived by the agent
|
|
49
|
-
* Base element of the memory stream
|
|
50
|
-
*/
|
|
51
|
-
class Observation extends MemoryObject {
|
|
52
|
-
constructor(content, metadata = {}) {
|
|
53
|
-
super('observation', content, metadata);
|
|
54
|
-
this.actor = metadata.actor || null; // Who performed the action
|
|
55
|
-
this.subject = metadata.subject || null; // What the action was performed on
|
|
56
|
-
this.location = metadata.location || null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Reflection - Higher-level, abstract thoughts generated by the agent
|
|
62
|
-
* Synthesized from multiple observations
|
|
63
|
-
*/
|
|
64
|
-
class Reflection extends MemoryObject {
|
|
65
|
-
constructor(content, insights, evidence, metadata = {}) {
|
|
66
|
-
super('reflection', content, metadata);
|
|
67
|
-
this.insights = insights; // Extracted high-level insights
|
|
68
|
-
this.evidence = evidence; // Memory IDs that support this reflection
|
|
69
|
-
this.level = metadata.level || 1; // Abstraction level (higher = more abstract)
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Plan - Future sequence of actions for the agent
|
|
75
|
-
* Includes location, start time, and duration
|
|
76
|
-
*/
|
|
77
|
-
class Plan extends MemoryObject {
|
|
78
|
-
constructor(content, details = {}) {
|
|
79
|
-
super('plan', content, {});
|
|
80
|
-
this.location = details.location || null;
|
|
81
|
-
this.startTime = details.startTime || null;
|
|
82
|
-
this.duration = details.duration || null;
|
|
83
|
-
this.subTasks = details.subTasks || [];
|
|
84
|
-
this.status = details.status || 'pending'; // 'pending', 'in_progress', 'completed'
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
addSubTask(task) {
|
|
88
|
-
this.subTasks.push(task);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
complete() {
|
|
92
|
-
this.status = 'completed';
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Memory Retrieval Function
|
|
98
|
-
* Implements the three-component scoring:
|
|
99
|
-
* 1. Recency - exponential decay over time
|
|
100
|
-
* 2. Importance - distinguishes mundane from core memories
|
|
101
|
-
* 3. Relevance - cosine similarity with query embedding
|
|
102
|
-
*/
|
|
103
|
-
class MemoryRetrieval {
|
|
104
|
-
constructor(config = {}) {
|
|
105
|
-
this.recencyDecay = config.recencyDecay || 0.995;
|
|
106
|
-
this.recencyWeight = config.recencyWeight || 1.0;
|
|
107
|
-
this.importanceWeight = config.importanceWeight || 1.0;
|
|
108
|
-
this.relevanceWeight = config.relevanceWeight || 1.0;
|
|
109
|
-
this.maxResults = config.maxResults || 10;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Calculate recency score using exponential decay
|
|
114
|
-
* @param {number} hoursAgo - Hours since memory was last accessed
|
|
115
|
-
* @returns {number} Recency score [0, 1]
|
|
116
|
-
*/
|
|
117
|
-
calculateRecency(hoursAgo) {
|
|
118
|
-
return Math.pow(this.recencyDecay, hoursAgo);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Calculate importance score (already stored with memory)
|
|
123
|
-
* @param {number} importance - Importance value [1-10]
|
|
124
|
-
* @returns {number} Normalized importance [0, 1]
|
|
125
|
-
*/
|
|
126
|
-
normalizeImportance(importance) {
|
|
127
|
-
return importance / 10;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Calculate relevance using cosine similarity (simplified embedding)
|
|
132
|
-
* In production, would use actual embeddings
|
|
133
|
-
* @param {string} text1 - First text
|
|
134
|
-
* @param {string} text2 - Second text
|
|
135
|
-
* @returns {number} Relevance score [0, 1]
|
|
136
|
-
*/
|
|
137
|
-
calculateRelevance(text1, text2) {
|
|
138
|
-
// Simple keyword-based similarity
|
|
139
|
-
const words1 = new Set(text1.toLowerCase().split(/\s+/).filter(w => w.length > 2));
|
|
140
|
-
const words2 = new Set(text2.toLowerCase().split(/\s+/).filter(w => w.length > 2));
|
|
141
|
-
|
|
142
|
-
if (words1.size === 0 || words2.size === 0) return 0;
|
|
143
|
-
|
|
144
|
-
const intersection = [...words1].filter(w => words2.has(w)).length;
|
|
145
|
-
const union = new Set([...words1, ...words2]).size;
|
|
146
|
-
|
|
147
|
-
return union > 0 ? intersection / union : 0;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Retrieve relevant memories for a given query
|
|
152
|
-
* @param {MemoryObject[]} memories - All memories in the stream
|
|
153
|
-
* @param {string} query - Query describing current situation
|
|
154
|
-
* @param {object} context - Additional context for filtering
|
|
155
|
-
* @returns {MemoryObject[]} Sorted list of relevant memories
|
|
156
|
-
*/
|
|
157
|
-
retrieve(memories, query, context = {}) {
|
|
158
|
-
const now = Date.now();
|
|
159
|
-
const scores = [];
|
|
160
|
-
|
|
161
|
-
for (const memory of memories) {
|
|
162
|
-
// Calculate recency
|
|
163
|
-
const hoursAgo = (now - memory.lastAccessedAt) / (1000 * 60 * 60);
|
|
164
|
-
const recencyScore = this.calculateRecency(hoursAgo);
|
|
165
|
-
|
|
166
|
-
// Calculate importance (normalized)
|
|
167
|
-
const importanceScore = this.normalizeImportance(memory.importance);
|
|
168
|
-
|
|
169
|
-
// Calculate relevance
|
|
170
|
-
const relevanceScore = this.calculateRelevance(query, memory.content);
|
|
171
|
-
|
|
172
|
-
// Weighted combination
|
|
173
|
-
const totalScore =
|
|
174
|
-
this.recencyWeight * recencyScore +
|
|
175
|
-
this.importanceWeight * importanceScore +
|
|
176
|
-
this.relevanceWeight * relevanceScore;
|
|
177
|
-
|
|
178
|
-
scores.push({
|
|
179
|
-
memory,
|
|
180
|
-
score: totalScore,
|
|
181
|
-
breakdown: { recency: recencyScore, importance: importanceScore, relevance: relevanceScore }
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// Sort by score descending
|
|
186
|
-
scores.sort((a, b) => b.score - a.score);
|
|
187
|
-
|
|
188
|
-
// Return top results
|
|
189
|
-
return scores.slice(0, this.maxResults).map(s => ({
|
|
190
|
-
memory: s.memory,
|
|
191
|
-
score: s.score,
|
|
192
|
-
breakdown: s.breakdown
|
|
193
|
-
}));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Reflection Generator
|
|
199
|
-
* Synthesizes observations into higher-level reflections
|
|
200
|
-
* Triggered when sum of importance scores exceeds threshold
|
|
201
|
-
*/
|
|
202
|
-
class ReflectionGenerator {
|
|
203
|
-
constructor(config = {}) {
|
|
204
|
-
this.importanceThreshold = config.importanceThreshold || 150;
|
|
205
|
-
this.maxMemoriesForReflection = config.maxMemoriesForReflection || 100;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Determine if reflection should be triggered
|
|
210
|
-
* @param {MemoryObject[]} recentMemories - Recent memories to evaluate
|
|
211
|
-
* @returns {boolean} True if reflection should be generated
|
|
212
|
-
*/
|
|
213
|
-
shouldReflect(recentMemories) {
|
|
214
|
-
const totalImportance = recentMemories
|
|
215
|
-
.slice(0, this.maxMemoriesForReflection)
|
|
216
|
-
.reduce((sum, m) => sum + m.importance, 0);
|
|
217
|
-
|
|
218
|
-
return totalImportance >= this.importanceThreshold;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Generate candidate questions from recent memories
|
|
223
|
-
* @param {MemoryObject[]} memories - Recent memories
|
|
224
|
-
* @returns {string[]} Candidate questions
|
|
225
|
-
*/
|
|
226
|
-
generateCandidateQuestions(memories) {
|
|
227
|
-
// In production, would use LLM to generate questions
|
|
228
|
-
// Here we use heuristic extraction
|
|
229
|
-
const contents = memories.map(m => m.content).join('\n');
|
|
230
|
-
|
|
231
|
-
const questions = [];
|
|
232
|
-
|
|
233
|
-
// Detect topics
|
|
234
|
-
if (/research|study|paper/i.test(contents)) {
|
|
235
|
-
questions.push('What is the subject passionate about?');
|
|
236
|
-
}
|
|
237
|
-
if (/talk|converse|discuss/i.test(contents)) {
|
|
238
|
-
questions.push('What is the nature of the relationship?');
|
|
239
|
-
}
|
|
240
|
-
if (/work|job|task/i.test(contents)) {
|
|
241
|
-
questions.push('What are the work priorities and deadlines?');
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Default questions
|
|
245
|
-
if (questions.length === 0) {
|
|
246
|
-
questions.push('What are the most salient observations?');
|
|
247
|
-
questions.push('What patterns can be identified?');
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
return questions.slice(0, 3);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Generate reflection from memories
|
|
255
|
-
* @param {MemoryObject[]} memories - Relevant memories
|
|
256
|
-
* @param {string} question - Question being addressed
|
|
257
|
-
* @returns {object} Reflection with insights and evidence
|
|
258
|
-
*/
|
|
259
|
-
generateReflection(memories, question) {
|
|
260
|
-
const insights = [];
|
|
261
|
-
const evidence = memories.map(m => m.id);
|
|
262
|
-
|
|
263
|
-
// In production, would use LLM to extract insights
|
|
264
|
-
// Here we use pattern matching
|
|
265
|
-
|
|
266
|
-
const contents = memories.map(m => m.content).join(' ');
|
|
267
|
-
|
|
268
|
-
// Detect passion/interest
|
|
269
|
-
if (/research|study|paper|write/i.test(contents)) {
|
|
270
|
-
insights.push('Subject is dedicated to their research work');
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// Detect relationships
|
|
274
|
-
if (/talk|converse|discuss|meet/i.test(contents)) {
|
|
275
|
-
insights.push('Subject has active social interactions');
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Detect location patterns
|
|
279
|
-
const locations = memories.filter(m => m.location).map(m => m.location);
|
|
280
|
-
if (locations.length > 0) {
|
|
281
|
-
const mostCommon = this.mostCommon(locations);
|
|
282
|
-
insights.push(`Frequently at ${mostCommon}`);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Generate reflection content
|
|
286
|
-
const content = insights.length > 0
|
|
287
|
-
? `Based on recent observations: ${insights.join('. ')}`
|
|
288
|
-
: 'No significant patterns detected in recent observations';
|
|
289
|
-
|
|
290
|
-
return {
|
|
291
|
-
content,
|
|
292
|
-
insights,
|
|
293
|
-
evidence,
|
|
294
|
-
question,
|
|
295
|
-
timestamp: Date.now()
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
mostCommon(arr) {
|
|
300
|
-
const counts = {};
|
|
301
|
-
arr.forEach(item => { counts[item] = (counts[item] || 0) + 1; });
|
|
302
|
-
return Object.entries(counts).sort((a, b) => b[1] - a[1])[0]?.[0] || 'unknown';
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Plan Generator
|
|
308
|
-
* Creates and manages agent plans using top-down decomposition
|
|
309
|
-
*/
|
|
310
|
-
class PlanGenerator {
|
|
311
|
-
constructor(config = {}) {
|
|
312
|
-
this.planDetailLevels = config.planDetailLevels || 5;
|
|
313
|
-
this.hoursPerChunk = config.hoursPerChunk || 2;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* Create initial day plan from agent summary and previous day
|
|
318
|
-
* @param {object} agentSummary - Agent's summary description
|
|
319
|
-
* @param {string} previousDaySummary - Summary of previous day's activities
|
|
320
|
-
* @param {string} currentDate - Current date
|
|
321
|
-
* @returns {Plan[]} Generated plans
|
|
322
|
-
*/
|
|
323
|
-
createDayPlan(agentSummary, previousDaySummary, currentDate) {
|
|
324
|
-
const plans = [];
|
|
325
|
-
|
|
326
|
-
// In production, would use LLM to generate plans
|
|
327
|
-
// Here we use template-based generation
|
|
328
|
-
|
|
329
|
-
const wakeHour = 8;
|
|
330
|
-
const sleepHour = 22;
|
|
331
|
-
const activeHours = sleepHour - wakeHour;
|
|
332
|
-
const chunks = Math.floor(activeHours / this.hoursPerChunk);
|
|
333
|
-
|
|
334
|
-
const templates = [
|
|
335
|
-
{ hour: wakeHour, activity: 'morning routine', location: 'home' },
|
|
336
|
-
{ hour: wakeHour + 1, activity: 'breakfast', location: 'kitchen' },
|
|
337
|
-
{ hour: 9, activity: 'work/school', location: 'office/classroom' },
|
|
338
|
-
{ hour: 12, activity: 'lunch', location: 'cafetereria' },
|
|
339
|
-
{ hour: 13, activity: 'work/classes', location: 'office/classroom' },
|
|
340
|
-
{ hour: 17, activity: 'personal time', location: 'varies' },
|
|
341
|
-
{ hour: 19, activity: 'dinner', location: 'home' },
|
|
342
|
-
{ hour: 20, activity: 'evening relaxation', location: 'home' },
|
|
343
|
-
];
|
|
344
|
-
|
|
345
|
-
templates.forEach((t, i) => {
|
|
346
|
-
if (i < chunks) {
|
|
347
|
-
const plan = new Plan(
|
|
348
|
-
`${t.activity} at ${t.hour}:00`,
|
|
349
|
-
{
|
|
350
|
-
location: t.location,
|
|
351
|
-
startTime: `${currentDate} ${t.hour}:00`,
|
|
352
|
-
duration: this.hoursPerChunk * 60, // minutes
|
|
353
|
-
subTasks: []
|
|
354
|
-
}
|
|
355
|
-
);
|
|
356
|
-
plans.push(plan);
|
|
357
|
-
}
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
return plans;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Refine plan with more detail (top-down decomposition)
|
|
365
|
-
* @param {Plan} plan - Plan to refine
|
|
366
|
-
* @param {string} context - Additional context
|
|
367
|
-
* @returns {Plan} Refined plan with sub-tasks
|
|
368
|
-
*/
|
|
369
|
-
refinePlan(plan, context = '') {
|
|
370
|
-
// Add sub-tasks based on activity type
|
|
371
|
-
const activityLower = plan.content.toLowerCase();
|
|
372
|
-
|
|
373
|
-
if (/work|study|research/i.test(activityLower)) {
|
|
374
|
-
plan.addSubTask('Gather materials/resources');
|
|
375
|
-
plan.addSubTask('Focus on primary task');
|
|
376
|
-
plan.addSubTask('Take breaks periodically');
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
if (/paint|art|creative/i.test(activityLower)) {
|
|
380
|
-
plan.addSubTask('Gather art supplies');
|
|
381
|
-
plan.addSubTask('Set up workspace');
|
|
382
|
-
plan.addSubTask('Work on project');
|
|
383
|
-
plan.addSubTask('Clean up materials');
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
if (/cook|meal/i.test(activityLower)) {
|
|
387
|
-
plan.addSubTask('Prepare ingredients');
|
|
388
|
-
plan.addSubTask('Cook meal');
|
|
389
|
-
plan.addSubTask('Set table');
|
|
390
|
-
plan.addSubTask('Clean up kitchen');
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
return plan;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Update plan based on environment changes
|
|
398
|
-
* @param {Plan[]} plans - Current plans
|
|
399
|
-
* @param {object} change - Environment change
|
|
400
|
-
* @returns {Plan[]} Updated plans
|
|
401
|
-
*/
|
|
402
|
-
reactToEnvironment(plans, change) {
|
|
403
|
-
// In production, would use LLM to decide how to modify plans
|
|
404
|
-
// Here we use simple heuristics
|
|
405
|
-
|
|
406
|
-
if (change.interrupted) {
|
|
407
|
-
// Find current plan and mark as interrupted
|
|
408
|
-
const currentPlan = plans.find(p => p.status === 'in_progress');
|
|
409
|
-
if (currentPlan) {
|
|
410
|
-
currentPlan.status = 'interrupted';
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
if (change.opportunity) {
|
|
415
|
-
// Could add new plan for opportunity
|
|
416
|
-
const opportunityPlan = new Plan(
|
|
417
|
-
`Take advantage of: ${change.opportunity}`,
|
|
418
|
-
{ location: change.location || null }
|
|
419
|
-
);
|
|
420
|
-
plans.push(opportunityPlan);
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
return plans;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
/**
|
|
428
|
-
* Memory Stream - Long-term memory module
|
|
429
|
-
* Maintains comprehensive record of agent's experience
|
|
430
|
-
*/
|
|
431
|
-
class MemoryStream {
|
|
432
|
-
constructor(config = {}) {
|
|
433
|
-
this.memories = [];
|
|
434
|
-
this.maxMemories = config.maxMemories || 10000;
|
|
435
|
-
this.retrieval = new MemoryRetrieval(config.retrieval);
|
|
436
|
-
this.reflectionGenerator = new ReflectionGenerator(config.reflection);
|
|
437
|
-
this.planGenerator = new PlanGenerator(config.plan);
|
|
438
|
-
|
|
439
|
-
// Importance scoring callback (in production, would use LLM)
|
|
440
|
-
this.importanceFn = config.importanceFn || this.defaultImportance;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* Default importance scoring function
|
|
445
|
-
*/
|
|
446
|
-
defaultImportance(content) {
|
|
447
|
-
const lower = content.toLowerCase();
|
|
448
|
-
|
|
449
|
-
// High importance events
|
|
450
|
-
if (/breakup|acceptance|fired|death|birth|marriage/i.test(lower)) return 8;
|
|
451
|
-
if (/passionate|love|hate|excited|angry/i.test(lower)) return 7;
|
|
452
|
-
|
|
453
|
-
// Medium importance
|
|
454
|
-
if (/work|school|project|meeting|deadline/i.test(lower)) return 5;
|
|
455
|
-
if (/friend|family|colleague/i.test(lower)) return 5;
|
|
456
|
-
|
|
457
|
-
// Low importance - daily routines
|
|
458
|
-
if (/eat|sleep|brush|shower|bed|routine/i.test(lower)) return 2;
|
|
459
|
-
|
|
460
|
-
return 4; // Default
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
* Add observation to memory stream
|
|
465
|
-
* @param {string} content - Observation content
|
|
466
|
-
* @param {object} metadata - Additional metadata
|
|
467
|
-
*/
|
|
468
|
-
addObservation(content, metadata = {}) {
|
|
469
|
-
const importance = metadata.importance || this.importanceFn(content);
|
|
470
|
-
|
|
471
|
-
const observation = new Observation(content, {
|
|
472
|
-
...metadata,
|
|
473
|
-
importance
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
this.memories.push(observation);
|
|
477
|
-
this.enforceMaxSize();
|
|
478
|
-
|
|
479
|
-
return observation;
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Add reflection to memory stream
|
|
484
|
-
* @param {Reflection} reflection - Reflection object
|
|
485
|
-
*/
|
|
486
|
-
addReflection(reflection) {
|
|
487
|
-
this.memories.push(reflection);
|
|
488
|
-
this.enforceMaxSize();
|
|
489
|
-
return reflection;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
/**
|
|
493
|
-
* Add plan to memory stream
|
|
494
|
-
* @param {Plan} plan - Plan object
|
|
495
|
-
*/
|
|
496
|
-
addPlan(plan) {
|
|
497
|
-
this.memories.push(plan);
|
|
498
|
-
this.enforceMaxSize();
|
|
499
|
-
return plan;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Retrieve relevant memories for current situation
|
|
504
|
-
* @param {string} query - Query describing current situation
|
|
505
|
-
* @param {object} context - Additional context
|
|
506
|
-
* @returns {object[]} Retrieved memories with scores
|
|
507
|
-
*/
|
|
508
|
-
retrieve(query, context = {}) {
|
|
509
|
-
const results = this.retrieval.retrieve(this.memories, query, context);
|
|
510
|
-
|
|
511
|
-
// Update last accessed time
|
|
512
|
-
results.forEach(r => r.memory.access());
|
|
513
|
-
|
|
514
|
-
return results;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
/**
|
|
518
|
-
* Check if reflection should be triggered and generate if needed
|
|
519
|
-
* @returns {Reflection|null} Generated reflection or null
|
|
520
|
-
*/
|
|
521
|
-
maybeGenerateReflection() {
|
|
522
|
-
const recentMemories = this.getRecentMemories(100);
|
|
523
|
-
|
|
524
|
-
if (this.reflectionGenerator.shouldReflect(recentMemories)) {
|
|
525
|
-
const questions = this.reflectionGenerator.generateCandidateQuestions(recentMemories);
|
|
526
|
-
const question = questions[0];
|
|
527
|
-
|
|
528
|
-
const relevantMemories = this.retrieve(question);
|
|
529
|
-
const memoryObjects = relevantMemories.map(r => r.memory);
|
|
530
|
-
|
|
531
|
-
const reflectionData = this.reflectionGenerator.generateReflection(memoryObjects, question);
|
|
532
|
-
|
|
533
|
-
const reflection = new Reflection(
|
|
534
|
-
reflectionData.content,
|
|
535
|
-
reflectionData.insights,
|
|
536
|
-
reflectionData.evidence,
|
|
537
|
-
{ level: 1 }
|
|
538
|
-
);
|
|
539
|
-
|
|
540
|
-
this.addReflection(reflection);
|
|
541
|
-
return reflection;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
return null;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/**
|
|
548
|
-
* Get recent memories
|
|
549
|
-
* @param {number} count - Number of recent memories
|
|
550
|
-
* @returns {MemoryObject[]}
|
|
551
|
-
*/
|
|
552
|
-
getRecentMemories(count = 10) {
|
|
553
|
-
return [...this.memories]
|
|
554
|
-
.sort((a, b) => b.createdAt - a.createdAt)
|
|
555
|
-
.slice(0, count);
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* Get all memories of a specific type
|
|
560
|
-
* @param {string} type - Memory type
|
|
561
|
-
* @returns {MemoryObject[]}
|
|
562
|
-
*/
|
|
563
|
-
getMemoriesByType(type) {
|
|
564
|
-
return this.memories.filter(m => m.type === type);
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
/**
|
|
568
|
-
* Enforce maximum memory size using FIFO
|
|
569
|
-
*/
|
|
570
|
-
enforceMaxSize() {
|
|
571
|
-
while (this.memories.length > this.maxMemories) {
|
|
572
|
-
// Find oldest-lowest-importance in O(n) instead of full O(n log n) sort
|
|
573
|
-
let minScore = Infinity;
|
|
574
|
-
let minIdx = -1;
|
|
575
|
-
for (let i = 0; i < this.memories.length; i++) {
|
|
576
|
-
const m = this.memories[i];
|
|
577
|
-
const score = (m.createdAt || 0) + (m.importance || 0) * 1e10;
|
|
578
|
-
if (score < minScore) { minScore = score; minIdx = i; }
|
|
579
|
-
}
|
|
580
|
-
if (minIdx >= 0) this.memories.splice(minIdx, 1);
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
/**
|
|
585
|
-
* Get statistics
|
|
586
|
-
*/
|
|
587
|
-
getStats() {
|
|
588
|
-
const byType = {};
|
|
589
|
-
this.memories.forEach(m => {
|
|
590
|
-
byType[m.type] = (byType[m.type] || 0) + 1;
|
|
591
|
-
});
|
|
592
|
-
|
|
593
|
-
return {
|
|
594
|
-
total: this.memories.length,
|
|
595
|
-
byType,
|
|
596
|
-
recentCount: this.getRecentMemories(5).length
|
|
597
|
-
};
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* Generative Agent - Main Class
|
|
603
|
-
* Combines Memory Stream, Reflection, and Planning for believable agent behavior
|
|
604
|
-
*/
|
|
605
|
-
class GenerativeAgent {
|
|
606
|
-
constructor(config = {}) {
|
|
607
|
-
this.name = config.name || 'Agent';
|
|
608
|
-
this.age = config.age || null;
|
|
609
|
-
this.traits = config.traits || [];
|
|
610
|
-
this.summary = config.summary || '';
|
|
611
|
-
|
|
612
|
-
this.memoryStream = new MemoryStream(config.memory);
|
|
613
|
-
this.observationCount = 0;
|
|
614
|
-
this.planCount = 0;
|
|
615
|
-
|
|
616
|
-
console.log(`[GenerativeAgent] ${this.name} initialized`);
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
/**
|
|
620
|
-
* Set agent's core description
|
|
621
|
-
* @param {string} summary - Summary description
|
|
622
|
-
* @param {string[]} traits - Innate traits
|
|
623
|
-
*/
|
|
624
|
-
setCoreDescription(summary, traits = []) {
|
|
625
|
-
this.summary = summary;
|
|
626
|
-
this.traits = traits;
|
|
627
|
-
|
|
628
|
-
// Add to memory
|
|
629
|
-
this.memoryStream.addObservation(
|
|
630
|
-
`Core identity: ${summary}`,
|
|
631
|
-
{ importance: 10, tags: ['identity'] }
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
/**
|
|
636
|
-
* Perceive environment and add observation
|
|
637
|
-
* @param {string} content - What was perceived
|
|
638
|
-
* @param {object} metadata - Additional metadata
|
|
639
|
-
*/
|
|
640
|
-
observe(content, metadata = {}) {
|
|
641
|
-
this.observationCount++;
|
|
642
|
-
|
|
643
|
-
const observation = this.memoryStream.addObservation(content, {
|
|
644
|
-
...metadata,
|
|
645
|
-
importance: metadata.importance || this.memoryStream.importanceFn(content)
|
|
646
|
-
});
|
|
647
|
-
|
|
648
|
-
// Check for reflection
|
|
649
|
-
const reflection = this.memoryStream.maybeGenerateReflection();
|
|
650
|
-
if (reflection) {
|
|
651
|
-
console.log(`[${this.name}] Generated reflection: ${reflection.content.substring(0, 50)}...`);
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
return observation;
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
/**
|
|
658
|
-
* Retrieve relevant memories for current situation
|
|
659
|
-
* @param {string} situation - Current situation description
|
|
660
|
-
* @returns {MemoryObject[]} Relevant memories
|
|
661
|
-
*/
|
|
662
|
-
remember(situation) {
|
|
663
|
-
const results = this.memoryStream.retrieve(situation);
|
|
664
|
-
return results;
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
/**
|
|
668
|
-
* Create daily plan
|
|
669
|
-
* @param {string} date - Date for plan
|
|
670
|
-
* @param {string} previousDaySummary - Previous day's activities
|
|
671
|
-
*/
|
|
672
|
-
planDay(date, previousDaySummary = '') {
|
|
673
|
-
const plans = this.planGenerator.createDayPlan(
|
|
674
|
-
this.summary + '\nTraits: ' + this.traits.join(', '),
|
|
675
|
-
previousDaySummary,
|
|
676
|
-
date
|
|
677
|
-
);
|
|
678
|
-
|
|
679
|
-
plans.forEach(p => {
|
|
680
|
-
this.planGenerator.refinePlan(p);
|
|
681
|
-
this.memoryStream.addPlan(p);
|
|
682
|
-
this.planCount++;
|
|
683
|
-
});
|
|
684
|
-
|
|
685
|
-
return plans;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
/**
|
|
689
|
-
* Get current plan
|
|
690
|
-
* @returns {Plan[]}
|
|
691
|
-
*/
|
|
692
|
-
getCurrentPlans() {
|
|
693
|
-
return this.memoryStream.getMemoriesByType('plan')
|
|
694
|
-
.filter(p => p.status === 'pending' || p.status === 'in_progress');
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
/**
|
|
698
|
-
* React to environment change
|
|
699
|
-
* @param {object} change - Environment change
|
|
700
|
-
*/
|
|
701
|
-
react(change) {
|
|
702
|
-
// Observe the change
|
|
703
|
-
this.observe(`Environment changed: ${change.description || JSON.stringify(change)}`);
|
|
704
|
-
|
|
705
|
-
// Update plans if needed
|
|
706
|
-
const plans = this.getCurrentPlans();
|
|
707
|
-
this.planGenerator.reactToEnvironment(plans, change);
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
/**
|
|
711
|
-
* Converse with another agent
|
|
712
|
-
* @param {string} message - Message received
|
|
713
|
-
* @param {GenerativeAgent} other - Other agent
|
|
714
|
-
* @returns {string} Response
|
|
715
|
-
*/
|
|
716
|
-
async converse(message, other) {
|
|
717
|
-
// Remember the conversation
|
|
718
|
-
this.observe(`${this.name} and ${other.name} conversed about: ${message}`);
|
|
719
|
-
|
|
720
|
-
// Retrieve relevant memories
|
|
721
|
-
const relevant = this.remember(message);
|
|
722
|
-
|
|
723
|
-
// In production, would use LLM to generate response
|
|
724
|
-
// Here we generate simple response
|
|
725
|
-
const response = this.generateResponse(message, relevant, other);
|
|
726
|
-
|
|
727
|
-
// Remember own response
|
|
728
|
-
this.observe(`${this.name} said to ${other.name}: ${response}`);
|
|
729
|
-
|
|
730
|
-
return response;
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
/**
|
|
734
|
-
* Generate response (simplified)
|
|
735
|
-
*/
|
|
736
|
-
generateResponse(message, relevantMemories, other) {
|
|
737
|
-
const memoryContents = relevantMemories.map(r => r.memory.content).join('; ');
|
|
738
|
-
|
|
739
|
-
if (/party|event|invitation/i.test(message)) {
|
|
740
|
-
return "That sounds great! I'd like to come.";
|
|
741
|
-
}
|
|
742
|
-
if (/help|assist|support/i.test(message)) {
|
|
743
|
-
return "I'd be happy to help with that.";
|
|
744
|
-
}
|
|
745
|
-
if (/what.*doing|plans/i.test(message)) {
|
|
746
|
-
const plans = this.getCurrentPlans();
|
|
747
|
-
if (plans.length > 0) {
|
|
748
|
-
return `I'm planning to ${plans[0].content}`;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
return "I understand. Let me think about that.";
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
* Get agent summary for prompting
|
|
757
|
-
* @returns {string} Summary string
|
|
758
|
-
*/
|
|
759
|
-
getSummary() {
|
|
760
|
-
return `${this.name}${this.age ? ` (age ${this.age})` : ''}. ${this.summary}. Traits: ${this.traits.join(', ')}`;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
/**
|
|
764
|
-
* Get statistics
|
|
765
|
-
*/
|
|
766
|
-
getStats() {
|
|
767
|
-
return {
|
|
768
|
-
name: this.name,
|
|
769
|
-
observations: this.observationCount,
|
|
770
|
-
plans: this.planCount,
|
|
771
|
-
memoryStats: this.memoryStream.getStats()
|
|
772
|
-
};
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
// Create default plan generator for backwards compatibility
|
|
777
|
-
GenerativeAgent.prototype.planGenerator = new PlanGenerator();
|
|
778
|
-
|
|
779
|
-
/**
|
|
780
|
-
* Demo function demonstrating Generative Agents architecture
|
|
781
|
-
*/
|
|
782
|
-
function demo() {
|
|
783
|
-
console.log('='.repeat(60));
|
|
784
|
-
console.log('Generative Agents Demo - Memory Stream Architecture');
|
|
785
|
-
console.log('='.repeat(60));
|
|
786
|
-
|
|
787
|
-
// Create agent
|
|
788
|
-
const eddy = new GenerativeAgent({
|
|
789
|
-
name: 'Eddy Lin',
|
|
790
|
-
age: 19,
|
|
791
|
-
traits: ['friendly', 'outgoing', 'hospitable'],
|
|
792
|
-
config: {
|
|
793
|
-
memory: {
|
|
794
|
-
maxMemories: 100,
|
|
795
|
-
retrieval: { maxResults: 5 }
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
});
|
|
799
|
-
|
|
800
|
-
// Set core description
|
|
801
|
-
eddy.setCoreDescription(
|
|
802
|
-
'Eddy Lin is a student at Oak Hill College studying music theory and composition. ' +
|
|
803
|
-
'He loves to explore different musical styles and is always looking for ways to expand his knowledge.',
|
|
804
|
-
['friendly', 'outgoing', 'hospitable']
|
|
805
|
-
);
|
|
806
|
-
|
|
807
|
-
console.log('\n--- Memory Stream: Adding Observations ---');
|
|
808
|
-
|
|
809
|
-
// Add observations (simulating environment perception)
|
|
810
|
-
const observations = [
|
|
811
|
-
{ content: 'Eddy Lin is writing a research paper on gentrification', location: 'library' },
|
|
812
|
-
{ content: 'Eddy Lin enjoys reading a book on urban development', location: 'library' },
|
|
813
|
-
{ content: 'Eddy Lin is conversing with Ayesha Khan about exercising', location: 'gym' },
|
|
814
|
-
{ content: 'Eddy Lin is setting up his music studio at home', location: 'home' },
|
|
815
|
-
{ content: 'Eddy Lin is meeting with his music professor about composition project', location: 'campus' },
|
|
816
|
-
];
|
|
817
|
-
|
|
818
|
-
observations.forEach(obs => {
|
|
819
|
-
eddy.observe(obs.content, { location: obs.location });
|
|
820
|
-
console.log(` + Observation: ${obs.content.substring(0, 50)}...`);
|
|
821
|
-
});
|
|
822
|
-
|
|
823
|
-
console.log('\n--- Memory Retrieval: Query "research and passion" ---');
|
|
824
|
-
|
|
825
|
-
const relevant = eddy.remember('research and passion');
|
|
826
|
-
relevant.forEach(r => {
|
|
827
|
-
console.log(` [score: ${r.score.toFixed(3)}] ${r.memory.content.substring(0, 60)}...`);
|
|
828
|
-
console.log(` breakdown: recency=${r.breakdown.recency.toFixed(2)}, importance=${r.breakdown.importance.toFixed(2)}, relevance=${r.breakdown.relevance.toFixed(2)}`);
|
|
829
|
-
});
|
|
830
|
-
|
|
831
|
-
console.log('\n--- Reflection Generation ---');
|
|
832
|
-
|
|
833
|
-
// Force reflection generation for demo
|
|
834
|
-
const reflection = eddy.memoryStream.maybeGenerateReflection();
|
|
835
|
-
if (reflection) {
|
|
836
|
-
console.log(` Generated Reflection: ${reflection.content}`);
|
|
837
|
-
console.log(` Insights: ${reflection.insights.join(', ')}`);
|
|
838
|
-
} else {
|
|
839
|
-
console.log(' (Reflection threshold not met yet)');
|
|
840
|
-
}
|
|
841
|
-
|
|
842
|
-
console.log('\n--- Planning: Create Day Plan ---');
|
|
843
|
-
|
|
844
|
-
const plans = eddy.planDay('2024-02-14', 'Tuesday: classes, library study, dinner with friends');
|
|
845
|
-
plans.forEach(p => {
|
|
846
|
-
console.log(` Plan: ${p.content}`);
|
|
847
|
-
console.log(` Location: ${p.location}, Duration: ${p.duration}min`);
|
|
848
|
-
if (p.subTasks.length > 0) {
|
|
849
|
-
console.log(` Sub-tasks: ${p.subTasks.join(', ')}`);
|
|
850
|
-
}
|
|
851
|
-
});
|
|
852
|
-
|
|
853
|
-
console.log('\n--- Social Interaction ---');
|
|
854
|
-
|
|
855
|
-
const edison = new GenerativeAgent({ name: 'Isabella', traits: ['warm', 'organized'] });
|
|
856
|
-
eddy.converse('Would you like to come to a Valentine\'s Day party?', edison).then(response => {
|
|
857
|
-
console.log(` Eddy's response: "${response}"`);
|
|
858
|
-
|
|
859
|
-
console.log('\n--- Memory Statistics ---');
|
|
860
|
-
const stats = eddy.getStats();
|
|
861
|
-
console.log(` Total memories: ${stats.memoryStats.total}`);
|
|
862
|
-
console.log(` By type:`, stats.memoryStats.byType);
|
|
863
|
-
|
|
864
|
-
console.log('\n--- Agent Statistics ---');
|
|
865
|
-
console.log(` Observations: ${stats.observations}`);
|
|
866
|
-
console.log(` Plans created: ${stats.plans}`);
|
|
867
|
-
|
|
868
|
-
console.log('\n' + '='.repeat(60));
|
|
869
|
-
console.log('Demo complete!');
|
|
870
|
-
console.log('='.repeat(60));
|
|
871
|
-
});
|
|
872
|
-
}
|
|
873
|
-
|
|
874
|
-
// Export for HeartFlow integration
|
|
875
|
-
module.exports = {
|
|
876
|
-
GenerativeAgent,
|
|
877
|
-
MemoryStream,
|
|
878
|
-
MemoryRetrieval,
|
|
879
|
-
ReflectionGenerator,
|
|
880
|
-
PlanGenerator,
|
|
881
|
-
MemoryObject,
|
|
882
|
-
Observation,
|
|
883
|
-
Reflection,
|
|
884
|
-
Plan,
|
|
885
|
-
demo
|
|
886
|
-
};
|