@xagent-ai/cli 1.0.1
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/.eslintrc.js +25 -0
- package/.gitmodules +3 -0
- package/.prettierrc.json +8 -0
- package/CONTRIBUTING.md +167 -0
- package/LICENSE +21 -0
- package/README.md +280 -0
- package/README_CN.md +280 -0
- package/dist/agents.d.ts +21 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +463 -0
- package/dist/agents.js.map +1 -0
- package/dist/ai-client.d.ts +83 -0
- package/dist/ai-client.d.ts.map +1 -0
- package/dist/ai-client.js +1280 -0
- package/dist/ai-client.js.map +1 -0
- package/dist/auth.d.ts +25 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +573 -0
- package/dist/auth.js.map +1 -0
- package/dist/cancellation.d.ts +46 -0
- package/dist/cancellation.d.ts.map +1 -0
- package/dist/cancellation.js +154 -0
- package/dist/cancellation.js.map +1 -0
- package/dist/checkpoint.d.ts +28 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +186 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +364 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +49 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +205 -0
- package/dist/config.js.map +1 -0
- package/dist/context-compressor.d.ts +51 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +231 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/conversation.d.ts +34 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +221 -0
- package/dist/conversation.js.map +1 -0
- package/dist/gui-subagent/action-parser/actionParser.d.ts +19 -0
- package/dist/gui-subagent/action-parser/actionParser.d.ts.map +1 -0
- package/dist/gui-subagent/action-parser/actionParser.js +203 -0
- package/dist/gui-subagent/action-parser/actionParser.js.map +1 -0
- package/dist/gui-subagent/action-parser/constants.d.ts +8 -0
- package/dist/gui-subagent/action-parser/constants.d.ts.map +1 -0
- package/dist/gui-subagent/action-parser/constants.js +12 -0
- package/dist/gui-subagent/action-parser/constants.js.map +1 -0
- package/dist/gui-subagent/action-parser/index.d.ts +3 -0
- package/dist/gui-subagent/action-parser/index.d.ts.map +1 -0
- package/dist/gui-subagent/action-parser/index.js +6 -0
- package/dist/gui-subagent/action-parser/index.js.map +1 -0
- package/dist/gui-subagent/action-parser/types.d.ts +24 -0
- package/dist/gui-subagent/action-parser/types.d.ts.map +1 -0
- package/dist/gui-subagent/action-parser/types.js +12 -0
- package/dist/gui-subagent/action-parser/types.js.map +1 -0
- package/dist/gui-subagent/agent/gui-agent.d.ts +126 -0
- package/dist/gui-subagent/agent/gui-agent.d.ts.map +1 -0
- package/dist/gui-subagent/agent/gui-agent.js +820 -0
- package/dist/gui-subagent/agent/gui-agent.js.map +1 -0
- package/dist/gui-subagent/agent/index.d.ts +5 -0
- package/dist/gui-subagent/agent/index.d.ts.map +1 -0
- package/dist/gui-subagent/agent/index.js +5 -0
- package/dist/gui-subagent/agent/index.js.map +1 -0
- package/dist/gui-subagent/index.d.ts +43 -0
- package/dist/gui-subagent/index.d.ts.map +1 -0
- package/dist/gui-subagent/index.js +96 -0
- package/dist/gui-subagent/index.js.map +1 -0
- package/dist/gui-subagent/operator/base-operator.d.ts +108 -0
- package/dist/gui-subagent/operator/base-operator.d.ts.map +1 -0
- package/dist/gui-subagent/operator/base-operator.js +172 -0
- package/dist/gui-subagent/operator/base-operator.js.map +1 -0
- package/dist/gui-subagent/operator/browser-operator.d.ts +36 -0
- package/dist/gui-subagent/operator/browser-operator.d.ts.map +1 -0
- package/dist/gui-subagent/operator/browser-operator.js +306 -0
- package/dist/gui-subagent/operator/browser-operator.js.map +1 -0
- package/dist/gui-subagent/operator/computer-operator.d.ts +31 -0
- package/dist/gui-subagent/operator/computer-operator.d.ts.map +1 -0
- package/dist/gui-subagent/operator/computer-operator.js +441 -0
- package/dist/gui-subagent/operator/computer-operator.js.map +1 -0
- package/dist/gui-subagent/operator/desktop-operator.d.ts +55 -0
- package/dist/gui-subagent/operator/desktop-operator.d.ts.map +1 -0
- package/dist/gui-subagent/operator/desktop-operator.js +527 -0
- package/dist/gui-subagent/operator/desktop-operator.js.map +1 -0
- package/dist/gui-subagent/operator/index.d.ts +7 -0
- package/dist/gui-subagent/operator/index.d.ts.map +1 -0
- package/dist/gui-subagent/operator/index.js +6 -0
- package/dist/gui-subagent/operator/index.js.map +1 -0
- package/dist/gui-subagent/types/actions.d.ts +108 -0
- package/dist/gui-subagent/types/actions.d.ts.map +1 -0
- package/dist/gui-subagent/types/actions.js +39 -0
- package/dist/gui-subagent/types/actions.js.map +1 -0
- package/dist/gui-subagent/types/index.d.ts +6 -0
- package/dist/gui-subagent/types/index.d.ts.map +1 -0
- package/dist/gui-subagent/types/index.js +6 -0
- package/dist/gui-subagent/types/index.js.map +1 -0
- package/dist/gui-subagent/types/operator.d.ts +95 -0
- package/dist/gui-subagent/types/operator.d.ts.map +1 -0
- package/dist/gui-subagent/types/operator.js +16 -0
- package/dist/gui-subagent/types/operator.js.map +1 -0
- package/dist/gui-subagent/utils.d.ts +19 -0
- package/dist/gui-subagent/utils.d.ts.map +1 -0
- package/dist/gui-subagent/utils.js +42 -0
- package/dist/gui-subagent/utils.js.map +1 -0
- package/dist/hook.d.ts +73 -0
- package/dist/hook.d.ts.map +1 -0
- package/dist/hook.js +156 -0
- package/dist/hook.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/input-history.d.ts +24 -0
- package/dist/input-history.d.ts.map +1 -0
- package/dist/input-history.js +94 -0
- package/dist/input-history.js.map +1 -0
- package/dist/input-processor.d.ts +31 -0
- package/dist/input-processor.d.ts.map +1 -0
- package/dist/input-processor.js +233 -0
- package/dist/input-processor.js.map +1 -0
- package/dist/keyboard-manager.d.ts +151 -0
- package/dist/keyboard-manager.d.ts.map +1 -0
- package/dist/keyboard-manager.js +396 -0
- package/dist/keyboard-manager.js.map +1 -0
- package/dist/logger.d.ts +75 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +339 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp.d.ts +57 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +483 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +25 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +250 -0
- package/dist/memory.js.map +1 -0
- package/dist/print-system-prompt.d.ts +2 -0
- package/dist/print-system-prompt.d.ts.map +1 -0
- package/dist/print-system-prompt.js +40 -0
- package/dist/print-system-prompt.js.map +1 -0
- package/dist/session-manager.d.ts +41 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +234 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/session.d.ts +77 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +1081 -0
- package/dist/session.js.map +1 -0
- package/dist/skill-invoker.d.ts +177 -0
- package/dist/skill-invoker.d.ts.map +1 -0
- package/dist/skill-invoker.js +1643 -0
- package/dist/skill-invoker.js.map +1 -0
- package/dist/skill-loader.d.ts +76 -0
- package/dist/skill-loader.d.ts.map +1 -0
- package/dist/skill-loader.js +407 -0
- package/dist/skill-loader.js.map +1 -0
- package/dist/slash-commands.d.ts +60 -0
- package/dist/slash-commands.d.ts.map +1 -0
- package/dist/slash-commands.js +1021 -0
- package/dist/slash-commands.js.map +1 -0
- package/dist/smart-approval.d.ts +137 -0
- package/dist/smart-approval.d.ts.map +1 -0
- package/dist/smart-approval.js +512 -0
- package/dist/smart-approval.js.map +1 -0
- package/dist/system-prompt-generator.d.ts +35 -0
- package/dist/system-prompt-generator.d.ts.map +1 -0
- package/dist/system-prompt-generator.js +729 -0
- package/dist/system-prompt-generator.js.map +1 -0
- package/dist/test-boundary-conditions.d.ts.map +1 -0
- package/dist/test-boundary-conditions.js.map +1 -0
- package/dist/test-cancellation-fix.d.ts.map +1 -0
- package/dist/test-cancellation-fix.js.map +1 -0
- package/dist/test-input-history.d.ts.map +1 -0
- package/dist/test-input-history.js.map +1 -0
- package/dist/test-interaction-flow.d.ts.map +1 -0
- package/dist/test-interaction-flow.js.map +1 -0
- package/dist/test-quick.d.ts.map +1 -0
- package/dist/test-quick.js.map +1 -0
- package/dist/test-user-interaction.d.ts.map +1 -0
- package/dist/test-user-interaction.js.map +1 -0
- package/dist/theme.d.ts +353 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +383 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools.d.ts +373 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +2906 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +180 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/unified-session.d.ts +42 -0
- package/dist/unified-session.d.ts.map +1 -0
- package/dist/unified-session.js +271 -0
- package/dist/unified-session.js.map +1 -0
- package/dist/update.d.ts +30 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +211 -0
- package/dist/update.js.map +1 -0
- package/dist/workflow.d.ts +53 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +405 -0
- package/dist/workflow.js.map +1 -0
- package/docs/architecture/mcp-integration-guide.md +131 -0
- package/docs/architecture/overview.md +93 -0
- package/docs/architecture/tool-system-design.md +89 -0
- package/docs/cli/commands.md +189 -0
- package/docs/smart-mode.md +257 -0
- package/docs/third-party-models.md +449 -0
- package/package.json +85 -0
- package/scripts/init-skills-path.js +58 -0
- package/skills/.claude-plugin/marketplace.json +45 -0
- package/skills/README.md +94 -0
- package/skills/THIRD_PARTY_NOTICES.md +405 -0
- package/skills/skills/algorithmic-art/LICENSE.txt +202 -0
- package/skills/skills/algorithmic-art/SKILL.md +405 -0
- package/skills/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/skills/algorithmic-art/templates/viewer.html +599 -0
- package/skills/skills/brand-guidelines/LICENSE.txt +202 -0
- package/skills/skills/brand-guidelines/SKILL.md +73 -0
- package/skills/skills/canvas-design/LICENSE.txt +202 -0
- package/skills/skills/canvas-design/SKILL.md +130 -0
- package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/skills/doc-coauthoring/SKILL.md +375 -0
- package/skills/skills/docx/LICENSE.txt +30 -0
- package/skills/skills/docx/SKILL.md +197 -0
- package/skills/skills/docx/docx-js.md +350 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/skills/docx/ooxml.md +610 -0
- package/skills/skills/docx/scripts/__init__.py +1 -0
- package/skills/skills/docx/scripts/document.py +1276 -0
- package/skills/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/skills/docx/scripts/utilities.py +374 -0
- package/skills/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/skills/frontend-design/SKILL.md +42 -0
- package/skills/skills/internal-comms/LICENSE.txt +202 -0
- package/skills/skills/internal-comms/SKILL.md +32 -0
- package/skills/skills/internal-comms/examples/3p-updates.md +47 -0
- package/skills/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/skills/skills/internal-comms/examples/faq-answers.md +30 -0
- package/skills/skills/internal-comms/examples/general-comms.md +16 -0
- package/skills/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/skills/mcp-builder/SKILL.md +236 -0
- package/skills/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/skills/pdf/LICENSE.txt +30 -0
- package/skills/skills/pdf/SKILL.md +294 -0
- package/skills/skills/pdf/forms.md +205 -0
- package/skills/skills/pdf/reference.md +612 -0
- package/skills/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/skills/pptx/LICENSE.txt +30 -0
- package/skills/skills/pptx/SKILL.md +484 -0
- package/skills/skills/pptx/html2pptx.md +625 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/skills/pptx/ooxml.md +427 -0
- package/skills/skills/pptx/scripts/html2pptx.js +979 -0
- package/skills/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/skills/pptx/scripts/replace.py +385 -0
- package/skills/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skills/skill-creator/SKILL.md +356 -0
- package/skills/skills/skill-creator/references/output-patterns.md +82 -0
- package/skills/skills/skill-creator/references/workflows.md +28 -0
- package/skills/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skills/skill-creator/scripts/package_skill.py +110 -0
- package/skills/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/skills/skills/slack-gif-creator/SKILL.md +254 -0
- package/skills/skills/slack-gif-creator/core/easing.py +234 -0
- package/skills/skills/slack-gif-creator/core/frame_composer.py +176 -0
- package/skills/skills/slack-gif-creator/core/gif_builder.py +269 -0
- package/skills/skills/slack-gif-creator/core/validators.py +136 -0
- package/skills/skills/slack-gif-creator/requirements.txt +4 -0
- package/skills/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/skills/theme-factory/SKILL.md +59 -0
- package/skills/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/skills/web-artifacts-builder/SKILL.md +74 -0
- package/skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/skills/webapp-testing/SKILL.md +96 -0
- package/skills/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/skills/xlsx/LICENSE.txt +30 -0
- package/skills/skills/xlsx/SKILL.md +289 -0
- package/skills/skills/xlsx/recalc.py +178 -0
- package/skills/spec/agent-skills-spec.md +3 -0
- package/skills/template/SKILL.md +6 -0
- package/src/agents.ts +504 -0
- package/src/ai-client.ts +1456 -0
- package/src/auth.ts +648 -0
- package/src/cancellation.ts +176 -0
- package/src/checkpoint.ts +219 -0
- package/src/cli.ts +384 -0
- package/src/config.ts +248 -0
- package/src/context-compressor.ts +290 -0
- package/src/conversation.ts +288 -0
- package/src/gui-subagent/action-parser/actionParser.ts +312 -0
- package/src/gui-subagent/action-parser/constants.ts +12 -0
- package/src/gui-subagent/action-parser/index.ts +6 -0
- package/src/gui-subagent/action-parser/types.ts +31 -0
- package/src/gui-subagent/agent/gui-agent.ts +982 -0
- package/src/gui-subagent/agent/index.ts +5 -0
- package/src/gui-subagent/index.ts +139 -0
- package/src/gui-subagent/operator/base-operator.ts +246 -0
- package/src/gui-subagent/operator/computer-operator.ts +520 -0
- package/src/gui-subagent/operator/index.ts +7 -0
- package/src/gui-subagent/types/actions.ts +263 -0
- package/src/gui-subagent/types/index.ts +6 -0
- package/src/gui-subagent/types/operator.ts +106 -0
- package/src/gui-subagent/utils.ts +51 -0
- package/src/index.ts +18 -0
- package/src/input-processor.ts +282 -0
- package/src/logger.ts +438 -0
- package/src/mcp.ts +563 -0
- package/src/memory.ts +303 -0
- package/src/session-manager.ts +308 -0
- package/src/session.ts +1280 -0
- package/src/skill-invoker.ts +1888 -0
- package/src/skill-loader.ts +476 -0
- package/src/slash-commands.ts +1150 -0
- package/src/smart-approval.ts +595 -0
- package/src/system-prompt-generator.ts +786 -0
- package/src/theme.ts +455 -0
- package/src/tools.ts +3398 -0
- package/src/types.ts +198 -0
- package/src/update.ts +270 -0
- package/src/workflow.ts +508 -0
- package/tsconfig.json +22 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Excel Formula Recalculation Script
|
|
4
|
+
Recalculates all formulas in an Excel file using LibreOffice
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import sys
|
|
9
|
+
import subprocess
|
|
10
|
+
import os
|
|
11
|
+
import platform
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from openpyxl import load_workbook
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def setup_libreoffice_macro():
|
|
17
|
+
"""Setup LibreOffice macro for recalculation if not already configured"""
|
|
18
|
+
if platform.system() == 'Darwin':
|
|
19
|
+
macro_dir = os.path.expanduser('~/Library/Application Support/LibreOffice/4/user/basic/Standard')
|
|
20
|
+
else:
|
|
21
|
+
macro_dir = os.path.expanduser('~/.config/libreoffice/4/user/basic/Standard')
|
|
22
|
+
|
|
23
|
+
macro_file = os.path.join(macro_dir, 'Module1.xba')
|
|
24
|
+
|
|
25
|
+
if os.path.exists(macro_file):
|
|
26
|
+
with open(macro_file, 'r') as f:
|
|
27
|
+
if 'RecalculateAndSave' in f.read():
|
|
28
|
+
return True
|
|
29
|
+
|
|
30
|
+
if not os.path.exists(macro_dir):
|
|
31
|
+
subprocess.run(['soffice', '--headless', '--terminate_after_init'],
|
|
32
|
+
capture_output=True, timeout=10)
|
|
33
|
+
os.makedirs(macro_dir, exist_ok=True)
|
|
34
|
+
|
|
35
|
+
macro_content = '''<?xml version="1.0" encoding="UTF-8"?>
|
|
36
|
+
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
|
37
|
+
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">
|
|
38
|
+
Sub RecalculateAndSave()
|
|
39
|
+
ThisComponent.calculateAll()
|
|
40
|
+
ThisComponent.store()
|
|
41
|
+
ThisComponent.close(True)
|
|
42
|
+
End Sub
|
|
43
|
+
</script:module>'''
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
with open(macro_file, 'w') as f:
|
|
47
|
+
f.write(macro_content)
|
|
48
|
+
return True
|
|
49
|
+
except Exception:
|
|
50
|
+
return False
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def recalc(filename, timeout=30):
|
|
54
|
+
"""
|
|
55
|
+
Recalculate formulas in Excel file and report any errors
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
filename: Path to Excel file
|
|
59
|
+
timeout: Maximum time to wait for recalculation (seconds)
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
dict with error locations and counts
|
|
63
|
+
"""
|
|
64
|
+
if not Path(filename).exists():
|
|
65
|
+
return {'error': f'File {filename} does not exist'}
|
|
66
|
+
|
|
67
|
+
abs_path = str(Path(filename).absolute())
|
|
68
|
+
|
|
69
|
+
if not setup_libreoffice_macro():
|
|
70
|
+
return {'error': 'Failed to setup LibreOffice macro'}
|
|
71
|
+
|
|
72
|
+
cmd = [
|
|
73
|
+
'soffice', '--headless', '--norestore',
|
|
74
|
+
'vnd.sun.star.script:Standard.Module1.RecalculateAndSave?language=Basic&location=application',
|
|
75
|
+
abs_path
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
# Handle timeout command differences between Linux and macOS
|
|
79
|
+
if platform.system() != 'Windows':
|
|
80
|
+
timeout_cmd = 'timeout' if platform.system() == 'Linux' else None
|
|
81
|
+
if platform.system() == 'Darwin':
|
|
82
|
+
# Check if gtimeout is available on macOS
|
|
83
|
+
try:
|
|
84
|
+
subprocess.run(['gtimeout', '--version'], capture_output=True, timeout=1, check=False)
|
|
85
|
+
timeout_cmd = 'gtimeout'
|
|
86
|
+
except (FileNotFoundError, subprocess.TimeoutExpired):
|
|
87
|
+
pass
|
|
88
|
+
|
|
89
|
+
if timeout_cmd:
|
|
90
|
+
cmd = [timeout_cmd, str(timeout)] + cmd
|
|
91
|
+
|
|
92
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
93
|
+
|
|
94
|
+
if result.returncode != 0 and result.returncode != 124: # 124 is timeout exit code
|
|
95
|
+
error_msg = result.stderr or 'Unknown error during recalculation'
|
|
96
|
+
if 'Module1' in error_msg or 'RecalculateAndSave' not in error_msg:
|
|
97
|
+
return {'error': 'LibreOffice macro not configured properly'}
|
|
98
|
+
else:
|
|
99
|
+
return {'error': error_msg}
|
|
100
|
+
|
|
101
|
+
# Check for Excel errors in the recalculated file - scan ALL cells
|
|
102
|
+
try:
|
|
103
|
+
wb = load_workbook(filename, data_only=True)
|
|
104
|
+
|
|
105
|
+
excel_errors = ['#VALUE!', '#DIV/0!', '#REF!', '#NAME?', '#NULL!', '#NUM!', '#N/A']
|
|
106
|
+
error_details = {err: [] for err in excel_errors}
|
|
107
|
+
total_errors = 0
|
|
108
|
+
|
|
109
|
+
for sheet_name in wb.sheetnames:
|
|
110
|
+
ws = wb[sheet_name]
|
|
111
|
+
# Check ALL rows and columns - no limits
|
|
112
|
+
for row in ws.iter_rows():
|
|
113
|
+
for cell in row:
|
|
114
|
+
if cell.value is not None and isinstance(cell.value, str):
|
|
115
|
+
for err in excel_errors:
|
|
116
|
+
if err in cell.value:
|
|
117
|
+
location = f"{sheet_name}!{cell.coordinate}"
|
|
118
|
+
error_details[err].append(location)
|
|
119
|
+
total_errors += 1
|
|
120
|
+
break
|
|
121
|
+
|
|
122
|
+
wb.close()
|
|
123
|
+
|
|
124
|
+
# Build result summary
|
|
125
|
+
result = {
|
|
126
|
+
'status': 'success' if total_errors == 0 else 'errors_found',
|
|
127
|
+
'total_errors': total_errors,
|
|
128
|
+
'error_summary': {}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# Add non-empty error categories
|
|
132
|
+
for err_type, locations in error_details.items():
|
|
133
|
+
if locations:
|
|
134
|
+
result['error_summary'][err_type] = {
|
|
135
|
+
'count': len(locations),
|
|
136
|
+
'locations': locations[:20] # Show up to 20 locations
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
# Add formula count for context - also check ALL cells
|
|
140
|
+
wb_formulas = load_workbook(filename, data_only=False)
|
|
141
|
+
formula_count = 0
|
|
142
|
+
for sheet_name in wb_formulas.sheetnames:
|
|
143
|
+
ws = wb_formulas[sheet_name]
|
|
144
|
+
for row in ws.iter_rows():
|
|
145
|
+
for cell in row:
|
|
146
|
+
if cell.value and isinstance(cell.value, str) and cell.value.startswith('='):
|
|
147
|
+
formula_count += 1
|
|
148
|
+
wb_formulas.close()
|
|
149
|
+
|
|
150
|
+
result['total_formulas'] = formula_count
|
|
151
|
+
|
|
152
|
+
return result
|
|
153
|
+
|
|
154
|
+
except Exception as e:
|
|
155
|
+
return {'error': str(e)}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def main():
|
|
159
|
+
if len(sys.argv) < 2:
|
|
160
|
+
print("Usage: python recalc.py <excel_file> [timeout_seconds]")
|
|
161
|
+
print("\nRecalculates all formulas in an Excel file using LibreOffice")
|
|
162
|
+
print("\nReturns JSON with error details:")
|
|
163
|
+
print(" - status: 'success' or 'errors_found'")
|
|
164
|
+
print(" - total_errors: Total number of Excel errors found")
|
|
165
|
+
print(" - total_formulas: Number of formulas in the file")
|
|
166
|
+
print(" - error_summary: Breakdown by error type with locations")
|
|
167
|
+
print(" - #VALUE!, #DIV/0!, #REF!, #NAME?, #NULL!, #NUM!, #N/A")
|
|
168
|
+
sys.exit(1)
|
|
169
|
+
|
|
170
|
+
filename = sys.argv[1]
|
|
171
|
+
timeout = int(sys.argv[2]) if len(sys.argv) > 2 else 30
|
|
172
|
+
|
|
173
|
+
result = recalc(filename, timeout)
|
|
174
|
+
print(json.dumps(result, indent=2))
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
if __name__ == '__main__':
|
|
178
|
+
main()
|
package/src/agents.ts
ADDED
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { AgentConfig, ExecutionMode } from './types.js';
|
|
5
|
+
import { getToolRegistry } from './tools.js';
|
|
6
|
+
|
|
7
|
+
export class AgentManager {
|
|
8
|
+
private agents: Map<string, AgentConfig> = new Map();
|
|
9
|
+
private globalAgentsPath: string;
|
|
10
|
+
private projectAgentsPath: string;
|
|
11
|
+
|
|
12
|
+
constructor(projectRoot?: string) {
|
|
13
|
+
this.globalAgentsPath = path.join(os.homedir(), '.xagent', 'agents');
|
|
14
|
+
this.projectAgentsPath = projectRoot
|
|
15
|
+
? path.join(projectRoot, '.xagent', 'agents')
|
|
16
|
+
: '';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async loadAgents(): Promise<void> {
|
|
20
|
+
// First load DEFAULT_AGENTS
|
|
21
|
+
for (const agent of DEFAULT_AGENTS) {
|
|
22
|
+
this.agents.set(agent.agentType, agent);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Then load from file system (can override defaults)
|
|
26
|
+
await this.loadAgentsFromDirectory(this.globalAgentsPath);
|
|
27
|
+
if (this.projectAgentsPath) {
|
|
28
|
+
await this.loadAgentsFromDirectory(this.projectAgentsPath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private async loadAgentsFromDirectory(dirPath: string): Promise<void> {
|
|
33
|
+
try {
|
|
34
|
+
const files = await fs.readdir(dirPath);
|
|
35
|
+
|
|
36
|
+
for (const file of files) {
|
|
37
|
+
const filePath = path.join(dirPath, file);
|
|
38
|
+
|
|
39
|
+
// Support both .md (markdown) and .json config files
|
|
40
|
+
if (file.endsWith('.md')) {
|
|
41
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
42
|
+
const agent = this.parseAgentConfig(content);
|
|
43
|
+
|
|
44
|
+
if (agent) {
|
|
45
|
+
this.agents.set(agent.agentType, agent);
|
|
46
|
+
}
|
|
47
|
+
} else if (file.endsWith('.json') && file !== 'agent-config.example.json') {
|
|
48
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
49
|
+
this.applyJsonAgentConfig(content);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
} catch (error) {
|
|
53
|
+
if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {
|
|
54
|
+
console.error(`Failed to load agents from ${dirPath}:`, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private applyJsonAgentConfig(content: string): void {
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(content);
|
|
62
|
+
|
|
63
|
+
if (parsed.agents && typeof parsed.agents === 'object') {
|
|
64
|
+
for (const [agentType, config] of Object.entries(parsed.agents)) {
|
|
65
|
+
const agentConfig = config as any;
|
|
66
|
+
const existingAgent = this.agents.get(agentType);
|
|
67
|
+
|
|
68
|
+
if (existingAgent) {
|
|
69
|
+
// Merge config into existing agent
|
|
70
|
+
if (agentConfig.allowedTools) {
|
|
71
|
+
existingAgent.allowedTools = agentConfig.allowedTools;
|
|
72
|
+
}
|
|
73
|
+
if (agentConfig.description) {
|
|
74
|
+
existingAgent.description = agentConfig.description;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.error('Failed to apply JSON agent config:', error);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private parseAgentConfig(content: string): AgentConfig | null {
|
|
85
|
+
const frontMatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
86
|
+
|
|
87
|
+
if (!frontMatterMatch) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
const frontMatter = frontMatterMatch[1];
|
|
93
|
+
const config: any = {};
|
|
94
|
+
|
|
95
|
+
frontMatter.split('\n').forEach(line => {
|
|
96
|
+
const colonIndex = line.indexOf(':');
|
|
97
|
+
if (colonIndex > 0) {
|
|
98
|
+
const key = line.slice(0, colonIndex).trim();
|
|
99
|
+
const value = line.slice(colonIndex + 1).trim();
|
|
100
|
+
|
|
101
|
+
if (key === 'allowedTools' || key === 'allowedMcps') {
|
|
102
|
+
config[key] = value ? value.split(',').map(s => s.trim()) : [];
|
|
103
|
+
} else if (key === 'isInheritTools' || key === 'isInheritMcps' || key === 'proactive') {
|
|
104
|
+
config[key] = value === 'true';
|
|
105
|
+
} else {
|
|
106
|
+
config[key] = value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
agentType: config.agentType,
|
|
113
|
+
systemPrompt: config.systemPrompt,
|
|
114
|
+
whenToUse: config.whenToUse,
|
|
115
|
+
model: config.model,
|
|
116
|
+
allowedTools: config.allowedTools,
|
|
117
|
+
allowedMcps: config.allowedMcps,
|
|
118
|
+
isInheritMcps: config.isInheritMcps ?? true,
|
|
119
|
+
proactive: config.proactive ?? false,
|
|
120
|
+
color: config.color,
|
|
121
|
+
name: config.name,
|
|
122
|
+
description: config.description
|
|
123
|
+
};
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error('Failed to parse agent config:', error);
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
getAgent(agentType: string): AgentConfig | undefined {
|
|
131
|
+
return this.agents.get(agentType);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
getAllAgents(): AgentConfig[] {
|
|
135
|
+
return Array.from(this.agents.values());
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async addAgent(agent: AgentConfig, scope: 'global' | 'project' = 'global'): Promise<void> {
|
|
139
|
+
const agentsPath = scope === 'global' ? this.globalAgentsPath : this.projectAgentsPath;
|
|
140
|
+
|
|
141
|
+
if (!agentsPath) {
|
|
142
|
+
throw new Error('Project agents path not set');
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
await fs.mkdir(agentsPath, { recursive: true });
|
|
146
|
+
|
|
147
|
+
const filePath = path.join(agentsPath, `${agent.agentType}.md`);
|
|
148
|
+
const content = this.formatAgentConfig(agent);
|
|
149
|
+
|
|
150
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
151
|
+
this.agents.set(agent.agentType, agent);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private formatAgentConfig(agent: AgentConfig): string {
|
|
155
|
+
let content = '---\n';
|
|
156
|
+
|
|
157
|
+
content += `agentType: "${agent.agentType}"\n`;
|
|
158
|
+
content += `systemPrompt: "${agent.systemPrompt}"\n`;
|
|
159
|
+
content += `whenToUse: "${agent.whenToUse}"\n`;
|
|
160
|
+
|
|
161
|
+
if (agent.model) {
|
|
162
|
+
content += `model: "${agent.model}"\n`;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (agent.allowedTools && agent.allowedTools.length > 0) {
|
|
166
|
+
content += `allowedTools: [${agent.allowedTools.map(t => `"${t}"`).join(', ')}]\n`;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (agent.allowedMcps && agent.allowedMcps.length > 0) {
|
|
170
|
+
content += `allowedMcps: [${agent.allowedMcps.map(m => `"${m}"`).join(', ')}]\n`;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (agent.isInheritMcps !== undefined) {
|
|
174
|
+
content += `isInheritMcps: ${agent.isInheritMcps}\n`;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (agent.proactive !== undefined) {
|
|
178
|
+
content += `proactive: ${agent.proactive}\n`;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (agent.color) {
|
|
182
|
+
content += `color: "${agent.color}"\n`;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (agent.name) {
|
|
186
|
+
content += `name: "${agent.name}"\n`;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (agent.description) {
|
|
190
|
+
content += `description: "${agent.description}"\n`;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
content += '---\n\n';
|
|
194
|
+
content += `# ${agent.name || agent.agentType}\n\n`;
|
|
195
|
+
content += agent.description || `Agent for ${agent.whenToUse}`;
|
|
196
|
+
|
|
197
|
+
return content;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
async removeAgent(agentType: string, scope: 'global' | 'project' = 'global'): Promise<void> {
|
|
201
|
+
const agentsPath = scope === 'global' ? this.globalAgentsPath : this.projectAgentsPath;
|
|
202
|
+
|
|
203
|
+
if (!agentsPath) {
|
|
204
|
+
throw new Error('Project agents path not set');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const filePath = path.join(agentsPath, `${agentType}.md`);
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
await fs.unlink(filePath);
|
|
211
|
+
this.agents.delete(agentType);
|
|
212
|
+
} catch (error: any) {
|
|
213
|
+
if (error.code !== 'ENOENT') {
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
getAvailableToolsForAgent(agent: AgentConfig, executionMode: ExecutionMode): string[] {
|
|
220
|
+
const toolRegistry = getToolRegistry();
|
|
221
|
+
const allTools = toolRegistry.getAll();
|
|
222
|
+
|
|
223
|
+
// general-purpose agent: tools are determined by execution mode
|
|
224
|
+
if (agent.agentType === 'general-purpose') {
|
|
225
|
+
return allTools
|
|
226
|
+
.filter(tool => tool.allowedModes.includes(executionMode))
|
|
227
|
+
.map(tool => tool.name);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Other subagents: only use their own allowedTools configuration
|
|
231
|
+
// This keeps tool permissions consistent regardless of main agent's mode
|
|
232
|
+
return agent.allowedTools || [];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
getAvailableMcpsForAgent(agent: AgentConfig): string[] {
|
|
236
|
+
if (!agent.isInheritMcps) {
|
|
237
|
+
return agent.allowedMcps || [];
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return agent.allowedMcps || [];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
let agentManagerInstance: AgentManager | null = null;
|
|
245
|
+
|
|
246
|
+
export function getAgentManager(projectRoot?: string): AgentManager {
|
|
247
|
+
if (!agentManagerInstance) {
|
|
248
|
+
agentManagerInstance = new AgentManager(projectRoot);
|
|
249
|
+
}
|
|
250
|
+
return agentManagerInstance;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export const DEFAULT_AGENTS: AgentConfig[] = [
|
|
254
|
+
{
|
|
255
|
+
agentType: 'general-purpose',
|
|
256
|
+
systemPrompt: `You are xAgent CLI, an interactive command-line assistant focused on software engineering tasks.
|
|
257
|
+
|
|
258
|
+
## Self Introduction
|
|
259
|
+
|
|
260
|
+
When users ask you to introduce yourself, respond with:
|
|
261
|
+
|
|
262
|
+
I am xAgent CLI, your intelligent life assistant and computer automation expert.
|
|
263
|
+
|
|
264
|
+
As your **AI-powered PC companion**, I help you:
|
|
265
|
+
- **Automate your digital life** - Handle repetitive tasks, manage files, and streamline workflows
|
|
266
|
+
- **Control your computer** - Navigate browsers, fill forms, click elements, and perform desktop operations
|
|
267
|
+
- **Boost productivity** - Write code, fix bugs, search information, and execute commands seamlessly
|
|
268
|
+
|
|
269
|
+
Core capabilities:
|
|
270
|
+
- **Life Automation & PC Smart Management** - Your intelligent assistant for everyday computing
|
|
271
|
+
- **Browser automation** - Navigate, fill forms, click, and interact with web pages
|
|
272
|
+
- **Desktop control** - Perform mouse, keyboard, and system operations
|
|
273
|
+
- **Software engineering** - Code analysis, debugging, refactoring, and testing
|
|
274
|
+
- **Project management** - Build, test, and deploy applications
|
|
275
|
+
- **Version control** - Git operations and collaboration
|
|
276
|
+
|
|
277
|
+
Key features:
|
|
278
|
+
- Multi-mode execution (DEFAULT, YOLO, ACCEPT_EDITS, PLAN, SMART)
|
|
279
|
+
- 2-level thinking mode (Off, On)
|
|
280
|
+
- Rich toolset (file ops, code search, Web search, GUI automation, etc.)
|
|
281
|
+
- Interactive dialogue and task management
|
|
282
|
+
- Support for multiple AI models
|
|
283
|
+
- **GUI Subagent** for visual web and desktop automation
|
|
284
|
+
|
|
285
|
+
Usage: npm start
|
|
286
|
+
|
|
287
|
+
Enter /help to view all available commands.
|
|
288
|
+
|
|
289
|
+
## Your Capabilities
|
|
290
|
+
|
|
291
|
+
You can:
|
|
292
|
+
- **Automate your computer** - Control browsers, desktop apps, mouse, and keyboard via sub-agent
|
|
293
|
+
- **Manage files and folders** - Read, write, organize, and search your digital workspace
|
|
294
|
+
- **Office document creation and editing - Create and edit documents, presentations, and spreadsheets
|
|
295
|
+
- **Execute commands** - Run shell commands and automate workflows
|
|
296
|
+
- **Code and build** - Analyze, write, debug, refactor, and test software
|
|
297
|
+
- **Search and research** - Find information locally and from the web
|
|
298
|
+
- **Delegate to specialists** - Use expert subagents for complex tasks (gui-subagent, explore-agent, plan-agent, etc.)
|
|
299
|
+
- **Create todo lists** - Track progress and manage complex tasks
|
|
300
|
+
|
|
301
|
+
## CRITICAL: IMMEDIATE TOOL EXECUTION
|
|
302
|
+
**YOU MUST CALL TOOLS IMMEDIATELY when needed - DO NOT say "let me..." or "I will..." first!**
|
|
303
|
+
|
|
304
|
+
## GUI SUBAGENT DELEGATION
|
|
305
|
+
|
|
306
|
+
For visual tasks (opening apps, browsing, desktop interactions), use gui subagent directly. The GUI subagent will handle:
|
|
307
|
+
- Mouse clicks and keyboard input
|
|
308
|
+
- Browser navigation and web interactions
|
|
309
|
+
- Desktop application control
|
|
310
|
+
- Screenshot-based action execution
|
|
311
|
+
|
|
312
|
+
Simply invoke sub-agent with the user's instruction, and the GUI subagent will perform the visual automation.
|
|
313
|
+
|
|
314
|
+
## ABSOLUTE FORBIDDEN: NEVER RUN BASH COMMANDS FOR GUI TASKS!
|
|
315
|
+
|
|
316
|
+
When user asks to "open/enter/browse/view/access" ANYTHING involving:
|
|
317
|
+
- Opening files, folders, applications, or websites
|
|
318
|
+
- Navigating to directories or locations
|
|
319
|
+
- Interacting with desktop UI elements
|
|
320
|
+
- Browsing visual content
|
|
321
|
+
|
|
322
|
+
🚫 **THIS IS NOT A RECOMMENDATION - IT IS A HARD RULE:**
|
|
323
|
+
- NEVER run: cd, ls, dir, cat, type, curl, wget
|
|
324
|
+
- NEVER use bash/powershell for GUI tasks
|
|
325
|
+
|
|
326
|
+
✅ **ONLY USE sub-agent:**
|
|
327
|
+
- sub-agent handles ALL visual interactions
|
|
328
|
+
- sub-agent for: opening apps, folders, websites, clicking, typing
|
|
329
|
+
- sub-agent for: desktop control, browser navigation, file browsing
|
|
330
|
+
|
|
331
|
+
🚫 **WRONG EXAMPLES (NE DO THIS):**
|
|
332
|
+
- User: "open my computer" → DO NOT run: shell:ThisPC
|
|
333
|
+
- User: "open downloads" → DO NOT run: shell:Downloads
|
|
334
|
+
- User: "open WeChat" → DO NOT run: start wechat.exe
|
|
335
|
+
|
|
336
|
+
✅ **CORRECT EXAMPLES (ALWAYS DO THIS):**
|
|
337
|
+
- User: "open my computer" → Use gui subagent
|
|
338
|
+
- User: "open downloads" → Use gui subagent
|
|
339
|
+
- User: "open WeChat" → Use gui subagent
|
|
340
|
+
- User: "open Baidu" → Use gui subagent with open_url action
|
|
341
|
+
`,
|
|
342
|
+
whenToUse: 'Default agent for general tasks. Delegates to specialized agents when appropriate.',
|
|
343
|
+
// Tool permissions are determined by execution mode (YOLO/PLAN/ACCEPT_EDITS/SMART)
|
|
344
|
+
isInheritMcps: true,
|
|
345
|
+
proactive: false,
|
|
346
|
+
color: '#2ECC71',
|
|
347
|
+
name: 'General Purpose',
|
|
348
|
+
description: 'Default agent for general tasks. Has access to all tools and can delegate to specialized subagents.'
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
agentType: 'plan-agent',
|
|
352
|
+
systemPrompt: `You are an expert planning agent specialized in task analysis, decomposition, and strategy formulation.
|
|
353
|
+
|
|
354
|
+
Your core responsibilities:
|
|
355
|
+
1. Analyze complex requests and break them into manageable steps
|
|
356
|
+
2. Identify dependencies and potential risks
|
|
357
|
+
3. Create structured plans with clear milestones
|
|
358
|
+
4. Provide estimates for effort and complexity
|
|
359
|
+
5. Suggest optimal execution order for tasks
|
|
360
|
+
|
|
361
|
+
When planning:
|
|
362
|
+
- Always start by understanding the full scope of the request
|
|
363
|
+
- Break down large tasks into smaller, actionable steps
|
|
364
|
+
- Identify which steps can be done in parallel vs. sequence
|
|
365
|
+
- Flag any assumptions or unknowns that need clarification
|
|
366
|
+
- Consider edge cases and error scenarios
|
|
367
|
+
|
|
368
|
+
Output format:
|
|
369
|
+
Provide plans in a structured format with:
|
|
370
|
+
- Executive summary of the task
|
|
371
|
+
- Step-by-step breakdown with numbered items
|
|
372
|
+
- Dependencies between steps
|
|
373
|
+
- Estimated complexity for each step
|
|
374
|
+
- Any questions or clarifications needed`,
|
|
375
|
+
whenToUse: 'Use for analyzing complex tasks, creating implementation plans, and breaking down requirements',
|
|
376
|
+
allowedTools: ['Read', 'Grep', 'Bash', 'ListDirectory', 'web_search', 'todo_write', 'todo_read', 'ReadBashOutput', 'web_fetch', 'ask_user_question', 'exit_plan_mode', 'image_read'],
|
|
377
|
+
isInheritMcps: true,
|
|
378
|
+
proactive: false,
|
|
379
|
+
color: '#9B59B6',
|
|
380
|
+
name: 'Plan Agent',
|
|
381
|
+
description: 'Specialized in task planning, analysis, and strategy formulation. Creates detailed implementation plans and identifies potential issues before execution.'
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
agentType: 'explore-agent',
|
|
385
|
+
systemPrompt: `You are an expert exploration agent specialized in codebase analysis, architecture discovery, and code understanding.
|
|
386
|
+
|
|
387
|
+
Your core responsibilities:
|
|
388
|
+
1. Explore and understand codebase structure
|
|
389
|
+
2. Identify key components and their relationships
|
|
390
|
+
3. Trace data flows and control flows
|
|
391
|
+
4. Find relevant code for specific features
|
|
392
|
+
5. Document architecture and design patterns
|
|
393
|
+
|
|
394
|
+
When exploring:
|
|
395
|
+
- Start with high-level structure (directory layout, key files)
|
|
396
|
+
- Use file exploration tools to understand project organization
|
|
397
|
+
- Trace imports and dependencies to understand relationships
|
|
398
|
+
- Look for configuration files, entry points, and key modules
|
|
399
|
+
- Identify patterns and conventions used in the codebase
|
|
400
|
+
- Document your findings in a clear, structured manner
|
|
401
|
+
|
|
402
|
+
CRITICAL - When to stop exploring and return results:
|
|
403
|
+
- After you have gathered enough information to provide a comprehensive overview
|
|
404
|
+
- When you have explored the key directories and files relevant to the task
|
|
405
|
+
- When you have identified the main components and their relationships
|
|
406
|
+
- DO NOT continue making tool calls once you have sufficient information
|
|
407
|
+
- Return your findings in the "plain text content" of your response, not as tool calls
|
|
408
|
+
|
|
409
|
+
Output format:
|
|
410
|
+
Provide exploration results with:
|
|
411
|
+
- Project overview and structure
|
|
412
|
+
- Key files and their purposes
|
|
413
|
+
- Dependencies and relationships
|
|
414
|
+
- Architecture patterns identified
|
|
415
|
+
- Recommendations for next steps
|
|
416
|
+
|
|
417
|
+
Remember: Your goal is to explore AND REPORT your findings, not to explore endlessly. Once you have gathered the necessary information, stop making tool calls and provide your comprehensive analysis in your response content.`,
|
|
418
|
+
whenToUse: 'Use for exploring codebase structure, understanding architecture, and finding relevant code',
|
|
419
|
+
allowedTools: ['Read', 'Grep', 'Bash', 'ListDirectory', 'SearchCodebase', 'ReadBashOutput'],
|
|
420
|
+
isInheritMcps: true,
|
|
421
|
+
proactive: false,
|
|
422
|
+
color: '#3498DB',
|
|
423
|
+
name: 'Explore Agent',
|
|
424
|
+
description: 'Specialized in codebase exploration and architecture analysis. Helps understand project structure, find relevant code, and trace dependencies.'
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
agentType: 'frontend-tester',
|
|
428
|
+
systemPrompt: `You are an expert frontend testing agent specialized in creating and running tests for web applications.
|
|
429
|
+
|
|
430
|
+
Your core responsibilities:
|
|
431
|
+
1. Write unit tests for frontend components
|
|
432
|
+
2. Create integration tests for user interactions
|
|
433
|
+
3. Set up test configurations and fixtures
|
|
434
|
+
4. Run tests and analyze results
|
|
435
|
+
5. Debug and fix failing tests
|
|
436
|
+
6. Improve test coverage
|
|
437
|
+
|
|
438
|
+
When testing:
|
|
439
|
+
- Understand the component structure and props
|
|
440
|
+
- Identify critical paths and user interactions
|
|
441
|
+
- Create tests that cover both happy paths and edge cases
|
|
442
|
+
- Use appropriate testing libraries and frameworks
|
|
443
|
+
- Mock external dependencies as needed
|
|
444
|
+
- Ensure tests are independent and repeatable
|
|
445
|
+
|
|
446
|
+
Testing priorities:
|
|
447
|
+
1. Critical user flows and interactions
|
|
448
|
+
2. Error handling and boundary conditions
|
|
449
|
+
3. State management and data flow
|
|
450
|
+
4. Accessibility and user experience
|
|
451
|
+
5. Performance considerations`,
|
|
452
|
+
whenToUse: 'Use for creating and running frontend tests, ensuring code quality and reliability',
|
|
453
|
+
allowedTools: ['Read', 'Write', 'Grep', 'Bash', 'ListDirectory'],
|
|
454
|
+
isInheritMcps: true,
|
|
455
|
+
proactive: true,
|
|
456
|
+
color: '#E74C3C',
|
|
457
|
+
name: 'Frontend Tester',
|
|
458
|
+
description: 'Specialized in frontend testing including unit tests, integration tests, and end-to-end tests for web applications.'
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
agentType: 'code-reviewer',
|
|
462
|
+
systemPrompt: 'You are an expert code reviewer. Analyze code for quality, security, performance, and best practices.',
|
|
463
|
+
whenToUse: 'Use when reviewing code, checking for bugs, or ensuring code quality',
|
|
464
|
+
allowedTools: ['Read', 'Grep', 'SearchCodebase'],
|
|
465
|
+
isInheritMcps: true,
|
|
466
|
+
proactive: true,
|
|
467
|
+
color: '#FF6B6B',
|
|
468
|
+
name: 'Code Reviewer',
|
|
469
|
+
description: 'Specialized in code review, bug detection, and quality assurance.'
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
agentType: 'frontend-developer',
|
|
473
|
+
systemPrompt: 'You are a frontend development expert specializing in React, TypeScript, and modern web technologies.',
|
|
474
|
+
whenToUse: 'Use for frontend development tasks, UI components, and web application features',
|
|
475
|
+
allowedTools: ['Read', 'Write', 'Grep', 'Bash', 'ListDirectory'],
|
|
476
|
+
isInheritMcps: true,
|
|
477
|
+
proactive: true,
|
|
478
|
+
color: '#4ECDC4',
|
|
479
|
+
name: 'Frontend Developer',
|
|
480
|
+
description: 'Specialized in frontend development using React, TypeScript, and modern web technologies.'
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
agentType: 'backend-developer',
|
|
484
|
+
systemPrompt: 'You are a backend development expert specializing in Node.js, databases, APIs, and server-side architecture.',
|
|
485
|
+
whenToUse: 'Use for backend development tasks, API design, and server-side logic',
|
|
486
|
+
allowedTools: ['Read', 'Write', 'Grep', 'Bash', 'ListDirectory'],
|
|
487
|
+
isInheritMcps: true,
|
|
488
|
+
proactive: true,
|
|
489
|
+
color: '#45B7D1',
|
|
490
|
+
name: 'Backend Developer',
|
|
491
|
+
description: 'Specialized in backend development using Node.js, databases, APIs, and server-side architecture.'
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
agentType: 'gui-subagent',
|
|
495
|
+
systemPrompt: '', // GUI Subagent uses its own built-in system prompt from gui-agent.ts
|
|
496
|
+
whenToUse: 'Use for browser/desktop automation tasks, web scraping, form filling, and visual interactions',
|
|
497
|
+
isInheritMcps: false,
|
|
498
|
+
proactive: false,
|
|
499
|
+
color: '#9B59B6',
|
|
500
|
+
name: 'GUI Subagent',
|
|
501
|
+
description: 'Specialized in browser/desktop automation using GUI interactions. Controls mouse, keyboard, and navigation via gui subagent.',
|
|
502
|
+
model: 'guiSubagentModel'
|
|
503
|
+
}
|
|
504
|
+
];
|