total-agent-memory 0.1.0 → 1.1.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 -7
- package/bin/cli.js +3 -3
- package/lib/commands.js +2 -2
- package/lib/ide.js +2 -2
- package/lib/install.js +6 -6
- package/lib/paths.js +16 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
npx -y total-agent-memory
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
That's it. One command bootstraps a Python virtual env in `~/.
|
|
11
|
-
|
|
10
|
+
That's it. One command bootstraps a Python virtual env in `~/.tam/` (legacy
|
|
11
|
+
`~/.claude-memory/` is migrated automatically with a symlink kept for
|
|
12
|
+
backward-compat), installs the MCP server, and prints next-step instructions
|
|
13
|
+
for wiring your IDE.
|
|
12
14
|
|
|
13
15
|
## Quick start
|
|
14
16
|
|
|
@@ -37,7 +39,7 @@ Alias: `tam` (same binary).
|
|
|
37
39
|
| `status` | Print install paths, DB size. |
|
|
38
40
|
| `doctor` | Diagnose Python/uv/git on PATH. |
|
|
39
41
|
| `upgrade` | Pull the latest server version. |
|
|
40
|
-
| `uninstall` | Remove `~/.
|
|
42
|
+
| `uninstall` | Remove `~/.tam` (needs `--yes`). Also removes `~/.claude-memory` if it's a symlink to `~/.tam`. |
|
|
41
43
|
|
|
42
44
|
## Options
|
|
43
45
|
|
|
@@ -45,7 +47,7 @@ Alias: `tam` (same binary).
|
|
|
45
47
|
|---|---|
|
|
46
48
|
| `--server-version 11.2.2` | Pin a specific server release. |
|
|
47
49
|
| `--source pypi\|git` | Force install source. Default: PyPI with GitHub fallback. |
|
|
48
|
-
| `--memory-dir /path` | Override install dir (default `~/.
|
|
50
|
+
| `--memory-dir /path` | Override install dir (default `~/.tam`). |
|
|
49
51
|
| `--yes` | Skip prompts (needed for `uninstall`). |
|
|
50
52
|
| `--no-color` | Disable ANSI. |
|
|
51
53
|
| `--verbose` | Print every shell command. |
|
|
@@ -59,9 +61,9 @@ Alias: `tam` (same binary).
|
|
|
59
61
|
## What gets installed
|
|
60
62
|
|
|
61
63
|
```
|
|
62
|
-
~/.
|
|
64
|
+
~/.tam/
|
|
63
65
|
├── .venv/ # isolated Python env
|
|
64
|
-
│ └── bin/
|
|
66
|
+
│ └── bin/total-agent-memory # MCP server entry-point (legacy claude-total-memory also installed)
|
|
65
67
|
└── memory.db # SQLite — your memory lives here
|
|
66
68
|
```
|
|
67
69
|
|
|
@@ -71,7 +73,7 @@ Nothing global is touched. Uninstall with `tam uninstall --yes`.
|
|
|
71
73
|
|
|
72
74
|
- Site: <https://totalmemory.dev>
|
|
73
75
|
- Server source: <https://github.com/vbcherepanov/total-agent-memory>
|
|
74
|
-
- PyPI package: `claude-total-memory`
|
|
76
|
+
- PyPI package: `total-agent-memory` (legacy `claude-total-memory` is now a deprecation shim)
|
|
75
77
|
|
|
76
78
|
## License
|
|
77
79
|
|
package/bin/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ ${bold('Usage:')} total-agent-memory <command> [options]
|
|
|
16
16
|
${dim('alias:')} tam <command> [options]
|
|
17
17
|
|
|
18
18
|
${bold('Commands:')}
|
|
19
|
-
install Install Python server into ~/.
|
|
19
|
+
install Install Python server into ~/.tam (idempotent)
|
|
20
20
|
start Start the MCP server (default if no command)
|
|
21
21
|
connect <ide> Wire memory into an IDE config
|
|
22
22
|
${dim('claude-code | codex | cursor | cline | continue')}
|
|
@@ -25,7 +25,7 @@ ${bold('Commands:')}
|
|
|
25
25
|
status Health check + tool count + DB stats
|
|
26
26
|
doctor Diagnose environment (python, uv, ports, configs)
|
|
27
27
|
upgrade Upgrade to the latest server version
|
|
28
|
-
uninstall Remove ~/.
|
|
28
|
+
uninstall Remove ~/.tam and IDE wirings
|
|
29
29
|
version Print version
|
|
30
30
|
help Show this message
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ ${bold('Options:')}
|
|
|
33
33
|
--version, -v Print npm wrapper version
|
|
34
34
|
--server-version <v> Pin server version (default: latest)
|
|
35
35
|
--source <pypi|git> Where to install from (default: auto)
|
|
36
|
-
--memory-dir <path> Override install dir (default: ~/.
|
|
36
|
+
--memory-dir <path> Override install dir (default: ~/.tam)
|
|
37
37
|
--yes, -y Skip prompts
|
|
38
38
|
--no-color Disable ANSI colors
|
|
39
39
|
--verbose Print every shell command
|
package/lib/commands.js
CHANGED
|
@@ -11,7 +11,7 @@ const { run, runOrThrow } = require('./sh');
|
|
|
11
11
|
const { c, bold, ok, fail, warn, info, banner, step } = require('./style');
|
|
12
12
|
|
|
13
13
|
async function ensureInstalled(ctx) {
|
|
14
|
-
const bin = venvBin(ctx.flags, '
|
|
14
|
+
const bin = venvBin(ctx.flags, 'total-agent-memory');
|
|
15
15
|
if (exists(bin)) return bin;
|
|
16
16
|
process.stdout.write(`${info('Server not installed yet — installing now…')}\n`);
|
|
17
17
|
const code = await install(ctx);
|
|
@@ -85,7 +85,7 @@ async function cmdStatus(ctx) {
|
|
|
85
85
|
printReport(env);
|
|
86
86
|
const dir = memoryDir(ctx.flags);
|
|
87
87
|
const venv = venvDir(ctx.flags);
|
|
88
|
-
const bin = venvBin(ctx.flags, '
|
|
88
|
+
const bin = venvBin(ctx.flags, 'total-agent-memory');
|
|
89
89
|
const db = path.join(dir, 'memory.db');
|
|
90
90
|
process.stdout.write(`\n${bold('Install')}\n`);
|
|
91
91
|
process.stdout.write(` ${exists(dir) ? ok(`memory dir : ${dir}`) : warn(`memory dir : ${dir} (missing)`)}\n`);
|
package/lib/ide.js
CHANGED
|
@@ -18,7 +18,7 @@ const SUPPORTED = [
|
|
|
18
18
|
];
|
|
19
19
|
|
|
20
20
|
function mcpEntry(flags) {
|
|
21
|
-
const bin = venvBin(flags, '
|
|
21
|
+
const bin = venvBin(flags, 'total-agent-memory');
|
|
22
22
|
return {
|
|
23
23
|
command: bin,
|
|
24
24
|
args: [],
|
|
@@ -113,7 +113,7 @@ function wireOpenCode(flags) {
|
|
|
113
113
|
}
|
|
114
114
|
function wireCodex(flags) {
|
|
115
115
|
ensureDir(path.dirname(codexPath()));
|
|
116
|
-
const bin = venvBin(flags, '
|
|
116
|
+
const bin = venvBin(flags, 'total-agent-memory');
|
|
117
117
|
const block = `
|
|
118
118
|
|
|
119
119
|
[mcp_servers.total-agent-memory]
|
package/lib/install.js
CHANGED
|
@@ -7,10 +7,10 @@ const { memoryDir, venvDir, venvBin, ensureDir, exists } = require('./paths');
|
|
|
7
7
|
const { diagnose, pickInstaller, printReport, printRemediation } = require('./doctor');
|
|
8
8
|
const { c, bold, ok, fail, warn, info, step } = require('./style');
|
|
9
9
|
|
|
10
|
-
const PYPI_PACKAGE = '
|
|
10
|
+
const PYPI_PACKAGE = 'total-agent-memory';
|
|
11
11
|
// Pinned to the latest stable release at the time of the wrapper release.
|
|
12
12
|
// Override via `--server-version` or env TAM_SERVER_VERSION.
|
|
13
|
-
const DEFAULT_SERVER_VERSION = '
|
|
13
|
+
const DEFAULT_SERVER_VERSION = '12.2.0';
|
|
14
14
|
const GIT_URL = 'https://github.com/vbcherepanov/total-agent-memory.git';
|
|
15
15
|
|
|
16
16
|
function pinned(flags) {
|
|
@@ -81,10 +81,10 @@ async function pipInstall(flags, env, source) {
|
|
|
81
81
|
process.stdout.write(` ${warn('TAM_INSTALL_DRY=1 — skipping real pip install')}\n`);
|
|
82
82
|
// Drop a marker file so subsequent steps don't barf on missing bin.
|
|
83
83
|
const fs = require('fs');
|
|
84
|
-
const markerDir = path.dirname(venvBin(flags, '
|
|
84
|
+
const markerDir = path.dirname(venvBin(flags, 'total-agent-memory'));
|
|
85
85
|
fs.mkdirSync(markerDir, { recursive: true });
|
|
86
|
-
fs.writeFileSync(venvBin(flags, '
|
|
87
|
-
fs.chmodSync(venvBin(flags, '
|
|
86
|
+
fs.writeFileSync(venvBin(flags, 'total-agent-memory'), '#!/bin/sh\necho "dry-run shim"\n');
|
|
87
|
+
fs.chmodSync(venvBin(flags, 'total-agent-memory'), 0o755);
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -122,7 +122,7 @@ async function install(ctx) {
|
|
|
122
122
|
await pipInstall(flags, env, source);
|
|
123
123
|
|
|
124
124
|
// Verify entry-point present.
|
|
125
|
-
const bin = venvBin(flags, '
|
|
125
|
+
const bin = venvBin(flags, 'total-agent-memory');
|
|
126
126
|
if (!exists(bin)) {
|
|
127
127
|
process.stderr.write(`\n${fail(`entry-point ${bin} not found after install`)}\n`);
|
|
128
128
|
return 1;
|
package/lib/paths.js
CHANGED
|
@@ -8,10 +8,24 @@ function home() {
|
|
|
8
8
|
return process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
let _warnedLegacyEnv = false;
|
|
12
|
+
|
|
11
13
|
function memoryDir(flags) {
|
|
12
14
|
if (flags && typeof flags['memory-dir'] === 'string') return flags['memory-dir'];
|
|
13
|
-
if (process.env.
|
|
14
|
-
|
|
15
|
+
if (process.env.TAM_MEMORY_DIR) return process.env.TAM_MEMORY_DIR;
|
|
16
|
+
if (process.env.CLAUDE_MEMORY_DIR) {
|
|
17
|
+
if (!_warnedLegacyEnv) {
|
|
18
|
+
// eslint-disable-next-line no-console
|
|
19
|
+
console.warn(' ⚠ CLAUDE_MEMORY_DIR is deprecated, please switch to TAM_MEMORY_DIR');
|
|
20
|
+
_warnedLegacyEnv = true;
|
|
21
|
+
}
|
|
22
|
+
return process.env.CLAUDE_MEMORY_DIR;
|
|
23
|
+
}
|
|
24
|
+
const tam = path.join(home(), '.tam');
|
|
25
|
+
const legacy = path.join(home(), '.claude-memory');
|
|
26
|
+
if (fs.existsSync(tam)) return tam;
|
|
27
|
+
if (fs.existsSync(legacy)) return legacy; // Python server will migrate on first run.
|
|
28
|
+
return tam;
|
|
15
29
|
}
|
|
16
30
|
|
|
17
31
|
function venvDir(flags) {
|
package/package.json
CHANGED