1+ /* libs */
2+ import chalk from "chalk" ;
3+
4+ /* types */
5+ import type { I_AIModel } from "@/@types/index" ;
6+
7+ // ===============================
8+
19// dev
210export const DEV_MODE = true ;
311
@@ -7,6 +15,8 @@ export const PRD_PATH = DEV_MODE ? "docs/PRD-todo.md" : "docs/PRD.md";
715export const TASKS_PATH = ".taskmaster/tasks/tasks.json" ;
816export const TASKS_SRC_PATH = ".taskmaster" ;
917export const TASKS_BCK_DEST_PATH = "backups/tmai-backup" ;
18+ export const REPORT_PATH = ".taskmaster/reports/task-complexity-report.json" ;
19+ export const README_PATH = "README.md" ;
1020
1121// tasks
1222export const MAIN_COMMAND = "task-master" ;
@@ -41,42 +51,78 @@ export const MAX_TITLE_TRUNC_LENGTH = 40;
4151export const MAX_DESCRIPTION_LENGTH = 250 ;
4252export const MAX_PROMPT_LENGTH = 1024 ;
4353
44- // status configuration
45- export const STATUS_CONFIG = {
46- todo : { icon : "○" , color : "gray" } ,
47- "in-progress" : { icon : "▶" , color : "yellow" } ,
48- done : { icon : "✓" , color : "green" } ,
49- blocked : { icon : "✗" , color : "red" } ,
50- pending : { icon : "…" , color : "gray" } ,
51- review : { icon : "★" , color : "blue" } ,
52- deferred : { icon : "↓" , color : "magenta" } ,
53- cancelled : { icon : "✗" , color : "redBright" } ,
54- } ;
55-
56- // package managers
57- export const PACKAGE_MANAGERS = [ "npm" , "pnpm" , "bun" ] as const ;
58-
5954// common messages
6055export const TASKMASTER_INIT_MSG = "TaskMaster AI Core initialized" ;
6156export const TASKS_FILE_WARN : ( path : string ) => string = ( path : string ) =>
6257 `tasks.json not found at "${ path } ". Please generate tasks from PRD first.` ;
6358
64- // supported languages for TMAI responses
65- export const LANG = [
66- "English" ,
67- "Chinese" ,
68- "Japanese" ,
69- "French" ,
70- "Spanish" ,
71- "German" ,
72- "Portuguese" ,
73- "Italian" ,
74- ] as const ;
75-
7659// ai models configuration
77- export const AI_MODELS = [
78- { name : "Gemini 2.5 Pro" , value : "gemini-2.5-pro" } ,
79- { name : "Gemini 2.5 Flash" , value : "gemini-2.5-flash" } ,
60+ const MODELS_COMPATIBILITY = {
61+ high : "🟢" ,
62+ medium : "🟡" ,
63+ low : "🟣" ,
64+ } ;
65+ export const AI_MODELS : I_AIModel [ ] = [
66+ {
67+ name : `${ MODELS_COMPATIBILITY . high } Gemini 2.5 Flash (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
68+ value : "gemini-2.5-flash" ,
69+ provider : null ,
70+ } ,
71+ {
72+ name : `${ MODELS_COMPATIBILITY . high } Gemini 2.5 Pro (free) ${ chalk . gray ( "(google > free | 1M context)" ) } ` ,
73+ value : "gemini-2.5-pro" ,
74+ provider : null ,
75+ } ,
76+ {
77+ name : `${ MODELS_COMPATIBILITY . medium } Qwen 3 Coder ${ chalk . gray ( "(openrouter > $0.20/M input | $0.80/M output | 262k context)" ) } ` ,
78+ value : "qwen/qwen3-coder" ,
79+ provider : "openrouter" ,
80+ } ,
81+ {
82+ name : `${ MODELS_COMPATIBILITY . high } Qwen Turbo ${ chalk . gray ( "(openrouter > $0.05/M input | $0.20/M output | 1M context)" ) } ` ,
83+ value : "qwen/qwen-turbo" ,
84+ provider : "openrouter" ,
85+ } ,
86+ {
87+ name : `${ MODELS_COMPATIBILITY . medium } DeepSeek R1‑0528 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
88+ value : "deepseek/deepseek-r1-0528" ,
89+ provider : "openrouter" ,
90+ } ,
91+ {
92+ name : `${ MODELS_COMPATIBILITY . low } DeepSeek R1‑0528 (free) ${ chalk . gray ( "(openrouter > free | 163k context)" ) } ` ,
93+ value : "deepseek/deepseek-r1-0528:free" ,
94+ provider : "openrouter" ,
95+ } ,
96+ {
97+ name : `${ MODELS_COMPATIBILITY . high } DeepSeek Chat V3‑0324 ${ chalk . gray ( "(openrouter > $0.18/M input | $0.72/M output | 163k context)" ) } ` ,
98+ value : "deepseek/deepseek-chat-v3-0324" ,
99+ provider : "openrouter" ,
100+ } ,
101+ {
102+ name : `${ MODELS_COMPATIBILITY . low } DeepSeek Chat V3‑0324 (free) ${ chalk . gray ( "(openrouter > fre | 163k context)" ) } ` ,
103+ value : "deepseek/deepseek-chat-v3-0324:free" ,
104+ provider : "openrouter" ,
105+ } ,
106+ {
107+ name : `${ MODELS_COMPATIBILITY . high } Mistral DevStral Small 1.1 ${ chalk . gray ( "(openrouter > $0.07/M input | $0.28/M output | 128k context)" ) } ` ,
108+ value : "mistralai/devstral-small" ,
109+ provider : "openrouter" ,
110+ } ,
111+ {
112+ name : `${ MODELS_COMPATIBILITY . medium } Horizon Beta (free) ${ chalk . gray ( "(openrouter > free | 256k context | training)" ) } ` ,
113+ value : "openrouter/horizon-beta" ,
114+ provider : "openrouter" ,
115+ } ,
116+ {
117+ name : `${ MODELS_COMPATIBILITY . medium } Kimi K2 ${ chalk . gray ( "(openrouter > $0.14/M input | $2.49/M output | 63k context)" ) } ` ,
118+ value : "moonshotai/kimi-k2" ,
119+ provider : "openrouter" ,
120+ } ,
121+ {
122+ name : `${ MODELS_COMPATIBILITY . low } Kimi K2 (free) ${ chalk . gray ( "(openrouter > free | 32k context)" ) } ` ,
123+ value : "moonshotai/kimi-k2:free" ,
124+ provider : "openrouter" ,
125+ } ,
80126] ;
81127
82128// task conversion rules
@@ -131,3 +177,33 @@ export const SUBTASK_TO_TASK_RULES = [
131177 example : "Subtask #1.2 becomes Task #4 (next available ID)" ,
132178 } ,
133179] ;
180+
181+ // notes
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.` ;
183+ export const NOTE_LANGS =
184+ "Note: Make sure the LLM used by TMAI supports the language you choose!" ;
185+
186+ // extras
187+ export const GITHUB_URL = "https://github.com/RajaRakoto/taskmaster-cli" ;
188+ export const DEFAULT_COUNTDOWN = 10 ;
189+ export const PACKAGE_MANAGERS = [ "npm" , "pnpm" , "bun" ] as const ;
190+ export const LANGS = [
191+ "English" ,
192+ "Chinese" ,
193+ "Japanese" ,
194+ "French" ,
195+ "Spanish" ,
196+ "German" ,
197+ "Portuguese" ,
198+ "Italian" ,
199+ ] as const ;
200+ export const STATUS_CONFIG = {
201+ todo : { icon : "○" , color : "gray" } ,
202+ "in-progress" : { icon : "▶" , color : "yellow" } ,
203+ done : { icon : "✓" , color : "green" } ,
204+ blocked : { icon : "✗" , color : "red" } ,
205+ pending : { icon : "…" , color : "gray" } ,
206+ review : { icon : "★" , color : "blue" } ,
207+ deferred : { icon : "↓" , color : "magenta" } ,
208+ cancelled : { icon : "✗" , color : "redBright" } ,
209+ } ;
0 commit comments