codingbuddy 2.3.1 → 2.3.3

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.
@@ -0,0 +1,489 @@
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 SessionService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SessionService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const fs = require("fs/promises");
16
+ const fs_1 = require("fs");
17
+ const path = require("path");
18
+ const config_service_1 = require("../config/config.service");
19
+ const SESSIONS_DIR_NAME = 'docs/codingbuddy/sessions';
20
+ const MARKDOWN = {
21
+ SESSION_HEADER: '# Session:',
22
+ CREATED_PREFIX: '**Created**:',
23
+ UPDATED_PREFIX: '**Updated**:',
24
+ STATUS_PREFIX: '**Status**:',
25
+ PRIMARY_AGENT_PREFIX: '**Primary Agent**:',
26
+ RECOMMENDED_ACT_AGENT_PREFIX: '**Recommended ACT Agent**:',
27
+ SPECIALISTS_PREFIX: '**Specialists**:',
28
+ SECTION_SEPARATOR: '---',
29
+ TASK_HEADER: '### Task',
30
+ DECISIONS_HEADER: '### Decisions',
31
+ NOTES_HEADER: '### Notes',
32
+ };
33
+ const SESSION_ID_PATTERN = /^[a-z0-9가-힣-]+$/;
34
+ const MAX_SESSION_TITLE_LENGTH = 200;
35
+ const MAX_SLUG_LENGTH = 100;
36
+ const MAX_SESSION_ID_LENGTH = 150;
37
+ const VALID_SESSION_STATUSES = ['active', 'completed', 'archived'];
38
+ const VALID_SECTION_STATUSES = ['in_progress', 'completed', 'blocked'];
39
+ const SECTION_HEADER_PATTERN = /^## (PLAN|ACT|EVAL|AUTO) \((.+)\)$/;
40
+ const RECOMMENDED_AGENT_PATTERN = /\*\*Recommended ACT Agent\*\*: ([^\s(]+)(?:\s*\(confidence: ([\d.]+)\))?/;
41
+ function isValidSessionStatus(value) {
42
+ return VALID_SESSION_STATUSES.includes(value);
43
+ }
44
+ function isValidSectionStatus(value) {
45
+ return VALID_SECTION_STATUSES.includes(value);
46
+ }
47
+ function parseMetadataLine(line, ctx) {
48
+ if (line.startsWith(MARKDOWN.SESSION_HEADER)) {
49
+ ctx.metadata.title = line.replace(MARKDOWN.SESSION_HEADER, '').trim();
50
+ return true;
51
+ }
52
+ if (line.startsWith(MARKDOWN.CREATED_PREFIX)) {
53
+ ctx.metadata.createdAt = line.replace(MARKDOWN.CREATED_PREFIX, '').trim();
54
+ return true;
55
+ }
56
+ if (line.startsWith(MARKDOWN.UPDATED_PREFIX)) {
57
+ ctx.metadata.updatedAt = line.replace(MARKDOWN.UPDATED_PREFIX, '').trim();
58
+ return true;
59
+ }
60
+ if (line.startsWith(MARKDOWN.STATUS_PREFIX) && !ctx.currentSection) {
61
+ const statusValue = line.replace(MARKDOWN.STATUS_PREFIX, '').trim();
62
+ if (isValidSessionStatus(statusValue)) {
63
+ ctx.metadata.status = statusValue;
64
+ }
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ function parseSectionHeader(line, ctx) {
70
+ const match = line.match(SECTION_HEADER_PATTERN);
71
+ if (!match)
72
+ return false;
73
+ if (ctx.currentSection && ctx.currentSection.mode) {
74
+ ctx.sections.push(ctx.currentSection);
75
+ }
76
+ ctx.currentSection = {
77
+ mode: match[1],
78
+ timestamp: match[2],
79
+ };
80
+ ctx.currentListType = null;
81
+ return true;
82
+ }
83
+ function parseSectionField(line, section) {
84
+ if (line.startsWith(MARKDOWN.PRIMARY_AGENT_PREFIX)) {
85
+ section.primaryAgent = line
86
+ .replace(MARKDOWN.PRIMARY_AGENT_PREFIX, '')
87
+ .trim();
88
+ return true;
89
+ }
90
+ if (line.startsWith(MARKDOWN.RECOMMENDED_ACT_AGENT_PREFIX)) {
91
+ const match = line.match(RECOMMENDED_AGENT_PATTERN);
92
+ if (match) {
93
+ section.recommendedActAgent = match[1];
94
+ if (match[2]) {
95
+ section.recommendedActAgentConfidence = parseFloat(match[2]);
96
+ }
97
+ }
98
+ return true;
99
+ }
100
+ if (line.startsWith(MARKDOWN.SPECIALISTS_PREFIX)) {
101
+ section.specialists = line
102
+ .replace(MARKDOWN.SPECIALISTS_PREFIX, '')
103
+ .trim()
104
+ .split(',')
105
+ .map(s => s.trim());
106
+ return true;
107
+ }
108
+ if (line.startsWith(MARKDOWN.STATUS_PREFIX)) {
109
+ const statusValue = line.replace(MARKDOWN.STATUS_PREFIX, '').trim();
110
+ if (isValidSectionStatus(statusValue)) {
111
+ section.status = statusValue;
112
+ }
113
+ return true;
114
+ }
115
+ return false;
116
+ }
117
+ function parseListHeader(line, section) {
118
+ if (line === MARKDOWN.TASK_HEADER) {
119
+ return { matched: true, listType: 'task' };
120
+ }
121
+ if (line === MARKDOWN.DECISIONS_HEADER) {
122
+ section.decisions = [];
123
+ return { matched: true, listType: 'decisions' };
124
+ }
125
+ if (line === MARKDOWN.NOTES_HEADER) {
126
+ section.notes = [];
127
+ return { matched: true, listType: 'notes' };
128
+ }
129
+ return { matched: false };
130
+ }
131
+ function isContentLine(line) {
132
+ return (!line.startsWith('#') &&
133
+ !line.startsWith('**') &&
134
+ !line.startsWith('-') &&
135
+ !line.startsWith('---') &&
136
+ line.trim().length > 0);
137
+ }
138
+ let SessionService = SessionService_1 = class SessionService {
139
+ constructor(configService) {
140
+ this.configService = configService;
141
+ this.logger = new common_1.Logger(SessionService_1.name);
142
+ }
143
+ getSessionsDir() {
144
+ const projectRoot = this.configService.getProjectRoot();
145
+ return path.join(projectRoot, SESSIONS_DIR_NAME);
146
+ }
147
+ ensureSessionsDir() {
148
+ const sessionsDir = this.getSessionsDir();
149
+ if (!(0, fs_1.existsSync)(sessionsDir)) {
150
+ (0, fs_1.mkdirSync)(sessionsDir, { recursive: true });
151
+ this.logger.log(`Created sessions directory: ${sessionsDir}`);
152
+ }
153
+ }
154
+ validateSessionId(sessionId) {
155
+ if (!sessionId || sessionId.length === 0) {
156
+ this.logger.warn(`Session ID is empty: rejected`);
157
+ return false;
158
+ }
159
+ if (sessionId.length > MAX_SESSION_ID_LENGTH) {
160
+ this.logger.warn(`Session ID exceeds maximum length: rejected`);
161
+ return false;
162
+ }
163
+ if (sessionId.includes('\x00')) {
164
+ this.logger.warn(`Session ID contains null byte: rejected`);
165
+ return false;
166
+ }
167
+ if (sessionId.includes('..') ||
168
+ sessionId.includes('/') ||
169
+ sessionId.includes('\\')) {
170
+ this.logger.warn(`Session ID contains path traversal: rejected`);
171
+ return false;
172
+ }
173
+ if (!SESSION_ID_PATTERN.test(sessionId)) {
174
+ this.logger.warn(`Session ID contains invalid characters: rejected`);
175
+ return false;
176
+ }
177
+ return true;
178
+ }
179
+ getSessionFilePath(sessionId) {
180
+ if (!this.validateSessionId(sessionId)) {
181
+ return null;
182
+ }
183
+ const filePath = path.join(this.getSessionsDir(), `${sessionId}.md`);
184
+ const resolvedPath = path.resolve(filePath);
185
+ const resolvedSessionsDir = path.resolve(this.getSessionsDir());
186
+ if (!resolvedPath.startsWith(resolvedSessionsDir + path.sep)) {
187
+ this.logger.warn(`Session path escaped sessions directory: ${resolvedPath}`);
188
+ return null;
189
+ }
190
+ return filePath;
191
+ }
192
+ validateTitle(title) {
193
+ if (!title || title.trim().length === 0) {
194
+ return 'Title cannot be empty';
195
+ }
196
+ if (title.length > MAX_SESSION_TITLE_LENGTH) {
197
+ return `Title exceeds maximum length of ${MAX_SESSION_TITLE_LENGTH} characters`;
198
+ }
199
+ return null;
200
+ }
201
+ generateFilename(title) {
202
+ const date = new Date().toISOString().split('T')[0];
203
+ const slug = title
204
+ .toLowerCase()
205
+ .replace(/[^a-z0-9가-힣]+/g, '-')
206
+ .replace(/^-|-$/g, '')
207
+ .slice(0, MAX_SLUG_LENGTH);
208
+ return `${date}-${slug}.md`;
209
+ }
210
+ async createSession(options) {
211
+ try {
212
+ const titleError = this.validateTitle(options.title);
213
+ if (titleError) {
214
+ return { success: false, error: titleError };
215
+ }
216
+ this.ensureSessionsDir();
217
+ const filename = this.generateFilename(options.title);
218
+ const filePath = path.join(this.getSessionsDir(), filename);
219
+ if ((0, fs_1.existsSync)(filePath)) {
220
+ return {
221
+ success: true,
222
+ sessionId: filename.replace('.md', ''),
223
+ filePath,
224
+ message: `Session already exists: ${filename}`,
225
+ };
226
+ }
227
+ const now = new Date().toISOString();
228
+ const metadata = {
229
+ id: filename.replace('.md', ''),
230
+ title: options.title,
231
+ createdAt: now,
232
+ updatedAt: now,
233
+ status: 'active',
234
+ };
235
+ const document = {
236
+ metadata,
237
+ sections: [],
238
+ };
239
+ const content = this.serializeDocument(document);
240
+ await fs.writeFile(filePath, content, 'utf-8');
241
+ this.logger.log(`Created session: ${filename}`);
242
+ return {
243
+ success: true,
244
+ sessionId: metadata.id,
245
+ filePath,
246
+ message: `Session created: ${filename}`,
247
+ };
248
+ }
249
+ catch (error) {
250
+ const message = error instanceof Error ? error.message : 'Unknown error';
251
+ this.logger.error(`Failed to create session: ${message}`);
252
+ return {
253
+ success: false,
254
+ error: message,
255
+ };
256
+ }
257
+ }
258
+ async getSession(sessionId) {
259
+ try {
260
+ const filePath = this.getSessionFilePath(sessionId);
261
+ if (!filePath) {
262
+ this.logger.debug(`Invalid session ID: ${sessionId}`);
263
+ return null;
264
+ }
265
+ if (!(0, fs_1.existsSync)(filePath)) {
266
+ this.logger.debug(`Session not found: ${sessionId}`);
267
+ return null;
268
+ }
269
+ const content = await fs.readFile(filePath, 'utf-8');
270
+ return this.parseDocument(content, sessionId);
271
+ }
272
+ catch (error) {
273
+ this.logger.error(`Failed to read session ${sessionId}: ${error instanceof Error ? error.message : 'Unknown error'}`);
274
+ return null;
275
+ }
276
+ }
277
+ async getActiveSession() {
278
+ try {
279
+ const sessionsDir = this.getSessionsDir();
280
+ if (!(0, fs_1.existsSync)(sessionsDir)) {
281
+ return null;
282
+ }
283
+ const files = await fs.readdir(sessionsDir);
284
+ const mdFiles = files
285
+ .filter(f => f.endsWith('.md'))
286
+ .sort()
287
+ .reverse();
288
+ for (const file of mdFiles) {
289
+ const sessionId = file.replace('.md', '');
290
+ const session = await this.getSession(sessionId);
291
+ if (session && session.metadata.status === 'active') {
292
+ return session;
293
+ }
294
+ }
295
+ return null;
296
+ }
297
+ catch (error) {
298
+ this.logger.error(`Failed to get active session: ${error instanceof Error ? error.message : 'Unknown error'}`);
299
+ return null;
300
+ }
301
+ }
302
+ async updateSession(options) {
303
+ try {
304
+ const session = await this.getSession(options.sessionId);
305
+ if (!session) {
306
+ return {
307
+ success: false,
308
+ error: `Session not found: ${options.sessionId}`,
309
+ };
310
+ }
311
+ const now = new Date().toISOString();
312
+ const timestamp = new Date().toLocaleString('ko-KR', {
313
+ hour: '2-digit',
314
+ minute: '2-digit',
315
+ hour12: false,
316
+ });
317
+ const existingIndex = session.sections.findIndex(s => s.mode === options.section.mode);
318
+ const section = {
319
+ ...options.section,
320
+ timestamp: options.section.timestamp || timestamp,
321
+ };
322
+ if (existingIndex >= 0) {
323
+ session.sections[existingIndex] = {
324
+ ...session.sections[existingIndex],
325
+ ...section,
326
+ };
327
+ }
328
+ else {
329
+ session.sections.push(section);
330
+ }
331
+ session.metadata.updatedAt = now;
332
+ const filePath = this.getSessionFilePath(options.sessionId);
333
+ if (!filePath) {
334
+ return {
335
+ success: false,
336
+ error: `Invalid session ID: ${options.sessionId}`,
337
+ };
338
+ }
339
+ const content = this.serializeDocument(session);
340
+ await fs.writeFile(filePath, content, 'utf-8');
341
+ this.logger.log(`Updated session ${options.sessionId}: ${options.section.mode} section`);
342
+ return {
343
+ success: true,
344
+ sessionId: options.sessionId,
345
+ filePath,
346
+ message: `Session updated: ${options.section.mode} section`,
347
+ };
348
+ }
349
+ catch (error) {
350
+ const message = error instanceof Error ? error.message : 'Unknown error';
351
+ this.logger.error(`Failed to update session: ${message}`);
352
+ return {
353
+ success: false,
354
+ error: message,
355
+ };
356
+ }
357
+ }
358
+ async getRecommendedActAgent(sessionId) {
359
+ const session = await this.getSession(sessionId);
360
+ if (!session) {
361
+ return null;
362
+ }
363
+ const planSection = session.sections.find(s => s.mode === 'PLAN');
364
+ if (planSection?.recommendedActAgent) {
365
+ return {
366
+ agent: planSection.recommendedActAgent,
367
+ confidence: planSection.recommendedActAgentConfidence || 0,
368
+ };
369
+ }
370
+ return null;
371
+ }
372
+ serializeDocument(doc) {
373
+ const lines = [];
374
+ lines.push(`# Session: ${doc.metadata.title}`);
375
+ lines.push('');
376
+ lines.push(`**Created**: ${doc.metadata.createdAt}`);
377
+ lines.push(`**Updated**: ${doc.metadata.updatedAt}`);
378
+ lines.push(`**Status**: ${doc.metadata.status}`);
379
+ lines.push('');
380
+ lines.push('---');
381
+ for (const section of doc.sections) {
382
+ lines.push('');
383
+ lines.push(`## ${section.mode} (${section.timestamp})`);
384
+ lines.push('');
385
+ if (section.primaryAgent) {
386
+ lines.push(`**Primary Agent**: ${section.primaryAgent}`);
387
+ }
388
+ if (section.recommendedActAgent) {
389
+ const confidence = section.recommendedActAgentConfidence
390
+ ? ` (confidence: ${section.recommendedActAgentConfidence})`
391
+ : '';
392
+ lines.push(`**Recommended ACT Agent**: ${section.recommendedActAgent}${confidence}`);
393
+ }
394
+ if (section.specialists && section.specialists.length > 0) {
395
+ lines.push(`**Specialists**: ${section.specialists.join(', ')}`);
396
+ }
397
+ if (section.status) {
398
+ lines.push(`**Status**: ${section.status}`);
399
+ }
400
+ lines.push('');
401
+ if (section.task) {
402
+ lines.push('### Task');
403
+ lines.push(section.task);
404
+ lines.push('');
405
+ }
406
+ if (section.decisions && section.decisions.length > 0) {
407
+ lines.push('### Decisions');
408
+ for (const decision of section.decisions) {
409
+ lines.push(`- ${decision}`);
410
+ }
411
+ lines.push('');
412
+ }
413
+ if (section.notes && section.notes.length > 0) {
414
+ lines.push('### Notes');
415
+ for (const note of section.notes) {
416
+ lines.push(`- ${note}`);
417
+ }
418
+ lines.push('');
419
+ }
420
+ lines.push('---');
421
+ }
422
+ return lines.join('\n');
423
+ }
424
+ parseDocument(content, sessionId) {
425
+ const lines = content.split('\n');
426
+ const ctx = {
427
+ metadata: {
428
+ id: sessionId,
429
+ title: sessionId,
430
+ createdAt: '',
431
+ updatedAt: '',
432
+ status: 'active',
433
+ },
434
+ sections: [],
435
+ currentSection: null,
436
+ currentListType: null,
437
+ };
438
+ for (const line of lines) {
439
+ if (parseMetadataLine(line, ctx))
440
+ continue;
441
+ if (parseSectionHeader(line, ctx))
442
+ continue;
443
+ if (ctx.currentSection) {
444
+ this.parseSectionContentLine(line, ctx);
445
+ }
446
+ }
447
+ if (ctx.currentSection && ctx.currentSection.mode) {
448
+ ctx.sections.push(ctx.currentSection);
449
+ }
450
+ return { metadata: ctx.metadata, sections: ctx.sections };
451
+ }
452
+ parseSectionContentLine(line, ctx) {
453
+ if (!ctx.currentSection)
454
+ return;
455
+ const section = ctx.currentSection;
456
+ if (parseSectionField(line, section))
457
+ return;
458
+ const listResult = parseListHeader(line, section);
459
+ if (listResult.matched) {
460
+ ctx.currentListType =
461
+ listResult.listType === 'task' ? null : listResult.listType;
462
+ return;
463
+ }
464
+ if (line.startsWith('- ') && ctx.currentListType) {
465
+ this.parseListItem(line, section, ctx.currentListType);
466
+ return;
467
+ }
468
+ if (isContentLine(line) && !ctx.currentListType) {
469
+ section.task = section.task ? `${section.task}\n${line}` : line;
470
+ }
471
+ }
472
+ parseListItem(line, section, listType) {
473
+ const item = line.replace('- ', '').trim();
474
+ if (listType === 'decisions') {
475
+ section.decisions = section.decisions || [];
476
+ section.decisions.push(item);
477
+ }
478
+ else {
479
+ section.notes = section.notes || [];
480
+ section.notes.push(item);
481
+ }
482
+ }
483
+ };
484
+ exports.SessionService = SessionService;
485
+ exports.SessionService = SessionService = SessionService_1 = __decorate([
486
+ (0, common_1.Injectable)(),
487
+ __metadata("design:paramtypes", [config_service_1.ConfigService])
488
+ ], SessionService);
489
+ //# sourceMappingURL=session.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../src/session/session.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Mode } from '../keyword/keyword.types';
2
+ export interface SessionSection {
3
+ mode: Mode;
4
+ timestamp: string;
5
+ primaryAgent?: string;
6
+ recommendedActAgent?: string;
7
+ recommendedActAgentConfidence?: number;
8
+ specialists?: string[];
9
+ task?: string;
10
+ decisions?: string[];
11
+ notes?: string[];
12
+ status?: 'in_progress' | 'completed' | 'blocked';
13
+ }
14
+ export interface SessionMetadata {
15
+ id: string;
16
+ title: string;
17
+ createdAt: string;
18
+ updatedAt: string;
19
+ status: 'active' | 'completed' | 'archived';
20
+ }
21
+ export interface SessionDocument {
22
+ metadata: SessionMetadata;
23
+ sections: SessionSection[];
24
+ }
25
+ export interface CreateSessionOptions {
26
+ title: string;
27
+ task?: string;
28
+ }
29
+ export interface UpdateSessionOptions {
30
+ sessionId: string;
31
+ section: Partial<SessionSection> & {
32
+ mode: Mode;
33
+ };
34
+ }
35
+ export interface SessionOperationResult {
36
+ success: boolean;
37
+ sessionId?: string;
38
+ filePath?: string;
39
+ message?: string;
40
+ error?: string;
41
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=session.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.types.js","sourceRoot":"","sources":["../../../src/session/session.types.ts"],"names":[],"mappings":""}