@synergenius/flow-weaver-pack-weaver 0.9.3 → 0.9.5

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 (89) hide show
  1. package/dist/bot/ansi.d.ts +13 -0
  2. package/dist/bot/ansi.d.ts.map +1 -0
  3. package/dist/bot/ansi.js +13 -0
  4. package/dist/bot/ansi.js.map +1 -0
  5. package/dist/bot/assistant-core.d.ts.map +1 -1
  6. package/dist/bot/assistant-core.js +68 -32
  7. package/dist/bot/assistant-core.js.map +1 -1
  8. package/dist/bot/assistant-tools.d.ts +3 -2
  9. package/dist/bot/assistant-tools.d.ts.map +1 -1
  10. package/dist/bot/assistant-tools.js +6 -284
  11. package/dist/bot/assistant-tools.js.map +1 -1
  12. package/dist/bot/conversation-store.d.ts.map +1 -1
  13. package/dist/bot/conversation-store.js +1 -1
  14. package/dist/bot/conversation-store.js.map +1 -1
  15. package/dist/bot/error-classifier.d.ts +27 -0
  16. package/dist/bot/error-classifier.d.ts.map +1 -0
  17. package/dist/bot/error-classifier.js +71 -0
  18. package/dist/bot/error-classifier.js.map +1 -0
  19. package/dist/bot/error-guide.d.ts +2 -7
  20. package/dist/bot/error-guide.d.ts.map +1 -1
  21. package/dist/bot/error-guide.js +2 -31
  22. package/dist/bot/error-guide.js.map +1 -1
  23. package/dist/bot/paths.d.ts +11 -0
  24. package/dist/bot/paths.d.ts.map +1 -0
  25. package/dist/bot/paths.js +26 -0
  26. package/dist/bot/paths.js.map +1 -0
  27. package/dist/bot/response-formatter.d.ts +15 -0
  28. package/dist/bot/response-formatter.d.ts.map +1 -0
  29. package/dist/bot/response-formatter.js +40 -0
  30. package/dist/bot/response-formatter.js.map +1 -0
  31. package/dist/bot/retry-utils.d.ts +2 -16
  32. package/dist/bot/retry-utils.d.ts.map +1 -1
  33. package/dist/bot/retry-utils.js +2 -61
  34. package/dist/bot/retry-utils.js.map +1 -1
  35. package/dist/bot/rich-input.d.ts +39 -0
  36. package/dist/bot/rich-input.d.ts.map +1 -0
  37. package/dist/bot/rich-input.js +308 -0
  38. package/dist/bot/rich-input.js.map +1 -0
  39. package/dist/bot/safety.d.ts +10 -0
  40. package/dist/bot/safety.d.ts.map +1 -0
  41. package/dist/bot/safety.js +14 -0
  42. package/dist/bot/safety.js.map +1 -0
  43. package/dist/bot/slash-commands.d.ts +20 -0
  44. package/dist/bot/slash-commands.d.ts.map +1 -0
  45. package/dist/bot/slash-commands.js +93 -0
  46. package/dist/bot/slash-commands.js.map +1 -0
  47. package/dist/bot/steering.js +2 -2
  48. package/dist/bot/steering.js.map +1 -1
  49. package/dist/bot/task-queue.d.ts.map +1 -1
  50. package/dist/bot/task-queue.js +2 -15
  51. package/dist/bot/task-queue.js.map +1 -1
  52. package/dist/bot/terminal-renderer.d.ts.map +1 -1
  53. package/dist/bot/terminal-renderer.js +12 -13
  54. package/dist/bot/terminal-renderer.js.map +1 -1
  55. package/dist/bot/tool-registry.d.ts +24 -0
  56. package/dist/bot/tool-registry.d.ts.map +1 -0
  57. package/dist/bot/tool-registry.js +458 -0
  58. package/dist/bot/tool-registry.js.map +1 -0
  59. package/dist/bot/weaver-tools.d.ts +2 -2
  60. package/dist/bot/weaver-tools.d.ts.map +1 -1
  61. package/dist/bot/weaver-tools.js +4 -95
  62. package/dist/bot/weaver-tools.js.map +1 -1
  63. package/dist/cli-handlers.d.ts.map +1 -1
  64. package/dist/cli-handlers.js +1 -2
  65. package/dist/cli-handlers.js.map +1 -1
  66. package/dist/node-types/agent-execute.d.ts.map +1 -1
  67. package/dist/node-types/agent-execute.js +4 -8
  68. package/dist/node-types/agent-execute.js.map +1 -1
  69. package/flowweaver.manifest.json +1 -1
  70. package/package.json +1 -1
  71. package/src/bot/ansi.ts +12 -0
  72. package/src/bot/assistant-core.ts +70 -33
  73. package/src/bot/assistant-tools.ts +7 -294
  74. package/src/bot/conversation-store.ts +1 -1
  75. package/src/bot/error-classifier.ts +90 -0
  76. package/src/bot/error-guide.ts +2 -32
  77. package/src/bot/paths.ts +27 -0
  78. package/src/bot/response-formatter.ts +42 -0
  79. package/src/bot/retry-utils.ts +2 -74
  80. package/src/bot/rich-input.ts +307 -0
  81. package/src/bot/safety.ts +16 -0
  82. package/src/bot/slash-commands.ts +114 -0
  83. package/src/bot/steering.ts +2 -2
  84. package/src/bot/task-queue.ts +2 -16
  85. package/src/bot/terminal-renderer.ts +11 -14
  86. package/src/bot/tool-registry.ts +477 -0
  87. package/src/bot/weaver-tools.ts +4 -95
  88. package/src/cli-handlers.ts +1 -2
  89. package/src/node-types/agent-execute.ts +3 -6
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared ANSI color helpers — single source of truth.
3
+ */
4
+ export declare const c: {
5
+ green: (s: string) => string;
6
+ red: (s: string) => string;
7
+ yellow: (s: string) => string;
8
+ cyan: (s: string) => string;
9
+ dim: (s: string) => string;
10
+ bold: (s: string) => string;
11
+ redBold: (s: string) => string;
12
+ };
13
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../src/bot/ansi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,CAAC;eACD,MAAM;aACR,MAAM;gBACH,MAAM;cACR,MAAM;aACP,MAAM;cACL,MAAM;iBACH,MAAM;CACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared ANSI color helpers — single source of truth.
3
+ */
4
+ export const c = {
5
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
6
+ red: (s) => `\x1b[31m${s}\x1b[0m`,
7
+ yellow: (s) => `\x1b[33m${s}\x1b[0m`,
8
+ cyan: (s) => `\x1b[36m${s}\x1b[0m`,
9
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
10
+ bold: (s) => `\x1b[1m${s}\x1b[0m`,
11
+ redBold: (s) => `\x1b[1;31m${s}\x1b[0m`,
12
+ };
13
+ //# sourceMappingURL=ansi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.js","sourceRoot":"","sources":["../../src/bot/ansi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC3C,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IACzC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC5C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC1C,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;IACxC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;IACzC,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS;CAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-core.d.ts","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAqCD,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiKxE"}
1
+ {"version":3,"file":"assistant-core.d.ts","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAkCD,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsMxE"}
@@ -7,17 +7,18 @@
7
7
  * - CLI provider: tools handled internally via MCP bridge (tool_result events)
