ctxinit 0.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/LICENSE +21 -0
- package/README.md +484 -0
- package/bin/ctx.js +3 -0
- package/dist/analysis/index.d.ts +2 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +18 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static-analysis.d.ts +79 -0
- package/dist/analysis/static-analysis.d.ts.map +1 -0
- package/dist/analysis/static-analysis.js +279 -0
- package/dist/analysis/static-analysis.js.map +1 -0
- package/dist/bootstrap/index.d.ts +8 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +13 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/orchestrator.d.ts +48 -0
- package/dist/bootstrap/orchestrator.d.ts.map +1 -0
- package/dist/bootstrap/orchestrator.js +363 -0
- package/dist/bootstrap/orchestrator.js.map +1 -0
- package/dist/bootstrap/validator.d.ts +25 -0
- package/dist/bootstrap/validator.d.ts.map +1 -0
- package/dist/bootstrap/validator.js +412 -0
- package/dist/bootstrap/validator.js.map +1 -0
- package/dist/build/atomic.d.ts +74 -0
- package/dist/build/atomic.d.ts.map +1 -0
- package/dist/build/atomic.js +235 -0
- package/dist/build/atomic.js.map +1 -0
- package/dist/build/index.d.ts +10 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +26 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/lock.d.ts +102 -0
- package/dist/build/lock.d.ts.map +1 -0
- package/dist/build/lock.js +297 -0
- package/dist/build/lock.js.map +1 -0
- package/dist/build/manifest.d.ts +138 -0
- package/dist/build/manifest.d.ts.map +1 -0
- package/dist/build/manifest.js +269 -0
- package/dist/build/manifest.js.map +1 -0
- package/dist/build/orchestrator.d.ts +103 -0
- package/dist/build/orchestrator.d.ts.map +1 -0
- package/dist/build/orchestrator.js +524 -0
- package/dist/build/orchestrator.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +77 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +527 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/build.d.ts +32 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +156 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/diff.d.ts +23 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +226 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/hooks.d.ts +29 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +176 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +53 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +254 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/lint.d.ts +46 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +210 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/migrate.d.ts +28 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +350 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/verify.d.ts +21 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +209 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +262 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler/agents-compiler.d.ts +24 -0
- package/dist/compiler/agents-compiler.d.ts.map +1 -0
- package/dist/compiler/agents-compiler.js +192 -0
- package/dist/compiler/agents-compiler.js.map +1 -0
- package/dist/compiler/base-compiler.d.ts +152 -0
- package/dist/compiler/base-compiler.d.ts.map +1 -0
- package/dist/compiler/base-compiler.js +180 -0
- package/dist/compiler/base-compiler.js.map +1 -0
- package/dist/compiler/claude-compiler.d.ts +24 -0
- package/dist/compiler/claude-compiler.d.ts.map +1 -0
- package/dist/compiler/claude-compiler.js +182 -0
- package/dist/compiler/claude-compiler.js.map +1 -0
- package/dist/compiler/cursor-compiler.d.ts +33 -0
- package/dist/compiler/cursor-compiler.d.ts.map +1 -0
- package/dist/compiler/cursor-compiler.js +136 -0
- package/dist/compiler/cursor-compiler.js.map +1 -0
- package/dist/compiler/index.d.ts +7 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +24 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/rule-selector.d.ts +115 -0
- package/dist/compiler/rule-selector.d.ts.map +1 -0
- package/dist/compiler/rule-selector.js +273 -0
- package/dist/compiler/rule-selector.js.map +1 -0
- package/dist/compiler/token-estimator.d.ts +74 -0
- package/dist/compiler/token-estimator.d.ts.map +1 -0
- package/dist/compiler/token-estimator.js +191 -0
- package/dist/compiler/token-estimator.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +18 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +48 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +175 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/git/gitignore.d.ts +59 -0
- package/dist/git/gitignore.d.ts.map +1 -0
- package/dist/git/gitignore.js +268 -0
- package/dist/git/gitignore.js.map +1 -0
- package/dist/git/hooks.d.ts +34 -0
- package/dist/git/hooks.d.ts.map +1 -0
- package/dist/git/hooks.js +129 -0
- package/dist/git/hooks.js.map +1 -0
- package/dist/git/husky.d.ts +52 -0
- package/dist/git/husky.d.ts.map +1 -0
- package/dist/git/husky.js +219 -0
- package/dist/git/husky.js.map +1 -0
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +15 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/base-provider.d.ts +43 -0
- package/dist/llm/base-provider.d.ts.map +1 -0
- package/dist/llm/base-provider.js +91 -0
- package/dist/llm/base-provider.js.map +1 -0
- package/dist/llm/index.d.ts +17 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +36 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts +27 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.js +278 -0
- package/dist/llm/prompts/bootstrap-prompt.js.map +1 -0
- package/dist/llm/prompts/index.d.ts +5 -0
- package/dist/llm/prompts/index.d.ts.map +1 -0
- package/dist/llm/prompts/index.js +11 -0
- package/dist/llm/prompts/index.js.map +1 -0
- package/dist/llm/provider-factory.d.ts +27 -0
- package/dist/llm/provider-factory.d.ts.map +1 -0
- package/dist/llm/provider-factory.js +213 -0
- package/dist/llm/provider-factory.js.map +1 -0
- package/dist/llm/providers/claude-api.d.ts +21 -0
- package/dist/llm/providers/claude-api.d.ts.map +1 -0
- package/dist/llm/providers/claude-api.js +110 -0
- package/dist/llm/providers/claude-api.js.map +1 -0
- package/dist/llm/providers/claude-code.d.ts +21 -0
- package/dist/llm/providers/claude-code.d.ts.map +1 -0
- package/dist/llm/providers/claude-code.js +120 -0
- package/dist/llm/providers/claude-code.js.map +1 -0
- package/dist/llm/providers/codex-cli.d.ts +25 -0
- package/dist/llm/providers/codex-cli.d.ts.map +1 -0
- package/dist/llm/providers/codex-cli.js +129 -0
- package/dist/llm/providers/codex-cli.js.map +1 -0
- package/dist/llm/providers/cursor-cli.d.ts +24 -0
- package/dist/llm/providers/cursor-cli.d.ts.map +1 -0
- package/dist/llm/providers/cursor-cli.js +106 -0
- package/dist/llm/providers/cursor-cli.js.map +1 -0
- package/dist/llm/providers/gemini-api.d.ts +20 -0
- package/dist/llm/providers/gemini-api.d.ts.map +1 -0
- package/dist/llm/providers/gemini-api.js +121 -0
- package/dist/llm/providers/gemini-api.js.map +1 -0
- package/dist/llm/providers/gemini-cli.d.ts +20 -0
- package/dist/llm/providers/gemini-cli.d.ts.map +1 -0
- package/dist/llm/providers/gemini-cli.js +109 -0
- package/dist/llm/providers/gemini-cli.js.map +1 -0
- package/dist/llm/providers/interactive.d.ts +42 -0
- package/dist/llm/providers/interactive.d.ts.map +1 -0
- package/dist/llm/providers/interactive.js +200 -0
- package/dist/llm/providers/interactive.js.map +1 -0
- package/dist/llm/providers/openai-api.d.ts +21 -0
- package/dist/llm/providers/openai-api.d.ts.map +1 -0
- package/dist/llm/providers/openai-api.js +107 -0
- package/dist/llm/providers/openai-api.js.map +1 -0
- package/dist/llm/types.d.ts +128 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +8 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +19 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/path-security.d.ts +40 -0
- package/dist/parser/path-security.d.ts.map +1 -0
- package/dist/parser/path-security.js +183 -0
- package/dist/parser/path-security.js.map +1 -0
- package/dist/parser/rule-parser.d.ts +50 -0
- package/dist/parser/rule-parser.d.ts.map +1 -0
- package/dist/parser/rule-parser.js +203 -0
- package/dist/parser/rule-parser.js.map +1 -0
- package/dist/schemas/config.d.ts +202 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +96 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +19 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/rule.d.ts +67 -0
- package/dist/schemas/rule.d.ts.map +1 -0
- package/dist/schemas/rule.js +44 -0
- package/dist/schemas/rule.js.map +1 -0
- package/package.json +69 -0
- package/templates/architecture.md +35 -0
- package/templates/bootstrap-prompt.md +242 -0
- package/templates/config.yaml +25 -0
- package/templates/project.md +44 -0
- package/templates/rules/example.md +36 -0
|
@@ -0,0 +1,203 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.RuleParseError = void 0;
|
|
40
|
+
exports.parseRule = parseRule;
|
|
41
|
+
exports.parseAllRules = parseAllRules;
|
|
42
|
+
exports.hasValidFrontmatter = hasValidFrontmatter;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
46
|
+
const rule_1 = require("../schemas/rule");
|
|
47
|
+
const path_security_1 = require("./path-security");
|
|
48
|
+
/**
|
|
49
|
+
* Error thrown when rule parsing fails
|
|
50
|
+
*/
|
|
51
|
+
class RuleParseError extends Error {
|
|
52
|
+
path;
|
|
53
|
+
line;
|
|
54
|
+
details;
|
|
55
|
+
constructor(message, path, line, details) {
|
|
56
|
+
super(message);
|
|
57
|
+
this.path = path;
|
|
58
|
+
this.line = line;
|
|
59
|
+
this.details = details;
|
|
60
|
+
this.name = 'RuleParseError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.RuleParseError = RuleParseError;
|
|
64
|
+
/**
|
|
65
|
+
* Parse a single rule file
|
|
66
|
+
*
|
|
67
|
+
* @param filePath - Path to the rule file (relative to rulesDir)
|
|
68
|
+
* @param options - Parse options
|
|
69
|
+
* @returns Parsed rule
|
|
70
|
+
* @throws RuleParseError if parsing fails
|
|
71
|
+
* @throws PathSecurityError if path is unsafe
|
|
72
|
+
*/
|
|
73
|
+
function parseRule(filePath, options) {
|
|
74
|
+
const rulesDir = options.rulesDir || path.join(options.projectRoot, '.context', 'rules');
|
|
75
|
+
// Validate path security
|
|
76
|
+
(0, path_security_1.validatePath)(filePath, options.projectRoot);
|
|
77
|
+
const absolutePath = path.join(rulesDir, filePath);
|
|
78
|
+
// Validate symlink if enabled
|
|
79
|
+
if (options.validateSymlinks !== false) {
|
|
80
|
+
(0, path_security_1.validateSymlink)(absolutePath, options.projectRoot);
|
|
81
|
+
}
|
|
82
|
+
// Read file content
|
|
83
|
+
let rawContent;
|
|
84
|
+
try {
|
|
85
|
+
rawContent = fs.readFileSync(absolutePath, 'utf-8');
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw new RuleParseError(`Failed to read rule file: ${error.message}`, filePath);
|
|
89
|
+
}
|
|
90
|
+
// Handle empty files
|
|
91
|
+
if (!rawContent.trim()) {
|
|
92
|
+
throw new RuleParseError('Rule file is empty', filePath);
|
|
93
|
+
}
|
|
94
|
+
// Parse frontmatter using gray-matter
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = (0, gray_matter_1.default)(rawContent);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new RuleParseError(`Failed to parse frontmatter: ${error.message}`, filePath);
|
|
101
|
+
}
|
|
102
|
+
// Handle missing frontmatter
|
|
103
|
+
if (!parsed.data || Object.keys(parsed.data).length === 0) {
|
|
104
|
+
throw new RuleParseError('Rule file has no frontmatter. Add YAML frontmatter with at least an "id" field.', filePath);
|
|
105
|
+
}
|
|
106
|
+
// Validate frontmatter against schema
|
|
107
|
+
const validation = rule_1.RuleFrontmatterSchema.safeParse(parsed.data);
|
|
108
|
+
if (!validation.success) {
|
|
109
|
+
const firstError = validation.error.issues[0];
|
|
110
|
+
throw new RuleParseError(`Invalid frontmatter at '${firstError.path.join('.')}': ${firstError.message}`, filePath, undefined, validation.error);
|
|
111
|
+
}
|
|
112
|
+
const frontmatter = validation.data;
|
|
113
|
+
// Determine effective globs
|
|
114
|
+
const inferredGlobs = (0, rule_1.inferGlobsFromPath)(filePath);
|
|
115
|
+
let effectiveGlobs;
|
|
116
|
+
if (frontmatter.globs) {
|
|
117
|
+
// Use explicit globs
|
|
118
|
+
effectiveGlobs = Array.isArray(frontmatter.globs)
|
|
119
|
+
? frontmatter.globs
|
|
120
|
+
: [frontmatter.globs];
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Use inferred globs from directory path
|
|
124
|
+
effectiveGlobs = inferredGlobs;
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
path: filePath,
|
|
128
|
+
absolutePath,
|
|
129
|
+
frontmatter,
|
|
130
|
+
content: parsed.content.trim(),
|
|
131
|
+
inferredGlobs,
|
|
132
|
+
effectiveGlobs,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Parse all rule files in a directory
|
|
137
|
+
*
|
|
138
|
+
* @param options - Parse options
|
|
139
|
+
* @returns Array of parsed rules and any errors encountered
|
|
140
|
+
*/
|
|
141
|
+
function parseAllRules(options) {
|
|
142
|
+
const rulesDir = options.rulesDir || path.join(options.projectRoot, '.context', 'rules');
|
|
143
|
+
const rules = [];
|
|
144
|
+
const errors = [];
|
|
145
|
+
// Find all .md files recursively
|
|
146
|
+
const findMarkdownFiles = (dir, baseDir) => {
|
|
147
|
+
const files = [];
|
|
148
|
+
if (!fs.existsSync(dir)) {
|
|
149
|
+
return files;
|
|
150
|
+
}
|
|
151
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
const fullPath = path.join(dir, entry.name);
|
|
154
|
+
const relativePath = path.relative(baseDir, fullPath);
|
|
155
|
+
if (entry.isDirectory()) {
|
|
156
|
+
files.push(...findMarkdownFiles(fullPath, baseDir));
|
|
157
|
+
}
|
|
158
|
+
else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
159
|
+
files.push(relativePath);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return files;
|
|
163
|
+
};
|
|
164
|
+
const markdownFiles = findMarkdownFiles(rulesDir, rulesDir);
|
|
165
|
+
for (const file of markdownFiles) {
|
|
166
|
+
try {
|
|
167
|
+
const rule = parseRule(file, { ...options, rulesDir });
|
|
168
|
+
rules.push(rule);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
if (error instanceof RuleParseError) {
|
|
172
|
+
errors.push(error);
|
|
173
|
+
}
|
|
174
|
+
else if (error instanceof path_security_1.PathSecurityError) {
|
|
175
|
+
errors.push(new RuleParseError(`Security violation: ${error.message}`, file));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
errors.push(new RuleParseError(`Unexpected error: ${error.message}`, file));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { rules, errors };
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if a file has valid frontmatter without fully parsing
|
|
186
|
+
*
|
|
187
|
+
* @param content - File content
|
|
188
|
+
* @returns true if frontmatter appears valid
|
|
189
|
+
*/
|
|
190
|
+
function hasValidFrontmatter(content) {
|
|
191
|
+
const trimmed = content.trim();
|
|
192
|
+
if (!trimmed.startsWith('---')) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
const endIndex = trimmed.indexOf('---', 3);
|
|
196
|
+
if (endIndex <= 3) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
// Check that frontmatter is not empty (has actual content between delimiters)
|
|
200
|
+
const frontmatterContent = trimmed.slice(3, endIndex).trim();
|
|
201
|
+
return frontmatterContent.length > 0;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=rule-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-parser.js","sourceRoot":"","sources":["../../src/parser/rule-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,8BAwFC;AAQD,sCAwDC;AAQD,kDAcC;AA9ND,uCAAyB;AACzB,2CAA6B;AAC7B,8DAAiC;AAEjC,0CAKyB;AACzB,mDAAmF;AAEnF;;GAEG;AACH,MAAa,cAAe,SAAQ,KAAK;IAGrB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAY,EACZ,IAAa,EACb,OAAoB;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAAa;QAGpC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAVD,wCAUC;AAcD;;;;;;;;GAQG;AACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,OAAqB;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAEzF,yBAAyB;IACzB,IAAA,4BAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEnD,8BAA8B;IAC9B,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACvC,IAAA,+BAAe,EAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,6BAA8B,KAAe,CAAC,OAAO,EAAE,EACvD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,cAAc,CACtB,oBAAoB,EACpB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,qBAAM,EAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,gCAAiC,KAAe,CAAC,OAAO,EAAE,EAC1D,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,cAAc,CACtB,iFAAiF,EACjF,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,4BAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,cAAc,CACtB,2BAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,EAC9E,QAAQ,EACR,SAAS,EACT,UAAU,CAAC,KAAK,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAoB,UAAU,CAAC,IAAI,CAAC;IAErD,4BAA4B;IAC5B,MAAM,aAAa,GAAG,IAAA,yBAAkB,EAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,cAAwB,CAAC;IAE7B,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,qBAAqB;QACrB,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YAC/C,CAAC,CAAC,WAAW,CAAC,KAAK;YACnB,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,yCAAyC;QACzC,cAAc,GAAG,aAAa,CAAC;IACjC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,aAAa;QACb,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAqB;IAIjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzF,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,OAAe,EAAY,EAAE;QACnE,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEtD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE5D,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,KAAK,YAAY,iCAAiB,EAAE,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAC5B,uBAAuB,KAAK,CAAC,OAAO,EAAE,EACtC,IAAI,CACL,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAC5B,qBAAsB,KAAe,CAAC,OAAO,EAAE,EAC/C,IAAI,CACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Rule selection strategies for compilation
|
|
4
|
+
*/
|
|
5
|
+
export declare const SelectionStrategySchema: z.ZodEnum<{
|
|
6
|
+
priority: "priority";
|
|
7
|
+
directory: "directory";
|
|
8
|
+
glob: "glob";
|
|
9
|
+
tag: "tag";
|
|
10
|
+
all: "all";
|
|
11
|
+
}>;
|
|
12
|
+
export type SelectionStrategy = z.infer<typeof SelectionStrategySchema>;
|
|
13
|
+
/**
|
|
14
|
+
* Conflict resolution strategies
|
|
15
|
+
*/
|
|
16
|
+
export declare const ConflictResolutionStrategySchema: z.ZodEnum<{
|
|
17
|
+
priority_wins: "priority_wins";
|
|
18
|
+
merge: "merge";
|
|
19
|
+
}>;
|
|
20
|
+
export type ConflictResolutionStrategy = z.infer<typeof ConflictResolutionStrategySchema>;
|
|
21
|
+
/**
|
|
22
|
+
* Claude compilation target configuration
|
|
23
|
+
*/
|
|
24
|
+
export declare const ClaudeTargetSchema: z.ZodObject<{
|
|
25
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
27
|
+
priority: "priority";
|
|
28
|
+
directory: "directory";
|
|
29
|
+
glob: "glob";
|
|
30
|
+
tag: "tag";
|
|
31
|
+
all: "all";
|
|
32
|
+
}>>;
|
|
33
|
+
always_include: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type ClaudeTarget = z.infer<typeof ClaudeTargetSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Cursor compilation target configuration
|
|
38
|
+
*/
|
|
39
|
+
export declare const CursorTargetSchema: z.ZodObject<{
|
|
40
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
41
|
+
priority: "priority";
|
|
42
|
+
directory: "directory";
|
|
43
|
+
glob: "glob";
|
|
44
|
+
tag: "tag";
|
|
45
|
+
all: "all";
|
|
46
|
+
}>>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export type CursorTarget = z.infer<typeof CursorTargetSchema>;
|
|
49
|
+
/**
|
|
50
|
+
* Agents compilation target configuration
|
|
51
|
+
*/
|
|
52
|
+
export declare const AgentsTargetSchema: z.ZodObject<{
|
|
53
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
54
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
55
|
+
priority: "priority";
|
|
56
|
+
directory: "directory";
|
|
57
|
+
glob: "glob";
|
|
58
|
+
tag: "tag";
|
|
59
|
+
all: "all";
|
|
60
|
+
}>>;
|
|
61
|
+
include_dirs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export type AgentsTarget = z.infer<typeof AgentsTargetSchema>;
|
|
64
|
+
/**
|
|
65
|
+
* Compilation configuration for all targets
|
|
66
|
+
*/
|
|
67
|
+
export declare const CompileConfigSchema: z.ZodObject<{
|
|
68
|
+
claude: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
70
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
71
|
+
priority: "priority";
|
|
72
|
+
directory: "directory";
|
|
73
|
+
glob: "glob";
|
|
74
|
+
tag: "tag";
|
|
75
|
+
all: "all";
|
|
76
|
+
}>>;
|
|
77
|
+
always_include: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
78
|
+
}, z.core.$strip>>;
|
|
79
|
+
cursor: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
81
|
+
priority: "priority";
|
|
82
|
+
directory: "directory";
|
|
83
|
+
glob: "glob";
|
|
84
|
+
tag: "tag";
|
|
85
|
+
all: "all";
|
|
86
|
+
}>>;
|
|
87
|
+
}, z.core.$strip>>;
|
|
88
|
+
agents: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
90
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
91
|
+
priority: "priority";
|
|
92
|
+
directory: "directory";
|
|
93
|
+
glob: "glob";
|
|
94
|
+
tag: "tag";
|
|
95
|
+
all: "all";
|
|
96
|
+
}>>;
|
|
97
|
+
include_dirs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
98
|
+
}, z.core.$strip>>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type CompileConfig = z.infer<typeof CompileConfigSchema>;
|
|
101
|
+
/**
|
|
102
|
+
* Build target types
|
|
103
|
+
*/
|
|
104
|
+
export type BuildTarget = 'claude' | 'cursor' | 'agents';
|
|
105
|
+
export declare const BUILD_TARGETS: BuildTarget[];
|
|
106
|
+
/**
|
|
107
|
+
* Conflict resolution configuration
|
|
108
|
+
*/
|
|
109
|
+
export declare const ConflictResolutionSchema: z.ZodObject<{
|
|
110
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
111
|
+
priority_wins: "priority_wins";
|
|
112
|
+
merge: "merge";
|
|
113
|
+
}>>;
|
|
114
|
+
fallback: z.ZodOptional<z.ZodEnum<{
|
|
115
|
+
priority_wins: "priority_wins";
|
|
116
|
+
merge: "merge";
|
|
117
|
+
}>>;
|
|
118
|
+
}, z.core.$strip>;
|
|
119
|
+
export type ConflictResolution = z.infer<typeof ConflictResolutionSchema>;
|
|
120
|
+
/**
|
|
121
|
+
* Migration mode configuration
|
|
122
|
+
*/
|
|
123
|
+
export declare const MigrationModeSchema: z.ZodEnum<{
|
|
124
|
+
attach: "attach";
|
|
125
|
+
replace: "replace";
|
|
126
|
+
}>;
|
|
127
|
+
export type MigrationMode = z.infer<typeof MigrationModeSchema>;
|
|
128
|
+
/**
|
|
129
|
+
* Migration configuration for legacy file handling
|
|
130
|
+
*/
|
|
131
|
+
export declare const MigrationConfigSchema: z.ZodObject<{
|
|
132
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
133
|
+
attach: "attach";
|
|
134
|
+
replace: "replace";
|
|
135
|
+
}>>;
|
|
136
|
+
preserve_legacy: z.ZodDefault<z.ZodBoolean>;
|
|
137
|
+
legacy_files: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
export type MigrationConfig = z.infer<typeof MigrationConfigSchema>;
|
|
140
|
+
/**
|
|
141
|
+
* Complete config.yaml schema
|
|
142
|
+
*/
|
|
143
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
144
|
+
version: z.ZodDefault<z.ZodString>;
|
|
145
|
+
compile: z.ZodDefault<z.ZodObject<{
|
|
146
|
+
claude: z.ZodOptional<z.ZodObject<{
|
|
147
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
148
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
149
|
+
priority: "priority";
|
|
150
|
+
directory: "directory";
|
|
151
|
+
glob: "glob";
|
|
152
|
+
tag: "tag";
|
|
153
|
+
all: "all";
|
|
154
|
+
}>>;
|
|
155
|
+
always_include: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
156
|
+
}, z.core.$strip>>;
|
|
157
|
+
cursor: z.ZodOptional<z.ZodObject<{
|
|
158
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
159
|
+
priority: "priority";
|
|
160
|
+
directory: "directory";
|
|
161
|
+
glob: "glob";
|
|
162
|
+
tag: "tag";
|
|
163
|
+
all: "all";
|
|
164
|
+
}>>;
|
|
165
|
+
}, z.core.$strip>>;
|
|
166
|
+
agents: z.ZodOptional<z.ZodObject<{
|
|
167
|
+
max_tokens: z.ZodDefault<z.ZodNumber>;
|
|
168
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
169
|
+
priority: "priority";
|
|
170
|
+
directory: "directory";
|
|
171
|
+
glob: "glob";
|
|
172
|
+
tag: "tag";
|
|
173
|
+
all: "all";
|
|
174
|
+
}>>;
|
|
175
|
+
include_dirs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
176
|
+
}, z.core.$strip>>;
|
|
177
|
+
}, z.core.$strip>>;
|
|
178
|
+
conflict_resolution: z.ZodDefault<z.ZodObject<{
|
|
179
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
180
|
+
priority_wins: "priority_wins";
|
|
181
|
+
merge: "merge";
|
|
182
|
+
}>>;
|
|
183
|
+
fallback: z.ZodOptional<z.ZodEnum<{
|
|
184
|
+
priority_wins: "priority_wins";
|
|
185
|
+
merge: "merge";
|
|
186
|
+
}>>;
|
|
187
|
+
}, z.core.$strip>>;
|
|
188
|
+
migration: z.ZodOptional<z.ZodObject<{
|
|
189
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
190
|
+
attach: "attach";
|
|
191
|
+
replace: "replace";
|
|
192
|
+
}>>;
|
|
193
|
+
preserve_legacy: z.ZodDefault<z.ZodBoolean>;
|
|
194
|
+
legacy_files: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
195
|
+
}, z.core.$strip>>;
|
|
196
|
+
}, z.core.$strip>;
|
|
197
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
198
|
+
/**
|
|
199
|
+
* Default configuration values
|
|
200
|
+
*/
|
|
201
|
+
export declare const DEFAULT_CONFIG: Config;
|
|
202
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;EAA0D,CAAC;AAC/F,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,gCAAgC;;;EAAqC,CAAC;AACnF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAI7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;iBAE7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAI7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACzD,eAAO,MAAM,aAAa,EAAE,WAAW,EAAmC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;iBAGnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;EAAgC,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;iBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAoB5B,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.ConfigSchema = exports.MigrationConfigSchema = exports.MigrationModeSchema = exports.ConflictResolutionSchema = exports.BUILD_TARGETS = exports.CompileConfigSchema = exports.AgentsTargetSchema = exports.CursorTargetSchema = exports.ClaudeTargetSchema = exports.ConflictResolutionStrategySchema = exports.SelectionStrategySchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Rule selection strategies for compilation
|
|
7
|
+
*/
|
|
8
|
+
exports.SelectionStrategySchema = zod_1.z.enum(['priority', 'directory', 'glob', 'tag', 'all']);
|
|
9
|
+
/**
|
|
10
|
+
* Conflict resolution strategies
|
|
11
|
+
*/
|
|
12
|
+
exports.ConflictResolutionStrategySchema = zod_1.z.enum(['priority_wins', 'merge']);
|
|
13
|
+
/**
|
|
14
|
+
* Claude compilation target configuration
|
|
15
|
+
*/
|
|
16
|
+
exports.ClaudeTargetSchema = zod_1.z.object({
|
|
17
|
+
max_tokens: zod_1.z.number().int().positive().default(4000),
|
|
18
|
+
strategy: exports.SelectionStrategySchema.default('priority'),
|
|
19
|
+
always_include: zod_1.z.array(zod_1.z.string()).default([]),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Cursor compilation target configuration
|
|
23
|
+
*/
|
|
24
|
+
exports.CursorTargetSchema = zod_1.z.object({
|
|
25
|
+
strategy: exports.SelectionStrategySchema.default('all'),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Agents compilation target configuration
|
|
29
|
+
*/
|
|
30
|
+
exports.AgentsTargetSchema = zod_1.z.object({
|
|
31
|
+
max_tokens: zod_1.z.number().int().positive().default(8000),
|
|
32
|
+
strategy: exports.SelectionStrategySchema.default('priority'),
|
|
33
|
+
include_dirs: zod_1.z.array(zod_1.z.string()).default([]),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Compilation configuration for all targets
|
|
37
|
+
*/
|
|
38
|
+
exports.CompileConfigSchema = zod_1.z.object({
|
|
39
|
+
claude: exports.ClaudeTargetSchema.optional(),
|
|
40
|
+
cursor: exports.CursorTargetSchema.optional(),
|
|
41
|
+
agents: exports.AgentsTargetSchema.optional(),
|
|
42
|
+
});
|
|
43
|
+
exports.BUILD_TARGETS = ['claude', 'cursor', 'agents'];
|
|
44
|
+
/**
|
|
45
|
+
* Conflict resolution configuration
|
|
46
|
+
*/
|
|
47
|
+
exports.ConflictResolutionSchema = zod_1.z.object({
|
|
48
|
+
strategy: exports.ConflictResolutionStrategySchema.default('priority_wins'),
|
|
49
|
+
fallback: exports.ConflictResolutionStrategySchema.optional(),
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Migration mode configuration
|
|
53
|
+
*/
|
|
54
|
+
exports.MigrationModeSchema = zod_1.z.enum(['attach', 'replace']);
|
|
55
|
+
/**
|
|
56
|
+
* Migration configuration for legacy file handling
|
|
57
|
+
*/
|
|
58
|
+
exports.MigrationConfigSchema = zod_1.z.object({
|
|
59
|
+
mode: exports.MigrationModeSchema.optional(),
|
|
60
|
+
preserve_legacy: zod_1.z.boolean().default(false),
|
|
61
|
+
legacy_files: zod_1.z.array(zod_1.z.string()).default([]),
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Complete config.yaml schema
|
|
65
|
+
*/
|
|
66
|
+
exports.ConfigSchema = zod_1.z.object({
|
|
67
|
+
version: zod_1.z.string().default('1.0'),
|
|
68
|
+
compile: exports.CompileConfigSchema.default({}),
|
|
69
|
+
conflict_resolution: exports.ConflictResolutionSchema.default({ strategy: 'priority_wins' }),
|
|
70
|
+
migration: exports.MigrationConfigSchema.optional(),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Default configuration values
|
|
74
|
+
*/
|
|
75
|
+
exports.DEFAULT_CONFIG = {
|
|
76
|
+
version: '1.0',
|
|
77
|
+
compile: {
|
|
78
|
+
claude: {
|
|
79
|
+
max_tokens: 4000,
|
|
80
|
+
strategy: 'priority',
|
|
81
|
+
always_include: [],
|
|
82
|
+
},
|
|
83
|
+
cursor: {
|
|
84
|
+
strategy: 'all',
|
|
85
|
+
},
|
|
86
|
+
agents: {
|
|
87
|
+
max_tokens: 8000,
|
|
88
|
+
strategy: 'priority',
|
|
89
|
+
include_dirs: [],
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
conflict_resolution: {
|
|
93
|
+
strategy: 'priority_wins',
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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("./config"), exports);
|
|
18
|
+
__exportStar(require("./rule"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Rule frontmatter schema for .md rule files
|
|
4
|
+
*/
|
|
5
|
+
export declare const RuleFrontmatterSchema: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
description: z.ZodOptional<z.ZodString>;
|
|
8
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
9
|
+
globs: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
10
|
+
priority: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
12
|
+
always_apply: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
export type RuleFrontmatter = z.infer<typeof RuleFrontmatterSchema>;
|
|
15
|
+
/**
|
|
16
|
+
* Complete parsed rule with frontmatter and content
|
|
17
|
+
*/
|
|
18
|
+
export interface ParsedRule {
|
|
19
|
+
/** File path relative to .context/rules/ */
|
|
20
|
+
path: string;
|
|
21
|
+
/** Absolute file path */
|
|
22
|
+
absolutePath: string;
|
|
23
|
+
/** Parsed and validated frontmatter */
|
|
24
|
+
frontmatter: RuleFrontmatter;
|
|
25
|
+
/** Markdown content body (after frontmatter) */
|
|
26
|
+
content: string;
|
|
27
|
+
/** Inferred globs from directory path if not specified */
|
|
28
|
+
inferredGlobs: string[];
|
|
29
|
+
/** Effective globs (explicit or inferred) */
|
|
30
|
+
effectiveGlobs: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Rule validation result
|
|
34
|
+
*/
|
|
35
|
+
export interface RuleValidationResult {
|
|
36
|
+
valid: boolean;
|
|
37
|
+
errors: RuleValidationError[];
|
|
38
|
+
warnings: RuleValidationWarning[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Rule validation error (blocking)
|
|
42
|
+
*/
|
|
43
|
+
export interface RuleValidationError {
|
|
44
|
+
type: 'schema' | 'duplicate_id' | 'circular_reference' | 'path_traversal' | 'dead_link';
|
|
45
|
+
message: string;
|
|
46
|
+
path: string;
|
|
47
|
+
line?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Rule validation warning (non-blocking)
|
|
51
|
+
*/
|
|
52
|
+
export interface RuleValidationWarning {
|
|
53
|
+
type: 'ghost_rule' | 'token_limit' | 'deprecated';
|
|
54
|
+
message: string;
|
|
55
|
+
path: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Default priority value for rules without explicit priority
|
|
59
|
+
*/
|
|
60
|
+
export declare const DEFAULT_PRIORITY = 50;
|
|
61
|
+
/**
|
|
62
|
+
* Infer globs from a rule's directory path
|
|
63
|
+
* @param rulePath - Relative path to the rule file (e.g., 'backend/auth/login.md')
|
|
64
|
+
* @returns Array of inferred glob patterns
|
|
65
|
+
*/
|
|
66
|
+
export declare function inferGlobsFromPath(rulePath: string): string[];
|
|
67
|
+
//# sourceMappingURL=rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/schemas/rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;iBAQhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,WAAW,EAAE,eAAe,CAAC;IAC7B,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PRIORITY = exports.RuleFrontmatterSchema = void 0;
|
|
4
|
+
exports.inferGlobsFromPath = inferGlobsFromPath;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
/**
|
|
7
|
+
* Rule frontmatter schema for .md rule files
|
|
8
|
+
*/
|
|
9
|
+
exports.RuleFrontmatterSchema = zod_1.z.object({
|
|
10
|
+
id: zod_1.z.string().min(1, 'Rule ID is required'),
|
|
11
|
+
description: zod_1.z.string().optional(),
|
|
12
|
+
domain: zod_1.z.string().optional(),
|
|
13
|
+
globs: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
|
|
14
|
+
priority: zod_1.z.number().int().min(0).max(100).default(50),
|
|
15
|
+
tags: zod_1.z.array(zod_1.z.string()).default([]),
|
|
16
|
+
always_apply: zod_1.z.boolean().default(false),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Default priority value for rules without explicit priority
|
|
20
|
+
*/
|
|
21
|
+
exports.DEFAULT_PRIORITY = 50;
|
|
22
|
+
/**
|
|
23
|
+
* Infer globs from a rule's directory path
|
|
24
|
+
* @param rulePath - Relative path to the rule file (e.g., 'backend/auth/login.md')
|
|
25
|
+
* @returns Array of inferred glob patterns
|
|
26
|
+
*/
|
|
27
|
+
function inferGlobsFromPath(rulePath) {
|
|
28
|
+
const pathParts = rulePath.split('/');
|
|
29
|
+
// Remove the filename
|
|
30
|
+
pathParts.pop();
|
|
31
|
+
if (pathParts.length === 0) {
|
|
32
|
+
// Rule is in root of rules directory - applies to all files
|
|
33
|
+
return ['**/*'];
|
|
34
|
+
}
|
|
35
|
+
// Build glob pattern from directory path
|
|
36
|
+
// e.g., 'backend/auth' -> 'backend/auth/**/*', 'src/backend/auth/**/*'
|
|
37
|
+
const dirPath = pathParts.join('/');
|
|
38
|
+
return [
|
|
39
|
+
`${dirPath}/**/*`,
|
|
40
|
+
`src/${dirPath}/**/*`,
|
|
41
|
+
`lib/${dirPath}/**/*`,
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/schemas/rule.ts"],"names":[],"mappings":";;;AAwEA,gDAmBC;AA3FD,6BAAwB;AAExB;;GAEG;AACU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IAC5C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACzC,CAAC,CAAC;AAiDH;;GAEG;AACU,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,sBAAsB;IACtB,SAAS,CAAC,GAAG,EAAE,CAAC;IAEhB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,4DAA4D;QAC5D,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,yCAAyC;IACzC,uEAAuE;IACvE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO;QACL,GAAG,OAAO,OAAO;QACjB,OAAO,OAAO,OAAO;QACrB,OAAO,OAAO,OAAO;KACtB,CAAC;AACJ,CAAC"}
|