@synergenius/flow-weaver-pack-weaver 0.9.130 → 0.9.131
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/dist/bot/operations.d.ts +34 -0
- package/dist/bot/operations.d.ts.map +1 -0
- package/dist/bot/operations.js +75 -0
- package/dist/bot/operations.js.map +1 -0
- package/dist/bot/step-executor.d.ts.map +1 -1
- package/dist/bot/step-executor.js +28 -25
- package/dist/bot/step-executor.js.map +1 -1
- package/dist/bot/system-prompt.d.ts.map +1 -1
- package/dist/bot/system-prompt.js +15 -14
- package/dist/bot/system-prompt.js.map +1 -1
- package/dist/bot/weaver-tools.js +7 -7
- package/dist/node-types/agent-execute.d.ts +1 -1
- package/dist/node-types/agent-execute.js +1 -1
- package/dist/node-types/exec-validate-retry.d.ts.map +1 -1
- package/dist/node-types/exec-validate-retry.js +3 -2
- package/dist/node-types/exec-validate-retry.js.map +1 -1
- package/dist/node-types/fix-errors.js +3 -3
- package/dist/node-types/plan-task.d.ts.map +1 -1
- package/dist/node-types/plan-task.js +5 -4
- package/dist/node-types/plan-task.js.map +1 -1
- package/flowweaver.manifest.json +1 -1
- package/package.json +1 -1
- package/src/bot/operations.ts +87 -0
- package/src/bot/step-executor.ts +29 -25
- package/src/bot/system-prompt.ts +16 -14
- package/src/bot/weaver-tools.ts +7 -7
- package/src/node-types/agent-execute.ts +1 -1
- package/src/node-types/exec-validate-retry.ts +3 -2
- package/src/node-types/fix-errors.ts +3 -3
- package/src/node-types/plan-task.ts +5 -4
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for plan step operation names.
|
|
3
|
+
*
|
|
4
|
+
* ALL operation names use underscore convention (e.g. write_file, not write-file).
|
|
5
|
+
* The step executor normalizes hyphens to underscores for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Import from here instead of hardcoding strings.
|
|
8
|
+
*/
|
|
9
|
+
export declare const OP_WRITE_FILE = "write_file";
|
|
10
|
+
export declare const OP_READ_FILE = "read_file";
|
|
11
|
+
export declare const OP_PATCH_FILE = "patch_file";
|
|
12
|
+
export declare const OP_LIST_FILES = "list_files";
|
|
13
|
+
export declare const OP_CREATE_WORKFLOW = "create_workflow";
|
|
14
|
+
export declare const OP_MODIFY_SOURCE = "modify_source";
|
|
15
|
+
export declare const OP_IMPLEMENT_NODE = "implement_node";
|
|
16
|
+
export declare const OP_RUN_SHELL = "run_shell";
|
|
17
|
+
export declare const OP_VALIDATE = "validate";
|
|
18
|
+
export declare const OP_TSC_CHECK = "tsc_check";
|
|
19
|
+
export declare const OP_RUN_TESTS = "run_tests";
|
|
20
|
+
export declare const OP_TASK_CREATE = "task_create";
|
|
21
|
+
export declare const OP_RESPOND = "respond";
|
|
22
|
+
export declare const OP_NO_OP = "no_op";
|
|
23
|
+
export declare const OP_NOOP = "noop";
|
|
24
|
+
export declare const OP_DONE = "done";
|
|
25
|
+
export declare const OP_COMPLETE = "complete";
|
|
26
|
+
/** Operations that the create_plan tool can use. Listed in tool descriptions. */
|
|
27
|
+
export declare const PLAN_OPERATIONS: readonly ["write_file", "read_file", "patch_file", "list_files", "run_shell", "validate", "task_create", "respond"];
|
|
28
|
+
/** Operations that skip execution (text-only responses). */
|
|
29
|
+
export declare const PASSTHROUGH_OPERATIONS: Set<string>;
|
|
30
|
+
/** All file operation names for the system prompt. */
|
|
31
|
+
export declare const FILE_OPERATIONS: readonly ["read_file", "write_file", "patch_file", "list_files", "run_shell", "validate", "tsc_check", "run_tests"];
|
|
32
|
+
/** Normalize operation name: convert hyphens to underscores for backward compat. */
|
|
33
|
+
export declare function normalizeOperation(op: string): string;
|
|
34
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/bot/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AACpD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAMlD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,cAAc,CAAC;AAMxC,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAM5C,eAAO,MAAM,UAAU,YAAY,CAAC;AACpC,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,OAAO,SAAS,CAAC;AAC9B,eAAO,MAAM,OAAO,SAAS,CAAC;AAC9B,eAAO,MAAM,WAAW,aAAa,CAAC;AAMtC,iFAAiF;AACjF,eAAO,MAAM,eAAe,qHASlB,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,aAMjC,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,eAAe,qHASlB,CAAC;AAEX,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for plan step operation names.
|
|
3
|
+
*
|
|
4
|
+
* ALL operation names use underscore convention (e.g. write_file, not write-file).
|
|
5
|
+
* The step executor normalizes hyphens to underscores for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Import from here instead of hardcoding strings.
|
|
8
|
+
*/
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// File operations
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
export const OP_WRITE_FILE = 'write_file';
|
|
13
|
+
export const OP_READ_FILE = 'read_file';
|
|
14
|
+
export const OP_PATCH_FILE = 'patch_file';
|
|
15
|
+
export const OP_LIST_FILES = 'list_files';
|
|
16
|
+
export const OP_CREATE_WORKFLOW = 'create_workflow';
|
|
17
|
+
export const OP_MODIFY_SOURCE = 'modify_source';
|
|
18
|
+
export const OP_IMPLEMENT_NODE = 'implement_node';
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Shell & validation
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
export const OP_RUN_SHELL = 'run_shell';
|
|
23
|
+
export const OP_VALIDATE = 'validate';
|
|
24
|
+
export const OP_TSC_CHECK = 'tsc_check';
|
|
25
|
+
export const OP_RUN_TESTS = 'run_tests';
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Task management
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export const OP_TASK_CREATE = 'task_create';
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Passthrough (no execution needed)
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
export const OP_RESPOND = 'respond';
|
|
34
|
+
export const OP_NO_OP = 'no_op';
|
|
35
|
+
export const OP_NOOP = 'noop';
|
|
36
|
+
export const OP_DONE = 'done';
|
|
37
|
+
export const OP_COMPLETE = 'complete';
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Grouped exports for consumers
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/** Operations that the create_plan tool can use. Listed in tool descriptions. */
|
|
42
|
+
export const PLAN_OPERATIONS = [
|
|
43
|
+
OP_WRITE_FILE,
|
|
44
|
+
OP_READ_FILE,
|
|
45
|
+
OP_PATCH_FILE,
|
|
46
|
+
OP_LIST_FILES,
|
|
47
|
+
OP_RUN_SHELL,
|
|
48
|
+
OP_VALIDATE,
|
|
49
|
+
OP_TASK_CREATE,
|
|
50
|
+
OP_RESPOND,
|
|
51
|
+
];
|
|
52
|
+
/** Operations that skip execution (text-only responses). */
|
|
53
|
+
export const PASSTHROUGH_OPERATIONS = new Set([
|
|
54
|
+
OP_RESPOND,
|
|
55
|
+
OP_NO_OP,
|
|
56
|
+
OP_NOOP,
|
|
57
|
+
OP_DONE,
|
|
58
|
+
OP_COMPLETE,
|
|
59
|
+
]);
|
|
60
|
+
/** All file operation names for the system prompt. */
|
|
61
|
+
export const FILE_OPERATIONS = [
|
|
62
|
+
OP_READ_FILE,
|
|
63
|
+
OP_WRITE_FILE,
|
|
64
|
+
OP_PATCH_FILE,
|
|
65
|
+
OP_LIST_FILES,
|
|
66
|
+
OP_RUN_SHELL,
|
|
67
|
+
OP_VALIDATE,
|
|
68
|
+
OP_TSC_CHECK,
|
|
69
|
+
OP_RUN_TESTS,
|
|
70
|
+
];
|
|
71
|
+
/** Normalize operation name: convert hyphens to underscores for backward compat. */
|
|
72
|
+
export function normalizeOperation(op) {
|
|
73
|
+
return op.replace(/-/g, '_');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/bot/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAElD,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AACpC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa;IACb,YAAY;IACZ,aAAa;IACb,aAAa;IACb,YAAY;IACZ,WAAW;IACX,cAAc;IACd,UAAU;CACF,CAAC;AAEX,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-executor.d.ts","sourceRoot":"","sources":["../../src/bot/step-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"step-executor.d.ts","sourceRoot":"","sources":["../../src/bot/step-executor.ts"],"names":[],"mappings":"AA4CA,gDAAgD;AAChD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AA4GD,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC1D,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,CAAC,CAqRrB"}
|
|
@@ -4,6 +4,7 @@ import * as os from 'node:os';
|
|
|
4
4
|
import { execSync } from 'node:child_process';
|
|
5
5
|
import { runCommand } from '@synergenius/flow-weaver';
|
|
6
6
|
import { BLOCKED_SHELL_PATTERNS } from './safety.js';
|
|
7
|
+
import { OP_WRITE_FILE, OP_READ_FILE, OP_PATCH_FILE, OP_LIST_FILES, OP_RUN_SHELL, OP_TASK_CREATE, OP_RESPOND, OP_NO_OP, OP_NOOP, OP_DONE, OP_COMPLETE, OP_CREATE_WORKFLOW, OP_MODIFY_SOURCE, OP_IMPLEMENT_NODE, normalizeOperation } from './operations.js';
|
|
7
8
|
import { TaskStore } from './task-store.js';
|
|
8
9
|
// Use the user's login shell (same as terminal panel) so profile-managed
|
|
9
10
|
// tools like nvm/npm, pyenv, rbenv etc. are available.
|
|
@@ -23,7 +24,7 @@ const MAX_FILES_PER_PLAN = 50;
|
|
|
23
24
|
const SHELL_TIMEOUT = 60_000;
|
|
24
25
|
/** Maximum file size for read/patch operations (1MB). */
|
|
25
26
|
const MAX_READ_SIZE = 1_048_576;
|
|
26
|
-
/** Maximum files returned by
|
|
27
|
+
/** Maximum files returned by list_files. */
|
|
27
28
|
const MAX_LIST_FILES = 1000;
|
|
28
29
|
// Shell blocklist imported from safety.ts — single source of truth.
|
|
29
30
|
// Do NOT add patterns here; add them in safety.ts instead.
|
|
@@ -71,7 +72,7 @@ function checkWriteSafety(filePath, content) {
|
|
|
71
72
|
return {
|
|
72
73
|
allowed: false,
|
|
73
74
|
reason: `Refusing to write empty content to ${path.basename(filePath)}. ` +
|
|
74
|
-
`Use
|
|
75
|
+
`Use read_file first, then write the complete modified file back.`,
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
// Guard 2: Per-plan file cap
|
|
@@ -91,7 +92,7 @@ function checkWriteSafety(filePath, content) {
|
|
|
91
92
|
allowed: false,
|
|
92
93
|
reason: `Refusing to write ${path.basename(filePath)}: new content (${newSize}B) ` +
|
|
93
94
|
`is ${shrinkPct}% smaller than existing (${existingSize}B). ` +
|
|
94
|
-
`Use
|
|
95
|
+
`Use read_file first, make targeted changes, write complete file back.`,
|
|
95
96
|
};
|
|
96
97
|
}
|
|
97
98
|
}
|
|
@@ -114,14 +115,16 @@ function checkShellSafety(command) {
|
|
|
114
115
|
export async function executeStep(step, projectDir) {
|
|
115
116
|
const args = step.args;
|
|
116
117
|
const file = args.file;
|
|
117
|
-
|
|
118
|
+
// Normalize operation names: accept both hyphens and underscores
|
|
119
|
+
const operation = normalizeOperation(step.operation);
|
|
120
|
+
switch (operation) {
|
|
118
121
|
// -----------------------------------------------------------------
|
|
119
122
|
// File write operations (with safety guards)
|
|
120
123
|
// -----------------------------------------------------------------
|
|
121
|
-
case
|
|
122
|
-
case
|
|
123
|
-
case
|
|
124
|
-
case
|
|
124
|
+
case OP_WRITE_FILE:
|
|
125
|
+
case OP_CREATE_WORKFLOW:
|
|
126
|
+
case OP_MODIFY_SOURCE:
|
|
127
|
+
case OP_IMPLEMENT_NODE: {
|
|
125
128
|
if (!file) {
|
|
126
129
|
return { blocked: true, blockReason: `${step.operation} requires a "file" argument.` };
|
|
127
130
|
}
|
|
@@ -141,9 +144,9 @@ export async function executeStep(step, projectDir) {
|
|
|
141
144
|
// -----------------------------------------------------------------
|
|
142
145
|
// Patch file: surgical find-and-replace (no full rewrite needed)
|
|
143
146
|
// -----------------------------------------------------------------
|
|
144
|
-
case
|
|
147
|
+
case OP_PATCH_FILE: {
|
|
145
148
|
if (!file) {
|
|
146
|
-
return { blocked: true, blockReason: '
|
|
149
|
+
return { blocked: true, blockReason: 'patch_file requires a "file" argument.' };
|
|
147
150
|
}
|
|
148
151
|
assertSafePath(file, projectDir);
|
|
149
152
|
const filePath = path.resolve(projectDir, file);
|
|
@@ -153,7 +156,7 @@ export async function executeStep(step, projectDir) {
|
|
|
153
156
|
// File size guard
|
|
154
157
|
const fileSize = fs.statSync(filePath).size;
|
|
155
158
|
if (fileSize > MAX_READ_SIZE) {
|
|
156
|
-
return { blocked: true, blockReason: `File too large for
|
|
159
|
+
return { blocked: true, blockReason: `File too large for patch_file (${fileSize} bytes, max ${MAX_READ_SIZE}).` };
|
|
157
160
|
}
|
|
158
161
|
let content = fs.readFileSync(filePath, 'utf-8');
|
|
159
162
|
const patches = args.patches ?? [];
|
|
@@ -161,7 +164,7 @@ export async function executeStep(step, projectDir) {
|
|
|
161
164
|
patches.push({ find: args.find, replace: args.replace });
|
|
162
165
|
}
|
|
163
166
|
if (!patches.length) {
|
|
164
|
-
return { blocked: true, blockReason: '
|
|
167
|
+
return { blocked: true, blockReason: 'patch_file requires "patches" array or "find"+"replace" args.' };
|
|
165
168
|
}
|
|
166
169
|
let applied = 0;
|
|
167
170
|
const notFound = [];
|
|
@@ -202,7 +205,7 @@ export async function executeStep(step, projectDir) {
|
|
|
202
205
|
// -----------------------------------------------------------------
|
|
203
206
|
// Read file: return content for AI context
|
|
204
207
|
// -----------------------------------------------------------------
|
|
205
|
-
case
|
|
208
|
+
case OP_READ_FILE: {
|
|
206
209
|
if (!file) {
|
|
207
210
|
return { output: '' };
|
|
208
211
|
}
|
|
@@ -218,7 +221,7 @@ export async function executeStep(step, projectDir) {
|
|
|
218
221
|
return { output: `"${file}" is a directory. Contents:\n${entries.join('\n')}` };
|
|
219
222
|
}
|
|
220
223
|
if (stat.size > MAX_READ_SIZE) {
|
|
221
|
-
return { output: `File too large to read (${stat.size} bytes, max ${MAX_READ_SIZE}). Use
|
|
224
|
+
return { output: `File too large to read (${stat.size} bytes, max ${MAX_READ_SIZE}). Use run_shell with head/tail instead.` };
|
|
222
225
|
}
|
|
223
226
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
224
227
|
return { file: filePath, output: content };
|
|
@@ -231,10 +234,10 @@ export async function executeStep(step, projectDir) {
|
|
|
231
234
|
// -----------------------------------------------------------------
|
|
232
235
|
// Shell command: run arbitrary command with safety guards
|
|
233
236
|
// -----------------------------------------------------------------
|
|
234
|
-
case
|
|
237
|
+
case OP_RUN_SHELL: {
|
|
235
238
|
const command = args.command ?? '';
|
|
236
239
|
if (!command.trim()) {
|
|
237
|
-
return { blocked: true, blockReason: '
|
|
240
|
+
return { blocked: true, blockReason: 'run_shell requires a "command" argument.' };
|
|
238
241
|
}
|
|
239
242
|
const shellGuard = checkShellSafety(command);
|
|
240
243
|
if (!shellGuard.allowed) {
|
|
@@ -269,7 +272,7 @@ export async function executeStep(step, projectDir) {
|
|
|
269
272
|
// -----------------------------------------------------------------
|
|
270
273
|
// List files: glob-like directory listing
|
|
271
274
|
// -----------------------------------------------------------------
|
|
272
|
-
case
|
|
275
|
+
case OP_LIST_FILES: {
|
|
273
276
|
const dir = args.directory ?? args.dir ?? '.';
|
|
274
277
|
const pattern = args.pattern ?? '';
|
|
275
278
|
assertSafePath(dir, projectDir);
|
|
@@ -315,10 +318,10 @@ export async function executeStep(step, projectDir) {
|
|
|
315
318
|
// -----------------------------------------------------------------
|
|
316
319
|
// Task management — create subtasks for recursive swarm execution
|
|
317
320
|
// -----------------------------------------------------------------
|
|
318
|
-
case
|
|
321
|
+
case OP_TASK_CREATE: {
|
|
319
322
|
const title = args.title ?? '';
|
|
320
323
|
if (!title)
|
|
321
|
-
return { blocked: true, blockReason: '
|
|
324
|
+
return { blocked: true, blockReason: 'task_create requires a "title" argument.' };
|
|
322
325
|
const store = new TaskStore(projectDir);
|
|
323
326
|
const input = {
|
|
324
327
|
title,
|
|
@@ -346,18 +349,18 @@ export async function executeStep(step, projectDir) {
|
|
|
346
349
|
// -----------------------------------------------------------------
|
|
347
350
|
// Passthrough operations
|
|
348
351
|
// -----------------------------------------------------------------
|
|
349
|
-
case
|
|
350
|
-
case
|
|
351
|
-
case
|
|
352
|
-
case
|
|
353
|
-
case
|
|
352
|
+
case OP_RESPOND:
|
|
353
|
+
case OP_NO_OP:
|
|
354
|
+
case OP_NOOP:
|
|
355
|
+
case OP_DONE:
|
|
356
|
+
case OP_COMPLETE: {
|
|
354
357
|
// Passthrough operations — the plan already contains the answer or
|
|
355
358
|
// there's nothing to execute. Return the response text as output.
|
|
356
359
|
const response = args.response ?? args.text ?? args.description ?? '';
|
|
357
360
|
return { output: response || undefined };
|
|
358
361
|
}
|
|
359
362
|
default: {
|
|
360
|
-
const result = await runCommand(
|
|
363
|
+
const result = await runCommand(operation, { ...args, cwd: projectDir });
|
|
361
364
|
return {
|
|
362
365
|
file: result.files?.[0],
|
|
363
366
|
files: result.files,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-executor.js","sourceRoot":"","sources":["../../src/bot/step-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"step-executor.js","sourceRoot":"","sources":["../../src/bot/step-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/bot/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/bot/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClE;AAsDD,qFAAqF;AACrF,eAAO,MAAM,eAAe,2EAA4E,CAAC;AACzG,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAE3D,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;CACvC;AAoID,wBAAsB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBtF;AA0CD,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CA8BvJ"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Builds the Weaver expert system prompt from flow-weaver's doc-metadata.
|
|
3
3
|
* This ensures Weaver's knowledge stays in sync with the installed flow-weaver version.
|
|
4
4
|
*/
|
|
5
|
+
import { FILE_OPERATIONS, OP_TASK_CREATE, OP_PATCH_FILE, OP_WRITE_FILE } from './operations.js';
|
|
5
6
|
let cachedPrompt = null;
|
|
6
7
|
function formatAnnotations(annotations) {
|
|
7
8
|
// Group by category, show syntax + description
|
|
@@ -139,10 +140,10 @@ When stabilize mode is active, only fix-up operations are allowed.`);
|
|
|
139
140
|
USE TOOLS to complete tasks. Do NOT describe what you would do — actually do it by calling tools.
|
|
140
141
|
|
|
141
142
|
### File tools
|
|
142
|
-
-
|
|
143
|
+
- ${FILE_OPERATIONS.join(', ')}
|
|
143
144
|
|
|
144
145
|
### Task management tools
|
|
145
|
-
-
|
|
146
|
+
- ${OP_TASK_CREATE} (args: title, description, complexity, subtasks[]) — create swarm subtasks for parallel execution
|
|
146
147
|
- task_list, task_get, task_update — query and update existing tasks
|
|
147
148
|
|
|
148
149
|
### Knowledge tools
|
|
@@ -154,7 +155,7 @@ USE TOOLS to complete tasks. Do NOT describe what you would do — actually do i
|
|
|
154
155
|
### Rules
|
|
155
156
|
- Always validate BEFORE and AFTER patching
|
|
156
157
|
- Always read a file before patching it
|
|
157
|
-
- Use
|
|
158
|
+
- Use ${OP_PATCH_FILE} for modifications, ${OP_WRITE_FILE} only for new files
|
|
158
159
|
- Be concise — let tool results speak`);
|
|
159
160
|
}
|
|
160
161
|
parts.push(`## Teaching
|
|
@@ -186,23 +187,23 @@ export async function buildSystemPrompt(sections) {
|
|
|
186
187
|
function formatBotOperations(cliCommands) {
|
|
187
188
|
const packOps = [
|
|
188
189
|
'## File Operations',
|
|
189
|
-
'-
|
|
190
|
-
'-
|
|
191
|
-
'-
|
|
192
|
-
'-
|
|
193
|
-
'-
|
|
194
|
-
'-
|
|
190
|
+
'- create_workflow: Create a new workflow file. args: { file, content }',
|
|
191
|
+
'- implement_node: Write a node type implementation. args: { file, content }',
|
|
192
|
+
'- write_file: Write a file. args: { file, content }. Content must be the COMPLETE file.',
|
|
193
|
+
'- read_file: Read a file and return its content. args: { file }',
|
|
194
|
+
'- patch_file: Surgical find-and-replace edits. args: { file, patches: [{ find: "old text", replace: "new text" }] }. PREFERRED for modifying existing files — no need to rewrite the entire file.',
|
|
195
|
+
'- list_files: List files in a directory. args: { directory, pattern? } (pattern is regex)',
|
|
195
196
|
'',
|
|
196
197
|
'## Shell Commands',
|
|
197
|
-
'-
|
|
198
|
+
'- run_shell: Execute a shell command and return output. args: { command }. Use for: npx vitest, git status, grep, find, etc.',
|
|
198
199
|
' Examples: { "command": "npx vitest run --reporter verbose" }, { "command": "npx flow-weaver validate src/workflow.ts --json" }',
|
|
199
200
|
' Blocked: rm -rf, git push, npm publish, sudo, curl|sh (safety policy).',
|
|
200
201
|
'',
|
|
201
202
|
'## Best Practices',
|
|
202
|
-
'PREFER
|
|
203
|
-
'Use
|
|
204
|
-
'Use
|
|
205
|
-
'Use
|
|
203
|
+
'PREFER patch_file over write_file for modifying existing files (surgical edits, no truncation risk).',
|
|
204
|
+
'Use run_shell for running tests (npx vitest), validation (flow-weaver validate), and inspecting output.',
|
|
205
|
+
'Use read_file to understand a file before modifying it.',
|
|
206
|
+
'Use list_files to discover project structure.',
|
|
206
207
|
'Writes that shrink a file by >50% or write empty content are automatically BLOCKED.',
|
|
207
208
|
];
|
|
208
209
|
const fwOps = cliCommands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/bot/system-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/bot/system-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/bot/weaver-tools.js
CHANGED
|
@@ -12,12 +12,12 @@ import { isBlockedUrl } from './safety.js';
|
|
|
12
12
|
export { WEAVER_TOOLS };
|
|
13
13
|
/** Map tool names to step-executor operations. */
|
|
14
14
|
const OPERATION_MAP = {
|
|
15
|
-
validate: '
|
|
16
|
-
read_file: '
|
|
17
|
-
patch_file: '
|
|
18
|
-
run_shell: '
|
|
19
|
-
list_files: '
|
|
20
|
-
write_file: '
|
|
15
|
+
validate: 'run_shell',
|
|
16
|
+
read_file: 'read_file',
|
|
17
|
+
patch_file: 'patch_file',
|
|
18
|
+
run_shell: 'run_shell',
|
|
19
|
+
list_files: 'list_files',
|
|
20
|
+
write_file: 'write_file',
|
|
21
21
|
};
|
|
22
22
|
/**
|
|
23
23
|
* Execute a weaver tool call. Delegates to step-executor with safety guards.
|
|
@@ -174,7 +174,7 @@ export function createWeaverExecutor(projectDir) {
|
|
|
174
174
|
if (!operation) {
|
|
175
175
|
return { result: `Unknown tool: ${name}`, isError: true };
|
|
176
176
|
}
|
|
177
|
-
// Transform validate tool to
|
|
177
|
+
// Transform validate tool to run_shell with flow-weaver validate command
|
|
178
178
|
let stepArgs = { ...args };
|
|
179
179
|
if (name === 'validate') {
|
|
180
180
|
stepArgs = { command: `npx flow-weaver validate ${args.file} --json` };
|
|
@@ -20,7 +20,7 @@ declare class CliSessionProvider implements AgentProvider {
|
|
|
20
20
|
export { CliSessionProvider };
|
|
21
21
|
/**
|
|
22
22
|
* Tool-use agent execution. Claude drives the entire task via tool calls
|
|
23
|
-
* (validate,
|
|
23
|
+
* (validate, read_file, patch_file, run_shell, etc.) in a single continuous
|
|
24
24
|
* conversation. No separate plan or retry loop needed.
|
|
25
25
|
*
|
|
26
26
|
* @flowWeaver nodeType
|
|
@@ -64,7 +64,7 @@ class CliSessionProvider {
|
|
|
64
64
|
export { CliSessionProvider };
|
|
65
65
|
/**
|
|
66
66
|
* Tool-use agent execution. Claude drives the entire task via tool calls
|
|
67
|
-
* (validate,
|
|
67
|
+
* (validate, read_file, patch_file, run_shell, etc.) in a single continuous
|
|
68
68
|
* conversation. No separate plan or retry loop needed.
|
|
69
69
|
*
|
|
70
70
|
* @flowWeaver nodeType
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-validate-retry.d.ts","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exec-validate-retry.d.ts","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA2ID"}
|
|
@@ -5,6 +5,7 @@ import { callAI, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
|
|
|
5
5
|
import { executeStep } from '../bot/step-executor.js';
|
|
6
6
|
import { validateFiles } from '../bot/file-validator.js';
|
|
7
7
|
import { auditEmit } from '../bot/audit-logger.js';
|
|
8
|
+
import { PASSTHROUGH_OPERATIONS } from '../bot/operations.js';
|
|
8
9
|
/**
|
|
9
10
|
* Execute-validate-fix retry loop. Runs the plan, validates results,
|
|
10
11
|
* and if validation fails, asks the AI for fixes. Up to 3 attempts.
|
|
@@ -36,7 +37,7 @@ export async function weaverExecValidateRetry(execute, ctx, modelOverride) {
|
|
|
36
37
|
let currentPlan = JSON.parse(context.planJson);
|
|
37
38
|
// Short-circuit: if ALL steps are passthrough operations (respond, no-op, etc.),
|
|
38
39
|
// skip the execute→validate→fix loop entirely. The plan already has the answer.
|
|
39
|
-
const PASSTHROUGH_OPS =
|
|
40
|
+
const PASSTHROUGH_OPS = PASSTHROUGH_OPERATIONS;
|
|
40
41
|
const steps = currentPlan.steps ?? [];
|
|
41
42
|
if (steps.length > 0 && steps.every((s) => PASSTHROUGH_OPS.has(s.operation))) {
|
|
42
43
|
console.log(`\x1b[36m→ Text-only plan (${steps.length} passthrough steps), skipping execution loop\x1b[0m`);
|
|
@@ -121,7 +122,7 @@ export async function weaverExecValidateRetry(execute, ctx, modelOverride) {
|
|
|
121
122
|
const outputContext = Object.entries(execResult.stepOutputs)
|
|
122
123
|
.map(([id, out]) => `--- Output of ${id} ---\n${out}`)
|
|
123
124
|
.join('\n\n');
|
|
124
|
-
const fixPrompt = `The following validation errors occurred:\n${errors}\n\n${outputContext ? `Discovery step outputs:\n${outputContext}\n\n` : ''}Provide a CONCRETE fix plan. Every
|
|
125
|
+
const fixPrompt = `The following validation errors occurred:\n${errors}\n\n${outputContext ? `Discovery step outputs:\n${outputContext}\n\n` : ''}Provide a CONCRETE fix plan. Every patch_file step MUST include "file" (absolute path from the outputs above) and "patches" array with exact "find"/"replace" strings. Do NOT use placeholders.`;
|
|
125
126
|
const text = await callAI(pInfo, systemPrompt, fixPrompt, 8192);
|
|
126
127
|
const parsed = parseJsonResponse(text);
|
|
127
128
|
currentPlan = normalizePlan(parsed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-validate-retry.js","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec-validate-retry.js","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,10 +45,10 @@ Provide a fix plan as JSON: {"steps": [...], "summary": "..."}
|
|
|
45
45
|
Each step MUST have: "id" (string), "operation" (string), "description" (string), "args" (object).
|
|
46
46
|
|
|
47
47
|
Available operations for fixes:
|
|
48
|
-
-
|
|
48
|
+
- patch_file: Surgical find-and-replace. args: { "file": "path", "patches": [{ "find": "old text", "replace": "new text" }] }
|
|
49
49
|
PREFERRED for fixing @input annotations. Example: { "find": "@input portName", "replace": "@input [portName]" }
|
|
50
|
-
-
|
|
51
|
-
-
|
|
50
|
+
- run_shell: Execute a command. args: { "command": "..." }
|
|
51
|
+
- read_file: Read file content. args: { "file": "path" }
|
|
52
52
|
|
|
53
53
|
Return ONLY valid JSON. No explanation outside the JSON.`;
|
|
54
54
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-task.d.ts","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-task.d.ts","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA8FD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { callAIWithTools, callTriage, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
|
|
2
2
|
import { auditEmit } from '../bot/audit-logger.js';
|
|
3
|
+
import { PLAN_OPERATIONS } from '../bot/operations.js';
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// Plan tool definition — passed via native tool_use so the AI returns
|
|
5
6
|
// structured JSON arguments instead of prose. Works across Anthropic and OpenAI.
|
|
@@ -19,7 +20,7 @@ const PLAN_TOOL = {
|
|
|
19
20
|
properties: {
|
|
20
21
|
operation: {
|
|
21
22
|
type: 'string',
|
|
22
|
-
description:
|
|
23
|
+
description: `Tool to invoke: ${PLAN_OPERATIONS.join(', ')}`,
|
|
23
24
|
},
|
|
24
25
|
description: { type: 'string', description: 'What this step does' },
|
|
25
26
|
args: {
|
|
@@ -98,9 +99,9 @@ export async function weaverPlanTask(execute, ctx, modelOverride) {
|
|
|
98
99
|
Plan this task by calling the create_plan tool with concrete steps.
|
|
99
100
|
Rules:
|
|
100
101
|
1. Every step MUST have complete, concrete args — no empty patches, no placeholders.
|
|
101
|
-
2. For file creation tasks, use
|
|
102
|
-
3. If you need to discover file contents first, plan ONLY discovery steps (
|
|
103
|
-
4. Do NOT plan
|
|
102
|
+
2. For file creation tasks, use write_file with full file content in args.
|
|
103
|
+
3. If you need to discover file contents first, plan ONLY discovery steps (read_file, list_files).
|
|
104
|
+
4. Do NOT plan patch_file unless you know the exact find/replace strings.`;
|
|
104
105
|
try {
|
|
105
106
|
// Use native tool_use when available (Anthropic, OpenAI).
|
|
106
107
|
// The AI calls create_plan with structured args instead of returning prose.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-task.js","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-task.js","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE5G,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,8EAA8E;AAC9E,sEAAsE;AACtE,iFAAiF;AACjF,8EAA8E;AAE9E,MAAM,SAAS,GAAW;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,mGAAmG;IAChH,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;YAClF,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,uCAAuC;gBACpD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC7D;wBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;wBACnE,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yGAAyG;yBACvH;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC;iBAC/C;aACF;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;KAC/B;CACF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgB,EAChB,GAAW,EACX,aAAsB;IAKtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IACjD,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,QAAQ,GAAG,kCAAkC,CAAC;QACtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,aAAa;QACzB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE;QAC/C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;IAErB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAC/F,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1C,iEAAiE;IACjE,8DAA8D;IAC9D,IAAI,QAAwC,CAAC;IAC7C,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,IAAI,MAAM;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAoB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,yEAAyE;IAEzE,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,GAAuJ,EAAE,CAAC;QACzK,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;YACtE,WAAW,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;QAC9F,YAAY,GAAG,yEAAyE,CAAC;IAC3F,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,WAAW,WAAW,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;0EAOlE,CAAC;IAEzE,IAAI,CAAC;QACH,0DAA0D;QAC1D,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAEzF,IAAI,IAA8H,CAAC;QAEnI,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,sFAAsF;YACtF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;gBAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACvD,IAAI,GAAG;oBACL,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;oBACpG,OAAO,EAAE,SAAS;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,OAAO,IAAI,WAAW,SAAS,CAAC,CAAC;QACrE,SAAS,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzF,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,SAAS,CAAC,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
package/flowweaver.manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": 2,
|
|
3
3
|
"name": "@synergenius/flow-weaver-pack-weaver",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.131",
|
|
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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for plan step operation names.
|
|
3
|
+
*
|
|
4
|
+
* ALL operation names use underscore convention (e.g. write_file, not write-file).
|
|
5
|
+
* The step executor normalizes hyphens to underscores for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Import from here instead of hardcoding strings.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// File operations
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
export const OP_WRITE_FILE = 'write_file';
|
|
15
|
+
export const OP_READ_FILE = 'read_file';
|
|
16
|
+
export const OP_PATCH_FILE = 'patch_file';
|
|
17
|
+
export const OP_LIST_FILES = 'list_files';
|
|
18
|
+
export const OP_CREATE_WORKFLOW = 'create_workflow';
|
|
19
|
+
export const OP_MODIFY_SOURCE = 'modify_source';
|
|
20
|
+
export const OP_IMPLEMENT_NODE = 'implement_node';
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Shell & validation
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
export const OP_RUN_SHELL = 'run_shell';
|
|
27
|
+
export const OP_VALIDATE = 'validate';
|
|
28
|
+
export const OP_TSC_CHECK = 'tsc_check';
|
|
29
|
+
export const OP_RUN_TESTS = 'run_tests';
|
|
30
|
+
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Task management
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
export const OP_TASK_CREATE = 'task_create';
|
|
36
|
+
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Passthrough (no execution needed)
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
export const OP_RESPOND = 'respond';
|
|
42
|
+
export const OP_NO_OP = 'no_op';
|
|
43
|
+
export const OP_NOOP = 'noop';
|
|
44
|
+
export const OP_DONE = 'done';
|
|
45
|
+
export const OP_COMPLETE = 'complete';
|
|
46
|
+
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Grouped exports for consumers
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
|
|
51
|
+
/** Operations that the create_plan tool can use. Listed in tool descriptions. */
|
|
52
|
+
export const PLAN_OPERATIONS = [
|
|
53
|
+
OP_WRITE_FILE,
|
|
54
|
+
OP_READ_FILE,
|
|
55
|
+
OP_PATCH_FILE,
|
|
56
|
+
OP_LIST_FILES,
|
|
57
|
+
OP_RUN_SHELL,
|
|
58
|
+
OP_VALIDATE,
|
|
59
|
+
OP_TASK_CREATE,
|
|
60
|
+
OP_RESPOND,
|
|
61
|
+
] as const;
|
|
62
|
+
|
|
63
|
+
/** Operations that skip execution (text-only responses). */
|
|
64
|
+
export const PASSTHROUGH_OPERATIONS = new Set([
|
|
65
|
+
OP_RESPOND,
|
|
66
|
+
OP_NO_OP,
|
|
67
|
+
OP_NOOP,
|
|
68
|
+
OP_DONE,
|
|
69
|
+
OP_COMPLETE,
|
|
70
|
+
]);
|
|
71
|
+
|
|
72
|
+
/** All file operation names for the system prompt. */
|
|
73
|
+
export const FILE_OPERATIONS = [
|
|
74
|
+
OP_READ_FILE,
|
|
75
|
+
OP_WRITE_FILE,
|
|
76
|
+
OP_PATCH_FILE,
|
|
77
|
+
OP_LIST_FILES,
|
|
78
|
+
OP_RUN_SHELL,
|
|
79
|
+
OP_VALIDATE,
|
|
80
|
+
OP_TSC_CHECK,
|
|
81
|
+
OP_RUN_TESTS,
|
|
82
|
+
] as const;
|
|
83
|
+
|
|
84
|
+
/** Normalize operation name: convert hyphens to underscores for backward compat. */
|
|
85
|
+
export function normalizeOperation(op: string): string {
|
|
86
|
+
return op.replace(/-/g, '_');
|
|
87
|
+
}
|
package/src/bot/step-executor.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as os from 'node:os';
|
|
|
4
4
|
import { execSync } from 'node:child_process';
|
|
5
5
|
import { runCommand } from '@synergenius/flow-weaver';
|
|
6
6
|
import { BLOCKED_SHELL_PATTERNS } from './safety.js';
|
|
7
|
+
import { OP_WRITE_FILE, OP_READ_FILE, OP_PATCH_FILE, OP_LIST_FILES, OP_RUN_SHELL, OP_TASK_CREATE, OP_RESPOND, OP_NO_OP, OP_NOOP, OP_DONE, OP_COMPLETE, OP_CREATE_WORKFLOW, OP_MODIFY_SOURCE, OP_IMPLEMENT_NODE, normalizeOperation } from './operations.js';
|
|
7
8
|
import { TaskStore } from './task-store.js';
|
|
8
9
|
import type { CreateTaskInput } from './task-types.js';
|
|
9
10
|
|
|
@@ -32,7 +33,7 @@ const SHELL_TIMEOUT = 60_000;
|
|
|
32
33
|
/** Maximum file size for read/patch operations (1MB). */
|
|
33
34
|
const MAX_READ_SIZE = 1_048_576;
|
|
34
35
|
|
|
35
|
-
/** Maximum files returned by
|
|
36
|
+
/** Maximum files returned by list_files. */
|
|
36
37
|
const MAX_LIST_FILES = 1000;
|
|
37
38
|
|
|
38
39
|
// Shell blocklist imported from safety.ts — single source of truth.
|
|
@@ -101,7 +102,7 @@ function checkWriteSafety(filePath: string, content: string): WriteGuardResult {
|
|
|
101
102
|
allowed: false,
|
|
102
103
|
reason:
|
|
103
104
|
`Refusing to write empty content to ${path.basename(filePath)}. ` +
|
|
104
|
-
`Use
|
|
105
|
+
`Use read_file first, then write the complete modified file back.`,
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
108
|
|
|
@@ -124,7 +125,7 @@ function checkWriteSafety(filePath: string, content: string): WriteGuardResult {
|
|
|
124
125
|
reason:
|
|
125
126
|
`Refusing to write ${path.basename(filePath)}: new content (${newSize}B) ` +
|
|
126
127
|
`is ${shrinkPct}% smaller than existing (${existingSize}B). ` +
|
|
127
|
-
`Use
|
|
128
|
+
`Use read_file first, make targeted changes, write complete file back.`,
|
|
128
129
|
};
|
|
129
130
|
}
|
|
130
131
|
}
|
|
@@ -168,14 +169,17 @@ export async function executeStep(
|
|
|
168
169
|
const args = step.args;
|
|
169
170
|
const file = args.file as string | undefined;
|
|
170
171
|
|
|
171
|
-
|
|
172
|
+
// Normalize operation names: accept both hyphens and underscores
|
|
173
|
+
const operation = normalizeOperation(step.operation);
|
|
174
|
+
|
|
175
|
+
switch (operation) {
|
|
172
176
|
// -----------------------------------------------------------------
|
|
173
177
|
// File write operations (with safety guards)
|
|
174
178
|
// -----------------------------------------------------------------
|
|
175
|
-
case
|
|
176
|
-
case
|
|
177
|
-
case
|
|
178
|
-
case
|
|
179
|
+
case OP_WRITE_FILE:
|
|
180
|
+
case OP_CREATE_WORKFLOW:
|
|
181
|
+
case OP_MODIFY_SOURCE:
|
|
182
|
+
case OP_IMPLEMENT_NODE: {
|
|
179
183
|
if (!file) {
|
|
180
184
|
return { blocked: true, blockReason: `${step.operation} requires a "file" argument.` };
|
|
181
185
|
}
|
|
@@ -198,9 +202,9 @@ export async function executeStep(
|
|
|
198
202
|
// -----------------------------------------------------------------
|
|
199
203
|
// Patch file: surgical find-and-replace (no full rewrite needed)
|
|
200
204
|
// -----------------------------------------------------------------
|
|
201
|
-
case
|
|
205
|
+
case OP_PATCH_FILE: {
|
|
202
206
|
if (!file) {
|
|
203
|
-
return { blocked: true, blockReason: '
|
|
207
|
+
return { blocked: true, blockReason: 'patch_file requires a "file" argument.' };
|
|
204
208
|
}
|
|
205
209
|
assertSafePath(file, projectDir);
|
|
206
210
|
const filePath = path.resolve(projectDir, file);
|
|
@@ -212,7 +216,7 @@ export async function executeStep(
|
|
|
212
216
|
// File size guard
|
|
213
217
|
const fileSize = fs.statSync(filePath).size;
|
|
214
218
|
if (fileSize > MAX_READ_SIZE) {
|
|
215
|
-
return { blocked: true, blockReason: `File too large for
|
|
219
|
+
return { blocked: true, blockReason: `File too large for patch_file (${fileSize} bytes, max ${MAX_READ_SIZE}).` };
|
|
216
220
|
}
|
|
217
221
|
|
|
218
222
|
let content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -223,7 +227,7 @@ export async function executeStep(
|
|
|
223
227
|
}
|
|
224
228
|
|
|
225
229
|
if (!patches.length) {
|
|
226
|
-
return { blocked: true, blockReason: '
|
|
230
|
+
return { blocked: true, blockReason: 'patch_file requires "patches" array or "find"+"replace" args.' };
|
|
227
231
|
}
|
|
228
232
|
|
|
229
233
|
let applied = 0;
|
|
@@ -271,7 +275,7 @@ export async function executeStep(
|
|
|
271
275
|
// -----------------------------------------------------------------
|
|
272
276
|
// Read file: return content for AI context
|
|
273
277
|
// -----------------------------------------------------------------
|
|
274
|
-
case
|
|
278
|
+
case OP_READ_FILE: {
|
|
275
279
|
if (!file) {
|
|
276
280
|
return { output: '' };
|
|
277
281
|
}
|
|
@@ -287,7 +291,7 @@ export async function executeStep(
|
|
|
287
291
|
return { output: `"${file}" is a directory. Contents:\n${entries.join('\n')}` };
|
|
288
292
|
}
|
|
289
293
|
if (stat.size > MAX_READ_SIZE) {
|
|
290
|
-
return { output: `File too large to read (${stat.size} bytes, max ${MAX_READ_SIZE}). Use
|
|
294
|
+
return { output: `File too large to read (${stat.size} bytes, max ${MAX_READ_SIZE}). Use run_shell with head/tail instead.` };
|
|
291
295
|
}
|
|
292
296
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
293
297
|
return { file: filePath, output: content };
|
|
@@ -300,10 +304,10 @@ export async function executeStep(
|
|
|
300
304
|
// -----------------------------------------------------------------
|
|
301
305
|
// Shell command: run arbitrary command with safety guards
|
|
302
306
|
// -----------------------------------------------------------------
|
|
303
|
-
case
|
|
307
|
+
case OP_RUN_SHELL: {
|
|
304
308
|
const command = (args.command as string) ?? '';
|
|
305
309
|
if (!command.trim()) {
|
|
306
|
-
return { blocked: true, blockReason: '
|
|
310
|
+
return { blocked: true, blockReason: 'run_shell requires a "command" argument.' };
|
|
307
311
|
}
|
|
308
312
|
|
|
309
313
|
const shellGuard = checkShellSafety(command);
|
|
@@ -340,7 +344,7 @@ export async function executeStep(
|
|
|
340
344
|
// -----------------------------------------------------------------
|
|
341
345
|
// List files: glob-like directory listing
|
|
342
346
|
// -----------------------------------------------------------------
|
|
343
|
-
case
|
|
347
|
+
case OP_LIST_FILES: {
|
|
344
348
|
const dir = (args.directory as string) ?? (args.dir as string) ?? '.';
|
|
345
349
|
const pattern = (args.pattern as string) ?? '';
|
|
346
350
|
assertSafePath(dir, projectDir);
|
|
@@ -384,9 +388,9 @@ export async function executeStep(
|
|
|
384
388
|
// -----------------------------------------------------------------
|
|
385
389
|
// Task management — create subtasks for recursive swarm execution
|
|
386
390
|
// -----------------------------------------------------------------
|
|
387
|
-
case
|
|
391
|
+
case OP_TASK_CREATE: {
|
|
388
392
|
const title = (args.title as string) ?? '';
|
|
389
|
-
if (!title) return { blocked: true, blockReason: '
|
|
393
|
+
if (!title) return { blocked: true, blockReason: 'task_create requires a "title" argument.' };
|
|
390
394
|
|
|
391
395
|
const store = new TaskStore(projectDir);
|
|
392
396
|
const input: CreateTaskInput = {
|
|
@@ -418,11 +422,11 @@ export async function executeStep(
|
|
|
418
422
|
// -----------------------------------------------------------------
|
|
419
423
|
// Passthrough operations
|
|
420
424
|
// -----------------------------------------------------------------
|
|
421
|
-
case
|
|
422
|
-
case
|
|
423
|
-
case
|
|
424
|
-
case
|
|
425
|
-
case
|
|
425
|
+
case OP_RESPOND:
|
|
426
|
+
case OP_NO_OP:
|
|
427
|
+
case OP_NOOP:
|
|
428
|
+
case OP_DONE:
|
|
429
|
+
case OP_COMPLETE: {
|
|
426
430
|
// Passthrough operations — the plan already contains the answer or
|
|
427
431
|
// there's nothing to execute. Return the response text as output.
|
|
428
432
|
const response = (args.response as string) ?? (args.text as string) ?? (args.description as string) ?? '';
|
|
@@ -430,7 +434,7 @@ export async function executeStep(
|
|
|
430
434
|
}
|
|
431
435
|
|
|
432
436
|
default: {
|
|
433
|
-
const result = await runCommand(
|
|
437
|
+
const result = await runCommand(operation, { ...args, cwd: projectDir });
|
|
434
438
|
return {
|
|
435
439
|
file: result.files?.[0],
|
|
436
440
|
files: result.files,
|
package/src/bot/system-prompt.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* This ensures Weaver's knowledge stays in sync with the installed flow-weaver version.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { FILE_OPERATIONS, OP_TASK_CREATE, OP_PATCH_FILE, OP_WRITE_FILE } from './operations.js';
|
|
7
|
+
|
|
6
8
|
interface AnnotationDoc {
|
|
7
9
|
name: string;
|
|
8
10
|
syntax: string;
|
|
@@ -197,10 +199,10 @@ When stabilize mode is active, only fix-up operations are allowed.`);
|
|
|
197
199
|
USE TOOLS to complete tasks. Do NOT describe what you would do — actually do it by calling tools.
|
|
198
200
|
|
|
199
201
|
### File tools
|
|
200
|
-
-
|
|
202
|
+
- ${FILE_OPERATIONS.join(', ')}
|
|
201
203
|
|
|
202
204
|
### Task management tools
|
|
203
|
-
-
|
|
205
|
+
- ${OP_TASK_CREATE} (args: title, description, complexity, subtasks[]) — create swarm subtasks for parallel execution
|
|
204
206
|
- task_list, task_get, task_update — query and update existing tasks
|
|
205
207
|
|
|
206
208
|
### Knowledge tools
|
|
@@ -212,7 +214,7 @@ USE TOOLS to complete tasks. Do NOT describe what you would do — actually do i
|
|
|
212
214
|
### Rules
|
|
213
215
|
- Always validate BEFORE and AFTER patching
|
|
214
216
|
- Always read a file before patching it
|
|
215
|
-
- Use
|
|
217
|
+
- Use ${OP_PATCH_FILE} for modifications, ${OP_WRITE_FILE} only for new files
|
|
216
218
|
- Be concise — let tool results speak`);
|
|
217
219
|
}
|
|
218
220
|
|
|
@@ -253,23 +255,23 @@ export async function buildSystemPrompt(sections?: Set<PromptSection>): Promise<
|
|
|
253
255
|
function formatBotOperations(cliCommands: CliCommandDoc[]): string {
|
|
254
256
|
const packOps = [
|
|
255
257
|
'## File Operations',
|
|
256
|
-
'-
|
|
257
|
-
'-
|
|
258
|
-
'-
|
|
259
|
-
'-
|
|
260
|
-
'-
|
|
261
|
-
'-
|
|
258
|
+
'- create_workflow: Create a new workflow file. args: { file, content }',
|
|
259
|
+
'- implement_node: Write a node type implementation. args: { file, content }',
|
|
260
|
+
'- write_file: Write a file. args: { file, content }. Content must be the COMPLETE file.',
|
|
261
|
+
'- read_file: Read a file and return its content. args: { file }',
|
|
262
|
+
'- patch_file: Surgical find-and-replace edits. args: { file, patches: [{ find: "old text", replace: "new text" }] }. PREFERRED for modifying existing files — no need to rewrite the entire file.',
|
|
263
|
+
'- list_files: List files in a directory. args: { directory, pattern? } (pattern is regex)',
|
|
262
264
|
'',
|
|
263
265
|
'## Shell Commands',
|
|
264
|
-
'-
|
|
266
|
+
'- run_shell: Execute a shell command and return output. args: { command }. Use for: npx vitest, git status, grep, find, etc.',
|
|
265
267
|
' Examples: { "command": "npx vitest run --reporter verbose" }, { "command": "npx flow-weaver validate src/workflow.ts --json" }',
|
|
266
268
|
' Blocked: rm -rf, git push, npm publish, sudo, curl|sh (safety policy).',
|
|
267
269
|
'',
|
|
268
270
|
'## Best Practices',
|
|
269
|
-
'PREFER
|
|
270
|
-
'Use
|
|
271
|
-
'Use
|
|
272
|
-
'Use
|
|
271
|
+
'PREFER patch_file over write_file for modifying existing files (surgical edits, no truncation risk).',
|
|
272
|
+
'Use run_shell for running tests (npx vitest), validation (flow-weaver validate), and inspecting output.',
|
|
273
|
+
'Use read_file to understand a file before modifying it.',
|
|
274
|
+
'Use list_files to discover project structure.',
|
|
273
275
|
'Writes that shrink a file by >50% or write empty content are automatically BLOCKED.',
|
|
274
276
|
];
|
|
275
277
|
|
package/src/bot/weaver-tools.ts
CHANGED
|
@@ -16,12 +16,12 @@ export { WEAVER_TOOLS };
|
|
|
16
16
|
|
|
17
17
|
/** Map tool names to step-executor operations. */
|
|
18
18
|
const OPERATION_MAP: Record<string, string> = {
|
|
19
|
-
validate: '
|
|
20
|
-
read_file: '
|
|
21
|
-
patch_file: '
|
|
22
|
-
run_shell: '
|
|
23
|
-
list_files: '
|
|
24
|
-
write_file: '
|
|
19
|
+
validate: 'run_shell',
|
|
20
|
+
read_file: 'read_file',
|
|
21
|
+
patch_file: 'patch_file',
|
|
22
|
+
run_shell: 'run_shell',
|
|
23
|
+
list_files: 'list_files',
|
|
24
|
+
write_file: 'write_file',
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -185,7 +185,7 @@ export function createWeaverExecutor(projectDir: string) {
|
|
|
185
185
|
return { result: `Unknown tool: ${name}`, isError: true };
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
// Transform validate tool to
|
|
188
|
+
// Transform validate tool to run_shell with flow-weaver validate command
|
|
189
189
|
let stepArgs = { ...args };
|
|
190
190
|
if (name === 'validate') {
|
|
191
191
|
stepArgs = { command: `npx flow-weaver validate ${args.file} --json` };
|
|
@@ -82,7 +82,7 @@ type LocalStepLogEntry = { step: string; status: string; detail: string };
|
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Tool-use agent execution. Claude drives the entire task via tool calls
|
|
85
|
-
* (validate,
|
|
85
|
+
* (validate, read_file, patch_file, run_shell, etc.) in a single continuous
|
|
86
86
|
* conversation. No separate plan or retry loop needed.
|
|
87
87
|
*
|
|
88
88
|
* @flowWeaver nodeType
|
|
@@ -6,6 +6,7 @@ import { callAI, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
|
|
|
6
6
|
import { executeStep } from '../bot/step-executor.js';
|
|
7
7
|
import { validateFiles } from '../bot/file-validator.js';
|
|
8
8
|
import { auditEmit } from '../bot/audit-logger.js';
|
|
9
|
+
import { PASSTHROUGH_OPERATIONS } from '../bot/operations.js';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Execute-validate-fix retry loop. Runs the plan, validates results,
|
|
@@ -48,7 +49,7 @@ export async function weaverExecValidateRetry(
|
|
|
48
49
|
|
|
49
50
|
// Short-circuit: if ALL steps are passthrough operations (respond, no-op, etc.),
|
|
50
51
|
// skip the execute→validate→fix loop entirely. The plan already has the answer.
|
|
51
|
-
const PASSTHROUGH_OPS =
|
|
52
|
+
const PASSTHROUGH_OPS = PASSTHROUGH_OPERATIONS;
|
|
52
53
|
const steps = currentPlan.steps ?? [];
|
|
53
54
|
if (steps.length > 0 && steps.every((s: { operation: string }) => PASSTHROUGH_OPS.has(s.operation))) {
|
|
54
55
|
console.log(`\x1b[36m→ Text-only plan (${steps.length} passthrough steps), skipping execution loop\x1b[0m`);
|
|
@@ -145,7 +146,7 @@ export async function weaverExecValidateRetry(
|
|
|
145
146
|
.map(([id, out]) => `--- Output of ${id} ---\n${out}`)
|
|
146
147
|
.join('\n\n');
|
|
147
148
|
|
|
148
|
-
const fixPrompt = `The following validation errors occurred:\n${errors}\n\n${outputContext ? `Discovery step outputs:\n${outputContext}\n\n` : ''}Provide a CONCRETE fix plan. Every
|
|
149
|
+
const fixPrompt = `The following validation errors occurred:\n${errors}\n\n${outputContext ? `Discovery step outputs:\n${outputContext}\n\n` : ''}Provide a CONCRETE fix plan. Every patch_file step MUST include "file" (absolute path from the outputs above) and "patches" array with exact "find"/"replace" strings. Do NOT use placeholders.`;
|
|
149
150
|
|
|
150
151
|
const text = await callAI(pInfo, systemPrompt, fixPrompt, 8192);
|
|
151
152
|
|
|
@@ -58,10 +58,10 @@ Provide a fix plan as JSON: {"steps": [...], "summary": "..."}
|
|
|
58
58
|
Each step MUST have: "id" (string), "operation" (string), "description" (string), "args" (object).
|
|
59
59
|
|
|
60
60
|
Available operations for fixes:
|
|
61
|
-
-
|
|
61
|
+
- patch_file: Surgical find-and-replace. args: { "file": "path", "patches": [{ "find": "old text", "replace": "new text" }] }
|
|
62
62
|
PREFERRED for fixing @input annotations. Example: { "find": "@input portName", "replace": "@input [portName]" }
|
|
63
|
-
-
|
|
64
|
-
-
|
|
63
|
+
- run_shell: Execute a command. args: { "command": "..." }
|
|
64
|
+
- read_file: Read file content. args: { "file": "path" }
|
|
65
65
|
|
|
66
66
|
Return ONLY valid JSON. No explanation outside the JSON.`;
|
|
67
67
|
|
|
@@ -3,6 +3,7 @@ import { callAI, callAIWithTools, callTriage, parseJsonResponse, normalizePlan }
|
|
|
3
3
|
import type { AiTool } from '../bot/ai-client.js';
|
|
4
4
|
import { auditEmit } from '../bot/audit-logger.js';
|
|
5
5
|
import type { PromptSection } from '../bot/system-prompt.js';
|
|
6
|
+
import { PLAN_OPERATIONS } from '../bot/operations.js';
|
|
6
7
|
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
8
9
|
// Plan tool definition — passed via native tool_use so the AI returns
|
|
@@ -24,7 +25,7 @@ const PLAN_TOOL: AiTool = {
|
|
|
24
25
|
properties: {
|
|
25
26
|
operation: {
|
|
26
27
|
type: 'string',
|
|
27
|
-
description:
|
|
28
|
+
description: `Tool to invoke: ${PLAN_OPERATIONS.join(', ')}`,
|
|
28
29
|
},
|
|
29
30
|
description: { type: 'string', description: 'What this step does' },
|
|
30
31
|
args: {
|
|
@@ -113,9 +114,9 @@ export async function weaverPlanTask(
|
|
|
113
114
|
Plan this task by calling the create_plan tool with concrete steps.
|
|
114
115
|
Rules:
|
|
115
116
|
1. Every step MUST have complete, concrete args — no empty patches, no placeholders.
|
|
116
|
-
2. For file creation tasks, use
|
|
117
|
-
3. If you need to discover file contents first, plan ONLY discovery steps (
|
|
118
|
-
4. Do NOT plan
|
|
117
|
+
2. For file creation tasks, use write_file with full file content in args.
|
|
118
|
+
3. If you need to discover file contents first, plan ONLY discovery steps (read_file, list_files).
|
|
119
|
+
4. Do NOT plan patch_file unless you know the exact find/replace strings.`;
|
|
119
120
|
|
|
120
121
|
try {
|
|
121
122
|
// Use native tool_use when available (Anthropic, OpenAI).
|