Nicolas Cantu 69ab265560 feat: initial RAG sync with .4nkaiignore (extension 0.3, server 0.2)
**Motivations:**
- Seed AnythingLLM workspace from cloned repo using gitignore-style filters

**Root causes:**
- N/A

**Correctifs:**
- N/A

**Evolutions:**
- Template 4nkaiignore.default; server copies after clone; extension uploads via POST /api/v1/document/upload
- New commands /workspace-sync; settings initialSync*; dependency ignore

**Pages affectées:**
- extensions/anythingllm-workspaces/*
- services/repos-devtools-server/*
- docs/features/initial-rag-sync-4nkaiignore.md
2026-03-24 22:36:37 +01:00

57 lines
1.7 KiB
TypeScript

import * as http from "node:http";
import { readExpectedToken, requireBearer } from "./auth.js";
import {
handleReposClone,
handleReposList,
handleReposLoad,
} from "./handlers.js";
const HOST = process.env.REPOS_DEVTOOLS_HOST ?? "127.0.0.1";
const PORT = Number(process.env.REPOS_DEVTOOLS_PORT ?? "37140");
const main = (): void => {
const token = readExpectedToken();
if (token.length === 0) {
console.error("repos-devtools-server: set REPOS_DEVTOOLS_TOKEN (non-empty secret).");
process.exit(1);
}
const server = http.createServer((req, res) => {
void (async () => {
try {
if (!requireBearer(req, res, token)) {
return;
}
const url = new URL(req.url ?? "/", `http://${HOST}`);
const p = url.pathname;
if (req.method === "POST" && p === "/repos-clone") {
await handleReposClone(req, res);
return;
}
if (req.method === "GET" && p === "/repos-list") {
await handleReposList(res);
return;
}
if (req.method === "POST" && p === "/repos-load") {
await handleReposLoad(req, res);
return;
}
res.writeHead(404, { "Content-Type": "application/json; charset=utf-8" });
res.end(JSON.stringify({ error: "Not found" }));
} catch (e) {
const msg = e instanceof Error ? e.message : String(e);
res.writeHead(400, { "Content-Type": "application/json; charset=utf-8" });
res.end(JSON.stringify({ error: msg }));
}
})();
});
server.listen(PORT, HOST, () => {
console.error(
`repos-devtools-server listening on http://${HOST}:${PORT} (root=${process.env.REPOS_DEVTOOLS_ROOT ?? "/home/ncantu/code"})`,
);
});
};
main();