Skip to content

Commit f2c09a7

Browse files
committed
refactor(config): update AI models and centralize notes
1 parent 40d039f commit f2c09a7

2 files changed

Lines changed: 86 additions & 41 deletions

File tree

src/constants/index.ts

Lines changed: 81 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -51,53 +51,71 @@ export const MAX_TITLE_TRUNC_LENGTH = 40;
5151
export const MAX_DESCRIPTION_LENGTH = 250;
5252
export const MAX_PROMPT_LENGTH = 1024;
5353

54-
// status configuration
55-
export const STATUS_CONFIG = {
56-
todo: { icon: "○", color: "gray" },
57-
"in-progress": { icon: "▶", color: "yellow" },
58-
done: { icon: "✓", color: "green" },
59-
blocked: { icon: "✗", color: "red" },
60-
pending: { icon: "…", color: "gray" },
61-
review: { icon: "★", color: "blue" },
62-
deferred: { icon: "↓", color: "magenta" },
63-
cancelled: { icon: "✗", color: "redBright" },
64-
};
65-
66-
// package managers
67-
export const PACKAGE_MANAGERS = ["npm", "pnpm", "bun"] as const;
68-
6954
// common messages
7055
export const TASKMASTER_INIT_MSG = "TaskMaster AI Core initialized";
7156
export const TASKS_FILE_WARN: (path: string) => string = (path: string) =>
7257
`tasks.json not found at "${path}". Please generate tasks from PRD first.`;
7358

74-
// supported languages for TMAI responses
75-
export const LANG = [
76-
"English",
77-
"Chinese",
78-
"Japanese",
79-
"French",
80-
"Spanish",
81-
"German",
82-
"Portuguese",
83-
"Italian",
84-
] as const;
85-
8659
// ai models configuration
8760
export const AI_MODELS: I_AIModel[] = [
8861
{
89-
name: `Gemini 2.5 Pro ${chalk.gray("(google | free)")}`,
90-
value: "gemini-2.5-pro",
62+
name: `Gemini 2.5 Flash (free) ${chalk.gray("(google > free | 1M context)")}`,
63+
value: "gemini-2.5-flash",
9164
provider: null,
9265
},
9366
{
94-
name: `Gemini 2.5 Flash ${chalk.gray("(google | free)")}`,
95-
value: "gemini-2.5-flash",
67+
name: `Gemini 2.5 Pro (free) ${chalk.gray("(google > free | 1M context)")}`,
68+
value: "gemini-2.5-pro",
9669
provider: null,
9770
},
9871
{
99-
name: `Qwen 3 coder ${chalk.gray("(openrouter | free)")}`,
100-
value: "qwen/qwen3-coder:free",
72+
name: `Qwen 3 Coder ${chalk.gray("(openrouter > $0.20/M input | $0.80/M output | 262k context)")}`,
73+
value: "qwen/qwen3-coder",
74+
provider: "openrouter",
75+
},
76+
{
77+
name: `Qwen Turbo ${chalk.gray("(openrouter > $0.05/M input | $0.20/M output | 1M context)")}`,
78+
value: "qwen/qwen-turbo",
79+
provider: "openrouter",
80+
},
81+
{
82+
name: `DeepSeek R1‑0528 ${chalk.gray("(openrouter > $0.18/M input | $0.72/M output | 163k context)")}`,
83+
value: "deepseek/deepseek-r1-0528",
84+
provider: "openrouter",
85+
},
86+
{
87+
name: `DeepSeek R1‑0528 (free) ${chalk.gray("(openrouter > free | 163k context)")}`,
88+
value: "deepseek/deepseek-r1-0528:free",
89+
provider: "openrouter",
90+
},
91+
{
92+
name: `DeepSeek Chat V3‑0324 ${chalk.gray("(openrouter > $0.18/M input | $0.72/M output | 163k context)")}`,
93+
value: "deepseek/deepseek-chat-v3-0324",
94+
provider: "openrouter",
95+
},
96+
{
97+
name: `DeepSeek Chat V3‑0324 (free) ${chalk.gray("(openrouter > fre | 163k context)")}`,
98+
value: "deepseek/deepseek-chat-v3-0324:free",
99+
provider: "openrouter",
100+
},
101+
{
102+
name: `Mistral DevStral Small 1.1 ${chalk.gray("(openrouter > $0.07/M input | $0.28/M output | 128k context)")}`,
103+
value: "mistralai/devstral-small",
104+
provider: "openrouter",
105+
},
106+
{
107+
name: `Horizon Beta (free) ${chalk.gray("(openrouter > free | 256k context | training)")}`,
108+
value: "openrouter/horizon-beta",
109+
provider: "openrouter",
110+
},
111+
{
112+
name: `Kimi K2 ${chalk.gray("(openrouter > $0.14/M input | $2.49/M output | 63k context)")}`,
113+
value: "moonshotai/kimi-k2",
114+
provider: "openrouter",
115+
},
116+
{
117+
name: `Kimi K2 (free) ${chalk.gray("(openrouter > free | 32k context)")}`,
118+
value: "moonshotai/kimi-k2:free",
101119
provider: "openrouter",
102120
},
103121
];
@@ -154,3 +172,33 @@ export const SUBTASK_TO_TASK_RULES = [
154172
example: "Subtask #1.2 becomes Task #4 (next available ID)",
155173
},
156174
];
175+
176+
// 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";
179+
export const NOTE_LANGS =
180+
"Note: Make sure the LLM used by TMAI supports the language you choose!";
181+
182+
// extras
183+
export const DEFAULT_COUNTDOWN = 10;
184+
export const PACKAGE_MANAGERS = ["npm", "pnpm", "bun"] as const;
185+
export const LANGS = [
186+
"English",
187+
"Chinese",
188+
"Japanese",
189+
"French",
190+
"Spanish",
191+
"German",
192+
"Portuguese",
193+
"Italian",
194+
] as const;
195+
export const STATUS_CONFIG = {
196+
todo: { icon: "○", color: "gray" },
197+
"in-progress": { icon: "▶", color: "yellow" },
198+
done: { icon: "✓", color: "green" },
199+
blocked: { icon: "✗", color: "red" },
200+
pending: { icon: "…", color: "gray" },
201+
review: { icon: "★", color: "blue" },
202+
deferred: { icon: "↓", color: "magenta" },
203+
cancelled: { icon: "✗", color: "redBright" },
204+
};

