@synergenius/flow-weaver-pack-weaver 0.9.7 → 0.9.9

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.
Files changed (224) hide show
  1. package/dist/bot/agent-loop.d.ts +20 -0
  2. package/dist/bot/agent-loop.d.ts.map +1 -0
  3. package/dist/bot/agent-loop.js +331 -0
  4. package/dist/bot/agent-loop.js.map +1 -0
  5. package/dist/bot/agent-provider.d.ts.map +1 -1
  6. package/dist/bot/agent-provider.js +3 -2
  7. package/dist/bot/agent-provider.js.map +1 -1
  8. package/dist/bot/approvals.js +17 -8
  9. package/dist/bot/approvals.js.map +1 -1
  10. package/dist/bot/assistant-core.d.ts +17 -0
  11. package/dist/bot/assistant-core.d.ts.map +1 -1
  12. package/dist/bot/assistant-core.js +418 -60
  13. package/dist/bot/assistant-core.js.map +1 -1
  14. package/dist/bot/assistant-tools.d.ts +1 -1
  15. package/dist/bot/assistant-tools.d.ts.map +1 -1
  16. package/dist/bot/assistant-tools.js +283 -9
  17. package/dist/bot/assistant-tools.js.map +1 -1
  18. package/dist/bot/bot-agent-channel.d.ts.map +1 -1
  19. package/dist/bot/bot-agent-channel.js +2 -0
  20. package/dist/bot/bot-agent-channel.js.map +1 -1
  21. package/dist/bot/bot-manager.d.ts +4 -0
  22. package/dist/bot/bot-manager.d.ts.map +1 -1
  23. package/dist/bot/bot-manager.js +72 -27
  24. package/dist/bot/bot-manager.js.map +1 -1
  25. package/dist/bot/conversation-store.d.ts +6 -5
  26. package/dist/bot/conversation-store.d.ts.map +1 -1
  27. package/dist/bot/conversation-store.js +98 -42
  28. package/dist/bot/conversation-store.js.map +1 -1
  29. package/dist/bot/cost-store.d.ts +3 -0
  30. package/dist/bot/cost-store.d.ts.map +1 -1
  31. package/dist/bot/cost-store.js +21 -10
  32. package/dist/bot/cost-store.js.map +1 -1
  33. package/dist/bot/cost-tracker.d.ts.map +1 -1
  34. package/dist/bot/cost-tracker.js +14 -1
  35. package/dist/bot/cost-tracker.js.map +1 -1
  36. package/dist/bot/cron-parser.d.ts.map +1 -1
  37. package/dist/bot/cron-parser.js +2 -0
  38. package/dist/bot/cron-parser.js.map +1 -1
  39. package/dist/bot/cron-scheduler.d.ts.map +1 -1
  40. package/dist/bot/cron-scheduler.js +1 -0
  41. package/dist/bot/cron-scheduler.js.map +1 -1
  42. package/dist/bot/device-connection.d.ts +13 -0
  43. package/dist/bot/device-connection.d.ts.map +1 -0
  44. package/dist/bot/device-connection.js +102 -0
  45. package/dist/bot/device-connection.js.map +1 -0
  46. package/dist/bot/error-classifier.d.ts.map +1 -1
  47. package/dist/bot/error-classifier.js +5 -0
  48. package/dist/bot/error-classifier.js.map +1 -1
  49. package/dist/bot/file-lock.d.ts.map +1 -1
  50. package/dist/bot/file-lock.js +13 -3
  51. package/dist/bot/file-lock.js.map +1 -1
  52. package/dist/bot/file-watcher.d.ts.map +1 -1
  53. package/dist/bot/file-watcher.js +1 -0
  54. package/dist/bot/file-watcher.js.map +1 -1
  55. package/dist/bot/genesis-prompt-context.d.ts +5 -0
  56. package/dist/bot/genesis-prompt-context.d.ts.map +1 -1
  57. package/dist/bot/genesis-prompt-context.js +55 -0
  58. package/dist/bot/genesis-prompt-context.js.map +1 -1
  59. package/dist/bot/genesis-store.d.ts +4 -0
  60. package/dist/bot/genesis-store.d.ts.map +1 -1
  61. package/dist/bot/genesis-store.js +79 -12
  62. package/dist/bot/genesis-store.js.map +1 -1
  63. package/dist/bot/improve-loop.d.ts +46 -0
  64. package/dist/bot/improve-loop.d.ts.map +1 -0
  65. package/dist/bot/improve-loop.js +592 -0
  66. package/dist/bot/improve-loop.js.map +1 -0
  67. package/dist/bot/insight-engine.d.ts +12 -0
  68. package/dist/bot/insight-engine.d.ts.map +1 -0
  69. package/dist/bot/insight-engine.js +256 -0
  70. package/dist/bot/insight-engine.js.map +1 -0
  71. package/dist/bot/knowledge-store.d.ts.map +1 -1
  72. package/dist/bot/knowledge-store.js +4 -1
  73. package/dist/bot/knowledge-store.js.map +1 -1
  74. package/dist/bot/pipeline-runner.d.ts.map +1 -1
  75. package/dist/bot/pipeline-runner.js +12 -4
  76. package/dist/bot/pipeline-runner.js.map +1 -1
  77. package/dist/bot/project-model.d.ts +25 -0
  78. package/dist/bot/project-model.d.ts.map +1 -0
  79. package/dist/bot/project-model.js +372 -0
  80. package/dist/bot/project-model.js.map +1 -0
  81. package/dist/bot/response-formatter.js +2 -3
  82. package/dist/bot/response-formatter.js.map +1 -1
  83. package/dist/bot/run-store.d.ts.map +1 -1
  84. package/dist/bot/run-store.js +10 -2
  85. package/dist/bot/run-store.js.map +1 -1
  86. package/dist/bot/safe-path.d.ts +1 -1
  87. package/dist/bot/safe-path.d.ts.map +1 -1
  88. package/dist/bot/safe-path.js +20 -1
  89. package/dist/bot/safe-path.js.map +1 -1
  90. package/dist/bot/safety.d.ts +10 -2
  91. package/dist/bot/safety.d.ts.map +1 -1
  92. package/dist/bot/safety.js +45 -2
  93. package/dist/bot/safety.js.map +1 -1
  94. package/dist/bot/session-state.d.ts +4 -0
  95. package/dist/bot/session-state.d.ts.map +1 -1
  96. package/dist/bot/session-state.js +52 -9
  97. package/dist/bot/session-state.js.map +1 -1
  98. package/dist/bot/slash-commands.d.ts.map +1 -1
  99. package/dist/bot/slash-commands.js +109 -3
  100. package/dist/bot/slash-commands.js.map +1 -1
  101. package/dist/bot/steering-engine.d.ts +67 -0
  102. package/dist/bot/steering-engine.d.ts.map +1 -0
  103. package/dist/bot/steering-engine.js +198 -0
  104. package/dist/bot/steering-engine.js.map +1 -0
  105. package/dist/bot/step-executor.d.ts.map +1 -1
  106. package/dist/bot/step-executor.js +62 -25
  107. package/dist/bot/step-executor.js.map +1 -1
  108. package/dist/bot/system-prompt.d.ts.map +1 -1
  109. package/dist/bot/system-prompt.js +5 -2
  110. package/dist/bot/system-prompt.js.map +1 -1
  111. package/dist/bot/task-queue.d.ts +6 -1
  112. package/dist/bot/task-queue.d.ts.map +1 -1
  113. package/dist/bot/task-queue.js +43 -4
  114. package/dist/bot/task-queue.js.map +1 -1
  115. package/dist/bot/tool-registry.d.ts +1 -1
  116. package/dist/bot/tool-registry.d.ts.map +1 -1
  117. package/dist/bot/tool-registry.js +65 -4
  118. package/dist/bot/tool-registry.js.map +1 -1
  119. package/dist/bot/trust-calculator.d.ts +34 -0
  120. package/dist/bot/trust-calculator.d.ts.map +1 -0
  121. package/dist/bot/trust-calculator.js +67 -0
  122. package/dist/bot/trust-calculator.js.map +1 -0
  123. package/dist/bot/types.d.ts +97 -0
  124. package/dist/bot/types.d.ts.map +1 -1
  125. package/dist/bot/update-checker.d.ts +21 -0
  126. package/dist/bot/update-checker.d.ts.map +1 -0
  127. package/dist/bot/update-checker.js +129 -0
  128. package/dist/bot/update-checker.js.map +1 -0
  129. package/dist/bot/weaver-tools.d.ts.map +1 -1
  130. package/dist/bot/weaver-tools.js +11 -4
  131. package/dist/bot/weaver-tools.js.map +1 -1
  132. package/dist/cli-bridge.d.ts +2 -0
  133. package/dist/cli-bridge.d.ts.map +1 -1
  134. package/dist/cli-bridge.js +3 -1
  135. package/dist/cli-bridge.js.map +1 -1
  136. package/dist/cli-handlers.d.ts +10 -1
  137. package/dist/cli-handlers.d.ts.map +1 -1
  138. package/dist/cli-handlers.js +141 -24
  139. package/dist/cli-handlers.js.map +1 -1
  140. package/dist/cli.d.ts +3 -0
  141. package/dist/cli.d.ts.map +1 -0
  142. package/dist/cli.js +749 -0
  143. package/dist/cli.js.map +1 -0
  144. package/dist/docs/weaver-config.md +15 -9
  145. package/dist/handlers/on-execution-completed.d.ts +11 -0
  146. package/dist/handlers/on-execution-completed.d.ts.map +1 -0
  147. package/dist/handlers/on-execution-completed.js +25 -0
  148. package/dist/handlers/on-execution-completed.js.map +1 -0
  149. package/dist/mcp-tools.d.ts.map +1 -1
  150. package/dist/mcp-tools.js +33 -0
  151. package/dist/mcp-tools.js.map +1 -1
  152. package/dist/node-types/genesis-approve.d.ts.map +1 -1
  153. package/dist/node-types/genesis-approve.js +28 -3
  154. package/dist/node-types/genesis-approve.js.map +1 -1
  155. package/dist/node-types/genesis-observe.d.ts.map +1 -1
  156. package/dist/node-types/genesis-observe.js +23 -13
  157. package/dist/node-types/genesis-observe.js.map +1 -1
  158. package/dist/node-types/genesis-propose.d.ts.map +1 -1
  159. package/dist/node-types/genesis-propose.js +8 -0
  160. package/dist/node-types/genesis-propose.js.map +1 -1
  161. package/dist/node-types/genesis-update-history.d.ts.map +1 -1
  162. package/dist/node-types/genesis-update-history.js +13 -0
  163. package/dist/node-types/genesis-update-history.js.map +1 -1
  164. package/dist/templates/weaver-template.d.ts +11 -0
  165. package/dist/templates/weaver-template.d.ts.map +1 -0
  166. package/dist/templates/weaver-template.js +53 -0
  167. package/dist/templates/weaver-template.js.map +1 -0
  168. package/dist/workflows/weaver-bot-session.d.ts +65 -0
  169. package/dist/workflows/weaver-bot-session.d.ts.map +1 -0
  170. package/dist/workflows/weaver-bot-session.js +68 -0
  171. package/dist/workflows/weaver-bot-session.js.map +1 -0
  172. package/dist/workflows/weaver.d.ts +24 -0
  173. package/dist/workflows/weaver.d.ts.map +1 -0
  174. package/dist/workflows/weaver.js +28 -0
  175. package/dist/workflows/weaver.js.map +1 -0
  176. package/flowweaver.manifest.json +28 -1
  177. package/package.json +6 -3
  178. package/src/bot/agent-provider.ts +3 -2
  179. package/src/bot/approvals.ts +16 -8
  180. package/src/bot/assistant-core.ts +420 -63
  181. package/src/bot/assistant-tools.ts +291 -9
  182. package/src/bot/bot-agent-channel.ts +2 -0
  183. package/src/bot/bot-manager.ts +70 -29
  184. package/src/bot/conversation-store.ts +87 -42
  185. package/src/bot/cost-store.ts +20 -9
  186. package/src/bot/cost-tracker.ts +13 -1
  187. package/src/bot/cron-parser.ts +1 -0
  188. package/src/bot/cron-scheduler.ts +1 -0
  189. package/src/bot/device-connection.ts +102 -0
  190. package/src/bot/error-classifier.ts +5 -0
  191. package/src/bot/file-lock.ts +12 -2
  192. package/src/bot/file-watcher.ts +1 -0
  193. package/src/bot/genesis-prompt-context.ts +61 -0
  194. package/src/bot/genesis-store.ts +68 -16
  195. package/src/bot/improve-loop.ts +651 -0
  196. package/src/bot/insight-engine.ts +273 -0
  197. package/src/bot/knowledge-store.ts +4 -1
  198. package/src/bot/pipeline-runner.ts +11 -6
  199. package/src/bot/project-model.ts +404 -0
  200. package/src/bot/response-formatter.ts +2 -3
  201. package/src/bot/run-store.ts +5 -2
  202. package/src/bot/safe-path.ts +20 -1
  203. package/src/bot/safety.ts +57 -3
  204. package/src/bot/session-state.ts +47 -7
  205. package/src/bot/slash-commands.ts +111 -3
  206. package/src/bot/steering-engine.ts +233 -0
  207. package/src/bot/step-executor.ts +66 -26
  208. package/src/bot/system-prompt.ts +5 -2
  209. package/src/bot/task-queue.ts +40 -4
  210. package/src/bot/tool-registry.ts +67 -5
  211. package/src/bot/trust-calculator.ts +87 -0
  212. package/src/bot/types.ts +104 -0
  213. package/src/bot/update-checker.ts +138 -0
  214. package/src/bot/weaver-tools.ts +10 -4
  215. package/src/cli-bridge.ts +4 -1
  216. package/src/cli-handlers.ts +150 -29
  217. package/src/handlers/on-execution-completed.ts +30 -0
  218. package/src/mcp-tools.ts +38 -0
  219. package/src/node-types/genesis-approve.ts +28 -3
  220. package/src/node-types/genesis-observe.ts +23 -12
  221. package/src/node-types/genesis-propose.ts +8 -0
  222. package/src/node-types/genesis-update-history.ts +12 -0
  223. package/src/ui/evolution-panel.tsx +96 -0
  224. package/src/ui/insights-widget.tsx +77 -0
