@synergenius/flow-weaver-pack-weaver 0.9.129 → 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 +59 -24
- 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 +16 -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 +64 -24
- package/src/bot/system-prompt.ts +17 -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,8 @@ 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';
|
|
8
|
+
import { TaskStore } from './task-store.js';
|
|
7
9
|
// Use the user's login shell (same as terminal panel) so profile-managed
|
|
8
10
|
// tools like nvm/npm, pyenv, rbenv etc. are available.
|
|
9
11
|
const LOGIN_SHELL = os.platform() === 'win32'
|
|
@@ -22,7 +24,7 @@ const MAX_FILES_PER_PLAN = 50;
|
|
|
22
24
|
const SHELL_TIMEOUT = 60_000;
|
|
23
25
|
/** Maximum file size for read/patch operations (1MB). */
|
|
24
26
|
const MAX_READ_SIZE = 1_048_576;
|
|
25
|
-
/** Maximum files returned by
|
|
27
|
+
/** Maximum files returned by list_files. */
|
|
26
28
|
const MAX_LIST_FILES = 1000;
|
|
27
29
|
// Shell blocklist imported from safety.ts — single source of truth.
|
|
28
30
|
// Do NOT add patterns here; add them in safety.ts instead.
|
|
@@ -70,7 +72,7 @@ function checkWriteSafety(filePath, content) {
|
|
|
70
72
|
return {
|
|
71
73
|
allowed: false,
|
|
72
74
|
reason: `Refusing to write empty content to ${path.basename(filePath)}. ` +
|
|
73
|
-
`Use
|
|
75
|
+
`Use read_file first, then write the complete modified file back.`,
|
|
74
76
|
};
|
|
75
77
|
}
|
|
76
78
|
// Guard 2: Per-plan file cap
|
|
@@ -90,7 +92,7 @@ function checkWriteSafety(filePath, content) {
|
|
|
90
92
|
allowed: false,
|
|
91
93
|
reason: `Refusing to write ${path.basename(filePath)}: new content (${newSize}B) ` +
|
|
92
94
|
`is ${shrinkPct}% smaller than existing (${existingSize}B). ` +
|
|
93
|
-
`Use
|
|
95
|
+
`Use read_file first, make targeted changes, write complete file back.`,
|
|
94
96
|
};
|
|
95
97
|
}
|
|
96
98
|
}
|
|
@@ -113,14 +115,16 @@ function checkShellSafety(command) {
|
|
|
113
115
|
export async function executeStep(step, projectDir) {
|
|
114
116
|
const args = step.args;
|
|
115
117
|
const file = args.file;
|
|
116
|
-
|
|
118
|
+
// Normalize operation names: accept both hyphens and underscores
|
|
119
|
+
const operation = normalizeOperation(step.operation);
|
|
120
|
+
switch (operation) {
|
|
117
121
|
// -----------------------------------------------------------------
|
|
118
122
|
// File write operations (with safety guards)
|
|
119
123
|
// -----------------------------------------------------------------
|
|
120
|
-
case
|
|
121
|
-
case
|
|
122
|
-
case
|
|
123
|
-
case
|
|
124
|
+
case OP_WRITE_FILE:
|
|
125
|
+
case OP_CREATE_WORKFLOW:
|
|
126
|
+
case OP_MODIFY_SOURCE:
|
|
127
|
+
case OP_IMPLEMENT_NODE: {
|
|
124
128
|
if (!file) {
|
|
125
129
|
return { blocked: true, blockReason: `${step.operation} requires a "file" argument.` };
|
|
126
130
|
}
|
|
@@ -140,9 +144,9 @@ export async function executeStep(step, projectDir) {
|
|
|
140
144
|
// -----------------------------------------------------------------
|
|
141
145
|
// Patch file: surgical find-and-replace (no full rewrite needed)
|
|
142
146
|
// -----------------------------------------------------------------
|
|
143
|
-
case
|
|
147
|
+
case OP_PATCH_FILE: {
|
|
144
148
|
if (!file) {
|
|
145
|
-
return { blocked: true, blockReason: '
|
|
149
|
+
return { blocked: true, blockReason: 'patch_file requires a "file" argument.' };
|
|
146
150
|
}
|
|
147
151
|
assertSafePath(file, projectDir);
|
|
148
152
|
const filePath = path.resolve(projectDir, file);
|
|
@@ -152,7 +156,7 @@ export async function executeStep(step, projectDir) {
|
|
|
152
156
|
// File size guard
|
|
153
157
|
const fileSize = fs.statSync(filePath).size;
|
|
154
158
|
if (fileSize > MAX_READ_SIZE) {
|
|
155
|
-
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}).` };
|
|
156
160
|
}
|
|
157
161
|
let content = fs.readFileSync(filePath, 'utf-8');
|
|
158
162
|
const patches = args.patches ?? [];
|
|
@@ -160,7 +164,7 @@ export async function executeStep(step, projectDir) {
|
|
|
160
164
|
patches.push({ find: args.find, replace: args.replace });
|
|
161
165
|
}
|
|
162
166
|
if (!patches.length) {
|
|
163
|
-
return { blocked: true, blockReason: '
|
|
167
|
+
return { blocked: true, blockReason: 'patch_file requires "patches" array or "find"+"replace" args.' };
|
|
164
168
|
}
|
|
165
169
|
let applied = 0;
|
|
166
170
|
const notFound = [];
|
|
@@ -201,7 +205,7 @@ export async function executeStep(step, projectDir) {
|
|
|
201
205
|
// -----------------------------------------------------------------
|
|
202
206
|
// Read file: return content for AI context
|
|
203
207
|
// -----------------------------------------------------------------
|
|
204
|
-
case
|
|
208
|
+
case OP_READ_FILE: {
|
|
205
209
|
if (!file) {
|
|
206
210
|
return { output: '' };
|
|
207
211
|
}
|
|
@@ -217,7 +221,7 @@ export async function executeStep(step, projectDir) {
|
|
|
217
221
|
return { output: `"${file}" is a directory. Contents:\n${entries.join('\n')}` };
|
|
218
222
|
}
|
|
219
223
|
if (stat.size > MAX_READ_SIZE) {
|
|
220
|
-
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.` };
|
|
221
225
|
}
|
|
222
226
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
223
227
|
return { file: filePath, output: content };
|
|
@@ -230,10 +234,10 @@ export async function executeStep(step, projectDir) {
|
|
|
230
234
|
// -----------------------------------------------------------------
|
|
231
235
|
// Shell command: run arbitrary command with safety guards
|
|
232
236
|
// -----------------------------------------------------------------
|
|
233
|
-
case
|
|
237
|
+
case OP_RUN_SHELL: {
|
|
234
238
|
const command = args.command ?? '';
|
|
235
239
|
if (!command.trim()) {
|
|
236
|
-
return { blocked: true, blockReason: '
|
|
240
|
+
return { blocked: true, blockReason: 'run_shell requires a "command" argument.' };
|
|
237
241
|
}
|
|
238
242
|
const shellGuard = checkShellSafety(command);
|
|
239
243
|
if (!shellGuard.allowed) {
|
|
@@ -268,7 +272,7 @@ export async function executeStep(step, projectDir) {
|
|
|
268
272
|
// -----------------------------------------------------------------
|
|
269
273
|
// List files: glob-like directory listing
|
|
270
274
|
// -----------------------------------------------------------------
|
|
271
|
-
case
|
|
275
|
+
case OP_LIST_FILES: {
|
|
272
276
|
const dir = args.directory ?? args.dir ?? '.';
|
|
273
277
|
const pattern = args.pattern ?? '';
|
|
274
278
|
assertSafePath(dir, projectDir);
|
|
@@ -312,20 +316,51 @@ export async function executeStep(step, projectDir) {
|
|
|
312
316
|
return { files: files.map(f => path.join(dir, f)), output: files.join('\n') };
|
|
313
317
|
}
|
|
314
318
|
// -----------------------------------------------------------------
|
|
315
|
-
//
|
|
319
|
+
// Task management — create subtasks for recursive swarm execution
|
|
316
320
|
// -----------------------------------------------------------------
|
|
317
|
-
case
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
321
|
+
case OP_TASK_CREATE: {
|
|
322
|
+
const title = args.title ?? '';
|
|
323
|
+
if (!title)
|
|
324
|
+
return { blocked: true, blockReason: 'task_create requires a "title" argument.' };
|
|
325
|
+
const store = new TaskStore(projectDir);
|
|
326
|
+
const input = {
|
|
327
|
+
title,
|
|
328
|
+
description: args.description ?? title,
|
|
329
|
+
complexity: args.complexity ?? 'simple',
|
|
330
|
+
priority: args.priority ?? 0,
|
|
331
|
+
parentId: args.parentId,
|
|
332
|
+
dependsOn: args.dependsOn ?? [],
|
|
333
|
+
};
|
|
334
|
+
// Support inline subtasks
|
|
335
|
+
const subtasksArg = args.subtasks;
|
|
336
|
+
if (subtasksArg?.length) {
|
|
337
|
+
input.subtasks = subtasksArg.map((s) => ({
|
|
338
|
+
title: s.title ?? '',
|
|
339
|
+
description: s.description ?? '',
|
|
340
|
+
complexity: s.complexity ?? 'simple',
|
|
341
|
+
priority: s.priority ?? 0,
|
|
342
|
+
}));
|
|
343
|
+
}
|
|
344
|
+
const task = await store.create(input);
|
|
345
|
+
const subtasks = task.isParent ? await store.getSubtasks(task.id) : [];
|
|
346
|
+
const ids = [task.id, ...subtasks.map(s => s.id)];
|
|
347
|
+
return { output: `Created task "${title}" (${task.id})${subtasks.length ? ` with ${subtasks.length} subtasks` : ''}. IDs: ${ids.join(', ')}` };
|
|
348
|
+
}
|
|
349
|
+
// -----------------------------------------------------------------
|
|
350
|
+
// Passthrough operations
|
|
351
|
+
// -----------------------------------------------------------------
|
|
352
|
+
case OP_RESPOND:
|
|
353
|
+
case OP_NO_OP:
|
|
354
|
+
case OP_NOOP:
|
|
355
|
+
case OP_DONE:
|
|
356
|
+
case OP_COMPLETE: {
|
|
322
357
|
// Passthrough operations — the plan already contains the answer or
|
|
323
358
|
// there's nothing to execute. Return the response text as output.
|
|
324
359
|
const response = args.response ?? args.text ?? args.description ?? '';
|
|
325
360
|
return { output: response || undefined };
|
|
326
361
|
}
|
|
327
362
|
default: {
|
|
328
|
-
const result = await runCommand(
|
|
363
|
+
const result = await runCommand(operation, { ...args, cwd: projectDir });
|
|
329
364
|
return {
|
|
330
365
|
file: result.files?.[0],
|
|
331
366
|
files: result.files,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-executor.js","sourceRoot":"","sources":["../../src/bot/step-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,yEAAyE;AACzE,uDAAuD;AACvD,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;IAC3C,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC;AAErC,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,8DAA8D;AAC9D,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,iDAAiD;AACjD,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,yDAAyD;AACzD,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,4CAA4C;AAC5C,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,oEAAoE;AACpE,2DAA2D;AAE3D,uEAAuE;AACvE,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B,gDAAgD;AAChD,MAAM,UAAU,oBAAoB;IAClC,oBAAoB,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,cAAc,CAAC,QAAgB,EAAE,UAAkB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,uCAAuC,CAC5E,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/D,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,mDAAmD,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC9E,mDAAmD;YACnD,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,iCAAiC,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAWD,SAAS,gBAAgB,CAAC,QAAgB,EAAE,OAAe;IACzD,yBAAyB;IACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EACJ,sCAAsC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBACjE,kEAAkE;SACrE,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,oBAAoB,IAAI,kBAAkB,EAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,6BAA6B,kBAAkB,mBAAmB;SAC3E,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,YAAY,GAAG,qBAAqB,IAAI,OAAO,GAAG,YAAY,GAAG,gBAAgB,EAAE,CAAC;YACtF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EACJ,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,OAAO,KAAK;oBAC1E,MAAM,SAAS,4BAA4B,YAAY,MAAM;oBAC7D,uEAAuE;aAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,OAAe;IACvC,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,oDAAoD,OAAO,CAAC,MAAM,GAAG;aAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAeD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAA0D,EAC1D,UAAkB;IAElB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAC;IAE7C,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,oEAAoE;QACpE,6CAA6C;QAC7C,oEAAoE;QACpE,KAAK,YAAY,CAAC;QAClB,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,8BAA8B,EAAE,CAAC;YACzF,CAAC;YACD,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAK,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;YAExE,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACtE,CAAC;YAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,oBAAoB,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC;QAED,oEAAoE;QACpE,iEAAiE;QACjE,oEAAoE;QACpE,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;YAClF,CAAC;YACD,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;YACnE,CAAC;YAED,kBAAkB;YAClB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAC5C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kCAAkC,QAAQ,eAAe,aAAa,IAAI,EAAE,CAAC;YACpH,CAAC;YAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAI,IAAI,CAAC,OAAoD,IAAI,EAAE,CAAC;YAEjF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAiB,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC;YACzG,CAAC;YAED,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;oBACpF,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,iDAAiD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC/E,CAAC;YACJ,CAAC;YAED,kEAAkE;YAClE,MAAM,YAAY,GAAG,QAAQ,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,YAAY,GAAG,qBAAqB,IAAI,OAAO,GAAG,YAAY,GAAG,gBAAgB,EAAE,CAAC;gBACtF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjE,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI;oBACb,WAAW,EACT,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,OAAO,KAAK;wBACrE,MAAM,SAAS,4BAA4B,YAAY,MAAM;wBAC7D,uEAAuE;iBAC1E,CAAC;YACJ,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,oBAAoB,EAAE,CAAC;YAEvB,MAAM,OAAO,GAAG,WAAW,OAAO,IAAI,OAAO,CAAC,MAAM,UAAU;gBAC5D,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7C,CAAC;QAED,oEAAoE;QACpE,2CAA2C;QAC3C,oEAAoE;QACpE,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACxB,CAAC;YACD,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,MAAM,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;oBAChE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,gCAAgC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBAClF,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;oBAC9B,OAAO,EAAE,MAAM,EAAE,2BAA2B,IAAI,CAAC,IAAI,eAAe,aAAa,0CAA0C,EAAE,CAAC;gBAChI,CAAC;gBACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,EAAE,MAAM,EAAE,uBAAuB,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,0DAA0D;QAC1D,oEAAoE;QACpE,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;YACpF,CAAC;YAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC;gBACH,yFAAyF;gBACzF,kEAAkE;gBAClE,MAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;oBAC9C,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,GAAG,WAAW,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE;oBACtC,GAAG,EAAE,UAAU;oBACf,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,aAAa;oBACtB,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,iBAAiB;oBACzC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAChC,CAAC,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,+DAA+D;gBAC/D,MAAM,OAAO,GAAG,GAA4D,CAAC;gBAC7E,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,OAAO;oBACL,MAAM,EAAE,QAAQ,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACvE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,0CAA0C;QAC1C,oEAAoE;QACpE,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAI,IAAI,CAAC,SAAoB,IAAK,IAAI,CAAC,GAAc,IAAI,GAAG,CAAC;YACtE,MAAM,OAAO,GAAI,IAAI,CAAC,OAAkB,IAAI,EAAE,CAAC;YAC/C,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,wBAAwB,GAAG,EAAE,EAAE,CAAC;YACnD,CAAC;YAED,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAa,CAAC;YAC1F,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,EAAE,MAAM,EAAE,4BAA4B,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;YAChE,CAAC;YACD,IAAI,KAAK,GAAG,OAAO;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE;gBACV,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC;oBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,KAAK,CAAC;gBAAC,CAAC;YACpE,CAAC,CAAC;iBACD,IAAI,EAAE,CAAC;YAEV,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;oBAClC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,MAAM,EAAE,0BAA0B,OAAO,EAAE,EAAE,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,CAAC;QAED,oEAAoE;QACpE,kDAAkD;QAClD,oEAAoE;QACpE,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,mEAAmE;YACnE,kEAAkE;YAClE,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAmB,IAAK,IAAI,CAAC,IAAe,IAAK,IAAI,CAAC,WAAsB,IAAI,EAAE,CAAC;YAC1G,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;YAC9E,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aAC1F,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
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,11 @@ 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
|
|
147
|
+
- task_list, task_get, task_update — query and update existing tasks
|
|
146
148
|
|
|
147
149
|
### Knowledge tools
|
|
148
150
|
- learn(key, value), recall(query)
|
|
@@ -153,7 +155,7 @@ USE TOOLS to complete tasks. Do NOT describe what you would do — actually do i
|
|
|
153
155
|
### Rules
|
|
154
156
|
- Always validate BEFORE and AFTER patching
|
|
155
157
|
- Always read a file before patching it
|
|
156
|
-
- Use
|
|
158
|
+
- Use ${OP_PATCH_FILE} for modifications, ${OP_WRITE_FILE} only for new files
|
|
157
159
|
- Be concise — let tool results speak`);
|
|
158
160
|
}
|
|
159
161
|
parts.push(`## Teaching
|
|
@@ -185,23 +187,23 @@ export async function buildSystemPrompt(sections) {
|
|
|
185
187
|
function formatBotOperations(cliCommands) {
|
|
186
188
|
const packOps = [
|
|
187
189
|
'## File Operations',
|
|
188
|
-
'-
|
|
189
|
-
'-
|
|
190
|
-
'-
|
|
191
|
-
'-
|
|
192
|
-
'-
|
|
193
|
-
'-
|
|
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)',
|
|
194
196
|
'',
|
|
195
197
|
'## Shell Commands',
|
|
196
|
-
'-
|
|
198
|
+
'- run_shell: Execute a shell command and return output. args: { command }. Use for: npx vitest, git status, grep, find, etc.',
|
|
197
199
|
' Examples: { "command": "npx vitest run --reporter verbose" }, { "command": "npx flow-weaver validate src/workflow.ts --json" }',
|
|
198
200
|
' Blocked: rm -rf, git push, npm publish, sudo, curl|sh (safety policy).',
|
|
199
201
|
'',
|
|
200
202
|
'## Best Practices',
|
|
201
|
-
'PREFER
|
|
202
|
-
'Use
|
|
203
|
-
'Use
|
|
204
|
-
'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.',
|
|
205
207
|
'Writes that shrink a file by >50% or write empty content are automatically BLOCKED.',
|
|
206
208
|
];
|
|
207
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":"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"}
|
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,9 @@ 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';
|
|
8
|
+
import { TaskStore } from './task-store.js';
|
|
9
|
+
import type { CreateTaskInput } from './task-types.js';
|
|
7
10
|
|
|
8
11
|
// Use the user's login shell (same as terminal panel) so profile-managed
|
|
9
12
|
// tools like nvm/npm, pyenv, rbenv etc. are available.
|
|
@@ -30,7 +33,7 @@ const SHELL_TIMEOUT = 60_000;
|
|
|
30
33
|
/** Maximum file size for read/patch operations (1MB). */
|
|
31
34
|
const MAX_READ_SIZE = 1_048_576;
|
|
32
35
|
|
|
33
|
-
/** Maximum files returned by
|
|
36
|
+
/** Maximum files returned by list_files. */
|
|
34
37
|
const MAX_LIST_FILES = 1000;
|
|
35
38
|
|
|
36
39
|
// Shell blocklist imported from safety.ts — single source of truth.
|
|
@@ -99,7 +102,7 @@ function checkWriteSafety(filePath: string, content: string): WriteGuardResult {
|
|
|
99
102
|
allowed: false,
|
|
100
103
|
reason:
|
|
101
104
|
`Refusing to write empty content to ${path.basename(filePath)}. ` +
|
|
102
|
-
`Use
|
|
105
|
+
`Use read_file first, then write the complete modified file back.`,
|
|
103
106
|
};
|
|
104
107
|
}
|
|
105
108
|
|
|
@@ -122,7 +125,7 @@ function checkWriteSafety(filePath: string, content: string): WriteGuardResult {
|
|
|
122
125
|
reason:
|
|
123
126
|
`Refusing to write ${path.basename(filePath)}: new content (${newSize}B) ` +
|
|
124
127
|
`is ${shrinkPct}% smaller than existing (${existingSize}B). ` +
|
|
125
|
-
`Use
|
|
128
|
+
`Use read_file first, make targeted changes, write complete file back.`,
|
|
126
129
|
};
|
|
127
130
|
}
|
|
128
131
|
}
|
|
@@ -166,14 +169,17 @@ export async function executeStep(
|
|
|
166
169
|
const args = step.args;
|
|
167
170
|
const file = args.file as string | undefined;
|
|
168
171
|
|
|
169
|
-
|
|
172
|
+
// Normalize operation names: accept both hyphens and underscores
|
|
173
|
+
const operation = normalizeOperation(step.operation);
|
|
174
|
+
|
|
175
|
+
switch (operation) {
|
|
170
176
|
// -----------------------------------------------------------------
|
|
171
177
|
// File write operations (with safety guards)
|
|
172
178
|
// -----------------------------------------------------------------
|
|
173
|
-
case
|
|
174
|
-
case
|
|
175
|
-
case
|
|
176
|
-
case
|
|
179
|
+
case OP_WRITE_FILE:
|
|
180
|
+
case OP_CREATE_WORKFLOW:
|
|
181
|
+
case OP_MODIFY_SOURCE:
|
|
182
|
+
case OP_IMPLEMENT_NODE: {
|
|
177
183
|
if (!file) {
|
|
178
184
|
return { blocked: true, blockReason: `${step.operation} requires a "file" argument.` };
|
|
179
185
|
}
|
|
@@ -196,9 +202,9 @@ export async function executeStep(
|
|
|
196
202
|
// -----------------------------------------------------------------
|
|
197
203
|
// Patch file: surgical find-and-replace (no full rewrite needed)
|
|
198
204
|
// -----------------------------------------------------------------
|
|
199
|
-
case
|
|
205
|
+
case OP_PATCH_FILE: {
|
|
200
206
|
if (!file) {
|
|
201
|
-
return { blocked: true, blockReason: '
|
|
207
|
+
return { blocked: true, blockReason: 'patch_file requires a "file" argument.' };
|
|
202
208
|
}
|
|
203
209
|
assertSafePath(file, projectDir);
|
|
204
210
|
const filePath = path.resolve(projectDir, file);
|
|
@@ -210,7 +216,7 @@ export async function executeStep(
|
|
|
210
216
|
// File size guard
|
|
211
217
|
const fileSize = fs.statSync(filePath).size;
|
|
212
218
|
if (fileSize > MAX_READ_SIZE) {
|
|
213
|
-
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}).` };
|
|
214
220
|
}
|
|
215
221
|
|
|
216
222
|
let content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -221,7 +227,7 @@ export async function executeStep(
|
|
|
221
227
|
}
|
|
222
228
|
|
|
223
229
|
if (!patches.length) {
|
|
224
|
-
return { blocked: true, blockReason: '
|
|
230
|
+
return { blocked: true, blockReason: 'patch_file requires "patches" array or "find"+"replace" args.' };
|
|
225
231
|
}
|
|
226
232
|
|
|
227
233
|
let applied = 0;
|
|
@@ -269,7 +275,7 @@ export async function executeStep(
|
|
|
269
275
|
// -----------------------------------------------------------------
|
|
270
276
|
// Read file: return content for AI context
|
|
271
277
|
// -----------------------------------------------------------------
|
|
272
|
-
case
|
|
278
|
+
case OP_READ_FILE: {
|
|
273
279
|
if (!file) {
|
|
274
280
|
return { output: '' };
|
|
275
281
|
}
|
|
@@ -285,7 +291,7 @@ export async function executeStep(
|
|
|
285
291
|
return { output: `"${file}" is a directory. Contents:\n${entries.join('\n')}` };
|
|
286
292
|
}
|
|
287
293
|
if (stat.size > MAX_READ_SIZE) {
|
|
288
|
-
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.` };
|
|
289
295
|
}
|
|
290
296
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
291
297
|
return { file: filePath, output: content };
|
|
@@ -298,10 +304,10 @@ export async function executeStep(
|
|
|
298
304
|
// -----------------------------------------------------------------
|
|
299
305
|
// Shell command: run arbitrary command with safety guards
|
|
300
306
|
// -----------------------------------------------------------------
|
|
301
|
-
case
|
|
307
|
+
case OP_RUN_SHELL: {
|
|
302
308
|
const command = (args.command as string) ?? '';
|
|
303
309
|
if (!command.trim()) {
|
|
304
|
-
return { blocked: true, blockReason: '
|
|
310
|
+
return { blocked: true, blockReason: 'run_shell requires a "command" argument.' };
|
|
305
311
|
}
|
|
306
312
|
|
|
307
313
|
const shellGuard = checkShellSafety(command);
|
|
@@ -338,7 +344,7 @@ export async function executeStep(
|
|
|
338
344
|
// -----------------------------------------------------------------
|
|
339
345
|
// List files: glob-like directory listing
|
|
340
346
|
// -----------------------------------------------------------------
|
|
341
|
-
case
|
|
347
|
+
case OP_LIST_FILES: {
|
|
342
348
|
const dir = (args.directory as string) ?? (args.dir as string) ?? '.';
|
|
343
349
|
const pattern = (args.pattern as string) ?? '';
|
|
344
350
|
assertSafePath(dir, projectDir);
|
|
@@ -380,13 +386,47 @@ export async function executeStep(
|
|
|
380
386
|
}
|
|
381
387
|
|
|
382
388
|
// -----------------------------------------------------------------
|
|
383
|
-
//
|
|
389
|
+
// Task management — create subtasks for recursive swarm execution
|
|
390
|
+
// -----------------------------------------------------------------
|
|
391
|
+
case OP_TASK_CREATE: {
|
|
392
|
+
const title = (args.title as string) ?? '';
|
|
393
|
+
if (!title) return { blocked: true, blockReason: 'task_create requires a "title" argument.' };
|
|
394
|
+
|
|
395
|
+
const store = new TaskStore(projectDir);
|
|
396
|
+
const input: CreateTaskInput = {
|
|
397
|
+
title,
|
|
398
|
+
description: (args.description as string) ?? title,
|
|
399
|
+
complexity: (args.complexity as 'trivial' | 'simple' | 'moderate' | 'complex') ?? 'simple',
|
|
400
|
+
priority: (args.priority as number) ?? 0,
|
|
401
|
+
parentId: args.parentId as string | undefined,
|
|
402
|
+
dependsOn: (args.dependsOn as string[]) ?? [],
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
// Support inline subtasks
|
|
406
|
+
const subtasksArg = args.subtasks as Array<Record<string, unknown>> | undefined;
|
|
407
|
+
if (subtasksArg?.length) {
|
|
408
|
+
input.subtasks = subtasksArg.map((s) => ({
|
|
409
|
+
title: (s.title as string) ?? '',
|
|
410
|
+
description: (s.description as string) ?? '',
|
|
411
|
+
complexity: (s.complexity as 'trivial' | 'simple' | 'moderate' | 'complex') ?? 'simple',
|
|
412
|
+
priority: (s.priority as number) ?? 0,
|
|
413
|
+
}));
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
const task = await store.create(input);
|
|
417
|
+
const subtasks = task.isParent ? await store.getSubtasks(task.id) : [];
|
|
418
|
+
const ids = [task.id, ...subtasks.map(s => s.id)];
|
|
419
|
+
return { output: `Created task "${title}" (${task.id})${subtasks.length ? ` with ${subtasks.length} subtasks` : ''}. IDs: ${ids.join(', ')}` };
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// -----------------------------------------------------------------
|
|
423
|
+
// Passthrough operations
|
|
384
424
|
// -----------------------------------------------------------------
|
|
385
|
-
case
|
|
386
|
-
case
|
|
387
|
-
case
|
|
388
|
-
case
|
|
389
|
-
case
|
|
425
|
+
case OP_RESPOND:
|
|
426
|
+
case OP_NO_OP:
|
|
427
|
+
case OP_NOOP:
|
|
428
|
+
case OP_DONE:
|
|
429
|
+
case OP_COMPLETE: {
|
|
390
430
|
// Passthrough operations — the plan already contains the answer or
|
|
391
431
|
// there's nothing to execute. Return the response text as output.
|
|
392
432
|
const response = (args.response as string) ?? (args.text as string) ?? (args.description as string) ?? '';
|
|
@@ -394,7 +434,7 @@ export async function executeStep(
|
|
|
394
434
|
}
|
|
395
435
|
|
|
396
436
|
default: {
|
|
397
|
-
const result = await runCommand(
|
|
437
|
+
const result = await runCommand(operation, { ...args, cwd: projectDir });
|
|
398
438
|
return {
|
|
399
439
|
file: result.files?.[0],
|
|
400
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,11 @@ 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
|
|
206
|
+
- task_list, task_get, task_update — query and update existing tasks
|
|
204
207
|
|
|
205
208
|
### Knowledge tools
|
|
206
209
|
- learn(key, value), recall(query)
|
|
@@ -211,7 +214,7 @@ USE TOOLS to complete tasks. Do NOT describe what you would do — actually do i
|
|
|
211
214
|
### Rules
|
|
212
215
|
- Always validate BEFORE and AFTER patching
|
|
213
216
|
- Always read a file before patching it
|
|
214
|
-
- Use
|
|
217
|
+
- Use ${OP_PATCH_FILE} for modifications, ${OP_WRITE_FILE} only for new files
|
|
215
218
|
- Be concise — let tool results speak`);
|
|
216
219
|
}
|
|
217
220
|
|
|
@@ -252,23 +255,23 @@ export async function buildSystemPrompt(sections?: Set<PromptSection>): Promise<
|
|
|
252
255
|
function formatBotOperations(cliCommands: CliCommandDoc[]): string {
|
|
253
256
|
const packOps = [
|
|
254
257
|
'## File Operations',
|
|
255
|
-
'-
|
|
256
|
-
'-
|
|
257
|
-
'-
|
|
258
|
-
'-
|
|
259
|
-
'-
|
|
260
|
-
'-
|
|
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)',
|
|
261
264
|
'',
|
|
262
265
|
'## Shell Commands',
|
|
263
|
-
'-
|
|
266
|
+
'- run_shell: Execute a shell command and return output. args: { command }. Use for: npx vitest, git status, grep, find, etc.',
|
|
264
267
|
' Examples: { "command": "npx vitest run --reporter verbose" }, { "command": "npx flow-weaver validate src/workflow.ts --json" }',
|
|
265
268
|
' Blocked: rm -rf, git push, npm publish, sudo, curl|sh (safety policy).',
|
|
266
269
|
'',
|
|
267
270
|
'## Best Practices',
|
|
268
|
-
'PREFER
|
|
269
|
-
'Use
|
|
270
|
-
'Use
|
|
271
|
-
'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.',
|
|
272
275
|
'Writes that shrink a file by >50% or write empty content are automatically BLOCKED.',
|
|
273
276
|
];
|
|
274
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).
|