repoburg 1.3.211 → 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 +88 -9
- package/agent-pane/backend/dist/server.js +88 -9
- 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/discuss-e2e-open.png +0 -0
- package/hasan-thread-after-fix.png +0 -0
- package/hasan-threads.png +0 -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
|
|
@@ -45026,6 +45029,7 @@ async function ensureSession(session, client, baseUrl) {
|
|
|
45026
45029
|
// undefined forces a re-push on the next turn — heals sessions created
|
|
45027
45030
|
// before unsafe effort values (e.g. ollama xhigh) were clamped.
|
|
45028
45031
|
reasoningEffort: void 0,
|
|
45032
|
+
threadId: null,
|
|
45029
45033
|
activeTurn: null
|
|
45030
45034
|
};
|
|
45031
45035
|
sessionMap3.set(session.id, entry2);
|
|
@@ -45051,11 +45055,47 @@ async function ensureSession(session, client, baseUrl) {
|
|
|
45051
45055
|
baseUrl,
|
|
45052
45056
|
modelId: session.model ?? null,
|
|
45053
45057
|
reasoningEffort: mappedEffort,
|
|
45058
|
+
threadId: null,
|
|
45054
45059
|
activeTurn: null
|
|
45055
45060
|
};
|
|
45056
45061
|
sessionMap3.set(session.id, entry);
|
|
45057
45062
|
return entry;
|
|
45058
45063
|
}
|
|
45064
|
+
async function ensureThreadSession(session, turn, client, baseUrl) {
|
|
45065
|
+
const mapKey = `${session.id}:thread:${turn.thread_id}`;
|
|
45066
|
+
const existing = sessionMap3.get(mapKey);
|
|
45067
|
+
if (existing) return existing;
|
|
45068
|
+
const db2 = getDb();
|
|
45069
|
+
const thread = db2.prepare("SELECT external_thread_id FROM discussion_threads WHERE id = ?").get(turn.thread_id);
|
|
45070
|
+
let runtimeId = thread?.external_thread_id ?? null;
|
|
45071
|
+
if (!runtimeId) {
|
|
45072
|
+
const created = await client.createSession({
|
|
45073
|
+
session_title: session.title ? `Discussion: ${session.title}` : "Discussion",
|
|
45074
|
+
model_id: session.model ?? void 0,
|
|
45075
|
+
reasoning_effort: mapReasoningEffort(session.model, session.model_reasoning_effort)
|
|
45076
|
+
});
|
|
45077
|
+
runtimeId = created.id;
|
|
45078
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
45079
|
+
db2.prepare("UPDATE discussion_threads SET external_thread_id = ?, updated_at = ? WHERE id = ?").run(
|
|
45080
|
+
runtimeId,
|
|
45081
|
+
now,
|
|
45082
|
+
turn.thread_id
|
|
45083
|
+
);
|
|
45084
|
+
}
|
|
45085
|
+
const entry = {
|
|
45086
|
+
agentPaneSessionId: session.id,
|
|
45087
|
+
repoburgSessionId: runtimeId,
|
|
45088
|
+
client,
|
|
45089
|
+
baseUrl,
|
|
45090
|
+
modelId: session.model ?? null,
|
|
45091
|
+
reasoningEffort: void 0,
|
|
45092
|
+
// re-pushed on the first thread turn
|
|
45093
|
+
threadId: turn.thread_id,
|
|
45094
|
+
activeTurn: null
|
|
45095
|
+
};
|
|
45096
|
+
sessionMap3.set(mapKey, entry);
|
|
45097
|
+
return entry;
|
|
45098
|
+
}
|
|
45059
45099
|
function failTurnBeforeStart(db2, sessionId, turnId, error) {
|
|
45060
45100
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
45061
45101
|
db2.prepare("UPDATE turns SET status = ?, error = ?, updated_at = ? WHERE id = ?").run(
|
|
@@ -45152,7 +45192,7 @@ async function startTurn3(session, turn) {
|
|
|
45152
45192
|
}
|
|
45153
45193
|
let entry;
|
|
45154
45194
|
try {
|
|
45155
|
-
entry = await ensureSession(session, client, baseUrl);
|
|
45195
|
+
entry = turn.thread_id ? await ensureThreadSession(session, turn, client, baseUrl) : await ensureSession(session, client, baseUrl);
|
|
45156
45196
|
} catch (err) {
|
|
45157
45197
|
if (isConnectionError(err)) invalidateBackend(baseUrl);
|
|
45158
45198
|
failTurnBeforeStart(db2, session.id, turn.id, `Failed to create repoburg session: ${err.message}`);
|
|
@@ -45200,7 +45240,15 @@ async function startTurn3(session, turn) {
|
|
|
45200
45240
|
}
|
|
45201
45241
|
}
|
|
45202
45242
|
async function interruptTurn3(sessionId) {
|
|
45203
|
-
|
|
45243
|
+
let entry = sessionMap3.get(sessionId);
|
|
45244
|
+
if (!entry?.activeTurn) {
|
|
45245
|
+
for (const [key, threadEntry] of sessionMap3) {
|
|
45246
|
+
if (key.startsWith(`${sessionId}:thread:`) && threadEntry.activeTurn) {
|
|
45247
|
+
entry = threadEntry;
|
|
45248
|
+
break;
|
|
45249
|
+
}
|
|
45250
|
+
}
|
|
45251
|
+
}
|
|
45204
45252
|
const active = entry?.activeTurn;
|
|
45205
45253
|
if (!entry || !active) return false;
|
|
45206
45254
|
active.cancelled = true;
|
|
@@ -45222,14 +45270,29 @@ async function interruptTurn3(sessionId) {
|
|
|
45222
45270
|
return true;
|
|
45223
45271
|
}
|
|
45224
45272
|
function clearThread3(sessionId) {
|
|
45225
|
-
const entry
|
|
45226
|
-
|
|
45227
|
-
|
|
45228
|
-
|
|
45229
|
-
|
|
45230
|
-
|
|
45273
|
+
for (const [key, entry] of sessionMap3) {
|
|
45274
|
+
if (key !== sessionId && !key.startsWith(`${sessionId}:thread:`)) continue;
|
|
45275
|
+
if (entry.activeTurn) {
|
|
45276
|
+
const active = entry.activeTurn;
|
|
45277
|
+
entry.activeTurn = null;
|
|
45278
|
+
active.projector.close();
|
|
45279
|
+
active.sseAbort.abort();
|
|
45280
|
+
}
|
|
45281
|
+
sessionMap3.delete(key);
|
|
45282
|
+
}
|
|
45283
|
+
}
|
|
45284
|
+
function clearThreadBranch2(sessionId, threadId) {
|
|
45285
|
+
const key = `${sessionId}:thread:${threadId}`;
|
|
45286
|
+
const entry = sessionMap3.get(key);
|
|
45287
|
+
if (entry) {
|
|
45288
|
+
if (entry.activeTurn) {
|
|
45289
|
+
const active = entry.activeTurn;
|
|
45290
|
+
entry.activeTurn = null;
|
|
45291
|
+
active.projector.close();
|
|
45292
|
+
active.sseAbort.abort();
|
|
45293
|
+
}
|
|
45294
|
+
sessionMap3.delete(key);
|
|
45231
45295
|
}
|
|
45232
|
-
sessionMap3.delete(sessionId);
|
|
45233
45296
|
}
|
|
45234
45297
|
function parseRuntimeInputIds(turn) {
|
|
45235
45298
|
const raw = turn.runtime_input_ids;
|
|
@@ -45307,6 +45370,20 @@ async function getModels3() {
|
|
|
45307
45370
|
return [];
|
|
45308
45371
|
}
|
|
45309
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
|
+
}
|
|
45310
45387
|
async function shutdown3() {
|
|
45311
45388
|
clearAllThreads3();
|
|
45312
45389
|
}
|
|
@@ -45314,8 +45391,10 @@ var repoburgProvider = {
|
|
|
45314
45391
|
startTurn: startTurn3,
|
|
45315
45392
|
interruptTurn: interruptTurn3,
|
|
45316
45393
|
clearThread: clearThread3,
|
|
45394
|
+
clearThreadBranch: clearThreadBranch2,
|
|
45317
45395
|
clearAllThreads: clearAllThreads3,
|
|
45318
45396
|
getModels: getModels3,
|
|
45397
|
+
getCommands: getCommands2,
|
|
45319
45398
|
rewindRuntime,
|
|
45320
45399
|
forkSession,
|
|
45321
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
|
|
@@ -45013,6 +45016,7 @@ async function ensureSession(session, client, baseUrl) {
|
|
|
45013
45016
|
// undefined forces a re-push on the next turn — heals sessions created
|
|
45014
45017
|
// before unsafe effort values (e.g. ollama xhigh) were clamped.
|
|
45015
45018
|
reasoningEffort: void 0,
|
|
45019
|
+
threadId: null,
|
|
45016
45020
|
activeTurn: null
|
|
45017
45021
|
};
|
|
45018
45022
|
sessionMap3.set(session.id, entry2);
|
|
@@ -45038,11 +45042,47 @@ async function ensureSession(session, client, baseUrl) {
|
|
|
45038
45042
|
baseUrl,
|
|
45039
45043
|
modelId: session.model ?? null,
|
|
45040
45044
|
reasoningEffort: mappedEffort,
|
|
45045
|
+
threadId: null,
|
|
45041
45046
|
activeTurn: null
|
|
45042
45047
|
};
|
|
45043
45048
|
sessionMap3.set(session.id, entry);
|
|
45044
45049
|
return entry;
|
|
45045
45050
|
}
|
|
45051
|
+
async function ensureThreadSession(session, turn, client, baseUrl) {
|
|
45052
|
+
const mapKey = `${session.id}:thread:${turn.thread_id}`;
|
|
45053
|
+
const existing = sessionMap3.get(mapKey);
|
|
45054
|
+
if (existing) return existing;
|
|
45055
|
+
const db2 = getDb();
|
|
45056
|
+
const thread = db2.prepare("SELECT external_thread_id FROM discussion_threads WHERE id = ?").get(turn.thread_id);
|
|
45057
|
+
let runtimeId = thread?.external_thread_id ?? null;
|
|
45058
|
+
if (!runtimeId) {
|
|
45059
|
+
const created = await client.createSession({
|
|
45060
|
+
session_title: session.title ? `Discussion: ${session.title}` : "Discussion",
|
|
45061
|
+
model_id: session.model ?? void 0,
|
|
45062
|
+
reasoning_effort: mapReasoningEffort(session.model, session.model_reasoning_effort)
|
|
45063
|
+
});
|
|
45064
|
+
runtimeId = created.id;
|
|
45065
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
45066
|
+
db2.prepare("UPDATE discussion_threads SET external_thread_id = ?, updated_at = ? WHERE id = ?").run(
|
|
45067
|
+
runtimeId,
|
|
45068
|
+
now,
|
|
45069
|
+
turn.thread_id
|
|
45070
|
+
);
|
|
45071
|
+
}
|
|
45072
|
+
const entry = {
|
|
45073
|
+
agentPaneSessionId: session.id,
|
|
45074
|
+
repoburgSessionId: runtimeId,
|
|
45075
|
+
client,
|
|
45076
|
+
baseUrl,
|
|
45077
|
+
modelId: session.model ?? null,
|
|
45078
|
+
reasoningEffort: void 0,
|
|
45079
|
+
// re-pushed on the first thread turn
|
|
45080
|
+
threadId: turn.thread_id,
|
|
45081
|
+
activeTurn: null
|
|
45082
|
+
};
|
|
45083
|
+
sessionMap3.set(mapKey, entry);
|
|
45084
|
+
return entry;
|
|
45085
|
+
}
|
|
45046
45086
|
function failTurnBeforeStart(db2, sessionId, turnId, error) {
|
|
45047
45087
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
45048
45088
|
db2.prepare("UPDATE turns SET status = ?, error = ?, updated_at = ? WHERE id = ?").run(
|
|
@@ -45139,7 +45179,7 @@ async function startTurn3(session, turn) {
|
|
|
45139
45179
|
}
|
|
45140
45180
|
let entry;
|
|
45141
45181
|
try {
|
|
45142
|
-
entry = await ensureSession(session, client, baseUrl);
|
|
45182
|
+
entry = turn.thread_id ? await ensureThreadSession(session, turn, client, baseUrl) : await ensureSession(session, client, baseUrl);
|
|
45143
45183
|
} catch (err) {
|
|
45144
45184
|
if (isConnectionError(err)) invalidateBackend(baseUrl);
|
|
45145
45185
|
failTurnBeforeStart(db2, session.id, turn.id, `Failed to create repoburg session: ${err.message}`);
|
|
@@ -45187,7 +45227,15 @@ async function startTurn3(session, turn) {
|
|
|
45187
45227
|
}
|
|
45188
45228
|
}
|
|
45189
45229
|
async function interruptTurn3(sessionId) {
|
|
45190
|
-
|
|
45230
|
+
let entry = sessionMap3.get(sessionId);
|
|
45231
|
+
if (!entry?.activeTurn) {
|
|
45232
|
+
for (const [key, threadEntry] of sessionMap3) {
|
|
45233
|
+
if (key.startsWith(`${sessionId}:thread:`) && threadEntry.activeTurn) {
|
|
45234
|
+
entry = threadEntry;
|
|
45235
|
+
break;
|
|
45236
|
+
}
|
|
45237
|
+
}
|
|
45238
|
+
}
|
|
45191
45239
|
const active = entry?.activeTurn;
|
|
45192
45240
|
if (!entry || !active) return false;
|
|
45193
45241
|
active.cancelled = true;
|
|
@@ -45209,14 +45257,29 @@ async function interruptTurn3(sessionId) {
|
|
|
45209
45257
|
return true;
|
|
45210
45258
|
}
|
|
45211
45259
|
function clearThread3(sessionId) {
|
|
45212
|
-
const entry
|
|
45213
|
-
|
|
45214
|
-
|
|
45215
|
-
|
|
45216
|
-
|
|
45217
|
-
|
|
45260
|
+
for (const [key, entry] of sessionMap3) {
|
|
45261
|
+
if (key !== sessionId && !key.startsWith(`${sessionId}:thread:`)) continue;
|
|
45262
|
+
if (entry.activeTurn) {
|
|
45263
|
+
const active = entry.activeTurn;
|
|
45264
|
+
entry.activeTurn = null;
|
|
45265
|
+
active.projector.close();
|
|
45266
|
+
active.sseAbort.abort();
|
|
45267
|
+
}
|
|
45268
|
+
sessionMap3.delete(key);
|
|
45269
|
+
}
|
|
45270
|
+
}
|
|
45271
|
+
function clearThreadBranch2(sessionId, threadId) {
|
|
45272
|
+
const key = `${sessionId}:thread:${threadId}`;
|
|
45273
|
+
const entry = sessionMap3.get(key);
|
|
45274
|
+
if (entry) {
|
|
45275
|
+
if (entry.activeTurn) {
|
|
45276
|
+
const active = entry.activeTurn;
|
|
45277
|
+
entry.activeTurn = null;
|
|
45278
|
+
active.projector.close();
|
|
45279
|
+
active.sseAbort.abort();
|
|
45280
|
+
}
|
|
45281
|
+
sessionMap3.delete(key);
|
|
45218
45282
|
}
|
|
45219
|
-
sessionMap3.delete(sessionId);
|
|
45220
45283
|
}
|
|
45221
45284
|
function parseRuntimeInputIds(turn) {
|
|
45222
45285
|
const raw = turn.runtime_input_ids;
|
|
@@ -45294,6 +45357,20 @@ async function getModels3() {
|
|
|
45294
45357
|
return [];
|
|
45295
45358
|
}
|
|
45296
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
|
+
}
|
|
45297
45374
|
async function shutdown3() {
|
|
45298
45375
|
clearAllThreads3();
|
|
45299
45376
|
}
|
|
@@ -45301,8 +45378,10 @@ var repoburgProvider = {
|
|
|
45301
45378
|
startTurn: startTurn3,
|
|
45302
45379
|
interruptTurn: interruptTurn3,
|
|
45303
45380
|
clearThread: clearThread3,
|
|
45381
|
+
clearThreadBranch: clearThreadBranch2,
|
|
45304
45382
|
clearAllThreads: clearAllThreads3,
|
|
45305
45383
|
getModels: getModels3,
|
|
45384
|
+
getCommands: getCommands2,
|
|
45306
45385
|
rewindRuntime,
|
|
45307
45386
|
forkSession,
|
|
45308
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
|
+
}
|