@synergenius/flow-weaver-pack-weaver 0.8.1 → 0.8.3

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/LICENSE CHANGED
@@ -37,6 +37,9 @@ Never permitted:
37
37
  Remove or circumvent license keys Applies to software and derivatives
38
38
  Remove licensing or copyright notices Must always be retained
39
39
  Strip license key checks from forks Derivatives must retain protections
40
+ Reverse-engineer to build replacements Manual, automated, or AI-assisted
41
+ Use as AI/ML input to replicate features Training, prompting, or code generation
42
+ Extract specs for third-party cloning Indirect circumvention via intermediaries
40
43
 
41
44
  ---
42
45
 
@@ -81,6 +84,26 @@ mechanisms, and licensing notices present in the original software. Distributing
81
84
  derivative works with license key protections removed, disabled, or bypassed
82
85
  constitutes a violation of this license.
83
86
 
87
+ You may not use any part of the software, including but not limited to its
88
+ source code, test suites, documentation, specifications, observable behavior,
89
+ inputs, outputs, or error messages, to develop, train, fine-tune, prompt, or
90
+ otherwise assist in the creation of software that replicates, reimplements, or
91
+ substitutes for any functionality of the software. This restriction applies
92
+ whether the development is performed manually, through automated tools, or
93
+ through artificial intelligence or machine learning systems, and regardless of
94
+ whether the resulting software contains any code from the original.
95
+
96
+ You may not use any part of the software as input to any artificial intelligence,
97
+ machine learning, or large language model system for the purpose of generating,
98
+ synthesizing, or deriving source code, algorithms, data structures, or
99
+ architectures that replicate or approximate the functionality of the software.
100
+
101
+ You may not circumvent the limitations in this license through indirect means,
102
+ including but not limited to extracting specifications, behavioral descriptions,
103
+ or functional requirements from the software and providing them to third parties
104
+ or automated systems for the purpose of developing competing or functionally
105
+ equivalent software.
106
+
84
107
  You may not alter, remove, or obscure any licensing, copyright, or other notices
85
108
  of the licensor in the software. Any use of the licensor's trademarks is subject
86
109
  to applicable law.
@@ -1,26 +1,20 @@
1
- # Weaver Configuration Reference
1
+ # Weaver Bot Configuration Reference
2
2
 
3
- Weaver is a Flow Weaver workflow template that runs any other workflow autonomously. It auto-detects AI providers, resolves the target workflow, executes it with an agent channel, and sends notifications.
3
+ The weaver bot runs workflows, executes tasks from natural language, and evolves autonomously. It auto-detects AI providers, manages approval gates, handles git operations, and sends notifications.
4
4
 
5
- Weaver has deep knowledge of the full flow-weaver ecosystem: annotation grammar, CLI tools, node patterns, error diagnosis, and the genesis protocol (loaded dynamically from `@synergenius/flow-weaver/doc-metadata`).
5
+ The bot has deep knowledge of the full flow-weaver ecosystem: annotation grammar, CLI tools, node patterns, error diagnosis, and the genesis protocol (loaded dynamically from `@synergenius/flow-weaver/doc-metadata`).
6
6
 
7
7
  ## Getting started
8
8
 
9
- Scaffold via `flow-weaver init` and select the "AI Workflow Runner" use case, or use it programmatically:
10
-
11
- ```typescript
12
- import { weaverTemplate } from '@synergenius/flowweaver-pack-weaver/templates';
13
- const source = weaverTemplate.generate({ projectDir: '.' });
14
- ```
15
-
16
- Then compile and run:
9
+ Run the bot directly via CLI:
17
10
 
18
11
  ```bash
19
- flow-weaver compile weaver.ts
20
- tsx weaver.ts
12
+ flow-weaver weaver bot "Create a workflow that processes CSV files"
13
+ flow-weaver weaver run my-workflow.ts
14
+ flow-weaver weaver session
21
15
  ```
22
16
 
23
- Or run via MCP: `fw_execute_workflow` pointing at the compiled `weaver.ts`.
17
+ Or scaffold a project via `flow-weaver init` and select the "AI Workflow Runner" use case.
24
18
 
25
19
  ## .weaver.json
26
20
 
@@ -127,7 +121,7 @@ import {
127
121
  detectProvider,
128
122
  runWorkflow,
129
123
  BotAgentChannel,
130
- } from '@synergenius/flowweaver-pack-weaver';
124
+ } from '@synergenius/flow-weaver-pack-weaver';
131
125
 
132
126
  // Auto-detect and run
133
127
  const result = await runWorkflow('path/to/workflow.ts', { verbose: true });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifestVersion": 1,
3
3
  "name": "@synergenius/flow-weaver-pack-weaver",
4
- "version": "0.8.1",
4
+ "version": "0.8.3",
5
5
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
6
6
  "engineVersion": ">=0.19.4",
7
7
  "categories": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synergenius/flow-weaver-pack-weaver",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,8 +20,8 @@
20
20
  }
21
21
  },
