expxagents 0.18.2 → 0.20.0

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 (53) hide show
  1. package/assets/core/solution-architect.agent.md +71 -0
  2. package/assets/mcps/_catalog.yaml +17 -0
  3. package/assets/mcps/figma.mcp.yaml +35 -0
  4. package/assets/mcps/github.mcp.yaml +44 -0
  5. package/assets/mcps/linear.mcp.yaml +37 -0
  6. package/assets/mcps/notion.mcp.yaml +37 -0
  7. package/assets/mcps/pencil.mcp.yaml +32 -0
  8. package/assets/mcps/postgresql.mcp.yaml +39 -0
  9. package/assets/mcps/sentry.mcp.yaml +41 -0
  10. package/assets/mcps/slack.mcp.yaml +37 -0
  11. package/assets/mcps/vercel.mcp.yaml +39 -0
  12. package/dist/cli/src/commands/doctor.js +26 -0
  13. package/dist/cli/src/commands/init.js +43 -0
  14. package/dist/cli/src/commands/mcp.d.ts +2 -0
  15. package/dist/cli/src/commands/mcp.js +155 -0
  16. package/dist/cli/src/commands/sync-templates.d.ts +1 -0
  17. package/dist/cli/src/commands/sync-templates.js +125 -0
  18. package/dist/cli/src/index.js +7 -0
  19. package/dist/cli/src/mcp/__tests__/catalog.test.d.ts +1 -0
  20. package/dist/cli/src/mcp/__tests__/catalog.test.js +101 -0
  21. package/dist/cli/src/mcp/__tests__/detect.test.d.ts +1 -0
  22. package/dist/cli/src/mcp/__tests__/detect.test.js +84 -0
  23. package/dist/cli/src/mcp/__tests__/setup.test.d.ts +1 -0
  24. package/dist/cli/src/mcp/__tests__/setup.test.js +75 -0
  25. package/dist/cli/src/mcp/__tests__/validate.test.d.ts +1 -0
  26. package/dist/cli/src/mcp/__tests__/validate.test.js +42 -0
  27. package/dist/cli/src/mcp/catalog.d.ts +4 -0
  28. package/dist/cli/src/mcp/catalog.js +53 -0
  29. package/dist/cli/src/mcp/detect.d.ts +9 -0
  30. package/dist/cli/src/mcp/detect.js +75 -0
  31. package/dist/cli/src/mcp/setup.d.ts +4 -0
  32. package/dist/cli/src/mcp/setup.js +56 -0
  33. package/dist/cli/src/mcp/types.d.ts +68 -0
  34. package/dist/cli/src/mcp/types.js +1 -0
  35. package/dist/cli/src/mcp/validate.d.ts +2 -0
  36. package/dist/cli/src/mcp/validate.js +23 -0
  37. package/dist/cli/src/pencil/__tests__/detect.test.d.ts +1 -0
  38. package/dist/cli/src/pencil/__tests__/detect.test.js +71 -0
  39. package/dist/cli/src/pencil/__tests__/property-mapper.test.d.ts +1 -0
  40. package/dist/cli/src/pencil/__tests__/property-mapper.test.js +120 -0
  41. package/dist/cli/src/pencil/__tests__/template-sync.test.d.ts +1 -0
  42. package/dist/cli/src/pencil/__tests__/template-sync.test.js +95 -0
  43. package/dist/cli/src/pencil/detect.d.ts +21 -0
  44. package/dist/cli/src/pencil/detect.js +23 -0
  45. package/dist/cli/src/pencil/property-mapper.d.ts +41 -0
  46. package/dist/cli/src/pencil/property-mapper.js +106 -0
  47. package/dist/cli/src/pencil/template-sync.d.ts +36 -0
  48. package/dist/cli/src/pencil/template-sync.js +75 -0
  49. package/dist/core/squad-loader.d.ts +7 -0
  50. package/dist/core/squad-loader.js +12 -0
  51. package/dist/server/scheduler/__tests__/job-runner.test.js +2 -2
  52. package/dist/server/scheduler/__tests__/job-runner.test.js.map +1 -1
  53. package/package.json +1 -1
