mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-09-22 00:31:17 +00:00
feat(wiki): added --lang <lang> flags to gitnexus wiki for multilanguage wiki generation support
This commit is contained in:
parent
99b8c7b03b
commit
c280fa5c4c
3 changed files with 18 additions and 4 deletions
|
|
@ -166,6 +166,7 @@ program
|
|||
.option('--gist', 'Publish wiki as a public GitHub Gist after generation')
|
||||
.option('-v, --verbose', 'Enable verbose output (show LLM commands and responses)')
|
||||
.option('--review', 'Stop after grouping to review module structure before generating pages')
|
||||
.option('--lang <lang>', 'Output language for generated documentation (e.g. english, chinese, spanish, japanese)')
|
||||
.action(createLazyAction(() => import('./wiki.js'), 'wikiCommand'));
|
||||
|
||||
program
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ export interface WikiCommandOptions {
|
|||
review?: boolean;
|
||||
timeout?: string;
|
||||
retries?: string;
|
||||
lang?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -395,6 +396,7 @@ export const wikiCommand = async (inputPath?: string, options?: WikiCommandOptio
|
|||
force: options?.force,
|
||||
concurrency: options?.concurrency ? parseInt(options.concurrency, 10) : undefined,
|
||||
reviewOnly: options?.review,
|
||||
lang: options?.lang,
|
||||
};
|
||||
|
||||
const generator = new WikiGenerator(
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ export interface WikiOptions {
|
|||
concurrency?: number;
|
||||
/** If true, stop after building module tree for user review */
|
||||
reviewOnly?: boolean;
|
||||
/** Output language for generated documentation (e.g. 'english', 'chinese', 'spanish') */
|
||||
lang?: string;
|
||||
}
|
||||
|
||||
export interface WikiMeta {
|
||||
|
|
@ -177,6 +179,15 @@ export class WikiGenerator {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Append an output-language instruction to a system prompt when --lang is set.
|
||||
*/
|
||||
private buildSystemPrompt(base: string): string {
|
||||
if (!this.options.lang) return base;
|
||||
const lang = this.options.lang.trim();
|
||||
return `${base}\n\nIMPORTANT: Write ALL documentation content in ${lang}. This includes headings, prose, code comments in examples, and diagram labels.`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Route LLM call to the appropriate provider (OpenAI-compatible or Cursor CLI).
|
||||
*/
|
||||
|
|
@ -417,7 +428,7 @@ export class WikiGenerator {
|
|||
|
||||
const response = await this.invokeLLM(
|
||||
prompt,
|
||||
GROUPING_SYSTEM_PROMPT,
|
||||
this.buildSystemPrompt(GROUPING_SYSTEM_PROMPT),
|
||||
this.streamOpts('Grouping files', 15, 13),
|
||||
);
|
||||
const grouping = this.parseGroupingResponse(response.content, files);
|
||||
|
|
@ -589,7 +600,7 @@ export class WikiGenerator {
|
|||
PROCESSES: formatProcesses(processes),
|
||||
});
|
||||
|
||||
const response = await this.invokeLLM(prompt, MODULE_SYSTEM_PROMPT, this.streamOpts(node.name));
|
||||
const response = await this.invokeLLM(prompt, this.buildSystemPrompt(MODULE_SYSTEM_PROMPT), this.streamOpts(node.name));
|
||||
|
||||
// Write page with front matter
|
||||
const pageContent = sanitizeMermaidMarkdown(`# ${node.name}\n\n${response.content}`);
|
||||
|
|
@ -630,7 +641,7 @@ export class WikiGenerator {
|
|||
CROSS_PROCESSES: formatProcesses(processes),
|
||||
});
|
||||
|
||||
const response = await this.invokeLLM(prompt, PARENT_SYSTEM_PROMPT, this.streamOpts(node.name));
|
||||
const response = await this.invokeLLM(prompt, this.buildSystemPrompt(PARENT_SYSTEM_PROMPT), this.streamOpts(node.name));
|
||||
|
||||
const pageContent = sanitizeMermaidMarkdown(`# ${node.name}\n\n${response.content}`);
|
||||
await fs.writeFile(path.join(this.wikiDir, `${node.slug}.md`), pageContent, 'utf-8');
|
||||
|
|
@ -678,7 +689,7 @@ export class WikiGenerator {
|
|||
|
||||
const response = await this.invokeLLM(
|
||||
prompt,
|
||||
OVERVIEW_SYSTEM_PROMPT,
|
||||
this.buildSystemPrompt(OVERVIEW_SYSTEM_PROMPT),
|
||||
this.streamOpts('Generating overview', 88),
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue