myagent-ai 1.26.5 → 1.26.7
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.
- package/agents/main_agent.py +34 -48
- package/core/output_parser.py +57 -0
- package/main.py +3 -12
- package/package.json +1 -1
- package/scripts/cli.py +1 -124
- package/skills/ASR/LICENSE.txt +0 -0
- package/skills/ASR/SKILL.md +0 -0
- package/skills/ASR/scripts/asr.ts +0 -0
- package/skills/LLM/LICENSE.txt +0 -0
- package/skills/LLM/SKILL.md +0 -0
- package/skills/LLM/scripts/chat.ts +0 -0
- package/skills/TTS/LICENSE.txt +0 -0
- package/skills/TTS/SKILL.md +0 -0
- package/skills/TTS/tts.ts +0 -0
- package/skills/VLM/LICENSE.txt +0 -0
- package/skills/VLM/SKILL.md +0 -0
- package/skills/VLM/scripts/vlm.ts +0 -0
- package/skills/__init__.py +0 -0
- package/skills/admin-manager/SKILL.md +0 -0
- package/skills/agent-browser/SKILL.md +0 -0
- package/skills/agent_tool_skill.py +0 -0
- package/skills/ai-news-collectors/SKILL.md +0 -0
- package/skills/ai-news-collectors/_meta.json +0 -0
- package/skills/ai-news-collectors/references/sources.md +0 -0
- package/skills/aminer-open-academic/SKILL.md +0 -0
- package/skills/aminer-open-academic/_meta.json +0 -0
- package/skills/aminer-open-academic/evals/evals.json +0 -0
- package/skills/aminer-open-academic/references/api-catalog.md +0 -0
- package/skills/aminer-open-academic/scripts/aminer_client.py +0 -0
- package/skills/auto-target-tracker/SKILL.md +0 -0
- package/skills/base.py +0 -0
- package/skills/blog-writer/2024-02-17-radical-transparency-sales.md +0 -0
- package/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +0 -0
- package/skills/blog-writer/2024-02-17-short-form-content-marketing.md +0 -0
- package/skills/blog-writer/2024-02-17-typing-speed-benefits.md +0 -0
- package/skills/blog-writer/2024-03-14-effective-ai-prompts.md +0 -0
- package/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +0 -0
- package/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +0 -0
- package/skills/blog-writer/README.md +0 -0
- package/skills/blog-writer/SKILL.md +0 -0
- package/skills/blog-writer/_meta.json +0 -0
- package/skills/blog-writer/manage_examples.py +0 -0
- package/skills/blog-writer/style-guide.md +0 -0
- package/skills/browser_skill.py +0 -0
- package/skills/charts/LICENSE.txt +0 -0
- package/skills/charts/SKILL.md +0 -0
- package/skills/charts/references/_rules.md +0 -0
- package/skills/charts/references/d3.md +0 -0
- package/skills/charts/references/echarts.md +0 -0
- package/skills/charts/references/matplotlib.md +0 -0
- package/skills/charts/references/mermaid.md +0 -0
- package/skills/charts/references/mindmap-css.md +0 -0
- package/skills/charts/references/playwright-css.md +0 -0
- package/skills/charts/references/radial-grid.md +0 -0
- package/skills/charts/references/seaborn.md +0 -0
- package/skills/charts/setup.sh +0 -0
- package/skills/chromedev_mcp.py +0 -0
- package/skills/coding-agent/SKILL.md +0 -0
- package/skills/coding-agent/_meta.json +0 -0
- package/skills/coding-agent/criteria.md +0 -0
- package/skills/coding-agent/execution.md +0 -0
- package/skills/coding-agent/memory-template.md +0 -0
- package/skills/coding-agent/planning.md +0 -0
- package/skills/coding-agent/state.md +0 -0
- package/skills/coding-agent/verification.md +0 -0
- package/skills/content-strategy/SKILL.md +0 -0
- package/skills/content-strategy/_meta.json +0 -0
- package/skills/contentanalysis/ExtractWisdom/SKILL.md +0 -0
- package/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +0 -0
- package/skills/contentanalysis/SKILL.md +0 -0
- package/skills/docx/LICENSE.txt +0 -0
- package/skills/docx/SKILL.md +0 -0
- package/skills/docx/references/chart-templates.md +0 -0
- package/skills/docx/references/common-rules.md +0 -0
- package/skills/docx/references/decorations.md +0 -0
- package/skills/docx/references/design-system.md +0 -0
- package/skills/docx/references/docx-js-advanced.md +0 -0
- package/skills/docx/references/docx-js-core.md +0 -0
- package/skills/docx/references/faq.md +0 -0
- package/skills/docx/references/math-formulas.md +0 -0
- package/skills/docx/references/ooxml.md +0 -0
- package/skills/docx/references/toc.md +0 -0
- package/skills/docx/routes/comment.md +0 -0
- package/skills/docx/routes/create.md +0 -0
- package/skills/docx/routes/edit.md +0 -0
- package/skills/docx/routes/format.md +0 -0
- package/skills/docx/routes/read.md +0 -0
- package/skills/docx/scenes/academic.md +0 -0
- package/skills/docx/scenes/contract.md +0 -0
- package/skills/docx/scenes/copywriting.md +0 -0
- package/skills/docx/scenes/exam.md +0 -0
- package/skills/docx/scenes/official-doc.md +0 -0
- package/skills/docx/scenes/report.md +0 -0
- package/skills/docx/scenes/resume.md +0 -0
- package/skills/docx/scripts/__init__.py +0 -0
- package/skills/docx/scripts/add_toc_placeholders.py +0 -0
- package/skills/docx/scripts/document.py +0 -0
- package/skills/docx/scripts/postcheck.py +0 -0
- package/skills/docx/scripts/templates/comments.xml +0 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +0 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +0 -0
- package/skills/docx/scripts/templates/commentsIds.xml +0 -0
- package/skills/docx/scripts/templates/people.xml +0 -0
- package/skills/docx/scripts/utilities.py +0 -0
- package/skills/docx/setup.sh +0 -0
- package/skills/docx_skill.py +0 -0
- package/skills/dream-interpreter/SKILL.md +0 -0
- package/skills/dream-interpreter/assets/example_asset.txt +0 -0
- package/skills/dream-interpreter/references/api_reference.md +0 -0
- package/skills/dream-interpreter/references/interpretation-guide.md +0 -0
- package/skills/dream-interpreter/references/output-schema.md +0 -0
- package/skills/dream-interpreter/references/questioning-strategy.md +0 -0
- package/skills/dream-interpreter/references/visual-mapping.md +0 -0
- package/skills/dream-interpreter/scripts/example.py +0 -0
- package/skills/dream-interpreter/skill.json +0 -0
- package/skills/file_send.py +0 -0
- package/skills/finance/Finance_API_Doc.md +0 -0
- package/skills/finance/SKILL.md +0 -0
- package/skills/fullstack-dev/SKILL.md +0 -0
- package/skills/fullstack-dev/references/api-design.md +0 -0
- package/skills/fullstack-dev/references/auth-flow.md +0 -0
- package/skills/fullstack-dev/references/db-schema.md +0 -0
- package/skills/fullstack-dev/references/django-best-practices.md +0 -0
- package/skills/fullstack-dev/references/environment-management.md +0 -0
- package/skills/fullstack-dev/references/release-checklist.md +0 -0
- package/skills/fullstack-dev/references/technology-selection.md +0 -0
- package/skills/fullstack-dev/references/testing-strategy.md +0 -0
- package/skills/get-fortune-analysis/SKILL.md +0 -0
- package/skills/get-fortune-analysis/lunar_python.py +0 -0
- package/skills/gift-evaluator/SKILL.md +0 -0
- package/skills/gift-evaluator/html_tools.py +0 -0
- package/skills/gui_skill.py +0 -0
- package/skills/image-edit/LICENSE.txt +0 -0
- package/skills/image-edit/SKILL.md +0 -0
- package/skills/image-edit/scripts/image-edit.ts +0 -0
- package/skills/image-generation/LICENSE.txt +0 -0
- package/skills/image-generation/SKILL.md +0 -0
- package/skills/image-generation/scripts/image-generation.ts +0 -0
- package/skills/image-understand/LICENSE.txt +0 -0
- package/skills/image-understand/SKILL.md +0 -0
- package/skills/image-understand/scripts/image-understand.ts +0 -0
- package/skills/interview-designer/README.md +0 -0
- package/skills/interview-designer/SKILL.md +0 -0
- package/skills/interview-designer/_meta.json +0 -0
- package/skills/interview-designer/references/design_rationale.md +0 -0
- package/skills/interview-designer/templates/interview_guide_template.md +0 -0
- package/skills/market-research-reports/SKILL.md +0 -0
- package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +0 -0
- package/skills/market-research-reports/assets/market_report_template.tex +0 -0
- package/skills/market-research-reports/assets/market_research.sty +0 -0
- package/skills/market-research-reports/references/data_analysis_patterns.md +0 -0
- package/skills/market-research-reports/references/report_structure_guide.md +0 -0
- package/skills/market-research-reports/references/visual_generation_guide.md +0 -0
- package/skills/market-research-reports/scripts/generate_market_visuals.py +0 -0
- package/skills/marketing-mode/README.md +0 -0
- package/skills/marketing-mode/SKILL.md +0 -0
- package/skills/marketing-mode/_meta.json +0 -0
- package/skills/marketing-mode/mode-prompt.md +0 -0
- package/skills/marketing-mode/skill.json +0 -0
- package/skills/mindfulness-meditation/SKILL.md +0 -0
- package/skills/mindfulness-meditation/_meta.json +0 -0
- package/skills/multi-search-engine/CHANGELOG.md +0 -0
- package/skills/multi-search-engine/CHANNELLOG.md +0 -0
- package/skills/multi-search-engine/SKILL.md +0 -0
- package/skills/multi-search-engine/_meta.json +0 -0
- package/skills/multi-search-engine/config.json +0 -0
- package/skills/multi-search-engine/metadata.json +0 -0
- package/skills/multi-search-engine/references/international-search.md +0 -0
- package/skills/pdf/LICENSE.txt +0 -0
- package/skills/pdf/SKILL.md +0 -0
- package/skills/pdf/briefs/academic.md +0 -0
- package/skills/pdf/briefs/creative.md +0 -0
- package/skills/pdf/briefs/poster.md +0 -0
- package/skills/pdf/briefs/process-advanced.md +0 -0
- package/skills/pdf/briefs/process.md +0 -0
- package/skills/pdf/briefs/report.md +0 -0
- package/skills/pdf/configs/components.md +0 -0
- package/skills/pdf/configs/fonts.md +0 -0
- package/skills/pdf/configs/visual_framework.md +0 -0
- package/skills/pdf/references/resume-academic.tex +0 -0
- package/skills/pdf/references/resume-altacv.tex +0 -0
- package/skills/pdf/scripts/cover_validate.js +0 -0
- package/skills/pdf/scripts/design_engine.py +0 -0
- package/skills/pdf/scripts/html2pdf-next.js +0 -0
- package/skills/pdf/scripts/html2poster.js +0 -0
- package/skills/pdf/scripts/pdf.py +0 -0
- package/skills/pdf/scripts/pdf_qa.py +0 -0
- package/skills/pdf/scripts/poster_validate.py +0 -0
- package/skills/pdf/scripts/setup.sh +0 -0
- package/skills/pdf/scripts/toc_validate.py +0 -0
- package/skills/pdf/typesetting/charts.md +0 -0
- package/skills/pdf/typesetting/cover-backgrounds.md +0 -0
- package/skills/pdf/typesetting/cover.md +0 -0
- package/skills/pdf/typesetting/fill-engine.md +0 -0
- package/skills/pdf/typesetting/geometry.md +0 -0
- package/skills/pdf/typesetting/overflow.md +0 -0
- package/skills/pdf/typesetting/pagination.md +0 -0
- package/skills/pdf/typesetting/palette.md +0 -0
- package/skills/pdf/typesetting/typography.md +0 -0
- package/skills/pdf_skill.py +0 -0
- package/skills/podcast-generate/LICENSE.txt +0 -0
- package/skills/podcast-generate/SKILL.md +0 -0
- package/skills/podcast-generate/generate.ts +0 -0
- package/skills/podcast-generate/package.json +0 -0
- package/skills/podcast-generate/readme.md +0 -0
- package/skills/podcast-generate/test_data/segments.jsonl +0 -0
- package/skills/podcast-generate/tsconfig.json +0 -0
- package/skills/ppt/.claude/settings.local.json +0 -0
- package/skills/ppt/LICENSE.txt +0 -0
- package/skills/ppt/SKILL.md +0 -0
- package/skills/ppt/beamer.md +0 -0
- package/skills/ppt/components.md +0 -0
- package/skills/ppt/data-viz-components.md +0 -0
- package/skills/ppt/design-system.md +0 -0
- package/skills/ppt/html2pptx.md +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- package/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- package/skills/ppt/ooxml/schemas/mce/mc.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-2010.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-2012.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-2018.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- package/skills/ppt/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -0
- package/skills/ppt/ooxml/scripts/pack.py +0 -0
- package/skills/ppt/ooxml/scripts/unpack.py +0 -0
- package/skills/ppt/ooxml/scripts/validate.py +0 -0
- package/skills/ppt/ooxml/scripts/validation/__init__.py +0 -0
- package/skills/ppt/ooxml/scripts/validation/base.py +0 -0
- package/skills/ppt/ooxml/scripts/validation/docx.py +0 -0
- package/skills/ppt/ooxml/scripts/validation/pptx.py +0 -0
- package/skills/ppt/ooxml/scripts/validation/redlining.py +0 -0
- package/skills/ppt/ooxml.md +0 -0
- package/skills/ppt/references/beamer.md +0 -0
- package/skills/ppt/references/latex.md +0 -0
- package/skills/ppt/references/paper-navbar.tex +0 -0
- package/skills/ppt/references/progress-navbar.tex +0 -0
- package/skills/ppt/scripts/html2pptx.js +0 -0
- package/skills/ppt/scripts/inventory.py +0 -0
- package/skills/ppt/scripts/pdf.py +0 -0
- package/skills/ppt/scripts/rearrange.py +0 -0
- package/skills/ppt/scripts/replace.py +0 -0
- package/skills/ppt/scripts/tectonic +0 -0
- package/skills/ppt/scripts/thumbnail.py +0 -0
- package/skills/ppt/setup.sh +0 -0
- package/skills/ppt/themes.md +0 -0
- package/skills/ppt_skill.py +0 -0
- package/skills/qingyan-research/SKILL.md +0 -0
- package/skills/qingyan-research/generate_html.py +0 -0
- package/skills/registry.py +0 -0
- package/skills/search_skill.py +0 -0
- package/skills/seo-content-writer/SKILL.md +0 -0
- package/skills/seo-content-writer/_meta.json +0 -0
- package/skills/seo-content-writer/references/content-structure-templates.md +0 -0
- package/skills/seo-content-writer/references/title-formulas.md +0 -0
- package/skills/skill-creator/LICENSE.txt +0 -0
- package/skills/skill-creator/SKILL.md +0 -0
- package/skills/skill-creator/agents/analyzer.md +0 -0
- package/skills/skill-creator/agents/comparator.md +0 -0
- package/skills/skill-creator/agents/grader.md +0 -0
- package/skills/skill-creator/assets/eval_review.html +0 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +0 -0
- package/skills/skill-creator/eval-viewer/viewer.html +0 -0
- package/skills/skill-creator/references/schemas.md +0 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +0 -0
- package/skills/skill-creator/scripts/generate_report.py +0 -0
- package/skills/skill-creator/scripts/improve_description.py +0 -0
- package/skills/skill-creator/scripts/package_skill.py +0 -0
- package/skills/skill-creator/scripts/quick_validate.py +0 -0
- package/skills/skill-creator/scripts/run_eval.py +0 -0
- package/skills/skill-creator/scripts/run_loop.py +0 -0
- package/skills/skill-creator/scripts/utils.py +0 -0
- package/skills/skill-finder-cn/SKILL.md +0 -0
- package/skills/skill-finder-cn/_meta.json +0 -0
- package/skills/skill-finder-cn/package.json +0 -0
- package/skills/skill-finder-cn/scripts/search.sh +0 -0
- package/skills/skill-vetter/SKILL.md +0 -0
- package/skills/stock-analysis-skill/SKILL.md +0 -0
- package/skills/stock-analysis-skill/package.json +0 -0
- package/skills/stock-analysis-skill/src/analyzer.ts +0 -0
- package/skills/stock-analysis-skill/src/dataFetcher.ts +0 -0
- package/skills/stock-analysis-skill/src/dividend.ts +0 -0
- package/skills/stock-analysis-skill/src/index.ts +0 -0
- package/skills/stock-analysis-skill/src/rumorScanner.ts +0 -0
- package/skills/stock-analysis-skill/src/types.ts +0 -0
- package/skills/stock-analysis-skill/src/watchlist.ts +0 -0
- package/skills/stock-analysis-skill/tsconfig.json +0 -0
- package/skills/storyboard-manager/SKILL.md +0 -0
- package/skills/storyboard-manager/index.js +0 -0
- package/skills/storyboard-manager/package.json +0 -0
- package/skills/storyboard-manager/references/character_development.md +0 -0
- package/skills/storyboard-manager/references/story_structures.md +0 -0
- package/skills/storyboard-manager/scripts/consistency_checker.py +0 -0
- package/skills/storyboard-manager/scripts/timeline_tracker.py +0 -0
- package/skills/system_skill.py +0 -0
- package/skills/ui-ux-pro-max/SKILL.md +0 -0
- package/skills/ui-ux-pro-max/_meta.json +0 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +0 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +0 -0
- package/skills/ui-ux-pro-max/data/charts.csv +0 -0
- package/skills/ui-ux-pro-max/data/colors.csv +0 -0
- package/skills/ui-ux-pro-max/data/icons.csv +0 -0
- package/skills/ui-ux-pro-max/data/landing.csv +0 -0
- package/skills/ui-ux-pro-max/data/products.csv +0 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -0
- package/skills/ui-ux-pro-max/data/styles.csv +0 -0
- package/skills/ui-ux-pro-max/data/typography.csv +0 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +0 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +0 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +0 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +0 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +0 -0
- package/skills/ui-ux-pro-max/scripts/search.py +0 -0
- package/skills/video-generation/LICENSE.txt +0 -0
- package/skills/video-generation/SKILL.md +0 -0
- package/skills/video-generation/scripts/video.ts +0 -0
- package/skills/video-understand/LICENSE.txt +0 -0
- package/skills/video-understand/SKILL.md +0 -0
- package/skills/video-understand/scripts/video-understand.ts +0 -0
- package/skills/visual-design-foundations/SKILL.md +0 -0
- package/skills/visual-design-foundations/references/color-systems.md +0 -0
- package/skills/visual-design-foundations/references/spacing-iconography.md +0 -0
- package/skills/visual-design-foundations/references/typography-systems.md +0 -0
- package/skills/web-reader/LICENSE.txt +0 -0
- package/skills/web-reader/SKILL.md +0 -0
- package/skills/web-reader/scripts/web-reader.ts +0 -0
- package/skills/web-search/LICENSE.txt +0 -0
- package/skills/web-search/SKILL.md +0 -0
- package/skills/web-search/scripts/web_search.ts +0 -0
- package/skills/web-shader-extractor/SKILL.md +0 -0
- package/skills/web-shader-extractor/references/config-extraction.md +0 -0
- package/skills/web-shader-extractor/references/encoded-definitions.md +0 -0
- package/skills/web-shader-extractor/references/extraction-workflow.md +0 -0
- package/skills/web-shader-extractor/references/porting-strategy.md +0 -0
- package/skills/web-shader-extractor/references/shader-injection.md +0 -0
- package/skills/web-shader-extractor/references/shaders-com.md +0 -0
- package/skills/web-shader-extractor/references/tech-signatures.md +0 -0
- package/skills/web-shader-extractor/references/tsl-extraction.md +0 -0
- package/skills/web-shader-extractor/references/unicorn-studio.md +0 -0
- package/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +0 -0
- package/skills/web-shader-extractor/scripts/scan-bundle.sh +0 -0
- package/skills/writing-plans/SKILL.md +0 -0
- package/skills/writing-plans/_meta.json +0 -0
- package/skills/xlsx/LICENSE.txt +0 -0
- package/skills/xlsx/SKILL.md +0 -0
- package/skills/xlsx/engines/chart-templates.md +0 -0
- package/skills/xlsx/engines/chart.md +0 -0
- package/skills/xlsx/engines/design.md +0 -0
- package/skills/xlsx/engines/vba-templates.md +0 -0
- package/skills/xlsx/quality/pipeline.md +0 -0
- package/skills/xlsx/scenes/advanced.md +0 -0
- package/skills/xlsx/scenes/analyze-recipes.md +0 -0
- package/skills/xlsx/scenes/analyze.md +0 -0
- package/skills/xlsx/scenes/convert.md +0 -0
- package/skills/xlsx/scenes/create.md +0 -0
- package/skills/xlsx/scenes/edit-patterns.md +0 -0
- package/skills/xlsx/scenes/edit.md +0 -0
- package/skills/xlsx/scenes/finance.md +0 -0
- package/skills/xlsx/scenes/finance_lite.md +0 -0
- package/skills/xlsx/scenes/vba.md +0 -0
- package/skills/xlsx/setup.sh +0 -0
- package/skills/xlsx/templates/base.py +0 -0
- package/skills/xlsx/templates/palettes.py +0 -0
- package/skills/xlsx/xlsx.py +0 -0
- package/skills/xlsx_skill.py +0 -0
- package/web/__init__.py +0 -0
- package/web/api_server.py +27 -7
- package/web/tts_handler.py +0 -0
- package/web/ui/admin/admin-agentchat.js +0 -0
- package/web/ui/admin/admin-agents.js +0 -0
- package/web/ui/admin/admin-core.js +0 -0
- package/web/ui/admin/admin-dashboard.js +0 -0
- package/web/ui/admin/admin-executor.js +0 -0
- package/web/ui/admin/admin-files.js +0 -0
- package/web/ui/admin/admin-llm.js +0 -0
- package/web/ui/admin/admin-logs.js +0 -0
- package/web/ui/admin/admin-memory.js +0 -0
- package/web/ui/admin/admin-org.js +0 -0
- package/web/ui/admin/admin-permissions.js +0 -0
- package/web/ui/admin/admin-platforms.js +0 -0
- package/web/ui/admin/admin-sessions.js +0 -0
- package/web/ui/admin/admin-skills.js +0 -0
- package/web/ui/admin/admin-system.js +0 -0
- package/web/ui/admin/admin-tasks.js +0 -0
- package/web/ui/chat/chat.css +0 -0
- package/web/ui/chat/chat.js +0 -0
- package/web/ui/chat/chat_container.html +0 -0
- package/web/ui/chat/chat_main.js +0 -0
- package/web/ui/chat/flow_engine.js +0 -0
- package/web/ui/chat/groupchat.js +63 -0
- package/web/ui/chat/left_sessions.html +0 -0
- package/web/ui/chat/middle_chat.html +0 -0
- package/web/ui/chat/right_agents.html +0 -0
- package/web/ui/index.html +0 -0
- package/worklog-v1.22.md +0 -0
- package/worklog.md +0 -0
- package//"docs/351205215347275256344275277347224250350257264346230216.md/" +0 -0
- package/skills/file_skill.py +0 -573
package/agents/main_agent.py
CHANGED
|
@@ -206,7 +206,7 @@ GUI桌面 (仅Windows/macOS):
|
|
|
206
206
|
self._execution_events = []
|
|
207
207
|
self._exec_event_counter = 0
|
|
208
208
|
|
|
209
|
-
async def process(self, context: AgentContext) -> AgentContext:
|
|
209
|
+
async def process(self, context: AgentContext, stream_callback=None) -> AgentContext:
|
|
210
210
|
"""
|
|
211
211
|
主处理循环。
|
|
212
212
|
|
|
@@ -250,6 +250,7 @@ GUI桌面 (仅Windows/macOS):
|
|
|
250
250
|
agent_name=_injected_name or self.name,
|
|
251
251
|
agent_description=_injected_desc or self.description,
|
|
252
252
|
agent_override_prompt=_override_prompt,
|
|
253
|
+
stream_callback=stream_callback,
|
|
253
254
|
agent_path=getattr(self, '_agent_override_path', None),
|
|
254
255
|
)
|
|
255
256
|
finally:
|
|
@@ -950,7 +951,7 @@ GUI桌面 (仅Windows/macOS):
|
|
|
950
951
|
f"输出长度={len(llm_raw)} 字符"
|
|
951
952
|
)
|
|
952
953
|
|
|
953
|
-
if _xml_correction_retries <
|
|
954
|
+
if _xml_correction_retries < 3:
|
|
954
955
|
_xml_correction_retries += 1
|
|
955
956
|
# 尝试从不完整输出中提取已有内容,防止内容完全丢失
|
|
956
957
|
_partial_text = self._try_extract_partial_response(llm_raw)
|
|
@@ -995,53 +996,46 @@ GUI桌面 (仅Windows/macOS):
|
|
|
995
996
|
)
|
|
996
997
|
await self._emit_v2_event(
|
|
997
998
|
"v2_reasoning",
|
|
998
|
-
{"content": f"⚠️ 模型输出异常({_diag_msg}),正在自动修正({_xml_correction_retries}/
|
|
999
|
+
{"content": f"⚠️ 模型输出异常({_diag_msg}),正在自动修正({_xml_correction_retries}/3)..."},
|
|
999
1000
|
stream_callback,
|
|
1000
1001
|
)
|
|
1001
1002
|
continue # 重新进入循环,让 LLM 重新生成
|
|
1002
1003
|
else:
|
|
1003
|
-
# 已重试
|
|
1004
|
-
logger.warning(f"[{task_id}] XML输出异常已重试
|
|
1004
|
+
# 已重试 3 次 → 不终止,提取已有内容作为 response 继续执行
|
|
1005
|
+
logger.warning(f"[{task_id}] XML输出异常已重试3次,提取已有内容继续执行: {_diag_msg}")
|
|
1006
|
+
_fallback_save = ""
|
|
1005
1007
|
if _v2_reasoning_collected:
|
|
1006
1008
|
_fallback_save = "\n".join(_v2_reasoning_collected)
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
await self._emit_v2_event(
|
|
1016
|
-
"v2_reasoning",
|
|
1017
|
-
{"content": _fallback_save},
|
|
1018
|
-
stream_callback,
|
|
1019
|
-
)
|
|
1020
|
-
else:
|
|
1021
|
-
context.working_memory["final_response"] = "模型输出格式异常,请重新尝试。"
|
|
1022
|
-
await self._emit_v2_event(
|
|
1023
|
-
"v2_reasoning",
|
|
1024
|
-
{"content": "模型输出格式异常,已自动终止。"},
|
|
1025
|
-
stream_callback,
|
|
1026
|
-
)
|
|
1027
|
-
break
|
|
1009
|
+
if not _fallback_save.strip():
|
|
1010
|
+
before, after = extract_surrounding_text(llm_raw)
|
|
1011
|
+
_fallback_save = ((before + "\n" + after) if (before.strip() or after.strip()) else re.sub(r"<[^>]+>", "", llm_raw).strip())
|
|
1012
|
+
_fallback_save = _fallback_save.strip() if _fallback_save.strip() else "处理完毕。"
|
|
1013
|
+
parsed.parse_success = True
|
|
1014
|
+
parsed.response = _fallback_save
|
|
1015
|
+
parsed.finish = True
|
|
1016
|
+
parsed.finish_reason = f"输出异常({_diag_msg}),已提取内容继续执行"
|
|
1028
1017
|
elif _block_incomplete and parsed.parse_success:
|
|
1029
1018
|
# 块不完整但已提取到有效内容,记录日志但正常继续
|
|
1030
1019
|
logger.info(
|
|
1031
1020
|
f"[{task_id}] <output> 块不完整但已提取到有效内容,跳过修正直接处理"
|
|
1032
1021
|
)
|
|
1033
1022
|
|
|
1034
|
-
# Step 4.5: 解析失败处理 —
|
|
1023
|
+
# Step 4.5: 解析失败处理 — 三层兜底,确保执行不会因解析错误而中断
|
|
1024
|
+
# 兜底策略(由 output_parser Step 4.5 已完成 L1/L2,此处处理 L3):
|
|
1025
|
+
# L1 (parser): 直接搜索 <tool> 块(跳过 toolstocal 包装)
|
|
1026
|
+
# L2 (parser): 搜索散落的 <toolname>+<parms> 配对
|
|
1027
|
+
# L3 (此处): 将原始文本回退给 LLM 修正格式,或提取为纯文本继续
|
|
1035
1028
|
if not parsed.parse_success:
|
|
1036
|
-
# 即使解析失败,如果 regex fallback 提取到了工具调用,仍然继续执行
|
|
1037
1029
|
if parsed.tools_to_call:
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1030
|
+
# L1/L2 兜底成功提取到了工具调用 → 标记为成功,继续执行工具
|
|
1031
|
+
parsed.parse_success = True
|
|
1032
|
+
logger.warning(f"[{task_id}] 解析兜底成功: 提取到 {len(parsed.tools_to_call)} 个工具调用,继续执行")
|
|
1033
|
+
elif parsed.needs_correction and _xml_correction_retries < 3:
|
|
1034
|
+
# L3 兜底: 将原始文本回退给 LLM 让它调好格式再输出
|
|
1041
1035
|
_xml_correction_retries += 1
|
|
1042
1036
|
logger.warning(
|
|
1043
|
-
f"[{task_id}]
|
|
1044
|
-
f"(重试 {_xml_correction_retries}/
|
|
1037
|
+
f"[{task_id}] 解析兜底L3: 回退给LLM修正格式 "
|
|
1038
|
+
f"(重试 {_xml_correction_retries}/3)"
|
|
1045
1039
|
)
|
|
1046
1040
|
correction_prompt = (
|
|
1047
1041
|
"你上一次的输出格式有误,XML解析器无法识别。\n"
|
|
@@ -1058,31 +1052,23 @@ GUI桌面 (仅Windows/macOS):
|
|
|
1058
1052
|
)
|
|
1059
1053
|
await self._emit_v2_event(
|
|
1060
1054
|
"v2_reasoning",
|
|
1061
|
-
{"content": f"⚠️
|
|
1055
|
+
{"content": f"⚠️ 输出格式异常,正在自动修正({_xml_correction_retries}/3)..."},
|
|
1062
1056
|
stream_callback,
|
|
1063
1057
|
)
|
|
1064
1058
|
continue # 重新进入循环,让 LLM 重新生成
|
|
1065
1059
|
else:
|
|
1066
|
-
#
|
|
1067
|
-
logger.warning(f"[{task_id}]
|
|
1060
|
+
# 所有兜底都失败 → 把原始文本去除标签后作为 response,不中断执行
|
|
1061
|
+
logger.warning(f"[{task_id}] 所有解析兜底失败,提取原始文本作为response继续执行")
|
|
1068
1062
|
before, after = extract_surrounding_text(llm_raw)
|
|
1069
1063
|
if before.strip() or after.strip():
|
|
1070
1064
|
final_text = (before + "\n" + after).strip()
|
|
1071
1065
|
else:
|
|
1072
|
-
# 清除残余 XML 标签后作为纯文本
|
|
1073
1066
|
final_text = re.sub(r"<[^>]+>", "", llm_raw).strip()
|
|
1074
1067
|
final_text = final_text if final_text else "处理完毕。"
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
if self.memory:
|
|
1080
|
-
self.memory.add_session(
|
|
1081
|
-
session_id=context.session_id,
|
|
1082
|
-
role="assistant",
|
|
1083
|
-
content=final_text,
|
|
1084
|
-
)
|
|
1085
|
-
break
|
|
1068
|
+
parsed.parse_success = True
|
|
1069
|
+
parsed.response = final_text
|
|
1070
|
+
parsed.finish = True
|
|
1071
|
+
parsed.finish_reason = "输出格式异常,已提取文本内容作为最终回复"
|
|
1086
1072
|
|
|
1087
1073
|
warnings = validate_output(parsed)
|
|
1088
1074
|
for w in warnings:
|
package/core/output_parser.py
CHANGED
|
@@ -548,6 +548,63 @@ def _custom_parse(raw_text: str) -> ParsedOutput:
|
|
|
548
548
|
if toolstocal_raw.strip():
|
|
549
549
|
parsed.tools_to_call = _parse_toolstocal(toolstocal_raw, conservative=conservative)
|
|
550
550
|
|
|
551
|
+
# ── Step 4.5: 兜底机制 — 宽松提取工具调用,确保执行不会因解析错误而中断 ──
|
|
552
|
+
# 策略优先级:
|
|
553
|
+
# 1. _parse_toolstocal 已成功提取 → 不做任何事
|
|
554
|
+
# 2. 直接在整个输出中搜索 <tool>...</tool> 块(跳过 toolstocal 包装)
|
|
555
|
+
# 3. 搜索散落的 <toolname>...</toolname> + <parms>...</parms> 配对
|
|
556
|
+
if not parsed.tools_to_call:
|
|
557
|
+
# 兜底 Level 1: 在整个原始文本中直接搜索 <tool> 块
|
|
558
|
+
_raw_tool_blocks = _extract_all_tag_blocks(
|
|
559
|
+
raw_text, "tool", parent_close_tag=None, conservative=False,
|
|
560
|
+
)
|
|
561
|
+
for block in _raw_tool_blocks:
|
|
562
|
+
tn = _safe_strip(_extract_tag_content(block, "toolname", TOOL_INNER_TAGS))
|
|
563
|
+
if tn:
|
|
564
|
+
parsed.tools_to_call.append({
|
|
565
|
+
"beforecalltext": _safe_strip(_extract_tag_content(block, "beforecalltext", TOOL_INNER_TAGS)),
|
|
566
|
+
"toolname": tn,
|
|
567
|
+
"parms": _safe_strip(_extract_tag_content(block, "parms", TOOL_INNER_TAGS)),
|
|
568
|
+
"timeout": _parse_int(_extract_tag_content(block, "timeout", TOOL_INNER_TAGS), _DEFAULT_TIMEOUT),
|
|
569
|
+
})
|
|
570
|
+
logger.info(f"[兜底L1] 从非<toolstocal>区域提取到工具调用: {tn}")
|
|
571
|
+
|
|
572
|
+
if not parsed.tools_to_call:
|
|
573
|
+
# 兜底 Level 2: 搜索散落的 <toolname>...</toolname>,然后在同一段中找最近的 <parms>
|
|
574
|
+
_toolname_positions = []
|
|
575
|
+
for m in re.finditer(r"<toolname[^>]*>(.*?)</toolname\s*>", raw_text, re.DOTALL | re.IGNORECASE):
|
|
576
|
+
tn = html.unescape(m.group(1)).strip()
|
|
577
|
+
if tn:
|
|
578
|
+
_toolname_positions.append((m.start(), m.end(), tn))
|
|
579
|
+
|
|
580
|
+
if _toolname_positions:
|
|
581
|
+
logger.info(f"[兜底L2] 找到 {len(_toolname_positions)} 个散落的 <toolname> 标签")
|
|
582
|
+
for _i, (_start, _end, _tn) in enumerate(_toolname_positions):
|
|
583
|
+
# 在 toolname 之后的 500 字符内搜索最近的 <parms>
|
|
584
|
+
_search_region = raw_text[_end:_end + 500]
|
|
585
|
+
_parms_match = re.search(
|
|
586
|
+
r"<parms[^>]*>(.*?)</parms\s*>",
|
|
587
|
+
_search_region, re.DOTALL | re.IGNORECASE,
|
|
588
|
+
)
|
|
589
|
+
_parms = html.unescape(_parms_match.group(1)).strip() if _parms_match else ""
|
|
590
|
+
|
|
591
|
+
# 也尝试在 toolname 之前的 200 字符内搜索(parms 可能在 toolname 前面)
|
|
592
|
+
if not _parms:
|
|
593
|
+
_pre_region = raw_text[max(0, _start - 200):_start]
|
|
594
|
+
_parms_match = re.search(
|
|
595
|
+
r"<parms[^>]*>(.*?)</parms\s*>",
|
|
596
|
+
_pre_region, re.DOTALL | re.IGNORECASE,
|
|
597
|
+
)
|
|
598
|
+
_parms = html.unescape(_parms_match.group(1)).strip() if _parms_match else ""
|
|
599
|
+
|
|
600
|
+
parsed.tools_to_call.append({
|
|
601
|
+
"beforecalltext": "",
|
|
602
|
+
"toolname": _tn,
|
|
603
|
+
"parms": _parms,
|
|
604
|
+
"timeout": _DEFAULT_TIMEOUT,
|
|
605
|
+
})
|
|
606
|
+
logger.info(f"[兜底L2] 散落提取工具: {_tn}, parms={'有' if _parms else '无'}")
|
|
607
|
+
|
|
551
608
|
# ── Step 5: Determine parse success ──
|
|
552
609
|
has_content = bool(
|
|
553
610
|
parsed.response
|
package/main.py
CHANGED
|
@@ -374,10 +374,6 @@ class MyAgentApp:
|
|
|
374
374
|
|
|
375
375
|
def _register_builtin_skills(self):
|
|
376
376
|
"""注册内置技能"""
|
|
377
|
-
from skills.file_skill import (
|
|
378
|
-
FileReadSkill, FileWriteSkill, FileListSkill,
|
|
379
|
-
FileDeleteSkill, FileSearchSkill, FileMoveSkill,
|
|
380
|
-
)
|
|
381
377
|
from skills.search_skill import WebSearchSkill, WebReadSkill, URLReadSkill
|
|
382
378
|
from skills.system_skill import (
|
|
383
379
|
SystemInfoSkill, ProcessListSkill,
|
|
@@ -392,13 +388,6 @@ class MyAgentApp:
|
|
|
392
388
|
TypeTextSkill, HotkeySkill, WindowListSkill, WindowFocusSkill, ScreenElementSkill,
|
|
393
389
|
)
|
|
394
390
|
|
|
395
|
-
# 文件技能
|
|
396
|
-
for skill_cls in [
|
|
397
|
-
FileReadSkill, FileWriteSkill, FileListSkill,
|
|
398
|
-
FileDeleteSkill, FileSearchSkill, FileMoveSkill,
|
|
399
|
-
]:
|
|
400
|
-
self.skill_registry.register(skill_cls())
|
|
401
|
-
|
|
402
391
|
# 搜索技能
|
|
403
392
|
for skill_cls in [WebSearchSkill, WebReadSkill, URLReadSkill]:
|
|
404
393
|
self.skill_registry.register(skill_cls())
|
|
@@ -499,6 +488,7 @@ class MyAgentApp:
|
|
|
499
488
|
self,
|
|
500
489
|
user_message: str,
|
|
501
490
|
session_id: str = "",
|
|
491
|
+
stream_callback=None,
|
|
502
492
|
) -> str:
|
|
503
493
|
"""
|
|
504
494
|
处理用户消息并返回回复。
|
|
@@ -506,6 +496,7 @@ class MyAgentApp:
|
|
|
506
496
|
Args:
|
|
507
497
|
user_message: 用户消息
|
|
508
498
|
session_id: 会话 ID
|
|
499
|
+
stream_callback: SSE 流式回调(群聊等场景需要,用于推送 v2_file 等事件)
|
|
509
500
|
|
|
510
501
|
Returns:
|
|
511
502
|
助手回复文本
|
|
@@ -522,7 +513,7 @@ class MyAgentApp:
|
|
|
522
513
|
)
|
|
523
514
|
|
|
524
515
|
try:
|
|
525
|
-
result_context = await self.main_agent.process(context)
|
|
516
|
+
result_context = await self.main_agent.process(context, stream_callback=stream_callback)
|
|
526
517
|
response = result_context.working_memory.get(
|
|
527
518
|
"final_response", "⚠️ 未能生成回复"
|
|
528
519
|
)
|
package/package.json
CHANGED
package/scripts/cli.py
CHANGED
|
@@ -9,7 +9,7 @@ scripts/cli.py - MyAgent CLI 工具集
|
|
|
9
9
|
命令分类:
|
|
10
10
|
感知: ocr, analyze-image, transcribe
|
|
11
11
|
搜索: search, read-url, fetch-url
|
|
12
|
-
文件:
|
|
12
|
+
文件: send-file
|
|
13
13
|
文档: docx-create, docx-read, xlsx-create, xlsx-read, xlsx-edit,
|
|
14
14
|
ppt-create, ppt-read, pdf-create, pdf-read
|
|
15
15
|
系统: sysinfo, ps, env, pathinfo
|
|
@@ -90,12 +90,6 @@ async def _run():
|
|
|
90
90
|
"read-url": cmd_read_url,
|
|
91
91
|
"fetch-url": cmd_fetch_url,
|
|
92
92
|
# 文件操作
|
|
93
|
-
"read": cmd_read,
|
|
94
|
-
"write": cmd_write,
|
|
95
|
-
"ls": cmd_ls,
|
|
96
|
-
"rm": cmd_rm,
|
|
97
|
-
"grep": cmd_grep,
|
|
98
|
-
"mv": cmd_mv,
|
|
99
93
|
"send-file": cmd_send_file,
|
|
100
94
|
# 文档
|
|
101
95
|
"docx-create": cmd_docx_create,
|
|
@@ -332,123 +326,6 @@ async def cmd_fetch_url(args):
|
|
|
332
326
|
# 文件操作命令
|
|
333
327
|
# =============================================================================
|
|
334
328
|
|
|
335
|
-
async def cmd_read(args):
|
|
336
|
-
"""读取文件内容"""
|
|
337
|
-
import argparse
|
|
338
|
-
p = argparse.ArgumentParser(prog="myagent-ai read", description="读取文件内容")
|
|
339
|
-
p.add_argument("path", help="文件路径")
|
|
340
|
-
p.add_argument("-e", "--encoding", default="utf-8", help="文件编码 (默认 utf-8)")
|
|
341
|
-
p.add_argument("--offset", type=int, default=0, help="起始行号 (从0开始)")
|
|
342
|
-
p.add_argument("--limit", type=int, default=500, help="读取行数 (默认500)")
|
|
343
|
-
a = p.parse_args(args)
|
|
344
|
-
|
|
345
|
-
from skills.file_skill import FileReadSkill
|
|
346
|
-
skill = FileReadSkill()
|
|
347
|
-
result = await skill.execute(path=a.path, encoding=a.encoding, offset=a.offset, limit=a.limit)
|
|
348
|
-
_print_result({"success": result.success, "message": result.message,
|
|
349
|
-
"data": result.data, "error": result.error})
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
async def cmd_write(args):
|
|
353
|
-
"""写入文件"""
|
|
354
|
-
import argparse
|
|
355
|
-
p = argparse.ArgumentParser(prog="myagent-ai write", description="写入文件")
|
|
356
|
-
p.add_argument("path", help="文件路径")
|
|
357
|
-
p.add_argument("-c", "--content", default="", help="写入内容 (或通过 stdin)")
|
|
358
|
-
p.add_argument("-e", "--encoding", default="utf-8", help="文件编码")
|
|
359
|
-
p.add_argument("--append", action="store_true", help="追加模式")
|
|
360
|
-
a = p.parse_args(args)
|
|
361
|
-
|
|
362
|
-
content = a.content
|
|
363
|
-
if not content:
|
|
364
|
-
content = _read_stdin()
|
|
365
|
-
if content is None:
|
|
366
|
-
content = ""
|
|
367
|
-
|
|
368
|
-
from skills.file_skill import FileWriteSkill
|
|
369
|
-
skill = FileWriteSkill()
|
|
370
|
-
result = await skill.execute(path=a.path, content=content, encoding=a.encoding, append=a.append)
|
|
371
|
-
_print_result({"success": result.success, "message": result.message,
|
|
372
|
-
"data": result.data, "error": result.error})
|
|
373
|
-
|
|
374
|
-
# CLI send-file 标记
|
|
375
|
-
if result.success and result.files:
|
|
376
|
-
fpath = result.files[0]
|
|
377
|
-
print(f"\n__SEND_FILE__{fpath}|文件已写入: {Path(fpath).name}__END__")
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
async def cmd_ls(args):
|
|
381
|
-
"""列出目录内容"""
|
|
382
|
-
import argparse
|
|
383
|
-
# [v1.23.46] 过滤系统 ls 参数(-l, -a, -la 等)
|
|
384
|
-
# [v1.23.48] 过滤纯数字参数(LLM 误传如 myagent-ai ls 2)
|
|
385
|
-
args = [a for a in args if not a.isdigit()]
|
|
386
|
-
args = _filter_unknown_args(args, allowed_prefixes={"-p", "--pattern", "-r", "--recursive", "--max"})
|
|
387
|
-
p = argparse.ArgumentParser(prog="myagent-ai ls", description="列出目录内容")
|
|
388
|
-
p.add_argument("path", nargs="?", default=".", help="目录路径 (默认当前目录)")
|
|
389
|
-
p.add_argument("-p", "--pattern", default="*", help="文件匹配模式 (如 *.py)")
|
|
390
|
-
p.add_argument("-r", "--recursive", action="store_true", help="递归列出")
|
|
391
|
-
p.add_argument("--max", type=int, default=500, help="最大返回条目数 (默认500)")
|
|
392
|
-
a = p.parse_args(args)
|
|
393
|
-
|
|
394
|
-
from skills.file_skill import FileListSkill
|
|
395
|
-
skill = FileListSkill()
|
|
396
|
-
result = await skill.execute(path=a.path, pattern=a.pattern, recursive=a.recursive, max_items=a.max)
|
|
397
|
-
_print_result({"success": result.success, "message": result.message,
|
|
398
|
-
"data": result.data, "error": result.error})
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
async def cmd_rm(args):
|
|
402
|
-
"""删除文件或目录"""
|
|
403
|
-
import argparse
|
|
404
|
-
p = argparse.ArgumentParser(prog="myagent-ai rm", description="删除文件或目录")
|
|
405
|
-
p.add_argument("path", help="文件/目录路径")
|
|
406
|
-
p.add_argument("-r", "--recursive", action="store_true", help="递归删除目录")
|
|
407
|
-
a = p.parse_args(args)
|
|
408
|
-
|
|
409
|
-
from skills.file_skill import FileDeleteSkill
|
|
410
|
-
skill = FileDeleteSkill()
|
|
411
|
-
result = await skill.execute(path=a.path, recursive=a.recursive)
|
|
412
|
-
_print_result({"success": result.success, "message": result.message,
|
|
413
|
-
"data": result.data, "error": result.error})
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
async def cmd_grep(args):
|
|
417
|
-
"""搜索文件内容"""
|
|
418
|
-
import argparse
|
|
419
|
-
# [v1.23.46] 使用通用过滤器,过滤系统 grep 参数(-n, -i, -r 等)
|
|
420
|
-
args = _filter_unknown_args(args, allowed_prefixes={"-p", "--pattern", "--max", "--depth"})
|
|
421
|
-
p = argparse.ArgumentParser(prog="myagent-ai grep", description="在目录中搜索文件内容")
|
|
422
|
-
p.add_argument("query", help="搜索关键词")
|
|
423
|
-
p.add_argument("path", help="搜索目录路径")
|
|
424
|
-
p.add_argument("-p", "--pattern", default="*", help="文件匹配模式 (如 *.py)")
|
|
425
|
-
p.add_argument("--max", type=int, default=50, help="最大结果数 (默认50)")
|
|
426
|
-
p.add_argument("--depth", type=int, default=10, help="最大递归深度 (默认10)")
|
|
427
|
-
a = p.parse_args(args)
|
|
428
|
-
|
|
429
|
-
from skills.file_skill import FileSearchSkill
|
|
430
|
-
skill = FileSearchSkill()
|
|
431
|
-
result = await skill.execute(path=a.path, query=a.query, pattern=a.pattern,
|
|
432
|
-
max_results=a.max, max_depth=a.depth)
|
|
433
|
-
_print_result({"success": result.success, "message": result.message,
|
|
434
|
-
"data": result.data, "error": result.error})
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
async def cmd_mv(args):
|
|
438
|
-
"""移动/重命名文件"""
|
|
439
|
-
import argparse
|
|
440
|
-
p = argparse.ArgumentParser(prog="myagent-ai mv", description="移动或重命名文件/目录")
|
|
441
|
-
p.add_argument("source", help="源路径")
|
|
442
|
-
p.add_argument("dest", help="目标路径")
|
|
443
|
-
a = p.parse_args(args)
|
|
444
|
-
|
|
445
|
-
from skills.file_skill import FileMoveSkill
|
|
446
|
-
skill = FileMoveSkill()
|
|
447
|
-
result = await skill.execute(source=a.source, destination=a.dest)
|
|
448
|
-
_print_result({"success": result.success, "message": result.message,
|
|
449
|
-
"data": result.data, "error": result.error})
|
|
450
|
-
|
|
451
|
-
|
|
452
329
|
async def cmd_send_file(args):
|
|
453
330
|
"""发送文件给用户"""
|
|
454
331
|
import argparse
|
package/skills/ASR/LICENSE.txt
CHANGED
|
File without changes
|
package/skills/ASR/SKILL.md
CHANGED
|
File without changes
|
|
File without changes
|
package/skills/LLM/LICENSE.txt
CHANGED
|
File without changes
|
package/skills/LLM/SKILL.md
CHANGED
|
File without changes
|
|
File without changes
|
package/skills/TTS/LICENSE.txt
CHANGED
|
File without changes
|
package/skills/TTS/SKILL.md
CHANGED
|
File without changes
|
package/skills/TTS/tts.ts
CHANGED
|
File without changes
|
package/skills/VLM/LICENSE.txt
CHANGED
|
File without changes
|
package/skills/VLM/SKILL.md
CHANGED
|
File without changes
|
|
File without changes
|
package/skills/__init__.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/skills/base.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/skills/browser_skill.py
CHANGED
|
File without changes
|
|
File without changes
|
package/skills/charts/SKILL.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/skills/charts/setup.sh
CHANGED
|
File without changes
|
package/skills/chromedev_mcp.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/skills/docx/LICENSE.txt
CHANGED
|
File without changes
|
package/skills/docx/SKILL.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|