8
8
  * - API provider: tools collected and executed manually (tool_use_start/end events)
9
9
  */
10
- import * as readline from 'node:readline';
10
+ import * as path from 'node:path';
11
+ import * as os from 'node:os';
11
12
  import { runAgentLoop, } from '@synergenius/flow-weaver/agent';
13
+ import { c } from './ansi.js';
14
+ import { VERBOSE_TOOL_NAMES } from './tool-registry.js';
15
+ import { generateToolPromptSection, generateVerboseToolList } from './tool-registry.js';
16
+ import { CHARS_PER_TOKEN } from './safety.js';
12
17
  const DEFAULT_SYSTEM_PROMPT = `You are Weaver Assistant — a director-level AI that manages bot workers and the flow-weaver ecosystem.
13
18
 
14
- You help users:
15
- 1. Spawn and manage multiple bot sessions (bot_spawn, bot_list, bot_status, bot_pause, bot_resume, bot_stop, bot_logs)
16
- 2. Queue tasks for bots (queue_add, queue_add_batch, queue_list, queue_retry)
17
- 3. Inspect workflows (fw_validate, fw_diagram, fw_describe)
18
- 4. Read and analyze project files (read_file, list_files, run_shell)
19
- 5. Generate reports on bot progress and costs
19
+ You help users with the following tools (grouped by category):
20
20
 
21
+ ${generateToolPromptSection()}
21
22
  USE TOOLS to fulfill requests. Don't describe what you'd do — actually do it.
22
23
  When the user asks to "start a bot", call bot_spawn.
23
24
  When they ask for status, call bot_list or bot_status.
@@ -33,15 +34,16 @@ CRITICAL: You are running in a terminal. Do NOT use markdown formatting.
33
34
  - Use UPPERCASE or quotes for emphasis instead of markdown
34
35
  - For lists, use simple dashes: - item
35
36
  - For key-value pairs, use: key: value (one per line)
36
- - Keep output scannable and clean`;
37
- // ANSI helpers
38
- const c = {
39
- cyan: (s) => `\x1b[36m${s}\x1b[0m`,
40
- dim: (s) => `\x1b[2m${s}\x1b[0m`,
41
- bold: (s) => `\x1b[1m${s}\x1b[0m`,
42
- green: (s) => `\x1b[32m${s}\x1b[0m`,
43
- red: (s) => `\x1b[31m${s}\x1b[0m`,
44
- };
37
+ - Keep output scannable and clean
38
+
39
+ IMPORTANT: Some tool results are displayed DIRECTLY to the user in the terminal.
40
+ These tools show FULL output — the user already sees everything:
41
+ ${generateVerboseToolList()}
42
+ For these: do NOT repeat, summarize, or reformat the output. Just add a brief comment if needed.
43
+ Never re-type ASCII art, diagrams, or large text blocks that were already printed.
44
+
45
+ Other tools show only a short preview.
46
+ For those: you may summarize or explain the result as needed.`;
45
47
  export async function runAssistant(opts) {
46
48
  const { provider, tools, executor, projectDir } = opts;
47
49
  // Build system prompt — include project plan if it exists
@@ -97,21 +99,26 @@ export async function runAssistant(opts) {
97
99
  else {
98
100
  out(` ${c.dim(`Conversation: ${conversation.id}`)}\n`);
99
101
  }
100
- out(` ${c.dim('Type your request. Ctrl+C to exit.')}\n\n`);
101
- // Input source
102
- const rl = opts.inputMessages
103
- ? null
104
- : readline.createInterface({ input: process.stdin, output: process.stderr, prompt: `${c.cyan('')} ` });
102
+ out(` ${c.dim('Type your request. Ctrl+C to exit. /help for commands.')}\n\n`);
103
+ // Rich input with history, arrows, tab completion, slash commands
104
+ const { RichInput } = await import('./rich-input.js');
105
+ const { getSlashCompletions, handleSlashCommand } = await import('./slash-commands.js');
106
+ const { formatResponse } = await import('./response-formatter.js');
107
+ const richInput = opts.inputMessages ? null : new RichInput({
108
+ historyFile: path.join(os.homedir(), '.weaver', 'input-history.txt'),
109
+ prompt: `${c.cyan('❯')} `,
110
+ completionProvider: (partial) => {
111
+ if (partial.startsWith('/'))
112
+ return getSlashCompletions(partial);
113
+ return [];
114
+ },
115
+ });
105
116
  const getNextInput = opts.inputMessages
106
117
  ? (() => {
107
118
  let i = 0;
108
119
  return () => Promise.resolve(opts.inputMessages[i++] ?? null);
109
120
  })()
110
- : () => new Promise((resolve) => {
111
- rl.prompt();
112
- rl.once('line', (line) => resolve(line.trim() || null));
113
- rl.once('close', () => resolve(null));
114
- });
121
+ : () => richInput.getInput();
115
122
  const onStreamEvent = (event) => {
116
123
  if (event.type === 'text_delta') {
117
124
  out(event.text);
@@ -127,18 +134,49 @@ export async function runAssistant(opts) {
127
134
  }
128
135
  if (event.type === 'tool_call_result') {
129
136
  const icon = event.isError ? c.red('✗') : c.dim('→');
130
- const result = (event.result ?? '').replace(/\n/g, ' ').slice(0, 150);
131
- out(` ${icon} ${result}\n`);
137
+ const raw = event.result ?? '';
138
+ // Show full output for diagram/describe/docs tools; truncate others
139
+ const isVerboseTool = VERBOSE_TOOL_NAMES.has(event.name);
140
+ if (isVerboseTool && raw.length > 150) {
141
+ out(` ${icon}\n${raw}\n`);
142
+ }
143
+ else {
144
+ const result = raw.replace(/\n/g, ' ').slice(0, 200);
145
+ out(` ${icon} ${result}\n`);
146
+ }
132
147
  }
133
148
  };
149
+ // Slash command context
150
+ let shouldExit = false;
151
+ const slashCtx = {
152
+ executor,
153
+ out,
154
+ projectDir,
155
+ conversationId: conversation.id,
156
+ onClear: () => { history.length = 0; },
157
+ onExit: () => { shouldExit = true; },
158
+ onNew: () => { history.length = 0; conversation = store.create(projectDir); },
159
+ onVerbose: () => { out(` ${c.dim('Verbose toggling not yet wired to streaming.')}\n`); },
160
+ };
134
161
  // Main conversation loop
135
- while (true) {
162
+ while (!shouldExit) {
136
163
  const input = await getNextInput();
137
164
  if (input === null)
138
165
  break;
139
166
  if (!input.trim())
140
167
  continue;
168
+ // Handle slash commands
169
+ if (input.startsWith('/')) {
170
+ const handled = await handleSlashCommand(input, slashCtx);
171
+ if (handled)
172
+ continue;
173
+ // Unknown slash command — tell user
174
+ out(` ${c.dim('Unknown command. Type /help for available commands.')}\n\n`);
175
+ continue;
176
+ }
141
177
  out('\n');
178
+ // Reset Ctrl+C counter after successful input
179
+ richInput?.resetCtrlC();
142
180
  // Add user message to history
143
181
  history.push({ role: 'user', content: input });
144
182
  try {
@@ -184,7 +222,7 @@ export async function runAssistant(opts) {
184
222
  }
185
223
  out('\n');
186
224
  }
187
- rl?.close();
225
+ richInput?.destroy();
188
226
  out(`\n ${c.dim('Goodbye.')}\n\n`);
189
227
  }
190
228
  function toolPreview(name, args) {
@@ -203,8 +241,6 @@ function toolPreview(name, args) {
203
241
  return '';
204
242
  }
205
243
  // --- Token-aware history compression ---
206
- // Rough token estimate: ~4 chars per token for English text
207
- const CHARS_PER_TOKEN = 4;
208
244
  // Budget: leave room for system prompt (~2k) + tools (~3k) + response (~4k)
209
245
  const MAX_HISTORY_TOKENS = 80_000;
210
246
  // When compressing, truncate tool results to this size
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-core.js","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-core.js","sourceRoot":"","sources":["../../src/bot/assistant-core.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@
3
3
  * These are the tools the AI assistant uses to manage bots,
4
4
  * queues, and the flow-weaver ecosystem.
5
5
  */
6
- import type { ToolDefinition, ToolExecutor } from '@synergenius/flow-weaver/agent';
7
- export declare const ASSISTANT_TOOLS: ToolDefinition[];
6
+ import type { ToolExecutor } from '@synergenius/flow-weaver/agent';
7
+ import { ASSISTANT_TOOLS } from './tool-registry.js';
8
+ export { ASSISTANT_TOOLS };
8
9
  export declare function createAssistantExecutor(projectDir: string): ToolExecutor;
9
10
  //# sourceMappingURL=assistant-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-tools.d.ts","sourceRoot":"","sources":["../../src/bot/assistant-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAcnF,eAAO,MAAM,eAAe,EAAE,cAAc,EAgS3C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAsSxE"}
1
+ {"version":3,"file":"assistant-tools.d.ts","sourceRoot":"","sources":["../../src/bot/assistant-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAMnF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,CAAC;AAS3B,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqSxE"}
@@ -8,6 +8,9 @@ import { execFileSync } from 'node:child_process';
8
8
  import * as fs from 'node:fs';
9
9
  import * as os from 'node:os';
10
10
  import * as path from 'node:path';
11
+ import { ASSISTANT_TOOLS } from './tool-registry.js';
12
+ import { isBlockedCommand, isBlockedUrl } from './safety.js';
13
+ export { ASSISTANT_TOOLS };
11
14
  // Shared bot manager instance
12
15
  let manager = null;
13
16
  function getManager() {
@@ -15,286 +18,6 @@ function getManager() {
15
18
  manager = new BotManager();
16
19
  return manager;
17
20
  }
18
- export const ASSISTANT_TOOLS = [
19
- // Bot management
20
- {
21
- name: 'bot_spawn',
22
- description: 'Start a new bot session. Returns the bot name and status.',
23
- inputSchema: {
24
- type: 'object',
25
- properties: {
26
- name: { type: 'string', description: 'Unique name for this bot (e.g. "fix-templates")' },
27
- project_dir: { type: 'string', description: 'Project directory for the bot to work in' },
28
- parallel: { type: 'number', description: 'Number of parallel tasks (1-5, default 1)' },
29
- deadline: { type: 'string', description: 'Stop time in HH:MM format (optional)' },
30
- branch: { type: 'string', description: 'Git branch for commits (keeps main clean, good for overnight runs)' },
31
- },
32
- required: ['name'],
33
- },
34
- },
35
- {
36
- name: 'bot_list',
37
- description: 'List all bot sessions with their status, task counts, and cost.',
38
- inputSchema: { type: 'object', properties: {}, required: [] },
39
- },
40
- {
41
- name: 'bot_status',
42
- description: 'Get detailed status of a specific bot including queue and recent activity.',
43
- inputSchema: {
44
- type: 'object',
45
- properties: { name: { type: 'string', description: 'Bot name' } },
46
- required: ['name'],
47
- },
48
- },
49
- {
50
- name: 'bot_pause',
51
- description: 'Pause a running bot. It will finish its current task then wait.',
52
- inputSchema: {
53
- type: 'object',
54
- properties: { name: { type: 'string', description: 'Bot name' } },
55
- required: ['name'],
56
- },
57
- },
58
- {
59
- name: 'bot_resume',
60
- description: 'Resume a paused bot.',
61
- inputSchema: {
62
- type: 'object',
63
- properties: { name: { type: 'string', description: 'Bot name' } },
64
- required: ['name'],
65
- },
66
- },
67
- {
68
- name: 'bot_stop',
69
- description: 'Gracefully stop a bot (finishes current task, then exits).',
70
- inputSchema: {
71
- type: 'object',
72
- properties: { name: { type: 'string', description: 'Bot name' } },
73
- required: ['name'],
74
- },
75
- },
76
- {
77
- name: 'bot_logs',
78
- description: 'Get recent output log from a bot.',
79
- inputSchema: {
80
- type: 'object',
81
- properties: {
82
- name: { type: 'string', description: 'Bot name' },
83
- lines: { type: 'number', description: 'Number of lines to return (default 30)' },
84
- },
85
- required: ['name'],
86
- },
87
- },
88
- // Queue management
89
- {
90
- name: 'queue_add',
91
- description: 'Add a task to a bot\'s queue.',
92
- inputSchema: {
93
- type: 'object',
94
- properties: {
95
- bot: { type: 'string', description: 'Bot name' },
96
- instruction: { type: 'string', description: 'Task instruction' },
97
- targets: { type: 'array', items: { type: 'string' }, description: 'Target files (optional)' },
98
- },
99
- required: ['bot', 'instruction'],
100
- },
101
- },
102
- {
103
- name: 'queue_add_batch',
104
- description: 'Add multiple tasks to a bot\'s queue at once.',
105
- inputSchema: {
106
- type: 'object',
107
- properties: {
108
- bot: { type: 'string', description: 'Bot name' },
109
- tasks: {
110
- type: 'array',
111
- items: {
112
- type: 'object',
113
- properties: {
114
- instruction: { type: 'string' },
115
- targets: { type: 'array', items: { type: 'string' } },
116
- },
117
- required: ['instruction'],
118
- },
119
- description: 'Array of tasks to add',
120
- },
121
- },
122
- required: ['bot', 'tasks'],
123
- },
124
- },
125
- {
126
- name: 'queue_list',
127
- description: 'List all tasks in a bot\'s queue with their status.',
128
- inputSchema: {
129
- type: 'object',
130
- properties: { bot: { type: 'string', description: 'Bot name' } },
131
- required: ['bot'],
132
- },
133
- },
134
- {
135
- name: 'queue_retry',
136
- description: 'Reset all failed tasks in a bot\'s queue to pending.',
137
- inputSchema: {
138
- type: 'object',
139
- properties: { bot: { type: 'string', description: 'Bot name' } },
140
- required: ['bot'],
141
- },
142
- },
143
- // Flow-weaver tools
144
- {
145
- name: 'fw_validate',
146
- description: 'Validate a workflow or directory of workflows. Returns errors and warnings.',
147
- inputSchema: {
148
- type: 'object',
149
- properties: { path: { type: 'string', description: 'File or directory path' } },
150
- required: ['path'],
151
- },
152
- },
153
- {
154
- name: 'fw_diagram',
155
- description: 'Generate a text diagram of a workflow.',
156
- inputSchema: {
157
- type: 'object',
158
- properties: { file: { type: 'string', description: 'Workflow file path' } },
159
- required: ['file'],
160
- },
161
- },
162
- {
163
- name: 'fw_describe',
164
- description: 'Get a natural language description of a workflow.',
165
- inputSchema: {
166
- type: 'object',
167
- properties: { file: { type: 'string', description: 'Workflow file path' } },
168
- required: ['file'],
169
- },
170
- },
171
- {
172
- name: 'fw_docs',
173
- description: 'Look up Flow Weaver documentation by topic. Topics: concepts, jsdoc-grammar, advanced-annotations, built-in-nodes, scaffold, node-conversion, patterns, error-codes, debugging, export-interface.',
174
- inputSchema: {
175
- type: 'object',
176
- properties: { topic: { type: 'string', description: 'Documentation topic slug' } },
177
- required: ['topic'],
178
- },
179
- },
180
- // Project tools
181
- {
182
- name: 'read_file',
183
- description: 'Read a file and return its contents.',
184
- inputSchema: {
185
- type: 'object',
186
- properties: { file: { type: 'string', description: 'File path' } },
187
- required: ['file'],
188
- },
189
- },
190
- {
191
- name: 'list_files',
192
- description: 'List files in a directory.',
193
- inputSchema: {
194
- type: 'object',
195
- properties: {
196
- directory: { type: 'string', description: 'Directory path' },
197
- pattern: { type: 'string', description: 'Filter pattern (regex, optional)' },
198
- },
199
- required: ['directory'],
200
- },
201
- },
202
- {
203
- name: 'run_shell',
204
- description: 'Run a shell command (read-only operations recommended).',
205
- inputSchema: {
206
- type: 'object',
207
- properties: { command: { type: 'string', description: 'Shell command to execute' } },
208
- required: ['command'],
209
- },
210
- },
211
- // Conversation management
212
- {
213
- name: 'conversation_list',
214
- description: 'List saved assistant conversations with message counts and timestamps.',
215
- inputSchema: { type: 'object', properties: {}, required: [] },
216
- },
217
- {
218
- name: 'conversation_delete',
219
- description: 'Delete a saved conversation by ID.',
220
- inputSchema: {
221
- type: 'object',
222
- properties: { id: { type: 'string', description: 'Conversation ID to delete' } },
223
- required: ['id'],
224
- },
225
- },
226
- {
227
- name: 'conversation_summary',
228
- description: 'Get a summary of the current conversation (message count, tokens, bots spawned).',
229
- inputSchema: { type: 'object', properties: {}, required: [] },
230
- },
231
- // Web access
232
- {
233
- name: 'web_fetch',
234
- description: 'Fetch HTTP content from a URL. Returns text body (max 10KB).',
235
- inputSchema: {
236
- type: 'object',
237
- properties: {
238
- url: { type: 'string', description: 'URL to fetch' },
239
- method: { type: 'string', description: 'HTTP method (default GET)', enum: ['GET', 'POST'] },
240
- },
241
- required: ['url'],
242
- },
243
- },
244
- // CI/CD
245
- {
246
- name: 'github_status',
247
- description: 'Check GitHub Actions status for a branch or PR. Requires gh CLI installed.',
248
- inputSchema: {
249
- type: 'object',
250
- properties: {
251
- branch: { type: 'string', description: 'Branch name (optional, defaults to current)' },
252
- pr: { type: 'number', description: 'PR number (optional, checks PR status instead of branch)' },
253
- },
254
- required: [],
255
- },
256
- },
257
- // Cross-repo
258
- {
259
- name: 'project_list',
260
- description: 'List known project directories that have been used with weaver.',
261
- inputSchema: { type: 'object', properties: {}, required: [] },
262
- },
263
- {
264
- name: 'project_context',
265
- description: 'Read package.json and .weaver-plan.md from a project directory to understand its context.',
266
- inputSchema: {
267
- type: 'object',
268
- properties: { directory: { type: 'string', description: 'Absolute path to project directory' } },
269
- required: ['directory'],
270
- },
271
- },
272
- // Diagrams
273
- {
274
- name: 'fw_diagram_mermaid',
275
- description: 'Generate a Mermaid diagram of a workflow (can be rendered in any Mermaid viewer).',
276
- inputSchema: {
277
- type: 'object',
278
- properties: { file: { type: 'string', description: 'Workflow file path' } },
279
- required: ['file'],
280
- },
281
- },
282
- // Knowledge
283
- {
284
- name: 'knowledge_list',
285
- description: 'List all stored knowledge entries for the current project.',
286
- inputSchema: { type: 'object', properties: {}, required: [] },
287
- },
288
- {
289
- name: 'knowledge_search',
290
- description: 'Search stored knowledge by keyword.',
291
- inputSchema: {
292
- type: 'object',
293
- properties: { query: { type: 'string', description: 'Search query' } },
294
- required: ['query'],
295
- },
296
- },
297
- ];
298
21
  export function createAssistantExecutor(projectDir) {
299
22
  const mgr = getManager();
300
23
  return async (name, args) => {
@@ -407,7 +130,7 @@ export function createAssistantExecutor(projectDir) {
407
130
  return { result: output.trim() || 'Validation complete.', isError: false };
408
131
  }
409
132
  case 'fw_diagram': {
410
- const output = execFileSync('npx', ['flow-weaver', 'diagram', String(args.file)], {
133
+ const output = execFileSync('npx', ['flow-weaver', 'diagram', String(args.file), '--format', 'ascii-compact'], {
411
134
  encoding: 'utf-8', cwd: projectDir, timeout: 15_000, stdio: ['pipe', 'pipe', 'pipe'],
412
135
  });
413
136
  return { result: output.trim(), isError: false };
@@ -450,8 +173,7 @@ export function createAssistantExecutor(projectDir) {
450
173
  case 'run_shell': {
451
174
  const cmd = String(args.command);
452
175
  // Safety: block destructive commands
453
- const blocked = ['rm -rf', 'git push', 'npm publish', 'sudo', 'curl|sh', 'wget|sh'];
454
- if (blocked.some(b => cmd.includes(b))) {
176
+ if (isBlockedCommand(cmd)) {
455
177
  return { result: `Blocked: "${cmd}" is not allowed.`, isError: true };
456
178
  }
457
179
  const output = execFileSync('sh', ['-c', cmd], {
@@ -497,7 +219,7 @@ export function createAssistantExecutor(projectDir) {
497
219
  }
498
220
  case 'web_fetch': {
499
221
  const url = String(args.url);
500
- if (/localhost|127\.0\.0\.1|0\.0\.0\.0|10\.\d|172\.(1[6-9]|2\d|3[01])\.|192\.168\./i.test(url)) {
222
+ if (isBlockedUrl(url)) {
501
223
  return { result: 'Blocked: cannot fetch internal/localhost URLs.', isError: true };
502
224
  }
503
225
  const resp = await fetch(url, { method: args.method ?? 'GET', signal: AbortSignal.timeout(15_000) });