Skip to content

fix(tools): expose remember to local-model agents - #111

Merged
alpibrupa merged 1 commit into
mainfrom
fix-local-toolset-remember
Sep 4, 2026
Merged

fix(tools): expose remember to local-model agents#111
alpibrupa merged 1 commit into
mainfrom
fix-local-toolset-remember

Conversation

@alpibrupa

Copy link
Copy Markdown
Contributor

Summary

  • `minimal_tools()` — the curated toolset every local-model (litellm/ollama/vllm) agent variant is built from via `dynamic_tools()` — never included `remember_tool`, even though `build_permission()` allows it unconditionally and it's a single cheap `[net, io, proc]` tool (append one JSONL line).
  • `refactor_dynamic_tools()` had the identical gap against its own declared `refactor_permission()`, which explicitly lists `"remember"` in its allowlist.
  • Net effect: a local-model build or refactor agent could never call `remember`, silently defeating the memory system's propose step for the provider path most of this project's local dogfooding actually uses.

Fixes #110

Test plan

  • `lex check src/tools/index.lex` — ok
  • `lex fmt --check` — formatted
  • Full repo sweep (`lex check` over every tracked `.lex` file) — all pass
  • `lex test` — 4/4 passed
  • `lex doc-sync --check` — current
  • Confirmed via live ACP session before this fix: a local model (qwen3.8:27b-mlx via litellm) instructed to call `remember` correctly reported it had no such tool, listing exactly `minimal_tools() + load_toolset`'s names — proving the gap rather than a model-reliability issue

minimal_tools() (and therefore dynamic_tools(), the toolset every
litellm/ollama/vllm-backed agent variant actually gets) never included
remember_tool, despite build_permission() allowing it unconditionally.
refactor_dynamic_tools() had the same gap against its own
refactor_permission(), which explicitly lists "remember". A local-model
agent had no way to propose a memory candidate at all — confirmed live,
the model correctly reported it had no such tool and declined to
fabricate a call rather than hallucinate one.

Adds remember_tool.tool() to both lists. It's a single [net, io, proc]
tool that appends one JSONL line (candidates.lex), cheap enough for the
curated core rather than needing load_toolset gating.

Fixes #110
@alpibrupa
alpibrupa merged commit 023d886 into main Sep 4, 2026
1 check passed
@alpibrupa
alpibrupa deleted the fix-local-toolset-remember branch September 4, 2026 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Local-model toolset (dynamic_tools) never exposes the remember tool

1 participant