mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-11-19 20:50:09 +01:00
2a556c275c
* 1. Define LLM Temperature as a workspace setting 2. Implement rudimentry table migration code for both new and existing repos to bring tables up to date 3. Trigger for workspace on update to update timestamp 4. Always fallback temp to 0.7 5. Extract WorkspaceModal into Tabbed content 6. Remove workspace name UNIQUE constraint (cannot be migrated :() 7. Add slug +seed when existing slug is already take 8. Seperate name from slug so display names can be changed * remove blocking test return
94 lines
2.6 KiB
JavaScript
94 lines
2.6 KiB
JavaScript
process.env.NODE_ENV === "development"
|
|
? require("dotenv").config({ path: `.env.${process.env.NODE_ENV}` })
|
|
: require("dotenv").config();
|
|
|
|
const express = require("express");
|
|
const bodyParser = require("body-parser");
|
|
const cors = require("cors");
|
|
const path = require("path");
|
|
const { validatedRequest } = require("./utils/middleware/validatedRequest");
|
|
const { reqBody } = require("./utils/http");
|
|
const { systemEndpoints } = require("./endpoints/system");
|
|
const { workspaceEndpoints } = require("./endpoints/workspaces");
|
|
const { chatEndpoints } = require("./endpoints/chat");
|
|
const { getVectorDbClass } = require("./utils/helpers");
|
|
const { validateTablePragmas } = require("./utils/database");
|
|
const app = express();
|
|
const apiRouter = express.Router();
|
|
|
|
app.use(cors({ origin: true }));
|
|
app.use(bodyParser.text());
|
|
app.use(bodyParser.json());
|
|
app.use(
|
|
bodyParser.urlencoded({
|
|
extended: true,
|
|
})
|
|
);
|
|
|
|
apiRouter.use("/system/*", validatedRequest);
|
|
systemEndpoints(apiRouter);
|
|
|
|
apiRouter.use("/workspace/*", validatedRequest);
|
|
workspaceEndpoints(apiRouter);
|
|
chatEndpoints(apiRouter);
|
|
|
|
apiRouter.post("/v/:command", async (request, response) => {
|
|
try {
|
|
const VectorDb = getVectorDbClass();
|
|
const { command } = request.params;
|
|
if (!Object.getOwnPropertyNames(VectorDb).includes(command)) {
|
|
response.status(500).json({
|
|
message: "invalid interface command",
|
|
commands: Object.getOwnPropertyNames(VectorDb),
|
|
});
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const body = reqBody(request);
|
|
const resBody = await VectorDb[command](body);
|
|
response.status(200).json({ ...resBody });
|
|
} catch (e) {
|
|
// console.error(e)
|
|
console.error(JSON.stringify(e));
|
|
response.status(500).json({ error: e.message });
|
|
}
|
|
return;
|
|
} catch (e) {
|
|
console.log(e.message, e);
|
|
response.sendStatus(500).end();
|
|
}
|
|
});
|
|
|
|
app.use("/api", apiRouter);
|
|
|
|
if (process.env.NODE_ENV !== "development") {
|
|
app.use(
|
|
express.static(path.resolve(__dirname, "public"), { extensions: ["js"] })
|
|
);
|
|
|
|
app.use("/", function (_, response) {
|
|
response.sendFile(path.join(__dirname, "public", "index.html"));
|
|
});
|
|
}
|
|
|
|
app.all("*", function (_, response) {
|
|
response.sendStatus(404);
|
|
});
|
|
|
|
app
|
|
.listen(process.env.SERVER_PORT || 3001, async () => {
|
|
await validateTablePragmas();
|
|
console.log(
|
|
`Example app listening on port ${process.env.SERVER_PORT || 3001}`
|
|
);
|
|
})
|
|
.on("error", function (err) {
|
|
process.once("SIGUSR2", function () {
|
|
process.kill(process.pid, "SIGUSR2");
|
|
});
|
|
process.on("SIGINT", function () {
|
|
process.kill(process.pid, "SIGINT");
|
|
});
|
|
});
|