claude-memory-agent 2.2.1 → 2.2.3

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/bin/cli.js CHANGED
@@ -206,7 +206,7 @@ function checkOllamaModel() {
206
206
  // Print help
207
207
  function printHelp() {
208
208
  console.log(`
209
- Claude Memory Agent v2.0.1
209
+ Claude Memory Agent v2.2.3
210
210
  Persistent semantic memory for Claude Code sessions
211
211
 
212
212
  USAGE:
@@ -314,7 +314,7 @@ function main() {
314
314
 
315
315
  case '--version':
316
316
  case '-v':
317
- console.log('claude-memory-agent v2.0.0');
317
+ console.log('claude-memory-agent v2.2.3');
318
318
  break;
319
319
 
320
320
  default:
@@ -7,8 +7,22 @@
7
7
  */
8
8
 
9
9
  const path = require('path');
10
+ const fs = require('fs');
11
+
12
+ // Fix executable permissions on Unix (Windows npm pack doesn't preserve them)
13
+ function fixPermissions() {
14
+ if (process.platform === 'win32') return;
15
+ try {
16
+ const cliPath = path.join(__dirname, 'cli.js');
17
+ fs.chmodSync(cliPath, 0o755);
18
+ } catch (_) {
19
+ // Non-fatal — user can chmod manually
20
+ }
21
+ }
10
22
 
11
23
  async function main() {
24
+ fixPermissions();
25
+
12
26
  // Skip in CI
13
27
  if (process.env.CI) {
14
28
  console.log('Skipping post-install in CI environment');
package/install.py CHANGED
@@ -91,10 +91,15 @@ def print_error(text: str):
91
91
 
92
92
 
93
93
  def prompt_yes_no(question: str, default: bool = True) -> bool:
94
- """Prompt for yes/no answer."""
94
+ """Prompt for yes/no answer. Returns default if stdin is not a TTY or EOF."""
95
+ if not sys.stdin.isatty():
96
+ return default
95
97
  suffix = " [Y/n]: " if default else " [y/N]: "
96
98
  while True:
97
- answer = input(question + suffix).strip().lower()
99
+ try:
100
+ answer = input(question + suffix).strip().lower()
101
+ except EOFError:
102
+ return default
98
103
  if not answer:
99
104
  return default
100
105
  if answer in ("y", "yes"):
@@ -105,8 +110,13 @@ def prompt_yes_no(question: str, default: bool = True) -> bool:
105
110
 
106
111
 
107
112
  def prompt_value(question: str, default: str) -> str:
108
- """Prompt for a value with a default."""
109
- answer = input(f"{question} [{default}]: ").strip()
113
+ """Prompt for a value with a default. Returns default if stdin is not a TTY or EOF."""
114
+ if not sys.stdin.isatty():
115
+ return default
116
+ try:
117
+ answer = input(f"{question} [{default}]: ").strip()
118
+ except EOFError:
119
+ return default
110
120
  return answer if answer else default
111
121
 
112
122
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-memory-agent",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "Persistent semantic memory system for Claude Code sessions with anti-hallucination grounding",
5
5
  "keywords": [
6
6
  "claude",
package/requirements.txt CHANGED
@@ -9,4 +9,4 @@ torch>=2.0.0
9
9
  sentence-transformers>=3.0.0,<4.0.0
10
10
  faiss-cpu>=1.7.4,<2.0.0
11
11
  rich>=13.0.0,<14.0.0
12
- mcp>=1.0.0
12
+ mcp>=1.0.0; python_version>="3.10"