@straiffi/archon 1.4.10 → 1.5.0
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/dist/client/assets/GitHubActionsDialog-CQMqcAiI.js +1 -0
- package/dist/client/assets/{TestsDialog-Cp3Da2W0.js → TestsDialog-iGukzvw2.js} +2 -2
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CFEtd9pl.js → architectureDiagram-3BPJPVTR-BG4rc0pD.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-9UsBOlSn.js → blockDiagram-GPEHLZMM-BifkewDx.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU--TsvWn6X.js → c4Diagram-AAUBKEIU-DEYVUDCs.js} +1 -1
- package/dist/client/assets/channel-gy-JdvF3.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-B3FphDWz.js → chunk-2J33WTMH-DD50YIcA.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-CLbUIPKK.js → chunk-3OPIFGDE-DLbwwbdv.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-CUHKY5eH.js → chunk-5ZQYHXKU-BW-r3gXJ.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-DfKJ4Ud0.js → chunk-727SXJPM-B5C_ENX7.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-B0oLVoZs.js → chunk-AQP2D5EJ-BUT3wmDg.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-Czl8GWBW.js → chunk-CSCIHK7Q-BO7wWVh_.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-pOOnuun_.js → chunk-KSCS5N6A-DUNFfKB2.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-DzRVeTqf.js → chunk-L5ZTLDWV-SYJQkU8_.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-MVhzvLVp.js → chunk-LZXEDZCA-DSVJIylK.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-BeNiy3nE.js → chunk-ND2GUHAM-CxL5ue9A.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-CnENvQ9d.js → chunk-NZK2D7GU-BwxeYeqR.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-CkqDMX_f.js → chunk-O5CBEL6O-Covi8YcB.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-sJ18xVVM.js → chunk-WU5MYG2G-DlQoHSB3.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-B1Xs78Ge.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BU_Soq1k.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-BWnmF2aL.js → dagre-BM42HDAG-CuNExSrh.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-CASRQI5Y.js → diagram-2AECGRRQ-Bk7EYe6Z.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-CY8fXRrV.js → diagram-5GNKFQAL-koHJCfAk.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-vtm-gqIm.js → diagram-KO2AKTUF-DI1Ecx54.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-Ck-iA5q1.js → diagram-LMA3HP47-CmFk1MNf.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-ALBEY2Nn.js → diagram-OG6HWLK6-YTiDn39n.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-BAHPzYR7.js → erDiagram-TEJ5UH35-DyWU43DX.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-pUYj1KCo.js → flowDiagram-I6XJVG4X-DgbU15ZJ.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-zw-EKZcX.js → ganttDiagram-6RSMTGT7-CT39xvdk.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DmPxQKXO.js → gitGraphDiagram-PVQCEYII-DfK_1xRj.js} +1 -1
- package/dist/client/assets/index-BCqJfUGA.css +2 -0
- package/dist/client/assets/index-C_XaTJyb.js +261 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-D0zuFK8l.js → infoDiagram-5YYISTIA-C7z_7194.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BoNe_Ie6.js → ishikawaDiagram-YF4QCWOH-DhJ7h17n.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-ByAP1uL0.js → journeyDiagram-JHISSGLW-CtkhoMAA.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-CGXOqdl0.js → kanban-definition-UN3LZRKU-Bcas7cg9.js} +1 -1
- package/dist/client/assets/{line-BZ3JWBtG.js → line-WO_ReaCl.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-DuHIifHL.js → mermaid-parser.core-WmRuf19A.js} +1 -1
- package/dist/client/assets/{mermaid.core-Co8EqKSU.js → mermaid.core-BMdju4xN.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Cv3-5Q_b.js → mindmap-definition-RKZ34NQL-DLxsUQmn.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-DziVyTJT.js → pieDiagram-4H26LBE5-D-oaWpEg.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DjNtV4An.js → quadrantDiagram-W4KKPZXB-B9krq8I-.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-Cs3npD-z.js → requirementDiagram-4Y6WPE33-m2VnH3vv.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DxepDJwc.js → sankeyDiagram-5OEKKPKP-bCF9Ot9-.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DIPg-NEj.js → sequenceDiagram-3UESZ5HK-C-4zDJcn.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-DUA-Ko9b.js → stateDiagram-AJRCARHV-CksbJK59.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BvbN4CmJ.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-wvi8pREg.js → timeline-definition-PNZ67QCA-DDxpdMfo.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CabtIweB.js → vennDiagram-CIIHVFJN-BfQM7_zD.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BiOWydTY.js → wardleyDiagram-YWT4CUSO-CuixXlAX.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-sWfRgDRl.js → xychartDiagram-2RQKCTM6-53YB-tf6.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/db.js +14 -3
- package/dist/server/db.js.map +1 -1
- package/dist/server/index.js +34 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +853 -161
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/agentRuns.js +22 -0
- package/dist/server/lib/agentRuns.js.map +1 -1
- package/dist/server/lib/chatMessages.js +24 -8
- package/dist/server/lib/chatMessages.js.map +1 -1
- package/dist/server/lib/genericToolCall.js +151 -0
- package/dist/server/lib/genericToolCall.js.map +1 -0
- package/dist/server/lib/mobileAccess.js +45 -2
- package/dist/server/lib/mobileAccess.js.map +1 -1
- package/dist/server/lib/models.js +89 -36
- package/dist/server/lib/models.js.map +1 -1
- package/dist/server/lib/opencodeTaskSessions.js +216 -0
- package/dist/server/lib/opencodeTaskSessions.js.map +1 -0
- package/dist/server/lib/projectMemory.js +38 -8
- package/dist/server/lib/projectMemory.js.map +1 -1
- package/dist/server/lib/promptSkills.js +5 -0
- package/dist/server/lib/promptSkills.js.map +1 -1
- package/dist/server/lib/specMessages.js +9 -6
- package/dist/server/lib/specMessages.js.map +1 -1
- package/dist/server/lib/specs.js +9 -0
- package/dist/server/lib/specs.js.map +1 -1
- package/dist/server/lib/ticketMessages.js +22 -7
- package/dist/server/lib/ticketMessages.js.map +1 -1
- package/dist/server/lib/transcriptRuns.js +85 -0
- package/dist/server/lib/transcriptRuns.js.map +1 -0
- package/dist/server/workers/build.js +12 -2
- package/dist/server/workers/build.js.map +1 -1
- package/dist/server/workers/chat.js +15 -1
- package/dist/server/workers/chat.js.map +1 -1
- package/dist/server/workers/followUp.js +12 -2
- package/dist/server/workers/followUp.js.map +1 -1
- package/dist/server/workers/plan.js +346 -60
- package/dist/server/workers/plan.js.map +1 -1
- package/dist/server/workers/planFollowUp.js +27 -7
- package/dist/server/workers/planFollowUp.js.map +1 -1
- package/dist/server/workers/review.js +50 -9
- package/dist/server/workers/review.js.map +1 -1
- package/dist/server/workers/specSession.js +36 -1
- package/dist/server/workers/specSession.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/GitHubActionsDialog-ln1X9xDf.js +0 -1
- package/dist/client/assets/channel-BjRPoR7Z.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BjzBLL5f.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BDLW6NLv.js +0 -1
- package/dist/client/assets/index-BokL1E46.css +0 -2
- package/dist/client/assets/index-WeECH1eZ.js +0 -260
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D6OlcyEp.js +0 -1
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { createHash } from 'crypto';
|
|
2
3
|
const CACHE_TTL_MS = 30_000;
|
|
4
|
+
const MODEL_DISCOVERY_SAMPLE_COUNT = 3;
|
|
5
|
+
const MODEL_DISCOVERY_TIMEOUT_MS = 30_000;
|
|
3
6
|
const modelCache = new Map();
|
|
4
7
|
const inFlightModelDiscovery = new Map();
|
|
5
8
|
const ANSI_ESCAPE_RE = /\x1b\[[0-9;]*[A-Za-z]/g;
|
|
@@ -41,30 +44,36 @@ const CLAUDE_MODEL_ALIASES = new Set(CLAUDE_MODELS.map(model => model.id));
|
|
|
41
44
|
const toProviderSummary = (models) => {
|
|
42
45
|
return Array.from(new Set(models.map(model => model.provider).filter(Boolean))).sort();
|
|
43
46
|
};
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
return
|
|
47
|
+
const toModelIdHash = (models) => {
|
|
48
|
+
const modelIds = models.map(model => model.id).sort();
|
|
49
|
+
return createHash('sha256').update(modelIds.join('\n')).digest('hex').slice(0, 12);
|
|
47
50
|
};
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
const getMissingModelIds = (previousModels, nextModels) => {
|
|
52
|
+
const nextModelIds = new Set(nextModels.map(model => model.id));
|
|
53
|
+
return previousModels.map(model => model.id).filter(modelId => !nextModelIds.has(modelId));
|
|
54
|
+
};
|
|
55
|
+
const mergeModelLists = (...modelLists) => {
|
|
56
|
+
const modelsById = new Map();
|
|
57
|
+
for (const models of modelLists) {
|
|
58
|
+
for (const model of models) {
|
|
59
|
+
modelsById.set(model.id, model);
|
|
60
|
+
}
|
|
54
61
|
}
|
|
55
|
-
return
|
|
62
|
+
return Array.from(modelsById.values());
|
|
56
63
|
};
|
|
57
|
-
const
|
|
58
|
-
const
|
|
64
|
+
const logMergedDiscovery = (cachedModels, discoveredModels) => {
|
|
65
|
+
const missingModelIds = getMissingModelIds(cachedModels, discoveredModels);
|
|
66
|
+
const addedModelIds = getMissingModelIds(discoveredModels, cachedModels);
|
|
59
67
|
const details = [
|
|
60
|
-
`reason=${reason}`,
|
|
61
68
|
`cached=${cachedModels.length}`,
|
|
62
69
|
`discovered=${discoveredModels.length}`,
|
|
70
|
+
`added=${addedModelIds.length}`,
|
|
71
|
+
`preserved=${missingModelIds.length}`,
|
|
63
72
|
];
|
|
64
|
-
if (
|
|
65
|
-
details.push(`
|
|
73
|
+
if (missingModelIds.length > 0) {
|
|
74
|
+
details.push(`missing_preview=${missingModelIds.slice(0, 5).join(',')}`);
|
|
66
75
|
}
|
|
67
|
-
console.warn(`[models]
|
|
76
|
+
console.warn(`[models] merged OpenCode discovery with high-water cache (${details.join(' ')})`);
|
|
68
77
|
};
|
|
69
78
|
const stripFormatting = (value) => {
|
|
70
79
|
return String(value ?? '')
|
|
@@ -147,6 +156,7 @@ const parseVerboseModels = (rawOutput) => {
|
|
|
147
156
|
const models = [];
|
|
148
157
|
let currentModelId = '';
|
|
149
158
|
let currentJsonLines = [];
|
|
159
|
+
let rawModelIdCount = 0;
|
|
150
160
|
const flushCurrentModel = () => {
|
|
151
161
|
if (!currentModelId || currentJsonLines.length === 0) {
|
|
152
162
|
currentModelId = '';
|
|
@@ -157,6 +167,7 @@ const parseVerboseModels = (rawOutput) => {
|
|
|
157
167
|
const parsed = JSON.parse(currentJsonLines.join('\n'));
|
|
158
168
|
const normalizedId = normalizeModelId(currentModelId);
|
|
159
169
|
if (!normalizedId) {
|
|
170
|
+
console.warn(`[models] dropped model ID="${currentModelId}", reason=invalid_id`);
|
|
160
171
|
return;
|
|
161
172
|
}
|
|
162
173
|
models.push({
|
|
@@ -173,7 +184,7 @@ const parseVerboseModels = (rawOutput) => {
|
|
|
173
184
|
});
|
|
174
185
|
}
|
|
175
186
|
catch {
|
|
176
|
-
|
|
187
|
+
console.warn(`[models] dropped model ID="${currentModelId}", reason=json_parse_error, json_preview="${currentJsonLines.slice(0, 3).join(' ').slice(0, 120)}"`);
|
|
177
188
|
}
|
|
178
189
|
finally {
|
|
179
190
|
currentModelId = '';
|
|
@@ -184,6 +195,7 @@ const parseVerboseModels = (rawOutput) => {
|
|
|
184
195
|
const trimmedLine = line.trim();
|
|
185
196
|
const normalizedModelId = normalizeModelId(trimmedLine);
|
|
186
197
|
if (normalizedModelId && !trimmedLine.startsWith('{') && !trimmedLine.startsWith('"')) {
|
|
198
|
+
rawModelIdCount++;
|
|
187
199
|
flushCurrentModel();
|
|
188
200
|
currentModelId = normalizedModelId;
|
|
189
201
|
continue;
|
|
@@ -194,34 +206,75 @@ const parseVerboseModels = (rawOutput) => {
|
|
|
194
206
|
currentJsonLines.push(line);
|
|
195
207
|
}
|
|
196
208
|
flushCurrentModel();
|
|
209
|
+
console.warn(`[models] parsed ${models.length} models from ${rawModelIdCount} raw model ID lines`);
|
|
197
210
|
return models;
|
|
198
211
|
};
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
212
|
+
const runModelDiscoveryOnce = () => new Promise((resolve, reject) => {
|
|
213
|
+
const child = spawn('opencode', ['models', '--verbose'], {
|
|
214
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
215
|
+
});
|
|
216
|
+
let stdout = '';
|
|
217
|
+
let stderr = '';
|
|
218
|
+
let settled = false;
|
|
219
|
+
const timer = setTimeout(() => {
|
|
220
|
+
if (settled) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
settled = true;
|
|
224
|
+
child.kill('SIGKILL');
|
|
225
|
+
reject(new Error(`opencode models timed out after ${MODEL_DISCOVERY_TIMEOUT_MS}ms`));
|
|
226
|
+
}, MODEL_DISCOVERY_TIMEOUT_MS);
|
|
227
|
+
child.stdout?.on('data', (chunk) => { stdout += chunk.toString('utf8'); });
|
|
228
|
+
child.stderr?.on('data', (chunk) => { stderr += chunk.toString('utf8'); });
|
|
229
|
+
child.on('close', (code) => {
|
|
230
|
+
if (settled) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
settled = true;
|
|
234
|
+
clearTimeout(timer);
|
|
235
|
+
if (code !== 0) {
|
|
236
|
+
reject(new Error(`opencode models exited with code ${code}: ${stderr.slice(0, 500)}`));
|
|
203
237
|
return;
|
|
204
238
|
}
|
|
205
239
|
resolve(parseVerboseModels(stdout));
|
|
206
240
|
});
|
|
241
|
+
child.on('error', (error) => {
|
|
242
|
+
if (settled) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
settled = true;
|
|
246
|
+
clearTimeout(timer);
|
|
247
|
+
reject(error);
|
|
248
|
+
});
|
|
207
249
|
});
|
|
250
|
+
const runModelDiscovery = async () => {
|
|
251
|
+
const samples = [];
|
|
252
|
+
let lastError;
|
|
253
|
+
for (let attempt = 1; attempt <= MODEL_DISCOVERY_SAMPLE_COUNT; attempt++) {
|
|
254
|
+
try {
|
|
255
|
+
const models = await runModelDiscoveryOnce();
|
|
256
|
+
samples.push(models);
|
|
257
|
+
console.warn(`[models] discovery sample ${attempt}/${MODEL_DISCOVERY_SAMPLE_COUNT}: ${models.length} models, hash=${toModelIdHash(models)}, providers=[${toProviderSummary(models).join(',')}]`);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
lastError = error;
|
|
261
|
+
console.warn(`[models] discovery sample ${attempt}/${MODEL_DISCOVERY_SAMPLE_COUNT} failed`, error);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (samples.length === 0) {
|
|
265
|
+
throw lastError;
|
|
266
|
+
}
|
|
267
|
+
const discoveredModels = mergeModelLists(...samples);
|
|
268
|
+
console.warn(`[models] stabilized discovery: ${discoveredModels.length} models from ${samples.length} successful samples, hash=${toModelIdHash(discoveredModels)}, providers=[${toProviderSummary(discoveredModels).join(',')}]`);
|
|
269
|
+
return discoveredModels;
|
|
270
|
+
};
|
|
208
271
|
const discoverModelsWithCacheFallback = async (cachedModels) => {
|
|
209
272
|
const discoveredModels = await runModelDiscovery();
|
|
210
|
-
if (!cachedModels
|
|
273
|
+
if (!cachedModels) {
|
|
211
274
|
return discoveredModels;
|
|
212
275
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (!shouldPreserveCachedModels(cachedModels, retriedModels)) {
|
|
216
|
-
return retriedModels;
|
|
217
|
-
}
|
|
218
|
-
logPreservedCache('provider-regression', cachedModels, retriedModels);
|
|
219
|
-
return cachedModels;
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
console.warn('[models] retrying OpenCode model discovery failed; preserving cached models', error);
|
|
223
|
-
return cachedModels;
|
|
224
|
-
}
|
|
276
|
+
logMergedDiscovery(cachedModels, discoveredModels);
|
|
277
|
+
return mergeModelLists(cachedModels, discoveredModels);
|
|
225
278
|
};
|
|
226
279
|
export const getDiscoveredModels = async (tool) => {
|
|
227
280
|
if (tool === 'claude') {
|
|
@@ -232,6 +285,7 @@ export const getDiscoveredModels = async (tool) => {
|
|
|
232
285
|
}
|
|
233
286
|
const cached = modelCache.get(tool);
|
|
234
287
|
if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
|
|
288
|
+
console.warn(`[models] cache hit, age=${Math.round((Date.now() - cached.timestamp) / 1000)}s, ${cached.models.length} models, providers=[${toProviderSummary(cached.models).join(',')}]`);
|
|
235
289
|
return cached.models;
|
|
236
290
|
}
|
|
237
291
|
const inFlightDiscovery = inFlightModelDiscovery.get(tool);
|
|
@@ -263,6 +317,5 @@ export const getDiscoveredModels = async (tool) => {
|
|
|
263
317
|
};
|
|
264
318
|
export const clearModelCache = () => {
|
|
265
319
|
modelCache.clear();
|
|
266
|
-
inFlightModelDiscovery.clear();
|
|
267
320
|
};
|
|
268
321
|
//# sourceMappingURL=models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../server/lib/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../server/lib/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { resolveOpencodeDbPath } from './runtimePaths.js';
|
|
3
|
+
const normalizeToolName = (value) => {
|
|
4
|
+
return typeof value === 'string' ? value.toLowerCase().replace(/[^a-z0-9]/g, '') : '';
|
|
5
|
+
};
|
|
6
|
+
const isTaskTool = (value) => {
|
|
7
|
+
const normalized = normalizeToolName(value);
|
|
8
|
+
return normalized === 'task' || normalized === 'subagent' || normalized === 'agent';
|
|
9
|
+
};
|
|
10
|
+
const parseJsonObject = (value) => {
|
|
11
|
+
if (!value) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(value);
|
|
16
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
17
|
+
? parsed
|
|
18
|
+
: null;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const getString = (value) => {
|
|
25
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
26
|
+
};
|
|
27
|
+
const getNestedString = (value, paths) => {
|
|
28
|
+
for (const path of paths) {
|
|
29
|
+
let current = value;
|
|
30
|
+
for (const segment of path) {
|
|
31
|
+
if (!current || typeof current !== 'object' || !(segment in current)) {
|
|
32
|
+
current = null;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
current = current[segment];
|
|
36
|
+
}
|
|
37
|
+
const resolved = getString(current);
|
|
38
|
+
if (resolved) {
|
|
39
|
+
return resolved;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
};
|
|
44
|
+
const getTaskLabel = (part) => {
|
|
45
|
+
const description = getNestedString(part, [
|
|
46
|
+
['state', 'input', 'description'],
|
|
47
|
+
['state', 'input', 'title'],
|
|
48
|
+
['state', 'input', 'task'],
|
|
49
|
+
['state', 'input', 'subagent_type'],
|
|
50
|
+
['state', 'input', 'prompt'],
|
|
51
|
+
]) ?? 'Subagent';
|
|
52
|
+
const firstLine = description.split('\n')[0] ?? description;
|
|
53
|
+
const clipped = firstLine.length > 120 ? `${firstLine.slice(0, 117)}...` : firstLine;
|
|
54
|
+
return clipped.startsWith('Subagent:') ? clipped : `Subagent: ${clipped}`;
|
|
55
|
+
};
|
|
56
|
+
export const parseOpencodeTaskEnvelope = (value) => {
|
|
57
|
+
if (!value) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const taskStart = value.match(/<task\b([^>]*)>/i);
|
|
61
|
+
if (!taskStart) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const attributes = taskStart[1] ?? '';
|
|
65
|
+
const childSessionId = attributes.match(/\bid=["']([^"']+)["']/i)?.[1]?.trim() || null;
|
|
66
|
+
const state = attributes.match(/\bstate=["']([^"']+)["']/i)?.[1]?.trim() || null;
|
|
67
|
+
const taskContent = value.slice((taskStart.index ?? 0) + taskStart[0].length);
|
|
68
|
+
const resultStart = taskContent.match(/<task_result>/i);
|
|
69
|
+
if (!resultStart) {
|
|
70
|
+
return { childSessionId, state, result: null };
|
|
71
|
+
}
|
|
72
|
+
const resultContent = taskContent.slice((resultStart.index ?? 0) + resultStart[0].length);
|
|
73
|
+
const resultEndIndex = resultContent.search(/<\/task_result>|<\/task>/i);
|
|
74
|
+
const result = (resultEndIndex >= 0 ? resultContent.slice(0, resultEndIndex) : resultContent).trim() || null;
|
|
75
|
+
return { childSessionId, state, result };
|
|
76
|
+
};
|
|
77
|
+
const mapTaskStatus = (value) => {
|
|
78
|
+
const normalized = value?.toLowerCase();
|
|
79
|
+
if (normalized === 'error' || normalized === 'failed') {
|
|
80
|
+
return 'error';
|
|
81
|
+
}
|
|
82
|
+
if (normalized === 'completed' || normalized === 'complete' || normalized === 'done') {
|
|
83
|
+
return 'done';
|
|
84
|
+
}
|
|
85
|
+
return 'running';
|
|
86
|
+
};
|
|
87
|
+
const getColumns = (database, table) => {
|
|
88
|
+
return new Set(database.prepare(`PRAGMA table_info(${table})`).all()
|
|
89
|
+
.map(row => row.name)
|
|
90
|
+
.filter((name) => Boolean(name)));
|
|
91
|
+
};
|
|
92
|
+
export const createOpencodeTaskSessionReader = () => {
|
|
93
|
+
let database = null;
|
|
94
|
+
try {
|
|
95
|
+
database = new Database(resolveOpencodeDbPath(), { readonly: true });
|
|
96
|
+
const sessionColumns = getColumns(database, 'session');
|
|
97
|
+
const messageColumns = getColumns(database, 'message');
|
|
98
|
+
const partColumns = getColumns(database, 'part');
|
|
99
|
+
const canReadTasks = ['id', 'session_id', 'time_created', 'data'].every(column => partColumns.has(column));
|
|
100
|
+
const canFindChildren = ['id', 'parent_id', 'time_created'].every(column => sessionColumns.has(column));
|
|
101
|
+
const canReadTranscript = canReadTasks
|
|
102
|
+
&& ['id', 'session_id', 'data'].every(column => messageColumns.has(column))
|
|
103
|
+
&& partColumns.has('message_id');
|
|
104
|
+
if (!canReadTasks) {
|
|
105
|
+
database.close();
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const listTaskInvocations = (parentSessionId, since) => {
|
|
109
|
+
if (!database) {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
const rows = database.prepare(`
|
|
113
|
+
SELECT id, data, time_created
|
|
114
|
+
FROM part
|
|
115
|
+
WHERE session_id = ? AND time_created >= ?
|
|
116
|
+
ORDER BY time_created ASC, id ASC
|
|
117
|
+
`).all(parentSessionId, since);
|
|
118
|
+
return rows.flatMap(row => {
|
|
119
|
+
const part = parseJsonObject(row.data);
|
|
120
|
+
if (!part || part.type !== 'tool' || !isTaskTool(part.tool)) {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
const callId = getNestedString(part, [['callID'], ['callId'], ['id']]);
|
|
124
|
+
if (!callId) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
const rawOutput = getNestedString(part, [['state', 'output']]);
|
|
128
|
+
const envelope = parseOpencodeTaskEnvelope(rawOutput);
|
|
129
|
+
const childSessionId = getNestedString(part, [
|
|
130
|
+
['state', 'metadata', 'sessionID'],
|
|
131
|
+
['state', 'metadata', 'sessionId'],
|
|
132
|
+
['state', 'metadata', 'session_id'],
|
|
133
|
+
]) ?? envelope?.childSessionId ?? null;
|
|
134
|
+
const rawStatus = getNestedString(part, [['state', 'status']]) ?? envelope?.state ?? null;
|
|
135
|
+
return [{
|
|
136
|
+
callId,
|
|
137
|
+
label: getTaskLabel(part),
|
|
138
|
+
status: mapTaskStatus(rawStatus),
|
|
139
|
+
output: envelope ? envelope.result : rawOutput,
|
|
140
|
+
childSessionId,
|
|
141
|
+
timeCreated: Number(row.time_created ?? 0),
|
|
142
|
+
}];
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
const findParentSessionSince = (since) => {
|
|
146
|
+
if (!database) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const parentFilter = canFindChildren ? 'AND parent_id IS NULL' : '';
|
|
150
|
+
const row = database.prepare(`
|
|
151
|
+
SELECT id, title, time_created
|
|
152
|
+
FROM session
|
|
153
|
+
WHERE time_created >= ? ${parentFilter}
|
|
154
|
+
ORDER BY time_created ASC
|
|
155
|
+
LIMIT 1
|
|
156
|
+
`).get(since);
|
|
157
|
+
return getString(row?.id);
|
|
158
|
+
};
|
|
159
|
+
const listChildSessions = (parentSessionId, since) => {
|
|
160
|
+
if (!database || !canFindChildren) {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
const titleColumn = sessionColumns.has('title') ? 'title' : 'NULL AS title';
|
|
164
|
+
const rows = database.prepare(`
|
|
165
|
+
SELECT id, ${titleColumn}, time_created
|
|
166
|
+
FROM session
|
|
167
|
+
WHERE parent_id = ? AND time_created >= ?
|
|
168
|
+
ORDER BY time_created ASC, id ASC
|
|
169
|
+
`).all(parentSessionId, since);
|
|
170
|
+
return rows.flatMap(row => {
|
|
171
|
+
const id = getString(row.id);
|
|
172
|
+
return id ? [{ id, title: getString(row.title), timeCreated: Number(row.time_created ?? 0) }] : [];
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
const listSessionParts = (sessionId) => {
|
|
176
|
+
if (!database || !canReadTranscript) {
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
const rows = database.prepare(`
|
|
180
|
+
SELECT p.id, p.data, p.time_created, m.data AS message_data
|
|
181
|
+
FROM part p
|
|
182
|
+
INNER JOIN message m ON m.id = p.message_id
|
|
183
|
+
WHERE p.session_id = ?
|
|
184
|
+
ORDER BY p.time_created ASC, p.id ASC
|
|
185
|
+
`).all(sessionId);
|
|
186
|
+
return rows.flatMap(row => {
|
|
187
|
+
const part = parseJsonObject(row.data);
|
|
188
|
+
const message = parseJsonObject(row.message_data);
|
|
189
|
+
if (!part) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
return [{
|
|
193
|
+
id: getString(row.id) ?? `${row.time_created ?? 0}`,
|
|
194
|
+
role: getString(message?.role),
|
|
195
|
+
timeCreated: Number(row.time_created ?? 0),
|
|
196
|
+
data: part,
|
|
197
|
+
}];
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
return {
|
|
201
|
+
findParentSessionSince,
|
|
202
|
+
listTaskInvocations,
|
|
203
|
+
listChildSessions,
|
|
204
|
+
listSessionParts,
|
|
205
|
+
close: () => {
|
|
206
|
+
database?.close();
|
|
207
|
+
database = null;
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
database?.close();
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=opencodeTaskSessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeTaskSessions.js","sourceRoot":"","sources":["../../../server/lib/opencodeTaskSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -288,6 +288,7 @@ export const serializeProjectMemoryFromConventionValue = (convention) => {
|
|
|
288
288
|
source_stage: null,
|
|
289
289
|
ticket_id: null,
|
|
290
290
|
chat_session_id: null,
|
|
291
|
+
spec_session_id: null,
|
|
291
292
|
duplicate_match: null,
|
|
292
293
|
created_at: convention.created_at,
|
|
293
294
|
updated_at: convention.updated_at,
|
|
@@ -314,6 +315,7 @@ export const serializeProjectMemoryFromDecisionValue = (decision) => {
|
|
|
314
315
|
source_stage: null,
|
|
315
316
|
ticket_id: null,
|
|
316
317
|
chat_session_id: null,
|
|
318
|
+
spec_session_id: null,
|
|
317
319
|
duplicate_match: null,
|
|
318
320
|
created_at: decision.created_at,
|
|
319
321
|
updated_at: decision.updated_at,
|
|
@@ -458,6 +460,7 @@ const serializeProjectMemorySuggestion = (row) => {
|
|
|
458
460
|
project_id: row.project_id,
|
|
459
461
|
ticket_id: row.ticket_id,
|
|
460
462
|
chat_session_id: row.chat_session_id,
|
|
463
|
+
spec_session_id: row.spec_session_id,
|
|
461
464
|
source_stage: row.source_stage,
|
|
462
465
|
kind: 'decision',
|
|
463
466
|
title: values.title,
|
|
@@ -484,6 +487,7 @@ const serializeProjectMemorySuggestion = (row) => {
|
|
|
484
487
|
project_id: row.project_id,
|
|
485
488
|
ticket_id: row.ticket_id,
|
|
486
489
|
chat_session_id: row.chat_session_id,
|
|
490
|
+
spec_session_id: row.spec_session_id,
|
|
487
491
|
source_stage: row.source_stage,
|
|
488
492
|
kind: 'convention',
|
|
489
493
|
title: values.title,
|
|
@@ -531,6 +535,7 @@ export const serializeProjectMemoryFromSuggestionValue = (suggestion) => {
|
|
|
531
535
|
source_stage: suggestion.source_stage,
|
|
532
536
|
ticket_id: suggestion.ticket_id,
|
|
533
537
|
chat_session_id: suggestion.chat_session_id,
|
|
538
|
+
spec_session_id: suggestion.spec_session_id,
|
|
534
539
|
duplicate_match: suggestion.duplicate_match?.decision
|
|
535
540
|
? {
|
|
536
541
|
type: 'near_duplicate',
|
|
@@ -561,6 +566,7 @@ export const serializeProjectMemoryFromSuggestionValue = (suggestion) => {
|
|
|
561
566
|
source_stage: suggestion.source_stage,
|
|
562
567
|
ticket_id: suggestion.ticket_id,
|
|
563
568
|
chat_session_id: suggestion.chat_session_id,
|
|
569
|
+
spec_session_id: suggestion.spec_session_id,
|
|
564
570
|
duplicate_match: suggestion.duplicate_match?.convention
|
|
565
571
|
? {
|
|
566
572
|
type: 'near_duplicate',
|
|
@@ -1117,13 +1123,14 @@ const getProjectMemorySuggestionRowById = (projectId, suggestionId) => {
|
|
|
1117
1123
|
AND project_id = ?
|
|
1118
1124
|
`).get(suggestionId, projectId);
|
|
1119
1125
|
};
|
|
1120
|
-
const listProjectMemorySuggestionRows = (projectId, { ticketId, chatSessionId, status = 'pending', } = {}) => {
|
|
1126
|
+
const listProjectMemorySuggestionRows = (projectId, { ticketId, chatSessionId, specSessionId, status = 'pending', } = {}) => {
|
|
1121
1127
|
const rows = db.prepare(`
|
|
1122
1128
|
SELECT *
|
|
1123
1129
|
FROM project_memory_suggestions
|
|
1124
|
-
|
|
1130
|
+
WHERE project_id = ?
|
|
1125
1131
|
${ticketId ? 'AND ticket_id = ?' : ''}
|
|
1126
1132
|
${chatSessionId ? 'AND chat_session_id = ?' : ''}
|
|
1133
|
+
${specSessionId ? 'AND spec_session_id = ?' : ''}
|
|
1127
1134
|
${status ? 'AND status = ?' : ''}
|
|
1128
1135
|
ORDER BY
|
|
1129
1136
|
updated_at DESC,
|
|
@@ -1133,6 +1140,7 @@ const listProjectMemorySuggestionRows = (projectId, { ticketId, chatSessionId, s
|
|
|
1133
1140
|
projectId,
|
|
1134
1141
|
...(ticketId ? [ticketId] : []),
|
|
1135
1142
|
...(chatSessionId ? [chatSessionId] : []),
|
|
1143
|
+
...(specSessionId ? [specSessionId] : []),
|
|
1136
1144
|
...(status ? [status] : []),
|
|
1137
1145
|
]));
|
|
1138
1146
|
return rows.filter(row => PROJECT_MEMORY_SUGGESTION_STATUSES.includes(row.status));
|
|
@@ -1146,6 +1154,15 @@ const listResolvedProjectMemoryIdsForChatSession = (projectId, chatSessionId) =>
|
|
|
1146
1154
|
})
|
|
1147
1155
|
.map(row => row.resolved_memory_id));
|
|
1148
1156
|
};
|
|
1157
|
+
const listResolvedProjectMemoryIdsForSpecSession = (projectId, specSessionId) => {
|
|
1158
|
+
return new Set(listProjectMemorySuggestionRows(projectId, { specSessionId, status: null })
|
|
1159
|
+
.filter(row => {
|
|
1160
|
+
return (row.status === 'accepted' || row.status === 'applied_to_existing')
|
|
1161
|
+
&& typeof row.resolved_memory_id === 'string'
|
|
1162
|
+
&& row.resolved_memory_id.trim().length > 0;
|
|
1163
|
+
})
|
|
1164
|
+
.map(row => row.resolved_memory_id));
|
|
1165
|
+
};
|
|
1149
1166
|
const toProjectMemorySuggestionCandidate = (row) => {
|
|
1150
1167
|
const values = parseProjectMemorySuggestionValues(row);
|
|
1151
1168
|
if (!values) {
|
|
@@ -1156,12 +1173,12 @@ const toProjectMemorySuggestionCandidate = (row) => {
|
|
|
1156
1173
|
...values,
|
|
1157
1174
|
};
|
|
1158
1175
|
};
|
|
1159
|
-
export const listProjectMemorySuggestions = (projectId, { ticketId, chatSessionId, status = 'pending', } = {}) => {
|
|
1160
|
-
return listProjectMemorySuggestionRows(projectId, { ticketId, chatSessionId, status })
|
|
1176
|
+
export const listProjectMemorySuggestions = (projectId, { ticketId, chatSessionId, specSessionId, status = 'pending', } = {}) => {
|
|
1177
|
+
return listProjectMemorySuggestionRows(projectId, { ticketId, chatSessionId, specSessionId, status })
|
|
1161
1178
|
.map(serializeProjectMemorySuggestion)
|
|
1162
1179
|
.filter((suggestion) => suggestion !== null);
|
|
1163
1180
|
};
|
|
1164
|
-
export const listProjectMemories = (projectId, { states, kinds, sources, ticketId, chatSessionId, } = {}) => {
|
|
1181
|
+
export const listProjectMemories = (projectId, { states, kinds, sources, ticketId, chatSessionId, specSessionId, } = {}) => {
|
|
1165
1182
|
const allowedStates = (states ?? []).filter(state => PROJECT_MEMORY_STATES.includes(state));
|
|
1166
1183
|
const allowedKinds = (kinds ?? []).filter(kind => PROJECT_MEMORY_KINDS.includes(kind));
|
|
1167
1184
|
const allowedSources = (sources ?? []).filter(source => PROJECT_MEMORY_SOURCES.includes(source));
|
|
@@ -1195,6 +1212,7 @@ export const listProjectMemories = (projectId, { states, kinds, sources, ticketI
|
|
|
1195
1212
|
...listProjectMemorySuggestionRows(projectId, {
|
|
1196
1213
|
ticketId,
|
|
1197
1214
|
chatSessionId,
|
|
1215
|
+
specSessionId,
|
|
1198
1216
|
status: null,
|
|
1199
1217
|
})
|
|
1200
1218
|
.map(serializeProjectMemoryFromSuggestion)
|
|
@@ -1236,7 +1254,7 @@ export const getProjectMemoryById = (projectId, memoryId) => {
|
|
|
1236
1254
|
return suggestion ? serializeProjectMemoryFromSuggestionValue(suggestion) : null;
|
|
1237
1255
|
};
|
|
1238
1256
|
const persistProjectMemorySuggestionsForSource = (projectId, source, sourceStage, suggestions) => {
|
|
1239
|
-
if (!source.ticketId && !source.chatSessionId) {
|
|
1257
|
+
if (!source.ticketId && !source.chatSessionId && !source.specSessionId) {
|
|
1240
1258
|
return [];
|
|
1241
1259
|
}
|
|
1242
1260
|
if (suggestions.length === 0) {
|
|
@@ -1250,6 +1268,9 @@ const persistProjectMemorySuggestionsForSource = (projectId, source, sourceStage
|
|
|
1250
1268
|
const resolvedChatSessionMemoryIds = source.chatSessionId
|
|
1251
1269
|
? listResolvedProjectMemoryIdsForChatSession(projectId, source.chatSessionId)
|
|
1252
1270
|
: new Set();
|
|
1271
|
+
const resolvedSpecSessionMemoryIds = source.specSessionId
|
|
1272
|
+
? listResolvedProjectMemoryIdsForSpecSession(projectId, source.specSessionId)
|
|
1273
|
+
: new Set();
|
|
1253
1274
|
const createdIds = [];
|
|
1254
1275
|
for (const suggestion of suggestions) {
|
|
1255
1276
|
const duplicate = classifyProjectMemorySuggestionDuplicate({
|
|
@@ -1266,6 +1287,11 @@ const persistProjectMemorySuggestionsForSource = (projectId, source, sourceStage
|
|
|
1266
1287
|
&& resolvedChatSessionMemoryIds.has(duplicate.targetMemoryId)) {
|
|
1267
1288
|
continue;
|
|
1268
1289
|
}
|
|
1290
|
+
if (duplicate?.action === 'mark_near_duplicate'
|
|
1291
|
+
&& source.specSessionId
|
|
1292
|
+
&& resolvedSpecSessionMemoryIds.has(duplicate.targetMemoryId)) {
|
|
1293
|
+
continue;
|
|
1294
|
+
}
|
|
1269
1295
|
const id = randomUUID();
|
|
1270
1296
|
db.prepare(`
|
|
1271
1297
|
INSERT INTO project_memory_suggestions (
|
|
@@ -1273,6 +1299,7 @@ const persistProjectMemorySuggestionsForSource = (projectId, source, sourceStage
|
|
|
1273
1299
|
project_id,
|
|
1274
1300
|
ticket_id,
|
|
1275
1301
|
chat_session_id,
|
|
1302
|
+
spec_session_id,
|
|
1276
1303
|
source_stage,
|
|
1277
1304
|
kind,
|
|
1278
1305
|
title,
|
|
@@ -1285,8 +1312,8 @@ const persistProjectMemorySuggestionsForSource = (projectId, source, sourceStage
|
|
|
1285
1312
|
status,
|
|
1286
1313
|
resolved_memory_id
|
|
1287
1314
|
)
|
|
1288
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', NULL)
|
|
1289
|
-
`).run(id, projectId, source.ticketId ?? null, source.chatSessionId ?? null, sourceStage, suggestion.kind, suggestion.title, suggestion.scope, getProjectMemorySuggestionContent(suggestion), suggestion.rationale, JSON.stringify(suggestion.kind === 'decision'
|
|
1315
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', NULL)
|
|
1316
|
+
`).run(id, projectId, source.ticketId ?? null, source.chatSessionId ?? null, source.specSessionId ?? null, sourceStage, suggestion.kind, suggestion.title, suggestion.scope, getProjectMemorySuggestionContent(suggestion), suggestion.rationale, JSON.stringify(suggestion.kind === 'decision'
|
|
1290
1317
|
? { implications: suggestion.implications }
|
|
1291
1318
|
: { stages: suggestion.stages, priority: suggestion.priority, injection_mode: suggestion.injection_mode }), duplicate?.action === 'mark_near_duplicate' ? 'near_duplicate' : 'none', duplicate?.action === 'mark_near_duplicate' ? duplicate.targetMemoryId : null);
|
|
1292
1319
|
createdIds.push(id);
|
|
@@ -1302,6 +1329,9 @@ export const persistProjectMemorySuggestions = (projectId, ticketId, sourceStage
|
|
|
1302
1329
|
export const persistChatSessionProjectMemorySuggestions = (projectId, chatSessionId, suggestions) => {
|
|
1303
1330
|
return persistProjectMemorySuggestionsForSource(projectId, { chatSessionId }, 'chat', suggestions);
|
|
1304
1331
|
};
|
|
1332
|
+
export const persistSpecSessionProjectMemorySuggestions = (projectId, specSessionId, suggestions) => {
|
|
1333
|
+
return persistProjectMemorySuggestionsForSource(projectId, { specSessionId }, 'plan', suggestions);
|
|
1334
|
+
};
|
|
1305
1335
|
const updateProjectMemorySuggestionStatus = (projectId, suggestionId, status, resolvedMemoryId) => {
|
|
1306
1336
|
db.prepare(`
|
|
1307
1337
|
UPDATE project_memory_suggestions
|