- Add agent-run module to handle AI interactions with tools and messages. - Create routes for proxying requests to OpenAI and Anthropic APIs. - Implement flowme-life chat route for user queries and task management. - Add services for retrieving and updating life records in the database. - Implement logic for fetching today's tasks and marking tasks as done with next execution time calculation. - Introduce tests for flowme-life functionalities.
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { CNB } from '@kevisual/cnb/src/index.ts'
|
|
import { UserModel } from '../../../auth/index.ts';
|
|
import { CustomError } from '@kevisual/router';
|
|
|
|
export class CnbServices {
|
|
cnb: CNB;
|
|
constructor(token?: string) {
|
|
this.cnb = new CNB({
|
|
token,
|
|
});
|
|
}
|
|
|
|
async login(): Promise<ReturnType<typeof UserModel.prototype.createToken>> {
|
|
const cnbUserRes = await this.cnb.user.getUser();
|
|
if (cnbUserRes.code !== 200) {
|
|
throw new CustomError('CNB Token is invalid');
|
|
}
|
|
const cnbUser = cnbUserRes?.data;
|
|
const cnbUserId = cnbUser?.id
|
|
if (!cnbUserId) {
|
|
throw new CustomError('CNB User ID is missing');
|
|
}
|
|
let user = await UserModel.findByCnbId(cnbUserId);
|
|
if (!user) {
|
|
const username = '@cnb-' + cnbUser.username;
|
|
// 如果用户不存在,创建一个新用户
|
|
user = await UserModel.createUser(username, cnbUserId);
|
|
user.data = {
|
|
...user.data,
|
|
cnbId: cnbUserId,
|
|
}
|
|
await user.save();
|
|
}
|
|
const token = await user.createToken();
|
|
return token;
|
|
}
|
|
} |