@memo-code/memo 0.8.5 → 0.8.7
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/web/server/main.cjs +145359 -0
- package/package.json +2 -1
- package/dist/web/server/app.controller.d.ts +0 -6
- package/dist/web/server/app.controller.js +0 -33
- package/dist/web/server/app.module.d.ts +0 -4
- package/dist/web/server/app.module.js +0 -61
- package/dist/web/server/auth/access-token.guard.d.ts +0 -9
- package/dist/web/server/auth/access-token.guard.js +0 -53
- package/dist/web/server/auth/auth.controller.d.ts +0 -18
- package/dist/web/server/auth/auth.controller.js +0 -75
- package/dist/web/server/auth/auth.module.d.ts +0 -2
- package/dist/web/server/auth/auth.module.js +0 -24
- package/dist/web/server/auth/auth.service.d.ts +0 -15
- package/dist/web/server/auth/auth.service.js +0 -146
- package/dist/web/server/auth/auth.types.d.ts +0 -26
- package/dist/web/server/auth/auth.types.js +0 -2
- package/dist/web/server/auth/public.decorator.d.ts +0 -2
- package/dist/web/server/auth/public.decorator.js +0 -7
- package/dist/web/server/chat/chat.controller.d.ts +0 -30
- package/dist/web/server/chat/chat.controller.js +0 -150
- package/dist/web/server/chat/chat.module.d.ts +0 -2
- package/dist/web/server/chat/chat.module.js +0 -26
- package/dist/web/server/chat/chat.service.d.ts +0 -61
- package/dist/web/server/chat/chat.service.js +0 -847
- package/dist/web/server/chat/chat.types.d.ts +0 -38
- package/dist/web/server/chat/chat.types.js +0 -2
- package/dist/web/server/common/constants.d.ts +0 -1
- package/dist/web/server/common/constants.js +0 -4
- package/dist/web/server/common/filters/api-error.filter.d.ts +0 -7
- package/dist/web/server/common/filters/api-error.filter.js +0 -95
- package/dist/web/server/common/interceptors/api-response.interceptor.d.ts +0 -15
- package/dist/web/server/common/interceptors/api-response.interceptor.js +0 -51
- package/dist/web/server/common/middleware/request-logging.middleware.d.ts +0 -7
- package/dist/web/server/common/middleware/request-logging.middleware.js +0 -42
- package/dist/web/server/config/memo-config.service.d.ts +0 -7
- package/dist/web/server/config/memo-config.service.js +0 -106
- package/dist/web/server/config/memo-config.types.d.ts +0 -6
- package/dist/web/server/config/memo-config.types.js +0 -2
- package/dist/web/server/config/server-config.module.d.ts +0 -2
- package/dist/web/server/config/server-config.module.js +0 -22
- package/dist/web/server/config/server-config.service.d.ts +0 -14
- package/dist/web/server/config/server-config.service.js +0 -326
- package/dist/web/server/config/server-config.service.test.d.ts +0 -1
- package/dist/web/server/config/server-config.service.test.js +0 -193
- package/dist/web/server/config/server-config.types.d.ts +0 -27
- package/dist/web/server/config/server-config.types.js +0 -2
- package/dist/web/server/main.d.ts +0 -1
- package/dist/web/server/main.js +0 -19
- package/dist/web/server/mcp/mcp.controller.d.ts +0 -38
- package/dist/web/server/mcp/mcp.controller.js +0 -126
- package/dist/web/server/mcp/mcp.module.d.ts +0 -2
- package/dist/web/server/mcp/mcp.module.js +0 -22
- package/dist/web/server/mcp/mcp.service.d.ts +0 -25
- package/dist/web/server/mcp/mcp.service.js +0 -56
- package/dist/web/server/server.d.ts +0 -18
- package/dist/web/server/server.js +0 -142
- package/dist/web/server/sessions/sessions.controller.d.ts +0 -8
- package/dist/web/server/sessions/sessions.controller.js +0 -59
- package/dist/web/server/sessions/sessions.module.d.ts +0 -2
- package/dist/web/server/sessions/sessions.module.js +0 -24
- package/dist/web/server/sessions/sessions.service.d.ts +0 -22
- package/dist/web/server/sessions/sessions.service.js +0 -217
- package/dist/web/server/sessions/sessions.types.d.ts +0 -18
- package/dist/web/server/sessions/sessions.types.js +0 -2
- package/dist/web/server/skills/skills.controller.d.ts +0 -31
- package/dist/web/server/skills/skills.controller.js +0 -86
- package/dist/web/server/skills/skills.module.d.ts +0 -2
- package/dist/web/server/skills/skills.module.js +0 -24
- package/dist/web/server/skills/skills.service.d.ts +0 -38
- package/dist/web/server/skills/skills.service.js +0 -97
- package/dist/web/server/stream/stream.module.d.ts +0 -2
- package/dist/web/server/stream/stream.module.js +0 -20
- package/dist/web/server/stream/stream.service.d.ts +0 -26
- package/dist/web/server/stream/stream.service.js +0 -166
- package/dist/web/server/tsconfig.build.tsbuildinfo +0 -1
- package/dist/web/server/workspaces/workspaces.module.d.ts +0 -2
- package/dist/web/server/workspaces/workspaces.module.js +0 -20
- package/dist/web/server/workspaces/workspaces.service.d.ts +0 -38
- package/dist/web/server/workspaces/workspaces.service.js +0 -378
- package/dist/web/server/workspaces/workspaces.types.d.ts +0 -1
- package/dist/web/server/workspaces/workspaces.types.js +0 -2
- package/dist/web/server/workspaces/workspaces.utils.d.ts +0 -1
- package/dist/web/server/workspaces/workspaces.utils.js +0 -9
- package/dist/web/server/ws/rpc-router.service.d.ts +0 -20
- package/dist/web/server/ws/rpc-router.service.js +0 -275
- package/dist/web/server/ws/session-runtime-registry.service.d.ts +0 -37
- package/dist/web/server/ws/session-runtime-registry.service.js +0 -118
- package/dist/web/server/ws/ws-event-bus.service.d.ts +0 -5
- package/dist/web/server/ws/ws-event-bus.service.js +0 -27
- package/dist/web/server/ws/ws-gateway.module.d.ts +0 -2
- package/dist/web/server/ws/ws-gateway.module.js +0 -42
- package/dist/web/server/ws/ws-gateway.service.d.ts +0 -42
- package/dist/web/server/ws/ws-gateway.service.js +0 -473
- package/dist/web/server/ws/ws.errors.d.ts +0 -8
- package/dist/web/server/ws/ws.errors.js +0 -16
- package/dist/web/server/ws/ws.types.d.ts +0 -34
- package/dist/web/server/ws/ws.types.js +0 -2
|
@@ -1,217 +0,0 @@
|
|
|
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.SessionsService = void 0;
|
|
13
|
-
const promises_1 = require("node:fs/promises");
|
|
14
|
-
const node_os_1 = require("node:os");
|
|
15
|
-
const node_path_1 = require("node:path");
|
|
16
|
-
const common_1 = require("@nestjs/common");
|
|
17
|
-
const core_1 = require("@memo-code/core");
|
|
18
|
-
const workspaces_service_1 = require("../workspaces/workspaces.service");
|
|
19
|
-
function resolveMemoHome() {
|
|
20
|
-
const memoHome = process.env.MEMO_HOME;
|
|
21
|
-
if (!memoHome || !memoHome.trim())
|
|
22
|
-
return (0, node_path_1.join)((0, node_os_1.homedir)(), '.memo');
|
|
23
|
-
if (!memoHome.startsWith('~'))
|
|
24
|
-
return memoHome;
|
|
25
|
-
return (0, node_path_1.join)((0, node_os_1.homedir)(), memoHome.slice(1));
|
|
26
|
-
}
|
|
27
|
-
function parsePage(value) {
|
|
28
|
-
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
29
|
-
const normalized = Math.floor(value);
|
|
30
|
-
return normalized > 0 ? normalized : undefined;
|
|
31
|
-
}
|
|
32
|
-
if (typeof value === 'string') {
|
|
33
|
-
const parsed = Number.parseInt(value, 10);
|
|
34
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
|
|
35
|
-
}
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
function parseSortBy(value) {
|
|
39
|
-
if (typeof value !== 'string')
|
|
40
|
-
return undefined;
|
|
41
|
-
if (value === 'updatedAt' ||
|
|
42
|
-
value === 'startedAt' ||
|
|
43
|
-
value === 'project' ||
|
|
44
|
-
value === 'title') {
|
|
45
|
-
return value;
|
|
46
|
-
}
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
function parseOrder(value) {
|
|
50
|
-
if (value === 'asc' || value === 'desc')
|
|
51
|
-
return value;
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
function parseString(value) {
|
|
55
|
-
if (typeof value !== 'string')
|
|
56
|
-
return undefined;
|
|
57
|
-
const trimmed = value.trim();
|
|
58
|
-
return trimmed.length > 0 ? trimmed : undefined;
|
|
59
|
-
}
|
|
60
|
-
let SessionsService = class SessionsService {
|
|
61
|
-
workspacesService;
|
|
62
|
-
sessionsDir = (0, node_path_1.resolve)((0, node_path_1.join)(resolveMemoHome(), 'sessions'));
|
|
63
|
-
historyIndex = new core_1.HistoryIndex({
|
|
64
|
-
sessionsDir: this.sessionsDir,
|
|
65
|
-
});
|
|
66
|
-
constructor(workspacesService) {
|
|
67
|
-
this.workspacesService = workspacesService;
|
|
68
|
-
}
|
|
69
|
-
async list(query) {
|
|
70
|
-
const normalized = {
|
|
71
|
-
page: parsePage(query.page),
|
|
72
|
-
pageSize: parsePage(query.pageSize),
|
|
73
|
-
sortBy: parseSortBy(query.sortBy),
|
|
74
|
-
order: parseOrder(query.order),
|
|
75
|
-
project: parseString(query.project),
|
|
76
|
-
workspaceId: parseString(query.workspaceId),
|
|
77
|
-
dateFrom: parseString(query.dateFrom),
|
|
78
|
-
dateTo: parseString(query.dateTo),
|
|
79
|
-
q: parseString(query.q),
|
|
80
|
-
};
|
|
81
|
-
if (normalized.workspaceId) {
|
|
82
|
-
const workspace = await this.workspacesService.getById(normalized.workspaceId);
|
|
83
|
-
if (!workspace) {
|
|
84
|
-
return {
|
|
85
|
-
items: [],
|
|
86
|
-
page: normalized.page ?? 1,
|
|
87
|
-
pageSize: normalized.pageSize ?? 20,
|
|
88
|
-
total: 0,
|
|
89
|
-
totalPages: 0,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
normalized.workspaceCwd = workspace.cwd;
|
|
93
|
-
}
|
|
94
|
-
return this.historyIndex.list(normalized);
|
|
95
|
-
}
|
|
96
|
-
async getSessionDetail(sessionId) {
|
|
97
|
-
const detail = await this.historyIndex.getSessionDetail(sessionId);
|
|
98
|
-
if (!detail) {
|
|
99
|
-
throw new common_1.NotFoundException('Session not found');
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
...detail,
|
|
103
|
-
workspaceId: detail.workspaceId || (0, core_1.workspaceIdFromCwd)(detail.cwd),
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
async getSessionEvents(sessionId, query) {
|
|
107
|
-
const normalized = {
|
|
108
|
-
cursor: parseString(query.cursor),
|
|
109
|
-
limit: parsePage(query.limit),
|
|
110
|
-
};
|
|
111
|
-
const events = await this.historyIndex.getSessionEvents(sessionId, normalized.cursor, normalized.limit);
|
|
112
|
-
if (!events) {
|
|
113
|
-
throw new common_1.NotFoundException('Session not found');
|
|
114
|
-
}
|
|
115
|
-
return events;
|
|
116
|
-
}
|
|
117
|
-
async listAllSessionSummaries() {
|
|
118
|
-
return this.historyIndex.getAllSummaries();
|
|
119
|
-
}
|
|
120
|
-
async removeSession(sessionId) {
|
|
121
|
-
const target = sessionId.trim();
|
|
122
|
-
if (!target) {
|
|
123
|
-
throw new common_1.NotFoundException('Session not found');
|
|
124
|
-
}
|
|
125
|
-
const detail = await this.historyIndex.getSessionDetail(target);
|
|
126
|
-
if (!detail) {
|
|
127
|
-
throw new common_1.NotFoundException('Session not found');
|
|
128
|
-
}
|
|
129
|
-
await this.removeSessionFile(detail.filePath);
|
|
130
|
-
await this.historyIndex.refresh();
|
|
131
|
-
return { deleted: true };
|
|
132
|
-
}
|
|
133
|
-
async removeSessionsByWorkspace(workspaceId) {
|
|
134
|
-
const target = workspaceId.trim();
|
|
135
|
-
if (!target) {
|
|
136
|
-
throw new common_1.NotFoundException('workspace not found');
|
|
137
|
-
}
|
|
138
|
-
const workspace = await this.workspacesService.getById(target);
|
|
139
|
-
if (!workspace) {
|
|
140
|
-
throw new common_1.NotFoundException('workspace not found');
|
|
141
|
-
}
|
|
142
|
-
const workspaceCwd = (0, core_1.normalizeWorkspacePath)(workspace.cwd);
|
|
143
|
-
const summaries = await this.historyIndex.getAllSummaries();
|
|
144
|
-
const filePaths = Array.from(new Set(summaries
|
|
145
|
-
.filter((summary) => (0, core_1.normalizeWorkspacePath)(summary.cwd) === workspaceCwd)
|
|
146
|
-
.map((summary) => summary.filePath)
|
|
147
|
-
.filter((filePath) => typeof filePath === 'string' && filePath.trim().length > 0)));
|
|
148
|
-
let deletedSessions = 0;
|
|
149
|
-
for (const filePath of filePaths) {
|
|
150
|
-
const deleted = await this.removeSessionFile(filePath);
|
|
151
|
-
if (deleted) {
|
|
152
|
-
deletedSessions += 1;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
await this.historyIndex.refresh();
|
|
156
|
-
return { deleted: true, deletedSessions };
|
|
157
|
-
}
|
|
158
|
-
normalizeSafeSessionFilePath(filePath) {
|
|
159
|
-
const resolvedPath = (0, node_path_1.resolve)(filePath);
|
|
160
|
-
if (!resolvedPath.endsWith('.jsonl')) {
|
|
161
|
-
throw new Error(`Refusing to remove non-jsonl session file: ${resolvedPath}`);
|
|
162
|
-
}
|
|
163
|
-
if (resolvedPath === this.sessionsDir ||
|
|
164
|
-
!resolvedPath.startsWith(`${this.sessionsDir}${node_path_1.sep}`)) {
|
|
165
|
-
throw new Error(`Refusing to remove file outside sessions dir: ${resolvedPath}`);
|
|
166
|
-
}
|
|
167
|
-
return resolvedPath;
|
|
168
|
-
}
|
|
169
|
-
async removeSessionFile(filePath) {
|
|
170
|
-
const safePath = this.normalizeSafeSessionFilePath(filePath);
|
|
171
|
-
try {
|
|
172
|
-
const info = await (0, promises_1.lstat)(safePath);
|
|
173
|
-
if (!info.isFile() || info.isSymbolicLink()) {
|
|
174
|
-
throw new Error(`Refusing to remove non-regular file: ${safePath}`);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
catch (error) {
|
|
178
|
-
const code = error?.code;
|
|
179
|
-
if (code === 'ENOENT')
|
|
180
|
-
return false;
|
|
181
|
-
throw error;
|
|
182
|
-
}
|
|
183
|
-
try {
|
|
184
|
-
await (0, promises_1.unlink)(safePath);
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
const code = error?.code;
|
|
188
|
-
if (code === 'ENOENT')
|
|
189
|
-
return false;
|
|
190
|
-
throw error;
|
|
191
|
-
}
|
|
192
|
-
await this.pruneEmptyParentDirectories(safePath);
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
async pruneEmptyParentDirectories(filePath) {
|
|
196
|
-
let current = (0, node_path_1.dirname)(filePath);
|
|
197
|
-
while (current !== this.sessionsDir &&
|
|
198
|
-
current.startsWith(`${this.sessionsDir}${node_path_1.sep}`)) {
|
|
199
|
-
try {
|
|
200
|
-
await (0, promises_1.rmdir)(current);
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
const code = error?.code;
|
|
204
|
-
if (code === 'ENOENT' || code === 'ENOTEMPTY') {
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
current = (0, node_path_1.dirname)(current);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
exports.SessionsService = SessionsService;
|
|
214
|
-
exports.SessionsService = SessionsService = __decorate([
|
|
215
|
-
(0, common_1.Injectable)(),
|
|
216
|
-
__metadata("design:paramtypes", [workspaces_service_1.WorkspacesService])
|
|
217
|
-
], SessionsService);
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { SessionDetail, SessionEventsResponse, SessionListResponse } from '@memo-code/core';
|
|
2
|
-
export type ListSessionsQuery = {
|
|
3
|
-
page?: number;
|
|
4
|
-
pageSize?: number;
|
|
5
|
-
sortBy?: 'updatedAt' | 'startedAt' | 'project' | 'title';
|
|
6
|
-
order?: 'asc' | 'desc';
|
|
7
|
-
project?: string;
|
|
8
|
-
workspaceId?: string;
|
|
9
|
-
workspaceCwd?: string;
|
|
10
|
-
dateFrom?: string;
|
|
11
|
-
dateTo?: string;
|
|
12
|
-
q?: string;
|
|
13
|
-
};
|
|
14
|
-
export type SessionEventsQuery = {
|
|
15
|
-
cursor?: string;
|
|
16
|
-
limit?: number;
|
|
17
|
-
};
|
|
18
|
-
export type { SessionDetail, SessionEventsResponse, SessionListResponse };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { SkillsService } from './skills.service';
|
|
2
|
-
type CreateSkillBody = {
|
|
3
|
-
scope?: unknown;
|
|
4
|
-
workspaceId?: unknown;
|
|
5
|
-
name?: unknown;
|
|
6
|
-
description?: unknown;
|
|
7
|
-
content?: unknown;
|
|
8
|
-
};
|
|
9
|
-
type UpdateSkillBody = {
|
|
10
|
-
description?: unknown;
|
|
11
|
-
content?: unknown;
|
|
12
|
-
};
|
|
13
|
-
export declare class SkillsController {
|
|
14
|
-
private readonly skillsService;
|
|
15
|
-
constructor(skillsService: SkillsService);
|
|
16
|
-
list(query: Record<string, unknown>): Promise<{
|
|
17
|
-
items: import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillRecord[];
|
|
18
|
-
}>;
|
|
19
|
-
get(id: string): Promise<import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillDetail>;
|
|
20
|
-
create(body: CreateSkillBody): Promise<{
|
|
21
|
-
created: true;
|
|
22
|
-
item: import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillRecord;
|
|
23
|
-
}>;
|
|
24
|
-
update(id: string, body: UpdateSkillBody): Promise<{
|
|
25
|
-
updated: true;
|
|
26
|
-
}>;
|
|
27
|
-
remove(id: string): Promise<{
|
|
28
|
-
deleted: true;
|
|
29
|
-
}>;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
@@ -1,86 +0,0 @@
|
|
|
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
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SkillsController = void 0;
|
|
16
|
-
const common_1 = require("@nestjs/common");
|
|
17
|
-
const skills_service_1 = require("./skills.service");
|
|
18
|
-
let SkillsController = class SkillsController {
|
|
19
|
-
skillsService;
|
|
20
|
-
constructor(skillsService) {
|
|
21
|
-
this.skillsService = skillsService;
|
|
22
|
-
}
|
|
23
|
-
async list(query) {
|
|
24
|
-
return this.skillsService.list({
|
|
25
|
-
scope: query.scope,
|
|
26
|
-
q: query.q,
|
|
27
|
-
workspaceId: query.workspaceId,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
async get(id) {
|
|
31
|
-
return this.skillsService.get(id);
|
|
32
|
-
}
|
|
33
|
-
async create(body) {
|
|
34
|
-
return this.skillsService.create({
|
|
35
|
-
...body,
|
|
36
|
-
workspaceId: body.workspaceId,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
async update(id, body) {
|
|
40
|
-
return this.skillsService.update(id, body);
|
|
41
|
-
}
|
|
42
|
-
async remove(id) {
|
|
43
|
-
return this.skillsService.remove(id);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
exports.SkillsController = SkillsController;
|
|
47
|
-
__decorate([
|
|
48
|
-
(0, common_1.Get)(),
|
|
49
|
-
__param(0, (0, common_1.Query)()),
|
|
50
|
-
__metadata("design:type", Function),
|
|
51
|
-
__metadata("design:paramtypes", [Object]),
|
|
52
|
-
__metadata("design:returntype", Promise)
|
|
53
|
-
], SkillsController.prototype, "list", null);
|
|
54
|
-
__decorate([
|
|
55
|
-
(0, common_1.Get)(':id'),
|
|
56
|
-
__param(0, (0, common_1.Param)('id')),
|
|
57
|
-
__metadata("design:type", Function),
|
|
58
|
-
__metadata("design:paramtypes", [String]),
|
|
59
|
-
__metadata("design:returntype", Promise)
|
|
60
|
-
], SkillsController.prototype, "get", null);
|
|
61
|
-
__decorate([
|
|
62
|
-
(0, common_1.Post)(),
|
|
63
|
-
__param(0, (0, common_1.Body)()),
|
|
64
|
-
__metadata("design:type", Function),
|
|
65
|
-
__metadata("design:paramtypes", [Object]),
|
|
66
|
-
__metadata("design:returntype", Promise)
|
|
67
|
-
], SkillsController.prototype, "create", null);
|
|
68
|
-
__decorate([
|
|
69
|
-
(0, common_1.Put)(':id'),
|
|
70
|
-
__param(0, (0, common_1.Param)('id')),
|
|
71
|
-
__param(1, (0, common_1.Body)()),
|
|
72
|
-
__metadata("design:type", Function),
|
|
73
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
74
|
-
__metadata("design:returntype", Promise)
|
|
75
|
-
], SkillsController.prototype, "update", null);
|
|
76
|
-
__decorate([
|
|
77
|
-
(0, common_1.Delete)(':id'),
|
|
78
|
-
__param(0, (0, common_1.Param)('id')),
|
|
79
|
-
__metadata("design:type", Function),
|
|
80
|
-
__metadata("design:paramtypes", [String]),
|
|
81
|
-
__metadata("design:returntype", Promise)
|
|
82
|
-
], SkillsController.prototype, "remove", null);
|
|
83
|
-
exports.SkillsController = SkillsController = __decorate([
|
|
84
|
-
(0, common_1.Controller)('api/skills'),
|
|
85
|
-
__metadata("design:paramtypes", [skills_service_1.SkillsService])
|
|
86
|
-
], SkillsController);
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.SkillsModule = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const workspaces_module_1 = require("../workspaces/workspaces.module");
|
|
12
|
-
const skills_controller_1 = require("./skills.controller");
|
|
13
|
-
const skills_service_1 = require("./skills.service");
|
|
14
|
-
let SkillsModule = class SkillsModule {
|
|
15
|
-
};
|
|
16
|
-
exports.SkillsModule = SkillsModule;
|
|
17
|
-
exports.SkillsModule = SkillsModule = __decorate([
|
|
18
|
-
(0, common_1.Module)({
|
|
19
|
-
imports: [workspaces_module_1.WorkspacesModule],
|
|
20
|
-
controllers: [skills_controller_1.SkillsController],
|
|
21
|
-
providers: [skills_service_1.SkillsService],
|
|
22
|
-
exports: [skills_service_1.SkillsService],
|
|
23
|
-
})
|
|
24
|
-
], SkillsModule);
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { WorkspacesService } from '../workspaces/workspaces.service';
|
|
2
|
-
export declare class SkillsService {
|
|
3
|
-
private readonly workspacesService;
|
|
4
|
-
constructor(workspacesService: WorkspacesService);
|
|
5
|
-
list(options: {
|
|
6
|
-
scope?: unknown;
|
|
7
|
-
q?: unknown;
|
|
8
|
-
workspaceId?: unknown;
|
|
9
|
-
}): Promise<{
|
|
10
|
-
items: import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillRecord[];
|
|
11
|
-
}>;
|
|
12
|
-
get(id: string): Promise<import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillDetail>;
|
|
13
|
-
create(input: {
|
|
14
|
-
scope?: unknown;
|
|
15
|
-
name?: unknown;
|
|
16
|
-
description?: unknown;
|
|
17
|
-
content?: unknown;
|
|
18
|
-
workspaceId?: unknown;
|
|
19
|
-
}): Promise<{
|
|
20
|
-
created: true;
|
|
21
|
-
item: import("@memo-code/core", { with: { "resolution-mode": "import" } }).SkillRecord;
|
|
22
|
-
}>;
|
|
23
|
-
update(id: string, input: {
|
|
24
|
-
description?: unknown;
|
|
25
|
-
content?: unknown;
|
|
26
|
-
}): Promise<{
|
|
27
|
-
updated: true;
|
|
28
|
-
}>;
|
|
29
|
-
remove(id: string): Promise<{
|
|
30
|
-
deleted: true;
|
|
31
|
-
}>;
|
|
32
|
-
setActive(ids: string[]): Promise<{
|
|
33
|
-
active: string[];
|
|
34
|
-
}>;
|
|
35
|
-
private listWorkspaceCwds;
|
|
36
|
-
private resolveWorkspaceCwd;
|
|
37
|
-
private wrap;
|
|
38
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
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.SkillsService = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const core_1 = require("@memo-code/core");
|
|
15
|
-
const workspaces_service_1 = require("../workspaces/workspaces.service");
|
|
16
|
-
let SkillsService = class SkillsService {
|
|
17
|
-
workspacesService;
|
|
18
|
-
constructor(workspacesService) {
|
|
19
|
-
this.workspacesService = workspacesService;
|
|
20
|
-
}
|
|
21
|
-
async list(options) {
|
|
22
|
-
const workspaceCwd = await this.resolveWorkspaceCwd(options.workspaceId, {
|
|
23
|
-
requiredWhenProjectScope: options.scope === 'project',
|
|
24
|
-
});
|
|
25
|
-
return this.wrap(() => (0, core_1.listSkills)({
|
|
26
|
-
scope: options.scope,
|
|
27
|
-
q: options.q,
|
|
28
|
-
workspaceCwd,
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
async get(id) {
|
|
32
|
-
const workspaceCwds = await this.listWorkspaceCwds();
|
|
33
|
-
return this.wrap(() => (0, core_1.getSkill)(id, { workspaceCwds }));
|
|
34
|
-
}
|
|
35
|
-
async create(input) {
|
|
36
|
-
const workspaceCwd = await this.resolveWorkspaceCwd(input.workspaceId, {
|
|
37
|
-
requiredWhenProjectScope: input.scope === 'project',
|
|
38
|
-
});
|
|
39
|
-
return this.wrap(() => (0, core_1.createSkill)({
|
|
40
|
-
scope: input.scope,
|
|
41
|
-
name: input.name,
|
|
42
|
-
description: input.description,
|
|
43
|
-
content: input.content,
|
|
44
|
-
workspaceCwd,
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
async update(id, input) {
|
|
48
|
-
const workspaceCwds = await this.listWorkspaceCwds();
|
|
49
|
-
return this.wrap(() => (0, core_1.updateSkill)(id, input, { workspaceCwds }));
|
|
50
|
-
}
|
|
51
|
-
async remove(id) {
|
|
52
|
-
const workspaceCwds = await this.listWorkspaceCwds();
|
|
53
|
-
return this.wrap(() => (0, core_1.removeSkill)(id, { workspaceCwds }));
|
|
54
|
-
}
|
|
55
|
-
async setActive(ids) {
|
|
56
|
-
const workspaceCwds = await this.listWorkspaceCwds();
|
|
57
|
-
return this.wrap(() => (0, core_1.setActiveSkills)(ids, { workspaceCwds }));
|
|
58
|
-
}
|
|
59
|
-
async listWorkspaceCwds() {
|
|
60
|
-
const workspaces = await this.workspacesService.list();
|
|
61
|
-
return workspaces.items.map((item) => item.cwd);
|
|
62
|
-
}
|
|
63
|
-
async resolveWorkspaceCwd(workspaceId, options) {
|
|
64
|
-
const id = typeof workspaceId === 'string' ? workspaceId.trim() : '';
|
|
65
|
-
if (!id) {
|
|
66
|
-
if (options.requiredWhenProjectScope) {
|
|
67
|
-
throw new common_1.BadRequestException('workspaceId is required when scope=project');
|
|
68
|
-
}
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
const workspace = await this.workspacesService.getById(id);
|
|
72
|
-
if (!workspace) {
|
|
73
|
-
throw new common_1.NotFoundException('workspace not found');
|
|
74
|
-
}
|
|
75
|
-
return workspace.cwd;
|
|
76
|
-
}
|
|
77
|
-
async wrap(fn) {
|
|
78
|
-
try {
|
|
79
|
-
return await fn();
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
if (error instanceof core_1.SkillsAdminError) {
|
|
83
|
-
if (error.code === 'NOT_FOUND') {
|
|
84
|
-
throw new common_1.NotFoundException(error.message);
|
|
85
|
-
}
|
|
86
|
-
throw new common_1.BadRequestException(error.message);
|
|
87
|
-
}
|
|
88
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
89
|
-
throw new common_1.InternalServerErrorException(message || 'skills operation failed');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
exports.SkillsService = SkillsService;
|
|
94
|
-
exports.SkillsService = SkillsService = __decorate([
|
|
95
|
-
(0, common_1.Injectable)(),
|
|
96
|
-
__metadata("design:paramtypes", [workspaces_service_1.WorkspacesService])
|
|
97
|
-
], SkillsService);
|
|
@@ -1,20 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.StreamModule = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const stream_service_1 = require("./stream.service");
|
|
12
|
-
let StreamModule = class StreamModule {
|
|
13
|
-
};
|
|
14
|
-
exports.StreamModule = StreamModule;
|
|
15
|
-
exports.StreamModule = StreamModule = __decorate([
|
|
16
|
-
(0, common_1.Module)({
|
|
17
|
-
providers: [stream_service_1.StreamService],
|
|
18
|
-
exports: [stream_service_1.StreamService],
|
|
19
|
-
})
|
|
20
|
-
], StreamModule);
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage } from 'node:http';
|
|
2
|
-
import { OnModuleDestroy } from '@nestjs/common';
|
|
3
|
-
import type { AccessTokenPayload } from '../auth/auth.types';
|
|
4
|
-
type AccessTokenVerifier = (token: string) => Promise<AccessTokenPayload>;
|
|
5
|
-
type AttachOptions = {
|
|
6
|
-
httpServer: {
|
|
7
|
-
on: (event: 'upgrade', listener: (request: IncomingMessage, socket: import('node:net').Socket, head: Buffer) => void) => void;
|
|
8
|
-
};
|
|
9
|
-
verifyAccessToken: AccessTokenVerifier;
|
|
10
|
-
};
|
|
11
|
-
export declare class StreamService implements OnModuleDestroy {
|
|
12
|
-
private readonly logger;
|
|
13
|
-
private readonly socketsBySession;
|
|
14
|
-
private readonly listenersBySession;
|
|
15
|
-
private readonly globalListeners;
|
|
16
|
-
private wsServer;
|
|
17
|
-
private attached;
|
|
18
|
-
attach(options: AttachOptions): void;
|
|
19
|
-
broadcast(sessionId: string, payload: unknown): void;
|
|
20
|
-
disconnectSession(sessionId: string): void;
|
|
21
|
-
subscribe(sessionId: string, listener: (payload: unknown) => void): () => void;
|
|
22
|
-
subscribeAll(listener: (sessionId: string, payload: unknown) => void): () => void;
|
|
23
|
-
onModuleDestroy(): Promise<void>;
|
|
24
|
-
private registerSocket;
|
|
25
|
-
}
|
|
26
|
-
export {};
|