codingbuddy 3.1.2 → 4.0.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/src/main.js +0 -0
- package/dist/src/mcp/handlers/session.handler.d.ts +15 -0
- package/dist/src/mcp/handlers/session.handler.js +238 -0
- package/dist/src/mcp/handlers/session.handler.js.map +1 -0
- package/dist/src/session/__tests__/session-test.utils.d.ts +5 -0
- package/dist/src/session/__tests__/session-test.utils.js +59 -0
- package/dist/src/session/__tests__/session-test.utils.js.map +1 -0
- package/dist/src/session/index.d.ts +3 -0
- package/dist/src/session/index.js +8 -0
- package/dist/src/session/index.js.map +1 -0
- package/dist/src/session/session.cache.d.ts +19 -0
- package/dist/src/session/session.cache.js +83 -0
- package/dist/src/session/session.cache.js.map +1 -0
- package/dist/src/session/session.module.d.ts +2 -0
- package/dist/src/session/session.module.js +23 -0
- package/dist/src/session/session.module.js.map +1 -0
- package/dist/src/session/session.parser.d.ts +22 -0
- package/dist/src/session/session.parser.js +273 -0
- package/dist/src/session/session.parser.js.map +1 -0
- package/dist/src/session/session.serializer.d.ts +6 -0
- package/dist/src/session/session.serializer.js +84 -0
- package/dist/src/session/session.serializer.js.map +1 -0
- package/dist/src/session/session.service.d.ts +24 -0
- package/dist/src/session/session.service.js +309 -0
- package/dist/src/session/session.service.js.map +1 -0
- package/dist/src/session/session.types.d.ts +52 -0
- package/dist/src/session/session.types.js +3 -0
- package/dist/src/session/session.types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -3
package/dist/src/main.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolDefinition } from './base.handler';
|
|
2
|
+
import type { ToolResponse } from '../response.utils';
|
|
3
|
+
import { AbstractHandler } from './abstract-handler';
|
|
4
|
+
import { SessionService } from '../../session/session.service';
|
|
5
|
+
export declare class SessionHandler extends AbstractHandler {
|
|
6
|
+
private readonly sessionService;
|
|
7
|
+
constructor(sessionService: SessionService);
|
|
8
|
+
protected getHandledTools(): string[];
|
|
9
|
+
protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
|
|
10
|
+
getToolDefinitions(): ToolDefinition[];
|
|
11
|
+
private handleCreateSession;
|
|
12
|
+
private handleGetSession;
|
|
13
|
+
private handleGetActiveSession;
|
|
14
|
+
private handleUpdateSession;
|
|
15
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
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.SessionHandler = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const abstract_handler_1 = require("./abstract-handler");
|
|
15
|
+
const session_service_1 = require("../../session/session.service");
|
|
16
|
+
const response_utils_1 = require("../response.utils");
|
|
17
|
+
const validation_constants_1 = require("../../shared/validation.constants");
|
|
18
|
+
let SessionHandler = class SessionHandler extends abstract_handler_1.AbstractHandler {
|
|
19
|
+
constructor(sessionService) {
|
|
20
|
+
super();
|
|
21
|
+
this.sessionService = sessionService;
|
|
22
|
+
}
|
|
23
|
+
getHandledTools() {
|
|
24
|
+
return [
|
|
25
|
+
'create_session',
|
|
26
|
+
'get_session',
|
|
27
|
+
'get_active_session',
|
|
28
|
+
'update_session',
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
async handleTool(toolName, args) {
|
|
32
|
+
switch (toolName) {
|
|
33
|
+
case 'create_session':
|
|
34
|
+
return this.handleCreateSession(args);
|
|
35
|
+
case 'get_session':
|
|
36
|
+
return this.handleGetSession(args);
|
|
37
|
+
case 'get_active_session':
|
|
38
|
+
return this.handleGetActiveSession();
|
|
39
|
+
case 'update_session':
|
|
40
|
+
return this.handleUpdateSession(args);
|
|
41
|
+
default:
|
|
42
|
+
return (0, response_utils_1.createErrorResponse)(`Unknown tool: ${toolName}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
getToolDefinitions() {
|
|
46
|
+
return [
|
|
47
|
+
{
|
|
48
|
+
name: 'create_session',
|
|
49
|
+
description: 'Create a new session document to track PLAN/ACT/EVAL workflow. Call this at the start of a new task to enable cross-mode context sharing.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
title: {
|
|
54
|
+
type: 'string',
|
|
55
|
+
description: 'Session title/slug (e.g., "auth-feature", "fix-login-bug")',
|
|
56
|
+
},
|
|
57
|
+
task: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
description: 'Initial task description',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
required: ['title'],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'get_session',
|
|
67
|
+
description: 'Get a session document by ID. Use this to read previous mode context.',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
sessionId: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'Session ID (filename without .md extension)',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
required: ['sessionId'],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'get_active_session',
|
|
81
|
+
description: 'Get the most recent active session. IMPORTANT: Call this at the start of ACT mode to get the recommended agent from PLAN.',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: 'object',
|
|
84
|
+
properties: {},
|
|
85
|
+
required: [],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'update_session',
|
|
90
|
+
description: 'Update a session document with new section data. Call this to record your work in each mode (PLAN/ACT/EVAL).',
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
sessionId: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Session ID to update',
|
|
97
|
+
},
|
|
98
|
+
mode: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
enum: ['PLAN', 'ACT', 'EVAL', 'AUTO'],
|
|
101
|
+
description: 'Current workflow mode',
|
|
102
|
+
},
|
|
103
|
+
primaryAgent: {
|
|
104
|
+
type: 'string',
|
|
105
|
+
description: 'Primary agent used in this mode',
|
|
106
|
+
},
|
|
107
|
+
recommendedActAgent: {
|
|
108
|
+
type: 'string',
|
|
109
|
+
description: 'Agent recommended for ACT phase (only set in PLAN mode)',
|
|
110
|
+
},
|
|
111
|
+
recommendedActAgentConfidence: {
|
|
112
|
+
type: 'number',
|
|
113
|
+
description: 'Confidence score for recommendation (0-1)',
|
|
114
|
+
},
|
|
115
|
+
specialists: {
|
|
116
|
+
type: 'array',
|
|
117
|
+
items: { type: 'string' },
|
|
118
|
+
description: 'Specialist agents used',
|
|
119
|
+
},
|
|
120
|
+
task: {
|
|
121
|
+
type: 'string',
|
|
122
|
+
description: 'Task description',
|
|
123
|
+
},
|
|
124
|
+
decisions: {
|
|
125
|
+
type: 'array',
|
|
126
|
+
items: { type: 'string' },
|
|
127
|
+
description: 'Key decisions made',
|
|
128
|
+
},
|
|
129
|
+
notes: {
|
|
130
|
+
type: 'array',
|
|
131
|
+
items: { type: 'string' },
|
|
132
|
+
description: 'Implementation notes',
|
|
133
|
+
},
|
|
134
|
+
status: {
|
|
135
|
+
type: 'string',
|
|
136
|
+
enum: ['in_progress', 'completed', 'blocked'],
|
|
137
|
+
description: 'Status of this section',
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
required: ['sessionId', 'mode'],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
async handleCreateSession(args) {
|
|
146
|
+
const title = (0, validation_constants_1.extractRequiredString)(args, 'title');
|
|
147
|
+
if (title === null) {
|
|
148
|
+
return (0, response_utils_1.createErrorResponse)('Missing required parameter: title');
|
|
149
|
+
}
|
|
150
|
+
const task = (0, validation_constants_1.extractOptionalString)(args, 'task');
|
|
151
|
+
const result = await this.sessionService.createSession({
|
|
152
|
+
title,
|
|
153
|
+
task: task ?? undefined,
|
|
154
|
+
});
|
|
155
|
+
if (result.success) {
|
|
156
|
+
return (0, response_utils_1.createJsonResponse)(result);
|
|
157
|
+
}
|
|
158
|
+
return (0, response_utils_1.createErrorResponse)(result.error || 'Failed to create session');
|
|
159
|
+
}
|
|
160
|
+
async handleGetSession(args) {
|
|
161
|
+
const sessionId = (0, validation_constants_1.extractRequiredString)(args, 'sessionId');
|
|
162
|
+
if (sessionId === null) {
|
|
163
|
+
return (0, response_utils_1.createErrorResponse)('Missing required parameter: sessionId');
|
|
164
|
+
}
|
|
165
|
+
const session = await this.sessionService.getSession(sessionId);
|
|
166
|
+
if (!session) {
|
|
167
|
+
return (0, response_utils_1.createErrorResponse)(`Session not found: ${sessionId}`);
|
|
168
|
+
}
|
|
169
|
+
return (0, response_utils_1.createJsonResponse)(session);
|
|
170
|
+
}
|
|
171
|
+
async handleGetActiveSession() {
|
|
172
|
+
const session = await this.sessionService.getActiveSession();
|
|
173
|
+
if (!session) {
|
|
174
|
+
return (0, response_utils_1.createJsonResponse)({
|
|
175
|
+
found: false,
|
|
176
|
+
message: 'No active session found. Create one with create_session tool.',
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const planSection = session.sections.find(s => s.mode === 'PLAN');
|
|
180
|
+
const recommendedActAgent = planSection?.recommendedActAgent;
|
|
181
|
+
const recommendedActAgentConfidence = planSection?.recommendedActAgentConfidence;
|
|
182
|
+
return (0, response_utils_1.createJsonResponse)({
|
|
183
|
+
found: true,
|
|
184
|
+
session,
|
|
185
|
+
recommendedActAgent: recommendedActAgent
|
|
186
|
+
? {
|
|
187
|
+
agent: recommendedActAgent,
|
|
188
|
+
confidence: recommendedActAgentConfidence,
|
|
189
|
+
}
|
|
190
|
+
: null,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
async handleUpdateSession(args) {
|
|
194
|
+
const sessionId = (0, validation_constants_1.extractRequiredString)(args, 'sessionId');
|
|
195
|
+
if (sessionId === null) {
|
|
196
|
+
return (0, response_utils_1.createErrorResponse)('Missing required parameter: sessionId');
|
|
197
|
+
}
|
|
198
|
+
const mode = (0, validation_constants_1.extractRequiredString)(args, 'mode');
|
|
199
|
+
if (mode === null) {
|
|
200
|
+
return (0, response_utils_1.createErrorResponse)('Missing required parameter: mode');
|
|
201
|
+
}
|
|
202
|
+
if (!['PLAN', 'ACT', 'EVAL', 'AUTO'].includes(mode)) {
|
|
203
|
+
return (0, response_utils_1.createErrorResponse)(`Invalid mode: ${mode}. Must be PLAN, ACT, EVAL, or AUTO`);
|
|
204
|
+
}
|
|
205
|
+
const result = await this.sessionService.updateSession({
|
|
206
|
+
sessionId,
|
|
207
|
+
section: {
|
|
208
|
+
mode: mode,
|
|
209
|
+
primaryAgent: (0, validation_constants_1.extractOptionalString)(args, 'primaryAgent') ?? undefined,
|
|
210
|
+
recommendedActAgent: (0, validation_constants_1.extractOptionalString)(args, 'recommendedActAgent') ?? undefined,
|
|
211
|
+
recommendedActAgentConfidence: typeof args?.recommendedActAgentConfidence === 'number'
|
|
212
|
+
? args.recommendedActAgentConfidence
|
|
213
|
+
: undefined,
|
|
214
|
+
specialists: Array.isArray(args?.specialists)
|
|
215
|
+
? args.specialists
|
|
216
|
+
: undefined,
|
|
217
|
+
task: (0, validation_constants_1.extractOptionalString)(args, 'task') ?? undefined,
|
|
218
|
+
decisions: Array.isArray(args?.decisions)
|
|
219
|
+
? args.decisions
|
|
220
|
+
: undefined,
|
|
221
|
+
notes: Array.isArray(args?.notes)
|
|
222
|
+
? args.notes
|
|
223
|
+
: undefined,
|
|
224
|
+
status: (0, validation_constants_1.extractOptionalString)(args, 'status') ?? undefined,
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
if (result.success) {
|
|
228
|
+
return (0, response_utils_1.createJsonResponse)(result);
|
|
229
|
+
}
|
|
230
|
+
return (0, response_utils_1.createErrorResponse)(result.error || 'Failed to update session');
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
exports.SessionHandler = SessionHandler;
|
|
234
|
+
exports.SessionHandler = SessionHandler = __decorate([
|
|
235
|
+
(0, common_1.Injectable)(),
|
|
236
|
+
__metadata("design:paramtypes", [session_service_1.SessionService])
|
|
237
|
+
], SessionHandler);
|
|
238
|
+
//# sourceMappingURL=session.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/session.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SessionMetadata, SessionSection, SessionDocument } from '../session.types';
|
|
2
|
+
export declare function createTestMetadata(overrides?: Partial<SessionMetadata>): SessionMetadata;
|
|
3
|
+
export declare function createTestSection(mode: 'PLAN' | 'ACT' | 'EVAL' | 'AUTO', overrides?: Partial<Omit<SessionSection, 'mode'>>): SessionSection;
|
|
4
|
+
export declare function createTestDocument(sections?: SessionSection[], metadataOverrides?: Partial<SessionMetadata>): SessionDocument;
|
|
5
|
+
export declare function createRoundtripTestDocument(language?: string): SessionDocument;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTestMetadata = createTestMetadata;
|
|
4
|
+
exports.createTestSection = createTestSection;
|
|
5
|
+
exports.createTestDocument = createTestDocument;
|
|
6
|
+
exports.createRoundtripTestDocument = createRoundtripTestDocument;
|
|
7
|
+
function createTestMetadata(overrides = {}) {
|
|
8
|
+
return {
|
|
9
|
+
id: 'test-session',
|
|
10
|
+
title: 'Test Session',
|
|
11
|
+
createdAt: '2026-01-11T10:00:00Z',
|
|
12
|
+
updatedAt: '2026-01-11T12:00:00Z',
|
|
13
|
+
status: 'active',
|
|
14
|
+
...overrides,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function createTestSection(mode, overrides = {}) {
|
|
18
|
+
return {
|
|
19
|
+
mode,
|
|
20
|
+
timestamp: '10:00',
|
|
21
|
+
...overrides,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function createTestDocument(sections = [], metadataOverrides = {}) {
|
|
25
|
+
return {
|
|
26
|
+
metadata: createTestMetadata(metadataOverrides),
|
|
27
|
+
sections,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function createRoundtripTestDocument(language = 'en') {
|
|
31
|
+
const titles = {
|
|
32
|
+
en: 'Roundtrip Test',
|
|
33
|
+
ko: '왕복 테스트',
|
|
34
|
+
ja: 'ラウンドトリップテスト',
|
|
35
|
+
zh: '往返测试',
|
|
36
|
+
es: 'Prueba de ida y vuelta',
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
metadata: createTestMetadata({
|
|
40
|
+
id: 'roundtrip-test',
|
|
41
|
+
title: titles[language] || titles.en,
|
|
42
|
+
}),
|
|
43
|
+
sections: [
|
|
44
|
+
{
|
|
45
|
+
mode: 'PLAN',
|
|
46
|
+
timestamp: '10:00',
|
|
47
|
+
primaryAgent: 'solution-architect',
|
|
48
|
+
recommendedActAgent: 'backend-developer',
|
|
49
|
+
recommendedActAgentConfidence: 0.95,
|
|
50
|
+
specialists: ['security', 'test-strategy'],
|
|
51
|
+
task: 'Implement feature',
|
|
52
|
+
decisions: ['Decision 1', 'Decision 2'],
|
|
53
|
+
notes: ['Note 1'],
|
|
54
|
+
status: 'completed',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=session-test.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-test.utils.js","sourceRoot":"","sources":["../../../../src/session/__tests__/session-test.utils.ts"],"names":[],"mappings":";;AAsBA,gDAWC;AAYD,8CASC;AAcD,gDAQC;AASD,kEA+BC;AA9FD,SAAgB,kBAAkB,CAChC,YAAsC,EAAE;IAExC,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,QAAQ;QAChB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAYD,SAAgB,iBAAiB,CAC/B,IAAsC,EACtC,YAAmD,EAAE;IAErD,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,OAAO;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAcD,SAAgB,kBAAkB,CAChC,WAA6B,EAAE,EAC/B,oBAA8C,EAAE;IAEhD,OAAO;QACL,QAAQ,EAAE,kBAAkB,CAAC,iBAAiB,CAAC;QAC/C,QAAQ;KACT,CAAC;AACJ,CAAC;AASD,SAAgB,2BAA2B,CACzC,WAAmB,IAAI;IAEvB,MAAM,MAAM,GAA2B;QACrC,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,aAAa;QACjB,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,wBAAwB;KAC7B,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,kBAAkB,CAAC;YAC3B,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE;SACrC,CAAC;QACF,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,OAAO;gBAClB,YAAY,EAAE,oBAAoB;gBAClC,mBAAmB,EAAE,mBAAmB;gBACxC,6BAA6B,EAAE,IAAI;gBACnC,WAAW,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;gBAC1C,IAAI,EAAE,mBAAmB;gBACzB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;gBACvC,KAAK,EAAE,CAAC,QAAQ,CAAC;gBACjB,MAAM,EAAE,WAAW;aACpB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionService = exports.SessionModule = void 0;
|
|
4
|
+
var session_module_1 = require("./session.module");
|
|
5
|
+
Object.defineProperty(exports, "SessionModule", { enumerable: true, get: function () { return session_module_1.SessionModule; } });
|
|
6
|
+
var session_service_1 = require("./session.service");
|
|
7
|
+
Object.defineProperty(exports, "SessionService", { enumerable: true, get: function () { return session_service_1.SessionService; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/session/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SessionDocument } from './session.types';
|
|
2
|
+
export declare class SessionCache {
|
|
3
|
+
private readonly cache;
|
|
4
|
+
private activeSessionId;
|
|
5
|
+
private activeSessionTimestamp;
|
|
6
|
+
private isCacheValid;
|
|
7
|
+
get(sessionId: string): SessionDocument | null;
|
|
8
|
+
set(sessionId: string, session: SessionDocument): void;
|
|
9
|
+
invalidateAll(): void;
|
|
10
|
+
invalidate(sessionId: string): void;
|
|
11
|
+
getActiveSessionId(): string | null;
|
|
12
|
+
setActiveSessionId(sessionId: string): void;
|
|
13
|
+
invalidateActiveSession(): void;
|
|
14
|
+
getStats(): {
|
|
15
|
+
size: number;
|
|
16
|
+
maxSize: number;
|
|
17
|
+
hasActiveSession: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionCache = void 0;
|
|
4
|
+
const CACHE_TTL_MS = 30_000;
|
|
5
|
+
const MAX_CACHE_SIZE = 100;
|
|
6
|
+
class SessionCache {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.cache = new Map();
|
|
9
|
+
this.activeSessionId = null;
|
|
10
|
+
this.activeSessionTimestamp = 0;
|
|
11
|
+
}
|
|
12
|
+
isCacheValid(timestamp) {
|
|
13
|
+
return Date.now() - timestamp < CACHE_TTL_MS;
|
|
14
|
+
}
|
|
15
|
+
get(sessionId) {
|
|
16
|
+
const entry = this.cache.get(sessionId);
|
|
17
|
+
if (entry && this.isCacheValid(entry.timestamp)) {
|
|
18
|
+
return entry.session;
|
|
19
|
+
}
|
|
20
|
+
if (entry) {
|
|
21
|
+
this.cache.delete(sessionId);
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
set(sessionId, session) {
|
|
26
|
+
if (this.cache.has(sessionId)) {
|
|
27
|
+
this.cache.delete(sessionId);
|
|
28
|
+
}
|
|
29
|
+
while (this.cache.size >= MAX_CACHE_SIZE) {
|
|
30
|
+
const oldestKey = this.cache.keys().next().value;
|
|
31
|
+
if (oldestKey !== undefined) {
|
|
32
|
+
this.cache.delete(oldestKey);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
this.cache.set(sessionId, {
|
|
39
|
+
session,
|
|
40
|
+
timestamp: Date.now(),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
invalidateAll() {
|
|
44
|
+
this.cache.clear();
|
|
45
|
+
this.activeSessionId = null;
|
|
46
|
+
this.activeSessionTimestamp = 0;
|
|
47
|
+
}
|
|
48
|
+
invalidate(sessionId) {
|
|
49
|
+
this.cache.delete(sessionId);
|
|
50
|
+
if (this.activeSessionId === sessionId) {
|
|
51
|
+
this.activeSessionId = null;
|
|
52
|
+
this.activeSessionTimestamp = 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
getActiveSessionId() {
|
|
56
|
+
if (this.activeSessionId &&
|
|
57
|
+
this.isCacheValid(this.activeSessionTimestamp)) {
|
|
58
|
+
return this.activeSessionId;
|
|
59
|
+
}
|
|
60
|
+
if (this.activeSessionId) {
|
|
61
|
+
this.activeSessionId = null;
|
|
62
|
+
this.activeSessionTimestamp = 0;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
setActiveSessionId(sessionId) {
|
|
67
|
+
this.activeSessionId = sessionId;
|
|
68
|
+
this.activeSessionTimestamp = Date.now();
|
|
69
|
+
}
|
|
70
|
+
invalidateActiveSession() {
|
|
71
|
+
this.activeSessionId = null;
|
|
72
|
+
this.activeSessionTimestamp = 0;
|
|
73
|
+
}
|
|
74
|
+
getStats() {
|
|
75
|
+
return {
|
|
76
|
+
size: this.cache.size,
|
|
77
|
+
maxSize: MAX_CACHE_SIZE,
|
|
78
|
+
hasActiveSession: this.activeSessionId !== null,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.SessionCache = SessionCache;
|
|
83
|
+
//# sourceMappingURL=session.cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.cache.js","sourceRoot":"","sources":["../../../src/session/session.cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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.SessionModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const session_service_1 = require("./session.service");
|
|
12
|
+
const config_module_1 = require("../config/config.module");
|
|
13
|
+
let SessionModule = class SessionModule {
|
|
14
|
+
};
|
|
15
|
+
exports.SessionModule = SessionModule;
|
|
16
|
+
exports.SessionModule = SessionModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [config_module_1.CodingBuddyConfigModule],
|
|
19
|
+
providers: [session_service_1.SessionService],
|
|
20
|
+
exports: [session_service_1.SessionService],
|
|
21
|
+
})
|
|
22
|
+
], SessionModule);
|
|
23
|
+
//# sourceMappingURL=session.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.module.js","sourceRoot":"","sources":["../../../src/session/session.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAmD;AACnD,2DAAkE;AAO3D,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uCAAuB,CAAC;QAClC,SAAS,EAAE,CAAC,gCAAc,CAAC;QAC3B,OAAO,EAAE,CAAC,gCAAc,CAAC;KAC1B,CAAC;GACW,aAAa,CAAG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SessionDocument, SessionSection, SessionMetadata } from './session.types';
|
|
2
|
+
export interface LocalizedLabels {
|
|
3
|
+
SESSION_HEADER: string;
|
|
4
|
+
CREATED_PREFIX: string;
|
|
5
|
+
UPDATED_PREFIX: string;
|
|
6
|
+
STATUS_PREFIX: string;
|
|
7
|
+
PRIMARY_AGENT_PREFIX: string;
|
|
8
|
+
RECOMMENDED_ACT_AGENT_PREFIX: string;
|
|
9
|
+
SPECIALISTS_PREFIX: string;
|
|
10
|
+
SECTION_SEPARATOR: string;
|
|
11
|
+
TASK_HEADER: string;
|
|
12
|
+
DECISIONS_HEADER: string;
|
|
13
|
+
NOTES_HEADER: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const LOCALIZED_LABELS: Record<string, LocalizedLabels>;
|
|
16
|
+
export interface ParseContext {
|
|
17
|
+
metadata: SessionMetadata;
|
|
18
|
+
sections: SessionSection[];
|
|
19
|
+
currentSection: Partial<SessionSection> | null;
|
|
20
|
+
currentListType: 'decisions' | 'notes' | null;
|
|
21
|
+
}
|
|
22
|
+
export declare function parseDocument(content: string, sessionId: string): SessionDocument;
|