You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* test(tools): RED tests for configurable LLM tool list
Add failing tests that define the contract for a new tools configuration
section:
- internal/config/tools_test.go: ToolConfig loading from global/project
config, env vars (ODEK_TOOLS_ENABLED/DISABLED), and CLI flags. Project
config may only disable tools, not enable them.
- internal/tool/filter_test.go: ToolFilter whitelist/blacklist semantics,
required-tool preservation, and unknown-name tolerance.
- cmd/odek/run_flags_tools_test.go: --tool/--no-tool CLI flag parsing.
* feat(tools): configurable LLM tool list via tools config, env, and --tool/--no-tool
Add a new config section with (whitelist) and
(blacklist) plus CLI flags / and env vars
/ . This supports deployments
where odek should only expose a subset of tools, e.g. a chatbot with
web_search + voice but no shell or file writes.
Key changes:
- internal/config/loader.go: ToolConfig/ToolsConfig types, file/env/CLI
merge logic, and project-level security restriction (project config can
only disable, never enable).
- internal/tool/registry.go: FilterTools helper with whitelist/blacklist
and required-tool preservation.
- odek.go: ToolFilterConfig on Config; memory tool is no longer appended
unconditionally — it respects the filter.
- cmd/odek/*.go: wire filtering into run, continue, repl, serve, telegram,
subagent, schedule, and mcp surfaces.
- Docs and help text updated with examples and env vars.
Tests:
- internal/config/tools_test.go
- internal/tool/filter_test.go
- cmd/odek/run_flags_tools_test.go
- odek_test.go memory-filter regression tests
All existing tests pass.
* docs(tools): add TOOL_SELECTION.md user guide
Explain default behaviour (all tools registered), the four configuration
layers, whitelist vs blacklist semantics, security restriction on project
config, and concrete deployment examples (chatbot, read-only research,
locked-down CI, memory disable). Include the full tool-name reference table.
* docs(tools): add ChatBot example and clarify Telegram-only tools
Replace the confusing CLI chatbot example (which mixed whitelist and
blacklist and referenced Telegram-only send_message) with a clear ChatBot
config example suitable for ~/.odek/config.json and odek serve. Explain
why each tool is included and note that send_message/clarify are only
auto-injected by odek telegram.
* docs(tools): clarify session tool surface
Only session_search is exposed to the LLM; session management is handled
by the odek session CLI command and --session/--continue flags.
* fix(tools): apply filter after MCP tools, clean up config template and signatures
- Remove empty tools block from default config template so odek config init
does not disable every tool.
- Apply tools.enabled/tools.disabled after MCP tools are loaded so MCP tool
names can be filtered too (run, continue, repl, serve, subagent, mcp, schedule).
- Correct ToolFilter comment to reflect that it only filters auto-registered
tools, not caller-supplied Tools.
- Return explicit errors for serve --tool/--no-tool without values.
- Make FilterTools whitelist order deterministic.
- Remove unused sliceContains helper and stale RED-test comments.
- Document --tool/--no-tool for serve and repl in docs/CLI.md.
- Flatten filterBuiltinTools variadic signature.
- Add serve-mode tool flag parsing tests.
0 commit comments