@@ -197,6 +197,75 @@ Create `_memory/memories.md` for squad-level learning.
197
197
  2. **Agent instructions** must include: "Before producing any visual output, read `squads/design-system/_memory/design-tokens.md` for colors, fonts, and spacing. Read `squads/design-system/_memory/brand-guidelines.md` for brand rules. Use assets from `_expxagents/_assets/` for logos and images."
198
198
  3. The first step of visual squads should always reference the design system tokens
199
199
 
200
+ ## Pencil Visual Templates Integration
201
+
202
+ **For squads that produce visual assets** (social media posts, carousels, stories, landing pages, slides, email templates, ads, branding), use the Pencil visual design system:
203
+
204
+ ### When to Enable
205
+
206
+ | Squad Type | visual_templates? | Reason |
207
+ |-----------|------------------|--------|
208
+ | Instagram Post/Carousel/Stories | YES | Visual image templates |
209
+ | Landing Page | YES | Visual layout |
210
+ | Slide Deck | YES | Presentation templates |
211
+ | Email Marketing | YES | Visual email templates |
212
+ | Ads (Meta/Google) | YES | Visual ad templates |
213
+ | Branding/Web Design | YES | Identity visual |
214
+ | Blog | NO | Text/HTML, no visual design |
215
+ | Instagram Reels | NO | Video, not static image |
216
+ | Other non-visual squads | NO | No visual assets |
217
+
218
+ ### squad.yaml Configuration
219
+
220
+ Add `visual_templates` block to qualifying squads:
221
+
222
+ ```yaml
223
+ squad:
224
+ # ... standard fields ...
225
+ visual_templates:
226
+ enabled: true
227
+ format: "4:5" # aspect ratio (4:5 for IG, 16:9 for slides, etc.)
228
+ count: 3 # number of initial templates
229
+ ```
230
+
231
+ ### Standard Dimensions
232
+
233
+ | Type | Width x Height | Format |
234
+ |------|---------------|--------|
235
+ | Instagram Post | 1080x1350 | 4:5 |
236
+ | Instagram Post (square) | 1080x1080 | 1:1 |
237
+ | Instagram Story | 1080x1920 | 9:16 |
238
+ | Slide Deck | 1920x1080 | 16:9 |
239
+ | Email Header | 600x200 | 3:1 |
240
+ | Blog Cover | 1200x630 | ~2:1 |
241
+ | Landing Page | 1440x900+ | ~16:10 |
242
+
243
+ ### Directory Structure
244
+
245
+ When creating a visual squad, create the `templates/` directory:
246
+
247
+ ```
248
+ squads/<setor>/<grupo>/<sessao>/<code>/
249
+ ├── squad.yaml
250
+ ├── templates/ ← NEW: for visual squads
251
+ │ └── (user creates .pen file here via Pencil)
252
+ ├── agents/
253
+ ├── _memory/
254
+ └── ...
255
+ ```
256
+
257
+ ### Agent Designer Instructions
258
+
259
+ For the designer agent in visual squads, include this section in the agent's .md:
260
+
261
+ ```markdown
262
+ ## Pencil Templates
263
+ - **Templates directory:** `templates/`
264
+ - **Sync command:** Run `expxagents sync-templates` after editing .pen files
265
+ - **Template rotation:** Rotate through available templates for variety
266
+ - **Always read the template .md files** before generating HTML output
267
+ ```
268
+
200
269
  ## Agent Persona Rules
201
270
 
202
271
  Every agent in every squad MUST have:
@@ -232,6 +301,8 @@ Before presenting the design to the user:
232
301
  - [ ] Pipeline flows logically from research → creation → review
233
302
  - [ ] Format matches an available best-practice (if platform specified)
234
303
  - [ ] Visual squads reference design system and assets path
304
+ - [ ] Visual squads have `visual_templates` block in squad.yaml
305
+ - [ ] Visual squads have `templates/` directory created
235
306
  - [ ] Every agent has a human name (first + last) and an avatar URL
236
307
 
237
308
  ## After Design
