@octo-cyber/sea-king 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controllers/character.controller.d.ts +10 -0
- package/dist/controllers/character.controller.d.ts.map +1 -0
- package/dist/controllers/character.controller.js +58 -0
- package/dist/controllers/character.controller.js.map +1 -0
- package/dist/controllers/chat.controller.d.ts +13 -0
- package/dist/controllers/chat.controller.d.ts.map +1 -0
- package/dist/controllers/chat.controller.js +113 -0
- package/dist/controllers/chat.controller.js.map +1 -0
- package/dist/controllers/crisis.controller.d.ts +10 -0
- package/dist/controllers/crisis.controller.d.ts.map +1 -0
- package/dist/controllers/crisis.controller.js +69 -0
- package/dist/controllers/crisis.controller.js.map +1 -0
- package/dist/controllers/index.d.ts +10 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +24 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/leaderboard.controller.d.ts +9 -0
- package/dist/controllers/leaderboard.controller.d.ts.map +1 -0
- package/dist/controllers/leaderboard.controller.js +51 -0
- package/dist/controllers/leaderboard.controller.js.map +1 -0
- package/dist/controllers/live-chat.controller.d.ts +14 -0
- package/dist/controllers/live-chat.controller.d.ts.map +1 -0
- package/dist/controllers/live-chat.controller.js +95 -0
- package/dist/controllers/live-chat.controller.js.map +1 -0
- package/dist/controllers/matchmaking.controller.d.ts +22 -0
- package/dist/controllers/matchmaking.controller.d.ts.map +1 -0
- package/dist/controllers/matchmaking.controller.js +157 -0
- package/dist/controllers/matchmaking.controller.js.map +1 -0
- package/dist/controllers/phrase.controller.d.ts +11 -0
- package/dist/controllers/phrase.controller.d.ts.map +1 -0
- package/dist/controllers/phrase.controller.js +78 -0
- package/dist/controllers/phrase.controller.js.map +1 -0
- package/dist/controllers/profile.controller.d.ts +9 -0
- package/dist/controllers/profile.controller.d.ts.map +1 -0
- package/dist/controllers/profile.controller.js +44 -0
- package/dist/controllers/profile.controller.js.map +1 -0
- package/dist/controllers/turing.controller.d.ts +18 -0
- package/dist/controllers/turing.controller.d.ts.map +1 -0
- package/dist/controllers/turing.controller.js +103 -0
- package/dist/controllers/turing.controller.js.map +1 -0
- package/dist/entities/chat-character.entity.d.ts +34 -0
- package/dist/entities/chat-character.entity.d.ts.map +1 -0
- package/dist/entities/chat-character.entity.js +101 -0
- package/dist/entities/chat-character.entity.js.map +1 -0
- package/dist/entities/chat-message.entity.d.ts +26 -0
- package/dist/entities/chat-message.entity.d.ts.map +1 -0
- package/dist/entities/chat-message.entity.js +84 -0
- package/dist/entities/chat-message.entity.js.map +1 -0
- package/dist/entities/chat-session.entity.d.ts +31 -0
- package/dist/entities/chat-session.entity.d.ts.map +1 -0
- package/dist/entities/chat-session.entity.js +95 -0
- package/dist/entities/chat-session.entity.js.map +1 -0
- package/dist/entities/chat-thread.entity.d.ts +30 -0
- package/dist/entities/chat-thread.entity.d.ts.map +1 -0
- package/dist/entities/chat-thread.entity.js +105 -0
- package/dist/entities/chat-thread.entity.js.map +1 -0
- package/dist/entities/crisis-event.entity.d.ts +30 -0
- package/dist/entities/crisis-event.entity.d.ts.map +1 -0
- package/dist/entities/crisis-event.entity.js +90 -0
- package/dist/entities/crisis-event.entity.js.map +1 -0
- package/dist/entities/index.d.ts +38 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +62 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/leaderboard-entry.entity.d.ts +22 -0
- package/dist/entities/leaderboard-entry.entity.d.ts.map +1 -0
- package/dist/entities/leaderboard-entry.entity.js +75 -0
- package/dist/entities/leaderboard-entry.entity.js.map +1 -0
- package/dist/entities/live-message.entity.d.ts +34 -0
- package/dist/entities/live-message.entity.d.ts.map +1 -0
- package/dist/entities/live-message.entity.js +99 -0
- package/dist/entities/live-message.entity.js.map +1 -0
- package/dist/entities/live-thread.entity.d.ts +50 -0
- package/dist/entities/live-thread.entity.d.ts.map +1 -0
- package/dist/entities/live-thread.entity.js +144 -0
- package/dist/entities/live-thread.entity.js.map +1 -0
- package/dist/entities/match-room.entity.d.ts +44 -0
- package/dist/entities/match-room.entity.d.ts.map +1 -0
- package/dist/entities/match-room.entity.js +131 -0
- package/dist/entities/match-room.entity.js.map +1 -0
- package/dist/entities/phrase-template.entity.d.ts +28 -0
- package/dist/entities/phrase-template.entity.d.ts.map +1 -0
- package/dist/entities/phrase-template.entity.js +84 -0
- package/dist/entities/phrase-template.entity.js.map +1 -0
- package/dist/entities/player-profile.entity.d.ts +36 -0
- package/dist/entities/player-profile.entity.d.ts.map +1 -0
- package/dist/entities/player-profile.entity.js +112 -0
- package/dist/entities/player-profile.entity.js.map +1 -0
- package/dist/entities/player-queue.entity.d.ts +24 -0
- package/dist/entities/player-queue.entity.d.ts.map +1 -0
- package/dist/entities/player-queue.entity.js +76 -0
- package/dist/entities/player-queue.entity.js.map +1 -0
- package/dist/entities/turing-guess.entity.d.ts +29 -0
- package/dist/entities/turing-guess.entity.d.ts.map +1 -0
- package/dist/entities/turing-guess.entity.js +94 -0
- package/dist/entities/turing-guess.entity.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/sea-king.schema.d.ts +109 -0
- package/dist/schemas/sea-king.schema.d.ts.map +1 -0
- package/dist/schemas/sea-king.schema.js +103 -0
- package/dist/schemas/sea-king.schema.js.map +1 -0
- package/dist/sea-king.module.d.ts +19 -0
- package/dist/sea-king.module.d.ts.map +1 -0
- package/dist/sea-king.module.js +114 -0
- package/dist/sea-king.module.js.map +1 -0
- package/dist/services/character.service.d.ts +30 -0
- package/dist/services/character.service.d.ts.map +1 -0
- package/dist/services/character.service.js +75 -0
- package/dist/services/character.service.js.map +1 -0
- package/dist/services/chat.service.d.ts +49 -0
- package/dist/services/chat.service.d.ts.map +1 -0
- package/dist/services/chat.service.js +332 -0
- package/dist/services/chat.service.js.map +1 -0
- package/dist/services/crisis.service.d.ts +17 -0
- package/dist/services/crisis.service.d.ts.map +1 -0
- package/dist/services/crisis.service.js +177 -0
- package/dist/services/crisis.service.js.map +1 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +28 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/leaderboard.service.d.ts +29 -0
- package/dist/services/leaderboard.service.d.ts.map +1 -0
- package/dist/services/leaderboard.service.js +64 -0
- package/dist/services/leaderboard.service.js.map +1 -0
- package/dist/services/live-chat.service.d.ts +71 -0
- package/dist/services/live-chat.service.d.ts.map +1 -0
- package/dist/services/live-chat.service.js +273 -0
- package/dist/services/live-chat.service.js.map +1 -0
- package/dist/services/matchmaking.service.d.ts +60 -0
- package/dist/services/matchmaking.service.d.ts.map +1 -0
- package/dist/services/matchmaking.service.js +208 -0
- package/dist/services/matchmaking.service.js.map +1 -0
- package/dist/services/phrase.service.d.ts +27 -0
- package/dist/services/phrase.service.d.ts.map +1 -0
- package/dist/services/phrase.service.js +70 -0
- package/dist/services/phrase.service.js.map +1 -0
- package/dist/services/profile.service.d.ts +41 -0
- package/dist/services/profile.service.d.ts.map +1 -0
- package/dist/services/profile.service.js +107 -0
- package/dist/services/profile.service.js.map +1 -0
- package/dist/services/seed.service.d.ts +19 -0
- package/dist/services/seed.service.d.ts.map +1 -0
- package/dist/services/seed.service.js +550 -0
- package/dist/services/seed.service.js.map +1 -0
- package/dist/services/turing.service.d.ts +74 -0
- package/dist/services/turing.service.d.ts.map +1 -0
- package/dist/services/turing.service.js +175 -0
- package/dist/services/turing.service.js.map +1 -0
- package/dist/services/ws-hub.service.d.ts +51 -0
- package/dist/services/ws-hub.service.d.ts.map +1 -0
- package/dist/services/ws-hub.service.js +174 -0
- package/dist/services/ws-hub.service.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +69 -0
- package/web/index.ts +30 -0
- package/web/manifest.ts +40 -0
- package/web/messages/en-US.json +113 -0
- package/web/messages/zh-CN.json +113 -0
- package/web/pages/AnalysisPage.tsx +198 -0
- package/web/pages/ChatPage.tsx +482 -0
- package/web/pages/DashboardPage.tsx +281 -0
- package/web/pages/LeaderboardPage.tsx +208 -0
- package/web/pages/PhrasesPage.tsx +221 -0
- package/web/services/sea-king-service.ts +151 -0
- package/web/types/sea-king.ts +249 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MatchmakingController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
const zod_1 = require("zod");
|
|
15
|
+
const types_js_1 = require("../types.js");
|
|
16
|
+
const CreateRoomSchema = zod_1.z.object({
|
|
17
|
+
mode: zod_1.z.enum(['blind', 'turing', 'ranked']).default('blind'),
|
|
18
|
+
maxPlayers: zod_1.z.number().int().min(3).max(10).default(6),
|
|
19
|
+
password: zod_1.z.string().max(50).optional(),
|
|
20
|
+
roundTimeLimit: zod_1.z.number().int().min(30).max(300).optional(),
|
|
21
|
+
totalRounds: zod_1.z.number().int().min(3).max(30).optional(),
|
|
22
|
+
});
|
|
23
|
+
const JoinQueueSchema = zod_1.z.object({
|
|
24
|
+
displayName: zod_1.z.string().min(1).max(50),
|
|
25
|
+
preferredMode: zod_1.z.enum(['blind', 'turing', 'ranked']).default('blind'),
|
|
26
|
+
persona: zod_1.z.object({
|
|
27
|
+
name: zod_1.z.string().min(1).max(30),
|
|
28
|
+
avatar: zod_1.z.string().min(1).max(10),
|
|
29
|
+
personality: zod_1.z.string().min(1),
|
|
30
|
+
backstory: zod_1.z.string().min(1).max(500),
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
const QuickMatchSchema = zod_1.z.object({
|
|
34
|
+
persona: zod_1.z.object({
|
|
35
|
+
name: zod_1.z.string().min(1).max(30),
|
|
36
|
+
avatar: zod_1.z.string().min(1).max(10),
|
|
37
|
+
personality: zod_1.z.string().min(1),
|
|
38
|
+
backstory: zod_1.z.string().min(1).max(500),
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
let MatchmakingController = class MatchmakingController {
|
|
42
|
+
matchmakingService;
|
|
43
|
+
initializeController(matchmakingService) {
|
|
44
|
+
this.matchmakingService = matchmakingService;
|
|
45
|
+
}
|
|
46
|
+
/** 创建房间 */
|
|
47
|
+
async createRoom(req, res) {
|
|
48
|
+
const parsed = CreateRoomSchema.safeParse(req.body);
|
|
49
|
+
if (!parsed.success) {
|
|
50
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
54
|
+
const room = await this.matchmakingService.createRoom({
|
|
55
|
+
hostUserId: userId,
|
|
56
|
+
...parsed.data,
|
|
57
|
+
});
|
|
58
|
+
res.json({ room });
|
|
59
|
+
}
|
|
60
|
+
/** 快速匹配 */
|
|
61
|
+
async quickMatch(req, res) {
|
|
62
|
+
const parsed = QuickMatchSchema.safeParse(req.body);
|
|
63
|
+
if (!parsed.success) {
|
|
64
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
68
|
+
const room = await this.matchmakingService.quickMatch(userId, parsed.data.persona);
|
|
69
|
+
res.json({ room });
|
|
70
|
+
}
|
|
71
|
+
/** 加入匹配队列 */
|
|
72
|
+
async joinQueue(req, res) {
|
|
73
|
+
const parsed = JoinQueueSchema.safeParse(req.body);
|
|
74
|
+
if (!parsed.success) {
|
|
75
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
79
|
+
const entry = await this.matchmakingService.joinQueue({
|
|
80
|
+
userId,
|
|
81
|
+
rank: 'bronze',
|
|
82
|
+
...parsed.data,
|
|
83
|
+
});
|
|
84
|
+
res.json({ entry });
|
|
85
|
+
}
|
|
86
|
+
/** 列出可用房间 */
|
|
87
|
+
async listRooms(_req, res) {
|
|
88
|
+
const rooms = await this.matchmakingService.listAvailableRooms();
|
|
89
|
+
res.json({ rooms });
|
|
90
|
+
}
|
|
91
|
+
/** 获取房间详情 */
|
|
92
|
+
async getRoomDetail(req, res) {
|
|
93
|
+
const room = await this.matchmakingService.getRoomDetail(req.params['roomId']);
|
|
94
|
+
if (!room) {
|
|
95
|
+
res.status(404).json({ error: 'Room not found' });
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
res.json({ room });
|
|
99
|
+
}
|
|
100
|
+
/** 开始房间对局 */
|
|
101
|
+
async startRoom(req, res) {
|
|
102
|
+
const room = await this.matchmakingService.startRoom(req.params['roomId']);
|
|
103
|
+
res.json({ room });
|
|
104
|
+
}
|
|
105
|
+
/** 获取队列状态 */
|
|
106
|
+
async getQueueCount(_req, res) {
|
|
107
|
+
const count = await this.matchmakingService.getQueueCount();
|
|
108
|
+
res.json({ count });
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.MatchmakingController = MatchmakingController;
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, core_1.Post)('/rooms'),
|
|
114
|
+
__metadata("design:type", Function),
|
|
115
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
116
|
+
__metadata("design:returntype", Promise)
|
|
117
|
+
], MatchmakingController.prototype, "createRoom", null);
|
|
118
|
+
__decorate([
|
|
119
|
+
(0, core_1.Post)('/quick'),
|
|
120
|
+
__metadata("design:type", Function),
|
|
121
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
122
|
+
__metadata("design:returntype", Promise)
|
|
123
|
+
], MatchmakingController.prototype, "quickMatch", null);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, core_1.Post)('/queue'),
|
|
126
|
+
__metadata("design:type", Function),
|
|
127
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
128
|
+
__metadata("design:returntype", Promise)
|
|
129
|
+
], MatchmakingController.prototype, "joinQueue", null);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, core_1.Get)('/rooms'),
|
|
132
|
+
__metadata("design:type", Function),
|
|
133
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
134
|
+
__metadata("design:returntype", Promise)
|
|
135
|
+
], MatchmakingController.prototype, "listRooms", null);
|
|
136
|
+
__decorate([
|
|
137
|
+
(0, core_1.Get)('/rooms/:roomId'),
|
|
138
|
+
__metadata("design:type", Function),
|
|
139
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
140
|
+
__metadata("design:returntype", Promise)
|
|
141
|
+
], MatchmakingController.prototype, "getRoomDetail", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
(0, core_1.Post)('/rooms/:roomId/start'),
|
|
144
|
+
__metadata("design:type", Function),
|
|
145
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
146
|
+
__metadata("design:returntype", Promise)
|
|
147
|
+
], MatchmakingController.prototype, "startRoom", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, core_1.Get)('/queue/count'),
|
|
150
|
+
__metadata("design:type", Function),
|
|
151
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
152
|
+
__metadata("design:returntype", Promise)
|
|
153
|
+
], MatchmakingController.prototype, "getQueueCount", null);
|
|
154
|
+
exports.MatchmakingController = MatchmakingController = __decorate([
|
|
155
|
+
(0, core_1.Controller)('/api/v1/sea-king/match')
|
|
156
|
+
], MatchmakingController);
|
|
157
|
+
//# sourceMappingURL=matchmaking.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchmaking.controller.js","sourceRoot":"","sources":["../../src/controllers/matchmaking.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import { PhraseService } from '../services/phrase.service.js';
|
|
3
|
+
export declare class PhraseController {
|
|
4
|
+
private phraseService;
|
|
5
|
+
initialize(phraseService: PhraseService): void;
|
|
6
|
+
list(req: Request, res: Response): Promise<void>;
|
|
7
|
+
create(req: Request, res: Response): Promise<void>;
|
|
8
|
+
practice(req: Request, res: Response): Promise<void>;
|
|
9
|
+
stats(_req: Request, res: Response): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=phrase.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/phrase.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,qBACa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAiB;IAEtC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAKxC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PhraseController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
const sea_king_schema_js_1 = require("../schemas/sea-king.schema.js");
|
|
15
|
+
let PhraseController = class PhraseController {
|
|
16
|
+
phraseService;
|
|
17
|
+
initialize(phraseService) {
|
|
18
|
+
this.phraseService = phraseService;
|
|
19
|
+
}
|
|
20
|
+
async list(req, res) {
|
|
21
|
+
const parsed = sea_king_schema_js_1.PhraseQuerySchema.safeParse(req.query);
|
|
22
|
+
if (!parsed.success) {
|
|
23
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const result = await this.phraseService.list(parsed.data);
|
|
27
|
+
res.json(result);
|
|
28
|
+
}
|
|
29
|
+
async create(req, res) {
|
|
30
|
+
const parsed = sea_king_schema_js_1.CreatePhraseSchema.safeParse(req.body);
|
|
31
|
+
if (!parsed.success) {
|
|
32
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const phrase = await this.phraseService.create(parsed.data);
|
|
36
|
+
res.status(201).json(phrase);
|
|
37
|
+
}
|
|
38
|
+
async practice(req, res) {
|
|
39
|
+
const count = parseInt(req.query.count) || 5;
|
|
40
|
+
const scene = req.query.scene;
|
|
41
|
+
const difficulty = req.query.difficulty;
|
|
42
|
+
const phrases = await this.phraseService.getRandomPractice({ count, scene, difficulty });
|
|
43
|
+
res.json(phrases);
|
|
44
|
+
}
|
|
45
|
+
async stats(_req, res) {
|
|
46
|
+
const stats = await this.phraseService.getSceneStats();
|
|
47
|
+
res.json(stats);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.PhraseController = PhraseController;
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, core_1.Get)(),
|
|
53
|
+
__metadata("design:type", Function),
|
|
54
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
55
|
+
__metadata("design:returntype", Promise)
|
|
56
|
+
], PhraseController.prototype, "list", null);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, core_1.Post)(),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
61
|
+
__metadata("design:returntype", Promise)
|
|
62
|
+
], PhraseController.prototype, "create", null);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, core_1.Get)('practice'),
|
|
65
|
+
__metadata("design:type", Function),
|
|
66
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
67
|
+
__metadata("design:returntype", Promise)
|
|
68
|
+
], PhraseController.prototype, "practice", null);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, core_1.Get)('stats'),
|
|
71
|
+
__metadata("design:type", Function),
|
|
72
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
73
|
+
__metadata("design:returntype", Promise)
|
|
74
|
+
], PhraseController.prototype, "stats", null);
|
|
75
|
+
exports.PhraseController = PhraseController = __decorate([
|
|
76
|
+
(0, core_1.Controller)('/api/v1/sea-king/phrases')
|
|
77
|
+
], PhraseController);
|
|
78
|
+
//# sourceMappingURL=phrase.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase.controller.js","sourceRoot":"","sources":["../../src/controllers/phrase.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAyD;AAEzD,sEAAsF;AAG/E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACnB,aAAa,CAAiB;IAEtC,UAAU,CAAC,aAA4B;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAAC,GAAY,EAAE,GAAa;QACpC,MAAM,MAAM,GAAG,sCAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAC,GAAY,EAAE,GAAa;QACtC,MAAM,MAAM,GAAG,uCAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAa;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAA2B,CAAC;QACpD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAgC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACzF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAC,IAAa,EAAE,GAAa;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;CACF,CAAA;AA3CY,4CAAgB;AAQrB;IADL,IAAA,UAAG,GAAE;;;;4CASL;AAGK;IADL,IAAA,WAAI,GAAE;;;;8CASN;AAGK;IADL,IAAA,UAAG,EAAC,UAAU,CAAC;;;;gDAOf;AAGK;IADL,IAAA,UAAG,EAAC,OAAO,CAAC;;;;6CAIZ;2BA1CU,gBAAgB;IAD5B,IAAA,iBAAU,EAAC,0BAA0B,CAAC;GAC1B,gBAAgB,CA2C5B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import { ProfileService } from '../services/profile.service.js';
|
|
3
|
+
export declare class ProfileController {
|
|
4
|
+
private profileService;
|
|
5
|
+
initialize(profileService: ProfileService): void;
|
|
6
|
+
getProfile(_req: Request, res: Response): Promise<void>;
|
|
7
|
+
getAnalysis(_req: Request, res: Response): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=profile.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/profile.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,qBACa,iBAAiB;IAC5B,OAAO,CAAC,cAAc,CAAkB;IAExC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAK1C,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProfileController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
let ProfileController = class ProfileController {
|
|
15
|
+
profileService;
|
|
16
|
+
initialize(profileService) {
|
|
17
|
+
this.profileService = profileService;
|
|
18
|
+
}
|
|
19
|
+
async getProfile(_req, res) {
|
|
20
|
+
const profile = await this.profileService.getOrCreate('anonymous');
|
|
21
|
+
res.json(profile);
|
|
22
|
+
}
|
|
23
|
+
async getAnalysis(_req, res) {
|
|
24
|
+
const analysis = await this.profileService.getAnalysis('anonymous');
|
|
25
|
+
res.json(analysis);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.ProfileController = ProfileController;
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, core_1.Get)(),
|
|
31
|
+
__metadata("design:type", Function),
|
|
32
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
33
|
+
__metadata("design:returntype", Promise)
|
|
34
|
+
], ProfileController.prototype, "getProfile", null);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, core_1.Get)('analysis'),
|
|
37
|
+
__metadata("design:type", Function),
|
|
38
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
39
|
+
__metadata("design:returntype", Promise)
|
|
40
|
+
], ProfileController.prototype, "getAnalysis", null);
|
|
41
|
+
exports.ProfileController = ProfileController = __decorate([
|
|
42
|
+
(0, core_1.Controller)('/api/v1/sea-king/profile')
|
|
43
|
+
], ProfileController);
|
|
44
|
+
//# sourceMappingURL=profile.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.controller.js","sourceRoot":"","sources":["../../src/controllers/profile.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAmD;AAI5C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACpB,cAAc,CAAkB;IAExC,UAAU,CAAC,cAA8B;QACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAC,IAAa,EAAE,GAAa;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAC,IAAa,EAAE,GAAa;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;CACF,CAAA;AAlBY,8CAAiB;AAQtB;IADL,IAAA,UAAG,GAAE;;;;mDAIL;AAGK;IADL,IAAA,UAAG,EAAC,UAAU,CAAC;;;;oDAIf;4BAjBU,iBAAiB;IAD7B,IAAA,iBAAU,EAAC,0BAA0B,CAAC;GAC1B,iBAAiB,CAkB7B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import type { TuringService } from '../services/turing.service.js';
|
|
3
|
+
import { type AuthRequest } from '../types.js';
|
|
4
|
+
export declare class TuringController {
|
|
5
|
+
private turingService;
|
|
6
|
+
initializeController(turingService: TuringService): void;
|
|
7
|
+
/** 提交猜测 */
|
|
8
|
+
submitGuess(req: AuthRequest, res: Response): Promise<void>;
|
|
9
|
+
/** 揭晓房间身份 */
|
|
10
|
+
revealRoom(req: AuthRequest, res: Response): Promise<void>;
|
|
11
|
+
/** 获取房间统计 */
|
|
12
|
+
getRoomStats(req: Request, res: Response): Promise<void>;
|
|
13
|
+
/** 获取个人图灵战绩 */
|
|
14
|
+
getMyStats(req: AuthRequest, res: Response): Promise<void>;
|
|
15
|
+
/** 获取个人图灵历史 */
|
|
16
|
+
getMyHistory(req: AuthRequest, res: Response): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=turing.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turing.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/turing.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,aAAa,CAAC;AAU1D,qBACa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAiB;IAEtC,oBAAoB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAIxD,WAAW;IAEL,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjE,aAAa;IAEP,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,aAAa;IAEP,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,eAAe;IAET,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,eAAe;IAET,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAOnE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TuringController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
const zod_1 = require("zod");
|
|
15
|
+
const types_js_1 = require("../types.js");
|
|
16
|
+
const SubmitGuessSchema = zod_1.z.object({
|
|
17
|
+
threadId: zod_1.z.string().uuid(),
|
|
18
|
+
targetId: zod_1.z.string().min(1),
|
|
19
|
+
guess: zod_1.z.enum(['human', 'ai']),
|
|
20
|
+
confidence: zod_1.z.number().int().min(1).max(5).default(3),
|
|
21
|
+
reason: zod_1.z.string().max(500).optional(),
|
|
22
|
+
});
|
|
23
|
+
let TuringController = class TuringController {
|
|
24
|
+
turingService;
|
|
25
|
+
initializeController(turingService) {
|
|
26
|
+
this.turingService = turingService;
|
|
27
|
+
}
|
|
28
|
+
/** 提交猜测 */
|
|
29
|
+
async submitGuess(req, res) {
|
|
30
|
+
const parsed = SubmitGuessSchema.safeParse(req.body);
|
|
31
|
+
if (!parsed.success) {
|
|
32
|
+
res.status(400).json({ error: parsed.error.flatten() });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
36
|
+
const guess = await this.turingService.submitGuess({
|
|
37
|
+
roomId: req.params['roomId'],
|
|
38
|
+
guesserId: userId,
|
|
39
|
+
...parsed.data,
|
|
40
|
+
});
|
|
41
|
+
res.json({ guess });
|
|
42
|
+
}
|
|
43
|
+
/** 揭晓房间身份 */
|
|
44
|
+
async revealRoom(req, res) {
|
|
45
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
46
|
+
const result = await this.turingService.revealRoom(req.params['roomId'], userId);
|
|
47
|
+
res.json(result);
|
|
48
|
+
}
|
|
49
|
+
/** 获取房间统计 */
|
|
50
|
+
async getRoomStats(req, res) {
|
|
51
|
+
const stats = await this.turingService.getRoomStats(req.params['roomId']);
|
|
52
|
+
res.json(stats);
|
|
53
|
+
}
|
|
54
|
+
/** 获取个人图灵战绩 */
|
|
55
|
+
async getMyStats(req, res) {
|
|
56
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
57
|
+
const stats = await this.turingService.getUserStats(userId);
|
|
58
|
+
res.json(stats);
|
|
59
|
+
}
|
|
60
|
+
/** 获取个人图灵历史 */
|
|
61
|
+
async getMyHistory(req, res) {
|
|
62
|
+
const userId = (0, types_js_1.getUserId)(req);
|
|
63
|
+
const page = parseInt(req.query.page, 10) || 1;
|
|
64
|
+
const pageSize = parseInt(req.query.pageSize, 10) || 20;
|
|
65
|
+
const result = await this.turingService.getUserHistory(userId, page, pageSize);
|
|
66
|
+
res.json(result);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.TuringController = TuringController;
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, core_1.Post)('/rooms/:roomId/guess'),
|
|
72
|
+
__metadata("design:type", Function),
|
|
73
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
74
|
+
__metadata("design:returntype", Promise)
|
|
75
|
+
], TuringController.prototype, "submitGuess", null);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, core_1.Post)('/rooms/:roomId/reveal'),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], TuringController.prototype, "revealRoom", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, core_1.Get)('/rooms/:roomId/stats'),
|
|
84
|
+
__metadata("design:type", Function),
|
|
85
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
86
|
+
__metadata("design:returntype", Promise)
|
|
87
|
+
], TuringController.prototype, "getRoomStats", null);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, core_1.Get)('/my-stats'),
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], TuringController.prototype, "getMyStats", null);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, core_1.Get)('/my-history'),
|
|
96
|
+
__metadata("design:type", Function),
|
|
97
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
98
|
+
__metadata("design:returntype", Promise)
|
|
99
|
+
], TuringController.prototype, "getMyHistory", null);
|
|
100
|
+
exports.TuringController = TuringController = __decorate([
|
|
101
|
+
(0, core_1.Controller)('/api/v1/sea-king/turing')
|
|
102
|
+
], TuringController);
|
|
103
|
+
//# sourceMappingURL=turing.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turing.controller.js","sourceRoot":"","sources":["../../src/controllers/turing.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChatMessage } from './chat-message.entity.js';
|
|
2
|
+
/**
|
|
3
|
+
* AI聊天角色:每个角色有独特的性格、说话风格和好感度逻辑
|
|
4
|
+
* 🎭 从温柔小鹿到霸道总裁,你能hold住几个?
|
|
5
|
+
*/
|
|
6
|
+
export type CharacterPersonality = 'gentle' | 'tsundere' | 'intellectual' | 'rational' | 'playful' | 'mysterious';
|
|
7
|
+
export type CharacterGender = 'male' | 'female' | 'neutral';
|
|
8
|
+
export declare class ChatCharacter {
|
|
9
|
+
id: string;
|
|
10
|
+
/** 角色名字 */
|
|
11
|
+
name: string;
|
|
12
|
+
/** 角色头像 emoji 或 URL */
|
|
13
|
+
avatar: string;
|
|
14
|
+
/** 性格类型 */
|
|
15
|
+
personality: CharacterPersonality;
|
|
16
|
+
/** 性别 */
|
|
17
|
+
gender: CharacterGender;
|
|
18
|
+
/** 角色背景故事 */
|
|
19
|
+
backstory: string;
|
|
20
|
+
/** 说话风格描述(用于提示词) */
|
|
21
|
+
speakingStyle: string;
|
|
22
|
+
/** 好感度敏感点(JSON):什么话加分/扣分 */
|
|
23
|
+
favorTraits: string | null;
|
|
24
|
+
/** 讨厌的行为模式(JSON):什么话会大扣分 */
|
|
25
|
+
peeves: string | null;
|
|
26
|
+
/** 是否内置角色 */
|
|
27
|
+
builtIn: boolean;
|
|
28
|
+
/** 是否启用 */
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
messages: ChatMessage[];
|
|
31
|
+
createdAt: Date;
|
|
32
|
+
updatedAt: Date;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=chat-character.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-character.entity.d.ts","sourceRoot":"","sources":["../../src/entities/chat-character.entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,UAAU,GACV,cAAc,GACd,UAAU,GACV,SAAS,GACT,YAAY,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,qBACa,aAAa;IAExB,EAAE,EAAG,MAAM,CAAC;IAEZ,WAAW;IAEX,IAAI,EAAG,MAAM,CAAC;IAEd,uBAAuB;IAEvB,MAAM,EAAG,MAAM,CAAC;IAEhB,WAAW;IAEX,WAAW,EAAG,oBAAoB,CAAC;IAEnC,SAAS;IAET,MAAM,EAAG,eAAe,CAAC;IAEzB,aAAa;IAEb,SAAS,EAAG,MAAM,CAAC;IAEnB,oBAAoB;IAEpB,aAAa,EAAG,MAAM,CAAC;IAEvB,4BAA4B;IAE5B,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAE5B,4BAA4B;IAE5B,MAAM,EAAG,MAAM,GAAG,IAAI,CAAC;IAEvB,aAAa;IAEb,OAAO,EAAG,OAAO,CAAC;IAElB,WAAW;IAEX,OAAO,EAAG,OAAO,CAAC;IAGlB,QAAQ,EAAG,WAAW,EAAE,CAAC;IAGzB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ChatCharacter = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const chat_message_entity_js_1 = require("./chat-message.entity.js");
|
|
15
|
+
let ChatCharacter = class ChatCharacter {
|
|
16
|
+
id;
|
|
17
|
+
/** 角色名字 */
|
|
18
|
+
name;
|
|
19
|
+
/** 角色头像 emoji 或 URL */
|
|
20
|
+
avatar;
|
|
21
|
+
/** 性格类型 */
|
|
22
|
+
personality;
|
|
23
|
+
/** 性别 */
|
|
24
|
+
gender;
|
|
25
|
+
/** 角色背景故事 */
|
|
26
|
+
backstory;
|
|
27
|
+
/** 说话风格描述(用于提示词) */
|
|
28
|
+
speakingStyle;
|
|
29
|
+
/** 好感度敏感点(JSON):什么话加分/扣分 */
|
|
30
|
+
favorTraits;
|
|
31
|
+
/** 讨厌的行为模式(JSON):什么话会大扣分 */
|
|
32
|
+
peeves;
|
|
33
|
+
/** 是否内置角色 */
|
|
34
|
+
builtIn;
|
|
35
|
+
/** 是否启用 */
|
|
36
|
+
enabled;
|
|
37
|
+
messages;
|
|
38
|
+
createdAt;
|
|
39
|
+
updatedAt;
|
|
40
|
+
};
|
|
41
|
+
exports.ChatCharacter = ChatCharacter;
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], ChatCharacter.prototype, "id", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
48
|
+
__metadata("design:type", String)
|
|
49
|
+
], ChatCharacter.prototype, "name", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 500, default: '🧑' }),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], ChatCharacter.prototype, "avatar", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 30 }),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], ChatCharacter.prototype, "personality", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 10, default: 'neutral' }),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], ChatCharacter.prototype, "gender", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, typeorm_1.Column)({ type: 'text' }),
|
|
64
|
+
__metadata("design:type", String)
|
|
65
|
+
], ChatCharacter.prototype, "backstory", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, typeorm_1.Column)({ type: 'text' }),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], ChatCharacter.prototype, "speakingStyle", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
72
|
+
__metadata("design:type", Object)
|
|
73
|
+
], ChatCharacter.prototype, "favorTraits", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
76
|
+
__metadata("design:type", Object)
|
|
77
|
+
], ChatCharacter.prototype, "peeves", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, typeorm_1.Column)({ type: 'boolean', default: true }),
|
|
80
|
+
__metadata("design:type", Boolean)
|
|
81
|
+
], ChatCharacter.prototype, "builtIn", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, typeorm_1.Column)({ type: 'boolean', default: true }),
|
|
84
|
+
__metadata("design:type", Boolean)
|
|
85
|
+
], ChatCharacter.prototype, "enabled", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, typeorm_1.OneToMany)(() => chat_message_entity_js_1.ChatMessage, (msg) => msg.character),
|
|
88
|
+
__metadata("design:type", Array)
|
|
89
|
+
], ChatCharacter.prototype, "messages", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
92
|
+
__metadata("design:type", Date)
|
|
93
|
+
], ChatCharacter.prototype, "createdAt", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
|
96
|
+
__metadata("design:type", Date)
|
|
97
|
+
], ChatCharacter.prototype, "updatedAt", void 0);
|
|
98
|
+
exports.ChatCharacter = ChatCharacter = __decorate([
|
|
99
|
+
(0, typeorm_1.Entity)('sk_chat_characters')
|
|
100
|
+
], ChatCharacter);
|
|
101
|
+
//# sourceMappingURL=chat-character.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-character.entity.js","sourceRoot":"","sources":["../../src/entities/chat-character.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,qEAAuD;AAiBhD,IAAM,aAAa,GAAnB,MAAM,aAAa;IAExB,EAAE,CAAU;IAEZ,WAAW;IAEX,IAAI,CAAU;IAEd,uBAAuB;IAEvB,MAAM,CAAU;IAEhB,WAAW;IAEX,WAAW,CAAwB;IAEnC,SAAS;IAET,MAAM,CAAmB;IAEzB,aAAa;IAEb,SAAS,CAAU;IAEnB,oBAAoB;IAEpB,aAAa,CAAU;IAEvB,4BAA4B;IAE5B,WAAW,CAAiB;IAE5B,4BAA4B;IAE5B,MAAM,CAAiB;IAEvB,aAAa;IAEb,OAAO,CAAW;IAElB,WAAW;IAEX,OAAO,CAAW;IAGlB,QAAQ,CAAiB;IAGzB,SAAS,CAAQ;IAGjB,SAAS,CAAQ;CAClB,CAAA;AApDY,sCAAa;AAExB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;yCACnB;AAIZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;2CAC3B;AAId;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6CACxC;AAIhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;kDACL;AAInC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;6CACnC;AAIzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDACN;AAInB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;oDACF;AAIvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACb;AAI5B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAClB;AAIvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;8CACzB;AAIlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;8CACzB;AAGlB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,oCAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;;+CAC5B;AAGzB;IADC,IAAA,0BAAgB,GAAE;8BACP,IAAI;gDAAC;AAGjB;IADC,IAAA,0BAAgB,GAAE;8BACP,IAAI;gDAAC;wBAnDN,aAAa;IADzB,IAAA,gBAAM,EAAC,oBAAoB,CAAC;GAChB,aAAa,CAoDzB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChatThread } from './chat-thread.entity.js';
|
|
2
|
+
import { ChatCharacter } from './chat-character.entity.js';
|
|
3
|
+
/**
|
|
4
|
+
* 聊天消息
|
|
5
|
+
* 📨 说了什么都会被记录下来哦
|
|
6
|
+
*/
|
|
7
|
+
export type MessageRole = 'user' | 'character' | 'system';
|
|
8
|
+
export declare class ChatMessage {
|
|
9
|
+
id: string;
|
|
10
|
+
threadId: string;
|
|
11
|
+
characterId: string | null;
|
|
12
|
+
/** 消息角色 */
|
|
13
|
+
role: MessageRole;
|
|
14
|
+
/** 消息内容 */
|
|
15
|
+
content: string;
|
|
16
|
+
/** 好感度变化值(正数加分,负数扣分) */
|
|
17
|
+
favorDelta: number;
|
|
18
|
+
/** 好感度变化原因 */
|
|
19
|
+
favorReason: string | null;
|
|
20
|
+
/** 消息情感标签 */
|
|
21
|
+
sentiment: string | null;
|
|
22
|
+
thread: ChatThread;
|
|
23
|
+
character: ChatCharacter;
|
|
24
|
+
createdAt: Date;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=chat-message.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-message.entity.d.ts","sourceRoot":"","sources":["../../src/entities/chat-message.entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,qBACa,WAAW;IAEtB,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAG,MAAM,CAAC;IAGlB,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAE5B,WAAW;IAEX,IAAI,EAAG,WAAW,CAAC;IAEnB,WAAW;IAEX,OAAO,EAAG,MAAM,CAAC;IAEjB,wBAAwB;IAExB,UAAU,EAAG,MAAM,CAAC;IAEpB,cAAc;IAEd,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAE5B,aAAa;IAEb,SAAS,EAAG,MAAM,GAAG,IAAI,CAAC;IAI1B,MAAM,EAAG,UAAU,CAAC;IAIpB,SAAS,EAAG,aAAa,CAAC;IAG1B,SAAS,EAAG,IAAI,CAAC;CAClB"}
|