repoburg 1.3.213 → 1.3.214
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/backend/dist/src/slash-commands/slash-commands.service.d.ts +8 -0
- package/backend/dist/src/slash-commands/slash-commands.service.js +70 -5
- package/backend/dist/src/slash-commands/slash-commands.service.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -9,15 +9,23 @@ export interface SlashCommandSummary {
|
|
|
9
9
|
description?: string;
|
|
10
10
|
argument_hint?: string;
|
|
11
11
|
}
|
|
12
|
+
export interface SkillSummary {
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
}
|
|
12
16
|
export declare class SlashCommandsService {
|
|
13
17
|
private readonly logger;
|
|
18
|
+
private projectPath;
|
|
14
19
|
private commandsDir;
|
|
20
|
+
private skillsDir;
|
|
15
21
|
list(): Promise<SlashCommandSummary[]>;
|
|
16
22
|
tryExpand(prompt: string): Promise<string | null>;
|
|
23
|
+
private findBuiltin;
|
|
17
24
|
findByName(name: string): Promise<SlashCommandDefinition | null>;
|
|
18
25
|
private substitute;
|
|
19
26
|
private tokenizeArgs;
|
|
20
27
|
private loadAll;
|
|
28
|
+
private loadSkills;
|
|
21
29
|
private readHint;
|
|
22
30
|
private parseFile;
|
|
23
31
|
}
|
|
@@ -12,29 +12,52 @@ const common_1 = require("@nestjs/common");
|
|
|
12
12
|
const fs = require("fs");
|
|
13
13
|
const path = require("path");
|
|
14
14
|
const yaml = require("js-yaml");
|
|
15
|
+
const BUILTIN_COMMANDS = [
|
|
16
|
+
{
|
|
17
|
+
name: 'compact',
|
|
18
|
+
description: 'Compress session context by replacing old messages with structured summaries',
|
|
19
|
+
body: '!compress-with-summary',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
const BUILTIN_NAMES = new Set(BUILTIN_COMMANDS.map((c) => c.name));
|
|
15
23
|
const NAME_REGEX = /^[a-z0-9][a-z0-9-]*$/;
|
|
16
24
|
let SlashCommandsService = SlashCommandsService_1 = class SlashCommandsService {
|
|
17
25
|
constructor() {
|
|
18
26
|
this.logger = new common_1.Logger(SlashCommandsService_1.name);
|
|
19
27
|
}
|
|
28
|
+
projectPath() {
|
|
29
|
+
return process.env.REPOBURG_PROJECT_PATH || process.cwd();
|
|
30
|
+
}
|
|
20
31
|
commandsDir() {
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
return path.join(this.projectPath(), '.repoburg', 'commands');
|
|
33
|
+
}
|
|
34
|
+
skillsDir() {
|
|
35
|
+
return path.join(this.projectPath(), '.repoburg', 'skills');
|
|
23
36
|
}
|
|
24
37
|
async list() {
|
|
25
|
-
const
|
|
26
|
-
return commands.map((c) => ({
|
|
38
|
+
const builtins = BUILTIN_COMMANDS.map((c) => ({
|
|
27
39
|
name: c.name,
|
|
28
40
|
description: c.description,
|
|
29
41
|
argument_hint: c.argumentHint,
|
|
30
42
|
}));
|
|
43
|
+
const fileCommands = await this.loadAll();
|
|
44
|
+
const commandSummaries = [
|
|
45
|
+
...builtins,
|
|
46
|
+
...fileCommands.map((c) => ({
|
|
47
|
+
name: c.name,
|
|
48
|
+
description: c.description,
|
|
49
|
+
argument_hint: c.argumentHint,
|
|
50
|
+
})),
|
|
51
|
+
];
|
|
52
|
+
const skills = await this.loadSkills(new Set(commandSummaries.map((c) => c.name)));
|
|
53
|
+
return [...commandSummaries, ...skills];
|
|
31
54
|
}
|
|
32
55
|
async tryExpand(prompt) {
|
|
33
56
|
const match = prompt.match(/^\/([a-z0-9][a-z0-9-]*)\s*([\s\S]*)$/);
|
|
34
57
|
if (!match) {
|
|
35
58
|
return null;
|
|
36
59
|
}
|
|
37
|
-
const command = await this.findByName(match[1]);
|
|
60
|
+
const command = this.findBuiltin(match[1]) ?? (await this.findByName(match[1]));
|
|
38
61
|
if (!command) {
|
|
39
62
|
return null;
|
|
40
63
|
}
|
|
@@ -42,6 +65,9 @@ let SlashCommandsService = SlashCommandsService_1 = class SlashCommandsService {
|
|
|
42
65
|
this.logger.log(`Expanding slash command "/${command.name}"`);
|
|
43
66
|
return this.substitute(command.body, args);
|
|
44
67
|
}
|
|
68
|
+
findBuiltin(name) {
|
|
69
|
+
return BUILTIN_COMMANDS.find((c) => c.name === name) ?? null;
|
|
70
|
+
}
|
|
45
71
|
async findByName(name) {
|
|
46
72
|
const commands = await this.loadAll();
|
|
47
73
|
return commands.find((c) => c.name === name) ?? null;
|
|
@@ -84,6 +110,10 @@ let SlashCommandsService = SlashCommandsService_1 = class SlashCommandsService {
|
|
|
84
110
|
this.logger.warn(`Skipping "${file}": command name must be kebab-case (a-z, 0-9, -).`);
|
|
85
111
|
continue;
|
|
86
112
|
}
|
|
113
|
+
if (BUILTIN_NAMES.has(name)) {
|
|
114
|
+
this.logger.warn(`Skipping "${file}": a built-in command named "/${name}" already exists.`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
87
117
|
try {
|
|
88
118
|
const raw = await fs.promises.readFile(path.join(dir, file), 'utf-8');
|
|
89
119
|
const parsed = this.parseFile(raw);
|
|
@@ -102,6 +132,41 @@ let SlashCommandsService = SlashCommandsService_1 = class SlashCommandsService {
|
|
|
102
132
|
}
|
|
103
133
|
return commands;
|
|
104
134
|
}
|
|
135
|
+
async loadSkills(takenNames) {
|
|
136
|
+
let entries;
|
|
137
|
+
try {
|
|
138
|
+
entries = await fs.promises.readdir(this.skillsDir(), {
|
|
139
|
+
withFileTypes: true,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
const skills = [];
|
|
146
|
+
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
147
|
+
if (!entry.isDirectory() || !NAME_REGEX.test(entry.name)) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (takenNames.has(entry.name)) {
|
|
151
|
+
this.logger.warn(`Skipping skill "${entry.name}": a slash command with this name already exists.`);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
const raw = await fs.promises.readFile(path.join(this.skillsDir(), entry.name, 'SKILL.md'), 'utf-8');
|
|
156
|
+
const parsed = this.parseFile(raw);
|
|
157
|
+
skills.push({
|
|
158
|
+
name: entry.name,
|
|
159
|
+
description: typeof parsed.frontmatter?.description === 'string'
|
|
160
|
+
? parsed.frontmatter.description
|
|
161
|
+
: undefined,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.logger.warn(`Skipping skill "${entry.name}": could not read SKILL.md (${error.message}).`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return skills;
|
|
169
|
+
}
|
|
105
170
|
readHint(value) {
|
|
106
171
|
if (typeof value === 'string') {
|
|
107
172
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.service.js","sourceRoot":"","sources":["../../../src/slash-commands/slash-commands.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,yBAAyB;AACzB,6BAA6B;AAC7B,gCAAgC;
|
|
1
|
+
{"version":3,"file":"slash-commands.service.js","sourceRoot":"","sources":["../../../src/slash-commands/slash-commands.service.ts"],"names":[],"mappings":"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"}
|