codingbuddy 2.3.4 → 2.4.1

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.
Files changed (131) hide show
  1. package/README.md +70 -0
  2. package/dist/src/cli/init/prompts/tech-stack-prompt.d.ts +1 -0
  3. package/dist/src/cli/init/prompts/tech-stack-prompt.js +1 -0
  4. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +1 -1
  5. package/dist/src/cli/init/prompts/test-strategy-prompt.d.ts +1 -0
  6. package/dist/src/cli/init/prompts/test-strategy-prompt.js +9 -7
  7. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +1 -1
  8. package/dist/src/config/config.schema.d.ts +11 -0
  9. package/dist/src/config/config.schema.js +7 -1
  10. package/dist/src/config/config.schema.js.map +1 -1
  11. package/dist/src/config/config.service.d.ts +4 -0
  12. package/dist/src/config/config.service.js +7 -0
  13. package/dist/src/config/config.service.js.map +1 -1
  14. package/dist/src/context/context-document.service.d.ts +24 -0
  15. package/dist/src/context/context-document.service.js +212 -0
  16. package/dist/src/context/context-document.service.js.map +1 -0
  17. package/dist/src/context/context-document.types.d.ts +89 -0
  18. package/dist/src/context/context-document.types.js +53 -0
  19. package/dist/src/context/context-document.types.js.map +1 -0
  20. package/dist/src/context/context-parser.utils.d.ts +10 -0
  21. package/dist/src/context/context-parser.utils.js +214 -0
  22. package/dist/src/context/context-parser.utils.js.map +1 -0
  23. package/dist/src/context/context-serializer.utils.d.ts +16 -0
  24. package/dist/src/context/context-serializer.utils.js +130 -0
  25. package/dist/src/context/context-serializer.utils.js.map +1 -0
  26. package/dist/src/context/context.module.js +5 -3
  27. package/dist/src/context/context.module.js.map +1 -1
  28. package/dist/src/keyword/keyword.module.js +5 -2
  29. package/dist/src/keyword/keyword.module.js.map +1 -1
  30. package/dist/src/keyword/keyword.service.js +19 -11
  31. package/dist/src/keyword/keyword.service.js.map +1 -1
  32. package/dist/src/keyword/patterns/agent.patterns.d.ts +2 -0
  33. package/dist/src/keyword/patterns/agent.patterns.js +91 -0
  34. package/dist/src/keyword/patterns/agent.patterns.js.map +1 -0
  35. package/dist/src/keyword/patterns/ai-ml.patterns.d.ts +2 -0
  36. package/dist/src/keyword/patterns/ai-ml.patterns.js +81 -0
  37. package/dist/src/keyword/patterns/ai-ml.patterns.js.map +1 -0
  38. package/dist/src/keyword/patterns/backend.patterns.d.ts +2 -0
  39. package/dist/src/keyword/patterns/backend.patterns.js +91 -0
  40. package/dist/src/keyword/patterns/backend.patterns.js.map +1 -0
  41. package/dist/src/keyword/patterns/context.patterns.d.ts +2 -0
  42. package/dist/src/keyword/patterns/context.patterns.js +82 -0
  43. package/dist/src/keyword/patterns/context.patterns.js.map +1 -0
  44. package/dist/src/keyword/patterns/data.patterns.d.ts +2 -0
  45. package/dist/src/keyword/patterns/data.patterns.js +47 -0
  46. package/dist/src/keyword/patterns/data.patterns.js.map +1 -0
  47. package/dist/src/keyword/patterns/explicit.patterns.d.ts +1 -0
  48. package/dist/src/keyword/patterns/explicit.patterns.js +10 -0
  49. package/dist/src/keyword/patterns/explicit.patterns.js.map +1 -0
  50. package/dist/src/keyword/patterns/index.d.ts +12 -0
  51. package/dist/src/keyword/patterns/index.js +26 -0
  52. package/dist/src/keyword/patterns/index.js.map +1 -0
  53. package/dist/src/keyword/patterns/intent-pattern-checks.d.ts +2 -0
  54. package/dist/src/keyword/patterns/intent-pattern-checks.js +48 -0
  55. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +1 -0
  56. package/dist/src/keyword/patterns/intent-patterns.types.d.ts +15 -0
  57. package/dist/src/keyword/patterns/intent-patterns.types.js +3 -0
  58. package/dist/src/keyword/patterns/intent-patterns.types.js.map +1 -0
  59. package/dist/src/keyword/patterns/meta-discussion.patterns.d.ts +1 -0
  60. package/dist/src/keyword/patterns/meta-discussion.patterns.js +11 -0
  61. package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +1 -0
  62. package/dist/src/keyword/patterns/mobile.patterns.d.ts +2 -0
  63. package/dist/src/keyword/patterns/mobile.patterns.js +35 -0
  64. package/dist/src/keyword/patterns/mobile.patterns.js.map +1 -0
  65. package/dist/src/keyword/patterns/platform.patterns.d.ts +2 -0
  66. package/dist/src/keyword/patterns/platform.patterns.js +72 -0
  67. package/dist/src/keyword/patterns/platform.patterns.js.map +1 -0
  68. package/dist/src/keyword/patterns/tooling.patterns.d.ts +2 -0
  69. package/dist/src/keyword/patterns/tooling.patterns.js +78 -0
  70. package/dist/src/keyword/patterns/tooling.patterns.js.map +1 -0
  71. package/dist/src/keyword/primary-agent-resolver.d.ts +7 -29
  72. package/dist/src/keyword/primary-agent-resolver.js +34 -684
  73. package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
  74. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.d.ts +8 -0
  75. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js +45 -0
  76. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +1 -0
  77. package/dist/src/keyword/strategies/act-agent.strategy.d.ts +10 -0
  78. package/dist/src/keyword/strategies/act-agent.strategy.js +125 -0
  79. package/dist/src/keyword/strategies/act-agent.strategy.js.map +1 -0
  80. package/dist/src/keyword/strategies/eval-agent.strategy.d.ts +5 -0
  81. package/dist/src/keyword/strategies/eval-agent.strategy.js +19 -0
  82. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +1 -0
  83. package/dist/src/keyword/strategies/index.d.ts +4 -0
  84. package/dist/src/keyword/strategies/index.js +10 -0
  85. package/dist/src/keyword/strategies/index.js.map +1 -0
  86. package/dist/src/keyword/strategies/plan-agent.strategy.d.ts +6 -0
  87. package/dist/src/keyword/strategies/plan-agent.strategy.js +68 -0
  88. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +1 -0
  89. package/dist/src/keyword/strategies/resolution-strategy.interface.d.ts +20 -0
  90. package/dist/src/keyword/strategies/resolution-strategy.interface.js +3 -0
  91. package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +1 -0
  92. package/dist/src/mcp/handlers/config.handler.js +2 -1
  93. package/dist/src/mcp/handlers/config.handler.js.map +1 -1
  94. package/dist/src/mcp/handlers/context-document.handler.d.ts +13 -0
  95. package/dist/src/mcp/handlers/context-document.handler.js +232 -0
  96. package/dist/src/mcp/handlers/context-document.handler.js.map +1 -0
  97. package/dist/src/mcp/handlers/index.d.ts +1 -0
  98. package/dist/src/mcp/handlers/index.js +3 -1
  99. package/dist/src/mcp/handlers/index.js.map +1 -1
  100. package/dist/src/mcp/handlers/mode.handler.d.ts +6 -1
  101. package/dist/src/mcp/handlers/mode.handler.js +128 -14
  102. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  103. package/dist/src/mcp/mcp.module.js +1 -0
  104. package/dist/src/mcp/mcp.module.js.map +1 -1
  105. package/dist/src/rules/rules.service.js +17 -1
  106. package/dist/src/rules/rules.service.js.map +1 -1
  107. package/dist/src/rules/rules.types.d.ts +7 -0
  108. package/dist/src/session/__tests__/session-test.utils.d.ts +5 -0
  109. package/dist/src/session/__tests__/session-test.utils.js +59 -0
  110. package/dist/src/session/__tests__/session-test.utils.js.map +1 -0
  111. package/dist/src/session/session.cache.d.ts +19 -0
  112. package/dist/src/session/session.cache.js +83 -0
  113. package/dist/src/session/session.cache.js.map +1 -0
  114. package/dist/src/session/session.parser.d.ts +22 -0
  115. package/dist/src/session/session.parser.js +273 -0
  116. package/dist/src/session/session.parser.js.map +1 -0
  117. package/dist/src/session/session.serializer.d.ts +6 -0
  118. package/dist/src/session/session.serializer.js +84 -0
  119. package/dist/src/session/session.serializer.js.map +1 -0
  120. package/dist/src/session/session.service.d.ts +3 -12
  121. package/dist/src/session/session.service.js +63 -311
  122. package/dist/src/session/session.service.js.map +1 -1
  123. package/dist/src/session/session.types.d.ts +11 -0
  124. package/dist/src/shared/async.utils.d.ts +12 -0
  125. package/dist/src/shared/async.utils.js +50 -0
  126. package/dist/src/shared/async.utils.js.map +1 -1
  127. package/dist/src/shared/slug.utils.d.ts +2 -0
  128. package/dist/src/shared/slug.utils.js +20 -0
  129. package/dist/src/shared/slug.utils.js.map +1 -0
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/package.json +2 -2
@@ -16,177 +16,22 @@ const fs = require("fs/promises");
16
16
  const fs_1 = require("fs");