22
22
  "keywords": [
23
- "flowweaver-marketplace-pack",
24
- "flowweaver-bot-pack",
23
+ "flow-weaver-marketplace-pack",
24
+ "flow-weaver-bot-pack",
25
25
  "flow-weaver",
26
26
  "weaver",
27
27
  "automation",
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js DELETED
@@ -1,749 +0,0 @@
1
- #!/usr/bin/env node
2
- import * as path from 'node:path';
3
- import { runWorkflow } from './bot/runner.js';
4
- import { RunStore } from './bot/run-store.js';
5
- import { CostStore } from './bot/cost-store.js';
6
- import { defaultRegistry, discoverProviders } from './bot/provider-registry.js';
7
- import { WatchDaemon } from './bot/watch-daemon.js';
8
- import { PipelineRunner } from './bot/pipeline-runner.js';
9
- import { DashboardServer } from './bot/dashboard.js';
10
- import { openBrowser } from './bot/utils.js';
11
- const HELP = `
12
- weaver - Autonomous workflow runner for Flow Weaver
13
-
14
- Usage:
15
- weaver <file> Run a workflow file
16
- weaver run <file> Same as above
17
- weaver history List recent runs
18
- weaver history <id> Show details of a specific run
19
- weaver costs Show cost summary
20
- weaver watch <file> Watch file, re-run on change
21
- weaver cron "<schedule>" <file> Run on cron schedule
22
- weaver pipeline <config.json> Run multi-stage pipeline
23
- weaver dashboard [file] Start live dashboard (optionally run file)
24
- weaver providers List available providers
25
- weaver --help Show this help
26
-
27
- Options:
28
- -v, --verbose Show detailed execution info
29
- -n, --dry-run Preview without executing
30
- -p, --params <json> Input parameters as JSON
31
- -c, --config <path> Path to .weaver.json config
32
- --quiet Suppress progress output
33
- --version Show version
34
- --dashboard Enable live dashboard for run
35
- --port <number> Dashboard port (default 4242)
36
- --open Auto-open browser
37
- --approval <mode> Override approval mode
38
-
39
- Watch/Cron options:
40
- --cron "<schedule>" Add cron trigger to watch mode
41
- --debounce <ms> File watch debounce (default 500)
42
- --log <path> Write output to log file
43
-
44
- Pipeline options:
45
- --stage <id> Run single stage + its dependencies
46
-
47
- History options:
48
- --limit <n> Number of entries (default: 20)
49
- --outcome <type> Filter: completed|failed|error|skipped
50
- --workflow <path> Filter by workflow file
51
- --since <date> Show runs after date (ISO-8601)
52
- --json JSON output
53
- --prune Prune old entries (keep 500, 90 days)
54
- --clear Delete all history
55
-
56
- Cost options:
57
- --since <duration|date> Filter: 7d, 30d, or ISO-8601 date
58
- --model <name> Filter by model
59
-
60
- Examples:
61
- weaver my-workflow.ts
62
- weaver run pipeline.ts --verbose --params '{"env":"prod"}'
63
- weaver watch my-workflow.ts --cron "*/5 * * * *"
64
- weaver pipeline deploy.json --stage test
65
- weaver history --outcome failed --limit 10
66
- weaver costs --since 7d
67
- `.trim();
68
- function parseArgs(argv) {
69
- const result = {
70
- command: 'run',
71
- file: undefined,
72
- verbose: false,
73
- dryRun: false,
74
- quiet: false,
75
- params: undefined,
76
- configPath: undefined,
77
- showHelp: false,
78
- showVersion: false,
79
- historyLimit: 20,
80
- historyJson: false,
81
- historyPrune: false,
82
- historyClear: false,
83
- debounceMs: 500,
84
- dashboard: false,
85
- dashboardPort: 4242,
86
- dashboardOpen: false,
87
- };
88
- const args = argv.slice(2);
89
- let i = 0;
90
- while (i < args.length) {
91
- const arg = args[i];
92
- if (arg === '--help' || arg === '-h') {
93
- result.showHelp = true;
94
- }
95
- else if (arg === '--version') {
96
- result.showVersion = true;
97
- }
98
- else if (arg === '--verbose' || arg === '-v') {
99
- result.verbose = true;
100
- }
101
- else if (arg === '--dry-run' || arg === '-n') {
102
- result.dryRun = true;
103
- }
104
- else if (arg === '--quiet') {
105
- result.quiet = true;
106
- }
107
- else if ((arg === '--params' || arg === '-p') && i + 1 < args.length) {
108
- i++;
109
- try {
110
- result.params = JSON.parse(args[i]);
111
- }
112
- catch {
113
- console.error(`[weaver] Invalid JSON for --params: ${args[i]}`);
114
- process.exit(1);
115
- }
116
- }
117
- else if ((arg === '--config' || arg === '-c') && i + 1 < args.length) {
118
- i++;
119
- result.configPath = args[i];
120
- }
121
- else if (arg === '--limit' && i + 1 < args.length) {
122
- i++;
123
- result.historyLimit = parseInt(args[i], 10) || 20;
124
- }
125
- else if (arg === '--outcome' && i + 1 < args.length) {
126
- i++;
127
- result.historyOutcome = args[i];
128
- }
129
- else if (arg === '--workflow' && i + 1 < args.length) {
130
- i++;
131
- result.historyWorkflow = args[i];
132
- }
133
- else if (arg === '--since' && i + 1 < args.length) {
134
- i++;
135
- if (result.command === 'costs') {
136
- result.costsSince = args[i];
137
- }
138
- else {
139
- result.historySince = args[i];
140
- }
141
- }
142
- else if (arg === '--model' && i + 1 < args.length) {
143
- i++;
144
- result.costsModel = args[i];
145
- }
146
- else if (arg === '--json') {
147
- result.historyJson = true;
148
- }
149
- else if (arg === '--prune') {
150
- result.historyPrune = true;
151
- }
152
- else if (arg === '--clear') {
153
- result.historyClear = true;
154
- }
155
- else if (arg === 'history') {
156
- result.command = 'history';
157
- }
158
- else if (arg === 'costs') {
159
- result.command = 'costs';
160
- }
161
- else if (arg === 'providers') {
162
- result.command = 'providers';
163
- }
164
- else if (arg === 'watch') {
165
- result.command = 'watch';
166
- }
167
- else if (arg === 'cron') {
168
- result.command = 'cron';
169
- // Next arg is the schedule
170
- if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
171
- i++;
172
- result.cronSchedule = args[i];
173
- }
174
- }
175
- else if (arg === 'pipeline') {
176
- result.command = 'pipeline';
177
- }
178
- else if (arg === '--cron' && i + 1 < args.length) {
179
- i++;
180
- result.cronSchedule = args[i];
181
- }
182
- else if (arg === '--debounce' && i + 1 < args.length) {
183
- i++;
184
- result.debounceMs = parseInt(args[i], 10) || 500;
185
- }
186
- else if (arg === '--log' && i + 1 < args.length) {
187
- i++;
188
- result.logFile = args[i];
189
- }
190
- else if (arg === '--stage' && i + 1 < args.length) {
191
- i++;
192
- result.pipelineStage = args[i];
193
- }
194
- else if (arg === '--dashboard') {
195
- result.dashboard = true;
196
- }
197
- else if (arg === '--port' && i + 1 < args.length) {
198
- i++;
199
- result.dashboardPort = parseInt(args[i], 10) || 4242;
200
- }
201
- else if (arg === '--open') {
202
- result.dashboardOpen = true;
203
- }
204
- else if (arg === '--approval' && i + 1 < args.length) {
205
- i++;
206
- result.approvalMode = args[i];
207
- }
208
- else if (arg === 'dashboard') {
209
- result.command = 'dashboard';
210
- result.dashboard = true;
211
- }
212
- else if (arg === 'run') {
213
- // skip, next arg is the file
214
- }
215
- else if (!arg.startsWith('-')) {
216
- if (result.command === 'history' && !result.file) {
217
- result.historyId = arg;
218
- }
219
- else {
220
- result.file = arg;
221
- }
222
- }
223
- else {
224
- console.error(`[weaver] Unknown option: ${arg}`);
225
- console.error('Run "weaver --help" for usage');
226
- process.exit(1);
227
- }
228
- i++;
229
- }
230
- return result;
231
- }
232
- function formatDuration(ms) {
233
- if (ms < 1000)
234
- return `${ms}ms`;
235
- return `${(ms / 1000).toFixed(1)}s`;
236
- }
237
- const STATUS_ICONS = {
238
- 'node-start': '\x1b[36m>\x1b[0m',
239
- 'node-complete': '\x1b[32m+\x1b[0m',
240
- 'node-error': '\x1b[31mx\x1b[0m',
241
- };
242
- const OUTCOME_COLORS = {
243
- completed: '\x1b[32m',
244
- failed: '\x1b[31m',
245
- error: '\x1b[31m',
246
- skipped: '\x1b[33m',
247
- };
248
- const RESET = '\x1b[0m';
249
- // --- History ---
250
- function printRunTable(records) {
251
- console.log('ID'.padEnd(10) +
252
- 'OUTCOME'.padEnd(12) +
253
- 'DURATION'.padEnd(10) +
254
- 'WORKFLOW'.padEnd(24) +
255
- 'STARTED');
256
- for (const r of records) {
257
- const id = r.id.slice(0, 8);
258
- const color = OUTCOME_COLORS[r.outcome] ?? '';
259
- const outcome = `${color}${r.outcome}${RESET}`;
260
- const duration = formatDuration(r.durationMs);
261
- const workflow = path.basename(r.workflowFile);
262
- const started = r.startedAt.replace('T', ' ').slice(0, 16);
263
- console.log(id.padEnd(10) +
264
- outcome.padEnd(12 + color.length + RESET.length) +
265
- duration.padEnd(10) +
266
- (workflow.length > 22 ? workflow.slice(0, 21) + '~' : workflow).padEnd(24) +
267
- started);
268
- }
269
- }
270
- function printRunDetail(r) {
271
- const outcomeColor = r.success ? '\x1b[32m' : '\x1b[31m';
272
- console.log(`\nRun ${r.id}\n`);
273
- console.log(` Workflow: ${r.workflowFile}`);
274
- if (r.functionName)
275
- console.log(` Function: ${r.functionName}`);
276
- console.log(` Outcome: ${outcomeColor}${r.outcome}${RESET} (${r.success ? 'success' : 'failure'})`);
277
- console.log(` Started: ${r.startedAt}`);
278
- console.log(` Finished: ${r.finishedAt}`);
279
- console.log(` Duration: ${formatDuration(r.durationMs)}`);
280
- if (r.executionTime !== undefined) {
281
- console.log(` Execution time: ${formatDuration(r.executionTime)}`);
282
- }
283
- if (r.provider)
284
- console.log(` Provider: ${r.provider}`);
285
- console.log(` Dry run: ${r.dryRun ? 'yes' : 'no'}`);
286
- console.log(` Summary: ${r.summary}`);
287
- if (r.params) {
288
- console.log(` Params: ${JSON.stringify(r.params)}`);
289
- }
290
- console.log('');
291
- }
292
- async function handleHistory(opts) {
293
- const store = new RunStore();
294
- if (opts.historyClear) {
295
- const deleted = store.clear();
296
- console.log(deleted ? 'History cleared.' : 'No history to clear.');
297
- return;
298
- }
299
- if (opts.historyPrune) {
300
- const pruned = store.prune({ maxRecords: 500, maxAgeDays: 90 });
301
- console.log(`Pruned ${pruned} record(s).`);
302
- return;
303
- }
304
- if (opts.historyId) {
305
- const record = store.get(opts.historyId);
306
- if (!record) {
307
- console.error(`[weaver] No run found matching "${opts.historyId}"`);
308
- process.exit(1);
309
- }
310
- if (opts.historyJson) {
311
- console.log(JSON.stringify(record, null, 2));
312
- }
313
- else {
314
- printRunDetail(record);
315
- }
316
- return;
317
- }
318
- const records = store.list({
319
- outcome: opts.historyOutcome,
320
- workflowFile: opts.historyWorkflow ? path.resolve(opts.historyWorkflow) : undefined,
321
- since: opts.historySince,
322
- limit: opts.historyLimit,
323
- });
324
- if (records.length === 0) {
325
- console.log('No runs recorded yet.');
326
- return;
327
- }
328
- if (opts.historyJson) {
329
- console.log(JSON.stringify(records, null, 2));
330
- }
331
- else {
332
- printRunTable(records);
333
- }
334
- }
335
- // --- Costs ---
336
- function parseSince(spec) {
337
- if (!spec)
338
- return undefined;
339
- const match = spec.match(/^(\d+)([dhm])$/);
340
- if (match) {
341
- const n = parseInt(match[1], 10);
342
- const unit = match[2];
343
- const ms = unit === 'd' ? n * 86_400_000 : unit === 'h' ? n * 3_600_000 : n * 60_000;
344
- return Date.now() - ms;
345
- }
346
- const ts = new Date(spec).getTime();
347
- return isNaN(ts) ? undefined : ts;
348
- }
349
- function formatCostTable(summary) {
350
- const lines = [];
351
- lines.push(`Weaver Cost Summary (${summary.totalRuns} runs)`);
352
- lines.push(`Total: ~$${summary.totalCost.toFixed(4)}`);
353
- lines.push(`Tokens: ${summary.totalInputTokens.toLocaleString()} in / ${summary.totalOutputTokens.toLocaleString()} out`);
354
- const models = Object.entries(summary.byModel);
355
- if (models.length > 0) {
356
- lines.push('');
357
- lines.push('By model:');
358
- for (const [model, data] of models) {
359
- lines.push(` ${model}: ${data.runs} runs, ~$${data.cost.toFixed(4)}, ${data.inputTokens.toLocaleString()} in / ${data.outputTokens.toLocaleString()} out`);
360
- }
361
- }
362
- return lines.join('\n');
363
- }
364
- function formatRunCost(cost) {
365
- const inp = cost.totalInputTokens.toLocaleString();
366
- const out = cost.totalOutputTokens.toLocaleString();
367
- const usd = cost.totalCost < 0.01
368
- ? `$${cost.totalCost.toFixed(4)}`
369
- : `$${cost.totalCost.toFixed(2)}`;
370
- return `tokens: ${inp} in / ${out} out | cost: ~${usd} (${cost.model})`;
371
- }
372
- async function handleCosts(opts) {
373
- const store = new CostStore();
374
- const sinceTs = parseSince(opts.costsSince);
375
- const summary = store.summarize({ since: sinceTs, model: opts.costsModel });
376
- if (summary.totalRuns === 0) {
377
- console.log('No cost data found.');
378
- return;
379
- }
380
- console.log(formatCostTable(summary));
381
- }
382
- async function loadConfig(configPath) {
383
- if (!configPath)
384
- return undefined;
385
- try {
386
- const { readFileSync } = await import('node:fs');
387
- return JSON.parse(readFileSync(path.resolve(configPath), 'utf-8'));
388
- }
389
- catch (err) {
390
- const msg = err instanceof Error ? err.message : String(err);
391
- console.error(`[weaver] Failed to read config: ${msg}`);
392
- process.exit(1);
393
- }
394
- }
395
- // --- Watch/Cron ---
396
- async function handleWatch(opts) {
397
- if (!opts.file) {
398
- console.error('[weaver] No workflow file specified for watch');
399
- process.exit(1);
400
- }
401
- const config = await loadConfig(opts.configPath);
402
- const daemon = new WatchDaemon({
403
- filePath: path.resolve(opts.file),
404
- watchFile: true,
405
- cron: opts.cronSchedule,
406
- debounceMs: opts.debounceMs,
407
- logFile: opts.logFile,
408
- verbose: opts.verbose,
409
- params: opts.params,
410
- config,
411
- quiet: opts.quiet,
412
- });
413
- await daemon.start();
414
- }
415
- async function handleCron(opts) {
416
- if (!opts.cronSchedule) {
417
- console.error('[weaver] No cron schedule specified');
418
- console.error('Usage: weaver cron "*/5 * * * *" <file>');
419
- process.exit(1);
420
- }
421
- if (!opts.file) {
422
- console.error('[weaver] No workflow file specified for cron');
423
- process.exit(1);
424
- }
425
- const config = await loadConfig(opts.configPath);
426
- const daemon = new WatchDaemon({
427
- filePath: path.resolve(opts.file),
428
- watchFile: false,
429
- cron: opts.cronSchedule,
430
- debounceMs: opts.debounceMs,
431
- logFile: opts.logFile,
432
- verbose: opts.verbose,
433
- params: opts.params,
434
- config,
435
- quiet: opts.quiet,
436
- });
437
- await daemon.start();
438
- }
439
- // --- Pipeline ---
440
- const STAGE_ICONS = {
441
- running: '\x1b[36m>\x1b[0m',
442
- completed: '\x1b[32m+\x1b[0m',
443
- failed: '\x1b[31mx\x1b[0m',
444
- skipped: '\x1b[33m-\x1b[0m',
445
- cancelled: '\x1b[33m~\x1b[0m',
446
- };
447
- async function handlePipeline(opts) {
448
- if (!opts.file) {
449
- console.error('[weaver] No pipeline config specified');
450
- console.error('Usage: weaver pipeline <config.json>');
451
- process.exit(1);
452
- }
453
- let config;
454
- try {
455
- config = PipelineRunner.load(opts.file);
456
- }
457
- catch (err) {
458
- const msg = err instanceof Error ? err.message : String(err);
459
- console.error(`\x1b[31m[weaver] Pipeline config error: ${msg}\x1b[0m`);
460
- process.exit(1);
461
- }
462
- const runner = new PipelineRunner();
463
- if (!opts.quiet) {
464
- console.log(`Pipeline: ${config.name}`);
465
- console.log(` ${config.stages.length} stages\n`);
466
- }
467
- const stageTimings = new Map();
468
- const onStageEvent = opts.quiet
469
- ? undefined
470
- : (stageId, status, result) => {
471
- const icon = STAGE_ICONS[status] ?? ' ';
472
- const stage = config.stages.find((s) => s.id === stageId);
473
- const label = stage?.label ?? stageId;
474
- if (status === 'running') {
475
- stageTimings.set(stageId, Date.now());
476
- if (opts.verbose) {
477
- console.log(` ${icon} ${label}`);
478
- }
479
- }
480
- else {
481
- const start = stageTimings.get(stageId);
482
- const dur = start ? ` (${formatDuration(Date.now() - start)})` : '';
483
- console.log(` ${icon} ${label}${dur}`);
484
- }
485
- };
486
- const weaverConfig = await loadConfig(opts.configPath);
487
- try {
488
- const pipelineResult = await runner.run(config, {
489
- verbose: opts.verbose,
490
- dryRun: opts.dryRun,
491
- config: weaverConfig,
492
- stage: opts.pipelineStage,
493
- onStageEvent,
494
- onNotificationError: (channel, _event, error) => {
495
- console.error(`[weaver] Notification error (${channel}): ${error}`);
496
- },
497
- });
498
- if (!opts.quiet) {
499
- const elapsed = formatDuration(pipelineResult.durationMs);
500
- const color = pipelineResult.success ? '\x1b[32m' : '\x1b[31m';
501
- console.log(`\n${color}Pipeline: ${pipelineResult.outcome}\x1b[0m (${elapsed})`);
502
- }
503
- process.exit(pipelineResult.success ? 0 : 1);
504
- }
505
- catch (err) {
506
- const msg = err instanceof Error ? err.message : String(err);
507
- console.error(`\x1b[31m[weaver] Pipeline error: ${msg}\x1b[0m`);
508
- process.exit(1);
509
- }
510
- }
511
- // --- Dashboard ---
512
- async function handleDashboard(opts) {
513
- const dashboard = new DashboardServer({ port: opts.dashboardPort });
514
- const port = await dashboard.start();
515
- const url = dashboard.getUrl();
516
- console.log(`[weaver] Dashboard: ${url}`);
517
- if (opts.dashboardOpen)
518
- openBrowser(url);
519
- if (!opts.file) {
520
- // Dashboard-only mode: view history, wait for SIGINT
521
- console.log('[weaver] Dashboard running (Ctrl+C to stop)');
522
- await new Promise((resolve) => {
523
- process.on('SIGINT', () => { dashboard.stop().then(resolve); });
524
- process.on('SIGTERM', () => { dashboard.stop().then(resolve); });
525
- });
526
- return;
527
- }
528
- // Run workflow with live dashboard
529
- const config = await loadConfig(opts.configPath);
530
- if (opts.approvalMode) {
531
- const cfg = config ?? { provider: 'auto' };
532
- cfg.approval = { mode: opts.approvalMode, webOpen: opts.dashboardOpen };
533
- }
534
- dashboard.broadcastWorkflowStart(path.resolve(opts.file));
535
- const nodeTimings = new Map();
536
- const onEvent = (event) => {
537
- dashboard.broadcastExecution(event);
538
- if (opts.quiet)
539
- return;
540
- const icon = STATUS_ICONS[event.type] ?? ' ';
541
- const label = event.nodeType ? `${event.nodeId} (${event.nodeType})` : event.nodeId;
542
- if (event.type === 'node-start') {
543
- nodeTimings.set(event.nodeId, event.timestamp);
544
- if (opts.verbose)
545
- console.log(` ${icon} ${label}`);
546
- }
547
- else if (event.type === 'node-complete') {
548
- const start = nodeTimings.get(event.nodeId);
549
- const dur = start ? ` ${formatDuration(event.timestamp - start)}` : '';
550
- console.log(` ${icon} ${label}${dur}`);
551
- }
552
- else if (event.type === 'node-error') {
553
- console.log(` ${icon} ${label}: ${event.error ?? 'unknown error'}`);
554
- }
555
- };
556
- const startTime = Date.now();
557
- try {
558
- const result = await runWorkflow(path.resolve(opts.file), {
559
- params: opts.params,
560
- verbose: opts.verbose,
561
- dryRun: opts.dryRun,
562
- config,
563
- onEvent,
564
- dashboardServer: dashboard,
565
- onNotificationError: (channel, _event, error) => {
566
- console.error(`[weaver] Notification error (${channel}): ${error}`);
567
- },
568
- });
569
- dashboard.broadcastWorkflowComplete(result.summary, result.success);
570
- const elapsed = formatDuration(Date.now() - startTime);
571
- if (!opts.quiet) {
572
- console.log('');
573
- const color = result.success ? '\x1b[32m' : '\x1b[31m';
574
- console.log(`${color}Weaver: ${result.outcome}\x1b[0m (${elapsed})`);
575
- console.log(` ${result.summary}`);
576
- if (result.cost && result.cost.totalInputTokens > 0) {
577
- console.log(` ${formatRunCost(result.cost)}`);
578
- }
579
- }
580
- // Keep alive for 5 minutes after completion
581
- console.log(`[weaver] Dashboard at ${url} (5min keep-alive, Ctrl+C to stop)`);
582
- await new Promise((resolve) => {
583
- const timer = setTimeout(() => resolve(), 300_000);
584
- const handler = () => { clearTimeout(timer); resolve(); };
585
- process.on('SIGINT', handler);
586
- process.on('SIGTERM', handler);
587
- });
588
- await dashboard.stop();
589
- process.exit(result.success ? 0 : 1);
590
- }
591
- catch (err) {
592
- const msg = err instanceof Error ? err.message : String(err);
593
- dashboard.broadcastWorkflowError(msg);
594
- console.error(`\x1b[31m[weaver] Fatal: ${msg}\x1b[0m`);
595
- await dashboard.stop();
596
- process.exit(1);
597
- }
598
- }
599
- // --- Providers ---
600
- async function handleProviders() {
601
- await discoverProviders(defaultRegistry);
602
- const providers = defaultRegistry.list();
603
- if (providers.length === 0) {
604
- console.log('No providers found.');
605
- return;
606
- }
607
- console.log('Available providers:\n');
608
- for (const { name, metadata } of providers) {
609
- const tag = `[${metadata.source}]`;
610
- console.log(` ${name} ${tag}`);
611
- if (metadata.description) {
612
- console.log(` ${metadata.description}`);
613
- }
614
- if (metadata.requiredEnvVars && metadata.requiredEnvVars.length > 0) {
615
- const present = metadata.requiredEnvVars.every((v) => process.env[v]);
616
- const status = present ? '\x1b[32mset\x1b[0m' : '\x1b[33mnot set\x1b[0m';
617
- console.log(` env: ${metadata.requiredEnvVars.join(', ')} (${status})`);
618
- }
619
- if (metadata.detectCliCommand) {
620
- console.log(` cli: ${metadata.detectCliCommand}`);
621
- }
622
- console.log('');
623
- }
624
- }
625
- // --- Main ---
626
- async function main() {
627
- const opts = parseArgs(process.argv);
628
- // Recover orphaned runs from previous crashes
629
- try {
630
- const store = new RunStore();
631
- const orphans = store.checkOrphans();
632
- for (const orphan of orphans) {
633
- console.error(`[weaver] Recovered orphaned run ${orphan.id.slice(0, 8)} (${orphan.workflowFile}) killed at PID ${orphan.pid}`);
634
- }
635
- }
636
- catch { /* non-fatal */ }
637
- if (opts.showHelp) {
638
- console.log(HELP);
639
- process.exit(0);
640
- }
641
- if (opts.showVersion) {
642
- try {
643
- const pkgPath = new URL('../package.json', import.meta.url);
644
- const { default: pkg } = await import(pkgPath.href, { with: { type: 'json' } });
645
- console.log(`weaver v${pkg.version}`);
646
- }
647
- catch {
648
- console.log('weaver (version unknown)');
649
- }
650
- process.exit(0);
651
- }
652
- if (opts.command === 'history') {
653
- await handleHistory(opts);
654
- process.exit(0);
655
- }
656
- if (opts.command === 'costs') {
657
- await handleCosts(opts);
658
- process.exit(0);
659
- }
660
- if (opts.command === 'providers') {
661
- await handleProviders();
662
- process.exit(0);
663
- }
664
- if (opts.command === 'watch') {
665
- await handleWatch(opts);
666
- process.exit(0);
667
- }
668
- if (opts.command === 'cron') {
669
- await handleCron(opts);
670
- process.exit(0);
671
- }
672
- if (opts.command === 'pipeline') {
673
- await handlePipeline(opts);
674
- return;
675
- }
676
- if (opts.command === 'dashboard' || opts.dashboard) {
677
- await handleDashboard(opts);
678
- return;
679
- }
680
- if (!opts.file) {
681
- console.error('[weaver] No workflow file specified');
682
- console.error('Run "weaver --help" for usage');
683
- process.exit(1);
684
- }
685
- const filePath = path.resolve(opts.file);
686
- const config = await loadConfig(opts.configPath);
687
- // Apply --approval override
688
- if (opts.approvalMode && config) {
689
- config.approval = { mode: opts.approvalMode };
690
- }
691
- const nodeTimings = new Map();
692
- const onEvent = opts.quiet
693
- ? undefined
694
- : (event) => {
695
- const icon = STATUS_ICONS[event.type] ?? ' ';
696
- const label = event.nodeType
697
- ? `${event.nodeId} (${event.nodeType})`
698
- : event.nodeId;
699
- if (event.type === 'node-start') {
700
- nodeTimings.set(event.nodeId, event.timestamp);
701
- if (opts.verbose) {
702
- console.log(` ${icon} ${label}`);
703
- }
704
- }
705
- else if (event.type === 'node-complete') {
706
- const start = nodeTimings.get(event.nodeId);
707
- const dur = start ? ` ${formatDuration(event.timestamp - start)}` : '';
708
- console.log(` ${icon} ${label}${dur}`);
709
- }
710
- else if (event.type === 'node-error') {
711
- console.log(` ${icon} ${label}: ${event.error ?? 'unknown error'}`);
712
- }
713
- };
714
- const startTime = Date.now();
715
- try {
716
- const result = await runWorkflow(filePath, {
717
- params: opts.params,
718
- verbose: opts.verbose,
719
- dryRun: opts.dryRun,
720
- config,
721
- onEvent,
722
- onNotificationError: (channel, _event, error) => {
723
- console.error(`[weaver] Notification error (${channel}): ${error}`);
724
- },
725
- });
726
- const elapsed = formatDuration(Date.now() - startTime);
727
- if (!opts.quiet) {
728
- console.log('');
729
- if (result.success) {
730
- console.log(`\x1b[32mWeaver: ${result.outcome}\x1b[0m (${elapsed})`);
731
- }
732
- else {
733
- console.log(`\x1b[31mWeaver: ${result.outcome}\x1b[0m (${elapsed})`);
734
- }
735
- console.log(` ${result.summary}`);
736
- if (result.cost && result.cost.totalInputTokens > 0) {
737
- console.log(` ${formatRunCost(result.cost)}`);
738
- }
739
- }
740
- process.exit(result.success ? 0 : 1);
741
- }
742
- catch (err) {
743
- const msg = err instanceof Error ? err.message : String(err);
744
- console.error(`\x1b[31m[weaver] Fatal: ${msg}\x1b[0m`);
745
- process.exit(1);
746
- }
747
- }
748
- main();
749
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export interface WorkflowTemplate {
2
- id: string;
3
- name: string;
4
- description: string;
5
- category: string;
6
- generate: (opts: {
7
- projectDir?: string;
8
- }) => string;
9
- }
10
- export declare const weaverTemplate: WorkflowTemplate;
11
- //# sourceMappingURL=weaver-template.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver-template.d.ts","sourceRoot":"","sources":["../../src/templates/weaver-template.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;CACrD;AAED,eAAO,MAAM,cAAc,EAAE,gBAmD5B,CAAC"}
@@ -1,53 +0,0 @@
1
- export const weaverTemplate = {
2
- id: 'weaver',
3
- name: 'Weaver: Autonomous workflow runner',
4
- description: 'AI-powered runner that executes any Flow Weaver workflow autonomously, with auto-detected providers and notification support',
5
- category: 'automation',
6
- generate: (_opts) => {
7
- return `// Generated by flowweaver-pack-weaver. Compile before running:
8
- // flow-weaver compile weaver.ts
9
- // flow-weaver run weaver.ts
10
- // Or use the CLI directly: npx weaver weaver.ts
11
- //
12
- // Node types are provided by @synergenius/flowweaver-pack-weaver.
13
- // Install it: npm install @synergenius/flowweaver-pack-weaver
14
-
15
- import { weaverLoadConfig } from '@synergenius/flowweaver-pack-weaver/node-types';
16
- import { weaverDetectProvider } from '@synergenius/flowweaver-pack-weaver/node-types';
17
- import { weaverResolveTarget } from '@synergenius/flowweaver-pack-weaver/node-types';
18
- import { weaverExecuteTarget } from '@synergenius/flowweaver-pack-weaver/node-types';
19
- import { weaverSendNotify } from '@synergenius/flowweaver-pack-weaver/node-types';
20
- import { weaverReport } from '@synergenius/flowweaver-pack-weaver/node-types';
21
-
22
- /**
23
- * @flowWeaver workflow
24
- * @node cfg weaverLoadConfig [color: "teal"] [icon: "settings"] [position: 100 0]
25
- * @node detect weaverDetectProvider [color: "cyan"] [icon: "search"] [position: 250 0]
26
- * @node target weaverResolveTarget [color: "blue"] [icon: "code"] [position: 400 0]
27
- * @node exec weaverExecuteTarget [color: "purple"] [icon: "psychology"] [position: 550 0]
28
- * @node notify weaverSendNotify [color: "yellow"] [icon: "notifications"] [position: 700 0]
29
- * @node rep weaverReport [color: "green"] [icon: "description"] [position: 850 0]
30
- * @path Start -> cfg -> detect -> target -> exec -> notify -> rep -> Exit
31
- * @position Start 0 0
32
- * @position Exit 1000 0
33
- * @connect rep.summary -> Exit.summary
34
- * @param execute [order:-1] - Execute
35
- * @param params [order:0] - Params
36
- * @returns onSuccess [order:-2] - On Success
37
- * @returns onFailure [order:-1] - On Failure
38
- * @returns summary [order:0] - Summary text
39
- */
40
- export async function weaver(
41
- execute: boolean,
42
- params: Record<string, never> = {},
43
- __abortSignal__?: AbortSignal,
44
- ): Promise<{ onSuccess: boolean; onFailure: boolean; summary: string | null }> {
45
- // @flow-weaver-body-start
46
- // (auto-generated by compiler)
47
- // @flow-weaver-body-end
48
- return { onSuccess: false, onFailure: true, summary: null };
49
- }
50
- `;
51
- },
52
- };
53
- //# sourceMappingURL=weaver-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver-template.js","sourceRoot":"","sources":["../../src/templates/weaver-template.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EAAE,8HAA8H;IAC3I,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CV,CAAC;IACA,CAAC;CACF,CAAC"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Session mode bot. Continuously polls the task queue and processes
3
- * tasks through the full bot pipeline.
4
- *
5
- * @flowWeaver workflow
6
- *
7
- * @node cfg weaverLoadConfig [color: "teal"] [icon: "settings"] [position: 80 200]
8
- * @node detect weaverDetectProvider [color: "cyan"] [icon: "search"] [position: 230 200]
9
- * @node receive weaverReceiveTask [color: "blue"] [icon: "send"] [position: 400 200]
10
- * @node route weaverRouteTask [color: "purple"] [icon: "flow"] [position: 570 200]
11
- * @node readWf weaverReadWorkflow [color: "cyan"] [icon: "description"] [position: 740 450]
12
- * @node context weaverBuildContext [color: "teal"] [icon: "code"] [position: 740 200]
13
- * @node plan weaverPlanTask [color: "blue"] [icon: "psychology"] [position: 910 200]
14
- * @node approve weaverApprovalGate [color: "orange"] [icon: "send"] [position: 1080 200]
15
- * @node abort weaverAbortTask [color: "red"] [icon: "code"] [position: 1250 450]
16
- * @node execRetry weaverExecValidateRetry [color: "purple"] [icon: "code"] [position: 1250 200]
17
- * @node gitOps weaverGitOps [color: "green"] [icon: "code"] [position: 1420 100]
18
- * @node notify weaverSendNotify [color: "yellow"] [icon: "send"] [position: 1420 300]
19
- * @node report weaverBotReport [color: "green"] [icon: "description"] [position: 1600 200]
20
- *
21
- * @path Start -> cfg -> detect -> receive -> route -> context -> plan -> approve -> execRetry -> gitOps -> report -> Exit
22
- * @path execRetry -> notify
23
- * @path route:fail -> readWf
24
- * @path approve:fail -> abort
25
- *
26
- * @connect readWf.onSuccess -> report.execute
27
- * @connect abort.onSuccess -> report.execute
28
- * @connect notify.onSuccess -> report.execute
29
- *
30
- * @connect route.taskJson -> readWf.taskJson
31
- * @connect route.projectDir -> readWf.projectDir
32
- * @connect readWf.resultJson -> report.readResult
33
- *
34
- * @connect context.contextBundle -> plan.contextBundle
35
- *
36
- * @connect approve.rejectionReason -> abort.rejectionReason
37
- * @connect approve.taskJson -> abort.taskJson
38
- * @connect approve.projectDir -> abort.projectDir
39
- * @connect abort.resultJson -> report.abortResult
40
- *
41
- * @connect execRetry.resultJson -> notify.resultJson
42
- * @connect execRetry.projectDir -> notify.targetPath
43
- *
44
- * @connect execRetry.resultJson -> report.mainResult
45
- * @connect execRetry.filesModified -> report.filesModified
46
- * @connect gitOps.gitResultJson -> report.gitResultJson
47
- *
48
- * @connect report.summary -> Exit.summary
49
- *
50
- * @position Start 0 200
51
- * @position Exit 1750 200
52
- *
53
- * @param execute [order:-1] - Execute
54
- * @param taskJson [order:0] [optional] - Task instruction (JSON)
55
- * @param projectDir [order:1] [optional] - Project directory
56
- * @returns onSuccess [order:-2] - On Success
57
- * @returns onFailure [order:-1] - On Failure
58
- * @returns summary [order:0] - Summary text
59
- */
60
- export declare function weaverBotSession(execute: boolean, taskJson?: string, projectDir?: string, __abortSignal__?: AbortSignal): Promise<{
61
- onSuccess: boolean;
62
- onFailure: boolean;
63
- summary: string | null;
64
- }>;
65
- //# sourceMappingURL=weaver-bot-session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver-bot-session.d.ts","sourceRoot":"","sources":["../../src/workflows/weaver-bot-session.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,WAAW,GAC5B,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAK7E"}
@@ -1,68 +0,0 @@
1
- // Managed weaver bot session workflow - continuously processes task queue.
2
- // Run `weaver eject` to customize.
3
- /**
4
- * Session mode bot. Continuously polls the task queue and processes
5
- * tasks through the full bot pipeline.
6
- *
7
- * @flowWeaver workflow
8
- *
9
- * @node cfg weaverLoadConfig [color: "teal"] [icon: "settings"] [position: 80 200]
10
- * @node detect weaverDetectProvider [color: "cyan"] [icon: "search"] [position: 230 200]
11
- * @node receive weaverReceiveTask [color: "blue"] [icon: "send"] [position: 400 200]
12
- * @node route weaverRouteTask [color: "purple"] [icon: "flow"] [position: 570 200]
13
- * @node readWf weaverReadWorkflow [color: "cyan"] [icon: "description"] [position: 740 450]
14
- * @node context weaverBuildContext [color: "teal"] [icon: "code"] [position: 740 200]
15
- * @node plan weaverPlanTask [color: "blue"] [icon: "psychology"] [position: 910 200]
16
- * @node approve weaverApprovalGate [color: "orange"] [icon: "send"] [position: 1080 200]
17
- * @node abort weaverAbortTask [color: "red"] [icon: "code"] [position: 1250 450]
18
- * @node execRetry weaverExecValidateRetry [color: "purple"] [icon: "code"] [position: 1250 200]
19
- * @node gitOps weaverGitOps [color: "green"] [icon: "code"] [position: 1420 100]
20
- * @node notify weaverSendNotify [color: "yellow"] [icon: "send"] [position: 1420 300]
21
- * @node report weaverBotReport [color: "green"] [icon: "description"] [position: 1600 200]
22
- *
23
- * @path Start -> cfg -> detect -> receive -> route -> context -> plan -> approve -> execRetry -> gitOps -> report -> Exit
24
- * @path execRetry -> notify
25
- * @path route:fail -> readWf
26
- * @path approve:fail -> abort
27
- *
28
- * @connect readWf.onSuccess -> report.execute
29
- * @connect abort.onSuccess -> report.execute
30
- * @connect notify.onSuccess -> report.execute
31
- *
32
- * @connect route.taskJson -> readWf.taskJson
33
- * @connect route.projectDir -> readWf.projectDir
34
- * @connect readWf.resultJson -> report.readResult
35
- *
36
- * @connect context.contextBundle -> plan.contextBundle
37
- *
38
- * @connect approve.rejectionReason -> abort.rejectionReason
39
- * @connect approve.taskJson -> abort.taskJson
40
- * @connect approve.projectDir -> abort.projectDir
41
- * @connect abort.resultJson -> report.abortResult
42
- *
43
- * @connect execRetry.resultJson -> notify.resultJson
44
- * @connect execRetry.projectDir -> notify.targetPath
45
- *
46
- * @connect execRetry.resultJson -> report.mainResult
47
- * @connect execRetry.filesModified -> report.filesModified
48
- * @connect gitOps.gitResultJson -> report.gitResultJson
49
- *
50
- * @connect report.summary -> Exit.summary
51
- *
52
- * @position Start 0 200
53
- * @position Exit 1750 200
54
- *
55
- * @param execute [order:-1] - Execute
56
- * @param taskJson [order:0] [optional] - Task instruction (JSON)
57
- * @param projectDir [order:1] [optional] - Project directory
58
- * @returns onSuccess [order:-2] - On Success
59
- * @returns onFailure [order:-1] - On Failure
60
- * @returns summary [order:0] - Summary text
61
- */
62
- export async function weaverBotSession(execute, taskJson, projectDir, __abortSignal__) {
63
- // @flow-weaver-body-start
64
- // (auto-generated by compiler)
65
- // @flow-weaver-body-end
66
- return { onSuccess: false, onFailure: true, summary: null };
67
- }
68
- //# sourceMappingURL=weaver-bot-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver-bot-session.js","sourceRoot":"","sources":["../../src/workflows/weaver-bot-session.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mCAAmC;AAgBnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,QAAiB,EACjB,UAAmB,EACnB,eAA6B;IAE7B,0BAA0B;IAC1B,+BAA+B;IAC/B,wBAAwB;IACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * @flowWeaver workflow
3
- * @node cfg weaverLoadConfig [color: "teal"] [icon: "settings"] [position: 200 0]
4
- * @node detect weaverDetectProvider [color: "cyan"] [icon: "search"] [position: 400 0]
5
- * @node target weaverResolveTarget [color: "blue"] [icon: "code"] [position: 600 0]
6
- * @node exec weaverExecuteTarget [color: "purple"] [icon: "psychology"] [position: 800 0]
7
- * @node notify weaverSendNotify [color: "yellow"] [icon: "notifications"] [position: 1000 0]
8
- * @node rep weaverReport [color: "green"] [icon: "description"] [position: 1200 0]
9
- * @path Start -> cfg -> detect -> target -> exec -> notify -> rep -> Exit
10
- * @position Start 0 0
11
- * @position Exit 1400 0
12
- * @connect rep.summary -> Exit.summary
13
- * @param execute [order:-1] - Execute
14
- * @param params [order:0] [hidden] - Params
15
- * @returns onSuccess [order:-2] - On Success
16
- * @returns onFailure [order:-1] [hidden] - On Failure
17
- * @returns summary [order:0] - Summary text
18
- */
19
- export declare function weaver(execute: boolean, params?: Record<string, never>, __abortSignal__?: AbortSignal): Promise<{
20
- onSuccess: boolean;
21
- onFailure: boolean;
22
- summary: string | null;
23
- }>;
24
- //# sourceMappingURL=weaver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver.d.ts","sourceRoot":"","sources":["../../src/workflows/weaver.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,EAClC,eAAe,CAAC,EAAE,WAAW,GAC5B,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAK7E"}
@@ -1,28 +0,0 @@
1
- // Managed weaver workflow - shipped with the pack.
2
- // Users on managed mode use this automatically.
3
- // Run `weaver eject` to customize.
4
- /**
5
- * @flowWeaver workflow
6
- * @node cfg weaverLoadConfig [color: "teal"] [icon: "settings"] [position: 200 0]
7
- * @node detect weaverDetectProvider [color: "cyan"] [icon: "search"] [position: 400 0]
8
- * @node target weaverResolveTarget [color: "blue"] [icon: "code"] [position: 600 0]
9
- * @node exec weaverExecuteTarget [color: "purple"] [icon: "psychology"] [position: 800 0]
10
- * @node notify weaverSendNotify [color: "yellow"] [icon: "notifications"] [position: 1000 0]
11
- * @node rep weaverReport [color: "green"] [icon: "description"] [position: 1200 0]
12
- * @path Start -> cfg -> detect -> target -> exec -> notify -> rep -> Exit
13
- * @position Start 0 0
14
- * @position Exit 1400 0
15
- * @connect rep.summary -> Exit.summary
16
- * @param execute [order:-1] - Execute
17
- * @param params [order:0] [hidden] - Params
18
- * @returns onSuccess [order:-2] - On Success
19
- * @returns onFailure [order:-1] [hidden] - On Failure
20
- * @returns summary [order:0] - Summary text
21
- */
22
- export async function weaver(execute, params = {}, __abortSignal__) {
23
- // @flow-weaver-body-start
24
- // (auto-generated by compiler)
25
- // @flow-weaver-body-end
26
- return { onSuccess: false, onFailure: true, summary: null };
27
- }
28
- //# sourceMappingURL=weaver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weaver.js","sourceRoot":"","sources":["../../src/workflows/weaver.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,gDAAgD;AAChD,mCAAmC;AASnC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgB,EAChB,SAAgC,EAAE,EAClC,eAA6B;IAE7B,0BAA0B;IAC1B,+BAA+B;IAC/B,wBAAwB;IACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC"}