@psnext/slingcli 2.5.20260718-2 → 2.5.20260719-2

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.
@@ -1 +1 @@
1
- {"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":202752,"maxTokens":131072},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":524288,"maxTokens":250000},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"id":"Qwen/Qwen2.5-7B-Instruct-Turbo","name":"Qwen 2.5 7B Instruct Turbo","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.3,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":32768,"maxTokens":32768},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{"id":"Qwen/Qwen3-235B-A22B-Instruct-2507-tput","name":"Qwen3 235B A22B Instruct 2507 FP8","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.2,"output":0.6,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":262144},"Qwen/Qwen3.5-397B-A17B":{"id":"Qwen/Qwen3.5-397B-A17B","name":"Qwen3.5 397B A17B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.6,"output":3.6,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":130000},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.17,"output":0.25,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"Qwen/Qwen3.6-Plus":{"id":"Qwen/Qwen3.6-Plus","name":"Qwen3.6 Plus","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.5,"output":3,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":1000000,"maxTokens":500000},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.25,"output":3.75,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":1000000,"maxTokens":500000},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null},"input":["text"],"cost":{"input":1.74,"output":3.48,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":512000,"maxTokens":384000},"essentialai/Rnj-1-Instruct":{"id":"essentialai/Rnj-1-Instruct","name":"Rnj-1 Instruct","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":32768,"maxTokens":32768},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B Instruct","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.39,"output":0.97,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131072},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.04,"output":1.04,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":1.2,"output":4.5,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131000},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131072},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.6,"output":3.6,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":512300,"maxTokens":512300},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null},"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"openai","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null},"input":["text"],"cost":{"input":0.05,"output":0.2,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"openai","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":1,"output":4.05,"cacheRead":0.17,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":524288,"maxTokens":131072},"zai-org/GLM-5":{"id":"zai-org/GLM-5","name":"GLM-5","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":1,"output":3.2,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":202752,"maxTokens":131072},"zai-org/GLM-5.1":{"id":"zai-org/GLM-5.1","name":"GLM-5.1","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":202752,"maxTokens":131072},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":164000}}
1
+ {"MiniMaxAI/MiniMax-M2.7":{"id":"MiniMaxAI/MiniMax-M2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":202752,"maxTokens":131072},"MiniMaxAI/MiniMax-M3":{"id":"MiniMaxAI/MiniMax-M3","name":"MiniMax-M3","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":524288,"maxTokens":250000},"Qwen/Qwen2.5-7B-Instruct-Turbo":{"id":"Qwen/Qwen2.5-7B-Instruct-Turbo","name":"Qwen 2.5 7B Instruct Turbo","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.3,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":32768,"maxTokens":32768},"Qwen/Qwen3.5-9B":{"id":"Qwen/Qwen3.5-9B","name":"Qwen3.5 9B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.17,"output":0.25,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536},"Qwen/Qwen3.6-Plus":{"id":"Qwen/Qwen3.6-Plus","name":"Qwen3.6 Plus","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.5,"output":3,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":1000000,"maxTokens":500000},"Qwen/Qwen3.7-Max":{"id":"Qwen/Qwen3.7-Max","name":"Qwen3.7 Max","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.25,"output":3.75,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":1000000,"maxTokens":500000},"deepseek-ai/DeepSeek-V4-Pro":{"id":"deepseek-ai/DeepSeek-V4-Pro","name":"DeepSeek V4 Pro","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null},"input":["text"],"cost":{"input":1.74,"output":3.48,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":512000,"maxTokens":384000},"google/gemma-4-31B-it":{"id":"google/gemma-4-31B-it","name":"Gemma 4 31B Instruct","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":0.39,"output":0.97,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131072},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{"id":"meta-llama/Llama-3.3-70B-Instruct-Turbo","name":"Llama 3.3 70B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":false,"input":["text"],"cost":{"input":1.04,"output":1.04,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"moonshotai/Kimi-K2.6":{"id":"moonshotai/Kimi-K2.6","name":"Kimi K2.6","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":1.2,"output":4.5,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131000},"moonshotai/Kimi-K2.7-Code":{"id":"moonshotai/Kimi-K2.7-Code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":131072},"nvidia/nemotron-3-ultra-550b-a55b":{"id":"nvidia/nemotron-3-ultra-550b-a55b","name":"Nemotron 3 Ultra 550B A55B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":0.6,"output":3.6,"cacheRead":0.2,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":512300,"maxTokens":512300},"openai/gpt-oss-120b":{"id":"openai/gpt-oss-120b","name":"GPT OSS 120B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null},"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"openai","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"openai/gpt-oss-20b":{"id":"openai/gpt-oss-20b","name":"GPT OSS 20B","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"off":null,"minimal":null},"input":["text"],"cost":{"input":0.05,"output":0.2,"cacheRead":0,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":true,"maxTokensField":"max_tokens","thinkingFormat":"openai","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":131072,"maxTokens":131072},"thinkingmachines/Inkling":{"id":"thinkingmachines/Inkling","name":"Inkling","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text","image"],"cost":{"input":1,"output":4.05,"cacheRead":0.17,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":524288,"maxTokens":131072},"zai-org/GLM-5.2":{"id":"zai-org/GLM-5.2","name":"GLM-5.2","api":"openai-completions","provider":"together","baseUrl":"https://api.together.ai/v1","reasoning":true,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null},"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":164000}}
@@ -1 +1 @@
1
- {"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"xai","baseUrl":"https://api.x.ai/v1","compat":{"supportsLongCacheRetention":false},"reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}}}
1
+ {"grok-4.3":{"id":"grok-4.3","name":"Grok 4.3","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1.25,"output":2.5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":1000000,"maxTokens":30000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}},"grok-4.5":{"id":"grok-4.5","name":"Grok 4.5","api":"openai-responses","provider":"xai","baseUrl":"https://api.x.ai/v1","compat":{"supportsLongCacheRetention":false},"reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.3,"cacheWrite":0},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null}},"grok-build-0.1":{"id":"grok-build-0.1","name":"Grok Build 0.1","api":"openai-completions","provider":"xai","baseUrl":"https://api.x.ai/v1","reasoning":true,"input":["text","image"],"cost":{"input":1,"output":2,"cacheRead":0.2,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000,"compat":{"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false}}}
@@ -191,9 +191,8 @@ export class InteractiveMode {
191
191
  hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
192
192
  lastSigintTime = 0;
193
193
  lastEscapeTime = 0;
194
- changelogMarkdown = undefined;
195
194
  startupNoticesShown = false;
196
- anthropicSubscriptionWarningShown = false;
195
+ Shown = false;
197
196
  // Status line tracking (for mutating immediately-sequential status updates)
198
197
  lastStatusSpacer = undefined;
199
198
  lastStatusText = undefined;
@@ -433,7 +432,7 @@ export class InteractiveMode {
433
432
  return;
434
433
  this.registerSignalHandlers();
435
434
  // Load changelog (only show new entries, skip for resumed sessions)
436
- this.changelogMarkdown = this.getChangelogForDisplay();
435
+ // this.changelogMarkdown = this.getChangelogForDisplay();
437
436
  // Ensure fd and rg are available (downloads if missing, adds to PATH via getBinDir)
438
437
  // Both are needed: fd for autocomplete, rg for grep tool and bash commands
439
438
  const [fdPath] = await Promise.all([ensureTool("fd"), ensureTool("rg")]);
@@ -472,7 +471,8 @@ export class InteractiveMode {
472
471
  await this.themeController.applyFromSettings();
473
472
  // Add header with keybindings from config (unless silenced)
474
473
  if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
475
- const logo = theme.bold(theme.fg("accent", APP_NAME)) + theme.fg("dim", ` v${this.version}`);
474
+ const logo = theme.bold(theme.fg("accent", APP_NAME)) +
475
+ theme.fg("dim", ` v${process.env.SLING_VERSION ?? this.version}`);
476
476
  // Build startup instructions using keybinding hint helpers
477
477
  const hint = (keybinding, description) => keyHint(keybinding, description);
478
478
  const expandedInstructions = [
@@ -504,7 +504,7 @@ export class InteractiveMode {
504
504
  hint("app.tools.expand", "more"),
505
505
  ].join(theme.fg("muted", " · "));
506
506
  const compactOnboarding = theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
507
- const onboarding = theme.fg("dim", `Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.`);
507
+ const onboarding = theme.fg("dim", `Sling can explain its own features and look up its docs. Ask it how to use or extend Sling.`);
508
508
  this.builtInHeader = new ExpandableText(() => `${logo}\n${compactInstructions}\n${compactOnboarding}\n\n${onboarding}`, () => `${logo}\n${expandedInstructions}\n\n${onboarding}`, this.getStartupExpansionState(), 1, 0);
509
509
  // Setup UI layout
510
510
  this.headerContainer.addChild(new Spacer(1));
@@ -3576,15 +3576,15 @@ export class InteractiveMode {
3576
3576
  if (this.settingsManager.getWarnings().anthropicExtraUsage === false) {
3577
3577
  return;
3578
3578
  }
3579
- if (this.anthropicSubscriptionWarningShown) {
3580
- return;
3581
- }
3579
+ // if (this.anthropicSubscriptionWarningShown) {
3580
+ // return;
3581
+ // }
3582
3582
  if (!model || model.provider !== "anthropic") {
3583
3583
  return;
3584
3584
  }
3585
3585
  try {
3586
3586
  if ((await this.session.modelRuntime.checkAuth("anthropic"))?.type === "oauth") {
3587
- this.anthropicSubscriptionWarningShown = true;
3587
+ //this.anthropicSubscriptionWarningShown = true;
3588
3588
  this.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);
3589
3589
  return;
3590
3590
  }
@@ -3592,7 +3592,7 @@ export class InteractiveMode {
3592
3592
  if (!isAnthropicSubscriptionAuthKey(apiKey)) {
3593
3593
  return;
3594
3594
  }
3595
- this.anthropicSubscriptionWarningShown = true;
3595
+ //this.anthropicSubscriptionWarningShown = true;
3596
3596
  this.showWarning(ANTHROPIC_SUBSCRIPTION_AUTH_WARNING);
3597
3597
  }
3598
3598
  catch {
@@ -68,6 +68,10 @@
68
68
  "title": "Pi Packages",
69
69
  "path": "packages.md"
70
70
  },
71
+ {
72
+ "title": "MCP Servers",
73
+ "path": "mcp.md"
74
+ },
71
75
  {
72
76
  "title": "Custom Models",
73
77
  "path": "models.md"
@@ -53,6 +53,7 @@ For the full first-run flow, see [Quickstart](quickstart.md).
53
53
  - [Prompt templates](prompt-templates.md) - reusable prompts that expand from slash commands.
54
54
  - [Themes](themes.md) - built-in and custom terminal themes.
55
55
  - [Pi packages](packages.md) - bundle and share extensions, skills, prompts, and themes.
56
+ - [MCP servers](mcp.md) - use the pi-mcp-adapter to configure and manage MCP servers.
56
57
  - [Custom models](models.md) - add model entries for supported provider APIs.
57
58
  - [Custom providers](custom-provider.md) - implement custom APIs and OAuth flows.
58
59
 
@@ -0,0 +1,383 @@
1
+ # MCP Servers
2
+
3
+ Sling can use the [pi-mcp-adapter](https://github.com/nicobailon/pi-mcp-adapter) to manage Model Context Protocol servers without loading every tool into context up front. The adapter keeps the tool list compact, discovers tools on demand, and supports both shared MCP configs and Sling-specific overrides.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Install](#install)
8
+ - [First Run](#first-run)
9
+ - [Using MCP Servers](#using-mcp-servers)
10
+ - [Adding MCP Servers](#adding-mcp-servers)
11
+ - [Configuration Files](#configuration-files)
12
+ - [OAuth and Auth](#oauth-and-auth)
13
+ - [Direct Tools](#direct-tools)
14
+ - [Importing Existing Configs](#importing-existing-configs)
15
+ - [Troubleshooting](#troubleshooting)
16
+
17
+ ## Install
18
+
19
+ Install the adapter as a sling package:
20
+
21
+ ```bash
22
+ sling install npm:pi-mcp-adapter
23
+ ```
24
+
25
+ Restart Sling after installation.
26
+
27
+ ## First Run
28
+
29
+ On first run, the adapter looks for standard MCP config files automatically.
30
+
31
+ | You already have... | What happens |
32
+ | -------------------------------------------------------------------- | ------------------------------------------------------------------ |
33
+ | `.mcp.json` or `~/.config/mcp/mcp.json` | Sling uses it immediately. |
34
+ | Host-specific configs such as Cursor, Claude Code, Codex, or VS Code | Run `/mcp setup` to import compatible configs into Sling. |
35
+ | Nothing configured yet | Run `/mcp setup` to scaffold a new config or add a starter server. |
36
+
37
+ If you prefer the terminal, you can also run:
38
+
39
+ ```bash
40
+ pi-mcp-adapter init
41
+ ```
42
+
43
+ That scans for compatible configs and writes the missing Pi adapter files.
44
+
45
+ ## Using MCP Servers
46
+
47
+ Once the adapter is installed, Sling exposes a compact MCP proxy tool plus management commands.
48
+
49
+ ### In the UI
50
+
51
+ Use `/mcp` to open the MCP panel. From there you can:
52
+
53
+ - view configured servers
54
+ - inspect tool availability
55
+ - reconnect a server
56
+ - toggle direct vs proxy tool registration
57
+ - trigger OAuth for servers that need it
58
+
59
+ Use `/mcp setup` to inspect detected MCP config files, import compatible host configs, and preview any file changes before writing them.
60
+
61
+ ### From tools
62
+
63
+ The proxy tool supports search, describe, connect, and tool execution:
64
+
65
+ ```text
66
+ mcp({ search: "screenshot" })
67
+ mcp({ describe: "chrome_devtools_take_screenshot" })
68
+ mcp({ tool: "chrome_devtools_take_screenshot", args: '{"format":"png"}' })
69
+ ```
70
+
71
+ Note: `args` is a JSON string, not an object.
72
+
73
+ ## Command Help
74
+
75
+ ### Sling commands
76
+
77
+ | Command | What it does |
78
+ | --- | --- |
79
+ | `/mcp` | Open the MCP panel and first-run onboarding surface. |
80
+ | `/mcp setup` | Guided setup for imports, a minimal `.mcp.json`, RepoPrompt quick-add, and config-path inspection. |
81
+ | `/mcp tools` | List all configured tools. |
82
+ | `/mcp reconnect` | Reconnect all servers. |
83
+ | `/mcp reconnect <server>` | Connect or reconnect a single server. |
84
+ | `/mcp logout <server>` | Clear stored OAuth credentials for a server and disconnect it. |
85
+ | `/mcp-auth` | Open an OAuth server picker in interactive UI sessions. |
86
+ | `/mcp-auth <server>` | Run OAuth setup for a specific server. |
87
+
88
+ ### In the `/mcp` panel
89
+
90
+ - Press **Enter** on a server that needs auth to start login.
91
+ - Press **Ctrl+A** on any OAuth server to start login.
92
+ - Toggle servers between proxy and direct tools from the panel.
93
+ - Reconnect a server after changing its config.
94
+
95
+ If `settings.autoAuth` is `true`, `mcp({ connect: ... })`, `mcp({ tool: ... })`, and direct tool calls automatically run OAuth when needed and retry once.
96
+
97
+ ### Proxy tool actions
98
+
99
+ | Action | What it does |
100
+ | --- | --- |
101
+ | `mcp({ })` | Show MCP status and configured servers. |
102
+ | `mcp({ server: "name" })` | List a server's tools and current state. |
103
+ | `mcp({ search: "query" })` | Search cached tools by name or description. |
104
+ | `mcp({ describe: "tool_name" })` | Show a tool's schema and description. |
105
+ | `mcp({ connect: "server-name" })` | Connect to a server before calling its tools. |
106
+ | `mcp({ tool: "tool_name", args: '{"key":"value"}' })` | Call an MCP tool. |
107
+ | `mcp({ action: "auth-start", server: "name" })` | Start OAuth for a remote or headless session. |
108
+ | `mcp({ action: "auth-complete", server: "name", args: '{"redirectUrl":"..."}' })` | Finish OAuth after the browser redirects back. |
109
+ | `mcp({ action: "ui-messages" })` | Read any messages sent from MCP UIs back to Sling. |
110
+
111
+ ## Adding MCP Servers
112
+
113
+ ### Preferred project config
114
+
115
+ Create or edit `.mcp.json` in your project:
116
+
117
+ ```json
118
+ {
119
+ "mcpServers": {
120
+ "chrome-devtools": {
121
+ "command": "npx",
122
+ "args": ["-y", "chrome-devtools-mcp@latest"]
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### Preferred user-global config
129
+
130
+ Create or edit `~/.config/mcp/mcp.json` for servers you want available everywhere.
131
+
132
+ ### Pi-specific overrides
133
+
134
+ Use Sling-owned files when you need Sling-specific overrides:
135
+
136
+ - `<Sling agent dir>/mcp.json` — global override, usually `~/.sling/agent/mcp.json`
137
+ - `.pi/mcp.json` — project override
138
+
139
+ These files let Sling store adapter-specific settings without modifying shared MCP configs.
140
+
141
+ ### Example server definitions
142
+
143
+ #### Stdio transport
144
+
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "github": {
149
+ "command": "npx",
150
+ "args": ["-y", "@modelcontextprotocol/server-github"]
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ #### HTTP transport
157
+
158
+ ```json
159
+ {
160
+ "mcpServers": {
161
+ "figma": {
162
+ "url": "http://localhost:3845/mcp"
163
+ }
164
+ }
165
+ }
166
+ ```
167
+
168
+ #### OAuth-backed server
169
+
170
+ ```json
171
+ {
172
+ "mcpServers": {
173
+ "linear": {
174
+ "url": "https://mcp.linear.app/sse",
175
+ "auth": "oauth"
176
+ }
177
+ }
178
+ }
179
+ ```
180
+
181
+ #### Atlassian Rovo MCP Server for Jira
182
+
183
+ Use this server when you want Sling to talk to Jira through Atlassian's official remote MCP server. The recommended endpoint for most clients is the OAuth endpoint below.
184
+
185
+ ```json
186
+ {
187
+ "mcpServers": {
188
+ "atlassian-rovo": {
189
+ "url": "https://mcp.atlassian.com/v1/mcp/authv2",
190
+ "auth": "oauth"
191
+ }
192
+ }
193
+ }
194
+ ```
195
+
196
+ If your Atlassian admin has enabled API token authentication for headless or service-style usage, you can use the non-OAuth endpoint instead:
197
+
198
+ ```json
199
+ {
200
+ "mcpServers": {
201
+ "atlassian-rovo": {
202
+ "url": "https://mcp.atlassian.com/v1/mcp",
203
+ "auth": "bearer",
204
+ "bearerTokenEnv": "ATLASSIAN_API_TOKEN"
205
+ }
206
+ }
207
+ }
208
+ ```
209
+
210
+ #### GitLab MCP Server
211
+
212
+ GitLab's MCP server supports HTTP transport directly. Replace `<gitlab.example.com>` with `gitlab.com` for GitLab.com or your self-managed GitLab instance URL.
213
+
214
+ ```json
215
+ {
216
+ "mcpServers": {
217
+ "GitLab": {
218
+ "url": "https://<gitlab.example.com>/api/v4/mcp",
219
+ "auth": "oauth"
220
+ }
221
+ }
222
+ }
223
+ ```
224
+
225
+ If your GitLab instance is configured for API token authentication, use bearer auth instead:
226
+
227
+ ```json
228
+ {
229
+ "mcpServers": {
230
+ "GitLab": {
231
+ "url": "https://<gitlab.example.com>/api/v4/mcp",
232
+ "auth": "bearer",
233
+ "bearerTokenEnv": "GITLAB_API_TOKEN"
234
+ }
235
+ }
236
+ }
237
+ ```
238
+
239
+ To avoid tool-name conflicts when you connect multiple GitLab instances or other MCP servers, add the optional prefix header:
240
+
241
+ ```json
242
+ {
243
+ "mcpServers": {
244
+ "GitLab": {
245
+ "url": "https://<gitlab.example.com>/api/v4/mcp",
246
+ "auth": "oauth",
247
+ "headers": {
248
+ "X-Gitlab-Mcp-Server-Tool-Name-Prefix": "gitlab_"
249
+ }
250
+ }
251
+ }
252
+ }
253
+ ```
254
+
255
+ For stdio setups, wrap the remote server with `mcp-remote`:
256
+
257
+ ```json
258
+ {
259
+ "mcpServers": {
260
+ "GitLab": {
261
+ "command": "npx",
262
+ "args": ["mcp-remote", "https://<gitlab.example.com>/api/v4/mcp"]
263
+ }
264
+ }
265
+ }
266
+ ```
267
+
268
+ ## Configuration Files
269
+
270
+ Sling reads MCP config in this order:
271
+
272
+ 1. `~/.config/mcp/mcp.json`
273
+ 2. `~/.sling/agent/mcp.json`
274
+ 3. `.mcp.json`
275
+ 4. `.pi/mcp.json`
276
+
277
+ Use shared config files for portable setups and Pi-specific files for adapter-only behavior.
278
+
279
+ ### Common server options
280
+
281
+ ```json
282
+ {
283
+ "mcpServers": {
284
+ "my-server": {
285
+ "command": "npx",
286
+ "args": ["-y", "some-mcp-server"],
287
+ "lifecycle": "lazy",
288
+ "idleTimeout": 10,
289
+ "requestTimeoutMs": 30000,
290
+ "directTools": true
291
+ }
292
+ }
293
+ }
294
+ ```
295
+
296
+ Common fields:
297
+
298
+ - `command`, `args` — stdio transport
299
+ - `url` — HTTP transport
300
+ - `env`, `cwd`, `headers` — runtime configuration
301
+ - `auth` — `"bearer"` or `"oauth"`
302
+ - `bearerToken` / `bearerTokenEnv` — API token support
303
+ - `lifecycle` — `"lazy"`, `"eager"`, or `"keep-alive"`
304
+ - `idleTimeout` — disconnect after idle time
305
+ - `requestTimeoutMs` — request timeout in milliseconds
306
+ - `directTools` — register tools individually instead of through the proxy
307
+ - `excludeTools` — hide specific tools
308
+ - `debug` — show server stderr
309
+
310
+ ## OAuth and Auth
311
+
312
+ For remote or headless OAuth flows:
313
+
314
+ ```text
315
+ mcp({ action: "auth-start", server: "linear" })
316
+ ```
317
+
318
+ Open the returned URL in a browser, then complete the flow in the same Sling session:
319
+
320
+ ```text
321
+ mcp({
322
+ action: "auth-complete",
323
+ server: "linear",
324
+ args: '{"redirectUrl":"http://localhost:19876/callback?code=...&state=..."}'
325
+ })
326
+ ```
327
+
328
+ You can also pass only the `code` field in `args` when available.
329
+
330
+ Treat authorization URLs and codes as sensitive.
331
+
332
+ ## Direct Tools
333
+
334
+ By default, Sling exposes MCP tools through the compact proxy. If you want specific tools in the main tool list, set `directTools`.
335
+
336
+ ```json
337
+ {
338
+ "mcpServers": {
339
+ "chrome-devtools": {
340
+ "command": "npx",
341
+ "args": ["-y", "chrome-devtools-mcp@latest"],
342
+ "directTools": true
343
+ },
344
+ "github": {
345
+ "command": "npx",
346
+ "args": ["-y", "@modelcontextprotocol/server-github"],
347
+ "directTools": ["search_repositories", "get_file_contents"]
348
+ }
349
+ }
350
+ }
351
+ ```
352
+
353
+ Use `directTools: true` for small servers. For large servers, prefer the proxy or only expose the tools you actually need.
354
+
355
+ ## Importing Existing Configs
356
+
357
+ If you already use MCP in another client, Sling can import the compatible config sources.
358
+
359
+ Supported imports:
360
+
361
+ - `cursor`
362
+ - `claude-code`
363
+ - `claude-desktop`
364
+ - `vscode`
365
+ - `windsurf`
366
+ - `codex`
367
+
368
+ Example:
369
+
370
+ ```json
371
+ {
372
+ "imports": ["cursor", "claude-code", "codex"],
373
+ "mcpServers": {}
374
+ }
375
+ ```
376
+
377
+ ## Troubleshooting
378
+
379
+ - Run `/mcp setup` if Sling does not see your servers.
380
+ - Use `/mcp reconnect <server>` after changing a server definition.
381
+ - If a server does not start, check its `command`, `args`, and `cwd`.
382
+ - If OAuth fails on a remote machine, use `auth-start` and `auth-complete`.
383
+ - If a server has too many tools, leave it proxy-only and expose only the high-value tools as direct tools.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@psnext/slingcli",
3
- "version": "2.5.20260718-2",
3
+ "version": "2.5.20260719-2",
4
4
  "description": "Connects Sling CLI to Publicis Sapient Slingshot enterprise LLM gateway. Bundles the pi coding-agent runtime.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -29,7 +29,7 @@
29
29
  "type": "git",
30
30
  "url": "git+https://pscode.lioncloud.net/psaiproducts/slingcli.git"
31
31
  },
32
- "slingVersion": "2.5.20260718-2",
32
+ "slingVersion": "2.5.20260719-2",
33
33
  "dependencies": {
34
34
  "@earendil-works/pi-tui": "file:../.sling-pack/earendil-works-pi-tui-0.80.10.tgz",
35
35
  "@earendil-works/pi-ai": "file:../.sling-pack/earendil-works-pi-ai-0.80.10.tgz",
@@ -1,14 +1,16 @@
1
1
  {
2
+ "comment": "List of packages to automatically install on first run. Add more packages to the array as needed.",
2
3
  "packages": [
3
4
  "npm:pi-intercom",
4
5
  "npm:@psnext/s-subagents",
5
6
  "npm:pi-ask-user",
6
7
  "npm:pi-hermes-memory",
7
8
  "npm:pi-smart-fetch",
8
- "npm:pi-mcp-adapter"
9
+ "npm:pi-mcp-adapter",
10
+ "npm:pine-of-glass"
9
11
  ],
10
12
  "unsupportedPackages": [
11
- "npm:pi-subagents"
12
- ],
13
- "comment": "List of packages to automatically install on first run. Add more packages to the array as needed."
13
+ "npm:pi-subagents",
14
+ "npm:context-mode"
15
+ ]
14
16
  }