@bryti/agent 0.1.2 → 0.2.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/README.md +9 -22
- package/dist/cli.js +69 -332
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +25 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -14
- package/dist/index.js.map +1 -1
- package/dist/memory/embeddings.d.ts +15 -9
- package/dist/memory/embeddings.d.ts.map +1 -1
- package/dist/memory/embeddings.js +37 -13
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/search.d.ts +1 -1
- package/dist/memory/search.d.ts.map +1 -1
- package/dist/memory/search.js +6 -5
- package/dist/memory/search.js.map +1 -1
- package/dist/memory/store.d.ts +3 -2
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +5 -3
- package/dist/memory/store.js.map +1 -1
- package/dist/model-infra.d.ts.map +1 -1
- package/dist/model-infra.js +1 -0
- package/dist/model-infra.js.map +1 -1
- package/dist/projection/store.d.ts +1 -1
- package/dist/projection/store.d.ts.map +1 -1
- package/dist/projection/store.js +6 -0
- package/dist/projection/store.js.map +1 -1
- package/dist/setup.d.ts +9 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +240 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/archival-memory-tool.d.ts +1 -1
- package/dist/tools/archival-memory-tool.d.ts.map +1 -1
- package/dist/tools/archival-memory-tool.js.map +1 -1
- package/dist/update-check.d.ts +16 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +94 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +10 -6
- package/run.sh +15 -5
package/README.md
CHANGED
|
@@ -47,18 +47,6 @@ Bryti is a personal AI agent that lives in Telegram and WhatsApp. It remembers w
|
|
|
47
47
|
|
|
48
48
|
### Quick start
|
|
49
49
|
|
|
50
|
-
**From npm:**
|
|
51
|
-
```bash
|
|
52
|
-
npm install -g @bryti/agent
|
|
53
|
-
|
|
54
|
-
# Configure
|
|
55
|
-
cp "$(npm root -g)/@bryti/agent/config.example.yml" data/config.yml
|
|
56
|
-
cp "$(npm root -g)/@bryti/agent/.env.example" .env
|
|
57
|
-
# Edit data/config.yml and .env, then:
|
|
58
|
-
bryti-start
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**From source:**
|
|
62
50
|
```bash
|
|
63
51
|
git clone git@github.com:larsderidder/bryti.git
|
|
64
52
|
cd bryti
|
|
@@ -69,7 +57,7 @@ cp .env.example .env # add your Telegram bot token
|
|
|
69
57
|
cp config.example.yml data/config.yml # edit to taste
|
|
70
58
|
|
|
71
59
|
# Run
|
|
72
|
-
./run.sh
|
|
60
|
+
bryti # or: npm start, or: ./run.sh (auto-restart on crash)
|
|
73
61
|
```
|
|
74
62
|
|
|
75
63
|
The embedding model downloads on first run (~300 MB). After that, startups take a few seconds.
|
|
@@ -250,17 +238,16 @@ Environment variables are supported via `${VAR}` syntax. The `.env` file loads a
|
|
|
250
238
|
|
|
251
239
|
## CLI
|
|
252
240
|
|
|
253
|
-
Operator tools for managing Bryti without going through chat
|
|
241
|
+
Operator tools for managing Bryti without going through chat. Safe to run while the server is running.
|
|
254
242
|
|
|
255
243
|
```bash
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
npm run cli -- fill-context --turns 20 # inject synthetic conversation for testing
|
|
244
|
+
bryti help # all commands
|
|
245
|
+
bryti memory # inspect all memory tiers
|
|
246
|
+
bryti memory projections --all # all projections (including resolved)
|
|
247
|
+
bryti memory archival --query "energy" # search archival memory
|
|
248
|
+
bryti reflect # run reflection pass now
|
|
249
|
+
bryti archive-fact "dentist confirmed" # insert fact, trigger matching projections
|
|
250
|
+
bryti version # show version
|
|
264
251
|
```
|
|
265
252
|
|
|
266
253
|
## Contributing
|
package/dist/cli.js
CHANGED
|
@@ -5,22 +5,25 @@ try {
|
|
|
5
5
|
}
|
|
6
6
|
catch { /* not present, fine */ }
|
|
7
7
|
/**
|
|
8
|
-
* Bryti
|
|
9
|
-
* Run via: bryti <command> [options]
|
|
8
|
+
* Bryti CLI. Starts the server or runs management commands.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* `bryti` (no args) or `bryti serve` starts the server.
|
|
11
|
+
* `bryti <command>` runs a management command. Management commands bypass
|
|
12
|
+
* the running application and read/write SQLite directly (safe to run
|
|
13
|
+
* while the server is running, thanks to WAL mode).
|
|
14
14
|
*
|
|
15
|
-
* See `
|
|
15
|
+
* See `bryti help` for full command listing.
|
|
16
16
|
*/
|
|
17
17
|
import fs from "node:fs";
|
|
18
18
|
import path from "node:path";
|
|
19
|
-
import crypto from "node:crypto";
|
|
20
19
|
import Database from "better-sqlite3";
|
|
21
|
-
import { loadConfig } from "./config.js";
|
|
20
|
+
import { loadConfig, resolveDataDir as defaultDataDir } from "./config.js";
|
|
22
21
|
import { runReflection } from "./projection/index.js";
|
|
23
22
|
// ---------------------------------------------------------------------------
|
|
23
|
+
// Version
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
const VERSION = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8")).version;
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
24
27
|
// Arg parsing helpers
|
|
25
28
|
// ---------------------------------------------------------------------------
|
|
26
29
|
const argv = process.argv.slice(2);
|
|
@@ -32,7 +35,6 @@ function opt(name, fallback) {
|
|
|
32
35
|
return idx !== -1 ? argv[idx + 1] : fallback;
|
|
33
36
|
}
|
|
34
37
|
function positional(afterFlags) {
|
|
35
|
-
// Return the Nth non-flag argument
|
|
36
38
|
const nonFlags = argv.filter((a) => !a.startsWith("--"));
|
|
37
39
|
return nonFlags[afterFlags];
|
|
38
40
|
}
|
|
@@ -40,22 +42,21 @@ function positional(afterFlags) {
|
|
|
40
42
|
// Config / environment
|
|
41
43
|
// ---------------------------------------------------------------------------
|
|
42
44
|
function resolveDataDir() {
|
|
43
|
-
return opt("--data-dir") ??
|
|
45
|
+
return opt("--data-dir") ?? defaultDataDir();
|
|
44
46
|
}
|
|
45
|
-
function resolveUserId(
|
|
47
|
+
function resolveUserId(_dataDir) {
|
|
46
48
|
if (opt("--user-id"))
|
|
47
49
|
return opt("--user-id");
|
|
48
50
|
if (process.env.BRYTI_USER_ID)
|
|
49
51
|
return process.env.BRYTI_USER_ID;
|
|
50
|
-
// Try to read from config
|
|
51
52
|
try {
|
|
52
|
-
const config = loadConfig(
|
|
53
|
+
const config = loadConfig();
|
|
53
54
|
const first = config.telegram.allowed_users[0];
|
|
54
55
|
if (first)
|
|
55
56
|
return String(first);
|
|
56
57
|
}
|
|
57
58
|
catch {
|
|
58
|
-
// Config may not exist
|
|
59
|
+
// Config may not exist yet
|
|
59
60
|
}
|
|
60
61
|
return "default-user";
|
|
61
62
|
}
|
|
@@ -184,7 +185,6 @@ async function cmdReflect(dataDir, userId, windowMinutes) {
|
|
|
184
185
|
console.error(`Failed to load config: ${err.message}`);
|
|
185
186
|
process.exit(1);
|
|
186
187
|
}
|
|
187
|
-
// Override data_dir in case --data-dir was passed
|
|
188
188
|
config.data_dir = dataDir;
|
|
189
189
|
const result = await runReflection(config, userId, windowMinutes);
|
|
190
190
|
if (result.skipped) {
|
|
@@ -201,264 +201,11 @@ async function cmdReflect(dataDir, userId, windowMinutes) {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
// ---------------------------------------------------------------------------
|
|
204
|
-
// Command: timeskip
|
|
205
|
-
// ---------------------------------------------------------------------------
|
|
206
|
-
function cmdTimeskipList(dataDir, userId) {
|
|
207
|
-
const dbPath = path.join(dataDir, "users", userId, "memory.db");
|
|
208
|
-
if (!fs.existsSync(dbPath)) {
|
|
209
|
-
console.error(`No memory.db found at ${dbPath}`);
|
|
210
|
-
process.exit(1);
|
|
211
|
-
}
|
|
212
|
-
const db = new Database(dbPath, { readonly: true });
|
|
213
|
-
const rows = db.prepare(`SELECT id, summary, resolved_when, resolution, status
|
|
214
|
-
FROM projections ORDER BY
|
|
215
|
-
CASE status WHEN 'pending' THEN 0 ELSE 1 END,
|
|
216
|
-
resolved_when ASC`).all();
|
|
217
|
-
db.close();
|
|
218
|
-
if (rows.length === 0) {
|
|
219
|
-
console.log("No projections found.");
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
const statusIcon = { pending: "⏳", done: "✅", cancelled: "❌", passed: "🔕" };
|
|
223
|
-
console.log("Projections:\n");
|
|
224
|
-
for (const row of rows) {
|
|
225
|
-
const icon = statusIcon[row.status] ?? "?";
|
|
226
|
-
console.log(`${icon} [${row.resolution}] ${row.summary}`);
|
|
227
|
-
console.log(` id: ${row.id}`);
|
|
228
|
-
console.log(` when: ${row.resolved_when ?? "(someday)"}`);
|
|
229
|
-
console.log("");
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
function cmdTimeskip(dataDir, userId, summaryOrId, minutes) {
|
|
233
|
-
const dbPath = path.join(dataDir, "users", userId, "memory.db");
|
|
234
|
-
if (!fs.existsSync(dbPath)) {
|
|
235
|
-
console.error(`No memory.db found at ${dbPath}`);
|
|
236
|
-
process.exit(1);
|
|
237
|
-
}
|
|
238
|
-
const db = new Database(dbPath);
|
|
239
|
-
// Users may reference projections by summary substring (human-friendly) or
|
|
240
|
-
// by full UUID (copy-pasted from 'timeskip --list'). The regex distinguishes
|
|
241
|
-
// them: UUIDs match the standard 8-4-4-4-12 hex pattern, everything else is
|
|
242
|
-
// treated as a summary substring.
|
|
243
|
-
const isUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(summaryOrId);
|
|
244
|
-
const row = isUuid
|
|
245
|
-
? db.prepare("SELECT * FROM projections WHERE id = ?").get(summaryOrId)
|
|
246
|
-
: db.prepare("SELECT * FROM projections WHERE summary LIKE ? AND status = 'pending' LIMIT 1")
|
|
247
|
-
.get(`%${summaryOrId}%`);
|
|
248
|
-
if (!row) {
|
|
249
|
-
console.error(`No pending projection found matching: ${summaryOrId}`);
|
|
250
|
-
db.close();
|
|
251
|
-
process.exit(1);
|
|
252
|
-
}
|
|
253
|
-
const newTime = new Date(Date.now() + minutes * 60 * 1000);
|
|
254
|
-
const newTimeStr = newTime.toISOString().slice(0, 16).replace("T", " ");
|
|
255
|
-
db.prepare("UPDATE projections SET resolved_when = ?, resolution = 'exact' WHERE id = ?").run(newTimeStr, row.id);
|
|
256
|
-
db.close();
|
|
257
|
-
console.log(`Timeskipped projection:`);
|
|
258
|
-
console.log(` Summary: ${row.summary}`);
|
|
259
|
-
console.log(` Old when: ${row.resolved_when ?? "(none)"}`);
|
|
260
|
-
console.log(` New when: ${newTimeStr} UTC (fires in ~${minutes} min)`);
|
|
261
|
-
console.log(`\nThe scheduler will pick it up on the next 5-minute tick.`);
|
|
262
|
-
}
|
|
263
|
-
// ---------------------------------------------------------------------------
|
|
264
|
-
// Command: import-openclaw
|
|
265
|
-
// ---------------------------------------------------------------------------
|
|
266
|
-
// One-time migration tool for importing Lars's OpenClaw memory files into
|
|
267
|
-
// bryti's archival memory. Specific to Lars's local setup (/home/lars/clawd).
|
|
268
|
-
// Not a general-purpose import command.
|
|
269
|
-
function cmdImportOpenclaw(dataDir, userId, dryRun) {
|
|
270
|
-
const clawdDir = "/home/lars/clawd";
|
|
271
|
-
console.log(`Importing OpenClaw memory into bryti`);
|
|
272
|
-
console.log(` User ID: ${userId}`);
|
|
273
|
-
console.log(` Data dir: ${dataDir}`);
|
|
274
|
-
console.log(` Dry run: ${dryRun}`);
|
|
275
|
-
console.log("");
|
|
276
|
-
// Core memory
|
|
277
|
-
const userMd = path.join(clawdDir, "USER.md");
|
|
278
|
-
if (!fs.existsSync(userMd)) {
|
|
279
|
-
console.log("[core] USER.md not found, skipping");
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
const corePath = path.join(dataDir, "core-memory.md");
|
|
283
|
-
const existing = fs.existsSync(corePath) ? fs.readFileSync(corePath, "utf-8") : "";
|
|
284
|
-
if (existing.includes("## About Lars")) {
|
|
285
|
-
console.log("[core] Already contains Lars profile, skipping");
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
const userContent = fs.readFileSync(userMd, "utf-8");
|
|
289
|
-
const sectionText = "\n\n## About Lars\n" + userContent.replace(/^# USER\.md.*\n/, "").trim();
|
|
290
|
-
if (dryRun) {
|
|
291
|
-
console.log("[core] DRY RUN — would append to core-memory.md:");
|
|
292
|
-
console.log(sectionText.slice(0, 300) + "...");
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
fs.appendFileSync(corePath, sectionText, "utf-8");
|
|
296
|
-
console.log(`[core] Appended USER.md to core-memory.md (${sectionText.length} chars)`);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
// Archival memory
|
|
301
|
-
const memoryDir = path.join(clawdDir, "memory");
|
|
302
|
-
if (!fs.existsSync(memoryDir)) {
|
|
303
|
-
console.log("[archival] memory/ directory not found, skipping");
|
|
304
|
-
console.log("\nDone.");
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const files = fs.readdirSync(memoryDir).filter((f) => f.endsWith(".md")).sort();
|
|
308
|
-
console.log(`[archival] Found ${files.length} memory files`);
|
|
309
|
-
if (dryRun) {
|
|
310
|
-
for (const file of files) {
|
|
311
|
-
const content = fs.readFileSync(path.join(memoryDir, file), "utf-8");
|
|
312
|
-
const sections = splitIntoSections(content, file);
|
|
313
|
-
console.log(`[archival] DRY RUN — ${file}: ${sections.length} section(s)`);
|
|
314
|
-
}
|
|
315
|
-
console.log("\nDone (dry run).");
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
const userDir = path.join(dataDir, "users", userId);
|
|
319
|
-
fs.mkdirSync(userDir, { recursive: true });
|
|
320
|
-
const db = new Database(path.join(userDir, "memory.db"));
|
|
321
|
-
db.pragma("journal_mode = WAL");
|
|
322
|
-
db.exec(`
|
|
323
|
-
CREATE TABLE IF NOT EXISTS facts (
|
|
324
|
-
id TEXT PRIMARY KEY, content TEXT NOT NULL, source TEXT NOT NULL,
|
|
325
|
-
timestamp INTEGER NOT NULL, hash TEXT NOT NULL
|
|
326
|
-
);
|
|
327
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS facts_fts USING fts5(content, content='facts', content_rowid='rowid');
|
|
328
|
-
CREATE TRIGGER IF NOT EXISTS facts_ai AFTER INSERT ON facts BEGIN
|
|
329
|
-
INSERT INTO facts_fts(rowid, content) VALUES (NEW.rowid, NEW.content);
|
|
330
|
-
END;
|
|
331
|
-
`);
|
|
332
|
-
const insertStmt = db.prepare("INSERT OR IGNORE INTO facts (id, content, source, timestamp, hash) VALUES (?, ?, ?, ?, ?)");
|
|
333
|
-
const existsStmt = db.prepare("SELECT hash FROM facts WHERE hash = ?");
|
|
334
|
-
let inserted = 0;
|
|
335
|
-
let skipped = 0;
|
|
336
|
-
for (const file of files) {
|
|
337
|
-
const filePath = path.join(memoryDir, file);
|
|
338
|
-
const content = fs.readFileSync(filePath, "utf-8");
|
|
339
|
-
const sections = splitIntoSections(content, file);
|
|
340
|
-
const timestamp = fs.statSync(filePath).mtimeMs;
|
|
341
|
-
for (const sec of sections) {
|
|
342
|
-
const hash = crypto.createHash("sha256").update(sec).digest("hex").slice(0, 16);
|
|
343
|
-
if (existsStmt.get(hash)) {
|
|
344
|
-
skipped++;
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
insertStmt.run(crypto.randomUUID(), sec, `openclaw:memory/${file}`, timestamp, hash);
|
|
348
|
-
inserted++;
|
|
349
|
-
}
|
|
350
|
-
console.log(`[archival] ${file}: ${sections.length} section(s)`);
|
|
351
|
-
}
|
|
352
|
-
db.close();
|
|
353
|
-
console.log(`[archival] Done: ${inserted} inserted, ${skipped} skipped`);
|
|
354
|
-
console.log("\nDone. Restart bryti for core memory changes to take effect.");
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Split a markdown document into granular facts by ## headings.
|
|
358
|
-
*
|
|
359
|
-
* Each ## section is stored as a separate archival fact so that semantic
|
|
360
|
-
* search can retrieve the relevant section rather than returning the entire
|
|
361
|
-
* document. The date prefix (derived from the filename) is prepended to each
|
|
362
|
-
* section so temporal context is preserved after the split.
|
|
363
|
-
*/
|
|
364
|
-
function splitIntoSections(content, filename) {
|
|
365
|
-
const date = path.basename(filename, ".md");
|
|
366
|
-
const parts = content.split(/^## /m);
|
|
367
|
-
const sections = [];
|
|
368
|
-
for (const part of parts) {
|
|
369
|
-
const trimmed = part.trim();
|
|
370
|
-
if (!trimmed || trimmed.length < 50)
|
|
371
|
-
continue;
|
|
372
|
-
sections.push(`[${date}] ## ${trimmed}`);
|
|
373
|
-
}
|
|
374
|
-
if (sections.length === 0 && content.trim().length > 50) {
|
|
375
|
-
sections.push(`[${date}] ${content.trim()}`);
|
|
376
|
-
}
|
|
377
|
-
return sections;
|
|
378
|
-
}
|
|
379
|
-
// ---------------------------------------------------------------------------
|
|
380
|
-
// Command: fill-context
|
|
381
|
-
// ---------------------------------------------------------------------------
|
|
382
|
-
const DEFAULT_DATASET = path.join("/home/lars/xithing/contextpatterns-content/synthetic-agent-conversations", "dataset/memory-context.jsonl");
|
|
383
|
-
/**
|
|
384
|
-
* Inject synthetic conversations into history for compaction testing.
|
|
385
|
-
* Back-dates entries so they look like real history. Prioritises
|
|
386
|
-
* context-window-pressure subcategory conversations.
|
|
387
|
-
*
|
|
388
|
-
* This is a testing/development tool only. It writes synthetic entries with
|
|
389
|
-
* _synthetic: true markers but those entries are otherwise indistinguishable
|
|
390
|
-
* from real history as far as the compaction and reflection passes are
|
|
391
|
-
* concerned. Do not run in production.
|
|
392
|
-
*/
|
|
393
|
-
function cmdFillContext(dataDir, count, datasetPath, dryRun) {
|
|
394
|
-
if (!fs.existsSync(datasetPath)) {
|
|
395
|
-
console.error(`Dataset not found: ${datasetPath}`);
|
|
396
|
-
process.exit(1);
|
|
397
|
-
}
|
|
398
|
-
const lines = fs.readFileSync(datasetPath, "utf-8").split("\n").filter(Boolean);
|
|
399
|
-
const all = lines.map((l) => JSON.parse(l));
|
|
400
|
-
// Prefer context-window-pressure, then fall back to all
|
|
401
|
-
const pressure = all.filter((c) => c.subcategory === "context-window-pressure");
|
|
402
|
-
const pool = pressure.length >= count ? pressure : all;
|
|
403
|
-
const selected = pool.slice(0, count);
|
|
404
|
-
// Count total turns we'll inject
|
|
405
|
-
const totalTurns = selected.reduce((n, c) => n + c.turns.filter((t) => t.role === "user" || t.role === "assistant").length, 0);
|
|
406
|
-
console.log(`Injecting ${selected.length} conversation(s), ${totalTurns} turns total`);
|
|
407
|
-
if (dryRun)
|
|
408
|
-
console.log("(dry run — nothing will be written)\n");
|
|
409
|
-
// Back-date entries starting from 2 hours ago, spreading turns across time
|
|
410
|
-
const now = Date.now();
|
|
411
|
-
const startMs = now - 2 * 60 * 60 * 1000;
|
|
412
|
-
const stepMs = Math.floor((2 * 60 * 60 * 1000) / Math.max(totalTurns, 1));
|
|
413
|
-
const historyDir = path.join(dataDir, "history");
|
|
414
|
-
if (!dryRun)
|
|
415
|
-
fs.mkdirSync(historyDir, { recursive: true });
|
|
416
|
-
let turnIdx = 0;
|
|
417
|
-
const byDay = new Map();
|
|
418
|
-
for (const conv of selected) {
|
|
419
|
-
console.log(` [${conv.id}] ${conv.description}`);
|
|
420
|
-
for (const turn of conv.turns) {
|
|
421
|
-
if (turn.role !== "user" && turn.role !== "assistant")
|
|
422
|
-
continue;
|
|
423
|
-
const ts = new Date(startMs + turnIdx * stepMs);
|
|
424
|
-
const day = ts.toISOString().slice(0, 10);
|
|
425
|
-
const entry = JSON.stringify({
|
|
426
|
-
role: turn.role,
|
|
427
|
-
content: turn.content,
|
|
428
|
-
timestamp: ts.toISOString(),
|
|
429
|
-
_synthetic: true,
|
|
430
|
-
});
|
|
431
|
-
if (!byDay.has(day))
|
|
432
|
-
byDay.set(day, []);
|
|
433
|
-
byDay.get(day).push(entry);
|
|
434
|
-
turnIdx++;
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
if (!dryRun) {
|
|
438
|
-
for (const [day, entries] of byDay) {
|
|
439
|
-
const filePath = path.join(historyDir, `${day}.jsonl`);
|
|
440
|
-
fs.appendFileSync(filePath, entries.join("\n") + "\n", "utf-8");
|
|
441
|
-
console.log(` Written ${entries.length} entries to history/${day}.jsonl`);
|
|
442
|
-
}
|
|
443
|
-
console.log(`\nDone. Restart bryti to pick up the new history in context.`);
|
|
444
|
-
}
|
|
445
|
-
else {
|
|
446
|
-
for (const [day, entries] of byDay) {
|
|
447
|
-
console.log(` Would write ${entries.length} entries to history/${day}.jsonl`);
|
|
448
|
-
}
|
|
449
|
-
console.log("\nDone (dry run).");
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
// ---------------------------------------------------------------------------
|
|
453
204
|
// Command: archive-fact
|
|
454
205
|
// ---------------------------------------------------------------------------
|
|
455
206
|
async function cmdArchiveFact(dataDir, userId, content) {
|
|
456
207
|
console.log(`Archiving fact for user ${userId}...`);
|
|
457
208
|
console.log(`Content: "${content}"\n`);
|
|
458
|
-
// Lazy-import the embedding model and memory store. The embedding model is
|
|
459
|
-
// 300MB+ and takes several seconds to load. Importing at the top of the file
|
|
460
|
-
// would add that startup cost to every CLI command, including fast read-only
|
|
461
|
-
// ones like 'memory' and 'reflect'. Deferring to here keeps the CLI snappy.
|
|
462
209
|
const { embed } = await import("./memory/embeddings.js");
|
|
463
210
|
const { createMemoryStore } = await import("./memory/store.js");
|
|
464
211
|
const { createProjectionStore } = await import("./projection/index.js");
|
|
@@ -466,11 +213,9 @@ async function cmdArchiveFact(dataDir, userId, content) {
|
|
|
466
213
|
const memoryStore = createMemoryStore(userId, dataDir);
|
|
467
214
|
const projStore = createProjectionStore(userId, dataDir);
|
|
468
215
|
try {
|
|
469
|
-
// Embed and store the fact.
|
|
470
216
|
const embedding = await embed(content, modelsDir);
|
|
471
217
|
memoryStore.addFact(content, "cli", embedding);
|
|
472
218
|
console.log("Fact archived.");
|
|
473
|
-
// Check triggers (keyword + embedding fallback).
|
|
474
219
|
const triggered = await projStore.checkTriggers(content, (text) => embed(text, modelsDir));
|
|
475
220
|
if (triggered.length > 0) {
|
|
476
221
|
console.log(`\nTriggered ${triggered.length} projection(s):`);
|
|
@@ -493,72 +238,88 @@ async function cmdArchiveFact(dataDir, userId, content) {
|
|
|
493
238
|
// Help
|
|
494
239
|
// ---------------------------------------------------------------------------
|
|
495
240
|
function showHelp() {
|
|
241
|
+
const dataDir = resolveDataDir();
|
|
496
242
|
console.log(`
|
|
497
|
-
bryti
|
|
243
|
+
bryti ${VERSION} — AI colleague in your messaging apps
|
|
498
244
|
|
|
499
245
|
Usage:
|
|
500
|
-
|
|
246
|
+
bryti Start the server (Telegram/WhatsApp bridges, scheduler)
|
|
247
|
+
bryti serve Same as above (explicit)
|
|
248
|
+
bryti <command> Run a management command (safe while server is running)
|
|
501
249
|
|
|
502
250
|
Commands:
|
|
503
|
-
|
|
504
|
-
|
|
251
|
+
hail [<path>]
|
|
252
|
+
First-run setup. Walks you through creating a config.
|
|
253
|
+
Alias: init
|
|
505
254
|
|
|
506
|
-
|
|
507
|
-
|
|
255
|
+
serve
|
|
256
|
+
Start the bryti server.
|
|
508
257
|
|
|
509
|
-
memory core
|
|
510
|
-
|
|
258
|
+
memory [core|projections|archival|all]
|
|
259
|
+
Inspect memory tiers. No subcommand shows all tiers.
|
|
511
260
|
|
|
512
261
|
memory projections [--all]
|
|
513
|
-
Show pending projections.
|
|
262
|
+
Show pending projections. --all includes resolved ones.
|
|
514
263
|
|
|
515
264
|
memory archival [--query <text>] [--limit <n>]
|
|
516
|
-
Show recent archival facts, or search by keyword.
|
|
517
|
-
Default limit: 20.
|
|
265
|
+
Show recent archival facts, or search by keyword. Default limit: 20.
|
|
518
266
|
|
|
519
267
|
reflect [--window <minutes>]
|
|
520
|
-
Run the reflection pass on demand.
|
|
521
|
-
for future references the agent may have missed.
|
|
522
|
-
Default window: 30 minutes.
|
|
523
|
-
|
|
524
|
-
timeskip <summary|id> [--minutes <n>]
|
|
525
|
-
Move a projection's resolved_when to now + N minutes so the
|
|
526
|
-
exact-time scheduler fires it on the next 5-minute tick.
|
|
527
|
-
Matches by summary substring or exact UUID.
|
|
528
|
-
Default: 2 minutes.
|
|
529
|
-
|
|
530
|
-
timeskip --list
|
|
531
|
-
List all projections with their IDs and times.
|
|
268
|
+
Run the reflection pass on demand. Default window: 30 minutes.
|
|
532
269
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
/home/lars/clawd/memory/*.md into archival memory.
|
|
270
|
+
archive-fact "<content>"
|
|
271
|
+
Insert a fact into archival memory and check trigger-based projections.
|
|
536
272
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
Used to test compaction and archival memory retrieval under context pressure.
|
|
540
|
-
Prioritises context-window-pressure conversations from the dataset.
|
|
541
|
-
Default count: 10. Default dataset: synthetic-agent-conversations/dataset/memory-context.jsonl
|
|
273
|
+
version
|
|
274
|
+
Show version number.
|
|
542
275
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
projections fire. Uses keyword matching + embedding similarity fallback.
|
|
546
|
-
Useful for testing trigger_on_fact without going through the agent.
|
|
276
|
+
help
|
|
277
|
+
Show this help text.
|
|
547
278
|
|
|
548
279
|
Global options:
|
|
549
280
|
--user-id <id> User ID (default: first entry in telegram.allowed_users)
|
|
550
|
-
--data-dir <path> Data directory (default:
|
|
281
|
+
--data-dir <path> Data directory (default: ${dataDir})
|
|
551
282
|
`);
|
|
552
283
|
}
|
|
553
284
|
// ---------------------------------------------------------------------------
|
|
554
285
|
// Main dispatcher
|
|
555
286
|
// ---------------------------------------------------------------------------
|
|
556
287
|
async function main() {
|
|
288
|
+
// Flags that work without a command
|
|
289
|
+
if (flag("--version") || flag("-v")) {
|
|
290
|
+
console.log(VERSION);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (flag("--help") || flag("-h")) {
|
|
294
|
+
showHelp();
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
557
297
|
const command = positional(0);
|
|
558
|
-
|
|
298
|
+
// No args or "serve": start the server (or suggest hail if no config)
|
|
299
|
+
if (!command || command === "serve") {
|
|
300
|
+
const configPath = path.join(resolveDataDir(), "config.yml");
|
|
301
|
+
if (!fs.existsSync(configPath)) {
|
|
302
|
+
console.log(`\n No config found at ${configPath}`);
|
|
303
|
+
console.log(` Run 'bryti hail' to set up your steward.\n`);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const { startServer } = await import("./index.js");
|
|
307
|
+
await startServer();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (command === "version") {
|
|
311
|
+
console.log(VERSION);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (command === "help") {
|
|
559
315
|
showHelp();
|
|
560
316
|
return;
|
|
561
317
|
}
|
|
318
|
+
if (command === "hail" || command === "init") {
|
|
319
|
+
const { runSetup } = await import("./setup.js");
|
|
320
|
+
await runSetup(positional(1));
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
562
323
|
const dataDir = resolveDataDir();
|
|
563
324
|
const userId = resolveUserId(dataDir);
|
|
564
325
|
switch (command) {
|
|
@@ -593,30 +354,6 @@ async function main() {
|
|
|
593
354
|
await cmdReflect(dataDir, userId, window);
|
|
594
355
|
break;
|
|
595
356
|
}
|
|
596
|
-
case "timeskip": {
|
|
597
|
-
if (flag("--list")) {
|
|
598
|
-
cmdTimeskipList(dataDir, userId);
|
|
599
|
-
break;
|
|
600
|
-
}
|
|
601
|
-
const summaryOrId = positional(1);
|
|
602
|
-
if (!summaryOrId) {
|
|
603
|
-
console.error("Usage: timeskip <summary|id> [--minutes <n>] | timeskip --list");
|
|
604
|
-
process.exit(1);
|
|
605
|
-
}
|
|
606
|
-
const minutes = Number(opt("--minutes", "2"));
|
|
607
|
-
cmdTimeskip(dataDir, userId, summaryOrId, minutes);
|
|
608
|
-
break;
|
|
609
|
-
}
|
|
610
|
-
case "import-openclaw": {
|
|
611
|
-
cmdImportOpenclaw(dataDir, userId, flag("--dry-run"));
|
|
612
|
-
break;
|
|
613
|
-
}
|
|
614
|
-
case "fill-context": {
|
|
615
|
-
const count = Number(opt("--count", "10"));
|
|
616
|
-
const dataset = opt("--dataset", DEFAULT_DATASET);
|
|
617
|
-
cmdFillContext(dataDir, count, dataset, flag("--dry-run"));
|
|
618
|
-
break;
|
|
619
|
-
}
|
|
620
357
|
case "archive-fact": {
|
|
621
358
|
const content = positional(1);
|
|
622
359
|
if (!content) {
|
|
@@ -628,7 +365,7 @@ async function main() {
|
|
|
628
365
|
}
|
|
629
366
|
default:
|
|
630
367
|
console.error(`Unknown command: ${command}`);
|
|
631
|
-
console.error("Run '
|
|
368
|
+
console.error("Run 'bryti help' for usage.");
|
|
632
369
|
process.exit(1);
|
|
633
370
|
}
|
|
634
371
|
console.log("");
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|