@@ -242,6 +242,9 @@ export function parseArgs(argv) {
242
242
  else if (arg === 'genesis') {
243
243
  result.command = 'genesis';
244
244
  }
245
+ else if (arg === 'improve') {
246
+ result.command = 'improve';
247
+ }
245
248
  else if (arg === 'init') {
246
249
  result.command = 'init';
247
250
  }
@@ -255,9 +258,16 @@ export function parseArgs(argv) {
255
258
  i++;
256
259
  result.assistantWatch = args[i];
257
260
  }
261
+ else if ((arg === '-m' || arg === '--message') && i + 1 < args.length) {
262
+ i++;
263
+ result.assistantMessage = args[i];
264
+ }
258
265
  else if (arg === '--new') {
259
266
  result.assistantNew = true;
260
267
  }
268
+ else if (arg === '--debug') {
269
+ result.assistantDebug = true;
270
+ }
261
271
  else if (arg === '--resume' && i + 1 < args.length) {
262
272
  i++;
263
273
  result.assistantResume = args[i];
@@ -288,6 +298,26 @@ export function parseArgs(argv) {
288
298
  i++;
289
299
  result.file = args[i];
290
300
  }
301
+ else if (arg === '--max-cycles' && i + 1 < args.length) {
302
+ i++;
303
+ result.improveMaxCycles = parseInt(args[i], 10) || undefined;
304
+ }
305
+ else if (arg === '--max-failures' && i + 1 < args.length) {
306
+ i++;
307
+ result.improveMaxFailures = parseInt(args[i], 10) || undefined;
308
+ }
309
+ else if (arg === '--protected' && i + 1 < args.length) {
310
+ i++;
311
+ result.improveProtected = args[i].split(',').map(s => s.trim());
312
+ }
313
+ else if (arg === '--test-cmd' && i + 1 < args.length) {
314
+ i++;
315
+ result.improveTestCmd = args[i];
316
+ }
317
+ else if (arg === '--build-cmd' && i + 1 < args.length) {
318
+ i++;
319
+ result.improveBuildCmd = args[i];
320
+ }
291
321
  else if (arg === 'run') {
292
322
  // skip, next arg is the file
293
323
  }
@@ -1522,7 +1552,7 @@ export async function handleAssistant(opts) {
1522
1552
  if (opts.assistantDelete) {
1523
1553
  const { ConversationStore } = await import('./bot/conversation-store.js');
1524
1554
  const store = new ConversationStore();
1525
- store.delete(opts.assistantDelete);
1555
+ await store.delete(opts.assistantDelete);
1526
1556
  console.log(` Deleted conversation ${opts.assistantDelete}`);
1527
1557
  return;
1528
1558
  }
@@ -1560,7 +1590,11 @@ export async function handleAssistant(opts) {
1560
1590
  else if (providerType === 'anthropic' || (providerType === 'auto' && process.env.ANTHROPIC_API_KEY)) {
1561
1591
  const apiKey = process.env.ANTHROPIC_API_KEY ?? (typeof providerSetting === 'object' ? providerSetting.apiKey : undefined);
1562
1592
  if (!apiKey) {
1563
- console.error('ANTHROPIC_API_KEY required for anthropic provider');
1593
+ console.error('\n No API key found.\n');
1594
+ console.error(' Set one of:');
1595
+ console.error(' export ANTHROPIC_API_KEY=sk-...');
1596
+ console.error(' fw login (platform credentials)');
1597
+ console.error(' flow-weaver weaver init (auto-detect provider)\n');
1564
1598
  process.exit(1);
1565
1599
  }
1566
1600
  provider = createAnthropicProvider({ apiKey, model: typeof providerSetting === 'object' ? providerSetting.model : undefined });
@@ -1571,6 +1605,52 @@ export async function handleAssistant(opts) {
1571
1605
  const { ASSISTANT_TOOLS, createAssistantExecutor } = await import('./bot/assistant-tools.js');
1572
1606
  const { runAssistant } = await import('./bot/assistant-core.js');
1573
1607
  const executor = createAssistantExecutor(projectDir);
1608
+ // Debug mode: pass messages as inputMessages, enable structured output
1609
+ // Must be checked BEFORE single-message mode since both use -m flag
1610
+ if (opts.assistantDebug) {
1611
+ const messages = opts.assistantMessage ? [opts.assistantMessage] : [];
1612
+ // Read additional messages from stdin if not a TTY
1613
+ if (!process.stdin.isTTY) {
1614
+ const chunks = [];
1615
+ for await (const chunk of process.stdin) {
1616
+ chunks.push(typeof chunk === 'string' ? chunk : chunk.toString());
1617
+ }
1618
+ const stdinMessages = chunks.join('').trim().split('\n').filter(Boolean);
1619
+ messages.push(...stdinMessages);
1620
+ }
1621
+ if (messages.length === 0) {
1622
+ console.error('Debug mode requires messages via -m "msg" or stdin (one per line)');
1623
+ process.exit(1);
1624
+ }
1625
+ await runAssistant({
1626
+ provider,
1627
+ tools: ASSISTANT_TOOLS,
1628
+ executor,
1629
+ projectDir,
1630
+ inputMessages: messages,
1631
+ resumeId: opts.assistantResume,
1632
+ newConversation: !opts.assistantResume,
1633
+ debug: true,
1634
+ });
1635
+ return;
1636
+ }
1637
+ // Single message mode: -m "message" — run one message, print result, exit
1638
+ if (opts.assistantMessage) {
1639
+ const { runAgentLoop } = await import('@synergenius/flow-weaver/agent');
1640
+ const result = await runAgentLoop(provider, ASSISTANT_TOOLS, executor, [{ role: 'user', content: opts.assistantMessage }], {
1641
+ maxIterations: 20,
1642
+ onStreamEvent: (e) => { if (e.type === 'text_delta')
1643
+ process.stdout.write(e.text); },
1644
+ onToolEvent: (e) => {
1645
+ if (e.type === 'tool_call_start')
1646
+ process.stderr.write(`\n ◆ ${e.name}\n`);
1647
+ if (e.type === 'tool_call_result')
1648
+ process.stderr.write(` → ${(e.result ?? '').replace(/\n/g, ' ').slice(0, 200)}\n`);
1649
+ },
1650
+ });
1651
+ process.stdout.write('\n');
1652
+ process.exit(result.success ? 0 : 1);
1653
+ }
1574
1654
  await runAssistant({
1575
1655
  provider,
1576
1656
  tools: ASSISTANT_TOOLS,
@@ -1841,6 +1921,9 @@ const COMMAND_HELP = {
1841
1921
  eject: 'eject [--workflow bot|genesis] Export managed workflows',
1842
1922
  audit: 'audit [runId] [--limit N] View audit log',
1843
1923
  assistant: 'assistant AI-powered assistant for managing bots and workflows',
1924
+ examples: 'examples Show example tasks and commands',
1925
+ doctor: 'doctor Validate setup and check connectivity',
1926
+ status: 'status Get bot session status',
1844
1927
  };
1845
1928
  export function printHelp(command) {
1846
1929
  if (command && command !== 'help' && COMMAND_HELP[command]) {
@@ -1849,26 +1932,50 @@ export function printHelp(command) {
1849
1932
  return;
1850
1933
  }
1851
1934
  console.log(`
1852
- Weaver — AI-powered workflow automation for Flow Weaver
1935
+ Weaver — AI-powered workflow automation for Flow Weaver
1936
+
1937
+ Usage: flow-weaver weaver <command> [options]
1938
+
1939
+ Get started:
1940
+ assistant AI assistant for managing bots and workflows
1941
+ bot <task> Create or modify a workflow from a task
1942
+ init Create .weaver.json config
1943
+ doctor Validate setup and check connectivity
1944
+
1945
+ Workflows:
1946
+ run <file> Execute a workflow with AI agent channel
1947
+ watch <file> Re-run on file changes
1948
+ genesis [--init] Self-evolution cycle on a workflow
1853
1949
 
1854
- Usage: flow-weaver weaver <command> [options]
1950
+ Management:
1951
+ session Start continuous task queue processing
1952
+ queue <cmd> [task] Manage task queue (add, list, clear, remove)
1953
+ status Get bot session status
1954
+ steer <cmd> Control a running session (pause, resume, cancel)
1855
1955
 
1856
- Commands:
1857
- ${Object.values(COMMAND_HELP).join('\n ')}
1956
+ Info:
1957
+ history [id] Show execution history
1958
+ costs [--since 7d] Show AI token usage and costs
1959
+ audit [runId] View audit log
1960
+ examples Show example tasks and commands
1961
+ providers List available AI providers
1858
1962
 
1859
- Global options:
1860
- -h, --help Show help
1861
- -v, --verbose Show detailed output
1862
- -n, --dry-run Preview without executing
1863
- --quiet Suppress output
1864
- -p, --params <json> Input parameters as JSON
1865
- -c, --config <path> Path to .weaver.json config
1866
- --approval <mode> Override approval mode (auto|prompt|web|timeout-auto)
1963
+ Advanced:
1964
+ pipeline <config.json> Run multi-stage pipeline
1965
+ cron <schedule> <file> Schedule workflow execution
1966
+ dashboard [file] Start live execution dashboard
1967
+ eject [--workflow name] Export managed workflows
1867
1968
 
1868
- Quick start:
1869
- flow-weaver weaver init # create .weaver.json
1870
- flow-weaver weaver providers # check available AI providers
1871
- flow-weaver weaver bot "Create a hello world workflow" # create your first workflow
1969
+ Options:
1970
+ -h, --help Show help
1971
+ -v, --verbose Show detailed output
1972
+ -c, --config <path> Path to .weaver.json config
1973
+ --approval <mode> Approval mode (auto|prompt|web|timeout-auto)
1974
+
1975
+ Quick start:
1976
+ flow-weaver weaver init
1977
+ flow-weaver weaver bot "Create a hello world workflow"
1978
+ flow-weaver weaver assistant
1872
1979
  `);
1873
1980
  }
1874
1981
  function printCommandHelp(command) {
@@ -1995,15 +2102,25 @@ export async function handleInit(opts) {
1995
2102
  console.log(` provider: ${provider}`);
1996
2103
  console.log(' approval: auto');
1997
2104
  console.log('');
1998
- console.log(' Try it now:');
1999
- console.log(' \x1b[36mweaver bot "Create a hello world workflow"\x1b[0m');
2000
- console.log(' \x1b[36mweaver assistant\x1b[0m');
2105
+ console.log(' \x1b[1mNext step:\x1b[0m');
2106
+ console.log(' \x1b[36mweaver assistant\x1b[0m \x1b[2m# start your AI companion\x1b[0m');
2001
2107
  console.log('');
2002
- console.log(' Learn more:');
2003
- console.log(' weaver examples \x1b[2m# see what weaver can do\x1b[0m');
2004
- console.log(' weaver doctor \x1b[2m# validate your setup\x1b[0m');
2108
+ console.log(' The assistant will read your project and help you create');
2109
+ console.log(' your first workflow. Just tell it what you want to build.');
2005
2110
  console.log('');
2006
2111
  }
2112
+ export async function handleImprove(opts) {
2113
+ const projectDir = opts.file ? path.resolve(opts.file) : process.cwd();
2114
+ const { runImproveLoop, DEFAULT_PROTECTED } = await import('./bot/improve-loop.js');
2115
+ await runImproveLoop({
2116
+ maxCycles: opts.improveMaxCycles ?? 0,
2117
+ maxConsecutiveFailures: opts.improveMaxFailures ?? 5,
2118
+ protectedPatterns: opts.improveProtected ?? DEFAULT_PROTECTED,
2119
+ testCommand: opts.improveTestCmd ?? 'npx vitest run',
2120
+ buildCommand: opts.improveBuildCmd,
2121
+ projectDir,
2122
+ });
2123
+ }
2007
2124
  export async function handleExamples(_opts) {
2008
2125
  console.log('');
2009
2126
  console.log(' \x1b[1mWeaver Examples\x1b[0m');