myagent-ai 1.25.2 → 1.25.5
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/core/tool_dispatcher.py +310 -2
- package/core/web_control.py +218 -15
- package/package.json +1 -1
- package/{myagent/start.sh → start.sh} +0 -0
- package/{myagent/web → web}/api_server.py +227 -0
- package/{myagent/web → web}/ui/chat/chat_main.js +36 -0
- package/worklog.md +20 -0
- package/myagent/Dockerfile +0 -54
- package/myagent/README.md +0 -378
- package/myagent/agents/__init__.py +0 -6
- package/myagent/agents/base.py +0 -442
- package/myagent/agents/main_agent.py +0 -1707
- package/myagent/agents/memory_agent.py +0 -423
- package/myagent/agents/tool_agent.py +0 -248
- package/myagent/chatbot/__init__.py +0 -5
- package/myagent/chatbot/base.py +0 -124
- package/myagent/chatbot/discord_bot.py +0 -146
- package/myagent/chatbot/feishu_bot.py +0 -548
- package/myagent/chatbot/manager.py +0 -271
- package/myagent/chatbot/qq_bot.py +0 -189
- package/myagent/chatbot/telegram_bot.py +0 -167
- package/myagent/chatbot/wechat_bot.py +0 -558
- package/myagent/chatbot/whatsapp_bot.py +0 -330
- package/myagent/chatbot/whatsapp_bridge/bridge.mjs +0 -192
- package/myagent/chatbot/whatsapp_bridge/package.json +0 -11
- package/myagent/communication/__init__.py +0 -66
- package/myagent/communication/channel.py +0 -576
- package/myagent/communication/crypto.py +0 -347
- package/myagent/communication/manager.py +0 -417
- package/myagent/communication/peer.py +0 -156
- package/myagent/config.py +0 -533
- package/myagent/core/__init__.py +0 -4
- package/myagent/core/agent_storage.py +0 -497
- package/myagent/core/config_broadcast.py +0 -307
- package/myagent/core/config_validator.py +0 -740
- package/myagent/core/context_builder.py +0 -955
- package/myagent/core/context_manager.py +0 -506
- package/myagent/core/deps_checker.py +0 -542
- package/myagent/core/llm.py +0 -1046
- package/myagent/core/logger.py +0 -295
- package/myagent/core/output_parser.py +0 -694
- package/myagent/core/permissions.py +0 -372
- package/myagent/core/stt.py +0 -320
- package/myagent/core/task_persistence.py +0 -359
- package/myagent/core/task_queue.py +0 -440
- package/myagent/core/tool_dispatcher.py +0 -758
- package/myagent/core/update_manager.py +0 -1392
- package/myagent/core/utils.py +0 -202
- package/myagent/core/version.py +0 -71
- package/myagent/core/vnc_manager.py +0 -1211
- package/myagent/core/web_control.py +0 -729
- package/myagent/data/novnc/lib/base64.js +0 -101
- package/myagent/data/novnc/lib/decoders/copyrect.js +0 -42
- package/myagent/data/novnc/lib/decoders/hextile.js +0 -199
- package/myagent/data/novnc/lib/decoders/jpeg.js +0 -149
- package/myagent/data/novnc/lib/decoders/raw.js +0 -74
- package/myagent/data/novnc/lib/decoders/rre.js +0 -54
- package/myagent/data/novnc/lib/decoders/tight.js +0 -302
- package/myagent/data/novnc/lib/decoders/tightpng.js +0 -47
- package/myagent/data/novnc/lib/decoders/zrle.js +0 -188
- package/myagent/data/novnc/lib/deflator.js +0 -85
- package/myagent/data/novnc/lib/des.js +0 -301
- package/myagent/data/novnc/lib/display.js +0 -520
- package/myagent/data/novnc/lib/encodings.js +0 -63
- package/myagent/data/novnc/lib/inflator.js +0 -74
- package/myagent/data/novnc/lib/input/domkeytable.js +0 -314
- package/myagent/data/novnc/lib/input/fixedkeys.js +0 -128
- package/myagent/data/novnc/lib/input/gesturehandler.js +0 -575
- package/myagent/data/novnc/lib/input/keyboard.js +0 -280
- package/myagent/data/novnc/lib/input/keysym.js +0 -879
- package/myagent/data/novnc/lib/input/keysymdef.js +0 -1352
- package/myagent/data/novnc/lib/input/util.js +0 -217
- package/myagent/data/novnc/lib/input/vkeys.js +0 -122
- package/myagent/data/novnc/lib/input/xtscancodes.js +0 -344
- package/myagent/data/novnc/lib/ra2.js +0 -1005
- package/myagent/data/novnc/lib/rfb.js +0 -3324
- package/myagent/data/novnc/lib/util/browser.js +0 -150
- package/myagent/data/novnc/lib/util/cursor.js +0 -265
- package/myagent/data/novnc/lib/util/element.js +0 -41
- package/myagent/data/novnc/lib/util/events.js +0 -133
- package/myagent/data/novnc/lib/util/eventtarget.js +0 -55
- package/myagent/data/novnc/lib/util/int.js +0 -21
- package/myagent/data/novnc/lib/util/logging.js +0 -61
- package/myagent/data/novnc/lib/util/md5.js +0 -77
- package/myagent/data/novnc/lib/util/strings.js +0 -36
- package/myagent/data/novnc/lib/vendor/pako/lib/utils/common.js +0 -58
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/adler32.js +0 -29
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/constants.js +0 -48
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/crc32.js +0 -35
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/deflate.js +0 -1755
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/gzheader.js +0 -41
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/inffast.js +0 -329
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/inflate.js +0 -1626
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/inftrees.js +0 -312
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/messages.js +0 -26
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/trees.js +0 -1157
- package/myagent/data/novnc/lib/vendor/pako/lib/zlib/zstream.js +0 -30
- package/myagent/data/novnc/lib/websock.js +0 -384
- package/myagent/data/uploads/2026-04/32c9e9d3-8cf_test.pdf.pdf +0 -1
- package/myagent/departments/__init__.py +0 -4
- package/myagent/departments/manager.py +0 -1015
- package/myagent/docs//351/205/215/347/275/256/344/275/277/347/224/250/350/257/264/346/230/216.md +0 -815
- package/myagent/download/README.md +0 -1
- package/myagent/executor/__init__.py +0 -4
- package/myagent/executor/engine.py +0 -1591
- package/myagent/groups/__init__.py +0 -15
- package/myagent/groups/manager.py +0 -881
- package/myagent/install/install.ps1 +0 -171
- package/myagent/install/install.sh +0 -258
- package/myagent/install/uninstall.ps1 +0 -142
- package/myagent/install/uninstall.sh +0 -149
- package/myagent/install.ps1 +0 -97
- package/myagent/knowledge/__init__.py +0 -4
- package/myagent/knowledge/rag.py +0 -444
- package/myagent/main.py +0 -1808
- package/myagent/memory/__init__.py +0 -4
- package/myagent/memory/manager.py +0 -1140
- package/myagent/myagent_start.ps1 +0 -26
- package/myagent/organization/__init__.py +0 -4
- package/myagent/organization/manager.py +0 -366
- package/myagent/package.json +0 -46
- package/myagent/requirements-optional.txt +0 -16
- package/myagent/requirements.txt +0 -90
- package/myagent/scripts/cli.py +0 -1384
- package/myagent/scripts/setup_helper.py +0 -33
- package/myagent/setup.py +0 -72
- package/myagent/skills/ASR/LICENSE.txt +0 -21
- package/myagent/skills/ASR/SKILL.md +0 -580
- package/myagent/skills/ASR/scripts/asr.ts +0 -27
- package/myagent/skills/LLM/LICENSE.txt +0 -21
- package/myagent/skills/LLM/SKILL.md +0 -856
- package/myagent/skills/LLM/scripts/chat.ts +0 -32
- package/myagent/skills/TTS/LICENSE.txt +0 -21
- package/myagent/skills/TTS/SKILL.md +0 -735
- package/myagent/skills/TTS/tts.ts +0 -25
- package/myagent/skills/VLM/LICENSE.txt +0 -21
- package/myagent/skills/VLM/SKILL.md +0 -588
- package/myagent/skills/VLM/scripts/vlm.ts +0 -57
- package/myagent/skills/__init__.py +0 -5
- package/myagent/skills/admin-manager/SKILL.md +0 -560
- package/myagent/skills/agent-browser/SKILL.md +0 -328
- package/myagent/skills/agent_tool_skill.py +0 -113
- package/myagent/skills/ai-news-collectors/SKILL.md +0 -157
- package/myagent/skills/ai-news-collectors/_meta.json +0 -6
- package/myagent/skills/ai-news-collectors/references/sources.md +0 -128
- package/myagent/skills/aminer-open-academic/SKILL.md +0 -312
- package/myagent/skills/aminer-open-academic/_meta.json +0 -6
- package/myagent/skills/aminer-open-academic/evals/evals.json +0 -46
- package/myagent/skills/aminer-open-academic/references/api-catalog.md +0 -1032
- package/myagent/skills/aminer-open-academic/scripts/aminer_client.py +0 -875
- package/myagent/skills/auto-target-tracker/SKILL.md +0 -317
- package/myagent/skills/base.py +0 -153
- package/myagent/skills/blog-writer/2024-02-17-radical-transparency-sales.md +0 -35
- package/myagent/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +0 -33
- package/myagent/skills/blog-writer/2024-02-17-short-form-content-marketing.md +0 -47
- package/myagent/skills/blog-writer/2024-02-17-typing-speed-benefits.md +0 -33
- package/myagent/skills/blog-writer/2024-03-14-effective-ai-prompts.md +0 -55
- package/myagent/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +0 -43
- package/myagent/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +0 -49
- package/myagent/skills/blog-writer/README.md +0 -2
- package/myagent/skills/blog-writer/SKILL.md +0 -158
- package/myagent/skills/blog-writer/_meta.json +0 -6
- package/myagent/skills/blog-writer/manage_examples.py +0 -90
- package/myagent/skills/blog-writer/style-guide.md +0 -160
- package/myagent/skills/browser_skill.py +0 -32
- package/myagent/skills/charts/LICENSE.txt +0 -13
- package/myagent/skills/charts/SKILL.md +0 -427
- package/myagent/skills/charts/references/_rules.md +0 -49
- package/myagent/skills/charts/references/d3.md +0 -199
- package/myagent/skills/charts/references/echarts.md +0 -651
- package/myagent/skills/charts/references/matplotlib.md +0 -617
- package/myagent/skills/charts/references/mermaid.md +0 -797
- package/myagent/skills/charts/references/mindmap-css.md +0 -911
- package/myagent/skills/charts/references/playwright-css.md +0 -801
- package/myagent/skills/charts/references/radial-grid.md +0 -576
- package/myagent/skills/charts/references/seaborn.md +0 -324
- package/myagent/skills/charts/setup.sh +0 -228
- package/myagent/skills/chromedev_mcp.py +0 -1669
- package/myagent/skills/coding-agent/SKILL.md +0 -120
- package/myagent/skills/coding-agent/_meta.json +0 -6
- package/myagent/skills/coding-agent/criteria.md +0 -48
- package/myagent/skills/coding-agent/execution.md +0 -42
- package/myagent/skills/coding-agent/memory-template.md +0 -38
- package/myagent/skills/coding-agent/planning.md +0 -31
- package/myagent/skills/coding-agent/state.md +0 -60
- package/myagent/skills/coding-agent/verification.md +0 -39
- package/myagent/skills/content-strategy/SKILL.md +0 -181
- package/myagent/skills/content-strategy/_meta.json +0 -6
- package/myagent/skills/contentanalysis/ExtractWisdom/SKILL.md +0 -229
- package/myagent/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +0 -60
- package/myagent/skills/contentanalysis/SKILL.md +0 -14
- package/myagent/skills/docx/LICENSE.txt +0 -13
- package/myagent/skills/docx/SKILL.md +0 -201
- package/myagent/skills/docx/references/chart-templates.md +0 -386
- package/myagent/skills/docx/references/common-rules.md +0 -419
- package/myagent/skills/docx/references/decorations.md +0 -538
- package/myagent/skills/docx/references/design-system.md +0 -1797
- package/myagent/skills/docx/references/docx-js-advanced.md +0 -257
- package/myagent/skills/docx/references/docx-js-core.md +0 -333
- package/myagent/skills/docx/references/faq.md +0 -323
- package/myagent/skills/docx/references/math-formulas.md +0 -276
- package/myagent/skills/docx/references/ooxml.md +0 -222
- package/myagent/skills/docx/references/toc.md +0 -264
- package/myagent/skills/docx/routes/comment.md +0 -88
- package/myagent/skills/docx/routes/create.md +0 -207
- package/myagent/skills/docx/routes/edit.md +0 -115
- package/myagent/skills/docx/routes/format.md +0 -120
- package/myagent/skills/docx/routes/read.md +0 -114
- package/myagent/skills/docx/scenes/academic.md +0 -783
- package/myagent/skills/docx/scenes/contract.md +0 -463
- package/myagent/skills/docx/scenes/copywriting.md +0 -139
- package/myagent/skills/docx/scenes/exam.md +0 -698
- package/myagent/skills/docx/scenes/official-doc.md +0 -411
- package/myagent/skills/docx/scenes/report.md +0 -340
- package/myagent/skills/docx/scenes/resume.md +0 -534
- package/myagent/skills/docx/scripts/__init__.py +0 -1
- package/myagent/skills/docx/scripts/add_toc_placeholders.py +0 -749
- package/myagent/skills/docx/scripts/document.py +0 -1333
- package/myagent/skills/docx/scripts/postcheck.py +0 -807
- package/myagent/skills/docx/scripts/templates/comments.xml +0 -3
- package/myagent/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/myagent/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/myagent/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/myagent/skills/docx/scripts/templates/people.xml +0 -3
- package/myagent/skills/docx/scripts/utilities.py +0 -374
- package/myagent/skills/docx/setup.sh +0 -177
- package/myagent/skills/docx_skill.py +0 -213
- package/myagent/skills/dream-interpreter/SKILL.md +0 -88
- package/myagent/skills/dream-interpreter/assets/example_asset.txt +0 -24
- package/myagent/skills/dream-interpreter/references/api_reference.md +0 -34
- package/myagent/skills/dream-interpreter/references/interpretation-guide.md +0 -83
- package/myagent/skills/dream-interpreter/references/output-schema.md +0 -65
- package/myagent/skills/dream-interpreter/references/questioning-strategy.md +0 -62
- package/myagent/skills/dream-interpreter/references/visual-mapping.md +0 -81
- package/myagent/skills/dream-interpreter/scripts/example.py +0 -19
- package/myagent/skills/dream-interpreter/skill.json +0 -7
- package/myagent/skills/example-skill/SKILL.md +0 -33
- package/myagent/skills/example-skill/run.sh +0 -11
- package/myagent/skills/file_send.py +0 -142
- package/myagent/skills/file_skill.py +0 -573
- package/myagent/skills/finance/Finance_API_Doc.md +0 -445
- package/myagent/skills/finance/SKILL.md +0 -53
- package/myagent/skills/frontend-dev/SKILL.md +0 -567
- package/myagent/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +0 -94
- package/myagent/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/myagent/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/myagent/skills/frontend-dev/references/asset-prompt-guide.md +0 -43
- package/myagent/skills/frontend-dev/references/env-setup.md +0 -33
- package/myagent/skills/frontend-dev/references/minimax-cli-reference.md +0 -133
- package/myagent/skills/frontend-dev/references/minimax-image-guide.md +0 -65
- package/myagent/skills/frontend-dev/references/minimax-music-guide.md +0 -216
- package/myagent/skills/frontend-dev/references/minimax-tts-guide.md +0 -78
- package/myagent/skills/frontend-dev/references/minimax-video-guide.md +0 -82
- package/myagent/skills/frontend-dev/references/minimax-voice-catalog.md +0 -686
- package/myagent/skills/frontend-dev/references/motion-recipes.md +0 -407
- package/myagent/skills/frontend-dev/references/troubleshooting.md +0 -85
- package/myagent/skills/frontend-dev/scripts/minimax_image.py +0 -137
- package/myagent/skills/frontend-dev/scripts/minimax_music.py +0 -157
- package/myagent/skills/frontend-dev/scripts/minimax_tts.py +0 -127
- package/myagent/skills/frontend-dev/scripts/minimax_video.py +0 -187
- package/myagent/skills/frontend-dev/templates/generator_template.js +0 -223
- package/myagent/skills/frontend-dev/templates/viewer.html +0 -599
- package/myagent/skills/fullstack-dev/SKILL.md +0 -1037
- package/myagent/skills/fullstack-dev/references/api-design.md +0 -444
- package/myagent/skills/fullstack-dev/references/auth-flow.md +0 -165
- package/myagent/skills/fullstack-dev/references/db-schema.md +0 -706
- package/myagent/skills/fullstack-dev/references/django-best-practices.md +0 -466
- package/myagent/skills/fullstack-dev/references/environment-management.md +0 -78
- package/myagent/skills/fullstack-dev/references/release-checklist.md +0 -278
- package/myagent/skills/fullstack-dev/references/technology-selection.md +0 -254
- package/myagent/skills/fullstack-dev/references/testing-strategy.md +0 -404
- package/myagent/skills/get-fortune-analysis/SKILL.md +0 -370
- package/myagent/skills/get-fortune-analysis/lunar_python.py +0 -91
- package/myagent/skills/gift-evaluator/SKILL.md +0 -83
- package/myagent/skills/gift-evaluator/html_tools.py +0 -268
- package/myagent/skills/gui_skill.py +0 -883
- package/myagent/skills/image-edit/LICENSE.txt +0 -21
- package/myagent/skills/image-edit/SKILL.md +0 -896
- package/myagent/skills/image-edit/scripts/image-edit.ts +0 -36
- package/myagent/skills/image-generation/LICENSE.txt +0 -21
- package/myagent/skills/image-generation/SKILL.md +0 -583
- package/myagent/skills/image-generation/scripts/image-generation.ts +0 -28
- package/myagent/skills/image-understand/LICENSE.txt +0 -21
- package/myagent/skills/image-understand/SKILL.md +0 -855
- package/myagent/skills/image-understand/scripts/image-understand.ts +0 -41
- package/myagent/skills/interview-designer/README.md +0 -70
- package/myagent/skills/interview-designer/SKILL.md +0 -53
- package/myagent/skills/interview-designer/_meta.json +0 -6
- package/myagent/skills/interview-designer/references/design_rationale.md +0 -43
- package/myagent/skills/interview-designer/templates/interview_guide_template.md +0 -62
- package/myagent/skills/market-research-reports/SKILL.md +0 -901
- package/myagent/skills/market-research-reports/assets/FORMATTING_GUIDE.md +0 -428
- package/myagent/skills/market-research-reports/assets/market_report_template.tex +0 -1380
- package/myagent/skills/market-research-reports/assets/market_research.sty +0 -564
- package/myagent/skills/market-research-reports/references/data_analysis_patterns.md +0 -548
- package/myagent/skills/market-research-reports/references/report_structure_guide.md +0 -999
- package/myagent/skills/market-research-reports/references/visual_generation_guide.md +0 -1077
- package/myagent/skills/market-research-reports/scripts/generate_market_visuals.py +0 -529
- package/myagent/skills/marketing-mode/README.md +0 -49
- package/myagent/skills/marketing-mode/SKILL.md +0 -693
- package/myagent/skills/marketing-mode/_meta.json +0 -6
- package/myagent/skills/marketing-mode/mode-prompt.md +0 -39
- package/myagent/skills/marketing-mode/skill.json +0 -51
- package/myagent/skills/mindfulness-meditation/SKILL.md +0 -65
- package/myagent/skills/mindfulness-meditation/_meta.json +0 -6
- package/myagent/skills/multi-search-engine/CHANGELOG.md +0 -15
- package/myagent/skills/multi-search-engine/CHANNELLOG.md +0 -48
- package/myagent/skills/multi-search-engine/SKILL.md +0 -78
- package/myagent/skills/multi-search-engine/_meta.json +0 -6
- package/myagent/skills/multi-search-engine/config.json +0 -14
- package/myagent/skills/multi-search-engine/metadata.json +0 -7
- package/myagent/skills/multi-search-engine/references/international-search.md +0 -651
- package/myagent/skills/pdf/LICENSE.txt +0 -13
- package/myagent/skills/pdf/SKILL.md +0 -921
- package/myagent/skills/pdf/briefs/academic.md +0 -1058
- package/myagent/skills/pdf/briefs/creative.md +0 -770
- package/myagent/skills/pdf/briefs/poster.md +0 -702
- package/myagent/skills/pdf/briefs/process-advanced.md +0 -284
- package/myagent/skills/pdf/briefs/process.md +0 -319
- package/myagent/skills/pdf/briefs/report.md +0 -1659
- package/myagent/skills/pdf/configs/components.md +0 -153
- package/myagent/skills/pdf/configs/fonts.md +0 -93
- package/myagent/skills/pdf/configs/visual_framework.md +0 -263
- package/myagent/skills/pdf/references/resume-academic.tex +0 -130
- package/myagent/skills/pdf/references/resume-altacv.tex +0 -190
- package/myagent/skills/pdf/scripts/cover_validate.js +0 -367
- package/myagent/skills/pdf/scripts/design_engine.py +0 -2816
- package/myagent/skills/pdf/scripts/html2pdf-next.js +0 -754
- package/myagent/skills/pdf/scripts/html2poster.js +0 -256
- package/myagent/skills/pdf/scripts/pdf.py +0 -2959
- package/myagent/skills/pdf/scripts/pdf_qa.py +0 -901
- package/myagent/skills/pdf/scripts/poster_validate.py +0 -1337
- package/myagent/skills/pdf/scripts/setup.sh +0 -269
- package/myagent/skills/pdf/scripts/toc_validate.py +0 -2075
- package/myagent/skills/pdf/typesetting/charts.md +0 -320
- package/myagent/skills/pdf/typesetting/cover-backgrounds.md +0 -384
- package/myagent/skills/pdf/typesetting/cover.md +0 -1442
- package/myagent/skills/pdf/typesetting/fill-engine.md +0 -527
- package/myagent/skills/pdf/typesetting/geometry.md +0 -142
- package/myagent/skills/pdf/typesetting/overflow.md +0 -630
- package/myagent/skills/pdf/typesetting/pagination.md +0 -367
- package/myagent/skills/pdf/typesetting/palette.md +0 -217
- package/myagent/skills/pdf/typesetting/typography.md +0 -20
- package/myagent/skills/pdf_skill.py +0 -372
- package/myagent/skills/podcast-generate/LICENSE.txt +0 -21
- package/myagent/skills/podcast-generate/SKILL.md +0 -198
- package/myagent/skills/podcast-generate/generate.ts +0 -661
- package/myagent/skills/podcast-generate/package.json +0 -30
- package/myagent/skills/podcast-generate/readme.md +0 -177
- package/myagent/skills/podcast-generate/test_data/segments.jsonl +0 -3
- package/myagent/skills/podcast-generate/tsconfig.json +0 -26
- package/myagent/skills/ppt/.claude/settings.local.json +0 -20
- package/myagent/skills/ppt/LICENSE.txt +0 -13
- package/myagent/skills/ppt/SKILL.md +0 -436
- package/myagent/skills/ppt/beamer.md +0 -1461
- package/myagent/skills/ppt/components.md +0 -1671
- package/myagent/skills/ppt/data-viz-components.md +0 -529
- package/myagent/skills/ppt/design-system.md +0 -211
- package/myagent/skills/ppt/html2pptx.md +0 -394
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/myagent/skills/ppt/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/myagent/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/myagent/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/myagent/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/myagent/skills/ppt/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/myagent/skills/ppt/ooxml/schemas/mce/mc.xsd +0 -75
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/myagent/skills/ppt/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/myagent/skills/ppt/ooxml/scripts/pack.py +0 -159
- package/myagent/skills/ppt/ooxml/scripts/unpack.py +0 -45
- package/myagent/skills/ppt/ooxml/scripts/validate.py +0 -70
- package/myagent/skills/ppt/ooxml/scripts/validation/__init__.py +0 -15
- package/myagent/skills/ppt/ooxml/scripts/validation/base.py +0 -948
- package/myagent/skills/ppt/ooxml/scripts/validation/docx.py +0 -274
- package/myagent/skills/ppt/ooxml/scripts/validation/pptx.py +0 -309
- package/myagent/skills/ppt/ooxml/scripts/validation/redlining.py +0 -279
- package/myagent/skills/ppt/ooxml.md +0 -427
- package/myagent/skills/ppt/references/beamer.md +0 -721
- package/myagent/skills/ppt/references/latex.md +0 -342
- package/myagent/skills/ppt/references/paper-navbar.tex +0 -73
- package/myagent/skills/ppt/references/progress-navbar.tex +0 -151
- package/myagent/skills/ppt/scripts/html2pptx.js +0 -1337
- package/myagent/skills/ppt/scripts/inventory.py +0 -512
- package/myagent/skills/ppt/scripts/pdf.py +0 -2046
- package/myagent/skills/ppt/scripts/rearrange.py +0 -144
- package/myagent/skills/ppt/scripts/replace.py +0 -231
- package/myagent/skills/ppt/scripts/tectonic +0 -0
- package/myagent/skills/ppt/scripts/thumbnail.py +0 -352
- package/myagent/skills/ppt/setup.sh +0 -197
- package/myagent/skills/ppt/themes.md +0 -581
- package/myagent/skills/ppt_skill.py +0 -317
- package/myagent/skills/pptx/LICENSE.txt +0 -30
- package/myagent/skills/pptx/SKILL.md +0 -507
- package/myagent/skills/pptx/html2pptx.md +0 -625
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/myagent/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/myagent/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/myagent/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/myagent/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/myagent/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/myagent/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/myagent/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/myagent/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/myagent/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/myagent/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/myagent/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/myagent/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/myagent/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/myagent/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/myagent/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/myagent/skills/pptx/ooxml.md +0 -427
- package/myagent/skills/pptx/scripts/html2pptx.js +0 -1044
- package/myagent/skills/pptx/scripts/inventory.py +0 -1020
- package/myagent/skills/pptx/scripts/rearrange.py +0 -231
- package/myagent/skills/pptx/scripts/replace.py +0 -385
- package/myagent/skills/pptx/scripts/thumbnail.py +0 -450
- package/myagent/skills/qingyan-research/SKILL.md +0 -294
- package/myagent/skills/qingyan-research/generate_html.py +0 -33
- package/myagent/skills/registry.py +0 -599
- package/myagent/skills/search_skill.py +0 -453
- package/myagent/skills/seo-content-writer/SKILL.md +0 -661
- package/myagent/skills/seo-content-writer/_meta.json +0 -6
- package/myagent/skills/seo-content-writer/references/content-structure-templates.md +0 -875
- package/myagent/skills/seo-content-writer/references/title-formulas.md +0 -339
- package/myagent/skills/skill-creator/LICENSE.txt +0 -202
- package/myagent/skills/skill-creator/SKILL.md +0 -485
- package/myagent/skills/skill-creator/agents/analyzer.md +0 -274
- package/myagent/skills/skill-creator/agents/comparator.md +0 -202
- package/myagent/skills/skill-creator/agents/grader.md +0 -223
- package/myagent/skills/skill-creator/assets/eval_review.html +0 -146
- package/myagent/skills/skill-creator/eval-viewer/generate_review.py +0 -471
- package/myagent/skills/skill-creator/eval-viewer/viewer.html +0 -1325
- package/myagent/skills/skill-creator/references/schemas.md +0 -430
- package/myagent/skills/skill-creator/scripts/__init__.py +0 -0
- package/myagent/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/myagent/skills/skill-creator/scripts/generate_report.py +0 -326
- package/myagent/skills/skill-creator/scripts/improve_description.py +0 -236
- package/myagent/skills/skill-creator/scripts/package_skill.py +0 -136
- package/myagent/skills/skill-creator/scripts/quick_validate.py +0 -103
- package/myagent/skills/skill-creator/scripts/run_eval.py +0 -310
- package/myagent/skills/skill-creator/scripts/run_loop.py +0 -328
- package/myagent/skills/skill-creator/scripts/utils.py +0 -47
- package/myagent/skills/skill-finder-cn/SKILL.md +0 -66
- package/myagent/skills/skill-finder-cn/_meta.json +0 -6
- package/myagent/skills/skill-finder-cn/package.json +0 -5
- package/myagent/skills/skill-finder-cn/scripts/search.sh +0 -15
- package/myagent/skills/skill-vetter/SKILL.md +0 -137
- package/myagent/skills/stock-analysis-skill/SKILL.md +0 -156
- package/myagent/skills/stock-analysis-skill/package.json +0 -21
- package/myagent/skills/stock-analysis-skill/src/analyzer.ts +0 -264
- package/myagent/skills/stock-analysis-skill/src/dataFetcher.ts +0 -130
- package/myagent/skills/stock-analysis-skill/src/dividend.ts +0 -226
- package/myagent/skills/stock-analysis-skill/src/index.ts +0 -327
- package/myagent/skills/stock-analysis-skill/src/rumorScanner.ts +0 -200
- package/myagent/skills/stock-analysis-skill/src/types.ts +0 -167
- package/myagent/skills/stock-analysis-skill/src/watchlist.ts +0 -292
- package/myagent/skills/stock-analysis-skill/tsconfig.json +0 -15
- package/myagent/skills/storyboard-manager/SKILL.md +0 -532
- package/myagent/skills/storyboard-manager/index.js +0 -9
- package/myagent/skills/storyboard-manager/package.json +0 -11
- package/myagent/skills/storyboard-manager/references/character_development.md +0 -232
- package/myagent/skills/storyboard-manager/references/story_structures.md +0 -148
- package/myagent/skills/storyboard-manager/scripts/consistency_checker.py +0 -391
- package/myagent/skills/storyboard-manager/scripts/timeline_tracker.py +0 -352
- package/myagent/skills/system_skill.py +0 -262
- package/myagent/skills/ui-ux-pro-max/SKILL.md +0 -43
- package/myagent/skills/ui-ux-pro-max/_meta.json +0 -6
- package/myagent/skills/ui-ux-pro-max/assets/data/charts.csv +0 -26
- package/myagent/skills/ui-ux-pro-max/assets/data/colors.csv +0 -97
- package/myagent/skills/ui-ux-pro-max/assets/data/icons.csv +0 -101
- package/myagent/skills/ui-ux-pro-max/assets/data/landing.csv +0 -31
- package/myagent/skills/ui-ux-pro-max/assets/data/products.csv +0 -97
- package/myagent/skills/ui-ux-pro-max/assets/data/react-performance.csv +0 -45
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +0 -56
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +0 -51
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +0 -59
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +0 -52
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/react.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +0 -61
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +0 -51
- package/myagent/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +0 -50
- package/myagent/skills/ui-ux-pro-max/assets/data/styles.csv +0 -68
- package/myagent/skills/ui-ux-pro-max/assets/data/typography.csv +0 -58
- package/myagent/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +0 -101
- package/myagent/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +0 -100
- package/myagent/skills/ui-ux-pro-max/assets/data/web-interface.csv +0 -31
- package/myagent/skills/ui-ux-pro-max/data/charts.csv +0 -26
- package/myagent/skills/ui-ux-pro-max/data/colors.csv +0 -97
- package/myagent/skills/ui-ux-pro-max/data/icons.csv +0 -101
- package/myagent/skills/ui-ux-pro-max/data/landing.csv +0 -31
- package/myagent/skills/ui-ux-pro-max/data/products.csv +0 -97
- package/myagent/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
- package/myagent/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
- package/myagent/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
- package/myagent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
- package/myagent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
- package/myagent/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
- package/myagent/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
- package/myagent/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
- package/myagent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
- package/myagent/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
- package/myagent/skills/ui-ux-pro-max/data/styles.csv +0 -68
- package/myagent/skills/ui-ux-pro-max/data/typography.csv +0 -58
- package/myagent/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
- package/myagent/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
- package/myagent/skills/ui-ux-pro-max/data/web-interface.csv +0 -31
- package/myagent/skills/ui-ux-pro-max/references/upstream-README.md +0 -488
- package/myagent/skills/ui-ux-pro-max/references/upstream-skill-content.md +0 -288
- package/myagent/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/myagent/skills/ui-ux-pro-max/scripts/core.py +0 -253
- package/myagent/skills/ui-ux-pro-max/scripts/design_system.py +0 -1071
- package/myagent/skills/ui-ux-pro-max/scripts/search.py +0 -111
- package/myagent/skills/video-generation/LICENSE.txt +0 -21
- package/myagent/skills/video-generation/SKILL.md +0 -1082
- package/myagent/skills/video-generation/scripts/video.ts +0 -168
- package/myagent/skills/video-understand/LICENSE.txt +0 -21
- package/myagent/skills/video-understand/SKILL.md +0 -916
- package/myagent/skills/video-understand/scripts/video-understand.ts +0 -41
- package/myagent/skills/visual-design-foundations/SKILL.md +0 -318
- package/myagent/skills/visual-design-foundations/references/color-systems.md +0 -417
- package/myagent/skills/visual-design-foundations/references/spacing-iconography.md +0 -425
- package/myagent/skills/visual-design-foundations/references/typography-systems.md +0 -432
- package/myagent/skills/web-reader/LICENSE.txt +0 -21
- package/myagent/skills/web-reader/SKILL.md +0 -1140
- package/myagent/skills/web-reader/scripts/web-reader.ts +0 -37
- package/myagent/skills/web-search/LICENSE.txt +0 -21
- package/myagent/skills/web-search/SKILL.md +0 -912
- package/myagent/skills/web-search/scripts/web_search.ts +0 -44
- package/myagent/skills/web-shader-extractor/SKILL.md +0 -145
- package/myagent/skills/web-shader-extractor/references/config-extraction.md +0 -50
- package/myagent/skills/web-shader-extractor/references/encoded-definitions.md +0 -53
- package/myagent/skills/web-shader-extractor/references/extraction-workflow.md +0 -61
- package/myagent/skills/web-shader-extractor/references/porting-strategy.md +0 -164
- package/myagent/skills/web-shader-extractor/references/shader-injection.md +0 -126
- package/myagent/skills/web-shader-extractor/references/shaders-com.md +0 -190
- package/myagent/skills/web-shader-extractor/references/tech-signatures.md +0 -54
- package/myagent/skills/web-shader-extractor/references/tsl-extraction.md +0 -41
- package/myagent/skills/web-shader-extractor/references/unicorn-studio.md +0 -353
- package/myagent/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +0 -153
- package/myagent/skills/web-shader-extractor/scripts/scan-bundle.sh +0 -76
- package/myagent/skills/writing-plans/SKILL.md +0 -116
- package/myagent/skills/writing-plans/_meta.json +0 -6
- package/myagent/skills/xlsx/LICENSE.txt +0 -13
- package/myagent/skills/xlsx/SKILL.md +0 -230
- package/myagent/skills/xlsx/engines/chart-templates.md +0 -167
- package/myagent/skills/xlsx/engines/chart.md +0 -87
- package/myagent/skills/xlsx/engines/design.md +0 -575
- package/myagent/skills/xlsx/engines/vba-templates.md +0 -435
- package/myagent/skills/xlsx/quality/pipeline.md +0 -196
- package/myagent/skills/xlsx/scenes/advanced.md +0 -271
- package/myagent/skills/xlsx/scenes/analyze-recipes.md +0 -234
- package/myagent/skills/xlsx/scenes/analyze.md +0 -95
- package/myagent/skills/xlsx/scenes/convert.md +0 -133
- package/myagent/skills/xlsx/scenes/create.md +0 -105
- package/myagent/skills/xlsx/scenes/edit-patterns.md +0 -222
- package/myagent/skills/xlsx/scenes/edit.md +0 -195
- package/myagent/skills/xlsx/scenes/finance.md +0 -318
- package/myagent/skills/xlsx/scenes/finance_lite.md +0 -192
- package/myagent/skills/xlsx/scenes/vba.md +0 -298
- package/myagent/skills/xlsx/setup.sh +0 -136
- package/myagent/skills/xlsx/templates/base.py +0 -632
- package/myagent/skills/xlsx/templates/palettes.py +0 -521
- package/myagent/skills/xlsx/xlsx.py +0 -1299
- package/myagent/skills/xlsx_skill.py +0 -346
- package/myagent/worklog-v1.22.md +0 -12
- package/myagent/worklog.md +0 -21
- /package/{myagent/start.js → start.js} +0 -0
- /package/{myagent/web → web}/__init__.py +0 -0
- /package/{myagent/web → web}/tts_handler.py +0 -0
- /package/{myagent/web → web}/ui/admin/admin-agentchat.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-agents.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-core.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-dashboard.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-executor.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-files.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-llm.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-logs.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-memory.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-org.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-permissions.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-platforms.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-sessions.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-skills.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-system.js +0 -0
- /package/{myagent/web → web}/ui/admin/admin-tasks.js +0 -0
- /package/{myagent/web → web}/ui/chat/chat.css +0 -0
- /package/{myagent/web → web}/ui/chat/chat.js +0 -0
- /package/{myagent/web → web}/ui/chat/chat_container.html +0 -0
- /package/{myagent/web → web}/ui/chat/flow_engine.js +0 -0
- /package/{myagent/web → web}/ui/chat/groupchat.js +0 -0
- /package/{myagent/web → web}/ui/chat/left_sessions.html +0 -0
- /package/{myagent/web → web}/ui/chat/middle_chat.html +0 -0
- /package/{myagent/web → web}/ui/chat/right_agents.html +0 -0
- /package/{myagent/web → web}/ui/index.html +0 -0
package/core/tool_dispatcher.py
CHANGED
|
@@ -539,7 +539,7 @@ class ToolDispatcher:
|
|
|
539
539
|
) -> Dict:
|
|
540
540
|
"""网页控制器 — 浏览器面板"""
|
|
541
541
|
try:
|
|
542
|
-
from core.web_control import get_web_control_manager
|
|
542
|
+
from core.web_control import get_web_control_manager, LOGIN_URLS
|
|
543
543
|
wc_mgr = get_web_control_manager()
|
|
544
544
|
action = params.get("action", "open")
|
|
545
545
|
session_id = params.get("session_id", "").strip()
|
|
@@ -604,7 +604,7 @@ class ToolDispatcher:
|
|
|
604
604
|
|
|
605
605
|
elif action in ("get_content", "click", "fill", "scroll", "evaluate", "wait", "screenshot"):
|
|
606
606
|
# 这些 action 通过命令队列由浏览器面板执行
|
|
607
|
-
cmd_result = await
|
|
607
|
+
cmd_result = await wc_mgr.queue_command(session_id, action, params, timeout=30)
|
|
608
608
|
return {
|
|
609
609
|
"success": cmd_result.get("success", False),
|
|
610
610
|
"output": cmd_result.get("output", cmd_result.get("result", "")),
|
|
@@ -612,6 +612,314 @@ class ToolDispatcher:
|
|
|
612
612
|
"data": cmd_result.get("data"),
|
|
613
613
|
}
|
|
614
614
|
|
|
615
|
+
elif action == "human_interact":
|
|
616
|
+
# [v1.25.3] 人机交互模式 — Agent 暂停, 用户手动操作
|
|
617
|
+
prompt = params.get("prompt", "请在上方网页中完成登录或验证操作")
|
|
618
|
+
platform = params.get("platform", "")
|
|
619
|
+
timeout = int(params.get("timeout", 0)) or 300 # 默认5分钟
|
|
620
|
+
auto_save = params.get("auto_save_cookies", True)
|
|
621
|
+
|
|
622
|
+
# 1. 向面板发送 human_interact 命令(切换到人机模式)
|
|
623
|
+
session.human_mode = True
|
|
624
|
+
cmd_result = await wc_mgr.queue_command(
|
|
625
|
+
session_id, "human_interact",
|
|
626
|
+
{"prompt": prompt, "platform": platform},
|
|
627
|
+
timeout=15
|
|
628
|
+
)
|
|
629
|
+
|
|
630
|
+
# 2. 通知前端显示人机交互 UI
|
|
631
|
+
if stream_callback:
|
|
632
|
+
await self._emit_sse("v2_web_control", {
|
|
633
|
+
"action": "human_interact",
|
|
634
|
+
"session_id": session_id,
|
|
635
|
+
"prompt": prompt,
|
|
636
|
+
"platform": platform,
|
|
637
|
+
"timeout": timeout,
|
|
638
|
+
}, stream_callback)
|
|
639
|
+
|
|
640
|
+
# 3. 创建 human_event 并等待用户完成
|
|
641
|
+
loop = asyncio.get_event_loop()
|
|
642
|
+
session.human_event = asyncio.Event()
|
|
643
|
+
session.human_result = None
|
|
644
|
+
|
|
645
|
+
try:
|
|
646
|
+
await asyncio.wait_for(session.human_event.wait(), timeout=timeout)
|
|
647
|
+
except asyncio.TimeoutError:
|
|
648
|
+
session.human_mode = False
|
|
649
|
+
# 恢复 agent 模式
|
|
650
|
+
try:
|
|
651
|
+
await wc_mgr.queue_command(session_id, "agent_mode", {}, timeout=5)
|
|
652
|
+
except Exception:
|
|
653
|
+
pass
|
|
654
|
+
if stream_callback:
|
|
655
|
+
await self._emit_sse("v2_web_control", {
|
|
656
|
+
"action": "human_done",
|
|
657
|
+
"session_id": session_id,
|
|
658
|
+
"timed_out": True,
|
|
659
|
+
}, stream_callback)
|
|
660
|
+
return {"success": False, "error": f"人机交互超时 ({timeout}s)"}
|
|
661
|
+
|
|
662
|
+
# 4. 用户完成, 恢复 agent 模式
|
|
663
|
+
session.human_mode = False
|
|
664
|
+
try:
|
|
665
|
+
await wc_mgr.queue_command(session_id, "agent_mode", {}, timeout=5)
|
|
666
|
+
except Exception:
|
|
667
|
+
pass
|
|
668
|
+
|
|
669
|
+
# 5. 自动保存 cookies
|
|
670
|
+
cookie_file = ""
|
|
671
|
+
if auto_save:
|
|
672
|
+
try:
|
|
673
|
+
cookie_file = session.save_cookies_to_file()
|
|
674
|
+
except Exception as e:
|
|
675
|
+
cookie_file = f"(保存失败: {e})"
|
|
676
|
+
|
|
677
|
+
# 6. 获取当前页面信息
|
|
678
|
+
page_info = ""
|
|
679
|
+
try:
|
|
680
|
+
info_result = await wc_mgr.queue_command(session_id, "get_content", {"what": "url,title"}, timeout=10)
|
|
681
|
+
if info_result.get("success"):
|
|
682
|
+
page_info = info_result.get("result", "")
|
|
683
|
+
except Exception:
|
|
684
|
+
pass
|
|
685
|
+
|
|
686
|
+
result_data = session.human_result or {}
|
|
687
|
+
if stream_callback:
|
|
688
|
+
await self._emit_sse("v2_web_control", {
|
|
689
|
+
"action": "human_done",
|
|
690
|
+
"session_id": session_id,
|
|
691
|
+
}, stream_callback)
|
|
692
|
+
|
|
693
|
+
output_parts = [f"用户已完成人机交互操作"]
|
|
694
|
+
if page_info:
|
|
695
|
+
output_parts.append(f"当前页面: {page_info}")
|
|
696
|
+
if cookie_file:
|
|
697
|
+
output_parts.append(f"Cookies 已保存: {cookie_file}")
|
|
698
|
+
if result_data.get("note"):
|
|
699
|
+
output_parts.append(f"用户备注: {result_data['note']}")
|
|
700
|
+
|
|
701
|
+
return {
|
|
702
|
+
"success": True,
|
|
703
|
+
"output": "\n".join(output_parts),
|
|
704
|
+
"session_id": session_id,
|
|
705
|
+
"cookies_saved": bool(cookie_file) and not cookie_file.startswith("("),
|
|
706
|
+
"cookie_file": cookie_file,
|
|
707
|
+
"data": result_data,
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
elif action == "login":
|
|
711
|
+
# [v1.25.4] 一站式登录流程: 导航 → 人机交互 → 自动保存凭证
|
|
712
|
+
platform = params.get("platform", "").strip().lower()
|
|
713
|
+
login_url = params.get("url", "").strip()
|
|
714
|
+
prompt = params.get("prompt", "")
|
|
715
|
+
timeout = int(params.get("timeout", 0)) or 300
|
|
716
|
+
label = params.get("label", "")
|
|
717
|
+
|
|
718
|
+
# 查找平台登录 URL
|
|
719
|
+
if not login_url and platform:
|
|
720
|
+
login_url = LOGIN_URLS.get(platform, "")
|
|
721
|
+
if not login_url:
|
|
722
|
+
return {"success": False, "error": f"未知平台 '{platform}',未找到预置登录 URL,请通过 url 参数指定登录页地址"}
|
|
723
|
+
|
|
724
|
+
if not login_url:
|
|
725
|
+
return {"success": False, "error": "请提供 platform (平台名称) 或 url (登录页地址) 参数"}
|
|
726
|
+
|
|
727
|
+
# 构建默认提示
|
|
728
|
+
platform_names = {
|
|
729
|
+
"qq": "QQ", "qq_mail": "QQ邮箱", "wechat_work": "企业微信",
|
|
730
|
+
"wechat_mp": "微信公众号", "telegram": "Telegram", "telegram_web": "Telegram Web",
|
|
731
|
+
"discord": "Discord", "feishu": "飞书", "feishu_admin": "飞书管理后台",
|
|
732
|
+
"lark": "Lark", "dingtalk": "钉钉", "github": "GitHub",
|
|
733
|
+
"google": "Google", "bilibili": "B站", "taobao": "淘宝",
|
|
734
|
+
"zhihu": "知乎", "weibo": "微博",
|
|
735
|
+
}
|
|
736
|
+
display_name = platform_names.get(platform, platform) if platform else ""
|
|
737
|
+
if not prompt:
|
|
738
|
+
prompt = f"请在上方页面完成 {display_name} 登录操作" if display_name else "请在上方页面完成登录操作"
|
|
739
|
+
# 添加平台特定提示
|
|
740
|
+
if platform in ("qq", "wechat_mp", "telegram", "discord", "dingtalk"):
|
|
741
|
+
prompt += "(可能需要扫码或输入账号密码)"
|
|
742
|
+
elif platform in ("wechat_work", "feishu", "feishu_admin", "lark"):
|
|
743
|
+
prompt += "(请使用管理员账号扫码登录)"
|
|
744
|
+
|
|
745
|
+
# Step 1: 打开面板
|
|
746
|
+
session.current_url = login_url
|
|
747
|
+
if stream_callback:
|
|
748
|
+
await self._emit_sse("v2_web_control", {
|
|
749
|
+
"action": "login",
|
|
750
|
+
"session_id": session_id,
|
|
751
|
+
"url": login_url,
|
|
752
|
+
"panel_url": f"/api/web_control/panel?sid={session_id}",
|
|
753
|
+
"platform": platform,
|
|
754
|
+
"prompt": prompt,
|
|
755
|
+
"timeout": timeout,
|
|
756
|
+
}, stream_callback)
|
|
757
|
+
|
|
758
|
+
# Step 2: 等待面板打开
|
|
759
|
+
if not session.is_panel_open:
|
|
760
|
+
waited = 0
|
|
761
|
+
while waited < 15:
|
|
762
|
+
await asyncio.sleep(1)
|
|
763
|
+
waited += 1
|
|
764
|
+
if session.is_panel_open:
|
|
765
|
+
break
|
|
766
|
+
if session._closed:
|
|
767
|
+
return {"success": False, "error": "会话已关闭"}
|
|
768
|
+
|
|
769
|
+
# Step 3: 切换人机交互模式
|
|
770
|
+
session.human_mode = True
|
|
771
|
+
try:
|
|
772
|
+
await wc_mgr.queue_command(
|
|
773
|
+
session_id, "human_interact",
|
|
774
|
+
{"prompt": prompt, "platform": display_name},
|
|
775
|
+
timeout=15
|
|
776
|
+
)
|
|
777
|
+
except Exception as e:
|
|
778
|
+
logger.warning(f"[WebControl] human_interact 命令发送失败: {e}")
|
|
779
|
+
|
|
780
|
+
# Step 4: 等待用户完成
|
|
781
|
+
loop = asyncio.get_event_loop()
|
|
782
|
+
session.human_event = asyncio.Event()
|
|
783
|
+
session.human_result = None
|
|
784
|
+
|
|
785
|
+
try:
|
|
786
|
+
await asyncio.wait_for(session.human_event.wait(), timeout=timeout)
|
|
787
|
+
except asyncio.TimeoutError:
|
|
788
|
+
session.human_mode = False
|
|
789
|
+
try:
|
|
790
|
+
await wc_mgr.queue_command(session_id, "agent_mode", {}, timeout=5)
|
|
791
|
+
except Exception:
|
|
792
|
+
pass
|
|
793
|
+
if stream_callback:
|
|
794
|
+
await self._emit_sse("v2_web_control", {
|
|
795
|
+
"action": "human_done", "session_id": session_id, "timed_out": True,
|
|
796
|
+
}, stream_callback)
|
|
797
|
+
return {"success": False, "error": f"登录超时 ({timeout}s),请重试"}
|
|
798
|
+
|
|
799
|
+
# Step 5: 用户完成,恢复 agent 模式
|
|
800
|
+
session.human_mode = False
|
|
801
|
+
try:
|
|
802
|
+
await wc_mgr.queue_command(session_id, "agent_mode", {}, timeout=5)
|
|
803
|
+
except Exception:
|
|
804
|
+
pass
|
|
805
|
+
|
|
806
|
+
# Step 6: 获取当前页面信息
|
|
807
|
+
page_info = ""
|
|
808
|
+
try:
|
|
809
|
+
info_result = await wc_mgr.queue_command(session_id, "get_content", {"what": "url,title"}, timeout=10)
|
|
810
|
+
if info_result.get("success"):
|
|
811
|
+
page_info = info_result.get("result", "")
|
|
812
|
+
except Exception:
|
|
813
|
+
pass
|
|
814
|
+
|
|
815
|
+
# Step 7: 自动保存 cookies + 凭证
|
|
816
|
+
cookie_file = ""
|
|
817
|
+
cred_file = ""
|
|
818
|
+
result_data = session.human_result or {}
|
|
819
|
+
|
|
820
|
+
try:
|
|
821
|
+
cookie_file = session.save_cookies_to_file()
|
|
822
|
+
except Exception as e:
|
|
823
|
+
cookie_file = f"(保存失败: {e})"
|
|
824
|
+
|
|
825
|
+
# 保存到凭证库
|
|
826
|
+
if platform:
|
|
827
|
+
try:
|
|
828
|
+
extra = {"note": result_data.get("note", ""), "login_url": login_url}
|
|
829
|
+
cred_file = session.save_credentials_to_file(platform, label=label, extra=extra)
|
|
830
|
+
except Exception as e:
|
|
831
|
+
cred_file = f"(保存失败: {e})"
|
|
832
|
+
|
|
833
|
+
# 检测是否登录成功 (URL 发生了变化)
|
|
834
|
+
login_success = False
|
|
835
|
+
if page_info and login_url:
|
|
836
|
+
current_url = page_info.split(",")[0].strip() if "," in page_info else page_info
|
|
837
|
+
login_success = (current_url != login_url and "login" not in current_url.lower())
|
|
838
|
+
|
|
839
|
+
if stream_callback:
|
|
840
|
+
await self._emit_sse("v2_web_control", {
|
|
841
|
+
"action": "login_done",
|
|
842
|
+
"session_id": session_id,
|
|
843
|
+
"platform": platform,
|
|
844
|
+
"login_success": login_success,
|
|
845
|
+
}, stream_callback)
|
|
846
|
+
|
|
847
|
+
output_parts = []
|
|
848
|
+
if login_success:
|
|
849
|
+
output_parts.append(f"{display_name} 登录成功")
|
|
850
|
+
else:
|
|
851
|
+
output_parts.append(f"用户已完成 {display_name} 登录操作")
|
|
852
|
+
if page_info:
|
|
853
|
+
output_parts.append(f"当前页面: {page_info}")
|
|
854
|
+
if cookie_file and not cookie_file.startswith("("):
|
|
855
|
+
output_parts.append(f"Cookies 已保存: {cookie_file}")
|
|
856
|
+
if cred_file and not cred_file.startswith("("):
|
|
857
|
+
output_parts.append(f"凭证已保存: {cred_file}")
|
|
858
|
+
if result_data.get("note"):
|
|
859
|
+
output_parts.append(f"用户备注: {result_data['note']}")
|
|
860
|
+
|
|
861
|
+
return {
|
|
862
|
+
"success": True,
|
|
863
|
+
"output": "\n".join(output_parts),
|
|
864
|
+
"session_id": session_id,
|
|
865
|
+
"login_success": login_success,
|
|
866
|
+
"platform": platform,
|
|
867
|
+
"cookie_file": cookie_file,
|
|
868
|
+
"credential_file": cred_file,
|
|
869
|
+
"data": result_data,
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
elif action == "save_credentials":
|
|
873
|
+
# [v1.25.4] 保存凭证到凭证库
|
|
874
|
+
platform = params.get("platform", "").strip()
|
|
875
|
+
label = params.get("label", "").strip()
|
|
876
|
+
if not platform:
|
|
877
|
+
return {"success": False, "error": "请提供 platform 参数 (平台名称)"}
|
|
878
|
+
try:
|
|
879
|
+
filepath = session.save_credentials_to_file(platform, label=label)
|
|
880
|
+
return {"success": True, "output": f"凭证已保存到: {filepath}", "credential_file": filepath}
|
|
881
|
+
except Exception as e:
|
|
882
|
+
return {"success": False, "error": f"保存凭证失败: {e}"}
|
|
883
|
+
|
|
884
|
+
elif action == "list_credentials":
|
|
885
|
+
# [v1.25.4] 列出所有已保存的凭证
|
|
886
|
+
creds = WebControlSession.list_credentials()
|
|
887
|
+
if not creds:
|
|
888
|
+
return {"success": True, "output": "暂无已保存的登录凭证", "data": []}
|
|
889
|
+
lines = [f"已保存 {len(creds)} 个凭证:"]
|
|
890
|
+
for c in creds:
|
|
891
|
+
lines.append(f" - {c['platform']} ({c.get('label', '无标签')}) | 保存时间: {c['saved_at']} | Cookies: {c['cookie_count']}个")
|
|
892
|
+
return {"success": True, "output": "\n".join(lines), "data": creds}
|
|
893
|
+
|
|
894
|
+
elif action == "delete_credentials":
|
|
895
|
+
# [v1.25.4] 删除凭证
|
|
896
|
+
platform = params.get("platform", "").strip()
|
|
897
|
+
if not platform:
|
|
898
|
+
return {"success": False, "error": "请提供 platform 参数"}
|
|
899
|
+
deleted = WebControlSession.delete_credentials(platform)
|
|
900
|
+
if deleted:
|
|
901
|
+
return {"success": True, "output": f"已删除 {platform} 的凭证"}
|
|
902
|
+
else:
|
|
903
|
+
return {"success": False, "error": f"未找到 {platform} 的凭证"}
|
|
904
|
+
|
|
905
|
+
elif action == "save_cookies":
|
|
906
|
+
# [v1.25.3] 保存 cookies 到文件
|
|
907
|
+
label = params.get("label", "")
|
|
908
|
+
try:
|
|
909
|
+
filepath = session.save_cookies_to_file(label)
|
|
910
|
+
return {"success": True, "output": f"Cookies 已保存到: {filepath} ({len(session.cookies)} 个)", "cookie_file": filepath}
|
|
911
|
+
except Exception as e:
|
|
912
|
+
return {"success": False, "error": f"保存 cookies 失败: {e}"}
|
|
913
|
+
|
|
914
|
+
elif action == "load_cookies":
|
|
915
|
+
# [v1.25.3] 从文件加载 cookies
|
|
916
|
+
label = params.get("label", "")
|
|
917
|
+
count = session.load_cookies_from_file(label)
|
|
918
|
+
if count > 0:
|
|
919
|
+
return {"success": True, "output": f"已加载 {count} 个 Cookies"}
|
|
920
|
+
else:
|
|
921
|
+
return {"success": False, "error": f"未找到匹配的 Cookie 文件 (label: {label or '自动'})"}
|
|
922
|
+
|
|
615
923
|
else:
|
|
616
924
|
return {"success": False, "error": f"未知 web_control action: {action}"}
|
|
617
925
|
|
package/core/web_control.py
CHANGED
|
@@ -1,27 +1,57 @@
|
|
|
1
1
|
"""
|
|
2
|
-
[v1.
|
|
2
|
+
[v1.25.4] Web Control — 聊天内嵌网页控制器
|
|
3
3
|
|
|
4
4
|
架构说明:
|
|
5
5
|
- 服务端代理: 通过 /api/web_control/proxy 获取并改写网页内容, 注入控制脚本
|
|
6
6
|
- 会话管理: 每个聊天会话可创建一个 web_control 会话, 维护 cookie/命令队列/结果 Future
|
|
7
7
|
- 双向通信: Agent → 命令队列 → 客户端轮询 → 执行 → POST 结果 → Agent 阻塞等待
|
|
8
8
|
- 前端面板: 基础JS框架 + 动态容器(iframe), 服务端下发控制脚本在容器内执行
|
|
9
|
+
- [v1.25.3] 人机交互: human_interact action 允许 Agent 暂停控制, 用户手动登录后继续
|
|
10
|
+
- [v1.25.4] 登录流程: login action 提供一站式登录编排 + 凭证管理
|
|
9
11
|
|
|
10
12
|
工具 web_control 支持的 action:
|
|
11
|
-
open
|
|
12
|
-
navigate
|
|
13
|
-
click
|
|
14
|
-
fill
|
|
15
|
-
scroll
|
|
16
|
-
evaluate
|
|
17
|
-
get_content
|
|
18
|
-
set_cookies
|
|
19
|
-
get_cookies
|
|
20
|
-
wait
|
|
21
|
-
screenshot
|
|
22
|
-
|
|
13
|
+
open — 打开 URL (发送 v2_web_control SSE 事件, 前端打开面板)
|
|
14
|
+
navigate — 在已打开的面板中导航到新 URL
|
|
15
|
+
click — 点击元素 (selector: CSS 选择器)
|
|
16
|
+
fill — 填写输入框 (selector + value)
|
|
17
|
+
scroll — 滚动页面 (direction: up/down/top/bottom, distance: px)
|
|
18
|
+
evaluate — 执行 JavaScript (script: JS 代码)
|
|
19
|
+
get_content — 获取页面内容 (what: text/html/url/title/cookies/links)
|
|
20
|
+
set_cookies — 设置 cookie (cookies: [{name, value, domain, path}])
|
|
21
|
+
get_cookies — 获取当前 cookie
|
|
22
|
+
wait — 等待 (time: 毫秒 或 selector: CSS选择器, timeout: 秒)
|
|
23
|
+
screenshot — 截图 (返回 base64 PNG)
|
|
24
|
+
human_interact — [v1.25.3] 切换为人机交互模式, 用户可手动操作页面 (登录/验证码等)
|
|
25
|
+
save_cookies — [v1.25.3] 保存当前会话 cookies 到持久化文件
|
|
26
|
+
load_cookies — [v1.25.3] 从持久化文件加载 cookies
|
|
27
|
+
login — [v1.25.4] 一站式登录流程: 导航到登录页 → 人机交互 → 自动保存凭证
|
|
28
|
+
save_credentials — [v1.25.4] 保存登录凭证 (cookies + 元信息) 到凭证库
|
|
29
|
+
list_credentials — [v1.25.4] 列出已保存的凭证
|
|
30
|
+
delete_credentials — [v1.25.4] 删除指定凭证
|
|
31
|
+
close — 关闭 web_control 面板
|
|
23
32
|
"""
|
|
24
33
|
|
|
34
|
+
# [v1.25.4] 常用平台登录 URL 模板
|
|
35
|
+
LOGIN_URLS = {
|
|
36
|
+
"qq": "https://qun.qq.com/",
|
|
37
|
+
"qq_mail": "https://mail.qq.com/",
|
|
38
|
+
"wechat_work": "https://work.weixin.qq.com/wework_admin/frame",
|
|
39
|
+
"wechat_mp": "https://mp.weixin.qq.com/",
|
|
40
|
+
"telegram": "https://web.telegram.org/",
|
|
41
|
+
"telegram_web": "https://web.telegram.org/",
|
|
42
|
+
"discord": "https://discord.com/login",
|
|
43
|
+
"feishu": "https://open.feishu.cn/",
|
|
44
|
+
"feishu_admin": "https://feishu.cn/admin",
|
|
45
|
+
"lark": "https://open.larksuite.com/",
|
|
46
|
+
"dingtalk": "https://login.dingtalk.com/",
|
|
47
|
+
"github": "https://github.com/login",
|
|
48
|
+
"google": "https://accounts.google.com/",
|
|
49
|
+
"bilibili": "https://passport.bilibili.com/login",
|
|
50
|
+
"taobao": "https://login.taobao.com/",
|
|
51
|
+
"zhihu": "https://www.zhihu.com/signin",
|
|
52
|
+
"weibo": "https://passport.weibo.com/sso/signin",
|
|
53
|
+
}
|
|
54
|
+
|
|
25
55
|
import asyncio
|
|
26
56
|
import json
|
|
27
57
|
import os
|
|
@@ -107,6 +137,19 @@ CONTROL_SCRIPT = """
|
|
|
107
137
|
case 'screenshot':
|
|
108
138
|
result = await doScreenshot(cmd.params || {});
|
|
109
139
|
break;
|
|
140
|
+
case 'human_interact':
|
|
141
|
+
// [v1.25.3] 切换人机模式
|
|
142
|
+
window.__webControlHumanMode = true;
|
|
143
|
+
// 显示人机模式提示横幅
|
|
144
|
+
showHumanModeBanner(cmd.params || {});
|
|
145
|
+
result = { success: true, human_mode: true, message: '已切换到人机交互模式, 用户可自由操作页面' };
|
|
146
|
+
break;
|
|
147
|
+
case 'agent_mode':
|
|
148
|
+
// [v1.25.3] 恢复 Agent 控制模式
|
|
149
|
+
window.__webControlHumanMode = false;
|
|
150
|
+
hideHumanModeBanner();
|
|
151
|
+
result = { success: true, human_mode: false, message: '已恢复 Agent 控制模式' };
|
|
152
|
+
break;
|
|
110
153
|
default:
|
|
111
154
|
result = { success: false, error: 'Unknown action: ' + cmd.action };
|
|
112
155
|
}
|
|
@@ -285,6 +328,40 @@ CONTROL_SCRIPT = """
|
|
|
285
328
|
});
|
|
286
329
|
}
|
|
287
330
|
|
|
331
|
+
// [v1.25.3] 人机模式横幅
|
|
332
|
+
function showHumanModeBanner(p) {
|
|
333
|
+
var banner = document.createElement('div');
|
|
334
|
+
banner.id = '__wcHumanBanner';
|
|
335
|
+
var promptText = (p && p.prompt) ? p.prompt : '人机交互模式 — 请在此页面完成登录或验证操作';
|
|
336
|
+
var platformText = (p && p.platform) ? ' (' + p.platform + ')' : '';
|
|
337
|
+
banner.style.cssText = 'position:fixed;top:0;left:0;right:0;z-index:999999;padding:10px 16px;' +
|
|
338
|
+
'background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;font-size:14px;font-weight:600;' +
|
|
339
|
+
'display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 12px rgba(0,0,0,0.3);font-family:-apple-system,BlinkMacSystemFont,sans-serif;';
|
|
340
|
+
banner.innerHTML = '<span>\u{1F3AF} ' + promptText + platformText + '</span>';
|
|
341
|
+
document.body.appendChild(banner);
|
|
342
|
+
// 为页面内容添加顶部间距
|
|
343
|
+
document.body.style.paddingTop = '44px';
|
|
344
|
+
// [v1.25.4] 记录进入人机模式时的 URL, 用于检测登录成功
|
|
345
|
+
window.__webControlLoginStartUrl = window.location.href;
|
|
346
|
+
// [v1.25.4] 监听 URL 变化 (登录成功通常伴随跳转)
|
|
347
|
+
window.__webControlLastNotifiedUrl = window.location.href;
|
|
348
|
+
var _urlCheckInterval = setInterval(function() {
|
|
349
|
+
if (!window.__webControlHumanMode) { clearInterval(_urlCheckInterval); return; }
|
|
350
|
+
var currentUrl = window.location.href;
|
|
351
|
+
if (currentUrl !== window.__webControlLastNotifiedUrl) {
|
|
352
|
+
window.__webControlLastNotifiedUrl = currentUrl;
|
|
353
|
+
// 通知父窗口 URL 发生了变化 (可能登录成功)
|
|
354
|
+
notifyParent('url_change', { url: currentUrl, previous_url: window.__webControlLoginStartUrl });
|
|
355
|
+
}
|
|
356
|
+
}, 1000);
|
|
357
|
+
}
|
|
358
|
+
function hideHumanModeBanner() {
|
|
359
|
+
var banner = document.getElementById('__wcHumanBanner');
|
|
360
|
+
if (banner) banner.remove();
|
|
361
|
+
document.body.style.paddingTop = '';
|
|
362
|
+
window.__webControlLoginStartUrl = null;
|
|
363
|
+
}
|
|
364
|
+
|
|
288
365
|
function doScreenshot(p) {
|
|
289
366
|
// html2canvas 未加载时返回提示
|
|
290
367
|
if (typeof html2canvas === 'undefined') {
|
|
@@ -296,8 +373,12 @@ CONTROL_SCRIPT = """
|
|
|
296
373
|
});
|
|
297
374
|
}
|
|
298
375
|
|
|
299
|
-
//
|
|
376
|
+
// [v1.25.3] 人机交互模式标志
|
|
377
|
+
window.__webControlHumanMode = false;
|
|
378
|
+
|
|
379
|
+
// 拦截链接点击, 重定向到代理(人机模式下跳过拦截)
|
|
300
380
|
document.addEventListener('click', function(e) {
|
|
381
|
+
if (window.__webControlHumanMode) return; // 人机模式不拦截
|
|
301
382
|
var link = e.target.closest('a');
|
|
302
383
|
if (link && link.href) {
|
|
303
384
|
// 允许 target=_blank 和特殊链接
|
|
@@ -312,8 +393,9 @@ CONTROL_SCRIPT = """
|
|
|
312
393
|
}
|
|
313
394
|
}, true);
|
|
314
395
|
|
|
315
|
-
//
|
|
396
|
+
// 拦截表单提交(人机模式下跳过拦截)
|
|
316
397
|
document.addEventListener('submit', function(e) {
|
|
398
|
+
if (window.__webControlHumanMode) return; // 人机模式不拦截
|
|
317
399
|
var form = e.target;
|
|
318
400
|
if (form.method && form.method.toLowerCase() === 'post') {
|
|
319
401
|
// POST 表单暂不代理, 仅阻止默认行为
|
|
@@ -354,6 +436,10 @@ class WebControlSession:
|
|
|
354
436
|
self.pending_results: Dict[str, asyncio.Future] = {}
|
|
355
437
|
self.is_panel_open = False
|
|
356
438
|
self._closed = False
|
|
439
|
+
# [v1.25.3] 人机交互模式
|
|
440
|
+
self.human_mode = False
|
|
441
|
+
self.human_event: Optional[asyncio.Event] = None # Agent 等待用户完成操作
|
|
442
|
+
self.human_result: Optional[Dict[str, Any]] = None
|
|
357
443
|
|
|
358
444
|
def is_alive(self) -> bool:
|
|
359
445
|
if self._closed:
|
|
@@ -371,6 +457,123 @@ class WebControlSession:
|
|
|
371
457
|
if not future.done():
|
|
372
458
|
future.set_result({"success": False, "error": "Session closed"})
|
|
373
459
|
self.pending_results.clear()
|
|
460
|
+
# 唤醒等待 human_event 的协程
|
|
461
|
+
if self.human_event and not self.human_event.is_set():
|
|
462
|
+
self.human_event.set()
|
|
463
|
+
|
|
464
|
+
# [v1.25.3] Cookie 持久化
|
|
465
|
+
def save_cookies_to_file(self, label: str = "") -> str:
|
|
466
|
+
"""将当前 cookies 保存到文件, 返回文件路径"""
|
|
467
|
+
import json as _json
|
|
468
|
+
from pathlib import Path
|
|
469
|
+
cookie_dir = Path.home() / ".myagent" / "data" / "web_cookies"
|
|
470
|
+
cookie_dir.mkdir(parents=True, exist_ok=True)
|
|
471
|
+
if not label:
|
|
472
|
+
# 从 current_url 提取域名作为 label
|
|
473
|
+
parsed = urlparse(self.current_url)
|
|
474
|
+
label = parsed.hostname or "default"
|
|
475
|
+
label = re.sub(r'[^a-zA-Z0-9._-]', '_', label)
|
|
476
|
+
filepath = cookie_dir / f"{label}.json"
|
|
477
|
+
data = {
|
|
478
|
+
"url": self.current_url,
|
|
479
|
+
"saved_at": time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
480
|
+
"cookies": [
|
|
481
|
+
{"key": k, "value": v} for k, v in self.cookies.items()
|
|
482
|
+
]
|
|
483
|
+
}
|
|
484
|
+
filepath.write_text(_json.dumps(data, ensure_ascii=False, indent=2), encoding='utf-8')
|
|
485
|
+
logger.info(f"[WebControl] Cookies 已保存: {filepath} ({len(self.cookies)} 个)")
|
|
486
|
+
return str(filepath)
|
|
487
|
+
|
|
488
|
+
def load_cookies_from_file(self, label: str = "") -> int:
|
|
489
|
+
"""从文件加载 cookies, 返回加载的数量"""
|
|
490
|
+
import json as _json
|
|
491
|
+
from pathlib import Path
|
|
492
|
+
cookie_dir = Path.home() / ".myagent" / "data" / "web_cookies"
|
|
493
|
+
if not label:
|
|
494
|
+
parsed = urlparse(self.current_url)
|
|
495
|
+
label = parsed.hostname or "default"
|
|
496
|
+
label = re.sub(r'[^a-zA-Z0-9._-]', '_', label)
|
|
497
|
+
filepath = cookie_dir / f"{label}.json"
|
|
498
|
+
if not filepath.exists():
|
|
499
|
+
return 0
|
|
500
|
+
try:
|
|
501
|
+
data = _json.loads(filepath.read_text(encoding='utf-8'))
|
|
502
|
+
count = 0
|
|
503
|
+
for item in data.get("cookies", []):
|
|
504
|
+
self.cookies[item["key"]] = item["value"]
|
|
505
|
+
count += 1
|
|
506
|
+
logger.info(f"[WebControl] Cookies 已加载: {filepath} ({count} 个)")
|
|
507
|
+
return count
|
|
508
|
+
except Exception as e:
|
|
509
|
+
logger.error(f"[WebControl] 加载 cookies 失败: {e}")
|
|
510
|
+
return 0
|
|
511
|
+
|
|
512
|
+
# [v1.25.4] 凭证管理 — 保存/列出/删除登录凭证
|
|
513
|
+
def save_credentials_to_file(self, platform: str, label: str = "", extra: Dict = None) -> str:
|
|
514
|
+
"""保存完整登录凭证 (cookies + 元信息) 到凭证库, 返回文件路径"""
|
|
515
|
+
import json as _json
|
|
516
|
+
from pathlib import Path
|
|
517
|
+
cred_dir = Path.home() / ".myagent" / "data" / "credentials"
|
|
518
|
+
cred_dir.mkdir(parents=True, exist_ok=True)
|
|
519
|
+
# platform 作为文件名
|
|
520
|
+
safe_platform = re.sub(r'[^a-zA-Z0-9._-]', '_', platform).lower()
|
|
521
|
+
if not safe_platform:
|
|
522
|
+
safe_platform = "default"
|
|
523
|
+
filepath = cred_dir / f"{safe_platform}.json"
|
|
524
|
+
data = {
|
|
525
|
+
"platform": platform,
|
|
526
|
+
"url": self.current_url,
|
|
527
|
+
"saved_at": time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
528
|
+
"cookie_count": len(self.cookies),
|
|
529
|
+
"cookies": [
|
|
530
|
+
{"key": k, "value": v} for k, v in self.cookies.items()
|
|
531
|
+
],
|
|
532
|
+
}
|
|
533
|
+
if extra:
|
|
534
|
+
data["extra"] = extra
|
|
535
|
+
if label:
|
|
536
|
+
data["label"] = label
|
|
537
|
+
filepath.write_text(_json.dumps(data, ensure_ascii=False, indent=2), encoding='utf-8')
|
|
538
|
+
logger.info(f"[WebControl] 凭证已保存: {filepath} (平台: {platform}, cookies: {len(self.cookies)})")
|
|
539
|
+
return str(filepath)
|
|
540
|
+
|
|
541
|
+
@staticmethod
|
|
542
|
+
def list_credentials() -> List[Dict]:
|
|
543
|
+
"""列出所有已保存的凭证"""
|
|
544
|
+
import json as _json
|
|
545
|
+
from pathlib import Path
|
|
546
|
+
cred_dir = Path.home() / ".myagent" / "data" / "credentials"
|
|
547
|
+
if not cred_dir.exists():
|
|
548
|
+
return []
|
|
549
|
+
results = []
|
|
550
|
+
for f in sorted(cred_dir.glob("*.json")):
|
|
551
|
+
try:
|
|
552
|
+
data = _json.loads(f.read_text(encoding='utf-8'))
|
|
553
|
+
results.append({
|
|
554
|
+
"platform": data.get("platform", f.stem),
|
|
555
|
+
"label": data.get("label", ""),
|
|
556
|
+
"url": data.get("url", ""),
|
|
557
|
+
"saved_at": data.get("saved_at", ""),
|
|
558
|
+
"cookie_count": data.get("cookie_count", 0),
|
|
559
|
+
"file": str(f),
|
|
560
|
+
})
|
|
561
|
+
except Exception:
|
|
562
|
+
pass
|
|
563
|
+
return results
|
|
564
|
+
|
|
565
|
+
@staticmethod
|
|
566
|
+
def delete_credentials(platform: str) -> bool:
|
|
567
|
+
"""删除指定平台的凭证"""
|
|
568
|
+
from pathlib import Path
|
|
569
|
+
cred_dir = Path.home() / ".myagent" / "data" / "credentials"
|
|
570
|
+
safe_platform = re.sub(r'[^a-zA-Z0-9._-]', '_', platform).lower()
|
|
571
|
+
filepath = cred_dir / f"{safe_platform}.json"
|
|
572
|
+
if filepath.exists():
|
|
573
|
+
filepath.unlink()
|
|
574
|
+
logger.info(f"[WebControl] 凭证已删除: {filepath} (平台: {platform})")
|
|
575
|
+
return True
|
|
576
|
+
return False
|
|
374
577
|
|
|
375
578
|
|
|
376
579
|
class WebControlManager:
|
package/package.json
CHANGED
|
File without changes
|