@empirical-gauzza/cli 1.0.24 → 1.0.26
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.
|
@@ -95,6 +95,7 @@ that only records memory when explicitly told to defeats the purpose of this ski
|
|
|
95
95
|
Two rules that are not optional:
|
|
96
96
|
|
|
97
97
|
- Record one memory per finding. A session that fixed three things records three memories, each with the fix phrase and the date in its summary. One combined summary is not recorded: it cannot be found by any question about one of its parts.
|
|
98
|
+
- Tags are topics and project names, at most 6 per memory. Reuse tags that recall already returned for this project before inventing one. Never put workflow state (complete, pending, fixed, verified, in-progress), task or step numbers (task-5, us-3.2), or sentences into tags, whether via `empirical memory record --tags` or `record_graph_memory`: state belongs in data.status or in the summary, numbers belong in the summary.
|
|
98
99
|
- Empirical first. A note in a local file, a scratchpad, or a host memory directory is not recorded; it is invisible to every other session, tool, and agent. Record in Empirical, then keep a local pointer if you want one.
|
|
99
100
|
|
|
100
101
|
- Record durable decisions, project conventions, preferences, plans, and meaningful reflections
|
|
@@ -85,6 +85,7 @@ that only records memory when explicitly told to defeats the purpose of this ski
|
|
|
85
85
|
Two rules that are not optional:
|
|
86
86
|
|
|
87
87
|
- Record one memory per finding. A session that fixed three things records three memories, each with the fix phrase and the date in its summary. One combined summary is not recorded: it cannot be found by any question about one of its parts.
|
|
88
|
+
- Tags are topics and project names, at most 6 per memory. Reuse tags that recall already returned for this project before inventing one. Never put workflow state (complete, pending, fixed, verified, in-progress), task or step numbers (task-5, us-3.2), or sentences into tags passed via `empirical memory record --tags`: state belongs in data.status or in the summary, numbers belong in the summary.
|
|
88
89
|
- Empirical first. A note in a local file, a scratchpad, or a host memory directory is not recorded; it is invisible to every other session, tool, and agent. Record in Empirical, then keep a local pointer if you want one.
|
|
89
90
|
|
|
90
91
|
- Record durable decisions, project conventions, preferences, plans, and meaningful reflections
|
|
@@ -75,6 +75,7 @@ that only records memory when explicitly told to defeats the purpose of this ski
|
|
|
75
75
|
Two rules that are not optional:
|
|
76
76
|
|
|
77
77
|
- Record one memory per finding. A session that fixed three things records three memories, each with the fix phrase and the date in its summary. One combined summary is not recorded: it cannot be found by any question about one of its parts.
|
|
78
|
+
- Tags are topics and project names, at most 6 per memory. Reuse tags that recall already returned for this project before inventing one. Never put workflow state (complete, pending, fixed, verified, in-progress), task or step numbers (task-5, us-3.2), or sentences into tags passed via `record_graph_memory`: state belongs in data.status or in the summary, numbers belong in the summary.
|
|
78
79
|
- Empirical first. A note in a local file, a scratchpad, or a host memory directory is not recorded; it is invisible to every other session, tool, and agent. Record in Empirical, then keep a local pointer if you want one.
|
|
79
80
|
|
|
80
81
|
- Record durable decisions, project conventions, preferences, plans, and meaningful reflections
|
package/lib/memoryCommands.js
CHANGED
|
@@ -44,7 +44,7 @@ function renderMemoryResultsTable(items) {
|
|
|
44
44
|
// the 90-line global help wall bin/empirical.js otherwise short-circuits every --help to.
|
|
45
45
|
|
|
46
46
|
const MEMORY_SUBCOMMAND_USAGE = {
|
|
47
|
-
query: 'Usage: empirical memory query --match <query> [--top-k 3] [--category <cat>] [--tags <t1,t2>] [--pretty] [--format table]',
|
|
47
|
+
query: 'Usage: empirical memory query --match <query> [--top-k 3] [--category <cat>] [--tags <t1,t2>] [--tags-all <t1,t2>] [--status <s1,s2>] [--pretty] [--format table]',
|
|
48
48
|
get: 'Usage: empirical memory get --memory-id <id> [--pretty]',
|
|
49
49
|
list: 'Usage: empirical memory list [--category <cat>] [--tags <t1,t2>] [--start-date <ISO>] [--end-date <ISO>] [--limit 20] [--cursor <cursor>] [--oldest] [--pretty] [--format table]',
|
|
50
50
|
record: 'Usage: empirical memory record --category <cat> (--summary <text> | --summary - | --summary-file <path>) [--tags t1,t2] [--node-type observation] [--json-file <path>] [--no-dedupe] [--no-auto-link]',
|
|
@@ -179,7 +179,7 @@ function printMemoryResolveError(result) {
|
|
|
179
179
|
async function runMemoryQuery(args) {
|
|
180
180
|
const match = parseOption(args, '--match', '');
|
|
181
181
|
if (!match) {
|
|
182
|
-
warn('Usage: empirical memory query --match <query> [--top-k 3] [--category <cat>] [--tags <t1,t2>] [--pretty]');
|
|
182
|
+
warn('Usage: empirical memory query --match <query> [--top-k 3] [--category <cat>] [--tags <t1,t2>] [--tags-all <t1,t2>] [--status <s1,s2>] [--pretty]');
|
|
183
183
|
process.exit(1);
|
|
184
184
|
}
|
|
185
185
|
|
|
@@ -188,6 +188,12 @@ async function runMemoryQuery(args) {
|
|
|
188
188
|
const category = parseOption(args, '--category', '');
|
|
189
189
|
const tagsRaw = parseOption(args, '--tags', '');
|
|
190
190
|
const tags = tagsRaw ? tagsRaw.split(',').map((t) => t.trim()).filter(Boolean) : [];
|
|
191
|
+
// R3 (2026-09-06): --tags-all is an AND match (all must be present), unlike --tags' OR match;
|
|
192
|
+
// --status filters data.status. Both are optional and additive to --tags/--category.
|
|
193
|
+
const tagsAllRaw = parseOption(args, '--tags-all', '');
|
|
194
|
+
const tagsAll = tagsAllRaw ? tagsAllRaw.split(',').map((t) => t.trim()).filter(Boolean) : [];
|
|
195
|
+
const statusRaw = parseOption(args, '--status', '');
|
|
196
|
+
const status = statusRaw ? statusRaw.split(',').map((s) => s.trim()).filter(Boolean) : [];
|
|
191
197
|
const pretty = parseFlag(args, '--pretty');
|
|
192
198
|
const format = parseOption(args, '--format', 'json');
|
|
193
199
|
|
|
@@ -199,6 +205,8 @@ async function runMemoryQuery(args) {
|
|
|
199
205
|
const filters = {};
|
|
200
206
|
if (category) filters.category = category;
|
|
201
207
|
if (tags.length) filters.tags = tags;
|
|
208
|
+
if (tagsAll.length) filters.tagsAll = tagsAll;
|
|
209
|
+
if (status.length) filters.status = status;
|
|
202
210
|
if (Object.keys(filters).length) body.filters = filters;
|
|
203
211
|
|
|
204
212
|
let response;
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@empirical-gauzza/cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Persistent cross-tool memory for AI agents. Give Claude Code, Codex, Copilot, Cursor, and ChatGPT one shared memory: save project context once, recall it everywhere via CLI or MCP.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"memory",
|
|
7
|
-
"mcp",
|
|
8
|
-
"agent memory",
|
|
9
|
-
"ai memory",
|
|
10
|
-
"claude",
|
|
11
|
-
"chatgpt",
|
|
12
|
-
"model context protocol",
|
|
13
|
-
"persistent memory",
|
|
14
|
-
"claude-code",
|
|
15
|
-
"codex",
|
|
16
|
-
"knowledge base"
|
|
17
|
-
],
|
|
18
|
-
"type": "commonjs",
|
|
19
|
-
"license": "MIT",
|
|
20
|
-
"homepage": "https://empirical.gauzza.com/docs/cli-details",
|
|
21
|
-
"publishConfig": {
|
|
22
|
-
"access": "public"
|
|
23
|
-
},
|
|
24
|
-
"bin": {
|
|
25
|
-
"empirical": "bin/empirical.js"
|
|
26
|
-
},
|
|
27
|
-
"engines": {
|
|
28
|
-
"node": ">=18.0.0"
|
|
29
|
-
},
|
|
30
|
-
"dependencies": {
|
|
31
|
-
"gray-matter": "^4.0.3"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@empirical-gauzza/cli",
|
|
3
|
+
"version": "1.0.26",
|
|
4
|
+
"description": "Persistent cross-tool memory for AI agents. Give Claude Code, Codex, Copilot, Cursor, and ChatGPT one shared memory: save project context once, recall it everywhere via CLI or MCP.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"memory",
|
|
7
|
+
"mcp",
|
|
8
|
+
"agent memory",
|
|
9
|
+
"ai memory",
|
|
10
|
+
"claude",
|
|
11
|
+
"chatgpt",
|
|
12
|
+
"model context protocol",
|
|
13
|
+
"persistent memory",
|
|
14
|
+
"claude-code",
|
|
15
|
+
"codex",
|
|
16
|
+
"knowledge base"
|
|
17
|
+
],
|
|
18
|
+
"type": "commonjs",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"homepage": "https://empirical.gauzza.com/docs/cli-details",
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"bin": {
|
|
25
|
+
"empirical": "bin/empirical.js"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=18.0.0"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"gray-matter": "^4.0.3"
|
|
32
|
+
}
|
|
33
|
+
}
|