@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
@@ -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.24",
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
+ }