MCPcopy
hub / github.com/continuedev/continue / RulesContextProvider

Class RulesContextProvider

core/context/providers/RulesContextProvider.ts:11–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9 RuleWithSource,
10} from "../..";
11class RulesContextProvider extends BaseContextProvider {
12 static description: ContextProviderDescription = {
13 title: "rules",
14 displayTitle: "Rules",
15 description: "Mention rules files",
16 type: "submenu",
17 renderInlineAs: "",
18 };
19
20 // This is only used within this class. Worst case if there are exact duplicates is that one always calls the other, but this is an extreme edge case
21 // Can eventually pull in more metadata, but this is experimental
22 private getIdFromRule(rule: RuleWithSource): string {
23 return rule.slug ?? rule.sourceFile ?? rule.name ?? rule.rule;
24 }
25
26 private getNameFromRule(rule: RuleWithSource): string {
27 return rule.name ?? rule.slug ?? rule.sourceFile ?? rule.source;
28 }
29
30 private getDescriptionFromRule(rule: RuleWithSource): string {
31 return rule.description ?? rule.name ?? "";
32 }
33
34 private getUriFromRule(rule: RuleWithSource): ContextItemUri | undefined {
35 if (rule.sourceFile) {
36 return {
37 type: "file",
38 value: rule.sourceFile,
39 };
40 }
41
42 return undefined;
43 }
44
45 async getContextItems(
46 query: string,
47 extras: ContextProviderExtras,
48 ): Promise<ContextItem[]> {
49 const rule = extras.config.rules.find(
50 (rule) => this.getIdFromRule(rule) === query,
51 );
52 if (!rule) {
53 return [];
54 }
55
56 return [
57 {
58 name: this.getNameFromRule(rule),
59 content: rule.rule,
60 description: this.getDescriptionFromRule(rule),
61 uri: this.getUriFromRule(rule),
62 },
63 ];
64 }
65
66 async loadSubmenuItems(
67 args: LoadSubmenuItemsArgs,
68 ): Promise<ContextSubmenuItem[]> {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected