repoburg 1.3.212 → 1.3.213
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/agent-pane/backend/dist/index.js +18 -0
- package/agent-pane/backend/dist/server.js +18 -0
- package/backend/dist/src/app.module.js +2 -0
- package/backend/dist/src/app.module.js.map +1 -1
- package/backend/dist/src/session-inputs/session-input-context.service.d.ts +3 -1
- package/backend/dist/src/session-inputs/session-input-context.service.js +25 -7
- package/backend/dist/src/session-inputs/session-input-context.service.js.map +1 -1
- package/backend/dist/src/session-inputs/session-inputs.module.js +2 -0
- package/backend/dist/src/session-inputs/session-inputs.module.js.map +1 -1
- package/backend/dist/src/slash-commands/slash-commands.controller.d.ts +10 -0
- package/backend/dist/src/slash-commands/slash-commands.controller.js +37 -0
- package/backend/dist/src/slash-commands/slash-commands.controller.js.map +1 -0
- package/backend/dist/src/slash-commands/slash-commands.module.d.ts +2 -0
- package/backend/dist/src/slash-commands/slash-commands.module.js +23 -0
- package/backend/dist/src/slash-commands/slash-commands.module.js.map +1 -0
- package/backend/dist/src/slash-commands/slash-commands.service.d.ts +23 -0
- package/backend/dist/src/slash-commands/slash-commands.service.js +136 -0
- package/backend/dist/src/slash-commands/slash-commands.service.js.map +1 -0
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/backend/package.json +2 -0
- package/package.json +1 -1
- package/visual-editor-proxy/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -44044,6 +44044,9 @@ var RepoburgHttpClient = class {
|
|
|
44044
44044
|
const result = await this.request("GET", "/llm-provider/models");
|
|
44045
44045
|
return result.models ?? [];
|
|
44046
44046
|
}
|
|
44047
|
+
async getSlashCommands() {
|
|
44048
|
+
return this.request("GET", "/slash-commands");
|
|
44049
|
+
}
|
|
44047
44050
|
};
|
|
44048
44051
|
|
|
44049
44052
|
// src/repoburg/backend-resolver.ts
|
|
@@ -45367,6 +45370,20 @@ async function getModels3() {
|
|
|
45367
45370
|
return [];
|
|
45368
45371
|
}
|
|
45369
45372
|
}
|
|
45373
|
+
async function getCommands2() {
|
|
45374
|
+
try {
|
|
45375
|
+
const resolved = await resolveBackendUrl(process.cwd(), { autoStart: false });
|
|
45376
|
+
if (!resolved) return [];
|
|
45377
|
+
const commands = await new RepoburgHttpClient(resolved.baseUrl).getSlashCommands();
|
|
45378
|
+
return commands.map((c) => ({
|
|
45379
|
+
name: c.name,
|
|
45380
|
+
description: c.description ?? "",
|
|
45381
|
+
argumentHint: c.argument_hint
|
|
45382
|
+
}));
|
|
45383
|
+
} catch {
|
|
45384
|
+
return [];
|
|
45385
|
+
}
|
|
45386
|
+
}
|
|
45370
45387
|
async function shutdown3() {
|
|
45371
45388
|
clearAllThreads3();
|
|
45372
45389
|
}
|
|
@@ -45377,6 +45394,7 @@ var repoburgProvider = {
|
|
|
45377
45394
|
clearThreadBranch: clearThreadBranch2,
|
|
45378
45395
|
clearAllThreads: clearAllThreads3,
|
|
45379
45396
|
getModels: getModels3,
|
|
45397
|
+
getCommands: getCommands2,
|
|
45380
45398
|
rewindRuntime,
|
|
45381
45399
|
forkSession,
|
|
45382
45400
|
shutdown: shutdown3
|
|
@@ -44031,6 +44031,9 @@ var RepoburgHttpClient = class {
|
|
|
44031
44031
|
const result = await this.request("GET", "/llm-provider/models");
|
|
44032
44032
|
return result.models ?? [];
|
|
44033
44033
|
}
|
|
44034
|
+
async getSlashCommands() {
|
|
44035
|
+
return this.request("GET", "/slash-commands");
|
|
44036
|
+
}
|
|
44034
44037
|
};
|
|
44035
44038
|
|
|
44036
44039
|
// src/repoburg/backend-resolver.ts
|
|
@@ -45354,6 +45357,20 @@ async function getModels3() {
|
|
|
45354
45357
|
return [];
|
|
45355
45358
|
}
|
|
45356
45359
|
}
|
|
45360
|
+
async function getCommands2() {
|
|
45361
|
+
try {
|
|
45362
|
+
const resolved = await resolveBackendUrl(process.cwd(), { autoStart: false });
|
|
45363
|
+
if (!resolved) return [];
|
|
45364
|
+
const commands = await new RepoburgHttpClient(resolved.baseUrl).getSlashCommands();
|
|
45365
|
+
return commands.map((c) => ({
|
|
45366
|
+
name: c.name,
|
|
45367
|
+
description: c.description ?? "",
|
|
45368
|
+
argumentHint: c.argument_hint
|
|
45369
|
+
}));
|
|
45370
|
+
} catch {
|
|
45371
|
+
return [];
|
|
45372
|
+
}
|
|
45373
|
+
}
|
|
45357
45374
|
async function shutdown3() {
|
|
45358
45375
|
clearAllThreads3();
|
|
45359
45376
|
}
|
|
@@ -45364,6 +45381,7 @@ var repoburgProvider = {
|
|
|
45364
45381
|
clearThreadBranch: clearThreadBranch2,
|
|
45365
45382
|
clearAllThreads: clearAllThreads3,
|
|
45366
45383
|
getModels: getModels3,
|
|
45384
|
+
getCommands: getCommands2,
|
|
45367
45385
|
rewindRuntime,
|
|
45368
45386
|
forkSession,
|
|
45369
45387
|
shutdown: shutdown3
|
|
@@ -46,6 +46,7 @@ const agents_module_1 = require("./agents/agents.module");
|
|
|
46
46
|
const mcp_server_module_1 = require("./mcp-server/mcp-server.module");
|
|
47
47
|
const marketplace_module_1 = require("./mcp/marketplace/marketplace.module");
|
|
48
48
|
const agent_runtime_module_1 = require("./agent-runtime/agent-runtime.module");
|
|
49
|
+
const slash_commands_module_1 = require("./slash-commands/slash-commands.module");
|
|
49
50
|
let dbPath = ':memory:';
|
|
50
51
|
if (process.env.NODE_ENV === 'production') {
|
|
51
52
|
const projectPath = process.env.REPOBURG_PROJECT_PATH || process.cwd();
|
|
@@ -119,6 +120,7 @@ exports.AppModule = AppModule = __decorate([
|
|
|
119
120
|
mcp_server_module_1.McpServerModule,
|
|
120
121
|
marketplace_module_1.MarketplaceModule,
|
|
121
122
|
agent_runtime_module_1.AgentRuntimeModule,
|
|
123
|
+
slash_commands_module_1.SlashCommandsModule,
|
|
122
124
|
],
|
|
123
125
|
controllers: [app_controller_1.AppController],
|
|
124
126
|
providers: [app_service_1.AppService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,6CAAgD;AAChD,mDAgByB;AACzB,oEAAyD;AACzD,mDAAwC;AACxC,gEAA4D;AAC5D,gEAA4D;AAC5D,kFAA6E;AAC7E,sEAAiE;AACjE,kFAA6E;AAC7E,2FAAsF;AACtF,8FAAyF;AACzF,kFAA6E;AAC7E,6DAAyD;AACzD,mEAA+D;AAC/D,qFAAgF;AAChF,6BAA6B;AAC7B,yBAAyB;AACzB,wFAAmF;AACnF,wFAAmF;AACnF,2FAAsF;AACtF,+EAA0E;AAC1E,0DAAsD;AACtD,wFAAmF;AACnF,gEAAuE;AACvE,iDAA6C;AAC7C,+EAA0E;AAC1E,wFAAmF;AACnF,sEAAiE;AACjE,yEAAoE;AACpE,wFAAmF;AACnF,+EAAyE;AACzE,+EAA0E;AAC1E,0DAAsD;AACtD,sEAAiE;AACjE,6EAAyE;AACzE,+EAA0E;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,16 @@ import { CreateSessionInputDto } from './dto/session-input.dto';
|
|
|
3
3
|
import { ContextGenerationService } from '../context-generation/context-generation.service';
|
|
4
4
|
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
5
5
|
import { ContextSnippetsService } from '../context-snippets/context-snippets.service';
|
|
6
|
+
import { SlashCommandsService } from '../slash-commands/slash-commands.service';
|
|
6
7
|
import { CustomVariablesService } from '../custom-variables/custom-variables.service';
|
|
7
8
|
export declare class SessionInputContextService {
|
|
8
9
|
private readonly contextGenerationService;
|
|
9
10
|
private readonly applicationStateService;
|
|
10
11
|
private readonly contextSnippetsService;
|
|
12
|
+
private readonly slashCommandsService;
|
|
11
13
|
private readonly customVariablesService;
|
|
12
14
|
private readonly logger;
|
|
13
|
-
constructor(contextGenerationService: ContextGenerationService, applicationStateService: ApplicationStateService, contextSnippetsService: ContextSnippetsService, customVariablesService: CustomVariablesService);
|
|
15
|
+
constructor(contextGenerationService: ContextGenerationService, applicationStateService: ApplicationStateService, contextSnippetsService: ContextSnippetsService, slashCommandsService: SlashCommandsService, customVariablesService: CustomVariablesService);
|
|
14
16
|
private resolveContextSnippets;
|
|
15
17
|
generateContext(dto: CreateSessionInputDto, contextTemplate: ContextTemplate | null, previousActionsSummary?: string): Promise<string>;
|
|
16
18
|
}
|
|
@@ -15,13 +15,15 @@ const common_1 = require("@nestjs/common");
|
|
|
15
15
|
const context_generation_service_1 = require("../context-generation/context-generation.service");
|
|
16
16
|
const application_state_service_1 = require("../application-state/application-state.service");
|
|
17
17
|
const context_snippets_service_1 = require("../context-snippets/context-snippets.service");
|
|
18
|
+
const slash_commands_service_1 = require("../slash-commands/slash-commands.service");
|
|
18
19
|
const gpt_tokenizer_1 = require("gpt-tokenizer");
|
|
19
20
|
const custom_variables_service_1 = require("../custom-variables/custom-variables.service");
|
|
20
21
|
let SessionInputContextService = SessionInputContextService_1 = class SessionInputContextService {
|
|
21
|
-
constructor(contextGenerationService, applicationStateService, contextSnippetsService, customVariablesService) {
|
|
22
|
+
constructor(contextGenerationService, applicationStateService, contextSnippetsService, slashCommandsService, customVariablesService) {
|
|
22
23
|
this.contextGenerationService = contextGenerationService;
|
|
23
24
|
this.applicationStateService = applicationStateService;
|
|
24
25
|
this.contextSnippetsService = contextSnippetsService;
|
|
26
|
+
this.slashCommandsService = slashCommandsService;
|
|
25
27
|
this.customVariablesService = customVariablesService;
|
|
26
28
|
this.logger = new common_1.Logger(SessionInputContextService_1.name);
|
|
27
29
|
}
|
|
@@ -55,8 +57,23 @@ let SessionInputContextService = SessionInputContextService_1 = class SessionInp
|
|
|
55
57
|
};
|
|
56
58
|
}
|
|
57
59
|
async generateContext(dto, contextTemplate, previousActionsSummary) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
let effectivePrompt = dto.user_prompt;
|
|
61
|
+
let slashExpanded = false;
|
|
62
|
+
try {
|
|
63
|
+
const expanded = await this.slashCommandsService.tryExpand(dto.user_prompt);
|
|
64
|
+
if (expanded !== null) {
|
|
65
|
+
effectivePrompt = expanded;
|
|
66
|
+
slashExpanded = true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.logger.error(`Slash command expansion failed: ${error.message}`);
|
|
71
|
+
}
|
|
72
|
+
const { resolvedContent: context_snippets_content, cleanedPrompt } = await this.resolveContextSnippets(effectivePrompt);
|
|
73
|
+
const userInput = cleanedPrompt;
|
|
74
|
+
if (!slashExpanded) {
|
|
75
|
+
dto.user_prompt = cleanedPrompt;
|
|
76
|
+
}
|
|
60
77
|
this.logger.log(`Generating context. Template: ${contextTemplate?.template_name || 'None'}. Ad-hoc: ${!!dto.ad_hoc_context_definition}. Snippets: ${context_snippets_content.length > 0 ? 'Yes' : 'No'}.`);
|
|
61
78
|
const defaultTemplate = `<%~ it.context_snippets_content %>
|
|
62
79
|
|
|
@@ -70,7 +87,7 @@ let SessionInputContextService = SessionInputContextService_1 = class SessionInp
|
|
|
70
87
|
const templateContent = contextTemplate?.template_content ?? defaultTemplate;
|
|
71
88
|
if (templateContent.trim() === '') {
|
|
72
89
|
this.logger.warn('Context template is empty. Using only the user prompt.');
|
|
73
|
-
return
|
|
90
|
+
return userInput;
|
|
74
91
|
}
|
|
75
92
|
const adHocData = {
|
|
76
93
|
adhoc_files_content: '',
|
|
@@ -132,7 +149,7 @@ let SessionInputContextService = SessionInputContextService_1 = class SessionInp
|
|
|
132
149
|
}, {});
|
|
133
150
|
const data = {
|
|
134
151
|
ad_hoc_context_definition: dto.ad_hoc_context_definition || null,
|
|
135
|
-
user_input:
|
|
152
|
+
user_input: userInput,
|
|
136
153
|
user_prev_action: previousActionsSummary || '',
|
|
137
154
|
context_snippets_content,
|
|
138
155
|
...adHocData,
|
|
@@ -150,8 +167,8 @@ let SessionInputContextService = SessionInputContextService_1 = class SessionInp
|
|
|
150
167
|
if (!templateContent.includes('it.user_input')) {
|
|
151
168
|
this.logger.warn("Template does not explicitly use 'it.user_input'. Appending user prompt to the end.");
|
|
152
169
|
return generatedString.trim()
|
|
153
|
-
? `${generatedString}\n\n${
|
|
154
|
-
:
|
|
170
|
+
? `${generatedString}\n\n${userInput}`
|
|
171
|
+
: userInput;
|
|
155
172
|
}
|
|
156
173
|
this.logger.log(`Generated context string of length ${generatedString.length} (${tokenCount} tokens)`);
|
|
157
174
|
return generatedString;
|
|
@@ -168,6 +185,7 @@ exports.SessionInputContextService = SessionInputContextService = SessionInputCo
|
|
|
168
185
|
__metadata("design:paramtypes", [context_generation_service_1.ContextGenerationService,
|
|
169
186
|
application_state_service_1.ApplicationStateService,
|
|
170
187
|
context_snippets_service_1.ContextSnippetsService,
|
|
188
|
+
slash_commands_service_1.SlashCommandsService,
|
|
171
189
|
custom_variables_service_1.CustomVariablesService])
|
|
172
190
|
], SessionInputContextService);
|
|
173
191
|
//# sourceMappingURL=session-input-context.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-input-context.service.js","sourceRoot":"","sources":["../../../src/session-inputs/session-input-context.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyE;AAGzE,iGAA4F;AAC5F,8FAAyF;AACzF,2FAAsF;AACtF,iDAA4C;AAC5C,2FAAsF;AAQ/E,IAAM,0BAA0B,kCAAhC,MAAM,0BAA0B;IAGrC,YACmB,wBAAkD,EAClD,uBAAgD,EAChD,sBAA8C,EAC9C,sBAA8C;
|
|
1
|
+
{"version":3,"file":"session-input-context.service.js","sourceRoot":"","sources":["../../../src/session-inputs/session-input-context.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ const llm_provider_module_1 = require("../llm-provider/llm-provider.module");
|
|
|
23
23
|
const chat_module_1 = require("../interactive-chat/chat.module");
|
|
24
24
|
const llm_responses_module_1 = require("../llm-responses/llm-responses.module");
|
|
25
25
|
const custom_variables_module_1 = require("../custom-variables/custom-variables.module");
|
|
26
|
+
const slash_commands_module_1 = require("../slash-commands/slash-commands.module");
|
|
26
27
|
let SessionInputsModule = class SessionInputsModule {
|
|
27
28
|
};
|
|
28
29
|
exports.SessionInputsModule = SessionInputsModule;
|
|
@@ -46,6 +47,7 @@ exports.SessionInputsModule = SessionInputsModule = __decorate([
|
|
|
46
47
|
(0, common_1.forwardRef)(() => chat_module_1.InteractiveChatModule),
|
|
47
48
|
(0, common_1.forwardRef)(() => llm_responses_module_1.LlmResponsesModule),
|
|
48
49
|
custom_variables_module_1.CustomVariablesModule,
|
|
50
|
+
slash_commands_module_1.SlashCommandsModule,
|
|
49
51
|
],
|
|
50
52
|
controllers: [session_inputs_controller_1.SessionInputsController],
|
|
51
53
|
providers: [session_inputs_service_1.SessionInputsService, session_input_context_service_1.SessionInputContextService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-inputs.module.js","sourceRoot":"","sources":["../../../src/session-inputs/session-inputs.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,oDAM0B;AAC1B,qEAAgE;AAChE,2EAAsE;AACtE,uEAAkE;AAClE,+FAA0F;AAC1F,mFAA8E;AAC9E,mFAA6E;AAC7E,4FAAuF;AACvF,2DAAuD;AACvD,yFAAoF;AACpF,6EAAwE;AACxE,iEAAwE;AACxE,gFAA2E;AAC3E,yFAAoF;
|
|
1
|
+
{"version":3,"file":"session-inputs.module.js","sourceRoot":"","sources":["../../../src/session-inputs/session-inputs.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,oDAM0B;AAC1B,qEAAgE;AAChE,2EAAsE;AACtE,uEAAkE;AAClE,+FAA0F;AAC1F,mFAA8E;AAC9E,mFAA6E;AAC7E,4FAAuF;AACvF,2DAAuD;AACvD,yFAAoF;AACpF,6EAAwE;AACxE,iEAAwE;AACxE,gFAA2E;AAC3E,yFAAoF;AACpF,mFAA8E;AA2BvE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAzB/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,uBAAO;gBACP,4BAAY;gBACZ,+BAAe;gBACf,wBAAQ;gBACR,4BAAY;aACb,CAAC;YACF,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAe,CAAC;YACjC,mDAAuB;YACvB,2CAAmB;YACnB,iDAAsB;YACtB,4BAAY;YACZ,+CAAqB;YACrB,uCAAiB;YACjB,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAqB,CAAC;YACvC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yCAAkB,CAAC;YACpC,+CAAqB;YACrB,2CAAmB;SACpB;QACD,WAAW,EAAE,CAAC,mDAAuB,CAAC;QACtC,SAAS,EAAE,CAAC,6CAAoB,EAAE,0DAA0B,CAAC;QAC7D,OAAO,EAAE,CAAC,6CAAoB,EAAE,0DAA0B,CAAC;KAC5D,CAAC;GACW,mBAAmB,CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SlashCommandsService } from './slash-commands.service';
|
|
2
|
+
export declare class SlashCommandsController {
|
|
3
|
+
private readonly slashCommandsService;
|
|
4
|
+
constructor(slashCommandsService: SlashCommandsService);
|
|
5
|
+
list(): Promise<{
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
argument_hint?: string;
|
|
9
|
+
}[]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SlashCommandsController = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
+
const slash_commands_service_1 = require("./slash-commands.service");
|
|
16
|
+
let SlashCommandsController = class SlashCommandsController {
|
|
17
|
+
constructor(slashCommandsService) {
|
|
18
|
+
this.slashCommandsService = slashCommandsService;
|
|
19
|
+
}
|
|
20
|
+
async list() {
|
|
21
|
+
return this.slashCommandsService.list();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.SlashCommandsController = SlashCommandsController;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, common_1.Get)(),
|
|
27
|
+
(0, swagger_1.ApiOperation)({ summary: 'List available slash commands (no bodies)' }),
|
|
28
|
+
__metadata("design:type", Function),
|
|
29
|
+
__metadata("design:paramtypes", []),
|
|
30
|
+
__metadata("design:returntype", Promise)
|
|
31
|
+
], SlashCommandsController.prototype, "list", null);
|
|
32
|
+
exports.SlashCommandsController = SlashCommandsController = __decorate([
|
|
33
|
+
(0, swagger_1.ApiTags)('slash-commands'),
|
|
34
|
+
(0, common_1.Controller)('slash-commands'),
|
|
35
|
+
__metadata("design:paramtypes", [slash_commands_service_1.SlashCommandsService])
|
|
36
|
+
], SlashCommandsController);
|
|
37
|
+
//# sourceMappingURL=slash-commands.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.controller.js","sourceRoot":"","sources":["../../../src/slash-commands/slash-commands.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiD;AACjD,6CAAwD;AACxD,qEAAgE;AAKzD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAAG,CAAC;IAIrE,AAAN,KAAK,CAAC,IAAI;QAGR,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;CACF,CAAA;AAVY,0DAAuB;AAK5B;IAFL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;;;;mDAKtE;kCATU,uBAAuB;IAFnC,IAAA,iBAAO,EAAC,gBAAgB,CAAC;IACzB,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAEwB,6CAAoB;GAD5D,uBAAuB,CAUnC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.SlashCommandsModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const slash_commands_service_1 = require("./slash-commands.service");
|
|
12
|
+
const slash_commands_controller_1 = require("./slash-commands.controller");
|
|
13
|
+
let SlashCommandsModule = class SlashCommandsModule {
|
|
14
|
+
};
|
|
15
|
+
exports.SlashCommandsModule = SlashCommandsModule;
|
|
16
|
+
exports.SlashCommandsModule = SlashCommandsModule = __decorate([
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
controllers: [slash_commands_controller_1.SlashCommandsController],
|
|
19
|
+
providers: [slash_commands_service_1.SlashCommandsService],
|
|
20
|
+
exports: [slash_commands_service_1.SlashCommandsService],
|
|
21
|
+
})
|
|
22
|
+
], SlashCommandsModule);
|
|
23
|
+
//# sourceMappingURL=slash-commands.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.module.js","sourceRoot":"","sources":["../../../src/slash-commands/slash-commands.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAgE;AAChE,2EAAsE;AAO/D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAL/B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,mDAAuB,CAAC;QACtC,SAAS,EAAE,CAAC,6CAAoB,CAAC;QACjC,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,mBAAmB,CAAG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface SlashCommandDefinition {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
argumentHint?: string;
|
|
5
|
+
body: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SlashCommandSummary {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
argument_hint?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class SlashCommandsService {
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private commandsDir;
|
|
15
|
+
list(): Promise<SlashCommandSummary[]>;
|
|
16
|
+
tryExpand(prompt: string): Promise<string | null>;
|
|
17
|
+
findByName(name: string): Promise<SlashCommandDefinition | null>;
|
|
18
|
+
private substitute;
|
|
19
|
+
private tokenizeArgs;
|
|
20
|
+
private loadAll;
|
|
21
|
+
private readHint;
|
|
22
|
+
private parseFile;
|
|
23
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var SlashCommandsService_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SlashCommandsService = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const fs = require("fs");
|
|
13
|
+
const path = require("path");
|
|
14
|
+
const yaml = require("js-yaml");
|
|
15
|
+
const NAME_REGEX = /^[a-z0-9][a-z0-9-]*$/;
|
|
16
|
+
let SlashCommandsService = SlashCommandsService_1 = class SlashCommandsService {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.logger = new common_1.Logger(SlashCommandsService_1.name);
|
|
19
|
+
}
|
|
20
|
+
commandsDir() {
|
|
21
|
+
const projectPath = process.env.REPOBURG_PROJECT_PATH || process.cwd();
|
|
22
|
+
return path.join(projectPath, '.repoburg', 'commands');
|
|
23
|
+
}
|
|
24
|
+
async list() {
|
|
25
|
+
const commands = await this.loadAll();
|
|
26
|
+
return commands.map((c) => ({
|
|
27
|
+
name: c.name,
|
|
28
|
+
description: c.description,
|
|
29
|
+
argument_hint: c.argumentHint,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
async tryExpand(prompt) {
|
|
33
|
+
const match = prompt.match(/^\/([a-z0-9][a-z0-9-]*)\s*([\s\S]*)$/);
|
|
34
|
+
if (!match) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const command = await this.findByName(match[1]);
|
|
38
|
+
if (!command) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const args = match[2].trim();
|
|
42
|
+
this.logger.log(`Expanding slash command "/${command.name}"`);
|
|
43
|
+
return this.substitute(command.body, args);
|
|
44
|
+
}
|
|
45
|
+
async findByName(name) {
|
|
46
|
+
const commands = await this.loadAll();
|
|
47
|
+
return commands.find((c) => c.name === name) ?? null;
|
|
48
|
+
}
|
|
49
|
+
substitute(body, args) {
|
|
50
|
+
const hasPlaceholder = /(?<!\\)\$(ARGUMENTS|[1-9])/.test(body);
|
|
51
|
+
const tokens = this.tokenizeArgs(args);
|
|
52
|
+
let result = body.replace(/(?<!\\)\$(ARGUMENTS|[1-9])/g, (_match, token) => token === 'ARGUMENTS' ? args : (tokens[parseInt(token, 10) - 1] ?? ''));
|
|
53
|
+
result = result.replace(/\\\$/g, '$');
|
|
54
|
+
if (args && !hasPlaceholder) {
|
|
55
|
+
result += `\n\nARGUMENTS: ${args}`;
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
tokenizeArgs(args) {
|
|
60
|
+
const tokens = [];
|
|
61
|
+
const regex = /"([^"]*)"|'([^']*)'|(\S+)/g;
|
|
62
|
+
let match;
|
|
63
|
+
while ((match = regex.exec(args)) !== null) {
|
|
64
|
+
tokens.push(match[1] ?? match[2] ?? match[3]);
|
|
65
|
+
}
|
|
66
|
+
return tokens;
|
|
67
|
+
}
|
|
68
|
+
async loadAll() {
|
|
69
|
+
const dir = this.commandsDir();
|
|
70
|
+
let files;
|
|
71
|
+
try {
|
|
72
|
+
files = await fs.promises.readdir(dir);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const commands = [];
|
|
78
|
+
for (const file of files.sort()) {
|
|
79
|
+
if (!file.endsWith('.md')) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const name = file.slice(0, -3);
|
|
83
|
+
if (!NAME_REGEX.test(name)) {
|
|
84
|
+
this.logger.warn(`Skipping "${file}": command name must be kebab-case (a-z, 0-9, -).`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const raw = await fs.promises.readFile(path.join(dir, file), 'utf-8');
|
|
89
|
+
const parsed = this.parseFile(raw);
|
|
90
|
+
commands.push({
|
|
91
|
+
name,
|
|
92
|
+
description: typeof parsed.frontmatter?.description === 'string'
|
|
93
|
+
? parsed.frontmatter.description
|
|
94
|
+
: undefined,
|
|
95
|
+
argumentHint: this.readHint(parsed.frontmatter?.['argument-hint']),
|
|
96
|
+
body: parsed.body,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this.logger.warn(`Skipping "${file}": could not read or parse (${error.message}).`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return commands;
|
|
104
|
+
}
|
|
105
|
+
readHint(value) {
|
|
106
|
+
if (typeof value === 'string') {
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
if (Array.isArray(value)) {
|
|
110
|
+
return value.map((v) => String(v)).join(' ');
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
parseFile(raw) {
|
|
115
|
+
const match = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
|
|
116
|
+
if (!match) {
|
|
117
|
+
return { frontmatter: null, body: raw };
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const frontmatter = yaml.load(match[1]);
|
|
121
|
+
return {
|
|
122
|
+
frontmatter: frontmatter && typeof frontmatter === 'object' ? frontmatter : null,
|
|
123
|
+
body: match[2],
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
this.logger.warn(`Invalid frontmatter, treating file as body only.`);
|
|
128
|
+
return { frontmatter: null, body: raw };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
exports.SlashCommandsService = SlashCommandsService;
|
|
133
|
+
exports.SlashCommandsService = SlashCommandsService = SlashCommandsService_1 = __decorate([
|
|
134
|
+
(0, common_1.Injectable)()
|
|
135
|
+
], SlashCommandsService);
|
|
136
|
+
//# sourceMappingURL=slash-commands.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.service.js","sourceRoot":"","sources":["../../../src/slash-commands/slash-commands.service.ts"],"names":[],"mappings":"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"}
|