bernard-agent 0.2.2 → 0.3.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/.env.example +10 -0
- package/README.md +16 -6
- package/dist/agent.d.ts +4 -0
- package/dist/agent.js +84 -38
- package/dist/agent.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +38 -1
- package/dist/context.js +171 -41
- package/dist/context.js.map +1 -1
- package/dist/cron/runner.js +33 -1
- package/dist/cron/runner.js.map +1 -1
- package/dist/domains.d.ts +10 -0
- package/dist/domains.js +118 -0
- package/dist/domains.js.map +1 -0
- package/dist/facts-cli.d.ts +7 -0
- package/dist/facts-cli.js +197 -0
- package/dist/facts-cli.js.map +1 -0
- package/dist/index.js +62 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.js +1 -2
- package/dist/logger.js.map +1 -1
- package/dist/memory-context.d.ts +13 -0
- package/dist/memory-context.js +48 -0
- package/dist/memory-context.js.map +1 -0
- package/dist/output.js +39 -35
- package/dist/output.js.map +1 -1
- package/dist/rag-query.d.ts +31 -0
- package/dist/rag-query.js +99 -0
- package/dist/rag-query.js.map +1 -0
- package/dist/rag-worker.d.ts +1 -1
- package/dist/rag-worker.js +9 -6
- package/dist/rag-worker.js.map +1 -1
- package/dist/rag.d.ts +36 -5
- package/dist/rag.js +118 -31
- package/dist/rag.js.map +1 -1
- package/dist/repl.js +119 -12
- package/dist/repl.js.map +1 -1
- package/dist/setup.js +17 -18
- package/dist/setup.js.map +1 -1
- package/dist/theme.d.ts +28 -0
- package/dist/theme.js +154 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/subagent.d.ts +2 -1
- package/dist/tools/subagent.js +25 -5
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/wait.d.ts +14 -0
- package/dist/tools/wait.js +28 -0
- package/dist/tools/wait.js.map +1 -0
- package/dist/update.d.ts +35 -0
- package/dist/update.js +233 -0
- package/dist/update.js.map +1 -0
- package/package.json +2 -2
package/dist/context.js
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RECENT_TURNS_TO_KEEP = exports.COMPRESSION_THRESHOLD = exports.DEFAULT_CONTEXT_WINDOW = exports.MODEL_CONTEXT_WINDOWS = void 0;
|
|
3
|
+
exports.MAX_TOOL_RESULT_CHARS = exports.RECENT_TURNS_TO_KEEP = exports.COMPRESSION_THRESHOLD = exports.DEFAULT_CONTEXT_WINDOW = exports.MODEL_CONTEXT_WINDOWS = void 0;
|
|
4
4
|
exports.getContextWindow = getContextWindow;
|
|
5
5
|
exports.shouldCompress = shouldCompress;
|
|
6
6
|
exports.serializeMessages = serializeMessages;
|
|
7
7
|
exports.countRecentMessages = countRecentMessages;
|
|
8
|
+
exports.extractDomainFacts = extractDomainFacts;
|
|
8
9
|
exports.extractFacts = extractFacts;
|
|
9
10
|
exports.compressHistory = compressHistory;
|
|
11
|
+
exports.truncateToolResults = truncateToolResults;
|
|
12
|
+
exports.estimateHistoryTokens = estimateHistoryTokens;
|
|
13
|
+
exports.emergencyTruncate = emergencyTruncate;
|
|
14
|
+
exports.isTokenOverflowError = isTokenOverflowError;
|
|
15
|
+
exports.extractText = extractText;
|
|
10
16
|
const ai_1 = require("ai");
|
|
11
17
|
const index_js_1 = require("./providers/index.js");
|
|
12
18
|
const logger_js_1 = require("./logger.js");
|
|
19
|
+
const domains_js_1 = require("./domains.js");
|
|
13
20
|
/** Model name → context window size in tokens */
|
|
14
21
|
exports.MODEL_CONTEXT_WINDOWS = {
|
|
15
22
|
// Anthropic
|
|
@@ -111,56 +118,58 @@ function countRecentMessages(history, turnsToKeep) {
|
|
|
111
118
|
// Fewer user turns than turnsToKeep — nothing to compress
|
|
112
119
|
return 0;
|
|
113
120
|
}
|
|
114
|
-
const FACT_EXTRACTION_PROMPT = `You are a fact extraction system. Extract notable, self-contained facts from the conversation below that would be useful to recall in future sessions.
|
|
115
|
-
|
|
116
|
-
Extract:
|
|
117
|
-
- User preferences and habits
|
|
118
|
-
- Project details, structure, and conventions
|
|
119
|
-
- Technical environment info (OS, languages, tools, versions)
|
|
120
|
-
- Decisions made and their reasoning
|
|
121
|
-
- Recurring patterns or workflows
|
|
122
|
-
- Names, roles, and relationships mentioned
|
|
123
|
-
|
|
124
|
-
Do NOT extract:
|
|
125
|
-
- Task-specific transient details (e.g., "the user asked to fix a typo on line 42")
|
|
126
|
-
- Generic knowledge that any AI would know
|
|
127
|
-
- Greetings, filler, or conversational noise
|
|
128
|
-
|
|
129
|
-
Return a JSON array of strings. Each string should be a self-contained fact (understandable without the original conversation). Maximum 500 characters per fact. If there are no notable facts, return an empty array [].`;
|
|
130
121
|
const FACT_EXTRACTION_MAX = 500;
|
|
131
122
|
/**
|
|
132
|
-
* Extract
|
|
133
|
-
*
|
|
134
|
-
*
|
|
123
|
+
* Extract facts from serialized conversation text using domain-specific prompts.
|
|
124
|
+
* Runs all domain extractors in parallel via Promise.allSettled.
|
|
125
|
+
* Partial failures (one domain errors) don't block others.
|
|
135
126
|
*/
|
|
136
|
-
async function
|
|
127
|
+
async function extractDomainFacts(serializedText, config) {
|
|
137
128
|
if (!serializedText.trim())
|
|
138
129
|
return [];
|
|
139
|
-
|
|
130
|
+
const domainIds = (0, domains_js_1.getDomainIds)();
|
|
131
|
+
const results = await Promise.allSettled(domainIds.map(async (domainId) => {
|
|
132
|
+
const domain = domains_js_1.DOMAIN_REGISTRY[domainId];
|
|
140
133
|
const result = await (0, ai_1.generateText)({
|
|
141
134
|
model: (0, index_js_1.getModel)(config.provider, config.model),
|
|
142
135
|
maxTokens: 2048,
|
|
143
|
-
system:
|
|
136
|
+
system: domain.extractionPrompt,
|
|
144
137
|
messages: [
|
|
145
138
|
{ role: 'user', content: `Extract facts from this conversation:\n\n${serializedText}` },
|
|
146
139
|
],
|
|
147
140
|
});
|
|
148
141
|
const text = result.text?.trim();
|
|
149
142
|
if (!text)
|
|
150
|
-
return [];
|
|
143
|
+
return { domain: domainId, facts: [] };
|
|
151
144
|
// Parse JSON array from response — handle markdown code fences
|
|
152
145
|
const jsonStr = text.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '');
|
|
153
146
|
const parsed = JSON.parse(jsonStr);
|
|
154
147
|
if (!Array.isArray(parsed))
|
|
155
|
-
return [];
|
|
156
|
-
|
|
148
|
+
return { domain: domainId, facts: [] };
|
|
149
|
+
const facts = parsed
|
|
157
150
|
.filter((item) => typeof item === 'string' && item.length > 0)
|
|
158
151
|
.filter((item) => item.length <= FACT_EXTRACTION_MAX);
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
152
|
+
return { domain: domainId, facts };
|
|
153
|
+
}));
|
|
154
|
+
const domainFacts = [];
|
|
155
|
+
results.forEach((result, index) => {
|
|
156
|
+
if (result.status === 'fulfilled' && result.value.facts.length > 0) {
|
|
157
|
+
domainFacts.push(result.value);
|
|
158
|
+
}
|
|
159
|
+
else if (result.status === 'rejected') {
|
|
160
|
+
(0, logger_js_1.debugLog)('context:extractDomainFacts', `Domain "${domainIds[index]}" extraction failed: ${result.reason instanceof Error ? result.reason.message : String(result.reason)}`);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
return domainFacts;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Extract notable facts from serialized conversation text via LLM.
|
|
167
|
+
* Returns a flat array of facts (backward-compatible wrapper around extractDomainFacts).
|
|
168
|
+
* @internal
|
|
169
|
+
*/
|
|
170
|
+
async function extractFacts(serializedText, config) {
|
|
171
|
+
const domainFacts = await extractDomainFacts(serializedText, config);
|
|
172
|
+
return domainFacts.flatMap((df) => df.facts);
|
|
164
173
|
}
|
|
165
174
|
const SUMMARIZATION_PROMPT = `You are a conversation summarizer. Produce a concise summary of the conversation below, preserving:
|
|
166
175
|
- Key facts, decisions, and outcomes
|
|
@@ -168,6 +177,10 @@ const SUMMARIZATION_PROMPT = `You are a conversation summarizer. Produce a conci
|
|
|
168
177
|
- Any user preferences or requirements mentioned
|
|
169
178
|
- The overall arc of what was discussed and accomplished
|
|
170
179
|
|
|
180
|
+
For each task or goal mentioned, clearly mark its status:
|
|
181
|
+
- COMPLETED — if the task was finished or resolved
|
|
182
|
+
- IN PROGRESS — if the task is still ongoing and unfinished
|
|
183
|
+
|
|
171
184
|
Be concise but complete. Use bullet points. Do not include greetings or filler.`;
|
|
172
185
|
/**
|
|
173
186
|
* Compress conversation history by summarizing older messages via the LLM.
|
|
@@ -187,7 +200,7 @@ async function compressHistory(history, config, ragStore) {
|
|
|
187
200
|
return history;
|
|
188
201
|
}
|
|
189
202
|
try {
|
|
190
|
-
// Run summarization and fact extraction in parallel
|
|
203
|
+
// Run summarization and domain-specific fact extraction in parallel
|
|
191
204
|
const summarizePromise = (0, ai_1.generateText)({
|
|
192
205
|
model: (0, index_js_1.getModel)(config.provider, config.model),
|
|
193
206
|
maxTokens: 2048,
|
|
@@ -197,14 +210,14 @@ async function compressHistory(history, config, ragStore) {
|
|
|
197
210
|
],
|
|
198
211
|
});
|
|
199
212
|
const extractPromise = ragStore
|
|
200
|
-
?
|
|
213
|
+
? extractDomainFacts(serialized, config)
|
|
201
214
|
: Promise.resolve([]);
|
|
202
|
-
const [result,
|
|
203
|
-
// Store extracted facts
|
|
204
|
-
if (ragStore &&
|
|
205
|
-
ragStore.addFacts(facts, 'compression').catch((err) => {
|
|
206
|
-
(0, logger_js_1.debugLog)('context:compress:rag', `Failed to store facts: ${err instanceof Error ? err.message : String(err)}`);
|
|
207
|
-
});
|
|
215
|
+
const [result, domainFacts] = await Promise.all([summarizePromise, extractPromise]);
|
|
216
|
+
// Store extracted facts per domain — await to prevent races on persist()
|
|
217
|
+
if (ragStore && domainFacts.length > 0) {
|
|
218
|
+
await Promise.all(domainFacts.map((df) => ragStore.addFacts(df.facts, 'compression', df.domain).catch((err) => {
|
|
219
|
+
(0, logger_js_1.debugLog)('context:compress:rag', `Failed to store facts for domain ${df.domain}: ${err instanceof Error ? err.message : String(err)}`);
|
|
220
|
+
})));
|
|
208
221
|
}
|
|
209
222
|
const summary = result.text?.trim();
|
|
210
223
|
if (!summary) {
|
|
@@ -213,7 +226,7 @@ async function compressHistory(history, config, ragStore) {
|
|
|
213
226
|
}
|
|
214
227
|
const summaryMessage = {
|
|
215
228
|
role: 'user',
|
|
216
|
-
content: `[Context Summary — earlier conversation was compressed]\n\n${summary}`,
|
|
229
|
+
content: `[Context Summary — earlier conversation was compressed. This is background context only. Focus on the messages that follow for the current task.]\n\n${summary}`,
|
|
217
230
|
};
|
|
218
231
|
const ackMessage = {
|
|
219
232
|
role: 'assistant',
|
|
@@ -223,7 +236,7 @@ async function compressHistory(history, config, ragStore) {
|
|
|
223
236
|
oldMessageCount: oldMessages.length,
|
|
224
237
|
recentMessageCount: recentMessages.length,
|
|
225
238
|
summaryLength: summary.length,
|
|
226
|
-
|
|
239
|
+
domainFactsCount: domainFacts.reduce((sum, df) => sum + df.facts.length, 0),
|
|
227
240
|
});
|
|
228
241
|
return [summaryMessage, ackMessage, ...recentMessages];
|
|
229
242
|
}
|
|
@@ -232,6 +245,123 @@ async function compressHistory(history, config, ragStore) {
|
|
|
232
245
|
return history;
|
|
233
246
|
}
|
|
234
247
|
}
|
|
248
|
+
/** Max characters to keep per tool-result content part in history. */
|
|
249
|
+
exports.MAX_TOOL_RESULT_CHARS = 10_000;
|
|
250
|
+
/**
|
|
251
|
+
* Truncate large tool-result content parts in response messages before adding to history.
|
|
252
|
+
* The user already sees the full result via onStepFinish; the history copy just needs
|
|
253
|
+
* enough for the LLM to understand what happened on subsequent turns.
|
|
254
|
+
* Returns a new array — does not mutate the input.
|
|
255
|
+
*/
|
|
256
|
+
function truncateToolResults(messages, maxChars = exports.MAX_TOOL_RESULT_CHARS) {
|
|
257
|
+
return messages.map((msg) => {
|
|
258
|
+
if (msg.role !== 'tool' || !Array.isArray(msg.content))
|
|
259
|
+
return msg;
|
|
260
|
+
let changed = false;
|
|
261
|
+
const newContent = msg.content.map((part) => {
|
|
262
|
+
if (typeof part === 'object' &&
|
|
263
|
+
part !== null &&
|
|
264
|
+
'type' in part &&
|
|
265
|
+
part.type === 'tool-result') {
|
|
266
|
+
const resultStr = typeof part.result === 'string'
|
|
267
|
+
? part.result
|
|
268
|
+
: JSON.stringify(part.result);
|
|
269
|
+
if (resultStr.length > maxChars) {
|
|
270
|
+
changed = true;
|
|
271
|
+
return {
|
|
272
|
+
...part,
|
|
273
|
+
result: resultStr.slice(0, maxChars) +
|
|
274
|
+
`\n...[truncated from ${resultStr.length} to ${maxChars} chars]`,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return part;
|
|
279
|
+
});
|
|
280
|
+
return changed ? { ...msg, content: newContent } : msg;
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Rough-but-safe token estimator for pre-flight checks.
|
|
285
|
+
* Uses 3.6 chars/token (instead of 4) for a ~10% safety margin,
|
|
286
|
+
* since tool-result tokens can be denser than natural language.
|
|
287
|
+
*/
|
|
288
|
+
function estimateHistoryTokens(history) {
|
|
289
|
+
let chars = 0;
|
|
290
|
+
for (const msg of history) {
|
|
291
|
+
chars += JSON.stringify(msg.content).length;
|
|
292
|
+
}
|
|
293
|
+
return Math.ceil(chars / 3.6);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Progressively drop oldest messages until estimated tokens fit within budget.
|
|
297
|
+
* Always keeps at least the last 6 messages so the model has some context.
|
|
298
|
+
* Prepends a synthetic truncation notice.
|
|
299
|
+
*/
|
|
300
|
+
function emergencyTruncate(history, tokenBudget, systemPrompt, currentUserMessage) {
|
|
301
|
+
const systemTokens = Math.ceil(systemPrompt.length / 4);
|
|
302
|
+
const historyBudget = tokenBudget - systemTokens;
|
|
303
|
+
const taskHint = currentUserMessage
|
|
304
|
+
? `\n\nThe user's most recent request was: ${currentUserMessage.slice(0, 500)}`
|
|
305
|
+
: '';
|
|
306
|
+
if (historyBudget <= 0) {
|
|
307
|
+
// System prompt alone exceeds budget — keep last 6 messages anyway
|
|
308
|
+
const kept = history.slice(-6);
|
|
309
|
+
return [
|
|
310
|
+
{ role: 'user', content: `[Earlier conversation was truncated to fit context window. Focus on the most recent messages below.]${taskHint}` },
|
|
311
|
+
{ role: 'assistant', content: 'Understood. Continuing with limited context.' },
|
|
312
|
+
...kept,
|
|
313
|
+
];
|
|
314
|
+
}
|
|
315
|
+
// Walk backward, accumulating estimated tokens
|
|
316
|
+
let accumulated = 0;
|
|
317
|
+
let cutoff = history.length;
|
|
318
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
319
|
+
const msgTokens = Math.ceil(JSON.stringify(history[i].content).length / 3.6);
|
|
320
|
+
if (accumulated + msgTokens > historyBudget) {
|
|
321
|
+
cutoff = i + 1;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
accumulated += msgTokens;
|
|
325
|
+
if (i === 0)
|
|
326
|
+
cutoff = 0;
|
|
327
|
+
}
|
|
328
|
+
// Always keep at least 6 messages (covers 1-2 complete user turns with tool calls)
|
|
329
|
+
const minKeep = Math.max(0, history.length - 6);
|
|
330
|
+
if (cutoff > minKeep)
|
|
331
|
+
cutoff = minKeep;
|
|
332
|
+
// Align cutoff backward to a 'user' message boundary so the kept
|
|
333
|
+
// slice never starts with an orphaned 'tool' or 'assistant' message
|
|
334
|
+
// (which would violate provider role-ordering requirements).
|
|
335
|
+
// Searching backward (instead of forward) preserves the min-keep guarantee.
|
|
336
|
+
if (cutoff > 0 && cutoff < history.length && history[cutoff].role !== 'user') {
|
|
337
|
+
let aligned = cutoff;
|
|
338
|
+
while (aligned > 0 && history[aligned].role !== 'user') {
|
|
339
|
+
aligned--;
|
|
340
|
+
}
|
|
341
|
+
cutoff = aligned;
|
|
342
|
+
}
|
|
343
|
+
const kept = history.slice(cutoff);
|
|
344
|
+
if (cutoff === 0) {
|
|
345
|
+
// Nothing was dropped
|
|
346
|
+
return history;
|
|
347
|
+
}
|
|
348
|
+
const notice = {
|
|
349
|
+
role: 'user',
|
|
350
|
+
content: `[Earlier conversation was truncated to fit context window. Focus on the most recent messages below.]${taskHint}`,
|
|
351
|
+
};
|
|
352
|
+
const ack = {
|
|
353
|
+
role: 'assistant',
|
|
354
|
+
content: 'Understood. Continuing with limited context.',
|
|
355
|
+
};
|
|
356
|
+
return [notice, ack, ...kept];
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Detect token overflow errors from various providers.
|
|
360
|
+
* Covers Anthropic, OpenAI, and xAI error message patterns.
|
|
361
|
+
*/
|
|
362
|
+
function isTokenOverflowError(message) {
|
|
363
|
+
return /maximum.*prompt.*length|prompt.*too.*long|context.*length.*exceeded|maximum.*context.*length|token.*limit/i.test(message);
|
|
364
|
+
}
|
|
235
365
|
function extractText(msg) {
|
|
236
366
|
if (typeof msg.content === 'string')
|
|
237
367
|
return msg.content;
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/cron/runner.js
CHANGED
|
@@ -41,6 +41,9 @@ const zod_1 = require("zod");
|
|
|
41
41
|
const index_js_1 = require("../providers/index.js");
|
|
42
42
|
const config_js_1 = require("../config.js");
|
|
43
43
|
const memory_js_1 = require("../memory.js");
|
|
44
|
+
const rag_js_1 = require("../rag.js");
|
|
45
|
+
const memory_context_js_1 = require("../memory-context.js");
|
|
46
|
+
const logger_js_1 = require("../logger.js");
|
|
44
47
|
const shell_js_1 = require("../tools/shell.js");
|
|
45
48
|
const memory_js_2 = require("../tools/memory.js");
|
|
46
49
|
const datetime_js_1 = require("../tools/datetime.js");
|
|
@@ -63,6 +66,17 @@ async function runJob(job, log) {
|
|
|
63
66
|
const config = (0, config_js_1.loadConfig)();
|
|
64
67
|
const memoryStore = new memory_js_1.MemoryStore();
|
|
65
68
|
const store = new store_js_1.CronStore();
|
|
69
|
+
// Conditionally create RAGStore for memory context enrichment
|
|
70
|
+
let ragStore;
|
|
71
|
+
if (config.ragEnabled) {
|
|
72
|
+
try {
|
|
73
|
+
ragStore = new rag_js_1.RAGStore();
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
77
|
+
log(`RAG initialization failed, continuing without RAG: ${msg}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
66
80
|
const mcpManager = new mcp_js_1.MCPManager();
|
|
67
81
|
let mcpTools = {};
|
|
68
82
|
try {
|
|
@@ -133,12 +147,30 @@ async function runJob(job, log) {
|
|
|
133
147
|
cron_self_disable: selfDisableTool,
|
|
134
148
|
...mcpTools,
|
|
135
149
|
};
|
|
150
|
+
// RAG search using job prompt as query
|
|
151
|
+
let ragResults;
|
|
152
|
+
if (ragStore) {
|
|
153
|
+
try {
|
|
154
|
+
ragResults = await ragStore.search(job.prompt);
|
|
155
|
+
if (ragResults.length > 0) {
|
|
156
|
+
(0, logger_js_1.debugLog)('cron:rag', { jobId: job.id, query: job.prompt.slice(0, 100), results: ragResults.length });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
(0, logger_js_1.debugLog)('cron:rag:error', err instanceof Error ? err.message : String(err));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const enrichedPrompt = DAEMON_SYSTEM_PROMPT + (0, memory_context_js_1.buildMemoryContext)({
|
|
164
|
+
memoryStore,
|
|
165
|
+
ragResults,
|
|
166
|
+
includeScratch: false,
|
|
167
|
+
});
|
|
136
168
|
const result = await (0, ai_1.generateText)({
|
|
137
169
|
model: (0, index_js_1.getModel)(config.provider, config.model),
|
|
138
170
|
tools,
|
|
139
171
|
maxSteps: 20,
|
|
140
172
|
maxTokens: config.maxTokens,
|
|
141
|
-
system:
|
|
173
|
+
system: enrichedPrompt,
|
|
142
174
|
messages: [{ role: 'user', content: job.prompt }],
|
|
143
175
|
onStepFinish: ({ text, toolCalls, toolResults, usage, finishReason }) => {
|
|
144
176
|
const truncatedResults = (toolResults || []).map(tr => ({
|
package/dist/cron/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cron/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cron/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface MemoryDomain {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
extractionPrompt: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const DEFAULT_DOMAIN = "general";
|
|
8
|
+
export declare const DOMAIN_REGISTRY: Record<string, MemoryDomain>;
|
|
9
|
+
export declare function getDomainIds(): string[];
|
|
10
|
+
export declare function getDomain(id: string): MemoryDomain;
|
package/dist/domains.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DOMAIN_REGISTRY = exports.DEFAULT_DOMAIN = void 0;
|
|
4
|
+
exports.getDomainIds = getDomainIds;
|
|
5
|
+
exports.getDomain = getDomain;
|
|
6
|
+
exports.DEFAULT_DOMAIN = 'general';
|
|
7
|
+
exports.DOMAIN_REGISTRY = {
|
|
8
|
+
'tool-usage': {
|
|
9
|
+
id: 'tool-usage',
|
|
10
|
+
name: 'Tool Usage Patterns',
|
|
11
|
+
description: 'Command sequences, tool interaction patterns, error resolutions, build/deploy workflows',
|
|
12
|
+
extractionPrompt: `You are a tool-usage pattern extractor. Extract durable, reusable facts about how tools, commands, and workflows are used in the conversation below. Focus on lessons learned and patterns that would be useful in future sessions.
|
|
13
|
+
|
|
14
|
+
Extract:
|
|
15
|
+
- Shell command sequences and pipelines that accomplished a task
|
|
16
|
+
- Tool interaction patterns (which tools were used together, in what order)
|
|
17
|
+
- Always include the application or system being operated on (e.g., "Slack via browser automation", "terminal", "VS Code")
|
|
18
|
+
- Reusable patterns and lessons learned, not play-by-play narration
|
|
19
|
+
- Error messages encountered and how they were resolved (include the resolution)
|
|
20
|
+
- Build, test, and deploy commands and workflows
|
|
21
|
+
- Package manager commands and dependency operations
|
|
22
|
+
- Git workflows and branching patterns
|
|
23
|
+
|
|
24
|
+
Do NOT extract:
|
|
25
|
+
- User preferences or communication style
|
|
26
|
+
- Project architecture or business requirements
|
|
27
|
+
- Generic knowledge any developer would know
|
|
28
|
+
- Greetings, filler, or conversational noise
|
|
29
|
+
- Task-specific transient details (e.g., "user asked to fix a typo on line 42")
|
|
30
|
+
- Individual UI interactions (click, keystroke, tab press) without the broader pattern they accomplished
|
|
31
|
+
- Raw accessibility snapshot element references (ref numbers, element labels)
|
|
32
|
+
- Error messages without resolution or takeaway
|
|
33
|
+
- Step-by-step narration of task progress ("first I clicked X, then I typed Y")
|
|
34
|
+
|
|
35
|
+
Examples:
|
|
36
|
+
- Bad: "The \`press-page-key\` tool was used to simulate keyboard navigation by pressing 'Tab' multiple times and 'Enter' on the 'Home' button (ref 9)"
|
|
37
|
+
- Good: "Slack (browser automation): Tab-key navigation is unreliable for switching channels; clicking the channel name directly is more effective"
|
|
38
|
+
- Bad: "The shell tool was used to run 'npm test' and it returned exit code 0"
|
|
39
|
+
- Good: "Project uses 'npm test' which runs vitest; tests must pass before commits"
|
|
40
|
+
|
|
41
|
+
Return a JSON array of strings. Each string should be a self-contained fact (understandable without the original conversation). Maximum 500 characters per fact. If there are no notable facts, return an empty array [].`,
|
|
42
|
+
},
|
|
43
|
+
'user-preferences': {
|
|
44
|
+
id: 'user-preferences',
|
|
45
|
+
name: 'User Preferences',
|
|
46
|
+
description: 'Communication style, workflow conventions, repeated instructions, naming preferences',
|
|
47
|
+
extractionPrompt: `You are a user preference extractor. Extract durable, long-term facts about the user's preferences, habits, and conventions from the conversation below. Only extract preferences that would apply across multiple sessions and tasks.
|
|
48
|
+
|
|
49
|
+
Extract:
|
|
50
|
+
- Communication style preferences (verbosity, tone, format)
|
|
51
|
+
- Workflow conventions (branching strategy, commit style, review process)
|
|
52
|
+
- Repeated instructions or corrections the user has given
|
|
53
|
+
- Naming conventions and coding style preferences
|
|
54
|
+
- Tool and editor preferences
|
|
55
|
+
- Preferred approaches to problem solving
|
|
56
|
+
- Explicit "always do X" or "never do Y" directives
|
|
57
|
+
- Security and privacy preferences
|
|
58
|
+
|
|
59
|
+
Do NOT extract:
|
|
60
|
+
- Shell commands, tool sequences, or error resolutions
|
|
61
|
+
- Project architecture, structure, or technical environment details
|
|
62
|
+
- Generic knowledge any developer would know
|
|
63
|
+
- Greetings, filler, or conversational noise
|
|
64
|
+
- Task-specific transient details (e.g., "user asked to fix a typo on line 42")
|
|
65
|
+
- Preferences that only apply to the current task (e.g., "user wants the button to be blue" for a specific UI ticket)
|
|
66
|
+
- Observations about the user's emotional state or satisfaction with a specific result
|
|
67
|
+
|
|
68
|
+
Examples:
|
|
69
|
+
- Bad: "The user was satisfied with the fix for the login page"
|
|
70
|
+
- Good: "User prefers to manually provide verification codes for security reasons rather than having them auto-filled"
|
|
71
|
+
- Bad: "User wants the output table to have 3 columns"
|
|
72
|
+
- Good: "User prefers concise tabular output over verbose text when displaying data"
|
|
73
|
+
|
|
74
|
+
Return a JSON array of strings. Each string should be a self-contained fact (understandable without the original conversation). Maximum 500 characters per fact. If there are no notable facts, return an empty array [].`,
|
|
75
|
+
},
|
|
76
|
+
'general': {
|
|
77
|
+
id: 'general',
|
|
78
|
+
name: 'General Knowledge',
|
|
79
|
+
description: 'Project structure, architecture decisions, environment info, team context',
|
|
80
|
+
extractionPrompt: `You are a general knowledge extractor. Extract durable, long-term facts about the project, environment, people, and context from the conversation below. Focus on knowledge that remains true across sessions — not ephemeral task state.
|
|
81
|
+
|
|
82
|
+
Extract:
|
|
83
|
+
- Project structure, architecture, and design decisions
|
|
84
|
+
- Technical environment info (OS, languages, frameworks, versions)
|
|
85
|
+
- People, relationships, and contact methods mentioned (e.g., "Pablo Rico is the user's cousin")
|
|
86
|
+
- Account names, usernames, or identifiers for services
|
|
87
|
+
- Team context, roles, and relationships mentioned
|
|
88
|
+
- Business requirements and domain concepts
|
|
89
|
+
- Configuration details and environment variables
|
|
90
|
+
- API endpoints, database schemas, or service dependencies
|
|
91
|
+
- Decisions made and their reasoning
|
|
92
|
+
|
|
93
|
+
Do NOT extract:
|
|
94
|
+
- Shell commands, tool sequences, or error resolutions
|
|
95
|
+
- User preferences, communication style, or workflow conventions
|
|
96
|
+
- Generic knowledge any developer would know
|
|
97
|
+
- Greetings, filler, or conversational noise
|
|
98
|
+
- Task-specific transient details (e.g., "user asked to fix a typo on line 42")
|
|
99
|
+
- Ephemeral UI state (button labels, input field descriptions, accessibility snapshots)
|
|
100
|
+
- One-time task instructions or step-by-step narration of task progress
|
|
101
|
+
- Descriptions of what is currently visible on screen
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
- Bad: "A specific conversation with Pablo Rico is active in Google Messages, with an input field labeled 'Type an RCS message'"
|
|
105
|
+
- Good: "Pablo Rico is the user's cousin and can be contacted via Google Messages (RCS)"
|
|
106
|
+
- Bad: "The project has a file called src/index.ts open in the editor with 94 lines"
|
|
107
|
+
- Good: "The project uses TypeScript with Node16 module resolution and CommonJS output"
|
|
108
|
+
|
|
109
|
+
Return a JSON array of strings. Each string should be a self-contained fact (understandable without the original conversation). Maximum 500 characters per fact. If there are no notable facts, return an empty array [].`,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
function getDomainIds() {
|
|
113
|
+
return Object.keys(exports.DOMAIN_REGISTRY);
|
|
114
|
+
}
|
|
115
|
+
function getDomain(id) {
|
|
116
|
+
return exports.DOMAIN_REGISTRY[id] ?? exports.DOMAIN_REGISTRY[exports.DEFAULT_DOMAIN];
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../src/domains.ts"],"names":[],"mappings":";;;AAqHA,oCAEC;AAED,8BAEC;AApHY,QAAA,cAAc,GAAG,SAAS,CAAC;AAE3B,QAAA,eAAe,GAAiC;IAC3D,YAAY,EAAE;QACZ,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,yFAAyF;QACtG,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0NA6BoM;KACvN;IAED,kBAAkB,EAAE;QAClB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sFAAsF;QACnG,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;0NA2BoM;KACvN;IAED,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,2EAA2E;QACxF,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0NA6BoM;KACvN;CACF,CAAC;AAEF,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,uBAAe,CAAC,EAAE,CAAC,IAAI,uBAAe,CAAC,sBAAc,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a comma-separated selection of numbers and ranges (e.g. "1,3,5-8").
|
|
3
|
+
* Returns sorted deduplicated 1-based indices, or null if invalid.
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseSelection(input: string, max: number): number[] | null;
|
|
6
|
+
export declare function factsList(): Promise<void>;
|
|
7
|
+
export declare function factsSearch(query: string): Promise<void>;
|