**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
57 lines
1.7 KiB
TypeScript
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();
|