feat: add send_file built-in tool to send files from sandbox to Telegram#42
Merged
Conversation
…n, size check order, deviation note
…d(0), Context import, optional caption, tool ordering
- Remove two-layer SkillRegistry (instance + bundled with SkillSource) - Embed skills/ and agents/ at compile time via include_dir crate - Simplify SkillRegistry to single-layer skills map - Remove src/bin/setup.rs and setup.sh (use rustfox --setup instead) - Fix web wizard JS to only emit [skills]/[agents] when user provides values - Fix /update-skills to backup modified files before overwriting - Remove bundled_directory from SkillsConfig/AgentsConfig - Fix all reload handlers to use full registry replacement
- Extract format_listed_section() shared preamble helper used by both build_context() (skills) and the new Available Agents section builder. - Rename build_subagent_context -> build_subagent_lines for accuracy. - Extract format_available_agents_section() pure function with 5 unit tests. - Remove redundant early return in build_agents_context(). - Update invoke_agent tool description to reference unified section. - Fix stale invoke_subagent references in news-fetcher/problem-solver skills.
…-binary' into feat/send-file-from-sandbox
…re into docs/ - README.md: trimmed 449→135 lines — hero, 8 feature bullets, 4-step quick start, key config, tool overview, architecture link, contributing footer - docs/GUIDE.md (new): full reference — all config settings, MCP servers, 7 tool categories, wired commands, skills/agents, advanced features, roadmap, dependencies - docs/ARCHITECTURE.md (new): source tree, data flow diagram, component table, agentic loop explanation - Fixed config key: memory.user_model_path → learning.user_model_path - Added memory tools (remember, recall, search_memory) to tool reference - Supervisor commands correctly marked as 'Planned' (not yet dispatched) - Spec doc reviewed and approved via spec-document-reviewer subagent
…hotai/kimi-k2.6 The actual default model in config.rs is moonshotai/kimi-k2.6. qwen/qwen3-embedding-8b references are correct (embedding model).
Replaces the one-liner with a structured problem/solution description following Option D per user's choice.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
send_filebuilt-in tool allowing the AI agent to send files from the sandbox to the Telegram uservalidate_sandbox_path()include_dircrate (no more CWD-relative path issues for systemd service)SkillRegistry(instance + bundled withSkillSource) — simplified to single-layersrc/bin/setup.rsandsetup.sh— userustfox --setupinstead[skills]/[agents]sections when user provides non-empty values/update-skillsto backup modified files before overwriting (creates.bak)bundled_directoryfromSkillsConfig/AgentsConfig— paths resolve under home byConfig::resolveWhat Changed
src/tools.rsvalidate_sandbox_pathpub; addedsend_fileToolDefinitionsrc/agent.rssend_fileexecution arm with Telegramsend_documentAPI call,ChatIdplumbing; simplified SkillRegistry to single-layer; unified Available Agents sectionsrc/platform/tool_notifier.rs"📤 Sending a file"friendly namesrc/skills/mod.rsSkillSourceenum; simplifiedSkillRegistryto singleskillsHashMap; extracted shared preamble helpersrc/skills/embed.rsinclude_dir!with seed + overwrite (backup) supportsrc/skills/loader.rsSkillSource)src/skills/seed.rssrc/skills/update.rssrc/config.rsbundled_directoryfromSkillsConfig/AgentsConfigsrc/main.rsembed::seed_*instead ofseed::seed_dir_if_emptysrc/platform/telegram.rs/update-skillsusesembed::overwrite_*with backup reportsrc/learning.rsload_skills_from_dircalls to single-dir signaturesrc/supervisor/classifier.rsSkillRegistry::registercall (noSkillSource)tests/supervisor_skill_packs.rsload_skills_from_dircall (noSkillSource)src/setup/wizard.rs[skills] directory = "skills"; updated default model to kimi-k2.6src/setup/service.rs{{RUSTFOX_PATH}}placeholder for systemd templatesetup.shrustfox --setupsrc/bin/setup.rsrustfox --setupskills-lock.jsonCargo.tomlinclude_dirdependencyconfig.example.tomlbundled_directoryreferencesscripts/services/rustfox.service.templatesetup/index.html[skills]/[agents]when user provides non-empty valuesskills/news-fetcher/SKILL.mdinvoke_subagent→invoke_agentreferencesskills/problem-solver/SKILL.mdinvoke_subagent→invoke_agentreferencesTest Plan
cargo build --release— builds cleancargo clippy -- -D warnings— no warningscargo fmt --check— formatting cleancargo test— 378 tests pass