You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
const express = require('express');
|
|
require('dotenv').config()
|
|
const fs = require('fs');
|
|
const { execSync } = require('child_process');
|
|
|
|
const app = express()
|
|
app.use(express.json())
|
|
|
|
app.use((req, res, next) => {
|
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
|
|
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
res.setHeader("Access-Control-Allow-Private-Network", "true");
|
|
|
|
if (req.method === "OPTIONS") {
|
|
return res.status(204).end();
|
|
}
|
|
next();
|
|
});
|
|
|
|
//const cors = require('cors');
|
|
//app.use(cors());
|
|
|
|
app.post('/prompt', (req, res)=>{
|
|
|
|
const resumeFlag = process.env.SESSIONID ? `--resume "${process.env.SESSIONID}"` : '';
|
|
const result = execSync(
|
|
`cd /home/matt/pathfinder && claude -p "${req.body.message}" ${resumeFlag} --output-format json --allowedTools "Bash(*)" "Read(*)" "Write(*)" "Edit(*)"`,
|
|
{ encoding: 'utf-8', timeout: 120000 }
|
|
);
|
|
fs.writeFileSync('.env', `SESSIONID="${JSON.parse(result).session_id}"`, 'utf8');
|
|
res.json(JSON.parse(result))
|
|
|
|
})
|
|
|
|
app.listen(3000);
|