|
2 | 2 | import callaiTxt from './llms/callai.txt?raw'; |
3 | 3 | import fireproofTxt from './llms/fireproof.txt?raw'; |
4 | 4 | import imageGenTxt from './llms/image-gen.txt?raw'; |
5 | | -import { DEFAULT_DEPENDENCIES, llmsCatalog, type LlmsCatalogEntry } from './llms/catalog'; |
| 5 | +import { |
| 6 | + DEFAULT_DEPENDENCIES, |
| 7 | + llmsCatalog, |
| 8 | + type LlmsCatalogEntry, |
| 9 | + ALLOWED_DEPENDENCY_NAMES, |
| 10 | +} from './llms/catalog'; |
6 | 11 |
|
7 | 12 | // Static mapping of LLM text content |
8 | 13 | const llmsTextContent: Record<string, string> = { |
@@ -62,19 +67,22 @@ export function generateImportStatements(llms: LlmsCatalogEntry[]) { |
62 | 67 | export async function makeBaseSystemPrompt(model: string, sessionDoc?: any) { |
63 | 68 | // Inputs for module selection |
64 | 69 | const userPrompt = sessionDoc?.userPrompt || ''; |
65 | | - // Deterministic dependency selection |
66 | | - let selectedNames: string[] | undefined = undefined; |
67 | | - if (Array.isArray(sessionDoc?.dependencies)) { |
68 | | - // Validate against catalog |
69 | | - const allowed = new Set(llmsCatalog.map((l) => l.name)); |
| 70 | + // Deterministic dependency selection with user override gating |
| 71 | + const useOverride = !!sessionDoc?.dependenciesUserOverride; |
| 72 | + let selectedNames: string[] | undefined; |
| 73 | + if (useOverride && Array.isArray(sessionDoc?.dependencies)) { |
70 | 74 | selectedNames = (sessionDoc.dependencies as unknown[]) |
71 | 75 | .filter((v): v is string => typeof v === 'string') |
72 | | - .filter((name) => allowed.has(name)); |
| 76 | + .filter((name) => ALLOWED_DEPENDENCY_NAMES.has(name)); |
| 77 | + // Note: allow empty [] when override is true? Clarified in PR discussion; for now, |
| 78 | + // we keep defaults for empty only when override is not set. |
73 | 79 | } |
74 | | - // Apply clear default when not provided or empty |
75 | | - if (!selectedNames || selectedNames.length === 0) { |
| 80 | + // Non-override path: use deterministic defaults (pending clarification on re-enabling picker) |
| 81 | + if (!useOverride) { |
76 | 82 | selectedNames = [...DEFAULT_DEPENDENCIES]; |
77 | 83 | } |
| 84 | + // Final safety: ensure array is defined |
| 85 | + if (!selectedNames) selectedNames = [...DEFAULT_DEPENDENCIES]; |
78 | 86 | const chosenLlms = llmsCatalog.filter((l) => selectedNames!.includes(l.name)); |
79 | 87 |
|
80 | 88 | // 3) Concatenate docs for chosen modules |
|
0 commit comments