@xagent-ai/cli 1.2.2 → 1.3.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/.github/ISSUE_TEMPLATE/bug_report.md +38 -38
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -20
- package/.github/release.yml +76 -0
- package/.github/workflows/ci.yml +75 -0
- package/.github/workflows/release.yml +103 -0
- package/.gitmodules +3 -3
- package/README.md +326 -280
- package/README_CN.md +325 -279
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +7 -3
- package/dist/agents.js.map +1 -1
- package/dist/ai-client/factory.d.ts +40 -0
- package/dist/ai-client/factory.d.ts.map +1 -0
- package/dist/ai-client/factory.js +100 -0
- package/dist/ai-client/factory.js.map +1 -0
- package/dist/ai-client/index.d.ts +20 -0
- package/dist/ai-client/index.d.ts.map +1 -0
- package/dist/ai-client/index.js +49 -0
- package/dist/ai-client/index.js.map +1 -0
- package/dist/ai-client/providers/anthropic.d.ts +57 -0
- package/dist/ai-client/providers/anthropic.d.ts.map +1 -0
- package/dist/ai-client/providers/anthropic.js +406 -0
- package/dist/ai-client/providers/anthropic.js.map +1 -0
- package/dist/ai-client/providers/openai.d.ts +57 -0
- package/dist/ai-client/providers/openai.d.ts.map +1 -0
- package/dist/ai-client/providers/openai.js +290 -0
- package/dist/ai-client/providers/openai.js.map +1 -0
- package/dist/ai-client/providers/remote.d.ts +110 -0
- package/dist/ai-client/providers/remote.d.ts.map +1 -0
- package/dist/ai-client/providers/remote.js +352 -0
- package/dist/ai-client/providers/remote.js.map +1 -0
- package/dist/ai-client/registry.d.ts +51 -0
- package/dist/ai-client/registry.d.ts.map +1 -0
- package/dist/ai-client/registry.js +81 -0
- package/dist/ai-client/registry.js.map +1 -0
- package/dist/ai-client/types.d.ts +274 -0
- package/dist/ai-client/types.d.ts.map +1 -0
- package/dist/ai-client/types.js +90 -0
- package/dist/ai-client/types.js.map +1 -0
- package/dist/ai-client-factory.d.ts +62 -0
- package/dist/ai-client-factory.d.ts.map +1 -0
- package/dist/ai-client-factory.js +157 -0
- package/dist/ai-client-factory.js.map +1 -0
- package/dist/auth.d.ts +23 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +164 -174
- package/dist/auth.js.map +1 -1
- package/dist/cancellation.d.ts +5 -4
- package/dist/cancellation.d.ts.map +1 -1
- package/dist/cancellation.js +53 -32
- package/dist/cancellation.js.map +1 -1
- package/dist/checkpoint.d.ts +2 -1
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js +39 -6
- package/dist/checkpoint.js.map +1 -1
- package/dist/cli.js +742 -29
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +10 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +62 -25
- package/dist/config.js.map +1 -1
- package/dist/context-compressor.d.ts +82 -18
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +718 -154
- package/dist/context-compressor.js.map +1 -1
- package/dist/conversation.d.ts +1 -1
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +8 -7
- package/dist/conversation.js.map +1 -1
- package/dist/gui-subagent/action-parser/actionParser.d.ts.map +1 -1
- package/dist/gui-subagent/action-parser/actionParser.js +6 -4
- package/dist/gui-subagent/action-parser/actionParser.js.map +1 -1
- package/dist/gui-subagent/agent/gui-agent.d.ts +39 -2
- package/dist/gui-subagent/agent/gui-agent.d.ts.map +1 -1
- package/dist/gui-subagent/agent/gui-agent.js +189 -74
- package/dist/gui-subagent/agent/gui-agent.js.map +1 -1
- package/dist/gui-subagent/index.d.ts +23 -1
- package/dist/gui-subagent/index.d.ts.map +1 -1
- package/dist/gui-subagent/index.js +6 -0
- package/dist/gui-subagent/index.js.map +1 -1
- package/dist/gui-subagent/operator/base-operator.d.ts.map +1 -1
- package/dist/gui-subagent/operator/base-operator.js +0 -1
- package/dist/gui-subagent/operator/base-operator.js.map +1 -1
- package/dist/gui-subagent/operator/computer-operator.d.ts.map +1 -1
- package/dist/gui-subagent/operator/computer-operator.js +31 -8
- package/dist/gui-subagent/operator/computer-operator.js.map +1 -1
- package/dist/gui-subagent/types/actions.d.ts +1 -1
- package/dist/gui-subagent/types/actions.d.ts.map +1 -1
- package/dist/gui-subagent/types/actions.js +0 -1
- package/dist/gui-subagent/types/actions.js.map +1 -1
- package/dist/gui-subagent/types/operator.d.ts +1 -1
- package/dist/gui-subagent/types/operator.d.ts.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/input-processor.d.ts.map +1 -1
- package/dist/input-processor.js +8 -5
- package/dist/input-processor.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/mcp.d.ts +7 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +157 -49
- package/dist/mcp.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +3 -3
- package/dist/memory.js.map +1 -1
- package/dist/output-util.d.ts +27 -0
- package/dist/output-util.d.ts.map +1 -0
- package/dist/output-util.js +74 -0
- package/dist/output-util.js.map +1 -0
- package/dist/retry.js +1 -1
- package/dist/retry.js.map +1 -1
- package/dist/ripgrep.d.ts +29 -0
- package/dist/ripgrep.d.ts.map +1 -0
- package/dist/ripgrep.js +294 -0
- package/dist/ripgrep.js.map +1 -0
- package/dist/sdk-output-adapter.d.ts +34 -1
- package/dist/sdk-output-adapter.d.ts.map +1 -1
- package/dist/sdk-output-adapter.js +67 -2
- package/dist/sdk-output-adapter.js.map +1 -1
- package/dist/sdk-session.d.ts.map +1 -1
- package/dist/sdk-session.js +2 -0
- package/dist/sdk-session.js.map +1 -1
- package/dist/session-manager.js +3 -3
- package/dist/session-manager.js.map +1 -1
- package/dist/session.d.ts +116 -6
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +1416 -448
- package/dist/session.js.map +1 -1
- package/dist/shell.d.ts +33 -0
- package/dist/shell.d.ts.map +1 -0
- package/dist/shell.js +126 -0
- package/dist/shell.js.map +1 -0
- package/dist/skill-installer.d.ts +38 -0
- package/dist/skill-installer.d.ts.map +1 -0
- package/dist/skill-installer.js +447 -0
- package/dist/skill-installer.js.map +1 -0
- package/dist/skill-invoker.d.ts +8 -2
- package/dist/skill-invoker.d.ts.map +1 -1
- package/dist/skill-invoker.js +36 -15
- package/dist/skill-invoker.js.map +1 -1
- package/dist/skill-loader.d.ts +8 -3
- package/dist/skill-loader.d.ts.map +1 -1
- package/dist/skill-loader.js +51 -48
- package/dist/skill-loader.js.map +1 -1
- package/dist/skill-manager.d.ts +85 -0
- package/dist/skill-manager.d.ts.map +1 -0
- package/dist/skill-manager.js +341 -0
- package/dist/skill-manager.js.map +1 -0
- package/dist/slash-commands.d.ts +39 -2
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +934 -305
- package/dist/slash-commands.js.map +1 -1
- package/dist/smart-approval.d.ts +20 -1
- package/dist/smart-approval.d.ts.map +1 -1
- package/dist/smart-approval.js +125 -56
- package/dist/smart-approval.js.map +1 -1
- package/dist/system-prompt-generator.d.ts +6 -0
- package/dist/system-prompt-generator.d.ts.map +1 -1
- package/dist/system-prompt-generator.js +86 -36
- package/dist/system-prompt-generator.js.map +1 -1
- package/dist/terminal.d.ts +28 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +82 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +8 -7
- package/dist/theme.js.map +1 -1
- package/dist/tools.d.ts +38 -7
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +1249 -617
- package/dist/tools.js.map +1 -1
- package/dist/truncate.d.ts +55 -0
- package/dist/truncate.d.ts.map +1 -0
- package/dist/truncate.js +130 -0
- package/dist/truncate.js.map +1 -0
- package/dist/types.d.ts +84 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +49 -0
- package/dist/types.js.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +28 -36
- package/dist/update.js.map +1 -1
- package/dist/workflow.d.ts +5 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +61 -49
- package/dist/workflow.js.map +1 -1
- package/docs/architecture/mcp-integration-guide.md +304 -194
- package/docs/architecture/overview.md +169 -169
- package/docs/architecture/tool-system-design.md +134 -134
- package/docs/cli/commands.md +349 -238
- package/docs/smart-mode.md +281 -281
- package/docs/third-party-models.md +440 -439
- package/find-skills/SKILL.md +133 -0
- package/package.json +91 -90
- package/scripts/install-ripgrep.js +241 -0
- package/src/agents.ts +7 -3
- package/src/ai-client/factory.ts +116 -0
- package/src/ai-client/index.ts +61 -0
- package/src/ai-client/providers/anthropic.ts +475 -0
- package/src/ai-client/providers/openai.ts +348 -0
- package/src/ai-client/providers/remote.ts +439 -0
- package/src/ai-client/registry.ts +97 -0
- package/src/ai-client/types.ts +364 -0
- package/src/ai-client-factory.ts +204 -0
- package/src/auth.ts +661 -614
- package/src/cancellation.ts +202 -176
- package/src/checkpoint.ts +255 -219
- package/src/cli.ts +1523 -743
- package/src/config.ts +341 -297
- package/src/context-compressor.ts +987 -290
- package/src/conversation.ts +290 -288
- package/src/gui-subagent/action-parser/actionParser.ts +318 -315
- package/src/gui-subagent/action-parser/constants.ts +14 -14
- package/src/gui-subagent/action-parser/index.ts +8 -8
- package/src/gui-subagent/action-parser/types.ts +31 -31
- package/src/gui-subagent/agent/gui-agent.ts +1234 -1089
- package/src/gui-subagent/agent/index.ts +5 -5
- package/src/gui-subagent/index.ts +185 -163
- package/src/gui-subagent/operator/base-operator.ts +244 -245
- package/src/gui-subagent/operator/computer-operator.ts +541 -520
- package/src/gui-subagent/operator/index.ts +6 -6
- package/src/gui-subagent/types/actions.ts +260 -262
- package/src/gui-subagent/types/index.ts +6 -6
- package/src/gui-subagent/types/operator.ts +106 -106
- package/src/gui-subagent/utils.ts +51 -51
- package/src/index.ts +17 -18
- package/src/input-processor.ts +8 -5
- package/src/logger.ts +436 -438
- package/src/mcp.ts +793 -682
- package/src/memory.ts +343 -344
- package/src/output-util.ts +80 -0
- package/src/retry.ts +1 -1
- package/src/ripgrep.ts +370 -0
- package/src/sdk-output-adapter.ts +842 -0
- package/src/sdk-session.ts +62 -0
- package/src/session-manager.ts +308 -308
- package/src/session.ts +1775 -573
- package/src/shell.ts +134 -0
- package/src/skill-installer.ts +518 -0
- package/src/skill-invoker.ts +959 -935
- package/src/skill-loader.ts +501 -496
- package/src/skill-manager.ts +385 -0
- package/src/slash-commands.ts +2189 -1389
- package/src/smart-approval.ts +193 -74
- package/src/system-prompt-generator.ts +91 -36
- package/src/terminal.ts +96 -0
- package/src/theme.ts +739 -738
- package/src/tools.ts +1790 -931
- package/src/truncate.ts +173 -0
- package/src/types.ts +337 -198
- package/src/update.ts +33 -40
- package/src/workflow.ts +521 -508
- package/test/cli-launch.test.ts +279 -0
- package/tsconfig.json +22 -22
- package/vitest.config.ts +21 -19
- package/dist/ai-client.d.ts +0 -86
- package/dist/ai-client.d.ts.map +0 -1
- package/dist/ai-client.js +0 -1372
- package/dist/ai-client.js.map +0 -1
- package/dist/gui-subagent/operator/browser-operator.d.ts +0 -36
- package/dist/gui-subagent/operator/browser-operator.d.ts.map +0 -1
- package/dist/gui-subagent/operator/browser-operator.js +0 -306
- package/dist/gui-subagent/operator/browser-operator.js.map +0 -1
- package/dist/gui-subagent/operator/desktop-operator.d.ts +0 -55
- package/dist/gui-subagent/operator/desktop-operator.d.ts.map +0 -1
- package/dist/gui-subagent/operator/desktop-operator.js +0 -527
- package/dist/gui-subagent/operator/desktop-operator.js.map +0 -1
- package/dist/hook.d.ts +0 -73
- package/dist/hook.d.ts.map +0 -1
- package/dist/hook.js +0 -156
- package/dist/hook.js.map +0 -1
- package/dist/input-history.d.ts +0 -24
- package/dist/input-history.d.ts.map +0 -1
- package/dist/input-history.js +0 -94
- package/dist/input-history.js.map +0 -1
- package/dist/keyboard-manager.d.ts +0 -151
- package/dist/keyboard-manager.d.ts.map +0 -1
- package/dist/keyboard-manager.js +0 -396
- package/dist/keyboard-manager.js.map +0 -1
- package/dist/print-system-prompt.d.ts +0 -2
- package/dist/print-system-prompt.d.ts.map +0 -1
- package/dist/print-system-prompt.js +0 -40
- package/dist/print-system-prompt.js.map +0 -1
- package/dist/remote-ai-client.d.ts +0 -104
- package/dist/remote-ai-client.d.ts.map +0 -1
- package/dist/remote-ai-client.js +0 -552
- package/dist/remote-ai-client.js.map +0 -1
- package/dist/sdk-session-v2.d.ts +0 -13
- package/dist/sdk-session-v2.d.ts.map +0 -1
- package/dist/sdk-session-v2.js +0 -46
- package/dist/sdk-session-v2.js.map +0 -1
- package/dist/test-boundary-conditions.d.ts.map +0 -1
- package/dist/test-boundary-conditions.js.map +0 -1
- package/dist/test-cancellation-fix.d.ts.map +0 -1
- package/dist/test-cancellation-fix.js.map +0 -1
- package/dist/test-input-history.d.ts.map +0 -1
- package/dist/test-input-history.js.map +0 -1
- package/dist/test-interaction-flow.d.ts.map +0 -1
- package/dist/test-interaction-flow.js.map +0 -1
- package/dist/test-quick.d.ts.map +0 -1
- package/dist/test-quick.js.map +0 -1
- package/dist/test-user-interaction.d.ts.map +0 -1
- package/dist/test-user-interaction.js.map +0 -1
- package/dist/tools/edit-diff.d.ts +0 -32
- package/dist/tools/edit-diff.d.ts.map +0 -1
- package/dist/tools/edit-diff.js +0 -185
- package/dist/tools/edit-diff.js.map +0 -1
- package/dist/tools/edit.d.ts +0 -11
- package/dist/tools/edit.d.ts.map +0 -1
- package/dist/tools/edit.js +0 -129
- package/dist/tools/edit.js.map +0 -1
- package/dist/unified-session.d.ts +0 -42
- package/dist/unified-session.d.ts.map +0 -1
- package/dist/unified-session.js +0 -271
- package/dist/unified-session.js.map +0 -1
- package/skills/.claude-plugin/marketplace.json +0 -45
- package/skills/README.md +0 -94
- package/skills/THIRD_PARTY_NOTICES.md +0 -405
- package/skills/skills/algorithmic-art/LICENSE.txt +0 -202
- package/skills/skills/algorithmic-art/SKILL.md +0 -405
- package/skills/skills/algorithmic-art/templates/generator_template.js +0 -223
- package/skills/skills/algorithmic-art/templates/viewer.html +0 -599
- package/skills/skills/brand-guidelines/LICENSE.txt +0 -202
- package/skills/skills/brand-guidelines/SKILL.md +0 -73
- package/skills/skills/canvas-design/LICENSE.txt +0 -202
- package/skills/skills/canvas-design/SKILL.md +0 -130
- package/skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
- package/skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
- 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 +0 -93
- package/skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/skills/doc-coauthoring/SKILL.md +0 -375
- package/skills/skills/docx/LICENSE.txt +0 -30
- package/skills/skills/docx/SKILL.md +0 -197
- package/skills/skills/docx/docx-js.md +0 -350
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/skills/docx/ooxml/scripts/pack.py +0 -159
- package/skills/skills/docx/ooxml/scripts/unpack.py +0 -29
- package/skills/skills/docx/ooxml/scripts/validate.py +0 -69
- package/skills/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/skills/skills/docx/ooxml/scripts/validation/base.py +0 -951
- package/skills/skills/docx/ooxml/scripts/validation/docx.py +0 -274
- package/skills/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/skills/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/skills/skills/docx/ooxml.md +0 -610
- package/skills/skills/docx/scripts/__init__.py +0 -1
- package/skills/skills/docx/scripts/document.py +0 -1276
- package/skills/skills/docx/scripts/templates/comments.xml +0 -3
- package/skills/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/skills/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/skills/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/skills/skills/docx/scripts/templates/people.xml +0 -3
- package/skills/skills/docx/scripts/utilities.py +0 -374
- package/skills/skills/frontend-design/LICENSE.txt +0 -177
- package/skills/skills/frontend-design/SKILL.md +0 -42
- package/skills/skills/internal-comms/LICENSE.txt +0 -202
- package/skills/skills/internal-comms/SKILL.md +0 -32
- package/skills/skills/internal-comms/examples/3p-updates.md +0 -47
- package/skills/skills/internal-comms/examples/company-newsletter.md +0 -65
- package/skills/skills/internal-comms/examples/faq-answers.md +0 -30
- package/skills/skills/internal-comms/examples/general-comms.md +0 -16
- package/skills/skills/mcp-builder/LICENSE.txt +0 -202
- package/skills/skills/mcp-builder/SKILL.md +0 -236
- package/skills/skills/mcp-builder/reference/evaluation.md +0 -602
- package/skills/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/skills/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/skills/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/skills/skills/mcp-builder/scripts/connections.py +0 -151
- package/skills/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/skills/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/skills/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/skills/skills/pdf/LICENSE.txt +0 -30
- package/skills/skills/pdf/SKILL.md +0 -294
- package/skills/skills/pdf/forms.md +0 -205
- package/skills/skills/pdf/reference.md +0 -612
- package/skills/skills/pdf/scripts/check_bounding_boxes.py +0 -70
- package/skills/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/skills/skills/pdf/scripts/check_fillable_fields.py +0 -12
- package/skills/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/skills/skills/pdf/scripts/create_validation_image.py +0 -41
- package/skills/skills/pdf/scripts/extract_form_field_info.py +0 -152
- package/skills/skills/pdf/scripts/fill_fillable_fields.py +0 -114
- package/skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/skills/skills/pptx/LICENSE.txt +0 -30
- package/skills/skills/pptx/SKILL.md +0 -484
- package/skills/skills/pptx/html2pptx.md +0 -625
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/skills/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/skills/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/skills/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/skills/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/skills/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/skills/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/skills/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/skills/skills/pptx/ooxml.md +0 -427
- package/skills/skills/pptx/scripts/html2pptx.js +0 -979
- package/skills/skills/pptx/scripts/inventory.py +0 -1020
- package/skills/skills/pptx/scripts/rearrange.py +0 -231
- package/skills/skills/pptx/scripts/replace.py +0 -385
- package/skills/skills/pptx/scripts/thumbnail.py +0 -450
- package/skills/skills/skill-creator/LICENSE.txt +0 -202
- package/skills/skills/skill-creator/SKILL.md +0 -356
- package/skills/skills/skill-creator/references/output-patterns.md +0 -82
- package/skills/skills/skill-creator/references/workflows.md +0 -28
- package/skills/skills/skill-creator/scripts/init_skill.py +0 -303
- package/skills/skills/skill-creator/scripts/package_skill.py +0 -110
- package/skills/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/skills/skills/slack-gif-creator/LICENSE.txt +0 -202
- package/skills/skills/slack-gif-creator/SKILL.md +0 -254
- package/skills/skills/slack-gif-creator/core/easing.py +0 -234
- package/skills/skills/slack-gif-creator/core/frame_composer.py +0 -176
- package/skills/skills/slack-gif-creator/core/gif_builder.py +0 -269
- package/skills/skills/slack-gif-creator/core/validators.py +0 -136
- package/skills/skills/slack-gif-creator/requirements.txt +0 -4
- package/skills/skills/theme-factory/LICENSE.txt +0 -202
- package/skills/skills/theme-factory/SKILL.md +0 -59
- package/skills/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/skills/theme-factory/themes/arctic-frost.md +0 -19
- package/skills/skills/theme-factory/themes/botanical-garden.md +0 -19
- package/skills/skills/theme-factory/themes/desert-rose.md +0 -19
- package/skills/skills/theme-factory/themes/forest-canopy.md +0 -19
- package/skills/skills/theme-factory/themes/golden-hour.md +0 -19
- package/skills/skills/theme-factory/themes/midnight-galaxy.md +0 -19
- package/skills/skills/theme-factory/themes/modern-minimalist.md +0 -19
- package/skills/skills/theme-factory/themes/ocean-depths.md +0 -19
- package/skills/skills/theme-factory/themes/sunset-boulevard.md +0 -19
- package/skills/skills/theme-factory/themes/tech-innovation.md +0 -19
- package/skills/skills/web-artifacts-builder/LICENSE.txt +0 -202
- package/skills/skills/web-artifacts-builder/SKILL.md +0 -74
- package/skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/skills/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -322
- package/skills/skills/webapp-testing/LICENSE.txt +0 -202
- package/skills/skills/webapp-testing/SKILL.md +0 -96
- package/skills/skills/webapp-testing/examples/console_logging.py +0 -35
- package/skills/skills/webapp-testing/examples/element_discovery.py +0 -40
- package/skills/skills/webapp-testing/examples/static_html_automation.py +0 -33
- package/skills/skills/webapp-testing/scripts/with_server.py +0 -106
- package/skills/skills/xlsx/LICENSE.txt +0 -30
- package/skills/skills/xlsx/SKILL.md +0 -289
- package/skills/skills/xlsx/recalc.py +0 -178
- package/skills/spec/agent-skills-spec.md +0 -3
- package/skills/template/SKILL.md +0 -6
- package/src/ai-client.ts +0 -1560
- package/src/remote-ai-client.ts +0 -664
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
# Architecture Overview
|
|
2
|
-
|
|
3
|
-
This document provides a high-level overview of the xAgent CLI architecture.
|
|
4
|
-
|
|
5
|
-
## Core Philosophy
|
|
6
|
-
|
|
7
|
-
xAgent CLI is designed as an intelligent agent for personal PCs and autonomous living. It transforms how users interact with their digital life through AI-powered automation.
|
|
8
|
-
|
|
9
|
-
## System Architecture
|
|
10
|
-
|
|
11
|
-
### Layered Architecture
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
┌─────────────────────────────────────────────────┐
|
|
15
|
-
│ CLI Interface │
|
|
16
|
-
│ (Ink/React Components) │
|
|
17
|
-
├─────────────────────────────────────────────────┤
|
|
18
|
-
│ Session Layer │
|
|
19
|
-
│ (Session + Conversation Management) │
|
|
20
|
-
├─────────────────────────────────────────────────┤
|
|
21
|
-
│ Agent System │
|
|
22
|
-
│ (SubAgent Orchestration) │
|
|
23
|
-
├─────────────────────────────────────────────────┤
|
|
24
|
-
│ Tool Layer │
|
|
25
|
-
│ (Built-in + MCP + Skill Tools) │
|
|
26
|
-
├─────────────────────────────────────────────────┤
|
|
27
|
-
│ AI Client Layer │
|
|
28
|
-
│ (Local + Remote AI Clients) │
|
|
29
|
-
├─────────────────────────────────────────────────┤
|
|
30
|
-
│ Storage & Config │
|
|
31
|
-
│ (Checkpoint, Settings, Memory) │
|
|
32
|
-
└─────────────────────────────────────────────────┘
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Key Components
|
|
36
|
-
|
|
37
|
-
### 1. CLI Interface
|
|
38
|
-
- Built with Ink (React for CLI)
|
|
39
|
-
- Interactive terminal UI
|
|
40
|
-
- Theme support
|
|
41
|
-
- Cancellation support (ESC key)
|
|
42
|
-
|
|
43
|
-
### 2. Session Management
|
|
44
|
-
- `InteractiveSession` - Main session handler
|
|
45
|
-
- `SessionManager` - Session state management
|
|
46
|
-
- `ConversationManager` - Conversation history
|
|
47
|
-
- `CheckpointManager` - State persistence
|
|
48
|
-
- `ContextCompressor` - Context optimization
|
|
49
|
-
|
|
50
|
-
### 3. Agent System
|
|
51
|
-
- `AgentManager` - Agent configuration and loading
|
|
52
|
-
- Main agent for general tasks
|
|
53
|
-
- Specialized SubAgents:
|
|
54
|
-
- Plan Agent - Task planning and decomposition
|
|
55
|
-
- Explore Agent - Codebase exploration
|
|
56
|
-
- Frontend Tester - Frontend testing
|
|
57
|
-
- Code Reviewer - Code quality review
|
|
58
|
-
- Frontend/Backend Developer - Specialized development
|
|
59
|
-
- GUI SubAgent - Browser/desktop automation
|
|
60
|
-
|
|
61
|
-
### 4. Tool System
|
|
62
|
-
- `ToolRegistry` - Tool registration and management
|
|
63
|
-
- Built-in tools (20+)
|
|
64
|
-
- MCP integration with dynamic tool loading
|
|
65
|
-
- Skill invocation system (`InvokeSkill` tool)
|
|
66
|
-
- Smart Mode approval system
|
|
67
|
-
|
|
68
|
-
### 5. AI Client Layer
|
|
69
|
-
- `AIClient` - Local AI client for OpenAI-compatible APIs
|
|
70
|
-
- `RemoteAIClient` - Remote AI client for xAgent web service
|
|
71
|
-
- Multi-model support
|
|
72
|
-
- Token optimization
|
|
73
|
-
|
|
74
|
-
### 6. GUI SubAgent
|
|
75
|
-
- `ComputerOperator` - Desktop control (mouse, keyboard, screenshots)
|
|
76
|
-
- `GUIAgent` - LLM-driven automation agent
|
|
77
|
-
- Support for local and remote VLM modes
|
|
78
|
-
- Action parsing and execution
|
|
79
|
-
|
|
80
|
-
### 7. Authentication & Config
|
|
81
|
-
- `AuthService` - OAuth and API key authentication
|
|
82
|
-
- `ConfigManager` - Global and project settings
|
|
83
|
-
- Support for multiple auth types:
|
|
84
|
-
- `oauth-xagent` - xAgent native authentication
|
|
85
|
-
- `api_key` - Direct API key
|
|
86
|
-
- `openai_compatible` - Third-party OpenAI-compatible APIs
|
|
87
|
-
|
|
88
|
-
## Execution Flow
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
User Input → Slash Command Parser
|
|
92
|
-
↓
|
|
93
|
-
Input Processor
|
|
94
|
-
↓
|
|
95
|
-
Agent Decision
|
|
96
|
-
↓
|
|
97
|
-
┌───────────┴───────────┐
|
|
98
|
-
↓ ↓
|
|
99
|
-
Local Mode Remote Mode
|
|
100
|
-
(API Key) (OAuth)
|
|
101
|
-
↓ ↓
|
|
102
|
-
Tool Selection Sync to Remote
|
|
103
|
-
↓ ↓
|
|
104
|
-
Tool Execution Remote Approval
|
|
105
|
-
↓ ↓
|
|
106
|
-
Smart Approval Tool Execution
|
|
107
|
-
(if SMART mode) ↓
|
|
108
|
-
↓ Sync Results
|
|
109
|
-
Response Output
|
|
110
|
-
↓
|
|
111
|
-
Checkpoint Save
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Security Model
|
|
115
|
-
|
|
116
|
-
xAgent implements five execution modes:
|
|
117
|
-
- **YOLO**: Full control without restrictions
|
|
118
|
-
- **ACCEPT_EDITS**: File-only modifications
|
|
119
|
-
- **PLAN**: Plan before execution
|
|
120
|
-
- **DEFAULT**: Approval required for actions
|
|
121
|
-
- **SMART**: Intelligent mode with three-layer approval (whitelist, blacklist, AI review)
|
|
122
|
-
|
|
123
|
-
## Smart Mode Architecture
|
|
124
|
-
|
|
125
|
-
Smart Mode uses a three-layer approval system:
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
┌─────────────────────────────────────────┐
|
|
129
|
-
│ Tool Call Request │
|
|
130
|
-
└─────────────────────────────────────────┘
|
|
131
|
-
↓
|
|
132
|
-
┌─────────────────────────────────────────┐
|
|
133
|
-
│ Layer 1: Whitelist Check │
|
|
134
|
-
│ (Safe tools → Auto-approved) │
|
|
135
|
-
└─────────────────────────────────────────┘
|
|
136
|
-
↓
|
|
137
|
-
┌─────────────────────────────────────────┐
|
|
138
|
-
│ Layer 2: Blacklist Check │
|
|
139
|
-
│ (Dangerous → User confirmation) │
|
|
140
|
-
└─────────────────────────────────────────┘
|
|
141
|
-
↓
|
|
142
|
-
┌─────────────────────────────────────────┐
|
|
143
|
-
│ Layer 3: AI Review │
|
|
144
|
-
│ (Unknown → AI risk assessment) │
|
|
145
|
-
└─────────────────────────────────────────┘
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Remote Mode Support
|
|
149
|
-
|
|
150
|
-
xAgent supports two operating modes:
|
|
151
|
-
|
|
152
|
-
### Local Mode
|
|
153
|
-
- Uses local API key for AI calls
|
|
154
|
-
- All tool execution happens locally
|
|
155
|
-
- Full Smart Mode approval functionality
|
|
156
|
-
- Suitable for self-hosted LLMs
|
|
157
|
-
|
|
158
|
-
### Remote Mode (OAuth)
|
|
159
|
-
- Uses xAgent web service for AI calls
|
|
160
|
-
- Tools are synced to remote server
|
|
161
|
-
- Approval handled by remote LLM
|
|
162
|
-
- Requires authentication with xAgent account
|
|
163
|
-
|
|
164
|
-
## Related Documentation
|
|
165
|
-
|
|
166
|
-
- [Tool System Design](./tool-system-design.md)
|
|
167
|
-
- [MCP Integration Guide](./mcp-integration-guide.md)
|
|
168
|
-
- [CLI Commands](../cli/commands.md)
|
|
169
|
-
- [Smart Mode Documentation](../smart-mode.md)
|
|
1
|
+
# Architecture Overview
|
|
2
|
+
|
|
3
|
+
This document provides a high-level overview of the xAgent CLI architecture.
|
|
4
|
+
|
|
5
|
+
## Core Philosophy
|
|
6
|
+
|
|
7
|
+
xAgent CLI is designed as an intelligent agent for personal PCs and autonomous living. It transforms how users interact with their digital life through AI-powered automation.
|
|
8
|
+
|
|
9
|
+
## System Architecture
|
|
10
|
+
|
|
11
|
+
### Layered Architecture
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌─────────────────────────────────────────────────┐
|
|
15
|
+
│ CLI Interface │
|
|
16
|
+
│ (Ink/React Components) │
|
|
17
|
+
├─────────────────────────────────────────────────┤
|
|
18
|
+
│ Session Layer │
|
|
19
|
+
│ (Session + Conversation Management) │
|
|
20
|
+
├─────────────────────────────────────────────────┤
|
|
21
|
+
│ Agent System │
|
|
22
|
+
│ (SubAgent Orchestration) │
|
|
23
|
+
├─────────────────────────────────────────────────┤
|
|
24
|
+
│ Tool Layer │
|
|
25
|
+
│ (Built-in + MCP + Skill Tools) │
|
|
26
|
+
├─────────────────────────────────────────────────┤
|
|
27
|
+
│ AI Client Layer │
|
|
28
|
+
│ (Local + Remote AI Clients) │
|
|
29
|
+
├─────────────────────────────────────────────────┤
|
|
30
|
+
│ Storage & Config │
|
|
31
|
+
│ (Checkpoint, Settings, Memory) │
|
|
32
|
+
└─────────────────────────────────────────────────┘
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Key Components
|
|
36
|
+
|
|
37
|
+
### 1. CLI Interface
|
|
38
|
+
- Built with Ink (React for CLI)
|
|
39
|
+
- Interactive terminal UI
|
|
40
|
+
- Theme support
|
|
41
|
+
- Cancellation support (ESC key)
|
|
42
|
+
|
|
43
|
+
### 2. Session Management
|
|
44
|
+
- `InteractiveSession` - Main session handler
|
|
45
|
+
- `SessionManager` - Session state management
|
|
46
|
+
- `ConversationManager` - Conversation history
|
|
47
|
+
- `CheckpointManager` - State persistence
|
|
48
|
+
- `ContextCompressor` - Context optimization
|
|
49
|
+
|
|
50
|
+
### 3. Agent System
|
|
51
|
+
- `AgentManager` - Agent configuration and loading
|
|
52
|
+
- Main agent for general tasks
|
|
53
|
+
- Specialized SubAgents:
|
|
54
|
+
- Plan Agent - Task planning and decomposition
|
|
55
|
+
- Explore Agent - Codebase exploration
|
|
56
|
+
- Frontend Tester - Frontend testing
|
|
57
|
+
- Code Reviewer - Code quality review
|
|
58
|
+
- Frontend/Backend Developer - Specialized development
|
|
59
|
+
- GUI SubAgent - Browser/desktop automation
|
|
60
|
+
|
|
61
|
+
### 4. Tool System
|
|
62
|
+
- `ToolRegistry` - Tool registration and management
|
|
63
|
+
- Built-in tools (20+)
|
|
64
|
+
- MCP integration with dynamic tool loading
|
|
65
|
+
- Skill invocation system (`InvokeSkill` tool)
|
|
66
|
+
- Smart Mode approval system
|
|
67
|
+
|
|
68
|
+
### 5. AI Client Layer
|
|
69
|
+
- `AIClient` - Local AI client for OpenAI-compatible APIs
|
|
70
|
+
- `RemoteAIClient` - Remote AI client for xAgent web service
|
|
71
|
+
- Multi-model support
|
|
72
|
+
- Token optimization
|
|
73
|
+
|
|
74
|
+
### 6. GUI SubAgent
|
|
75
|
+
- `ComputerOperator` - Desktop control (mouse, keyboard, screenshots)
|
|
76
|
+
- `GUIAgent` - LLM-driven automation agent
|
|
77
|
+
- Support for local and remote VLM modes
|
|
78
|
+
- Action parsing and execution
|
|
79
|
+
|
|
80
|
+
### 7. Authentication & Config
|
|
81
|
+
- `AuthService` - OAuth and API key authentication
|
|
82
|
+
- `ConfigManager` - Global and project settings
|
|
83
|
+
- Support for multiple auth types:
|
|
84
|
+
- `oauth-xagent` - xAgent native authentication
|
|
85
|
+
- `api_key` - Direct API key
|
|
86
|
+
- `openai_compatible` - Third-party OpenAI-compatible APIs
|
|
87
|
+
|
|
88
|
+
## Execution Flow
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
User Input → Slash Command Parser
|
|
92
|
+
↓
|
|
93
|
+
Input Processor
|
|
94
|
+
↓
|
|
95
|
+
Agent Decision
|
|
96
|
+
↓
|
|
97
|
+
┌───────────┴───────────┐
|
|
98
|
+
↓ ↓
|
|
99
|
+
Local Mode Remote Mode
|
|
100
|
+
(API Key) (OAuth)
|
|
101
|
+
↓ ↓
|
|
102
|
+
Tool Selection Sync to Remote
|
|
103
|
+
↓ ↓
|
|
104
|
+
Tool Execution Remote Approval
|
|
105
|
+
↓ ↓
|
|
106
|
+
Smart Approval Tool Execution
|
|
107
|
+
(if SMART mode) ↓
|
|
108
|
+
↓ Sync Results
|
|
109
|
+
Response Output
|
|
110
|
+
↓
|
|
111
|
+
Checkpoint Save
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Security Model
|
|
115
|
+
|
|
116
|
+
xAgent implements five execution modes:
|
|
117
|
+
- **YOLO**: Full control without restrictions
|
|
118
|
+
- **ACCEPT_EDITS**: File-only modifications
|
|
119
|
+
- **PLAN**: Plan before execution
|
|
120
|
+
- **DEFAULT**: Approval required for actions
|
|
121
|
+
- **SMART**: Intelligent mode with three-layer approval (whitelist, blacklist, AI review)
|
|
122
|
+
|
|
123
|
+
## Smart Mode Architecture
|
|
124
|
+
|
|
125
|
+
Smart Mode uses a three-layer approval system:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
┌─────────────────────────────────────────┐
|
|
129
|
+
│ Tool Call Request │
|
|
130
|
+
└─────────────────────────────────────────┘
|
|
131
|
+
↓
|
|
132
|
+
┌─────────────────────────────────────────┐
|
|
133
|
+
│ Layer 1: Whitelist Check │
|
|
134
|
+
│ (Safe tools → Auto-approved) │
|
|
135
|
+
└─────────────────────────────────────────┘
|
|
136
|
+
↓
|
|
137
|
+
┌─────────────────────────────────────────┐
|
|
138
|
+
│ Layer 2: Blacklist Check │
|
|
139
|
+
│ (Dangerous → User confirmation) │
|
|
140
|
+
└─────────────────────────────────────────┘
|
|
141
|
+
↓
|
|
142
|
+
┌─────────────────────────────────────────┐
|
|
143
|
+
│ Layer 3: AI Review │
|
|
144
|
+
│ (Unknown → AI risk assessment) │
|
|
145
|
+
└─────────────────────────────────────────┘
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Remote Mode Support
|
|
149
|
+
|
|
150
|
+
xAgent supports two operating modes:
|
|
151
|
+
|
|
152
|
+
### Local Mode
|
|
153
|
+
- Uses local API key for AI calls
|
|
154
|
+
- All tool execution happens locally
|
|
155
|
+
- Full Smart Mode approval functionality
|
|
156
|
+
- Suitable for self-hosted LLMs
|
|
157
|
+
|
|
158
|
+
### Remote Mode (OAuth)
|
|
159
|
+
- Uses xAgent web service for AI calls
|
|
160
|
+
- Tools are synced to remote server
|
|
161
|
+
- Approval handled by remote LLM
|
|
162
|
+
- Requires authentication with xAgent account
|
|
163
|
+
|
|
164
|
+
## Related Documentation
|
|
165
|
+
|
|
166
|
+
- [Tool System Design](./tool-system-design.md)
|
|
167
|
+
- [MCP Integration Guide](./mcp-integration-guide.md)
|
|
168
|
+
- [CLI Commands](../cli/commands.md)
|
|
169
|
+
- [Smart Mode Documentation](../smart-mode.md)
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
# Tool System Design
|
|
2
|
-
|
|
3
|
-
This document describes the tool system architecture and design principles.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
xAgent CLI provides a rich set of built-in tools plus support for external tools via MCP (Model Context Protocol). Tools are the primary way agents interact with the filesystem, execute commands, and perform actions.
|
|
8
|
-
|
|
9
|
-
## Tool Categories
|
|
10
|
-
|
|
11
|
-
### File Operations
|
|
12
|
-
| Tool | Description | Permissions Required |
|
|
13
|
-
|------|-------------|---------------------|
|
|
14
|
-
| `Read` | Read file contents | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
15
|
-
| `Write` | Create or overwrite files | YOLO, ACCEPT_EDITS, SMART |
|
|
16
|
-
| `replace` | Replace text in files | YOLO, ACCEPT_EDITS, SMART |
|
|
17
|
-
| `DeleteFile` | Delete files | YOLO, ACCEPT_EDITS, SMART |
|
|
18
|
-
|
|
19
|
-
### Search Tools
|
|
20
|
-
| Tool | Description | Permissions Required |
|
|
21
|
-
|------|-------------|---------------------|
|
|
22
|
-
| `Grep` | Search text patterns | All modes |
|
|
23
|
-
| `SearchCodebase` | Find files by pattern | All modes |
|
|
24
|
-
| `web_search` | Search the web | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
25
|
-
| `web_fetch` | Fetch web content | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
26
|
-
|
|
27
|
-
### Execution Tools
|
|
28
|
-
| Tool | Description | Permissions Required |
|
|
29
|
-
|------|-------------|---------------------|
|
|
30
|
-
| `Bash` | Execute shell commands | YOLO, ACCEPT_EDITS, SMART |
|
|
31
|
-
| `ListDirectory` | List directory contents | All modes |
|
|
32
|
-
| `CreateDirectory` | Create directories | YOLO, ACCEPT_EDITS, SMART |
|
|
33
|
-
|
|
34
|
-
### Task Management
|
|
35
|
-
| Tool | Description | Permissions Required |
|
|
36
|
-
|------|-------------|---------------------|
|
|
37
|
-
| `todo_write` | Create/manage task lists | All modes |
|
|
38
|
-
| `todo_read` | Read task lists | All modes |
|
|
39
|
-
| `task` | Launch SubAgents | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
40
|
-
|
|
41
|
-
### GUI Automation
|
|
42
|
-
| Tool | Description | Permissions Required |
|
|
43
|
-
|------|-------------|---------------------|
|
|
44
|
-
| `gui_operate` | GUI browser automation | YOLO, ACCEPT_EDITS, SMART |
|
|
45
|
-
| `gui_screenshot` | Take browser screenshot | YOLO, ACCEPT_EDITS, SMART |
|
|
46
|
-
| `gui_cleanup` | Cleanup GUI instances | YOLO, ACCEPT_EDITS, SMART |
|
|
47
|
-
|
|
48
|
-
### Skill Invocation
|
|
49
|
-
| Tool | Description | Permissions Required |
|
|
50
|
-
|------|-------------|---------------------|
|
|
51
|
-
| `InvokeSkill` | Invoke specialized skills | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
52
|
-
|
|
53
|
-
### Additional Tools
|
|
54
|
-
| Tool | Description | Permissions Required |
|
|
55
|
-
|------|-------------|---------------------|
|
|
56
|
-
| `image_read` | Analyze image content | All modes |
|
|
57
|
-
| `save_memory` | Remember user preferences | All modes |
|
|
58
|
-
| `ask_user_question` | Ask user for clarification | All modes |
|
|
59
|
-
| `xml_escape` | Escape XML/HTML content | All modes |
|
|
60
|
-
| `exit_plan_mode` | Exit plan mode | PLAN |
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## Tool Interface
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
interface Tool {
|
|
67
|
-
name: string;
|
|
68
|
-
description: string;
|
|
69
|
-
parameters: ToolParameters;
|
|
70
|
-
execute: (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
71
|
-
validate?: (args: Record<string, unknown>) => boolean;
|
|
72
|
-
allowedModes?: ExecutionMode[];
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Tool Registry
|
|
77
|
-
|
|
78
|
-
The ToolRegistry manages tool registration and retrieval:
|
|
79
|
-
|
|
80
|
-
```typescript
|
|
81
|
-
class ToolRegistry {
|
|
82
|
-
register(tool: Tool): void;
|
|
83
|
-
get(name: string): Tool | undefined;
|
|
84
|
-
list(): Tool[];
|
|
85
|
-
getAll(): Tool[];
|
|
86
|
-
getToolsForMode(mode: ExecutionMode): Tool[];
|
|
87
|
-
registerMCPTools(mcpTools: any[]): void;
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Tool Execution Flow
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
Tool Call → Permission Check (by mode)
|
|
95
|
-
↓
|
|
96
|
-
Whitelist Check (Smart Mode)
|
|
97
|
-
↓
|
|
98
|
-
Blacklist Check (Smart Mode)
|
|
99
|
-
↓
|
|
100
|
-
AI Review (Smart Mode)
|
|
101
|
-
↓
|
|
102
|
-
Execution → Result Formatting
|
|
103
|
-
↓
|
|
104
|
-
Response Generation
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Smart Mode Integration
|
|
108
|
-
|
|
109
|
-
In Smart Mode, tools go through a three-layer approval system:
|
|
110
|
-
|
|
111
|
-
1. **Whitelist Check**: Safe tools (Read, ListDirectory, Grep, etc.) are approved automatically
|
|
112
|
-
2. **Blacklist Check**: Dangerous operations are flagged for user confirmation
|
|
113
|
-
3. **AI Review**: Unknown tools are analyzed by AI for risk assessment
|
|
114
|
-
|
|
115
|
-
## Adding Custom Tools
|
|
116
|
-
|
|
117
|
-
1. Implement the Tool interface in tools.ts
|
|
118
|
-
2. Register with ToolRegistry in getToolRegistry()
|
|
119
|
-
3. Add TypeScript types if needed
|
|
120
|
-
4. Write unit tests
|
|
121
|
-
5. Update system-prompt-generator.ts with tool schema
|
|
122
|
-
|
|
123
|
-
## Remote Mode Support
|
|
124
|
-
|
|
125
|
-
Tools can operate in two modes:
|
|
126
|
-
|
|
127
|
-
- **Local Mode**: Tools are executed locally with local AI client
|
|
128
|
-
- **Remote Mode**: Tools are synced to remote server, approval handled by remote LLM
|
|
129
|
-
|
|
130
|
-
## Related Documentation
|
|
131
|
-
|
|
132
|
-
- [Architecture Overview](./overview.md)
|
|
133
|
-
- [MCP Integration Guide](./mcp-integration-guide.md)
|
|
134
|
-
- [Smart Mode Documentation](../smart-mode.md)
|
|
1
|
+
# Tool System Design
|
|
2
|
+
|
|
3
|
+
This document describes the tool system architecture and design principles.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
xAgent CLI provides a rich set of built-in tools plus support for external tools via MCP (Model Context Protocol). Tools are the primary way agents interact with the filesystem, execute commands, and perform actions.
|
|
8
|
+
|
|
9
|
+
## Tool Categories
|
|
10
|
+
|
|
11
|
+
### File Operations
|
|
12
|
+
| Tool | Description | Permissions Required |
|
|
13
|
+
|------|-------------|---------------------|
|
|
14
|
+
| `Read` | Read file contents | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
15
|
+
| `Write` | Create or overwrite files | YOLO, ACCEPT_EDITS, SMART |
|
|
16
|
+
| `replace` | Replace text in files | YOLO, ACCEPT_EDITS, SMART |
|
|
17
|
+
| `DeleteFile` | Delete files | YOLO, ACCEPT_EDITS, SMART |
|
|
18
|
+
|
|
19
|
+
### Search Tools
|
|
20
|
+
| Tool | Description | Permissions Required |
|
|
21
|
+
|------|-------------|---------------------|
|
|
22
|
+
| `Grep` | Search text patterns | All modes |
|
|
23
|
+
| `SearchCodebase` | Find files by pattern | All modes |
|
|
24
|
+
| `web_search` | Search the web | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
25
|
+
| `web_fetch` | Fetch web content | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
26
|
+
|
|
27
|
+
### Execution Tools
|
|
28
|
+
| Tool | Description | Permissions Required |
|
|
29
|
+
|------|-------------|---------------------|
|
|
30
|
+
| `Bash` | Execute shell commands | YOLO, ACCEPT_EDITS, SMART |
|
|
31
|
+
| `ListDirectory` | List directory contents | All modes |
|
|
32
|
+
| `CreateDirectory` | Create directories | YOLO, ACCEPT_EDITS, SMART |
|
|
33
|
+
|
|
34
|
+
### Task Management
|
|
35
|
+
| Tool | Description | Permissions Required |
|
|
36
|
+
|------|-------------|---------------------|
|
|
37
|
+
| `todo_write` | Create/manage task lists | All modes |
|
|
38
|
+
| `todo_read` | Read task lists | All modes |
|
|
39
|
+
| `task` | Launch SubAgents | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
40
|
+
|
|
41
|
+
### GUI Automation
|
|
42
|
+
| Tool | Description | Permissions Required |
|
|
43
|
+
|------|-------------|---------------------|
|
|
44
|
+
| `gui_operate` | GUI browser automation | YOLO, ACCEPT_EDITS, SMART |
|
|
45
|
+
| `gui_screenshot` | Take browser screenshot | YOLO, ACCEPT_EDITS, SMART |
|
|
46
|
+
| `gui_cleanup` | Cleanup GUI instances | YOLO, ACCEPT_EDITS, SMART |
|
|
47
|
+
|
|
48
|
+
### Skill Invocation
|
|
49
|
+
| Tool | Description | Permissions Required |
|
|
50
|
+
|------|-------------|---------------------|
|
|
51
|
+
| `InvokeSkill` | Invoke specialized skills | YOLO, ACCEPT_EDITS, PLAN, SMART |
|
|
52
|
+
|
|
53
|
+
### Additional Tools
|
|
54
|
+
| Tool | Description | Permissions Required |
|
|
55
|
+
|------|-------------|---------------------|
|
|
56
|
+
| `image_read` | Analyze image content | All modes |
|
|
57
|
+
| `save_memory` | Remember user preferences | All modes |
|
|
58
|
+
| `ask_user_question` | Ask user for clarification | All modes |
|
|
59
|
+
| `xml_escape` | Escape XML/HTML content | All modes |
|
|
60
|
+
| `exit_plan_mode` | Exit plan mode | PLAN |
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Tool Interface
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
interface Tool {
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
parameters: ToolParameters;
|
|
70
|
+
execute: (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
71
|
+
validate?: (args: Record<string, unknown>) => boolean;
|
|
72
|
+
allowedModes?: ExecutionMode[];
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Tool Registry
|
|
77
|
+
|
|
78
|
+
The ToolRegistry manages tool registration and retrieval:
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
class ToolRegistry {
|
|
82
|
+
register(tool: Tool): void;
|
|
83
|
+
get(name: string): Tool | undefined;
|
|
84
|
+
list(): Tool[];
|
|
85
|
+
getAll(): Tool[];
|
|
86
|
+
getToolsForMode(mode: ExecutionMode): Tool[];
|
|
87
|
+
registerMCPTools(mcpTools: any[]): void;
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Tool Execution Flow
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Tool Call → Permission Check (by mode)
|
|
95
|
+
↓
|
|
96
|
+
Whitelist Check (Smart Mode)
|
|
97
|
+
↓
|
|
98
|
+
Blacklist Check (Smart Mode)
|
|
99
|
+
↓
|
|
100
|
+
AI Review (Smart Mode)
|
|
101
|
+
↓
|
|
102
|
+
Execution → Result Formatting
|
|
103
|
+
↓
|
|
104
|
+
Response Generation
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Smart Mode Integration
|
|
108
|
+
|
|
109
|
+
In Smart Mode, tools go through a three-layer approval system:
|
|
110
|
+
|
|
111
|
+
1. **Whitelist Check**: Safe tools (Read, ListDirectory, Grep, etc.) are approved automatically
|
|
112
|
+
2. **Blacklist Check**: Dangerous operations are flagged for user confirmation
|
|
113
|
+
3. **AI Review**: Unknown tools are analyzed by AI for risk assessment
|
|
114
|
+
|
|
115
|
+
## Adding Custom Tools
|
|
116
|
+
|
|
117
|
+
1. Implement the Tool interface in tools.ts
|
|
118
|
+
2. Register with ToolRegistry in getToolRegistry()
|
|
119
|
+
3. Add TypeScript types if needed
|
|
120
|
+
4. Write unit tests
|
|
121
|
+
5. Update system-prompt-generator.ts with tool schema
|
|
122
|
+
|
|
123
|
+
## Remote Mode Support
|
|
124
|
+
|
|
125
|
+
Tools can operate in two modes:
|
|
126
|
+
|
|
127
|
+
- **Local Mode**: Tools are executed locally with local AI client
|
|
128
|
+
- **Remote Mode**: Tools are synced to remote server, approval handled by remote LLM
|
|
129
|
+
|
|
130
|
+
## Related Documentation
|
|
131
|
+
|
|
132
|
+
- [Architecture Overview](./overview.md)
|
|
133
|
+
- [MCP Integration Guide](./mcp-integration-guide.md)
|
|
134
|
+
- [Smart Mode Documentation](../smart-mode.md)
|