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
package/dist/cli.js
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI Entry Point
|
|
4
|
+
*
|
|
5
|
+
* Unified `ctx` command for context architecture management.
|
|
6
|
+
* Supports init, build, lint, diff, verify, and migrate subcommands.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.run = run;
|
|
10
|
+
const commander_1 = require("commander");
|
|
11
|
+
const init_1 = require("./cli/init");
|
|
12
|
+
const build_1 = require("./cli/build");
|
|
13
|
+
const lint_1 = require("./cli/lint");
|
|
14
|
+
const verify_1 = require("./cli/verify");
|
|
15
|
+
const diff_1 = require("./cli/diff");
|
|
16
|
+
const migrate_1 = require("./cli/migrate");
|
|
17
|
+
const hooks_1 = require("./cli/hooks");
|
|
18
|
+
const bootstrap_1 = require("./bootstrap");
|
|
19
|
+
const llm_1 = require("./llm");
|
|
20
|
+
const program = new commander_1.Command();
|
|
21
|
+
program
|
|
22
|
+
.name('ctx')
|
|
23
|
+
.description('Unified context architecture for AI coding assistants')
|
|
24
|
+
.version('0.1.0');
|
|
25
|
+
// Init command
|
|
26
|
+
program
|
|
27
|
+
.command('init')
|
|
28
|
+
.description('Initialize .context directory in your project')
|
|
29
|
+
.option('-f, --force', 'Overwrite existing .context directory (creates backup)')
|
|
30
|
+
.option('--no-interactive', 'Run without prompts (use defaults)')
|
|
31
|
+
.option('--wizard', 'Launch guided migration wizard')
|
|
32
|
+
.option('--dry-run', 'Show what would happen without making changes')
|
|
33
|
+
// Back-compat: init runs bootstrap by default, but keep --bootstrap flag accepted.
|
|
34
|
+
.option('-b, --bootstrap', 'Run LLM bootstrap after init (default)')
|
|
35
|
+
.option('--no-bootstrap', 'Skip LLM bootstrap (only create templates)')
|
|
36
|
+
.action(async (options) => {
|
|
37
|
+
try {
|
|
38
|
+
const exitCode = await (0, init_1.runInit)({
|
|
39
|
+
force: options.force,
|
|
40
|
+
interactive: options.interactive,
|
|
41
|
+
wizard: options.wizard,
|
|
42
|
+
dryRun: options.dryRun,
|
|
43
|
+
bootstrap: options.bootstrap,
|
|
44
|
+
});
|
|
45
|
+
process.exit(exitCode);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Error:', error.message);
|
|
49
|
+
process.exit(2);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// Build command
|
|
53
|
+
program
|
|
54
|
+
.command('build [targets...]')
|
|
55
|
+
.description('Compile rules into target formats')
|
|
56
|
+
.option('-i, --incremental', 'Only rebuild changed files')
|
|
57
|
+
.option('--check', 'Check whether compiled outputs are up to date (no writes)')
|
|
58
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
59
|
+
.option('-q, --quiet', 'Suppress output except errors')
|
|
60
|
+
.option('--skip-validation', 'Skip validation step')
|
|
61
|
+
.option('--force', 'Force full rebuild')
|
|
62
|
+
.option('-t, --target <targets...>', 'Specific targets to build (claude, cursor, agents)')
|
|
63
|
+
.action(async (targets, options) => {
|
|
64
|
+
try {
|
|
65
|
+
let targetArgs = options.target;
|
|
66
|
+
if (!targetArgs || targetArgs.length === 0) {
|
|
67
|
+
if (Array.isArray(targets)) {
|
|
68
|
+
targetArgs = targets.length > 0 ? targets : undefined;
|
|
69
|
+
}
|
|
70
|
+
else if (targets) {
|
|
71
|
+
targetArgs = [targets];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const exitCode = await (0, build_1.runBuild)({
|
|
75
|
+
incremental: options.incremental,
|
|
76
|
+
check: options.check,
|
|
77
|
+
verbose: options.verbose,
|
|
78
|
+
quiet: options.quiet,
|
|
79
|
+
skipValidation: options.skipValidation,
|
|
80
|
+
force: options.force,
|
|
81
|
+
target: targetArgs,
|
|
82
|
+
});
|
|
83
|
+
process.exit(exitCode);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error('Error:', error.message);
|
|
87
|
+
process.exit(2);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
const runLintCommand = async (files = [], options) => {
|
|
91
|
+
try {
|
|
92
|
+
const exitCode = await (0, lint_1.runLint)({
|
|
93
|
+
json: options.json,
|
|
94
|
+
verbose: options.verbose,
|
|
95
|
+
quiet: options.quiet,
|
|
96
|
+
files: files.length > 0 ? files : undefined,
|
|
97
|
+
});
|
|
98
|
+
process.exit(exitCode);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('Error:', error.message);
|
|
102
|
+
process.exit(2);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
// Lint command
|
|
106
|
+
program
|
|
107
|
+
.command('lint [files...]')
|
|
108
|
+
.description('Validate rules without building')
|
|
109
|
+
.option('--json', 'Output in JSON format')
|
|
110
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
111
|
+
.option('-q, --quiet', 'Suppress output except errors')
|
|
112
|
+
.action(runLintCommand);
|
|
113
|
+
// Validate command (alias for lint)
|
|
114
|
+
program
|
|
115
|
+
.command('validate [files...]')
|
|
116
|
+
.description('Alias for lint: validate rules without building')
|
|
117
|
+
.option('--json', 'Output in JSON format')
|
|
118
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
119
|
+
.option('-q, --quiet', 'Suppress output except errors')
|
|
120
|
+
.action(runLintCommand);
|
|
121
|
+
// Verify command
|
|
122
|
+
program
|
|
123
|
+
.command('verify')
|
|
124
|
+
.description('Verify checksums of compiled outputs')
|
|
125
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
126
|
+
.option('--json', 'Output in JSON format')
|
|
127
|
+
.action(async (options) => {
|
|
128
|
+
try {
|
|
129
|
+
const exitCode = await (0, verify_1.runVerify)({
|
|
130
|
+
verbose: options.verbose,
|
|
131
|
+
json: options.json,
|
|
132
|
+
});
|
|
133
|
+
process.exit(exitCode);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error('Error:', error.message);
|
|
137
|
+
process.exit(2);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
// Diff command
|
|
141
|
+
program
|
|
142
|
+
.command('diff')
|
|
143
|
+
.description('Compare compiled outputs with legacy files')
|
|
144
|
+
.option('--legacy', 'Compare with legacy context files')
|
|
145
|
+
.option('--unified', 'Show unified diff format')
|
|
146
|
+
.option('-v, --verbose', 'Show detailed diff output')
|
|
147
|
+
.action(async (options) => {
|
|
148
|
+
try {
|
|
149
|
+
const exitCode = await (0, diff_1.runDiff)({
|
|
150
|
+
legacy: options.legacy,
|
|
151
|
+
unified: options.unified,
|
|
152
|
+
verbose: options.verbose,
|
|
153
|
+
});
|
|
154
|
+
process.exit(exitCode);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error('Error:', error.message);
|
|
158
|
+
process.exit(2);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// Migrate command
|
|
162
|
+
program
|
|
163
|
+
.command('migrate')
|
|
164
|
+
.description('Manage migration from legacy context files')
|
|
165
|
+
.option('--analyze', 'Analyze existing legacy files')
|
|
166
|
+
.option('--attach', 'Create .context alongside legacy files')
|
|
167
|
+
.option('--complete', 'Remove legacy files after migration')
|
|
168
|
+
.option('-f, --force', 'Skip confirmation prompts')
|
|
169
|
+
.option('--dry-run', 'Show what would happen without making changes')
|
|
170
|
+
.action(async (options) => {
|
|
171
|
+
try {
|
|
172
|
+
const exitCode = await (0, migrate_1.runMigrate)({
|
|
173
|
+
analyze: options.analyze,
|
|
174
|
+
attach: options.attach,
|
|
175
|
+
complete: options.complete,
|
|
176
|
+
force: options.force,
|
|
177
|
+
dryRun: options.dryRun,
|
|
178
|
+
});
|
|
179
|
+
process.exit(exitCode);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.error('Error:', error.message);
|
|
183
|
+
process.exit(2);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
// Hooks command
|
|
187
|
+
program
|
|
188
|
+
.command('hooks')
|
|
189
|
+
.description('Manage git hooks integration')
|
|
190
|
+
.option('--install', 'Install hooks without prompts')
|
|
191
|
+
.option('--remove', 'Remove ctx git hooks')
|
|
192
|
+
.option('--skip-husky', 'Skip Husky installation')
|
|
193
|
+
.option('--skip-gitignore', 'Skip .gitignore updates')
|
|
194
|
+
.option('-f, --force', 'Force overwrite existing hooks')
|
|
195
|
+
.option('--dry-run', 'Show what would happen without making changes')
|
|
196
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
197
|
+
.action(async (options) => {
|
|
198
|
+
try {
|
|
199
|
+
const exitCode = await (0, hooks_1.runHooks)({
|
|
200
|
+
install: options.install,
|
|
201
|
+
remove: options.remove,
|
|
202
|
+
skipHusky: options.skipHusky,
|
|
203
|
+
skipGitignore: options.skipGitignore,
|
|
204
|
+
force: options.force,
|
|
205
|
+
dryRun: options.dryRun,
|
|
206
|
+
verbose: options.verbose,
|
|
207
|
+
});
|
|
208
|
+
process.exit(exitCode);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error('Error:', error.message);
|
|
212
|
+
process.exit(2);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
// Bootstrap command (enhanced LLM-powered context generation)
|
|
216
|
+
program
|
|
217
|
+
.command('bootstrap')
|
|
218
|
+
.description('Generate context files using LLM analysis')
|
|
219
|
+
.option('-p, --provider <type>', 'LLM provider to use (auto-detect if not specified)')
|
|
220
|
+
.option('--analyze-only', 'Only analyze codebase, skip LLM invocation')
|
|
221
|
+
.option('--skip-validation', 'Skip output validation')
|
|
222
|
+
.option('--auto-build', 'Automatically run build after bootstrap')
|
|
223
|
+
.option('-v, --verbose', 'Show detailed output including prompts')
|
|
224
|
+
.option('--dry-run', 'Show what would be generated without writing files')
|
|
225
|
+
.option('--list-providers', 'List available LLM providers')
|
|
226
|
+
.action(async (options) => {
|
|
227
|
+
try {
|
|
228
|
+
// List providers if requested
|
|
229
|
+
if (options.listProviders) {
|
|
230
|
+
console.log('\nAvailable LLM providers:\n');
|
|
231
|
+
for (const provider of (0, llm_1.listProviderTypes)()) {
|
|
232
|
+
console.log(` ${provider.type.padEnd(15)} ${provider.description}`);
|
|
233
|
+
}
|
|
234
|
+
console.log('\nUse --provider <type> to specify a provider.');
|
|
235
|
+
console.log('If not specified, the best available provider will be auto-selected.\n');
|
|
236
|
+
process.exit(0);
|
|
237
|
+
}
|
|
238
|
+
const result = await (0, bootstrap_1.runEnhancedBootstrap)(process.cwd(), {
|
|
239
|
+
provider: options.provider,
|
|
240
|
+
analyzeOnly: options.analyzeOnly,
|
|
241
|
+
skipValidation: options.skipValidation,
|
|
242
|
+
autoBuild: options.autoBuild,
|
|
243
|
+
verbose: options.verbose,
|
|
244
|
+
dryRun: options.dryRun,
|
|
245
|
+
});
|
|
246
|
+
process.exit(result.success ? 0 : 1);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error('Error:', error.message);
|
|
250
|
+
process.exit(2);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
// Handle unknown commands
|
|
254
|
+
program.on('command:*', () => {
|
|
255
|
+
console.error('Unknown command: %s', program.args.join(' '));
|
|
256
|
+
console.log('Run `ctx --help` for available commands.');
|
|
257
|
+
process.exit(1);
|
|
258
|
+
});
|
|
259
|
+
function run() {
|
|
260
|
+
program.parse();
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAqQH,kBAEC;AArQD,yCAAoC;AACpC,qCAAqC;AACrC,uCAAuC;AACvC,qCAAqC;AACrC,yCAAyC;AACzC,qCAAqC;AACrC,2CAA2C;AAC3C,uCAAuC;AACvC,2CAAmD;AACnD,+BAA2D;AAE3D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,wDAAwD,CAAC;KAC/E,MAAM,CAAC,kBAAkB,EAAE,oCAAoC,CAAC;KAChE,MAAM,CAAC,UAAU,EAAE,gCAAgC,CAAC;KACpD,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;IACrE,mFAAmF;KAClF,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAO,EAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,SAAS,EAAE,2DAA2D,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC;KACvC,MAAM,CAAC,2BAA2B,EAAE,oDAAoD,CAAC;KACzF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,IAAI,CAAC;QACH,IAAI,UAAU,GAAyB,OAAO,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAQ,EAAC;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,cAAc,GAAG,KAAK,EAC1B,QAAkB,EAAE,EACpB,OAA+D,EAC/D,EAAE;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAO,EAAC;YAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAC5C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,oCAAoC;AACpC,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAS,EAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,UAAU,EAAE,mCAAmC,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAO,EAAC;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,UAAU,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,YAAY,EAAE,qCAAqC,CAAC;KAC3D,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAU,EAAC;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAQ,EAAC;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,8DAA8D;AAC9D,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,oDAAoD,CAAC;KACrF,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,cAAc,EAAE,yCAAyC,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,8BAA8B;QAC9B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,KAAK,MAAM,QAAQ,IAAI,IAAA,uBAAiB,GAAE,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAoB,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvD,QAAQ,EAAE,OAAO,CAAC,QAAuC;YACzD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0BAA0B;AAC1B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,SAAgB,GAAG;IACjB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agents Compiler
|
|
3
|
+
*
|
|
4
|
+
* Compiles rules to a comprehensive AGENTS.md file for general AI agents.
|
|
5
|
+
* Includes full project context, architecture, and rule summaries.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseCompiler, CompilerContext, CompilationResult } from './base-compiler';
|
|
8
|
+
/**
|
|
9
|
+
* Agents compiler implementation
|
|
10
|
+
*/
|
|
11
|
+
export declare class AgentsCompiler extends BaseCompiler {
|
|
12
|
+
constructor(context: CompilerContext);
|
|
13
|
+
get targetName(): string;
|
|
14
|
+
compile(): Promise<CompilationResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Build the complete AGENTS.md content
|
|
17
|
+
*/
|
|
18
|
+
private buildOutput;
|
|
19
|
+
/**
|
|
20
|
+
* Build a failure result
|
|
21
|
+
*/
|
|
22
|
+
private buildFailureResult;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=agents-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/agents-compiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EAIlB,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,EAAE,eAAe;IAIpC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAwH3C;;OAEG;IACH,OAAO,CAAC,WAAW;IAiEnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAkB3B"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agents Compiler
|
|
4
|
+
*
|
|
5
|
+
* Compiles rules to a comprehensive AGENTS.md file for general AI agents.
|
|
6
|
+
* Includes full project context, architecture, and rule summaries.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentsCompiler = void 0;
|
|
10
|
+
const base_compiler_1 = require("./base-compiler");
|
|
11
|
+
const token_estimator_1 = require("./token-estimator");
|
|
12
|
+
const rule_selector_1 = require("./rule-selector");
|
|
13
|
+
/**
|
|
14
|
+
* Agents compiler implementation
|
|
15
|
+
*/
|
|
16
|
+
class AgentsCompiler extends base_compiler_1.BaseCompiler {
|
|
17
|
+
constructor(context) {
|
|
18
|
+
super(context);
|
|
19
|
+
}
|
|
20
|
+
get targetName() {
|
|
21
|
+
return 'agents';
|
|
22
|
+
}
|
|
23
|
+
async compile() {
|
|
24
|
+
const errors = [];
|
|
25
|
+
const warnings = [];
|
|
26
|
+
// Get agents config
|
|
27
|
+
const agentsConfig = this.context.config.compile?.agents;
|
|
28
|
+
const maxTokens = agentsConfig?.max_tokens || 8000;
|
|
29
|
+
// Load project.md (required)
|
|
30
|
+
const projectContent = await this.loadProjectContent();
|
|
31
|
+
if (!projectContent) {
|
|
32
|
+
errors.push({
|
|
33
|
+
type: 'missing_file',
|
|
34
|
+
message: 'project.md is required for Agents compilation but was not found',
|
|
35
|
+
path: '.context/project.md',
|
|
36
|
+
});
|
|
37
|
+
return this.buildFailureResult(errors, warnings);
|
|
38
|
+
}
|
|
39
|
+
// Load architecture.md (optional)
|
|
40
|
+
const architectureContent = await this.loadArchitectureContent();
|
|
41
|
+
if (!architectureContent) {
|
|
42
|
+
warnings.push({
|
|
43
|
+
type: 'missing_optional',
|
|
44
|
+
message: 'architecture.md not found, compilation will continue without it',
|
|
45
|
+
path: '.context/architecture.md',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Calculate token usage for required content
|
|
49
|
+
let usedTokens = 0;
|
|
50
|
+
usedTokens += (0, token_estimator_1.estimateTokens)(projectContent).tokens;
|
|
51
|
+
if (architectureContent) {
|
|
52
|
+
usedTokens += (0, token_estimator_1.estimateTokens)(architectureContent).tokens;
|
|
53
|
+
}
|
|
54
|
+
// Reserve tokens for meta-rule
|
|
55
|
+
const metaRule = this.generateMetaRule();
|
|
56
|
+
usedTokens += (0, token_estimator_1.estimateTokens)(metaRule).tokens;
|
|
57
|
+
// Calculate remaining budget for rules
|
|
58
|
+
const effectiveBudget = (0, token_estimator_1.applyBudgetMargin)(maxTokens);
|
|
59
|
+
const rulesBudget = Math.max(0, effectiveBudget - usedTokens);
|
|
60
|
+
// For agents, we use summaries instead of full content
|
|
61
|
+
const allRules = (0, rule_selector_1.sortByPriority)(this.context.rules);
|
|
62
|
+
const selectedRules = [];
|
|
63
|
+
let ruleTokens = 0;
|
|
64
|
+
for (const rule of allRules) {
|
|
65
|
+
const summary = this.getRuleSummary(rule);
|
|
66
|
+
const summaryTokens = (0, token_estimator_1.estimateTokens)(summary).tokens;
|
|
67
|
+
if (ruleTokens + summaryTokens <= rulesBudget) {
|
|
68
|
+
selectedRules.push(rule);
|
|
69
|
+
ruleTokens += summaryTokens;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
warnings.push({
|
|
73
|
+
type: 'token_limit',
|
|
74
|
+
message: `Rule ${rule.frontmatter.id} excluded due to token budget`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (selectedRules.length === 0 && this.context.rules.length > 0) {
|
|
79
|
+
warnings.push({
|
|
80
|
+
type: 'empty_rules',
|
|
81
|
+
message: 'No rules included in AGENTS.md due to token budget constraints',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Build output content
|
|
85
|
+
let content = this.buildOutput(projectContent, architectureContent, selectedRules, metaRule);
|
|
86
|
+
// Add checksum and timestamp metadata
|
|
87
|
+
content = this.addMetadata(content);
|
|
88
|
+
const totalTokens = (0, token_estimator_1.estimateTokens)(content).tokens;
|
|
89
|
+
// Create output
|
|
90
|
+
const output = {
|
|
91
|
+
path: 'AGENTS.md',
|
|
92
|
+
content,
|
|
93
|
+
tokens: totalTokens,
|
|
94
|
+
};
|
|
95
|
+
// Write output (optional - callers like the build orchestrator may write atomically)
|
|
96
|
+
if (this.context.writeToDisk !== false) {
|
|
97
|
+
try {
|
|
98
|
+
this.writeOutput(output.path, output.content);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
errors.push({
|
|
102
|
+
type: 'write_error',
|
|
103
|
+
message: `Failed to write AGENTS.md: ${error.message}`,
|
|
104
|
+
path: 'AGENTS.md',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
success: errors.length === 0,
|
|
110
|
+
outputs: [output],
|
|
111
|
+
errors,
|
|
112
|
+
warnings,
|
|
113
|
+
totalTokens,
|
|
114
|
+
stats: {
|
|
115
|
+
rulesProcessed: this.context.rules.length,
|
|
116
|
+
rulesIncluded: selectedRules.length,
|
|
117
|
+
outputFiles: 1,
|
|
118
|
+
totalTokens,
|
|
119
|
+
tokenBudget: maxTokens,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Build the complete AGENTS.md content
|
|
125
|
+
*/
|
|
126
|
+
buildOutput(projectContent, architectureContent, rules, metaRule) {
|
|
127
|
+
const sections = [];
|
|
128
|
+
// Header
|
|
129
|
+
sections.push('# Agent Context\n');
|
|
130
|
+
sections.push('This document provides context for AI agents working with this project.\n');
|
|
131
|
+
// Full project content
|
|
132
|
+
sections.push('## Project Overview\n');
|
|
133
|
+
sections.push(projectContent.trim());
|
|
134
|
+
sections.push('');
|
|
135
|
+
// Full architecture content
|
|
136
|
+
if (architectureContent) {
|
|
137
|
+
sections.push('## Architecture\n');
|
|
138
|
+
sections.push(architectureContent.trim());
|
|
139
|
+
sections.push('');
|
|
140
|
+
}
|
|
141
|
+
// Rule summaries
|
|
142
|
+
if (rules.length > 0) {
|
|
143
|
+
sections.push('## Rules and Guidelines\n');
|
|
144
|
+
for (const rule of rules) {
|
|
145
|
+
sections.push(`### ${rule.frontmatter.id}\n`);
|
|
146
|
+
// Include description
|
|
147
|
+
if (rule.frontmatter.description) {
|
|
148
|
+
sections.push(`**Description:** ${rule.frontmatter.description}\n`);
|
|
149
|
+
}
|
|
150
|
+
// Include tags if present
|
|
151
|
+
if (rule.frontmatter.tags && rule.frontmatter.tags.length > 0) {
|
|
152
|
+
sections.push(`**Tags:** ${rule.frontmatter.tags.join(', ')}\n`);
|
|
153
|
+
}
|
|
154
|
+
// Include domain if present
|
|
155
|
+
if (rule.frontmatter.domain) {
|
|
156
|
+
sections.push(`**Domain:** ${rule.frontmatter.domain}\n`);
|
|
157
|
+
}
|
|
158
|
+
// Include summary (first paragraph)
|
|
159
|
+
const firstParagraph = rule.content.split('\n\n')[0];
|
|
160
|
+
if (firstParagraph) {
|
|
161
|
+
sections.push(firstParagraph.trim());
|
|
162
|
+
}
|
|
163
|
+
sections.push('');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Directory index for navigation
|
|
167
|
+
sections.push(this.generateDirectoryIndex(rules));
|
|
168
|
+
// Meta-rule
|
|
169
|
+
sections.push(metaRule);
|
|
170
|
+
return sections.join('\n');
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Build a failure result
|
|
174
|
+
*/
|
|
175
|
+
buildFailureResult(errors, warnings) {
|
|
176
|
+
return {
|
|
177
|
+
success: false,
|
|
178
|
+
outputs: [],
|
|
179
|
+
errors,
|
|
180
|
+
warnings,
|
|
181
|
+
totalTokens: 0,
|
|
182
|
+
stats: {
|
|
183
|
+
rulesProcessed: 0,
|
|
184
|
+
rulesIncluded: 0,
|
|
185
|
+
outputFiles: 0,
|
|
186
|
+
totalTokens: 0,
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.AgentsCompiler = AgentsCompiler;
|
|
192
|
+
//# sourceMappingURL=agents-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-compiler.js","sourceRoot":"","sources":["../../src/compiler/agents-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base compiler interface and abstract class for target-specific compilation
|
|
3
|
+
*/
|
|
4
|
+
import { ParsedRule } from '../schemas/rule';
|
|
5
|
+
import { Config } from '../schemas/config';
|
|
6
|
+
/**
|
|
7
|
+
* Compilation result
|
|
8
|
+
*/
|
|
9
|
+
export interface CompilationResult {
|
|
10
|
+
/** Whether compilation succeeded */
|
|
11
|
+
success: boolean;
|
|
12
|
+
/** Output files generated */
|
|
13
|
+
outputs: OutputFile[];
|
|
14
|
+
/** Errors encountered */
|
|
15
|
+
errors: CompilationError[];
|
|
16
|
+
/** Warnings generated */
|
|
17
|
+
warnings: CompilationWarning[];
|
|
18
|
+
/** Total tokens in output */
|
|
19
|
+
totalTokens: number;
|
|
20
|
+
/** Compilation statistics */
|
|
21
|
+
stats: CompilationStats;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Output file generated by compilation
|
|
25
|
+
*/
|
|
26
|
+
export interface OutputFile {
|
|
27
|
+
/** Output file path (relative to project root) */
|
|
28
|
+
path: string;
|
|
29
|
+
/** File content */
|
|
30
|
+
content: string;
|
|
31
|
+
/** Estimated tokens */
|
|
32
|
+
tokens: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Compilation error
|
|
36
|
+
*/
|
|
37
|
+
export interface CompilationError {
|
|
38
|
+
/** Error type */
|
|
39
|
+
type: 'missing_file' | 'write_error' | 'parse_error' | 'config_error';
|
|
40
|
+
/** Error message */
|
|
41
|
+
message: string;
|
|
42
|
+
/** Related file path */
|
|
43
|
+
path?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Compilation warning
|
|
47
|
+
*/
|
|
48
|
+
export interface CompilationWarning {
|
|
49
|
+
/** Warning type */
|
|
50
|
+
type: 'missing_optional' | 'truncated' | 'empty_rules' | 'token_limit';
|
|
51
|
+
/** Warning message */
|
|
52
|
+
message: string;
|
|
53
|
+
/** Related file path */
|
|
54
|
+
path?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Compilation statistics
|
|
58
|
+
*/
|
|
59
|
+
export interface CompilationStats {
|
|
60
|
+
/** Number of rules processed */
|
|
61
|
+
rulesProcessed: number;
|
|
62
|
+
/** Number of rules included */
|
|
63
|
+
rulesIncluded: number;
|
|
64
|
+
/** Number of output files */
|
|
65
|
+
outputFiles: number;
|
|
66
|
+
/** Total tokens in output */
|
|
67
|
+
totalTokens: number;
|
|
68
|
+
/** Token budget (if applicable) */
|
|
69
|
+
tokenBudget?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Compiler context with project information
|
|
73
|
+
*/
|
|
74
|
+
export interface CompilerContext {
|
|
75
|
+
/** Project root directory */
|
|
76
|
+
projectRoot: string;
|
|
77
|
+
/** Configuration */
|
|
78
|
+
config: Config;
|
|
79
|
+
/** Parsed rules */
|
|
80
|
+
rules: ParsedRule[];
|
|
81
|
+
/**
|
|
82
|
+
* Whether compilers should write outputs to disk.
|
|
83
|
+
* When false, compilers only return `outputs` and the caller is responsible for writing.
|
|
84
|
+
* (Default: true)
|
|
85
|
+
*/
|
|
86
|
+
writeToDisk?: boolean;
|
|
87
|
+
/** Project description content (from project.md) */
|
|
88
|
+
projectContent?: string;
|
|
89
|
+
/** Architecture content (from architecture.md) */
|
|
90
|
+
architectureContent?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Abstract base compiler class
|
|
94
|
+
*/
|
|
95
|
+
export declare abstract class BaseCompiler {
|
|
96
|
+
protected context: CompilerContext;
|
|
97
|
+
constructor(context: CompilerContext);
|
|
98
|
+
/**
|
|
99
|
+
* Compile rules to target format
|
|
100
|
+
*/
|
|
101
|
+
abstract compile(): Promise<CompilationResult>;
|
|
102
|
+
/**
|
|
103
|
+
* Get the target name (e.g., 'cursor', 'claude', 'agents')
|
|
104
|
+
*/
|
|
105
|
+
abstract get targetName(): string;
|
|
106
|
+
/**
|
|
107
|
+
* Load project.md content
|
|
108
|
+
*/
|
|
109
|
+
protected loadProjectContent(): Promise<string | undefined>;
|
|
110
|
+
/**
|
|
111
|
+
* Load architecture.md content
|
|
112
|
+
*/
|
|
113
|
+
protected loadArchitectureContent(): Promise<string | undefined>;
|
|
114
|
+
/**
|
|
115
|
+
* Ensure output directory exists
|
|
116
|
+
*/
|
|
117
|
+
protected ensureDirectory(dirPath: string): void;
|
|
118
|
+
/**
|
|
119
|
+
* Write output file
|
|
120
|
+
*/
|
|
121
|
+
protected writeOutput(filePath: string, content: string): void;
|
|
122
|
+
/**
|
|
123
|
+
* Generate Context Hygiene meta-rule content
|
|
124
|
+
*/
|
|
125
|
+
protected generateMetaRule(): string;
|
|
126
|
+
/**
|
|
127
|
+
* Generate directory index for agent navigation
|
|
128
|
+
*/
|
|
129
|
+
protected generateDirectoryIndex(rules: ParsedRule[]): string;
|
|
130
|
+
/**
|
|
131
|
+
* Get summary of rule (description + first paragraph)
|
|
132
|
+
*/
|
|
133
|
+
protected getRuleSummary(rule: ParsedRule): string;
|
|
134
|
+
/**
|
|
135
|
+
* Generate SHA-256 checksum for content
|
|
136
|
+
*/
|
|
137
|
+
protected generateChecksum(content: string): string;
|
|
138
|
+
/**
|
|
139
|
+
* Generate build timestamp in ISO format
|
|
140
|
+
*/
|
|
141
|
+
protected generateTimestamp(): string;
|
|
142
|
+
/**
|
|
143
|
+
* Generate footer with checksum and timestamp
|
|
144
|
+
* The checksum is calculated on the content BEFORE appending this footer
|
|
145
|
+
*/
|
|
146
|
+
protected generateFooter(content: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Add checksum and timestamp footer to content
|
|
149
|
+
*/
|
|
150
|
+
protected addMetadata(content: string): string;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=base-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/base-compiler.ts"],"names":[],"mappings":"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"}
|