@synergenius/flow-weaver-pack-weaver 0.9.199 → 0.9.201
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-chat-provider.js +5 -5
- package/dist/ai-chat-provider.js.map +1 -1
- package/dist/bot/acceptance-merge.d.ts +21 -0
- package/dist/bot/acceptance-merge.d.ts.map +1 -0
- package/dist/bot/acceptance-merge.js +46 -0
- package/dist/bot/acceptance-merge.js.map +1 -0
- package/dist/bot/ai-client.d.ts +14 -2
- package/dist/bot/ai-client.d.ts.map +1 -1
- package/dist/bot/ai-client.js +71 -24
- package/dist/bot/ai-client.js.map +1 -1
- package/dist/bot/assistant-tools.js +3 -3
- package/dist/bot/assistant-tools.js.map +1 -1
- package/dist/bot/audit-logger.d.ts.map +1 -1
- package/dist/bot/audit-logger.js +34 -14
- package/dist/bot/audit-logger.js.map +1 -1
- package/dist/bot/audit-trail.d.ts +67 -0
- package/dist/bot/audit-trail.d.ts.map +1 -0
- package/dist/bot/audit-trail.js +153 -0
- package/dist/bot/audit-trail.js.map +1 -0
- package/dist/bot/behavior-defaults.d.ts +1 -1
- package/dist/bot/behavior-defaults.d.ts.map +1 -1
- package/dist/bot/behavior-defaults.js +7 -3
- package/dist/bot/behavior-defaults.js.map +1 -1
- package/dist/bot/capability-registry.d.ts +9 -0
- package/dist/bot/capability-registry.d.ts.map +1 -1
- package/dist/bot/capability-registry.js +81 -27
- package/dist/bot/capability-registry.js.map +1 -1
- package/dist/bot/capability-types.d.ts +10 -0
- package/dist/bot/capability-types.d.ts.map +1 -1
- package/dist/bot/cli-provider.d.ts.map +1 -1
- package/dist/bot/cli-provider.js +8 -7
- package/dist/bot/cli-provider.js.map +1 -1
- package/dist/bot/preflight.d.ts +48 -0
- package/dist/bot/preflight.d.ts.map +1 -0
- package/dist/bot/preflight.js +247 -0
- package/dist/bot/preflight.js.map +1 -0
- package/dist/bot/provider-shim.d.ts +74 -0
- package/dist/bot/provider-shim.d.ts.map +1 -0
- package/dist/bot/provider-shim.js +176 -0
- package/dist/bot/provider-shim.js.map +1 -0
- package/dist/bot/runner.d.ts +2 -0
- package/dist/bot/runner.d.ts.map +1 -1
- package/dist/bot/runner.js +60 -17
- package/dist/bot/runner.js.map +1 -1
- package/dist/bot/step-executor.d.ts.map +1 -1
- package/dist/bot/step-executor.js +72 -115
- package/dist/bot/step-executor.js.map +1 -1
- package/dist/bot/swarm-controller.d.ts +2 -0
- package/dist/bot/swarm-controller.d.ts.map +1 -1
- package/dist/bot/swarm-controller.js +92 -20
- package/dist/bot/swarm-controller.js.map +1 -1
- package/dist/bot/task-create-handler.d.ts +37 -0
- package/dist/bot/task-create-handler.d.ts.map +1 -0
- package/dist/bot/task-create-handler.js +124 -0
- package/dist/bot/task-create-handler.js.map +1 -0
- package/dist/bot/task-store.d.ts +1 -0
- package/dist/bot/task-store.d.ts.map +1 -1
- package/dist/bot/task-store.js +67 -0
- package/dist/bot/task-store.js.map +1 -1
- package/dist/bot/types.d.ts +1 -1
- package/dist/bot/types.d.ts.map +1 -1
- package/dist/bot/weaver-tools.d.ts.map +1 -1
- package/dist/bot/weaver-tools.js +7 -39
- package/dist/bot/weaver-tools.js.map +1 -1
- package/dist/node-types/agent-execute.d.ts +25 -8
- package/dist/node-types/agent-execute.d.ts.map +1 -1
- package/dist/node-types/agent-execute.js +89 -23
- package/dist/node-types/agent-execute.js.map +1 -1
- package/dist/node-types/bot-report.d.ts.map +1 -1
- package/dist/node-types/bot-report.js +24 -3
- package/dist/node-types/bot-report.js.map +1 -1
- package/dist/node-types/plan-task.d.ts +8 -17
- package/dist/node-types/plan-task.d.ts.map +1 -1
- package/dist/node-types/plan-task.js +217 -256
- package/dist/node-types/plan-task.js.map +1 -1
- package/dist/node-types/review-result.js +8 -6
- package/dist/node-types/review-result.js.map +1 -1
- package/dist/palindrome.d.ts +9 -0
- package/dist/palindrome.d.ts.map +1 -0
- package/dist/palindrome.js +14 -0
- package/dist/palindrome.js.map +1 -0
- package/dist/ui/approval-card.js +91 -82
- package/dist/ui/bot-activity.js +73 -56
- package/dist/ui/bot-config.js +48 -31
- package/dist/ui/bot-dashboard.js +52 -36
- package/dist/ui/bot-panel.js +230 -228
- package/dist/ui/bot-slot-card.js +100 -90
- package/dist/ui/bot-status.js +37 -15
- package/dist/ui/budget-bar.js +57 -31
- package/dist/ui/capability-editor.js +447 -378
- package/dist/ui/chat-task-result.js +78 -71
- package/dist/ui/decision-log.js +68 -81
- package/dist/ui/genesis-block.js +86 -95
- package/dist/ui/instance-stream-view.js +722 -0
- package/dist/ui/profile-card.js +96 -221
- package/dist/ui/profile-editor.js +532 -575
- package/dist/ui/settings-section.js +41 -45
- package/dist/ui/swarm-controls.js +212 -135
- package/dist/ui/swarm-dashboard.js +3992 -2715
- package/dist/ui/task-detail-view.js +415 -521
- package/dist/ui/task-editor.js +339 -390
- package/dist/ui/task-pool-list.js +60 -55
- package/dist/workflows/src/palindrome.d.ts +11 -0
- package/dist/workflows/src/palindrome.d.ts.map +1 -0
- package/dist/workflows/src/palindrome.js +16 -0
- package/dist/workflows/src/palindrome.js.map +1 -0
- package/dist/workflows/tests/palindrome.test.d.ts +2 -0
- package/dist/workflows/tests/palindrome.test.d.ts.map +1 -0
- package/dist/workflows/tests/palindrome.test.js +41 -0
- package/dist/workflows/tests/palindrome.test.js.map +1 -0
- package/dist/workflows/weaver-bot-batch.js +1 -1
- package/dist/workflows/weaver-bot-batch.js.map +1 -1
- package/dist/workflows/weaver-bot.js +1 -1
- package/dist/workflows/weaver-bot.js.map +1 -1
- package/flowweaver.manifest.json +1 -1
- package/package.json +8 -2
- package/src/ai-chat-provider.ts +5 -5
- package/src/bot/acceptance-merge.ts +62 -0
- package/src/bot/ai-client.ts +77 -21
- package/src/bot/assistant-tools.ts +3 -3
- package/src/bot/audit-logger.ts +42 -14
- package/src/bot/audit-trail.ts +211 -0
- package/src/bot/behavior-defaults.ts +7 -2
- package/src/bot/capability-registry.ts +84 -28
- package/src/bot/capability-types.ts +11 -0
- package/src/bot/cli-provider.ts +8 -7
- package/src/bot/preflight.ts +285 -0
- package/src/bot/provider-shim.ts +218 -0
- package/src/bot/runner.ts +68 -20
- package/src/bot/step-executor.ts +69 -127
- package/src/bot/swarm-controller.ts +94 -20
- package/src/bot/task-create-handler.ts +164 -0
- package/src/bot/task-store.ts +83 -0
- package/src/bot/types.ts +4 -1
- package/src/bot/weaver-tools.ts +7 -45
- package/src/node-types/agent-execute.ts +102 -16
- package/src/node-types/bot-report.ts +24 -3
- package/src/node-types/plan-task.ts +238 -280
- package/src/node-types/review-result.ts +8 -6
- package/src/palindrome.ts +14 -0
- package/src/ui/approval-card.tsx +78 -62
- package/src/ui/bot-activity.tsx +12 -10
- package/src/ui/bot-config.tsx +12 -10
- package/src/ui/bot-dashboard.tsx +13 -11
- package/src/ui/bot-panel.tsx +189 -171
- package/src/ui/bot-slot-card.tsx +125 -70
- package/src/ui/bot-status.tsx +4 -4
- package/src/ui/budget-bar.tsx +86 -25
- package/src/ui/capability-editor.tsx +392 -257
- package/src/ui/chat-task-result.tsx +81 -78
- package/src/ui/decision-log.tsx +76 -73
- package/src/ui/genesis-block.tsx +91 -61
- package/src/ui/instance-stream-view.tsx +861 -0
- package/src/ui/profile-card.tsx +195 -168
- package/src/ui/profile-editor.tsx +453 -370
- package/src/ui/settings-section.tsx +46 -39
- package/src/ui/swarm-controls.tsx +252 -123
- package/src/ui/swarm-dashboard.tsx +999 -466
- package/src/ui/task-detail-view.tsx +485 -428
- package/src/ui/task-editor.tsx +329 -271
- package/src/ui/task-pool-list.tsx +68 -62
- package/src/workflows/src/palindrome.ts +16 -0
- package/src/workflows/tests/palindrome.test.ts +49 -0
- package/src/workflows/weaver-bot-batch.ts +1 -1
- package/src/workflows/weaver-bot.ts +1 -1
- package/dist/ui/bot-constants.d.ts +0 -14
- package/dist/ui/bot-constants.d.ts.map +0 -1
- package/dist/ui/bot-constants.js +0 -189
- package/dist/ui/bot-constants.js.map +0 -1
- package/dist/ui/steer-api.d.ts +0 -7
- package/dist/ui/steer-api.d.ts.map +0 -1
- package/dist/ui/steer-api.js +0 -11
- package/dist/ui/steer-api.js.map +0 -1
- package/dist/ui/trace-to-timeline.d.ts +0 -91
- package/dist/ui/trace-to-timeline.d.ts.map +0 -1
- package/dist/ui/trace-to-timeline.js +0 -116
- package/dist/ui/trace-to-timeline.js.map +0 -1
- package/dist/ui/use-stream-timeline.d.ts +0 -50
- package/dist/ui/use-stream-timeline.d.ts.map +0 -1
- package/dist/ui/use-stream-timeline.js +0 -245
- package/dist/ui/use-stream-timeline.js.map +0 -1
|
@@ -15,7 +15,7 @@ const CAP_CORE = {
|
|
|
15
15
|
prompt: `You are Weaver. Execute tasks by calling tools — do not describe what you would do.
|
|
16
16
|
|
|
17
17
|
## System Constraints
|
|
18
|
-
- All file paths
|
|
18
|
+
- All file paths MUST be relative to the workspace root (e.g. "src/index.ts", not "/home/user/project/src/index.ts"). NEVER use absolute paths. "../" is blocked.
|
|
19
19
|
- Writes that shrink a file >50% or write empty content are BLOCKED by the system.
|
|
20
20
|
- Blocked shell commands: rm -rf, git push, npm publish, sudo, curl|sh.`,
|
|
21
21
|
};
|
|
@@ -26,45 +26,68 @@ const CAP_ROLE_ORCHESTRATOR = {
|
|
|
26
26
|
name: 'role-orchestrator',
|
|
27
27
|
description: 'Orchestrator role: decomposes objectives into subtask DAGs.',
|
|
28
28
|
tools: [OP_TASK_CREATE, OP_LIST_FILES, OP_READ_FILE],
|
|
29
|
+
acceptance: [
|
|
30
|
+
{ name: 'subtasks-created', command: 'python3 -c "import json; tasks=json.load(open(\'.weaver/tasks.json\')); exit(0 if len(tasks)>=3 else 1)"' },
|
|
31
|
+
{ name: 'deps-defined', command: 'python3 -c "import json; tasks=json.load(open(\'.weaver/tasks.json\')); exit(0 if any(t.get(\'dependsOn\') for t in tasks) else 1)"' },
|
|
32
|
+
],
|
|
29
33
|
prompt: `## YOUR ROLE: Orchestrator
|
|
30
34
|
You decompose objectives into subtasks. You never write code or create files directly.
|
|
31
35
|
Your only output is task_create calls + done.
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
### Execution Planning Protocol
|
|
38
|
+
Before creating subtasks, you MUST:
|
|
39
|
+
1. Use list_files and read_file to read every source file. Map the dependency graph (which files import which).
|
|
40
|
+
2. IDENTIFY the critical path — the longest sequential chain. This is your bottleneck.
|
|
41
|
+
3. GROUP tasks to match worker count (shown in context as maxConcurrent=N).
|
|
42
|
+
- Each dependency level should have at most N parallel tasks.
|
|
43
|
+
- Combine small independent files into single tasks to reduce overhead.
|
|
44
|
+
- Separate high-risk files (many bugs/complexity) from clean ones.
|
|
45
|
+
- Never create more sequential levels than necessary.
|
|
46
|
+
4. SHOW YOUR REASONING in the first task_create description:
|
|
47
|
+
- Dependency graph you found
|
|
48
|
+
- Critical path identified
|
|
49
|
+
- Why you grouped tasks this way
|
|
40
50
|
|
|
41
|
-
###
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
51
|
+
### Task Creation Rules
|
|
52
|
+
- Create subtasks via task_create with parentId: "@self".
|
|
53
|
+
- Assign profiles: developer (code), reviewer (review), ops (infra/setup).
|
|
54
|
+
- Set dependsOn using task titles (resolved to IDs automatically).
|
|
55
|
+
- Fewer tasks with more work each > many tiny serial tasks.
|
|
56
|
+
- A file and its only dependent CAN be in the same task.
|
|
57
|
+
- Tests can be combined with the last implementation task.
|
|
58
|
+
- Your LAST subtask: "Review & Steer" assigned to orchestrator, dependsOn all others.
|
|
46
59
|
|
|
47
60
|
### Acceptance Criteria
|
|
48
61
|
Every subtask MUST have acceptance.checks — shell commands that verify "done" (exit 0 = pass).
|
|
62
|
+
Checks must test BEHAVIOR (run the code, import the module), not string patterns (grep for text).
|
|
49
63
|
The system runs them automatically after each run. If any fail, the task stays open.
|
|
50
64
|
Examples:
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
65
|
+
- Compiles: npx tsc --noEmit
|
|
66
|
+
- Tests pass: npx vitest run
|
|
67
|
+
- Module works: node -e "import('./src/db.js').then(m => process.exit(m.getById ? 0 : 1))"
|
|
68
|
+
- File exists: test -f src/types.ts
|
|
69
|
+
|
|
70
|
+
### Design First
|
|
71
|
+
For multi-file projects, your FIRST subtask should create a .design.md with:
|
|
72
|
+
- Module map: which files, what each exports (function signatures with types)
|
|
73
|
+
- Conventions: naming, error handling, patterns
|
|
74
|
+
All subsequent developer tasks must read .design.md before writing code.
|
|
55
75
|
|
|
56
76
|
### Steering Mode (when running a Review & Steer task)
|
|
57
77
|
Read the sibling task list in your context — it shows status, run count, and check failures with error details.
|
|
58
78
|
- All checks pass → done.
|
|
59
79
|
- Tasks with 0 runs still open → they will be picked up, do not recreate them.
|
|
60
|
-
- Checks failing → read the specific error in the check detail, then create a targeted fix task addressing that exact error.
|
|
80
|
+
- Checks failing → read the specific error in the check detail, then create a targeted fix task addressing that exact error.
|
|
61
81
|
- Task stagnant (3+ failed runs) → redefine with smaller scope or reassign to different profile.
|
|
62
|
-
- Before creating ANY task, check if an existing open sibling already covers the same work.
|
|
82
|
+
- Before creating ANY task, check if an existing open sibling already covers the same work.
|
|
63
83
|
- After creating fix tasks, create one more Review & Steer depending on them, then done.`,
|
|
64
84
|
};
|
|
65
85
|
const CAP_ROLE_DEVELOPER = {
|
|
66
86
|
name: 'role-developer',
|
|
67
87
|
description: 'Developer role: writes code, creates files, runs commands.',
|
|
88
|
+
acceptance: [
|
|
89
|
+
{ name: 'file-changes-produced', command: 'test $(find src tests -name "*.ts" -newer .weaver/swarm.json 2>/dev/null | wc -l) -gt 0 || test $(find src tests -name "*.js" -newer .weaver/swarm.json 2>/dev/null | wc -l) -gt 0', condition: 'src' },
|
|
90
|
+
],
|
|
68
91
|
prompt: `## YOUR ROLE: Developer
|
|
69
92
|
You write code and produce files. Execute the task directly — do not delegate.
|
|
70
93
|
|
|
@@ -112,8 +135,8 @@ const CAP_SHELL = {
|
|
|
112
135
|
};
|
|
113
136
|
const CAP_TASK_MGMT = {
|
|
114
137
|
name: 'task-mgmt',
|
|
115
|
-
description: 'Create swarm subtasks.',
|
|
116
|
-
tools: [OP_TASK_CREATE],
|
|
138
|
+
description: 'Create and inspect swarm subtasks.',
|
|
139
|
+
tools: [OP_TASK_CREATE, 'task_list', 'task_get', 'task_update'],
|
|
117
140
|
prompt: `## Task Management
|
|
118
141
|
- task_create(title, description?, assignedProfile?, parentId?, dependsOn?, complexity?, acceptance?):
|
|
119
142
|
Creates a subtask in the swarm task pool. Returns task ID.
|
|
@@ -122,6 +145,9 @@ const CAP_TASK_MGMT = {
|
|
|
122
145
|
- assignedProfile: "developer" | "reviewer" | "ops" | "orchestrator". Omit for auto-routing.
|
|
123
146
|
- parentId: "@self" to nest under current task. Omit for top-level.
|
|
124
147
|
- dependsOn: Array of task titles. Resolved to IDs automatically.
|
|
148
|
+
- task_list(status?): List tasks in the swarm. Optionally filter by status (pending, in-progress, done, failed).
|
|
149
|
+
- task_get(id): Get full details of a specific task.
|
|
150
|
+
- task_update(id, notes?, files?, description?): Update a task's notes, files list, or description.
|
|
125
151
|
- complexity: "trivial" | "simple" | "moderate" | "complex".
|
|
126
152
|
- acceptance: { checks: [{ name: string, command: string }] } — shell commands that exit 0 on success.`,
|
|
127
153
|
};
|
|
@@ -229,17 +255,22 @@ const CAP_VERIFICATION = {
|
|
|
229
255
|
name: 'verification',
|
|
230
256
|
description: 'TypeScript compilation and test runner verification.',
|
|
231
257
|
tools: [OP_RUN_SHELL],
|
|
258
|
+
acceptance: [
|
|
259
|
+
{ name: 'tsc-compiles', command: 'npx tsc --noEmit', condition: "find src -name '*.ts' | head -1 | grep -q ." },
|
|
260
|
+
],
|
|
232
261
|
prompt: `## Verification
|
|
233
|
-
|
|
234
|
-
-
|
|
262
|
+
Use run_shell for compilation and test verification:
|
|
263
|
+
- npx tsc --noEmit — returns TypeScript compilation errors or empty on success.
|
|
264
|
+
- npx vitest run — returns test results with pass/fail counts.`,
|
|
235
265
|
};
|
|
236
266
|
const CAP_CROSS_FILE_CHECK = {
|
|
237
267
|
name: 'cross-file-check',
|
|
238
268
|
description: 'Cross-file dependency verification.',
|
|
239
269
|
tools: [OP_READ_FILE, OP_LIST_FILES, OP_RUN_SHELL],
|
|
240
270
|
prompt: `## Cross-File Checks
|
|
241
|
-
Use
|
|
242
|
-
|
|
271
|
+
Use list_files to find relevant files, read_file to inspect them,
|
|
272
|
+
and run_shell with grep to find all import/export references across files.
|
|
273
|
+
Verify import paths resolve to actual exports.`,
|
|
243
274
|
};
|
|
244
275
|
const CAP_PROJECT_SETUP = {
|
|
245
276
|
name: 'project-setup',
|
|
@@ -254,7 +285,7 @@ const CAP_SECURITY = {
|
|
|
254
285
|
description: 'Security audit tools.',
|
|
255
286
|
tools: [OP_READ_FILE, OP_LIST_FILES, OP_RUN_SHELL],
|
|
256
287
|
prompt: `## Security
|
|
257
|
-
Use
|
|
288
|
+
Use list_files to discover files, read_file to inspect them, and run_shell with grep to scan for hardcoded secrets, eval(), shell injection patterns.
|
|
258
289
|
Use npm audit (via run_shell) for dependency vulnerabilities.
|
|
259
290
|
Finding format: FILE:LINE | SEVERITY (critical/high/medium/low) | ISSUE.`,
|
|
260
291
|
};
|
|
@@ -323,7 +354,7 @@ export const BUILT_IN_CAPABILITIES = [
|
|
|
323
354
|
// ---------------------------------------------------------------------------
|
|
324
355
|
/** Capability pools per profile role. Triage selects from these per task. */
|
|
325
356
|
export const PROFILE_CAPABILITIES = {
|
|
326
|
-
orchestrator: ['core', 'role-orchestrator', 'decomposition', 'routing', 'task-mgmt', 'context'],
|
|
357
|
+
orchestrator: ['core', 'role-orchestrator', 'decomposition', 'routing', 'task-mgmt', 'shell', 'context'],
|
|
327
358
|
developer: ['core', 'role-developer', 'file-ops', 'shell', 'verification', 'cross-file-check', 'context'],
|
|
328
359
|
'fw-developer': ['core', 'role-developer', 'file-ops', 'shell', 'verification', 'cross-file-check', 'fw-grammar', 'fw-validate', 'fw-cli', 'context'],
|
|
329
360
|
reviewer: ['core', 'role-reviewer', 'code-review', 'security', 'context'],
|
|
@@ -334,6 +365,29 @@ const capabilityMap = new Map(BUILT_IN_CAPABILITIES.map(c => [c.name, c]));
|
|
|
334
365
|
export function getCapability(name) {
|
|
335
366
|
return capabilityMap.get(name);
|
|
336
367
|
}
|
|
368
|
+
/**
|
|
369
|
+
* Collect all acceptance checks from a profile's capabilities.
|
|
370
|
+
* Deduplicates by check name — first occurrence wins.
|
|
371
|
+
*/
|
|
372
|
+
export function getCapabilityAcceptanceChecks(profileId) {
|
|
373
|
+
const capNames = PROFILE_CAPABILITIES[profileId];
|
|
374
|
+
if (!capNames)
|
|
375
|
+
return [];
|
|
376
|
+
const seen = new Set();
|
|
377
|
+
const checks = [];
|
|
378
|
+
for (const capName of capNames) {
|
|
379
|
+
const cap = capabilityMap.get(capName);
|
|
380
|
+
if (!cap?.acceptance)
|
|
381
|
+
continue;
|
|
382
|
+
for (const check of cap.acceptance) {
|
|
383
|
+
if (!seen.has(check.name)) {
|
|
384
|
+
seen.add(check.name);
|
|
385
|
+
checks.push(check);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return checks;
|
|
390
|
+
}
|
|
337
391
|
/** List all available capabilities. */
|
|
338
392
|
export function listCapabilities() {
|
|
339
393
|
return [...BUILT_IN_CAPABILITIES];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../src/bot/capability-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EACzD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EACrD,cAAc,EAAE,QAAQ,EAAE,SAAS,GACpC,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,QAAQ,GAAyB;IACrC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,qDAAqD;IAClE,MAAM,EAAE;;;;;wEAK8D;CACvE,CAAC;AAEF,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,qBAAqB,GAAyB;IAClD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,6DAA6D;IAC1E,KAAK,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;IACpD,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../src/bot/capability-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
* Built-in capabilities ship with the pack. Custom capabilities can be
|
|
11
11
|
* added per-workspace via .weaver/capabilities/.
|
|
12
12
|
*/
|
|
13
|
+
export interface CapabilityAcceptanceCheck {
|
|
14
|
+
/** Human-readable check name (e.g. 'compiles', 'tests-pass'). */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Shell command that exits 0 on success. */
|
|
17
|
+
command: string;
|
|
18
|
+
/** Only run if this file exists in the workspace (e.g. 'tsconfig.json'). */
|
|
19
|
+
condition?: string;
|
|
20
|
+
}
|
|
13
21
|
export interface CapabilityDefinition {
|
|
14
22
|
/** Unique identifier (e.g. 'typescript', 'fw-grammar'). */
|
|
15
23
|
name: string;
|
|
@@ -19,5 +27,7 @@ export interface CapabilityDefinition {
|
|
|
19
27
|
prompt: string;
|
|
20
28
|
/** Tool operation names this capability grants (e.g. ['write_file', 'patch_file']). */
|
|
21
29
|
tools?: string[];
|
|
30
|
+
/** Deterministic acceptance checks auto-merged into every task using this capability. */
|
|
31
|
+
acceptance?: CapabilityAcceptanceCheck[];
|
|
22
32
|
}
|
|
23
33
|
//# sourceMappingURL=capability-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-types.d.ts","sourceRoot":"","sources":["../../src/bot/capability-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"capability-types.d.ts","sourceRoot":"","sources":["../../src/bot/capability-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,yFAAyF;IACzF,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-provider.d.ts","sourceRoot":"","sources":["../../src/bot/cli-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;gBAEd,GAAG,EAAE,YAAY,GAAG,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;IAKvD,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA+B7B,MAAM,CAAC,OAAO,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,aAAa,CAAC,WAAW,CAAC;IAmBxB,eAAe,CAAC,OAAO,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,cAAc,EAAE,CAAC;KACzB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;YAK9D,SAAS;
|
|
1
|
+
{"version":3,"file":"cli-provider.d.ts","sourceRoot":"","sources":["../../src/bot/cli-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAUhH,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;gBAEd,GAAG,EAAE,YAAY,GAAG,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;IAKvD,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA+B7B,MAAM,CAAC,OAAO,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,aAAa,CAAC,WAAW,CAAC;IAmBxB,eAAe,CAAC,OAAO,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,cAAc,EAAE,CAAC;KACzB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;YAK9D,SAAS;IAsExB,OAAO,CAAC,SAAS;CAgBlB"}
|
package/dist/bot/cli-provider.js
CHANGED
|
@@ -58,13 +58,14 @@ export class CliAgentProvider {
|
|
|
58
58
|
return { result };
|
|
59
59
|
}
|
|
60
60
|
async *streamRaw(userPrompt, systemPrompt) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
// Use centralized CLI config — enforces --tools "" and --strict-mcp-config
|
|
62
|
+
const { getCliBaseArgs } = await import('@synergenius/flow-weaver/agent');
|
|
63
|
+
const args = getCliBaseArgs({
|
|
64
|
+
model: this.model,
|
|
65
|
+
systemPrompt,
|
|
66
|
+
outputFormat: 'stream-json',
|
|
67
|
+
includePartialMessages: true,
|
|
68
|
+
});
|
|
68
69
|
const child = spawn('claude', args, {
|
|
69
70
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
70
71
|
env: childEnv,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-provider.js","sourceRoot":"","sources":["../../src/bot/cli-provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-provider.js","sourceRoot":"","sources":["../../src/bot/cli-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-flight validator — runs before the swarm starts to catch config bugs.
|
|
3
|
+
*
|
|
4
|
+
* Validates that the tool pipeline is intact:
|
|
5
|
+
* 1. Every BOT_TOOLS entry has a TOOL_SCHEMAS entry (schema completeness)
|
|
6
|
+
* 2. Every schema'd tool has an execution handler (handler completeness)
|
|
7
|
+
* 3. Every mode's resolveToolsForTask produces only schema'd tools
|
|
8
|
+
* 4. Capability-granted tools are all schema'd
|
|
9
|
+
* 5. MCP bridge round-trip (create bridge, call tool via socket, verify result)
|
|
10
|
+
*
|
|
11
|
+
* Fails fast with clear error messages before any AI calls are made.
|
|
12
|
+
*/
|
|
13
|
+
export interface PreflightError {
|
|
14
|
+
check: string;
|
|
15
|
+
tool: string;
|
|
16
|
+
message: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PreflightResult {
|
|
19
|
+
passed: boolean;
|
|
20
|
+
errors: PreflightError[];
|
|
21
|
+
warnings: PreflightError[];
|
|
22
|
+
checks: {
|
|
23
|
+
name: string;
|
|
24
|
+
passed: boolean;
|
|
25
|
+
count: number;
|
|
26
|
+
}[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run all pre-flight checks. Returns a result with errors and warnings.
|
|
30
|
+
* Call this before starting the swarm — if errors exist, abort.
|
|
31
|
+
*/
|
|
32
|
+
export declare function runPreflight(options?: {
|
|
33
|
+
capabilities?: string[];
|
|
34
|
+
mode?: string;
|
|
35
|
+
}): PreflightResult;
|
|
36
|
+
/**
|
|
37
|
+
* Runtime check: create a real MCP bridge, send a test tool call through the
|
|
38
|
+
* Unix socket, verify the round-trip. Catches MCP tool server startup failures,
|
|
39
|
+
* socket connectivity issues, and executor wiring bugs.
|
|
40
|
+
*
|
|
41
|
+
* Returns a PreflightResult that can be merged with the static checks.
|
|
42
|
+
*/
|
|
43
|
+
export declare function runBridgePreflight(): Promise<PreflightResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Format preflight result for console output.
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatPreflightResult(result: PreflightResult): string;
|
|
48
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/bot/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,eAAe,CAyFlB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAoGnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAiCrE"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-flight validator — runs before the swarm starts to catch config bugs.
|
|
3
|
+
*
|
|
4
|
+
* Validates that the tool pipeline is intact:
|
|
5
|
+
* 1. Every BOT_TOOLS entry has a TOOL_SCHEMAS entry (schema completeness)
|
|
6
|
+
* 2. Every schema'd tool has an execution handler (handler completeness)
|
|
7
|
+
* 3. Every mode's resolveToolsForTask produces only schema'd tools
|
|
8
|
+
* 4. Capability-granted tools are all schema'd
|
|
9
|
+
* 5. MCP bridge round-trip (create bridge, call tool via socket, verify result)
|
|
10
|
+
*
|
|
11
|
+
* Fails fast with clear error messages before any AI calls are made.
|
|
12
|
+
*/
|
|
13
|
+
import * as net from 'node:net';
|
|
14
|
+
import * as fs from 'node:fs';
|
|
15
|
+
import { ALL_TOOLS, BOT_TOOLS, resolveToolsForTask } from './tool-registry.js';
|
|
16
|
+
import { TOOL_SCHEMAS } from '../node-types/plan-task.js';
|
|
17
|
+
// Known execution handlers — tools handled by weaver-tools.ts (bot context)
|
|
18
|
+
// and assistant-tools.ts (assistant context). Maintained manually because
|
|
19
|
+
// the handlers are switch/case statements, not a registry.
|
|
20
|
+
const WEAVER_TOOL_HANDLERS = new Set([
|
|
21
|
+
'read_file', 'write_file', 'patch_file', 'list_files', 'run_shell',
|
|
22
|
+
'validate', 'tsc_check', 'run_tests', 'learn', 'recall', 'remember',
|
|
23
|
+
'web_fetch', 'task_create', 'task_list', 'task_get', 'task_update',
|
|
24
|
+
'ask_user', 'done', 'complete', 'respond',
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* Run all pre-flight checks. Returns a result with errors and warnings.
|
|
28
|
+
* Call this before starting the swarm — if errors exist, abort.
|
|
29
|
+
*/
|
|
30
|
+
export function runPreflight(options) {
|
|
31
|
+
const errors = [];
|
|
32
|
+
const warnings = [];
|
|
33
|
+
const checks = [];
|
|
34
|
+
// 1. Schema completeness — every BOT_TOOLS entry has a TOOL_SCHEMAS entry
|
|
35
|
+
{
|
|
36
|
+
const missing = BOT_TOOLS
|
|
37
|
+
.map(t => t.name)
|
|
38
|
+
.filter(name => !TOOL_SCHEMAS[name]);
|
|
39
|
+
checks.push({
|
|
40
|
+
name: 'schema-completeness',
|
|
41
|
+
passed: missing.length === 0,
|
|
42
|
+
count: BOT_TOOLS.length - missing.length,
|
|
43
|
+
});
|
|
44
|
+
for (const name of missing) {
|
|
45
|
+
errors.push({
|
|
46
|
+
check: 'schema-completeness',
|
|
47
|
+
tool: name,
|
|
48
|
+
message: `Tool '${name}' is in BOT_TOOLS (described in system prompt) but has no TOOL_SCHEMAS entry. The model will see it but cannot call it.`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// 2. Handler completeness — every TOOL_SCHEMAS entry has an execution handler
|
|
53
|
+
{
|
|
54
|
+
const schemaNames = Object.keys(TOOL_SCHEMAS);
|
|
55
|
+
const missing = schemaNames.filter(name => !WEAVER_TOOL_HANDLERS.has(name));
|
|
56
|
+
checks.push({
|
|
57
|
+
name: 'handler-completeness',
|
|
58
|
+
passed: missing.length === 0,
|
|
59
|
+
count: schemaNames.length - missing.length,
|
|
60
|
+
});
|
|
61
|
+
for (const name of missing) {
|
|
62
|
+
errors.push({
|
|
63
|
+
check: 'handler-completeness',
|
|
64
|
+
tool: name,
|
|
65
|
+
message: `Tool '${name}' has a TOOL_SCHEMAS entry but no execution handler in weaver-tools.ts or assistant-tools.ts. Calls will return "Unknown tool".`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// 3. Mode consistency — every mode produces only schema'd tools
|
|
70
|
+
{
|
|
71
|
+
let modeErrors = 0;
|
|
72
|
+
for (const mode of ['create', 'modify', 'read', 'batch']) {
|
|
73
|
+
const modeTools = resolveToolsForTask({ mode });
|
|
74
|
+
for (const name of modeTools) {
|
|
75
|
+
if (!TOOL_SCHEMAS[name]) {
|
|
76
|
+
modeErrors++;
|
|
77
|
+
errors.push({
|
|
78
|
+
check: 'mode-consistency',
|
|
79
|
+
tool: name,
|
|
80
|
+
message: `Mode '${mode}' grants tool '${name}' via resolveToolsForTask but it has no TOOL_SCHEMAS entry.`,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
checks.push({
|
|
86
|
+
name: 'mode-consistency',
|
|
87
|
+
passed: modeErrors === 0,
|
|
88
|
+
count: 4 - (modeErrors > 0 ? 1 : 0),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// 4. Registry-schema alignment — every ALL_TOOLS entry should have a schema
|
|
92
|
+
{
|
|
93
|
+
const allNames = ALL_TOOLS.map(t => t.name);
|
|
94
|
+
const missing = allNames.filter(name => !TOOL_SCHEMAS[name]);
|
|
95
|
+
checks.push({
|
|
96
|
+
name: 'registry-schema-alignment',
|
|
97
|
+
passed: true, // warnings only — not a blocker
|
|
98
|
+
count: allNames.length - missing.length,
|
|
99
|
+
});
|
|
100
|
+
for (const name of missing) {
|
|
101
|
+
warnings.push({
|
|
102
|
+
check: 'registry-schema-alignment',
|
|
103
|
+
tool: name,
|
|
104
|
+
message: `Tool '${name}' is in ALL_TOOLS but has no TOOL_SCHEMAS entry. If it's a bot-only or assistant-only tool, this may be intentional.`,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
passed: errors.length === 0,
|
|
110
|
+
errors,
|
|
111
|
+
warnings,
|
|
112
|
+
checks,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Runtime check: create a real MCP bridge, send a test tool call through the
|
|
117
|
+
* Unix socket, verify the round-trip. Catches MCP tool server startup failures,
|
|
118
|
+
* socket connectivity issues, and executor wiring bugs.
|
|
119
|
+
*
|
|
120
|
+
* Returns a PreflightResult that can be merged with the static checks.
|
|
121
|
+
*/
|
|
122
|
+
export async function runBridgePreflight() {
|
|
123
|
+
const errors = [];
|
|
124
|
+
const checks = [];
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
126
|
+
let bridge = null;
|
|
127
|
+
try {
|
|
128
|
+
const { createMcpBridge } = await import('@synergenius/flow-weaver/agent');
|
|
129
|
+
const { WEAVER_TOOLS } = await import('./weaver-tools.js');
|
|
130
|
+
// Create a bridge with a test executor
|
|
131
|
+
let testCallReceived = false;
|
|
132
|
+
bridge = await createMcpBridge(WEAVER_TOOLS.slice(0, 1), // one tool is enough
|
|
133
|
+
async (name) => {
|
|
134
|
+
testCallReceived = true;
|
|
135
|
+
return { result: `preflight-ok:${name}`, isError: false };
|
|
136
|
+
});
|
|
137
|
+
// 5a. Config file exists and is valid JSON
|
|
138
|
+
const configExists = fs.existsSync(bridge.configPath);
|
|
139
|
+
if (!configExists) {
|
|
140
|
+
errors.push({ check: 'bridge-config', tool: '', message: 'MCP bridge config file not created' });
|
|
141
|
+
checks.push({ name: 'bridge-config', passed: false, count: 0 });
|
|
142
|
+
return { passed: false, errors, warnings: [], checks };
|
|
143
|
+
}
|
|
144
|
+
const config = JSON.parse(fs.readFileSync(bridge.configPath, 'utf-8'));
|
|
145
|
+
const serverConfig = config?.mcpServers?.['fw-agent'];
|
|
146
|
+
if (!serverConfig) {
|
|
147
|
+
errors.push({ check: 'bridge-config', tool: '', message: 'MCP config missing fw-agent server entry' });
|
|
148
|
+
checks.push({ name: 'bridge-config', passed: false, count: 0 });
|
|
149
|
+
return { passed: false, errors, warnings: [], checks };
|
|
150
|
+
}
|
|
151
|
+
checks.push({ name: 'bridge-config', passed: true, count: 1 });
|
|
152
|
+
// 5b. Socket is listening and accepts connections
|
|
153
|
+
const socketPath = serverConfig.env?.FW_TOOL_SOCKET;
|
|
154
|
+
if (!socketPath || !fs.existsSync(socketPath)) {
|
|
155
|
+
errors.push({ check: 'bridge-socket', tool: '', message: `Bridge socket not found: ${socketPath}` });
|
|
156
|
+
checks.push({ name: 'bridge-socket', passed: false, count: 0 });
|
|
157
|
+
return { passed: false, errors, warnings: [], checks };
|
|
158
|
+
}
|
|
159
|
+
checks.push({ name: 'bridge-socket', passed: true, count: 1 });
|
|
160
|
+
// 5c. Round-trip: send a tool call, get a result
|
|
161
|
+
const toolName = WEAVER_TOOLS[0]?.name ?? 'test';
|
|
162
|
+
const roundTripResult = await new Promise((resolve, reject) => {
|
|
163
|
+
const client = net.createConnection(socketPath, () => {
|
|
164
|
+
client.write(JSON.stringify({ name: toolName, args: {} }) + '\n');
|
|
165
|
+
});
|
|
166
|
+
let buf = '';
|
|
167
|
+
client.on('data', (chunk) => { buf += chunk.toString(); });
|
|
168
|
+
client.on('end', () => {
|
|
169
|
+
try {
|
|
170
|
+
resolve(JSON.parse(buf.trim()));
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
reject(new Error(`Invalid bridge response: ${buf.slice(0, 200)}`));
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
client.on('error', (err) => reject(err));
|
|
177
|
+
setTimeout(() => { client.destroy(); reject(new Error('Bridge socket round-trip timed out (5s)')); }, 5000);
|
|
178
|
+
});
|
|
179
|
+
const roundTripOk = roundTripResult.result.startsWith('preflight-ok:') && testCallReceived;
|
|
180
|
+
if (!roundTripOk) {
|
|
181
|
+
errors.push({
|
|
182
|
+
check: 'bridge-roundtrip',
|
|
183
|
+
tool: toolName,
|
|
184
|
+
message: `Bridge round-trip failed: received=${JSON.stringify(roundTripResult).slice(0, 200)}, callReceived=${testCallReceived}`,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
checks.push({ name: 'bridge-roundtrip', passed: roundTripOk, count: roundTripOk ? 1 : 0 });
|
|
188
|
+
// 5d. Tool server script exists
|
|
189
|
+
const scriptArgs = serverConfig.args ?? [];
|
|
190
|
+
const scriptPath = scriptArgs[scriptArgs.length - 1];
|
|
191
|
+
const scriptExists = scriptPath && (fs.existsSync(scriptPath) ||
|
|
192
|
+
fs.existsSync(scriptPath.replace(/\.ts$/, '.js')) ||
|
|
193
|
+
fs.existsSync(scriptPath.replace(/\.js$/, '.ts')));
|
|
194
|
+
if (!scriptExists) {
|
|
195
|
+
errors.push({ check: 'bridge-script', tool: '', message: `MCP tool server script not found: ${scriptPath}` });
|
|
196
|
+
}
|
|
197
|
+
checks.push({ name: 'bridge-script', passed: !!scriptExists, count: scriptExists ? 1 : 0 });
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
201
|
+
errors.push({ check: 'bridge-runtime', tool: '', message: `MCP bridge preflight failed: ${msg}` });
|
|
202
|
+
checks.push({ name: 'bridge-runtime', passed: false, count: 0 });
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
bridge?.cleanup();
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
passed: errors.length === 0,
|
|
209
|
+
errors,
|
|
210
|
+
warnings: [],
|
|
211
|
+
checks,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Format preflight result for console output.
|
|
216
|
+
*/
|
|
217
|
+
export function formatPreflightResult(result) {
|
|
218
|
+
const lines = ['[swarm-preflight] Validating tool pipeline...'];
|
|
219
|
+
for (const check of result.checks) {
|
|
220
|
+
const icon = check.passed ? '✓' : '✗';
|
|
221
|
+
lines.push(` ${icon} ${check.name} (${check.count} passed)`);
|
|
222
|
+
}
|
|
223
|
+
if (result.errors.length > 0) {
|
|
224
|
+
lines.push('');
|
|
225
|
+
lines.push(`Errors (${result.errors.length}):`);
|
|
226
|
+
for (const err of result.errors) {
|
|
227
|
+
lines.push(` ✗ [${err.check}] ${err.tool}: ${err.message}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (result.warnings.length > 0) {
|
|
231
|
+
lines.push('');
|
|
232
|
+
lines.push(`Warnings (${result.warnings.length}):`);
|
|
233
|
+
for (const warn of result.warnings) {
|
|
234
|
+
lines.push(` ⚠ [${warn.check}] ${warn.tool}: ${warn.message}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (result.passed) {
|
|
238
|
+
lines.push('');
|
|
239
|
+
lines.push('Preflight passed. Tool pipeline is intact.');
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
lines.push('');
|
|
243
|
+
lines.push(`Preflight FAILED: ${result.errors.length} error(s). Fix before starting swarm.`);
|
|
244
|
+
}
|
|
245
|
+
return lines.join('\n');
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/bot/preflight.ts"],"names":[],"mappings":"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"}
|