@skroyc/librarian 0.1.0 → 0.2.1
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 +4 -16
- package/dist/agents/context-schema.d.ts +1 -1
- package/dist/agents/context-schema.d.ts.map +1 -1
- package/dist/agents/context-schema.js +5 -2
- package/dist/agents/context-schema.js.map +1 -1
- package/dist/agents/react-agent.d.ts.map +1 -1
- package/dist/agents/react-agent.js +63 -170
- package/dist/agents/react-agent.js.map +1 -1
- package/dist/agents/tool-runtime.d.ts.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +53 -49
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +115 -69
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +246 -150
- package/dist/index.js.map +1 -1
- package/dist/tools/file-finding.tool.d.ts +1 -1
- package/dist/tools/file-finding.tool.d.ts.map +1 -1
- package/dist/tools/file-finding.tool.js +70 -130
- package/dist/tools/file-finding.tool.js.map +1 -1
- package/dist/tools/file-listing.tool.d.ts +7 -1
- package/dist/tools/file-listing.tool.d.ts.map +1 -1
- package/dist/tools/file-listing.tool.js +96 -80
- package/dist/tools/file-listing.tool.js.map +1 -1
- package/dist/tools/file-reading.tool.d.ts +4 -1
- package/dist/tools/file-reading.tool.d.ts.map +1 -1
- package/dist/tools/file-reading.tool.js +107 -45
- package/dist/tools/file-reading.tool.js.map +1 -1
- package/dist/tools/grep-content.tool.d.ts +13 -1
- package/dist/tools/grep-content.tool.d.ts.map +1 -1
- package/dist/tools/grep-content.tool.js +186 -144
- package/dist/tools/grep-content.tool.js.map +1 -1
- package/dist/utils/error-utils.d.ts +9 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/error-utils.js +61 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/file-utils.d.ts +1 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +81 -9
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/format-utils.d.ts +25 -0
- package/dist/utils/format-utils.d.ts.map +1 -0
- package/dist/utils/format-utils.js +111 -0
- package/dist/utils/format-utils.js.map +1 -0
- package/dist/utils/gitignore-service.d.ts +10 -0
- package/dist/utils/gitignore-service.d.ts.map +1 -0
- package/dist/utils/gitignore-service.js +91 -0
- package/dist/utils/gitignore-service.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +35 -34
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-utils.js +3 -3
- package/dist/utils/path-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/context-schema.ts +5 -2
- package/src/agents/react-agent.ts +694 -784
- package/src/agents/tool-runtime.ts +4 -4
- package/src/cli.ts +95 -57
- package/src/config.ts +192 -90
- package/src/index.ts +402 -180
- package/src/tools/file-finding.tool.ts +198 -310
- package/src/tools/file-listing.tool.ts +245 -202
- package/src/tools/file-reading.tool.ts +225 -138
- package/src/tools/grep-content.tool.ts +387 -307
- package/src/utils/error-utils.ts +95 -0
- package/src/utils/file-utils.ts +104 -19
- package/src/utils/format-utils.ts +190 -0
- package/src/utils/gitignore-service.ts +123 -0
- package/src/utils/logger.ts +112 -77
- package/src/utils/path-utils.ts +3 -3
package/dist/utils/file-utils.js
CHANGED
|
@@ -1,21 +1,62 @@
|
|
|
1
|
-
import path from
|
|
1
|
+
import path from "node:path";
|
|
2
2
|
export async function isTextFile(filePath) {
|
|
3
3
|
const textExtensions = new Set([
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
".txt",
|
|
5
|
+
".js",
|
|
6
|
+
".ts",
|
|
7
|
+
".jsx",
|
|
8
|
+
".tsx",
|
|
9
|
+
".json",
|
|
10
|
+
".yaml",
|
|
11
|
+
".yml",
|
|
12
|
+
".md",
|
|
13
|
+
".html",
|
|
14
|
+
".htm",
|
|
15
|
+
".css",
|
|
16
|
+
".scss",
|
|
17
|
+
".sass",
|
|
18
|
+
".less",
|
|
19
|
+
".py",
|
|
20
|
+
".rb",
|
|
21
|
+
".java",
|
|
22
|
+
".cpp",
|
|
23
|
+
".c",
|
|
24
|
+
".h",
|
|
25
|
+
".hpp",
|
|
26
|
+
".go",
|
|
27
|
+
".rs",
|
|
28
|
+
".php",
|
|
29
|
+
".sql",
|
|
30
|
+
".xml",
|
|
31
|
+
".csv",
|
|
32
|
+
".toml",
|
|
33
|
+
".lock",
|
|
34
|
+
".sh",
|
|
35
|
+
".bash",
|
|
36
|
+
".zsh",
|
|
37
|
+
".env",
|
|
38
|
+
".dockerfile",
|
|
39
|
+
"dockerfile",
|
|
40
|
+
".gitignore",
|
|
41
|
+
".npmrc",
|
|
42
|
+
".prettierrc",
|
|
43
|
+
".eslintrc",
|
|
44
|
+
".editorconfig",
|
|
45
|
+
".jsonc",
|
|
9
46
|
]);
|
|
10
47
|
const ext = path.extname(filePath).toLowerCase();
|
|
11
48
|
if (textExtensions.has(ext)) {
|
|
12
49
|
return true;
|
|
13
50
|
}
|
|
14
51
|
try {
|
|
15
|
-
const
|
|
52
|
+
const file = Bun.file(filePath);
|
|
53
|
+
if (file.size === 0) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
const buffer = await file.slice(0, 512).arrayBuffer();
|
|
16
57
|
const uint8Array = new Uint8Array(buffer);
|
|
17
|
-
for (
|
|
18
|
-
if (
|
|
58
|
+
for (const byte of uint8Array) {
|
|
59
|
+
if (byte === 0) {
|
|
19
60
|
return false;
|
|
20
61
|
}
|
|
21
62
|
}
|
|
@@ -25,4 +66,35 @@ export async function isTextFile(filePath) {
|
|
|
25
66
|
return false;
|
|
26
67
|
}
|
|
27
68
|
}
|
|
69
|
+
export async function getFileLineCount(filePath) {
|
|
70
|
+
try {
|
|
71
|
+
const file = Bun.file(filePath);
|
|
72
|
+
if (file.size === 0) {
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
const stream = file.stream();
|
|
76
|
+
const reader = stream.getReader();
|
|
77
|
+
let count = 0;
|
|
78
|
+
let lastByte = -1;
|
|
79
|
+
while (true) {
|
|
80
|
+
const { done, value } = await reader.read();
|
|
81
|
+
if (done) {
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
for (const byte of value) {
|
|
85
|
+
lastByte = byte;
|
|
86
|
+
if (lastByte === 10) {
|
|
87
|
+
count++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (lastByte !== 10 && lastByte !== -1) {
|
|
92
|
+
count++;
|
|
93
|
+
}
|
|
94
|
+
return count;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
28
100
|
//# sourceMappingURL=file-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAKA,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;QAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface FileSystemEntry {
|
|
2
|
+
name: string;
|
|
3
|
+
path: string;
|
|
4
|
+
isDirectory: boolean;
|
|
5
|
+
size?: number;
|
|
6
|
+
lineCount?: number;
|
|
7
|
+
depth?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface SearchMatch {
|
|
10
|
+
line: number;
|
|
11
|
+
column: number;
|
|
12
|
+
text: string;
|
|
13
|
+
context?: {
|
|
14
|
+
before: string[];
|
|
15
|
+
after: string[];
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function withLineNumbers(lines: string[], startLine?: number): string;
|
|
19
|
+
export declare function formatLinesWithRange(lines: string[], viewRange?: [number, number]): string;
|
|
20
|
+
export declare function formatDirectoryTree(entries: FileSystemEntry[]): string;
|
|
21
|
+
export declare function formatSearchResults(results: {
|
|
22
|
+
path: string;
|
|
23
|
+
matches: SearchMatch[];
|
|
24
|
+
}[]): string;
|
|
25
|
+
//# sourceMappingURL=format-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAQD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,MAAM,CAiBtE;AAKD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAeR;AAmBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAkBtE;AAKD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,EAAE,GAClD,MAAM,CA4ER"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const MIN_LINE_NUM_WIDTH = 3;
|
|
2
|
+
const FILE_SEPARATOR = "--";
|
|
3
|
+
export function withLineNumbers(lines, startLine = 1) {
|
|
4
|
+
if (!lines || lines.length === 0) {
|
|
5
|
+
return "";
|
|
6
|
+
}
|
|
7
|
+
const maxLineNumWidth = Math.max(MIN_LINE_NUM_WIDTH, String(startLine + lines.length - 1).length);
|
|
8
|
+
return lines
|
|
9
|
+
.map((line, index) => {
|
|
10
|
+
const lineNum = startLine + index;
|
|
11
|
+
const paddedNum = String(lineNum).padStart(maxLineNumWidth);
|
|
12
|
+
return `${paddedNum}→${line}`;
|
|
13
|
+
})
|
|
14
|
+
.join("\n");
|
|
15
|
+
}
|
|
16
|
+
export function formatLinesWithRange(lines, viewRange) {
|
|
17
|
+
if (!lines || lines.length === 0) {
|
|
18
|
+
return "[File is empty]";
|
|
19
|
+
}
|
|
20
|
+
if (!viewRange) {
|
|
21
|
+
return withLineNumbers(lines);
|
|
22
|
+
}
|
|
23
|
+
const [start, end] = viewRange;
|
|
24
|
+
const startIndex = Math.max(0, start - 1);
|
|
25
|
+
const endIndex = end === -1 ? lines.length : Math.min(lines.length, end);
|
|
26
|
+
const selectedLines = lines.slice(startIndex, endIndex);
|
|
27
|
+
return withLineNumbers(selectedLines, start);
|
|
28
|
+
}
|
|
29
|
+
function _formatContentWithRange(content, viewRange) {
|
|
30
|
+
if (!content || content.trim() === "") {
|
|
31
|
+
return "[File is empty]";
|
|
32
|
+
}
|
|
33
|
+
return formatLinesWithRange(content.split("\n"), viewRange);
|
|
34
|
+
}
|
|
35
|
+
export function formatDirectoryTree(entries) {
|
|
36
|
+
let output = "";
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
const indent = " ".repeat(entry.depth || 0);
|
|
39
|
+
let line = `${indent}${entry.isDirectory ? `${entry.name}/` : entry.name}`;
|
|
40
|
+
if (!entry.isDirectory && entry.lineCount !== undefined) {
|
|
41
|
+
line += ` (${entry.lineCount} lines)`;
|
|
42
|
+
}
|
|
43
|
+
else if (!entry.isDirectory && entry.size !== undefined) {
|
|
44
|
+
line += ` (${entry.size} bytes)`;
|
|
45
|
+
}
|
|
46
|
+
output += `${line}\n`;
|
|
47
|
+
}
|
|
48
|
+
return output.trimEnd();
|
|
49
|
+
}
|
|
50
|
+
export function formatSearchResults(results) {
|
|
51
|
+
let output = "";
|
|
52
|
+
const totalMatches = results.reduce((sum, r) => sum + r.matches.length, 0);
|
|
53
|
+
output += `Found ${totalMatches} matches in ${results.length} files:\n\n`;
|
|
54
|
+
let fileIndex = 0;
|
|
55
|
+
for (const result of results) {
|
|
56
|
+
output += `${result.path}\n`;
|
|
57
|
+
const sortedMatches = [...result.matches].sort((a, b) => a.line - b.line);
|
|
58
|
+
const displayedLines = new Set();
|
|
59
|
+
let lastPrintedLine = -1;
|
|
60
|
+
let maxLineNum = 0;
|
|
61
|
+
for (const match of sortedMatches) {
|
|
62
|
+
const lastContextLine = match.line + (match.context?.after.length || 0);
|
|
63
|
+
maxLineNum = Math.max(maxLineNum, lastContextLine);
|
|
64
|
+
}
|
|
65
|
+
const maxLineNumWidth = Math.max(MIN_LINE_NUM_WIDTH, String(maxLineNum).length);
|
|
66
|
+
for (const match of sortedMatches) {
|
|
67
|
+
if (match.context?.before) {
|
|
68
|
+
const startLine = Math.max(1, match.line - match.context.before.length);
|
|
69
|
+
for (let j = 0; j < match.context.before.length; j++) {
|
|
70
|
+
const lineNum = startLine + j;
|
|
71
|
+
if (!displayedLines.has(lineNum)) {
|
|
72
|
+
if (lastPrintedLine !== -1 && lineNum > lastPrintedLine + 1) {
|
|
73
|
+
output += `${" ".repeat(maxLineNumWidth)}⁝\n`;
|
|
74
|
+
}
|
|
75
|
+
output += `${String(lineNum).padStart(maxLineNumWidth)}→${match.context.before[j]}\n`;
|
|
76
|
+
displayedLines.add(lineNum);
|
|
77
|
+
lastPrintedLine = lineNum;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!displayedLines.has(match.line)) {
|
|
82
|
+
if (lastPrintedLine !== -1 && match.line > lastPrintedLine + 1) {
|
|
83
|
+
output += `${" ".repeat(maxLineNumWidth)}⁝\n`;
|
|
84
|
+
}
|
|
85
|
+
output += `${String(match.line).padStart(maxLineNumWidth)}→${match.text}\n`;
|
|
86
|
+
displayedLines.add(match.line);
|
|
87
|
+
lastPrintedLine = match.line;
|
|
88
|
+
}
|
|
89
|
+
if (match.context?.after) {
|
|
90
|
+
const startLine = match.line + 1;
|
|
91
|
+
for (let j = 0; j < match.context.after.length; j++) {
|
|
92
|
+
const lineNum = startLine + j;
|
|
93
|
+
if (!displayedLines.has(lineNum)) {
|
|
94
|
+
if (lastPrintedLine !== -1 && lineNum > lastPrintedLine + 1) {
|
|
95
|
+
output += `${" ".repeat(maxLineNumWidth)}⁝\n`;
|
|
96
|
+
}
|
|
97
|
+
output += `${String(lineNum).padStart(maxLineNumWidth)}→${match.context.after[j]}\n`;
|
|
98
|
+
displayedLines.add(lineNum);
|
|
99
|
+
lastPrintedLine = lineNum;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (fileIndex < results.length - 1) {
|
|
105
|
+
output += `${FILE_SEPARATOR}\n`;
|
|
106
|
+
}
|
|
107
|
+
fileIndex++;
|
|
108
|
+
}
|
|
109
|
+
return output;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=format-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/utils/format-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class GitIgnoreService {
|
|
2
|
+
private readonly rootDir;
|
|
3
|
+
private patterns;
|
|
4
|
+
private initialized;
|
|
5
|
+
constructor(rootDir: string);
|
|
6
|
+
initialize(): Promise<void>;
|
|
7
|
+
shouldIgnore(filePath: string, isDirectory?: boolean): boolean;
|
|
8
|
+
private parseGitIgnore;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=gitignore-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-service.d.ts","sourceRoot":"","sources":["../../src/utils/gitignore-service.ts"],"names":[],"mappings":"AAkBA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,MAAM;IAIrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,OAAO;IAwC5D,OAAO,CAAC,cAAc;CAyCvB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Glob } from "bun";
|
|
4
|
+
const LINE_ENDING_REGEX = /\r?\n/;
|
|
5
|
+
export class GitIgnoreService {
|
|
6
|
+
rootDir;
|
|
7
|
+
patterns = [];
|
|
8
|
+
initialized = false;
|
|
9
|
+
constructor(rootDir) {
|
|
10
|
+
this.rootDir = path.resolve(rootDir);
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
if (this.initialized) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const gitignorePath = path.join(this.rootDir, ".gitignore");
|
|
18
|
+
const content = await readFile(gitignorePath, "utf-8");
|
|
19
|
+
this.patterns = this.parseGitIgnore(content);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
this.patterns = [];
|
|
23
|
+
}
|
|
24
|
+
this.initialized = true;
|
|
25
|
+
}
|
|
26
|
+
shouldIgnore(filePath, isDirectory = false) {
|
|
27
|
+
if (!this.initialized) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const relativePath = path.relative(this.rootDir, filePath);
|
|
31
|
+
if (relativePath === "" || relativePath === ".") {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
let ignored = false;
|
|
35
|
+
let hasNegationMatch = false;
|
|
36
|
+
for (const p of this.patterns) {
|
|
37
|
+
if (p.glob.match(relativePath)) {
|
|
38
|
+
if (p.isDirectoryOnly &&
|
|
39
|
+
!isDirectory &&
|
|
40
|
+
!relativePath.includes("/") &&
|
|
41
|
+
p.glob.match(relativePath)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (p.isNegation) {
|
|
45
|
+
ignored = false;
|
|
46
|
+
hasNegationMatch = true;
|
|
47
|
+
}
|
|
48
|
+
else if (!hasNegationMatch) {
|
|
49
|
+
ignored = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return ignored;
|
|
54
|
+
}
|
|
55
|
+
parseGitIgnore(content) {
|
|
56
|
+
const lines = content.split(LINE_ENDING_REGEX);
|
|
57
|
+
const patterns = [];
|
|
58
|
+
for (let line of lines) {
|
|
59
|
+
line = line.trim();
|
|
60
|
+
if (!line || line.startsWith("#")) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
let isNegation = false;
|
|
64
|
+
if (line.startsWith("!")) {
|
|
65
|
+
isNegation = true;
|
|
66
|
+
line = line.slice(1).trim();
|
|
67
|
+
}
|
|
68
|
+
const isDirectoryOnly = line.endsWith("/");
|
|
69
|
+
let cleanPattern = isDirectoryOnly ? line.slice(0, -1) : line;
|
|
70
|
+
if (cleanPattern.startsWith("/")) {
|
|
71
|
+
cleanPattern = cleanPattern.slice(1);
|
|
72
|
+
}
|
|
73
|
+
else if (!cleanPattern.includes("/")) {
|
|
74
|
+
cleanPattern = `**/${cleanPattern}`;
|
|
75
|
+
}
|
|
76
|
+
const finalPattern = `${cleanPattern}{,/**}`;
|
|
77
|
+
try {
|
|
78
|
+
patterns.push({
|
|
79
|
+
pattern: line,
|
|
80
|
+
isNegation,
|
|
81
|
+
isDirectoryOnly,
|
|
82
|
+
glob: new Glob(finalPattern),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return patterns;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=gitignore-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-service.js","sourceRoot":"","sources":["../../src/utils/gitignore-service.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type LogLevel =
|
|
2
|
-
export type LogComponent =
|
|
1
|
+
export type LogLevel = "INFO" | "DEBUG" | "WARN" | "ERROR";
|
|
2
|
+
export type LogComponent = "CLI" | "CONFIG" | "LIBRARIAN" | "AGENT" | "TOOL" | "LLM" | "GIT" | "PATH" | "LOGGER" | "TIMING";
|
|
3
3
|
interface LogMetadata {
|
|
4
4
|
[key: string]: unknown;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,QAAQ,GACR,WAAW,GACX,OAAO,GACP,MAAM,GACN,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,UAAU,WAAW;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAOD,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2C;IAE5E,OAAO;IAMP,MAAM,CAAC,WAAW,IAAI,MAAM;IAO5B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAQtB,iBAAiB;IA+C/B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,GAAG;IAiBX,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAO5E,KAAK,CACH,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI;IASP,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAO5E,KAAK,CACH,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,EACb,QAAQ,CAAC,EAAE,WAAW,GACrB,IAAI;IAoBP,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAetC,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,YAAY,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAqBP,KAAK,IAAI,IAAI;CASd;AAGD,eAAO,MAAM,MAAM,QAAuB,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { mkdir } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { mkdir } from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
4
|
class Logger {
|
|
5
5
|
static instance;
|
|
6
6
|
writer = null;
|
|
@@ -24,17 +24,17 @@ class Logger {
|
|
|
24
24
|
const now = new Date();
|
|
25
25
|
const isoString = now.toISOString();
|
|
26
26
|
if (!isoString) {
|
|
27
|
-
throw new Error(
|
|
27
|
+
throw new Error("Failed to generate timestamp");
|
|
28
28
|
}
|
|
29
29
|
const year = now.getFullYear();
|
|
30
|
-
const month = String(now.getMonth() + 1).padStart(2,
|
|
31
|
-
const day = String(now.getDate()).padStart(2,
|
|
32
|
-
const hours = String(now.getHours()).padStart(2,
|
|
33
|
-
const minutes = String(now.getMinutes()).padStart(2,
|
|
34
|
-
const seconds = String(now.getSeconds()).padStart(2,
|
|
35
|
-
const ms = String(now.getMilliseconds()).padStart(3,
|
|
30
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
31
|
+
const day = String(now.getDate()).padStart(2, "0");
|
|
32
|
+
const hours = String(now.getHours()).padStart(2, "0");
|
|
33
|
+
const minutes = String(now.getMinutes()).padStart(2, "0");
|
|
34
|
+
const seconds = String(now.getSeconds()).padStart(2, "0");
|
|
35
|
+
const ms = String(now.getMilliseconds()).padStart(3, "0");
|
|
36
36
|
const timestamp = `${year}-${month}-${day}_${hours}-${minutes}-${seconds}_${ms}`;
|
|
37
|
-
const logDir = path.join(os.homedir(),
|
|
37
|
+
const logDir = path.join(os.homedir(), ".config", "librarian", "logs");
|
|
38
38
|
if (!(await Bun.file(logDir).exists())) {
|
|
39
39
|
await mkdir(logDir, { recursive: true });
|
|
40
40
|
}
|
|
@@ -42,7 +42,7 @@ class Logger {
|
|
|
42
42
|
const logPath = path.join(logDir, logFilename);
|
|
43
43
|
const logFile = Bun.file(logPath);
|
|
44
44
|
this.writer = logFile.writer();
|
|
45
|
-
this.info(
|
|
45
|
+
this.info("LOGGER", `Logging initialized: ${logPath}`);
|
|
46
46
|
}
|
|
47
47
|
catch {
|
|
48
48
|
}
|
|
@@ -50,12 +50,12 @@ class Logger {
|
|
|
50
50
|
formatTimestamp() {
|
|
51
51
|
const now = new Date();
|
|
52
52
|
const year = now.getFullYear();
|
|
53
|
-
const month = String(now.getMonth() + 1).padStart(2,
|
|
54
|
-
const day = String(now.getDate()).padStart(2,
|
|
55
|
-
const hours = String(now.getHours()).padStart(2,
|
|
56
|
-
const minutes = String(now.getMinutes()).padStart(2,
|
|
57
|
-
const seconds = String(now.getSeconds()).padStart(2,
|
|
58
|
-
const ms = String(now.getMilliseconds()).padStart(3,
|
|
53
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
54
|
+
const day = String(now.getDate()).padStart(2, "0");
|
|
55
|
+
const hours = String(now.getHours()).padStart(2, "0");
|
|
56
|
+
const minutes = String(now.getMinutes()).padStart(2, "0");
|
|
57
|
+
const seconds = String(now.getSeconds()).padStart(2, "0");
|
|
58
|
+
const ms = String(now.getMilliseconds()).padStart(3, "0");
|
|
59
59
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${ms}`;
|
|
60
60
|
}
|
|
61
61
|
redactMetadata(metadata) {
|
|
@@ -67,20 +67,21 @@ class Logger {
|
|
|
67
67
|
}
|
|
68
68
|
getRedactedValue(key, value) {
|
|
69
69
|
const lowerKey = key.toLowerCase();
|
|
70
|
-
if ([
|
|
71
|
-
return
|
|
70
|
+
if (["apiKey", "token", "secret", "password"].includes(lowerKey)) {
|
|
71
|
+
return "[REDACTED]";
|
|
72
72
|
}
|
|
73
|
-
if ((key ===
|
|
73
|
+
if ((key === "query" || key === "content") && typeof value === "string") {
|
|
74
74
|
return value.length;
|
|
75
75
|
}
|
|
76
|
-
if ((key ===
|
|
76
|
+
if ((key === "repoUrl" || key === "baseURL") && typeof value === "string") {
|
|
77
77
|
return this.redactUrl(value);
|
|
78
78
|
}
|
|
79
|
-
if (key ===
|
|
80
|
-
return value.replace(os.homedir(),
|
|
79
|
+
if (key === "workingDir" && typeof value === "string") {
|
|
80
|
+
return value.replace(os.homedir(), "~");
|
|
81
81
|
}
|
|
82
|
-
if (typeof value ===
|
|
83
|
-
|
|
82
|
+
if (typeof value === "string" &&
|
|
83
|
+
(value.includes(os.homedir()) || value.includes("/home/"))) {
|
|
84
|
+
return value.replace(os.homedir(), "~");
|
|
84
85
|
}
|
|
85
86
|
return value;
|
|
86
87
|
}
|
|
@@ -90,7 +91,7 @@ class Logger {
|
|
|
90
91
|
return url.hostname;
|
|
91
92
|
}
|
|
92
93
|
catch {
|
|
93
|
-
return
|
|
94
|
+
return "[INVALID_URL]";
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
formatLogEntry(level, component, message, metadata) {
|
|
@@ -120,15 +121,15 @@ class Logger {
|
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
info(component, message, metadata) {
|
|
123
|
-
this.log(
|
|
124
|
+
this.log("INFO", component, message, metadata);
|
|
124
125
|
}
|
|
125
126
|
debug(component, message, metadata) {
|
|
126
127
|
if (this.debugMode) {
|
|
127
|
-
this.log(
|
|
128
|
+
this.log("DEBUG", component, message, metadata);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
warn(component, message, metadata) {
|
|
131
|
-
this.log(
|
|
132
|
+
this.log("WARN", component, message, metadata);
|
|
132
133
|
}
|
|
133
134
|
error(component, message, error, metadata) {
|
|
134
135
|
const errorMetadata = metadata ? { ...metadata } : {};
|
|
@@ -139,15 +140,15 @@ class Logger {
|
|
|
139
140
|
errorMetadata.stack = error.stack;
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
|
-
this.log(
|
|
143
|
+
this.log("ERROR", component, message, errorMetadata);
|
|
143
144
|
}
|
|
144
145
|
timingStart(operation) {
|
|
145
146
|
const operationId = `${operation}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
146
147
|
this.timingOperations.set(operationId, {
|
|
147
148
|
operation,
|
|
148
|
-
startTime: performance.now()
|
|
149
|
+
startTime: performance.now(),
|
|
149
150
|
});
|
|
150
|
-
this.debug(
|
|
151
|
+
this.debug("TIMING", `Started: ${operation}`);
|
|
151
152
|
return operationId;
|
|
152
153
|
}
|
|
153
154
|
timingEnd(operationId, component, message) {
|
|
@@ -159,7 +160,7 @@ class Logger {
|
|
|
159
160
|
const logMessage = message || `Completed: ${timing.operation}`;
|
|
160
161
|
this.info(component, logMessage, { duration: `${durationMs}ms` });
|
|
161
162
|
if (this.debugMode) {
|
|
162
|
-
this.debug(
|
|
163
|
+
this.debug("TIMING", `Ended: ${timing.operation}`, { durationMs });
|
|
163
164
|
}
|
|
164
165
|
}
|
|
165
166
|
}
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/path-utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
3
|
export function expandTilde(filePath) {
|
|
4
|
-
if (filePath.startsWith(
|
|
4
|
+
if (filePath.startsWith("~/")) {
|
|
5
5
|
return path.join(os.homedir(), filePath.slice(2));
|
|
6
6
|
}
|
|
7
7
|
return filePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/utils/path-utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Context Schema for Agent Runtime
|
|
@@ -10,7 +10,10 @@ export const contextSchema = z.object({
|
|
|
10
10
|
/** The absolute path to sandbox directory where all file operations should be confined */
|
|
11
11
|
workingDir: z.string().describe("The absolute path to sandbox directory"),
|
|
12
12
|
/** Optional environment identifier (e.g., 'development', 'production') */
|
|
13
|
-
environment: z
|
|
13
|
+
environment: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Optional environment identifier"),
|
|
14
17
|
/** The technology group name (e.g., 'default', 'langchain') */
|
|
15
18
|
group: z.string().describe("The technology group name"),
|
|
16
19
|
/** The technology/repo name (e.g., 'react', 'openai') */
|