codingbuddy 0.0.0-canary.20260111033809.g144e0bf → 0.0.0-canary.20260111040735.gc937806
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/mcp/handlers/mode.handler.d.ts +4 -1
- package/dist/src/mcp/handlers/mode.handler.js +18 -2
- package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
- package/dist/src/mcp/mcp.module.js +2 -0
- package/dist/src/mcp/mcp.module.js.map +1 -1
- package/dist/src/state/index.d.ts +3 -0
- package/dist/src/state/index.js +12 -0
- package/dist/src/state/index.js.map +1 -0
- package/dist/src/state/state.module.d.ts +2 -0
- package/dist/src/state/state.module.js +23 -0
- package/dist/src/state/state.module.js.map +1 -0
- package/dist/src/state/state.service.d.ts +21 -0
- package/dist/src/state/state.service.js +214 -0
- package/dist/src/state/state.service.js.map +1 -0
- package/dist/src/state/state.types.d.ts +34 -0
- package/dist/src/state/state.types.js +10 -0
- package/dist/src/state/state.types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -6,14 +6,16 @@ import { ConfigService } from '../../config/config.service';
|
|
|
6
6
|
import { LanguageService } from '../../shared/language.service';
|
|
7
7
|
import { ModelResolverService } from '../../model';
|
|
8
8
|
import { SessionService } from '../../session/session.service';
|
|
9
|
+
import { StateService } from '../../state/state.service';
|
|
9
10
|
export declare class ModeHandler extends AbstractHandler {
|
|
10
11
|
private readonly keywordService;
|
|
11
12
|
private readonly configService;
|
|
12
13
|
private readonly languageService;
|
|
13
14
|
private readonly modelResolverService;
|
|
14
15
|
private readonly sessionService;
|
|
16
|
+
private readonly stateService;
|
|
15
17
|
private readonly logger;
|
|
16
|
-
constructor(keywordService: KeywordService, configService: ConfigService, languageService: LanguageService, modelResolverService: ModelResolverService, sessionService: SessionService);
|
|
18
|
+
constructor(keywordService: KeywordService, configService: ConfigService, languageService: LanguageService, modelResolverService: ModelResolverService, sessionService: SessionService, stateService: StateService);
|
|
17
19
|
protected getHandledTools(): string[];
|
|
18
20
|
getToolDefinitions(): ToolDefinition[];
|
|
19
21
|
protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
|
|
@@ -25,4 +27,5 @@ export declare class ModeHandler extends AbstractHandler {
|
|
|
25
27
|
private createNewSession;
|
|
26
28
|
private handleSessionCreationError;
|
|
27
29
|
private generateSessionTitle;
|
|
30
|
+
private persistModeState;
|
|
28
31
|
}
|
|
@@ -24,6 +24,7 @@ const response_utils_1 = require("../response.utils");
|
|
|
24
24
|
const model_1 = require("../../model");
|
|
25
25
|
const validation_constants_1 = require("../../shared/validation.constants");
|
|
26
26
|
const session_service_1 = require("../../session/session.service");
|
|
27
|
+
const state_service_1 = require("../../state/state.service");
|
|
27
28
|
const SESSION_TITLE_MAX_LENGTH = 50;
|
|
28
29
|
const SESSION_PATH_PREFIX = 'docs/codingbuddy/sessions/';
|
|
29
30
|
const AUTO_CREATE_MODES = ['PLAN', 'AUTO'];
|
|
@@ -34,13 +35,14 @@ const SESSION_WARNINGS = {
|
|
|
34
35
|
SESSION_CREATION_FAILED_WITH_ERROR: (error) => `⚠️ Failed to auto-create session: ${error}. Please call create_session manually.`,
|
|
35
36
|
};
|
|
36
37
|
let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.AbstractHandler {
|
|
37
|
-
constructor(keywordService, configService, languageService, modelResolverService, sessionService) {
|
|
38
|
+
constructor(keywordService, configService, languageService, modelResolverService, sessionService, stateService) {
|
|
38
39
|
super();
|
|
39
40
|
this.keywordService = keywordService;
|
|
40
41
|
this.configService = configService;
|
|
41
42
|
this.languageService = languageService;
|
|
42
43
|
this.modelResolverService = modelResolverService;
|
|
43
44
|
this.sessionService = sessionService;
|
|
45
|
+
this.stateService = stateService;
|
|
44
46
|
this.logger = new common_1.Logger(ModeHandler_1.name);
|
|
45
47
|
this.emptySessionResult = {};
|
|
46
48
|
}
|
|
@@ -85,6 +87,7 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
85
87
|
const languageInstructionResult = this.languageService.getLanguageInstruction(language || 'en');
|
|
86
88
|
const resolvedModel = await this.modelResolverService.resolveForMode(result.agent);
|
|
87
89
|
const sessionInfo = await this.handleAutoSession(result.mode, result.originalPrompt);
|
|
90
|
+
await this.persistModeState(result.mode, sessionInfo.autoSession?.sessionId);
|
|
88
91
|
return (0, response_utils_1.createJsonResponse)({
|
|
89
92
|
...result,
|
|
90
93
|
language,
|
|
@@ -169,6 +172,18 @@ let ModeHandler = ModeHandler_1 = class ModeHandler extends abstract_handler_1.A
|
|
|
169
172
|
.replace(/^-|-$/g, '');
|
|
170
173
|
return slug || 'untitled-session';
|
|
171
174
|
}
|
|
175
|
+
async persistModeState(mode, sessionId) {
|
|
176
|
+
try {
|
|
177
|
+
await this.stateService.updateLastMode(mode);
|
|
178
|
+
if (sessionId) {
|
|
179
|
+
await this.stateService.updateLastSession(sessionId);
|
|
180
|
+
}
|
|
181
|
+
this.logger.debug(`Persisted mode state: mode=${mode}, sessionId=${sessionId || 'none'}`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
this.logger.warn(`Failed to persist mode state: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
172
187
|
};
|
|
173
188
|
exports.ModeHandler = ModeHandler;
|
|
174
189
|
exports.ModeHandler = ModeHandler = ModeHandler_1 = __decorate([
|
|
@@ -178,6 +193,7 @@ exports.ModeHandler = ModeHandler = ModeHandler_1 = __decorate([
|
|
|
178
193
|
config_service_1.ConfigService,
|
|
179
194
|
language_service_1.LanguageService,
|
|
180
195
|
model_1.ModelResolverService,
|
|
181
|
-
session_service_1.SessionService
|
|
196
|
+
session_service_1.SessionService,
|
|
197
|
+
state_service_1.StateService])
|
|
182
198
|
], ModeHandler);
|
|
183
199
|
//# sourceMappingURL=mode.handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/mode.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAG5D,yDAAqD;AACrD,mEAA+D;AAC/D,iEAA+D;AAC/D,gEAA4D;AAC5D,oEAAgE;AAChE,sDAA4E;AAC5E,uCAAmD;AACnD,4EAA0E;AAC1E,mEAA+D;
|
|
1
|
+
{"version":3,"file":"mode.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/mode.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const agent_module_1 = require("../agent/agent.module");
|
|
|
18
18
|
const checklist_module_1 = require("../checklist/checklist.module");
|
|
19
19
|
const context_module_1 = require("../context/context.module");
|
|
20
20
|
const session_module_1 = require("../session/session.module");
|
|
21
|
+
const state_module_1 = require("../state/state.module");
|
|
21
22
|
const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
|
|
22
23
|
const language_service_1 = require("../shared/language.service");
|
|
23
24
|
const model_1 = require("../model");
|
|
@@ -46,6 +47,7 @@ exports.McpModule = McpModule = __decorate([
|
|
|
46
47
|
checklist_module_1.ChecklistModule,
|
|
47
48
|
context_module_1.ContextModule,
|
|
48
49
|
session_module_1.SessionModule,
|
|
50
|
+
state_module_1.StateModule,
|
|
49
51
|
],
|
|
50
52
|
controllers: [mcp_controller_1.McpController],
|
|
51
53
|
providers: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAA2C;AAC3C,qDAAiD;AACjD,wDAAoD;AACpD,8DAA0D;AAC1D,2DAAkE;AAClE,iEAA6D;AAC7D,wDAAoD;AACpD,oEAAgE;AAChE,8DAA0D;AAC1D,8DAA0D;AAC1D,wFAAmF;AACnF,iEAA6D;AAC7D,oCAAgD;AAGhD,yCAUoB;AAEpB,MAAM,QAAQ,GAAG;IACf,uBAAY;IACZ,wBAAa;IACb,uBAAY;IACZ,uBAAY;IACZ,sBAAW;IACX,kCAAuB;IACvB,6BAAkB;IAClB,yBAAc;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAA2C;AAC3C,qDAAiD;AACjD,wDAAoD;AACpD,8DAA0D;AAC1D,2DAAkE;AAClE,iEAA6D;AAC7D,wDAAoD;AACpD,oEAAgE;AAChE,8DAA0D;AAC1D,8DAA0D;AAC1D,wDAAoD;AACpD,wFAAmF;AACnF,iEAA6D;AAC7D,oCAAgD;AAGhD,yCAUoB;AAEpB,MAAM,QAAQ,GAAG;IACf,uBAAY;IACZ,wBAAa;IACb,uBAAY;IACZ,uBAAY;IACZ,sBAAW;IACX,kCAAuB;IACvB,6BAAkB;IAClB,yBAAc;CACf,CAAC;AA+BK,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IA7BrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,0BAAW;YACX,8BAAa;YACb,uCAAuB;YACvB,gCAAc;YACd,0BAAW;YACX,kCAAe;YACf,8BAAa;YACb,8BAAa;YACb,0BAAW;SACZ;QACD,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE;YACT,wBAAU;YACV,yDAA0B;YAC1B,kCAAe;YACf,4BAAoB;YACpB,GAAG,QAAQ;YACX;gBACE,OAAO,EAAE,wBAAa;gBACtB,UAAU,EAAE,CACV,GAAG,gBAA2D,EAC9D,EAAE,CAAC,gBAAgB;gBACrB,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,OAAO,EAAE,CAAC,wBAAU,CAAC;KACtB,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { StateModule } from './state.module';
|
|
2
|
+
export { StateService } from './state.service';
|
|
3
|
+
export { STATE_DIR_NAME, STATE_FILES, STATE_SCHEMA_VERSION, type StateDocument, type ProjectMetadata, type ModeConfigSnapshot, type StateFileMeta, type StateOperationResult, } from './state.types';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STATE_SCHEMA_VERSION = exports.STATE_FILES = exports.STATE_DIR_NAME = exports.StateService = exports.StateModule = void 0;
|
|
4
|
+
var state_module_1 = require("./state.module");
|
|
5
|
+
Object.defineProperty(exports, "StateModule", { enumerable: true, get: function () { return state_module_1.StateModule; } });
|
|
6
|
+
var state_service_1 = require("./state.service");
|
|
7
|
+
Object.defineProperty(exports, "StateService", { enumerable: true, get: function () { return state_service_1.StateService; } });
|
|
8
|
+
var state_types_1 = require("./state.types");
|
|
9
|
+
Object.defineProperty(exports, "STATE_DIR_NAME", { enumerable: true, get: function () { return state_types_1.STATE_DIR_NAME; } });
|
|
10
|
+
Object.defineProperty(exports, "STATE_FILES", { enumerable: true, get: function () { return state_types_1.STATE_FILES; } });
|
|
11
|
+
Object.defineProperty(exports, "STATE_SCHEMA_VERSION", { enumerable: true, get: function () { return state_types_1.STATE_SCHEMA_VERSION; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/state/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,6CASuB;AARrB,6GAAA,cAAc,OAAA;AACd,0GAAA,WAAW,OAAA;AACX,mHAAA,oBAAoB,OAAA"}
|
|
@@ -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.StateModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const state_service_1 = require("./state.service");
|
|
12
|
+
const config_module_1 = require("../config/config.module");
|
|
13
|
+
let StateModule = class StateModule {
|
|
14
|
+
};
|
|
15
|
+
exports.StateModule = StateModule;
|
|
16
|
+
exports.StateModule = StateModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [config_module_1.CodingBuddyConfigModule],
|
|
19
|
+
providers: [state_service_1.StateService],
|
|
20
|
+
exports: [state_service_1.StateService],
|
|
21
|
+
})
|
|
22
|
+
], StateModule);
|
|
23
|
+
//# sourceMappingURL=state.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.module.js","sourceRoot":"","sources":["../../../src/state/state.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mDAA+C;AAC/C,2DAAkE;AAO3D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uCAAuB,CAAC;QAClC,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ConfigService } from '../config/config.service';
|
|
2
|
+
import type { Mode } from '../keyword/keyword.types';
|
|
3
|
+
import { type ProjectMetadata, type StateOperationResult, type ModeConfigSnapshot } from './state.types';
|
|
4
|
+
export declare class StateService {
|
|
5
|
+
private readonly configService;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(configService: ConfigService);
|
|
8
|
+
getStateDir(): string;
|
|
9
|
+
private ensureStateDir;
|
|
10
|
+
private getStateFilePath;
|
|
11
|
+
saveProjectMetadata(metadata: ProjectMetadata): Promise<StateOperationResult>;
|
|
12
|
+
loadProjectMetadata(): Promise<ProjectMetadata | null>;
|
|
13
|
+
private loadStateDocument;
|
|
14
|
+
updateLastMode(mode: Mode): Promise<StateOperationResult>;
|
|
15
|
+
updateLastSession(sessionId: string): Promise<StateOperationResult>;
|
|
16
|
+
saveModeConfigSnapshot(snapshot: ModeConfigSnapshot): Promise<StateOperationResult>;
|
|
17
|
+
loadModeConfigSnapshot(): Promise<ModeConfigSnapshot | null>;
|
|
18
|
+
clearState(): Promise<StateOperationResult>;
|
|
19
|
+
getLastMode(): Promise<Mode | null>;
|
|
20
|
+
getLastSessionId(): Promise<string | null>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,214 @@
|
|
|
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 StateService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.StateService = 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 state_types_1 = require("./state.types");
|
|
20
|
+
let StateService = StateService_1 = class StateService {
|
|
21
|
+
constructor(configService) {
|
|
22
|
+
this.configService = configService;
|
|
23
|
+
this.logger = new common_1.Logger(StateService_1.name);
|
|
24
|
+
}
|
|
25
|
+
getStateDir() {
|
|
26
|
+
const projectRoot = this.configService.getProjectRoot();
|
|
27
|
+
return path.join(projectRoot, state_types_1.STATE_DIR_NAME);
|
|
28
|
+
}
|
|
29
|
+
ensureStateDir() {
|
|
30
|
+
const stateDir = this.getStateDir();
|
|
31
|
+
if (!(0, fs_1.existsSync)(stateDir)) {
|
|
32
|
+
(0, fs_1.mkdirSync)(stateDir, { recursive: true });
|
|
33
|
+
this.logger.log(`Created state directory: ${stateDir}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getStateFilePath(fileName) {
|
|
37
|
+
return path.join(this.getStateDir(), fileName);
|
|
38
|
+
}
|
|
39
|
+
async saveProjectMetadata(metadata) {
|
|
40
|
+
try {
|
|
41
|
+
this.ensureStateDir();
|
|
42
|
+
const doc = {
|
|
43
|
+
version: state_types_1.STATE_SCHEMA_VERSION,
|
|
44
|
+
project: metadata,
|
|
45
|
+
updatedAt: new Date().toISOString(),
|
|
46
|
+
};
|
|
47
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.PROJECT_METADATA);
|
|
48
|
+
await fs.writeFile(filePath, JSON.stringify(doc, null, 2), 'utf-8');
|
|
49
|
+
this.logger.debug(`Saved project metadata to ${filePath}`);
|
|
50
|
+
return { success: true, message: 'Project metadata saved' };
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
54
|
+
this.logger.error(`Failed to save project metadata: ${message}`);
|
|
55
|
+
return { success: false, error: message };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async loadProjectMetadata() {
|
|
59
|
+
try {
|
|
60
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.PROJECT_METADATA);
|
|
61
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
62
|
+
this.logger.debug('Project metadata file not found');
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
66
|
+
const doc = JSON.parse(content);
|
|
67
|
+
if (doc.version !== state_types_1.STATE_SCHEMA_VERSION) {
|
|
68
|
+
this.logger.warn(`State schema version mismatch: expected ${state_types_1.STATE_SCHEMA_VERSION}, got ${doc.version}`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return doc.project;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
75
|
+
this.logger.error(`Failed to load project metadata: ${message}`);
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async loadStateDocument() {
|
|
80
|
+
try {
|
|
81
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.PROJECT_METADATA);
|
|
82
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
86
|
+
const doc = JSON.parse(content);
|
|
87
|
+
if (doc.version !== state_types_1.STATE_SCHEMA_VERSION) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return doc;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async updateLastMode(mode) {
|
|
97
|
+
try {
|
|
98
|
+
const existing = await this.loadStateDocument();
|
|
99
|
+
if (existing) {
|
|
100
|
+
existing.project.lastMode = mode;
|
|
101
|
+
existing.updatedAt = new Date().toISOString();
|
|
102
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.PROJECT_METADATA);
|
|
103
|
+
await fs.writeFile(filePath, JSON.stringify(existing, null, 2), 'utf-8');
|
|
104
|
+
this.logger.debug(`Updated lastMode to ${mode}`);
|
|
105
|
+
return { success: true, message: `Last mode updated to ${mode}` };
|
|
106
|
+
}
|
|
107
|
+
const projectRoot = this.configService.getProjectRoot();
|
|
108
|
+
return this.saveProjectMetadata({
|
|
109
|
+
projectRoot,
|
|
110
|
+
detectedAt: new Date().toISOString(),
|
|
111
|
+
lastMode: mode,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
116
|
+
this.logger.error(`Failed to update last mode: ${message}`);
|
|
117
|
+
return { success: false, error: message };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async updateLastSession(sessionId) {
|
|
121
|
+
try {
|
|
122
|
+
const existing = await this.loadStateDocument();
|
|
123
|
+
if (existing) {
|
|
124
|
+
existing.project.lastSessionId = sessionId;
|
|
125
|
+
existing.updatedAt = new Date().toISOString();
|
|
126
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.PROJECT_METADATA);
|
|
127
|
+
await fs.writeFile(filePath, JSON.stringify(existing, null, 2), 'utf-8');
|
|
128
|
+
this.logger.debug(`Updated lastSessionId to ${sessionId}`);
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
message: `Last session updated to ${sessionId}`,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const projectRoot = this.configService.getProjectRoot();
|
|
135
|
+
return this.saveProjectMetadata({
|
|
136
|
+
projectRoot,
|
|
137
|
+
detectedAt: new Date().toISOString(),
|
|
138
|
+
lastSessionId: sessionId,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
143
|
+
this.logger.error(`Failed to update last session: ${message}`);
|
|
144
|
+
return { success: false, error: message };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async saveModeConfigSnapshot(snapshot) {
|
|
148
|
+
try {
|
|
149
|
+
this.ensureStateDir();
|
|
150
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.MODE_CONFIG);
|
|
151
|
+
await fs.writeFile(filePath, JSON.stringify(snapshot, null, 2), 'utf-8');
|
|
152
|
+
this.logger.debug(`Saved mode config snapshot to ${filePath}`);
|
|
153
|
+
return { success: true, message: 'Mode config snapshot saved' };
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
157
|
+
this.logger.error(`Failed to save mode config snapshot: ${message}`);
|
|
158
|
+
return { success: false, error: message };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async loadModeConfigSnapshot() {
|
|
162
|
+
try {
|
|
163
|
+
const filePath = this.getStateFilePath(state_types_1.STATE_FILES.MODE_CONFIG);
|
|
164
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
168
|
+
return JSON.parse(content);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
172
|
+
this.logger.error(`Failed to load mode config snapshot: ${message}`);
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async clearState() {
|
|
177
|
+
try {
|
|
178
|
+
const stateDir = this.getStateDir();
|
|
179
|
+
const files = Object.values(state_types_1.STATE_FILES);
|
|
180
|
+
for (const fileName of files) {
|
|
181
|
+
const filePath = path.join(stateDir, fileName);
|
|
182
|
+
try {
|
|
183
|
+
await fs.unlink(filePath);
|
|
184
|
+
this.logger.debug(`Deleted state file: ${filePath}`);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
if (error.code !== 'ENOENT') {
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return { success: true, message: 'State cleared' };
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
196
|
+
this.logger.error(`Failed to clear state: ${message}`);
|
|
197
|
+
return { success: false, error: message };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async getLastMode() {
|
|
201
|
+
const metadata = await this.loadProjectMetadata();
|
|
202
|
+
return metadata?.lastMode ?? null;
|
|
203
|
+
}
|
|
204
|
+
async getLastSessionId() {
|
|
205
|
+
const metadata = await this.loadProjectMetadata();
|
|
206
|
+
return metadata?.lastSessionId ?? null;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
exports.StateService = StateService;
|
|
210
|
+
exports.StateService = StateService = StateService_1 = __decorate([
|
|
211
|
+
(0, common_1.Injectable)(),
|
|
212
|
+
__metadata("design:paramtypes", [config_service_1.ConfigService])
|
|
213
|
+
], StateService);
|
|
214
|
+
//# sourceMappingURL=state.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.service.js","sourceRoot":"","sources":["../../../src/state/state.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Mode, KeywordModesConfig } from '../keyword/keyword.types';
|
|
2
|
+
export interface ModeConfigSnapshot {
|
|
3
|
+
config: KeywordModesConfig;
|
|
4
|
+
capturedAt: string;
|
|
5
|
+
source?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProjectMetadata {
|
|
8
|
+
projectRoot: string;
|
|
9
|
+
detectedAt: string;
|
|
10
|
+
configFile?: string;
|
|
11
|
+
lastMode?: Mode;
|
|
12
|
+
lastSessionId?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface StateDocument {
|
|
15
|
+
version: number;
|
|
16
|
+
project: ProjectMetadata;
|
|
17
|
+
modeConfig?: ModeConfigSnapshot;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface StateFileMeta {
|
|
21
|
+
path: string;
|
|
22
|
+
mtime: number;
|
|
23
|
+
}
|
|
24
|
+
export interface StateOperationResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
message?: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const STATE_SCHEMA_VERSION = 1;
|
|
30
|
+
export declare const STATE_DIR_NAME = ".codingbuddy/state";
|
|
31
|
+
export declare const STATE_FILES: {
|
|
32
|
+
readonly PROJECT_METADATA: "project-metadata.json";
|
|
33
|
+
readonly MODE_CONFIG: "mode-config-snapshot.json";
|
|
34
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STATE_FILES = exports.STATE_DIR_NAME = exports.STATE_SCHEMA_VERSION = void 0;
|
|
4
|
+
exports.STATE_SCHEMA_VERSION = 1;
|
|
5
|
+
exports.STATE_DIR_NAME = '.codingbuddy/state';
|
|
6
|
+
exports.STATE_FILES = {
|
|
7
|
+
PROJECT_METADATA: 'project-metadata.json',
|
|
8
|
+
MODE_CONFIG: 'mode-config-snapshot.json',
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=state.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.types.js","sourceRoot":"","sources":["../../../src/state/state.types.ts"],"names":[],"mappings":";;;AAwEa,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAKzB,QAAA,cAAc,GAAG,oBAAoB,CAAC;AAKtC,QAAA,WAAW,GAAG;IACzB,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,2BAA2B;CAChC,CAAC"}
|