Files
sitemente/app/api/command-history/route.ts
T

85 lines
2.4 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import * as fs from 'fs'
import * as path from 'path'
const commandFile = path.join(process.cwd(), 'task-history.json')
export async function GET(request: NextRequest) {
try {
let history = []
if (fs.existsSync(commandFile)) {
history = JSON.parse(fs.readFileSync(commandFile, 'utf-8'))
}
const { searchParams } = new URL(request.url)
const project = searchParams.get('project')
if (project && project !== 'all') {
history = history.filter((h: any) => h.project === project)
}
return NextResponse.json({ history })
} catch (error) {
console.error('Error reading history:', error)
return NextResponse.json({ history: [] })
}
}
export async function POST(request: NextRequest) {
try {
const body = await request.json()
const { task, command, project, action } = body
let history = []
if (fs.existsSync(commandFile)) {
history = JSON.parse(fs.readFileSync(commandFile, 'utf-8'))
}
const entry = {
id: Date.now().toString(),
task,
command,
project: project || 'sitemente',
reply: '',
action: action || 'task',
createdAt: new Date().toISOString(),
status: 'pending',
notified: false
}
history.push(entry)
// Keep only last 50 entries
if (history.length > 50) {
history = history.slice(-50)
}
fs.writeFileSync(commandFile, JSON.stringify(history, null, 2))
// Send Telegram notification to Horus
try {
const tgMessage = `📬 *New Task from MC*\n\n*Project:* ${project || 'sitemente'}\n*Task:* ${task}\n*Command:* ${command}\n\n_Reply via /api/command-reply/{id}_`
// Use message tool to notify (will work if Telegram is configured)
const { spawn } = require('child_process')
spawn('curl', ['-s', '-X', 'POST',
'http://localhost:3000/api/messages/send',
'-H', 'Content-Type: application/json',
'-d', JSON.stringify({
channel: 'telegram',
target: '382315644',
message: tgMessage
})
], { detached: true, stdio: 'ignore' })
} catch (e) {
console.log('Telegram notification skipped')
}
return NextResponse.json({ success: true, entry })
} catch (error) {
console.error('Error saving history:', error)
return NextResponse.json({ error: 'Failed to save' }, { status: 500 })
}
}