synabun 2026.3.311 → 2026.3.312

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.
@@ -66,7 +66,8 @@ function readStdin() {
66
66
  // ─── Local embedding generation ───
67
67
 
68
68
  async function generateEmbedding(text) {
69
- const embPath = join(__dirname, '..', '..', 'mcp-server', 'dist', 'services', 'local-embeddings.js');
69
+ const PACKAGE_ROOT = join(__dirname, '..', '..');
70
+ const embPath = join(PACKAGE_ROOT, 'mcp-server', 'dist', 'services', 'local-embeddings.js');
70
71
  if (!existsSync(embPath)) {
71
72
  throw new Error('MCP server not built. Run: cd mcp-server && npm run build');
72
73
  }
@@ -27,10 +27,9 @@
27
27
  import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdirSync, readdirSync } from 'node:fs';
28
28
  import { dirname, join } from 'node:path';
29
29
  import { fileURLToPath } from 'node:url';
30
- import { loadCategories, buildCategoryReference, detectProject } from './shared.mjs';
30
+ import { loadCategories, buildCategoryReference, detectProject, DATA_DIR } from './shared.mjs';
31
31
 
32
32
  const __dirname = dirname(fileURLToPath(import.meta.url));
33
- const DATA_DIR = join(__dirname, '..', '..', 'data');
34
33
  const PENDING_COMPACT_DIR = join(DATA_DIR, 'pending-compact');
35
34
  const PENDING_REMEMBER_DIR = join(DATA_DIR, 'pending-remember');
36
35
 
@@ -32,10 +32,13 @@ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, unlink
32
32
  import { dirname, join, basename } from 'node:path';
33
33
  import { fileURLToPath } from 'node:url';
34
34
 
35
+ import { getDataHome } from '../../lib/paths.js';
36
+
35
37
  const __dirname = dirname(fileURLToPath(import.meta.url));
36
- const CACHE_DIR = join(__dirname, '..', '..', 'data', 'precompact');
37
- const PENDING_DIR = join(__dirname, '..', '..', 'data', 'pending-compact');
38
- const DEBUG_LOG = join(__dirname, '..', '..', 'data', 'compact-debug.log');
38
+ const DATA_HOME = getDataHome();
39
+ const CACHE_DIR = join(DATA_HOME, 'data', 'precompact');
40
+ const PENDING_DIR = join(DATA_HOME, 'data', 'pending-compact');
41
+ const DEBUG_LOG = join(DATA_HOME, 'data', 'compact-debug.log');
39
42
 
40
43
  // --- Stdin ---
41
44
 
@@ -192,7 +195,7 @@ async function main() {
192
195
  };
193
196
 
194
197
  // Capture active loop state for compaction recovery
195
- const LOOP_DIR = join(__dirname, '..', '..', 'data', 'loop');
198
+ const LOOP_DIR = join(DATA_HOME, 'data', 'loop');
196
199
  const loopPath = join(LOOP_DIR, `${sessionId}.json`);
197
200
  if (existsSync(loopPath)) {
198
201
  try {
@@ -24,9 +24,11 @@ import { existsSync, readFileSync, readdirSync } from 'node:fs';
24
24
  import { join, dirname } from 'node:path';
25
25
  import { fileURLToPath } from 'node:url';
26
26
 
27
+ import { getDataHome } from '../../lib/paths.js';
28
+
27
29
  const __dirname = dirname(fileURLToPath(import.meta.url));
28
- const SYNABUN_ROOT = join(__dirname, '..', '..');
29
- const LOOP_DIR = join(SYNABUN_ROOT, 'data', 'loop');
30
+ const DATA_HOME = getDataHome();
31
+ const LOOP_DIR = join(DATA_HOME, 'data', 'loop');
30
32
  const NI_BASE = process.env.SYNABUN_NI_URL || 'http://localhost:3344';
31
33
 
32
34
  const BLOCK_REASON = (toolName) =>
@@ -19,10 +19,9 @@
19
19
  import { readFileSync, writeFileSync, appendFileSync, existsSync, mkdirSync, renameSync, readdirSync } from 'node:fs';
20
20
  import { dirname, join } from 'node:path';
21
21
  import { fileURLToPath } from 'node:url';
22
- import { detectProject } from './shared.mjs';
22
+ import { detectProject, DATA_DIR } from './shared.mjs';
23
23
 
24
24
  const __dirname = dirname(fileURLToPath(import.meta.url));
25
- const DATA_DIR = join(__dirname, '..', '..', 'data');
26
25
  const HOOK_FEATURES_PATH = join(DATA_DIR, 'hook-features.json');
27
26
  const PENDING_REMEMBER_DIR = join(DATA_DIR, 'pending-remember');
28
27
  const LOOP_DIR = join(DATA_DIR, 'loop');
@@ -28,13 +28,13 @@ import { readFileSync, existsSync, unlinkSync, readdirSync, statSync, appendFile
28
28
  import { execSync } from 'node:child_process';
29
29
  import { dirname, join } from 'node:path';
30
30
  import { fileURLToPath } from 'node:url';
31
- import { getHookFeatures, detectProject, ensureProjectCategories, cleanupStaleLoops } from './shared.mjs';
31
+ import { getHookFeatures, detectProject, ensureProjectCategories, cleanupStaleLoops, DATA_DIR } from './shared.mjs';
32
32
 
33
33
  const __dirname = dirname(fileURLToPath(import.meta.url));
34
- const PRECOMPACT_DIR = join(__dirname, '..', '..', 'data', 'precompact');
35
- const DEBUG_LOG = join(__dirname, '..', '..', 'data', 'compact-debug.log');
36
- const LOOP_DIR = join(__dirname, '..', '..', 'data', 'loop');
37
- const GREETING_CONFIG_PATH = join(__dirname, '..', '..', 'data', 'greeting-config.json');
34
+ const PRECOMPACT_DIR = join(DATA_DIR, 'precompact');
35
+ const DEBUG_LOG = join(DATA_DIR, 'compact-debug.log');
36
+ const LOOP_DIR = join(DATA_DIR, 'loop');
37
+ const GREETING_CONFIG_PATH = join(DATA_DIR, 'greeting-config.json');
38
38
 
39
39
  // --- Greeting helpers ---
40
40
 
@@ -8,11 +8,13 @@
8
8
  import { readFileSync, existsSync, writeFileSync, readdirSync, unlinkSync } from 'node:fs';
9
9
  import { dirname, join, basename } from 'node:path';
10
10
  import { fileURLToPath } from 'node:url';
11
+ import { getDataHome } from '../../lib/paths.js';
11
12
 
12
13
  const __dirname = dirname(fileURLToPath(import.meta.url));
13
- export const DATA_DIR = join(__dirname, '..', '..', 'data');
14
- export const MCP_DATA_DIR = join(__dirname, '..', '..', 'mcp-server', 'data');
15
- export const ENV_PATH = join(__dirname, '..', '..', '.env');
14
+ const DATA_HOME = getDataHome();
15
+ export const DATA_DIR = join(DATA_HOME, 'data');
16
+ export const MCP_DATA_DIR = join(DATA_HOME, 'mcp-data');
17
+ export const ENV_PATH = join(DATA_HOME, '.env');
16
18
  export const HOOK_FEATURES_PATH = join(DATA_DIR, 'hook-features.json');
17
19
  export const PENDING_REMEMBER_DIR = join(DATA_DIR, 'pending-remember');
18
20
 
@@ -31,10 +31,9 @@
31
31
  import { readFileSync, writeFileSync, existsSync, unlinkSync, appendFileSync, readdirSync, renameSync, statSync } from 'node:fs';
32
32
  import { dirname, join } from 'node:path';
33
33
  import { fileURLToPath } from 'node:url';
34
- import { cleanupStaleLoops, detectProject } from './shared.mjs';
34
+ import { cleanupStaleLoops, detectProject, DATA_DIR } from './shared.mjs';
35
35
 
36
36
  const __dirname = dirname(fileURLToPath(import.meta.url));
37
- const DATA_DIR = join(__dirname, '..', '..', 'data');
38
37
  const PENDING_COMPACT_DIR = join(DATA_DIR, 'pending-compact');
39
38
  const LOOP_DIR = join(DATA_DIR, 'loop');
40
39
  const PENDING_REMEMBER_DIR = join(DATA_DIR, 'pending-remember');
@@ -14,8 +14,10 @@ import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdirSync } from '
14
14
  import { dirname, join } from 'node:path';
15
15
  import { fileURLToPath } from 'node:url';
16
16
 
17
+ import { getDataHome } from '../../lib/paths.js';
18
+
17
19
  const __dirname = dirname(fileURLToPath(import.meta.url));
18
- const DATA_DIR = join(__dirname, '..', '..', 'data');
20
+ const DATA_DIR = join(getDataHome(), 'data');
19
21
  const PENDING_REMEMBER_DIR = join(DATA_DIR, 'pending-remember');
20
22
  const HOOK_FEATURES_PATH = join(DATA_DIR, 'hook-features.json');
21
23
 
package/lib/paths.js ADDED
@@ -0,0 +1,74 @@
1
+ /**
2
+ * SynaBun — Shared path resolution
3
+ *
4
+ * Separates CODE paths (global npm package) from DATA paths (user-specific).
5
+ * All consumers import from here to ensure consistent path resolution.
6
+ */
7
+
8
+ import { resolve, dirname } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { mkdirSync, existsSync } from 'node:fs';
11
+ import { homedir, platform } from 'node:os';
12
+
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+
15
+ /**
16
+ * Root of the SynaBun package (where code lives).
17
+ * In global install: /path/to/node_modules/synabun
18
+ * In dev mode: the repo root
19
+ */
20
+ export const PACKAGE_ROOT = resolve(__dirname, '..');
21
+
22
+ /**
23
+ * Detect if running from a global npm install.
24
+ */
25
+ function isGlobalInstall() {
26
+ return PACKAGE_ROOT.replace(/\\/g, '/').includes('/node_modules/synabun');
27
+ }
28
+
29
+ /**
30
+ * Resolve the user's data home directory.
31
+ *
32
+ * Priority:
33
+ * 1. SYNABUN_DATA_HOME env var (explicit override)
34
+ * 2. Platform default (~/.synabun, %APPDATA%/synabun)
35
+ * 3. Dev fallback: repo root (when not a global install)
36
+ */
37
+ export function getDataHome() {
38
+ if (process.env.SYNABUN_DATA_HOME) {
39
+ return resolve(process.env.SYNABUN_DATA_HOME);
40
+ }
41
+
42
+ if (isGlobalInstall()) {
43
+ const home = homedir();
44
+ if (platform() === 'win32' && process.env.APPDATA) {
45
+ return resolve(process.env.APPDATA, 'synabun');
46
+ }
47
+ return resolve(home, '.synabun');
48
+ }
49
+
50
+ // Dev mode: data lives alongside code in the repo root
51
+ return PACKAGE_ROOT;
52
+ }
53
+
54
+ /**
55
+ * Create the data directory structure if it doesn't exist.
56
+ * Safe to call on every startup (idempotent).
57
+ */
58
+ export function ensureDataDirs(dataHome) {
59
+ const dirs = [
60
+ resolve(dataHome, 'data'),
61
+ resolve(dataHome, 'data', 'images'),
62
+ resolve(dataHome, 'data', 'custom-icons'),
63
+ resolve(dataHome, 'data', 'pending-remember'),
64
+ resolve(dataHome, 'data', 'pending-compact'),
65
+ resolve(dataHome, 'data', 'loop'),
66
+ resolve(dataHome, 'data', 'plans'),
67
+ resolve(dataHome, 'data', 'browser-profiles'),
68
+ resolve(dataHome, 'mcp-data'),
69
+ ];
70
+
71
+ for (const dir of dirs) {
72
+ mkdirSync(dir, { recursive: true });
73
+ }
74
+ }
@@ -5,9 +5,9 @@ import { fileURLToPath } from 'url';
5
5
  import { text } from './response.js';
6
6
  const __dirname = dirname(fileURLToPath(import.meta.url));
7
7
  const DATA_DIR = join(__dirname, '..', '..', 'data');
8
- // Loop state files and templates live in the project root data dir (Synabun/data/)
9
- const PROJECT_ROOT = process.env.SYNABUN_ROOT || join(__dirname, '..', '..', '..');
10
- const NI_DATA_DIR = join(PROJECT_ROOT, 'data');
8
+ // Loop state files and templates live in DATA_HOME/data/
9
+ const DATA_HOME = process.env.SYNABUN_DATA_HOME || process.env.SYNABUN_ROOT || join(__dirname, '..', '..', '..');
10
+ const NI_DATA_DIR = join(DATA_HOME, 'data');
11
11
  const LOOP_DIR = join(NI_DATA_DIR, 'loop');
12
12
  const LOOP_TEMPLATES_PATH = join(NI_DATA_DIR, 'loop-templates.json');
13
13
  const MAX_ITERATIONS = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/tools/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/tools/loop.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "main": "dist/index.js",
9
9
  "scripts": {
10
- "build": "tsc",
10
+ "build": "npx tsc",
11
11
  "test": "vitest run",
12
12
  "test:watch": "vitest",
13
13
  "start": "node dist/index.js",
@@ -6,9 +6,9 @@ import { text } from './response.js';
6
6
 
7
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
8
  const DATA_DIR = join(__dirname, '..', '..', 'data');
9
- // Loop state files and templates live in the project root data dir (Synabun/data/)
10
- const PROJECT_ROOT = process.env.SYNABUN_ROOT || join(__dirname, '..', '..', '..');
11
- const NI_DATA_DIR = join(PROJECT_ROOT, 'data');
9
+ // Loop state files and templates live in DATA_HOME/data/
10
+ const DATA_HOME = process.env.SYNABUN_DATA_HOME || process.env.SYNABUN_ROOT || join(__dirname, '..', '..', '..');
11
+ const NI_DATA_DIR = join(DATA_HOME, 'data');
12
12
  const LOOP_DIR = join(NI_DATA_DIR, 'loop');
13
13
  const LOOP_TEMPLATES_PATH = join(NI_DATA_DIR, 'loop-templates.json');
14
14
 
@@ -12,7 +12,7 @@ import { existsSync, mkdirSync } from 'fs';
12
12
  const __filename = fileURLToPath(import.meta.url);
13
13
  const __dirname = dirname(__filename);
14
14
 
15
- const MCP_DATA_DIR = resolve(__dirname, '..', '..', 'mcp-server', 'data');
15
+ const MCP_DATA_DIR = process.env.MEMORY_DATA_DIR || resolve(__dirname, '..', '..', 'mcp-server', 'data');
16
16
  const DEFAULT_DB_PATH = resolve(MCP_DATA_DIR, 'memory.db');
17
17
 
18
18
  let db = null;
@@ -263,7 +263,7 @@
263
263
  position: fixed;
264
264
  top: 0;
265
265
  left: var(--sidebar-total-width, 0px);
266
- width: calc(100% - var(--sidebar-total-width, 0px) - var(--claude-panel-width, 0px));
266
+ width: calc(100% - var(--sidebar-total-width, 0px));
267
267
  height: calc(100dvh - var(--terminal-height, 0px));
268
268
  z-index: 1;
269
269
  opacity: 1;
@@ -2239,6 +2239,7 @@ export function initGraph(container, options = {}) {
2239
2239
 
2240
2240
  // ── 6. Resize handler ──
2241
2241
  window.addEventListener('resize', _onResize);
2242
+ new ResizeObserver(_onResize).observe(container);
2242
2243
 
2243
2244
  // ── 7. Assign proxy as `graph` ──
2244
2245
  graph = graphProxy;