@synergenius/flowweaver-pack-weaver 0.5.0 → 0.5.2
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/README.md +167 -0
- package/dist/bot/agent-provider.d.ts +15 -1
- package/dist/bot/agent-provider.d.ts.map +1 -1
- package/dist/bot/agent-provider.js +78 -2
- package/dist/bot/agent-provider.js.map +1 -1
- package/dist/bot/ai-client.d.ts +4 -0
- package/dist/bot/ai-client.d.ts.map +1 -0
- package/dist/bot/ai-client.js +46 -0
- package/dist/bot/ai-client.js.map +1 -0
- package/dist/bot/bot-agent-channel.d.ts +14 -1
- package/dist/bot/bot-agent-channel.d.ts.map +1 -1
- package/dist/bot/bot-agent-channel.js +16 -0
- package/dist/bot/bot-agent-channel.js.map +1 -1
- package/dist/bot/cli-provider.d.ts +16 -1
- package/dist/bot/cli-provider.d.ts.map +1 -1
- package/dist/bot/cli-provider.js +10 -0
- package/dist/bot/cli-provider.js.map +1 -1
- package/dist/bot/dashboard.d.ts.map +1 -1
- package/dist/bot/dashboard.js +2 -2
- package/dist/bot/dashboard.js.map +1 -1
- package/dist/bot/file-lock.d.ts +7 -0
- package/dist/bot/file-lock.d.ts.map +1 -0
- package/dist/bot/file-lock.js +64 -0
- package/dist/bot/file-lock.js.map +1 -0
- package/dist/bot/file-validator.d.ts +7 -0
- package/dist/bot/file-validator.d.ts.map +1 -0
- package/dist/bot/file-validator.js +20 -0
- package/dist/bot/file-validator.js.map +1 -0
- package/dist/bot/genesis-store.d.ts +18 -0
- package/dist/bot/genesis-store.d.ts.map +1 -0
- package/dist/bot/genesis-store.js +89 -0
- package/dist/bot/genesis-store.js.map +1 -0
- package/dist/bot/index.d.ts +7 -1
- package/dist/bot/index.d.ts.map +1 -1
- package/dist/bot/index.js +8 -0
- package/dist/bot/index.js.map +1 -1
- package/dist/bot/runner.d.ts.map +1 -1
- package/dist/bot/runner.js +2 -4
- package/dist/bot/runner.js.map +1 -1
- package/dist/bot/session-state.d.ts +3 -3
- package/dist/bot/session-state.d.ts.map +1 -1
- package/dist/bot/session-state.js +24 -15
- package/dist/bot/session-state.js.map +1 -1
- package/dist/bot/steering.d.ts +2 -2
- package/dist/bot/steering.d.ts.map +1 -1
- package/dist/bot/steering.js +20 -15
- package/dist/bot/steering.js.map +1 -1
- package/dist/bot/step-executor.d.ts +9 -0
- package/dist/bot/step-executor.d.ts.map +1 -0
- package/dist/bot/step-executor.js +51 -0
- package/dist/bot/step-executor.js.map +1 -0
- package/dist/bot/task-queue.d.ts +8 -8
- package/dist/bot/task-queue.d.ts.map +1 -1
- package/dist/bot/task-queue.js +58 -47
- package/dist/bot/task-queue.js.map +1 -1
- package/dist/bot/types.d.ts +131 -0
- package/dist/bot/types.d.ts.map +1 -1
- package/dist/cli-bridge.d.ts.map +1 -1
- package/dist/cli-bridge.js +2 -4
- package/dist/cli-bridge.js.map +1 -1
- package/dist/cli-handlers.d.ts +4 -1
- package/dist/cli-handlers.d.ts.map +1 -1
- package/dist/cli-handlers.js +84 -8
- package/dist/cli-handlers.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-tools.d.ts.map +1 -1
- package/dist/mcp-tools.js +27 -5
- package/dist/mcp-tools.js.map +1 -1
- package/dist/node-types/abort-task.d.ts +5 -12
- package/dist/node-types/abort-task.d.ts.map +1 -1
- package/dist/node-types/abort-task.js +11 -16
- package/dist/node-types/abort-task.js.map +1 -1
- package/dist/node-types/approval-gate.d.ts +4 -21
- package/dist/node-types/approval-gate.d.ts.map +1 -1
- package/dist/node-types/approval-gate.js +17 -23
- package/dist/node-types/approval-gate.js.map +1 -1
- package/dist/node-types/bot-report.d.ts +8 -10
- package/dist/node-types/bot-report.d.ts.map +1 -1
- package/dist/node-types/bot-report.js +28 -24
- package/dist/node-types/bot-report.js.map +1 -1
- package/dist/node-types/build-context.d.ts +5 -18
- package/dist/node-types/build-context.d.ts.map +1 -1
- package/dist/node-types/build-context.js +14 -23
- package/dist/node-types/build-context.js.map +1 -1
- package/dist/node-types/detect-provider.d.ts +7 -10
- package/dist/node-types/detect-provider.d.ts.map +1 -1
- package/dist/node-types/detect-provider.js +8 -12
- package/dist/node-types/detect-provider.js.map +1 -1
- package/dist/node-types/exec-validate-retry.d.ts +5 -26
- package/dist/node-types/exec-validate-retry.d.ts.map +1 -1
- package/dist/node-types/exec-validate-retry.js +21 -144
- package/dist/node-types/exec-validate-retry.js.map +1 -1
- package/dist/node-types/execute-plan.d.ts +10 -18
- package/dist/node-types/execute-plan.d.ts.map +1 -1
- package/dist/node-types/execute-plan.js +13 -68
- package/dist/node-types/execute-plan.js.map +1 -1
- package/dist/node-types/execute-target.d.ts +5 -15
- package/dist/node-types/execute-target.d.ts.map +1 -1
- package/dist/node-types/execute-target.js +17 -85
- package/dist/node-types/execute-target.js.map +1 -1
- package/dist/node-types/fix-errors.d.ts +9 -17
- package/dist/node-types/fix-errors.d.ts.map +1 -1
- package/dist/node-types/fix-errors.js +13 -64
- package/dist/node-types/fix-errors.js.map +1 -1
- package/dist/node-types/genesis-apply-retry.d.ts +24 -0
- package/dist/node-types/genesis-apply-retry.d.ts.map +1 -0
- package/dist/node-types/genesis-apply-retry.js +95 -0
- package/dist/node-types/genesis-apply-retry.js.map +1 -0
- package/dist/node-types/genesis-apply.d.ts +29 -0
- package/dist/node-types/genesis-apply.d.ts.map +1 -0
- package/dist/node-types/genesis-apply.js +76 -0
- package/dist/node-types/genesis-apply.js.map +1 -0
- package/dist/node-types/genesis-approve.d.ts +19 -0
- package/dist/node-types/genesis-approve.d.ts.map +1 -0
- package/dist/node-types/genesis-approve.js +54 -0
- package/dist/node-types/genesis-approve.js.map +1 -0
- package/dist/node-types/genesis-check-stabilize.d.ts +16 -0
- package/dist/node-types/genesis-check-stabilize.d.ts.map +1 -0
- package/dist/node-types/genesis-check-stabilize.js +32 -0
- package/dist/node-types/genesis-check-stabilize.js.map +1 -0
- package/dist/node-types/genesis-check-threshold.d.ts +15 -0
- package/dist/node-types/genesis-check-threshold.d.ts.map +1 -0
- package/dist/node-types/genesis-check-threshold.js +29 -0
- package/dist/node-types/genesis-check-threshold.js.map +1 -0
- package/dist/node-types/genesis-commit.d.ts +17 -0
- package/dist/node-types/genesis-commit.d.ts.map +1 -0
- package/dist/node-types/genesis-commit.js +59 -0
- package/dist/node-types/genesis-commit.js.map +1 -0
- package/dist/node-types/genesis-compile-validate.d.ts +26 -0
- package/dist/node-types/genesis-compile-validate.d.ts.map +1 -0
- package/dist/node-types/genesis-compile-validate.js +60 -0
- package/dist/node-types/genesis-compile-validate.js.map +1 -0
- package/dist/node-types/genesis-diff-fingerprint.d.ts +15 -0
- package/dist/node-types/genesis-diff-fingerprint.d.ts.map +1 -0
- package/dist/node-types/genesis-diff-fingerprint.js +59 -0
- package/dist/node-types/genesis-diff-fingerprint.js.map +1 -0
- package/dist/node-types/genesis-diff-workflow.d.ts +15 -0
- package/dist/node-types/genesis-diff-workflow.d.ts.map +1 -0
- package/dist/node-types/genesis-diff-workflow.js +39 -0
- package/dist/node-types/genesis-diff-workflow.js.map +1 -0
- package/dist/node-types/genesis-load-config.d.ts +17 -0
- package/dist/node-types/genesis-load-config.d.ts.map +1 -0
- package/dist/node-types/genesis-load-config.js +35 -0
- package/dist/node-types/genesis-load-config.js.map +1 -0
- package/dist/node-types/genesis-observe.d.ts +18 -0
- package/dist/node-types/genesis-observe.d.ts.map +1 -0
- package/dist/node-types/genesis-observe.js +101 -0
- package/dist/node-types/genesis-observe.js.map +1 -0
- package/dist/node-types/genesis-propose.d.ts +17 -0
- package/dist/node-types/genesis-propose.d.ts.map +1 -0
- package/dist/node-types/genesis-propose.js +67 -0
- package/dist/node-types/genesis-propose.js.map +1 -0
- package/dist/node-types/genesis-report.d.ts +18 -0
- package/dist/node-types/genesis-report.d.ts.map +1 -0
- package/dist/node-types/genesis-report.js +61 -0
- package/dist/node-types/genesis-report.js.map +1 -0
- package/dist/node-types/genesis-snapshot.d.ts +15 -0
- package/dist/node-types/genesis-snapshot.d.ts.map +1 -0
- package/dist/node-types/genesis-snapshot.js +26 -0
- package/dist/node-types/genesis-snapshot.js.map +1 -0
- package/dist/node-types/genesis-try-apply.d.ts +18 -0
- package/dist/node-types/genesis-try-apply.d.ts.map +1 -0
- package/dist/node-types/genesis-try-apply.js +109 -0
- package/dist/node-types/genesis-try-apply.js.map +1 -0
- package/dist/node-types/genesis-update-history.d.ts +15 -0
- package/dist/node-types/genesis-update-history.d.ts.map +1 -0
- package/dist/node-types/genesis-update-history.js +57 -0
- package/dist/node-types/genesis-update-history.js.map +1 -0
- package/dist/node-types/genesis-validate-proposal.d.ts +16 -0
- package/dist/node-types/genesis-validate-proposal.d.ts.map +1 -0
- package/dist/node-types/genesis-validate-proposal.js +52 -0
- package/dist/node-types/genesis-validate-proposal.js.map +1 -0
- package/dist/node-types/git-ops.d.ts +5 -8
- package/dist/node-types/git-ops.d.ts.map +1 -1
- package/dist/node-types/git-ops.js +16 -14
- package/dist/node-types/git-ops.js.map +1 -1
- package/dist/node-types/index.d.ts +17 -0
- package/dist/node-types/index.d.ts.map +1 -1
- package/dist/node-types/index.js +17 -0
- package/dist/node-types/index.js.map +1 -1
- package/dist/node-types/load-config.d.ts +4 -2
- package/dist/node-types/load-config.d.ts.map +1 -1
- package/dist/node-types/load-config.js +3 -2
- package/dist/node-types/load-config.js.map +1 -1
- package/dist/node-types/plan-task.d.ts +5 -20
- package/dist/node-types/plan-task.d.ts.map +1 -1
- package/dist/node-types/plan-task.js +16 -85
- package/dist/node-types/plan-task.js.map +1 -1
- package/dist/node-types/read-workflow.d.ts +5 -20
- package/dist/node-types/read-workflow.d.ts.map +1 -1
- package/dist/node-types/read-workflow.js +16 -28
- package/dist/node-types/read-workflow.js.map +1 -1
- package/dist/node-types/receive-task.d.ts +9 -20
- package/dist/node-types/receive-task.d.ts.map +1 -1
- package/dist/node-types/receive-task.js +16 -19
- package/dist/node-types/receive-task.js.map +1 -1
- package/dist/node-types/report.d.ts +3 -4
- package/dist/node-types/report.d.ts.map +1 -1
- package/dist/node-types/report.js +6 -6
- package/dist/node-types/report.js.map +1 -1
- package/dist/node-types/resolve-target.d.ts +7 -15
- package/dist/node-types/resolve-target.d.ts.map +1 -1
- package/dist/node-types/resolve-target.js +47 -47
- package/dist/node-types/resolve-target.js.map +1 -1
- package/dist/node-types/route-task.d.ts +4 -16
- package/dist/node-types/route-task.d.ts.map +1 -1
- package/dist/node-types/route-task.js +6 -13
- package/dist/node-types/route-task.js.map +1 -1
- package/dist/node-types/send-notify.d.ts +5 -11
- package/dist/node-types/send-notify.d.ts.map +1 -1
- package/dist/node-types/send-notify.js +17 -24
- package/dist/node-types/send-notify.js.map +1 -1
- package/dist/node-types/validate-result.d.ts +11 -19
- package/dist/node-types/validate-result.d.ts.map +1 -1
- package/dist/node-types/validate-result.js +18 -33
- package/dist/node-types/validate-result.js.map +1 -1
- package/dist/workflows/genesis-task.d.ts +52 -0
- package/dist/workflows/genesis-task.d.ts.map +1 -0
- package/dist/workflows/genesis-task.js +56 -0
- package/dist/workflows/genesis-task.js.map +1 -0
- package/dist/workflows/index.d.ts +1 -1
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/weaver-bot-batch.d.ts +15 -26
- package/dist/workflows/weaver-bot-batch.d.ts.map +1 -1
- package/dist/workflows/weaver-bot-batch.js +15 -26
- package/dist/workflows/weaver-bot-batch.js.map +1 -1
- package/dist/workflows/weaver-bot.d.ts +18 -32
- package/dist/workflows/weaver-bot.d.ts.map +1 -1
- package/dist/workflows/weaver-bot.js +18 -32
- package/dist/workflows/weaver-bot.js.map +1 -1
- package/dist/workflows/weaver.d.ts +9 -9
- package/dist/workflows/weaver.js +9 -9
- package/flowweaver.manifest.json +494 -558
- package/package.json +3 -3
- package/dist/workflows/weaver-bot-session.d.ts +0 -65
- package/dist/workflows/weaver-bot-session.d.ts.map +0 -1
- package/dist/workflows/weaver-bot-session.js +0 -68
- package/dist/workflows/weaver-bot-session.js.map +0 -1
|
@@ -1,98 +1,42 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import * as fs from 'node:fs';
|
|
3
2
|
import * as path from 'node:path';
|
|
4
3
|
import * as os from 'node:os';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
input: prompt, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 120_000,
|
|
9
|
-
}).trim();
|
|
10
|
-
}
|
|
11
|
-
if (provider === 'copilot-cli') {
|
|
12
|
-
return execSync('copilot -p --silent --allow-all-tools', {
|
|
13
|
-
input: prompt, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 120_000,
|
|
14
|
-
}).trim();
|
|
15
|
-
}
|
|
16
|
-
throw new Error(`Unknown CLI provider: ${provider}`);
|
|
17
|
-
}
|
|
18
|
-
async function callApi(apiKey, model, maxTokens, systemPrompt, userPrompt) {
|
|
19
|
-
const body = JSON.stringify({
|
|
20
|
-
model, max_tokens: maxTokens, system: systemPrompt,
|
|
21
|
-
messages: [{ role: 'user', content: userPrompt }],
|
|
22
|
-
});
|
|
23
|
-
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
24
|
-
method: 'POST',
|
|
25
|
-
headers: { 'x-api-key': apiKey, 'anthropic-version': '2023-06-01', 'content-type': 'application/json' },
|
|
26
|
-
body,
|
|
27
|
-
});
|
|
28
|
-
if (!response.ok) {
|
|
29
|
-
const text = await response.text();
|
|
30
|
-
throw new Error(`Anthropic API error ${response.status}: ${text.slice(0, 200)}`);
|
|
31
|
-
}
|
|
32
|
-
const json = await response.json();
|
|
33
|
-
return json.content[0]?.text ?? '';
|
|
34
|
-
}
|
|
35
|
-
function parseJsonResponse(text) {
|
|
36
|
-
let cleaned = text.trim();
|
|
37
|
-
if (cleaned.startsWith('```')) {
|
|
38
|
-
cleaned = cleaned.replace(/^```(?:json)?\s*\n?/, '').replace(/\n?```\s*$/, '');
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
return JSON.parse(cleaned);
|
|
42
|
-
}
|
|
43
|
-
catch { /* fallthrough */ }
|
|
44
|
-
const match = cleaned.match(/\{[\s\S]*\}/);
|
|
45
|
-
if (match)
|
|
46
|
-
return JSON.parse(match[0]);
|
|
47
|
-
throw new Error(`Failed to parse AI response as JSON: ${text.slice(0, 200)}`);
|
|
48
|
-
}
|
|
4
|
+
import { callCli, callApi, parseJsonResponse } from '../bot/ai-client.js';
|
|
5
|
+
import { executeStep } from '../bot/step-executor.js';
|
|
6
|
+
import { validateFiles } from '../bot/file-validator.js';
|
|
49
7
|
/**
|
|
50
8
|
* Execute-validate-fix retry loop. Runs the plan, validates results,
|
|
51
9
|
* and if validation fails, asks the AI for fixes. Up to 3 attempts.
|
|
52
10
|
*
|
|
53
11
|
* @flowWeaver nodeType
|
|
54
12
|
* @label Execute & Validate
|
|
55
|
-
* @input
|
|
56
|
-
* @
|
|
57
|
-
* @input providerType [order:2] - Provider type
|
|
58
|
-
* @input providerInfo [order:3] - Provider info (JSON)
|
|
59
|
-
* @input planJson [order:4] - Execution plan (JSON)
|
|
60
|
-
* @input taskJson [order:5] - Task (JSON)
|
|
61
|
-
* @output projectDir [order:0] - Project root directory (pass-through)
|
|
62
|
-
* @output config [order:1] - Config (pass-through)
|
|
63
|
-
* @output providerType [order:2] - Provider type (pass-through)
|
|
64
|
-
* @output providerInfo [order:3] - Provider info (pass-through)
|
|
65
|
-
* @output resultJson [order:4] - Final execution result (JSON)
|
|
66
|
-
* @output validationResultJson [order:5] - Final validation result (JSON)
|
|
67
|
-
* @output filesModified [order:6] - All modified files (JSON array)
|
|
68
|
-
* @output taskJson [order:7] - Task (pass-through)
|
|
69
|
-
* @output allValid [order:8] - Whether all files are valid
|
|
13
|
+
* @input ctx [order:0] - Weaver context (JSON)
|
|
14
|
+
* @output ctx [order:0] - Weaver context with results (JSON)
|
|
70
15
|
* @output onSuccess [order:-2] - On Success
|
|
71
|
-
* @output onFailure [order:-1] - On Failure
|
|
16
|
+
* @output onFailure [order:-1] [hidden] - On Failure
|
|
72
17
|
*/
|
|
73
|
-
export async function weaverExecValidateRetry(execute,
|
|
74
|
-
const
|
|
18
|
+
export async function weaverExecValidateRetry(execute, ctx) {
|
|
19
|
+
const context = JSON.parse(ctx);
|
|
20
|
+
const { env } = context;
|
|
75
21
|
if (!execute) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
};
|
|
22
|
+
context.resultJson = JSON.stringify({ success: true, stepsCompleted: 0, stepsTotal: 0 });
|
|
23
|
+
context.validationResultJson = '[]';
|
|
24
|
+
context.filesModified = '[]';
|
|
25
|
+
context.allValid = true;
|
|
26
|
+
return { onSuccess: true, onFailure: false, ctx: JSON.stringify(context) };
|
|
81
27
|
}
|
|
82
|
-
const pInfo =
|
|
28
|
+
const { providerInfo: pInfo, projectDir } = env;
|
|
83
29
|
const maxAttempts = 3;
|
|
84
|
-
let currentPlan = JSON.parse(planJson);
|
|
30
|
+
let currentPlan = JSON.parse(context.planJson);
|
|
85
31
|
let allFilesModified = [];
|
|
86
32
|
let lastExecResult = {};
|
|
87
33
|
let lastValidation = [];
|
|
88
34
|
let allValid = false;
|
|
89
35
|
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
90
36
|
console.log(`\x1b[36m→ Attempt ${attempt}/${maxAttempts}\x1b[0m`);
|
|
91
|
-
// Execute plan steps
|
|
92
37
|
const execResult = executePlanSteps(currentPlan, projectDir);
|
|
93
38
|
lastExecResult = execResult;
|
|
94
39
|
allFilesModified = [...new Set([...allFilesModified, ...execResult.filesModified])];
|
|
95
|
-
// Validate results
|
|
96
40
|
const validation = validateFiles(execResult.filesModified, projectDir);
|
|
97
41
|
lastValidation = validation;
|
|
98
42
|
allValid = validation.every(v => v.valid);
|
|
@@ -130,13 +74,11 @@ export async function weaverExecValidateRetry(execute, projectDir, config, provi
|
|
|
130
74
|
}
|
|
131
75
|
}
|
|
132
76
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
allValid,
|
|
139
|
-
};
|
|
77
|
+
context.resultJson = JSON.stringify(lastExecResult);
|
|
78
|
+
context.validationResultJson = JSON.stringify(lastValidation);
|
|
79
|
+
context.filesModified = JSON.stringify(allFilesModified);
|
|
80
|
+
context.allValid = allValid;
|
|
81
|
+
return { onSuccess: allValid, onFailure: !allValid, ctx: JSON.stringify(context) };
|
|
140
82
|
}
|
|
141
83
|
function executePlanSteps(plan, projectDir) {
|
|
142
84
|
const filesModified = [];
|
|
@@ -144,7 +86,6 @@ function executePlanSteps(plan, projectDir) {
|
|
|
144
86
|
let completed = 0;
|
|
145
87
|
const steps = plan.steps ?? [];
|
|
146
88
|
for (const step of steps) {
|
|
147
|
-
// Check steering between steps
|
|
148
89
|
const steering = checkSteeringSignal();
|
|
149
90
|
if (steering === 'cancel') {
|
|
150
91
|
errors.push(`Cancelled at step ${step.id}`);
|
|
@@ -167,70 +108,6 @@ function executePlanSteps(plan, projectDir) {
|
|
|
167
108
|
}
|
|
168
109
|
return { success: errors.length === 0, filesModified: [...new Set(filesModified)], errors, stepsCompleted: completed, stepsTotal: steps.length };
|
|
169
110
|
}
|
|
170
|
-
function executeStep(step, projectDir) {
|
|
171
|
-
const args = step.args;
|
|
172
|
-
const file = args.file;
|
|
173
|
-
switch (step.operation) {
|
|
174
|
-
case 'write-file':
|
|
175
|
-
case 'create-workflow':
|
|
176
|
-
case 'modify-source':
|
|
177
|
-
case 'implement-node': {
|
|
178
|
-
const filePath = path.resolve(projectDir, file);
|
|
179
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
180
|
-
fs.writeFileSync(filePath, args.content ?? args.body ?? '', 'utf-8');
|
|
181
|
-
return { file: filePath };
|
|
182
|
-
}
|
|
183
|
-
case 'compile':
|
|
184
|
-
execSync(`flow-weaver compile "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
185
|
-
return { file: file };
|
|
186
|
-
case 'validate':
|
|
187
|
-
execSync(`flow-weaver validate "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
188
|
-
return {};
|
|
189
|
-
case 'add-node':
|
|
190
|
-
execSync(`flow-weaver modify addNode --file "${file}" --nodeId "${args.nodeId}" --nodeType "${args.nodeType}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
191
|
-
return { file: file };
|
|
192
|
-
case 'remove-node':
|
|
193
|
-
execSync(`flow-weaver modify removeNode --file "${file}" --nodeId "${args.nodeId}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
194
|
-
return { file: file };
|
|
195
|
-
case 'add-connection':
|
|
196
|
-
execSync(`flow-weaver modify addConnection --file "${file}" --from "${args.from}" --to "${args.to}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
197
|
-
return { file: file };
|
|
198
|
-
case 'remove-connection':
|
|
199
|
-
execSync(`flow-weaver modify removeConnection --file "${file}" --from "${args.from}" --to "${args.to}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
200
|
-
return { file: file };
|
|
201
|
-
case 'scaffold':
|
|
202
|
-
execSync(`flow-weaver create workflow "${args.template}" "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
203
|
-
return { file: file };
|
|
204
|
-
case 'read-file':
|
|
205
|
-
return {};
|
|
206
|
-
case 'run-cli': {
|
|
207
|
-
const cmd = args.command;
|
|
208
|
-
const cliArgs = args.args?.join(' ') ?? '';
|
|
209
|
-
execSync(`flow-weaver ${cmd} ${cliArgs}`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
210
|
-
return {};
|
|
211
|
-
}
|
|
212
|
-
default:
|
|
213
|
-
throw new Error(`Unknown operation: ${step.operation}`);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function validateFiles(files, projectDir) {
|
|
217
|
-
const results = [];
|
|
218
|
-
for (const file of files) {
|
|
219
|
-
if (!file.endsWith('.ts'))
|
|
220
|
-
continue;
|
|
221
|
-
try {
|
|
222
|
-
execSync(`flow-weaver validate "${file}"`, {
|
|
223
|
-
cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000,
|
|
224
|
-
});
|
|
225
|
-
results.push({ file, valid: true, errors: [], warnings: [] });
|
|
226
|
-
}
|
|
227
|
-
catch (err) {
|
|
228
|
-
const msg = err instanceof Error ? err.stderr ?? err.message : String(err);
|
|
229
|
-
results.push({ file, valid: false, errors: [msg], warnings: [] });
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
return results;
|
|
233
|
-
}
|
|
234
111
|
function checkSteeringSignal() {
|
|
235
112
|
try {
|
|
236
113
|
const controlPath = path.join(os.homedir(), '.weaver', 'control.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-validate-retry.js","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exec-validate-retry.js","sourceRoot":"","sources":["../../src/node-types/exec-validate-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
+
import type { WeaverEnv } from '../bot/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Executes plan steps via the flow-weaver CLI. Checks steering
|
|
3
4
|
* between steps.
|
|
4
5
|
*
|
|
5
6
|
* @flowWeaver nodeType
|
|
6
7
|
* @label Execute Plan
|
|
7
|
-
* @input
|
|
8
|
-
* @input
|
|
9
|
-
* @input
|
|
10
|
-
* @
|
|
11
|
-
* @
|
|
12
|
-
* @
|
|
13
|
-
* @output
|
|
14
|
-
* @output config [order:1] - Config (pass-through)
|
|
15
|
-
* @output providerType [order:2] - Provider type (pass-through)
|
|
16
|
-
* @output providerInfo [order:3] - Provider info (pass-through)
|
|
17
|
-
* @output executionResultJson [order:4] - Execution result (JSON)
|
|
18
|
-
* @output taskJson [order:5] - Task (pass-through)
|
|
19
|
-
* @output filesModified [order:6] - Files modified (JSON array)
|
|
8
|
+
* @input env [order:0] - Weaver environment bundle
|
|
9
|
+
* @input planJson [order:1] - Plan (JSON)
|
|
10
|
+
* @input taskJson [order:2] - Task (JSON)
|
|
11
|
+
* @output env [order:0] - Weaver environment bundle (pass-through)
|
|
12
|
+
* @output executionResultJson [order:1] - Execution result (JSON)
|
|
13
|
+
* @output taskJson [order:2] - Task (pass-through)
|
|
14
|
+
* @output filesModified [order:3] - Files modified (JSON array)
|
|
20
15
|
* @output onSuccess [order:-2] - On Success
|
|
21
16
|
* @output onFailure [order:-1] - On Failure
|
|
22
17
|
*/
|
|
23
|
-
export declare function weaverExecutePlan(execute: boolean,
|
|
18
|
+
export declare function weaverExecutePlan(execute: boolean, env: WeaverEnv, planJson: string, taskJson: string): Promise<{
|
|
24
19
|
onSuccess: boolean;
|
|
25
20
|
onFailure: boolean;
|
|
26
|
-
|
|
27
|
-
config: string;
|
|
28
|
-
providerType: string;
|
|
29
|
-
providerInfo: string;
|
|
21
|
+
env: WeaverEnv;
|
|
30
22
|
executionResultJson: string;
|
|
31
23
|
taskJson: string;
|
|
32
24
|
filesModified: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-plan.d.ts","sourceRoot":"","sources":["../../src/node-types/execute-plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execute-plan.d.ts","sourceRoot":"","sources":["../../src/node-types/execute-plan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;CACtE,CAAC,CAiED"}
|
|
@@ -1,55 +1,47 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
1
|
import * as fs from 'node:fs';
|
|
3
2
|
import * as path from 'node:path';
|
|
4
3
|
import * as os from 'node:os';
|
|
4
|
+
import { executeStep } from '../bot/step-executor.js';
|
|
5
5
|
/**
|
|
6
6
|
* Executes plan steps via the flow-weaver CLI. Checks steering
|
|
7
7
|
* between steps.
|
|
8
8
|
*
|
|
9
9
|
* @flowWeaver nodeType
|
|
10
10
|
* @label Execute Plan
|
|
11
|
-
* @input
|
|
12
|
-
* @input
|
|
13
|
-
* @input
|
|
14
|
-
* @
|
|
15
|
-
* @
|
|
16
|
-
* @
|
|
17
|
-
* @output
|
|
18
|
-
* @output config [order:1] - Config (pass-through)
|
|
19
|
-
* @output providerType [order:2] - Provider type (pass-through)
|
|
20
|
-
* @output providerInfo [order:3] - Provider info (pass-through)
|
|
21
|
-
* @output executionResultJson [order:4] - Execution result (JSON)
|
|
22
|
-
* @output taskJson [order:5] - Task (pass-through)
|
|
23
|
-
* @output filesModified [order:6] - Files modified (JSON array)
|
|
11
|
+
* @input env [order:0] - Weaver environment bundle
|
|
12
|
+
* @input planJson [order:1] - Plan (JSON)
|
|
13
|
+
* @input taskJson [order:2] - Task (JSON)
|
|
14
|
+
* @output env [order:0] - Weaver environment bundle (pass-through)
|
|
15
|
+
* @output executionResultJson [order:1] - Execution result (JSON)
|
|
16
|
+
* @output taskJson [order:2] - Task (pass-through)
|
|
17
|
+
* @output filesModified [order:3] - Files modified (JSON array)
|
|
24
18
|
* @output onSuccess [order:-2] - On Success
|
|
25
19
|
* @output onFailure [order:-1] - On Failure
|
|
26
20
|
*/
|
|
27
|
-
export async function weaverExecutePlan(execute,
|
|
28
|
-
const passthrough = { projectDir, config, providerType, providerInfo, taskJson };
|
|
21
|
+
export async function weaverExecutePlan(execute, env, planJson, taskJson) {
|
|
29
22
|
if (!execute) {
|
|
30
23
|
return {
|
|
31
|
-
onSuccess: true, onFailure: false,
|
|
24
|
+
onSuccess: true, onFailure: false, env, taskJson,
|
|
32
25
|
executionResultJson: JSON.stringify({ success: true, stepsCompleted: 0, stepsTotal: 0, filesModified: [], filesCreated: [], errors: [], output: 'dry run' }),
|
|
33
26
|
filesModified: '[]',
|
|
34
27
|
};
|
|
35
28
|
}
|
|
29
|
+
const { projectDir } = env;
|
|
36
30
|
const plan = JSON.parse(planJson);
|
|
37
31
|
const filesModified = [];
|
|
38
32
|
const filesCreated = [];
|
|
39
33
|
const errors = [];
|
|
40
34
|
const output = [];
|
|
41
35
|
let completed = 0;
|
|
42
|
-
// Check steering before starting
|
|
43
36
|
const steeringCheck = checkSteering();
|
|
44
37
|
if (steeringCheck === 'cancel') {
|
|
45
38
|
return {
|
|
46
|
-
onSuccess: false, onFailure: true,
|
|
39
|
+
onSuccess: false, onFailure: true, env, taskJson,
|
|
47
40
|
executionResultJson: JSON.stringify({ success: false, stepsCompleted: 0, stepsTotal: plan.steps.length, filesModified: [], filesCreated: [], errors: ['Cancelled via steering'], output: '' }),
|
|
48
41
|
filesModified: '[]',
|
|
49
42
|
};
|
|
50
43
|
}
|
|
51
44
|
for (const step of plan.steps) {
|
|
52
|
-
// Check steering between steps
|
|
53
45
|
const steering = checkSteering();
|
|
54
46
|
if (steering === 'cancel') {
|
|
55
47
|
output.push(`Cancelled at step ${step.id}`);
|
|
@@ -81,7 +73,7 @@ export async function weaverExecutePlan(execute, projectDir, config, providerTyp
|
|
|
81
73
|
const allFiles = [...new Set([...filesModified, ...filesCreated])];
|
|
82
74
|
const success = errors.length === 0;
|
|
83
75
|
return {
|
|
84
|
-
onSuccess: success, onFailure: !success,
|
|
76
|
+
onSuccess: success, onFailure: !success, env, taskJson,
|
|
85
77
|
executionResultJson: JSON.stringify({
|
|
86
78
|
success, stepsCompleted: completed, stepsTotal: plan.steps.length,
|
|
87
79
|
filesModified, filesCreated, errors, output: output.join('\n'),
|
|
@@ -89,53 +81,6 @@ export async function weaverExecutePlan(execute, projectDir, config, providerTyp
|
|
|
89
81
|
filesModified: JSON.stringify(allFiles),
|
|
90
82
|
};
|
|
91
83
|
}
|
|
92
|
-
function executeStep(step, projectDir) {
|
|
93
|
-
const args = step.args;
|
|
94
|
-
const file = args.file;
|
|
95
|
-
switch (step.operation) {
|
|
96
|
-
case 'write-file':
|
|
97
|
-
case 'create-workflow':
|
|
98
|
-
case 'modify-source':
|
|
99
|
-
case 'implement-node': {
|
|
100
|
-
const filePath = path.resolve(projectDir, file);
|
|
101
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
102
|
-
const existed = fs.existsSync(filePath);
|
|
103
|
-
fs.writeFileSync(filePath, args.content ?? args.body ?? '', 'utf-8');
|
|
104
|
-
return { file: filePath, created: !existed };
|
|
105
|
-
}
|
|
106
|
-
case 'compile':
|
|
107
|
-
execSync(`flow-weaver compile "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
108
|
-
return { file: file };
|
|
109
|
-
case 'validate':
|
|
110
|
-
execSync(`flow-weaver validate "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
111
|
-
return {};
|
|
112
|
-
case 'add-node':
|
|
113
|
-
execSync(`flow-weaver modify addNode --file "${file}" --nodeId "${args.nodeId}" --nodeType "${args.nodeType}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
114
|
-
return { file: file };
|
|
115
|
-
case 'remove-node':
|
|
116
|
-
execSync(`flow-weaver modify removeNode --file "${file}" --nodeId "${args.nodeId}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
117
|
-
return { file: file };
|
|
118
|
-
case 'add-connection':
|
|
119
|
-
execSync(`flow-weaver modify addConnection --file "${file}" --from "${args.from}" --to "${args.to}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
120
|
-
return { file: file };
|
|
121
|
-
case 'remove-connection':
|
|
122
|
-
execSync(`flow-weaver modify removeConnection --file "${file}" --from "${args.from}" --to "${args.to}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
123
|
-
return { file: file };
|
|
124
|
-
case 'scaffold':
|
|
125
|
-
execSync(`flow-weaver create workflow "${args.template}" "${file}"`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
126
|
-
return { file: file, created: true };
|
|
127
|
-
case 'read-file':
|
|
128
|
-
return {};
|
|
129
|
-
case 'run-cli': {
|
|
130
|
-
const cmd = args.command;
|
|
131
|
-
const cliArgs = args.args?.join(' ') ?? '';
|
|
132
|
-
execSync(`flow-weaver ${cmd} ${cliArgs}`, { cwd: projectDir, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 30_000 });
|
|
133
|
-
return {};
|
|
134
|
-
}
|
|
135
|
-
default:
|
|
136
|
-
throw new Error(`Unknown operation: ${step.operation}`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
84
|
function checkSteering() {
|
|
140
85
|
try {
|
|
141
86
|
const controlPath = path.join(os.homedir(), '.weaver', 'control.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-plan.js","sourceRoot":"","sources":["../../src/node-types/execute-plan.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"execute-plan.js","sourceRoot":"","sources":["../../src/node-types/execute-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,24 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @flowWeaver nodeType
|
|
5
5
|
* @label Execute Target
|
|
6
|
-
* @input
|
|
7
|
-
* @
|
|
8
|
-
* @input providerType [order:2] - Provider type
|
|
9
|
-
* @input providerInfo [order:3] - Provider info (JSON)
|
|
10
|
-
* @input targetPath [order:4] - Absolute path to target workflow
|
|
11
|
-
* @output projectDir [order:0] - Project root directory (pass-through)
|
|
12
|
-
* @output config [order:1] - Config (pass-through)
|
|
13
|
-
* @output targetPath [order:2] - Target path (pass-through)
|
|
14
|
-
* @output resultJson [order:3] - Workflow execution result (JSON)
|
|
6
|
+
* @input ctx [order:0] - Weaver context (JSON)
|
|
7
|
+
* @output ctx [order:0] - Weaver context with resultJson (JSON)
|
|
15
8
|
* @output onSuccess [order:-2] - On Success
|
|
16
|
-
* @output onFailure [order:-1] - On Failure
|
|
9
|
+
* @output onFailure [order:-1] [hidden] - On Failure
|
|
17
10
|
*/
|
|
18
|
-
export declare function weaverExecuteTarget(execute: boolean,
|
|
11
|
+
export declare function weaverExecuteTarget(execute: boolean, ctx: string): Promise<{
|
|
19
12
|
onSuccess: boolean;
|
|
20
13
|
onFailure: boolean;
|
|
21
|
-
|
|
22
|
-
config: string;
|
|
23
|
-
targetPath: string;
|
|
24
|
-
resultJson: string;
|
|
14
|
+
ctx: string;
|
|
25
15
|
}>;
|
|
26
16
|
//# sourceMappingURL=execute-target.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-target.d.ts","sourceRoot":"","sources":["../../src/node-types/execute-target.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execute-target.d.ts","sourceRoot":"","sources":["../../src/node-types/execute-target.ts"],"names":[],"mappings":"AAgJA;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA0GD"}
|
|
@@ -1,58 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function callCli(provider, prompt) {
|
|
3
|
-
if (provider === 'claude-cli') {
|
|
4
|
-
return execSync('claude -p --output-format text', {
|
|
5
|
-
input: prompt,
|
|
6
|
-
encoding: 'utf-8',
|
|
7
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
8
|
-
timeout: 120_000,
|
|
9
|
-
}).trim();
|
|
10
|
-
}
|
|
11
|
-
if (provider === 'copilot-cli') {
|
|
12
|
-
return execSync('copilot -p --silent --allow-all-tools', {
|
|
13
|
-
input: prompt,
|
|
14
|
-
encoding: 'utf-8',
|
|
15
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
-
timeout: 120_000,
|
|
17
|
-
}).trim();
|
|
18
|
-
}
|
|
19
|
-
throw new Error(`Unknown CLI provider: ${provider}`);
|
|
20
|
-
}
|
|
21
|
-
async function callApiAsync(apiKey, model, maxTokens, systemPrompt, userPrompt) {
|
|
22
|
-
const body = JSON.stringify({
|
|
23
|
-
model, max_tokens: maxTokens, system: systemPrompt,
|
|
24
|
-
messages: [{ role: 'user', content: userPrompt }],
|
|
25
|
-
});
|
|
26
|
-
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
27
|
-
method: 'POST',
|
|
28
|
-
headers: {
|
|
29
|
-
'x-api-key': apiKey,
|
|
30
|
-
'anthropic-version': '2023-06-01',
|
|
31
|
-
'content-type': 'application/json',
|
|
32
|
-
},
|
|
33
|
-
body,
|
|
34
|
-
});
|
|
35
|
-
if (!response.ok) {
|
|
36
|
-
const text = await response.text();
|
|
37
|
-
throw new Error(`Anthropic API error ${response.status}: ${text.slice(0, 200)}`);
|
|
38
|
-
}
|
|
39
|
-
const json = await response.json();
|
|
40
|
-
return json.content[0]?.text ?? '';
|
|
41
|
-
}
|
|
42
|
-
function parseJsonResponse(text) {
|
|
43
|
-
let cleaned = text.trim();
|
|
44
|
-
if (cleaned.startsWith('```')) {
|
|
45
|
-
cleaned = cleaned.replace(/^```(?:json)?\s*\n?/, '').replace(/\n?```\s*$/, '');
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
return JSON.parse(cleaned);
|
|
49
|
-
}
|
|
50
|
-
catch { /* fallthrough */ }
|
|
51
|
-
const match = cleaned.match(/\{[\s\S]*\}/);
|
|
52
|
-
if (match)
|
|
53
|
-
return JSON.parse(match[0]);
|
|
54
|
-
throw new Error(`Failed to parse AI response as JSON: ${text.slice(0, 200)}`);
|
|
55
|
-
}
|
|
1
|
+
import { callCli, callApi, parseJsonResponse } from '../bot/ai-client.js';
|
|
56
2
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
3
|
async function buildWeaverPrompt() {
|
|
58
4
|
const FALLBACK = 'You are Weaver, an expert AI companion for Flow Weaver workflows. Respond ONLY with valid JSON. No markdown, no code fences, no explanation outside the JSON structure.';
|
|
@@ -196,30 +142,22 @@ Return ONLY valid JSON. No markdown, no code fences, no explanation outside the
|
|
|
196
142
|
*
|
|
197
143
|
* @flowWeaver nodeType
|
|
198
144
|
* @label Execute Target
|
|
199
|
-
* @input
|
|
200
|
-
* @
|
|
201
|
-
* @input providerType [order:2] - Provider type
|
|
202
|
-
* @input providerInfo [order:3] - Provider info (JSON)
|
|
203
|
-
* @input targetPath [order:4] - Absolute path to target workflow
|
|
204
|
-
* @output projectDir [order:0] - Project root directory (pass-through)
|
|
205
|
-
* @output config [order:1] - Config (pass-through)
|
|
206
|
-
* @output targetPath [order:2] - Target path (pass-through)
|
|
207
|
-
* @output resultJson [order:3] - Workflow execution result (JSON)
|
|
145
|
+
* @input ctx [order:0] - Weaver context (JSON)
|
|
146
|
+
* @output ctx [order:0] - Weaver context with resultJson (JSON)
|
|
208
147
|
* @output onSuccess [order:-2] - On Success
|
|
209
|
-
* @output onFailure [order:-1] - On Failure
|
|
148
|
+
* @output onFailure [order:-1] [hidden] - On Failure
|
|
210
149
|
*/
|
|
211
|
-
export async function weaverExecuteTarget(execute,
|
|
150
|
+
export async function weaverExecuteTarget(execute, ctx) {
|
|
151
|
+
const context = JSON.parse(ctx);
|
|
152
|
+
const { env } = context;
|
|
153
|
+
const targetPath = context.targetPath;
|
|
212
154
|
if (!execute) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
projectDir, config, targetPath,
|
|
216
|
-
resultJson: JSON.stringify({ success: true, summary: 'Dry run', outcome: 'skipped' }),
|
|
217
|
-
};
|
|
155
|
+
context.resultJson = JSON.stringify({ success: true, summary: 'Dry run', outcome: 'skipped' });
|
|
156
|
+
return { onSuccess: true, onFailure: false, ctx: JSON.stringify(context) };
|
|
218
157
|
}
|
|
219
|
-
const pInfo =
|
|
220
|
-
const cfg = JSON.parse(config);
|
|
158
|
+
const { config, providerInfo: pInfo } = env;
|
|
221
159
|
const systemPrompt = await buildWeaverPrompt();
|
|
222
|
-
const approvalSetting =
|
|
160
|
+
const approvalSetting = config.approval ?? 'auto';
|
|
223
161
|
const approvalMode = typeof approvalSetting === 'string' ? approvalSetting : approvalSetting.mode;
|
|
224
162
|
const agentChannel = {
|
|
225
163
|
request: async (req) => {
|
|
@@ -242,7 +180,7 @@ export async function weaverExecuteTarget(execute, projectDir, config, providerT
|
|
|
242
180
|
const userPrompt = `Context:\n${contextStr}\n\nInstructions:\n${req.prompt}`;
|
|
243
181
|
let text;
|
|
244
182
|
if (pInfo.type === 'anthropic') {
|
|
245
|
-
text = await
|
|
183
|
+
text = await callApi(pInfo.apiKey, pInfo.model ?? 'claude-sonnet-4-6', pInfo.maxTokens ?? 4096, systemPrompt, userPrompt);
|
|
246
184
|
}
|
|
247
185
|
else {
|
|
248
186
|
text = callCli(pInfo.type, systemPrompt + '\n\n' + userPrompt);
|
|
@@ -293,20 +231,14 @@ export async function weaverExecuteTarget(execute, projectDir, config, providerT
|
|
|
293
231
|
functionName: execResult.functionName,
|
|
294
232
|
executionTime: Number(elapsed),
|
|
295
233
|
};
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
projectDir, config, targetPath,
|
|
299
|
-
resultJson: JSON.stringify(resultObj),
|
|
300
|
-
};
|
|
234
|
+
context.resultJson = JSON.stringify(resultObj);
|
|
235
|
+
return { onSuccess: ok, onFailure: !ok, ctx: JSON.stringify(context) };
|
|
301
236
|
}
|
|
302
237
|
catch (err) {
|
|
303
238
|
const msg = err instanceof Error ? err.message : String(err);
|
|
304
239
|
console.log(`\x1b[33m! Error: ${msg}\x1b[0m`);
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
projectDir, config, targetPath,
|
|
308
|
-
resultJson: JSON.stringify({ success: false, summary: msg, outcome: 'error' }),
|
|
309
|
-
};
|
|
240
|
+
context.resultJson = JSON.stringify({ success: false, summary: msg, outcome: 'error' });
|
|
241
|
+
return { onSuccess: false, onFailure: true, ctx: JSON.stringify(context) };
|
|
310
242
|
}
|
|
311
243
|
}
|
|
312
244
|
//# sourceMappingURL=execute-target.js.map
|