src/core/asks.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
DEFAULT_SUBTASKS_TO_GENERATE,
1111
DEFAULT_TAG,
1212
DEFAULT_TASKS_TO_GENERATE,
13-
LANG,
13+
LANGS,
1414
MAX_DESCRIPTION_LENGTH,
1515
MAX_PROMPT_LENGTH,
1616
MAX_SUBTASKS_TO_GENERATE,
@@ -22,6 +22,7 @@ import {
2222
TASKS_STATUSES,
2323
TASKS_BCK_DEST_PATH,
2424
AI_MODELS,
25+
NOTE_MODELS,
2526
} from "@/constants";
2627

2728
/* utils */
@@ -492,26 +493,22 @@ export async function askLangAsync(): Promise<string> {
492493
type: "list",
493494
name: "lang",
494495
message: "Select the language for TMAI responses:",
495-
choices: LANG,
496+
choices: LANGS,
496497
});
497498
return lang;
498499
}
499500

500501
/**
501502
* @description Prompts the user to select AI models for main, research, and fallback
502-
* Note: This list is designed for faster TMAI testing using free or generously quota'd models.
503+
* This list is designed for faster TMAI testing using free or generously quota'd models.
503504
* For a wider selection, use the standard interactive configuration mode.
504505
*/
505506
export async function askModelsAsync(): Promise<{
506507
mainModel: string;
507508
researchModel: string;
508509
fallbackModel: string;
509510
}> {
510-
console.log(
511-
chalk.blue(
512-
"Note: This list is optimized for quicker TMAI testing with free or high-quota models. These models are fully suitable for real projects too. For more options, use the standard interactive configuration mode.",
513-
),
514-
);
511+
console.log(chalk.blue(NOTE_MODELS));
515512

516513
const { mainModel, researchModel, fallbackModel } = await inquirer.prompt<{
517514
mainModel: string;

0 commit comments

Comments
 (0)