ai-contextify 0.1.0
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/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +93 -0
- package/dist/cli.js.map +1 -0
- package/dist/exporters/chunks.d.ts +7 -0
- package/dist/exporters/chunks.d.ts.map +1 -0
- package/dist/exporters/chunks.js +18 -0
- package/dist/exporters/chunks.js.map +1 -0
- package/dist/exporters/markdown.d.ts +9 -0
- package/dist/exporters/markdown.d.ts.map +1 -0
- package/dist/exporters/markdown.js +62 -0
- package/dist/exporters/markdown.js.map +1 -0
- package/dist/exporters/metadata.d.ts +3 -0
- package/dist/exporters/metadata.d.ts.map +1 -0
- package/dist/exporters/metadata.js +7 -0
- package/dist/exporters/metadata.js.map +1 -0
- package/dist/exporters/xml.d.ts +12 -0
- package/dist/exporters/xml.d.ts.map +1 -0
- package/dist/exporters/xml.js +35 -0
- package/dist/exporters/xml.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/code.d.ts +2 -0
- package/dist/parsers/code.d.ts.map +1 -0
- package/dist/parsers/code.js +6 -0
- package/dist/parsers/code.js.map +1 -0
- package/dist/parsers/docx.d.ts +2 -0
- package/dist/parsers/docx.d.ts.map +1 -0
- package/dist/parsers/docx.js +16 -0
- package/dist/parsers/docx.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +56 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/json.d.ts +2 -0
- package/dist/parsers/json.d.ts.map +1 -0
- package/dist/parsers/json.js +12 -0
- package/dist/parsers/json.js.map +1 -0
- package/dist/parsers/markdown.d.ts +2 -0
- package/dist/parsers/markdown.d.ts.map +1 -0
- package/dist/parsers/markdown.js +11 -0
- package/dist/parsers/markdown.js.map +1 -0
- package/dist/parsers/pdf.d.ts +2 -0
- package/dist/parsers/pdf.d.ts.map +1 -0
- package/dist/parsers/pdf.js +17 -0
- package/dist/parsers/pdf.js.map +1 -0
- package/dist/parsers/text.d.ts +2 -0
- package/dist/parsers/text.d.ts.map +1 -0
- package/dist/parsers/text.js +6 -0
- package/dist/parsers/text.js.map +1 -0
- package/dist/scanner/index.d.ts +15 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +66 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/chunking.d.ts +11 -0
- package/dist/utils/chunking.d.ts.map +1 -0
- package/dist/utils/chunking.js +62 -0
- package/dist/utils/chunking.js.map +1 -0
- package/dist/utils/language.d.ts +3 -0
- package/dist/utils/language.d.ts.map +1 -0
- package/dist/utils/language.js +72 -0
- package/dist/utils/language.js.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +10 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tokens.d.ts +9 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +22 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const LANGUAGE_BY_EXTENSION = {
|
|
2
|
+
".ts": "typescript",
|
|
3
|
+
".tsx": "tsx",
|
|
4
|
+
".js": "javascript",
|
|
5
|
+
".jsx": "jsx",
|
|
6
|
+
".mjs": "javascript",
|
|
7
|
+
".cjs": "javascript",
|
|
8
|
+
".py": "python",
|
|
9
|
+
".rb": "ruby",
|
|
10
|
+
".go": "go",
|
|
11
|
+
".rs": "rust",
|
|
12
|
+
".java": "java",
|
|
13
|
+
".kt": "kotlin",
|
|
14
|
+
".swift": "swift",
|
|
15
|
+
".c": "c",
|
|
16
|
+
".h": "c",
|
|
17
|
+
".cpp": "cpp",
|
|
18
|
+
".hpp": "cpp",
|
|
19
|
+
".cc": "cpp",
|
|
20
|
+
".cs": "csharp",
|
|
21
|
+
".php": "php",
|
|
22
|
+
".sh": "bash",
|
|
23
|
+
".bash": "bash",
|
|
24
|
+
".zsh": "bash",
|
|
25
|
+
".fish": "fish",
|
|
26
|
+
".ps1": "powershell",
|
|
27
|
+
".sql": "sql",
|
|
28
|
+
".yml": "yaml",
|
|
29
|
+
".yaml": "yaml",
|
|
30
|
+
".toml": "toml",
|
|
31
|
+
".ini": "ini",
|
|
32
|
+
".env": "dotenv",
|
|
33
|
+
".html": "html",
|
|
34
|
+
".htm": "html",
|
|
35
|
+
".css": "css",
|
|
36
|
+
".scss": "scss",
|
|
37
|
+
".sass": "sass",
|
|
38
|
+
".less": "less",
|
|
39
|
+
".vue": "vue",
|
|
40
|
+
".svelte": "svelte",
|
|
41
|
+
".astro": "astro",
|
|
42
|
+
".lua": "lua",
|
|
43
|
+
".dart": "dart",
|
|
44
|
+
".r": "r",
|
|
45
|
+
".scala": "scala",
|
|
46
|
+
".clj": "clojure",
|
|
47
|
+
".ex": "elixir",
|
|
48
|
+
".exs": "elixir",
|
|
49
|
+
".erl": "erlang",
|
|
50
|
+
".hs": "haskell",
|
|
51
|
+
".pl": "perl",
|
|
52
|
+
".graphql": "graphql",
|
|
53
|
+
".gql": "graphql",
|
|
54
|
+
".proto": "protobuf",
|
|
55
|
+
".tf": "hcl",
|
|
56
|
+
".dockerfile": "dockerfile",
|
|
57
|
+
};
|
|
58
|
+
export function detectLanguage(extension, filename) {
|
|
59
|
+
const lower = extension.toLowerCase();
|
|
60
|
+
if (LANGUAGE_BY_EXTENSION[lower])
|
|
61
|
+
return LANGUAGE_BY_EXTENSION[lower];
|
|
62
|
+
if (/^dockerfile/i.test(filename))
|
|
63
|
+
return "dockerfile";
|
|
64
|
+
if (/^makefile/i.test(filename))
|
|
65
|
+
return "makefile";
|
|
66
|
+
return "text";
|
|
67
|
+
}
|
|
68
|
+
const CODE_EXTENSIONS = new Set(Object.keys(LANGUAGE_BY_EXTENSION));
|
|
69
|
+
export function isCodeExtension(extension) {
|
|
70
|
+
return CODE_EXTENSIONS.has(extension.toLowerCase());
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/utils/language.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAA2B;IACpD,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,YAAY;CAC5B,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,QAAgB;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,qBAAqB,CAAC,KAAK,CAAC;QAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC;IACvD,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEpE,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;gBACL,MAAM,KAAG,IAAI;mBACV,MAAM,KAAG,IAAI;gBAChB,MAAM,KAAG,IAAI;iBACZ,MAAM,KAAG,IAAI;eACf,MAAM,KAAG,IAAI;gBACZ,MAAM,KAAG,IAAI;CAC1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
export const logger = {
|
|
3
|
+
info: (msg) => console.log(chalk.cyan("ℹ"), msg),
|
|
4
|
+
success: (msg) => console.log(chalk.green("✔"), msg),
|
|
5
|
+
warn: (msg) => console.warn(chalk.yellow("⚠"), msg),
|
|
6
|
+
error: (msg) => console.error(chalk.red("✖"), msg),
|
|
7
|
+
dim: (msg) => console.log(chalk.dim(msg)),
|
|
8
|
+
step: (msg) => console.log(chalk.magenta("›"), msg),
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC9D,OAAO,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAClE,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACjE,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAChE,GAAG,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;CAClE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cheap, dependency-free token estimator.
|
|
3
|
+
* Heuristic: ~4 characters per token for English/code,
|
|
4
|
+
* with a small penalty for whitespace-heavy text.
|
|
5
|
+
* Good enough for budgeting context windows without bundling a tokenizer.
|
|
6
|
+
*/
|
|
7
|
+
export declare function estimateTokens(text: string): number;
|
|
8
|
+
export declare function formatTokenCount(n: number): string;
|
|
9
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cheap, dependency-free token estimator.
|
|
3
|
+
* Heuristic: ~4 characters per token for English/code,
|
|
4
|
+
* with a small penalty for whitespace-heavy text.
|
|
5
|
+
* Good enough for budgeting context windows without bundling a tokenizer.
|
|
6
|
+
*/
|
|
7
|
+
export function estimateTokens(text) {
|
|
8
|
+
if (!text)
|
|
9
|
+
return 0;
|
|
10
|
+
const charCount = text.length;
|
|
11
|
+
const whitespace = (text.match(/\s/g) ?? []).length;
|
|
12
|
+
const effective = charCount - whitespace * 0.3;
|
|
13
|
+
return Math.max(1, Math.ceil(effective / 4));
|
|
14
|
+
}
|
|
15
|
+
export function formatTokenCount(n) {
|
|
16
|
+
if (n < 1_000)
|
|
17
|
+
return `${n}`;
|
|
18
|
+
if (n < 1_000_000)
|
|
19
|
+
return `${(n / 1_000).toFixed(1)}k`;
|
|
20
|
+
return `${(n / 1_000_000).toFixed(2)}M`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1C,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ai-contextify",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Convert files and entire projects into optimized context for LLMs like Claude, ChatGPT and Gemini.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"llm",
|
|
8
|
+
"context",
|
|
9
|
+
"claude",
|
|
10
|
+
"chatgpt",
|
|
11
|
+
"gemini",
|
|
12
|
+
"rag",
|
|
13
|
+
"cli",
|
|
14
|
+
"markdown",
|
|
15
|
+
"pdf",
|
|
16
|
+
"docx"
|
|
17
|
+
],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"author": "xean._. <jean24pain@gmail.com>",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"main": "dist/index.js",
|
|
22
|
+
"module": "dist/index.js",
|
|
23
|
+
"types": "dist/index.d.ts",
|
|
24
|
+
"bin": {
|
|
25
|
+
"ai-contextify": "dist/cli.js"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md",
|
|
30
|
+
"LICENSE"
|
|
31
|
+
],
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18"
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"dev": "tsx src/cli.ts",
|
|
37
|
+
"build": "tsc -p tsconfig.json && chmod +x dist/cli.js || true",
|
|
38
|
+
"start": "node dist/cli.js",
|
|
39
|
+
"clean": "rimraf dist",
|
|
40
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"chalk": "^5.3.0",
|
|
44
|
+
"commander": "^12.1.0",
|
|
45
|
+
"fast-glob": "^3.3.2",
|
|
46
|
+
"fs-extra": "^11.2.0",
|
|
47
|
+
"mammoth": "^1.8.0",
|
|
48
|
+
"ora": "^8.1.0",
|
|
49
|
+
"pdf-parse": "^1.1.1",
|
|
50
|
+
"remark": "^15.0.1",
|
|
51
|
+
"remark-gfm": "^4.0.0",
|
|
52
|
+
"strip-markdown": "^6.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/fs-extra": "^11.0.4",
|
|
56
|
+
"@types/node": "^20.14.0",
|
|
57
|
+
"@types/pdf-parse": "^1.1.4",
|
|
58
|
+
"rimraf": "^5.0.7",
|
|
59
|
+
"tsx": "^4.16.0",
|
|
60
|
+
"typescript": "^5.5.0"
|
|
61
|
+
}
|
|
62
|
+
}
|