@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
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Core Types
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* AI Provider type identifier
|
|
7
|
+
*/
|
|
8
|
+
export type AIProviderType = 'openai' | 'anthropic' | 'remote';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Tool call from OpenAI format
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolCall {
|
|
14
|
+
id?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
function?: {
|
|
17
|
+
name?: string;
|
|
18
|
+
arguments?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Unified message interface
|
|
24
|
+
*/
|
|
25
|
+
export interface Message {
|
|
26
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
27
|
+
content: string | Array<ContentBlock>;
|
|
28
|
+
reasoning_content?: string;
|
|
29
|
+
tool_calls?: ToolCall[];
|
|
30
|
+
tool_call_id?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Content block for multi-modal messages
|
|
35
|
+
*/
|
|
36
|
+
export interface ContentBlock {
|
|
37
|
+
type: 'text' | 'tool_use' | 'tool_result' | 'thinking' | 'image' | 'image_url';
|
|
38
|
+
text?: string;
|
|
39
|
+
id?: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
input?: Record<string, unknown>;
|
|
42
|
+
tool_use_id?: string;
|
|
43
|
+
content?: string;
|
|
44
|
+
thinking?: string;
|
|
45
|
+
image_url?: { url: string };
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Tool definition
|
|
50
|
+
*/
|
|
51
|
+
export interface ToolDefinition {
|
|
52
|
+
type: 'function';
|
|
53
|
+
function: {
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
parameters?: Record<string, unknown>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Tool choice options
|
|
62
|
+
*/
|
|
63
|
+
export type ToolChoice = 'auto' | 'none' | { type: 'function'; function: { name: string } };
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Completion options
|
|
67
|
+
*/
|
|
68
|
+
export interface CompletionOptions {
|
|
69
|
+
model?: string;
|
|
70
|
+
temperature?: number;
|
|
71
|
+
maxTokens?: number;
|
|
72
|
+
tools?: ToolDefinition[];
|
|
73
|
+
toolChoice?: ToolChoice;
|
|
74
|
+
thinkingTokens?: number;
|
|
75
|
+
signal?: AbortSignal;
|
|
76
|
+
// Remote-specific options
|
|
77
|
+
taskId?: string;
|
|
78
|
+
status?: 'begin' | 'continue' | 'end' | 'cancel' | 'timeout' | 'failure';
|
|
79
|
+
conversationId?: string;
|
|
80
|
+
context?: {
|
|
81
|
+
cwd?: string;
|
|
82
|
+
workspace?: string;
|
|
83
|
+
recentFiles?: string[];
|
|
84
|
+
};
|
|
85
|
+
toolResults?: Array<{
|
|
86
|
+
toolUseId: string;
|
|
87
|
+
content: string;
|
|
88
|
+
isError?: boolean;
|
|
89
|
+
}>;
|
|
90
|
+
llmModelName?: string;
|
|
91
|
+
vlmModelName?: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Token usage information
|
|
96
|
+
*/
|
|
97
|
+
export interface TokenUsage {
|
|
98
|
+
prompt_tokens: number;
|
|
99
|
+
completion_tokens: number;
|
|
100
|
+
total_tokens: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Unified completion response
|
|
105
|
+
*/
|
|
106
|
+
export interface CompletionResponse {
|
|
107
|
+
id: string;
|
|
108
|
+
object: 'chat.completion';
|
|
109
|
+
created: number;
|
|
110
|
+
model: string;
|
|
111
|
+
choices: Array<{
|
|
112
|
+
index: number;
|
|
113
|
+
message: Message;
|
|
114
|
+
finish_reason: StopReason;
|
|
115
|
+
}>;
|
|
116
|
+
usage?: TokenUsage;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Stop reason types
|
|
121
|
+
*/
|
|
122
|
+
export type StopReason = 'stop' | 'length' | 'tool_calls' | 'content_filter';
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Stream event types
|
|
126
|
+
*/
|
|
127
|
+
export interface StreamEvent {
|
|
128
|
+
type: 'text_delta' | 'reasoning_delta' | 'toolcall_delta' | 'done' | 'error';
|
|
129
|
+
delta?: string;
|
|
130
|
+
content?: string;
|
|
131
|
+
partial?: Message;
|
|
132
|
+
reason?: StopReason;
|
|
133
|
+
error?: Error;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Provider Configuration Types
|
|
138
|
+
// ============================================================================
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Base provider configuration
|
|
142
|
+
*/
|
|
143
|
+
export interface BaseProviderConfig {
|
|
144
|
+
type: AIProviderType;
|
|
145
|
+
model?: string;
|
|
146
|
+
showDebugInfo?: boolean;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* OpenAI compatible provider configuration
|
|
151
|
+
*/
|
|
152
|
+
export interface OpenAIConfig extends BaseProviderConfig {
|
|
153
|
+
type: 'openai';
|
|
154
|
+
apiKey?: string;
|
|
155
|
+
baseUrl?: string;
|
|
156
|
+
organization?: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Anthropic compatible provider configuration
|
|
161
|
+
*/
|
|
162
|
+
export interface AnthropicConfig extends BaseProviderConfig {
|
|
163
|
+
type: 'anthropic';
|
|
164
|
+
apiKey?: string;
|
|
165
|
+
baseUrl?: string;
|
|
166
|
+
/** Custom headers to add to each request */
|
|
167
|
+
extraHeaders?: Record<string, string>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Remote provider configuration (xAgent Web Service)
|
|
172
|
+
*/
|
|
173
|
+
export interface RemoteConfig extends BaseProviderConfig {
|
|
174
|
+
type: 'remote';
|
|
175
|
+
authToken?: string;
|
|
176
|
+
baseUrl?: string; // Optional, defaults to xAgent web service
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Unified configuration union
|
|
181
|
+
*/
|
|
182
|
+
export type AIConfig = OpenAIConfig | AnthropicConfig | RemoteConfig;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Check if config is OpenAI type
|
|
186
|
+
*/
|
|
187
|
+
export function isOpenAIConfig(config: AIConfig): config is OpenAIConfig {
|
|
188
|
+
return config.type === 'openai';
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Check if config is Anthropic type
|
|
193
|
+
*/
|
|
194
|
+
export function isAnthropicConfig(config: AIConfig): config is AnthropicConfig {
|
|
195
|
+
return config.type === 'anthropic';
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Check if config is Remote type
|
|
200
|
+
*/
|
|
201
|
+
export function isRemoteConfig(config: AIConfig): config is RemoteConfig {
|
|
202
|
+
return config.type === 'remote';
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Provider Interface
|
|
207
|
+
// ============================================================================
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* AI Provider interface - all providers must implement this
|
|
211
|
+
*/
|
|
212
|
+
export interface AIProvider {
|
|
213
|
+
/** Provider type identifier */
|
|
214
|
+
readonly type: AIProviderType;
|
|
215
|
+
|
|
216
|
+
/** Get list of available models */
|
|
217
|
+
getModels(): Promise<Model[]>;
|
|
218
|
+
|
|
219
|
+
/** Non-streaming chat completion */
|
|
220
|
+
complete(messages: Message[], options?: CompletionOptions): Promise<CompletionResponse>;
|
|
221
|
+
|
|
222
|
+
/** Streaming chat completion */
|
|
223
|
+
stream(messages: Message[], options?: CompletionOptions): AsyncIterable<StreamEvent>;
|
|
224
|
+
|
|
225
|
+
/** Abort ongoing request */
|
|
226
|
+
abort(): void;
|
|
227
|
+
|
|
228
|
+
/** Close provider and release resources */
|
|
229
|
+
close(): Promise<void>;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Model information
|
|
234
|
+
*/
|
|
235
|
+
export interface Model {
|
|
236
|
+
id: string;
|
|
237
|
+
name: string;
|
|
238
|
+
provider: AIProviderType;
|
|
239
|
+
contextWindow?: number;
|
|
240
|
+
maxTokens?: number;
|
|
241
|
+
supportsStreaming?: boolean;
|
|
242
|
+
supportsTools?: boolean;
|
|
243
|
+
supportsThinking?: boolean;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Provider registration entry
|
|
248
|
+
*/
|
|
249
|
+
export interface ProviderRegistryEntry {
|
|
250
|
+
create: (config: AIConfig) => AIProvider;
|
|
251
|
+
models: Model[];
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// ============================================================================
|
|
255
|
+
// Utility Functions (moved from ai-client.ts)
|
|
256
|
+
// ============================================================================
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Thinking mode levels
|
|
260
|
+
*/
|
|
261
|
+
export type ThinkingMode = 'none' | 'normal' | 'hard' | 'mega' | 'ultra';
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Detect thinking mode from user input
|
|
265
|
+
*/
|
|
266
|
+
export function detectThinkingKeywords(text: string): ThinkingMode {
|
|
267
|
+
const ultraKeywords = ['super think', 'extreme think', 'deep think', 'full think', 'ultra think', 'careful think',
|
|
268
|
+
'ultrathink', 'think really super hard', 'think intensely'];
|
|
269
|
+
const megaKeywords = ['strong think', 'powerful think', 'think hard', 'try hard to think', 'think well', 'think carefully',
|
|
270
|
+
'megathink', 'think really hard', 'think a lot'];
|
|
271
|
+
const hardKeywords = ['think again', 'think more', 'think clearly', 'think thoroughly', 'consider carefully',
|
|
272
|
+
'think about it', 'think more', 'think harder'];
|
|
273
|
+
const normalKeywords = ['think', 'think', 'consider', 'think'];
|
|
274
|
+
|
|
275
|
+
const lowerText = text.toLowerCase();
|
|
276
|
+
|
|
277
|
+
if (ultraKeywords.some(keyword => lowerText.includes(keyword.toLowerCase()))) {
|
|
278
|
+
return 'ultra';
|
|
279
|
+
} else if (megaKeywords.some(keyword => lowerText.includes(keyword.toLowerCase()))) {
|
|
280
|
+
return 'mega';
|
|
281
|
+
} else if (hardKeywords.some(keyword => lowerText.includes(keyword.toLowerCase()))) {
|
|
282
|
+
return 'hard';
|
|
283
|
+
} else if (normalKeywords.some(keyword => lowerText.includes(keyword.toLowerCase()))) {
|
|
284
|
+
return 'normal';
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return 'none';
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Get thinking token count for a mode
|
|
292
|
+
*/
|
|
293
|
+
export function getThinkingTokens(mode: ThinkingMode): number {
|
|
294
|
+
const tokensMap: Record<ThinkingMode, number> = {
|
|
295
|
+
none: 0,
|
|
296
|
+
normal: 2000,
|
|
297
|
+
hard: 4000,
|
|
298
|
+
mega: 10000,
|
|
299
|
+
ultra: 32000
|
|
300
|
+
};
|
|
301
|
+
return tokensMap[mode];
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// Remote-Specific Interface Extension
|
|
306
|
+
// ============================================================================
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Remote models response format
|
|
310
|
+
*/
|
|
311
|
+
export interface RemoteModelsResponse {
|
|
312
|
+
llm: Model[];
|
|
313
|
+
vlm: Model[];
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Extended interface for remote provider with task management methods
|
|
318
|
+
*/
|
|
319
|
+
export interface RemoteTaskManager {
|
|
320
|
+
completeTask(taskId: string): Promise<void>;
|
|
321
|
+
cancelTask(taskId: string): Promise<void>;
|
|
322
|
+
failTask(taskId: string, reason: 'timeout' | 'failure'): Promise<void>;
|
|
323
|
+
invokeVLM(messages: Message[], systemPrompt: string, options?: { taskId?: string; status?: 'begin' | 'continue'; signal?: AbortSignal }): Promise<string>;
|
|
324
|
+
/** Get models including both LLM and VLM for remote provider */
|
|
325
|
+
getRemoteModels(): Promise<RemoteModelsResponse>;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Combined interface for remote provider
|
|
330
|
+
*/
|
|
331
|
+
export interface RemoteAIProvider extends AIProvider, RemoteTaskManager {}
|
|
332
|
+
|
|
333
|
+
// ============================================================================
|
|
334
|
+
// Error Types
|
|
335
|
+
// ============================================================================
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Token invalid error
|
|
339
|
+
*/
|
|
340
|
+
export class TokenInvalidError extends Error {
|
|
341
|
+
constructor(message: string = 'Authentication token is invalid or expired') {
|
|
342
|
+
super(message);
|
|
343
|
+
this.name = 'TokenInvalidError';
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// ============================================================================
|
|
348
|
+
// Retry Configuration
|
|
349
|
+
// ============================================================================
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Default retry configuration for AI providers
|
|
353
|
+
*/
|
|
354
|
+
export const DEFAULT_RETRY_CONFIG = {
|
|
355
|
+
maxRetries: 3,
|
|
356
|
+
baseDelay: 1000,
|
|
357
|
+
maxDelay: 60000,
|
|
358
|
+
maxTotalTime: 1200000, // 20分钟
|
|
359
|
+
jitter: true,
|
|
360
|
+
retryOnTimeout: true,
|
|
361
|
+
retryOn5xx: true,
|
|
362
|
+
retryOn429: true,
|
|
363
|
+
backoffMultiplier: 2,
|
|
364
|
+
} as const;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Client Factory
|
|
3
|
+
* Creates mode-aware AI client (local or remote) based on authentication configuration.
|
|
4
|
+
*
|
|
5
|
+
* This module provides a unified interface for different AI providers.
|
|
6
|
+
* Supports OpenAI, Anthropic (including MiniMax), and Remote (xAgent Web Service).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { createAIClient, type AIClientInterface } from './ai-client-factory.js';
|
|
10
|
+
* const aiClient = createAIClient(authConfig);
|
|
11
|
+
* const response = await aiClient.chatCompletion(messages, { model: 'gpt-4' });
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { Message, CompletionOptions, CompletionResponse, AIConfig, RemoteTaskManager, Model, RemoteModelsResponse } from './ai-client/types.js';
|
|
15
|
+
import { AuthConfig, AuthType } from './types.js';
|
|
16
|
+
import { ProviderFactory, type AIProvider } from './ai-client/index.js';
|
|
17
|
+
import type { RemoteAIProvider } from './ai-client/types.js';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Unified AI client interface for both local and remote modes.
|
|
21
|
+
* Provides consistent API regardless of the underlying implementation.
|
|
22
|
+
* Includes optional methods for remote task management.
|
|
23
|
+
*/
|
|
24
|
+
export interface AIClientInterface {
|
|
25
|
+
getModels(): Promise<Model[]>;
|
|
26
|
+
chatCompletion(messages: Message[], options?: CompletionOptions): Promise<CompletionResponse>;
|
|
27
|
+
compress(messages: Message[], options?: { maxTokens?: number; temperature?: number }): Promise<CompletionResponse>;
|
|
28
|
+
// Optional remote task management methods (only available in remote mode)
|
|
29
|
+
completeTask?(taskId: string): Promise<void>;
|
|
30
|
+
cancelTask?(taskId: string): Promise<void>;
|
|
31
|
+
failTask?(taskId: string, reason: 'timeout' | 'failure'): Promise<void>;
|
|
32
|
+
// VLM invocation for image analysis (only available in remote mode)
|
|
33
|
+
invokeVLM?(messages: Message[], systemPrompt: string, options?: { taskId?: string; status?: 'begin' | 'continue'; signal?: AbortSignal }): Promise<string>;
|
|
34
|
+
// Get remote models including both LLM and VLM (only available in remote mode)
|
|
35
|
+
getRemoteModels?(): Promise<RemoteModelsResponse>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Adapter to make AIProvider compatible with AIClientInterface
|
|
40
|
+
*/
|
|
41
|
+
class ProviderAdapter implements AIClientInterface {
|
|
42
|
+
private provider: AIProvider;
|
|
43
|
+
|
|
44
|
+
constructor(provider: AIProvider) {
|
|
45
|
+
this.provider = provider;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async getModels(): Promise<Model[]> {
|
|
49
|
+
return this.provider.getModels();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async chatCompletion(messages: Message[], options?: CompletionOptions): Promise<CompletionResponse> {
|
|
53
|
+
return this.provider.complete(messages, options);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async compress(messages: Message[], options?: { model?: string; maxTokens?: number; temperature?: number }): Promise<CompletionResponse> {
|
|
57
|
+
return this.provider.complete(messages, {
|
|
58
|
+
model: options?.model,
|
|
59
|
+
temperature: options?.temperature,
|
|
60
|
+
maxTokens: options?.maxTokens,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Optional methods - not available in local mode
|
|
65
|
+
completeTask?(_taskId: string): Promise<void> {
|
|
66
|
+
throw new Error('completeTask is only available in remote mode');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
cancelTask?(_taskId: string): Promise<void> {
|
|
70
|
+
throw new Error('cancelTask is only available in remote mode');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
failTask?(_taskId: string, _reason: 'timeout' | 'failure'): Promise<void> {
|
|
74
|
+
throw new Error('failTask is only available in remote mode');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
invokeVLM?(_messages: Message[], _systemPrompt: string, _options?: { taskId?: string; status?: 'begin' | 'continue'; signal?: AbortSignal }): Promise<string> {
|
|
78
|
+
throw new Error('invokeVLM is only available in remote mode');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
getRemoteModels?(): Promise<RemoteModelsResponse> {
|
|
82
|
+
throw new Error('getRemoteModels is only available in remote mode');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Adapter for remote provider with task management
|
|
88
|
+
*/
|
|
89
|
+
class RemoteProviderAdapter implements AIClientInterface, RemoteTaskManager {
|
|
90
|
+
private provider: RemoteAIProvider;
|
|
91
|
+
|
|
92
|
+
constructor(provider: RemoteAIProvider) {
|
|
93
|
+
this.provider = provider;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async getModels(): Promise<Model[]> {
|
|
97
|
+
return this.provider.getModels();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async chatCompletion(messages: Message[], options?: CompletionOptions): Promise<CompletionResponse> {
|
|
101
|
+
return this.provider.complete(messages, options);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async compress(messages: Message[], options?: { model?: string; maxTokens?: number; temperature?: number }): Promise<CompletionResponse> {
|
|
105
|
+
return this.provider.complete(messages, {
|
|
106
|
+
model: options?.model,
|
|
107
|
+
temperature: options?.temperature,
|
|
108
|
+
maxTokens: options?.maxTokens,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async completeTask(taskId: string): Promise<void> {
|
|
113
|
+
return this.provider.completeTask(taskId);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async cancelTask(taskId: string): Promise<void> {
|
|
117
|
+
return this.provider.cancelTask(taskId);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async failTask(taskId: string, reason: 'timeout' | 'failure'): Promise<void> {
|
|
121
|
+
return this.provider.failTask(taskId, reason);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async invokeVLM(messages: Message[], systemPrompt: string, options?: { taskId?: string; status?: 'begin' | 'continue'; signal?: AbortSignal }): Promise<string> {
|
|
125
|
+
return this.provider.invokeVLM(messages, systemPrompt, options);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async getRemoteModels(): Promise<RemoteModelsResponse> {
|
|
129
|
+
return this.provider.getRemoteModels();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Create AI client based on authentication configuration.
|
|
135
|
+
*
|
|
136
|
+
* @param authConfig - Authentication configuration from config manager
|
|
137
|
+
* @returns AIClientInterface - Unified AI client interface
|
|
138
|
+
*
|
|
139
|
+
* Behavior:
|
|
140
|
+
* - OAUTH_XAGENT (remote mode): Creates Remote provider that forwards requests to web backend
|
|
141
|
+
* - OPENAI_COMPATIBLE (local mode): Creates OpenAI or Anthropic provider for direct API calls
|
|
142
|
+
* - API_KEY: Creates OpenAI provider with custom baseUrl
|
|
143
|
+
*/
|
|
144
|
+
export function createAIClient(authConfig: AuthConfig): AIClientInterface {
|
|
145
|
+
let config: AIConfig;
|
|
146
|
+
|
|
147
|
+
if (authConfig.type === AuthType.OAUTH_XAGENT) {
|
|
148
|
+
// Remote mode: use xAgent web service
|
|
149
|
+
config = {
|
|
150
|
+
type: 'remote',
|
|
151
|
+
authToken: authConfig.apiKey || '',
|
|
152
|
+
baseUrl: authConfig.xagentApiBaseUrl || 'https://app.xagent.cn',
|
|
153
|
+
};
|
|
154
|
+
} else if (authConfig.baseUrl?.includes('anthropic') ||
|
|
155
|
+
authConfig.baseUrl?.includes('minimax') ||
|
|
156
|
+
authConfig.baseUrl?.includes('minimaxi')) {
|
|
157
|
+
// Anthropic compatible mode (includes MiniMax)
|
|
158
|
+
config = {
|
|
159
|
+
type: 'anthropic',
|
|
160
|
+
apiKey: authConfig.apiKey || '',
|
|
161
|
+
baseUrl: authConfig.baseUrl || 'https://api.anthropic.com',
|
|
162
|
+
model: authConfig.modelName || 'claude-sonnet-4-20250514',
|
|
163
|
+
};
|
|
164
|
+
} else {
|
|
165
|
+
// Default to OpenAI compatible mode
|
|
166
|
+
config = {
|
|
167
|
+
type: 'openai',
|
|
168
|
+
apiKey: authConfig.apiKey || '',
|
|
169
|
+
baseUrl: authConfig.baseUrl || 'https://api.openai.com/v1',
|
|
170
|
+
model: authConfig.modelName || 'gpt-4o',
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const provider = ProviderFactory.create(config);
|
|
175
|
+
|
|
176
|
+
// Use RemoteProviderAdapter for remote mode to support task management
|
|
177
|
+
if (config.type === 'remote') {
|
|
178
|
+
const remoteProvider = ProviderFactory.createRemote(config);
|
|
179
|
+
return new RemoteProviderAdapter(remoteProvider);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return new ProviderAdapter(provider);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Create AI provider directly from config (new API)
|
|
187
|
+
*/
|
|
188
|
+
export function createAIProvider(config: AIConfig): AIProvider {
|
|
189
|
+
return ProviderFactory.create(config);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Get all available models from all providers
|
|
194
|
+
*/
|
|
195
|
+
export function getAllModels() {
|
|
196
|
+
return ProviderFactory.getModels();
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Get available provider types
|
|
201
|
+
*/
|
|
202
|
+
export function getProviderTypes(): string[] {
|
|
203
|
+
return ProviderFactory.getProviderTypes();
|
|
204
|
+
}
|