@dtoolkit/dcontext 0.1.0 → 0.1.1
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/index.js +30 -6
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -173,6 +173,26 @@ async function updateStats(fn) {
|
|
|
173
173
|
await ensureDataDir();
|
|
174
174
|
await atomicWriteFile(join(DATA_DIR, "stats.json"), JSON.stringify(stats, null, 2) + "\n");
|
|
175
175
|
}
|
|
176
|
+
async function loadSessionOffset(sessionId) {
|
|
177
|
+
try {
|
|
178
|
+
const raw = await readFile(join(DATA_DIR, "sessions.json"), "utf-8");
|
|
179
|
+
const sessions = JSON.parse(raw);
|
|
180
|
+
return sessions[sessionId] ?? 0;
|
|
181
|
+
} catch {
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async function saveSessionOffset(sessionId, offset) {
|
|
186
|
+
await ensureDataDir();
|
|
187
|
+
let sessions = {};
|
|
188
|
+
try {
|
|
189
|
+
const raw = await readFile(join(DATA_DIR, "sessions.json"), "utf-8");
|
|
190
|
+
sessions = JSON.parse(raw);
|
|
191
|
+
} catch {
|
|
192
|
+
}
|
|
193
|
+
sessions[sessionId] = offset;
|
|
194
|
+
await atomicWriteFile(join(DATA_DIR, "sessions.json"), JSON.stringify(sessions, null, 2) + "\n");
|
|
195
|
+
}
|
|
176
196
|
async function logError(message) {
|
|
177
197
|
try {
|
|
178
198
|
await ensureDataDir();
|
|
@@ -244,24 +264,28 @@ async function extractAndSave(sessionId, target, cwd, config) {
|
|
|
244
264
|
}
|
|
245
265
|
const filtered = entries.filter((e) => e.content.length >= 50);
|
|
246
266
|
if (filtered.length === 0) return null;
|
|
247
|
-
const
|
|
267
|
+
const savedOffset = await loadSessionOffset(sessionId);
|
|
268
|
+
const newMessages = filtered.slice(savedOffset).map((e) => ({ role: e.role, content: e.content }));
|
|
269
|
+
if (newMessages.length === 0) return null;
|
|
248
270
|
try {
|
|
249
271
|
const client = new DBrainClient2(config.dbrain.url, config.dbrain.token);
|
|
250
|
-
|
|
251
|
-
await client.sendMessages(
|
|
272
|
+
await client.startConversation(`dcontext-${target.name}`, sessionId);
|
|
273
|
+
await client.sendMessages(sessionId, newMessages);
|
|
252
274
|
} catch (err) {
|
|
253
275
|
await logError(`Failed to save to dbrain: ${err.message}`);
|
|
276
|
+
return null;
|
|
254
277
|
}
|
|
278
|
+
await saveSessionOffset(sessionId, filtered.length);
|
|
255
279
|
await updateStats((stats) => {
|
|
256
280
|
stats.extractions.total++;
|
|
257
281
|
stats.extractions.lastAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
258
|
-
stats.extractions.messagesSaved +=
|
|
282
|
+
stats.extractions.messagesSaved += newMessages.length;
|
|
259
283
|
if (!stats.byTarget[target.name]) {
|
|
260
284
|
stats.byTarget[target.name] = { briefings: 0, extractions: 0 };
|
|
261
285
|
}
|
|
262
286
|
stats.byTarget[target.name].extractions++;
|
|
263
287
|
});
|
|
264
|
-
return `Session log saved to dbrain (${
|
|
288
|
+
return `Session log saved to dbrain (${newMessages.length} new messages from ${target.name})`;
|
|
265
289
|
}
|
|
266
290
|
|
|
267
291
|
// src/commands/targets.ts
|
|
@@ -798,7 +822,7 @@ var description = `${pc6.green(banner)}
|
|
|
798
822
|
|
|
799
823
|
${pc6.green("dbrain hooks for AI coding CLIs")}
|
|
800
824
|
${pc6.dim("Part of the dtoolkit suite")}`;
|
|
801
|
-
program.name("dcontext").description(description).version("0.1.
|
|
825
|
+
program.name("dcontext").description(description).version("0.1.1");
|
|
802
826
|
var guarded = (cmd) => {
|
|
803
827
|
cmd.hook("preAction", async () => {
|
|
804
828
|
await requireInit();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dtoolkit/dcontext",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "dbrain hooks for AI coding CLIs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"@clack/prompts": "^1.3.0",
|
|
41
41
|
"commander": "^13.0.0",
|
|
42
42
|
"picocolors": "^1.1.0",
|
|
43
|
-
"@dtoolkit/adapter-gemini": "1.3.0",
|
|
44
43
|
"@dtoolkit/adapter-claude": "1.3.0",
|
|
45
|
-
"@dtoolkit/
|
|
46
|
-
"@dtoolkit/sdk": "0.3.1",
|
|
44
|
+
"@dtoolkit/adapter-codex": "1.3.0",
|
|
47
45
|
"@dtoolkit/adapter-opencode": "1.3.0",
|
|
48
|
-
"@dtoolkit/
|
|
46
|
+
"@dtoolkit/sdk": "0.3.1",
|
|
47
|
+
"@dtoolkit/adapter-gemini": "1.3.0",
|
|
48
|
+
"@dtoolkit/core": "0.4.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/node": "^22.0.0",
|