Peter Steinberger
2000dcdcd0
test(memory): dedupe temp-dir lifecycle hooks and cover overlapping path dedupe
2026-02-21 21:40:39 +00:00
Vincent Koc
35be87b09b
fix(tui): strip inbound metadata blocks from user messages (clean rewrite) ( #22345 )
...
* fix(tui): strip inbound metadata blocks from user text
* chore: clean up metadata-strip format and changelog credit
* chore: format tui metadata-strip tests
* test: align metadata-strip regression expectations
* refactor: reuse canonical inbound metadata stripper
* test: allow tmp media fixture paths in media-understanding tests
* refactor: reuse canonical inbound metadata stripper
* format: fix changelog blank line after headings
* test: fix unrelated check typing regressions
* test: align memory async mock embedding signatures
* test: avoid tsgo mock typing pitfall
* test: restore async search mock typings in merge tree
* test: trigger ci rerun without behavior change
* chore: dedupe todays changelog entries
* fix: dedupe sqlite mock keys in qmd manager test
* Update qmd-manager.test.ts
* test: align chat metadata sanitization expectation
2026-02-20 23:52:43 -05:00
vignesh07
338ae269d6
test(memory): avoid stmt mock shape flake by reusing typed busy stmt
2026-02-20 20:43:15 -08:00
vignesh07
665221a1f0
test(memory): mock sqlite stmt with all+get for busy case
2026-02-20 20:43:15 -08:00
vignesh07
e90eedb0ae
test(memory): fix sqlite busy mock to match implementation
2026-02-20 20:43:15 -08:00
vignesh07
1ded4c672a
test(memory): fix TS types after vitest/ts updates
2026-02-20 20:21:42 -08:00
Vignesh Natarajan
544c213d42
Memory/QMD: diversify mixed-source search results
2026-02-20 20:13:24 -08:00
Vignesh Natarajan
be756b9a89
Memory: fix async sync close race
2026-02-20 19:55:11 -08:00
Vignesh Natarajan
a305dfe626
Memory/QMD: harden multi-collection search and embed scheduling
2026-02-20 19:41:51 -08:00
Vignesh Natarajan
5542a43623
Memory: share ENOENT helpers
2026-02-19 23:33:28 -08:00
Vignesh Natarajan
14a3af212d
Format: align memory imports
2026-02-19 23:33:28 -08:00
Vignesh Natarajan
ec4198954a
Memory: harden readFile ENOENT handling
2026-02-19 23:33:28 -08:00
Daniel Zou
f3f47886ba
fix(memory): handle ENOENT gracefully in readFile instead of throwing
...
When a memory file doesn't exist yet (e.g. daily log `2026-02-19.md`),
`readFile` now returns `{ text: "", path }` instead of propagating the
ENOENT error. This prevents noisy error responses from the memory read
tool and aligns with the "graceful degradation" recommendation in #9307 .
Closes #9307
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 23:33:28 -08:00
Peter Steinberger
a1cb700a05
test: dedupe and optimize test suites
2026-02-19 15:19:38 +00:00
Peter Steinberger
eb9861b20a
test: share memory manager bootstrap helper
2026-02-19 14:27:37 +00:00
Peter Steinberger
781b1c1e09
test(memory): dedupe voyage embedding provider test setup
2026-02-19 07:37:06 +00:00
Peter Steinberger
65ef7fb4a4
test: dedupe empty-input mmr assertions
2026-02-18 23:33:15 +00:00
Peter Steinberger
be1f2a1348
perf(test): drop timeout wrapper in async memory search test
2026-02-18 22:22:36 +00:00
Peter Steinberger
9c125c6c1f
perf(test): remove unnecessary qmd export delay
2026-02-18 17:31:59 +00:00
Peter Steinberger
82cb185881
refactor(core): unify bounded concurrency runner
2026-02-18 16:48:35 +00:00
Peter Steinberger
ff50d3303d
test(memory): dedupe model-auth mock setup
2026-02-18 13:17:44 +00:00
Peter Steinberger
c3472f6c54
test(memory): dedupe embeddings provider test fixtures
2026-02-18 12:28:25 +00:00
Peter Steinberger
8a9fddedc9
refactor: extract shared install and embedding utilities
2026-02-18 04:49:22 +00:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
Peter Steinberger
6dcc052bb4
fix: stabilize model catalog and pi discovery auth storage compatibility
2026-02-18 02:09:40 +01:00
Peter Steinberger
2e91552f09
feat(agents): add generic provider api key rotation ( #19587 )
2026-02-18 01:31:11 +01:00
Sebastian
bd1e7fadd5
test: cover cron telemetry and typed fetch mocks
2026-02-17 09:47:29 -05:00
Seb Slight
f44e3b2a34
revert: fix models set catalog validation ( #19194 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7e3b2ff7afe052097c4414fc64d7e66191e8fcc3
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com >
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com >
Reviewed-by: @sebslight
2026-02-17 09:43:41 -05:00
Shakker
6bb9b0656f
Tests: fix fetch mock typings for type-aware checks
2026-02-17 14:34:41 +00:00
Sebastian
cc359d338e
test: add fetch mock helper and reaction coverage
2026-02-17 09:02:39 -05:00
cpojer
7b31e8fc59
chore: Fix types in tests 36/N.
2026-02-17 15:50:07 +09:00
cpojer
6e5df1dc0f
chore: Fix types in tests 25/N.
2026-02-17 14:31:02 +09:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
Sebastian
f7d2e15a2e
test: stabilize infra tests
2026-02-16 22:37:34 -05:00
cpojer
43c97d18aa
chore: Fix types in tests 17/N.
2026-02-17 12:00:29 +09:00
cpojer
003d6c45d6
chore: Fix types in tests 6/N.
2026-02-17 10:57:31 +09:00
Peter Steinberger
13ae1ae056
fix(memory): tighten embedding manager inheritance types
2026-02-17 00:59:54 +00:00
Peter Steinberger
5115f6fdf3
style: normalize imports for oxfmt 0.33
2026-02-17 00:59:54 +00:00
Peter Steinberger
ddef3cadba
refactor: replace memory manager prototype mixing
2026-02-17 01:50:04 +01:00
cpojer
1dc9bb8d62
chore: Fix more type issues.
2026-02-17 09:29:47 +09:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
9bfd3ca195
refactor(memory): consolidate embeddings and batch helpers
2026-02-17 00:11:02 +00:00
Rodrigo Uroz
65ad9a4262
Memory: fix MMR tie-break and temporal timestamp dedupe
2026-02-16 23:59:19 +01:00
Rodrigo Uroz
33cf27a52a
fix: MMR default disabled, tie-break null guard, correct docs URL
...
- DEFAULT_MMR_CONFIG.enabled = false (opt-in, was incorrectly true)
- Tie-break: handle bestItem === null so first candidate always wins
- CHANGELOG URL: docs.clawd.bot → docs.openclaw.ai
- Tests updated to pass enabled: true explicitly where needed
2026-02-16 23:59:19 +01:00
Rodrigo Uroz
6b3e0710f4
feat(memory): Add opt-in temporal decay for hybrid search scoring
...
Exponential decay (half-life configurable, default 30 days) applied
before MMR re-ranking. Dated daily files (memory/YYYY-MM-DD.md) use
filename date; evergreen files (MEMORY.md, topic files) are not
decayed; other sources fall back to file mtime.
Config: memorySearch.query.hybrid.temporalDecay.{enabled, halfLifeDays}
Default: disabled (backwards compatible, opt-in).
2026-02-16 23:59:19 +01:00
Rodrigo Uroz
fa9420069a
feat(memory): Add MMR re-ranking for search result diversity
...
Adds Maximal Marginal Relevance (MMR) re-ranking to hybrid search results.
- New mmr.ts with tokenization, Jaccard similarity, and MMR algorithm
- Integrated into mergeHybridResults() with optional mmr config
- 40 comprehensive tests covering edge cases and diversity behavior
- Configurable lambda parameter (default 0.7) to balance relevance vs diversity
- Updated CHANGELOG.md and memory docs
This helps avoid redundant results when multiple chunks contain similar content.
2026-02-16 23:59:19 +01:00
康熙
bcab2469de
feat: LLM-based query expansion for FTS mode
...
When searching in FTS-only mode (no embedding provider), extract meaningful
keywords from conversational queries using LLM to improve search results.
Changes:
- New query-expansion module with keyword extraction
- Supports English and Chinese stop word filtering
- Null safety guards for FTS-only mode (provider can be null)
- Lint compliance fixes for string iteration
This helps users find relevant memory entries even with vague queries.
2026-02-16 23:53:21 +01:00
康熙
65aedac20e
fix: enable FTS fallback when no embedding provider available ( #17725 )
...
When no embedding provider is available (e.g., OAuth mode without API keys),
memory_search now falls back to FTS-only mode instead of returning disabled: true.
Changes:
- embeddings.ts: return null provider with reason instead of throwing
- manager.ts: handle null provider, use FTS-only search mode
- manager-search.ts: allow searching all models when provider is undefined
- memory-tool.ts: expose search mode in results
The search results now include a 'mode' field indicating 'hybrid' or 'fts-only'.
2026-02-16 23:53:21 +01:00