@backendkit-labs/curator-codex-agent 0.2.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.
Files changed (79) hide show
  1. package/AGENT.md +187 -0
  2. package/README.md +475 -0
  3. package/dist/analyzer.d.ts +44 -0
  4. package/dist/analyzer.d.ts.map +1 -0
  5. package/dist/analyzer.js +381 -0
  6. package/dist/analyzer.js.map +1 -0
  7. package/dist/api/config.d.ts +57 -0
  8. package/dist/api/config.d.ts.map +1 -0
  9. package/dist/api/config.js +183 -0
  10. package/dist/api/config.js.map +1 -0
  11. package/dist/api/http-server.d.ts +24 -0
  12. package/dist/api/http-server.d.ts.map +1 -0
  13. package/dist/api/http-server.js +108 -0
  14. package/dist/api/http-server.js.map +1 -0
  15. package/dist/api/routes.d.ts +8 -0
  16. package/dist/api/routes.d.ts.map +1 -0
  17. package/dist/api/routes.js +382 -0
  18. package/dist/api/routes.js.map +1 -0
  19. package/dist/api/security.d.ts +107 -0
  20. package/dist/api/security.d.ts.map +1 -0
  21. package/dist/api/security.js +200 -0
  22. package/dist/api/security.js.map +1 -0
  23. package/dist/checksum.d.ts +56 -0
  24. package/dist/checksum.d.ts.map +1 -0
  25. package/dist/checksum.js +186 -0
  26. package/dist/checksum.js.map +1 -0
  27. package/dist/documentation-curator.d.ts +18 -0
  28. package/dist/documentation-curator.d.ts.map +1 -0
  29. package/dist/documentation-curator.js +231 -0
  30. package/dist/documentation-curator.js.map +1 -0
  31. package/dist/http-server-main.d.ts +28 -0
  32. package/dist/http-server-main.d.ts.map +1 -0
  33. package/dist/http-server-main.js +69 -0
  34. package/dist/http-server-main.js.map +1 -0
  35. package/dist/index.d.ts +16 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +23 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/knowledge/engine.d.ts +90 -0
  40. package/dist/knowledge/engine.d.ts.map +1 -0
  41. package/dist/knowledge/engine.js +181 -0
  42. package/dist/knowledge/engine.js.map +1 -0
  43. package/dist/knowledge/rag-provider.d.ts +87 -0
  44. package/dist/knowledge/rag-provider.d.ts.map +1 -0
  45. package/dist/knowledge/rag-provider.js +189 -0
  46. package/dist/knowledge/rag-provider.js.map +1 -0
  47. package/dist/knowledge/synthesis.d.ts +27 -0
  48. package/dist/knowledge/synthesis.d.ts.map +1 -0
  49. package/dist/knowledge/synthesis.js +142 -0
  50. package/dist/knowledge/synthesis.js.map +1 -0
  51. package/dist/providers/anthropic-adapter.d.ts +14 -0
  52. package/dist/providers/anthropic-adapter.d.ts.map +1 -0
  53. package/dist/providers/anthropic-adapter.js +29 -0
  54. package/dist/providers/anthropic-adapter.js.map +1 -0
  55. package/dist/providers/index.d.ts +14 -0
  56. package/dist/providers/index.d.ts.map +1 -0
  57. package/dist/providers/index.js +29 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/openai-adapter.d.ts +16 -0
  60. package/dist/providers/openai-adapter.d.ts.map +1 -0
  61. package/dist/providers/openai-adapter.js +37 -0
  62. package/dist/providers/openai-adapter.js.map +1 -0
  63. package/dist/providers/types.d.ts +4 -0
  64. package/dist/providers/types.d.ts.map +1 -0
  65. package/dist/providers/types.js +3 -0
  66. package/dist/providers/types.js.map +1 -0
  67. package/dist/server.d.ts +33 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +640 -0
  70. package/dist/server.js.map +1 -0
  71. package/dist/types.d.ts +41 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +4 -0
  74. package/dist/types.js.map +1 -0
  75. package/dist/watcher.d.ts +26 -0
  76. package/dist/watcher.d.ts.map +1 -0
  77. package/dist/watcher.js +168 -0
  78. package/dist/watcher.js.map +1 -0
  79. package/package.json +58 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ /**
3
+ * Security middleware for Curator-Codex HTTP API
4
+ * Handles authentication, rate limiting, and input validation
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.CuratorFileSchema = exports.KnowledgeReindexSchema = exports.KnowledgeSearchWithVaultSchema = exports.KnowledgeSearchSchema = exports.CuratorProcessSchema = exports.CuratorConfigSchema = void 0;
44
+ exports.createAuthMiddleware = createAuthMiddleware;
45
+ exports.createRateLimiter = createRateLimiter;
46
+ exports.validateBody = validateBody;
47
+ exports.createRequestLogger = createRequestLogger;
48
+ exports.errorHandler = errorHandler;
49
+ exports.createRequestContext = createRequestContext;
50
+ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
51
+ const zod_1 = require("zod");
52
+ const crypto = __importStar(require("node:crypto"));
53
+ /**
54
+ * Bearer token authentication middleware
55
+ * Validates API key from Authorization header
56
+ */
57
+ function createAuthMiddleware(apiKeys = new Map()) {
58
+ return (req, res, next) => {
59
+ const authHeader = req.headers.authorization;
60
+ if (!authHeader || !authHeader.startsWith('Bearer ')) {
61
+ // No auth required for health/status endpoints
62
+ if (req.path === '/health' || req.path === '/status' || req.path === '/') {
63
+ return next();
64
+ }
65
+ return res.status(401).json({
66
+ error: 'Unauthorized',
67
+ message: 'Missing or invalid Authorization header',
68
+ expected: 'Authorization: Bearer sk-...',
69
+ });
70
+ }
71
+ const token = authHeader.slice(7); // Remove "Bearer "
72
+ // Validate token format
73
+ if (!token.startsWith('sk-') || token.length < 20) {
74
+ return res.status(401).json({
75
+ error: 'Unauthorized',
76
+ message: 'Invalid API key format',
77
+ });
78
+ }
79
+ // Check token (in production, verify against DB/KMS)
80
+ const keyInfo = apiKeys.get(token) || { rateLimit: 100 };
81
+ req.user = {
82
+ id: hashToken(token),
83
+ key: token.slice(0, 10) + '...',
84
+ rateLimit: keyInfo.rateLimit,
85
+ };
86
+ next();
87
+ };
88
+ }
89
+ function hashToken(token) {
90
+ return crypto.createHash('sha256').update(token).digest('hex').slice(0, 12);
91
+ }
92
+ // ── Rate Limiting ──────────────────────────────────────────────────────────
93
+ function createRateLimiter(windowMs = 15 * 60 * 1000, max = 100) {
94
+ return (0, express_rate_limit_1.default)({
95
+ windowMs,
96
+ max,
97
+ message: {
98
+ error: 'Too many requests',
99
+ message: 'Rate limit exceeded. Please try again later.',
100
+ retryAfter: Math.ceil(windowMs / 1000),
101
+ },
102
+ standardHeaders: true, // Return rate limit info in headers
103
+ skip: (req) => {
104
+ // Skip rate limiting for health checks
105
+ return req.path === '/health';
106
+ },
107
+ });
108
+ }
109
+ // ── Input Validation ───────────────────────────────────────────────────────
110
+ exports.CuratorConfigSchema = zod_1.z.object({
111
+ inputPath: zod_1.z.string().min(1).describe('Input directory path'),
112
+ outputPath: zod_1.z.string().min(1).describe('Output vault path'),
113
+ });
114
+ exports.CuratorProcessSchema = zod_1.z.object({
115
+ inputPath: zod_1.z.string().optional().describe('Optional input override'),
116
+ outputPath: zod_1.z.string().optional().describe('Optional output override'),
117
+ });
118
+ exports.KnowledgeSearchSchema = zod_1.z.object({
119
+ query: zod_1.z.string().min(3).max(500).describe('Search query'),
120
+ topK: zod_1.z.number().int().min(1).max(20).optional().describe('Top K results'),
121
+ autoSynthesize: zod_1.z.boolean().optional().describe('Auto-generate synthesis'),
122
+ });
123
+ exports.KnowledgeSearchWithVaultSchema = zod_1.z.object({
124
+ vaultPath: zod_1.z.string().min(1).describe('Absolute path to vault directory'),
125
+ query: zod_1.z.string().min(3).max(500).describe('Search query'),
126
+ topK: zod_1.z.number().int().min(1).max(20).optional().default(5),
127
+ });
128
+ exports.KnowledgeReindexSchema = zod_1.z.object({
129
+ vaultPath: zod_1.z.string().min(1).describe('Absolute path to vault directory'),
130
+ });
131
+ exports.CuratorFileSchema = zod_1.z.object({
132
+ vaultPath: zod_1.z.string().min(1).describe('Absolute path to vault directory'),
133
+ fileName: zod_1.z.string().min(1).max(255).describe('Original file name'),
134
+ content: zod_1.z.string().min(1).describe('File content to curate'),
135
+ });
136
+ /**
137
+ * Validate request body against schema
138
+ */
139
+ function validateBody(schema) {
140
+ return (req, res, next) => {
141
+ try {
142
+ const validated = schema.parse(req.body);
143
+ req.validatedBody = validated;
144
+ next();
145
+ }
146
+ catch (err) {
147
+ if (err instanceof zod_1.z.ZodError) {
148
+ return res.status(400).json({
149
+ error: 'Validation failed',
150
+ details: err.errors.map(e => ({
151
+ field: e.path.join('.'),
152
+ message: e.message,
153
+ code: e.code,
154
+ })),
155
+ });
156
+ }
157
+ res.status(400).json({
158
+ error: 'Invalid request',
159
+ message: err.message,
160
+ });
161
+ }
162
+ };
163
+ }
164
+ // ── Request Logging ────────────────────────────────────────────────────────
165
+ function createRequestLogger() {
166
+ return (req, res, next) => {
167
+ const start = Date.now();
168
+ // Log request
169
+ const userId = req.user?.id || 'anonymous';
170
+ console.log(`[${new Date().toISOString()}] ${req.method} ${req.path} (${userId})`);
171
+ // Intercept response
172
+ const originalJson = res.json.bind(res);
173
+ res.json = function (body) {
174
+ const duration = Date.now() - start;
175
+ console.log(`[${new Date().toISOString()}] ${req.method} ${req.path} → ${res.statusCode} (${duration}ms)`);
176
+ return originalJson(body);
177
+ };
178
+ next();
179
+ };
180
+ }
181
+ // ── Error Handler ──────────────────────────────────────────────────────────
182
+ function errorHandler(err, req, res, next) {
183
+ const status = err.status || 500;
184
+ const message = err.message || 'Internal server error';
185
+ console.error(`[ERROR] ${req.method} ${req.path} → ${status}`, { error: message, stack: err.stack });
186
+ res.status(status).json({
187
+ error: status >= 500 ? 'Server error' : 'Client error',
188
+ message,
189
+ ...(process.env.NODE_ENV === 'development' && { stack: err.stack }),
190
+ });
191
+ }
192
+ function createRequestContext(req) {
193
+ return {
194
+ userId: req.user?.id || 'anonymous',
195
+ requestId: crypto.randomUUID(),
196
+ startTime: Date.now(),
197
+ ip: (req.ip || req.socket.remoteAddress || 'unknown'),
198
+ };
199
+ }
200
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/api/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export interface FileChecksum {
2
+ filename: string;
3
+ hash: string;
4
+ size: number;
5
+ modified: string;
6
+ }
7
+ export interface CodexManifest {
8
+ version: '1.0';
9
+ created: string;
10
+ lastUpdated: string;
11
+ inputPath: string;
12
+ outputPath: string;
13
+ files: Record<string, {
14
+ relativePath: string;
15
+ hash: string;
16
+ size: number;
17
+ modified: string;
18
+ analyzedAt: string;
19
+ status: 'success' | 'failed' | 'skipped';
20
+ }>;
21
+ }
22
+ /**
23
+ * Calculate SHA256 hash of a file
24
+ */
25
+ export declare function calculateFileHash(filePath: string): Promise<string>;
26
+ /**
27
+ * Load manifest from INPUT_PATH
28
+ */
29
+ export declare function loadManifest(inputPath: string): Promise<CodexManifest | null>;
30
+ /**
31
+ * Save manifest to INPUT_PATH
32
+ */
33
+ export declare function saveManifest(inputPath: string, manifest: CodexManifest): Promise<void>;
34
+ /**
35
+ * Check if file changed since last analysis
36
+ */
37
+ export declare function hasFileChanged(filePath: string, relativePath: string, manifest: CodexManifest | null): Promise<boolean>;
38
+ /**
39
+ * Create initial manifest
40
+ */
41
+ export declare function createManifest(inputPath: string, outputPath: string): CodexManifest;
42
+ /**
43
+ * Update manifest with file analysis result
44
+ */
45
+ export declare function updateManifestEntry(manifest: CodexManifest, filePath: string, relativePath: string, status: 'success' | 'failed' | 'skipped'): Promise<void>;
46
+ export declare function isCodeFile(filePath: string): boolean;
47
+ export declare function isDocFile(filePath: string): boolean;
48
+ export declare function findAllFiles(dirPath: string, relativePath?: string): Promise<Array<{
49
+ fullPath: string;
50
+ relativePath: string;
51
+ }>>;
52
+ /**
53
+ * Generate analysis report
54
+ */
55
+ export declare function generateReport(manifest: CodexManifest): string;
56
+ //# sourceMappingURL=checksum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC5C,CAAC,CAAC;CACN;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAQnF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC/B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,aAAa,CASf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAAC,IAAI,CAAC,CAYf;AAWD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAsB,YAAY,CAC9B,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,MAAW,GAC1B,OAAO,CAAC,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAqC5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAkB9D"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.calculateFileHash = calculateFileHash;
37
+ exports.loadManifest = loadManifest;
38
+ exports.saveManifest = saveManifest;
39
+ exports.hasFileChanged = hasFileChanged;
40
+ exports.createManifest = createManifest;
41
+ exports.updateManifestEntry = updateManifestEntry;
42
+ exports.isCodeFile = isCodeFile;
43
+ exports.isDocFile = isDocFile;
44
+ exports.findAllFiles = findAllFiles;
45
+ exports.generateReport = generateReport;
46
+ const fs = __importStar(require("node:fs/promises"));
47
+ const crypto = __importStar(require("node:crypto"));
48
+ const path = __importStar(require("node:path"));
49
+ /**
50
+ * Calculate SHA256 hash of a file
51
+ */
52
+ async function calculateFileHash(filePath) {
53
+ const content = await fs.readFile(filePath);
54
+ return crypto.createHash('sha256').update(content).digest('hex');
55
+ }
56
+ /**
57
+ * Load manifest from INPUT_PATH
58
+ */
59
+ async function loadManifest(inputPath) {
60
+ const manifestPath = path.join(inputPath, '.codex-manifest.json');
61
+ try {
62
+ const content = await fs.readFile(manifestPath, 'utf-8');
63
+ return JSON.parse(content);
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ /**
70
+ * Save manifest to INPUT_PATH
71
+ */
72
+ async function saveManifest(inputPath, manifest) {
73
+ const manifestPath = path.join(inputPath, '.codex-manifest.json');
74
+ manifest.lastUpdated = new Date().toISOString();
75
+ await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
76
+ }
77
+ /**
78
+ * Check if file changed since last analysis
79
+ */
80
+ async function hasFileChanged(filePath, relativePath, manifest) {
81
+ if (!manifest)
82
+ return true;
83
+ const entry = manifest.files[relativePath];
84
+ if (!entry)
85
+ return true;
86
+ const currentHash = await calculateFileHash(filePath);
87
+ return currentHash !== entry.hash;
88
+ }
89
+ /**
90
+ * Create initial manifest
91
+ */
92
+ function createManifest(inputPath, outputPath) {
93
+ return {
94
+ version: '1.0',
95
+ created: new Date().toISOString(),
96
+ lastUpdated: new Date().toISOString(),
97
+ inputPath,
98
+ outputPath,
99
+ files: {},
100
+ };
101
+ }
102
+ /**
103
+ * Update manifest with file analysis result
104
+ */
105
+ async function updateManifestEntry(manifest, filePath, relativePath, status) {
106
+ const stat = await fs.stat(filePath);
107
+ const hash = await calculateFileHash(filePath);
108
+ manifest.files[relativePath] = {
109
+ relativePath,
110
+ hash,
111
+ size: stat.size,
112
+ modified: new Date(stat.mtime).toISOString(),
113
+ analyzedAt: new Date().toISOString(),
114
+ status,
115
+ };
116
+ }
117
+ /**
118
+ * Recursively find all code and documentation files
119
+ */
120
+ const CODE_EXTENSIONS = [
121
+ '.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.rs', '.java', '.c', '.cpp', '.kt', '.swift',
122
+ ];
123
+ const DOC_EXTENSIONS = ['.md', '.txt'];
124
+ function isCodeFile(filePath) {
125
+ return CODE_EXTENSIONS.some(ext => filePath.toLowerCase().endsWith(ext));
126
+ }
127
+ function isDocFile(filePath) {
128
+ return DOC_EXTENSIONS.some(ext => filePath.toLowerCase().endsWith(ext));
129
+ }
130
+ async function findAllFiles(dirPath, relativePath = '') {
131
+ const results = [];
132
+ try {
133
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
134
+ for (const entry of entries) {
135
+ if (entry.name.startsWith('.') ||
136
+ entry.name === 'node_modules' ||
137
+ entry.name === 'dist' ||
138
+ entry.name === 'build' ||
139
+ entry.name === '.git' ||
140
+ entry.name === '.venv' ||
141
+ entry.name === 'venv' ||
142
+ entry.name === '__pycache__') {
143
+ continue;
144
+ }
145
+ const fullPath = path.join(dirPath, entry.name);
146
+ const relPath = relativePath ? path.join(relativePath, entry.name) : entry.name;
147
+ if (entry.isDirectory()) {
148
+ const subResults = await findAllFiles(fullPath, relPath);
149
+ results.push(...subResults);
150
+ }
151
+ else if (entry.isFile()) {
152
+ const hasCodeExt = isCodeFile(entry.name);
153
+ const hasDocExt = isDocFile(entry.name);
154
+ if (hasCodeExt || hasDocExt) {
155
+ results.push({ fullPath, relativePath: relPath });
156
+ }
157
+ }
158
+ }
159
+ }
160
+ catch (err) {
161
+ console.error(`Error reading directory ${dirPath}: ${err.message}`);
162
+ }
163
+ return results;
164
+ }
165
+ /**
166
+ * Generate analysis report
167
+ */
168
+ function generateReport(manifest) {
169
+ const entries = Object.values(manifest.files);
170
+ const succeeded = entries.filter(e => e.status === 'success').length;
171
+ const failed = entries.filter(e => e.status === 'failed').length;
172
+ const skipped = entries.filter(e => e.status === 'skipped').length;
173
+ return `
174
+ 📊 Code Analysis Report
175
+ ───────────────────────
176
+ Total Files: ${entries.length}
177
+ ✓ Analyzed: ${succeeded}
178
+ ✗ Failed: ${failed}
179
+ ⊘ Skipped: ${skipped}
180
+ Processed: ${succeeded + failed} / ${entries.length}
181
+ Efficiency: ${skipped > 0 ? `${Math.round((skipped / entries.length) * 100)}% of files unchanged` : 'All files processed'}
182
+
183
+ Last Updated: ${new Date(manifest.lastUpdated).toLocaleString()}
184
+ `;
185
+ }
186
+ //# sourceMappingURL=checksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CuratorLLMProvider } from './providers/types.js';
2
+ import type { CodeAnalysisResult } from './types.js';
3
+ export interface DocumentationCuratorOptions {
4
+ provider: CuratorLLMProvider;
5
+ vaultPath: string;
6
+ maxInputChars?: number;
7
+ }
8
+ export declare class DocumentationCurator {
9
+ private readonly provider;
10
+ private readonly vaultPath;
11
+ private readonly maxInputChars;
12
+ constructor(opts: DocumentationCuratorOptions);
13
+ curateText(text: string, source: string, areaHint?: string): Promise<CodeAnalysisResult>;
14
+ curateFile(filePath: string, areaHint?: string): Promise<CodeAnalysisResult>;
15
+ private callLLM;
16
+ private writeNote;
17
+ }
18
+ //# sourceMappingURL=documentation-curator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-curator.d.ts","sourceRoot":"","sources":["../src/documentation-curator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2GrD,MAAM,WAAW,2BAA2B;IACxC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,IAAI,EAAE,2BAA2B;IAMvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2CxF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAmBpE,OAAO;YAyBP,SAAS;CAiB1B"}