@hasna/mementos 0.14.18 → 0.14.20
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/cli/index.js +73 -41
- package/dist/index.js +476 -30
- package/dist/mcp/index.js +64 -31
- package/dist/sdk/index.js +397 -0
- package/dist/server/index.js +652 -164
- package/package.json +6 -2
package/dist/cli/index.js
CHANGED
|
@@ -13547,6 +13547,7 @@ CREATE TABLE IF NOT EXISTS machines (
|
|
|
13547
13547
|
name TEXT NOT NULL UNIQUE,
|
|
13548
13548
|
hostname TEXT NOT NULL,
|
|
13549
13549
|
platform TEXT NOT NULL DEFAULT 'unknown',
|
|
13550
|
+
is_primary INTEGER NOT NULL DEFAULT 0,
|
|
13550
13551
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
13551
13552
|
last_seen_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
13552
13553
|
);
|
|
@@ -13926,33 +13927,44 @@ CREATE INDEX IF NOT EXISTS idx_memories_sequence_group ON memories(sequence_grou
|
|
|
13926
13927
|
INSERT OR IGNORE INTO _migrations (id) VALUES (32);
|
|
13927
13928
|
`,
|
|
13928
13929
|
`
|
|
13929
|
-
|
|
13930
|
-
|
|
13931
|
-
|
|
13932
|
-
|
|
13933
|
-
|
|
13934
|
-
|
|
13935
|
-
|
|
13936
|
-
|
|
13937
|
-
|
|
13938
|
-
|
|
13939
|
-
|
|
13940
|
-
|
|
13941
|
-
|
|
13942
|
-
|
|
13943
|
-
|
|
13944
|
-
|
|
13945
|
-
|
|
13946
|
-
|
|
13947
|
-
|
|
13948
|
-
|
|
13949
|
-
|
|
13950
|
-
|
|
13951
|
-
|
|
13952
|
-
|
|
13953
|
-
|
|
13954
|
-
|
|
13955
|
-
|
|
13930
|
+
CREATE TABLE IF NOT EXISTS tasks (
|
|
13931
|
+
id TEXT PRIMARY KEY,
|
|
13932
|
+
subject TEXT NOT NULL,
|
|
13933
|
+
description TEXT DEFAULT '',
|
|
13934
|
+
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed', 'failed', 'cancelled')),
|
|
13935
|
+
priority TEXT NOT NULL DEFAULT 'medium' CHECK(priority IN ('critical', 'high', 'medium', 'low')),
|
|
13936
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
13937
|
+
assigned_agent_id TEXT REFERENCES agents(id) ON DELETE SET NULL,
|
|
13938
|
+
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
|
|
13939
|
+
session_id TEXT,
|
|
13940
|
+
parent_task_id TEXT REFERENCES tasks(id) ON DELETE SET NULL,
|
|
13941
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
13942
|
+
progress REAL NOT NULL DEFAULT 0 CHECK(progress >= 0 AND progress <= 1),
|
|
13943
|
+
due_at TEXT,
|
|
13944
|
+
started_at TEXT,
|
|
13945
|
+
completed_at TEXT,
|
|
13946
|
+
failed_at TEXT,
|
|
13947
|
+
error TEXT,
|
|
13948
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
13949
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
13950
|
+
);
|
|
13951
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
|
13952
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_priority ON tasks(priority);
|
|
13953
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_agent ON tasks(assigned_agent_id);
|
|
13954
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_project ON tasks(project_id);
|
|
13955
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_session ON tasks(session_id);
|
|
13956
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task_id);
|
|
13957
|
+
|
|
13958
|
+
CREATE TABLE IF NOT EXISTS task_comments (
|
|
13959
|
+
id TEXT PRIMARY KEY,
|
|
13960
|
+
task_id TEXT NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
|
|
13961
|
+
agent_id TEXT REFERENCES agents(id) ON DELETE SET NULL,
|
|
13962
|
+
body TEXT NOT NULL,
|
|
13963
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
13964
|
+
);
|
|
13965
|
+
CREATE INDEX IF NOT EXISTS idx_task_comments_task ON task_comments(task_id);
|
|
13966
|
+
CREATE INDEX IF NOT EXISTS idx_task_comments_agent ON task_comments(agent_id);
|
|
13967
|
+
INSERT OR IGNORE INTO _migrations (id) VALUES (34);
|
|
13956
13968
|
`
|
|
13957
13969
|
];
|
|
13958
13970
|
});
|
|
@@ -14641,7 +14653,7 @@ function createMemory(input, dedupeMode = "merge", db) {
|
|
|
14641
14653
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'active', 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, 1, ?, ?, ?, ?, ?, ?)`, [
|
|
14642
14654
|
id,
|
|
14643
14655
|
input.key,
|
|
14644
|
-
|
|
14656
|
+
safeValue,
|
|
14645
14657
|
input.category || "knowledge",
|
|
14646
14658
|
input.scope || "private",
|
|
14647
14659
|
input.summary || null,
|
|
@@ -16405,6 +16417,10 @@ function buildFilterConditions(filter) {
|
|
|
16405
16417
|
params.push(tag);
|
|
16406
16418
|
}
|
|
16407
16419
|
}
|
|
16420
|
+
if (filter.namespace) {
|
|
16421
|
+
conditions.push("m.namespace = ?");
|
|
16422
|
+
params.push(filter.namespace);
|
|
16423
|
+
}
|
|
16408
16424
|
return { conditions, params };
|
|
16409
16425
|
}
|
|
16410
16426
|
function searchWithFts5(d, query, queryLower, filter, graphBoostedIds) {
|
|
@@ -21087,8 +21103,12 @@ function parseMachine(row) {
|
|
|
21087
21103
|
is_primary: Boolean(row.is_primary)
|
|
21088
21104
|
};
|
|
21089
21105
|
}
|
|
21106
|
+
function normalizeHostname(host) {
|
|
21107
|
+
return host.replace(/\.(local|lan|home|internal)$/i, "");
|
|
21108
|
+
}
|
|
21090
21109
|
function registerMachine(name, db = getDatabase()) {
|
|
21091
|
-
const
|
|
21110
|
+
const rawHost = hostname2();
|
|
21111
|
+
const host = normalizeHostname(rawHost);
|
|
21092
21112
|
const plat = platform2();
|
|
21093
21113
|
const machineName = name?.trim() || host;
|
|
21094
21114
|
const existing = parseMachine(db.query("SELECT * FROM machines WHERE hostname = ?").get(host));
|
|
@@ -21126,7 +21146,7 @@ function touchMachine(id, db = getDatabase()) {
|
|
|
21126
21146
|
db.run("UPDATE machines SET last_seen_at = ? WHERE id = ?", [now(), id]);
|
|
21127
21147
|
}
|
|
21128
21148
|
function getCurrentMachineId(db = getDatabase()) {
|
|
21129
|
-
const host = hostname2();
|
|
21149
|
+
const host = normalizeHostname(hostname2());
|
|
21130
21150
|
const m = db.query("SELECT id FROM machines WHERE hostname = ?").get(host);
|
|
21131
21151
|
if (m) {
|
|
21132
21152
|
touchMachine(m.id, db);
|
|
@@ -21877,30 +21897,42 @@ function registerBulkCommand(program2) {
|
|
|
21877
21897
|
}
|
|
21878
21898
|
|
|
21879
21899
|
// src/cli/commands/memory-cmd-remove.ts
|
|
21900
|
+
init_database();
|
|
21901
|
+
init_memories();
|
|
21902
|
+
init_helpers();
|
|
21880
21903
|
import chalk10 from "chalk";
|
|
21881
21904
|
function registerRemoveCommand(program2) {
|
|
21882
|
-
program2.command("remove <nameOrId>").description("Remove/delete a memory by name or ID (alias for memory
|
|
21905
|
+
program2.command("remove <nameOrId>").description("Remove/delete a memory by name or ID (alias for memory forget)").option("--agent <id>", "Agent ID").option("-s, --scope <scope>", "Filter by scope (when looking up by key)").action((nameOrId, opts) => {
|
|
21883
21906
|
const globalOpts = program2.opts();
|
|
21884
21907
|
const agentId = opts.agent || globalOpts.agent;
|
|
21885
|
-
const
|
|
21886
|
-
let id =
|
|
21887
|
-
try {
|
|
21888
|
-
id = resolvePartialMemoryId?.(nameOrId) || null;
|
|
21889
|
-
} catch {}
|
|
21908
|
+
const db = getDatabase();
|
|
21909
|
+
let id = resolvePartialId(db, "memories", nameOrId);
|
|
21890
21910
|
if (!id) {
|
|
21891
|
-
const mem =
|
|
21911
|
+
const mem = getMemoryByKey(nameOrId, opts.scope, agentId);
|
|
21892
21912
|
if (mem)
|
|
21893
21913
|
id = mem.id;
|
|
21894
21914
|
}
|
|
21895
21915
|
if (!id) {
|
|
21896
|
-
|
|
21916
|
+
if (globalOpts.json) {
|
|
21917
|
+
outputJson({ error: `Memory not found: ${nameOrId}` });
|
|
21918
|
+
} else {
|
|
21919
|
+
console.error(chalk10.red(`Memory not found: ${nameOrId}`));
|
|
21920
|
+
}
|
|
21897
21921
|
process.exit(1);
|
|
21898
21922
|
}
|
|
21899
|
-
const deleted =
|
|
21923
|
+
const deleted = deleteMemory(id);
|
|
21900
21924
|
if (deleted) {
|
|
21901
|
-
|
|
21925
|
+
if (globalOpts.json) {
|
|
21926
|
+
outputJson({ deleted: id });
|
|
21927
|
+
} else {
|
|
21928
|
+
console.log(chalk10.green(`Memory ${id.slice(0, 8)} removed`));
|
|
21929
|
+
}
|
|
21902
21930
|
} else {
|
|
21903
|
-
|
|
21931
|
+
if (globalOpts.json) {
|
|
21932
|
+
outputJson({ error: `Memory not found: ${nameOrId}` });
|
|
21933
|
+
} else {
|
|
21934
|
+
console.error(chalk10.red(`Memory not found: ${nameOrId}`));
|
|
21935
|
+
}
|
|
21904
21936
|
process.exit(1);
|
|
21905
21937
|
}
|
|
21906
21938
|
});
|