moflo 4.8.40 → 4.8.41

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/hooks.mjs CHANGED
@@ -27,7 +27,22 @@ import { createProcessManager } from './lib/process-manager.mjs';
27
27
 
28
28
  const __filename = fileURLToPath(import.meta.url);
29
29
  const __dirname = dirname(__filename);
30
- const projectRoot = resolve(__dirname, '../..');
30
+
31
+ // Detect project root by walking up from cwd to find package.json.
32
+ // IMPORTANT: Do NOT use resolve(__dirname, '..') or '../..' — this script lives
33
+ // in bin/ during development but gets synced to .claude/scripts/ in consumer
34
+ // projects, so __dirname-relative paths break. findProjectRoot() works everywhere.
35
+ function findProjectRoot() {
36
+ let dir = process.cwd();
37
+ const root = resolve(dir, '/');
38
+ while (dir !== root) {
39
+ if (existsSync(resolve(dir, 'package.json'))) return dir;
40
+ dir = dirname(dir);
41
+ }
42
+ return process.cwd();
43
+ }
44
+
45
+ const projectRoot = findProjectRoot();
31
46
  const logFile = resolve(projectRoot, '.swarm/hooks.log');
32
47
  const pm = createProcessManager(projectRoot);
33
48
 
package/bin/index-all.mjs CHANGED
@@ -15,7 +15,22 @@ import { fileURLToPath } from 'url';
15
15
  import { execFileSync } from 'child_process';
16
16
 
17
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
18
- const projectRoot = resolve(__dirname, '..');
18
+
19
+ // Detect project root by walking up from cwd to find package.json.
20
+ // IMPORTANT: Do NOT use resolve(__dirname, '..') — this script lives in bin/
21
+ // during development but gets synced to .claude/scripts/ in consumer projects,
22
+ // so __dirname-relative paths break. findProjectRoot() works in both locations.
23
+ function findProjectRoot() {
24
+ let dir = process.cwd();
25
+ const root = resolve(dir, '/');
26
+ while (dir !== root) {
27
+ if (existsSync(resolve(dir, 'package.json'))) return dir;
28
+ dir = dirname(dir);
29
+ }
30
+ return process.cwd();
31
+ }
32
+
33
+ const projectRoot = findProjectRoot();
19
34
  const LOG_PATH = resolve(projectRoot, '.swarm/hooks.log');
20
35
 
21
36
  function log(msg) {
@@ -353,8 +353,15 @@ async function main() {
353
353
 
354
354
  // Trigger embedding generation in background
355
355
  try {
356
- const embeddingScript = resolve(projectRoot, 'node_modules/moflo/bin/build-embeddings.mjs');
357
- if (existsSync(embeddingScript)) {
356
+ // Check __dirname first (works in both dev bin/ and consumer .claude/scripts/),
357
+ // then fall back to node_modules/moflo/bin/ for consumer projects
358
+ const candidates = [
359
+ resolve(__dirname, 'build-embeddings.mjs'),
360
+ resolve(projectRoot, 'node_modules/moflo/bin/build-embeddings.mjs'),
361
+ resolve(projectRoot, '.claude/scripts/build-embeddings.mjs'),
362
+ ];
363
+ const embeddingScript = candidates.find(p => existsSync(p));
364
+ if (embeddingScript) {
358
365
  const child = spawn('node', [embeddingScript, '--namespace', NAMESPACE], {
359
366
  cwd: projectRoot,
360
367
  detached: true,
@@ -13,7 +13,22 @@ import { resolve, dirname } from 'path';
13
13
  import { fileURLToPath } from 'url';
14
14
 
15
15
  const __dirname = dirname(fileURLToPath(import.meta.url));
16
- const projectRoot = resolve(__dirname, '../..');
16
+
17
+ // Detect project root by walking up from cwd to find package.json.
18
+ // IMPORTANT: Do NOT use resolve(__dirname, '..') or '../..' — this script lives
19
+ // in bin/ during development but gets synced to .claude/scripts/ in consumer
20
+ // projects, so __dirname-relative paths break. findProjectRoot() works everywhere.
21
+ function findProjectRoot() {
22
+ let dir = process.cwd();
23
+ const root = resolve(dir, '/');
24
+ while (dir !== root) {
25
+ if (existsSync(resolve(dir, 'package.json'))) return dir;
26
+ dir = dirname(dir);
27
+ }
28
+ return process.cwd();
29
+ }
30
+
31
+ const projectRoot = findProjectRoot();
17
32
 
18
33
  // ── 1. Helper: fire-and-forget a background process ─────────────────────────
19
34
  function fireAndForget(cmd, args, label) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moflo",
3
- "version": "4.8.40",
3
+ "version": "4.8.41",
4
4
  "description": "MoFlo — AI agent orchestration for Claude Code. Forked from ruflo/claude-flow with patches applied to source, plus feature-level orchestration.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -2,5 +2,5 @@
2
2
  * Auto-generated by build. Do not edit manually.
3
3
  * Source of truth: root package.json → scripts/sync-version.mjs
4
4
  */
5
- export const VERSION = '4.8.40';
5
+ export const VERSION = '4.8.41';
6
6
  //# sourceMappingURL=version.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moflo/cli",
3
- "version": "4.8.40",
3
+ "version": "4.8.41",
4
4
  "type": "module",
5
5
  "description": "MoFlo CLI — AI agent orchestration with specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
6
6
  "main": "dist/src/index.js",