17
17
  const path = require("path");
18
18
  const config_service_1 = require("../config/config.service");
19
+ const slug_utils_1 = require("../shared/slug.utils");
20
+ const async_utils_1 = require("../shared/async.utils");
21
+ const session_parser_1 = require("./session.parser");
22
+ const session_serializer_1 = require("./session.serializer");
23
+ const session_cache_1 = require("./session.cache");
19
24
  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
- };
25
+ const SESSION_FILE_TIMEOUT_MS = 5000;
33
26
  const SESSION_ID_PATTERN = /^[a-z0-9가-힣-]+$/;
34
27
  const MAX_SESSION_TITLE_LENGTH = 200;
35
28
  const MAX_SLUG_LENGTH = 100;
36
29
  const MAX_SESSION_ID_LENGTH = 150;
37
- const CACHE_TTL_MS = 30_000;
38
- const MAX_CACHE_SIZE = 100;
39
- const VALID_SESSION_STATUSES = ['active', 'completed', 'archived'];
40
- const VALID_SECTION_STATUSES = ['in_progress', 'completed', 'blocked'];
41
- const SECTION_HEADER_PATTERN = /^## (PLAN|ACT|EVAL|AUTO) \((.+)\)$/;
42
- const RECOMMENDED_AGENT_PATTERN = /\*\*Recommended ACT Agent\*\*: ([^\s(]+)(?:\s*\(confidence: ([\d.]+)\))?/;
43
- function isValidSessionStatus(value) {
44
- return VALID_SESSION_STATUSES.includes(value);
45
- }
46
- function isValidSectionStatus(value) {
47
- return VALID_SECTION_STATUSES.includes(value);
48
- }
49
- function parseMetadataLine(line, ctx) {
50
- if (line.startsWith(MARKDOWN.SESSION_HEADER)) {
51
- ctx.metadata.title = line.replace(MARKDOWN.SESSION_HEADER, '').trim();
52
- return true;
53
- }
54
- if (line.startsWith(MARKDOWN.CREATED_PREFIX)) {
55
- ctx.metadata.createdAt = line.replace(MARKDOWN.CREATED_PREFIX, '').trim();
56
- return true;
57
- }
58
- if (line.startsWith(MARKDOWN.UPDATED_PREFIX)) {
59
- ctx.metadata.updatedAt = line.replace(MARKDOWN.UPDATED_PREFIX, '').trim();
60
- return true;
61
- }
62
- if (line.startsWith(MARKDOWN.STATUS_PREFIX) && !ctx.currentSection) {
63
- const statusValue = line.replace(MARKDOWN.STATUS_PREFIX, '').trim();
64
- if (isValidSessionStatus(statusValue)) {
65
- ctx.metadata.status = statusValue;
66
- }
67
- return true;
68
- }
69
- return false;
70
- }
71
- function parseSectionHeader(line, ctx) {
72
- const match = line.match(SECTION_HEADER_PATTERN);
73
- if (!match)
74
- return false;
75
- if (ctx.currentSection && ctx.currentSection.mode) {
76
- ctx.sections.push(ctx.currentSection);
77
- }
78
- ctx.currentSection = {
79
- mode: match[1],
80
- timestamp: match[2],
81
- };
82
- ctx.currentListType = null;
83
- return true;
84
- }
85
- function parseSectionField(line, section) {
86
- if (line.startsWith(MARKDOWN.PRIMARY_AGENT_PREFIX)) {
87
- section.primaryAgent = line
88
- .replace(MARKDOWN.PRIMARY_AGENT_PREFIX, '')
89
- .trim();
90
- return true;
91
- }
92
- if (line.startsWith(MARKDOWN.RECOMMENDED_ACT_AGENT_PREFIX)) {
93
- const match = line.match(RECOMMENDED_AGENT_PATTERN);
94
- if (match) {
95
- section.recommendedActAgent = match[1];
96
- if (match[2]) {
97
- section.recommendedActAgentConfidence = parseFloat(match[2]);
98
- }
99
- }
100
- return true;
101
- }
102
- if (line.startsWith(MARKDOWN.SPECIALISTS_PREFIX)) {
103
- section.specialists = line
104
- .replace(MARKDOWN.SPECIALISTS_PREFIX, '')
105
- .trim()
106
- .split(',')
107
- .map(s => s.trim());
108
- return true;
109
- }
110
- if (line.startsWith(MARKDOWN.STATUS_PREFIX)) {
111
- const statusValue = line.replace(MARKDOWN.STATUS_PREFIX, '').trim();
112
- if (isValidSectionStatus(statusValue)) {
113
- section.status = statusValue;
114
- }
115
- return true;
116
- }
117
- return false;
118
- }
119
- function parseListHeader(line, section) {
120
- if (line === MARKDOWN.TASK_HEADER) {
121
- return { matched: true, listType: 'task' };
122
- }
123
- if (line === MARKDOWN.DECISIONS_HEADER) {
124
- section.decisions = [];
125
- return { matched: true, listType: 'decisions' };
126
- }
127
- if (line === MARKDOWN.NOTES_HEADER) {
128
- section.notes = [];
129
- return { matched: true, listType: 'notes' };
130
- }
131
- return { matched: false };
132
- }
133
- function isContentLine(line) {
134
- return (!line.startsWith('#') &&
135
- !line.startsWith('**') &&
136
- !line.startsWith('-') &&
137
- !line.startsWith('---') &&
138
- line.trim().length > 0);
139
- }
140
30
  let SessionService = SessionService_1 = class SessionService {
141
31
  constructor(configService) {
142
32
  this.configService = configService;
143
33
  this.logger = new common_1.Logger(SessionService_1.name);
144
- this.sessionCache = new Map();
145
- this.activeSessionId = null;
146
- this.activeSessionTimestamp = 0;
147
- }
148
- isCacheValid(timestamp) {
149
- return Date.now() - timestamp < CACHE_TTL_MS;
150
- }
151
- getFromCache(sessionId) {
152
- const entry = this.sessionCache.get(sessionId);
153
- if (entry && this.isCacheValid(entry.timestamp)) {
154
- return entry.session;
155
- }
156
- if (entry) {
157
- this.sessionCache.delete(sessionId);
158
- }
159
- return null;
160
- }
161
- addToCache(sessionId, session) {
162
- if (this.sessionCache.has(sessionId)) {
163
- this.sessionCache.delete(sessionId);
164
- }
165
- while (this.sessionCache.size >= MAX_CACHE_SIZE) {
166
- const oldestKey = this.sessionCache.keys().next().value;
167
- if (oldestKey !== undefined) {
168
- this.sessionCache.delete(oldestKey);
169
- }
170
- else {
171
- break;
172
- }
173
- }
174
- this.sessionCache.set(sessionId, {
175
- session,
176
- timestamp: Date.now(),
177
- });
178
- }
179
- invalidateCache() {
180
- this.sessionCache.clear();
181
- this.activeSessionId = null;
182
- this.activeSessionTimestamp = 0;
183
- }
184
- invalidateSession(sessionId) {
185
- this.sessionCache.delete(sessionId);
186
- if (this.activeSessionId === sessionId) {
187
- this.activeSessionId = null;
188
- this.activeSessionTimestamp = 0;
189
- }
34
+ this.cache = new session_cache_1.SessionCache();
190
35
  }
191
36
  getSessionsDir() {
192
37
  const projectRoot = this.configService.getProjectRoot();
@@ -248,11 +93,7 @@ let SessionService = SessionService_1 = class SessionService {
248
93
  }
249
94
  generateFilename(title) {
250
95
  const date = new Date().toISOString().split('T')[0];
251
- const slug = title
252
- .toLowerCase()
253
- .replace(/[^a-z0-9가-힣]+/g, '-')
254
- .replace(/^-|-$/g, '')
255
- .slice(0, MAX_SLUG_LENGTH);
96
+ const slug = (0, slug_utils_1.generateSlug)(title, MAX_SLUG_LENGTH);
256
97
  return `${date}-${slug}.md`;
257
98
  }
258
99
  async createSession(options) {
@@ -284,10 +125,13 @@ let SessionService = SessionService_1 = class SessionService {
284
125
  metadata,
285
126
  sections: [],
286
127
  };
287
- const content = this.serializeDocument(document);
288
- await fs.writeFile(filePath, content, 'utf-8');
289
- this.activeSessionId = null;
290
- this.activeSessionTimestamp = 0;
128
+ const language = (await this.configService.getLanguage()) || 'en';
129
+ const content = (0, session_serializer_1.serializeDocument)(document, language);
130
+ await (0, async_utils_1.withTimeout)(fs.writeFile(filePath, content, 'utf-8'), {
131
+ timeoutMs: SESSION_FILE_TIMEOUT_MS,
132
+ operationName: 'write session file',
133
+ });
134
+ this.cache.invalidateActiveSession();
291
135
  this.logger.log(`Created session: ${filename}`);
292
136
  return {
293
137
  success: true,
@@ -299,15 +143,12 @@ let SessionService = SessionService_1 = class SessionService {
299
143
  catch (error) {
300
144
  const message = error instanceof Error ? error.message : 'Unknown error';
301
145
  this.logger.error(`Failed to create session: ${message}`);
302
- return {
303
- success: false,
304
- error: message,
305
- };
146
+ return { success: false, error: message };
306
147
  }
307
148
  }
308
149
  async getSession(sessionId) {
309
150
  try {
310
- const cached = this.getFromCache(sessionId);
151
+ const cached = this.cache.get(sessionId);
311
152
  if (cached) {
312
153
  return cached;
313
154
  }
@@ -320,9 +161,12 @@ let SessionService = SessionService_1 = class SessionService {
320
161
  this.logger.debug(`Session not found: ${sessionId}`);
321
162
  return null;
322
163
  }
323
- const content = await fs.readFile(filePath, 'utf-8');
324
- const session = this.parseDocument(content, sessionId);
325
- this.addToCache(sessionId, session);
164
+ const content = await (0, async_utils_1.withTimeout)(fs.readFile(filePath, 'utf-8'), {
165
+ timeoutMs: SESSION_FILE_TIMEOUT_MS,
166
+ operationName: 'read session file',
167
+ });
168
+ const session = (0, session_parser_1.parseDocument)(content, sessionId);
169
+ this.cache.set(sessionId, session);
326
170
  return session;
327
171
  }
328
172
  catch (error) {
@@ -332,14 +176,13 @@ let SessionService = SessionService_1 = class SessionService {
332
176
  }
333
177
  async getActiveSession() {
334
178
  try {
335
- if (this.activeSessionId &&
336
- this.isCacheValid(this.activeSessionTimestamp)) {
337
- const session = await this.getSession(this.activeSessionId);
179
+ const cachedId = this.cache.getActiveSessionId();
180
+ if (cachedId) {
181
+ const session = await this.getSession(cachedId);
338
182
  if (session && session.metadata.status === 'active') {
339
183
  return session;
340
184
  }
341
- this.activeSessionId = null;
342
- this.activeSessionTimestamp = 0;
185
+ this.cache.invalidateActiveSession();
343
186
  }
344
187
  const sessionsDir = this.getSessionsDir();
345
188
  if (!(0, fs_1.existsSync)(sessionsDir)) {
@@ -354,8 +197,7 @@ let SessionService = SessionService_1 = class SessionService {
354
197
  const sessionId = file.replace('.md', '');
355
198
  const session = await this.getSession(sessionId);
356
199
  if (session && session.metadata.status === 'active') {
357
- this.activeSessionId = sessionId;
358
- this.activeSessionTimestamp = Date.now();
200
+ this.cache.setActiveSessionId(sessionId);
359
201
  return session;
360
202
  }
361
203
  }
@@ -376,24 +218,24 @@ let SessionService = SessionService_1 = class SessionService {
376
218
  };
377
219
  }
378
220
  const now = new Date().toISOString();
379
- const timestamp = new Date().toLocaleString('ko-KR', {
221
+ const language = (await this.configService.getLanguage()) || 'en';
222
+ const locale = session_serializer_1.LANGUAGE_TO_LOCALE[language] || 'en-US';
223
+ const timestamp = new Date().toLocaleString(locale, {
380
224
  hour: '2-digit',
381
225
  minute: '2-digit',
382
226
  hour12: false,
383
227
  });
384
228
  const existingIndex = session.sections.findIndex(s => s.mode === options.section.mode);
385
- const section = {
229
+ const newSection = {
386
230
  ...options.section,
387
231
  timestamp: options.section.timestamp || timestamp,
388
232
  };
389
233
  if (existingIndex >= 0) {
390
- session.sections[existingIndex] = {
391
- ...session.sections[existingIndex],
392
- ...section,
393
- };
234
+ const existing = session.sections[existingIndex];
235
+ session.sections[existingIndex] = this.mergeSection(existing, newSection);
394
236
  }
395
237
  else {
396
- session.sections.push(section);
238
+ session.sections.push(newSection);
397
239
  }
398
240
  session.metadata.updatedAt = now;
399
241
  const filePath = this.getSessionFilePath(options.sessionId);
@@ -403,9 +245,12 @@ let SessionService = SessionService_1 = class SessionService {
403
245
  error: `Invalid session ID: ${options.sessionId}`,
404
246
  };
405
247
  }
406
- const content = this.serializeDocument(session);
407
- await fs.writeFile(filePath, content, 'utf-8');
408
- this.invalidateSession(options.sessionId);
248
+ const content = (0, session_serializer_1.serializeDocument)(session, language);
249
+ await (0, async_utils_1.withTimeout)(fs.writeFile(filePath, content, 'utf-8'), {
250
+ timeoutMs: SESSION_FILE_TIMEOUT_MS,
251
+ operationName: 'update session file',
252
+ });
253
+ this.cache.invalidate(options.sessionId);
409
254
  this.logger.log(`Updated session ${options.sessionId}: ${options.section.mode} section`);
410
255
  return {
411
256
  success: true,
@@ -417,12 +262,30 @@ let SessionService = SessionService_1 = class SessionService {
417
262
  catch (error) {
418
263
  const message = error instanceof Error ? error.message : 'Unknown error';
419
264
  this.logger.error(`Failed to update session: ${message}`);
420
- return {
421
- success: false,
422
- error: message,
423
- };
265
+ return { success: false, error: message };
424
266
  }
425
267
  }
268
+ mergeSection(existing, newSection) {
269
+ const mergedDecisions = this.mergeArrays(existing.decisions, newSection.decisions);
270
+ const mergedNotes = this.mergeArrays(existing.notes, newSection.notes);
271
+ return {
272
+ ...existing,
273
+ ...newSection,
274
+ decisions: mergedDecisions.length > 0 ? mergedDecisions : undefined,
275
+ notes: mergedNotes.length > 0 ? mergedNotes : undefined,
276
+ };
277
+ }
278
+ mergeArrays(existing, newItems) {
279
+ const existingSet = new Set(existing || []);
280
+ const newArray = [...existingSet];
281
+ for (const item of newItems || []) {
282
+ if (!existingSet.has(item)) {
283
+ newArray.push(item);
284
+ existingSet.add(item);
285
+ }
286
+ }
287
+ return newArray;
288
+ }
426
289
  async getRecommendedActAgent(sessionId) {
427
290
  const session = await this.getSession(sessionId);
428
291
  if (!session) {
@@ -437,117 +300,6 @@ let SessionService = SessionService_1 = class SessionService {
437
300
  }
438
301
  return null;
439
302
  }
440
- serializeDocument(doc) {
441
- const lines = [];
442
- lines.push(`# Session: ${doc.metadata.title}`);
443
- lines.push('');
444
- lines.push(`**Created**: ${doc.metadata.createdAt}`);
445
- lines.push(`**Updated**: ${doc.metadata.updatedAt}`);
446
- lines.push(`**Status**: ${doc.metadata.status}`);
447
- lines.push('');
448
- lines.push('---');
449
- for (const section of doc.sections) {
450
- lines.push('');
451
- lines.push(`## ${section.mode} (${section.timestamp})`);
452
- lines.push('');
453
- if (section.primaryAgent) {
454
- lines.push(`**Primary Agent**: ${section.primaryAgent}`);
455
- }
456
- if (section.recommendedActAgent) {
457
- const confidence = section.recommendedActAgentConfidence
458
- ? ` (confidence: ${section.recommendedActAgentConfidence})`
459
- : '';
460
- lines.push(`**Recommended ACT Agent**: ${section.recommendedActAgent}${confidence}`);
461
- }
462
- if (section.specialists && section.specialists.length > 0) {
463
- lines.push(`**Specialists**: ${section.specialists.join(', ')}`);
464
- }
465
- if (section.status) {
466
- lines.push(`**Status**: ${section.status}`);
467
- }
468
- lines.push('');
469
- if (section.task) {
470
- lines.push('### Task');
471
- lines.push(section.task);
472
- lines.push('');
473
- }
474
- if (section.decisions && section.decisions.length > 0) {
475
- lines.push('### Decisions');
476
- for (const decision of section.decisions) {
477
- lines.push(`- ${decision}`);
478
- }
479
- lines.push('');
480
- }
481
- if (section.notes && section.notes.length > 0) {
482
- lines.push('### Notes');
483
- for (const note of section.notes) {
484
- lines.push(`- ${note}`);
485
- }
486
- lines.push('');
487
- }
488
- lines.push('---');
489
- }
490
- return lines.join('\n');
491
- }
492
- parseDocument(content, sessionId) {
493
- const lines = content.split('\n');
494
- const ctx = {
495
- metadata: {
496
- id: sessionId,
497
- title: sessionId,
498
- createdAt: '',
499
- updatedAt: '',
500
- status: 'active',
501
- },
502
- sections: [],
503
- currentSection: null,
504
- currentListType: null,
505
- };
506
- for (const line of lines) {
507
- if (parseMetadataLine(line, ctx))
508
- continue;
509
- if (parseSectionHeader(line, ctx))
510
- continue;
511
- if (ctx.currentSection) {
512
- this.parseSectionContentLine(line, ctx);
513
- }
514
- }
515
- if (ctx.currentSection && ctx.currentSection.mode) {
516
- ctx.sections.push(ctx.currentSection);
517
- }
518
- return { metadata: ctx.metadata, sections: ctx.sections };
519
- }
520
- parseSectionContentLine(line, ctx) {
521
- if (!ctx.currentSection)
522
- return;
523
- const section = ctx.currentSection;
524
- if (parseSectionField(line, section))
525
- return;
526
- const listResult = parseListHeader(line, section);
527
- if (listResult.matched) {
528
- ctx.currentListType =
529
- listResult.listType === 'task' ? null : listResult.listType;
530
- return;
531
- }
532
- if (line.startsWith('- ') && ctx.currentListType) {
533
- this.parseListItem(line, section, ctx.currentListType);
534
- return;
535
- }
536
- if (isContentLine(line) && !ctx.currentListType) {
537
- section.task = section.task ? `${section.task}\n${line}` : line;
538
- }
539
- }
540
- parseListItem(line, section, listType) {
541
- const item = line.replace('- ', '').trim();
542
- if (listType === 'decisions') {
543
- section.decisions = section.decisions || [];
544
- section.decisions.push(item);
545
- }
546
- else {
547
- section.notes = section.notes || [];
548
- section.notes.push(item);
549
- }
550
- }
551
303
  };
552
304
  exports.SessionService = SessionService;
553
305
  exports.SessionService = SessionService = SessionService_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../src/session/session.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../src/session/session.service.ts"],"names":[],"mappings":"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"}
@@ -39,3 +39,14 @@ export interface SessionOperationResult {
39
39
  message?: string;
40
40
  error?: string;
41
41
  }
42
+ export interface SessionContext {
43
+ sessionId: string;
44
+ title: string;
45
+ previousSections: SessionSection[];
46
+ recommendedActAgent?: {
47
+ agent: string;
48
+ confidence: number;
49
+ };
50
+ allDecisions: string[];
51
+ allNotes: string[];
52
+ }
@@ -6,3 +6,15 @@ export interface AsyncWithFallbackOptions<T> {
6
6
  logger?: Logger;
7
7
  }
8
8
  export declare function asyncWithFallback<T>(options: AsyncWithFallbackOptions<T>): Promise<T>;
9
+ export declare function getConfiguredTimeout(): number;
10
+ export declare function resetTimeoutCache(): void;
11
+ export declare class TimeoutError extends Error {
12
+ readonly operationName: string;
13
+ readonly timeoutMs: number;
14
+ constructor(message: string, operationName?: string, timeoutMs?: number);
15
+ }
16
+ export interface WithTimeoutOptions {
17
+ timeoutMs?: number;
18
+ operationName?: string;
19
+ }
20
+ export declare function withTimeout<T>(promise: Promise<T>, options?: WithTimeoutOptions): Promise<T>;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeoutError = void 0;
3
4
  exports.asyncWithFallback = asyncWithFallback;
5
+ exports.getConfiguredTimeout = getConfiguredTimeout;
6
+ exports.resetTimeoutCache = resetTimeoutCache;
7
+ exports.withTimeout = withTimeout;
4
8
  async function asyncWithFallback(options) {
5
9
  const { fn, fallback, errorMessage, logger } = options;
6
10
  try {
@@ -15,4 +19,50 @@ async function asyncWithFallback(options) {
15
19
  return fallback;
16
20
  }
17
21
  }
22
+ const DEFAULT_FILE_OPERATION_TIMEOUT_MS = 5000;
23
+ const MAX_TIMEOUT_MS = 300000;
24
+ let cachedTimeout = null;
25
+ function getConfiguredTimeout() {
26
+ if (cachedTimeout !== null) {
27
+ return cachedTimeout;
28
+ }
29
+ const envTimeout = process.env.CODINGBUDDY_FILE_TIMEOUT_MS;
30
+ if (envTimeout) {
31
+ const parsed = parseInt(envTimeout, 10);
32
+ if (!isNaN(parsed) && parsed > 0 && parsed <= MAX_TIMEOUT_MS) {
33
+ cachedTimeout = parsed;
34
+ return cachedTimeout;
35
+ }
36
+ }
37
+ cachedTimeout = DEFAULT_FILE_OPERATION_TIMEOUT_MS;
38
+ return cachedTimeout;
39
+ }
40
+ function resetTimeoutCache() {
41
+ cachedTimeout = null;
42
+ }
43
+ class TimeoutError extends Error {
44
+ constructor(message, operationName, timeoutMs) {
45
+ super(message);
46
+ this.name = 'TimeoutError';
47
+ this.operationName = operationName || 'unknown';
48
+ this.timeoutMs = timeoutMs || 0;
49
+ }
50
+ }
51
+ exports.TimeoutError = TimeoutError;
52
+ async function withTimeout(promise, options = {}) {
53
+ const configuredTimeout = getConfiguredTimeout();
54
+ const { timeoutMs = configuredTimeout, operationName = 'operation' } = options;
55
+ let timeoutId;
56
+ const timeoutPromise = new Promise((_, reject) => {
57
+ timeoutId = setTimeout(() => {
58
+ reject(new TimeoutError(`${operationName} timed out after ${timeoutMs}ms`, operationName, timeoutMs));
59
+ }, timeoutMs);
60
+ });
61
+ try {
62
+ return await Promise.race([promise, timeoutPromise]);
63
+ }
64
+ finally {
65
+ clearTimeout(timeoutId);
66
+ }
67
+ }
18
68
  //# sourceMappingURL=async.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"async.utils.js","sourceRoot":"","sources":["../../../src/shared/async.utils.ts"],"names":[],"mappings":";;AA8CA,8CAiBC;AAjBM,KAAK,UAAU,iBAAiB,CACrC,OAAoC;IAEpC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3E,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAE5D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"async.utils.js","sourceRoot":"","sources":["../../../src/shared/async.utils.ts"],"names":[],"mappings":";;;AA8CA,8CAiBC;AAkBD,oDAgBC;AAOD,8CAEC;AAiDD,kCA2BC;AAxIM,KAAK,UAAU,iBAAiB,CACrC,OAAoC;IAEpC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3E,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAE5D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAGD,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAG/C,MAAM,cAAc,GAAG,MAAM,CAAC;AAG9B,IAAI,aAAa,GAAkB,IAAI,CAAC;AASxC,SAAgB,oBAAoB;IAClC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAC3D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;YAC7D,aAAa,GAAG,MAAM,CAAC;YACvB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,aAAa,GAAG,iCAAiC,CAAC;IAClD,OAAO,aAAa,CAAC;AACvB,CAAC;AAOD,SAAgB,iBAAiB;IAC/B,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAMD,MAAa,YAAa,SAAQ,KAAK;IAMrC,YAAY,OAAe,EAAE,aAAsB,EAAE,SAAkB;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAZD,oCAYC;AA+BM,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,UAA8B,EAAE;IAEhC,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,EAAE,SAAS,GAAG,iBAAiB,EAAE,aAAa,GAAG,WAAW,EAAE,GAClE,OAAO,CAAC;IAEV,IAAI,SAAwC,CAAC;IAE7C,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,CACJ,IAAI,YAAY,CACd,GAAG,aAAa,oBAAoB,SAAS,IAAI,EACjD,aAAa,EACb,SAAS,CACV,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAU,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function generateSlug(text: string, maxLength?: number): string;
2
+ export declare function generateSessionTitle(text: string, maxLength?: number): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSlug = generateSlug;
4
+ exports.generateSessionTitle = generateSessionTitle;
5
+ const DEFAULT_MAX_LENGTH = 50;
6
+ function generateSlug(text, maxLength = DEFAULT_MAX_LENGTH) {
7
+ const truncated = text.slice(0, maxLength).trim();
8
+ const slug = truncated
9
+ .toLowerCase()
10
+ .replace(/[^a-z0-9\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\u30FC\s-]/gu, '')
11
+ .replace(/\s+/g, '-')
12
+ .replace(/^-+|-+$/g, '');
13
+ return slug || 'untitled';
14
+ }
15
+ function generateSessionTitle(text, maxLength = DEFAULT_MAX_LENGTH) {
16
+ const datePrefix = new Date().toISOString().slice(0, 10);
17
+ const slug = generateSlug(text, maxLength);
18
+ return `${datePrefix}-${slug}`;
19
+ }
20
+ //# sourceMappingURL=slug.utils.js.map