codingbuddy 1.3.1 → 2.1.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/agent/agent-prompt.builder.d.ts +5 -0
- package/dist/src/agent/agent-prompt.builder.js +84 -0
- package/dist/src/agent/agent-prompt.builder.js.map +1 -0
- package/dist/src/agent/agent.module.d.ts +2 -0
- package/dist/src/agent/agent.module.js +23 -0
- package/dist/src/agent/agent.module.js.map +1 -0
- package/dist/src/agent/agent.service.d.ts +15 -0
- package/dist/src/agent/agent.service.js +103 -0
- package/dist/src/agent/agent.service.js.map +1 -0
- package/dist/src/agent/agent.types.d.ts +29 -0
- package/dist/src/agent/agent.types.js +31 -0
- package/dist/src/agent/agent.types.js.map +1 -0
- package/dist/src/agent/index.d.ts +4 -0
- package/dist/src/agent/index.js +21 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/app.module.js +12 -1
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/checklist/checklist.module.d.ts +2 -0
- package/dist/src/checklist/checklist.module.js +29 -0
- package/dist/src/checklist/checklist.module.js.map +1 -0
- package/dist/src/checklist/checklist.schema.d.ts +14 -0
- package/dist/src/checklist/checklist.schema.js +189 -0
- package/dist/src/checklist/checklist.schema.js.map +1 -0
- package/dist/src/checklist/checklist.service.d.ts +21 -0
- package/dist/src/checklist/checklist.service.js +258 -0
- package/dist/src/checklist/checklist.service.js.map +1 -0
- package/dist/src/checklist/checklist.types.d.ts +56 -0
- package/dist/src/checklist/checklist.types.js +24 -0
- package/dist/src/checklist/checklist.types.js.map +1 -0
- package/dist/src/checklist/index.d.ts +3 -0
- package/dist/src/checklist/index.js +20 -0
- package/dist/src/checklist/index.js.map +1 -0
- package/dist/src/cli/cli.types.d.ts +1 -6
- package/dist/src/cli/index.d.ts +1 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/init/config.generator.d.ts +1 -0
- package/dist/src/cli/init/config.generator.js +10 -2
- package/dist/src/cli/init/config.generator.js.map +1 -1
- package/dist/src/cli/init/init.command.js +19 -1
- package/dist/src/cli/init/init.command.js.map +1 -1
- package/dist/src/cli/init/prompts/agent-prompt.d.ts +9 -0
- package/dist/src/cli/init/prompts/agent-prompt.js +28 -0
- package/dist/src/cli/init/prompts/agent-prompt.js.map +1 -0
- package/dist/src/cli/init/prompts/index.d.ts +7 -0
- package/dist/src/cli/init/prompts/index.js +16 -0
- package/dist/src/cli/init/prompts/index.js.map +1 -0
- package/dist/src/cli/init/prompts/language-prompt.d.ts +8 -0
- package/dist/src/cli/init/prompts/language-prompt.js +30 -0
- package/dist/src/cli/init/prompts/language-prompt.js.map +1 -0
- package/dist/src/cli/init/prompts/model-prompt.d.ts +8 -0
- package/dist/src/cli/init/prompts/model-prompt.js +36 -0
- package/dist/src/cli/init/prompts/model-prompt.js.map +1 -0
- package/dist/src/cli/init/templates/template.renderer.js +21 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +1 -1
- package/dist/src/cli/init/templates/template.types.d.ts +2 -0
- package/dist/src/config/config.schema.d.ts +9 -0
- package/dist/src/config/config.schema.js +6 -1
- package/dist/src/config/config.schema.js.map +1 -1
- package/dist/src/context/context.module.d.ts +2 -0
- package/dist/src/context/context.module.js +23 -0
- package/dist/src/context/context.module.js.map +1 -0
- package/dist/src/context/context.service.d.ts +21 -0
- package/dist/src/context/context.service.js +286 -0
- package/dist/src/context/context.service.js.map +1 -0
- package/dist/src/context/context.types.d.ts +50 -0
- package/dist/src/context/context.types.js +42 -0
- package/dist/src/context/context.types.js.map +1 -0
- package/dist/src/context/index.d.ts +3 -0
- package/dist/src/context/index.js +20 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/intent-patterns.d.ts +7 -0
- package/dist/src/context/intent-patterns.js +50 -0
- package/dist/src/context/intent-patterns.js.map +1 -0
- package/dist/src/keyword/activation-message.builder.d.ts +14 -0
- package/dist/src/keyword/activation-message.builder.js +80 -0
- package/dist/src/keyword/activation-message.builder.js.map +1 -0
- package/dist/src/keyword/keyword.module.js +39 -4
- package/dist/src/keyword/keyword.module.js.map +1 -1
- package/dist/src/keyword/keyword.service.d.ts +18 -3
- package/dist/src/keyword/keyword.service.js +146 -53
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +61 -0
- package/dist/src/keyword/keyword.types.js +83 -1
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/primary-agent-resolver.d.ts +30 -0
- package/dist/src/keyword/primary-agent-resolver.js +376 -0
- package/dist/src/keyword/primary-agent-resolver.js.map +1 -0
- package/dist/src/keyword/rule-filter.d.ts +3 -0
- package/dist/src/keyword/rule-filter.js +64 -0
- package/dist/src/keyword/rule-filter.js.map +1 -0
- package/dist/src/mcp/handlers/agent.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/agent.handler.js +167 -0
- package/dist/src/mcp/handlers/agent.handler.js.map +1 -0
- package/dist/src/mcp/handlers/base.handler.d.ts +15 -0
- package/dist/src/mcp/handlers/base.handler.js +3 -0
- package/dist/src/mcp/handlers/base.handler.js.map +1 -0
- package/dist/src/mcp/handlers/checklist-context.handler.d.ts +13 -0
- package/dist/src/mcp/handlers/checklist-context.handler.js +141 -0
- package/dist/src/mcp/handlers/checklist-context.handler.js.map +1 -0
- package/dist/src/mcp/handlers/config.handler.d.ts +15 -0
- package/dist/src/mcp/handlers/config.handler.js +104 -0
- package/dist/src/mcp/handlers/config.handler.js.map +1 -0
- package/dist/src/mcp/handlers/index.d.ts +8 -0
- package/dist/src/mcp/handlers/index.js +17 -0
- package/dist/src/mcp/handlers/index.js.map +1 -0
- package/dist/src/mcp/handlers/mode.handler.d.ts +16 -0
- package/dist/src/mcp/handlers/mode.handler.js +100 -0
- package/dist/src/mcp/handlers/mode.handler.js.map +1 -0
- package/dist/src/mcp/handlers/rules.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/rules.handler.js +99 -0
- package/dist/src/mcp/handlers/rules.handler.js.map +1 -0
- package/dist/src/mcp/handlers/skill.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/skill.handler.js +111 -0
- package/dist/src/mcp/handlers/skill.handler.js.map +1 -0
- package/dist/src/mcp/mcp-serverless.d.ts +0 -2
- package/dist/src/mcp/mcp-serverless.js +19 -29
- package/dist/src/mcp/mcp-serverless.js.map +1 -1
- package/dist/src/mcp/mcp.module.js +29 -1
- package/dist/src/mcp/mcp.module.js.map +1 -1
- package/dist/src/mcp/mcp.service.d.ts +3 -18
- package/dist/src/mcp/mcp.service.js +13 -216
- package/dist/src/mcp/mcp.service.js.map +1 -1
- package/dist/src/mcp/response.utils.d.ts +10 -0
- package/dist/src/mcp/response.utils.js +16 -0
- package/dist/src/mcp/response.utils.js.map +1 -0
- package/dist/src/model/index.d.ts +4 -0
- package/dist/src/model/index.js +23 -0
- package/dist/src/model/index.js.map +1 -0
- package/dist/src/model/model-resolver.service.d.ts +13 -0
- package/dist/src/model/model-resolver.service.js +63 -0
- package/dist/src/model/model-resolver.service.js.map +1 -0
- package/dist/src/model/model.constants.d.ts +4 -0
- package/dist/src/model/model.constants.js +8 -0
- package/dist/src/model/model.constants.js.map +1 -0
- package/dist/src/model/model.resolver.d.ts +7 -0
- package/dist/src/model/model.resolver.js +56 -0
- package/dist/src/model/model.resolver.js.map +1 -0
- package/dist/src/model/model.types.d.ts +17 -0
- package/dist/src/model/model.types.js +11 -0
- package/dist/src/model/model.types.js.map +1 -0
- package/dist/src/rules/agent.schema.d.ts +15 -0
- package/dist/src/rules/agent.schema.js +9 -0
- package/dist/src/rules/agent.schema.js.map +1 -1
- package/dist/src/shared/agent.utils.d.ts +1 -0
- package/dist/src/shared/agent.utils.js +14 -0
- package/dist/src/shared/agent.utils.js.map +1 -0
- package/dist/src/shared/filesystem.interface.d.ts +15 -0
- package/dist/src/shared/filesystem.interface.js +14 -0
- package/dist/src/shared/filesystem.interface.js.map +1 -0
- package/dist/src/shared/language.service.d.ts +9 -0
- package/dist/src/shared/language.service.js +108 -0
- package/dist/src/shared/language.service.js.map +1 -0
- package/dist/src/shared/language.types.d.ts +12 -0
- package/dist/src/shared/language.types.js +3 -0
- package/dist/src/shared/language.types.js.map +1 -0
- package/dist/src/shared/node-filesystem.service.d.ts +5 -0
- package/dist/src/shared/node-filesystem.service.js +25 -0
- package/dist/src/shared/node-filesystem.service.js.map +1 -0
- package/dist/src/shared/path.utils.js.map +1 -1
- package/dist/src/shared/pattern-matcher.d.ts +11 -0
- package/dist/src/shared/pattern-matcher.js +39 -0
- package/dist/src/shared/pattern-matcher.js.map +1 -0
- package/dist/src/shared/security.utils.d.ts +17 -0
- package/dist/src/shared/security.utils.js +63 -0
- package/dist/src/shared/security.utils.js.map +1 -1
- package/dist/src/shared/validation.constants.d.ts +10 -0
- package/dist/src/shared/validation.constants.js +42 -1
- package/dist/src/shared/validation.constants.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/dist/src/config/config.types.d.ts +0 -2
- package/dist/src/config/config.types.js +0 -6
- package/dist/src/config/config.types.js.map +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AgentProfile } from '../rules/rules.types';
|
|
2
|
+
import type { AgentContext } from './agent.types';
|
|
3
|
+
export declare function buildAgentSystemPrompt(agentProfile: AgentProfile, context: AgentContext): string;
|
|
4
|
+
export declare function buildTaskDescription(agentProfile: AgentProfile, context: AgentContext): string;
|
|
5
|
+
export declare function buildParallelExecutionHint(): string;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildAgentSystemPrompt = buildAgentSystemPrompt;
|
|
4
|
+
exports.buildTaskDescription = buildTaskDescription;
|
|
5
|
+
exports.buildParallelExecutionHint = buildParallelExecutionHint;
|
|
6
|
+
const MODE_INSTRUCTIONS = {
|
|
7
|
+
PLAN: `You are in PLAN mode. Your task is to:
|
|
8
|
+
- Analyze the requirements and design an implementation approach
|
|
9
|
+
- Plan architecture and component structure
|
|
10
|
+
- Identify potential risks and considerations
|
|
11
|
+
- Provide actionable recommendations for implementation`,
|
|
12
|
+
ACT: `You are in ACT mode. Your task is to:
|
|
13
|
+
- Implement and verify the planned changes
|
|
14
|
+
- Check code quality and standards compliance
|
|
15
|
+
- Ensure proper test coverage
|
|
16
|
+
- Validate implementation against requirements`,
|
|
17
|
+
EVAL: `You are in EVAL mode. Your task is to:
|
|
18
|
+
- Evaluate and assess the implementation quality
|
|
19
|
+
- Review code for potential issues and improvements
|
|
20
|
+
- Provide objective, evidence-based feedback
|
|
21
|
+
- Identify areas for improvement with specific recommendations`,
|
|
22
|
+
};
|
|
23
|
+
const MODE_TASK_PREFIXES = {
|
|
24
|
+
PLAN: 'planning',
|
|
25
|
+
ACT: 'verification',
|
|
26
|
+
EVAL: 'review',
|
|
27
|
+
};
|
|
28
|
+
function buildAgentSystemPrompt(agentProfile, context) {
|
|
29
|
+
const sections = [];
|
|
30
|
+
sections.push(`# ${agentProfile.name}`);
|
|
31
|
+
sections.push('');
|
|
32
|
+
sections.push(`You are a ${agentProfile.role.title} specialist agent.`);
|
|
33
|
+
sections.push('');
|
|
34
|
+
sections.push('## Description');
|
|
35
|
+
sections.push(agentProfile.description);
|
|
36
|
+
sections.push('');
|
|
37
|
+
sections.push('## Your Expertise');
|
|
38
|
+
for (const expertise of agentProfile.role.expertise) {
|
|
39
|
+
sections.push(`- ${expertise}`);
|
|
40
|
+
}
|
|
41
|
+
sections.push('');
|
|
42
|
+
if (agentProfile.role.responsibilities?.length) {
|
|
43
|
+
sections.push('## Your Responsibilities');
|
|
44
|
+
for (const responsibility of agentProfile.role.responsibilities) {
|
|
45
|
+
sections.push(`- ${responsibility}`);
|
|
46
|
+
}
|
|
47
|
+
sections.push('');
|
|
48
|
+
}
|
|
49
|
+
sections.push('## Current Mode');
|
|
50
|
+
sections.push(`Mode: ${context.mode}`);
|
|
51
|
+
sections.push('');
|
|
52
|
+
sections.push(MODE_INSTRUCTIONS[context.mode]);
|
|
53
|
+
sections.push('');
|
|
54
|
+
sections.push('## Task Context');
|
|
55
|
+
if (context.taskDescription) {
|
|
56
|
+
sections.push(`Task: ${context.taskDescription}`);
|
|
57
|
+
}
|
|
58
|
+
if (context.targetFiles?.length) {
|
|
59
|
+
sections.push('');
|
|
60
|
+
sections.push('Target Files:');
|
|
61
|
+
for (const file of context.targetFiles) {
|
|
62
|
+
sections.push(`- ${file}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
sections.push('');
|
|
66
|
+
sections.push('## Output Format');
|
|
67
|
+
sections.push(`Provide your analysis in a structured JSON format with the following fields:
|
|
68
|
+
- findings: Array of issues or observations found
|
|
69
|
+
- recommendations: Array of actionable recommendations
|
|
70
|
+
- summary: Brief summary of your assessment
|
|
71
|
+
- riskLevel: Overall risk level (critical/high/medium/low)
|
|
72
|
+
|
|
73
|
+
Ensure your output is valid JSON that can be parsed programmatically.`);
|
|
74
|
+
return sections.join('\n');
|
|
75
|
+
}
|
|
76
|
+
function buildTaskDescription(agentProfile, context) {
|
|
77
|
+
const agentShortName = agentProfile.name.split(' ')[0];
|
|
78
|
+
const modePrefix = MODE_TASK_PREFIXES[context.mode];
|
|
79
|
+
return `${agentShortName} ${modePrefix}`;
|
|
80
|
+
}
|
|
81
|
+
function buildParallelExecutionHint() {
|
|
82
|
+
return `Use Claude Code Task tool with subagent_type: "general-purpose" and run_in_background: true for parallel execution. Launch multiple Task tools in a single message to run agents concurrently.`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=agent-prompt.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-prompt.builder.js","sourceRoot":"","sources":["../../../src/agent/agent-prompt.builder.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.AgentModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const agent_service_1 = require("./agent.service");
|
|
12
|
+
const rules_module_1 = require("../rules/rules.module");
|
|
13
|
+
let AgentModule = class AgentModule {
|
|
14
|
+
};
|
|
15
|
+
exports.AgentModule = AgentModule;
|
|
16
|
+
exports.AgentModule = AgentModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
imports: [rules_module_1.RulesModule],
|
|
19
|
+
providers: [agent_service_1.AgentService],
|
|
20
|
+
exports: [agent_service_1.AgentService],
|
|
21
|
+
})
|
|
22
|
+
], AgentModule);
|
|
23
|
+
//# sourceMappingURL=agent.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../../../src/agent/agent.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mDAA+C;AAC/C,wDAAoD;AAO7C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW,CAAC;QACtB,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RulesService } from '../rules/rules.service';
|
|
2
|
+
import type { Mode } from '../keyword/keyword.types';
|
|
3
|
+
import type { AgentContext, AgentSystemPrompt, ParallelAgentSet } from './agent.types';
|
|
4
|
+
export declare class AgentService {
|
|
5
|
+
private readonly rulesService;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(rulesService: RulesService);
|
|
8
|
+
getAgentSystemPrompt(agentName: string, context: AgentContext): Promise<AgentSystemPrompt>;
|
|
9
|
+
prepareParallelAgents(mode: Mode, specialists: string[], targetFiles?: string[], sharedContext?: string): Promise<ParallelAgentSet>;
|
|
10
|
+
private loadAgents;
|
|
11
|
+
private tryLoadAgent;
|
|
12
|
+
private buildParallelAgentSet;
|
|
13
|
+
getRecommendedAgents(modeDefaults: string[], files: string[]): string[];
|
|
14
|
+
private addFilePatternAgents;
|
|
15
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
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 AgentService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AgentService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const rules_service_1 = require("../rules/rules.service");
|
|
16
|
+
const agent_types_1 = require("./agent.types");
|
|
17
|
+
const agent_prompt_builder_1 = require("./agent-prompt.builder");
|
|
18
|
+
let AgentService = AgentService_1 = class AgentService {
|
|
19
|
+
constructor(rulesService) {
|
|
20
|
+
this.rulesService = rulesService;
|
|
21
|
+
this.logger = new common_1.Logger(AgentService_1.name);
|
|
22
|
+
}
|
|
23
|
+
async getAgentSystemPrompt(agentName, context) {
|
|
24
|
+
const agentProfile = await this.rulesService.getAgent(agentName);
|
|
25
|
+
const systemPrompt = (0, agent_prompt_builder_1.buildAgentSystemPrompt)(agentProfile, context);
|
|
26
|
+
const description = (0, agent_prompt_builder_1.buildTaskDescription)(agentProfile, context);
|
|
27
|
+
return {
|
|
28
|
+
agentName,
|
|
29
|
+
displayName: agentProfile.name,
|
|
30
|
+
systemPrompt,
|
|
31
|
+
description,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async prepareParallelAgents(mode, specialists, targetFiles, sharedContext) {
|
|
35
|
+
const uniqueSpecialists = [...new Set(specialists)];
|
|
36
|
+
const context = {
|
|
37
|
+
mode,
|
|
38
|
+
targetFiles,
|
|
39
|
+
taskDescription: sharedContext,
|
|
40
|
+
};
|
|
41
|
+
const { agents, failedAgents } = await this.loadAgents(uniqueSpecialists, context);
|
|
42
|
+
return this.buildParallelAgentSet(agents, failedAgents);
|
|
43
|
+
}
|
|
44
|
+
async loadAgents(specialists, context) {
|
|
45
|
+
const results = await Promise.all(specialists.map(name => this.tryLoadAgent(name, context)));
|
|
46
|
+
const agents = [];
|
|
47
|
+
const failedAgents = [];
|
|
48
|
+
for (const result of results) {
|
|
49
|
+
if (result.success) {
|
|
50
|
+
agents.push(result.agent);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
failedAgents.push(result.error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { agents, failedAgents };
|
|
57
|
+
}
|
|
58
|
+
async tryLoadAgent(specialistName, context) {
|
|
59
|
+
try {
|
|
60
|
+
const profile = await this.rulesService.getAgent(specialistName);
|
|
61
|
+
const agent = {
|
|
62
|
+
id: specialistName,
|
|
63
|
+
displayName: profile.name,
|
|
64
|
+
taskPrompt: (0, agent_prompt_builder_1.buildAgentSystemPrompt)(profile, context),
|
|
65
|
+
description: (0, agent_prompt_builder_1.buildTaskDescription)(profile, context),
|
|
66
|
+
};
|
|
67
|
+
return { success: true, agent };
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const reason = error instanceof Error ? error.message : 'Unknown error';
|
|
71
|
+
this.logger.warn(`Failed to load agent '${specialistName}': ${reason}`);
|
|
72
|
+
return { success: false, error: { id: specialistName, reason } };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
buildParallelAgentSet(agents, failedAgents) {
|
|
76
|
+
const result = {
|
|
77
|
+
agents,
|
|
78
|
+
parallelExecutionHint: (0, agent_prompt_builder_1.buildParallelExecutionHint)(),
|
|
79
|
+
};
|
|
80
|
+
if (failedAgents.length > 0) {
|
|
81
|
+
result.failedAgents = failedAgents;
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
getRecommendedAgents(modeDefaults, files) {
|
|
86
|
+
const recommended = new Set(modeDefaults);
|
|
87
|
+
files.forEach(file => this.addFilePatternAgents(file.toLowerCase(), recommended));
|
|
88
|
+
return Array.from(recommended);
|
|
89
|
+
}
|
|
90
|
+
addFilePatternAgents(fileLower, recommended) {
|
|
91
|
+
for (const [pattern, agents] of Object.entries(agent_types_1.FILE_PATTERN_SPECIALISTS)) {
|
|
92
|
+
if (fileLower.includes(pattern)) {
|
|
93
|
+
agents.forEach(agent => recommended.add(agent));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
exports.AgentService = AgentService;
|
|
99
|
+
exports.AgentService = AgentService = AgentService_1 = __decorate([
|
|
100
|
+
(0, common_1.Injectable)(),
|
|
101
|
+
__metadata("design:paramtypes", [rules_service_1.RulesService])
|
|
102
|
+
], AgentService);
|
|
103
|
+
//# sourceMappingURL=agent.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../../src/agent/agent.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Mode } from '../keyword/keyword.types';
|
|
2
|
+
export interface AgentContext {
|
|
3
|
+
mode: Mode;
|
|
4
|
+
targetFiles?: string[];
|
|
5
|
+
taskDescription?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AgentSystemPrompt {
|
|
8
|
+
agentName: string;
|
|
9
|
+
displayName: string;
|
|
10
|
+
systemPrompt: string;
|
|
11
|
+
description: string;
|
|
12
|
+
outputSchema?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface PreparedAgent {
|
|
15
|
+
id: string;
|
|
16
|
+
displayName: string;
|
|
17
|
+
taskPrompt: string;
|
|
18
|
+
description: string;
|
|
19
|
+
}
|
|
20
|
+
export interface FailedAgent {
|
|
21
|
+
id: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ParallelAgentSet {
|
|
25
|
+
agents: PreparedAgent[];
|
|
26
|
+
parallelExecutionHint: string;
|
|
27
|
+
failedAgents?: FailedAgent[];
|
|
28
|
+
}
|
|
29
|
+
export declare const FILE_PATTERN_SPECIALISTS: Record<string, string[]>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FILE_PATTERN_SPECIALISTS = void 0;
|
|
4
|
+
exports.FILE_PATTERN_SPECIALISTS = {
|
|
5
|
+
auth: ['security-specialist'],
|
|
6
|
+
login: ['security-specialist', 'accessibility-specialist'],
|
|
7
|
+
password: ['security-specialist'],
|
|
8
|
+
token: ['security-specialist'],
|
|
9
|
+
oauth: ['security-specialist'],
|
|
10
|
+
jwt: ['security-specialist'],
|
|
11
|
+
component: [
|
|
12
|
+
'accessibility-specialist',
|
|
13
|
+
'ui-ux-designer',
|
|
14
|
+
'performance-specialist',
|
|
15
|
+
],
|
|
16
|
+
button: ['accessibility-specialist', 'ui-ux-designer'],
|
|
17
|
+
form: ['accessibility-specialist', 'security-specialist'],
|
|
18
|
+
input: ['accessibility-specialist'],
|
|
19
|
+
modal: ['accessibility-specialist', 'ui-ux-designer'],
|
|
20
|
+
page: [
|
|
21
|
+
'seo-specialist',
|
|
22
|
+
'accessibility-specialist',
|
|
23
|
+
'performance-specialist',
|
|
24
|
+
],
|
|
25
|
+
layout: ['seo-specialist', 'accessibility-specialist'],
|
|
26
|
+
api: ['security-specialist', 'performance-specialist'],
|
|
27
|
+
hook: ['test-strategy-specialist', 'performance-specialist'],
|
|
28
|
+
service: ['architecture-specialist', 'test-strategy-specialist'],
|
|
29
|
+
util: ['test-strategy-specialist', 'code-quality-specialist'],
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=agent.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.types.js","sourceRoot":"","sources":["../../../src/agent/agent.types.ts"],"names":[],"mappings":";;;AAqDa,QAAA,wBAAwB,GAA6B;IAEhE,IAAI,EAAE,CAAC,qBAAqB,CAAC;IAC7B,KAAK,EAAE,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IAC1D,QAAQ,EAAE,CAAC,qBAAqB,CAAC;IACjC,KAAK,EAAE,CAAC,qBAAqB,CAAC;IAC9B,KAAK,EAAE,CAAC,qBAAqB,CAAC;IAC9B,GAAG,EAAE,CAAC,qBAAqB,CAAC;IAG5B,SAAS,EAAE;QACT,0BAA0B;QAC1B,gBAAgB;QAChB,wBAAwB;KACzB;IACD,MAAM,EAAE,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;IACtD,IAAI,EAAE,CAAC,0BAA0B,EAAE,qBAAqB,CAAC;IACzD,KAAK,EAAE,CAAC,0BAA0B,CAAC;IACnC,KAAK,EAAE,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;IAGrD,IAAI,EAAE;QACJ,gBAAgB;QAChB,0BAA0B;QAC1B,wBAAwB;KACzB;IACD,MAAM,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;IAGtD,GAAG,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;IACtD,IAAI,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;IAC5D,OAAO,EAAE,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;IAChE,IAAI,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;CAC9D,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./agent.module"), exports);
|
|
18
|
+
__exportStar(require("./agent.service"), exports);
|
|
19
|
+
__exportStar(require("./agent.types"), exports);
|
|
20
|
+
__exportStar(require("./agent-prompt.builder"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,yDAAuC"}
|
package/dist/src/app.module.js
CHANGED
|
@@ -12,12 +12,23 @@ const config_1 = require("@nestjs/config");
|
|
|
12
12
|
const rules_module_1 = require("./rules/rules.module");
|
|
13
13
|
const mcp_module_1 = require("./mcp/mcp.module");
|
|
14
14
|
const keyword_module_1 = require("./keyword/keyword.module");
|
|
15
|
+
const agent_module_1 = require("./agent/agent.module");
|
|
16
|
+
const checklist_module_1 = require("./checklist/checklist.module");
|
|
17
|
+
const context_module_1 = require("./context/context.module");
|
|
15
18
|
let AppModule = class AppModule {
|
|
16
19
|
};
|
|
17
20
|
exports.AppModule = AppModule;
|
|
18
21
|
exports.AppModule = AppModule = __decorate([
|
|
19
22
|
(0, common_1.Module)({
|
|
20
|
-
imports: [
|
|
23
|
+
imports: [
|
|
24
|
+
config_1.ConfigModule.forRoot(),
|
|
25
|
+
rules_module_1.RulesModule,
|
|
26
|
+
mcp_module_1.McpModule,
|
|
27
|
+
keyword_module_1.KeywordModule,
|
|
28
|
+
agent_module_1.AgentModule,
|
|
29
|
+
checklist_module_1.ChecklistModule,
|
|
30
|
+
context_module_1.ContextModule,
|
|
31
|
+
],
|
|
21
32
|
})
|
|
22
33
|
], AppModule);
|
|
23
34
|
//# sourceMappingURL=app.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,uDAAmD;AACnD,iDAA6C;AAC7C,6DAAyD;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,uDAAmD;AACnD,iDAA6C;AAC7C,6DAAyD;AACzD,uDAAmD;AACnD,mEAA+D;AAC/D,6DAAyD;AAalD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAXrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,EAAE;YACtB,0BAAW;YACX,sBAAS;YACT,8BAAa;YACb,0BAAW;YACX,kCAAe;YACf,8BAAa;SACd;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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.ChecklistModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const checklist_service_1 = require("./checklist.service");
|
|
12
|
+
const filesystem_interface_1 = require("../shared/filesystem.interface");
|
|
13
|
+
const node_filesystem_service_1 = require("../shared/node-filesystem.service");
|
|
14
|
+
let ChecklistModule = class ChecklistModule {
|
|
15
|
+
};
|
|
16
|
+
exports.ChecklistModule = ChecklistModule;
|
|
17
|
+
exports.ChecklistModule = ChecklistModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
providers: [
|
|
20
|
+
checklist_service_1.ChecklistService,
|
|
21
|
+
{
|
|
22
|
+
provide: filesystem_interface_1.FILE_SYSTEM,
|
|
23
|
+
useClass: node_filesystem_service_1.NodeFileSystemService,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
exports: [checklist_service_1.ChecklistService],
|
|
27
|
+
})
|
|
28
|
+
], ChecklistModule);
|
|
29
|
+
//# sourceMappingURL=checklist.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checklist.module.js","sourceRoot":"","sources":["../../../src/checklist/checklist.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,yEAA6D;AAC7D,+EAA0E;AAYnE,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAV3B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,oCAAgB;YAChB;gBACE,OAAO,EAAE,kCAAW;gBACpB,QAAQ,EAAE,+CAAqB;aAChC;SACF;QACD,OAAO,EAAE,CAAC,oCAAgB,CAAC;KAC5B,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ChecklistDefinition, type ChecklistCategory, type ChecklistItem } from './checklist.types';
|
|
2
|
+
export declare class ChecklistSchemaError extends Error {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly value?: unknown | undefined;
|
|
5
|
+
constructor(message: string, path: string, value?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
export interface ValidationResult {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
errors: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function validateChecklistSchema(data: unknown): ValidationResult;
|
|
12
|
+
export declare function parseAndValidateChecklist(jsonContent: string): ChecklistDefinition;
|
|
13
|
+
export declare function isValidChecklistItem(item: unknown): item is ChecklistItem;
|
|
14
|
+
export declare function isValidChecklistCategory(category: unknown): category is ChecklistCategory;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChecklistSchemaError = void 0;
|
|
4
|
+
exports.validateChecklistSchema = validateChecklistSchema;
|
|
5
|
+
exports.parseAndValidateChecklist = parseAndValidateChecklist;
|
|
6
|
+
exports.isValidChecklistItem = isValidChecklistItem;
|
|
7
|
+
exports.isValidChecklistCategory = isValidChecklistCategory;
|
|
8
|
+
const checklist_types_1 = require("./checklist.types");
|
|
9
|
+
const VALID_PRIORITIES = new Set(checklist_types_1.CHECKLIST_PRIORITIES);
|
|
10
|
+
const VALID_DOMAINS = new Set(checklist_types_1.CHECKLIST_DOMAINS);
|
|
11
|
+
class ChecklistSchemaError extends Error {
|
|
12
|
+
constructor(message, path, value) {
|
|
13
|
+
super(`${message} at ${path}`);
|
|
14
|
+
this.path = path;
|
|
15
|
+
this.value = value;
|
|
16
|
+
this.name = 'ChecklistSchemaError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.ChecklistSchemaError = ChecklistSchemaError;
|
|
20
|
+
function validateItem(item, path) {
|
|
21
|
+
const errors = [];
|
|
22
|
+
if (!item || typeof item !== 'object') {
|
|
23
|
+
errors.push(`${path}: Expected object, got ${typeof item}`);
|
|
24
|
+
return errors;
|
|
25
|
+
}
|
|
26
|
+
const obj = item;
|
|
27
|
+
if (typeof obj.id !== 'string' || obj.id.trim() === '') {
|
|
28
|
+
errors.push(`${path}.id: Required non-empty string`);
|
|
29
|
+
}
|
|
30
|
+
if (typeof obj.text !== 'string' || obj.text.trim() === '') {
|
|
31
|
+
errors.push(`${path}.text: Required non-empty string`);
|
|
32
|
+
}
|
|
33
|
+
if (typeof obj.priority !== 'string') {
|
|
34
|
+
errors.push(`${path}.priority: Required string`);
|
|
35
|
+
}
|
|
36
|
+
else if (!VALID_PRIORITIES.has(obj.priority)) {
|
|
37
|
+
errors.push(`${path}.priority: Invalid value '${obj.priority}'. Must be one of: ${[...VALID_PRIORITIES].join(', ')}`);
|
|
38
|
+
}
|
|
39
|
+
if (obj.reason !== undefined && typeof obj.reason !== 'string') {
|
|
40
|
+
errors.push(`${path}.reason: Expected string, got ${typeof obj.reason}`);
|
|
41
|
+
}
|
|
42
|
+
if (obj.reference !== undefined && typeof obj.reference !== 'string') {
|
|
43
|
+
errors.push(`${path}.reference: Expected string, got ${typeof obj.reference}`);
|
|
44
|
+
}
|
|
45
|
+
return errors;
|
|
46
|
+
}
|
|
47
|
+
function validateTriggers(triggers, path) {
|
|
48
|
+
const errors = [];
|
|
49
|
+
if (!triggers || typeof triggers !== 'object') {
|
|
50
|
+
errors.push(`${path}: Expected object, got ${typeof triggers}`);
|
|
51
|
+
return errors;
|
|
52
|
+
}
|
|
53
|
+
const obj = triggers;
|
|
54
|
+
if (!Array.isArray(obj.files)) {
|
|
55
|
+
errors.push(`${path}.files: Required array`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
obj.files.forEach((file, i) => {
|
|
59
|
+
if (typeof file !== 'string') {
|
|
60
|
+
errors.push(`${path}.files[${i}]: Expected string, got ${typeof file}`);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (obj.imports !== undefined) {
|
|
65
|
+
if (!Array.isArray(obj.imports)) {
|
|
66
|
+
errors.push(`${path}.imports: Expected array`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
obj.imports.forEach((imp, i) => {
|
|
70
|
+
if (typeof imp !== 'string') {
|
|
71
|
+
errors.push(`${path}.imports[${i}]: Expected string, got ${typeof imp}`);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (obj.patterns !== undefined) {
|
|
77
|
+
if (!Array.isArray(obj.patterns)) {
|
|
78
|
+
errors.push(`${path}.patterns: Expected array`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
obj.patterns.forEach((pattern, i) => {
|
|
82
|
+
if (typeof pattern !== 'string') {
|
|
83
|
+
errors.push(`${path}.patterns[${i}]: Expected string, got ${typeof pattern}`);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return errors;
|
|
89
|
+
}
|
|
90
|
+
function validateCategory(category, path) {
|
|
91
|
+
const errors = [];
|
|
92
|
+
if (!category || typeof category !== 'object') {
|
|
93
|
+
errors.push(`${path}: Expected object, got ${typeof category}`);
|
|
94
|
+
return errors;
|
|
95
|
+
}
|
|
96
|
+
const obj = category;
|
|
97
|
+
if (typeof obj.name !== 'string' || obj.name.trim() === '') {
|
|
98
|
+
errors.push(`${path}.name: Required non-empty string`);
|
|
99
|
+
}
|
|
100
|
+
if (obj.triggers === undefined) {
|
|
101
|
+
errors.push(`${path}.triggers: Required`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
errors.push(...validateTriggers(obj.triggers, `${path}.triggers`));
|
|
105
|
+
}
|
|
106
|
+
if (!Array.isArray(obj.items)) {
|
|
107
|
+
errors.push(`${path}.items: Required array`);
|
|
108
|
+
}
|
|
109
|
+
else if (obj.items.length === 0) {
|
|
110
|
+
errors.push(`${path}.items: Must have at least one item`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
obj.items.forEach((item, i) => {
|
|
114
|
+
errors.push(...validateItem(item, `${path}.items[${i}]`));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return errors;
|
|
118
|
+
}
|
|
119
|
+
function validateChecklistSchema(data) {
|
|
120
|
+
const errors = [];
|
|
121
|
+
if (!data || typeof data !== 'object') {
|
|
122
|
+
return {
|
|
123
|
+
valid: false,
|
|
124
|
+
errors: [`Root: Expected object, got ${typeof data}`],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const obj = data;
|
|
128
|
+
if (typeof obj.domain !== 'string') {
|
|
129
|
+
errors.push('domain: Required string');
|
|
130
|
+
}
|
|
131
|
+
else if (!VALID_DOMAINS.has(obj.domain)) {
|
|
132
|
+
errors.push(`domain: Invalid value '${obj.domain}'. Must be one of: ${[...VALID_DOMAINS].join(', ')}`);
|
|
133
|
+
}
|
|
134
|
+
if (typeof obj.icon !== 'string' || obj.icon.trim() === '') {
|
|
135
|
+
errors.push('icon: Required non-empty string');
|
|
136
|
+
}
|
|
137
|
+
if (typeof obj.description !== 'string' || obj.description.trim() === '') {
|
|
138
|
+
errors.push('description: Required non-empty string');
|
|
139
|
+
}
|
|
140
|
+
if (!Array.isArray(obj.categories)) {
|
|
141
|
+
errors.push('categories: Required array');
|
|
142
|
+
}
|
|
143
|
+
else if (obj.categories.length === 0) {
|
|
144
|
+
errors.push('categories: Must have at least one category');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
obj.categories.forEach((cat, i) => {
|
|
148
|
+
errors.push(...validateCategory(cat, `categories[${i}]`));
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
valid: errors.length === 0,
|
|
153
|
+
errors,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function parseAndValidateChecklist(jsonContent) {
|
|
157
|
+
let data;
|
|
158
|
+
try {
|
|
159
|
+
data = JSON.parse(jsonContent);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
throw new ChecklistSchemaError('Invalid JSON syntax', 'root', error instanceof Error ? error.message : String(error));
|
|
163
|
+
}
|
|
164
|
+
const result = validateChecklistSchema(data);
|
|
165
|
+
if (!result.valid) {
|
|
166
|
+
throw new ChecklistSchemaError(`Schema validation failed: ${result.errors.join('; ')}`, 'root', result.errors);
|
|
167
|
+
}
|
|
168
|
+
return data;
|
|
169
|
+
}
|
|
170
|
+
function isValidChecklistItem(item) {
|
|
171
|
+
if (!item || typeof item !== 'object')
|
|
172
|
+
return false;
|
|
173
|
+
const obj = item;
|
|
174
|
+
return (typeof obj.id === 'string' &&
|
|
175
|
+
typeof obj.text === 'string' &&
|
|
176
|
+
typeof obj.priority === 'string' &&
|
|
177
|
+
VALID_PRIORITIES.has(obj.priority));
|
|
178
|
+
}
|
|
179
|
+
function isValidChecklistCategory(category) {
|
|
180
|
+
if (!category || typeof category !== 'object')
|
|
181
|
+
return false;
|
|
182
|
+
const obj = category;
|
|
183
|
+
return (typeof obj.name === 'string' &&
|
|
184
|
+
obj.triggers !== undefined &&
|
|
185
|
+
typeof obj.triggers === 'object' &&
|
|
186
|
+
Array.isArray(obj.items) &&
|
|
187
|
+
obj.items.every(isValidChecklistItem));
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=checklist.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checklist.schema.js","sourceRoot":"","sources":["../../../src/checklist/checklist.schema.ts"],"names":[],"mappings":"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"}
|