Onur Solmaz
a4b4fed412
fix(memory): validate memory index identity
...
* docs: add memory index identity plan
* fix(memory): validate memory index identity
* fix(memory): align status index identity with vector probe
* fix(memory): fail closed on stale fts-only search
* fix(memory): clear sessions-only identity reindex dirty state
* fix(memory): gate targeted session sync by index identity
* fix(memory): clear resolved index identity dirtiness
* fix(memory): block search on missing index identity
* fix(memory): preserve dirty events during identity reindex
* fix(memory): resolve provider aliases for index identity
* fix(memory): report missing identity states accurately
* fix(memory): mark missing session index identity dirty
* test(memory): expose provider alias resolver in mocks
* chore(memory): remove scratch implementation plan
* fix(memory): avoid automatic full reindex on provider cutover
* docs(memory): plan no-schema cutover repair
* fix(memory): pause vector search on index identity mismatch
* fix(memory): freeze dirty identity sync writes
* fix(memory): skip paused-index search retry
* test(memory): keep retry tests on same provider identity
* fix(memory): surface paused index recall
* chore(memory): remove scratch plan from pr
* fix(memory): preserve paused session dirtiness
* fix(memory): make paused recall warning explicit
* docs(memory): document explicit index repair
2026-06-02 14:22:25 +08:00
Dallin Romney
0904f3e553
revert: undo gateway memory watch warning ( #89246 )
2026-06-01 15:32:42 -07:00
Peter Steinberger
65d7fa2420
fix(memory): reattach Linux watchers on directory rename
...
(cherry picked from commit 0db7781514cc84fac4f3a999d24b4b747fc871f9)
2026-06-01 23:15:00 +01:00
Dallin Romney
2405bbcbaf
fix(memory): warn on gateway watcher FD risk ( #89185 )
...
* fix(memory): default gateway memory watch off
* fix(memory): warn on gateway watcher fd risk
* fix(config): avoid warning helper narrowing
* fix(config): remove redundant warning boolean cast
* docs(memory): clarify watcher default wording
* docs(memory): simplify watcher warning copy
* fix(config): scope watcher warning to local gateway
2026-06-01 14:23:25 -07:00
Dallin Romney
5a67c5c556
fix(memory-core): reduce Linux watcher fan-out ( #89188 )
...
* fix(memory-core): reduce Linux watcher fan-out
* fix(memory-core): satisfy watcher type and lint checks
* fix(memory-core): harden Linux watcher subtree races
2026-06-01 12:54:30 -07:00
NianJiu
5a55135146
fix(memory): retry transient FileProvider-backed reads ( #85351 )
2026-06-01 12:40:20 -07:00
Peter Steinberger
ec2455a842
test(memory): drive timeout tests with explicit fake clocks
...
(cherry picked from commit d75eea53c9 )
2026-06-01 13:12:07 +01:00
Peter Steinberger
7d9fae5b3a
fix(memory): keep embedding timeout watchdog active
...
(cherry picked from commit 591f310869 )
2026-06-01 12:29:27 +01:00
Peter Steinberger
4e57546a87
test(memory): isolate qmd timer state in prerelease shard
2026-06-01 06:03:43 +01:00
Firas Alswihry
70c59f59b2
feat(dreaming): score candidates with shadow trial results
...
Add report-only memory-core dreaming shadow trial scoring and ranking helpers. Keep rank lookup keyed by durable candidate keys and document the advisory behavior. Thanks @iFiras-Max1.
2026-05-31 23:40:20 -04:00
Peter Steinberger
ebcdb637bb
perf(memory-core): defer embedding engine startup imports
2026-06-01 04:22:22 +01:00
Ted Li
c002887223
fix(memory): rehydrate daily list promotions
...
* fix(memory): rehydrate daily list promotions
* fix(memory): preserve multi-line daily list promotions
* fix(memory): preserve daily list promotion context
* fix(memory): rehydrate capped daily list promotions
* test(memory): cover capped daily list promotion
* test(agents): update model selection mocks
* ci: ignore lazy three dependency
* fix(memory): skip heading-only rehydration
* fix(memory): preserve list rehydration mode
* fix(memory): match capped renamed heading bodies
* fix(memory): avoid duplicate tail heading matches
* fix(microsoft-foundry): satisfy provider lint
* perf(memory): precompute promotion heading context
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-31 22:08:35 -04:00
Peter Steinberger
27dde7a4d6
chore(lint): enable stricter error rules
2026-06-01 01:12:21 +01:00
Alix-007
bc95af1b7c
fix(memory-core): stop dream diary fallback leaks
...
Stop memory-core dream diary fallback paths from persisting raw memory staging snippets or promotions into DREAMS.md when narrative generation times out, returns empty output, or fails in request-scoped runtime. Successful generated narratives are unchanged.
Maintainer fixup: align current gateway session-list tests with the full loadSessionEntry mock shape and model-derived context token behavior on main.
Fixes #88391
Co-authored-by: Alix-007 <li.long15@xydigit.com >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 00:00:22 +01:00
Peter Steinberger
22cb7fb6b7
chore(lint): enable no-promise-executor-return
2026-05-31 23:06:13 +01:00
Peter Steinberger
b653d94918
chore(lint): enable no-useless-assignment
2026-05-31 22:40:48 +01:00
Peter Steinberger
2df95c0b10
chore(lint): enable no-misused-promises
2026-05-31 20:42:13 +01:00
Ben Newell
a88e4fb7e0
fix(memory-core): preserve phase signals on read errors
...
Phase-signal store reads now recover only missing files and corrupt JSON. Nonrecoverable filesystem read failures propagate so dreaming aborts before overwriting existing phase-signal history with an empty replacement.
Fixes #77881 .
Thanks @bennewell35.
Co-authored-by: bennewell35 <newelljben@gmail.com >
2026-05-31 19:18:56 +01:00
Peter Steinberger
304e2c83c0
chore(lint): enable stricter oxlint rules
2026-05-31 18:59:02 +01:00
Chunyue Wang
b8f25e9648
fix(memory): serialize qmd writes across processes ( #85931 )
...
Serialize QMD update and embed writes with one per-agent store lock so foreground memory search/index and gateway background QMD work do not write the same index.sqlite concurrently.
The embed path now waits for global embed capacity before taking the per-store lock, so queued embeds do not block same-agent foreground updates while no store write is active.
Fixes #66339
Thanks @openperf.
Co-authored-by: Chunyue Wang <16864032@qq.com >
2026-05-31 18:57:15 +01:00
Alix-007
2870a28aa9
fix(memory-core): reclaim orphaned dreaming sessions
...
When dreaming narrative cleanup calls subagent.deleteSession() in the finally block and it throws, the store row can be left behind referencing a still-present transcript. The scrubber only pruned dreaming rows whose transcript was missing, so these orphans lingered in the recent sessions sidebar with no kind/status/endedAt and accumulated across restarts.
Reclaim a dreaming store row when its transcript is missing OR has aged past DREAMING_ORPHAN_MIN_AGE_MS, then leave the transcript unreferenced so the orphan-transcript pass archives it.
Fixes #88322
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 16:52:11 +01:00
Peter Steinberger
899dc5f248
fix(memory): retry transient embedding failures
...
Retry live query embeddings on transient provider transport failures and split eligible batch embedding socket failures after bounded retries.
Fixes #71784
Fixes #44166
Supersedes #44167
Co-authored-by: MrGeDiao <MrGeDiao@users.noreply.github.com >
2026-05-31 12:30:26 +01:00
Firas Alswihry
b2f71db7bb
feat(dreaming): add report-only shadow trial runner
...
Adds a report-only memory-core dreaming shadow-trial runner that writes inspectable artifacts without mutating durable memory. The public helper now stores default reports under daily directories with opaque content-hash filenames, so multiple same-day trials coexist without leaking candidate text into paths.
Verification:
- OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-memory.config.ts extensions/memory-core/src/dreaming-shadow-trial.test.ts --reporter=verbose --maxWorkers=1
- git diff --check
- pnpm exec oxfmt --check extensions/memory-core/src/dreaming-shadow-trial.ts extensions/memory-core/src/dreaming-shadow-trial.test.ts
- pnpm tsgo:extensions
- autoreview clean: no accepted/actionable findings
- GitHub CI run 26709794635 passed
- Real behavior proof run 26709798698 passed
- Dependency Guard run 26709794113 passed
Co-authored-by: Firas Alswihry <itzfiras@gmail.com >
2026-05-31 11:16:33 +01:00
shawnduggan
1d55caa162
fix(memory): respect QMD status timeout
...
Respect the configured QMD status timeout during vector availability probes and skip checkpoint-style session transcript exports while preserving valid session IDs that merely contain checkpoint words.
Includes maintainer fixups for latest-main timer-dependent CI and SMS status/test drift.
Thanks @shawnduggan.
Verification:
- `mise exec node@24.13 .0 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.agents-core.config.ts src/agents/bash-tools.exec-foreground-failures.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run src/channels/draft-stream-loop.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run extensions/sms/src/channel.test.ts extensions/sms/src/inbound.test.ts extensions/sms/src/twilio.test.ts extensions/sms/src/gateway.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway-server.config.ts src/gateway/server.agent.gateway-server-agent-b.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo`
- `mise exec node@24.16 .0 -- node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core-test.tsbuildinfo`
- `mise exec node@24.16 .0 -- node scripts/run-oxlint-shards.mjs --threads=8`
- `git diff --check`
- GitHub Actions: run `26708853296` and required checks passed on `0c97217a9de501cb861fee731d5c008781da056c`.
2026-05-31 10:29:45 +01:00
Peter Steinberger
9e2bd8b2f7
fix(memory): fail open when embedding recall stalls
...
Preserve custom OpenAI-compatible memory embedding provider ids from #81170 .
Fixes #47884 .
Fixes #49524 .
Refs #56532 .
Co-authored-by: adone0 <vladyslav.yavorskyi@outlook.com >
2026-05-31 10:21:17 +01:00
Peter Steinberger
f5eca3f84c
chore(lint): enable object and reassignment rules
2026-05-31 09:32:52 +01:00
Peter Steinberger
b9fe0894a6
chore(lint): enable additional cleanup rules
2026-05-31 08:16:11 +01:00
Peter Steinberger
4eba3e5d7d
chore(lint): enable more readability rules
2026-05-31 07:38:33 +01:00
Peter Steinberger
deb7bc6539
chore(lint): enable readability lint rules
2026-05-31 07:17:57 +01:00
Peter Steinberger
23dac6c263
test: keep vitest cases under one second
2026-05-31 06:51:34 +01:00
Peter Steinberger
84061c1f8e
fix(memory): clamp batch timeout minutes
2026-05-31 01:37:46 -04:00
Peter Steinberger
5c38c0c76d
fix(memory): clamp sync interval timers
2026-05-31 01:37:46 -04:00
Peter Steinberger
caac9733a7
fix(memory): bound qmd embed backoff
2026-05-30 14:39:33 -04:00
Peter Steinberger
ccd635fdb9
fix(memory-core): guard short-term recall timestamps
2026-05-30 08:10:54 -04:00
Peter Steinberger
9c08d8cd35
fix(memory-core): guard injected timestamps
2026-05-30 08:06:42 -04:00
Peter Steinberger
b1958256fd
fix(memory): cap embedding timeouts
2026-05-30 04:48:15 -04:00
Peter Steinberger
dad8cfaf74
fix(runtime): reuse timeout grace for voice and memory
2026-05-30 03:21:14 -04:00
Peter Steinberger
1ac037d948
fix(memory): cap qmd search process timeouts
2026-05-30 02:54:11 -04:00
Peter Steinberger
888cd08fa8
fix(memory-core): centralize cli integer parsing
2026-05-29 06:12:45 -04:00
Peter Steinberger
25a5cb3270
fix(memory): default non-finite qmd read windows
2026-05-29 00:18:27 -04:00
Peter Steinberger
4ac6bb1964
fix: validate memory search min score
2026-05-28 21:28:02 -04:00
Peter Steinberger
e9cca2d1ef
fix: validate memory search result counts
2026-05-28 19:17:42 -04:00
Peter Steinberger
361753908e
fix: validate memory get ranges
2026-05-28 19:11:37 -04:00
AMARA
3029326a56
fix(memory): compact short-term promotion entries
...
Compact promoted short-term memory snippets before writing them into MEMORY.md, while keeping the full rehydrated snippet in recall state for ranking/provenance. Adds the deep-dreaming config surface and docs, with the default promoted snippet cap set to 160 estimated tokens.
Verification:
- git diff --check
- fnm exec --using v24.13.0 node scripts/run-vitest.mjs run extensions/memory-core/src/short-term-promotion.test.ts extensions/memory-core/src/dreaming.test.ts src/memory-host-sdk/dreaming.test.ts
- GitHub CI run 26605272497
- CodeQL security run 26605272404
Co-authored-by: AMARA <amara@eyeinthesky.pl >
2026-05-29 00:05:54 +01:00
NVIDIAN
6fbdae1c51
fix(memory-core): cap Dreaming short-term recall growth
...
Cap Dreaming short-term recall stores so repeated recall recording, repair, and promotion application cannot grow the JSON artifact without bound.
The fix keeps full normalized snippets for recall identity and contamination checks before truncating persisted snippets, exposes the new overflow audit code through the SDK facade, and adds regression coverage for recording, repair, promotion rehydration, and deterministic retention ties.
Fixes #87095 .
Verification:
- OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs extensions/memory-core/src/short-term-promotion.test.ts src/commands/doctor-memory-search.test.ts src/plugin-sdk/memory-core-engine-runtime.test.ts
- pnpm tsgo:prod
- pnpm check:test-types
- pnpm lint --threads=8
- git diff --check
- .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main
- PR CI run 26594527697: unrelated current-main failures only in checks-node-agentic-plugin-sdk and checks-node-agentic-agents; same failures reproduced on main run 26594198639.
Co-authored-by: ai-hpc <mail.speedy.hpc@hotmail.com >
2026-05-28 19:44:58 +01:00
Peter Steinberger
68ff0b9881
fix: parse memory cli numbers strictly
2026-05-28 14:33:18 -04:00
Peter Steinberger
94749b0a45
fix(cli): reject malformed numeric inputs
2026-05-27 15:43:12 -04:00
Peter Steinberger
bb46b79d3c
refactor: internalize OpenClaw agent runtime ( #85341 )
...
* refactor: extract agent core package
Introduce packages/agent-core as the OpenClaw-owned home for reusable agent loop, harness, session, prompt, and runtime dependency contracts.
* refactor: extract shared llm runtime
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
* refactor: remove pi runtime internals
Rename remaining Pi-shaped agent surfaces to OpenClaw agent runtime names, delete obsolete Pi docs and package graph checks, and add the third-party notice for incorporated code.
* refactor: tighten agent session runtime
Make agent-core/runtime dependencies explicit, consolidate compaction and session transcript helpers, and move model/session helpers behind OpenClaw-owned contracts.
* refactor: remove static model and pi auth paths
Drop static model catalogs and Pi auth bridges, move model/provider facts to manifest-owned runtime contracts, and harden internal embedded-agent utilities.
* refactor: remove legacy provider compat paths
* docs: remove agent parity notes
* fix: skip provider wildcard metadata parsing
* refactor: share session extension sdk loading
* refactor: inline acpx proxy error formatter
* refactor: fold edit recovery into edit tool
* fix: accept extension batch separator
* test: align startup provider plugin expectations
* fix: restore provider-scoped release discovery
* test: align static asset packaging expectations
* fix: run static provider catalogs during scoped discovery
* fix: add provider entry catalogs for scoped live discovery
* fix: load lightweight provider catalog entries
* fix: refresh provider-scoped plugin metadata
* fix: keep provider catalog entries on release live path
* fix: keep static manifest models in release live checks
* fix: harden release model discovery
* fix: reduce OpenAI live cache probe reasoning
* fix: disable OpenAI cache probe reasoning
* ci: extend OpenAI gateway live timeout
* fix: extend live gateway model budget
* fix: stabilize release validation regressions
* fix: honor provider aliases in model rows
* fix: stabilize release validation lanes
* fix: stabilize release memory qa
* ci: stabilize release validation lanes
* ci: prefer ipv4 for live docker node calls
* fix: restore shared tool-call stream wrapper
* ci: remove legacy pi test shard alias
* fix: clean up embedded agent test drift
* fix: stabilize runtime alias status
* fix: clean up embedded agent ci drift
* fix: restore release ci invariants
* fix: clean up post-rebase runtime drift
* fix: restore release ci checks
* fix: restore release ci after rebase
* fix: remove stale pi runtime path
* test: align compaction runtime expectations
* test: update plugin prerelease expectations
* fix: handle claude live tool approvals
* fix: stabilize release validation gates
* fix: finish agent runtime import
* test: finish post-rebase agent runtime mocks
* fix: keep codex compaction native
* fix: stabilize codex app-server hook tests
* test: isolate codex diagnostic active run
* test: remove codex diagnostic completion race
# Conflicts:
# extensions/codex/src/app-server/run-attempt.test.ts
* ci: fix full release manifest performance run id
* refactor: narrow llm plugin sdk boundary
* chore: drop generated google boundary stamps
* fix: repair rebase fallout
* fix: clean up rebased runtime references
* fix: decode codex jwt payloads as base64url
* fix: preserve shipped pi runtime alias
* fix: add scoped sdk virtual modules
* fix: decode llm codex oauth jwt as base64url
* fix: avoid stale vertex adc negative cache
* fix: harden tool arg decoding and codeql path
* fix: keep vertex adc negative checks live
* refactor: consolidate codex jwt and edit helpers
* fix: await codex oauth node runtime imports
* fix: preserve sdk tool and notice contracts
* fix: preserve shipped compat config boundaries
* fix: align codex oauth callback host
* fix: terminate agent-core loop streams on failure
* fix: keep codex oauth callback alive during fallback
* ci: include session tools in critical codeql scans
* fix: keep Cloudflare Anthropic provider auth header
* docs: redirect legacy pi runtime pages
* fix: honor bundled web provider compat discovery
* fix: protect session output spill files
* fix: keep legacy agent dir env blocked
* fix: contain auto-discovered skill symlinks
* fix: harden agent core sdk proxy surfaces
* fix: restore approval reaction sdk compat
* fix: keep live docker runs bounded
* fix: keep codex oauth redirect host aligned
* fix: resolve post-rebase agent runtime drift
* fix: redact anthropic oauth parse failures
* fix: preserve responses strict tool shaping
* fix: repair agent runtime rebase cleanup
* docs: redirect retired parity pages
* fix: bound auto-discovered resources to roots
* fix: repair post-rebase agent test drift
* fix: preserve bundled provider allowlist migration
* fix: preserve manifest-owned provider aliases
* fix: declare photon image dependency
* fix: keep provider headers out of proxy body
* fix: preserve shipped env aliases
* fix: refresh control ui i18n generated state
* fix: quote read fallback paths
* fix: preview edits through configured backend
* test: satisfy core test typecheck
* fix: preserve ZAI usage auth fallback
* test: repair codex diagnostic test
* fix: repair agent runtime rebase drift
* test: finish embedded runner import rename
* fix: repair agent runtime rebase integrations
* test: align compaction oauth fallback expectations
* fix: allow sdk-auth session models
* fix: update doctor tool schema import
* fix: preserve bedrock plugin region
* fix: stream harmony-like prose immediately
* ci: include session runtime in codeql shards
* fix: repair latest rebase integrations
* fix: honor explicit codex websocket transport
* fix: keep openai-compatible credentials provider-scoped
* fix: refresh sdk api baseline after rebase
* fix: route cli runtime aliases through openclaw harness
* test: rename stale harness mock expectation
* test: rename embedded agent overflow calls
* test: clean embedded auth test wording
* test: use openclaw stream types in deepinfra cache test
* fix: refresh sdk api baseline on latest main
* fix: honor bundled discovery compat allowlists
* fix: refresh sdk api baseline after latest rebase
* fix: remove stale rebase imports
* test: rename stale model catalog mock
* test: mock renamed doctor runtime modules
* fix: map canonical kimi env auth
* fix: use internal model registry in bench script
* fix: migrate deepinfra provider catalog entry
* fix: enforce builtin tool suppression
* fix: route compaction auth and proxy payloads safely
* refactor: prune unused llm registry leftovers
* test: update codex hooks session import
* test: fix model picker ci coverage
* test: align model picker auth mock types
2026-05-27 19:24:04 +01:00
Onur Solmaz
b7a5bcba78
fix(memory): salvage qmd search JSON after nonzero exit ( #87225 )
...
Merged via squash.
Prepared head SHA: 964617b224
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com >
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com >
Reviewed-by: @osolmaz
2026-05-27 23:44:43 +08:00
Bob
4d89e00c50
feat(embeddings): add OpenAI-compatible core provider ( #85269 )
...
Merged via squash.
Prepared head SHA: dc9a5d5397
Co-authored-by: dutifulbob <261991368+dutifulbob@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-05-27 14:37:17 +02:00