khoji 2.1.4
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/README.md +136 -0
- package/dist/ai/GeminiAdapter.d.ts +7 -0
- package/dist/ai/GeminiAdapter.d.ts.map +1 -0
- package/dist/ai/GeminiAdapter.js +40 -0
- package/dist/ai/GeminiAdapter.js.map +1 -0
- package/dist/browser/BrowserManager.d.ts +17 -0
- package/dist/browser/BrowserManager.d.ts.map +1 -0
- package/dist/browser/BrowserManager.js +61 -0
- package/dist/browser/BrowserManager.js.map +1 -0
- package/dist/browser/PageLoader.d.ts +21 -0
- package/dist/browser/PageLoader.d.ts.map +1 -0
- package/dist/browser/PageLoader.js +116 -0
- package/dist/browser/PageLoader.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +98 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/extractors/AnimationExtractor.d.ts +12 -0
- package/dist/extractors/AnimationExtractor.d.ts.map +1 -0
- package/dist/extractors/AnimationExtractor.js +247 -0
- package/dist/extractors/AnimationExtractor.js.map +1 -0
- package/dist/extractors/AssetExtractor.d.ts +11 -0
- package/dist/extractors/AssetExtractor.d.ts.map +1 -0
- package/dist/extractors/AssetExtractor.js +124 -0
- package/dist/extractors/AssetExtractor.js.map +1 -0
- package/dist/extractors/ContentExtractor.d.ts +13 -0
- package/dist/extractors/ContentExtractor.d.ts.map +1 -0
- package/dist/extractors/ContentExtractor.js +60 -0
- package/dist/extractors/ContentExtractor.js.map +1 -0
- package/dist/extractors/DomExtractor.d.ts +11 -0
- package/dist/extractors/DomExtractor.d.ts.map +1 -0
- package/dist/extractors/DomExtractor.js +68 -0
- package/dist/extractors/DomExtractor.js.map +1 -0
- package/dist/extractors/InteractionExtractor.d.ts +10 -0
- package/dist/extractors/InteractionExtractor.d.ts.map +1 -0
- package/dist/extractors/InteractionExtractor.js +64 -0
- package/dist/extractors/InteractionExtractor.js.map +1 -0
- package/dist/extractors/MetaExtractor.d.ts +8 -0
- package/dist/extractors/MetaExtractor.d.ts.map +1 -0
- package/dist/extractors/MetaExtractor.js +33 -0
- package/dist/extractors/MetaExtractor.js.map +1 -0
- package/dist/extractors/StyleExtractor.d.ts +10 -0
- package/dist/extractors/StyleExtractor.d.ts.map +1 -0
- package/dist/extractors/StyleExtractor.js +87 -0
- package/dist/extractors/StyleExtractor.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/output/Writer.d.ts +5 -0
- package/dist/output/Writer.d.ts.map +1 -0
- package/dist/output/Writer.js +13 -0
- package/dist/output/Writer.js.map +1 -0
- package/dist/pipeline/Cleaner.d.ts +12 -0
- package/dist/pipeline/Cleaner.d.ts.map +1 -0
- package/dist/pipeline/Cleaner.js +41 -0
- package/dist/pipeline/Cleaner.js.map +1 -0
- package/dist/pipeline/ComponentDetector.d.ts +8 -0
- package/dist/pipeline/ComponentDetector.d.ts.map +1 -0
- package/dist/pipeline/ComponentDetector.js +43 -0
- package/dist/pipeline/ComponentDetector.js.map +1 -0
- package/dist/pipeline/runner.d.ts +3 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +182 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/prompting/PromptGenerator.d.ts +5 -0
- package/dist/prompting/PromptGenerator.d.ts.map +1 -0
- package/dist/prompting/PromptGenerator.js +30 -0
- package/dist/prompting/PromptGenerator.js.map +1 -0
- package/dist/serializer/JsonSerializer.d.ts +6 -0
- package/dist/serializer/JsonSerializer.d.ts.map +1 -0
- package/dist/serializer/JsonSerializer.js +7 -0
- package/dist/serializer/JsonSerializer.js.map +1 -0
- package/dist/serializer/MarkdownSerializer.d.ts +7 -0
- package/dist/serializer/MarkdownSerializer.d.ts.map +1 -0
- package/dist/serializer/MarkdownSerializer.js +143 -0
- package/dist/serializer/MarkdownSerializer.js.map +1 -0
- package/dist/types/KhojContext.d.ts +141 -0
- package/dist/types/KhojContext.d.ts.map +1 -0
- package/dist/types/KhojContext.js +6 -0
- package/dist/types/KhojContext.js.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +70 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/text.d.ts +2 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +6 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/tokenEstimator.d.ts +10 -0
- package/dist/utils/tokenEstimator.d.ts.map +1 -0
- package/dist/utils/tokenEstimator.js +17 -0
- package/dist/utils/tokenEstimator.js.map +1 -0
- package/khoj-context.schema.json +48 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptGenerator.d.ts","sourceRoot":"","sources":["../../src/prompting/PromptGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAChB,iBAAiB,GACjB,WAAW,GACX,uBAAuB,GACvB,uBAAuB,CAAC;AAE9B,qBAAa,eAAe;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;CAmChD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class PromptGenerator {
|
|
2
|
+
static generate(skills) {
|
|
3
|
+
let prompt = `# Pixel-Perfect Website Clone Task\n\n`;
|
|
4
|
+
prompt += `You are an expert AI developer tasked with cloning a website. Within this folder, you have access to the raw HTML, unified CSS, a full-page screenshot, and a structural JSON context map of the target site. Your objective is to rebuild this website pixel-perfectly.\n\n`;
|
|
5
|
+
if (skills.length > 0) {
|
|
6
|
+
prompt += `## Project Guidelines & Skills\n`;
|
|
7
|
+
prompt += `While cloning, you must adhere strictly to the following guidelines selected for this project:\n\n`;
|
|
8
|
+
if (skills.includes('frontend-design')) {
|
|
9
|
+
prompt += `### ✦ Frontend Design Excellence\n`;
|
|
10
|
+
prompt += `Ensure the UI design completely avoids generic AI aesthetics. Prioritize distinctive typography (do not default to standard system fonts), maintain cohesive and intentional spacing, and commit to a bold creative direction for the interface. Every detail should feel meticulously human-crafted.\n\n`;
|
|
11
|
+
}
|
|
12
|
+
if (skills.includes('seo-audit')) {
|
|
13
|
+
prompt += `### ✦ SEO Best Practices\n`;
|
|
14
|
+
prompt += `Implement strong on-page technical SEO. Use correct HTML5 semantic tags, maintain a strict and logical heading hierarchy (with exactly one H1), ensure all images have descriptive \`alt\` attributes, and structure the DOM for maximum accessibility and immediate indexability.\n\n`;
|
|
15
|
+
}
|
|
16
|
+
if (skills.includes('web-design-guidelines')) {
|
|
17
|
+
prompt += `### ✦ Strict Web Design Guidelines\n`;
|
|
18
|
+
prompt += `Follow rigorous modern web interface guidelines. Ensure high color contrast ratios, provide reliable and visible focus states for all interactive elements, ensure flawlessly responsive viewport handling across mobile and desktop, and adhere to robust accessibility standards.\n\n`;
|
|
19
|
+
}
|
|
20
|
+
if (skills.includes('award-winning-website')) {
|
|
21
|
+
prompt += `### ✦ Award-Winning Experience\n`;
|
|
22
|
+
prompt += `Elevate this site into a premium, award-winning experience. Where appropriate, integrate scroll-triggered UI reveals, modern 3D or parallax geometric effects, and smooth high-end micro-interactions using robust animation patterns (e.g., GSAP, Framer Motion, or advanced CSS transitions).\n\n`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
prompt += `## Deliverables\n`;
|
|
26
|
+
prompt += `Please provide the functional code necessary to recreate this interface, ensuring the aforementioned guidelines define the final aesthetic and structural quality of the work.`;
|
|
27
|
+
return prompt;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=PromptGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptGenerator.js","sourceRoot":"","sources":["../../src/prompting/PromptGenerator.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,eAAe;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAoB;QAChC,IAAI,MAAM,GAAG,wCAAwC,CAAC;QAEtD,MAAM,IAAI,8QAA8Q,CAAC;QAEzR,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,kCAAkC,CAAC;YAC7C,MAAM,IAAI,oGAAoG,CAAC;YAE/G,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,oCAAoC,CAAC;gBAC/C,MAAM,IAAI,2SAA2S,CAAC;YAC1T,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,4BAA4B,CAAC;gBACvC,MAAM,IAAI,wRAAwR,CAAC;YACvS,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,sCAAsC,CAAC;gBACjD,MAAM,IAAI,yRAAyR,CAAC;YACxS,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,kCAAkC,CAAC;gBAC7C,MAAM,IAAI,qSAAqS,CAAC;YACpT,CAAC;QACL,CAAC;QAED,MAAM,IAAI,mBAAmB,CAAC;QAC9B,MAAM,IAAI,gLAAgL,CAAC;QAE3L,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSerializer.d.ts","sourceRoot":"","sources":["../../src/serializer/JsonSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../../src/serializer/JsonSerializer.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { KhojContext } from '../types/KhojContext.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a KhojContext into a markdown document optimised for LLM readability.
|
|
4
|
+
* Sections are ordered from most to least relevant for AI agents.
|
|
5
|
+
*/
|
|
6
|
+
export declare function serializeMarkdown(ctx: KhojContext): string;
|
|
7
|
+
//# sourceMappingURL=MarkdownSerializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownSerializer.d.ts","sourceRoot":"","sources":["../../src/serializer/MarkdownSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAsG,MAAM,yBAAyB,CAAC;AAE/J;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAuJ1D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializes a KhojContext into a markdown document optimised for LLM readability.
|
|
3
|
+
* Sections are ordered from most to least relevant for AI agents.
|
|
4
|
+
*/
|
|
5
|
+
export function serializeMarkdown(ctx) {
|
|
6
|
+
const lines = [];
|
|
7
|
+
lines.push(`# Khoj Context — ${ctx.meta.title || ctx.url}`);
|
|
8
|
+
lines.push(`> Extracted: ${ctx.extractedAt} | Schema: ${ctx.schemaVersion} | \~${ctx.tokenEstimate.toLocaleString()} tokens\n`);
|
|
9
|
+
// ── Meta ──────────────────────────────────────────────────────────────────
|
|
10
|
+
lines.push('## Meta');
|
|
11
|
+
lines.push(`- **URL**: ${ctx.url}`);
|
|
12
|
+
if (ctx.finalUrl !== ctx.url)
|
|
13
|
+
lines.push(`- **Final URL** (after redirect): ${ctx.finalUrl}`);
|
|
14
|
+
lines.push(`- **Title**: ${ctx.meta.title}`);
|
|
15
|
+
lines.push(`- **Description**: ${ctx.meta.description}`);
|
|
16
|
+
if (ctx.meta.ogImage)
|
|
17
|
+
lines.push(`- **OG Image**: ${ctx.meta.ogImage}`);
|
|
18
|
+
if (ctx.meta.canonical)
|
|
19
|
+
lines.push(`- **Canonical**: ${ctx.meta.canonical}`);
|
|
20
|
+
if (ctx.meta.themeColor)
|
|
21
|
+
lines.push(`- **Theme Color**: ${ctx.meta.themeColor}`);
|
|
22
|
+
lines.push('');
|
|
23
|
+
// ── Design Tokens ─────────────────────────────────────────────────────────
|
|
24
|
+
lines.push('## Design Tokens');
|
|
25
|
+
if (Object.keys(ctx.designTokens.colors).length > 0) {
|
|
26
|
+
lines.push('\n### Colors');
|
|
27
|
+
for (const [k, v] of Object.entries(ctx.designTokens.colors)) {
|
|
28
|
+
lines.push(`- \`${k}\`: ${v}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (Object.keys(ctx.designTokens.spacing).length > 0) {
|
|
32
|
+
lines.push('\n### Spacing');
|
|
33
|
+
for (const [k, v] of Object.entries(ctx.designTokens.spacing)) {
|
|
34
|
+
lines.push(`- \`${k}\`: ${v}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (ctx.designTokens.fonts.length > 0) {
|
|
38
|
+
lines.push(`\n### Fonts\n${ctx.designTokens.fonts.map((f) => `- ${f}`).join('\n')}`);
|
|
39
|
+
}
|
|
40
|
+
if (ctx.designTokens.breakpoints.length > 0) {
|
|
41
|
+
lines.push(`\n### Breakpoints\n${ctx.designTokens.breakpoints.map((b) => `- ${b}`).join('\n')}`);
|
|
42
|
+
}
|
|
43
|
+
lines.push('');
|
|
44
|
+
// ── Content ───────────────────────────────────────────────────────────────
|
|
45
|
+
lines.push('## Content');
|
|
46
|
+
const headings = ctx.content.filter((c) => c.type === 'heading');
|
|
47
|
+
const buttons = ctx.content.filter((c) => c.type === 'button');
|
|
48
|
+
const paragraphs = ctx.content.filter((c) => c.type === 'paragraph').slice(0, 10);
|
|
49
|
+
if (headings.length > 0) {
|
|
50
|
+
lines.push('\n### Headings');
|
|
51
|
+
headings.forEach((h) => lines.push(`${'#'.repeat(h.level ?? 1)} ${h.text}`));
|
|
52
|
+
}
|
|
53
|
+
if (buttons.length > 0) {
|
|
54
|
+
lines.push('\n### CTAs / Buttons');
|
|
55
|
+
buttons.forEach((b) => lines.push(`- ${b.text}`));
|
|
56
|
+
}
|
|
57
|
+
if (paragraphs.length > 0) {
|
|
58
|
+
lines.push('\n### Text Blocks (sample)');
|
|
59
|
+
paragraphs.forEach((p) => lines.push(`> ${p.text}`));
|
|
60
|
+
}
|
|
61
|
+
lines.push('');
|
|
62
|
+
// ── Assets ────────────────────────────────────────────────────────────────
|
|
63
|
+
lines.push('## Assets');
|
|
64
|
+
lines.push(`- **Images**: ${ctx.assets.images.length}`);
|
|
65
|
+
lines.push(`- **GIFs**: ${ctx.assets.gifs.length}`);
|
|
66
|
+
lines.push(`- **Fonts**: ${ctx.assets.fonts.length}`);
|
|
67
|
+
lines.push(`- **Icons**: ${ctx.assets.icons.length}`);
|
|
68
|
+
if (ctx.assets.images.length > 0) {
|
|
69
|
+
lines.push('\n### Images');
|
|
70
|
+
lines.push('| URL | Alt | Size | Lazy |');
|
|
71
|
+
lines.push('|-----|-----|------|------|');
|
|
72
|
+
ctx.assets.images.slice(0, 20).forEach((img) => {
|
|
73
|
+
const size = img.width && img.height ? `${img.width}×${img.height}` : '–';
|
|
74
|
+
lines.push(`| ${img.url.slice(0, 60)} | ${img.alt || '–'} | ${size} | ${img.isLazy ? 'yes' : 'no'} |`);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (ctx.assets.gifs.length > 0) {
|
|
78
|
+
lines.push('\n### GIFs');
|
|
79
|
+
lines.push('| URL | Alt | Selector |');
|
|
80
|
+
lines.push('|-----|-----|----------|');
|
|
81
|
+
ctx.assets.gifs.forEach((g) => {
|
|
82
|
+
lines.push(`| ${g.url.slice(0, 60)} | ${g.alt || '–'} | \`${g.selector}\` |`);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
lines.push('');
|
|
86
|
+
// ── Animations ────────────────────────────────────────────────────────────
|
|
87
|
+
lines.push('## Animations');
|
|
88
|
+
lines.push(`> ${ctx.animations.summary}`);
|
|
89
|
+
if (ctx.animations.cssAnimations.length > 0) {
|
|
90
|
+
lines.push('\n### CSS Animations');
|
|
91
|
+
ctx.animations.cssAnimations.slice(0, 15).forEach((a) => {
|
|
92
|
+
lines.push(`- **${a.name}** on \`${a.selector.slice(0, 60)}\`: ${a.description} *(${a.duration}, ${a.trigger})*`);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (ctx.animations.cssTransitions.length > 0) {
|
|
96
|
+
lines.push('\n### CSS Transitions');
|
|
97
|
+
ctx.animations.cssTransitions.slice(0, 10).forEach((t) => {
|
|
98
|
+
lines.push(`- \`${t.selector.slice(0, 60)}\`: ${t.description}`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (ctx.animations.jsAnimations.length > 0) {
|
|
102
|
+
lines.push('\n### JS Animations');
|
|
103
|
+
ctx.animations.jsAnimations.forEach((j) => {
|
|
104
|
+
lines.push(`- **${j.library}**: ${j.description} *(${j.trigger})*`);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (ctx.animations.scrollAnimations.length > 0) {
|
|
108
|
+
lines.push('\n### Scroll Animations');
|
|
109
|
+
ctx.animations.scrollAnimations.slice(0, 10).forEach((s) => {
|
|
110
|
+
lines.push(`- \`${s.selector}\` — ${s.animationType} (${s.library})`);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (ctx.animations.gifAnimations.length > 0) {
|
|
114
|
+
lines.push('\n### GIF Animations');
|
|
115
|
+
ctx.animations.gifAnimations.forEach((g) => {
|
|
116
|
+
lines.push(`- **${g.purpose}**: ${g.alt || g.url.split('/').pop()} (\`${g.selector}\`)`);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
lines.push('');
|
|
120
|
+
// ── Interactions ──────────────────────────────────────────────────────────
|
|
121
|
+
if (ctx.interactions.length > 0) {
|
|
122
|
+
lines.push('## Interactions');
|
|
123
|
+
ctx.interactions.forEach((i) => {
|
|
124
|
+
lines.push(`\n### ${i.label} (${i.type})`);
|
|
125
|
+
lines.push(`- Selector: \`${i.selector}\``);
|
|
126
|
+
if (i.fields && i.fields.length > 0) {
|
|
127
|
+
lines.push('- Fields:');
|
|
128
|
+
i.fields.forEach((f) => lines.push(` - ${f.name} (${f.inputType})${f.required ? ' *required*' : ''}${f.placeholder ? ` — "${f.placeholder}"` : ''}`));
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
lines.push('');
|
|
132
|
+
}
|
|
133
|
+
// ── Components ────────────────────────────────────────────────────────────
|
|
134
|
+
if (ctx.components.length > 0) {
|
|
135
|
+
lines.push('## Detected Components');
|
|
136
|
+
ctx.components.forEach((c) => {
|
|
137
|
+
lines.push(`- **${c.name}** (\`${c.pattern}\`): ${c.count} instances`);
|
|
138
|
+
});
|
|
139
|
+
lines.push('');
|
|
140
|
+
}
|
|
141
|
+
return lines.join('\n');
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=MarkdownSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownSerializer.js","sourceRoot":"","sources":["../../src/serializer/MarkdownSerializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export interface KhojContext {
|
|
2
|
+
schemaVersion: '1.0';
|
|
3
|
+
url: string;
|
|
4
|
+
finalUrl: string;
|
|
5
|
+
extractedAt: string;
|
|
6
|
+
loadTimeMs: number;
|
|
7
|
+
tokenEstimate: number;
|
|
8
|
+
meta: PageMeta;
|
|
9
|
+
structure: DomNode[];
|
|
10
|
+
designTokens: DesignTokens;
|
|
11
|
+
components: DetectedComponent[];
|
|
12
|
+
assets: AssetMap;
|
|
13
|
+
content: ContentBlock[];
|
|
14
|
+
interactions: Interaction[];
|
|
15
|
+
animations: AnimationMap;
|
|
16
|
+
}
|
|
17
|
+
export interface PageMeta {
|
|
18
|
+
title: string;
|
|
19
|
+
description: string;
|
|
20
|
+
ogImage: string | null;
|
|
21
|
+
canonical: string | null;
|
|
22
|
+
themeColor: string | null;
|
|
23
|
+
jsonLd: unknown[];
|
|
24
|
+
}
|
|
25
|
+
export interface DomNode {
|
|
26
|
+
tag: string;
|
|
27
|
+
id?: string;
|
|
28
|
+
classes: string[];
|
|
29
|
+
role?: string;
|
|
30
|
+
text?: string;
|
|
31
|
+
children?: DomNode[];
|
|
32
|
+
}
|
|
33
|
+
export interface DesignTokens {
|
|
34
|
+
colors: Record<string, string>;
|
|
35
|
+
spacing: Record<string, string>;
|
|
36
|
+
typography: Record<string, string>;
|
|
37
|
+
fonts: string[];
|
|
38
|
+
breakpoints: string[];
|
|
39
|
+
}
|
|
40
|
+
export interface DetectedComponent {
|
|
41
|
+
name: string;
|
|
42
|
+
pattern: string;
|
|
43
|
+
count: number;
|
|
44
|
+
sampleHTML: string;
|
|
45
|
+
}
|
|
46
|
+
export interface AssetMap {
|
|
47
|
+
images: ImageAsset[];
|
|
48
|
+
gifs: ImageAsset[];
|
|
49
|
+
fonts: string[];
|
|
50
|
+
icons: string[];
|
|
51
|
+
scripts: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface ImageAsset {
|
|
54
|
+
url: string;
|
|
55
|
+
alt: string;
|
|
56
|
+
type: 'image' | 'gif';
|
|
57
|
+
width: number | null;
|
|
58
|
+
height: number | null;
|
|
59
|
+
isLazy: boolean;
|
|
60
|
+
selector: string;
|
|
61
|
+
}
|
|
62
|
+
export type ContentType = 'heading' | 'paragraph' | 'button' | 'link' | 'label';
|
|
63
|
+
export interface ContentBlock {
|
|
64
|
+
type: ContentType;
|
|
65
|
+
text: string;
|
|
66
|
+
level?: number;
|
|
67
|
+
href?: string;
|
|
68
|
+
}
|
|
69
|
+
export type InteractionType = 'form' | 'nav' | 'button';
|
|
70
|
+
export interface Interaction {
|
|
71
|
+
type: InteractionType;
|
|
72
|
+
selector: string;
|
|
73
|
+
label: string;
|
|
74
|
+
fields?: FormField[];
|
|
75
|
+
}
|
|
76
|
+
export interface FormField {
|
|
77
|
+
inputType: string;
|
|
78
|
+
name: string;
|
|
79
|
+
placeholder: string;
|
|
80
|
+
required: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface AnimationMap {
|
|
83
|
+
cssAnimations: CSSAnimation[];
|
|
84
|
+
cssTransitions: CSSTransition[];
|
|
85
|
+
jsAnimations: JSAnimation[];
|
|
86
|
+
scrollAnimations: ScrollAnimation[];
|
|
87
|
+
gifAnimations: GifAnimation[];
|
|
88
|
+
summary: string;
|
|
89
|
+
}
|
|
90
|
+
export interface CSSAnimation {
|
|
91
|
+
name: string;
|
|
92
|
+
selector: string;
|
|
93
|
+
duration: string;
|
|
94
|
+
timingFunction: string;
|
|
95
|
+
iterationCount: string;
|
|
96
|
+
delay: string;
|
|
97
|
+
trigger: 'page-load' | 'hover' | 'focus' | 'unknown';
|
|
98
|
+
description: string;
|
|
99
|
+
}
|
|
100
|
+
export interface CSSTransition {
|
|
101
|
+
selector: string;
|
|
102
|
+
properties: string[];
|
|
103
|
+
duration: string;
|
|
104
|
+
timingFunction: string;
|
|
105
|
+
trigger: 'hover' | 'focus' | 'active' | 'unknown';
|
|
106
|
+
description: string;
|
|
107
|
+
}
|
|
108
|
+
export type JSAnimationLibrary = 'gsap' | 'framer-motion' | 'animejs' | 'web-animations-api' | 'lottie' | 'auto' | 'unknown';
|
|
109
|
+
export interface JSAnimation {
|
|
110
|
+
library: JSAnimationLibrary;
|
|
111
|
+
selector: string;
|
|
112
|
+
description: string;
|
|
113
|
+
trigger: 'page-load' | 'scroll' | 'click' | 'hover' | 'unknown';
|
|
114
|
+
}
|
|
115
|
+
export type ScrollAnimationLibrary = 'aos' | 'intersection-observer' | 'gsap-scrolltrigger' | 'unknown';
|
|
116
|
+
export interface ScrollAnimation {
|
|
117
|
+
selector: string;
|
|
118
|
+
library: ScrollAnimationLibrary;
|
|
119
|
+
animationType: string;
|
|
120
|
+
description: string;
|
|
121
|
+
}
|
|
122
|
+
export type GifAnimationPurpose = 'loading-spinner' | 'product-demo' | 'decorative' | 'tutorial' | 'unknown';
|
|
123
|
+
export interface GifAnimation {
|
|
124
|
+
url: string;
|
|
125
|
+
selector: string;
|
|
126
|
+
alt: string;
|
|
127
|
+
purpose: GifAnimationPurpose;
|
|
128
|
+
}
|
|
129
|
+
export interface ExtractionOptions {
|
|
130
|
+
url: string;
|
|
131
|
+
outputDir: string;
|
|
132
|
+
format: 'json' | 'markdown' | 'both';
|
|
133
|
+
timeout: number;
|
|
134
|
+
fast: boolean;
|
|
135
|
+
clone?: boolean;
|
|
136
|
+
cloneSkills?: string[];
|
|
137
|
+
sendToGemini?: boolean;
|
|
138
|
+
prompt?: string;
|
|
139
|
+
clickSelector?: string;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=KhojContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KhojContext.d.ts","sourceRoot":"","sources":["../../src/types/KhojContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// ─── KhojContext ────────────────────────────────────────────────────────────
|
|
2
|
+
// Master TypeScript interface for the khoj-context.json output.
|
|
3
|
+
// This is the source of truth — all extractors must conform to these types.
|
|
4
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=KhojContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KhojContext.js","sourceRoot":"","sources":["../../src/types/KhojContext.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gEAAgE;AAChE,4EAA4E;AAC5E,gFAAgF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Ora } from 'ora';
|
|
2
|
+
export declare const logger: {
|
|
3
|
+
info(msg: string): void;
|
|
4
|
+
success(msg: string): void;
|
|
5
|
+
warn(msg: string): void;
|
|
6
|
+
error(msg: string, err?: unknown): void;
|
|
7
|
+
step(emoji: string, msg: string): void;
|
|
8
|
+
dim(msg: string): void;
|
|
9
|
+
stat(label: string, value: string): void;
|
|
10
|
+
divider(): void;
|
|
11
|
+
spinner(msg: string): Ora;
|
|
12
|
+
stopSpinner(success?: boolean, msg?: string): void;
|
|
13
|
+
banner(): void;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAIpC,eAAO,MAAM,MAAM;cACP,MAAM,GAAG,IAAI;iBAKV,MAAM,GAAG,IAAI;cAKhB,MAAM,GAAG,IAAI;eAKZ,MAAM,QAAQ,OAAO,GAAG,IAAI;gBAQ3B,MAAM,OAAO,MAAM,GAAG,IAAI;aAK7B,MAAM,GAAG,IAAI;gBAIV,MAAM,SAAS,MAAM,GAAG,IAAI;eAI7B,IAAI;iBAIF,MAAM,GAAG,GAAG;yCAKS,MAAM,GAAG,IAAI;cAUrC,IAAI;CAYf,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
let _spinner = null;
|
|
4
|
+
export const logger = {
|
|
5
|
+
info(msg) {
|
|
6
|
+
if (_spinner)
|
|
7
|
+
_spinner.stop();
|
|
8
|
+
console.log(chalk.blue(`ℹ ${msg}`));
|
|
9
|
+
},
|
|
10
|
+
success(msg) {
|
|
11
|
+
if (_spinner)
|
|
12
|
+
_spinner.stop();
|
|
13
|
+
console.log(chalk.green(`✔ ${msg}`));
|
|
14
|
+
},
|
|
15
|
+
warn(msg) {
|
|
16
|
+
if (_spinner)
|
|
17
|
+
_spinner.stop();
|
|
18
|
+
console.warn(chalk.yellow(`⚠ ${msg}`));
|
|
19
|
+
},
|
|
20
|
+
error(msg, err) {
|
|
21
|
+
if (_spinner)
|
|
22
|
+
_spinner.stop();
|
|
23
|
+
console.error(chalk.red(`✖ ${msg}`));
|
|
24
|
+
if (err instanceof Error) {
|
|
25
|
+
console.error(chalk.dim(` ${err.message}`));
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
step(emoji, msg) {
|
|
29
|
+
if (_spinner)
|
|
30
|
+
_spinner.stop();
|
|
31
|
+
console.log(`${emoji} ${chalk.bold(msg)}`);
|
|
32
|
+
},
|
|
33
|
+
dim(msg) {
|
|
34
|
+
console.log(chalk.dim(` ${msg}`));
|
|
35
|
+
},
|
|
36
|
+
stat(label, value) {
|
|
37
|
+
console.log(` ${chalk.cyan(label.padEnd(20))} ${chalk.white(value)}`);
|
|
38
|
+
},
|
|
39
|
+
divider() {
|
|
40
|
+
console.log(chalk.dim('─'.repeat(60)));
|
|
41
|
+
},
|
|
42
|
+
spinner(msg) {
|
|
43
|
+
_spinner = ora({ text: msg, color: 'cyan' }).start();
|
|
44
|
+
return _spinner;
|
|
45
|
+
},
|
|
46
|
+
stopSpinner(success = true, msg) {
|
|
47
|
+
if (!_spinner)
|
|
48
|
+
return;
|
|
49
|
+
if (success) {
|
|
50
|
+
_spinner.succeed(msg);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
_spinner.fail(msg);
|
|
54
|
+
}
|
|
55
|
+
_spinner = null;
|
|
56
|
+
},
|
|
57
|
+
banner() {
|
|
58
|
+
console.log('');
|
|
59
|
+
console.log(chalk.bold.cyan(' ██╗ ██╗██╗ ██╗ ██████╗ ██╗'));
|
|
60
|
+
console.log(chalk.bold.cyan(' ██║ ██╔╝██║ ██║██╔═══██╗ ██║'));
|
|
61
|
+
console.log(chalk.bold.cyan(' █████╔╝ ███████║██║ ██║ ██║'));
|
|
62
|
+
console.log(chalk.bold.cyan(' ██╔═██╗ ██╔══██║██║ ██║██ ██║'));
|
|
63
|
+
console.log(chalk.bold.cyan(' ██║ ██╗██║ ██║╚██████╔╝╚█████╔╝'));
|
|
64
|
+
console.log(chalk.bold.cyan(' ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚════╝'));
|
|
65
|
+
console.log('');
|
|
66
|
+
console.log(chalk.dim(' Website context packager for AI agents'));
|
|
67
|
+
console.log('');
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estimates the number of LLM tokens in a string.
|
|
3
|
+
* Uses the standard approximation: ~4 characters per token.
|
|
4
|
+
*/
|
|
5
|
+
export declare function estimateTokens(text: string): number;
|
|
6
|
+
/**
|
|
7
|
+
* Returns a human-readable comparison between raw HTML size and khoj output size.
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatTokenSavings(rawHtmlLength: number, khojOutputLength: number): string;
|
|
10
|
+
//# sourceMappingURL=tokenEstimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAK1F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estimates the number of LLM tokens in a string.
|
|
3
|
+
* Uses the standard approximation: ~4 characters per token.
|
|
4
|
+
*/
|
|
5
|
+
export function estimateTokens(text) {
|
|
6
|
+
return Math.ceil(text.length / 4);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Returns a human-readable comparison between raw HTML size and khoj output size.
|
|
10
|
+
*/
|
|
11
|
+
export function formatTokenSavings(rawHtmlLength, khojOutputLength) {
|
|
12
|
+
const rawTokens = estimateTokens(rawHtmlLength.toString().padEnd(rawHtmlLength));
|
|
13
|
+
const outTokens = estimateTokens(khojOutputLength.toString().padEnd(khojOutputLength));
|
|
14
|
+
const reduction = Math.round(((rawTokens - outTokens) / rawTokens) * 100);
|
|
15
|
+
return `Raw HTML ~${rawTokens.toLocaleString()} tokens → Khoj ~${outTokens.toLocaleString()} tokens (${reduction}% reduction)`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=tokenEstimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,gBAAwB;IAC9E,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1E,OAAO,aAAa,SAAS,CAAC,cAAc,EAAE,mBAAmB,SAAS,CAAC,cAAc,EAAE,YAAY,SAAS,cAAc,CAAC;AACnI,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://khoj.dev/schema/khoj-context.schema.json",
|
|
4
|
+
"title": "KhojContext",
|
|
5
|
+
"description": "Output schema generated by the Khoj CLI (token-efficient website context)",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"const": "1.0"
|
|
11
|
+
},
|
|
12
|
+
"url": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"format": "uri"
|
|
15
|
+
},
|
|
16
|
+
"finalUrl": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"format": "uri"
|
|
19
|
+
},
|
|
20
|
+
"extractedAt": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"format": "date-time"
|
|
23
|
+
},
|
|
24
|
+
"loadTimeMs": {
|
|
25
|
+
"type": "number"
|
|
26
|
+
},
|
|
27
|
+
"tokenEstimate": {
|
|
28
|
+
"type": "number",
|
|
29
|
+
"description": "Estimated LLM tokens for the JSON payload"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"required": [
|
|
33
|
+
"schemaVersion",
|
|
34
|
+
"url",
|
|
35
|
+
"finalUrl",
|
|
36
|
+
"extractedAt",
|
|
37
|
+
"loadTimeMs",
|
|
38
|
+
"tokenEstimate",
|
|
39
|
+
"meta",
|
|
40
|
+
"structure",
|
|
41
|
+
"designTokens",
|
|
42
|
+
"components",
|
|
43
|
+
"assets",
|
|
44
|
+
"content",
|
|
45
|
+
"interactions",
|
|
46
|
+
"animations"
|
|
47
|
+
]
|
|
48
|
+
}
|