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

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);