@@ -57,64 +57,69 @@ export const TASKS_FILE_WARN: (path: string) => string = (path: string) =>
5757 `tasks.json not found at "${ path } ". Please generate tasks from PRD first.` ;
5858
5959// ai models configuration
60+ const MODELS_COMPATIBILITY = {
61+ high : "🟢" ,
62+ medium : "🟡" ,
63+ low : "🟣" ,
64+ } ;
6065export const AI_MODELS : I_AIModel [ ] = [
6166 {
62- name : `Gemini 2.5 Flash (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
67+ name : `${ MODELS_COMPATIBILITY . high } Gemini 2.5 Flash (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
6368 value : "gemini-2.5-flash" ,
6469 provider : null ,
6570 } ,
6671 {
67- name : `Gemini 2.5 Pro (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
72+ name : `${ MODELS_COMPATIBILITY . high } Gemini 2.5 Pro (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
6873 value : "gemini-2.5-pro" ,
6974 provider : null ,
7075 } ,
7176 {
72- name : `Qwen 3 Coder ${ chalk . gray ( "(openrouter > $0.20/M input | $0.80/M output | 262k context)" ) } ` ,
77+ name : `${ MODELS_COMPATIBILITY . medium } Qwen 3 Coder ${ chalk . gray ( "(openrouter > $0.20/M input | $0.80/M output | 262k context)" ) } ` ,
7378 value : "qwen/qwen3-coder" ,
7479 provider : "openrouter" ,
7580 } ,
7681 {
77- name : `Qwen Turbo ${ chalk . gray ( "(openrouter > $0.05/M input | $0.20/M output | 1M context)" ) } ` ,
82+ name : `${ MODELS_COMPATIBILITY . high } Qwen Turbo ${ chalk . gray ( "(openrouter > $0.05/M input | $0.20/M output | 1M context)" ) } ` ,
7883 value : "qwen/qwen-turbo" ,
7984 provider : "openrouter" ,
8085 } ,
8186 {
82- name : `DeepSeek R1‑0528 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
87+ name : `${ MODELS_COMPATIBILITY . medium } DeepSeek R1‑0528 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
8388 value : "deepseek/deepseek-r1-0528" ,
8489 provider : "openrouter" ,
8590 } ,
8691 {
87- name : `DeepSeek R1‑0528 (free) ${ chalk . gray ( "(openrouter > free | 163k context)" ) } ` ,
92+ name : `${ MODELS_COMPATIBILITY . low } DeepSeek R1‑0528 (free) ${ chalk . gray ( "(openrouter > free | 163k context)" ) } ` ,
8893 value : "deepseek/deepseek-r1-0528:free" ,
8994 provider : "openrouter" ,
9095 } ,
9196 {
92- name : `DeepSeek Chat V3‑0324 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
97+ name : `${ MODELS_COMPATIBILITY . high } DeepSeek Chat V3‑0324 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
9398 value : "deepseek/deepseek-chat-v3-0324" ,
9499 provider : "openrouter" ,
95100 } ,
96101 {
97- name : `DeepSeek Chat V3‑0324 (free) ${ chalk . gray ( "(openrouter > fre | 163k context)" ) } ` ,
102+ name : `${ MODELS_COMPATIBILITY . low } DeepSeek Chat V3‑0324 (free) ${ chalk . gray ( "(openrouter > fre | 163k context)" ) } ` ,
98103 value : "deepseek/deepseek-chat-v3-0324:free" ,
99104 provider : "openrouter" ,
100105 } ,
101106 {
102- name : `Mistral DevStral Small 1.1 ${ chalk . gray ( "(openrouter > $0.07/M input | $0.28/M output | 128k context)" ) } ` ,
107+ name : `${ MODELS_COMPATIBILITY . high } Mistral DevStral Small 1.1 ${ chalk . gray ( "(openrouter > $0.07/M input | $0.28/M output | 128k context)" ) } ` ,
103108 value : "mistralai/devstral-small" ,
104109 provider : "openrouter" ,
105110 } ,
106111 {
107- name : `Horizon Beta (free) ${ chalk . gray ( "(openrouter > free | 256k context | training)" ) } ` ,
112+ name : `${ MODELS_COMPATIBILITY . medium } Horizon Beta (free) ${ chalk . gray ( "(openrouter > free | 256k context | training)" ) } ` ,
108113 value : "openrouter/horizon-beta" ,
109114 provider : "openrouter" ,
110115 } ,
111116 {
112- name : `Kimi K2 ${ chalk . gray ( "(openrouter > $0.14/M input | $2.49/M output | 63k context)" ) } ` ,
117+ name : `${ MODELS_COMPATIBILITY . medium } Kimi K2 ${ chalk . gray ( "(openrouter > $0.14/M input | $2.49/M output | 63k context)" ) } ` ,
113118 value : "moonshotai/kimi-k2" ,
114119 provider : "openrouter" ,
115120 } ,
116121 {
117- name : `Kimi K2 (free) ${ chalk . gray ( "(openrouter > free | 32k context)" ) } ` ,
122+ name : `${ MODELS_COMPATIBILITY . low } Kimi K2 (free) ${ chalk . gray ( "(openrouter > free | 32k context)" ) } ` ,
118123 value : "moonshotai/kimi-k2:free" ,
119124 provider : "openrouter" ,
120125 } ,
@@ -174,12 +179,12 @@ export const SUBTASK_TO_TASK_RULES = [
174179] ;
175180
176181// notes
177- export const NOTE_MODELS =
178- "Note: This list is optimized for faster TMAI testing using free or high-quota models. These models are also fully suitable for real-world projects. Additional models — including popular paid options with highly competitive pricing — are also available, mostly via the OpenRouter provider" ;
182+ export const NOTE_MODELS = `Note: Model compatibility levels are indicated by: ${ MODELS_COMPATIBILITY . high } high (most reliable), ${ MODELS_COMPATIBILITY . medium } medium, ${ MODELS_COMPATIBILITY . low } low. Higher compatibility means more reliable TMAI operations with fewer errors. While all models can perform tasks, those with higher compatibility are recommended for critical operations. Additional models — including popular paid options with competitive pricing — are available, mostly via OpenRouter.` ;
179183export const NOTE_LANGS =
180184 "Note: Make sure the LLM used by TMAI supports the language you choose!" ;
181185
182186// extras
187+ export const GITHUB_URL = "https://github.com/RajaRakoto/taskmaster-cli" ;
183188export const DEFAULT_COUNTDOWN = 10 ;
184189export const PACKAGE_MANAGERS = [ "npm" , "pnpm" , "bun" ] as const ;
185190export const LANGS = [
0 commit comments