Undefined-bot 3.8.0__tar.gz → 3.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/CHANGELOG.md +12 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/PKG-INFO +1 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config.toml.example +11 -2
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/pyproject.toml +1 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/__init__.py +1 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/config_class.py +3 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/env_registry.py +3 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/hot_reload.py +3 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/network.py +44 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/render.py +96 -8
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/README.md +2 -2
- undefined_bot-3.8.1/src/Undefined/skills/toolsets/render/README.md +14 -0
- undefined_bot-3.8.1/src/Undefined/skills/toolsets/render/layout.py +171 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_html/config.json +20 -2
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_html/handler.py +14 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_latex/config.json +2 -2
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_latex/handler.py +8 -117
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_markdown/config.json +19 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +14 -1
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/io.py +14 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/render_cache.py +15 -5
- undefined_bot-3.8.0/src/Undefined/skills/toolsets/render/README.md +0 -11
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/.gitignore +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/ARCHITECTURE.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/LICENSE +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config/mcp.json.example +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/img/xlwy.jpg +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/IMPORTANT/each.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/agent_self_intro.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/analyze_multimodal.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/describe_image.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/describe_meme_image.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/generate_title.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/historian_profile_merge.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/historian_rewrite.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/image_gen_moderation.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/injection_detector.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/injection_response_agent.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/judge_meme_image.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/merge_message_summaries.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/merge_summaries.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/message_summary.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/naga_message_moderation.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/stats_analysis.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/summarize.txt +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/undefined.xml +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/undefined_nagaagent.xml +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/__main__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/ask_loop.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/queue.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/setup.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/crawl4ai_support.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/http.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/requester.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/sanitize.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/streaming.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/thinking.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/types.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/model_selector.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/analyzer.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/constants.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/detection.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/parsing.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/parsing.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/builder.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/cognitive.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/constants.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/current_input.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/system_context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/system_info.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/queue_budget.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/retrieval.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/summaries.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tokens.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tool_search.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tooling.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/anthropic_transport.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/openai_transport.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/replay.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_helpers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_naga_state.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_openapi.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_probes.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/app.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/naga_store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/chat.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/cognitive.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/commands.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/health.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/memes.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/memory.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/auth.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/bind.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/send.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/unbind.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/schedules.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/system.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/tools.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/webchat_store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/downloader.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/parser.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/sender.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/forward_snapshot.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/render.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/segments.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/api_client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/danmaku.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/download_core.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/downloader.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/errors.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/parser.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/sender.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/wbi.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/wbi_request.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/changelog.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/chroma_scheduler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/helpers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/tools.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/worker.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/job_queue.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/profile_storage.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/helpers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/service.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/vector_store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/vector_store_compat.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/admin.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/api_modes.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/build_config.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/coercers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/domain_parsers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/access.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/core.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/domains.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/finalize.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/history_skills.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/integrations.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/knowledge.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/logging_tools.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/loader.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/manager.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/model_parsers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/naga_policy.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/agent.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/chat.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/embedding.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/grok.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/helpers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/historian.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/image.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/naga.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/pool.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/security.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/summary.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/vision.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/resolvers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/search.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/toml_io.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/webui_settings.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/context_resource_registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/downloader.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/parser.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/sender.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/end_summary_storage.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/faq.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/parser.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/sender.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/auto_extract.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/message_flow.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/poke.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/repeat.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/injection_response_agent.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/chunker.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/embedder.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/manager.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/reranker.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/runtime.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/main.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/mcp/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/mcp/registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/_image_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/ingest.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/search.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/service.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/vector_store.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/worker.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memory.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/message.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/py.typed +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/rate_limit.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/scheduled_task_storage.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/command.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/bugfix.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/stats.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/background.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/batching.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/group.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/message_ids.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/private.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/scheduler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/state.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_summary_fetch.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/model_pool.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/queue_manager.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/security.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/intro_generator.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/intro_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/loop.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/tools.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/webchat_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/_shared.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/policy.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/summary/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/summary/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/version/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/version/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/http_client.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/http_config.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/arxiv/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/arxiv/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/bilibili/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/bilibili/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/context.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/douyin/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/douyin/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/github/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/github/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/models.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/registry.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/task_progress/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_avatar/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_avatar/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/activity_trend/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/activity_trend/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/filter_members/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/filter_members/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/join_statistics/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/join_statistics/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/level_distribution/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/level_distribution/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_activity/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_activity/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_messages/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_messages/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_structure/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_structure/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/message_mix/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/message_mix/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/rank_members/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/rank_members/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/search_memes/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/search_memes/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/context_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_message/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/token_usage_storage.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/cache.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/coerce.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/common.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/cors.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/fake_at.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/file_lock.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/group_metrics.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/history.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/http_download.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/logging.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/member_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_targets.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_turn.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/paths.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/qq_emoji.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/queue_intervals.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/recent_messages.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/request_params.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/resources.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/scheduler.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/self_update.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/sender.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/sender_helpers.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/time_utils.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/tool_calls.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/xml.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/__main__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/app.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/core.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_auth.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_bot.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_config.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_index.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_logs.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_memes.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_runtime.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_shared.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_system.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/app.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/base.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/components.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/highlight-github.min.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/landing.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/responsive.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/style.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/variables.css +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/favicon.svg +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/api.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/auth.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/bot.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/config-form.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/i18n.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/log-view.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/logs.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/main.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/memes.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/runtime.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/schedules.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/state.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/ui.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/highlight.min.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/highlightjs.LICENSE +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/templates/index.html +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/__init__.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/comment.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/config_io.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/config_sync.py +0 -0
- {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/toml_render.py +0 -0
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## v3.8.1 可配置长图渲染与浏览器运行时回退
|
|
2
|
+
|
|
3
|
+
本版本为 AI 渲染工具新增适合长内容发送的长图布局,可精确控制成图宽度与内边距;同时完善 Playwright 浏览器选择,在缺少内置浏览器时可使用已配置或系统安装的 Chrome / Chromium 完成渲染。
|
|
4
|
+
|
|
5
|
+
- 扩展 `render.render_html` 与 `render.render_markdown`。新增 `layout=long`、`width` 和 `padding` 参数;长图默认宽度为 900 像素、内边距为 28 像素,并可通过 `[network]` 配置统一调整。默认布局保持原有行为,避免影响现有调用。
|
|
6
|
+
- 优化长图版式与输出尺寸。长图模式移除页面外部留白和 Markdown 内容最大宽度限制,使正文填满指定画布;截图使用 CSS 像素缩放,最终图片宽度与请求的 `width` 一致,便于聊天平台直接预览和发送。
|
|
7
|
+
- 完善渲染浏览器选择。新增 `render_browser_executable_path` 配置;Playwright 内置浏览器缺失时自动探测系统 Chrome / Chromium,显式配置路径无效或其他启动错误仍会直接报告,避免掩盖真实故障。
|
|
8
|
+
- 收紧 HTML 渲染网络边界。BrowserContext 强制离线、禁用 Service Worker,并在上下文级终止全部网络请求,不再依赖可被 DNS 重绑定绕过的主机名预检;内联 CSS、脚本及 `data:` / `blob:` 资源仍可使用。LaTeX 同步收敛为本地 mathtext 渲染,复杂且不受支持的 TeX 不再等待外部 MathJax CDN。
|
|
9
|
+
- 加固渲染缓存与配置集成。缓存键纳入截图缩放和样式参数,避免不同布局错误复用缓存;同步环境变量、热更新边界、配置模板、部署与使用文档,并补充长图参数、缓存隔离、浏览器回退和实际渲染回归测试。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
1
13
|
## v3.8.0 多协议 LLM SDK、推理回放与 WebUI 可用性
|
|
2
14
|
|
|
3
15
|
本版本重构生成模型请求层,统一 OpenAI Chat Completions、OpenAI Responses 与 Anthropic Messages 的 SDK 调用和配置语义,补全多轮工具调用中的原生推理载体回放,并修复 WebUI 配置编辑器与多行日志查询的可用性问题。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Undefined-bot
|
|
3
|
-
Version: 3.8.
|
|
3
|
+
Version: 3.8.1
|
|
4
4
|
Summary: QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11.
|
|
5
5
|
Project-URL: Repository, https://github.com/69gg/Undefined
|
|
6
6
|
Project-URL: Issues, https://github.com/69gg/Undefined/issues
|
|
@@ -1095,12 +1095,21 @@ request_retries = 0
|
|
|
1095
1095
|
# zh: HTML/Markdown 图片渲染配置。
|
|
1096
1096
|
# en: HTML/Markdown image rendering settings.
|
|
1097
1097
|
[render]
|
|
1098
|
-
# zh: 是否让 crawl4ai
|
|
1099
|
-
# en: Whether crawl4ai and
|
|
1098
|
+
# zh: 是否让 crawl4ai 等网页抓取链路使用 [proxy] 代理地址。HTML/Markdown 浏览器渲染始终离线。默认关闭。
|
|
1099
|
+
# en: Whether crawl4ai and other web crawling paths use proxy addresses from [proxy]. HTML/Markdown browser rendering is always offline. Disabled by default.
|
|
1100
1100
|
use_proxy = false
|
|
1101
1101
|
# zh: 渲染浏览器最大同时开启数量。0 表示自动:Linux 默认 1,其它平台默认 2。
|
|
1102
1102
|
# en: Max concurrent render browser pages. 0 = auto: Linux defaults to 1, other platforms default to 2.
|
|
1103
1103
|
browser_max_concurrency = 0
|
|
1104
|
+
# zh: 可选的 Chrome/Chromium 可执行文件路径。留空时优先使用 Playwright 自带浏览器,缺失时再自动查找系统浏览器。
|
|
1105
|
+
# en: Optional Chrome/Chromium executable path. Empty prefers Playwright's bundled browser, then discovers an installed system browser if missing.
|
|
1106
|
+
browser_executable_path = ""
|
|
1107
|
+
# zh: render_html/render_markdown 的 long 布局未显式传 width 时使用的最终图片宽度(像素,320-2048)。
|
|
1108
|
+
# en: Final image width used by the long layout when width is omitted (pixels, 320-2048).
|
|
1109
|
+
long_image_default_width = 900
|
|
1110
|
+
# zh: long 布局未显式传 padding 时使用的内边距(像素,0-160)。
|
|
1111
|
+
# en: Content padding used by the long layout when padding is omitted (pixels, 0-160).
|
|
1112
|
+
long_image_default_padding = 28
|
|
1104
1113
|
|
|
1105
1114
|
# zh: HTML 渲染结果缓存:基于 HTML 内容 hash 复用同一张图片,避免重复渲染。
|
|
1106
1115
|
# en: HTML render result cache: reuse rendered images by content hash to skip re-rendering.
|
|
@@ -24,7 +24,7 @@ if TYPE_CHECKING:
|
|
|
24
24
|
from .skills.registry import BaseRegistry as BaseRegistry
|
|
25
25
|
from .skills.tools import ToolRegistry as ToolRegistry
|
|
26
26
|
|
|
27
|
-
__version__: str = "3.8.
|
|
27
|
+
__version__: str = "3.8.1"
|
|
28
28
|
|
|
29
29
|
# symbol -> (module_path, attribute_name);首次访问时才 importlib 加载
|
|
30
30
|
_LAZY_IMPORTS: dict[str, tuple[str, str]] = {
|
|
@@ -123,7 +123,10 @@ class Config:
|
|
|
123
123
|
network_request_timeout: float
|
|
124
124
|
network_request_retries: int
|
|
125
125
|
render_browser_max_concurrency: int
|
|
126
|
+
render_browser_executable_path: str
|
|
126
127
|
render_use_proxy: bool
|
|
128
|
+
render_long_image_default_width: int
|
|
129
|
+
render_long_image_default_padding: int
|
|
127
130
|
api_xxapi_base_url: str
|
|
128
131
|
api_xingzhige_base_url: str
|
|
129
132
|
api_jkyai_base_url: str
|
|
@@ -116,6 +116,9 @@ ENV_REGISTRY: Final[dict[tuple[str, ...], str]] = {
|
|
|
116
116
|
("naga", "use_proxy"): "NAGA_USE_PROXY",
|
|
117
117
|
("onebot", "token"): "ONEBOT_TOKEN",
|
|
118
118
|
("onebot", "ws_url"): "ONEBOT_WS_URL",
|
|
119
|
+
("render", "browser_executable_path"): "RENDER_BROWSER_EXECUTABLE_PATH",
|
|
120
|
+
("render", "long_image_default_padding"): "RENDER_LONG_IMAGE_DEFAULT_PADDING",
|
|
121
|
+
("render", "long_image_default_width"): "RENDER_LONG_IMAGE_DEFAULT_WIDTH",
|
|
119
122
|
("render", "use_proxy"): "RENDER_USE_PROXY",
|
|
120
123
|
("search", "use_proxy"): "SEARCH_USE_PROXY",
|
|
121
124
|
("search", "firecrawl_search_enabled"): "FIRECRAWL_SEARCH_ENABLED",
|
|
@@ -32,6 +32,7 @@ _RESTART_REQUIRED_KEYS: set[str] = {
|
|
|
32
32
|
"webui_port",
|
|
33
33
|
"webui_password",
|
|
34
34
|
"webui_autostart_bot",
|
|
35
|
+
"render_browser_executable_path",
|
|
35
36
|
"api",
|
|
36
37
|
"api.enabled",
|
|
37
38
|
"api.host",
|
|
@@ -79,6 +80,8 @@ _RUNTIME_AI_MODEL_CONFIG_PREFIXES: tuple[str, ...] = (
|
|
|
79
80
|
"tool_search_enabled",
|
|
80
81
|
"tool_search_always_loaded",
|
|
81
82
|
"tool_search_max_results",
|
|
83
|
+
"render_long_image_default_width",
|
|
84
|
+
"render_long_image_default_padding",
|
|
82
85
|
)
|
|
83
86
|
|
|
84
87
|
_AGENT_INTRO_KEYS: set[str] = {
|
|
@@ -23,6 +23,10 @@ from ..search import normalize_search_priority
|
|
|
23
23
|
|
|
24
24
|
logger = logging.getLogger(__name__)
|
|
25
25
|
|
|
26
|
+
_LONG_IMAGE_MIN_WIDTH: int = 320
|
|
27
|
+
_LONG_IMAGE_MAX_WIDTH: int = 2048
|
|
28
|
+
_LONG_IMAGE_MAX_PADDING: int = 160
|
|
29
|
+
|
|
26
30
|
|
|
27
31
|
def load_network(
|
|
28
32
|
data: dict[str, Any], *, config_path: Optional[Path] = None
|
|
@@ -127,9 +131,46 @@ def load_network(
|
|
|
127
131
|
0,
|
|
128
132
|
),
|
|
129
133
|
)
|
|
134
|
+
render_browser_executable_path = _coerce_str(
|
|
135
|
+
_get_value(
|
|
136
|
+
data,
|
|
137
|
+
("render", "browser_executable_path"),
|
|
138
|
+
"RENDER_BROWSER_EXECUTABLE_PATH",
|
|
139
|
+
),
|
|
140
|
+
"",
|
|
141
|
+
)
|
|
130
142
|
render_use_proxy = _coerce_bool(
|
|
131
143
|
_get_value(data, ("render", "use_proxy"), "RENDER_USE_PROXY"), False
|
|
132
144
|
)
|
|
145
|
+
render_long_image_default_width = min(
|
|
146
|
+
_LONG_IMAGE_MAX_WIDTH,
|
|
147
|
+
max(
|
|
148
|
+
_LONG_IMAGE_MIN_WIDTH,
|
|
149
|
+
_coerce_int(
|
|
150
|
+
_get_value(
|
|
151
|
+
data,
|
|
152
|
+
("render", "long_image_default_width"),
|
|
153
|
+
"RENDER_LONG_IMAGE_DEFAULT_WIDTH",
|
|
154
|
+
),
|
|
155
|
+
900,
|
|
156
|
+
),
|
|
157
|
+
),
|
|
158
|
+
)
|
|
159
|
+
render_long_image_default_padding = min(
|
|
160
|
+
_LONG_IMAGE_MAX_PADDING,
|
|
161
|
+
max(
|
|
162
|
+
0,
|
|
163
|
+
_coerce_int(
|
|
164
|
+
_get_value(
|
|
165
|
+
data,
|
|
166
|
+
("render", "long_image_default_padding"),
|
|
167
|
+
"RENDER_LONG_IMAGE_DEFAULT_PADDING",
|
|
168
|
+
),
|
|
169
|
+
28,
|
|
170
|
+
),
|
|
171
|
+
),
|
|
172
|
+
(render_long_image_default_width - 1) // 2,
|
|
173
|
+
)
|
|
133
174
|
|
|
134
175
|
api_xxapi_base_url = _normalize_base_url(
|
|
135
176
|
_coerce_str(
|
|
@@ -194,7 +235,10 @@ def load_network(
|
|
|
194
235
|
"network_request_timeout": network_request_timeout,
|
|
195
236
|
"network_request_retries": network_request_retries,
|
|
196
237
|
"render_browser_max_concurrency": render_browser_max_concurrency,
|
|
238
|
+
"render_browser_executable_path": render_browser_executable_path,
|
|
197
239
|
"render_use_proxy": render_use_proxy,
|
|
240
|
+
"render_long_image_default_width": render_long_image_default_width,
|
|
241
|
+
"render_long_image_default_padding": render_long_image_default_padding,
|
|
198
242
|
"api_xxapi_base_url": api_xxapi_base_url,
|
|
199
243
|
"api_xingzhige_base_url": api_xingzhige_base_url,
|
|
200
244
|
"api_jkyai_base_url": api_jkyai_base_url,
|
|
@@ -5,13 +5,14 @@ import logging
|
|
|
5
5
|
import sys
|
|
6
6
|
from collections.abc import Awaitable, Callable
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from
|
|
8
|
+
from typing import Any, Literal, TypeVar
|
|
9
9
|
|
|
10
10
|
import markdown
|
|
11
|
+
from playwright.async_api import Browser, Page, Playwright, Route, async_playwright
|
|
11
12
|
|
|
12
|
-
from typing import Any, TypeVar
|
|
13
13
|
|
|
14
14
|
from Undefined.config import get_config
|
|
15
|
+
from Undefined.utils.io import find_executable, is_file, resolve_path
|
|
15
16
|
from Undefined.utils.render_cache import compute_render_cache_key, get_render_cache
|
|
16
17
|
|
|
17
18
|
logger = logging.getLogger(__name__)
|
|
@@ -59,6 +60,13 @@ _render_active_count = 0
|
|
|
59
60
|
|
|
60
61
|
# 默认并发限制:Linux 默认 1,其它平台默认 2
|
|
61
62
|
_DEFAULT_MAX_CONCURRENT = 1 if sys.platform == "linux" else 2
|
|
63
|
+
_SYSTEM_CHROMIUM_COMMANDS = (
|
|
64
|
+
"google-chrome-stable",
|
|
65
|
+
"google-chrome",
|
|
66
|
+
"chromium",
|
|
67
|
+
"chromium-browser",
|
|
68
|
+
"microsoft-edge-stable",
|
|
69
|
+
)
|
|
62
70
|
_RenderResult = TypeVar("_RenderResult")
|
|
63
71
|
|
|
64
72
|
|
|
@@ -89,6 +97,40 @@ def _resolve_render_browser_max_concurrency() -> int:
|
|
|
89
97
|
return configured_limit
|
|
90
98
|
|
|
91
99
|
|
|
100
|
+
async def _resolve_configured_browser_executable() -> str | None:
|
|
101
|
+
"""读取显式配置的浏览器路径;配置错误时不静默回退。"""
|
|
102
|
+
try:
|
|
103
|
+
runtime_config = get_config(strict=False)
|
|
104
|
+
except Exception:
|
|
105
|
+
logger.debug("[渲染] 读取浏览器路径配置失败", exc_info=True)
|
|
106
|
+
return None
|
|
107
|
+
|
|
108
|
+
configured = str(
|
|
109
|
+
getattr(runtime_config, "render_browser_executable_path", "") or ""
|
|
110
|
+
).strip()
|
|
111
|
+
if not configured:
|
|
112
|
+
return None
|
|
113
|
+
|
|
114
|
+
path = await resolve_path(configured)
|
|
115
|
+
if not await is_file(path):
|
|
116
|
+
raise FileNotFoundError(f"配置的渲染浏览器不存在: {path}")
|
|
117
|
+
return str(path)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
async def _find_system_browser_executable() -> str | None:
|
|
121
|
+
"""在 Playwright 自带 Chromium 缺失时查找已安装的系统浏览器。"""
|
|
122
|
+
for command in _SYSTEM_CHROMIUM_COMMANDS:
|
|
123
|
+
executable = await find_executable(command)
|
|
124
|
+
if executable:
|
|
125
|
+
return executable
|
|
126
|
+
return None
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _is_missing_playwright_browser(error: BaseException) -> bool:
|
|
130
|
+
text = str(error)
|
|
131
|
+
return "Executable doesn't exist" in text or "playwright install" in text
|
|
132
|
+
|
|
133
|
+
|
|
92
134
|
async def _get_browser() -> Browser:
|
|
93
135
|
"""获取或创建浏览器实例(懒加载单例)"""
|
|
94
136
|
global _playwright, _browser
|
|
@@ -100,9 +142,32 @@ async def _get_browser() -> Browser:
|
|
|
100
142
|
if _browser is not None:
|
|
101
143
|
return _browser
|
|
102
144
|
|
|
145
|
+
configured_executable = await _resolve_configured_browser_executable()
|
|
103
146
|
playwright = await async_playwright().start()
|
|
104
147
|
try:
|
|
105
|
-
|
|
148
|
+
if configured_executable is not None:
|
|
149
|
+
browser = await playwright.chromium.launch(
|
|
150
|
+
headless=True,
|
|
151
|
+
executable_path=configured_executable,
|
|
152
|
+
)
|
|
153
|
+
else:
|
|
154
|
+
try:
|
|
155
|
+
browser = await playwright.chromium.launch(headless=True)
|
|
156
|
+
except Exception as exc:
|
|
157
|
+
system_executable = await _find_system_browser_executable()
|
|
158
|
+
if (
|
|
159
|
+
not _is_missing_playwright_browser(exc)
|
|
160
|
+
or system_executable is None
|
|
161
|
+
):
|
|
162
|
+
raise
|
|
163
|
+
logger.warning(
|
|
164
|
+
"[render] Playwright Chromium 未安装,回退到系统浏览器: %s",
|
|
165
|
+
system_executable,
|
|
166
|
+
)
|
|
167
|
+
browser = await playwright.chromium.launch(
|
|
168
|
+
headless=True,
|
|
169
|
+
executable_path=system_executable,
|
|
170
|
+
)
|
|
106
171
|
except Exception:
|
|
107
172
|
await playwright.stop()
|
|
108
173
|
raise
|
|
@@ -206,6 +271,8 @@ async def render_html_to_image(
|
|
|
206
271
|
*,
|
|
207
272
|
viewport_width: int = 1280,
|
|
208
273
|
screenshot_selector: str | None = None,
|
|
274
|
+
screenshot_scale: Literal["css", "device"] = "device",
|
|
275
|
+
screenshot_style: str | None = None,
|
|
209
276
|
timeout_ms: int = 60000,
|
|
210
277
|
proxy: str | None = None,
|
|
211
278
|
) -> None:
|
|
@@ -217,12 +284,19 @@ async def render_html_to_image(
|
|
|
217
284
|
output_path: 输出图片路径 (例如 'result.png')
|
|
218
285
|
viewport_width: 视口宽度(像素),默认 1280
|
|
219
286
|
screenshot_selector: 仅截图匹配的元素,默认截整页
|
|
287
|
+
screenshot_scale: 输出像素尺度,device 按 DPR 输出,css 按 CSS 像素输出
|
|
288
|
+
screenshot_style: 仅在截图期间注入的 CSS 样式
|
|
220
289
|
timeout_ms: 截图超时时间(毫秒),默认 60000
|
|
221
|
-
proxy:
|
|
290
|
+
proxy: 保留用于调用兼容和缓存隔离;离线上下文不会发出网络请求
|
|
222
291
|
"""
|
|
223
292
|
cache = await get_render_cache()
|
|
224
293
|
cache_key = compute_render_cache_key(
|
|
225
|
-
html_content,
|
|
294
|
+
html_content,
|
|
295
|
+
viewport_width,
|
|
296
|
+
screenshot_selector,
|
|
297
|
+
proxy,
|
|
298
|
+
screenshot_scale,
|
|
299
|
+
screenshot_style,
|
|
226
300
|
)
|
|
227
301
|
|
|
228
302
|
if await cache.copy_to(cache_key, output_path):
|
|
@@ -234,12 +308,16 @@ async def render_html_to_image(
|
|
|
234
308
|
if screenshot_selector:
|
|
235
309
|
await page.locator(screenshot_selector).first.screenshot(
|
|
236
310
|
path=output_path,
|
|
311
|
+
scale=screenshot_scale,
|
|
312
|
+
style=screenshot_style,
|
|
237
313
|
timeout=timeout_ms,
|
|
238
314
|
)
|
|
239
315
|
else:
|
|
240
316
|
await page.screenshot(
|
|
241
317
|
path=output_path,
|
|
242
318
|
full_page=True,
|
|
319
|
+
scale=screenshot_scale,
|
|
320
|
+
style=screenshot_style,
|
|
243
321
|
timeout=timeout_ms,
|
|
244
322
|
)
|
|
245
323
|
|
|
@@ -264,7 +342,11 @@ async def render_html_with_page(
|
|
|
264
342
|
timeout_ms: int = 60000,
|
|
265
343
|
proxy: str | None = None,
|
|
266
344
|
) -> _RenderResult:
|
|
267
|
-
"""在共享浏览器实例中打开 HTML 页面并交给调用方渲染。
|
|
345
|
+
"""在共享浏览器实例中打开 HTML 页面并交给调用方渲染。
|
|
346
|
+
|
|
347
|
+
``proxy`` 在移出 ``context_kwargs`` 后仍刻意保留,以兼容现有调用;上层
|
|
348
|
+
``render_html_to_image`` 继续用它隔离缓存键,离线浏览器上下文不会使用它。
|
|
349
|
+
"""
|
|
268
350
|
browser = await _get_browser()
|
|
269
351
|
semaphore = await _get_semaphore()
|
|
270
352
|
|
|
@@ -276,11 +358,12 @@ async def render_html_with_page(
|
|
|
276
358
|
try:
|
|
277
359
|
context_kwargs: dict[str, Any] = {
|
|
278
360
|
"device_scale_factor": 2,
|
|
361
|
+
"offline": True,
|
|
362
|
+
"service_workers": "block",
|
|
279
363
|
"viewport": {"width": viewport_width, "height": 800},
|
|
280
364
|
}
|
|
281
|
-
if proxy:
|
|
282
|
-
context_kwargs["proxy"] = {"server": proxy}
|
|
283
365
|
context = await browser.new_context(**context_kwargs)
|
|
366
|
+
await context.route("**/*", _abort_render_network_request)
|
|
284
367
|
page = await context.new_page()
|
|
285
368
|
page.set_default_timeout(timeout_ms)
|
|
286
369
|
await page.set_content(html_content)
|
|
@@ -291,3 +374,8 @@ async def render_html_with_page(
|
|
|
291
374
|
await context.close()
|
|
292
375
|
finally:
|
|
293
376
|
_render_active_count = max(0, _render_active_count - 1)
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
async def _abort_render_network_request(route: Route) -> None:
|
|
380
|
+
"""终止渲染上下文中的所有网络请求,避免 DNS 重绑定绕过。"""
|
|
381
|
+
await route.abort()
|
|
@@ -135,9 +135,9 @@ async def execute(args: dict[str, Any], context: dict[str, Any]) -> str:
|
|
|
135
135
|
|
|
136
136
|
### Render(渲染)
|
|
137
137
|
|
|
138
|
-
- `render.render_html`: 将 HTML
|
|
138
|
+
- `render.render_html`: 将 HTML 渲染为普通图片或指定宽度的单张长图
|
|
139
139
|
- `render.render_latex`: 将 LaTeX 渲染为图片;常见公式本地渲染,复杂内容回退 MathJax + Playwright
|
|
140
|
-
- `render.render_markdown`: 将 Markdown
|
|
140
|
+
- `render.render_markdown`: 将 Markdown 渲染为普通图片或指定宽度的单张长图
|
|
141
141
|
|
|
142
142
|
### Memes(表情包)
|
|
143
143
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# render 工具集
|
|
2
|
+
|
|
3
|
+
渲染相关工具集合,工具名以 `render.*` 命名。
|
|
4
|
+
|
|
5
|
+
主要能力:
|
|
6
|
+
- HTML 渲染,支持内联 CSS、脚本和 `data:` / `blob:` 资源;浏览器上下文默认完全离线,不加载外部资源
|
|
7
|
+
- Markdown 渲染
|
|
8
|
+
- LaTeX 渲染
|
|
9
|
+
- HTML/Markdown 可显式传 `layout=long`、`width`、`padding` 输出无两侧外部留白的单张长图
|
|
10
|
+
|
|
11
|
+
`layout=default` 保持原有布局。`layout=long` 时,`width` 是最终图片像素宽度,高度按内容自动延伸;`padding=0` 可用于 HTML 全幅设计。
|
|
12
|
+
|
|
13
|
+
目录结构:
|
|
14
|
+
- 每个子目录对应一个工具(`config.json` + `handler.py`)
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Literal, Mapping
|
|
5
|
+
|
|
6
|
+
RenderContentKind = Literal["html", "markdown"]
|
|
7
|
+
RenderLayoutName = Literal["default", "long"]
|
|
8
|
+
|
|
9
|
+
MIN_LONG_IMAGE_WIDTH = 320
|
|
10
|
+
MAX_LONG_IMAGE_WIDTH = 2048
|
|
11
|
+
MAX_LONG_IMAGE_PADDING = 160
|
|
12
|
+
DEFAULT_LONG_IMAGE_WIDTH = 900
|
|
13
|
+
DEFAULT_LONG_IMAGE_PADDING = 28
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass(frozen=True)
|
|
17
|
+
class RenderLayoutOptions:
|
|
18
|
+
"""已校验的渲染布局选项。"""
|
|
19
|
+
|
|
20
|
+
layout: RenderLayoutName
|
|
21
|
+
viewport_width: int | None = None
|
|
22
|
+
screenshot_scale: Literal["css", "device"] = "device"
|
|
23
|
+
screenshot_style: str | None = None
|
|
24
|
+
|
|
25
|
+
def render_kwargs(self) -> dict[str, Any]:
|
|
26
|
+
"""仅为长图返回额外参数,保持默认调用完全兼容。"""
|
|
27
|
+
if self.layout == "default":
|
|
28
|
+
return {}
|
|
29
|
+
return {
|
|
30
|
+
"viewport_width": self.viewport_width,
|
|
31
|
+
"screenshot_scale": self.screenshot_scale,
|
|
32
|
+
"screenshot_style": self.screenshot_style,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _config_int(context: Mapping[str, Any], attribute: str, fallback: int) -> int:
|
|
37
|
+
runtime_config = context.get("runtime_config")
|
|
38
|
+
raw_value = getattr(runtime_config, attribute, fallback)
|
|
39
|
+
if isinstance(raw_value, bool):
|
|
40
|
+
return fallback
|
|
41
|
+
try:
|
|
42
|
+
return int(raw_value)
|
|
43
|
+
except (TypeError, ValueError):
|
|
44
|
+
return fallback
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _parse_explicit_int(
|
|
48
|
+
value: Any,
|
|
49
|
+
*,
|
|
50
|
+
name: str,
|
|
51
|
+
minimum: int,
|
|
52
|
+
maximum: int,
|
|
53
|
+
) -> tuple[int | None, str | None]:
|
|
54
|
+
if isinstance(value, bool) or not isinstance(value, int):
|
|
55
|
+
return None, f"{name} 必须是整数"
|
|
56
|
+
if value < minimum or value > maximum:
|
|
57
|
+
return None, f"{name} 必须在 {minimum}..{maximum} 之间"
|
|
58
|
+
return value, None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _long_layout_style(content_kind: RenderContentKind, padding: int) -> str:
|
|
62
|
+
shared = """
|
|
63
|
+
html, body {
|
|
64
|
+
margin: 0 !important;
|
|
65
|
+
width: 100% !important;
|
|
66
|
+
min-width: 0 !important;
|
|
67
|
+
max-width: 100% !important;
|
|
68
|
+
overflow-x: hidden !important;
|
|
69
|
+
}
|
|
70
|
+
img, video, canvas, svg {
|
|
71
|
+
max-width: 100% !important;
|
|
72
|
+
}
|
|
73
|
+
"""
|
|
74
|
+
if content_kind == "markdown":
|
|
75
|
+
return (
|
|
76
|
+
shared
|
|
77
|
+
+ f"""
|
|
78
|
+
body {{
|
|
79
|
+
padding: 0 !important;
|
|
80
|
+
}}
|
|
81
|
+
.markdown-body {{
|
|
82
|
+
box-sizing: border-box !important;
|
|
83
|
+
width: 100% !important;
|
|
84
|
+
min-width: 0 !important;
|
|
85
|
+
max-width: none !important;
|
|
86
|
+
margin: 0 !important;
|
|
87
|
+
padding: {padding}px !important;
|
|
88
|
+
overflow-wrap: anywhere !important;
|
|
89
|
+
}}
|
|
90
|
+
.markdown-body pre {{
|
|
91
|
+
max-width: 100% !important;
|
|
92
|
+
white-space: pre-wrap !important;
|
|
93
|
+
overflow-wrap: anywhere !important;
|
|
94
|
+
}}
|
|
95
|
+
"""
|
|
96
|
+
)
|
|
97
|
+
return (
|
|
98
|
+
shared
|
|
99
|
+
+ f"""
|
|
100
|
+
body {{
|
|
101
|
+
box-sizing: border-box !important;
|
|
102
|
+
padding: {padding}px !important;
|
|
103
|
+
}}
|
|
104
|
+
"""
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def resolve_render_layout(
|
|
109
|
+
args: Mapping[str, Any],
|
|
110
|
+
context: Mapping[str, Any],
|
|
111
|
+
*,
|
|
112
|
+
content_kind: RenderContentKind,
|
|
113
|
+
) -> tuple[RenderLayoutOptions | None, str | None]:
|
|
114
|
+
"""解析并校验工具的 default/long 布局参数。"""
|
|
115
|
+
layout_raw = str(args.get("layout", "default") or "default").strip().lower()
|
|
116
|
+
if layout_raw not in {"default", "long"}:
|
|
117
|
+
return None, f"layout 无效:{layout_raw}。仅支持 default 或 long"
|
|
118
|
+
|
|
119
|
+
has_width = args.get("width") is not None
|
|
120
|
+
has_padding = args.get("padding") is not None
|
|
121
|
+
if layout_raw == "default":
|
|
122
|
+
if has_width or has_padding:
|
|
123
|
+
return None, "width 和 padding 仅支持在 layout=long 时使用"
|
|
124
|
+
return RenderLayoutOptions(layout="default"), None
|
|
125
|
+
|
|
126
|
+
if has_width:
|
|
127
|
+
width, error = _parse_explicit_int(
|
|
128
|
+
args.get("width"),
|
|
129
|
+
name="width",
|
|
130
|
+
minimum=MIN_LONG_IMAGE_WIDTH,
|
|
131
|
+
maximum=MAX_LONG_IMAGE_WIDTH,
|
|
132
|
+
)
|
|
133
|
+
if error is not None or width is None:
|
|
134
|
+
return None, error
|
|
135
|
+
else:
|
|
136
|
+
width = _config_int(
|
|
137
|
+
context,
|
|
138
|
+
"render_long_image_default_width",
|
|
139
|
+
DEFAULT_LONG_IMAGE_WIDTH,
|
|
140
|
+
)
|
|
141
|
+
width = min(MAX_LONG_IMAGE_WIDTH, max(MIN_LONG_IMAGE_WIDTH, width))
|
|
142
|
+
|
|
143
|
+
if has_padding:
|
|
144
|
+
padding, error = _parse_explicit_int(
|
|
145
|
+
args.get("padding"),
|
|
146
|
+
name="padding",
|
|
147
|
+
minimum=0,
|
|
148
|
+
maximum=MAX_LONG_IMAGE_PADDING,
|
|
149
|
+
)
|
|
150
|
+
if error is not None or padding is None:
|
|
151
|
+
return None, error
|
|
152
|
+
else:
|
|
153
|
+
padding = _config_int(
|
|
154
|
+
context,
|
|
155
|
+
"render_long_image_default_padding",
|
|
156
|
+
DEFAULT_LONG_IMAGE_PADDING,
|
|
157
|
+
)
|
|
158
|
+
padding = min(MAX_LONG_IMAGE_PADDING, max(0, padding))
|
|
159
|
+
|
|
160
|
+
if padding * 2 >= width:
|
|
161
|
+
return None, "padding 过大,必须满足 2 * padding < width"
|
|
162
|
+
|
|
163
|
+
return (
|
|
164
|
+
RenderLayoutOptions(
|
|
165
|
+
layout="long",
|
|
166
|
+
viewport_width=width,
|
|
167
|
+
screenshot_scale="css",
|
|
168
|
+
screenshot_style=_long_layout_style(content_kind, padding),
|
|
169
|
+
),
|
|
170
|
+
None,
|
|
171
|
+
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"type": "function",
|
|
3
3
|
"function": {
|
|
4
4
|
"name": "render_html",
|
|
5
|
-
"description": "将 HTML 内容渲染为图片。默认返回可嵌入回复的图片 UID(embed),也可直接发送到指定目标(send
|
|
5
|
+
"description": "将 HTML 内容渲染为图片。默认返回可嵌入回复的图片 UID(embed),也可直接发送到指定目标(send)。支持完整 HTML、内联 CSS、脚本和 data:/blob: 资源;浏览器上下文不加载外部资源。需要窄幅、高度随内容延伸且无两侧外部留白时,使用 layout=long。",
|
|
6
6
|
"parameters": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
@@ -10,6 +10,24 @@
|
|
|
10
10
|
"type": "string",
|
|
11
11
|
"description": "要渲染的 HTML 内容。必须是完整的 HTML 文档(包含 <!DOCTYPE html>、<html>、<head>、<body> 标签)。"
|
|
12
12
|
},
|
|
13
|
+
"layout": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "版式:default 保持原始页面布局;long 输出单张长图,高度随内容自动延伸并去除 html/body 外边距",
|
|
16
|
+
"enum": ["default", "long"],
|
|
17
|
+
"default": "default"
|
|
18
|
+
},
|
|
19
|
+
"width": {
|
|
20
|
+
"type": "integer",
|
|
21
|
+
"description": "长图最终像素宽度,仅 layout=long 时可用;不传则使用 [render].long_image_default_width",
|
|
22
|
+
"minimum": 320,
|
|
23
|
+
"maximum": 2048
|
|
24
|
+
},
|
|
25
|
+
"padding": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"description": "长图 body 内边距(像素),仅 layout=long 时可用;传 0 可做全幅设计,不传则使用 [render].long_image_default_padding",
|
|
28
|
+
"minimum": 0,
|
|
29
|
+
"maximum": 160
|
|
30
|
+
},
|
|
13
31
|
"delivery": {
|
|
14
32
|
"type": "string",
|
|
15
33
|
"description": "图片交付方式:embed 返回可插入回复的图片 UID;send 立即发送到目标",
|
|
@@ -28,4 +46,4 @@
|
|
|
28
46
|
"required": ["html_content"]
|
|
29
47
|
}
|
|
30
48
|
}
|
|
31
|
-
}
|
|
49
|
+
}
|
|
@@ -5,6 +5,7 @@ import logging
|
|
|
5
5
|
import uuid
|
|
6
6
|
|
|
7
7
|
from Undefined.attachments import scope_from_context
|
|
8
|
+
from Undefined.skills.toolsets.render.layout import resolve_render_layout
|
|
8
9
|
|
|
9
10
|
logger = logging.getLogger(__name__)
|
|
10
11
|
|
|
@@ -41,6 +42,14 @@ async def execute(args: Dict[str, Any], context: Dict[str, Any]) -> str:
|
|
|
41
42
|
if delivery not in {"embed", "send"}:
|
|
42
43
|
return f"delivery 无效:{delivery}。仅支持 embed 或 send"
|
|
43
44
|
|
|
45
|
+
layout_options, layout_error = resolve_render_layout(
|
|
46
|
+
args,
|
|
47
|
+
context,
|
|
48
|
+
content_kind="html",
|
|
49
|
+
)
|
|
50
|
+
if layout_error is not None or layout_options is None:
|
|
51
|
+
return layout_error or "渲染布局参数无效"
|
|
52
|
+
|
|
44
53
|
if delivery == "send" and message_type and message_type not in ("group", "private"):
|
|
45
54
|
return "消息类型必须是 group 或 private"
|
|
46
55
|
|
|
@@ -55,7 +64,11 @@ async def execute(args: Dict[str, Any], context: Dict[str, Any]) -> str:
|
|
|
55
64
|
if not render_html_to_image:
|
|
56
65
|
return "错误:渲染函数 (render_html_to_image) 未在上下文中提供,请检查 AIClient 配置。"
|
|
57
66
|
|
|
58
|
-
await render_html_to_image(
|
|
67
|
+
await render_html_to_image(
|
|
68
|
+
html_content,
|
|
69
|
+
str(filepath),
|
|
70
|
+
**layout_options.render_kwargs(),
|
|
71
|
+
)
|
|
59
72
|
|
|
60
73
|
# 注册到附件系统
|
|
61
74
|
attachment_registry = context.get("attachment_registry")
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"type": "function",
|
|
3
3
|
"function": {
|
|
4
4
|
"name": "render_latex",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "将常见 LaTeX 数学公式通过本地 matplotlib mathtext 渲染为图片或 PDF 文档,不依赖系统 TeX 或外部网络。复杂 TeX 环境和自定义宏可能不受支持。返回可嵌入回复的附件 UID。",
|
|
6
6
|
"parameters": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
9
|
"content": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"description": "要渲染的 LaTeX 数学内容。支持
|
|
11
|
+
"description": "要渲染的 LaTeX 数学内容。支持 mathtext 常见数学语法及 $...$、$$...$$、\\[...\\]、\\(...\\) 分隔符。如果不包含分隔符,会自动用 \\[ ... \\] 包装;\\begin{document}...\\end{document} 外层包装会自动去掉。复杂 TeX 环境和自定义宏可能不受支持。"
|
|
12
12
|
},
|
|
13
13
|
"output_format": {
|
|
14
14
|
"type": "string",
|