ft-scout 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ft/context.json +9 -8
- package/README.md +12 -3
- package/bin/src/commands/chat.d.ts.map +1 -0
- package/bin/src/commands/chat.js +89 -0
- package/bin/src/commands/chat.js.map +1 -0
- package/bin/src/commands/init.d.ts.map +1 -1
- package/bin/src/commands/init.js +32 -13
- package/bin/src/commands/init.js.map +1 -1
- package/bin/src/commands/web.d.ts.map +1 -1
- package/bin/src/commands/web.js +16 -12
- package/bin/src/commands/web.js.map +1 -1
- package/bin/src/engine/llm.d.ts.map +1 -1
- package/bin/src/engine/llm.js +88 -24
- package/bin/src/engine/llm.js.map +1 -1
- package/bin/src/index.js +17 -2
- package/bin/src/index.js.map +1 -1
- package/bin/src/utils/config.d.ts.map +1 -1
- package/bin/src/utils/config.js.map +1 -1
- package/bin/src/utils/language.d.ts.map +1 -0
- package/bin/src/utils/language.js +181 -0
- package/bin/src/utils/language.js.map +1 -0
- package/bin/src/utils/markdown.d.ts.map +1 -1
- package/bin/src/utils/markdown.js +33 -2
- package/bin/src/utils/markdown.js.map +1 -1
- package/package.json +1 -1
- package/email-template.txt +0 -44
package/.ft/context.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"projectName": "FT-CLI",
|
|
3
3
|
"targetDir": "C:\\Users\\rishi\\FT-CLI",
|
|
4
|
-
"stack": "- **Core Capability**:
|
|
4
|
+
"stack": "- **Core Capability**: फ्रंट टेरेन क्लाइंट एक शक्तिशाली ऑनबोर्डिंग को-पायलट है जो नई कोडबेस के लिए एक सहज और एकीकृत अनुभव प्रदान करता है। यह प्रोजेक्ट एक्सप्लोरेशन, गिट रिपॉजिटरी मैनेजमेंट और मशीन लर्निंग इंटीग्रेशन के माध्यम से एक पूर्ण ऑनबोर्डिंग सेवा प्रदान करता है जो नई कोडबेस के लिए एक सुगम और एकीकृत अनुभव प्रदान करता है। \n- **Architecture & Stack**: फ्रंट टेरेन क्लाइंट एक Node.js मॉड्यूल आधारित आर्किटेक्चर पर बनाया गया है, जिसमें TypeScript का उपयोग कोड की गुणवत्ता और स्थिरता सुनिश्चित करने के लिए किया जाता है। यह प्रोजेक्ट विभिन्न पैकेजों जैसे कि Commander, Dotenv, और OpenAI का उपयोग करके अपनी कोर क्षमता को पूरा करता है। \n- **Architectural Moat**: फ्रंट टेरेन क्लाइंट की आर्किटेक्चर एक अनोखी और प्रभावी ऑनबोर्डिंग अनुभव प्रदान करने में सक्षम है, जो इसे अपने प्रतिस्पर्धियों से अलग बनाता है। इसकी आर्किटेक्चर में विभिन्न मॉड्यूल और पैकेजों का उपयोग करके एक सुगम और एकीकृत अनुभव प्रदान किया जाता है, जो नए उपयोगकर्ताओं के लिए बहुत आसान होता है।",
|
|
5
5
|
"entryPoint": "bin/ft.js",
|
|
6
6
|
"painPoints": [
|
|
7
|
-
"⚡ [
|
|
8
|
-
"⚡ [Scaling Bottleneck]:
|
|
9
|
-
"⚡ [Execution Note]:
|
|
7
|
+
"⚡ [Subsystem Risk]: फ्रंट टेरेन क्लाइंट के प्रोजेक्ट में कई निर्भरताएँ हैं, जो प्रोजेक्ट के स्थिरता और सुरक्षा को प्रभावित कर सकती हैं। यदि इन निर्भरताओं में से कोई एक अस्थिर या असुरक्षित होता है, तो यह पूरे प्रोजेक्ट को प्रभावित कर सकता है।",
|
|
8
|
+
"⚡ [Scaling Bottleneck]: फ्रंट टेरेन क्लाइंट के प्रोजेक्ट में मशीन लर्निंग और आर्टिफ़िशियल इंटेलिजेंस का उपयोग किया जाता है, जो प्रोजेक्ट के प्रदर्शन को प्रभावित कर सकता है। यदि प्रोजेक्ट के उपयोगकर्ता बढ़ते हैं, तो यह प्रोजेक्ट के प्रदर्शन को प्रभावित कर सकता है और स्केलिंग की आवश्यकता हो सकती है।",
|
|
9
|
+
"⚡ [Execution Note]: फ्रंट टेरेन क्लाइंट के प्रोजेक्ट को चलाने के लिए निर्धारित पर्यावरण और निर्भरताओं की आवश्यकता होती है, जो प्रोजेक्ट के स्थापना और प्रबंधन को प्रभावित कर सकती हैं। यदि प्रोजेक्ट के उपयोगकर्ता इन निर्भरताओं को स्थापित नहीं करते हैं, तो यह प्रोजेक्ट के प्रदर्शन को प्रभावित कर सकता है।"
|
|
10
10
|
],
|
|
11
11
|
"readOrder": [
|
|
12
|
-
"package.json ->
|
|
13
|
-
"src/email-template.txt ->
|
|
14
|
-
"
|
|
12
|
+
"package.json -> यह फ़ाइल प्रोजेक्ट की मुख्य कॉन्फ़िगरेशन फ़ाइल है, जिसमें प्रोजेक्ट के नाम, वर्ज़न, और निर्भरताओं का विवरण होता है। यहाँ से प्रोजेक्ट के बारे में विस्तृत जानकारी प्राप्त की जा सकती है।",
|
|
13
|
+
"src/email-template.txt -> यह फ़ाइल प्रोजेक्ट के ईमेल टेम्पलेट को परिभाषित करती है, जो ऑनबोर्डिंग प्रक्रिया के दौरान उपयोगकर्ताओं को भेजे जाने वाले ईमेल के लिए उपयोग किया जाता है।",
|
|
14
|
+
"bin/ft.js -> यह फ़ाइल प्रोजेक्ट का मुख्य प्रवेश बिंदु है, जो प्रोजेक्ट के सभी मॉड्यूल और पैकेजों को एक साथ जोड़ता है। यहाँ से प्रोजेक्ट के सभी कार्यों को नियंत्रित किया जा सकता है।"
|
|
15
15
|
],
|
|
16
|
-
"createdAt": "2026-08-
|
|
16
|
+
"createdAt": "2026-08-01T17:46:25.413Z",
|
|
17
|
+
"language": "Hindi"
|
|
17
18
|
}
|
package/README.md
CHANGED
|
@@ -18,12 +18,20 @@ Once installed, you can use the `ft` or `ft-scout` commands.
|
|
|
18
18
|
# Initialize learning on a local or remote repository
|
|
19
19
|
ft init [repoUrl]
|
|
20
20
|
|
|
21
|
-
#
|
|
22
|
-
ft init --
|
|
21
|
+
# Multilingual AI teardowns & onboarding summaries (e.g. spanish, hindi, french, japanese, german, etc.)
|
|
22
|
+
ft init [repoUrl] --lang spanish
|
|
23
|
+
ft init [repoUrl] -l hi
|
|
24
|
+
|
|
25
|
+
# Interactive Q&A mode after indexing (with optional web search and custom language)
|
|
26
|
+
ft init --ask --web --lang ja
|
|
27
|
+
|
|
28
|
+
# Live interactive AI chat co-pilot (until Ctrl+C is pressed)
|
|
29
|
+
ft chat
|
|
30
|
+
ft chat --web --lang spanish
|
|
23
31
|
|
|
24
32
|
# Live internet search for live web context & up-to-date documentation
|
|
25
33
|
ft search "Next.js 15 App Router"
|
|
26
|
-
ft web "Tailwind CSS v4" --ask
|
|
34
|
+
ft web "Tailwind CSS v4" --ask --lang french
|
|
27
35
|
|
|
28
36
|
# Show knowledge holders of a specific directory or file
|
|
29
37
|
ft owners <path>
|
|
@@ -34,3 +42,4 @@ ft risky
|
|
|
34
42
|
# Diagnose local setup, missing .env files, and internet connection
|
|
35
43
|
ft setup
|
|
36
44
|
```
|
|
45
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["chat.ts"],"names":[],"mappings":"AA+BA,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBA6E5F"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { spinner, isCancel, text } from '@clack/prompts';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { askRepoQuestion } from '../engine/llm.js';
|
|
6
|
+
import { loadContext } from '../utils/config.js';
|
|
7
|
+
import { renderMarkdown, safeNote } from '../utils/markdown.js';
|
|
8
|
+
import { normalizeLanguage } from '../utils/language.js';
|
|
9
|
+
function getDirectoryFiles(dir, baseDir = dir, maxFiles = 150) {
|
|
10
|
+
let results = [];
|
|
11
|
+
try {
|
|
12
|
+
const list = fs.readdirSync(dir);
|
|
13
|
+
for (const file of list) {
|
|
14
|
+
if (results.length >= maxFiles)
|
|
15
|
+
break;
|
|
16
|
+
if (['node_modules', '.git', '.ft', 'dist', 'build', '.next', 'coverage'].includes(file))
|
|
17
|
+
continue;
|
|
18
|
+
const filePath = path.join(dir, file);
|
|
19
|
+
const stat = fs.statSync(filePath);
|
|
20
|
+
if (stat && stat.isDirectory()) {
|
|
21
|
+
results = results.concat(getDirectoryFiles(filePath, baseDir, maxFiles - results.length));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const relativePath = path.relative(baseDir, filePath).replace(/\\/g, '/');
|
|
25
|
+
results.push(relativePath);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Ignore read errors for inaccessible folders
|
|
31
|
+
}
|
|
32
|
+
return results;
|
|
33
|
+
}
|
|
34
|
+
export async function handleChat(options) {
|
|
35
|
+
const existingContext = loadContext();
|
|
36
|
+
const targetLang = normalizeLanguage(options?.lang) || normalizeLanguage(existingContext?.language);
|
|
37
|
+
const cwd = process.cwd();
|
|
38
|
+
const filesList = getDirectoryFiles(cwd);
|
|
39
|
+
const projectName = existingContext?.projectName || path.basename(cwd) || 'Codebase';
|
|
40
|
+
let manifestContent = '';
|
|
41
|
+
const pkgPath = path.join(cwd, 'package.json');
|
|
42
|
+
if (fs.existsSync(pkgPath)) {
|
|
43
|
+
try {
|
|
44
|
+
manifestContent = fs.readFileSync(pkgPath, 'utf-8');
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
manifestContent = '{}';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
safeNote(chalk.cyan(`Interactive AI Chat Session Active${targetLang ? ` (${targetLang})` : ''}.\nAsk any question to Scout. Press Ctrl+C or type exit to quit at any time.`), '💬 FrontTerrain AI Chat');
|
|
51
|
+
const chatHistory = [];
|
|
52
|
+
while (true) {
|
|
53
|
+
const query = await text({
|
|
54
|
+
message: chalk.bold('You:'),
|
|
55
|
+
placeholder: 'Ask a question or request assistance... (Ctrl+C to exit)',
|
|
56
|
+
validate: (value) => {
|
|
57
|
+
if (!value || !value.trim())
|
|
58
|
+
return 'Message cannot be empty';
|
|
59
|
+
return undefined;
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
if (isCancel(query)) {
|
|
63
|
+
safeNote(chalk.yellow('Exiting interactive chat session. Goodbye!'), '👋 Chat Ended');
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
const qText = query.trim();
|
|
67
|
+
if (['exit', 'quit', 'q', ':q'].includes(qText.toLowerCase())) {
|
|
68
|
+
safeNote(chalk.yellow('Exiting interactive chat session. Goodbye!'), '👋 Chat Ended');
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
const askSpinner = spinner();
|
|
72
|
+
const isWebNeeded = options?.web ||
|
|
73
|
+
/^\/(web|internet|search)\b/i.test(qText) ||
|
|
74
|
+
/\b(search the web|internet|online docs|latest docs|web search)\b/i.test(qText);
|
|
75
|
+
if (isWebNeeded) {
|
|
76
|
+
askSpinner.start('Searching internet & analyzing context...');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
askSpinner.start('Analyzing context & generating response...');
|
|
80
|
+
}
|
|
81
|
+
const answer = await askRepoQuestion(qText, projectName, filesList, manifestContent, chatHistory, { useWeb: options?.web, language: targetLang, native: options?.native });
|
|
82
|
+
askSpinner.stop('Scout:');
|
|
83
|
+
const formattedAnswer = renderMarkdown(answer);
|
|
84
|
+
safeNote(formattedAnswer, '💡 AI Response');
|
|
85
|
+
chatHistory.push({ role: 'user', content: qText });
|
|
86
|
+
chatHistory.push({ role: 'assistant', content: answer });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["init.ts"],"names":[],"mappings":"AAmJA,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBA+S7H"}
|
package/bin/src/commands/init.js
CHANGED
|
@@ -5,8 +5,9 @@ import { spinner, note, password, isCancel, text } from '@clack/prompts';
|
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { simpleGit } from 'simple-git';
|
|
7
7
|
import { generateRepoSummary, askRepoQuestion } from '../engine/llm.js';
|
|
8
|
-
import { saveContext } from '../utils/config.js';
|
|
9
|
-
import { renderMarkdown, formatInlineMarkdown } from '../utils/markdown.js';
|
|
8
|
+
import { saveContext, loadContext } from '../utils/config.js';
|
|
9
|
+
import { renderMarkdown, formatInlineMarkdown, safeNote } from '../utils/markdown.js';
|
|
10
|
+
import { normalizeLanguage, getLanguageInstruction } from '../utils/language.js';
|
|
10
11
|
function extractNpmPackageName(target) {
|
|
11
12
|
if (target.startsWith('npm:')) {
|
|
12
13
|
return target.slice(4).trim();
|
|
@@ -136,6 +137,9 @@ async function isPublicRepo(gitUrl) {
|
|
|
136
137
|
export async function handleInit(repoUrl, options) {
|
|
137
138
|
const s = spinner();
|
|
138
139
|
let targetDir = process.cwd();
|
|
140
|
+
const existingContext = loadContext();
|
|
141
|
+
const targetLang = normalizeLanguage(options?.lang) || normalizeLanguage(existingContext?.language);
|
|
142
|
+
const langDisplay = targetLang ? getLanguageInstruction(targetLang, options?.native).displayName : undefined;
|
|
139
143
|
if (repoUrl && repoUrl.trim()) {
|
|
140
144
|
const rawTarget = repoUrl.trim();
|
|
141
145
|
const resolvedPath = path.resolve(rawTarget);
|
|
@@ -243,7 +247,7 @@ export async function handleInit(repoUrl, options) {
|
|
|
243
247
|
}
|
|
244
248
|
}
|
|
245
249
|
}
|
|
246
|
-
s.start(`Analyzing repository at ${chalk.cyan(targetDir)}...`);
|
|
250
|
+
s.start(`Analyzing repository at ${chalk.cyan(targetDir)}${langDisplay ? ` (Language: ${chalk.bold.yellow(langDisplay)})` : ''}...`);
|
|
247
251
|
// Scan file tree up to 2 levels deep
|
|
248
252
|
const getFiles = (dir, depth = 2) => {
|
|
249
253
|
let results = [];
|
|
@@ -286,7 +290,7 @@ export async function handleInit(repoUrl, options) {
|
|
|
286
290
|
projectName = path.basename(rawTarget, '.git');
|
|
287
291
|
}
|
|
288
292
|
}
|
|
289
|
-
const aiInsight = await generateRepoSummary(projectName, filesList, manifestContent || '{}');
|
|
293
|
+
const aiInsight = await generateRepoSummary(projectName, filesList, manifestContent || '{}', targetLang, options?.native);
|
|
290
294
|
// Save context into local .ft folder
|
|
291
295
|
saveContext({
|
|
292
296
|
projectName,
|
|
@@ -297,11 +301,26 @@ export async function handleInit(repoUrl, options) {
|
|
|
297
301
|
painPoints: aiInsight.painPoints,
|
|
298
302
|
readOrder: aiInsight.readOrder,
|
|
299
303
|
createdAt: new Date().toISOString(),
|
|
304
|
+
language: targetLang,
|
|
300
305
|
});
|
|
301
306
|
s.stop('Repository analysis complete.');
|
|
307
|
+
const cleanedPainPoints = (aiInsight.painPoints || [])
|
|
308
|
+
.map((p) => p.trim())
|
|
309
|
+
.filter((p) => p.length > 5 && !/^[,\s.⚡\-[\]:]+$/.test(p));
|
|
310
|
+
const cleanedReadOrder = (aiInsight.readOrder || [])
|
|
311
|
+
.map((r) => r.trim())
|
|
312
|
+
.filter((r) => r.length > 5 && !/^[,\s.⚡\-[\]:]+$/.test(r));
|
|
313
|
+
const painPointsToDisplay = cleanedPainPoints.length > 0 ? cleanedPainPoints : [
|
|
314
|
+
'⚡ [Subsystem Dependency]: Verify API keys or external proxy authentication service connectivity.',
|
|
315
|
+
'⚡ [Environment Requirements]: Ensure runtime dependencies match system execution requirements.'
|
|
316
|
+
];
|
|
317
|
+
const readOrderToDisplay = cleanedReadOrder.length > 0 ? cleanedReadOrder : [
|
|
318
|
+
'package.json -> Core manifest defining build targets and dependency graph',
|
|
319
|
+
'src/index.ts -> Primary router establishing CLI hooks and command workflow'
|
|
320
|
+
];
|
|
302
321
|
// Print repository summary
|
|
303
|
-
|
|
304
|
-
Location: ${chalk.dim(targetDir)}
|
|
322
|
+
safeNote(`Project Name: ${chalk.bold.green(projectName)}
|
|
323
|
+
Location: ${chalk.dim(targetDir)}${langDisplay ? `\nLanguage: ${chalk.bold.yellow(langDisplay)}` : ''}
|
|
305
324
|
|
|
306
325
|
${chalk.bold.magenta('🚀 Architectural Executive Summary & Stack:')}
|
|
307
326
|
${renderMarkdown(aiInsight.summary)}
|
|
@@ -310,12 +329,12 @@ ${chalk.bold.cyan('📌 Main Entry Point:')}
|
|
|
310
329
|
${chalk.cyan(aiInsight.entryPoint)}
|
|
311
330
|
|
|
312
331
|
${chalk.bold.red('🔥 Known Architectural Risks & Hotspots:')}
|
|
313
|
-
${
|
|
332
|
+
${painPointsToDisplay.map((p) => ` • ${formatInlineMarkdown(p)}`).join('\n\n')}
|
|
314
333
|
|
|
315
334
|
${chalk.bold.green('🧭 Strategic Onboarding Read Order:')}
|
|
316
|
-
${
|
|
335
|
+
${readOrderToDisplay.map((r, idx) => ` ${idx + 1}. ${formatInlineMarkdown(r)}`).join('\n')}`, '⚡ FrontTerrain Codebase Teardown (YC Pitch Edition)');
|
|
317
336
|
if (options?.ask) {
|
|
318
|
-
|
|
337
|
+
safeNote(chalk.cyan(`Interactive AI Q&A session active${targetLang ? ` (${targetLang})` : ''}.\nAsk any question about this codebase. Press Ctrl+C to exit at any time.`), '💬 Interactive Q&A Mode');
|
|
319
338
|
const chatHistory = [];
|
|
320
339
|
while (true) {
|
|
321
340
|
const query = await text({
|
|
@@ -328,12 +347,12 @@ ${aiInsight.readOrder.map((r, idx) => ` ${idx + 1}. ${formatInlineMarkdown(r)}`)
|
|
|
328
347
|
},
|
|
329
348
|
});
|
|
330
349
|
if (isCancel(query)) {
|
|
331
|
-
|
|
350
|
+
safeNote(chalk.yellow('Exiting interactive session. Goodbye!'), '👋 Q&A Ended');
|
|
332
351
|
break;
|
|
333
352
|
}
|
|
334
353
|
const qText = query.trim();
|
|
335
354
|
if (['exit', 'quit', 'q'].includes(qText.toLowerCase())) {
|
|
336
|
-
|
|
355
|
+
safeNote(chalk.yellow('Exiting interactive session. Goodbye!'), '👋 Q&A Ended');
|
|
337
356
|
break;
|
|
338
357
|
}
|
|
339
358
|
const askSpinner = spinner();
|
|
@@ -346,10 +365,10 @@ ${aiInsight.readOrder.map((r, idx) => ` ${idx + 1}. ${formatInlineMarkdown(r)}`)
|
|
|
346
365
|
else {
|
|
347
366
|
askSpinner.start('Analyzing codebase context & generating response...');
|
|
348
367
|
}
|
|
349
|
-
const answer = await askRepoQuestion(qText, projectName, filesList, manifestContent || '{}', chatHistory, options?.web
|
|
368
|
+
const answer = await askRepoQuestion(qText, projectName, filesList, manifestContent || '{}', chatHistory, { useWeb: options?.web, language: targetLang, native: options?.native });
|
|
350
369
|
askSpinner.stop('Response:');
|
|
351
370
|
const formattedAnswer = renderMarkdown(answer);
|
|
352
|
-
|
|
371
|
+
safeNote(formattedAnswer, `💡 ${qText}`);
|
|
353
372
|
chatHistory.push({ role: 'user', content: qText });
|
|
354
373
|
chatHistory.push({ role: 'assistant', content: answer });
|
|
355
374
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["web.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBA8F/H"}
|
package/bin/src/commands/web.js
CHANGED
|
@@ -2,11 +2,15 @@ import { spinner, note } from '@clack/prompts';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { getWebContext, searchWeb, fetchWebPage } from '../engine/web.js';
|
|
4
4
|
import { askRepoQuestion } from '../engine/llm.js';
|
|
5
|
-
import { renderMarkdown, formatInlineMarkdown } from '../utils/markdown.js';
|
|
5
|
+
import { renderMarkdown, formatInlineMarkdown, safeNote } from '../utils/markdown.js';
|
|
6
|
+
import { loadContext } from '../utils/config.js';
|
|
7
|
+
import { normalizeLanguage } from '../utils/language.js';
|
|
6
8
|
export async function handleWebSearch(query, options) {
|
|
7
9
|
const s = spinner();
|
|
10
|
+
const existingContext = loadContext();
|
|
11
|
+
const targetLang = normalizeLanguage(options?.lang) || normalizeLanguage(existingContext?.language);
|
|
8
12
|
if (!query || !query.trim()) {
|
|
9
|
-
|
|
13
|
+
safeNote(chalk.yellow(`Please specify a web query or URL, e.g.:\n ${chalk.cyan('ft search "Next.js 15 server actions"')}\n ${chalk.cyan('ft search "Tailwind CSS v4" --ask --lang spanish')}`), '🌐 Internet Search');
|
|
10
14
|
return;
|
|
11
15
|
}
|
|
12
16
|
const cleanQuery = query.trim();
|
|
@@ -16,18 +20,18 @@ export async function handleWebSearch(query, options) {
|
|
|
16
20
|
const pageText = await fetchWebPage(cleanQuery, 3000);
|
|
17
21
|
s.stop('Web page fetched.');
|
|
18
22
|
if (!pageText) {
|
|
19
|
-
|
|
23
|
+
safeNote(chalk.red(`Could not fetch content from ${cleanQuery}. Please check the URL or network connection.`), '❌ Fetch Error');
|
|
20
24
|
return;
|
|
21
25
|
}
|
|
22
26
|
if (options?.ask) {
|
|
23
27
|
const askSpinner = spinner();
|
|
24
|
-
askSpinner.start(
|
|
25
|
-
const answer = await askRepoQuestion(`Summarize the key information and technical details from this webpage: ${cleanQuery}`, 'Web Page Summary', [cleanQuery], pageText, [], { useWeb: true, webContext: pageText });
|
|
28
|
+
askSpinner.start(`Analyzing web page content with AI${targetLang ? ` (${targetLang})` : ''}...`);
|
|
29
|
+
const answer = await askRepoQuestion(`Summarize the key information and technical details from this webpage: ${cleanQuery}`, 'Web Page Summary', [cleanQuery], pageText, [], { useWeb: true, webContext: pageText, language: targetLang, native: options?.native });
|
|
26
30
|
askSpinner.stop('AI Web Analysis:');
|
|
27
|
-
|
|
31
|
+
safeNote(renderMarkdown(answer), `🌐 Web Page Synthesis: ${cleanQuery}`);
|
|
28
32
|
}
|
|
29
33
|
else {
|
|
30
|
-
|
|
34
|
+
safeNote(`${chalk.bold.cyan('URL:')} ${cleanQuery}\n\n${chalk.bold('Extracted Content:')}\n${pageText.slice(0, 1500)}...`, '🌐 Web Page Content');
|
|
31
35
|
}
|
|
32
36
|
return;
|
|
33
37
|
}
|
|
@@ -35,19 +39,19 @@ export async function handleWebSearch(query, options) {
|
|
|
35
39
|
const webRes = await getWebContext(cleanQuery);
|
|
36
40
|
s.stop('Internet search complete.');
|
|
37
41
|
if (webRes.sources.length === 0) {
|
|
38
|
-
|
|
42
|
+
safeNote(chalk.yellow(`No search results found for "${cleanQuery}". Please verify your network connection or query.`), '🌐 Internet Search');
|
|
39
43
|
return;
|
|
40
44
|
}
|
|
41
45
|
if (options?.ask) {
|
|
42
46
|
const askSpinner = spinner();
|
|
43
|
-
askSpinner.start(
|
|
44
|
-
const answer = await askRepoQuestion(cleanQuery, 'Web Query', [], '', [], { useWeb: true, webContext: webRes.context });
|
|
47
|
+
askSpinner.start(`Synthesizing AI answer using live internet knowledge${targetLang ? ` (${targetLang})` : ''}...`);
|
|
48
|
+
const answer = await askRepoQuestion(cleanQuery, 'Web Query', [], '', [], { useWeb: true, webContext: webRes.context, language: targetLang, native: options?.native });
|
|
45
49
|
askSpinner.stop('AI Internet Synthesis:');
|
|
46
50
|
const formattedSources = webRes.sources
|
|
47
51
|
.slice(0, 4)
|
|
48
52
|
.map((src, i) => ` ${i + 1}. [${src.title}](${src.url})`)
|
|
49
53
|
.join('\n');
|
|
50
|
-
|
|
54
|
+
safeNote(`${renderMarkdown(answer)}\n\n${chalk.bold.cyan('🌐 Web Sources Cited:')}\n${renderMarkdown(formattedSources)}`, `💡 AI Web Answer: ${cleanQuery}`);
|
|
51
55
|
}
|
|
52
56
|
else {
|
|
53
57
|
const formattedList = webRes.sources
|
|
@@ -55,7 +59,7 @@ export async function handleWebSearch(query, options) {
|
|
|
55
59
|
return `${chalk.bold.cyan(`#${idx + 1}`)} ${chalk.bold(src.title)}\n └─ ${chalk.dim.underline(src.url)}\n └─ ${formatInlineMarkdown(src.snippet)}`;
|
|
56
60
|
})
|
|
57
61
|
.join('\n\n');
|
|
58
|
-
|
|
62
|
+
safeNote(`${chalk.bold('Top Live Search Results:')}\n\n${formattedList}\n\n${chalk.dim('Tip: Add --ask (-a) flag to synthesize an AI answer using these search results.')}`, `🌐 Internet Search Results (${webRes.sources.length} sources found)`);
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
//# sourceMappingURL=web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["web.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":"AA4FA,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsD7F;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAM,EACxE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GACvI,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
|
package/bin/src/engine/llm.js
CHANGED
|
@@ -3,6 +3,7 @@ import dotenv from 'dotenv';
|
|
|
3
3
|
import * as url from 'url';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { getWebContext } from './web.js';
|
|
6
|
+
import { getLanguageInstruction } from '../utils/language.js';
|
|
6
7
|
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
7
8
|
// Attempt to load .env from the root of the CLI installation
|
|
8
9
|
dotenv.config({ path: path.resolve(__dirname, '../../../.env'), quiet: true });
|
|
@@ -11,11 +12,77 @@ const openai = new OpenAI({
|
|
|
11
12
|
apiKey: 'proxy-managed-key',
|
|
12
13
|
baseURL: 'https://frontterrain.com/api',
|
|
13
14
|
});
|
|
14
|
-
|
|
15
|
+
function sanitizeRepoSummary(parsed, projectName, filesList) {
|
|
16
|
+
const entryPoint = parsed.entryPoint && typeof parsed.entryPoint === 'string' && parsed.entryPoint.length > 2
|
|
17
|
+
? parsed.entryPoint
|
|
18
|
+
: (filesList.find(f => f.includes('index') || f.includes('main') || f.includes('app')) || 'src/index.ts');
|
|
19
|
+
// Sanitize summary lines (ensure bold headers exist and description after colon is not just commas/dots)
|
|
20
|
+
let summary = typeof parsed.summary === 'string' ? parsed.summary : '';
|
|
21
|
+
summary = summary.replace(/-\s*\*\*(?:\s*\*)*:\s*/g, '- **Core Capability**: ');
|
|
22
|
+
// Remove bullets where text after colon is only punctuation/commas/spaces
|
|
23
|
+
const summaryLines = summary.split('\n').filter((line) => {
|
|
24
|
+
const parts = line.split(':');
|
|
25
|
+
if (parts.length > 1) {
|
|
26
|
+
const val = parts.slice(1).join(':').trim();
|
|
27
|
+
return val.length > 3 && !/^[,\s.⚡\-[\]:]*$/.test(val);
|
|
28
|
+
}
|
|
29
|
+
return line.trim().length > 10;
|
|
30
|
+
});
|
|
31
|
+
summary = summaryLines.join('\n').trim();
|
|
32
|
+
if (!summary || summary.length < 20) {
|
|
33
|
+
summary = `- **Core Capability**: 🚀 ${projectName} is a modular co-pilot system engineered for codebase due-diligence and rapid developer onboarding.\n- **Architecture & Stack**: Built on TypeScript/ESM with decoupled command routing, git churn scanners, and LLM proxy orchestration.\n- **Architectural Moat**: Automated due-diligence mapping with static analysis and interactive codebase Q&A synthesis.`;
|
|
34
|
+
}
|
|
35
|
+
// Sanitize readOrder (remove incomplete items where description after -> is empty/commas)
|
|
36
|
+
let readOrder = Array.isArray(parsed.readOrder)
|
|
37
|
+
? parsed.readOrder
|
|
38
|
+
.filter((r) => typeof r === 'string')
|
|
39
|
+
.map((r) => r.trim())
|
|
40
|
+
.filter((r) => {
|
|
41
|
+
const parts = r.split('->');
|
|
42
|
+
if (parts.length > 1) {
|
|
43
|
+
const desc = parts[1].trim();
|
|
44
|
+
return desc.length > 3 && !/^[,\s.⚡\-[\]:]*$/.test(desc);
|
|
45
|
+
}
|
|
46
|
+
return r.length > 8;
|
|
47
|
+
})
|
|
48
|
+
: [];
|
|
49
|
+
if (readOrder.length === 0) {
|
|
50
|
+
readOrder = [
|
|
51
|
+
'package.json -> Core manifest defining build targets, execution binaries, and dependency graph',
|
|
52
|
+
'src/index.ts -> Primary router establishing CLI hooks, subcommand registration, and execution workflow',
|
|
53
|
+
'src/engine/llm.ts -> Core AI engine managing prompt orchestration and LLM proxy synthesis'
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
// Sanitize painPoints (remove incomplete items where description after colon is empty/commas)
|
|
57
|
+
let painPoints = Array.isArray(parsed.painPoints)
|
|
58
|
+
? parsed.painPoints
|
|
59
|
+
.filter((p) => typeof p === 'string')
|
|
60
|
+
.map((p) => p.trim())
|
|
61
|
+
.filter((p) => {
|
|
62
|
+
const parts = p.split(':');
|
|
63
|
+
if (parts.length > 1) {
|
|
64
|
+
const desc = parts.slice(1).join(':').trim();
|
|
65
|
+
return desc.length > 3 && !/^[,\s.⚡\-[\]:]*$/.test(desc);
|
|
66
|
+
}
|
|
67
|
+
return p.length > 10;
|
|
68
|
+
})
|
|
69
|
+
: [];
|
|
70
|
+
if (painPoints.length === 0) {
|
|
71
|
+
painPoints = [
|
|
72
|
+
'⚡ [Subsystem Risk]: Ensure API keys or FrontTerrain Proxy authentication headers are active for live AI synthesis.',
|
|
73
|
+
'⚡ [Scaling Bottleneck]: High-volume repository scanning requires optimized commit log batching for large-scale codebases.',
|
|
74
|
+
'⚡ [Execution Requirement]: Strict TypeScript transpilation requires precise extension matching across ESM module dependencies.'
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
return { summary, entryPoint, readOrder, painPoints };
|
|
78
|
+
}
|
|
79
|
+
export async function generateRepoSummary(projectName, filesList, packageJsonContent, language, native) {
|
|
80
|
+
const langInfo = getLanguageInstruction(language, native);
|
|
15
81
|
const prompt = `
|
|
16
82
|
You are a world-class Principal Software Architect and Y Combinator Technical Partner conducting an elite, high-energy codebase teardown for a YC Demo Day pitch.
|
|
17
83
|
|
|
18
84
|
Target Project: ${projectName}
|
|
85
|
+
Target Output Language: ${langInfo.displayName}
|
|
19
86
|
|
|
20
87
|
File Tree Overview:
|
|
21
88
|
${filesList.join('\n')}
|
|
@@ -25,19 +92,26 @@ ${packageJsonContent}
|
|
|
25
92
|
|
|
26
93
|
Your goal: Generate an extremely engaging, technically deep, punchy, and impressive breakdown of this codebase. Avoid generic or dry 1-sentence answers. Make it read like a million-dollar technical due-diligence report that wows investors and engineers alike!
|
|
27
94
|
|
|
95
|
+
CRITICAL JSON & SCRIPT GENERATION RULE: ${langInfo.instruction}
|
|
96
|
+
You MUST write complete, deep, rich technical sentences in ${langInfo.displayName} for EVERY SINGLE property in the JSON schema below.
|
|
97
|
+
Keep the bold bullet header titles exact in English (e.g. "- **Core Capability**:", "- **Architecture & Stack**:", "- **Architectural Moat**:") and write the descriptive explanation after the colon in ${langInfo.displayName}.
|
|
98
|
+
Do NOT leave any empty strings, isolated commas, or blank placeholders after colons or arrows (e.g. do NOT output ", ," or "file.js -> ").
|
|
99
|
+
Every read order item MUST be formatted as: "filepath -> Detailed explanation in ${langInfo.displayName}".
|
|
100
|
+
Every pain point item MUST be formatted as: "⚡ [Category]: Detailed technical risk analysis in ${langInfo.displayName}".
|
|
101
|
+
|
|
28
102
|
Provide a JSON output matching this exact schema:
|
|
29
103
|
{
|
|
30
|
-
"summary": "- **Core Capability**: A punchy 1-2 sentence description of what the project does.\n- **Architecture & Stack**: Tech stack & core design pattern.\n- **Architectural Moat**: Unique engineering advantage or value prop.",
|
|
104
|
+
"summary": "- **Core Capability**: A punchy 1-2 sentence description of what the project does written in ${langInfo.displayName}.\n- **Architecture & Stack**: Tech stack & core design pattern written in ${langInfo.displayName}.\n- **Architectural Moat**: Unique engineering advantage or value prop written in ${langInfo.displayName}.",
|
|
31
105
|
"entryPoint": "the exact relative path to the primary execution entry point file",
|
|
32
106
|
"readOrder": [
|
|
33
|
-
"file/path/1 -> Strategic reason detailing why this file is foundational to the architecture",
|
|
34
|
-
"file/path/2 -> Technical justification for reading this subsystem next",
|
|
35
|
-
"file/path/3 -> Crucial module detailing core business logic or pipeline routing"
|
|
107
|
+
"file/path/1 -> Strategic reason written in ${langInfo.displayName} detailing why this file is foundational to the architecture",
|
|
108
|
+
"file/path/2 -> Technical justification written in ${langInfo.displayName} for reading this subsystem next",
|
|
109
|
+
"file/path/3 -> Crucial module written in ${langInfo.displayName} detailing core business logic or pipeline routing"
|
|
36
110
|
],
|
|
37
111
|
"painPoints": [
|
|
38
|
-
"⚡ [Subsystem Risk]: Deep technical insight into potential architectural debt, fragile dependency, or scaling bottleneck",
|
|
39
|
-
"⚡ [Scaling Bottleneck]: Critical operational or state management risk engineers must watch out for",
|
|
40
|
-
"⚡ [Execution Note]: Key architectural constraint or environment requirement for developer onboarding"
|
|
112
|
+
"⚡ [Subsystem Risk]: Deep technical insight written in ${langInfo.displayName} into potential architectural debt, fragile dependency, or scaling bottleneck",
|
|
113
|
+
"⚡ [Scaling Bottleneck]: Critical operational or state management risk written in ${langInfo.displayName} engineers must watch out for",
|
|
114
|
+
"⚡ [Execution Note]: Key architectural constraint or environment requirement written in ${langInfo.displayName} for developer onboarding"
|
|
41
115
|
]
|
|
42
116
|
}
|
|
43
117
|
`;
|
|
@@ -47,25 +121,12 @@ Provide a JSON output matching this exact schema:
|
|
|
47
121
|
messages: [{ role: 'user', content: prompt }],
|
|
48
122
|
response_format: { type: 'json_object' },
|
|
49
123
|
});
|
|
50
|
-
|
|
124
|
+
const parsed = JSON.parse(response.choices[0]?.message?.content || '{}');
|
|
125
|
+
return sanitizeRepoSummary(parsed, projectName, filesList);
|
|
51
126
|
}
|
|
52
127
|
catch (error) {
|
|
53
128
|
console.error("OpenAI Error:", error);
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
summary: `- **Core Capability**: 🚀 ${projectName} is a modular co-pilot system engineered for codebase due-diligence and rapid developer onboarding.\n- **Architecture & Stack**: Built on TypeScript/ESM with decoupled command routing, git churn scanners, and LLM proxy orchestration.\n- **Architectural Moat**: Automated due-diligence mapping with static analysis and interactive codebase Q&A synthesis.`,
|
|
57
|
-
entryPoint: filesList.find(f => f.includes('index') || f.includes('main') || f.includes('app')) || 'src/index.ts',
|
|
58
|
-
readOrder: [
|
|
59
|
-
'package.json -> Core manifest defining build targets, execution binaries, and dependency graph',
|
|
60
|
-
'src/index.ts -> Primary router establishing CLI hooks, subcommand registration, and execution workflow',
|
|
61
|
-
'src/engine/llm.ts -> Core AI engine managing prompt orchestration and LLM proxy synthesis'
|
|
62
|
-
],
|
|
63
|
-
painPoints: [
|
|
64
|
-
'⚡ AI Gateway Orchestration: Ensure API keys or FrontTerrain Proxy authentication headers are active for live AI synthesis.',
|
|
65
|
-
'⚡ Asynchronous Git Churn Analysis: High-volume repository scanning requires optimized commit log batching for large-scale codebases.',
|
|
66
|
-
'⚡ Module Resolution & ESM Boundaries: Strict TypeScript transpilation requires precise extension matching across ESM module dependencies.'
|
|
67
|
-
],
|
|
68
|
-
};
|
|
129
|
+
return sanitizeRepoSummary({}, projectName, filesList);
|
|
69
130
|
}
|
|
70
131
|
}
|
|
71
132
|
export async function askRepoQuestion(question, projectName, filesList, manifestContent, chatHistory = [], options) {
|
|
@@ -84,6 +145,7 @@ export async function askRepoQuestion(question, projectName, filesList, manifest
|
|
|
84
145
|
// Fallback if web fetch fails
|
|
85
146
|
}
|
|
86
147
|
}
|
|
148
|
+
const langInfo = getLanguageInstruction(options?.language, options?.native);
|
|
87
149
|
const systemPrompt = `You are FrontTerrain AI, a world-class Principal Software Architect and Y Combinator Technical Co-Pilot.
|
|
88
150
|
You have indexed the codebase for project: "${projectName}".
|
|
89
151
|
${isWebQuery ? '🌐 Internet Access: ACTIVE. You have live web search capabilities enabled.' : ''}
|
|
@@ -99,6 +161,8 @@ ${liveWebContext
|
|
|
99
161
|
|
|
100
162
|
Your mission: Answer technical questions about this repository and web context with extreme clarity, deep technical insight, and structured formatting.
|
|
101
163
|
|
|
164
|
+
CRITICAL LANGUAGE & TERMINAL RENDERING REQUIREMENT: ${langInfo.instruction} Translate all explanations, section titles, and architectural notes into ${langInfo.displayName} while keeping exact code blocks, filenames, function names, and option flags intact.
|
|
165
|
+
|
|
102
166
|
CRITICAL CLI FORMATTING INSTRUCTIONS:
|
|
103
167
|
1. Always structure your answer into short sections using Markdown headers (e.g. ### Architecture Overview).
|
|
104
168
|
2. Use bold lead-in bullet points (e.g. - **Subsystem**: Description) instead of monolithic text walls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":"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"}
|
package/bin/src/index.js
CHANGED
|
@@ -6,7 +6,18 @@ import { handleOwners } from './commands/owners.js';
|
|
|
6
6
|
import { handleRisky } from './commands/risky.js';
|
|
7
7
|
import { handleSetup } from './commands/setup.js';
|
|
8
8
|
import { handleWebSearch } from './commands/web.js';
|
|
9
|
+
import { handleChat } from './commands/chat.js';
|
|
9
10
|
const program = new Command();
|
|
11
|
+
program
|
|
12
|
+
.command('chat')
|
|
13
|
+
.description('Interactive AI chat session with codebase co-pilot (Press Ctrl+C to exit)')
|
|
14
|
+
.option('-w, --web', 'Allow scout to access internet for web search & live web context')
|
|
15
|
+
.option('-l, --lang <language>', 'Language for AI responses (e.g. es, fr, hi, ja, spanish)')
|
|
16
|
+
.option('--native', 'Force native script (Devanagari, Hangul, Tamil script) instead of Romanized terminal script')
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
await handleChat(options);
|
|
19
|
+
outro(chalk.cyan('Chat session ended.'));
|
|
20
|
+
});
|
|
10
21
|
program
|
|
11
22
|
.command('risky')
|
|
12
23
|
.description('Show code fragility map based on churn and hotfixes')
|
|
@@ -20,6 +31,8 @@ program
|
|
|
20
31
|
.alias('web')
|
|
21
32
|
.description('Allow scout to search the internet for live web context, docs, & technical solutions')
|
|
22
33
|
.option('-a, --ask', 'Synthesize an AI answer using live internet search results')
|
|
34
|
+
.option('-l, --lang <language>', 'Language for AI search synthesis (e.g. es, fr, hi, ja, spanish)')
|
|
35
|
+
.option('--native', 'Force native script (Devanagari, Hangul, Tamil script) instead of Romanized terminal script')
|
|
23
36
|
.action(async (query, options) => {
|
|
24
37
|
await handleWebSearch(query, options);
|
|
25
38
|
outro(chalk.cyan('Internet search complete.'));
|
|
@@ -27,10 +40,10 @@ program
|
|
|
27
40
|
program
|
|
28
41
|
.name('ft')
|
|
29
42
|
.description('FrontTerrain — The Onboarding Co-Pilot for New Codebases')
|
|
30
|
-
.version('2.0.
|
|
43
|
+
.version('2.0.5');
|
|
31
44
|
// Header UI on execution
|
|
32
45
|
program.hook('preAction', () => {
|
|
33
|
-
intro(chalk.bgCyan.black(' FrontTerrain CLI (v2.0.
|
|
46
|
+
intro(chalk.bgCyan.black(' FrontTerrain CLI (v2.0.5) '));
|
|
34
47
|
});
|
|
35
48
|
// Command definitions
|
|
36
49
|
program
|
|
@@ -38,6 +51,8 @@ program
|
|
|
38
51
|
.description('Build local understanding map of the repository')
|
|
39
52
|
.option('-a, --ask', 'Interactive Q&A mode after repository initialization')
|
|
40
53
|
.option('-w, --web', 'Allow scout to access internet for web search & live web context')
|
|
54
|
+
.option('-l, --lang <language>', 'Language for AI teardowns, summaries, and Q&A responses (e.g. es, fr, hi, ja, spanish)')
|
|
55
|
+
.option('--native', 'Force native script (Devanagari, Hangul, Tamil script) instead of Romanized terminal script')
|
|
41
56
|
.action(async (repoUrl, options) => {
|
|
42
57
|
await handleInit(repoUrl, options);
|
|
43
58
|
outro(chalk.green('Initialization complete!'));
|
package/bin/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAK5C;AAED,wBAAgB,WAAW,IAAI,WAAW,GAAG,IAAI,CAGhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEvD,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["language.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAyHvD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWxE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAgDhI"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
export const LANGUAGE_SPECS = {
|
|
2
|
+
en: {
|
|
3
|
+
name: 'English',
|
|
4
|
+
romanName: 'English',
|
|
5
|
+
romanInstruction: 'Write in clear, professional technical English.',
|
|
6
|
+
nativeInstruction: 'Write in clear, professional technical English.',
|
|
7
|
+
},
|
|
8
|
+
es: {
|
|
9
|
+
name: 'Spanish',
|
|
10
|
+
romanName: 'Spanish',
|
|
11
|
+
romanInstruction: 'Write in clear Spanish using standard technical terms.',
|
|
12
|
+
nativeInstruction: 'Write in clear Spanish using standard technical terms.',
|
|
13
|
+
},
|
|
14
|
+
fr: {
|
|
15
|
+
name: 'French',
|
|
16
|
+
romanName: 'French',
|
|
17
|
+
romanInstruction: 'Write in clear French using standard technical terms.',
|
|
18
|
+
nativeInstruction: 'Write in clear French using standard technical terms.',
|
|
19
|
+
},
|
|
20
|
+
de: {
|
|
21
|
+
name: 'German',
|
|
22
|
+
romanName: 'German',
|
|
23
|
+
romanInstruction: 'Write in clear German using standard technical terms.',
|
|
24
|
+
nativeInstruction: 'Write in clear German using standard technical terms.',
|
|
25
|
+
},
|
|
26
|
+
hi: {
|
|
27
|
+
name: 'Hindi',
|
|
28
|
+
romanName: 'Hinglish (Romanized Hindi)',
|
|
29
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Hindi (Hinglish) using Latin script and English tech terms (e.g. "Yeh project ek onboarding co-pilot hai jo new codebase ko comprehend karne mein help karta hai..."). DO NOT use Devanagari script so CLI terminal fonts render 100% cleanly without broken characters or box borders.',
|
|
30
|
+
nativeInstruction: 'Write in full, natural, professional Hindi sentences using native Devanagari script with English tech terms. Do NOT output comma-separated keyword lists.',
|
|
31
|
+
},
|
|
32
|
+
ta: {
|
|
33
|
+
name: 'Tamil',
|
|
34
|
+
romanName: 'Tanglish (Romanized Tamil)',
|
|
35
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Tamil (Tanglish) using Latin script and English tech terms (e.g. "Indha project pudhiya codebase-ai purindhu kolla udhavum oru onboarding co-pilot aagum..."). DO NOT use Tamil script so CLI terminal fonts render 100% cleanly without broken characters or box borders.',
|
|
36
|
+
nativeInstruction: 'Write in full, natural, professional Tamil sentences using native Tamil script with English tech terms. Do NOT output comma-separated keyword lists.',
|
|
37
|
+
},
|
|
38
|
+
ko: {
|
|
39
|
+
name: 'Korean',
|
|
40
|
+
romanName: 'Romanized Korean',
|
|
41
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Korean using Latin script and English tech terms (e.g. "I project neun codebase onboarding eul wihan co-pilot system ipnida..."). DO NOT use raw Hangul script so CLI terminal fonts render 100% cleanly without broken characters or missing glyphs.',
|
|
42
|
+
nativeInstruction: 'Write in full, natural, professional Korean sentences using native Hangul script with English tech terms. Do NOT output comma-separated keyword lists or isolated commas.',
|
|
43
|
+
},
|
|
44
|
+
ja: {
|
|
45
|
+
name: 'Japanese',
|
|
46
|
+
romanName: 'Romaji (Romanized Japanese)',
|
|
47
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romaji (Latin script Japanese) with English tech terms (e.g. "Kono project wa codebase no onboarding wo shien suru co-pilot desu..."). DO NOT use Kanji or Kana script so CLI terminal fonts render 100% cleanly.',
|
|
48
|
+
nativeInstruction: 'Write in full, natural, professional Japanese sentences using native Kanji/Kana script with English tech terms. Do NOT output comma-separated keyword lists.',
|
|
49
|
+
},
|
|
50
|
+
zh: {
|
|
51
|
+
name: 'Chinese',
|
|
52
|
+
romanName: 'Pinyin (Romanized Chinese)',
|
|
53
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Pinyin (Romanized Chinese) with English tech terms. DO NOT use Hanzi characters so CLI terminal fonts render 100% cleanly.',
|
|
54
|
+
nativeInstruction: 'Write in full, natural, professional Chinese sentences using native Hanzi script with English tech terms. Do NOT output comma-separated keyword lists.',
|
|
55
|
+
},
|
|
56
|
+
te: {
|
|
57
|
+
name: 'Telugu',
|
|
58
|
+
romanName: 'Romanized Telugu',
|
|
59
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Telugu using Latin script and English tech terms. DO NOT use Telugu script so CLI terminal fonts render 100% cleanly.',
|
|
60
|
+
nativeInstruction: 'Write in Telugu using native Telugu script with English tech terms.',
|
|
61
|
+
},
|
|
62
|
+
bn: {
|
|
63
|
+
name: 'Bengali',
|
|
64
|
+
romanName: 'Romanized Bengali',
|
|
65
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Bengali using Latin script and English tech terms. DO NOT use Bengali script so CLI terminal fonts render 100% cleanly.',
|
|
66
|
+
nativeInstruction: 'Write in Bengali using native Bengali script with English tech terms.',
|
|
67
|
+
},
|
|
68
|
+
mr: {
|
|
69
|
+
name: 'Marathi',
|
|
70
|
+
romanName: 'Romanized Marathi',
|
|
71
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Marathi using Latin script and English tech terms. DO NOT use Devanagari script so CLI terminal fonts render 100% cleanly.',
|
|
72
|
+
nativeInstruction: 'Write in Marathi using native Devanagari script with English tech terms.',
|
|
73
|
+
},
|
|
74
|
+
gu: {
|
|
75
|
+
name: 'Gujarati',
|
|
76
|
+
romanName: 'Romanized Gujarati',
|
|
77
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Gujarati using Latin script and English tech terms. DO NOT use Gujarati script so CLI terminal fonts render 100% cleanly.',
|
|
78
|
+
nativeInstruction: 'Write in Gujarati using native Gujarati script.',
|
|
79
|
+
},
|
|
80
|
+
kn: {
|
|
81
|
+
name: 'Kannada',
|
|
82
|
+
romanName: 'Romanized Kannada',
|
|
83
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Kannada using Latin script and English tech terms. DO NOT use Kannada script so CLI terminal fonts render 100% cleanly.',
|
|
84
|
+
nativeInstruction: 'Write in Kannada using native Kannada script.',
|
|
85
|
+
},
|
|
86
|
+
ml: {
|
|
87
|
+
name: 'Malayalam',
|
|
88
|
+
romanName: 'Romanized Malayalam',
|
|
89
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Malayalam using Latin script and English tech terms. DO NOT use Malayalam script so CLI terminal fonts render 100% cleanly.',
|
|
90
|
+
nativeInstruction: 'Write in Malayalam using native Malayalam script.',
|
|
91
|
+
},
|
|
92
|
+
pa: {
|
|
93
|
+
name: 'Punjabi',
|
|
94
|
+
romanName: 'Romanized Punjabi',
|
|
95
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Punjabi using Latin script and English tech terms. DO NOT use Gurmukhi script so CLI terminal fonts render 100% cleanly.',
|
|
96
|
+
nativeInstruction: 'Write in Punjabi using native Gurmukhi script.',
|
|
97
|
+
},
|
|
98
|
+
ru: {
|
|
99
|
+
name: 'Russian',
|
|
100
|
+
romanName: 'Russian',
|
|
101
|
+
romanInstruction: 'Write in clear Russian with English tech terms.',
|
|
102
|
+
nativeInstruction: 'Write in Russian using Cyrillic script.',
|
|
103
|
+
},
|
|
104
|
+
pt: {
|
|
105
|
+
name: 'Portuguese',
|
|
106
|
+
romanName: 'Portuguese',
|
|
107
|
+
romanInstruction: 'Write in clear Portuguese with English tech terms.',
|
|
108
|
+
nativeInstruction: 'Write in clear Portuguese with English tech terms.',
|
|
109
|
+
},
|
|
110
|
+
it: {
|
|
111
|
+
name: 'Italian',
|
|
112
|
+
romanName: 'Italian',
|
|
113
|
+
romanInstruction: 'Write in clear Italian with English tech terms.',
|
|
114
|
+
nativeInstruction: 'Write in clear Italian with English tech terms.',
|
|
115
|
+
},
|
|
116
|
+
ar: {
|
|
117
|
+
name: 'Arabic',
|
|
118
|
+
romanName: 'Arabizi (Romanized Arabic)',
|
|
119
|
+
romanInstruction: 'CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write completely in Romanized Arabic (Arabizi / Latin script) with English tech terms. DO NOT use Arabic script so CLI terminal fonts render 100% cleanly.',
|
|
120
|
+
nativeInstruction: 'Write in Arabic using native Arabic script.',
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
export function normalizeLanguage(langInput) {
|
|
124
|
+
if (!langInput || !langInput.trim())
|
|
125
|
+
return undefined;
|
|
126
|
+
const cleaned = langInput.trim().toLowerCase();
|
|
127
|
+
if (cleaned === 'hinglish')
|
|
128
|
+
return 'Hinglish';
|
|
129
|
+
if (cleaned === 'tanglish')
|
|
130
|
+
return 'Tanglish';
|
|
131
|
+
const spec = LANGUAGE_SPECS[cleaned];
|
|
132
|
+
if (spec)
|
|
133
|
+
return spec.name;
|
|
134
|
+
return cleaned.charAt(0).toUpperCase() + cleaned.slice(1);
|
|
135
|
+
}
|
|
136
|
+
export function getLanguageInstruction(langInput, native = false) {
|
|
137
|
+
if (!langInput || !langInput.trim()) {
|
|
138
|
+
return {
|
|
139
|
+
displayName: 'English',
|
|
140
|
+
instruction: 'Write in clear, professional technical English.',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const cleaned = langInput.trim().toLowerCase();
|
|
144
|
+
if (cleaned === 'hinglish') {
|
|
145
|
+
return {
|
|
146
|
+
displayName: 'Hinglish (Romanized Hindi)',
|
|
147
|
+
instruction: LANGUAGE_SPECS.hi.romanInstruction,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (cleaned === 'tanglish') {
|
|
151
|
+
return {
|
|
152
|
+
displayName: 'Tanglish (Romanized Tamil)',
|
|
153
|
+
instruction: LANGUAGE_SPECS.ta.romanInstruction,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const spec = LANGUAGE_SPECS[cleaned];
|
|
157
|
+
if (spec) {
|
|
158
|
+
if (native) {
|
|
159
|
+
return {
|
|
160
|
+
displayName: `${spec.name} (Native Script)`,
|
|
161
|
+
instruction: spec.nativeInstruction,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
displayName: spec.romanName,
|
|
166
|
+
instruction: spec.romanInstruction,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const capName = cleaned.charAt(0).toUpperCase() + cleaned.slice(1);
|
|
170
|
+
if (native) {
|
|
171
|
+
return {
|
|
172
|
+
displayName: `${capName} (Native Script)`,
|
|
173
|
+
instruction: `Write in ${capName} using native script with English technical terms.`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
displayName: `${capName} (Romanized)`,
|
|
178
|
+
instruction: `CRITICAL ACCESSIBILITY & TERMINAL FONT RULE: Write in ${capName} using Romanized / Latin script and standard English technical terms so CLI terminal fonts render 100% cleanly without broken characters or box borders.`,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["language.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["markdown.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAwBpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+IvD"}
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["markdown.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAwBpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+IvD;AAID;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,QAqBvD"}
|
|
@@ -39,8 +39,8 @@ export function formatInlineMarkdown(text) {
|
|
|
39
39
|
output = output.replace(/(\*\*\*|___)(.*?)\1/g, (_, __, content) => chalk.bold.italic.yellowBright(content));
|
|
40
40
|
// Bold: **text** or __text__ -> bright yellow/white bold contrast
|
|
41
41
|
output = output.replace(/(\*\*|__)(.*?)\1/g, (_, __, content) => chalk.bold.yellowBright(content));
|
|
42
|
-
// Italic: *text* or _text_
|
|
43
|
-
output = output.replace(/(
|
|
42
|
+
// Italic: *text* or _text_
|
|
43
|
+
output = output.replace(/(^|\s)(\*|_)([^*_]+)\2(?=\s|$|[.,!?])/g, (_, space, __, content) => `${space}${chalk.italic.cyan(content)}`);
|
|
44
44
|
// Links: [text](url)
|
|
45
45
|
output = output.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_, label, url) => `${chalk.cyan.underline(label)} ${chalk.dim(`(${url})`)}`);
|
|
46
46
|
return output;
|
|
@@ -181,4 +181,35 @@ export function renderMarkdown(markdown) {
|
|
|
181
181
|
}
|
|
182
182
|
return result.join('\n');
|
|
183
183
|
}
|
|
184
|
+
import { note } from '@clack/prompts';
|
|
185
|
+
/**
|
|
186
|
+
* Safely renders CLI note cards. For multi-byte/native script characters (Devanagari, Hangul, Tamil, CJK, etc.)
|
|
187
|
+
* that break fixed-width right box borders and ANSI cursor positioning in @clack/prompts, safeNote renders an
|
|
188
|
+
* uncorrupted open-right CLI card frame.
|
|
189
|
+
*/
|
|
190
|
+
export function safeNote(content, title) {
|
|
191
|
+
if (!content)
|
|
192
|
+
return;
|
|
193
|
+
const containsWideChars = /[^\u0000-\u00FF]/.test(content + (title || ''));
|
|
194
|
+
if (containsWideChars) {
|
|
195
|
+
const lines = content.split('\n');
|
|
196
|
+
console.log();
|
|
197
|
+
if (title) {
|
|
198
|
+
console.log(chalk.cyan.bold('┌ ') + chalk.bgCyan.black.bold(` ${title} `) + chalk.cyan.bold(' ─────────────────────────────'));
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.log(chalk.cyan.bold('┌─────────────────────────────────────────────────────────────'));
|
|
202
|
+
}
|
|
203
|
+
console.log(chalk.cyan.bold('│'));
|
|
204
|
+
for (const line of lines) {
|
|
205
|
+
console.log(chalk.cyan.bold('│ ') + line);
|
|
206
|
+
}
|
|
207
|
+
console.log(chalk.cyan.bold('│'));
|
|
208
|
+
console.log(chalk.cyan.bold('└─────────────────────────────────────────────────────────────'));
|
|
209
|
+
console.log();
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
note(content, title);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
184
215
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAQ,GAAW,EAAE;IAC1D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAElD,kFAAkF;IAClF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,8EAA8E;IAC9E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAChD,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CACrD,CAAC;IAEF,0CAA0C;IAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CACxC,CAAC;IAEF,kEAAkE;IAClE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAC9D,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CACjC,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["markdown.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/email-template.txt
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
Subject: 🚀 Introducing FrontTerrain (ft-scout): Your AI Onboarding Co-Pilot for Codebases
|
|
2
|
-
Preheader: Instant codebase summaries, fragility risk maps, and knowledge owner detection in your terminal.
|
|
3
|
-
|
|
4
|
-
Hey FrontTerrain Developer 👋,
|
|
5
|
-
|
|
6
|
-
Jumping into a massive or legacy codebase can be intimidating. You waste hours deciphering complex file structures, guessing who owns which module, or accidentally editing fragile hotspots.
|
|
7
|
-
|
|
8
|
-
That’s why we built ft-scout (FrontTerrain CLI v2.0.0) — your AI co-pilot designed to give you instant codebase clarity directly inside your terminal!
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
⚡ WHAT YOU CAN DO WITH FT-SCOUT:
|
|
13
|
-
|
|
14
|
-
1. ft init — AI Onboarding Teardown
|
|
15
|
-
Get an instant, high-energy summary of repository architecture, tech stack, and key modules so you can start contributing immediately.
|
|
16
|
-
|
|
17
|
-
2. ft risky — Code Fragility Risk Map
|
|
18
|
-
Analyzes commit churn, hotfixes, and historical regressions to alert you about high-risk hotspots and line ranges before you touch them.
|
|
19
|
-
|
|
20
|
-
3. ft owners <path> — Domain Knowledge Holders
|
|
21
|
-
Identifies true code experts based on real commit frequency and authorship—so you know exactly who to loop into code reviews.
|
|
22
|
-
|
|
23
|
-
4. ft setup — Local Dev Diagnostic
|
|
24
|
-
Automatically scans missing .env keys, node runtime mismatches, and configuration issues before they break your local build.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
🚀 QUICK START GUIDE:
|
|
29
|
-
|
|
30
|
-
1. Install ft-scout globally via npm:
|
|
31
|
-
$ npm install -g ft-scout
|
|
32
|
-
|
|
33
|
-
2. Run inside any Git codebase:
|
|
34
|
-
$ ft init
|
|
35
|
-
|
|
36
|
-
3. Get your risk map:
|
|
37
|
-
$ ft risky
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
🔗 GitHub & Documentation: https://github.com/Front-Terrain/FT-Check#readme
|
|
42
|
-
|
|
43
|
-
Happy Coding! 🚀
|
|
44
|
-
Front Terrain Team
|