@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,41 @@
1
+ export interface CodeAnalysisNote {
2
+ type: 'componente' | 'api' | 'patron' | 'utilidad' | 'arquitectura' | 'integracion';
3
+ area: 'general' | 'backend' | 'frontend' | 'devops' | 'infraestructura';
4
+ title: string;
5
+ resumen: string;
6
+ content: string;
7
+ tags: string[];
8
+ vigente_desde?: string;
9
+ version?: number;
10
+ expires_at?: string;
11
+ depends_on?: string[];
12
+ exports?: string[];
13
+ language?: string;
14
+ files?: string[];
15
+ }
16
+ export interface CodeAnalysisResponse {
17
+ notes: CodeAnalysisNote[];
18
+ }
19
+ export interface CodeAnalysisResult {
20
+ notesWritten: string[];
21
+ notesSkipped: string[];
22
+ errors: string[];
23
+ durationMs: number;
24
+ filesAnalyzed?: string[];
25
+ }
26
+ export interface AssociatedDocs {
27
+ codeFile: string;
28
+ docFile?: string;
29
+ contextFile?: string;
30
+ readmeFile?: string;
31
+ }
32
+ export interface FileAnalysisContext {
33
+ fullPath: string;
34
+ relativePath: string;
35
+ language: string;
36
+ codeContent: string;
37
+ docContent?: string;
38
+ contextContent?: string;
39
+ readmeContent?: string;
40
+ }
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAC;IACpF,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Code analysis types
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,sBAAsB"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * curator-codex-watcher — autonomous code analysis service
4
+ *
5
+ * Analyzes source code files recursively, extracts knowledge, and curates into vault.
6
+ *
7
+ * Required env vars:
8
+ * CURATOR_API_KEY — DeepSeek / OpenAI-compatible API key
9
+ * CURATOR_OUTPUT_PATH — absolute path to the shared vault (where notes are written)
10
+ *
11
+ * Optional:
12
+ * CURATOR_INPUT_PATH — path to code to analyze (if set: process once; if not: watch vault/incoming/)
13
+ * CURATOR_MODEL — LLM model (default: deepseek-reasoner)
14
+ * CURATOR_BASE_URL — LLM base URL
15
+ * CURATOR_POLL_MS — polling interval in ms (default: 30 000)
16
+ *
17
+ * Modes:
18
+ * Mode 1 (Watcher): no CURATOR_INPUT_PATH → watch vault/incoming/ for new files
19
+ * Mode 2 (Direct): CURATOR_INPUT_PATH set → process code once with progress bar
20
+ *
21
+ * Run:
22
+ * # Mode 2: Direct code analysis
23
+ * CURATOR_INPUT_PATH=/project CURATOR_OUTPUT_PATH=/vault CURATOR_API_KEY=sk-... node dist/watcher.js
24
+ */
25
+ export {};
26
+ //# sourceMappingURL=watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,168 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * curator-codex-watcher — autonomous code analysis service
5
+ *
6
+ * Analyzes source code files recursively, extracts knowledge, and curates into vault.
7
+ *
8
+ * Required env vars:
9
+ * CURATOR_API_KEY — DeepSeek / OpenAI-compatible API key
10
+ * CURATOR_OUTPUT_PATH — absolute path to the shared vault (where notes are written)
11
+ *
12
+ * Optional:
13
+ * CURATOR_INPUT_PATH — path to code to analyze (if set: process once; if not: watch vault/incoming/)
14
+ * CURATOR_MODEL — LLM model (default: deepseek-reasoner)
15
+ * CURATOR_BASE_URL — LLM base URL
16
+ * CURATOR_POLL_MS — polling interval in ms (default: 30 000)
17
+ *
18
+ * Modes:
19
+ * Mode 1 (Watcher): no CURATOR_INPUT_PATH → watch vault/incoming/ for new files
20
+ * Mode 2 (Direct): CURATOR_INPUT_PATH set → process code once with progress bar
21
+ *
22
+ * Run:
23
+ * # Mode 2: Direct code analysis
24
+ * CURATOR_INPUT_PATH=/project CURATOR_OUTPUT_PATH=/vault CURATOR_API_KEY=sk-... node dist/watcher.js
25
+ */
26
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
33
+ }) : (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ o[k2] = m[k];
36
+ }));
37
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
38
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
39
+ }) : function(o, v) {
40
+ o["default"] = v;
41
+ });
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ Object.defineProperty(exports, "__esModule", { value: true });
60
+ const fsSync = __importStar(require("node:fs"));
61
+ const analyzer_js_1 = require("./analyzer.js");
62
+ const index_js_1 = require("./providers/index.js");
63
+ const checksum_js_1 = require("./checksum.js");
64
+ const VAULT_PATH = process.env.CURATOR_OUTPUT_PATH ?? '';
65
+ const INPUT_PATH = process.env.CURATOR_INPUT_PATH ?? null;
66
+ const POLL_MS = parseInt(process.env.CURATOR_POLL_MS ?? '30000');
67
+ function validate() {
68
+ if (!process.env.CURATOR_API_KEY) {
69
+ console.error('āœ— CURATOR_API_KEY is required');
70
+ process.exit(1);
71
+ }
72
+ if (!VAULT_PATH) {
73
+ console.error('āœ— CURATOR_OUTPUT_PATH is required');
74
+ process.exit(1);
75
+ }
76
+ if (INPUT_PATH) {
77
+ try {
78
+ fsSync.accessSync(INPUT_PATH, fsSync.constants.R_OK);
79
+ }
80
+ catch {
81
+ console.error(`āœ— CURATOR_INPUT_PATH not readable: ${INPUT_PATH}`);
82
+ process.exit(1);
83
+ }
84
+ }
85
+ }
86
+ function makeAnalyzer() {
87
+ return new analyzer_js_1.CodeAnalyzer({ provider: (0, index_js_1.createProvider)(), vaultPath: VAULT_PATH });
88
+ }
89
+ function log(msg) {
90
+ console.log(`[codex-watcher] ${new Date().toISOString().slice(11, 19)} ${msg}`);
91
+ }
92
+ function buildProgressBar(current, total, width = 40) {
93
+ const percent = Math.round((current / total) * 100);
94
+ const filled = Math.round((width * current) / total);
95
+ const bar = 'ā–ˆ'.repeat(filled) + 'ā–‘'.repeat(width - filled);
96
+ return `[${bar}] ${percent}%`;
97
+ }
98
+ async function processInputDirectory() {
99
+ if (!INPUT_PATH)
100
+ return;
101
+ let files;
102
+ try {
103
+ files = await (0, checksum_js_1.findAllFiles)(INPUT_PATH);
104
+ files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
105
+ }
106
+ catch (err) {
107
+ log(`āœ— Failed to read INPUT_PATH: ${err.message}`);
108
+ return;
109
+ }
110
+ if (files.length === 0) {
111
+ log(`ℹ No code files found in ${INPUT_PATH}`);
112
+ return;
113
+ }
114
+ let manifest = await (0, checksum_js_1.loadManifest)(INPUT_PATH);
115
+ if (!manifest) {
116
+ manifest = (0, checksum_js_1.createManifest)(INPUT_PATH, VAULT_PATH);
117
+ log(`\nšŸ’” No manifest found. Will analyze ALL ${files.length} files to build initial index.\n`);
118
+ }
119
+ console.log(`\nšŸ” Analyzing ${files.length} code files...\n`);
120
+ let succeeded = 0;
121
+ let failed = 0;
122
+ let skipped = 0;
123
+ for (let i = 0; i < files.length; i++) {
124
+ const { fullPath: filePath, relativePath } = files[i];
125
+ const counter = `[${i + 1}/${files.length}]`;
126
+ const progressBar = buildProgressBar(i + 1, files.length);
127
+ try {
128
+ const changed = await (0, checksum_js_1.hasFileChanged)(filePath, relativePath, manifest);
129
+ if (!changed) {
130
+ console.log(` ${counter} ${progressBar} ${relativePath}... ⊘ (unchanged)`);
131
+ await (0, checksum_js_1.updateManifestEntry)(manifest, filePath, relativePath, 'skipped');
132
+ skipped++;
133
+ }
134
+ else {
135
+ process.stdout.write(` ${counter} ${progressBar} ${relativePath}... `);
136
+ const analyzer = makeAnalyzer();
137
+ await analyzer.analyzeFile(filePath, relativePath, files);
138
+ succeeded++;
139
+ await (0, checksum_js_1.updateManifestEntry)(manifest, filePath, relativePath, 'success');
140
+ console.log('āœ“');
141
+ }
142
+ }
143
+ catch (err) {
144
+ console.log(`āœ— ${err.message}`);
145
+ failed++;
146
+ await (0, checksum_js_1.updateManifestEntry)(manifest, filePath, relativePath, 'failed');
147
+ }
148
+ console.log('');
149
+ }
150
+ await (0, checksum_js_1.saveManifest)(INPUT_PATH, manifest);
151
+ console.log((0, checksum_js_1.generateReport)(manifest));
152
+ }
153
+ async function main() {
154
+ validate();
155
+ log(`Vault: ${VAULT_PATH}`);
156
+ log(`Mode: ${INPUT_PATH ? 'Process INPUT_PATH once' : 'Watch vault/incoming/'}`);
157
+ if (INPUT_PATH)
158
+ log(`Input: ${INPUT_PATH}`);
159
+ log(`Provider: ${process.env.CURATOR_PROVIDER ?? 'deepseek'}`);
160
+ log(`Model: ${process.env.CURATOR_MODEL ?? 'deepseek-reasoner'}`);
161
+ await processInputDirectory();
162
+ process.exit(0);
163
+ }
164
+ main().catch(err => {
165
+ console.error(`[codex-watcher] Fatal: ${err.message}`);
166
+ process.exit(1);
167
+ });
168
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@backendkit-labs/curator-codex-agent",
3
+ "version": "0.2.0",
4
+ "description": "Codex Curator — intelligent source code analysis and knowledge extraction into enterprise vaults using LLM reasoning.",
5
+ "main": "dist/server.js",
6
+ "bin": {
7
+ "curator-codex-agent": "./dist/server.js",
8
+ "curator-codex-watcher": "./dist/watcher.js",
9
+ "curator-codex-http": "./dist/http-server-main.js"
10
+ },
11
+ "files": [
12
+ "dist/",
13
+ "AGENT.md"
14
+ ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/BackendKit-labs/backendkit-agents.git",
18
+ "directory": "packages/curator-codex-agent"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "license": "MIT",
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "exports": {
28
+ ".": "./dist/index.js",
29
+ "./providers": "./dist/providers/index.js"
30
+ },
31
+ "scripts": {
32
+ "build": "tsc --noCheck",
33
+ "dev": "tsx src/analyzer.ts",
34
+ "start": "node -r dotenv/config dist/server.js",
35
+ "watch-code": "node -r dotenv/config dist/watcher.js",
36
+ "http-server": "node -r dotenv/config dist/http-server-main.js",
37
+ "http-dev": "tsx src/http-server-main.ts",
38
+ "typecheck": "tsc --noEmit",
39
+ "prepublishOnly": "npm run build"
40
+ },
41
+ "dependencies": {
42
+ "@anthropic-ai/sdk": "^0.55.0",
43
+ "@backendkit-labs/agent-core": "^0.20.2",
44
+ "@backendkit-labs/agent-enterprise": "^0.3.6",
45
+ "@backendkit-labs/console-animations": "^0.1.3",
46
+ "@modelcontextprotocol/sdk": "^1.12.0",
47
+ "dotenv": "^16.4.5",
48
+ "express": "^4.18.0",
49
+ "express-rate-limit": "^7.1.0",
50
+ "openai": "^4.0.0",
51
+ "winston": "^3.11.0",
52
+ "zod": "^3.25.0"
53
+ },
54
+ "devDependencies": {
55
+ "@types/node": "^20.0.0",
56
+ "typescript": "^5.4.0"
57
+ }
58
+ }