abmind 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/LICENSE +190 -0
- package/README.md +191 -0
- package/dist/cli/abmind-backfill.d.ts +3 -0
- package/dist/cli/abmind-backfill.d.ts.map +1 -0
- package/dist/cli/abmind-backfill.js +64 -0
- package/dist/cli/abmind-backfill.js.map +1 -0
- package/dist/cli/abmind-backup.d.ts +5 -0
- package/dist/cli/abmind-backup.d.ts.map +1 -0
- package/dist/cli/abmind-backup.js +44 -0
- package/dist/cli/abmind-backup.js.map +1 -0
- package/dist/cli/abmind-bundle.d.ts +7 -0
- package/dist/cli/abmind-bundle.d.ts.map +1 -0
- package/dist/cli/abmind-bundle.js +17 -0
- package/dist/cli/abmind-bundle.js.map +1 -0
- package/dist/cli/abmind-edit.d.ts +10 -0
- package/dist/cli/abmind-edit.d.ts.map +1 -0
- package/dist/cli/abmind-edit.js +160 -0
- package/dist/cli/abmind-edit.js.map +1 -0
- package/dist/cli/abmind-embed.d.ts +3 -0
- package/dist/cli/abmind-embed.d.ts.map +1 -0
- package/dist/cli/abmind-embed.js +83 -0
- package/dist/cli/abmind-embed.js.map +1 -0
- package/dist/cli/abmind-expand.d.ts +6 -0
- package/dist/cli/abmind-expand.d.ts.map +1 -0
- package/dist/cli/abmind-expand.js +100 -0
- package/dist/cli/abmind-expand.js.map +1 -0
- package/dist/cli/abmind-hook-doctor.d.ts +8 -0
- package/dist/cli/abmind-hook-doctor.d.ts.map +1 -0
- package/dist/cli/abmind-hook-doctor.js +73 -0
- package/dist/cli/abmind-hook-doctor.js.map +1 -0
- package/dist/cli/abmind-hook-recall.d.ts +16 -0
- package/dist/cli/abmind-hook-recall.d.ts.map +1 -0
- package/dist/cli/abmind-hook-recall.js +123 -0
- package/dist/cli/abmind-hook-recall.js.map +1 -0
- package/dist/cli/abmind-hook-store.d.ts +17 -0
- package/dist/cli/abmind-hook-store.d.ts.map +1 -0
- package/dist/cli/abmind-hook-store.js +115 -0
- package/dist/cli/abmind-hook-store.js.map +1 -0
- package/dist/cli/abmind-hook-wakeup.d.ts +12 -0
- package/dist/cli/abmind-hook-wakeup.d.ts.map +1 -0
- package/dist/cli/abmind-hook-wakeup.js +143 -0
- package/dist/cli/abmind-hook-wakeup.js.map +1 -0
- package/dist/cli/abmind-ingest.d.ts +7 -0
- package/dist/cli/abmind-ingest.d.ts.map +1 -0
- package/dist/cli/abmind-ingest.js +96 -0
- package/dist/cli/abmind-ingest.js.map +1 -0
- package/dist/cli/abmind-install.d.ts +10 -0
- package/dist/cli/abmind-install.d.ts.map +1 -0
- package/dist/cli/abmind-install.js +240 -0
- package/dist/cli/abmind-install.js.map +1 -0
- package/dist/cli/abmind-mcp.d.ts +3 -0
- package/dist/cli/abmind-mcp.d.ts.map +1 -0
- package/dist/cli/abmind-mcp.js +26 -0
- package/dist/cli/abmind-mcp.js.map +1 -0
- package/dist/cli/abmind-memory-stats.d.ts +3 -0
- package/dist/cli/abmind-memory-stats.d.ts.map +1 -0
- package/dist/cli/abmind-memory-stats.js +45 -0
- package/dist/cli/abmind-memory-stats.js.map +1 -0
- package/dist/cli/abmind-migrate-openclaw.d.ts +12 -0
- package/dist/cli/abmind-migrate-openclaw.d.ts.map +1 -0
- package/dist/cli/abmind-migrate-openclaw.js +247 -0
- package/dist/cli/abmind-migrate-openclaw.js.map +1 -0
- package/dist/cli/abmind-recall.d.ts +8 -0
- package/dist/cli/abmind-recall.d.ts.map +1 -0
- package/dist/cli/abmind-recall.js +94 -0
- package/dist/cli/abmind-recall.js.map +1 -0
- package/dist/cli/abmind-reset.d.ts +11 -0
- package/dist/cli/abmind-reset.d.ts.map +1 -0
- package/dist/cli/abmind-reset.js +143 -0
- package/dist/cli/abmind-reset.js.map +1 -0
- package/dist/cli/abmind-restore.d.ts +5 -0
- package/dist/cli/abmind-restore.d.ts.map +1 -0
- package/dist/cli/abmind-restore.js +64 -0
- package/dist/cli/abmind-restore.js.map +1 -0
- package/dist/cli/abmind-retro-extract.d.ts +15 -0
- package/dist/cli/abmind-retro-extract.d.ts.map +1 -0
- package/dist/cli/abmind-retro-extract.js +113 -0
- package/dist/cli/abmind-retro-extract.js.map +1 -0
- package/dist/cli/abmind-rollback.d.ts +8 -0
- package/dist/cli/abmind-rollback.d.ts.map +1 -0
- package/dist/cli/abmind-rollback.js +76 -0
- package/dist/cli/abmind-rollback.js.map +1 -0
- package/dist/cli/abmind-secrets.d.ts +12 -0
- package/dist/cli/abmind-secrets.d.ts.map +1 -0
- package/dist/cli/abmind-secrets.js +83 -0
- package/dist/cli/abmind-secrets.js.map +1 -0
- package/dist/cli/abmind-sleep-apply.d.ts +3 -0
- package/dist/cli/abmind-sleep-apply.d.ts.map +1 -0
- package/dist/cli/abmind-sleep-apply.js +50 -0
- package/dist/cli/abmind-sleep-apply.js.map +1 -0
- package/dist/cli/abmind-sleep-report.d.ts +3 -0
- package/dist/cli/abmind-sleep-report.d.ts.map +1 -0
- package/dist/cli/abmind-sleep-report.js +40 -0
- package/dist/cli/abmind-sleep-report.js.map +1 -0
- package/dist/cli/abmind-sleep-state.d.ts +3 -0
- package/dist/cli/abmind-sleep-state.d.ts.map +1 -0
- package/dist/cli/abmind-sleep-state.js +33 -0
- package/dist/cli/abmind-sleep-state.js.map +1 -0
- package/dist/cli/abmind-sleep.d.ts +14 -0
- package/dist/cli/abmind-sleep.d.ts.map +1 -0
- package/dist/cli/abmind-sleep.js +186 -0
- package/dist/cli/abmind-sleep.js.map +1 -0
- package/dist/cli/abmind-status-runtime.d.ts +9 -0
- package/dist/cli/abmind-status-runtime.d.ts.map +1 -0
- package/dist/cli/abmind-status-runtime.js +132 -0
- package/dist/cli/abmind-status-runtime.js.map +1 -0
- package/dist/cli/abmind-status.d.ts +3 -0
- package/dist/cli/abmind-status.d.ts.map +1 -0
- package/dist/cli/abmind-status.js +45 -0
- package/dist/cli/abmind-status.js.map +1 -0
- package/dist/cli/abmind-store.d.ts +54 -0
- package/dist/cli/abmind-store.d.ts.map +1 -0
- package/dist/cli/abmind-store.js +251 -0
- package/dist/cli/abmind-store.js.map +1 -0
- package/dist/cli/abmind-update.d.ts +11 -0
- package/dist/cli/abmind-update.d.ts.map +1 -0
- package/dist/cli/abmind-update.js +160 -0
- package/dist/cli/abmind-update.js.map +1 -0
- package/dist/cli/abmind-wakeup.d.ts +3 -0
- package/dist/cli/abmind-wakeup.d.ts.map +1 -0
- package/dist/cli/abmind-wakeup.js +36 -0
- package/dist/cli/abmind-wakeup.js.map +1 -0
- package/dist/cli/abmind.d.ts +10 -0
- package/dist/cli/abmind.d.ts.map +1 -0
- package/dist/cli/abmind.js +100 -0
- package/dist/cli/abmind.js.map +1 -0
- package/dist/src/abm-v2-vocab.d.ts +10 -0
- package/dist/src/abm-v2-vocab.d.ts.map +1 -0
- package/dist/src/abm-v2-vocab.js +66 -0
- package/dist/src/abm-v2-vocab.js.map +1 -0
- package/dist/src/adapters/openclaw.d.ts +66 -0
- package/dist/src/adapters/openclaw.d.ts.map +1 -0
- package/dist/src/adapters/openclaw.js +97 -0
- package/dist/src/adapters/openclaw.js.map +1 -0
- package/dist/src/backend-factory.d.ts +9 -0
- package/dist/src/backend-factory.d.ts.map +1 -0
- package/dist/src/backend-factory.js +23 -0
- package/dist/src/backend-factory.js.map +1 -0
- package/dist/src/backup.d.ts +19 -0
- package/dist/src/backup.d.ts.map +1 -0
- package/dist/src/backup.js +191 -0
- package/dist/src/backup.js.map +1 -0
- package/dist/src/brain-patterns.d.ts +20 -0
- package/dist/src/brain-patterns.d.ts.map +1 -0
- package/dist/src/brain-patterns.js +72 -0
- package/dist/src/brain-patterns.js.map +1 -0
- package/dist/src/cli-entry.d.ts +10 -0
- package/dist/src/cli-entry.d.ts.map +1 -0
- package/dist/src/cli-entry.js +29 -0
- package/dist/src/cli-entry.js.map +1 -0
- package/dist/src/cli-flags.d.ts +29 -0
- package/dist/src/cli-flags.d.ts.map +1 -0
- package/dist/src/cli-flags.js +72 -0
- package/dist/src/cli-flags.js.map +1 -0
- package/dist/src/cli-runner-raw.d.ts +21 -0
- package/dist/src/cli-runner-raw.d.ts.map +1 -0
- package/dist/src/cli-runner-raw.js +41 -0
- package/dist/src/cli-runner-raw.js.map +1 -0
- package/dist/src/cli-runner.d.ts +26 -0
- package/dist/src/cli-runner.d.ts.map +1 -0
- package/dist/src/cli-runner.js +51 -0
- package/dist/src/cli-runner.js.map +1 -0
- package/dist/src/consolidation-search.d.ts +17 -0
- package/dist/src/consolidation-search.d.ts.map +1 -0
- package/dist/src/consolidation-search.js +83 -0
- package/dist/src/consolidation-search.js.map +1 -0
- package/dist/src/context-engine.d.ts +89 -0
- package/dist/src/context-engine.d.ts.map +1 -0
- package/dist/src/context-engine.js +216 -0
- package/dist/src/context-engine.js.map +1 -0
- package/dist/src/context-tier-renderer.d.ts +79 -0
- package/dist/src/context-tier-renderer.d.ts.map +1 -0
- package/dist/src/context-tier-renderer.js +223 -0
- package/dist/src/context-tier-renderer.js.map +1 -0
- package/dist/src/contradiction-checker.d.ts +16 -0
- package/dist/src/contradiction-checker.d.ts.map +1 -0
- package/dist/src/contradiction-checker.js +40 -0
- package/dist/src/contradiction-checker.js.map +1 -0
- package/dist/src/crypto.d.ts +15 -0
- package/dist/src/crypto.d.ts.map +1 -0
- package/dist/src/crypto.js +86 -0
- package/dist/src/crypto.js.map +1 -0
- package/dist/src/deploy-lib/cleanup.d.ts +38 -0
- package/dist/src/deploy-lib/cleanup.d.ts.map +1 -0
- package/dist/src/deploy-lib/cleanup.js +71 -0
- package/dist/src/deploy-lib/cleanup.js.map +1 -0
- package/dist/src/deploy-lib/index.d.ts +20 -0
- package/dist/src/deploy-lib/index.d.ts.map +1 -0
- package/dist/src/deploy-lib/index.js +20 -0
- package/dist/src/deploy-lib/index.js.map +1 -0
- package/dist/src/deploy-lib/lock.d.ts +37 -0
- package/dist/src/deploy-lib/lock.d.ts.map +1 -0
- package/dist/src/deploy-lib/lock.js +107 -0
- package/dist/src/deploy-lib/lock.js.map +1 -0
- package/dist/src/deploy-lib/manifest.d.ts +42 -0
- package/dist/src/deploy-lib/manifest.d.ts.map +1 -0
- package/dist/src/deploy-lib/manifest.js +38 -0
- package/dist/src/deploy-lib/manifest.js.map +1 -0
- package/dist/src/deploy-lib/paths.d.ts +29 -0
- package/dist/src/deploy-lib/paths.d.ts.map +1 -0
- package/dist/src/deploy-lib/paths.js +40 -0
- package/dist/src/deploy-lib/paths.js.map +1 -0
- package/dist/src/deploy-lib/releases.d.ts +52 -0
- package/dist/src/deploy-lib/releases.d.ts.map +1 -0
- package/dist/src/deploy-lib/releases.js +119 -0
- package/dist/src/deploy-lib/releases.js.map +1 -0
- package/dist/src/deploy-lib/safe-copy.d.ts +16 -0
- package/dist/src/deploy-lib/safe-copy.d.ts.map +1 -0
- package/dist/src/deploy-lib/safe-copy.js +32 -0
- package/dist/src/deploy-lib/safe-copy.js.map +1 -0
- package/dist/src/embedding-health.d.ts +12 -0
- package/dist/src/embedding-health.d.ts.map +1 -0
- package/dist/src/embedding-health.js +18 -0
- package/dist/src/embedding-health.js.map +1 -0
- package/dist/src/embedding-provider.d.ts +48 -0
- package/dist/src/embedding-provider.d.ts.map +1 -0
- package/dist/src/embedding-provider.js +145 -0
- package/dist/src/embedding-provider.js.map +1 -0
- package/dist/src/embedding-quantize.d.ts +11 -0
- package/dist/src/embedding-quantize.d.ts.map +1 -0
- package/dist/src/embedding-quantize.js +38 -0
- package/dist/src/embedding-quantize.js.map +1 -0
- package/dist/src/emotion-arc.d.ts +17 -0
- package/dist/src/emotion-arc.d.ts.map +1 -0
- package/dist/src/emotion-arc.js +62 -0
- package/dist/src/emotion-arc.js.map +1 -0
- package/dist/src/emotion-tagger.d.ts +8 -0
- package/dist/src/emotion-tagger.d.ts.map +1 -0
- package/dist/src/emotion-tagger.js +45 -0
- package/dist/src/emotion-tagger.js.map +1 -0
- package/dist/src/emotion-utils.d.ts +13 -0
- package/dist/src/emotion-utils.d.ts.map +1 -0
- package/dist/src/emotion-utils.js +76 -0
- package/dist/src/emotion-utils.js.map +1 -0
- package/dist/src/entity-graph.d.ts +33 -0
- package/dist/src/entity-graph.d.ts.map +1 -0
- package/dist/src/entity-graph.js +42 -0
- package/dist/src/entity-graph.js.map +1 -0
- package/dist/src/env-schema.d.ts +46 -0
- package/dist/src/env-schema.d.ts.map +1 -0
- package/dist/src/env-schema.js +93 -0
- package/dist/src/env-schema.js.map +1 -0
- package/dist/src/hook-helpers.d.ts +16 -0
- package/dist/src/hook-helpers.d.ts.map +1 -0
- package/dist/src/hook-helpers.js +64 -0
- package/dist/src/hook-helpers.js.map +1 -0
- package/dist/src/imemory-system.d.ts +138 -0
- package/dist/src/imemory-system.d.ts.map +1 -0
- package/dist/src/imemory-system.js +40 -0
- package/dist/src/imemory-system.js.map +1 -0
- package/dist/src/importance-flagger.d.ts +8 -0
- package/dist/src/importance-flagger.d.ts.map +1 -0
- package/dist/src/importance-flagger.js +24 -0
- package/dist/src/importance-flagger.js.map +1 -0
- package/dist/src/index.d.ts +79 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +79 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ingest-pipeline.d.ts +32 -0
- package/dist/src/ingest-pipeline.d.ts.map +1 -0
- package/dist/src/ingest-pipeline.js +58 -0
- package/dist/src/ingest-pipeline.js.map +1 -0
- package/dist/src/injection-scanner.d.ts +16 -0
- package/dist/src/injection-scanner.d.ts.map +1 -0
- package/dist/src/injection-scanner.js +182 -0
- package/dist/src/injection-scanner.js.map +1 -0
- package/dist/src/local-time.d.ts +12 -0
- package/dist/src/local-time.d.ts.map +1 -0
- package/dist/src/local-time.js +23 -0
- package/dist/src/local-time.js.map +1 -0
- package/dist/src/maintenance-service.d.ts +46 -0
- package/dist/src/maintenance-service.d.ts.map +1 -0
- package/dist/src/maintenance-service.js +280 -0
- package/dist/src/maintenance-service.js.map +1 -0
- package/dist/src/mcp-server.d.ts +6 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/dist/src/mcp-server.js +50 -0
- package/dist/src/mcp-server.js.map +1 -0
- package/dist/src/media-sanitizer.d.ts +11 -0
- package/dist/src/media-sanitizer.d.ts.map +1 -0
- package/dist/src/media-sanitizer.js +56 -0
- package/dist/src/media-sanitizer.js.map +1 -0
- package/dist/src/mem-config-env.d.ts +18 -0
- package/dist/src/mem-config-env.d.ts.map +1 -0
- package/dist/src/mem-config-env.js +43 -0
- package/dist/src/mem-config-env.js.map +1 -0
- package/dist/src/mem-env.d.ts +5 -0
- package/dist/src/mem-env.d.ts.map +1 -0
- package/dist/src/mem-env.js +19 -0
- package/dist/src/mem-env.js.map +1 -0
- package/dist/src/mem-logger.d.ts +20 -0
- package/dist/src/mem-logger.d.ts.map +1 -0
- package/dist/src/mem-logger.js +24 -0
- package/dist/src/mem-logger.js.map +1 -0
- package/dist/src/mem-paths.d.ts +20 -0
- package/dist/src/mem-paths.d.ts.map +1 -0
- package/dist/src/mem-paths.js +43 -0
- package/dist/src/mem-paths.js.map +1 -0
- package/dist/src/mem-types.d.ts +157 -0
- package/dist/src/mem-types.d.ts.map +1 -0
- package/dist/src/mem-types.js +2 -0
- package/dist/src/mem-types.js.map +1 -0
- package/dist/src/memory-backend.d.ts +65 -0
- package/dist/src/memory-backend.d.ts.map +1 -0
- package/dist/src/memory-backend.js +43 -0
- package/dist/src/memory-backend.js.map +1 -0
- package/dist/src/memory-compressor.d.ts +17 -0
- package/dist/src/memory-compressor.d.ts.map +1 -0
- package/dist/src/memory-compressor.js +147 -0
- package/dist/src/memory-compressor.js.map +1 -0
- package/dist/src/memory-config.d.ts +30 -0
- package/dist/src/memory-config.d.ts.map +1 -0
- package/dist/src/memory-config.js +62 -0
- package/dist/src/memory-config.js.map +1 -0
- package/dist/src/memory-db.d.ts +7 -0
- package/dist/src/memory-db.d.ts.map +1 -0
- package/dist/src/memory-db.js +173 -0
- package/dist/src/memory-db.js.map +1 -0
- package/dist/src/memory-editor.d.ts +32 -0
- package/dist/src/memory-editor.d.ts.map +1 -0
- package/dist/src/memory-editor.js +339 -0
- package/dist/src/memory-editor.js.map +1 -0
- package/dist/src/memory-index.d.ts +91 -0
- package/dist/src/memory-index.d.ts.map +1 -0
- package/dist/src/memory-index.js +310 -0
- package/dist/src/memory-index.js.map +1 -0
- package/dist/src/memory-ipc-client.d.ts +22 -0
- package/dist/src/memory-ipc-client.d.ts.map +1 -0
- package/dist/src/memory-ipc-client.js +75 -0
- package/dist/src/memory-ipc-client.js.map +1 -0
- package/dist/src/memory-ipc-server.d.ts +17 -0
- package/dist/src/memory-ipc-server.d.ts.map +1 -0
- package/dist/src/memory-ipc-server.js +86 -0
- package/dist/src/memory-ipc-server.js.map +1 -0
- package/dist/src/memory-manager.d.ts +155 -0
- package/dist/src/memory-manager.d.ts.map +1 -0
- package/dist/src/memory-manager.js +463 -0
- package/dist/src/memory-manager.js.map +1 -0
- package/dist/src/memory-renderer.d.ts +15 -0
- package/dist/src/memory-renderer.d.ts.map +1 -0
- package/dist/src/memory-renderer.js +126 -0
- package/dist/src/memory-renderer.js.map +1 -0
- package/dist/src/message-store.d.ts +42 -0
- package/dist/src/message-store.d.ts.map +1 -0
- package/dist/src/message-store.js +145 -0
- package/dist/src/message-store.js.map +1 -0
- package/dist/src/mmr.d.ts +17 -0
- package/dist/src/mmr.d.ts.map +1 -0
- package/dist/src/mmr.js +48 -0
- package/dist/src/mmr.js.map +1 -0
- package/dist/src/ollama-embed.d.ts +46 -0
- package/dist/src/ollama-embed.d.ts.map +1 -0
- package/dist/src/ollama-embed.js +139 -0
- package/dist/src/ollama-embed.js.map +1 -0
- package/dist/src/openclaw-plugin/engine.d.ts +87 -0
- package/dist/src/openclaw-plugin/engine.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/engine.js +121 -0
- package/dist/src/openclaw-plugin/engine.js.map +1 -0
- package/dist/src/openclaw-plugin/hooks.d.ts +41 -0
- package/dist/src/openclaw-plugin/hooks.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/hooks.js +155 -0
- package/dist/src/openclaw-plugin/hooks.js.map +1 -0
- package/dist/src/openclaw-plugin/index.d.ts +20 -0
- package/dist/src/openclaw-plugin/index.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/index.js +151 -0
- package/dist/src/openclaw-plugin/index.js.map +1 -0
- package/dist/src/openclaw-plugin/message-adapter.d.ts +13 -0
- package/dist/src/openclaw-plugin/message-adapter.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/message-adapter.js +49 -0
- package/dist/src/openclaw-plugin/message-adapter.js.map +1 -0
- package/dist/src/openclaw-plugin/prompt-builder.d.ts +17 -0
- package/dist/src/openclaw-plugin/prompt-builder.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/prompt-builder.js +22 -0
- package/dist/src/openclaw-plugin/prompt-builder.js.map +1 -0
- package/dist/src/openclaw-plugin/public-artifacts.d.ts +20 -0
- package/dist/src/openclaw-plugin/public-artifacts.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/public-artifacts.js +59 -0
- package/dist/src/openclaw-plugin/public-artifacts.js.map +1 -0
- package/dist/src/openclaw-plugin/runtime-adapter.d.ts +26 -0
- package/dist/src/openclaw-plugin/runtime-adapter.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/runtime-adapter.js +161 -0
- package/dist/src/openclaw-plugin/runtime-adapter.js.map +1 -0
- package/dist/src/openclaw-plugin/session-mapper.d.ts +11 -0
- package/dist/src/openclaw-plugin/session-mapper.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/session-mapper.js +17 -0
- package/dist/src/openclaw-plugin/session-mapper.js.map +1 -0
- package/dist/src/openclaw-plugin/tools.d.ts +32 -0
- package/dist/src/openclaw-plugin/tools.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/tools.js +131 -0
- package/dist/src/openclaw-plugin/tools.js.map +1 -0
- package/dist/src/openclaw-plugin/types.d.ts +35 -0
- package/dist/src/openclaw-plugin/types.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/types.js +2 -0
- package/dist/src/openclaw-plugin/types.js.map +1 -0
- package/dist/src/query-tokenizer.d.ts +33 -0
- package/dist/src/query-tokenizer.d.ts.map +1 -0
- package/dist/src/query-tokenizer.js +84 -0
- package/dist/src/query-tokenizer.js.map +1 -0
- package/dist/src/recall-benchmark.d.ts +13 -0
- package/dist/src/recall-benchmark.d.ts.map +1 -0
- package/dist/src/recall-benchmark.js +256 -0
- package/dist/src/recall-benchmark.js.map +1 -0
- package/dist/src/recall-engine.d.ts +81 -0
- package/dist/src/recall-engine.d.ts.map +1 -0
- package/dist/src/recall-engine.js +387 -0
- package/dist/src/recall-engine.js.map +1 -0
- package/dist/src/redact-secrets.d.ts +20 -0
- package/dist/src/redact-secrets.d.ts.map +1 -0
- package/dist/src/redact-secrets.js +42 -0
- package/dist/src/redact-secrets.js.map +1 -0
- package/dist/src/runtime-store.d.ts +47 -0
- package/dist/src/runtime-store.d.ts.map +1 -0
- package/dist/src/runtime-store.js +78 -0
- package/dist/src/runtime-store.js.map +1 -0
- package/dist/src/session-context.d.ts +10 -0
- package/dist/src/session-context.d.ts.map +1 -0
- package/dist/src/session-context.js +83 -0
- package/dist/src/session-context.js.map +1 -0
- package/dist/src/session-memory.d.ts +8 -0
- package/dist/src/session-memory.d.ts.map +1 -0
- package/dist/src/session-memory.js +45 -0
- package/dist/src/session-memory.js.map +1 -0
- package/dist/src/signature-generator.d.ts +15 -0
- package/dist/src/signature-generator.d.ts.map +1 -0
- package/dist/src/signature-generator.js +78 -0
- package/dist/src/signature-generator.js.map +1 -0
- package/dist/src/sleep/basic.d.ts +48 -0
- package/dist/src/sleep/basic.d.ts.map +1 -0
- package/dist/src/sleep/basic.js +147 -0
- package/dist/src/sleep/basic.js.map +1 -0
- package/dist/src/sleep/levels.d.ts +20 -0
- package/dist/src/sleep/levels.d.ts.map +1 -0
- package/dist/src/sleep/levels.js +11 -0
- package/dist/src/sleep/levels.js.map +1 -0
- package/dist/src/sleep/native.d.ts +41 -0
- package/dist/src/sleep/native.d.ts.map +1 -0
- package/dist/src/sleep/native.js +112 -0
- package/dist/src/sleep/native.js.map +1 -0
- package/dist/src/sleep/orchestrator.d.ts +64 -0
- package/dist/src/sleep/orchestrator.d.ts.map +1 -0
- package/dist/src/sleep/orchestrator.js +960 -0
- package/dist/src/sleep/orchestrator.js.map +1 -0
- package/dist/src/sleep/runtime.d.ts +15 -0
- package/dist/src/sleep/runtime.d.ts.map +1 -0
- package/dist/src/sleep/runtime.js +2 -0
- package/dist/src/sleep/runtime.js.map +1 -0
- package/dist/src/sleep/sleep-daily-summary.d.ts +64 -0
- package/dist/src/sleep/sleep-daily-summary.d.ts.map +1 -0
- package/dist/src/sleep/sleep-daily-summary.js +273 -0
- package/dist/src/sleep/sleep-daily-summary.js.map +1 -0
- package/dist/src/sleep/sleep-extract-daily.d.ts +12 -0
- package/dist/src/sleep/sleep-extract-daily.d.ts.map +1 -0
- package/dist/src/sleep/sleep-extract-daily.js +55 -0
- package/dist/src/sleep/sleep-extract-daily.js.map +1 -0
- package/dist/src/sleep/sleep-prompt-loader.d.ts +27 -0
- package/dist/src/sleep/sleep-prompt-loader.d.ts.map +1 -0
- package/dist/src/sleep/sleep-prompt-loader.js +116 -0
- package/dist/src/sleep/sleep-prompt-loader.js.map +1 -0
- package/dist/src/sleep/test-harness.d.ts +67 -0
- package/dist/src/sleep/test-harness.d.ts.map +1 -0
- package/dist/src/sleep/test-harness.js +121 -0
- package/dist/src/sleep/test-harness.js.map +1 -0
- package/dist/src/sleep/trigger.d.ts +3 -0
- package/dist/src/sleep/trigger.d.ts.map +1 -0
- package/dist/src/sleep/trigger.js +66 -0
- package/dist/src/sleep/trigger.js.map +1 -0
- package/dist/src/sleep-data-access.d.ts +54 -0
- package/dist/src/sleep-data-access.d.ts.map +1 -0
- package/dist/src/sleep-data-access.js +176 -0
- package/dist/src/sleep-data-access.js.map +1 -0
- package/dist/src/sleep-pipeline.d.ts +9 -0
- package/dist/src/sleep-pipeline.d.ts.map +1 -0
- package/dist/src/sleep-pipeline.js +8 -0
- package/dist/src/sleep-pipeline.js.map +1 -0
- package/dist/src/sleep-state-gatherer.d.ts +74 -0
- package/dist/src/sleep-state-gatherer.d.ts.map +1 -0
- package/dist/src/sleep-state-gatherer.js +275 -0
- package/dist/src/sleep-state-gatherer.js.map +1 -0
- package/dist/src/sqlite-backend.d.ts +23 -0
- package/dist/src/sqlite-backend.d.ts.map +1 -0
- package/dist/src/sqlite-backend.js +48 -0
- package/dist/src/sqlite-backend.js.map +1 -0
- package/dist/src/test-helpers.d.ts +3 -0
- package/dist/src/test-helpers.d.ts.map +1 -0
- package/dist/src/test-helpers.js +5 -0
- package/dist/src/test-helpers.js.map +1 -0
- package/dist/src/tier-llm-refinement.d.ts +35 -0
- package/dist/src/tier-llm-refinement.d.ts.map +1 -0
- package/dist/src/tier-llm-refinement.js +131 -0
- package/dist/src/tier-llm-refinement.js.map +1 -0
- package/dist/src/timeline-builder.d.ts +45 -0
- package/dist/src/timeline-builder.d.ts.map +1 -0
- package/dist/src/timeline-builder.js +147 -0
- package/dist/src/timeline-builder.js.map +1 -0
- package/dist/src/trigram-search.d.ts +28 -0
- package/dist/src/trigram-search.d.ts.map +1 -0
- package/dist/src/trigram-search.js +192 -0
- package/dist/src/trigram-search.js.map +1 -0
- package/dist/src/turn-classifier.d.ts +29 -0
- package/dist/src/turn-classifier.d.ts.map +1 -0
- package/dist/src/turn-classifier.js +186 -0
- package/dist/src/turn-classifier.js.map +1 -0
- package/dist/src/user-utils.d.ts +6 -0
- package/dist/src/user-utils.d.ts.map +1 -0
- package/dist/src/user-utils.js +27 -0
- package/dist/src/user-utils.js.map +1 -0
- package/dist/src/wake-up-builder.d.ts +12 -0
- package/dist/src/wake-up-builder.d.ts.map +1 -0
- package/dist/src/wake-up-builder.js +45 -0
- package/dist/src/wake-up-builder.js.map +1 -0
- package/dist/src/wake-up-renderer.d.ts +29 -0
- package/dist/src/wake-up-renderer.d.ts.map +1 -0
- package/dist/src/wake-up-renderer.js +182 -0
- package/dist/src/wake-up-renderer.js.map +1 -0
- package/openclaw.plugin.json +72 -0
- package/package.json +92 -5
- package/prompts/sleep/01-gc-noise.md +28 -0
- package/prompts/sleep/02-daily-summary.md +3 -0
- package/prompts/sleep/03-extract-from-daily.md +3 -0
- package/prompts/sleep/04-retrospective.md +30 -0
- package/prompts/sleep/06-feedback.md +17 -0
- package/prompts/sleep/07-topic-assignment.md +23 -0
- package/prompts/sleep/08-core-promotion.md +26 -0
- package/prompts/sleep/09-merge.md +19 -0
- package/prompts/sleep/10-translation.md +17 -0
- package/prompts/sleep/11-skill-review.md +12 -0
- package/prompts/sleep/12-core-knowledge.md +14 -0
- package/prompts/sleep/13-consolidation.md +11 -0
- package/prompts/sleep/14-emotion-context.md +17 -0
- package/prompts/sleep/15-contradiction-and-graph.md +48 -0
- package/prompts/sleep/16-rem-synthesis.md +31 -0
- package/prompts/sleep/basic.md +12 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* turn-classifier.ts — Heuristic classifier for conversation turns.
|
|
3
|
+
*
|
|
4
|
+
* Runs at turn write time. Derives type/topic/emotion hints for later
|
|
5
|
+
* middle-tier rendering (#348). Pure function, no LLM, no I/O.
|
|
6
|
+
*
|
|
7
|
+
* Hint values are nullable on the messages row — missing hints mean
|
|
8
|
+
* "classifier hadn't run for this turn" (historical messages, or
|
|
9
|
+
* classifier disabled). Renderer falls back to defaults.
|
|
10
|
+
*/
|
|
11
|
+
// Memory-type single-letter codes (matches memory-renderer v1 TYPE_CODE)
|
|
12
|
+
const TYPE_FACT = "F";
|
|
13
|
+
const TYPE_DECISION = "D";
|
|
14
|
+
const TYPE_PREFERENCE = "P";
|
|
15
|
+
const TYPE_LESSON = "L";
|
|
16
|
+
const TYPE_EVENT = "E";
|
|
17
|
+
const TYPE_TECHNICAL = "T";
|
|
18
|
+
const TYPE_QUESTION = "Q";
|
|
19
|
+
const TYPE_OBSERVATION = "O";
|
|
20
|
+
// Topic vocabulary — keep in sync with memory extraction topics
|
|
21
|
+
const TOPIC_VOCAB = [
|
|
22
|
+
"coding", "personal", "memory", "security", "relationships",
|
|
23
|
+
"money", "finance", "health", "work", "family", "travel",
|
|
24
|
+
"food", "music", "sports", "politics", "general",
|
|
25
|
+
];
|
|
26
|
+
// Emotion vocabulary — short codes (6 chars max)
|
|
27
|
+
const EMOTION_VOCAB = {
|
|
28
|
+
// joy / positive
|
|
29
|
+
happy: "joy", joy: "joy", great: "joy", awesome: "joy", excellent: "joy",
|
|
30
|
+
love: "love", loving: "love",
|
|
31
|
+
// sad / negative
|
|
32
|
+
sad: "sad", unhappy: "sad", depressed: "sad",
|
|
33
|
+
angry: "anger", furious: "anger", rage: "anger", mad: "anger",
|
|
34
|
+
frustrated: "frust", frustrating: "frust", annoyed: "frust", annoying: "frust",
|
|
35
|
+
anxious: "anx", worried: "anx", anxiety: "anx", stressed: "anx",
|
|
36
|
+
afraid: "fear", fear: "fear", scared: "fear", terrified: "fear",
|
|
37
|
+
// cognitive
|
|
38
|
+
confused: "doubt", doubt: "doubt", uncertain: "doubt", unsure: "doubt",
|
|
39
|
+
convinced: "convict", certain: "convict", sure: "convict",
|
|
40
|
+
// personal
|
|
41
|
+
tired: "exhaust", exhausted: "exhaust", drained: "exhaust",
|
|
42
|
+
excited: "joy", thrilled: "joy",
|
|
43
|
+
grief: "grief", mourning: "grief", lost: "grief",
|
|
44
|
+
hope: "hope", hopeful: "hope",
|
|
45
|
+
proud: "pride", proudly: "pride",
|
|
46
|
+
};
|
|
47
|
+
// Decision markers (verbs/phrases that indicate a choice or commitment)
|
|
48
|
+
const DECISION_MARKERS = [
|
|
49
|
+
/\b(decided|decide|chose|choosing|chosen|will go with|going with|let'?s (go|do|use))\b/i,
|
|
50
|
+
/\b(i'?ll|we'?ll) (use|go|do|try|take)\b/i,
|
|
51
|
+
/\b(plan to|gonna|going to)\b/i,
|
|
52
|
+
];
|
|
53
|
+
// Preference markers
|
|
54
|
+
const PREFERENCE_MARKERS = [
|
|
55
|
+
/\bi (prefer|like|love|hate|dislike|enjoy|avoid|always|never|usually|rarely)\b/i,
|
|
56
|
+
/\bmy (favorite|preference)\b/i,
|
|
57
|
+
];
|
|
58
|
+
// Lesson markers (realization, learning, "issue again")
|
|
59
|
+
const LESSON_MARKERS = [
|
|
60
|
+
/\b(learned|realized|turns out|issue again|keep getting|keeps happening|again\b.*broke)\b/i,
|
|
61
|
+
/\b(note to self|remember to|lesson|takeaway)\b/i,
|
|
62
|
+
];
|
|
63
|
+
// Technical markers (code, file paths, commands)
|
|
64
|
+
const TECHNICAL_MARKERS = [
|
|
65
|
+
/```/, // code block
|
|
66
|
+
/\/[\w-]+\/[\w.-]+/, // path-like
|
|
67
|
+
/\b[A-Z]{2,}\d*\b.*\b(error|bug|fix|issue)\b/i, // ERROR_CODE bug
|
|
68
|
+
/\b(npm|git|curl|sql|fts5?|api|regex)\b/i,
|
|
69
|
+
/\.\w{2,4}\b.*\b(file|module|script)\b/i,
|
|
70
|
+
];
|
|
71
|
+
// Event markers (happened, deadline, date)
|
|
72
|
+
const EVENT_MARKERS = [
|
|
73
|
+
/\b(happened|scheduled|deadline|tomorrow|yesterday|last week|next week)\b/i,
|
|
74
|
+
/\bon (monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i,
|
|
75
|
+
];
|
|
76
|
+
// Question interrogatives
|
|
77
|
+
const INTERROGATIVES = /\b(what|how|why|when|where|who|which|can you|could you|would you|should i)\b/i;
|
|
78
|
+
/**
|
|
79
|
+
* Classify a single conversation turn. Pure function.
|
|
80
|
+
*
|
|
81
|
+
* @param role "user" or "assistant"
|
|
82
|
+
* @param content Raw message text
|
|
83
|
+
* @returns Hints (nullable — returns null when no rule matches)
|
|
84
|
+
*/
|
|
85
|
+
export function classifyTurn(role, content) {
|
|
86
|
+
const roleLC = role.toLowerCase();
|
|
87
|
+
const text = content;
|
|
88
|
+
return {
|
|
89
|
+
typeHint: classifyType(roleLC, text),
|
|
90
|
+
topicHint: classifyTopic(text),
|
|
91
|
+
emotionHint: classifyEmotion(text),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function classifyType(role, text) {
|
|
95
|
+
// Question: ends with ? AND has interrogative word (not just rhetorical)
|
|
96
|
+
if (text.trimEnd().endsWith("?") && INTERROGATIVES.test(text)) {
|
|
97
|
+
return TYPE_QUESTION;
|
|
98
|
+
}
|
|
99
|
+
// Lesson / realization — explicit markers are strong signal, check BEFORE technical
|
|
100
|
+
// (e.g. "Note to self: always back up first" is a lesson, not technical)
|
|
101
|
+
for (const re of LESSON_MARKERS) {
|
|
102
|
+
if (re.test(text))
|
|
103
|
+
return TYPE_LESSON;
|
|
104
|
+
}
|
|
105
|
+
// Technical: code blocks, commands, paths
|
|
106
|
+
for (const re of TECHNICAL_MARKERS) {
|
|
107
|
+
if (re.test(text))
|
|
108
|
+
return TYPE_TECHNICAL;
|
|
109
|
+
}
|
|
110
|
+
// Decision markers
|
|
111
|
+
for (const re of DECISION_MARKERS) {
|
|
112
|
+
if (re.test(text))
|
|
113
|
+
return TYPE_DECISION;
|
|
114
|
+
}
|
|
115
|
+
// Preference (user-only; assistant wouldn't normally state user preferences this way)
|
|
116
|
+
if (role === "user") {
|
|
117
|
+
for (const re of PREFERENCE_MARKERS) {
|
|
118
|
+
if (re.test(text))
|
|
119
|
+
return TYPE_PREFERENCE;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Event
|
|
123
|
+
for (const re of EVENT_MARKERS) {
|
|
124
|
+
if (re.test(text))
|
|
125
|
+
return TYPE_EVENT;
|
|
126
|
+
}
|
|
127
|
+
// Defaults: assistant → fact, user → observation
|
|
128
|
+
return role === "assistant" ? TYPE_FACT : TYPE_OBSERVATION;
|
|
129
|
+
}
|
|
130
|
+
function classifyTopic(text) {
|
|
131
|
+
// Simple vocab match — lowercase text, check each known topic keyword
|
|
132
|
+
const lower = text.toLowerCase();
|
|
133
|
+
// Coding indicators (broader than just "coding" word)
|
|
134
|
+
if (/\b(code|bug|fix|api|sql|regex|npm|git|function|variable|typescript|javascript|python|rust|database)\b/.test(lower)) {
|
|
135
|
+
return "coding";
|
|
136
|
+
}
|
|
137
|
+
// Money / finance
|
|
138
|
+
if (/\b(money|salary|price|pricing|cost|budget|expense|invoice|tax|revenue)\b/.test(lower)) {
|
|
139
|
+
return "finance";
|
|
140
|
+
}
|
|
141
|
+
// Health
|
|
142
|
+
if (/\b(health|doctor|sick|illness|medication|exercise|sleep|tired)\b/.test(lower)) {
|
|
143
|
+
return "health";
|
|
144
|
+
}
|
|
145
|
+
// Security
|
|
146
|
+
if (/\b(password|security|auth|encryption|vulnerability|breach|token)\b/.test(lower)) {
|
|
147
|
+
return "security";
|
|
148
|
+
}
|
|
149
|
+
// Personal (family, relationships, feelings)
|
|
150
|
+
if (/\b(family|mom|dad|wife|husband|kid|friend|date|relationship)\b/.test(lower)) {
|
|
151
|
+
return "personal";
|
|
152
|
+
}
|
|
153
|
+
// Memory (meta)
|
|
154
|
+
if (/\b(memory|memories|remember|forget|recall|forgot)\b/.test(lower)) {
|
|
155
|
+
return "memory";
|
|
156
|
+
}
|
|
157
|
+
// Work
|
|
158
|
+
if (/\b(work|meeting|project|deadline|colleague|boss|office)\b/.test(lower)) {
|
|
159
|
+
return "work";
|
|
160
|
+
}
|
|
161
|
+
return null; // renderer will use "general"
|
|
162
|
+
}
|
|
163
|
+
function classifyEmotion(text) {
|
|
164
|
+
const lower = text.toLowerCase();
|
|
165
|
+
// Word-boundary match against vocabulary
|
|
166
|
+
const words = lower.match(/\b\w+\b/g) ?? [];
|
|
167
|
+
for (const word of words) {
|
|
168
|
+
const emo = EMOTION_VOCAB[word];
|
|
169
|
+
if (emo)
|
|
170
|
+
return emo;
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
/** Full type name from single-letter code. Used by renderer. */
|
|
175
|
+
export function typeCodeToFull(code) {
|
|
176
|
+
if (!code)
|
|
177
|
+
return "fact";
|
|
178
|
+
const map = {
|
|
179
|
+
F: "fact", D: "decision", P: "preference", E: "event",
|
|
180
|
+
L: "lesson", T: "technical", Q: "question", O: "observation",
|
|
181
|
+
};
|
|
182
|
+
return map[code] ?? "fact";
|
|
183
|
+
}
|
|
184
|
+
/** Export topic vocabulary for tests / validation. */
|
|
185
|
+
export { TOPIC_VOCAB };
|
|
186
|
+
//# sourceMappingURL=turn-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-classifier.js","sourceRoot":"","sources":["../../src/turn-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.d.ts","sourceRoot":"","sources":["../../src/user-utils.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAe3D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getAbmindEnv } from "./env-schema.js";
|
|
2
|
+
/** User utilities — resolve master userId from users.json. */
|
|
3
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
/**
|
|
6
|
+
* Load master userId from users.json.
|
|
7
|
+
* Falls back to "master" if file missing or no master found.
|
|
8
|
+
*/
|
|
9
|
+
export function loadMasterUserId(configDir) {
|
|
10
|
+
const paths = [
|
|
11
|
+
configDir ? join(configDir, "users.json") : null,
|
|
12
|
+
join(getAbmindEnv().abmindHome, "config", "users.json"),
|
|
13
|
+
].filter(Boolean);
|
|
14
|
+
for (const p of paths) {
|
|
15
|
+
if (!existsSync(p))
|
|
16
|
+
continue;
|
|
17
|
+
try {
|
|
18
|
+
const data = JSON.parse(readFileSync(p, "utf-8"));
|
|
19
|
+
const master = data.users?.find((u) => u.role === "master");
|
|
20
|
+
if (master?.userId)
|
|
21
|
+
return master.userId;
|
|
22
|
+
}
|
|
23
|
+
catch { /* invalid json */ }
|
|
24
|
+
}
|
|
25
|
+
return "master";
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=user-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-utils.js","sourceRoot":"","sources":["../../src/user-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,8DAA8D;AAE9D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,MAAM,KAAK,GAAG;QACZ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC;KACxD,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE,MAAM;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wake-up-builder.ts — Build session-start memory context.
|
|
3
|
+
* Lean injection: current time + flashback (random emotional memory).
|
|
4
|
+
* Everything else surfaces through active recall (#203) on demand.
|
|
5
|
+
*/
|
|
6
|
+
import type Database from "better-sqlite3";
|
|
7
|
+
/**
|
|
8
|
+
* Build wake-up context: current time + one flashback.
|
|
9
|
+
* Returns empty string if DB unavailable or no emotional memories exist.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildWakeUp(db: Database.Database | null): string;
|
|
12
|
+
//# sourceMappingURL=wake-up-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-up-builder.d.ts","sourceRoot":"","sources":["../../src/wake-up-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAmChE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wake-up-builder.ts — Build session-start memory context.
|
|
3
|
+
* Lean injection: current time + flashback (random emotional memory).
|
|
4
|
+
* Everything else surfaces through active recall (#203) on demand.
|
|
5
|
+
*/
|
|
6
|
+
import { renderMemory } from "./memory-renderer.js";
|
|
7
|
+
import { localDateTime } from "./local-time.js";
|
|
8
|
+
const DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
9
|
+
/**
|
|
10
|
+
* Build wake-up context: current time + one flashback.
|
|
11
|
+
* Returns empty string if DB unavailable or no emotional memories exist.
|
|
12
|
+
*/
|
|
13
|
+
export function buildWakeUp(db) {
|
|
14
|
+
if (!db)
|
|
15
|
+
return "";
|
|
16
|
+
const parts = [];
|
|
17
|
+
// 1. Current time
|
|
18
|
+
const now = new Date();
|
|
19
|
+
parts.push(`[Current time: ${localDateTime(now)} (${DAYS[now.getDay()]})]`);
|
|
20
|
+
// 2. Flashback — random emotional memory weighted by intensity × recency
|
|
21
|
+
try {
|
|
22
|
+
const row = db.prepare(`SELECT content_en, emotion_tags, importance_flags, topic, memory_type, confidence, created_at
|
|
23
|
+
FROM extracted_memories
|
|
24
|
+
WHERE ABS(emotion_score) >= 3
|
|
25
|
+
AND valid_to IS NULL
|
|
26
|
+
AND content_en IS NOT NULL
|
|
27
|
+
ORDER BY RANDOM() * ABS(emotion_score) / sqrt(1.0 + (julianday('now') - julianday(created_at / 1000, 'unixepoch')) / 180.0) DESC
|
|
28
|
+
LIMIT 1`).get();
|
|
29
|
+
if (row) {
|
|
30
|
+
const rendered = renderMemory({
|
|
31
|
+
content_en: row.content_en,
|
|
32
|
+
topic: row.topic ?? undefined,
|
|
33
|
+
emotion_tags: row.emotion_tags ?? undefined,
|
|
34
|
+
importance_flags: row.importance_flags ?? undefined,
|
|
35
|
+
memory_type: row.memory_type ?? undefined,
|
|
36
|
+
confidence: row.confidence ?? undefined,
|
|
37
|
+
createdAt: row.created_at,
|
|
38
|
+
});
|
|
39
|
+
parts.push(`[Flashback] ${rendered}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch { /* no emotional memories or DB error */ }
|
|
43
|
+
return parts.join("\n\n");
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=wake-up-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-up-builder.js","sourceRoot":"","sources":["../../src/wake-up-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE5F;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAA4B;IACtD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IAE5E,yEAAyE;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB;;;;;;eAMS,CACV,CAAC,GAAG,EAAuM,CAAC;QAE7M,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,YAAY,CAAC;gBAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;gBAC3C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;gBACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACzC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;gBACvC,SAAS,EAAE,GAAG,CAAC,UAAU;aAC1B,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wake-up-renderer.ts — Compression Level 2 rendering for wake-up context.
|
|
3
|
+
* Entity header + topic grouping + elide defaults.
|
|
4
|
+
* Operates on stored ABM-L, produces ultra-compact output.
|
|
5
|
+
*/
|
|
6
|
+
export type CompressionLevel = "signal" | "full" | "compact" | "ultra";
|
|
7
|
+
/** Pick compression level based on token budget. */
|
|
8
|
+
export declare function pickLevel(budgetTokens: number): CompressionLevel;
|
|
9
|
+
interface MemoryEntry {
|
|
10
|
+
content_compressed: string;
|
|
11
|
+
topic: string;
|
|
12
|
+
emotion_arc?: string | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Render core memories for wake-up context at the given compression level.
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderWakeUp(entries: ReadonlyArray<MemoryEntry>, level: CompressionLevel): string;
|
|
18
|
+
/**
|
|
19
|
+
* Compress a daily summary to ABM-L bullet points.
|
|
20
|
+
* Input: raw markdown daily. Output: compact ABM-L lines.
|
|
21
|
+
*/
|
|
22
|
+
export declare function compressDailySummary(markdown: string, date: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Generate compressed SOUL for ultra-small context windows (<32K).
|
|
25
|
+
* Extracts only rules and facts from full SOUL.md.
|
|
26
|
+
*/
|
|
27
|
+
export declare function compressSoul(fullSoul: string): string;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=wake-up-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-up-renderer.d.ts","sourceRoot":"","sources":["../../src/wake-up-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAED,UAAU,WAAW;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAwED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWjG;AA0BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrD"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wake-up-renderer.ts — Compression Level 2 rendering for wake-up context.
|
|
3
|
+
* Entity header + topic grouping + elide defaults.
|
|
4
|
+
* Operates on stored ABM-L, produces ultra-compact output.
|
|
5
|
+
*/
|
|
6
|
+
/** Pick compression level based on token budget. */
|
|
7
|
+
export function pickLevel(budgetTokens) {
|
|
8
|
+
if (budgetTokens > 5000)
|
|
9
|
+
return "full";
|
|
10
|
+
if (budgetTokens > 500)
|
|
11
|
+
return "compact";
|
|
12
|
+
if (budgetTokens > 100)
|
|
13
|
+
return "ultra";
|
|
14
|
+
return "signal";
|
|
15
|
+
}
|
|
16
|
+
/** Build entity header from recurring @references. */
|
|
17
|
+
function buildEntityHeader(entries) {
|
|
18
|
+
const counts = new Map();
|
|
19
|
+
for (const e of entries) {
|
|
20
|
+
const refs = e.content_compressed.match(/@[\w-]+/g) ?? [];
|
|
21
|
+
for (const ref of refs) {
|
|
22
|
+
counts.set(ref, (counts.get(ref) ?? 0) + 1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Only alias entities that appear 3+ times
|
|
26
|
+
const replace = new Map();
|
|
27
|
+
const aliases = [];
|
|
28
|
+
for (const [ref, count] of [...counts.entries()].sort((a, b) => b[1] - a[1])) {
|
|
29
|
+
if (count < 3)
|
|
30
|
+
break;
|
|
31
|
+
const name = ref.slice(1); // remove @
|
|
32
|
+
const code = name.slice(0, 2).toUpperCase();
|
|
33
|
+
replace.set(ref, code);
|
|
34
|
+
aliases.push(`${code}=${name}`);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
header: aliases.length > 0 ? `@: ${aliases.join(", ")}` : "",
|
|
38
|
+
replace,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Extract prefix fields from ABM-L string. */
|
|
42
|
+
function parsePrefix(abml) {
|
|
43
|
+
const m = abml.match(/^\[([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^\]]*)\]\s*(.*)/s);
|
|
44
|
+
if (!m)
|
|
45
|
+
return { flags: "", topic: "", emotion: "", confidence: "", date: "", body: abml };
|
|
46
|
+
return { flags: m[1], topic: m[2], emotion: m[3], confidence: m[4], date: m[5], body: m[6] };
|
|
47
|
+
}
|
|
48
|
+
/** Render entries at "compact" level: topic grouping, elide defaults, entity codes. */
|
|
49
|
+
function renderCompact(entries, entityReplace) {
|
|
50
|
+
const byTopic = new Map();
|
|
51
|
+
for (const e of entries) {
|
|
52
|
+
const parsed = parsePrefix(e.content_compressed);
|
|
53
|
+
if (!byTopic.has(e.topic))
|
|
54
|
+
byTopic.set(e.topic, { arc: e.emotion_arc ?? "", lines: [] });
|
|
55
|
+
// Elide: date (unless <7d), confidence (unless != 3), neutral emotion
|
|
56
|
+
let prefix = `[${parsed.flags}`;
|
|
57
|
+
if (parsed.emotion && parsed.emotion !== "—")
|
|
58
|
+
prefix += `|${parsed.emotion}`;
|
|
59
|
+
if (parsed.confidence && parsed.confidence !== "3")
|
|
60
|
+
prefix += `|${parsed.confidence}`;
|
|
61
|
+
prefix += "]";
|
|
62
|
+
// Apply entity short codes
|
|
63
|
+
let body = parsed.body;
|
|
64
|
+
for (const [ref, code] of entityReplace) {
|
|
65
|
+
body = body.replace(new RegExp(ref.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), code);
|
|
66
|
+
}
|
|
67
|
+
byTopic.get(e.topic).lines.push(`${prefix} ${body}`);
|
|
68
|
+
}
|
|
69
|
+
const parts = [];
|
|
70
|
+
for (const [topic, { arc, lines }] of byTopic) {
|
|
71
|
+
parts.push(`## ${topic}${arc ? " " + arc : ""}`);
|
|
72
|
+
for (const line of lines)
|
|
73
|
+
parts.push(line);
|
|
74
|
+
}
|
|
75
|
+
return parts.join("\n");
|
|
76
|
+
}
|
|
77
|
+
/** Render entries at "full" level: no compression tricks, just the stored ABM-L. */
|
|
78
|
+
function renderFull(entries) {
|
|
79
|
+
return entries.map(e => e.content_compressed).join("\n");
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Render core memories for wake-up context at the given compression level.
|
|
83
|
+
*/
|
|
84
|
+
export function renderWakeUp(entries, level) {
|
|
85
|
+
if (entries.length === 0)
|
|
86
|
+
return "";
|
|
87
|
+
if (level === "signal")
|
|
88
|
+
return renderSignal(entries);
|
|
89
|
+
if (level === "full")
|
|
90
|
+
return `[CORE MEMORY — ${entries.length} entries (internal reference only — never echo brackets/tags in replies)]\n${renderFull(entries)}`;
|
|
91
|
+
// compact and ultra both use topic grouping + entity header
|
|
92
|
+
const { header, replace } = buildEntityHeader(entries);
|
|
93
|
+
const body = renderCompact(entries, replace);
|
|
94
|
+
const headerLine = header ? header + "\n" : "";
|
|
95
|
+
return `[CORE MEMORY — ${entries.length} entries (internal reference only — never echo brackets/tags in replies)]\n${headerLine}${body}`;
|
|
96
|
+
}
|
|
97
|
+
/** Render L0 signal level: structured tag cloud. ~50 tokens for entire memory. */
|
|
98
|
+
function renderSignal(entries) {
|
|
99
|
+
const topics = new Map();
|
|
100
|
+
for (const e of entries) {
|
|
101
|
+
if (!topics.has(e.topic))
|
|
102
|
+
topics.set(e.topic, { types: new Map(), entities: new Set() });
|
|
103
|
+
const t = topics.get(e.topic);
|
|
104
|
+
const parsed = parsePrefix(e.content_compressed);
|
|
105
|
+
const flag = parsed.flags.charAt(0) || "F";
|
|
106
|
+
t.types.set(flag, (t.types.get(flag) ?? 0) + 1);
|
|
107
|
+
const refs = e.content_compressed.match(/@[\w-]+/g) ?? [];
|
|
108
|
+
for (const ref of refs)
|
|
109
|
+
t.entities.add(ref);
|
|
110
|
+
}
|
|
111
|
+
const lines = [`[MEMORY MAP — ${entries.length} entries]`];
|
|
112
|
+
for (const [topic, { types, entities }] of [...topics.entries()].sort((a, b) => b[1].types.size - a[1].types.size)) {
|
|
113
|
+
const count = [...types.values()].reduce((a, b) => a + b, 0);
|
|
114
|
+
const entityStr = [...entities].slice(0, 4).join(" ");
|
|
115
|
+
const typeStr = [...types.entries()].map(([f, c]) => `${f}:${c}`).join(" ");
|
|
116
|
+
lines.push(`${topic}(${count}): ${entityStr} — ${typeStr}`);
|
|
117
|
+
}
|
|
118
|
+
return lines.join("\n");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Compress a daily summary to ABM-L bullet points.
|
|
122
|
+
* Input: raw markdown daily. Output: compact ABM-L lines.
|
|
123
|
+
*/
|
|
124
|
+
export function compressDailySummary(markdown, date) {
|
|
125
|
+
const lines = markdown.split("\n").filter(l => l.trim() && !l.startsWith("#"));
|
|
126
|
+
const bullets = [];
|
|
127
|
+
for (const line of lines) {
|
|
128
|
+
const trimmed = line.replace(/^[-*]\s*/, "").trim();
|
|
129
|
+
if (trimmed.length < 10)
|
|
130
|
+
continue;
|
|
131
|
+
// Abbreviate
|
|
132
|
+
const compressed = trimmed
|
|
133
|
+
.replace(/\bTelegram\b/g, "TG")
|
|
134
|
+
.replace(/\bDiscord\b/g, "DC")
|
|
135
|
+
.replace(/\bauthentication\b/gi, "auth")
|
|
136
|
+
.replace(/\bconfiguration\b/gi, "config")
|
|
137
|
+
.replace(/\b(the|a|an|was|were|been|being|also|very|really|just|quite|basically|essentially)\b/gi, "")
|
|
138
|
+
.replace(/\s{2,}/g, " ")
|
|
139
|
+
.trim();
|
|
140
|
+
if (compressed.length > 5)
|
|
141
|
+
bullets.push(compressed);
|
|
142
|
+
}
|
|
143
|
+
if (bullets.length === 0)
|
|
144
|
+
return "";
|
|
145
|
+
// Cap at ~10 most important lines
|
|
146
|
+
return `## ${date}\n${bullets.slice(0, 10).map(b => `- ${b}`).join("\n")}`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate compressed SOUL for ultra-small context windows (<32K).
|
|
150
|
+
* Extracts only rules and facts from full SOUL.md.
|
|
151
|
+
*/
|
|
152
|
+
export function compressSoul(fullSoul) {
|
|
153
|
+
const lines = fullSoul.split("\n");
|
|
154
|
+
const sections = [];
|
|
155
|
+
let currentSection = "";
|
|
156
|
+
let collecting = false;
|
|
157
|
+
for (const line of lines) {
|
|
158
|
+
if (line.startsWith("## ")) {
|
|
159
|
+
currentSection = line.replace("## ", "").trim().toLowerCase();
|
|
160
|
+
collecting = true;
|
|
161
|
+
sections.push(`## ${currentSection}`);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (!collecting)
|
|
165
|
+
continue;
|
|
166
|
+
const trimmed = line.trim();
|
|
167
|
+
if (!trimmed)
|
|
168
|
+
continue;
|
|
169
|
+
// Keep only lines that are rules (start with - or contain "must", "never", "always", "don't")
|
|
170
|
+
if (trimmed.startsWith("-") || /\b(must|never|always|don't|do not|MUST)\b/.test(trimmed)) {
|
|
171
|
+
// Compress the line
|
|
172
|
+
const compressed = trimmed
|
|
173
|
+
.replace(/\b(the|a|an|is|are|was|were|been|being|also|very|really|just|quite)\b/gi, "")
|
|
174
|
+
.replace(/\s{2,}/g, " ")
|
|
175
|
+
.trim();
|
|
176
|
+
if (compressed.length > 5)
|
|
177
|
+
sections.push(compressed);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return sections.join("\n");
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=wake-up-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-up-renderer.js","sourceRoot":"","sources":["../../src/wake-up-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "abmind",
|
|
3
|
+
"name": "abmind Memory + Context Engine",
|
|
4
|
+
"description": "Long-term memory, context compaction, sleep cycles, recall — SQLite-backed, FTS5 + trigram + embeddings.",
|
|
5
|
+
"kind": "memory",
|
|
6
|
+
"entry": "./dist/src/openclaw-plugin/index.js",
|
|
7
|
+
"configSchema": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"abmlVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"enum": ["plain", "v0", "v1"],
|
|
13
|
+
"default": "plain",
|
|
14
|
+
"description": "Rendering format for memory injection. 'plain' = English prose, 'v0' = legacy ABM-L, 'v1' = slot-based ABM-L."
|
|
15
|
+
},
|
|
16
|
+
"compactionThreshold": {
|
|
17
|
+
"type": "number",
|
|
18
|
+
"minimum": 0,
|
|
19
|
+
"maximum": 1,
|
|
20
|
+
"default": 0.5,
|
|
21
|
+
"description": "Fraction of context window at which compaction fires."
|
|
22
|
+
},
|
|
23
|
+
"sleepEnabled": {
|
|
24
|
+
"type": "boolean",
|
|
25
|
+
"default": true,
|
|
26
|
+
"description": "Enable nightly sleep pipeline (extraction, consolidation, cleanup)."
|
|
27
|
+
},
|
|
28
|
+
"stateDir": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Override the abmind data directory. Defaults to ABMIND_HOME env or ~/.abmind."
|
|
31
|
+
},
|
|
32
|
+
"autoRecall": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": false,
|
|
35
|
+
"description": "Inject top-relevant memories into context before every agent turn. Opt-in: adds ~10-200ms per turn."
|
|
36
|
+
},
|
|
37
|
+
"autoCapture": {
|
|
38
|
+
"type": "boolean",
|
|
39
|
+
"default": false,
|
|
40
|
+
"description": "Capture user messages for memory extraction after every agent turn. Opt-in: uses existing sleep pipeline for dedupe + classify."
|
|
41
|
+
},
|
|
42
|
+
"autoRecallMaxResults": {
|
|
43
|
+
"type": "integer",
|
|
44
|
+
"minimum": 1,
|
|
45
|
+
"maximum": 10,
|
|
46
|
+
"default": 3,
|
|
47
|
+
"description": "Max memories injected per turn when autoRecall is enabled."
|
|
48
|
+
},
|
|
49
|
+
"autoRecallMinScore": {
|
|
50
|
+
"type": "number",
|
|
51
|
+
"minimum": 0,
|
|
52
|
+
"maximum": 1,
|
|
53
|
+
"default": 0.3,
|
|
54
|
+
"description": "Minimum relevance score for a memory to be injected. Below this, the memory is dropped."
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"uiHints": {
|
|
59
|
+
"sleepEnabled": {
|
|
60
|
+
"label": "Enable sleep pipeline",
|
|
61
|
+
"help": "abmind runs its own sleep/consolidation independently of OpenClaw's dreaming. This toggles whether it runs at all."
|
|
62
|
+
},
|
|
63
|
+
"autoRecall": {
|
|
64
|
+
"label": "Auto-recall memories on every turn",
|
|
65
|
+
"help": "Adds top-relevant memories to context before the agent runs. Costs ~10-50ms (FTS+trigram) to ~200ms (with embeddings)."
|
|
66
|
+
},
|
|
67
|
+
"autoCapture": {
|
|
68
|
+
"label": "Auto-capture user messages",
|
|
69
|
+
"help": "Stores user prompts for later memory extraction by the sleep pipeline. Does not capture assistant output (avoids self-poisoning)."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|