feat: add AdaL agent support (skills + MCP)
TL;DR
Adds AdaL to the agent registries used by firecrawl setup / firecrawl doctor / firecrawl init, so firecrawl setup mcp --agent adal and native skills install work the same way they already do for Hermes/OpenClaw/Cursor/etc.
Why AdaL needs a dedicated installer (not add-mcp)
AdaL stores MCP servers per-project inside a single global ~/.adal/settings.json, under projects.<absolute_project_path>.mcpServers — it doesn't have an add-mcp-compatible CLI or a global per-agent config file. This mirrors why Hermes (installHermesMcp) and OpenClaw (installOpenClawMcp) already have their own installer functions instead of going through installAddMcp.
Changes
src/utils/agents.ts— newadalAgentSpecforfirecrawl doctordetection. Presence =~/.adal; MCP config =~/.adal/settings.json. The existing recursive JSON walker (hasFirecrawlMcpEntry) already finds a nestedmcpServers.firecrawlentry at any depth, so no walker changes were needed.src/commands/skills-native.ts— newadalAgentConfigfor native skill installs. Global skills dir =~/.adal/skills(matches AdaL'sSkillsManagerpersonal-skills path in its own source).src/commands/setup.ts— newinstallAdalMcp(), modeled directly oninstallHermesMcp(). Reads/creates~/.adal/settings.json, resolves the current project viaprocess.cwd(), and injectsprojects[cwd].mcpServers.firecrawl = { type: 'http', url, headers }. Wired intoresolveMcpAgent(--agent adal), theinstallMcpdispatch, andinstallAllMcpLaunchers(--agent all).
Testing
Ran a full E2E validation against a real AdaL checkout (not just unit tests):
- MCP registration:
firecrawl setup mcp --agent adalcorrectly wroteprojects.<cwd>.mcpServers.firecrawlinto~/.adal/settings.json. - Live MCP discovery + tool call: Started AdaL against that project — its MCP client manager discovered and registered 3 live tools (
mcp_firecrawl_firecrawl_scrape/search/parse) against Firecrawl's hosted MCP server (https://mcp.firecrawl.dev/v2/mcp, keyless). AdaL then successfully invokedmcp_firecrawl_firecrawl_scrapeagainsthttps://example.comand got back real markdown + metadata (scrapeId,creditsUsed: 1, etc.) from Firecrawl's live API. - Skills install:
installSkillsNative({ agent: 'adal' })correctly symlinked all 10firecrawl/cliskills into~/.adal/skills/. AdaL's ownSkillsManager(in itsdeep_researchbackend) then discovered and indexed all 10 as personal skills, ready to inject into the agent prompt. - Regression check:
npx vitest run— all 391 existing tests pass, no changes to existing agent behavior.
Notes
--keylessis honored automatically foradalthe same way it is for other keyless-capable agents (no code path changes there —getApiKey()naturally returns undefined without a stored/env key).- No new README claims are made in this PR; happy to add AdaL to the "Works with Claude Code, Antigravity, OpenCode, and more" line in a follow-up once this lands, since that's now backed by a real, tested install path per the docs guidance for this kind of change.
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
Summary by cubic
Adds AdaL agent support to the CLI for MCP setup, detection, and native skills. Use firecrawl setup mcp --agent adal to register Firecrawl with AdaL.
-
New Features
adalsupport: detection via~/.adaland MCP config at~/.adal/settings.json;installAdalMcp()writesprojects[<cwd>].mcpServers.firecrawland is wired to--agent adal/--agent all; native skills install to~/.adal/skills.
-
Bug Fixes
installAdalMcp()now respects--keyless(no Authorization header) and validatessettings.jsonshape with a clear error when not an object.