@@ -0,0 +1,17 @@
1
+ catalog:
2
+ version: "1.0.0"
3
+ categories:
4
+ - name: development
5
+ mcps: [github, postgresql]
6
+ - name: communication
7
+ mcps: [slack]
8
+ - name: project-management
9
+ mcps: [linear]
10
+ - name: monitoring
11
+ mcps: [sentry]
12
+ - name: knowledge
13
+ mcps: [notion]
14
+ - name: design
15
+ mcps: [figma, pencil]
16
+ - name: infrastructure
17
+ mcps: [vercel]
@@ -0,0 +1,35 @@
1
+ id: figma
2
+ name: Figma
3
+ description: Design files, components, and style inspection
4
+ category: design
5
+ icon: figma
6
+
7
+ detection:
8
+ method: npm
9
+ npm:
10
+ package: "figma-developer-mcp"
11
+
12
+ server:
13
+ command: npx
14
+ args: ["-y", "figma-developer-mcp"]
15
+ env:
16
+ FIGMA_ACCESS_TOKEN: "${FIGMA_ACCESS_TOKEN}"
17
+
18
+ auth:
19
+ - key: FIGMA_ACCESS_TOKEN
20
+ label: "Figma Access Token"
21
+ hint: "Create at https://www.figma.com/developers/api#access-tokens"
22
+ required: true
23
+
24
+ tools:
25
+ - name: get_file
26
+ description: Get a Figma file and its contents
27
+ - name: get_components
28
+ description: Get components from a Figma file
29
+ - name: get_styles
30
+ description: Get styles defined in a Figma file
31
+
32
+ relevant_sectors:
33
+ - design
34
+ - product
35
+ - development
@@ -0,0 +1,44 @@
1
+ id: github
2
+ name: GitHub
3
+ description: PRs, issues, code review, releases
4
+ category: development
5
+ icon: github
6
+
7
+ detection:
8
+ method: hybrid
9
+ cli:
10
+ command: gh
11
+ version_flag: --version
12
+ min_version: "2.0.0"
13
+ npm:
14
+ package: "@modelcontextprotocol/server-github"
15
+
16
+ server:
17
+ command: npx
18
+ args: ["-y", "@modelcontextprotocol/server-github"]
19
+ env:
20
+ GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_PERSONAL_ACCESS_TOKEN}"
21
+
22
+ auth:
23
+ - key: GITHUB_PERSONAL_ACCESS_TOKEN
24
+ label: "GitHub Personal Access Token"
25
+ hint: "Create at https://github.com/settings/tokens (scopes: repo, read:org)"
26
+ required: true
27
+ validate: "gh auth status"
28
+
29
+ tools:
30
+ - name: create_pull_request
31
+ description: Create a new pull request
32
+ - name: list_issues
33
+ description: List repository issues
34
+ - name: create_issue
35
+ description: Create a new issue
36
+ - name: search_code
37
+ description: Search code across repositories
38
+ - name: get_file_contents
39
+ description: Get contents of a file
40
+
41
+ relevant_sectors:
42
+ - development
43
+ - quality
44
+ - operations
@@ -0,0 +1,37 @@
1
+ id: linear
2
+ name: Linear
3
+ description: Issue tracking, project management, and team workflows
4
+ category: project-management
5
+ icon: linear
6
+
7
+ detection:
8
+ method: npm
9
+ npm:
10
+ package: "@larryhudson/linear-mcp-server"
11
+
12
+ server:
13
+ command: npx
14
+ args: ["-y", "@larryhudson/linear-mcp-server"]
15
+ env:
16
+ LINEAR_API_KEY: "${LINEAR_API_KEY}"
17
+
18
+ auth:
19
+ - key: LINEAR_API_KEY
20
+ label: "Linear API Key"
21
+ hint: "Create at https://linear.app/settings/api"
22
+ required: true
23
+
24
+ tools:
25
+ - name: create_issue
26
+ description: Create a new issue
27
+ - name: list_issues
28
+ description: List project issues
29
+ - name: update_issue
30
+ description: Update an existing issue
31
+ - name: list_projects
32
+ description: List available projects
33
+
34
+ relevant_sectors:
35
+ - product
36
+ - development
37
+ - operations
@@ -0,0 +1,37 @@
1
+ id: notion
2
+ name: Notion
3
+ description: Knowledge base, documentation, and collaborative workspace
4
+ category: knowledge
5
+ icon: notion
6
+
7
+ detection:
8
+ method: npm
9
+ npm:
10
+ package: "@notionhq/notion-mcp-server"
11
+
12
+ server:
13
+ command: npx
14
+ args: ["-y", "@notionhq/notion-mcp-server"]
15
+ env:
16
+ NOTION_API_KEY: "${NOTION_API_KEY}"
17
+
18
+ auth:
19
+ - key: NOTION_API_KEY
20
+ label: "Notion API Key"
21
+ hint: "Create at https://www.notion.so/my-integrations"
22
+ required: true
23
+
24
+ tools:
25
+ - name: search
26
+ description: Search pages and databases
27
+ - name: get_page
28
+ description: Get the content of a page
29
+ - name: create_page
30
+ description: Create a new page
31
+ - name: update_page
32
+ description: Update an existing page
33
+
34
+ relevant_sectors:
35
+ - knowledge
36
+ - product
37
+ - operations
@@ -0,0 +1,32 @@
1
+ id: pencil
2
+ name: Pencil
3
+ description: Visual design creation and editing in VS Code
4
+ category: design
5
+ icon: pencil
6
+
7
+ detection:
8
+ method: extension
9
+ extension:
10
+ prefix: "highagency.pencildev-"
11
+ binary_dir: out
12
+ binary_resolve: platform
13
+
14
+ server:
15
+ command: null
16
+ args: ["--app", "visual_studio_code"]
17
+ env: {}
18
+
19
+ auth: []
20
+
21
+ tools:
22
+ - name: batch_design
23
+ description: Create and modify visual designs
24
+ - name: batch_get
25
+ description: Read design nodes
26
+ - name: get_screenshot
27
+ description: Capture design screenshots
28
+
29
+ relevant_sectors:
30
+ - design
31
+ - marketing
32
+ - product
@@ -0,0 +1,39 @@
1
+ id: postgresql
2
+ name: PostgreSQL
3
+ description: SQL queries, schema inspection, and database management
4
+ category: development
5
+ icon: postgresql
6
+
7
+ detection:
8
+ method: hybrid
9
+ cli:
10
+ command: psql
11
+ version_flag: --version
12
+ npm:
13
+ package: "@modelcontextprotocol/server-postgres"
14
+
15
+ server:
16
+ command: npx
17
+ args: ["-y", "@modelcontextprotocol/server-postgres"]
18
+ env:
19
+ POSTGRESQL_URL: "${POSTGRESQL_URL}"
20
+
21
+ auth:
22
+ - key: POSTGRESQL_URL
23
+ label: "PostgreSQL Connection URL"
24
+ hint: "Format: postgresql://user:password@host:5432/database"
25
+ required: true
26
+ validate: "psql -c 'SELECT 1'"
27
+
28
+ tools:
29
+ - name: query
30
+ description: Execute a SQL query
31
+ - name: list_tables
32
+ description: List all tables in the database
33
+ - name: describe_table
34
+ description: Get the schema of a specific table
35
+
36
+ relevant_sectors:
37
+ - development
38
+ - data
39
+ - operations
@@ -0,0 +1,41 @@
1
+ id: sentry
2
+ name: Sentry
3
+ description: Error tracking, performance monitoring, and issue management
4
+ category: monitoring
5
+ icon: sentry
6
+
7
+ detection:
8
+ method: npm
9
+ npm:
10
+ package: "@sentry/mcp-server"
11
+
12
+ server:
13
+ command: npx
14
+ args: ["-y", "@sentry/mcp-server"]
15
+ env:
16
+ SENTRY_AUTH_TOKEN: "${SENTRY_AUTH_TOKEN}"
17
+ SENTRY_ORG: "${SENTRY_ORG}"
18
+
19
+ auth:
20
+ - key: SENTRY_AUTH_TOKEN
21
+ label: "Sentry Auth Token"
22
+ hint: "Create at https://sentry.io/settings/auth-tokens/"
23
+ required: true
24
+ validate: "sentry-cli info"
25
+ - key: SENTRY_ORG
26
+ label: "Sentry Organization Slug"
27
+ hint: "Your Sentry organization slug"
28
+ required: true
29
+
30
+ tools:
31
+ - name: list_issues
32
+ description: List Sentry issues
33
+ - name: get_issue
34
+ description: Get details of a specific issue
35
+ - name: search_events
36
+ description: Search error events
37
+
38
+ relevant_sectors:
39
+ - development
40
+ - quality
41
+ - infrastructure
@@ -0,0 +1,37 @@
1
+ id: slack
2
+ name: Slack
3
+ description: Team messaging, channels, and notifications
4
+ category: communication
5
+ icon: slack
6
+
7
+ detection:
8
+ method: npm
9
+ npm:
10
+ package: "@modelcontextprotocol/server-slack"
11
+
12
+ server:
13
+ command: npx
14
+ args: ["-y", "@modelcontextprotocol/server-slack"]
15
+ env:
16
+ SLACK_BOT_TOKEN: "${SLACK_BOT_TOKEN}"
17
+
18
+ auth:
19
+ - key: SLACK_BOT_TOKEN
20
+ label: "Slack Bot Token"
21
+ hint: "Create a Slack app at https://api.slack.com/apps"
22
+ required: true
23
+
24
+ tools:
25
+ - name: send_message
26
+ description: Send a message to a channel
27
+ - name: list_channels
28
+ description: List available channels
29
+ - name: search_messages
30
+ description: Search messages across channels
31
+ - name: get_thread
32
+ description: Get messages in a thread
33
+
34
+ relevant_sectors:
35
+ - communication
36
+ - operations
37
+ - customer-success
@@ -0,0 +1,39 @@
1
+ id: vercel
2
+ name: Vercel
3
+ description: Deployments, projects, and hosting management
4
+ category: infrastructure
5
+ icon: vercel
6
+
7
+ detection:
8
+ method: hybrid
9
+ cli:
10
+ command: vercel
11
+ version_flag: --version
12
+ npm:
13
+ package: "mcp-handler"
14
+
15
+ server:
16
+ command: npx
17
+ args: ["-y", "mcp-handler"]
18
+ env:
19
+ VERCEL_TOKEN: "${VERCEL_TOKEN}"
20
+
21
+ auth:
22
+ - key: VERCEL_TOKEN
23
+ label: "Vercel Token"
24
+ hint: "Create at https://vercel.com/account/tokens"
25
+ required: true
26
+ validate: "vercel whoami"
27
+
28
+ tools:
29
+ - name: list_deployments
30
+ description: List recent deployments
31
+ - name: get_deployment
32
+ description: Get details of a specific deployment
33
+ - name: list_projects
34
+ description: List all projects
35
+
36
+ relevant_sectors:
37
+ - infrastructure
38
+ - development
39
+ - operations
@@ -21,6 +21,32 @@ export async function doctorCommand() {
21
21
  catch {
22
22
  checks.push({ name: 'Claude Code CLI', status: 'fail', message: 'Not found — install from https://claude.ai/code' });
23
23
  }
24
+ // MCP integrations check
25
+ const { getConfiguredMcpIds } = await import('../mcp/validate.js');
26
+ const { loadMcpDefinition } = await import('../mcp/catalog.js');
27
+ const { detectMcp } = await import('../mcp/detect.js');
28
+ const configured = getConfiguredMcpIds(process.cwd());
29
+ const mcpsDir = path.resolve('mcps');
30
+ if (configured.length > 0) {
31
+ for (const id of configured) {
32
+ const def = loadMcpDefinition(mcpsDir, id);
33
+ if (def) {
34
+ const result = detectMcp(def);
35
+ checks.push({
36
+ name: `MCP: ${def.name}`,
37
+ status: result.status !== 'unavailable' ? 'ok' : 'warn',
38
+ message: result.detail,
39
+ });
40
+ }
41
+ }
42
+ }
43
+ else {
44
+ checks.push({
45
+ name: 'MCP integrations',
46
+ status: 'warn',
47
+ message: 'No MCPs configured. Run: expxagents mcp setup <id>',
48
+ });
49
+ }
24
50
  // Project structure
25
51
  const requiredDirs = ['squads', '_expxagents/_memory'];
26
52
  for (const dir of requiredDirs) {
@@ -148,6 +148,7 @@ Present using AskUserQuestion with 2-4 options:
148
148
  | \`/expxagents install <name>\` | Install skill from catalog |
149
149
  | \`/expxagents uninstall <name>\` | Remove installed skill |
150
150
  | \`/expxagents delete <name>\` | Confirm and delete squad |
151
+ | \`/expxagents sync-templates [squad]\` | Sync Pencil .pen visual templates to .md specs |
151
152
  | \`/expxagents dashboard\` | Run CLI to start server + open dashboard |
152
153
  | \`/expxagents virtual-office\` | Run CLI to start server + open virtual office in browser |
153
154
  | \`/expxagents help\` | Show help text |
@@ -227,6 +228,9 @@ SQUADS
227
228
  /expxagents edit <name> Modify a squad
228
229
  /expxagents delete <name> Delete a squad
229
230
 
231
+ TEMPLATES
232
+ /expxagents sync-templates Sync Pencil visual templates
233
+
230
234
  SKILLS
231
235
  /expxagents skills Browse skills
232
236
  /expxagents install Install a skill
@@ -326,6 +330,12 @@ export async function initCommand(options = {}) {
326
330
  else {
327
331
  console.log(' agents/ already exists (use --update to refresh)');
328
332
  }
333
+ // Copy MCP catalog
334
+ const mcpsSrc = path.join(assetsDir, 'mcps');
335
+ if (fs.existsSync(mcpsSrc)) {
336
+ const mcpsResult = copyDirRecursive(mcpsSrc, path.resolve('mcps'));
337
+ console.log(` 📡 MCP catalog: ${mcpsResult.changed}/${mcpsResult.total} files`);
338
+ }
329
339
  // Create/update Claude Code skill (.claude/skills/expxagents/SKILL.md)
330
340
  const skillDir = path.join(cwd, '.claude', 'skills', 'expxagents');
331
341
  const skillPath = path.join(skillDir, 'SKILL.md');
@@ -380,6 +390,7 @@ BRIDGE_TIMEOUT_MS=300000
380
390
  const gitignoreEntries = [
381
391
  'node_modules/',
382
392
  '.env',
393
+ '.mcp.json',
383
394
  '*.tmp',
384
395
  'squads/*/state.json',
385
396
  'squads/*/state.json.tmp',
@@ -397,6 +408,38 @@ BRIDGE_TIMEOUT_MS=300000
397
408
  fs.writeFileSync(gitignorePath, gitignoreEntries.join('\n') + '\n', 'utf-8');
398
409
  console.log(' Created .gitignore');
399
410
  }
411
+ // MCP Setup
412
+ const mcpsDir = path.resolve('mcps');
413
+ if (fs.existsSync(mcpsDir)) {
414
+ const { listAllMcpIds, loadMcpDefinition } = await import('../mcp/catalog.js');
415
+ const { detectMcp, detectExtension, resolvePlatformBinary } = await import('../mcp/detect.js');
416
+ const { writeMcpConfig } = await import('../mcp/setup.js');
417
+ const ids = listAllMcpIds(mcpsDir);
418
+ const results = ids.map(id => {
419
+ const def = loadMcpDefinition(mcpsDir, id);
420
+ return def ? { def, detection: detectMcp(def) } : null;
421
+ }).filter((r) => r !== null);
422
+ console.log('\n🔍 Detecting available MCP integrations...\n');
423
+ for (const { def, detection } of results) {
424
+ const icon = detection.status === 'detected' ? '✅' : detection.status === 'available' ? '⬜' : '⛔';
425
+ console.log(` ${icon} ${def.id.padEnd(14)} — ${detection.detail}`);
426
+ }
427
+ // Auto-configure extension-based MCPs (like Pencil) that need no auth
428
+ for (const { def, detection } of results) {
429
+ if (detection.status === 'detected' && def.detection.method === 'extension' && def.auth.length === 0) {
430
+ if (def.detection.extension) {
431
+ const ext = detectExtension(def.detection.extension.prefix);
432
+ if (ext) {
433
+ const binary = resolvePlatformBinary();
434
+ const resolvedCmd = path.join(ext.extensionPath, def.detection.extension.binary_dir, binary);
435
+ writeMcpConfig(process.cwd(), def, {}, resolvedCmd);
436
+ console.log(` → ${def.name} auto-configured`);
437
+ }
438
+ }
439
+ }
440
+ }
441
+ console.log('\n Run: expxagents mcp setup <id> to configure additional MCPs\n');
442
+ }
400
443
  // Install Python dependencies
401
444
  const pythonDeps = ['aiohttp', 'aiofiles', 'python-dotenv'];
402
445
  console.log(`\n Installing Python dependencies (${pythonDeps.join(', ')})...`);
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function mcpCommand(): Command;