61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
import axios from "axios";
|
|
import path from "path";
|
|
import { LOCAL_SERVER_URL, getLocalServerHeaders } from "../../config/index.js";
|
|
|
|
export function getCurrentProjectInfo() {
|
|
const projectDir = process.env.ACAI_PROJECT_DIR || "";
|
|
if (!projectDir) {
|
|
throw new Error("ACAI_PROJECT_DIR not set");
|
|
}
|
|
return {
|
|
projectDir,
|
|
projectSlug: path.basename(path.resolve(projectDir)),
|
|
};
|
|
}
|
|
|
|
export async function callLocalFileEndpoint(method, endpoint, payload = null, query = null) {
|
|
const headers = getLocalServerHeaders();
|
|
if (method === "GET") {
|
|
const response = await axios.get(`${LOCAL_SERVER_URL}${endpoint}`, {
|
|
params: query || undefined,
|
|
headers,
|
|
timeout: 30000,
|
|
validateStatus: (status) => status < 600,
|
|
});
|
|
return { status: response.status, data: response.data };
|
|
}
|
|
|
|
const response = await axios.post(`${LOCAL_SERVER_URL}${endpoint}`, payload || {}, {
|
|
headers,
|
|
timeout: 30000,
|
|
validateStatus: (status) => status < 600,
|
|
});
|
|
return { status: response.status, data: response.data };
|
|
}
|
|
|
|
export function buildLocalFileErrorResponse(toolName, result, extra = {}) {
|
|
const payload = result?.data || {};
|
|
const message =
|
|
payload.message ||
|
|
payload.error ||
|
|
payload.compileError ||
|
|
`HTTP ${result?.status || 500}`;
|
|
|
|
return {
|
|
content: [{
|
|
type: "text",
|
|
text: JSON.stringify({
|
|
success: false,
|
|
error: {
|
|
code: `HTTP_${result.status}`,
|
|
message,
|
|
context: toolName,
|
|
...extra,
|
|
...payload,
|
|
},
|
|
}, null, 2),
|
|
}],
|
|
isError: true,
|
|
};
|
|
}
|