@promptci/core 0.0.1
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 +201 -0
- package/README.md +30 -0
- package/dist/agent-practices.d.ts +22 -0
- package/dist/agent-practices.d.ts.map +1 -0
- package/dist/agent-practices.js +582 -0
- package/dist/agent-practices.js.map +1 -0
- package/dist/baseline.d.ts +40 -0
- package/dist/baseline.d.ts.map +1 -0
- package/dist/baseline.js +172 -0
- package/dist/baseline.js.map +1 -0
- package/dist/canonical-owner.d.ts +3 -0
- package/dist/canonical-owner.d.ts.map +1 -0
- package/dist/canonical-owner.js +131 -0
- package/dist/canonical-owner.js.map +1 -0
- package/dist/cheap-model-routing.d.ts +4 -0
- package/dist/cheap-model-routing.d.ts.map +1 -0
- package/dist/cheap-model-routing.js +43 -0
- package/dist/cheap-model-routing.js.map +1 -0
- package/dist/ci-alignment.d.ts +10 -0
- package/dist/ci-alignment.d.ts.map +1 -0
- package/dist/ci-alignment.js +343 -0
- package/dist/ci-alignment.js.map +1 -0
- package/dist/cli-output-filter.d.ts +16 -0
- package/dist/cli-output-filter.d.ts.map +1 -0
- package/dist/cli-output-filter.js +88 -0
- package/dist/cli-output-filter.js.map +1 -0
- package/dist/command-validity.d.ts +12 -0
- package/dist/command-validity.d.ts.map +1 -0
- package/dist/command-validity.js +543 -0
- package/dist/command-validity.js.map +1 -0
- package/dist/conflicts.d.ts +49 -0
- package/dist/conflicts.d.ts.map +1 -0
- package/dist/conflicts.js +1065 -0
- package/dist/conflicts.js.map +1 -0
- package/dist/context-analysis.d.ts +15 -0
- package/dist/context-analysis.d.ts.map +1 -0
- package/dist/context-analysis.js +24 -0
- package/dist/context-analysis.js.map +1 -0
- package/dist/context-bloat.d.ts +17 -0
- package/dist/context-bloat.d.ts.map +1 -0
- package/dist/context-bloat.js +148 -0
- package/dist/context-bloat.js.map +1 -0
- package/dist/context-cost.d.ts +4 -0
- package/dist/context-cost.d.ts.map +1 -0
- package/dist/context-cost.js +70 -0
- package/dist/context-cost.js.map +1 -0
- package/dist/context-optimizer.d.ts +14 -0
- package/dist/context-optimizer.d.ts.map +1 -0
- package/dist/context-optimizer.js +219 -0
- package/dist/context-optimizer.js.map +1 -0
- package/dist/context-recommender.d.ts +3 -0
- package/dist/context-recommender.d.ts.map +1 -0
- package/dist/context-recommender.js +329 -0
- package/dist/context-recommender.js.map +1 -0
- package/dist/dead-references.d.ts +33 -0
- package/dist/dead-references.d.ts.map +1 -0
- package/dist/dead-references.js +607 -0
- package/dist/dead-references.js.map +1 -0
- package/dist/detectors.d.ts +11 -0
- package/dist/detectors.d.ts.map +1 -0
- package/dist/detectors.js +160 -0
- package/dist/detectors.js.map +1 -0
- package/dist/duplicates.d.ts +36 -0
- package/dist/duplicates.d.ts.map +1 -0
- package/dist/duplicates.js +436 -0
- package/dist/duplicates.js.map +1 -0
- package/dist/fix-engine.d.ts +16 -0
- package/dist/fix-engine.d.ts.map +1 -0
- package/dist/fix-engine.js +179 -0
- package/dist/fix-engine.js.map +1 -0
- package/dist/framework-packs.d.ts +8 -0
- package/dist/framework-packs.d.ts.map +1 -0
- package/dist/framework-packs.js +22 -0
- package/dist/framework-packs.js.map +1 -0
- package/dist/frameworks/dotnet.d.ts +4 -0
- package/dist/frameworks/dotnet.d.ts.map +1 -0
- package/dist/frameworks/dotnet.js +77 -0
- package/dist/frameworks/dotnet.js.map +1 -0
- package/dist/frameworks/go.d.ts +4 -0
- package/dist/frameworks/go.d.ts.map +1 -0
- package/dist/frameworks/go.js +39 -0
- package/dist/frameworks/go.js.map +1 -0
- package/dist/frameworks/nextjs.d.ts +4 -0
- package/dist/frameworks/nextjs.d.ts.map +1 -0
- package/dist/frameworks/nextjs.js +66 -0
- package/dist/frameworks/nextjs.js.map +1 -0
- package/dist/frameworks/python.d.ts +4 -0
- package/dist/frameworks/python.d.ts.map +1 -0
- package/dist/frameworks/python.js +66 -0
- package/dist/frameworks/python.js.map +1 -0
- package/dist/frameworks/rust.d.ts +4 -0
- package/dist/frameworks/rust.d.ts.map +1 -0
- package/dist/frameworks/rust.js +72 -0
- package/dist/frameworks/rust.js.map +1 -0
- package/dist/frameworks/unity.d.ts +4 -0
- package/dist/frameworks/unity.d.ts.map +1 -0
- package/dist/frameworks/unity.js +74 -0
- package/dist/frameworks/unity.js.map +1 -0
- package/dist/health-score.d.ts +37 -0
- package/dist/health-score.d.ts.map +1 -0
- package/dist/health-score.js +164 -0
- package/dist/health-score.js.map +1 -0
- package/dist/index.d.ts +31 -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.d.ts +6 -0
- package/dist/llm.d.ts.map +1 -0
- package/dist/llm.js +67 -0
- package/dist/llm.js.map +1 -0
- package/dist/manifest-consistency.d.ts +37 -0
- package/dist/manifest-consistency.d.ts.map +1 -0
- package/dist/manifest-consistency.js +659 -0
- package/dist/manifest-consistency.js.map +1 -0
- package/dist/mcp-detector.d.ts +4 -0
- package/dist/mcp-detector.d.ts.map +1 -0
- package/dist/mcp-detector.js +131 -0
- package/dist/mcp-detector.js.map +1 -0
- package/dist/missing-context.d.ts +15 -0
- package/dist/missing-context.d.ts.map +1 -0
- package/dist/missing-context.js +517 -0
- package/dist/missing-context.js.map +1 -0
- package/dist/native-tool-preference.d.ts +20 -0
- package/dist/native-tool-preference.d.ts.map +1 -0
- package/dist/native-tool-preference.js +94 -0
- package/dist/native-tool-preference.js.map +1 -0
- package/dist/output-verbosity.d.ts +3 -0
- package/dist/output-verbosity.d.ts.map +1 -0
- package/dist/output-verbosity.js +83 -0
- package/dist/output-verbosity.js.map +1 -0
- package/dist/product-boundary.d.ts +11 -0
- package/dist/product-boundary.d.ts.map +1 -0
- package/dist/product-boundary.js +301 -0
- package/dist/product-boundary.js.map +1 -0
- package/dist/project-type.d.ts +15 -0
- package/dist/project-type.d.ts.map +1 -0
- package/dist/project-type.js +116 -0
- package/dist/project-type.js.map +1 -0
- package/dist/prompt-cache.d.ts +3 -0
- package/dist/prompt-cache.d.ts.map +1 -0
- package/dist/prompt-cache.js +151 -0
- package/dist/prompt-cache.js.map +1 -0
- package/dist/repo-context.d.ts +37 -0
- package/dist/repo-context.d.ts.map +1 -0
- package/dist/repo-context.js +221 -0
- package/dist/repo-context.js.map +1 -0
- package/dist/report.d.ts +87 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +558 -0
- package/dist/report.js.map +1 -0
- package/dist/scan.d.ts +7 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +43 -0
- package/dist/scan.js.map +1 -0
- package/dist/scanner.d.ts +3 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +216 -0
- package/dist/scanner.js.map +1 -0
- package/dist/security-pack.d.ts +4 -0
- package/dist/security-pack.d.ts.map +1 -0
- package/dist/security-pack.js +403 -0
- package/dist/security-pack.js.map +1 -0
- package/dist/stale-instructions.d.ts +20 -0
- package/dist/stale-instructions.d.ts.map +1 -0
- package/dist/stale-instructions.js +269 -0
- package/dist/stale-instructions.js.map +1 -0
- package/dist/suppression.d.ts +64 -0
- package/dist/suppression.d.ts.map +1 -0
- package/dist/suppression.js +338 -0
- package/dist/suppression.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/vague-guidance.d.ts +12 -0
- package/dist/vague-guidance.d.ts.map +1 -0
- package/dist/vague-guidance.js +235 -0
- package/dist/vague-guidance.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-optimizer.js","sourceRoot":"","sources":["../src/context-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-recommender.d.ts","sourceRoot":"","sources":["../src/context-recommender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAuC,MAAM,YAAY,CAAC;AAclF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAgYzE"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
export function generateContextRecommendations(report) {
|
|
4
|
+
const { filesScanned, repoPath } = report;
|
|
5
|
+
const rel = (absPath) => {
|
|
6
|
+
const r = path.relative(repoPath, absPath);
|
|
7
|
+
return r && !r.startsWith('..') ? r : absPath;
|
|
8
|
+
};
|
|
9
|
+
// If the repository is small and clean, skip recommendations to avoid noise
|
|
10
|
+
const totalTokens = filesScanned.reduce((sum, f) => sum + f.estimatedTokens, 0);
|
|
11
|
+
if (totalTokens < 500 && report.issues.length === 0) {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
// 1. Classify all sections
|
|
15
|
+
const classified = [];
|
|
16
|
+
for (const file of filesScanned) {
|
|
17
|
+
for (const sec of file.sections) {
|
|
18
|
+
const heading = (sec.heading || '').toLowerCase();
|
|
19
|
+
const text = sec.normalizedText;
|
|
20
|
+
let classification = 'unknown';
|
|
21
|
+
let suggestedFile = '';
|
|
22
|
+
let reason = '';
|
|
23
|
+
// Check Archive/Remove markers first
|
|
24
|
+
if (heading.includes('changelog') ||
|
|
25
|
+
heading.includes('history') ||
|
|
26
|
+
heading.includes('roadmap') ||
|
|
27
|
+
heading.includes('screenshot') ||
|
|
28
|
+
heading.includes('mockup') ||
|
|
29
|
+
heading.includes('past plan') ||
|
|
30
|
+
heading.includes('yesterday') ||
|
|
31
|
+
heading.includes('todo') ||
|
|
32
|
+
heading.includes('status') ||
|
|
33
|
+
heading.includes('task') ||
|
|
34
|
+
heading.includes('notes') ||
|
|
35
|
+
text.includes('todo') && (heading.includes('todo') || heading.includes('done'))) {
|
|
36
|
+
classification = 'archive';
|
|
37
|
+
reason = 'Contains historical, stale, or roadmap content that is not relevant to ongoing AI tasks.';
|
|
38
|
+
}
|
|
39
|
+
// Check On-demand markers
|
|
40
|
+
else if (heading.includes('deploy') ||
|
|
41
|
+
heading.includes('vercel') ||
|
|
42
|
+
heading.includes('ci/cd') ||
|
|
43
|
+
heading.includes('release')) {
|
|
44
|
+
classification = 'on-demand';
|
|
45
|
+
suggestedFile = 'docs/ai/deployment.md';
|
|
46
|
+
reason = 'Contains deployment steps, environments, or release workflows which are only needed during releases.';
|
|
47
|
+
}
|
|
48
|
+
else if (heading.includes('nextjs') ||
|
|
49
|
+
heading.includes('next.js') ||
|
|
50
|
+
heading.includes('react') ||
|
|
51
|
+
heading.includes('remix') ||
|
|
52
|
+
heading.includes('frontend') ||
|
|
53
|
+
heading.includes('dashboard')) {
|
|
54
|
+
classification = 'on-demand';
|
|
55
|
+
suggestedFile = 'docs/ai/nextjs.md';
|
|
56
|
+
reason = 'Contains framework-specific UI/Next.js conventions that are only needed when editing web dashboard code.';
|
|
57
|
+
}
|
|
58
|
+
else if (heading.includes('supabase') ||
|
|
59
|
+
heading.includes('database') ||
|
|
60
|
+
heading.includes('prisma') ||
|
|
61
|
+
heading.includes('migration') ||
|
|
62
|
+
heading.includes('sql') ||
|
|
63
|
+
heading.includes('schema')) {
|
|
64
|
+
classification = 'on-demand';
|
|
65
|
+
suggestedFile = 'docs/ai/supabase.md';
|
|
66
|
+
reason = 'Contains database setup or migration steps which are only needed when schema or API boundary changes occur.';
|
|
67
|
+
}
|
|
68
|
+
else if (heading.includes('architecture') ||
|
|
69
|
+
heading.includes('design') ||
|
|
70
|
+
heading.includes('structure') ||
|
|
71
|
+
heading.includes('components')) {
|
|
72
|
+
classification = 'on-demand';
|
|
73
|
+
suggestedFile = 'docs/ai/architecture.md';
|
|
74
|
+
reason = 'Contains repository structure or module descriptions that are only needed when creating new components.';
|
|
75
|
+
}
|
|
76
|
+
else if (heading.includes('troubleshoot') ||
|
|
77
|
+
heading.includes('debug') ||
|
|
78
|
+
heading.includes('error') ||
|
|
79
|
+
heading.includes('issue')) {
|
|
80
|
+
classification = 'on-demand';
|
|
81
|
+
suggestedFile = 'docs/ai/troubleshooting.md';
|
|
82
|
+
reason = 'Contains error codes or troubleshooting procedures only needed when debugging failures.';
|
|
83
|
+
}
|
|
84
|
+
else if (sec.text.includes('```') && sec.text.length > 1500) {
|
|
85
|
+
classification = 'on-demand';
|
|
86
|
+
suggestedFile = 'docs/ai/examples.md';
|
|
87
|
+
reason = 'Contains long code snippets or examples that bloat always-loaded context.';
|
|
88
|
+
}
|
|
89
|
+
// Check Always-load markers
|
|
90
|
+
else if (heading.includes('identity') ||
|
|
91
|
+
heading.includes('about') ||
|
|
92
|
+
heading.includes('purpose') ||
|
|
93
|
+
heading.includes('boundary') ||
|
|
94
|
+
heading.includes('non-goal') ||
|
|
95
|
+
heading.includes('verification') ||
|
|
96
|
+
heading.includes('build') ||
|
|
97
|
+
heading.includes('test') ||
|
|
98
|
+
heading.includes('lint') ||
|
|
99
|
+
heading.includes('typecheck') ||
|
|
100
|
+
heading.includes('safety') ||
|
|
101
|
+
heading.includes('security') ||
|
|
102
|
+
heading.includes('secret') ||
|
|
103
|
+
heading.includes('credential') ||
|
|
104
|
+
heading.includes('auth') ||
|
|
105
|
+
heading.includes('read-before-edit') ||
|
|
106
|
+
heading.includes('scope-control') ||
|
|
107
|
+
heading.includes('honesty') ||
|
|
108
|
+
heading.includes('plan-first')) {
|
|
109
|
+
classification = 'always-load';
|
|
110
|
+
reason = 'Contains core setup, boundary constraints, verification commands, or critical developer practices.';
|
|
111
|
+
}
|
|
112
|
+
if (classification !== 'unknown') {
|
|
113
|
+
classified.push({
|
|
114
|
+
file,
|
|
115
|
+
section: sec,
|
|
116
|
+
classification,
|
|
117
|
+
suggestedFile,
|
|
118
|
+
reason,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const lines = [];
|
|
124
|
+
// ── Cost 2: Context Split & Retrieval Map ────────────────────────────────────
|
|
125
|
+
lines.push('## Context Architecture & Retrieval Map');
|
|
126
|
+
lines.push('');
|
|
127
|
+
lines.push('> [!NOTE]');
|
|
128
|
+
lines.push('> Split large instruction files to keep canonical instructions under the token budget. Move detailed instructions to on-demand documents and link them.');
|
|
129
|
+
lines.push('');
|
|
130
|
+
const onDemand = classified.filter((c) => c.classification === 'on-demand');
|
|
131
|
+
const archive = classified.filter((c) => c.classification === 'archive');
|
|
132
|
+
if (onDemand.length > 0 || archive.length > 0) {
|
|
133
|
+
lines.push('### Suggested Context Splits');
|
|
134
|
+
lines.push('');
|
|
135
|
+
lines.push('| Section / File | Current Size | Classification | Recommendation |');
|
|
136
|
+
lines.push('|---|---|---|---|');
|
|
137
|
+
for (const c of [...onDemand, ...archive]) {
|
|
138
|
+
const loc = `\`${rel(c.file.path)}\` (Heading: *${c.section.heading || 'None'}*)`;
|
|
139
|
+
const size = `~${Math.round(c.section.text.length / 4)} tokens`;
|
|
140
|
+
const target = c.classification === 'archive' ? 'Archive/Remove' : `On-Demand (\`${c.suggestedFile}\`)`;
|
|
141
|
+
lines.push(`| ${loc} | ${size} | **${target}** | ${c.reason} |`);
|
|
142
|
+
}
|
|
143
|
+
lines.push('');
|
|
144
|
+
}
|
|
145
|
+
lines.push('### Suggested Canonical AGENTS.md Layout');
|
|
146
|
+
lines.push('To minimize token consumption, structure your canonical rules as follows:');
|
|
147
|
+
lines.push('```markdown');
|
|
148
|
+
lines.push('# PromptCI - Agent Instructions');
|
|
149
|
+
lines.push('');
|
|
150
|
+
lines.push('## Identity & Boundaries');
|
|
151
|
+
lines.push('- Describe core project limits, tech stack, and non-goals here.');
|
|
152
|
+
lines.push('');
|
|
153
|
+
lines.push('## Verification Loop');
|
|
154
|
+
lines.push('- List exact commands: e.g. `pnpm lint`, `pnpm typecheck`, `pnpm test`.');
|
|
155
|
+
lines.push('');
|
|
156
|
+
lines.push('## References (On-Demand)');
|
|
157
|
+
lines.push('- For deployment details, read [deployment.md](file:///docs/ai/deployment.md).');
|
|
158
|
+
lines.push('- For DB schema, read [supabase.md](file:///docs/ai/supabase.md).');
|
|
159
|
+
lines.push('```');
|
|
160
|
+
lines.push('');
|
|
161
|
+
// ── Cost 5: Skills Readiness & Skill Extraction Recommendations ──────────────
|
|
162
|
+
const proceduralSections = classified.filter((c) => {
|
|
163
|
+
// Check if section is long and contains numbered lists or action bullet points
|
|
164
|
+
const text = c.section.text;
|
|
165
|
+
const linesOfText = text.split('\n');
|
|
166
|
+
const hasNumberedList = linesOfText.some((l) => /^\s*\d+\.\s+[A-Z]/i.test(l));
|
|
167
|
+
const hasImperativeVerbs = linesOfText.some((l) => /^\s*[-*]\s+(Run|Do|Verify|Build|Compile|Deploy|Release|Upgrade|Test|Check|Commit|Push)\b/i.test(l));
|
|
168
|
+
return text.length > 1000 && (hasNumberedList || hasImperativeVerbs);
|
|
169
|
+
});
|
|
170
|
+
if (proceduralSections.length > 0) {
|
|
171
|
+
lines.push('## Skills Readiness & Extraction Recommendations');
|
|
172
|
+
lines.push('');
|
|
173
|
+
lines.push('The following sections describe multi-step procedural workflows. These are excellent candidates to move out of instruction files into reusable local playbooks or skills to save persistent context tokens:');
|
|
174
|
+
lines.push('');
|
|
175
|
+
for (const c of proceduralSections) {
|
|
176
|
+
const heading = c.section.heading || 'Workflow';
|
|
177
|
+
let skillName = `custom-playbook-${c.section.id}`;
|
|
178
|
+
let trigger = `When executing specialized tasks related to ${heading}`;
|
|
179
|
+
const lowerHeading = heading.toLowerCase();
|
|
180
|
+
if (lowerHeading.includes('deploy') || lowerHeading.includes('release')) {
|
|
181
|
+
skillName = 'deployment-runbook';
|
|
182
|
+
trigger = 'Before running a deployment, release, or publishing builds';
|
|
183
|
+
}
|
|
184
|
+
else if (lowerHeading.includes('supabase') || lowerHeading.includes('migration') || lowerHeading.includes('database')) {
|
|
185
|
+
skillName = 'supabase-migration-workflow';
|
|
186
|
+
trigger = 'When writing or executing database migrations, DDL, or database client code';
|
|
187
|
+
}
|
|
188
|
+
else if (lowerHeading.includes('test') || lowerHeading.includes('ci')) {
|
|
189
|
+
skillName = 'test-and-ci-checklist';
|
|
190
|
+
trigger = 'When verifying build health or running the automated test matrix';
|
|
191
|
+
}
|
|
192
|
+
lines.push(`### Skill Candidate: \`${skillName}\``);
|
|
193
|
+
lines.push(`- **Trigger Condition:** ${trigger}`);
|
|
194
|
+
lines.push(`- **Source Section:** \`${rel(c.file.path)}\` (Section: *${heading}*)`);
|
|
195
|
+
lines.push(`- **Savings Potential:** ~${Math.round(c.section.text.length / 4)} tokens per session`);
|
|
196
|
+
lines.push(`- **Action:** Extract the procedural checklist into a file like \`docs/skills/${skillName}.md\` and add a single trigger rule in AGENTS.md.`);
|
|
197
|
+
lines.push('');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const roiList = [];
|
|
201
|
+
for (const c of classified) {
|
|
202
|
+
const tokens = Math.round(c.section.text.length / 4);
|
|
203
|
+
if (tokens < 100)
|
|
204
|
+
continue; // skip small ones
|
|
205
|
+
let multiplier = 1.0;
|
|
206
|
+
let action = 'Archive or remove';
|
|
207
|
+
if (c.classification === 'archive') {
|
|
208
|
+
multiplier = 2.0;
|
|
209
|
+
action = 'Remove completely or move to archive/';
|
|
210
|
+
}
|
|
211
|
+
else if (c.classification === 'on-demand') {
|
|
212
|
+
multiplier = 1.5;
|
|
213
|
+
action = `Extract to on-demand doc (\`${c.suggestedFile}\`)`;
|
|
214
|
+
}
|
|
215
|
+
else if (c.classification === 'always-load') {
|
|
216
|
+
multiplier = 0.5;
|
|
217
|
+
action = 'Trim details or move examples out';
|
|
218
|
+
}
|
|
219
|
+
// Reduce multiplier if it contains highly critical rules (value signals)
|
|
220
|
+
const textLower = c.section.text.toLowerCase();
|
|
221
|
+
const hasCriticalGuidance = textLower.includes('verification') ||
|
|
222
|
+
textLower.includes('honesty') ||
|
|
223
|
+
textLower.includes('read-before-edit') ||
|
|
224
|
+
textLower.includes('scope-control') ||
|
|
225
|
+
textLower.includes('security') ||
|
|
226
|
+
textLower.includes('safety') ||
|
|
227
|
+
textLower.includes('plan-first');
|
|
228
|
+
if (hasCriticalGuidance) {
|
|
229
|
+
if (c.classification === 'always-load') {
|
|
230
|
+
// Skip highly critical always-loaded rules from cleanup list entirely
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
multiplier *= 0.5; // Lower cleanup priority for other sections containing critical text
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Increase multiplier for cost signals (volatile content, long code blocks, duplicates)
|
|
238
|
+
// Volatile content check (timestamps, dates, active task/branch notes)
|
|
239
|
+
const hasVolatile = /\b(?:last\s+updated|generated\s+at|timestamp|current\s+branch|active\s+task|health\s+score)\b/i.test(c.section.text) ||
|
|
240
|
+
/\b(?:202\d-\d{2}-\d{2}|[0-2]?\d:[0-5]\d:[0-5]\d)\b/.test(c.section.text);
|
|
241
|
+
if (hasVolatile) {
|
|
242
|
+
multiplier += 0.5;
|
|
243
|
+
}
|
|
244
|
+
// Long code blocks / examples check:
|
|
245
|
+
if (c.section.text.includes('```') && c.section.text.length > 2000) {
|
|
246
|
+
multiplier += 0.5;
|
|
247
|
+
}
|
|
248
|
+
// Duplicated section check:
|
|
249
|
+
const isDuplicate = report.issues.some((i) => i.category === 'duplicate' && i.filePaths.includes(c.file.path));
|
|
250
|
+
if (isDuplicate) {
|
|
251
|
+
multiplier += 0.5;
|
|
252
|
+
}
|
|
253
|
+
roiList.push({
|
|
254
|
+
name: `\`${rel(c.file.path)}\` (Section: *${c.section.heading || 'None'}*)`,
|
|
255
|
+
tokens,
|
|
256
|
+
savingsPotential: tokens * multiplier,
|
|
257
|
+
reason: c.reason,
|
|
258
|
+
action,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
const sortedRoi = roiList.sort((a, b) => b.savingsPotential - a.savingsPotential).slice(0, 3);
|
|
262
|
+
if (sortedRoi.length > 0) {
|
|
263
|
+
lines.push('## Context ROI Ranking (Cleanup Opportunities)');
|
|
264
|
+
lines.push('');
|
|
265
|
+
lines.push('Prioritized list of instruction sections to clean up, refactor, or extract to maximize token savings:');
|
|
266
|
+
lines.push('');
|
|
267
|
+
lines.push('| Rank | Section / File | Token Size | Savings Potential | Suggested Action | Why? |');
|
|
268
|
+
lines.push('|---|---|---|---|---|---|');
|
|
269
|
+
sortedRoi.forEach((item, idx) => {
|
|
270
|
+
const rank = idx + 1;
|
|
271
|
+
lines.push(`| ${rank} | ${item.name} | ~${item.tokens} | High | ${item.action} | ${item.reason} |`);
|
|
272
|
+
});
|
|
273
|
+
lines.push('');
|
|
274
|
+
}
|
|
275
|
+
// ── Cost 11: Task-Specific Context Pack Suggestions ──────────────────────────
|
|
276
|
+
// Check repo signals
|
|
277
|
+
const hasSupabase = report.repoPath && (existsSync(path.join(report.repoPath, 'supabase')) ||
|
|
278
|
+
filesScanned.some((f) => f.path.endsWith('package.json') && f.content.includes('@supabase/supabase-js')));
|
|
279
|
+
const hasCli = filesScanned.some((f) => f.path.includes('packages/cli') || f.path.includes('apps/cli'));
|
|
280
|
+
const hasWeb = filesScanned.some((f) => f.path.includes('packages/web') || f.path.includes('apps/web'));
|
|
281
|
+
const hasNextJs = filesScanned.some((f) => /next/i.test(f.content));
|
|
282
|
+
const packs = [];
|
|
283
|
+
if (hasSupabase) {
|
|
284
|
+
packs.push({
|
|
285
|
+
name: '`supabase-auth-and-upload`',
|
|
286
|
+
source: 'Supabase schema and client config rules',
|
|
287
|
+
whenToLoad: 'When altering database schemas, migrations, security triggers, or upload APIs.',
|
|
288
|
+
savings: 'Avoids loading database structures for standard frontend/backend edits.',
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
if (hasCli) {
|
|
292
|
+
packs.push({
|
|
293
|
+
name: '`cli-command-workflow`',
|
|
294
|
+
source: 'CLI entrypoints and argument parsers instructions',
|
|
295
|
+
whenToLoad: 'When changing CLI flags, command syntax, or command handlers.',
|
|
296
|
+
savings: 'Keeps command parsing logic out of web dashboard and core development runs.',
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
if (hasWeb || hasNextJs) {
|
|
300
|
+
packs.push({
|
|
301
|
+
name: '`web-dashboard-development`',
|
|
302
|
+
source: 'Next.js components, page routes, and middleware rules',
|
|
303
|
+
whenToLoad: 'When building UI dashboard layouts, state management, or styling components.',
|
|
304
|
+
savings: 'Keeps CSS and layout instructions out of core engines and CLI builds.',
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
if (classified.some((c) => c.classification === 'on-demand' && c.suggestedFile === 'docs/ai/deployment.md')) {
|
|
308
|
+
packs.push({
|
|
309
|
+
name: '`deployment-and-ci`',
|
|
310
|
+
source: 'Vercel, CI/CD, and release commands checklists',
|
|
311
|
+
whenToLoad: 'When debugging GitHub Actions workflows or preparing production releases.',
|
|
312
|
+
savings: 'Keeps long validation check scripts out of the standard iteration loop.',
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
if (packs.length > 0) {
|
|
316
|
+
lines.push('## Suggested Context Packs');
|
|
317
|
+
lines.push('');
|
|
318
|
+
lines.push('Consider defining task-specific context bundles so agents only load rules relevant to their active focus area:');
|
|
319
|
+
lines.push('');
|
|
320
|
+
lines.push('| Pack Name | Source Sections | When to Load | Token Benefit |');
|
|
321
|
+
lines.push('|---|---|---|---|');
|
|
322
|
+
for (const p of packs) {
|
|
323
|
+
lines.push(`| ${p.name} | ${p.source} | ${p.whenToLoad} | ${p.savings} |`);
|
|
324
|
+
}
|
|
325
|
+
lines.push('');
|
|
326
|
+
}
|
|
327
|
+
return lines.join('\n');
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=context-recommender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-recommender.js","sourceRoot":"","sources":["../src/context-recommender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dead-reference detector for PromptCI.
|
|
3
|
+
*
|
|
4
|
+
* Scans instruction files for references to other local files and flags
|
|
5
|
+
* ones that don't exist on disk. Catches:
|
|
6
|
+
* - Markdown links: [text](./path/to/file.md)
|
|
7
|
+
* - Reference-style links: [text][ref] with a `[ref]: path` definition
|
|
8
|
+
* - @-file refs: @AGENTS.md | @docs/guide.md
|
|
9
|
+
*
|
|
10
|
+
* External URLs (http/https), anchor-only links (#section), and mailto:
|
|
11
|
+
* are always skipped. Only paths with a recognisable file extension are
|
|
12
|
+
* checked to avoid false-positiving on badge shields, npm package names, etc.
|
|
13
|
+
*
|
|
14
|
+
* Findings are heuristic — wording is intentionally cautious.
|
|
15
|
+
*/
|
|
16
|
+
import type { InstructionFile, PromptCiIssue } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Detect broken file references across all instruction files.
|
|
19
|
+
*
|
|
20
|
+
* @param files Instruction files to scan.
|
|
21
|
+
* @param repoRoot Absolute path to repo root — used as a second resolution base.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* BUG-004 / BUG-005: Group all unresolved references by their normalised path so
|
|
25
|
+
* that the same dead reference appearing in multiple instruction files produces ONE
|
|
26
|
+
* consolidated issue (listing all referencing files) instead of N separate issues.
|
|
27
|
+
*
|
|
28
|
+
* Previously each (filePath, ref) pair produced its own issue — a single dead path
|
|
29
|
+
* referenced in both CLAUDE.md and AGENTS.md would fire twice, inflating issue counts
|
|
30
|
+
* and health-score penalties.
|
|
31
|
+
*/
|
|
32
|
+
export declare function detectDeadReferences(files: InstructionFile[], repoRoot: string): PromptCiIssue[];
|
|
33
|
+
//# sourceMappingURL=dead-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dead-references.d.ts","sourceRoot":"","sources":["../src/dead-references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0jBjE;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EAAE,EACxB,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,CAgGjB"}
|