abmind 0.0.1 → 0.1.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/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 +145 -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 +31 -0
- package/dist/src/openclaw-plugin/tools.d.ts.map +1 -0
- package/dist/src/openclaw-plugin/tools.js +127 -0
- package/dist/src/openclaw-plugin/tools.js.map +1 -0
- package/dist/src/openclaw-plugin/types.d.ts +34 -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/package.json +87 -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,387 @@
|
|
|
1
|
+
import { localISO } from "./local-time.js";
|
|
2
|
+
import { searchConsolidationFiles } from "./consolidation-search.js";
|
|
3
|
+
import { applyMMR } from "./mmr.js";
|
|
4
|
+
import { embedText, vectorSearch, loadEmbedConfig } from "./ollama-embed.js";
|
|
5
|
+
import { trigramSearch } from "./trigram-search.js";
|
|
6
|
+
import { logWarn, logDebug } from "./mem-logger.js";
|
|
7
|
+
const TAG = "recall";
|
|
8
|
+
// ── Constants ───────────────────────────────────────────────────────────────
|
|
9
|
+
const ALL_STAGES = ["Sf", "Ss", "Se", "S6"];
|
|
10
|
+
const DEFAULT_LIMIT = 10;
|
|
11
|
+
const SS_THRESHOLD = 0.65;
|
|
12
|
+
const SS_CAP = 5;
|
|
13
|
+
// Context boost weights (env-tunable)
|
|
14
|
+
const CTX_HOUR_BOOST = parseFloat(process.env.RECALL_CONTEXT_HOUR_BOOST ?? "0.02");
|
|
15
|
+
const CTX_DOW_BOOST = parseFloat(process.env.RECALL_CONTEXT_DOW_BOOST ?? "0.015");
|
|
16
|
+
const CTX_TOPIC_BOOST = parseFloat(process.env.RECALL_CONTEXT_TOPIC_BOOST ?? "0.03");
|
|
17
|
+
// ── Context Boost ───────────────────────────────────────────────────────────
|
|
18
|
+
function hourBucket(hour) {
|
|
19
|
+
if (hour >= 6 && hour < 12)
|
|
20
|
+
return 0; // morning
|
|
21
|
+
if (hour >= 12 && hour < 18)
|
|
22
|
+
return 1; // afternoon
|
|
23
|
+
if (hour >= 18 && hour < 23)
|
|
24
|
+
return 2; // evening
|
|
25
|
+
return 3; // night
|
|
26
|
+
}
|
|
27
|
+
function isWeekend(dow) { return dow === 0 || dow === 6; }
|
|
28
|
+
export function applyContextBoost(results, ctx) {
|
|
29
|
+
if (!ctx.hour && ctx.hour !== 0 && !ctx.dayOfWeek && ctx.dayOfWeek !== 0 && !ctx.topic)
|
|
30
|
+
return results;
|
|
31
|
+
let boostedCount = 0;
|
|
32
|
+
const boosted = results.map(hit => {
|
|
33
|
+
let boost = 0;
|
|
34
|
+
const ts = hit.createdAt;
|
|
35
|
+
if (ts && (ctx.hour != null || ctx.dayOfWeek != null)) {
|
|
36
|
+
const d = new Date(ts);
|
|
37
|
+
if (ctx.hour != null && hourBucket(d.getHours()) === hourBucket(ctx.hour)) {
|
|
38
|
+
boost += CTX_HOUR_BOOST;
|
|
39
|
+
}
|
|
40
|
+
if (ctx.dayOfWeek != null) {
|
|
41
|
+
const storedDow = d.getDay();
|
|
42
|
+
if (storedDow === ctx.dayOfWeek)
|
|
43
|
+
boost += CTX_DOW_BOOST;
|
|
44
|
+
else if (isWeekend(storedDow) === isWeekend(ctx.dayOfWeek))
|
|
45
|
+
boost += CTX_DOW_BOOST * 0.5;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (ctx.topic && hit.topic && hit.topic !== "general" && hit.topic === ctx.topic) {
|
|
49
|
+
boost += CTX_TOPIC_BOOST;
|
|
50
|
+
}
|
|
51
|
+
if (boost > 0)
|
|
52
|
+
boostedCount++;
|
|
53
|
+
return boost > 0 ? { ...hit, score: hit.score + boost } : hit;
|
|
54
|
+
});
|
|
55
|
+
if (boostedCount > 0) {
|
|
56
|
+
logDebug(TAG, `context-boost applied to ${boostedCount}/${results.length} candidates`);
|
|
57
|
+
}
|
|
58
|
+
return boosted;
|
|
59
|
+
}
|
|
60
|
+
// ── Spacing boost (#244) ────────────────────────────────────────────────────
|
|
61
|
+
const DAY_MS = 86400000;
|
|
62
|
+
function spacingBoost(timestamps) {
|
|
63
|
+
if (timestamps.length < 2)
|
|
64
|
+
return 1.0;
|
|
65
|
+
const intervals = [];
|
|
66
|
+
for (let i = 1; i < timestamps.length; i++)
|
|
67
|
+
intervals.push(timestamps[i] - timestamps[i - 1]);
|
|
68
|
+
const avg = intervals.reduce((a, b) => a + b, 0) / intervals.length;
|
|
69
|
+
if (avg >= 7 * DAY_MS)
|
|
70
|
+
return 1.3;
|
|
71
|
+
if (avg >= 1 * DAY_MS)
|
|
72
|
+
return 1.15;
|
|
73
|
+
return 1.0;
|
|
74
|
+
}
|
|
75
|
+
function applySpacingBoost(results, db) {
|
|
76
|
+
if (results.length === 0)
|
|
77
|
+
return results;
|
|
78
|
+
const ids = results.filter(r => r.id != null).map(r => r.id);
|
|
79
|
+
if (ids.length === 0)
|
|
80
|
+
return results;
|
|
81
|
+
const ph = ids.map(() => "?").join(",");
|
|
82
|
+
const rows = db.prepare(`SELECT id, recall_timestamps FROM extracted_memories WHERE id IN (${ph})`).all(...ids);
|
|
83
|
+
const tsMap = new Map(rows.map(r => [r.id, JSON.parse(r.recall_timestamps ?? "[]")]));
|
|
84
|
+
return results.map(hit => {
|
|
85
|
+
if (!hit.id)
|
|
86
|
+
return hit;
|
|
87
|
+
const ts = tsMap.get(hit.id);
|
|
88
|
+
if (!ts || ts.length < 2)
|
|
89
|
+
return hit;
|
|
90
|
+
const mult = spacingBoost(ts);
|
|
91
|
+
return mult > 1.0 ? { ...hit, score: hit.score * mult } : hit;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
95
|
+
function elapsed(start) {
|
|
96
|
+
return Math.round(performance.now() - start);
|
|
97
|
+
}
|
|
98
|
+
// ── Engine ──────────────────────────────────────────────────────────────────
|
|
99
|
+
export async function recallSearch(deps, params) {
|
|
100
|
+
const limit = params.limit ?? DEFAULT_LIMIT;
|
|
101
|
+
const activeStages = new Set(params.stages ?? ALL_STAGES);
|
|
102
|
+
const query = params.translated.join(" ");
|
|
103
|
+
// --- Se: fire embedding async at start ---
|
|
104
|
+
const embedConfig = loadEmbedConfig();
|
|
105
|
+
let embeddingPromise = null;
|
|
106
|
+
if (embedConfig.enabled && activeStages.has("Se")) {
|
|
107
|
+
// Prefer the injected provider (#173); fall back to legacy embedText for backward compat
|
|
108
|
+
// with callers (sqlite-backend.ts, index.ts re-export) that don't thread a provider through.
|
|
109
|
+
embeddingPromise = deps.embeddingProvider
|
|
110
|
+
? deps.embeddingProvider.embedText(query)
|
|
111
|
+
: embedText(embedConfig, query);
|
|
112
|
+
}
|
|
113
|
+
const seenIds = new Set();
|
|
114
|
+
const extractedIds = [];
|
|
115
|
+
const stages = {};
|
|
116
|
+
// Collect results in priority order
|
|
117
|
+
const sfHits = [];
|
|
118
|
+
const seHits = [];
|
|
119
|
+
const ssHits = [];
|
|
120
|
+
const s6Hits = [];
|
|
121
|
+
// --- Sf: Three-query fuzzy search ---
|
|
122
|
+
if (activeStages.has("Sf")) {
|
|
123
|
+
const t = performance.now();
|
|
124
|
+
const sfOpts = {
|
|
125
|
+
translated: params.translated,
|
|
126
|
+
original: params.original,
|
|
127
|
+
userId: params.userId,
|
|
128
|
+
limit,
|
|
129
|
+
maxClassification: params.maxClassification ?? 2,
|
|
130
|
+
timeStart: params.timeStart,
|
|
131
|
+
timeEnd: params.timeEnd,
|
|
132
|
+
topic: params.topic,
|
|
133
|
+
tier: params.tier,
|
|
134
|
+
emotion: params.emotion,
|
|
135
|
+
includeExpired: params.includeExpired,
|
|
136
|
+
resolution: params.resolution,
|
|
137
|
+
};
|
|
138
|
+
const sf = trigramSearch(deps.db, sfOpts);
|
|
139
|
+
for (const h of sf.hits)
|
|
140
|
+
sfHits.push(h);
|
|
141
|
+
for (const id of sf.extractedIds) {
|
|
142
|
+
seenIds.add(id);
|
|
143
|
+
extractedIds.push(id);
|
|
144
|
+
}
|
|
145
|
+
stages["Sf"] = { hits: sfHits, ms: elapsed(t) };
|
|
146
|
+
}
|
|
147
|
+
const sfFull = sfHits.length >= limit;
|
|
148
|
+
// --- Se: merge embedding results (skip if Sf full) ---
|
|
149
|
+
if (embeddingPromise && !sfFull) {
|
|
150
|
+
const t = performance.now();
|
|
151
|
+
const queryVector = await embeddingPromise;
|
|
152
|
+
if (queryVector) {
|
|
153
|
+
const vecResults = vectorSearch(deps.db, queryVector, {
|
|
154
|
+
userId: params.userId, limit: limit * 3, threshold: embedConfig.threshold,
|
|
155
|
+
maxClassification: params.maxClassification ?? 2,
|
|
156
|
+
});
|
|
157
|
+
for (const r of vecResults) {
|
|
158
|
+
if (seenIds.has(r.id))
|
|
159
|
+
continue;
|
|
160
|
+
seenIds.add(r.id);
|
|
161
|
+
extractedIds.push(r.id);
|
|
162
|
+
seHits.push({
|
|
163
|
+
id: r.id,
|
|
164
|
+
content: r.content_en, date: localISO(new Date(r.created_at)),
|
|
165
|
+
source: "Se:embedding", score: r.score,
|
|
166
|
+
...(r.source_message_ids ? { source_ids: r.source_message_ids } : {}),
|
|
167
|
+
contentOriginal: r.content_original ?? undefined, memoryType: r.memory_type ?? undefined,
|
|
168
|
+
trust: r.trust ?? undefined, integrity: r.integrity ?? undefined,
|
|
169
|
+
credibility: r.credibility ?? undefined, classification: r.classification ?? undefined,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
stages["Se"] = { hits: seHits, ms: elapsed(t) };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (embeddingPromise) {
|
|
176
|
+
// Sf full — don't await, just discard
|
|
177
|
+
embeddingPromise.catch(() => { });
|
|
178
|
+
}
|
|
179
|
+
// --- Ss: Signature Hamming (skip if Sf full) ---
|
|
180
|
+
if (activeStages.has("Ss") && !sfFull) {
|
|
181
|
+
const t = performance.now();
|
|
182
|
+
try {
|
|
183
|
+
const { generateSignature, hammingSimilarity } = await import("./signature-generator.js");
|
|
184
|
+
const queryText = [...params.translated, params.original ?? ""].join(" ");
|
|
185
|
+
const querySig = generateSignature(queryText);
|
|
186
|
+
const conditions = ["signature IS NOT NULL"];
|
|
187
|
+
const bindParams = [];
|
|
188
|
+
if (params.topic) {
|
|
189
|
+
conditions.push("topic = ?");
|
|
190
|
+
bindParams.push(params.topic);
|
|
191
|
+
}
|
|
192
|
+
if (params.tier) {
|
|
193
|
+
conditions.push("tier = ?");
|
|
194
|
+
bindParams.push(params.tier);
|
|
195
|
+
}
|
|
196
|
+
if (!params.includeExpired) {
|
|
197
|
+
conditions.push("valid_to IS NULL");
|
|
198
|
+
}
|
|
199
|
+
const rows = deps.db.prepare(`SELECT id, content_en, content_original, memory_type, created_at, signature, emotion_score
|
|
200
|
+
FROM extracted_memories WHERE ${conditions.join(" AND ")}`).all(...bindParams);
|
|
201
|
+
const scored = [];
|
|
202
|
+
for (const row of rows) {
|
|
203
|
+
if (seenIds.has(row.id))
|
|
204
|
+
continue;
|
|
205
|
+
const sig = new Uint8Array(row.signature);
|
|
206
|
+
scored.push({ row, sim: hammingSimilarity(querySig, sig) });
|
|
207
|
+
}
|
|
208
|
+
scored.sort((a, b) => b.sim - a.sim);
|
|
209
|
+
for (const { row, sim } of scored.slice(0, SS_CAP)) {
|
|
210
|
+
if (sim < SS_THRESHOLD)
|
|
211
|
+
break;
|
|
212
|
+
seenIds.add(row.id);
|
|
213
|
+
extractedIds.push(row.id);
|
|
214
|
+
ssHits.push({
|
|
215
|
+
id: row.id,
|
|
216
|
+
content: row.content_en ?? "",
|
|
217
|
+
date: localISO(new Date(row.created_at)),
|
|
218
|
+
source: "Ss:signature", score: sim,
|
|
219
|
+
contentOriginal: row.content_original ?? undefined,
|
|
220
|
+
memoryType: row.memory_type ?? undefined,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch { /* signature module not available */ }
|
|
225
|
+
stages["Ss"] = { hits: ssHits, ms: elapsed(t) };
|
|
226
|
+
}
|
|
227
|
+
// --- S6: Consolidation files (always runs) ---
|
|
228
|
+
if (activeStages.has("S6")) {
|
|
229
|
+
const t = performance.now();
|
|
230
|
+
const allKw = [...params.translated];
|
|
231
|
+
if (params.original)
|
|
232
|
+
allKw.push(params.original);
|
|
233
|
+
const consolidationResults = searchConsolidationFiles(deps.memoryDir, allKw, {
|
|
234
|
+
startTime: params.timeStart, endTime: params.timeEnd,
|
|
235
|
+
});
|
|
236
|
+
const s6Seen = new Set();
|
|
237
|
+
for (const c of consolidationResults) {
|
|
238
|
+
const key = `${c.timestamp}:${c.content.slice(0, 80)}`;
|
|
239
|
+
if (s6Seen.has(key))
|
|
240
|
+
continue;
|
|
241
|
+
s6Seen.add(key);
|
|
242
|
+
s6Hits.push({
|
|
243
|
+
content: c.content, date: localISO(new Date(c.timestamp)),
|
|
244
|
+
source: `S6:consolidation:${c.tier}`, score: 0.5,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
stages["S6"] = { hits: s6Hits, ms: elapsed(t) };
|
|
248
|
+
}
|
|
249
|
+
// --- S8: Entity graph (always runs — different data type) ---
|
|
250
|
+
const s8Hits = [];
|
|
251
|
+
{
|
|
252
|
+
const t = performance.now();
|
|
253
|
+
try {
|
|
254
|
+
const { queryEntityRelationships, isKnownEntity } = await import("./entity-graph.js");
|
|
255
|
+
// #362 — extract word runs so possessives ("alice's" → "alice", "s") and commas
|
|
256
|
+
// ("alice," → "alice") match entities stored lowercase by upsertEdge.
|
|
257
|
+
// \p{L} = any unicode letter, \p{N} = digit. Unicode-safe (Hungarian etc).
|
|
258
|
+
const words = (query.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? [])
|
|
259
|
+
.filter(w => w.length > 2);
|
|
260
|
+
for (const word of words) {
|
|
261
|
+
if (!isKnownEntity(deps.db, word))
|
|
262
|
+
continue;
|
|
263
|
+
const edges = queryEntityRelationships(deps.db, word, params.maxClassification ?? 2);
|
|
264
|
+
for (const edge of edges) {
|
|
265
|
+
s8Hits.push({
|
|
266
|
+
content: `${edge.entity_a} —[${edge.relation}]→ ${edge.entity_b}`,
|
|
267
|
+
date: localISO(new Date(edge.last_seen_at)),
|
|
268
|
+
source: "S8:entity-graph", score: 0.6,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
break; // one entity match is enough
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch { /* entity-graph module or table not available */ }
|
|
275
|
+
if (s8Hits.length > 0)
|
|
276
|
+
stages["S8"] = { hits: s8Hits, ms: elapsed(t) };
|
|
277
|
+
}
|
|
278
|
+
// --- Merge in priority order, context boost, MMR rerank ---
|
|
279
|
+
const allResults = [...sfHits, ...seHits, ...ssHits, ...s6Hits, ...s8Hits];
|
|
280
|
+
const boosted = params.currentContext ? applyContextBoost(allResults, params.currentContext) : allResults;
|
|
281
|
+
const spaced = applySpacingBoost(boosted, deps.db);
|
|
282
|
+
const reranked = applyMMR(spaced, 0.7);
|
|
283
|
+
const finalResults = await enrichResults(reranked.slice(0, limit), deps.db);
|
|
284
|
+
// --- Track recalls (spacing effect #244) ---
|
|
285
|
+
if (extractedIds.length > 0 && params.trackRecalls !== false) {
|
|
286
|
+
const now = Date.now();
|
|
287
|
+
const ph = extractedIds.map(() => "?").join(",");
|
|
288
|
+
deps.db.prepare(`UPDATE extracted_memories SET recall_count = recall_count + 1, last_recalled_at = ? WHERE id IN (${ph})`).run(now, ...extractedIds);
|
|
289
|
+
// Append timestamps for spacing boost
|
|
290
|
+
for (const id of extractedIds) {
|
|
291
|
+
const row = deps.db.prepare("SELECT recall_timestamps FROM extracted_memories WHERE id = ?").get(id);
|
|
292
|
+
const ts = JSON.parse(row?.recall_timestamps ?? "[]");
|
|
293
|
+
ts.push(now);
|
|
294
|
+
if (ts.length > 20)
|
|
295
|
+
ts.shift();
|
|
296
|
+
deps.db.prepare("UPDATE extracted_memories SET recall_timestamps = ? WHERE id = ?").run(JSON.stringify(ts), id);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
results: finalResults,
|
|
301
|
+
stages,
|
|
302
|
+
shortCircuitAfter: sfFull ? "Sf" : null,
|
|
303
|
+
extractedIds,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Enrich recall results with timeline context and interference warnings.
|
|
308
|
+
* Matches timeline context to hits by hit.id (identity) rather than positional
|
|
309
|
+
* index — MMR reordering breaks any positional correspondence to the original
|
|
310
|
+
* stage-accumulation order.
|
|
311
|
+
* Returns a new array; input array is not mutated.
|
|
312
|
+
*/
|
|
313
|
+
async function enrichResults(results, db) {
|
|
314
|
+
const enriched = results.map(r => ({ ...r }));
|
|
315
|
+
// Timeline context enrichment — skip if no hit has an ID (all S6)
|
|
316
|
+
if (enriched.some(h => h.id !== undefined)) {
|
|
317
|
+
try {
|
|
318
|
+
const { buildTimelines, renderTimeline } = await import("./timeline-builder.js");
|
|
319
|
+
const topics = new Set();
|
|
320
|
+
for (const hit of enriched) {
|
|
321
|
+
const topicMatch = hit.content.match(/\|([a-z]+)\|/);
|
|
322
|
+
if (topicMatch)
|
|
323
|
+
topics.add(topicMatch[1]);
|
|
324
|
+
}
|
|
325
|
+
if (topics.size > 0) {
|
|
326
|
+
const topicList = [...topics].map(t => `'${t}'`).join(",");
|
|
327
|
+
const siblings = db.prepare(`SELECT id, content_en, topic, memory_type, emotion_tags, importance_flags, confidence, created_at, emotion_context
|
|
328
|
+
FROM extracted_memories WHERE topic IN (${topicList}) AND valid_to IS NULL AND content_en IS NOT NULL
|
|
329
|
+
ORDER BY created_at`).all();
|
|
330
|
+
const timelines = buildTimelines(siblings);
|
|
331
|
+
const idToTimeline = new Map();
|
|
332
|
+
for (const tl of timelines) {
|
|
333
|
+
const rendered = renderTimeline(tl);
|
|
334
|
+
for (const id of rendered.memoryIds)
|
|
335
|
+
idToTimeline.set(id, rendered.rendered);
|
|
336
|
+
}
|
|
337
|
+
for (const hit of enriched) {
|
|
338
|
+
if (hit.id !== undefined && idToTimeline.has(hit.id)) {
|
|
339
|
+
hit.timelineContext = idToTimeline.get(hit.id);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
logWarn("recall-enrich", `timeline enrichment failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Interference detection: flag similar-but-different results
|
|
349
|
+
try {
|
|
350
|
+
const { detectInterference } = await import("./brain-patterns.js");
|
|
351
|
+
for (let i = 0; i < enriched.length; i++) {
|
|
352
|
+
for (let j = i + 1; j < enriched.length; j++) {
|
|
353
|
+
const a = enriched[i], b = enriched[j];
|
|
354
|
+
const topicA = a.content.match(/\|([a-z]+)\|/)?.[1] ?? "";
|
|
355
|
+
const topicB = b.content.match(/\|([a-z]+)\|/)?.[1] ?? "";
|
|
356
|
+
if (detectInterference(a.content, b.content, topicA, topicB)) {
|
|
357
|
+
a.interferenceWarning = `⚠️ Conflicts with another result — verify which is current`;
|
|
358
|
+
b.interferenceWarning = `⚠️ Conflicts with another result — verify which is current`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch { /* brain-patterns not available */ }
|
|
364
|
+
// Compress-field enrichment: fetch topic, emotion_tags, importance_flags, confidence for ABM-L rendering
|
|
365
|
+
const idsToEnrich = enriched.filter(h => h.id !== undefined).map(h => h.id);
|
|
366
|
+
if (idsToEnrich.length > 0) {
|
|
367
|
+
try {
|
|
368
|
+
const placeholders = idsToEnrich.map(() => "?").join(",");
|
|
369
|
+
const rows = db.prepare(`SELECT id, topic, emotion_tags, importance_flags, confidence, created_at
|
|
370
|
+
FROM extracted_memories WHERE id IN (${placeholders})`).all(...idsToEnrich);
|
|
371
|
+
const byId = new Map(rows.map(r => [r.id, r]));
|
|
372
|
+
for (const hit of enriched) {
|
|
373
|
+
const row = hit.id !== undefined ? byId.get(hit.id) : undefined;
|
|
374
|
+
if (row) {
|
|
375
|
+
hit.topic = row.topic ?? undefined;
|
|
376
|
+
hit.emotionTags = row.emotion_tags ?? undefined;
|
|
377
|
+
hit.importanceFlags = row.importance_flags ?? undefined;
|
|
378
|
+
hit.confidence = row.confidence ?? undefined;
|
|
379
|
+
hit.createdAt = row.created_at;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
catch { /* non-critical */ }
|
|
384
|
+
}
|
|
385
|
+
return enriched;
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=recall-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall-engine.js","sourceRoot":"","sources":["../../src/recall-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* redactSecrets — secret-pattern sanitization for log/file output.
|
|
3
|
+
*
|
|
4
|
+
* INTENTIONALLY DUPLICATED across agentbridge and abmind — they are
|
|
5
|
+
* independent products that both need this utility. If you add or
|
|
6
|
+
* modify a pattern here, also update the sibling file:
|
|
7
|
+
* agentbridge/src/components/logger.ts (SECRET_PATTERNS + redactSecrets)
|
|
8
|
+
* abmind/src/redact-secrets.ts (SECRET_PATTERNS + redactSecrets)
|
|
9
|
+
*
|
|
10
|
+
* Do NOT create an import relationship between them. Each product stays
|
|
11
|
+
* independent so the bridge can run against a different memory backend
|
|
12
|
+
* and abmind can ship as a standalone npm package without pulling
|
|
13
|
+
* agentbridge in for a utility function.
|
|
14
|
+
*
|
|
15
|
+
* See abproject/docs/plans/178-redact-secrets-move.md for the rationale.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SECRET_PATTERNS: ReadonlyArray<[RegExp, string]>;
|
|
18
|
+
/** Strip known secret patterns from a log line or file content. */
|
|
19
|
+
export declare function redactSecrets(text: string): string;
|
|
20
|
+
//# sourceMappingURL=redact-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-secrets.d.ts","sourceRoot":"","sources":["../../src/redact-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB3D,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* redactSecrets — secret-pattern sanitization for log/file output.
|
|
3
|
+
*
|
|
4
|
+
* INTENTIONALLY DUPLICATED across agentbridge and abmind — they are
|
|
5
|
+
* independent products that both need this utility. If you add or
|
|
6
|
+
* modify a pattern here, also update the sibling file:
|
|
7
|
+
* agentbridge/src/components/logger.ts (SECRET_PATTERNS + redactSecrets)
|
|
8
|
+
* abmind/src/redact-secrets.ts (SECRET_PATTERNS + redactSecrets)
|
|
9
|
+
*
|
|
10
|
+
* Do NOT create an import relationship between them. Each product stays
|
|
11
|
+
* independent so the bridge can run against a different memory backend
|
|
12
|
+
* and abmind can ship as a standalone npm package without pulling
|
|
13
|
+
* agentbridge in for a utility function.
|
|
14
|
+
*
|
|
15
|
+
* See abproject/docs/plans/178-redact-secrets-move.md for the rationale.
|
|
16
|
+
*/
|
|
17
|
+
export const SECRET_PATTERNS = [
|
|
18
|
+
[/sk-[A-Za-z0-9_-]{20,}/g, "sk-***REDACTED***"],
|
|
19
|
+
[/ghp_[A-Za-z0-9]{36,}/g, "ghp_***REDACTED***"],
|
|
20
|
+
[/github_pat_[A-Za-z0-9_]{20,}/g, "github_pat_***REDACTED***"],
|
|
21
|
+
[/xox[baprs]-[A-Za-z0-9-]{10,}/g, "xox_-***REDACTED***"],
|
|
22
|
+
[/AIza[A-Za-z0-9_-]{30,}/g, "AIza***REDACTED***"],
|
|
23
|
+
[/AKIA[A-Z0-9]{16}/g, "AKIA***REDACTED***"],
|
|
24
|
+
[/\d{8,12}:[A-Za-z0-9_-]{35,}/g, "***BOT_TOKEN***"],
|
|
25
|
+
[/Bearer [A-Za-z0-9._-]{20,}/g, "Bearer ***REDACTED***"],
|
|
26
|
+
[/hf_[A-Za-z0-9]{20,}/g, "hf_***REDACTED***"],
|
|
27
|
+
[/npm_[A-Za-z0-9]{20,}/g, "npm_***REDACTED***"],
|
|
28
|
+
[/sk_live_[A-Za-z0-9]{20,}/g, "sk_live_***REDACTED***"],
|
|
29
|
+
[/sk_test_[A-Za-z0-9]{20,}/g, "sk_test_***REDACTED***"],
|
|
30
|
+
[/SG\.[A-Za-z0-9_-]{20,}/g, "SG.***REDACTED***"],
|
|
31
|
+
[/("(?:api[_-]?key|token|secret|password|authorization|credential)"\s*:\s*")[^"]{8,}"/gi, '$1***REDACTED***"'],
|
|
32
|
+
[/([A-Z_]*(?:KEY|TOKEN|SECRET|PASSWORD)=)[^\s]{8,}/g, "$1***REDACTED***"],
|
|
33
|
+
];
|
|
34
|
+
/** Strip known secret patterns from a log line or file content. */
|
|
35
|
+
export function redactSecrets(text) {
|
|
36
|
+
let result = text;
|
|
37
|
+
for (const [pattern, replacement] of SECRET_PATTERNS) {
|
|
38
|
+
result = result.replace(pattern, replacement);
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=redact-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-secrets.js","sourceRoot":"","sources":["../../src/redact-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;IAC/C,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;IAC/C,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;IAC9D,CAAC,+BAA+B,EAAE,qBAAqB,CAAC;IACxD,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;IACjD,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;IAC3C,CAAC,8BAA8B,EAAE,iBAAiB,CAAC;IACnD,CAAC,6BAA6B,EAAE,uBAAuB,CAAC;IACxD,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;IAC7C,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;IAC/C,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;IACvD,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;IACvD,CAAC,yBAAyB,EAAE,mBAAmB,CAAC;IAChD,CAAC,uFAAuF,EAAE,mBAAmB,CAAC;IAC9G,CAAC,mDAAmD,EAAE,kBAAkB,CAAC;CAC1E,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC;QACrD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runtime-store.ts — per-plugin runtime isolation via Symbol.for registry.
|
|
3
|
+
*
|
|
4
|
+
* When abmind is loaded as a plugin host (OpenClaw ContextEngine, future multi-
|
|
5
|
+
* session embedders), multiple instances may coexist in a single Node process.
|
|
6
|
+
* Module-level state or process.env mutations leak across instances.
|
|
7
|
+
*
|
|
8
|
+
* This registry uses Symbol.for as a process-wide key that survives module
|
|
9
|
+
* re-loading (bundler duplication, different resolution paths). Each plugin
|
|
10
|
+
* instance registers its runtime under a unique pluginId and retrieves it
|
|
11
|
+
* by that id — no shared mutable state, no env pollution.
|
|
12
|
+
*
|
|
13
|
+
* Pattern borrowed from openclaw/src/plugin-sdk/runtime-store.ts (Apache-2.0).
|
|
14
|
+
* See abproject/docs/plans/346-runtime-store-pattern.md for design rationale.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Register a runtime under a pluginId.
|
|
18
|
+
* Throws if the pluginId is already in use — callers must dispose before re-registering.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerRuntime<R>(pluginId: string, runtime: R): void;
|
|
21
|
+
/**
|
|
22
|
+
* Retrieve a runtime by pluginId.
|
|
23
|
+
* Throws if no runtime is registered — callers should register at plugin init
|
|
24
|
+
* and only call getRuntime during request handling (after init completes).
|
|
25
|
+
*/
|
|
26
|
+
export declare function getRuntime<R>(pluginId: string): R;
|
|
27
|
+
/**
|
|
28
|
+
* Check whether a runtime is registered for a pluginId.
|
|
29
|
+
* Use this to guard against double-registration in idempotent plugin init paths.
|
|
30
|
+
*/
|
|
31
|
+
export declare function hasRuntime(pluginId: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Remove a runtime. Call from plugin dispose/shutdown.
|
|
34
|
+
* No-op if the pluginId isn't registered (safe to call multiple times).
|
|
35
|
+
*/
|
|
36
|
+
export declare function removeRuntime(pluginId: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* List all currently-registered pluginIds. Primarily for debugging/tests.
|
|
39
|
+
* Order is insertion order.
|
|
40
|
+
*/
|
|
41
|
+
export declare function listRuntimes(): readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* Clear all runtimes. Test-only helper — production code should use removeRuntime.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export declare function _clearAllRuntimes(): void;
|
|
47
|
+
//# sourceMappingURL=runtime-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-store.d.ts","sourceRoot":"","sources":["../../src/runtime-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwBH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAWrE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAQjD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,SAAS,MAAM,EAAE,CAEhD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* runtime-store.ts — per-plugin runtime isolation via Symbol.for registry.
|
|
3
|
+
*
|
|
4
|
+
* When abmind is loaded as a plugin host (OpenClaw ContextEngine, future multi-
|
|
5
|
+
* session embedders), multiple instances may coexist in a single Node process.
|
|
6
|
+
* Module-level state or process.env mutations leak across instances.
|
|
7
|
+
*
|
|
8
|
+
* This registry uses Symbol.for as a process-wide key that survives module
|
|
9
|
+
* re-loading (bundler duplication, different resolution paths). Each plugin
|
|
10
|
+
* instance registers its runtime under a unique pluginId and retrieves it
|
|
11
|
+
* by that id — no shared mutable state, no env pollution.
|
|
12
|
+
*
|
|
13
|
+
* Pattern borrowed from openclaw/src/plugin-sdk/runtime-store.ts (Apache-2.0).
|
|
14
|
+
* See abproject/docs/plans/346-runtime-store-pattern.md for design rationale.
|
|
15
|
+
*/
|
|
16
|
+
const REGISTRY_KEY = Symbol.for("abmind.plugin-sdk.runtime-store");
|
|
17
|
+
function getRegistry() {
|
|
18
|
+
const g = globalThis;
|
|
19
|
+
if (!g[REGISTRY_KEY]) {
|
|
20
|
+
g[REGISTRY_KEY] = new Map();
|
|
21
|
+
}
|
|
22
|
+
return g[REGISTRY_KEY];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register a runtime under a pluginId.
|
|
26
|
+
* Throws if the pluginId is already in use — callers must dispose before re-registering.
|
|
27
|
+
*/
|
|
28
|
+
export function registerRuntime(pluginId, runtime) {
|
|
29
|
+
if (!pluginId || typeof pluginId !== "string") {
|
|
30
|
+
throw new Error("registerRuntime: pluginId must be a non-empty string");
|
|
31
|
+
}
|
|
32
|
+
const registry = getRegistry();
|
|
33
|
+
if (registry.has(pluginId)) {
|
|
34
|
+
throw new Error(`registerRuntime: pluginId "${pluginId}" already registered — call removeRuntime first`);
|
|
35
|
+
}
|
|
36
|
+
registry.set(pluginId, { runtime, pluginId, createdAt: Date.now() });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Retrieve a runtime by pluginId.
|
|
40
|
+
* Throws if no runtime is registered — callers should register at plugin init
|
|
41
|
+
* and only call getRuntime during request handling (after init completes).
|
|
42
|
+
*/
|
|
43
|
+
export function getRuntime(pluginId) {
|
|
44
|
+
const entry = getRegistry().get(pluginId);
|
|
45
|
+
if (!entry) {
|
|
46
|
+
throw new Error(`getRuntime: no runtime registered for pluginId "${pluginId}" (register at plugin init)`);
|
|
47
|
+
}
|
|
48
|
+
return entry.runtime;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check whether a runtime is registered for a pluginId.
|
|
52
|
+
* Use this to guard against double-registration in idempotent plugin init paths.
|
|
53
|
+
*/
|
|
54
|
+
export function hasRuntime(pluginId) {
|
|
55
|
+
return getRegistry().has(pluginId);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Remove a runtime. Call from plugin dispose/shutdown.
|
|
59
|
+
* No-op if the pluginId isn't registered (safe to call multiple times).
|
|
60
|
+
*/
|
|
61
|
+
export function removeRuntime(pluginId) {
|
|
62
|
+
getRegistry().delete(pluginId);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* List all currently-registered pluginIds. Primarily for debugging/tests.
|
|
66
|
+
* Order is insertion order.
|
|
67
|
+
*/
|
|
68
|
+
export function listRuntimes() {
|
|
69
|
+
return [...getRegistry().keys()];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Clear all runtimes. Test-only helper — production code should use removeRuntime.
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
export function _clearAllRuntimes() {
|
|
76
|
+
getRegistry().clear();
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=runtime-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-store.js","sourceRoot":"","sources":["../../src/runtime-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAcnE,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,UAA2C,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,CAAC,YAAY,CAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAI,QAAgB,EAAE,OAAU;IAC7D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,iDAAiD,CACxF,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,QAAgB;IAC5C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,6BAA6B,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,OAAY,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MemoryManager } from "./memory-manager.js";
|
|
2
|
+
export declare const RECENT_MSG_LIMIT = 8;
|
|
3
|
+
export declare const RECENT_MSG_CAP = 2500;
|
|
4
|
+
/**
|
|
5
|
+
* Build session-start context for injection after /new, /reset, or restart.
|
|
6
|
+
* Returns the latest daily summary, or recent messages if no daily covers the gap.
|
|
7
|
+
* Wrapped in REQ-4 temporal markers.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildSessionStartContext(memory: MemoryManager, userId: string): string | null;
|
|
10
|
+
//# sourceMappingURL=session-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../../src/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,cAAc,OAAO,CAAC;AA0BnC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuD7F"}
|