mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 07:48:37 +01:00
add ai plugins
This commit is contained in:
78
dashboard/server/ai/functions/AI_Snapshots.ts
Normal file
78
dashboard/server/ai/functions/AI_Snapshots.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
import { AIPlugin } from "../Plugin";
|
||||
import { ProjectModel } from "@schema/project/ProjectSchema";
|
||||
import { ProjectSnapshotModel } from "@schema/project/ProjectSnapshot";
|
||||
|
||||
export class AiSnapshot extends AIPlugin<[
|
||||
'getSnapshots',
|
||||
'createSnapshot',
|
||||
]> {
|
||||
|
||||
constructor() {
|
||||
super({
|
||||
|
||||
'getSnapshots': {
|
||||
handler: async (data: { project_id: string }) => {
|
||||
const snapshots = await ProjectSnapshotModel.find({ project_id: data.project_id });
|
||||
return snapshots.map(e => e.toJSON());
|
||||
},
|
||||
tool: {
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'getSnapshots',
|
||||
description: 'Gets the snapshots list',
|
||||
parameters: {}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
'createSnapshot': {
|
||||
handler: async (data: { project_id: string, from: string, to: string, color: string, name: string }) => {
|
||||
|
||||
if (!data.name) return { error: 'SnapshotName too short' }
|
||||
if (data.name.length == 0) return { error: 'SnapshotName too short' }
|
||||
|
||||
if (!data.from) return { error: 'from is required' }
|
||||
if (!data.to) return { error: 'to is required' }
|
||||
if (!data.color) return { error: 'color is required' }
|
||||
|
||||
const project = await ProjectModel.findById(data.project_id);
|
||||
if (!project) return { error: 'Project not found' }
|
||||
|
||||
|
||||
const newSnapshot = await ProjectSnapshotModel.create({
|
||||
name: data.name,
|
||||
from: new Date(data.from),
|
||||
to: new Date(data.to),
|
||||
color: data.color,
|
||||
project_id: data.project_id
|
||||
});
|
||||
|
||||
return newSnapshot.id;
|
||||
|
||||
|
||||
},
|
||||
tool: {
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'createSnapshot',
|
||||
description: 'Create a snapshot',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
from: { type: 'string', description: 'ISO string of start date' },
|
||||
to: { type: 'string', description: 'ISO string of end date' },
|
||||
color: { type: 'string', description: 'Color of the snapshot in HEX' },
|
||||
name: { type: 'string', description: 'Name of the snapshot' }
|
||||
},
|
||||
required: ['from', 'to', 'color', 'name']
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const AiSnapshotInstance = new AiSnapshot();
|
||||
Reference in New Issue
Block a user