@synergenius/flow-weaver-pack-weaver 0.9.191 → 0.9.193

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.
@@ -1 +1 @@
1
- {"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CA+D/D"}
1
+ {"version":3,"file":"build-context.d.ts","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"AA6DA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CA+D/D"}
@@ -3,32 +3,62 @@ import * as fs from 'node:fs';
3
3
  import * as path from 'node:path';
4
4
  import { HierarchyEventLog } from '../bot/hierarchy-event-log.js';
5
5
  import { KnowledgeStore } from '../bot/knowledge-store.js';
6
- /** Keywords that indicate the task relates to Flow Weaver / workflows / annotations. */
7
- const FW_KEYWORDS = /workflow|flow-weaver|flowweaver|@flowweaver|annotation|node.type|nodetype|\.fw/i;
6
+ /** Profiles that work with Flow Weaver workflows and need FW context. */
7
+ const FW_PROFILES = new Set(['fw-developer']);
8
8
  /**
9
- * Check whether the task instruction mentions Flow Weaver concepts.
10
- * If not, FW CLI calls are skipped entirely (they block the worker thread for up to 30s).
9
+ * Check whether this task needs Flow Weaver context.
10
+ * Only fw-developer profile gets FW grammar/templates plain developer doesn't.
11
+ * The profile is the signal, not keyword heuristics.
11
12
  */
12
- function isFwTask(taskJson) {
13
+ function needsFwContext(taskJson) {
13
14
  if (!taskJson)
14
15
  return false;
15
16
  try {
16
17
  const task = JSON.parse(taskJson);
17
- return FW_KEYWORDS.test(task.instruction ?? '');
18
+ return FW_PROFILES.has(task.assignedProfile ?? '');
18
19
  }
19
20
  catch {
20
21
  return false;
21
22
  }
22
23
  }
23
24
  /**
24
- * Resolve the flow-weaver binary from the project's node_modules/.bin.
25
- * Returns null if not found (avoids relying on PATH which is stripped in worker sandbox).
25
+ * Resolve the flow-weaver binary. Same search order as detect-provider's whichSafe:
26
+ * 1. .fw/tools/bin/flow-weaver (platform-installed)
27
+ * 2. node_modules/.bin/flow-weaver (npm-installed)
28
+ * 3. Walk up to 5 parents for both paths (monorepo/workspace root)
29
+ * 4. Global PATH via `which` (last resort)
30
+ * 5. null if not found (skip FW context, don't hang)
26
31
  */
27
32
  function resolveFwBin(projectDir) {
28
- const local = path.join(projectDir, 'node_modules', '.bin', 'flow-weaver');
29
- if (fs.existsSync(local))
30
- return local;
31
- return null;
33
+ // 1. Check project-local paths
34
+ const fwScoped = path.join(projectDir, '.fw', 'tools', 'bin', 'flow-weaver');
35
+ if (fs.existsSync(fwScoped))
36
+ return fwScoped;
37
+ const npmLocal = path.join(projectDir, 'node_modules', '.bin', 'flow-weaver');
38
+ if (fs.existsSync(npmLocal))
39
+ return npmLocal;
40
+ // 2. Walk parents
41
+ let dir = projectDir;
42
+ for (let i = 0; i < 5; i++) {
43
+ const parent = path.dirname(dir);
44
+ if (parent === dir)
45
+ break;
46
+ dir = parent;
47
+ const fwCandidate = path.join(dir, '.fw', 'tools', 'bin', 'flow-weaver');
48
+ if (fs.existsSync(fwCandidate))
49
+ return fwCandidate;
50
+ const npmCandidate = path.join(dir, 'node_modules', '.bin', 'flow-weaver');
51
+ if (fs.existsSync(npmCandidate))
52
+ return npmCandidate;
53
+ }
54
+ // 3. Global PATH
55
+ try {
56
+ const cmd = process.platform === 'win32' ? 'where' : 'which';
57
+ return execFileSync(cmd, ['flow-weaver'], { encoding: 'utf-8', timeout: 3000 }).trim() || null;
58
+ }
59
+ catch {
60
+ return null;
61
+ }
32
62
  }
33
63
  /**
34
64
  * Builds the knowledge bundle the AI needs for planning.
@@ -49,7 +79,7 @@ export function weaverBuildContext(ctx) {
49
79
  const { projectDir } = context.env;
50
80
  const task = JSON.parse(context.taskJson);
51
81
  const sections = [];
52
- const needsFw = isFwTask(context.taskJson);
82
+ const needsFw = needsFwContext(context.taskJson);
53
83
  const fwBin = needsFw ? resolveFwBin(projectDir) : null;
54
84
  if (task.mode === 'modify' && task.targets?.length) {
55
85
  // Adaptive context: minimal grammar + target files + referenced node types
@@ -1 +1 @@
1
- {"version":3,"file":"build-context.js","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-context.js","sourceRoot":"","sources":["../../src/node-types/build-context.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifestVersion": 2,
3
3
  "name": "@synergenius/flow-weaver-pack-weaver",
4
- "version": "0.9.191",
4
+ "version": "0.9.193",
5
5
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
6
6
  "engineVersion": ">=0.22.10",
7
7
  "categories": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synergenius/flow-weaver-pack-weaver",
3
- "version": "0.9.191",
3
+ "version": "0.9.193",
4
4
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -5,31 +5,58 @@ import type { WeaverContext } from '../bot/types.js';
5
5
  import { HierarchyEventLog } from '../bot/hierarchy-event-log.js';
6
6
  import { KnowledgeStore } from '../bot/knowledge-store.js';
7
7
 
8
- /** Keywords that indicate the task relates to Flow Weaver / workflows / annotations. */
9
- const FW_KEYWORDS = /workflow|flow-weaver|flowweaver|@flowweaver|annotation|node.type|nodetype|\.fw/i;
8
+ /** Profiles that work with Flow Weaver workflows and need FW context. */
9
+ const FW_PROFILES = new Set(['fw-developer']);
10
10
 
11
11
  /**
12
- * Check whether the task instruction mentions Flow Weaver concepts.
13
- * If not, FW CLI calls are skipped entirely (they block the worker thread for up to 30s).
12
+ * Check whether this task needs Flow Weaver context.
13
+ * Only fw-developer profile gets FW grammar/templates plain developer doesn't.
14
+ * The profile is the signal, not keyword heuristics.
14
15
  */
15
- function isFwTask(taskJson: string | undefined): boolean {
16
+ function needsFwContext(taskJson: string | undefined): boolean {
16
17
  if (!taskJson) return false;
17
18
  try {
18
- const task = JSON.parse(taskJson) as { instruction?: string };
19
- return FW_KEYWORDS.test(task.instruction ?? '');
19
+ const task = JSON.parse(taskJson) as { assignedProfile?: string };
20
+ return FW_PROFILES.has(task.assignedProfile ?? '');
20
21
  } catch {
21
22
  return false;
22
23
  }
23
24
  }
24
25
 
25
26
  /**
26
- * Resolve the flow-weaver binary from the project's node_modules/.bin.
27
- * Returns null if not found (avoids relying on PATH which is stripped in worker sandbox).
27
+ * Resolve the flow-weaver binary. Same search order as detect-provider's whichSafe:
28
+ * 1. .fw/tools/bin/flow-weaver (platform-installed)
29
+ * 2. node_modules/.bin/flow-weaver (npm-installed)
30
+ * 3. Walk up to 5 parents for both paths (monorepo/workspace root)
31
+ * 4. Global PATH via `which` (last resort)
32
+ * 5. null if not found (skip FW context, don't hang)
28
33
  */
29
34
  function resolveFwBin(projectDir: string): string | null {
30
- const local = path.join(projectDir, 'node_modules', '.bin', 'flow-weaver');
31
- if (fs.existsSync(local)) return local;
32
- return null;
35
+ // 1. Check project-local paths
36
+ const fwScoped = path.join(projectDir, '.fw', 'tools', 'bin', 'flow-weaver');
37
+ if (fs.existsSync(fwScoped)) return fwScoped;
38
+ const npmLocal = path.join(projectDir, 'node_modules', '.bin', 'flow-weaver');
39
+ if (fs.existsSync(npmLocal)) return npmLocal;
40
+
41
+ // 2. Walk parents
42
+ let dir = projectDir;
43
+ for (let i = 0; i < 5; i++) {
44
+ const parent = path.dirname(dir);
45
+ if (parent === dir) break;
46
+ dir = parent;
47
+ const fwCandidate = path.join(dir, '.fw', 'tools', 'bin', 'flow-weaver');
48
+ if (fs.existsSync(fwCandidate)) return fwCandidate;
49
+ const npmCandidate = path.join(dir, 'node_modules', '.bin', 'flow-weaver');
50
+ if (fs.existsSync(npmCandidate)) return npmCandidate;
51
+ }
52
+
53
+ // 3. Global PATH
54
+ try {
55
+ const cmd = process.platform === 'win32' ? 'where' : 'which';
56
+ return execFileSync(cmd, ['flow-weaver'], { encoding: 'utf-8', timeout: 3000 }).trim() || null;
57
+ } catch {
58
+ return null;
59
+ }
33
60
  }
34
61
 
35
62
  /**
@@ -51,7 +78,7 @@ export function weaverBuildContext(ctx: string): { ctx: string } {
51
78
  const { projectDir } = context.env;
52
79
  const task = JSON.parse(context.taskJson!) as { mode?: string; targets?: string[] };
53
80
  const sections: string[] = [];
54
- const needsFw = isFwTask(context.taskJson);
81
+ const needsFw = needsFwContext(context.taskJson);
55
82
  const fwBin = needsFw ? resolveFwBin(projectDir) : null;
56
83
 
57
84
  if (task.mode === 'modify' && task.targets?.length) {